dsh-knj-prompts 2026.8.283

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/PROBE.md ADDED
@@ -0,0 +1,36 @@
1
+ # PROBE.md — dsh-knj-prompts 宿主 API 结论
2
+
3
+ Task 3 探针 + 2026.8.282 修复会话实测(web profile 实机启动验证)+ Task 4 实现前的类型层核对。
4
+ 本文件是客户端所依赖宿主能力的事实清单;修改 inject 或组件 props 前先更新这里。
5
+
6
+ ## 服务名(inject 用真实服务名;写包名 = fiber 永远 pending,web boot 直接失败)
7
+
8
+ | 服务名 | 提供方 | 本插件用途 |
9
+ | --- | --- | --- |
10
+ | `slots` | @deepseek-ai/dsh-client-runtime(SlotRegistry) | 注册 `conversation.input.right`(**唯一硬依赖**) |
11
+ | `workspaces` | 同包(IWorkspaces) | `startSession()` = 官方「新建会话」;**防御式读取**(不 inject,宿主缺服务时降级为原地填充,绝不阻塞 boot) |
12
+ | `sessions` | 同包(ISessions) | 经插槽标准套件即可,不直接依赖 |
13
+ | `conversation` | @deepseek-ai/dsh-client-ui-conversation | 经插槽标准套件即可,不直接依赖 |
14
+
15
+ ## conversation.input.right(list 插槽,session 作用域)
16
+
17
+ - owner share(InputZone):`session: ConversationSnapshot`、`input: InputState`
18
+ —— 两者都是快照式 props,随宿主 store 变化自动重渲染,不需要自己订阅。
19
+ - `ConversationSnapshot.blank`:空日志位(该会话还没被任何已接受的首条 prompt 消费;
20
+ 空白会话会被 New Session 复用)。
21
+ - session 作用域标准套件:`sessionId` / `useSession` / `useSessions` / `useInput` /
22
+ `inputActions`;`inputActions.setDraft(text)` 是唯一公开草稿写通道。
23
+
24
+ ## 新建会话(官方通道)与填充时机
25
+
26
+ - `ctx.workspaces.startSession(workspaceId?)`:连接「显式指定 → 当前会话的工作区 →
27
+ 最近工作区」的空白会话(没有则 host 新建)并导航过去;失败非致命。
28
+ - 时机:切到新空白会话后,session 作用域插槽按 sessionId 重挂载 → 在新挂载实例的
29
+ effect 里消费模块级 pendingFill 落地 `setDraft`(TTL 15s,防 startSession 失败后误填)。
30
+ - workspaces 不可用时的兜底(规格约定):直接填当前会话,用户可直接发送。
31
+
32
+ ## 打包(tsdown CLIENT_EXTERNALALS 不变量)
33
+
34
+ `react` / `react/jsx-runtime` / `react-dom` / `@deepseek-ai/dsh-client-runtime` /
35
+ `@deepseek-ai/dsh-client-ui-slots` 必须保持 external —— 运行时由宿主
36
+ `window.__ModuleLoader__` 的模块表解析;bundle 内联任何一个都会炸启动。
package/README.md ADDED
@@ -0,0 +1,27 @@
1
+ # dsh-knj-prompts
2
+
3
+ DSH 提示词场景插件:输入框右侧「✦ 提示词」下拉选场景 →(含 `{变量}` 时先填变量并实时预览)→
4
+ 空白会话直接填充草稿、非空白会话自动切到同工作区新会话再填充,微调即可发送。
5
+
6
+ ## 功能
7
+
8
+ - 输入框工具行右侧 ✦ 提示词 按钮,下拉列出全部场景(内置场景带「内置」标记,变量以 chip 展示)
9
+ - 场景提示词含 `{变量}` 时先弹填充面板:逐变量输入 + 实时预览,确认后填充
10
+ - 当前会话为空白会话 → 原地填充草稿;已有对话 → 自动开新会话(官方 New Session 通道)后填充
11
+ - 「管理场景…」弹窗:新增 / 编辑 / 删除场景(内置场景可编辑、不可删除),「保存全部」落盘
12
+ - 场景存储:`<DSH_HOME>/knj-prompts/scenes.json`(原子写、损坏自动备份重建、内置 seed 合并)
13
+
14
+ ## 安装(web profile)
15
+
16
+ ```powershell
17
+ # 在插件目录
18
+ npm run check && npm run build && npm run build:client && npm pack
19
+ # 在 web profile 的 package.json 里把依赖指向新 tgz 后重装
20
+ ```
21
+
22
+ ## 开发
23
+
24
+ - 纯函数与决策表:`src/client/engine.ts`(`node --test` 直接跑 .mjs 测试)
25
+ - 服务端(场景存储 + `/api/knj-prompts/scenes` GET/PUT):`src/{store,routes}.ts`
26
+ - 客户端(ScenePicker 下拉 / 变量面板 / 管理弹窗):`src/client/ScenePicker.tsx`
27
+ - 宿主 API 事实清单:[PROBE.md](./PROBE.md)(改 inject 或 props 前必读)