@eddyskywalker/dsh-chatgpt-subscription 0.25.0 → 0.26.0

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/CHANGELOG.md CHANGED
@@ -2,6 +2,23 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.26.0 - 2026-10-17
6
+
7
+ - **[MiniMax Code] 无答案轮次现在会自动续跑跑完(社区 PR #61),并把「续跑预算」真正做成有界**
8
+ - **问题**:0.24.7 之后,模型把整轮花在思考上、只回 thinking 块就 `end_turn` 的轮次不再静默停住,而是**明确报错**——诚实,但这一轮仍然没跑完。harness 没有「模型啥也没干就停了」这个失败模式的表示,所以报完错这一轮就结束了,没有任何东西接着往下做。PR #61 新增 host 侧钩子监听 `llm/stream` 瀑布,认出这条失败后 steer 一句续跑提示,让这一轮跑完。**关键约束(PR 已论证且经复核)**:steer 必须在 Agent 空闲时发——`Agent.steer` 往 inbox 里 splice 并调 `wakeDriver`,而 `wakeDriver` 只在 `phase.kind === 'idle'` 时开新回合;回合还在 running 时发,什么都不 latch,消息会一直躺在 inbox 里没人读。因此这里等 `whenIdle()`。失败靠 `mapper.ts` 导出的 `NO_ANSWER_PHRASE` 识别,不抄句子。配置:`"noAnswerResume": { "maxResumes": 2, "text": "..." }`,`"noAnswerResume": false` 关闭。
9
+ - **合并后另行修复的两个缺陷(在发版前发现,若直接发布会让默认安装的用户被无限烧请求)**:① **`maxResumes` 实际不封顶**——`settle()` 从生成器的 `finally` 调用,而 `finally` 在**正常结束、被放弃、抛错**三种退出上都会跑;流被放弃时根本没见到 finish chunk,`answerless` 一定是 false,只要此前吐过正文 `answered` 就是 true,于是那句 `if (answered) consecutive = 0` 把计数清零。生产上有两条常规路径会踩到:用户按停止(harness `for await` + `throwIfAborted`),以及**推理塌缩守卫**——它在 `llm/stream` 上先注册,因此处在 Cordis 瀑布的**外层**,`return` 时不给 finish chunk。实测 `maxResumes: 2` 却续跑了 6 次。改法:只有**读到底**的流才结算,被放弃或抛错的流什么都不能证明,既不消耗预算也不清零、且不写日志。② **计数不是「连续」,日志在说谎**——只有「答出来了」的轮次才清零,于是 `aborted finish` / `max-tokens` / `TIMEOUT` / 其他 `PROVIDER_ERROR` 都不会打断连击:三段**不相邻**的无答案轮照样打出 `gave up after 2 answerless turns in a row`,预算被花掉一次之后该功能在本会话余下时间里静默失效。改法:**任何**正常结束且非无答案的轮次都清零连击,让标识符、注释与日志三者一致。
10
+ - **另外三处加固**:③ 每会话状态在 `agent/disposed` 时清理(照搬塌缩守卫的做法),不再为进程生命周期内每个会话常驻一条;④ 插件销毁后排队中的续跑不再 steer,且一个会话同时只持有一条排队续跑(同一轮重试 settle 两次不会投递两次);⑤ `isVisible` 改为 `trim()`,与产出方 `hasVisibleOutput` 完全一致,避免消费方与产出方对「这一轮算不算答了」产生分歧。
11
+ - **验证**:`npm run typecheck` 0 错误;`test/no-answer-resume.test.ts` **22 passed**(贡献者的 15 例 + 7 例回归:`iterator.return()` 放弃、中途抛错、`TIMEOUT` 轮次、销毁时有续跑在排队、空闲前两次 settle);`test/reasoning-collapse-guard.test.ts` 80 passed;全量 **231 passed | 1 skipped(232 文件)、3809 passed | 7 skipped、0 failed**。**承重已双向检查**:把源码还原到合并提交后重跑,新增用例 **7 failed | 15 passed**,失败项正是上述缺陷,恢复后重新全绿。
12
+ - **复核结论(对照真实 harness 源码逐条核对)**:`llm/stream` 瀑布签名、`{ global: true }` 为真实的 `EventOptions` 字段、`GenerateOptions.sessionId`/`purpose`、`StreamChunk` 的 finish/delta 形状、`Agent.steer`+`whenIdle` 语义(空闲 steer 会开新回合、忙碌 steer 会 latch 并被 live driver 认领、只有 `cancel()` 才丢弃)、`ctx.get('agents')` 是**合法的免 inject 读取**而 `ctx.agents` 会抛——全部为真;`NO_ANSWER_PHRASE` 只有一个产出方,不存在跨线路误判。
13
+ - **未做**:真正的「不让它发生」仍要靠请求侧降档(effort 从 max 降到 xhigh/high),那是部署配置、不在本仓;本版只让**已经发生**的轮次跑完。子代理会话同样会被续跑(`purpose` 为 undefined 且自带 sessionId),若日后需要只对主线生效,应以 `request.provider` 收窄,留作后续。
14
+ ## 0.25.1 - 2026-10-17
15
+
16
+ - **[Harness & 调度预设] 适配 DSH 0.2.1-rc.1 / 0.2.1-rc.2,并修复调度模式在 0.2.1 下报 `unknown prompt variable "{{cwd}}"` 的启动失败**
17
+ - **调度预设(`dispatch`)移除未注册的 `{{cwd}}` 变量**:DSH 0.2.1 引入独立的 `@deepseek-ai/dsh-working-directory` 服务(通过 `working-directory` section 注入工作目录提示),不再向 `ctx.systemPrompt` 注册 `cwd` 模板变量(仅保留 `provider` 与 `model`),导致 `dispatch` 预设在组装系统提示词时直接报错 `unknown prompt variable "{{cwd}}" in section "deployment:persona-prefix"; registered variables: provider, model`。本次从 `presets/dispatch/agent.cordis.yml` 与 `src/host/agent-preset.ts` 的 `persona.config.prefix` 中移除重复的 `Your working directory is {{cwd}}.`,并新增 `resolveDispatchPreset()` 在检测到 `@deepseek-ai/dsh-working-directory`(`>=0.2.1`)时自动剥离 `persona.config.suffix`,而在 `0.1.7–0.2.0` 及 `≤0.1.6` 上完整保留 `suffix: 'Your working directory is {{cwd}}.'`。
18
+ - **适配 0.2.1-rc.2 的 `Volatile` 搜索配置(`SearchProviderSwitcher`)**:`dsh-v0.2.1-rc.2` 将 `@deepseek-ai/dsh-web` 的 `searchProvider` / `fetchProvider` 配置改为 `z.string().volatile()`,运行时 `fiber.config.searchProvider` 为暴露 `.get()` 的 `Volatile` 包装器而非裸字符串。`src/host/search-provider-switcher.ts` 新增 `runningProviderValue()` 同时兼容裸字符串(`≤0.2.1-rc.1`)与 `Volatile<string>`(`>=0.2.1-rc.2`),避免在 `>=0.2.1-rc.2` 下切换搜索源时误判热更新未生效而触发多余的 fiber 强制重启。
19
+ - **依赖基线与 Claude 快照对齐**:15 个 `@deepseek-ai/dsh-*` 的 `peerDependencies` 与 `devDependencies` 同步升级至 `^0.2.1-rc.1`(覆盖 `0.2.1-rc.1`、`0.2.1-rc.2` 及 `0.2.1` 正式版),`@deepseek-ai/cordis` 升级至 `^4.0.6`;Claude 模型目录顺序与测试基线同步对齐本地 Harness 的 `@earendil-works/pi-ai@1.1.0`(17 条快照)。
20
+ - **验证**:`npx tsc -b --force`、测试树 `tsc`、干净 `npm run build`、`npm ci --dry-run`、`npm pack --dry-run`(523 文件)均 0 错误通过;全量 **230 passed | 1 skipped(231 文件)、3787 passed | 7 skipped、0 failed**。
21
+
5
22
  ## 0.25.0 - 2026-10-17
6
23
 
7
24
  - **[Harness] 支持 DSH 0.2.1-alpha.5,并接入新版可用的请求元数据能力**
package/lib/index.js CHANGED
@@ -12189,7 +12189,7 @@ var SearchProviderSwitcher = class {
12189
12189
  const nextSearch = codexSelected ? CODEX_SEARCH_PROVIDER_ID : this.originalSearchProvider;
12190
12190
  const nextFetch = options.fetchProvider === "plugin" || options.fetchProvider !== "dsh" && (codexSelected || options.pluginFetch === true) ? CODEX_FETCH_PROVIDER_ID : this.originalFetchProvider;
12191
12191
  const configured = config.searchProvider === nextSearch && config.fetchProvider === nextFetch;
12192
- const applied = running === void 0 || running.searchProvider === nextSearch && running.fetchProvider === nextFetch;
12192
+ const applied = running === void 0 || runningProviderValue(running.searchProvider) === nextSearch && runningProviderValue(running.fetchProvider) === nextFetch;
12193
12193
  if (configured && applied) {
12194
12194
  this.state = "applied";
12195
12195
  return;
@@ -12244,6 +12244,14 @@ function currentConfig(entry) {
12244
12244
  const config = entry.options.config;
12245
12245
  return typeof config === "object" && config !== null && !Array.isArray(config) ? config : {};
12246
12246
  }
12247
+ /**
12248
+ * Unwrap a Cordis `Volatile<string | undefined>` config reference (`@deepseek-ai/dsh-web`
12249
+ * >=0.2.1-rc.2) or return a plain runtime config value (`<=0.2.1-rc.1`).
12250
+ */
12251
+ function runningProviderValue(value) {
12252
+ if (typeof value === "object" && value !== null && "get" in value && typeof value.get === "function") return value.get();
12253
+ return value;
12254
+ }
12247
12255
  /** Never include paths, credentials, or arbitrary configuration in public diagnostics. */
12248
12256
  function providerId(value) {
12249
12257
  return typeof value === "string" && /^[a-zA-Z0-9_-]{1,80}$/.test(value) ? value : null;
@@ -38058,6 +38066,24 @@ const CLAUDE_MODELS = Object.freeze([
38058
38066
  ],
38059
38067
  canDisableThinking: true
38060
38068
  },
38069
+ {
38070
+ id: "claude-haiku-5-5",
38071
+ name: "Claude Haiku 5.5",
38072
+ contextWindow: 1e6,
38073
+ maxTokens: 128e3,
38074
+ supportsImage: true,
38075
+ supportsTemperature: false,
38076
+ thinkingMode: "adaptive",
38077
+ reasoningEfforts: [
38078
+ "low",
38079
+ "medium",
38080
+ "high",
38081
+ "xhigh",
38082
+ "max"
38083
+ ],
38084
+ canDisableThinking: true,
38085
+ bindsThinkingToPrefix: true
38086
+ },
38061
38087
  {
38062
38088
  id: "claude-opus-4-5",
38063
38089
  name: "Claude Opus 4.5 (latest)",
@@ -38254,24 +38280,6 @@ const CLAUDE_MODELS = Object.freeze([
38254
38280
  ],
38255
38281
  canDisableThinking: false,
38256
38282
  bindsThinkingToPrefix: true
38257
- },
38258
- {
38259
- id: "claude-haiku-5-5",
38260
- name: "Claude Haiku 5.5",
38261
- contextWindow: 1e6,
38262
- maxTokens: 128e3,
38263
- supportsImage: true,
38264
- supportsTemperature: false,
38265
- thinkingMode: "adaptive",
38266
- reasoningEfforts: [
38267
- "low",
38268
- "medium",
38269
- "high",
38270
- "xhigh",
38271
- "max"
38272
- ],
38273
- canDisableThinking: true,
38274
- bindsThinkingToPrefix: true
38275
38283
  }
38276
38284
  ]);
38277
38285
  /** Every id the fallback table knows, in declaration order. */
@@ -58820,7 +58828,7 @@ const DISPATCH_PRESET = {
58820
58828
  name: "@deepseek-ai/dsh-persona",
58821
58829
  config: {
58822
58830
  suffix: "Your working directory is {{cwd}}.",
58823
- prefix: `You are powered by {{model}}. Your working directory is {{cwd}}.
58831
+ prefix: `You are powered by {{model}}.
58824
58832
 
58825
58833
  [Role Identification] If your first user message is a task brief (rather than a direct request from the human user), you are a subagent: the coordinator-facing rules in R0, R0.5, R-G, R1, R2, R4, R5, and R-W do not apply to you. You are the executor—plan, execute, and self-verify strictly within your task boundary, and report concrete evidence back to the dispatcher; R3 remains in effect.
58826
58834
 
@@ -59136,6 +59144,33 @@ Reset: fallback applies only to the current task. When the next task begins, alw
59136
59144
  }
59137
59145
  ]
59138
59146
  };
59147
+ /**
59148
+ * Reconcile {@link DISPATCH_PRESET} with the running harness generation.
59149
+ *
59150
+ * Harnesses shipping `@deepseek-ai/dsh-working-directory` (>= 0.2.1) provide the
59151
+ * session working directory through the `WORKING_DIRECTORY` dynamic context and
59152
+ * no longer register `{{cwd}}` on `ctx.systemPrompt`, so keeping `persona.config.suffix`
59153
+ * (`Your working directory is {{cwd}}.`) makes `SystemPrompt` throw
59154
+ * `unknown prompt variable "{{cwd}}"` at render time. On 0.1.7–0.2.0 that package
59155
+ * is absent and `{{cwd}}` is still the only way the persona states the workspace,
59156
+ * so the unmodified {@link DISPATCH_PRESET} is returned unchanged.
59157
+ * @param resolves - whether a bare specifier resolves in this installation.
59158
+ * @returns the preset definition for the running harness generation.
59159
+ */
59160
+ function resolveDispatchPreset(resolves = resolvesFromHere) {
59161
+ if (!resolves("@deepseek-ai/dsh-working-directory")) return DISPATCH_PRESET;
59162
+ return {
59163
+ ...DISPATCH_PRESET,
59164
+ plugins: DISPATCH_PRESET.plugins.map((row) => {
59165
+ if (row.id !== "persona" || typeof row.config !== "object" || row.config === null) return row;
59166
+ const { suffix: _omitted, ...rest } = row.config;
59167
+ return {
59168
+ ...row,
59169
+ config: rest
59170
+ };
59171
+ })
59172
+ };
59173
+ }
59139
59174
  /** The `agentPresets` service, when the host exposes one that can register. */
59140
59175
  function presetRegistry(host) {
59141
59176
  if (typeof host.get !== "function") return void 0;
@@ -59168,7 +59203,7 @@ function installDispatchPreset(host, resolves = resolvesFromHere) {
59168
59203
  host.logger.warn(`[dsh-chatgpt-subscription] agent preset "${DISPATCH_PRESET_ID}" fell back to the preset root: ${PRESET_REGISTRY_PACKAGE} is installed but no agentPresets service is available`);
59169
59204
  return "legacy";
59170
59205
  }
59171
- host.effect(() => registerDispatchPreset(host, registry), "dsh-chatgpt-subscription: dispatch agent preset");
59206
+ host.effect(() => registerDispatchPreset(host, registry, resolves), "dsh-chatgpt-subscription: dispatch agent preset");
59172
59207
  return "registered";
59173
59208
  } catch (error) {
59174
59209
  host.logger.warn(`[dsh-chatgpt-subscription] agent preset "${DISPATCH_PRESET_ID}" could not be registered: ${messageOf(error)}`);
@@ -59180,11 +59215,12 @@ function installDispatchPreset(host, resolves = resolvesFromHere) {
59180
59215
  * it.
59181
59216
  * @param host - plugin context, for the logger.
59182
59217
  * @param registry - the service the definition is submitted to.
59218
+ * @param resolves - whether a bare specifier resolves in this installation.
59183
59219
  * @returns the harness's own unregister function, or a no-op after a failure.
59184
59220
  */
59185
- async function registerDispatchPreset(host, registry) {
59221
+ async function registerDispatchPreset(host, registry, resolves) {
59186
59222
  try {
59187
- const unregister = await registry.register(DISPATCH_PRESET);
59223
+ const unregister = await registry.register(resolveDispatchPreset(resolves));
59188
59224
  host.logger.info(`[dsh-chatgpt-subscription] agent preset "${DISPATCH_PRESET_ID}" registered with the running harness`);
59189
59225
  return unregister;
59190
59226
  } catch (error) {
@@ -59859,7 +59895,7 @@ const DEFAULT_GUARD_OPTIONS = {
59859
59895
  semanticStrictConfirmations: 5,
59860
59896
  now: () => Date.now()
59861
59897
  };
59862
- function pruneUndefined(options) {
59898
+ function pruneUndefined$1(options) {
59863
59899
  const result = {};
59864
59900
  for (const [key, value] of Object.entries(options)) if (value !== void 0) result[key] = value;
59865
59901
  return result;
@@ -59872,7 +59908,7 @@ function pruneUndefined(options) {
59872
59908
  function resolveGuardOptions(options = {}) {
59873
59909
  const resolved = {
59874
59910
  ...DEFAULT_GUARD_OPTIONS,
59875
- ...pruneUndefined(options)
59911
+ ...pruneUndefined$1(options)
59876
59912
  };
59877
59913
  if (!Number.isInteger(resolved.windowChars) || resolved.windowChars < 1) throw new Error(`reasoning-collapse-guard: invalid windowChars ${String(resolved.windowChars)} — must be an integer >= 1`);
59878
59914
  if (!Number.isInteger(resolved.ngramSize) || resolved.ngramSize < 2) throw new Error(`reasoning-collapse-guard: invalid ngramSize ${String(resolved.ngramSize)} — must be an integer >= 2`);
@@ -60038,7 +60074,7 @@ function createBreakerState() {
60038
60074
  * merge-extensible `MessageSourceMap`, so the resume carries real provenance
60039
60075
  * instead of impersonating a human turn.
60040
60076
  */
60041
- function createResumeMessage(text) {
60077
+ function createResumeMessage$1(text) {
60042
60078
  return createUserMessage({
60043
60079
  content: [{
60044
60080
  type: "text",
@@ -60056,12 +60092,12 @@ function appendWindow(current, addition, limit) {
60056
60092
  return combined.length > limit ? combined.slice(-limit) : combined;
60057
60093
  }
60058
60094
  /** An Agent's session identity as the plain string a request carries. */
60059
- function agentId(raw) {
60095
+ function agentId$1(raw) {
60060
60096
  const id = raw?.id;
60061
60097
  return typeof id === "string" ? id : void 0;
60062
60098
  }
60063
60099
  /** A service object exposing the lookup the guard needs, if it is one. */
60064
- function asRegistry(value) {
60100
+ function asRegistry$1(value) {
60065
60101
  return value !== null && typeof value === "object" && typeof value.get === "function" ? value : void 0;
60066
60102
  }
60067
60103
  /**
@@ -60081,13 +60117,13 @@ function asRegistry(value) {
60081
60117
  * Both reads are guarded: a host without the reader, and one without the
60082
60118
  * service, must leave this plugin loadable rather than failing its import.
60083
60119
  */
60084
- function agentRegistry(ctx) {
60120
+ function agentRegistry$1(ctx) {
60085
60121
  try {
60086
- const registry = asRegistry(typeof ctx.get === "function" ? ctx.get("agents") : void 0);
60122
+ const registry = asRegistry$1(typeof ctx.get === "function" ? ctx.get("agents") : void 0);
60087
60123
  if (registry !== void 0) return registry;
60088
60124
  } catch {}
60089
60125
  try {
60090
- return asRegistry(ctx.agents);
60126
+ return asRegistry$1(ctx.agents);
60091
60127
  } catch {
60092
60128
  return;
60093
60129
  }
@@ -60102,11 +60138,11 @@ function agentRegistry(ctx) {
60102
60138
  * is a hard error rather than a runaway. A generation that predates the field
60103
60139
  * leaves it undefined, which is the pre-existing behaviour.
60104
60140
  */
60105
- function conversationCall(request) {
60141
+ function conversationCall$1(request) {
60106
60142
  return request.purpose === void 0;
60107
60143
  }
60108
60144
  /** Error text for one warn line, without importing a generation-bound helper. */
60109
- function describeError(error) {
60145
+ function describeError$1(error) {
60110
60146
  return error instanceof Error ? `${error.name}: ${error.message}` : String(error);
60111
60147
  }
60112
60148
  /**
@@ -60138,14 +60174,14 @@ function installReasoningCollapseGuard(ctx, options = {}) {
60138
60174
  remember(payload.agent);
60139
60175
  });
60140
60176
  const releaseDisposed = ctx.on("agent/disposed", (payload) => {
60141
- const id = agentId(payload.agent);
60177
+ const id = agentId$1(payload.agent);
60142
60178
  if (id !== void 0) known.delete(id);
60143
60179
  });
60144
60180
  const releaseStream = ctx.on("llm/stream", guardStream, { global: true });
60145
60181
  function remember(raw) {
60146
60182
  const agent = raw;
60147
60183
  if (agent === void 0 || agent === null) return;
60148
- const id = agentId(agent);
60184
+ const id = agentId$1(agent);
60149
60185
  if (id !== void 0) known.set(id, agent);
60150
60186
  }
60151
60187
  /**
@@ -60160,7 +60196,7 @@ function installReasoningCollapseGuard(ctx, options = {}) {
60160
60196
  function resolveAgent(sessionId) {
60161
60197
  if (sessionId === void 0) return void 0;
60162
60198
  try {
60163
- const registered = agentRegistry(ctx)?.get(sessionId);
60199
+ const registered = agentRegistry$1(ctx)?.get(sessionId);
60164
60200
  if (registered !== void 0 && registered !== null) return registered;
60165
60201
  } catch {}
60166
60202
  return known.get(sessionId);
@@ -60206,9 +60242,9 @@ function installReasoningCollapseGuard(ctx, options = {}) {
60206
60242
  queueMicrotask(() => {
60207
60243
  state.resuming = false;
60208
60244
  try {
60209
- agent.steer?.(createResumeMessage(text));
60245
+ agent.steer?.(createResumeMessage$1(text));
60210
60246
  } catch (error) {
60211
- ctx.logger?.warn(`reasoning-collapse-guard: could not queue the resume: ${describeError(error)}`);
60247
+ ctx.logger?.warn(`reasoning-collapse-guard: could not queue the resume: ${describeError$1(error)}`);
60212
60248
  }
60213
60249
  });
60214
60250
  }
@@ -60256,7 +60292,7 @@ function installReasoningCollapseGuard(ctx, options = {}) {
60256
60292
  }
60257
60293
  function guardStream(request, next) {
60258
60294
  const state = breakerFor(request.signal ?? STATIC_KEY);
60259
- if (state.exhausted || !watchedModel(request.model) || !conversationCall(request)) return next();
60295
+ if (state.exhausted || !watchedModel(request.model) || !conversationCall$1(request)) return next();
60260
60296
  const agent = resolveAgent(request.sessionId);
60261
60297
  async function* guarded() {
60262
60298
  let window = "";
@@ -60299,15 +60335,259 @@ function installReasoningCollapseGuard(ctx, options = {}) {
60299
60335
  return guarded();
60300
60336
  }
60301
60337
  return () => {
60302
- releaseListener(releaseStream);
60303
- releaseListener(releaseCreated);
60304
- releaseListener(releaseDisposed);
60338
+ releaseListener$1(releaseStream);
60339
+ releaseListener$1(releaseCreated);
60340
+ releaseListener$1(releaseDisposed);
60305
60341
  known.clear();
60306
60342
  };
60307
60343
  }
60308
60344
  /** Shared key for the rare request that carries no abort signal. */
60309
60345
  const STATIC_KEY = {};
60310
60346
  /** Cordis event handles are either a disposer function or a disposable object. */
60347
+ function releaseListener$1(handle) {
60348
+ if (typeof handle === "function") {
60349
+ handle();
60350
+ return;
60351
+ }
60352
+ handle?.dispose?.();
60353
+ }
60354
+ const DEFAULT_NO_ANSWER_RESUME_OPTIONS = {
60355
+ maxResumes: 2,
60356
+ text: "Your previous response ended without an answer and without calling a tool. Continue from where you left off: either state the conclusion you already reached, or make the single next tool call that moves the task forward. Do not restart the analysis."
60357
+ };
60358
+ function pruneUndefined(options) {
60359
+ const result = {};
60360
+ if (options.maxResumes !== void 0) result.maxResumes = options.maxResumes;
60361
+ if (options.text !== void 0) result.text = options.text;
60362
+ return result;
60363
+ }
60364
+ /**
60365
+ * Validate caller options fail-loud and fill in defaults.
60366
+ *
60367
+ * A resume budget below one would disable the hook while looking enabled, and an
60368
+ * empty continuation would wake the Agent with nothing to act on — both are
60369
+ * configuration mistakes worth failing on rather than silently ignoring.
60370
+ */
60371
+ function resolveNoAnswerResumeOptions(options = {}) {
60372
+ const resolved = {
60373
+ ...DEFAULT_NO_ANSWER_RESUME_OPTIONS,
60374
+ ...pruneUndefined(options)
60375
+ };
60376
+ if (!Number.isInteger(resolved.maxResumes) || resolved.maxResumes < 1) throw new Error(`no-answer-resume: invalid maxResumes ${String(resolved.maxResumes)} — must be an integer >= 1`);
60377
+ if (typeof resolved.text !== "string" || resolved.text.trim() === "") throw new Error("no-answer-resume: invalid text — must be a non-empty string");
60378
+ return resolved;
60379
+ }
60380
+ /** The message a resume carries, with this package's own provenance. */
60381
+ function createResumeMessage(text) {
60382
+ return createUserMessage({
60383
+ content: [{
60384
+ type: "text",
60385
+ text
60386
+ }],
60387
+ source: {
60388
+ kind: PLUGIN_MESSAGE_SOURCE_KIND,
60389
+ form: "notice",
60390
+ summary: boundContextSummary("The turn ended without an answer; it was resumed.")
60391
+ }
60392
+ });
60393
+ }
60394
+ /** An Agent's session identity as the plain string a request carries. */
60395
+ function agentId(raw) {
60396
+ const id = raw?.id;
60397
+ return typeof id === "string" ? id : void 0;
60398
+ }
60399
+ /** The map key one session's state lives under; requests carry no id at all. */
60400
+ function sessionKey(sessionId) {
60401
+ return sessionId ?? "";
60402
+ }
60403
+ function asRegistry(value) {
60404
+ return value !== null && typeof value === "object" && typeof value.get === "function" ? value : void 0;
60405
+ }
60406
+ /** The host's Agent registry, read defensively through both available routes. */
60407
+ function agentRegistry(ctx) {
60408
+ try {
60409
+ const registry = asRegistry(typeof ctx.get === "function" ? ctx.get("agents") : void 0);
60410
+ if (registry !== void 0) return registry;
60411
+ } catch {}
60412
+ try {
60413
+ return asRegistry(ctx.agents);
60414
+ } catch {
60415
+ return;
60416
+ }
60417
+ }
60418
+ /** Error text for one warn line, without importing a generation-bound helper. */
60419
+ function describeError(error) {
60420
+ return error instanceof Error ? `${error.name}: ${error.message}` : String(error);
60421
+ }
60422
+ /** Whether one request is a conversation call this hook may resume. */
60423
+ function conversationCall(request) {
60424
+ return request.purpose === void 0;
60425
+ }
60426
+ /**
60427
+ * Whether one finish chunk is the answerless-turn failure this hook resumes.
60428
+ *
60429
+ * Matched on the code plus the phrase the reporting line exports, never on the
60430
+ * whole message: the rest of it carries diagnostics that may change.
60431
+ */
60432
+ function isAnswerlessFailure(chunk) {
60433
+ const reason = chunk.reason;
60434
+ if (reason === void 0 || reason.kind !== "error") return false;
60435
+ const failure = reason.failure;
60436
+ if (failure === void 0 || failure.code !== "PROVIDER_ERROR") return false;
60437
+ return typeof failure.message === "string" && failure.message.includes("ended the turn without an answer or a tool call");
60438
+ }
60439
+ /**
60440
+ * Whether a chunk proves the response carried something a reader can act on.
60441
+ *
60442
+ * Whitespace is trimmed exactly as the mapper trims it when it decides
60443
+ * answerlessness (`hasVisibleOutput`): a delta of blanks is not an answer, and
60444
+ * a consumer that disagreed with the producer about that would classify a turn
60445
+ * the provider already called answered — or the reverse.
60446
+ */
60447
+ function isVisible(chunk) {
60448
+ if (chunk.type === "tool-call-delta") return true;
60449
+ return chunk.type === "text-delta" && typeof chunk.text === "string" && chunk.text.trim() !== "";
60450
+ }
60451
+ /**
60452
+ * Install the answerless-turn resume hook on a Context.
60453
+ *
60454
+ * Inert unless the host exposes the event bus, so a harness without it keeps the
60455
+ * built-in behaviour instead of failing this plugin's load.
60456
+ *
60457
+ * @param ctx - plugin context.
60458
+ * @param options - see {@link NoAnswerResumeOptions}; validated fail-loud.
60459
+ * @returns a disposer removing every listener, or undefined when the host
60460
+ * exposes no event bus.
60461
+ */
60462
+ function installNoAnswerResume(ctx, options = {}) {
60463
+ const resolved = resolveNoAnswerResumeOptions(options);
60464
+ if (typeof ctx.on !== "function") return void 0;
60465
+ const sessions = /* @__PURE__ */ new Map();
60466
+ let disposed = false;
60467
+ /**
60468
+ * The Agent that owns one request, or undefined when this host cannot name it.
60469
+ *
60470
+ * Read per resume, not once at install: a Cordis context throws when a service
60471
+ * is not injected yet, and this plugin may well load before the registry that
60472
+ * comes up moments later.
60473
+ */
60474
+ function resolveAgent(sessionId) {
60475
+ if (sessionId === void 0) return void 0;
60476
+ try {
60477
+ const registered = agentRegistry(ctx)?.get(sessionId);
60478
+ if (registered !== void 0 && registered !== null) return registered;
60479
+ } catch {}
60480
+ }
60481
+ function stateFor(sessionId) {
60482
+ const key = sessionKey(sessionId);
60483
+ let state = sessions.get(key);
60484
+ if (state === void 0) {
60485
+ state = {
60486
+ consecutive: 0,
60487
+ pending: false
60488
+ };
60489
+ sessions.set(key, state);
60490
+ }
60491
+ return state;
60492
+ }
60493
+ /**
60494
+ * Steer one continuation, once the Agent has no turn in flight.
60495
+ *
60496
+ * `whenIdle` is the whole point: a steer sent while the turn is still running
60497
+ * is spliced into the inbox with no wake latched behind it, so it would never
60498
+ * be read. A generation without `whenIdle` cannot be asked, so the resume is
60499
+ * attempted on a microtask and the log says the pickup is not guaranteed.
60500
+ *
60501
+ * `fire` can run long after it was queued, and by then the plugin may be
60502
+ * gone. The slot is only released once a resume actually reaches the Agent:
60503
+ * holding it across a queue that ends in disposal would strand the session.
60504
+ */
60505
+ function resume(state, agent, attempt, sessionId) {
60506
+ const fire = () => {
60507
+ if (disposed) return;
60508
+ state.pending = false;
60509
+ try {
60510
+ agent.steer?.(createResumeMessage(resolved.text));
60511
+ ctx.logger?.info?.(`no-answer-resume: resumed attempt ${attempt}/${resolved.maxResumes} (session ${sessionId ?? "unidentified"})`);
60512
+ } catch (error) {
60513
+ ctx.logger?.warn(`no-answer-resume: could not queue the resume: ${describeError(error)}`);
60514
+ }
60515
+ };
60516
+ const idle = typeof agent.whenIdle === "function" ? agent.whenIdle() : void 0;
60517
+ if (idle === void 0) {
60518
+ ctx.logger?.warn("no-answer-resume: this host cannot report when the Agent is idle; the resume may not be picked up");
60519
+ queueMicrotask(fire);
60520
+ return;
60521
+ }
60522
+ Promise.resolve(idle).then(fire, () => fire());
60523
+ }
60524
+ /**
60525
+ * Decide what one completed stream means for its session.
60526
+ *
60527
+ * The budget counts *consecutive* answerless turns, so every completed turn
60528
+ * that did not report the failure ends the streak — not only the ones that
60529
+ * answered. An aborted finish, a max-tokens finish, a TIMEOUT or any other
60530
+ * provider error is just as much an interruption: a streak that survived one
60531
+ * of them would spend the budget on answerless turns that never were
60532
+ * adjacent, report them as "in a row", and then stop resuming for the rest of
60533
+ * the session. `answered` closes the mirror image: the mapper only reports
60534
+ * this failure when nothing visible was emitted, so a turn that did emit
60535
+ * something is not an unanswered turn whichever chunk says otherwise.
60536
+ *
60537
+ * Only called for a stream that ran to its end — an abandoned or thrown one
60538
+ * proves nothing, so it is not asked about at all.
60539
+ */
60540
+ function settle(sessionId, answered, answerless) {
60541
+ const state = stateFor(sessionId);
60542
+ if (!answerless || answered) {
60543
+ state.consecutive = 0;
60544
+ state.pending = false;
60545
+ return;
60546
+ }
60547
+ if (state.pending) return;
60548
+ if (state.consecutive >= resolved.maxResumes) {
60549
+ ctx.logger?.warn(`no-answer-resume: gave up after ${state.consecutive} answerless turns in a row (session ${sessionId ?? "unidentified"})`);
60550
+ return;
60551
+ }
60552
+ const agent = resolveAgent(sessionId);
60553
+ if (agent === void 0 || typeof agent.steer !== "function") {
60554
+ ctx.logger?.warn(`no-answer-resume: no Agent to resume (session ${sessionId ?? "unidentified"})`);
60555
+ return;
60556
+ }
60557
+ state.consecutive += 1;
60558
+ state.pending = true;
60559
+ resume(state, agent, state.consecutive, sessionId);
60560
+ }
60561
+ function resumeStream(request, next) {
60562
+ return (async function* () {
60563
+ let answered = false;
60564
+ let answerless = false;
60565
+ let completed = false;
60566
+ try {
60567
+ for await (const chunk of next()) {
60568
+ if (isVisible(chunk)) answered = true;
60569
+ if (chunk.type === "finish" && isAnswerlessFailure(chunk)) answerless = true;
60570
+ yield chunk;
60571
+ }
60572
+ completed = true;
60573
+ } finally {
60574
+ if (completed && conversationCall(request)) settle(request.sessionId, answered, answerless);
60575
+ }
60576
+ })();
60577
+ }
60578
+ const releaseDisposed = ctx.on("agent/disposed", (payload) => {
60579
+ const id = agentId(payload.agent);
60580
+ if (id !== void 0) sessions.delete(sessionKey(id));
60581
+ });
60582
+ const releaseStream = ctx.on("llm/stream", resumeStream, { global: true });
60583
+ return () => {
60584
+ disposed = true;
60585
+ releaseListener(releaseStream);
60586
+ releaseListener(releaseDisposed);
60587
+ sessions.clear();
60588
+ };
60589
+ }
60590
+ /** Cordis event handles are either a disposer function or a disposable object. */
60311
60591
  function releaseListener(handle) {
60312
60592
  if (typeof handle === "function") {
60313
60593
  handle();
@@ -60331,6 +60611,7 @@ const Config = z.object({
60331
60611
  subagentModelInheritTools: z.array(z.string()).default(DEFAULT_SUBAGENT_INHERIT_TOOLS),
60332
60612
  subagentModelScope: z.union([z.const("session"), z.const("preference")]).default("session"),
60333
60613
  reasoningCollapseGuard: z.union([z.object({}), z.const(false)]).default({}),
60614
+ noAnswerResume: z.union([z.object({}), z.const(false)]).default({}),
60334
60615
  codexStreamIdleTimeoutMs: z.number().min(1).max(MAX_TIMER_DELAY_MS).step(1).default(DEFAULT_STREAM_IDLE_TIMEOUT_MS)
60335
60616
  });
60336
60617
  const inject = [
@@ -60419,6 +60700,17 @@ function apply(ctx, pluginConfig = {}) {
60419
60700
  return dispose;
60420
60701
  }, "dsh-chatgpt-subscription: reasoning collapse guard");
60421
60702
  }
60703
+ if (pluginConfig.noAnswerResume !== false) {
60704
+ const resumeOptions = pluginConfig.noAnswerResume ?? {};
60705
+ ctx.effect(() => {
60706
+ const dispose = installNoAnswerResume(ctx, resumeOptions);
60707
+ if (dispose === void 0) {
60708
+ ctx.logger.warn("[dsh-chatgpt-subscription] no-answer resume skipped: this harness exposes no event bus");
60709
+ return () => void 0;
60710
+ }
60711
+ return dispose;
60712
+ }, "dsh-chatgpt-subscription: no-answer resume");
60713
+ }
60422
60714
  const probeEnvFile = relayProbeEnvFile();
60423
60715
  if (relayProbeEnabled(process.env, { envFile: probeEnvFile })) {
60424
60716
  const probePath = relayProbeLogPath(process.env, { envFile: probeEnvFile });
@@ -25,6 +25,12 @@
25
25
  */
26
26
  /** The row package whose presence marks a harness that takes presets from a row. */
27
27
  export declare const PRESET_REGISTRY_PACKAGE = "@deepseek-ai/dsh-agent-preset";
28
+ /**
29
+ * The package whose presence marks a harness (>= 0.2.1) that injects the
30
+ * session working directory via `WORKING_DIRECTORY` user context and no longer
31
+ * registers `{{cwd}}` as a `systemPrompt` variable.
32
+ */
33
+ export declare const WORKING_DIRECTORY_PACKAGE = "@deepseek-ai/dsh-working-directory";
28
34
  /** The id the `dispatch` preset is selectable under. */
29
35
  export declare const DISPATCH_PRESET_ID = "dispatch";
30
36
  /**
@@ -92,6 +98,20 @@ export type PresetInstall = 'registered' | 'legacy';
92
98
  * for text the Loader evaluates, and nothing evaluates this.
93
99
  */
94
100
  export declare const DISPATCH_PRESET: PresetDefinition;
101
+ /**
102
+ * Reconcile {@link DISPATCH_PRESET} with the running harness generation.
103
+ *
104
+ * Harnesses shipping `@deepseek-ai/dsh-working-directory` (>= 0.2.1) provide the
105
+ * session working directory through the `WORKING_DIRECTORY` dynamic context and
106
+ * no longer register `{{cwd}}` on `ctx.systemPrompt`, so keeping `persona.config.suffix`
107
+ * (`Your working directory is {{cwd}}.`) makes `SystemPrompt` throw
108
+ * `unknown prompt variable "{{cwd}}"` at render time. On 0.1.7–0.2.0 that package
109
+ * is absent and `{{cwd}}` is still the only way the persona states the workspace,
110
+ * so the unmodified {@link DISPATCH_PRESET} is returned unchanged.
111
+ * @param resolves - whether a bare specifier resolves in this installation.
112
+ * @returns the preset definition for the running harness generation.
113
+ */
114
+ export declare function resolveDispatchPreset(resolves?: SpecifierResolver): PresetDefinition;
95
115
  /**
96
116
  * Declare `dispatch` to the running harness, when the harness has the mechanism.
97
117
  *
@@ -1 +1 @@
1
- {"version":3,"file":"agent-preset.d.ts","sourceRoot":"","sources":["../../../src/host/agent-preset.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,oFAAoF;AACpF,eAAO,MAAM,uBAAuB,kCAAkC,CAAA;AAEtE,wDAAwD;AACxD,eAAO,MAAM,kBAAkB,aAAa,CAAA;AAE5C;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,6CAA6C;IAC7C,EAAE,EAAE,MAAM,CAAA;IACV,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAA;IACZ,qEAAqE;IACrE,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,gDAAgD;IAChD,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,yCAAyC;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC,CAAA;CACxC;AAED,sDAAsD;AACtD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAA;CACvC;AAED,uEAAuE;AACvE,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;CACrE;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,2EAA2E;IAC3E,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;IAC1B,8DAA8D;IAC9D,MAAM,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IAC5E,yBAAyB;IACzB,MAAM,EAAE;QACN,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;QAC3B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAC5B,CAAA;CACF;AAED,qEAAqE;AACrE,MAAM,MAAM,iBAAiB,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAA;AAE9D,mDAAmD;AACnD,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,QAAQ,CAAA;AAEnD;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe,EAAE,gBAoR7B,CAAA;AAUD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,UAAU,EAChB,QAAQ,GAAE,iBAAoC,GAC7C,aAAa,CAuBf"}
1
+ {"version":3,"file":"agent-preset.d.ts","sourceRoot":"","sources":["../../../src/host/agent-preset.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,oFAAoF;AACpF,eAAO,MAAM,uBAAuB,kCAAkC,CAAA;AAEtE;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,uCAAuC,CAAA;AAE7E,wDAAwD;AACxD,eAAO,MAAM,kBAAkB,aAAa,CAAA;AAE5C;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,6CAA6C;IAC7C,EAAE,EAAE,MAAM,CAAA;IACV,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAA;IACZ,qEAAqE;IACrE,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,gDAAgD;IAChD,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,yCAAyC;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC,CAAA;CACxC;AAED,sDAAsD;AACtD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAA;CACvC;AAED,uEAAuE;AACvE,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;CACrE;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,2EAA2E;IAC3E,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;IAC1B,8DAA8D;IAC9D,MAAM,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IAC5E,yBAAyB;IACzB,MAAM,EAAE;QACN,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;QAC3B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAC5B,CAAA;CACF;AAED,qEAAqE;AACrE,MAAM,MAAM,iBAAiB,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAA;AAE9D,mDAAmD;AACnD,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,QAAQ,CAAA;AAEnD;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe,EAAE,gBAoR7B,CAAA;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,GAAE,iBAAoC,GAAG,gBAAgB,CAUtG;AAUD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,UAAU,EAChB,QAAQ,GAAE,iBAAoC,GAC7C,aAAa,CAuBf"}
@@ -269,6 +269,15 @@ export interface MinimaxStreamStateOptions {
269
269
  provider?: string;
270
270
  }
271
271
  export declare function createStreamState(options?: MinimaxStreamStateOptions): MinimaxStreamState;
272
+ /**
273
+ * The phrase this line stamps on the failure it reports for a turn that ended
274
+ * without an answer or a tool call.
275
+ *
276
+ * Exported so a host-side hook can recognise that failure by construction,
277
+ * instead of copying the sentence. Only the phrase is matched, never the whole
278
+ * message: the rest of it carries diagnostics that may change.
279
+ */
280
+ export declare const NO_ANSWER_PHRASE = "ended the turn without an answer or a tool call";
272
281
  /** Flush every open block, then emit usage and the terminal finish. */
273
282
  export declare function closeMinimaxStream(state: MinimaxStreamState): StreamChunk[];
274
283
  /** Raise when a stream ended without the terminal event the protocol promises. */
@@ -1 +1 @@
1
- {"version":3,"file":"mapper.d.ts","sourceRoot":"","sources":["../../../../src/host/minimax-code/mapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mapper.d.ts","sourceRoot":"","sources":["../../../../src/host/minimax-code/mapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Resume a turn that ended without an answer.
3
+ *
4
+ * One line's forced thinking can spend a whole response reasoning and then end
5
+ * the turn with `end_turn`, leaving no text and no tool call. That line reports
6
+ * it as a failure, which is honest but leaves the turn unfinished: the harness
7
+ * has no representation for "the model stopped before it did anything", so the
8
+ * caller sees a failed turn and nothing else.
9
+ *
10
+ * This hook closes that gap. It watches the `llm/stream` waterfall, recognises
11
+ * that specific failure, and steers one continuation so the turn finishes.
12
+ *
13
+ * The budget counts `consecutive` answerless turns, so it only ever grows on
14
+ * a turn that ran to its end and reported the failure. A stream that was
15
+ * abandoned — the caller pressed Stop mid-answer, or the collapse guard returned
16
+ * upstream of this hook — never delivered its finish chunk and therefore says
17
+ * nothing at all: it neither spends the budget nor clears the streak.
18
+ *
19
+ * The steer has to land while the Agent is **idle**. `Agent.steer` splices into
20
+ * the inbox and calls `wakeDriver`, and `wakeDriver` only opens a new turn from
21
+ * `idle`: sent while a turn is still running it latches nothing and the message
22
+ * sits unread. So the resume waits on `whenIdle()` rather than racing the turn
23
+ * boundary — the collapse guard reaches the same place by cancelling first and
24
+ * steering on a microtask, which is not available here because nothing is being
25
+ * cancelled.
26
+ *
27
+ * @module
28
+ */
29
+ /** The subset of `llm/stream` options this hook reads. */
30
+ export interface ResumeStreamOptions {
31
+ /** Stamped by the agent loop on every request it builds. */
32
+ readonly sessionId?: string | undefined;
33
+ /** Absent on an ordinary conversation request; set on an auxiliary call. */
34
+ readonly purpose?: string | undefined;
35
+ }
36
+ /** A chunk as it crosses the stream boundary; only the shape is read. */
37
+ export interface ResumeChunk {
38
+ readonly type: string;
39
+ readonly text?: string | undefined;
40
+ readonly blockType?: string | undefined;
41
+ readonly reason?: {
42
+ readonly kind?: string | undefined;
43
+ readonly failure?: {
44
+ readonly code?: string | undefined;
45
+ readonly message?: string | undefined;
46
+ } | undefined;
47
+ } | undefined;
48
+ }
49
+ /** Live Agent methods the hook calls. Optional so an older shape stays loadable. */
50
+ export interface ResumeAgentLike {
51
+ /** The Agent's session identity — the same value the loop stamps on requests. */
52
+ readonly id?: unknown;
53
+ steer?(message: unknown): void;
54
+ /** Resolves once the Agent has no work in flight. */
55
+ whenIdle?(): Promise<unknown>;
56
+ }
57
+ /** The `llm/stream` waterfall listener this hook registers. */
58
+ export type ResumeStreamListener = (options: ResumeStreamOptions, next: () => AsyncIterable<ResumeChunk>) => AsyncIterable<ResumeChunk>;
59
+ /**
60
+ * The `agent/disposed` listener this hook registers.
61
+ *
62
+ * The payload carries the Agent whose `id` keys this hook's per-session state,
63
+ * so a session that closes takes its entry with it instead of leaving the streak
64
+ * — and the memory behind it — behind for the life of the process.
65
+ */
66
+ export type ResumeAgentEventListener = (payload: {
67
+ agent: unknown;
68
+ }) => void;
69
+ /** Either listener {@link NoAnswerResumeContext.on} accepts. */
70
+ export type ResumeListener = ResumeStreamListener | ResumeAgentEventListener;
71
+ /** Listener options accepted by the harness event bus. */
72
+ export interface ResumeListenerOptions {
73
+ /** Receive the event regardless of context filter checks. */
74
+ readonly global?: boolean;
75
+ }
76
+ /** Configuration for {@link installNoAnswerResume}. */
77
+ export interface NoAnswerResumeOptions {
78
+ /** Consecutive answerless turns resumed before giving up (default 2). */
79
+ maxResumes?: number;
80
+ /** The continuation injected on each resume. */
81
+ text?: string;
82
+ }
83
+ /** {@link NoAnswerResumeOptions} with every default filled in. */
84
+ export interface ResolvedNoAnswerResumeOptions {
85
+ maxResumes: number;
86
+ text: string;
87
+ }
88
+ /** The continuation this hook injects, unless the deployment states its own. */
89
+ export declare const NO_ANSWER_RESUME: string;
90
+ export declare const DEFAULT_NO_ANSWER_RESUME_OPTIONS: ResolvedNoAnswerResumeOptions;
91
+ /**
92
+ * The Context surface the hook needs, declared structurally so it loads on every
93
+ * supported harness generation without importing generation-bound types.
94
+ *
95
+ * `get` is the read that reaches the Agent registry in a real host: the registry
96
+ * is provided by a sibling fiber, and Cordis throws for a property this plugin did
97
+ * not declare in its `inject` list.
98
+ */
99
+ export interface NoAnswerResumeContext {
100
+ on?: (event: 'llm/stream' | 'agent/disposed', listener: ResumeListener, options?: ResumeListenerOptions) => unknown;
101
+ logger?: {
102
+ info?(message: string): void;
103
+ warn(message: string): void;
104
+ } | undefined;
105
+ get?(name: string): unknown;
106
+ readonly agents?: {
107
+ get(id: unknown): unknown;
108
+ } | undefined;
109
+ }
110
+ /**
111
+ * Validate caller options fail-loud and fill in defaults.
112
+ *
113
+ * A resume budget below one would disable the hook while looking enabled, and an
114
+ * empty continuation would wake the Agent with nothing to act on — both are
115
+ * configuration mistakes worth failing on rather than silently ignoring.
116
+ */
117
+ export declare function resolveNoAnswerResumeOptions(options?: NoAnswerResumeOptions): ResolvedNoAnswerResumeOptions;
118
+ /**
119
+ * Install the answerless-turn resume hook on a Context.
120
+ *
121
+ * Inert unless the host exposes the event bus, so a harness without it keeps the
122
+ * built-in behaviour instead of failing this plugin's load.
123
+ *
124
+ * @param ctx - plugin context.
125
+ * @param options - see {@link NoAnswerResumeOptions}; validated fail-loud.
126
+ * @returns a disposer removing every listener, or undefined when the host
127
+ * exposes no event bus.
128
+ */
129
+ export declare function installNoAnswerResume(ctx: NoAnswerResumeContext, options?: NoAnswerResumeOptions): (() => void) | undefined;
130
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/host/no-answer-resume/index.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,0DAA0D;AAC1D,MAAM,WAAW,mBAAmB;IAClC,4DAA4D;IAC5D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACvC,4EAA4E;IAC5E,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACtC;AAED,yEAAyE;AACzE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAClC,QAAQ,CAAC,OAAO,CAAC,EAAE;YAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;YAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;SAAE,GAAG,SAAS,CAAA;KAC7G,GAAG,SAAS,CAAA;CACd;AAED,oFAAoF;AACpF,MAAM,WAAW,eAAe;IAC9B,iFAAiF;IACjF,QAAQ,CAAC,EAAE,CAAC,EAAE,OAAO,CAAA;IACrB,KAAK,CAAC,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;IAC9B,qDAAqD;IACrD,QAAQ,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;CAC9B;AAED,+DAA+D;AAC/D,MAAM,MAAM,oBAAoB,GAAG,CACjC,OAAO,EAAE,mBAAmB,EAC5B,IAAI,EAAE,MAAM,aAAa,CAAC,WAAW,CAAC,KACnC,aAAa,CAAC,WAAW,CAAC,CAAA;AAE/B;;;;;;GAMG;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,EAAE;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,KAAK,IAAI,CAAA;AAE5E,gEAAgE;AAChE,MAAM,MAAM,cAAc,GAAG,oBAAoB,GAAG,wBAAwB,CAAA;AAE5E,0DAA0D;AAC1D,MAAM,WAAW,qBAAqB;IACpC,6DAA6D;IAC7D,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED,uDAAuD;AACvD,MAAM,WAAW,qBAAqB;IACpC,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,kEAAkE;AAClE,MAAM,WAAW,6BAA6B;IAC5C,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,gFAAgF;AAChF,eAAO,MAAM,gBAAgB,QAGoE,CAAA;AAEjG,eAAO,MAAM,gCAAgC,EAAE,6BAG9C,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACpC,EAAE,CAAC,EAAE,CACH,KAAK,EAAE,YAAY,GAAG,gBAAgB,EACtC,QAAQ,EAAE,cAAc,EACxB,OAAO,CAAC,EAAE,qBAAqB,KAC5B,OAAO,CAAA;IACZ,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,SAAS,CAAA;IAClF,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAA;KAAE,GAAG,SAAS,CAAA;CAC5D;AASD;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,GAAE,qBAA0B,GAClC,6BAA6B,CAS/B;AA8FD;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,qBAAqB,EAC1B,OAAO,GAAE,qBAA0B,GAClC,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CA4K1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"search-provider-switcher.d.ts","sourceRoot":"","sources":["../../../src/host/search-provider-switcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAA;AAG9D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAA;AAEtE,UAAU,UAAU;IAClB,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAA;CAC3B;AA2BD,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B,8EAA8E;IAC9E,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAA;CACnD;AAED,qFAAqF;AACrF,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAA;IACtE,QAAQ,CAAC,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAA;IAChD,QAAQ,CAAC,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAA;CAChD;AAED,qBAAa,sBAAsB;IAUrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IATnC,OAAO,CAAC,sBAAsB,CAAoB;IAClD,OAAO,CAAC,qBAAqB,CAAoB;IACjD,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,QAAQ,CAAQ;IAExB,OAAO,IAAI,IAAI;IACf,OAAO,CAAC,KAAK,CAAgD;gBAEhC,MAAM,EAAE,UAAU;IAE/C,MAAM,IAAI,4BAA4B;IAUtC,MAAM,CAAC,UAAU,EAAE,wBAAwB,EAAE,OAAO,GAAE,2BAAgC,GAAG,OAAO,CAAC,IAAI,CAAC;YAOxF,cAAc;IAiE5B;;;;;;;;;;OAUG;YACW,YAAY;IAiB1B,OAAO,CAAC,YAAY;CAMrB"}
1
+ {"version":3,"file":"search-provider-switcher.d.ts","sourceRoot":"","sources":["../../../src/host/search-provider-switcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAA;AAG9D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAA;AAEtE,UAAU,UAAU;IAClB,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAA;CAC3B;AA2BD,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B,8EAA8E;IAC9E,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAA;CACnD;AAED,qFAAqF;AACrF,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAA;IACtE,QAAQ,CAAC,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAA;IAChD,QAAQ,CAAC,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAA;CAChD;AAED,qBAAa,sBAAsB;IAUrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IATnC,OAAO,CAAC,sBAAsB,CAAoB;IAClD,OAAO,CAAC,qBAAqB,CAAoB;IACjD,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,QAAQ,CAAQ;IAExB,OAAO,IAAI,IAAI;IACf,OAAO,CAAC,KAAK,CAAgD;gBAEhC,MAAM,EAAE,UAAU;IAE/C,MAAM,IAAI,4BAA4B;IAUtC,MAAM,CAAC,UAAU,EAAE,wBAAwB,EAAE,OAAO,GAAE,2BAAgC,GAAG,OAAO,CAAC,IAAI,CAAC;YAOxF,cAAc;IAoE5B;;;;;;;;;;OAUG;YACW,YAAY;IAiB1B,OAAO,CAAC,YAAY;CAMrB"}
@@ -1,6 +1,7 @@
1
1
  import type { Context } from '@deepseek-ai/cordis';
2
2
  import z from '@deepseek-ai/schemastery';
3
3
  import { type GuardOptions } from './host/reasoning-collapse-guard/index.ts';
4
+ import { type NoAnswerResumeOptions } from './host/no-answer-resume/index.ts';
4
5
  /** Optional deployment configuration for this plugin. */
5
6
  export interface Config {
6
7
  /** Independent web fetch selection; auto preserves proxy/search-driven selection.
@@ -45,6 +46,12 @@ export interface Config {
45
46
  * leave the built-in behaviour alone; the shipped defaults apply otherwise.
46
47
  */
47
48
  reasoningCollapseGuard?: GuardOptions | false;
49
+ /**
50
+ * Resume a turn that ended without an answer or a tool call. Omit the key
51
+ * (or set it to `false`) to leave the turn failed; the shipped defaults
52
+ * apply otherwise.
53
+ */
54
+ noAnswerResume?: NoAnswerResumeOptions | false;
48
55
  /**
49
56
  * Idle budget for one Codex Responses stream, in milliseconds.
50
57
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eddyskywalker/dsh-chatgpt-subscription",
3
- "version": "0.25.0",
3
+ "version": "0.26.0",
4
4
  "description": "DSH provider plugin for Codex access through a ChatGPT subscription.",
5
5
  "icon": "./icon.svg",
6
6
  "author": {
@@ -61,42 +61,42 @@
61
61
  "peerDependencies": {
62
62
  "@deepseek-ai/cordis": "^4.0.2 || 4.0.5",
63
63
  "@deepseek-ai/cordis-plugin-loader": "^1.0.3 || 1.0.6",
64
- "@deepseek-ai/dsh-attachment": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5",
65
- "@deepseek-ai/dsh-client-connection": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5",
66
- "@deepseek-ai/dsh-client-locale": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5",
67
- "@deepseek-ai/dsh-client-ui-conversation": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5",
68
- "@deepseek-ai/dsh-client-ui-model-selection": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5",
69
- "@deepseek-ai/dsh-client-ui-renderer": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5",
70
- "@deepseek-ai/dsh-client-ui-settings": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5",
71
- "@deepseek-ai/dsh-client-ui-slots": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5",
72
- "@deepseek-ai/dsh-client-ui-tool": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5",
73
- "@deepseek-ai/dsh-host-webserver": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5",
74
- "@deepseek-ai/dsh-llm": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5",
75
- "@deepseek-ai/dsh-settings": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5",
76
- "@deepseek-ai/dsh-timeout": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5",
77
- "@deepseek-ai/dsh-tools": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5",
78
- "@deepseek-ai/dsh-web": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5",
64
+ "@deepseek-ai/dsh-attachment": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1",
65
+ "@deepseek-ai/dsh-client-connection": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1",
66
+ "@deepseek-ai/dsh-client-locale": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1",
67
+ "@deepseek-ai/dsh-client-ui-conversation": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1",
68
+ "@deepseek-ai/dsh-client-ui-model-selection": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1",
69
+ "@deepseek-ai/dsh-client-ui-renderer": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1",
70
+ "@deepseek-ai/dsh-client-ui-settings": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1",
71
+ "@deepseek-ai/dsh-client-ui-slots": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1",
72
+ "@deepseek-ai/dsh-client-ui-tool": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1",
73
+ "@deepseek-ai/dsh-host-webserver": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1",
74
+ "@deepseek-ai/dsh-llm": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1",
75
+ "@deepseek-ai/dsh-settings": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1",
76
+ "@deepseek-ai/dsh-timeout": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1",
77
+ "@deepseek-ai/dsh-tools": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1",
78
+ "@deepseek-ai/dsh-web": "^0.1.2-alpha.5 || ^0.1.2-rc.1 || ^0.1.2 || ^0.1.3 || ^0.1.4 || ^0.1.5-rc.1 || ^0.1.6-alpha.1 || ^0.1.7-alpha.1 || ^0.1.7-rc.1 || ^0.1.7-rc.2 || ^0.2.0-rc.1 || ^0.2.0-rc.2 || 0.2.1-alpha.5 || ^0.2.1-rc.1",
79
79
  "@deepseek-ai/schemastery": "^3.18.2 || 3.18.5",
80
80
  "react": "^18.2.0"
81
81
  },
82
82
  "devDependencies": {
83
83
  "@deepseek-ai/cordis": "4.0.5",
84
84
  "@deepseek-ai/cordis-plugin-loader": "1.0.6",
85
- "@deepseek-ai/dsh-attachment": "0.2.1-alpha.5",
86
- "@deepseek-ai/dsh-client-connection": "0.2.1-alpha.5",
87
- "@deepseek-ai/dsh-client-locale": "0.2.1-alpha.5",
88
- "@deepseek-ai/dsh-client-ui-conversation": "0.2.1-alpha.5",
89
- "@deepseek-ai/dsh-client-ui-model-selection": "0.2.1-alpha.5",
90
- "@deepseek-ai/dsh-client-ui-renderer": "0.2.1-alpha.5",
91
- "@deepseek-ai/dsh-client-ui-settings": "0.2.1-alpha.5",
92
- "@deepseek-ai/dsh-client-ui-slots": "0.2.1-alpha.5",
93
- "@deepseek-ai/dsh-client-ui-tool": "0.2.1-alpha.5",
94
- "@deepseek-ai/dsh-host-webserver": "0.2.1-alpha.5",
95
- "@deepseek-ai/dsh-llm": "0.2.1-alpha.5",
96
- "@deepseek-ai/dsh-settings": "0.2.1-alpha.5",
97
- "@deepseek-ai/dsh-timeout": "0.2.1-alpha.5",
98
- "@deepseek-ai/dsh-tools": "0.2.1-alpha.5",
99
- "@deepseek-ai/dsh-web": "0.2.1-alpha.5",
85
+ "@deepseek-ai/dsh-attachment": "^0.2.1-rc.1",
86
+ "@deepseek-ai/dsh-client-connection": "^0.2.1-rc.1",
87
+ "@deepseek-ai/dsh-client-locale": "^0.2.1-rc.1",
88
+ "@deepseek-ai/dsh-client-ui-conversation": "^0.2.1-rc.1",
89
+ "@deepseek-ai/dsh-client-ui-model-selection": "^0.2.1-rc.1",
90
+ "@deepseek-ai/dsh-client-ui-renderer": "^0.2.1-rc.1",
91
+ "@deepseek-ai/dsh-client-ui-settings": "^0.2.1-rc.1",
92
+ "@deepseek-ai/dsh-client-ui-slots": "^0.2.1-rc.1",
93
+ "@deepseek-ai/dsh-client-ui-tool": "^0.2.1-rc.1",
94
+ "@deepseek-ai/dsh-host-webserver": "^0.2.1-rc.1",
95
+ "@deepseek-ai/dsh-llm": "^0.2.1-rc.1",
96
+ "@deepseek-ai/dsh-settings": "^0.2.1-rc.1",
97
+ "@deepseek-ai/dsh-timeout": "^0.2.1-rc.1",
98
+ "@deepseek-ai/dsh-tools": "^0.2.1-rc.1",
99
+ "@deepseek-ai/dsh-web": "^0.2.1-rc.1",
100
100
  "@deepseek-ai/schemastery": "3.18.5",
101
101
  "@types/node": "^22.20.0",
102
102
  "@types/react": "~18.3.1",
@@ -35,13 +35,14 @@
35
35
  # ── identity ────────────────────────────────────────────────────────────────
36
36
 
37
37
  # The preset's own persona, shadowing the deployment default for this agent.
38
- # `{{model}}` and `{{cwd}}` resolve from the agent's own route and workspace.
38
+ # `{{model}}` resolves from the agent's route; `{{cwd}}` in `suffix` is kept for
39
+ # harnesses before 0.2.1 and stripped when `@deepseek-ai/dsh-working-directory` is present.
39
40
  - id: persona
40
41
  name: '@deepseek-ai/dsh-persona'
41
42
  config:
42
43
  suffix: Your working directory is {{cwd}}.
43
44
  prefix: |
44
- You are powered by {{model}}. Your working directory is {{cwd}}.
45
+ You are powered by {{model}}.
45
46
 
46
47
  [Role Identification] If your first user message is a task brief (rather than a direct request from the human user), you are a subagent: the coordinator-facing rules in R0, R0.5, R-G, R1, R2, R4, R5, and R-W do not apply to you. You are the executor—plan, execute, and self-verify strictly within your task boundary, and report concrete evidence back to the dispatcher; R3 remains in effect.
47
48