dsh-llm-verifier 0.8.6 → 0.9.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/README.md +4 -2
- package/lib/{auto-DpNooy0d.js → auto-DyUKnMSP.js} +5 -2
- package/lib/{auto-DpNooy0d.js.map → auto-DyUKnMSP.js.map} +1 -1
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/lib/replay.js +1 -1
- package/lib/types/auto.d.ts.map +1 -1
- package/lib/types/auto.js +9 -0
- package/lib/types/auto.js.map +1 -1
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/index.js +9 -0
- package/lib/types/index.js.map +1 -1
- package/package.json +24 -24
- package/src/auto.test.ts +42 -0
- package/src/auto.ts +9 -0
- package/src/index.test.ts +45 -2
- package/src/index.ts +8 -0
package/README.md
CHANGED
|
@@ -98,10 +98,12 @@ DSH 0.1.7 又搬动了两处判定地基,两侧形态插件都读:
|
|
|
98
98
|
|
|
99
99
|
客户端面(Web 设置页与看板)另有两处只随新版本线变化:提供 `ctx.slots` 的包是 `@deepseek-ai/dsh-client-ui-renderer`(`@deepseek-ai/dsh-client-runtime` 在 0.1.2 就已删除,插件类型一律取自 `@deepseek-ai/cordis` 的 `Context`);宿主图标名在 0.1.7 整体由尺寸后缀改为笔画后缀。图标是具名导入、且该模块对客户端 bundle 是 external,一份源码无法同时满足两套名字,因此插件改为按名探测两种拼写、都缺失时渲染空——旧宿主不会因此白屏。
|
|
100
100
|
|
|
101
|
-
typecheck 门禁按 `package.json` 的 `devDependencies` 解析,已随宿主推进到 `0.
|
|
101
|
+
typecheck 门禁按 `package.json` 的 `devDependencies` 解析,已随宿主推进到 `0.2.0-rc.1`(此前从 `0.1.1-rc.2` 上移到 `0.1.7-alpha.1`):客户端面的图标名在 0.1.7 才改名,一份源码只能对齐一侧,宿主面的旧形态兼容由运行时代码与回归测试保证。从 `0.1.7-alpha.1` 到 `0.1.7-rc.1` 的宿主改动对本插件消费的所有宿主面**全是加法**(`tools/pre-execute` 侧只新增可选 `projectContent`,`dsh-session` / `dsh-llm` / `dsh-settings` / `dsh-agent` / `dsh-credentials` / 客户端槽位与图标包源码零改动),因此这一步只换版本线,不动插件代码。
|
|
102
102
|
|
|
103
103
|
`0.1.7-rc.2` 同样只换版本线:这一版给宿主加了「动态工具更新」机制,对插件全是新增的可选面(`dsh-llm` 的 `GenerateOptions.toolHistory?` 与 `ToolUpdate`、`dsh-session` 的 `Session.toolHistory()`、`dsh-tools` 的 `PreToolDecision.ask.displayReason?`)。插件不消费这套机制,宿主新增的事件与块类型也读不到它:宿主在工具名变化时追加的 `developer/message`(`role: 'developer'`,内容为 `tool-addition` / `tool-removal` 块)不属于观测证据,插件的 `if/else` 分发自然跳过它们;验收的"过期"判定只统计有结果的工具调用与 PTC 派发,因此这类中途追加的消息不会让已完成的验收失效。另需注意 DeepSeek provider 在这一版裂成两个包(`llm-deepseek-api-key` 与 `llm-deepseek-account`),但 profile 里的**条目 id 仍是 `llm-deepseek`**,设置命名空间与其中的 `baseURL` / `apiKeyEnv` 都没变,直连 logprobs 通道照常读到;新增的 `deepseek-account` provider 走账号令牌、没有 API key,直连通道对它不适用,按设计降级到显式标签通道。
|
|
104
104
|
|
|
105
|
+
`0.2.0-rc.1` 也是只换版本线:插件消费的宿主面在这一线全是加法(`dsh-session` 新导出 `ToolCallRecovery`、`ui-conversation` 提交契约新增可选 `source` 参数与 `MessageSubmission`、`ui-primitives` 新增 `pointerModality` 导出、`api/remotes` 新增 productAnalytics remote)。唯一的行为变化在宿主侧:step 抛错时 agent-loop 会为未完成的工具调用补写合成的失败 `tool/result` 事件(`role: 'tool'` 消息、消息级 `isError: true`、`error.code` 为 `TOOL_NOT_STARTED` / `TOOL_OUTCOME_UNKNOWN`)——这正是 0.1.7 形态的工具结果,`toolResultFailed()` 原样读出"失败",路由不会把合成结果当作观测证据,插件无需任何适配代码。
|
|
106
|
+
|
|
105
107
|
其中一处更隐蔽的差异是 `deepFreeze`:0.1.1 的 `@deepseek-ai/dsh-llm` 会重新导出它,0.1.5 已把它移到 `@deepseek-ai/dsh-util-values`。插件因此自带一份等价的兜底实现,并同样**放过 `AbortSignal`**——冻结那个还在重试循环里使用、尚未被订阅的信号,会让传输层首次 `addEventListener`(Node ≥26.5)或超时/取消时的 `controller.abort()`(所有 Node 版本)抛 `Cannot assign to read only property`。
|
|
106
108
|
|
|
107
109
|
### 发布到 npm
|
|
@@ -110,7 +112,7 @@ typecheck 门禁按 `package.json` 的 `devDependencies` 解析,已随宿主
|
|
|
110
112
|
|
|
111
113
|
发布内容由 `package.json` 的 `files` 字段决定:`lib`(构建产物、source map 与 `lib/types` 类型声明)、`src`、`cordis.patch.yml`、`README.md`。`tsconfig.local.json` 之类的本机文件不会进入 tarball。
|
|
112
114
|
|
|
113
|
-
`peerDependencies` 中逐个列出的 `^0.1.5-alpha.1`、`^0.1.7-alpha.1`、`^0.1.7-rc.1` 等预发布范围是必需的,而且从 DSH 0.1.7-rc.1 起**由宿主强制执行**:按 semver 规则,预发布版本只有在同一 `x.y.z` 段存在带预发布的比较符时才算满足,因此不能简化成 `>=0.1.1-rc.2 <0.2.0`(那样会漏掉 `0.1.2-alpha.*`、`0.1.5-rc.*`、`0.1.7-alpha.*` 等宿主)。宿主启动 profile 时对每一个 `@deepseek-ai/dsh` / `@deepseek-ai/dsh-*` 条目跑 `semver.satisfies(运行版本, 范围, { includePrerelease: true })`,**任何一条不满足**就把该插件行停用(bundle 层直接跳过整个 bundle),并在 stderr 写出原因。所以缺少某条宿主版本线的后果不是"少个功能",而是**插件整体不加载**;应急可用 `dsh plugin allow-version` 为该插件的精确版本做一次性豁免。当前声明覆盖到 `0.
|
|
115
|
+
`peerDependencies` 中逐个列出的 `^0.1.5-alpha.1`、`^0.1.7-alpha.1`、`^0.1.7-rc.1` 等预发布范围是必需的,而且从 DSH 0.1.7-rc.1 起**由宿主强制执行**:按 semver 规则,预发布版本只有在同一 `x.y.z` 段存在带预发布的比较符时才算满足,因此不能简化成 `>=0.1.1-rc.2 <0.2.0`(那样会漏掉 `0.1.2-alpha.*`、`0.1.5-rc.*`、`0.1.7-alpha.*` 等宿主)。宿主启动 profile 时对每一个 `@deepseek-ai/dsh` / `@deepseek-ai/dsh-*` 条目跑 `semver.satisfies(运行版本, 范围, { includePrerelease: true })`,**任何一条不满足**就把该插件行停用(bundle 层直接跳过整个 bundle),并在 stderr 写出原因。所以缺少某条宿主版本线的后果不是"少个功能",而是**插件整体不加载**;应急可用 `dsh plugin allow-version` 为该插件的精确版本做一次性豁免。当前声明覆盖到 `0.2.0-rc.1`,与本机 `dsh --version` 报告的运行版本一致。
|
|
114
116
|
|
|
115
117
|
统计数据有两条传输路径:优先走 `/api/llm-verifier/statistics`(Connection 的 exact Fetch 路由,带 Host/Origin 栅栏与浏览器鉴权),宿主较旧时回落到插件自己的 `/llm-verifier` RPC 通道(同样经过鉴权)。裸的 webServer 路由已被移除。
|
|
116
118
|
|
|
@@ -2057,7 +2057,10 @@ const USER_QUESTION_PATTERNS = [
|
|
|
2057
2057
|
/\b(?:waiting\s+for|awaiting)\s+(?:your\s+|user\s+)?(?:input|instructions?|reply|response|confirmation|decision|guidance|feedback)\b/iu,
|
|
2058
2058
|
/\b(?:would\s+you\s+like|should\s+i|do\s+you\s+want\s+me\s+to|how\s+would\s+you\s+like|which\s+(?:option|approach|strategy)\s+do\s+you\s+prefer)\b/iu,
|
|
2059
2059
|
/\b(?:let\s+me\s+know\s+(?:how|what|if|whether|when))\b/iu,
|
|
2060
|
-
/\b(?:paused?\s+(?:work|execution|here|for\s+now)|stopping\s+here)\b/iu
|
|
2060
|
+
/\b(?:paused?\s+(?:work|execution|here|for\s+now)|stopping\s+here)\b/iu,
|
|
2061
|
+
/(?:需要|要不要|要)我[^。!!??\n]{0,80}[??]/u,
|
|
2062
|
+
/\b(?:want|like)\s+me\s+to\b[^.!?\n]{0,80}\?/iu,
|
|
2063
|
+
/(?:等你|等您)(?:决定|拍板|回复|答复|确认)/u
|
|
2061
2064
|
];
|
|
2062
2065
|
function isAwaitingUserText(text) {
|
|
2063
2066
|
const trimmed = text.trim();
|
|
@@ -2533,4 +2536,4 @@ function selectRouteFeedbackDetail(candidates, result, maxChars = MAX_ROUTE_FEED
|
|
|
2533
2536
|
//#endregion
|
|
2534
2537
|
export { routedRepeats as A, SingleFlight as B, estimateRoutedCalls as C, latestDirectUserSeq as D, itemBudget as E, verificationVerdict as F, stableHash as H, extractSession as I, sanitizeVerifierText as L, semanticReferencesVisible as M, semanticRouteHint as N, nextDiagnosticCycleId as O, verificationFailed as P, sessionEvents as R, buildSemanticRouteView as S, inspectRecoverySignal as T, resolveCacheFile as V, RECOVERY_FAILURE_CONTEXT_CHARS as _, compareRouteFeedbackDetail as a, buildEvidenceIndex as b, inspectUserInteractionPause as c, planModeActive as d, selectRouteFeedbackDetail as f, MAX_ROUTED_CHECKPOINTS as g, AutoVerifierRouter as h, automaticFeedback as i, semanticDecision as j, parseSemanticRoute as k, isAwaitingUserText as l, topScoreIndices as m, PROPOSAL_FEEDBACK_NOTE as n, failedAcceptanceCriteria as o, sessionAccepted as p, analyzeAutoTask as r, hasPendingSubagents as s, MAX_ROUTE_FEEDBACK_CHARS as t, isSubagentSession as u, analyzeStructuredRoute as v, inspectDeliveryPhase as w, buildSemanticRoutePrompt as x, boundDecision as y, ScoreCache as z };
|
|
2535
2538
|
|
|
2536
|
-
//# sourceMappingURL=auto-
|
|
2539
|
+
//# sourceMappingURL=auto-DyUKnMSP.js.map
|