{"_id":"@allen.smith.legend/dsh-my-feature","_rev":"2-0559dfa321b9df4f438392d83c0587f7","name":"@allen.smith.legend/dsh-my-feature","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@allen.smith.legend/dsh-my-feature","version":"1.0.0","license":"MIT","_id":"@allen.smith.legend/dsh-my-feature@1.0.0","maintainers":[{"name":"allen.smith.legend","email":"allen.smith.legend@gmail.com"}],"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"bf3e8fde505c038c97f9e2e02eac14aa84fccc11","tarball":"https://registry.npmjs.org/@allen.smith.legend/dsh-my-feature/-/dsh-my-feature-1.0.0.tgz","fileCount":14,"integrity":"sha512-+ev8JdFxn9WItsTjBFZy/3xdl68P7if/rMfk5lxlQWpmJNlPTWKEkS01YXLeNClIQNXT+PLtxVQcfhabDAYrdw==","signatures":[{"sig":"MEYCIQCqY87sgRb1/G5UGR23sE9R2uibYfc3M/jEM/V3py3x7wIhAIJ7xwi5rLeGDWyWrHEQAup8DpuixK9Ha35Pf3r2jXiY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":54718},"main":"lib/index.js","type":"module","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./src/*":"./src/*","./types":{"types":"./lib/types/types.d.ts","default":"./lib/types/types.js"},"./client":{"types":"./lib/types/client.d.ts","default":"./lib/types/client.js"},"./remote":{"types":"./lib/typert.remote-client.d.ts","default":"./lib/typert.remote-client.js"},"./typert":{"types":"./lib/typert.host.d.ts","default":"./lib/typert.host.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"scripts":{"build":"tsc -p tsconfig.json && tsdown"},"_npmUser":{"name":"allen.smith.legend","email":"allen.smith.legend@gmail.com"},"repository":{"url":"git+https://github.com/deepseek-ai/deepseek-harness.git","type":"git","directory":"packages/examples/my-feature"},"description":"MyFeature 域：一个模型工具、一条斜杠命令、一个设置分区、一个持久化域、一个会话投影，以及基于 Typert 的严格 Remote 方法","directories":{},"_nodeVersion":"24.18.1","dependencies":{"zod":"^4.4.3","@deepseek-ai/schemastery":"^3.18.2","@allen.smith.legend/dsh-client-ui-my-feature":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-shell":"^0.1.2-alpha.4","@deepseek-ai/dsh-tools":"^0.1.2-alpha.4","@deepseek-ai/dsh-session":"^0.1.2-alpha.4","@deepseek-ai/dsh-commands":"^0.1.2-alpha.4","@deepseek-ai/dsh-settings":"^0.1.2-alpha.4","@deepseek-ai/dsh-storage-domain":"^0.1.2-alpha.4","@deepseek-ai/dsh-typert-protocol":"^0.1.2-alpha.4","@deepseek-ai/dsh-session-projection":"^0.1.2-alpha.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-shell":"^0.1.2-alpha.4","@deepseek-ai/dsh-tools":"^0.1.2-alpha.4","@deepseek-ai/dsh-session":"^0.1.2-alpha.4","@deepseek-ai/dsh-commands":"^0.1.2-alpha.4","@deepseek-ai/dsh-settings":"^0.1.2-alpha.4","@deepseek-ai/dsh-storage-domain":"^0.1.2-alpha.4","@deepseek-ai/dsh-typert-protocol":"^0.1.2-alpha.4","@deepseek-ai/dsh-session-projection":"^0.1.2-alpha.4"},"peerDependenciesMeta":{"@deepseek-ai/dsh-commands":{"optional":true},"@deepseek-ai/dsh-settings":{"optional":true},"@deepseek-ai/dsh-storage-domain":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-my-feature_1.0.0_1788331841382_0.057432741129230136","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"_id":"@allen.smith.legend/dsh-my-feature@1.0.1","dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"c3d1d92288962babfc7fcfaab86e37c46421ae86","tarball":"https://registry.npmjs.org/@allen.smith.legend/dsh-my-feature/-/dsh-my-feature-1.0.1.tgz","fileCount":14,"integrity":"sha512-YpUo0YJROJNKlXbEOaq0IO3ihdzU3BUO1veJ3ZWO24wjQFF3yC0IFbl6QbAtthqj64JlR3gYFsK3LILSzjifBQ==","signatures":[{"sig":"MEQCIHQvfwWbb2RJCQryr5vtK8TKtAXHn40ehR8GAN+zdATzAiALebz0+58ro44XJK5/0/9djIBIy/XQL4/f6vrCXYe+DQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDHnaz7X8dQLnbmXTqRVILt2gfT9GkHtjNkeLbBZkC9/gIgfjySQRaRl3fFOkyDbnPhB2RLFPeiFVvawSs3JKzmz2c="}],"unpackedSize":54718},"main":"lib/index.js","name":"@allen.smith.legend/dsh-my-feature","type":"module","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./src/*":"./src/*","./types":{"types":"./lib/types/types.d.ts","default":"./lib/types/types.js"},"./client":{"types":"./lib/types/client.d.ts","default":"./lib/types/client.js"},"./remote":{"types":"./lib/typert.remote-client.d.ts","default":"./lib/typert.remote-client.js"},"./typert":{"types":"./lib/typert.host.d.ts","default":"./lib/typert.host.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"license":"MIT","scripts":{"build":"tsc -p tsconfig.json && tsdown"},"version":"1.0.1","_npmUser":{"name":"allen.smith.legend","email":"allen.smith.legend@gmail.com"},"repository":{"url":"git+https://github.com/deepseek-ai/deepseek-harness.git","type":"git","directory":"packages/examples/my-feature"},"description":"MyFeature 域：一个模型工具、一条斜杠命令、一个设置分区、一个持久化域、一个会话投影，以及基于 Typert 的严格 Remote 方法","directories":{},"maintainers":[{"name":"allen.smith.legend","email":"allen.smith.legend@gmail.com"}],"_nodeVersion":"24.18.1","dependencies":{"zod":"^4.4.3","@deepseek-ai/schemastery":"^3.18.2","@allen.smith.legend/dsh-client-ui-my-feature":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-shell":"^0.1.2-alpha.4","@deepseek-ai/dsh-tools":"^0.1.2-alpha.4","@deepseek-ai/dsh-session":"^0.1.2-alpha.4","@deepseek-ai/dsh-commands":"^0.1.2-alpha.4","@deepseek-ai/dsh-settings":"^0.1.2-alpha.4","@deepseek-ai/dsh-storage-domain":"^0.1.2-alpha.4","@deepseek-ai/dsh-typert-protocol":"^0.1.2-alpha.4","@deepseek-ai/dsh-session-projection":"^0.1.2-alpha.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-shell":"^0.1.2-alpha.4","@deepseek-ai/dsh-tools":"^0.1.2-alpha.4","@deepseek-ai/dsh-session":"^0.1.2-alpha.4","@deepseek-ai/dsh-commands":"^0.1.2-alpha.4","@deepseek-ai/dsh-settings":"^0.1.2-alpha.4","@deepseek-ai/dsh-storage-domain":"^0.1.2-alpha.4","@deepseek-ai/dsh-typert-protocol":"^0.1.2-alpha.4","@deepseek-ai/dsh-session-projection":"^0.1.2-alpha.4"},"peerDependenciesMeta":{"@deepseek-ai/dsh-commands":{"optional":true},"@deepseek-ai/dsh-settings":{"optional":true},"@deepseek-ai/dsh-storage-domain":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-my-feature_1.0.1_1788334558167_0.9127549679733733"}}},"time":{"created":"2026-09-02T06:50:41.245Z","modified":"2026-09-02T07:35:58.415Z","1.0.0":"2026-09-02T06:50:41.521Z","1.0.1":"2026-09-02T07:35:58.251Z"},"license":"MIT","repository":{"url":"git+https://github.com/deepseek-ai/deepseek-harness.git","type":"git","directory":"packages/examples/my-feature"},"description":"MyFeature 域：一个模型工具、一条斜杠命令、一个设置分区、一个持久化域、一个会话投影，以及基于 Typert 的严格 Remote 方法","maintainers":[{"name":"allen.smith.legend","email":"allen.smith.legend@gmail.com"}],"readme":"# @allen.smith.legend/dsh-my-feature\n\nMyFeature 域服务（`ctx.my_feature`）：一个模型工具、一条斜杠命令、一个设置分区、一个持久化域、一个会话投影，以及基于 Typert 的严格 Remote 方法。它是 `packages/examples` 范文插件脚手架的 Host 半；每项能力都端到端接好，并在业务逻辑所在处标注 `TODO(my_feature)`。\n\n## 服务与事件\n\n- 注册 `ctx.my_feature`（`MyFeatureService`，extends `TypertRemoteService`）。\n- 注册 `my_feature` 投影（`my_feature/sessionProjections`），通过 `useProjection('my_feature')` 对客户端可见。\n- 注册 `my_feature_greet` 模型工具与 `/my_feature` 斜杠命令（命令仅在组合了命令注册表时注册）。\n- 注册 `my_feature` 设置命名空间（仅在挂载了设置提供者时）。\n- 打开 `my_feature` 持久化域（仅在挂载了域存储表单时）。\n\n## Remote 接口\n\n| 方法 | 线上命名空间 | 用途 |\n|---|---|---|\n| `echo` | `my_feature` | 严格往返：把请求文本大写。 |\n| `exec` | `my_feature` | 经 `ctx.shell` seam 的轻量 host shell 执行（带可配置字节上界）。 |\n| `remember` | `my_feature` | 在持久化域中保存一条笔记并返回完整列表。 |\n\nRemote 失败使用按码区分的 `RemoteError` 词汇；`my_feature/command-too-long` 合并进 `RemoteErrorDetailsMap`。\n\n## 配置\n\n- `greeting` —— 工具与命令前缀的问候语（默认 `你好`）。\n- `maxCommandBytes` —— 单条 `exec` 命令的 UTF-8 字节上界（默认 `1024`）。\n\n两者都由 Schemastery 校验，并可从 Plugins 配置标签页编辑。\n\n## Model Experience\n\n### Request context and condition\n\n#### What the model sees\n\n`my_feature_greet` 工具注册一个 `name` 参数。它的 `output.schema` 返回 `{ greeting: string }`，其 `render` 逐字输出该问候语。`/my_feature` 命令不会到达模型。\n\n#### Token effect\n\n零直接开销：工具的输出由调用者自己的输入渲染而来。\n\n#### KV Cache effect\n\n独立：该工具不贡献常驻提示词段落，因此不会改变可复用前缀。\n\n## Runtime invariant\n\nNo runtime invariant companion is published because every registration is a cordis effect whose disposal is proven by the behavior spec, and the persisted notes are validated by the domain's own record schema — no second authority exists.\n\n## Known Limitations and Deferred Work\n\n- **对消费者可见的缺口** —— `remember` 存储的是没有 id、删除或跨会话查询能力的普通笔记；范文演示的是 domain-storage seam，而非生产级笔记存储。\n- **exec 是最小直通** —— `exec` 只把 `command` / `workdir` / `signal` 交给 `ctx.shell`，不携带 `dshEnv` 或 `sandboxPolicy`；生产命令应像 `tool-bash` 那样从 `ctx.shellEnv` 收集 managed 环境并解析沙箱策略（见 index.ts 的 TODO）。\n","readmeFilename":""}