@lynn123411/dsh-ask-user-grilling 0.2.3 → 0.2.4

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/README.md CHANGED
@@ -1,13 +1,14 @@
1
1
  # @lynn123411/dsh-ask-user-grilling
2
2
 
3
- DSH 侧的 grilling 适配层(输送机制):把 Matt Pocock 的 grilling 流程在 DSH 里的提问环节做成工具级硬约束。本插件只提供 `ask_user_grilling`,不提供任何 plan-mode 工具——共识达成后不自动进入 plan mode,交还用户决定下一步。分工:本插件负责「在 DSH 里怎么问」的工具层;grilling 纪律文案里散文预告 + 表单投递写在工具描述与 matt-* 预设 vendor 的 `skills/grilling/SKILL.md` 里(`matt-ptc` 另含 PTC 投递指引),子代理停轮纪律只写在工具描述里(软纪律、无硬拦)、不进 SKILL(避免诱导模型派遣子代理),preset persona 保持原厂原样不做任何修改。
3
+ DSH 侧的 grilling 适配层(输送机制):把 Matt Pocock 的 grilling 流程在 DSH 里的提问环节做成工具级硬约束。本插件只提供 `ask_user_grilling`,不提供任何 plan-mode 工具——共识达成后不自动进入 plan mode,交还用户决定下一步。分工:本插件负责「在 DSH 里怎么问」的工具层;grilling 纪律文案里散文预告 + 表单投递写在工具描述与 matt-* 预设 vendor 的 `skills/grilling/SKILL.md` 里(`matt-ptc` 另含 PTC 投递指引),子代理停轮纪律只写在工具描述里(软纪律、无硬拦)、不进 SKILL(避免诱导模型派遣子代理),preset persona 保持原厂原样不做任何修改。注意区分:本插件不设子代理硬闸门,但 DSH 服务侧另有硬校验——**子代理自身调用提问会抛 `DELEGATED_CALLER`**,详见「特性」第 1 条。
4
4
 
5
5
  > ⚠️ **安装约束:本插件是 preset 工具行消费的 Cordis 插件,严禁加入 profile `package.json` 的 `dsh.profile.bundles`**(bundle 层必须在包内声明 `dsh.bundle`,本插件没有,加入会导致启动报错)。只需通过 `pnpm add` / `dsh plugin --profile web add` 进入 dependencies 即可,preset 的工具行会直接从 node_modules 解析本包。
6
6
 
7
7
  ## 特性
8
8
 
9
9
  - **ask_user_grilling**:本 preset 唯一的提问工具(grilling 轮次与一切其他提问都走它——`tool-ask-user` 行已从三份 preset 删除)。
10
- - **子代理等齐(软纪律,无硬拦)**:若本轮派了子代理且下轮依赖其结论,优先**结束当前回合**、等全部结算后再问——事实没回就先问只会浪费一轮;子代理运行时提问不再被拒绝;
10
+ - **子代理等齐(软纪律,无硬拦)**:若本轮派了子代理且下轮依赖其结论,优先**结束当前回合**、等全部结算后再问——事实没回就先问只会浪费一轮;**父代理**在子代理运行时照常提问(本插件不设硬闸门);
11
+ - **子代理不能自行提问(DSH 服务侧硬校验,非本插件所为)**:子代理自身调用任何提问工具都会被 `dsh-user-questions` 的 `agents.roots()` 校验拒绝并抛 `DELEGATED_CALLER`——提问者必须是「运行根」,被另一个活代理拥有的子代理没有人类答者、否则会永久阻塞。父代理可正常提问。子代理应把未决问题写进最终结果,由父代理代为提问。(已在 0.1.5-rc.1 上对真实 `UserQuestionService` 实测:非根代理 → `DELEGATED_CALLER`;根代理 → 正常 resolve。)
11
12
  - **强制多选**:所有问题一律多选(schema 不提供关闭开关;此行为刻意**不写入工具描述**——模型若知道只能多选,会为避免互斥选项而影响出题质量,见「描述即纪律」);
12
13
  - **补充机制**:每题末尾的补充输入框由 UI 自动渲染、轮末补充题由代码自动追加,两者都不依赖模型也不写入描述(模型自加补充项只会与它们重复);仅当轮末补充输入非空时才应再开一轮;
13
14
  - **题干引导**:要求题干只含问题本身、不重复选项文本(仅模型侧引导,不做硬校验——避免误伤自然提及选项名称的题干);
package/lib/index.js CHANGED
@@ -99,6 +99,7 @@ function apply(ctx) {
99
99
  },
100
100
  answers: {
101
101
  type: "array",
102
+ required: true,
102
103
  description: "One entry per question, in the order asked.",
103
104
  items: {
104
105
  type: "object",
@@ -161,7 +162,10 @@ function apply(ctx) {
161
162
  }));
162
163
 
163
164
  // 3. round-end supplement question (R3) — single "无需补充" option; supplement is via custom input, so no "I have something to add" option (duplicates that field)
164
- questions.push(ROUND_END_QUESTION);
165
+ questions.push({
166
+ ...ROUND_END_QUESTION,
167
+ options: ROUND_END_QUESTION.options.map((option) => ({ ...option })),
168
+ });
165
169
 
166
170
  // 4. ask through the userQuestions seam (UI renders from the service)
167
171
  const answer = await ctx.userQuestions.ask({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lynn123411/dsh-ask-user-grilling",
3
- "version": "0.2.3",
3
+ "version": "0.2.4",
4
4
  "description": "DSH delivery adaptations for grilling rounds: ask_user_grilling (sole question tool / forced multi-select / round-end supplement / stem guidance). Does not modify any skill file.",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
@@ -14,9 +14,9 @@
14
14
  ],
15
15
  "license": "MIT",
16
16
  "peerDependencies": {
17
- "@deepseek-ai/cordis": "^4.0.1",
18
- "@deepseek-ai/dsh-tools": "^0.1.2-alpha.1",
19
- "@deepseek-ai/dsh-user-questions": "^0.1.2-alpha.1"
17
+ "@deepseek-ai/cordis": "^4.0.2",
18
+ "@deepseek-ai/dsh-tools": "^0.1.5-rc.1",
19
+ "@deepseek-ai/dsh-user-questions": "^0.1.5-rc.1"
20
20
  },
21
21
  "engines": {
22
22
  "node": "^22.19 || >=24"