@deepwhale/coding-agent 1.0.12 → 1.0.13
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/dist/agent/agent-compaction.d.ts +74 -0
- package/dist/agent/agent-compaction.d.ts.map +1 -0
- package/dist/agent/agent-compaction.js +145 -0
- package/dist/agent/agent-compaction.js.map +1 -0
- package/dist/agent/index.d.ts +16 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +17 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/session-adapter.d.ts +177 -0
- package/dist/agent/session-adapter.d.ts.map +1 -0
- package/dist/agent/session-adapter.js +365 -0
- package/dist/agent/session-adapter.js.map +1 -0
- package/dist/agent/tool-loop.d.ts +123 -0
- package/dist/agent/tool-loop.d.ts.map +1 -0
- package/dist/agent/tool-loop.js +436 -0
- package/dist/agent/tool-loop.js.map +1 -0
- package/dist/env/load-project-env.d.ts +40 -0
- package/dist/env/load-project-env.d.ts.map +1 -0
- package/dist/env/load-project-env.js +80 -0
- package/dist/env/load-project-env.js.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/llm-factory.d.ts +50 -0
- package/dist/llm-factory.d.ts.map +1 -0
- package/dist/llm-factory.js +110 -0
- package/dist/llm-factory.js.map +1 -0
- package/dist/modes/index.d.ts +14 -0
- package/dist/modes/index.d.ts.map +1 -0
- package/dist/modes/index.js +14 -0
- package/dist/modes/index.js.map +1 -0
- package/dist/modes/print.d.ts +50 -0
- package/dist/modes/print.d.ts.map +1 -0
- package/dist/modes/print.js +236 -0
- package/dist/modes/print.js.map +1 -0
- package/dist/modes/rpc.d.ts +52 -0
- package/dist/modes/rpc.d.ts.map +1 -0
- package/dist/modes/rpc.js +316 -0
- package/dist/modes/rpc.js.map +1 -0
- package/dist/modes/tui.d.ts +107 -0
- package/dist/modes/tui.d.ts.map +1 -0
- package/dist/modes/tui.js +680 -0
- package/dist/modes/tui.js.map +1 -0
- package/dist/policy/args-digest.d.ts +13 -0
- package/dist/policy/args-digest.d.ts.map +1 -0
- package/dist/policy/args-digest.js +29 -0
- package/dist/policy/args-digest.js.map +1 -0
- package/dist/policy/chain.d.ts +19 -0
- package/dist/policy/chain.d.ts.map +1 -0
- package/dist/policy/chain.js +24 -0
- package/dist/policy/chain.js.map +1 -0
- package/dist/policy/index.d.ts +17 -0
- package/dist/policy/index.d.ts.map +1 -0
- package/dist/policy/index.js +16 -0
- package/dist/policy/index.js.map +1 -0
- package/dist/policy/sanitize-reason.d.ts +11 -0
- package/dist/policy/sanitize-reason.d.ts.map +1 -0
- package/dist/policy/sanitize-reason.js +24 -0
- package/dist/policy/sanitize-reason.js.map +1 -0
- package/dist/policy/static-rules.d.ts +32 -0
- package/dist/policy/static-rules.d.ts.map +1 -0
- package/dist/policy/static-rules.js +106 -0
- package/dist/policy/static-rules.js.map +1 -0
- package/dist/policy/types.d.ts +56 -0
- package/dist/policy/types.d.ts.map +1 -0
- package/dist/policy/types.js +13 -0
- package/dist/policy/types.js.map +1 -0
- package/dist/repl/repl-command-router.d.ts +78 -0
- package/dist/repl/repl-command-router.d.ts.map +1 -0
- package/dist/repl/repl-command-router.js +112 -0
- package/dist/repl/repl-command-router.js.map +1 -0
- package/dist/repl/repl-confirm.d.ts +49 -0
- package/dist/repl/repl-confirm.d.ts.map +1 -0
- package/dist/repl/repl-confirm.js +88 -0
- package/dist/repl/repl-confirm.js.map +1 -0
- package/dist/repl/repl-session.d.ts +79 -0
- package/dist/repl/repl-session.d.ts.map +1 -0
- package/dist/repl/repl-session.js +129 -0
- package/dist/repl/repl-session.js.map +1 -0
- package/dist/repl/repl-signal-coordinator.d.ts +74 -0
- package/dist/repl/repl-signal-coordinator.d.ts.map +1 -0
- package/dist/repl/repl-signal-coordinator.js +73 -0
- package/dist/repl/repl-signal-coordinator.js.map +1 -0
- package/dist/repl.d.ts +117 -0
- package/dist/repl.d.ts.map +1 -0
- package/dist/repl.js +626 -0
- package/dist/repl.js.map +1 -0
- package/dist/sandbox/docker-runner.d.ts +147 -0
- package/dist/sandbox/docker-runner.d.ts.map +1 -0
- package/dist/sandbox/docker-runner.js +426 -0
- package/dist/sandbox/docker-runner.js.map +1 -0
- package/dist/sandbox/env-gate.d.ts +28 -0
- package/dist/sandbox/env-gate.d.ts.map +1 -0
- package/dist/sandbox/env-gate.js +65 -0
- package/dist/sandbox/env-gate.js.map +1 -0
- package/dist/sandbox/local-runner.d.ts +29 -0
- package/dist/sandbox/local-runner.d.ts.map +1 -0
- package/dist/sandbox/local-runner.js +79 -0
- package/dist/sandbox/local-runner.js.map +1 -0
- package/dist/sandbox/types.d.ts +80 -0
- package/dist/sandbox/types.d.ts.map +1 -0
- package/dist/sandbox/types.js +25 -0
- package/dist/sandbox/types.js.map +1 -0
- package/dist/tools/bash.d.ts +35 -0
- package/dist/tools/bash.d.ts.map +1 -0
- package/dist/tools/bash.js +233 -0
- package/dist/tools/bash.js.map +1 -0
- package/dist/tools/edit-file.d.ts +22 -0
- package/dist/tools/edit-file.d.ts.map +1 -0
- package/dist/tools/edit-file.js +79 -0
- package/dist/tools/edit-file.js.map +1 -0
- package/dist/tools/find.d.ts +21 -0
- package/dist/tools/find.d.ts.map +1 -0
- package/dist/tools/find.js +168 -0
- package/dist/tools/find.js.map +1 -0
- package/dist/tools/grep.d.ts +19 -0
- package/dist/tools/grep.d.ts.map +1 -0
- package/dist/tools/grep.js +170 -0
- package/dist/tools/grep.js.map +1 -0
- package/dist/tools/index.d.ts +10 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +10 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/read-file.d.ts +18 -0
- package/dist/tools/read-file.d.ts.map +1 -0
- package/dist/tools/read-file.js +52 -0
- package/dist/tools/read-file.js.map +1 -0
- package/dist/tools/registry.d.ts +39 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +67 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/write-file.d.ts +18 -0
- package/dist/tools/write-file.d.ts.map +1 -0
- package/dist/tools/write-file.js +47 -0
- package/dist/tools/write-file.js.map +1 -0
- package/dist/tui-ink-bundle.js +38587 -0
- package/dist/types.d.ts +89 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/util/index.d.ts +16 -0
- package/dist/util/index.d.ts.map +1 -0
- package/dist/util/index.js +16 -0
- package/dist/util/index.js.map +1 -0
- package/dist/util/tui-history.d.ts +37 -0
- package/dist/util/tui-history.d.ts.map +1 -0
- package/dist/util/tui-history.js +93 -0
- package/dist/util/tui-history.js.map +1 -0
- package/dist/verify/format-report.d.ts +57 -0
- package/dist/verify/format-report.d.ts.map +1 -0
- package/dist/verify/format-report.js +128 -0
- package/dist/verify/format-report.js.map +1 -0
- package/dist/verify/index.d.ts +8 -0
- package/dist/verify/index.d.ts.map +1 -0
- package/dist/verify/index.js +8 -0
- package/dist/verify/index.js.map +1 -0
- package/dist/verify/verify-runner.d.ts +186 -0
- package/dist/verify/verify-runner.d.ts.map +1 -0
- package/dist/verify/verify-runner.js +707 -0
- package/dist/verify/verify-runner.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tui.js","sourceRoot":"","sources":["../../src/modes/tui.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sprint 1c-revive-3-D-13 (2026-06-05)
|
|
3
|
+
*
|
|
4
|
+
* 稳定 JSON (key 排序) + sha256 前 12 位. 不存原始 args.
|
|
5
|
+
*
|
|
6
|
+
* 用户拍板 (2026-06-05): "argsDigest 不存原始 args, 先用稳定 JSON + sha256 前 12 位;
|
|
7
|
+
* reason 可以写自然语言, 但不能包含完整文件内容或 secret"
|
|
8
|
+
*
|
|
9
|
+
* 注: stable JSON 自己实现, 不引 fast-json-stable-stringify 等 dep, MVP 范围.
|
|
10
|
+
* 实现注意: 走 string 拼接避免大量递归 JSON.parse/stringify 调用.
|
|
11
|
+
*/
|
|
12
|
+
export declare function computeArgsDigest(args: Record<string, unknown>): string;
|
|
13
|
+
//# sourceMappingURL=args-digest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"args-digest.d.ts","sourceRoot":"","sources":["../../src/policy/args-digest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAgBH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAIvE"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sprint 1c-revive-3-D-13 (2026-06-05)
|
|
3
|
+
*
|
|
4
|
+
* 稳定 JSON (key 排序) + sha256 前 12 位. 不存原始 args.
|
|
5
|
+
*
|
|
6
|
+
* 用户拍板 (2026-06-05): "argsDigest 不存原始 args, 先用稳定 JSON + sha256 前 12 位;
|
|
7
|
+
* reason 可以写自然语言, 但不能包含完整文件内容或 secret"
|
|
8
|
+
*
|
|
9
|
+
* 注: stable JSON 自己实现, 不引 fast-json-stable-stringify 等 dep, MVP 范围.
|
|
10
|
+
* 实现注意: 走 string 拼接避免大量递归 JSON.parse/stringify 调用.
|
|
11
|
+
*/
|
|
12
|
+
import { createHash } from 'node:crypto';
|
|
13
|
+
function stableStringify(value) {
|
|
14
|
+
if (value === null || typeof value !== 'object') {
|
|
15
|
+
return JSON.stringify(value);
|
|
16
|
+
}
|
|
17
|
+
if (Array.isArray(value)) {
|
|
18
|
+
return '[' + value.map(stableStringify).join(',') + ']';
|
|
19
|
+
}
|
|
20
|
+
const obj = value;
|
|
21
|
+
const keys = Object.keys(obj).sort();
|
|
22
|
+
return '{' + keys.map((k) => JSON.stringify(k) + ':' + stableStringify(obj[k])).join(',') + '}';
|
|
23
|
+
}
|
|
24
|
+
export function computeArgsDigest(args) {
|
|
25
|
+
const json = stableStringify(args);
|
|
26
|
+
const hash = createHash('sha256').update(json, 'utf8').digest('hex');
|
|
27
|
+
return `sha256:${hash.slice(0, 12)}`;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=args-digest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"args-digest.js","sourceRoot":"","sources":["../../src/policy/args-digest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAC1D,CAAC;IACD,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACrC,OAAO,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAClG,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAA6B;IAC7D,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrE,OAAO,UAAU,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sprint 1c-revive-3-D-13 (2026-06-05)
|
|
3
|
+
*
|
|
4
|
+
* chain 串 static + caller-supplied ToolPolicy.
|
|
5
|
+
*
|
|
6
|
+
* Sprint 1c-revive-3-D-13 review P1(b) 修复 (2026-06-05):
|
|
7
|
+
* 拍板 (用户 2026-06-05): "保持 PolicyDecision 简洁, 在 tool-loop.ts 里保留 raw decision".
|
|
8
|
+
* 实现: chain.ts **不**做 yes bypass, 直接透传 policy.evaluate 结果. yes bypass 在
|
|
9
|
+
* tool-loop.ts 里处理 (调 evaluatePolicy 拿到 raw decision, 自己判断 yes 走 user_approved
|
|
10
|
+
* 审计 + bypass 路径).
|
|
11
|
+
*
|
|
12
|
+
* 拍板红线 (用户 2026-06-05):
|
|
13
|
+
* - yes=true 移出 chain (在 tool-loop 处理),保持 PolicyDecision union 简洁 (3 kind)
|
|
14
|
+
* - allow 不在 chain 后续层 reject (first allow wins; 但 static 拍 board 只有 allow / deny / require_confirmation 3 个)
|
|
15
|
+
* - deny 永远不 bypass (拍板红线)
|
|
16
|
+
*/
|
|
17
|
+
import type { PolicyDecision, PolicyContext, PolicyToolCall, ToolPolicy } from './types.js';
|
|
18
|
+
export declare function evaluatePolicy(toolCall: PolicyToolCall, ctx: PolicyContext, policy?: ToolPolicy): PolicyDecision;
|
|
19
|
+
//# sourceMappingURL=chain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../src/policy/chain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG5F,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,cAAc,EACxB,GAAG,EAAE,aAAa,EAClB,MAAM,GAAE,UAA6B,GACpC,cAAc,CAKhB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sprint 1c-revive-3-D-13 (2026-06-05)
|
|
3
|
+
*
|
|
4
|
+
* chain 串 static + caller-supplied ToolPolicy.
|
|
5
|
+
*
|
|
6
|
+
* Sprint 1c-revive-3-D-13 review P1(b) 修复 (2026-06-05):
|
|
7
|
+
* 拍板 (用户 2026-06-05): "保持 PolicyDecision 简洁, 在 tool-loop.ts 里保留 raw decision".
|
|
8
|
+
* 实现: chain.ts **不**做 yes bypass, 直接透传 policy.evaluate 结果. yes bypass 在
|
|
9
|
+
* tool-loop.ts 里处理 (调 evaluatePolicy 拿到 raw decision, 自己判断 yes 走 user_approved
|
|
10
|
+
* 审计 + bypass 路径).
|
|
11
|
+
*
|
|
12
|
+
* 拍板红线 (用户 2026-06-05):
|
|
13
|
+
* - yes=true 移出 chain (在 tool-loop 处理),保持 PolicyDecision union 简洁 (3 kind)
|
|
14
|
+
* - allow 不在 chain 后续层 reject (first allow wins; 但 static 拍 board 只有 allow / deny / require_confirmation 3 个)
|
|
15
|
+
* - deny 永远不 bypass (拍板红线)
|
|
16
|
+
*/
|
|
17
|
+
import { staticToolPolicy } from './static-rules.js';
|
|
18
|
+
export function evaluatePolicy(toolCall, ctx, policy = staticToolPolicy) {
|
|
19
|
+
// 拍板 (P1 b 修复): chain 只做 policy 评估 + 透传, yes bypass 在 tool-loop.ts 处理.
|
|
20
|
+
// 这样 tool-loop 拿到的 decision 就是 policy.evaluate 原始结果, 不会被 yes 抹平
|
|
21
|
+
// (raw decision 保留, 才能落 user_approved 审计).
|
|
22
|
+
return policy.evaluate(toolCall, ctx);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=chain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain.js","sourceRoot":"","sources":["../../src/policy/chain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,UAAU,cAAc,CAC5B,QAAwB,EACxB,GAAkB,EAClB,SAAqB,gBAAgB;IAErC,uEAAuE;IACvE,gEAAgE;IAChE,2CAA2C;IAC3C,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @deepwhale/coding-agent/policy — Tool call policy.
|
|
3
|
+
*
|
|
4
|
+
* Sprint 1c-revive-2-D-24.2 (2026-06-06): 新建 policy/index.ts 让顶层
|
|
5
|
+
* `export * from './policy/index.js'` 能 re-export (供 tui-ink 子包使用).
|
|
6
|
+
*
|
|
7
|
+
* 之前没有 index.ts — D-24.1 之前只有内部消费 (repl/print/rpc), 顶层不 export.
|
|
8
|
+
* D-24.2 tui-ink 走同样的 ToolPolicy 容器迁移, 需要顶层 import.
|
|
9
|
+
*
|
|
10
|
+
* 业务逻辑 0 重写: 单纯 barrel re-export, 跟其他 index.ts 一致.
|
|
11
|
+
*/
|
|
12
|
+
export type { ToolPolicy, PolicyDecision, PolicyToolCall, PolicyContext } from './types.js';
|
|
13
|
+
export { staticToolPolicy } from './static-rules.js';
|
|
14
|
+
export { evaluatePolicy } from './chain.js';
|
|
15
|
+
export { computeArgsDigest } from './args-digest.js';
|
|
16
|
+
export { sanitizeReason } from './sanitize-reason.js';
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/policy/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @deepwhale/coding-agent/policy — Tool call policy.
|
|
3
|
+
*
|
|
4
|
+
* Sprint 1c-revive-2-D-24.2 (2026-06-06): 新建 policy/index.ts 让顶层
|
|
5
|
+
* `export * from './policy/index.js'` 能 re-export (供 tui-ink 子包使用).
|
|
6
|
+
*
|
|
7
|
+
* 之前没有 index.ts — D-24.1 之前只有内部消费 (repl/print/rpc), 顶层不 export.
|
|
8
|
+
* D-24.2 tui-ink 走同样的 ToolPolicy 容器迁移, 需要顶层 import.
|
|
9
|
+
*
|
|
10
|
+
* 业务逻辑 0 重写: 单纯 barrel re-export, 跟其他 index.ts 一致.
|
|
11
|
+
*/
|
|
12
|
+
export { staticToolPolicy } from './static-rules.js';
|
|
13
|
+
export { evaluatePolicy } from './chain.js';
|
|
14
|
+
export { computeArgsDigest } from './args-digest.js';
|
|
15
|
+
export { sanitizeReason } from './sanitize-reason.js';
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/policy/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sprint 1c-revive-3-D-13 (2026-06-05)
|
|
3
|
+
*
|
|
4
|
+
* 用户拍板 (2026-06-05): "reason 可以写自然语言, 但不能包含完整文件内容或 secret"
|
|
5
|
+
* D-13 MVP 拍板: 长度上限 200 + 换行折叠 + 去 NUL. 真正的 secret detection 留给 D-15.
|
|
6
|
+
*
|
|
7
|
+
* 拍板红线: sanitized reason 进 SessionEvent policy_decision 落盘, 一旦写错字段
|
|
8
|
+
* 整个 session 不可读. 拍 board 安全优先.
|
|
9
|
+
*/
|
|
10
|
+
export declare function sanitizeReason(reason: string): string;
|
|
11
|
+
//# sourceMappingURL=sanitize-reason.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize-reason.d.ts","sourceRoot":"","sources":["../../src/policy/sanitize-reason.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAWrD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sprint 1c-revive-3-D-13 (2026-06-05)
|
|
3
|
+
*
|
|
4
|
+
* 用户拍板 (2026-06-05): "reason 可以写自然语言, 但不能包含完整文件内容或 secret"
|
|
5
|
+
* D-13 MVP 拍板: 长度上限 200 + 换行折叠 + 去 NUL. 真正的 secret detection 留给 D-15.
|
|
6
|
+
*
|
|
7
|
+
* 拍板红线: sanitized reason 进 SessionEvent policy_decision 落盘, 一旦写错字段
|
|
8
|
+
* 整个 session 不可读. 拍 board 安全优先.
|
|
9
|
+
*/
|
|
10
|
+
const MAX_REASON_LEN = 200;
|
|
11
|
+
const TRUNCATED_MARKER = '…[truncated]'; // 13 chars (ellipsis counts as 1 utf-16 unit)
|
|
12
|
+
export function sanitizeReason(reason) {
|
|
13
|
+
// 1. 折叠换行 (\r?\n → ' / '), 单行显示
|
|
14
|
+
let r = reason.replace(/\r?\n/g, ' / ');
|
|
15
|
+
// 2. 去 NUL (JSON 写入安全, 防 null byte 注入)
|
|
16
|
+
// eslint-disable-next-line no-control-regex
|
|
17
|
+
r = r.replace(/\u0000/g, '');
|
|
18
|
+
// 3. 长度上限 + 标 truncated
|
|
19
|
+
if (r.length > MAX_REASON_LEN) {
|
|
20
|
+
r = r.slice(0, MAX_REASON_LEN - TRUNCATED_MARKER.length) + TRUNCATED_MARKER;
|
|
21
|
+
}
|
|
22
|
+
return r;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=sanitize-reason.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize-reason.js","sourceRoot":"","sources":["../../src/policy/sanitize-reason.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,cAAc,GAAG,GAAG,CAAC;AAC3B,MAAM,gBAAgB,GAAG,cAAc,CAAC,CAAC,8CAA8C;AAEvF,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,gCAAgC;IAChC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACxC,uCAAuC;IACvC,4CAA4C;IAC5C,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC7B,wBAAwB;IACxB,IAAI,CAAC,CAAC,MAAM,GAAG,cAAc,EAAE,CAAC;QAC9B,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,GAAG,gBAAgB,CAAC,MAAM,CAAC,GAAG,gBAAgB,CAAC;IAC9E,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sprint 1c-revive-3-D-13 (2026-06-05): 默认静态规则.
|
|
3
|
+
* Sprint 1c-revive-3-D-13 review P1 修复 (2026-06-05):
|
|
4
|
+
* - 合并 command + args 成 1 条字符串再 regex match (解决 `mv a b` / `cp a b` 等
|
|
5
|
+
* command-only regex 漏判的问题). 不引 shlex dep, 拍板 MVP 接受 edge case 漏判.
|
|
6
|
+
* - 拍板 (用户 2026-06-05 review): "v1.0 红线是'未经确认不 mv', 不只是 /etc/系统路径;
|
|
7
|
+
* cp 一起收, 宁可多弹确认". 加 mv / cp 全部 → require_confirmation.
|
|
8
|
+
*
|
|
9
|
+
* 拍板 (用户 2026-06-05):
|
|
10
|
+
* - A1: 默认规则 (read/find/grep 全 allow, write/edit 全 require_confirmation)
|
|
11
|
+
* - B1: bash 用 regex/argv-light 检测危险模式 → require_confirmation (不直接 deny,
|
|
12
|
+
* 误判只是多弹确认, 比 deny 漏判安全)
|
|
13
|
+
* - R-1: race 接受为 MVP 风险, D-15 用 inotify / mutex 收
|
|
14
|
+
* - R-2: bash 漏判 (e.g. shlex quote 拆分) 接受, 走 require_confirmation 而非 deny
|
|
15
|
+
*
|
|
16
|
+
* 不做 (D-15):
|
|
17
|
+
* - 用户 config 注入 (ToolPolicy 透传, D-13 默认走 static)
|
|
18
|
+
* - 路径白名单/黑名单
|
|
19
|
+
* - Bash argv deep parse (e.g. shlex)
|
|
20
|
+
* - Secret 强检测 (redact API key in reason)
|
|
21
|
+
*/
|
|
22
|
+
import type { PolicyDecision, ToolPolicy } from './types.js';
|
|
23
|
+
/**
|
|
24
|
+
* bash regex 危险模式 — 暴露给 tool-loop 在 bash 工具自身层也用 (双重防线)
|
|
25
|
+
*
|
|
26
|
+
* Sprint 1c-revive-3-D-13 review P1 修复 (2026-06-05):
|
|
27
|
+
* 拍板 (用户 2026-06-05): "bash 检测先轻量合并 command + args"
|
|
28
|
+
* 不引 shlex dep, MVP 接受 quote 拆分漏判 (R-2 拍板).
|
|
29
|
+
*/
|
|
30
|
+
export declare function evaluateBashCommand(cmd: string, args: ReadonlyArray<string>): PolicyDecision;
|
|
31
|
+
export declare const staticToolPolicy: ToolPolicy;
|
|
32
|
+
//# sourceMappingURL=static-rules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static-rules.d.ts","sourceRoot":"","sources":["../../src/policy/static-rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAiC,UAAU,EAAE,MAAM,YAAY,CAAC;AAwC5F;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,cAAc,CAa5F;AAyBD,eAAO,MAAM,gBAAgB,EAAE,UAK9B,CAAC"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sprint 1c-revive-3-D-13 (2026-06-05): 默认静态规则.
|
|
3
|
+
* Sprint 1c-revive-3-D-13 review P1 修复 (2026-06-05):
|
|
4
|
+
* - 合并 command + args 成 1 条字符串再 regex match (解决 `mv a b` / `cp a b` 等
|
|
5
|
+
* command-only regex 漏判的问题). 不引 shlex dep, 拍板 MVP 接受 edge case 漏判.
|
|
6
|
+
* - 拍板 (用户 2026-06-05 review): "v1.0 红线是'未经确认不 mv', 不只是 /etc/系统路径;
|
|
7
|
+
* cp 一起收, 宁可多弹确认". 加 mv / cp 全部 → require_confirmation.
|
|
8
|
+
*
|
|
9
|
+
* 拍板 (用户 2026-06-05):
|
|
10
|
+
* - A1: 默认规则 (read/find/grep 全 allow, write/edit 全 require_confirmation)
|
|
11
|
+
* - B1: bash 用 regex/argv-light 检测危险模式 → require_confirmation (不直接 deny,
|
|
12
|
+
* 误判只是多弹确认, 比 deny 漏判安全)
|
|
13
|
+
* - R-1: race 接受为 MVP 风险, D-15 用 inotify / mutex 收
|
|
14
|
+
* - R-2: bash 漏判 (e.g. shlex quote 拆分) 接受, 走 require_confirmation 而非 deny
|
|
15
|
+
*
|
|
16
|
+
* 不做 (D-15):
|
|
17
|
+
* - 用户 config 注入 (ToolPolicy 透传, D-13 默认走 static)
|
|
18
|
+
* - 路径白名单/黑名单
|
|
19
|
+
* - Bash argv deep parse (e.g. shlex)
|
|
20
|
+
* - Secret 强检测 (redact API key in reason)
|
|
21
|
+
*/
|
|
22
|
+
// bash 危险模式 (regex) — argv-light, 不深 parse
|
|
23
|
+
// 拍板 (用户 2026-06-05): 走 require_confirmation 而非 deny, 误判只是多弹确认
|
|
24
|
+
// 注: tool-loop 调 evaluateBashCommand 时会把 command + args 合并成 1 条字符串再 match,
|
|
25
|
+
// 解决 `mv a b` / `cp a b` 等 command-only regex 漏判的问题
|
|
26
|
+
const DANGEROUS_BASH_PATTERNS = [
|
|
27
|
+
// === 文件破坏 (v1.0 红线) ===
|
|
28
|
+
// rm -rf / or rm -fr / (path start with /)
|
|
29
|
+
/\brm\s+(?:-[a-zA-Z]*[rf][a-zA-Z]*)+[^\n]*\//i,
|
|
30
|
+
// rm -rf ~ (home dir wipe)
|
|
31
|
+
/\brm\s+(?:-[a-zA-Z]*[rf][a-zA-Z]*)+[^\n]*~/i,
|
|
32
|
+
// mv 全部 (用户 review 拍板: "v1.0 红线是'未经确认不 mv', 不只是 /etc/系统路径")
|
|
33
|
+
// 拍板 (2026-06-05): 宁多弹确认, 漏 mv 风险太高
|
|
34
|
+
/\bmv\b/,
|
|
35
|
+
// cp 全部 (跟 mv 同拍板: 宁多弹确认)
|
|
36
|
+
/\bcp\b/,
|
|
37
|
+
// chown / chmod 改权限 (chmod 777 是经典写错场景)
|
|
38
|
+
/\bchown\b/i,
|
|
39
|
+
/\bchmod\b/i,
|
|
40
|
+
// === 系统 / 磁盘 ===
|
|
41
|
+
// mkfs (format filesystem)
|
|
42
|
+
/\bmkfs(?:\.\w+)?\b/i,
|
|
43
|
+
// dd if= (raw disk write)
|
|
44
|
+
/\bdd\s+if=/i,
|
|
45
|
+
// shutdown / reboot / halt / poweroff
|
|
46
|
+
/\b(shutdown|reboot|halt|poweroff)\b/i,
|
|
47
|
+
// redirect to /dev/sda or /dev/nvme* (raw disk overwrite)
|
|
48
|
+
/>\s*\/dev\/(sda|nvme\d)/i,
|
|
49
|
+
// === 远程下载 + 执行 (curl|sh, wget|bash) ===
|
|
50
|
+
// curl ... | sh / bash / python
|
|
51
|
+
/\bcurl\b[^\n]*\|\s*(sh|bash|python\d*|zsh|ksh|fish)/i,
|
|
52
|
+
/\bwget\b[^\n]*\|\s*(sh|bash|python\d*|zsh|ksh|fish)/i,
|
|
53
|
+
// curl -o /path + chmod + execute 套路 (远程 dropper)
|
|
54
|
+
/\bcurl\b[^\n]*-o\s+\/tmp\//i,
|
|
55
|
+
/\bwget\b[^\n]*-O\s+\/tmp\//i,
|
|
56
|
+
];
|
|
57
|
+
/**
|
|
58
|
+
* bash regex 危险模式 — 暴露给 tool-loop 在 bash 工具自身层也用 (双重防线)
|
|
59
|
+
*
|
|
60
|
+
* Sprint 1c-revive-3-D-13 review P1 修复 (2026-06-05):
|
|
61
|
+
* 拍板 (用户 2026-06-05): "bash 检测先轻量合并 command + args"
|
|
62
|
+
* 不引 shlex dep, MVP 接受 quote 拆分漏判 (R-2 拍板).
|
|
63
|
+
*/
|
|
64
|
+
export function evaluateBashCommand(cmd, args) {
|
|
65
|
+
// 拍板: 合并 command + " " + args.join(" ") 一条字符串再 regex match.
|
|
66
|
+
// 拍板: 不 strip quote, 不引 shlex (R-2 拍板). 漏判走 require_confirmation 而非 deny.
|
|
67
|
+
const merged = args.length > 0 ? `${cmd} ${args.join(' ')}` : cmd;
|
|
68
|
+
for (const pat of DANGEROUS_BASH_PATTERNS) {
|
|
69
|
+
if (pat.test(merged)) {
|
|
70
|
+
return {
|
|
71
|
+
decision: 'require_confirmation',
|
|
72
|
+
reason: `bash command matches dangerous pattern: ${pat.source}`,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return { decision: 'allow' };
|
|
77
|
+
}
|
|
78
|
+
function evaluateByToolName(name, _argsDigest) {
|
|
79
|
+
switch (name) {
|
|
80
|
+
case 'read_file':
|
|
81
|
+
case 'find':
|
|
82
|
+
case 'grep':
|
|
83
|
+
return { decision: 'allow' };
|
|
84
|
+
case 'write_file':
|
|
85
|
+
case 'edit_file':
|
|
86
|
+
return { decision: 'require_confirmation', reason: 'writes to filesystem' };
|
|
87
|
+
case 'bash':
|
|
88
|
+
// bash 实际 evaluate 需要 parse cmd + args. 这层拿不到, tool-loop 层 bash 工具自身用 evaluateBashCommand 拍.
|
|
89
|
+
// 保守返 allow (bash tool 会自己再过一遍 evaluateBashCommand).
|
|
90
|
+
return { decision: 'allow' };
|
|
91
|
+
default: {
|
|
92
|
+
// 兜底: "未在白名单" 的 tool (含 caller 自注册 tool, e.g. test 'hanger') 走 allow.
|
|
93
|
+
// 拍板 (D-13): 'tool-not-found' 已经在 executeToolCall 上层 (registry.get 拍)
|
|
94
|
+
// 拦了, policy 这层不需要再判 unknown. 给 caller 自定义 tool 留口 (D-15 user config 接入
|
|
95
|
+
// 也会用 default 分支).
|
|
96
|
+
return { decision: 'allow' };
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
export const staticToolPolicy = {
|
|
101
|
+
evaluate(toolCall, _ctx) {
|
|
102
|
+
return evaluateByToolName(toolCall.name, toolCall.argsDigest);
|
|
103
|
+
},
|
|
104
|
+
// confirm 留 undefined — REPL / RPC 模式注入自己的 confirm 实现 (D-13 MVP 留空)
|
|
105
|
+
};
|
|
106
|
+
//# sourceMappingURL=static-rules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static-rules.js","sourceRoot":"","sources":["../../src/policy/static-rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAKH,2CAA2C;AAC3C,+DAA+D;AAC/D,2EAA2E;AAC3E,oDAAoD;AACpD,MAAM,uBAAuB,GAA0B;IACrD,yBAAyB;IACzB,2CAA2C;IAC3C,8CAA8C;IAC9C,2BAA2B;IAC3B,6CAA6C;IAC7C,4DAA4D;IAC5D,oCAAoC;IACpC,QAAQ;IACR,0BAA0B;IAC1B,QAAQ;IACR,wCAAwC;IACxC,YAAY;IACZ,YAAY;IAEZ,kBAAkB;IAClB,2BAA2B;IAC3B,qBAAqB;IACrB,0BAA0B;IAC1B,aAAa;IACb,sCAAsC;IACtC,sCAAsC;IACtC,0DAA0D;IAC1D,0BAA0B;IAE1B,yCAAyC;IACzC,gCAAgC;IAChC,sDAAsD;IACtD,sDAAsD;IACtD,kDAAkD;IAClD,6BAA6B;IAC7B,6BAA6B;CAC9B,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAW,EAAE,IAA2B;IAC1E,4DAA4D;IAC5D,0EAA0E;IAC1E,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IAClE,KAAK,MAAM,GAAG,IAAI,uBAAuB,EAAE,CAAC;QAC1C,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACrB,OAAO;gBACL,QAAQ,EAAE,sBAAsB;gBAChC,MAAM,EAAE,2CAA2C,GAAG,CAAC,MAAM,EAAE;aAChE,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAc,EAAE,WAAmB;IAC7D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,WAAW,CAAC;QACjB,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM;YACT,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;QAC/B,KAAK,YAAY,CAAC;QAClB,KAAK,WAAW;YACd,OAAO,EAAE,QAAQ,EAAE,sBAAsB,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC;QAC9E,KAAK,MAAM;YACT,6FAA6F;YAC7F,qDAAqD;YACrD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;QAC/B,OAAO,CAAC,CAAC,CAAC;YACR,sEAAsE;YACtE,sEAAsE;YACtE,wEAAwE;YACxE,mBAAmB;YACnB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAe;IAC1C,QAAQ,CAAC,QAAwB,EAAE,IAAmB;QACpD,OAAO,kBAAkB,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IAChE,CAAC;IACD,oEAAoE;CACrE,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sprint 1c-revive-3-D-13 (2026-06-05)
|
|
3
|
+
*
|
|
4
|
+
* ToolPolicy interface + PolicyDecision 联合 + PolicyContext 拍板.
|
|
5
|
+
*
|
|
6
|
+
* 拍板红线 (用户 2026-06-05):
|
|
7
|
+
* - 'allow' 不写 session, 只有 'deny' / 'require_confirmation' / 用户确认结果
|
|
8
|
+
* ('user_approved' / 'user_denied') 落 'policy_decision' event
|
|
9
|
+
* - argsDigest 不存原始 args, 用 sha256: 前 12 位稳定关联
|
|
10
|
+
* - 拍板: deny 不被 --yes bypass
|
|
11
|
+
*/
|
|
12
|
+
import type { ToolName } from '@deepwhale/core';
|
|
13
|
+
/** Policy 决策 — 3 个判别式 + 2 个 user_* 终态 (session audit 用) */
|
|
14
|
+
export type PolicyDecision = {
|
|
15
|
+
decision: 'allow';
|
|
16
|
+
} | {
|
|
17
|
+
decision: 'deny';
|
|
18
|
+
reason: string;
|
|
19
|
+
} | {
|
|
20
|
+
decision: 'require_confirmation';
|
|
21
|
+
reason: string;
|
|
22
|
+
};
|
|
23
|
+
/** tool call 描述 — 不带原始 args, 用 argsDigest 关联 (拍板: 不暴露 secret) */
|
|
24
|
+
export interface PolicyToolCall {
|
|
25
|
+
readonly name: ToolName;
|
|
26
|
+
/** sha256:<12hex> 拍板 */
|
|
27
|
+
readonly argsDigest: string;
|
|
28
|
+
}
|
|
29
|
+
export interface PolicyContext {
|
|
30
|
+
/** 模式是否可交互 (REPL = true, print / rpc 默认 = false) */
|
|
31
|
+
readonly isInteractive: boolean;
|
|
32
|
+
/** --yes 标志: 只 bypass require_confirmation, 不 bypass deny */
|
|
33
|
+
readonly yes: boolean;
|
|
34
|
+
/** tool call args 的稳定 sha256: 前 12 位 */
|
|
35
|
+
readonly argsDigest: string;
|
|
36
|
+
}
|
|
37
|
+
export interface ToolPolicy {
|
|
38
|
+
/**
|
|
39
|
+
* 拍板: 调用一次返回最终 decision. 拍板: 不抛异常, 内部失败也返 deny.
|
|
40
|
+
* 拍板: 纯函数, 不读 stdin, 不打 console. caller (tool-loop) 负责 IO.
|
|
41
|
+
*/
|
|
42
|
+
evaluate(toolCall: PolicyToolCall, ctx: PolicyContext): PolicyDecision;
|
|
43
|
+
/**
|
|
44
|
+
* 拍板: 用户确认回调. REPL 走 readline, RPC 走 NDJSON "confirm" 通知 (D-15).
|
|
45
|
+
* 拍板: undefined = "未实现" 兜底, caller 走 fail-closed deny.
|
|
46
|
+
* 拍板: return true = 用户同意, false = 拒绝, null = dismiss (也走 deny).
|
|
47
|
+
*
|
|
48
|
+
* Sprint 1c-revive-3-D-19 (2026-06-05): opts.signal 可选 — REPL SIGINT/turn
|
|
49
|
+
* 取消时, 注入 turn-level AbortSignal, confirm 收到 abort 立刻 resolve null.
|
|
50
|
+
* 老实现 (单参) 继续合法 (opts 默认 undefined).
|
|
51
|
+
*/
|
|
52
|
+
confirm?(prompt: string, opts?: {
|
|
53
|
+
signal?: AbortSignal;
|
|
54
|
+
}): Promise<boolean | null>;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/policy/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,2DAA2D;AAC3D,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,EAAE,OAAO,CAAA;CAAE,GACrB;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,QAAQ,EAAE,sBAAsB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD,iEAAiE;AACjE,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,wBAAwB;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,oDAAoD;IACpD,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,6DAA6D;IAC7D,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,wCAAwC;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,EAAE,aAAa,GAAG,cAAc,CAAC;IAEvE;;;;;;;;OAQG;IACH,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;CACpF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sprint 1c-revive-3-D-13 (2026-06-05)
|
|
3
|
+
*
|
|
4
|
+
* ToolPolicy interface + PolicyDecision 联合 + PolicyContext 拍板.
|
|
5
|
+
*
|
|
6
|
+
* 拍板红线 (用户 2026-06-05):
|
|
7
|
+
* - 'allow' 不写 session, 只有 'deny' / 'require_confirmation' / 用户确认结果
|
|
8
|
+
* ('user_approved' / 'user_denied') 落 'policy_decision' event
|
|
9
|
+
* - argsDigest 不存原始 args, 用 sha256: 前 12 位稳定关联
|
|
10
|
+
* - 拍板: deny 不被 --yes bypass
|
|
11
|
+
*/
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/policy/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* REPL slash builtin command router — Sprint 1c-revive-3-D-29.1.3 (2026-06-07).
|
|
3
|
+
*
|
|
4
|
+
* 历史:
|
|
5
|
+
* Sprint 0.3: REPL 接 /help / /exit / exit / quit 4 个内建命令, 派发写在
|
|
6
|
+
* rl.on('line') 闭包内 (原 repl.ts L434-481). 后续 D-11 加 /verify (走
|
|
7
|
+
* runVerify + 写 verification event 到 session), D-19 加 confirm 期间 /exit
|
|
8
|
+
* dismiss-then-pendingExit 顺序红线, D-19.6.1 加 slash builtin guard
|
|
9
|
+
* (turnInFlight 时除 /exit /quit 外 deny 其它 slash builtin).
|
|
10
|
+
* D-29.1.3 (2026-06-07): 抽到独立文件, 跟 repl-confirm.ts / repl-signal-coordinator.ts
|
|
11
|
+
* / repl-session.ts 工厂形态对齐.
|
|
12
|
+
*
|
|
13
|
+
* 拍板 (D-29.1.3):
|
|
14
|
+
* - 入口: dispatchSlashBuiltin(line, ctx) → { handled: boolean }
|
|
15
|
+
* - 闭包内不持 state, 所有副作用 (out / err / writer / prompt) 通过 ctx 注入
|
|
16
|
+
* (跟 D-29.1.1 signal-coordinator 抽法 1:1 一致, 单测 mock ctx 即可).
|
|
17
|
+
* - 派发顺序保 1:1 (跟原 rl.on('line') L434-481): /help → /verify → /unknown slash.
|
|
18
|
+
* - 行为 1:1 等价, 5 红线 0 改: turnInFlight/lineQueue state machine 仍在 repl.ts
|
|
19
|
+
* (slash guard L409-418 + chat path L490+), router 只搬 dispatch 闭包.
|
|
20
|
+
* - 公共 API 0 改: 5 caller (src/index.ts, modes/print.ts, modes/tui.ts,
|
|
21
|
+
* test/repl/*, test/unit/repl-verify.test.ts) 全部走 '../repl.js' 公共 re-export
|
|
22
|
+
* 路径, 0 改 import.
|
|
23
|
+
* - 0 加新依赖, runVerify / buildSummaryAndNext / formatReport / appendVerificationEvent
|
|
24
|
+
* 走 ctx 注入 (test mock 用, prod 走 ./verify/index.js 真实 export).
|
|
25
|
+
*
|
|
26
|
+
* 拍板 (D-29.1.3 §out of scope):
|
|
27
|
+
* - 不接 turnInFlight guard — 那在 repl.ts L409-418, 跟 6afccc8 / D-19.5p 拍板
|
|
28
|
+
* "deny 非 /exit /quit slash builtin" 红线绑定, 不在本 router scope.
|
|
29
|
+
* - 不接 lineQueue defer — D-19.5 P1 "只排 chat line, 不排 slash builtin", 跟 router
|
|
30
|
+
* "handled: boolean" 二态返值绑定, 调用方决定 defer / deny / handle.
|
|
31
|
+
* - 不接 confirm 期间 /exit dismiss — D-19.5 P2-dismiss, 在 repl.ts L370-373
|
|
32
|
+
* confirm path, 不在本 router scope.
|
|
33
|
+
*/
|
|
34
|
+
import { type SessionWriter } from '@deepwhale/core';
|
|
35
|
+
import { type VerifyCheck } from '../verify/index.js';
|
|
36
|
+
export interface SlashContext {
|
|
37
|
+
/** stdout writer for user-facing output */
|
|
38
|
+
out: NodeJS.WritableStream;
|
|
39
|
+
/** stderr writer for error output */
|
|
40
|
+
err: NodeJS.WritableStream;
|
|
41
|
+
/** session writer (optional, only set when session is enabled) */
|
|
42
|
+
writer: SessionWriter | null;
|
|
43
|
+
/** REPL options.verifyChecks — test injects mocks, prod leaves undefined for 4 default steps */
|
|
44
|
+
verifyChecks: VerifyCheck[] | undefined;
|
|
45
|
+
/** re-prompt the user (write prompt char + flush) */
|
|
46
|
+
prompt: () => void;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Dispatch a slash builtin command (/help, /verify, unknown slash).
|
|
50
|
+
*
|
|
51
|
+
* Returns `handled: true` if the line was a recognized slash builtin and was
|
|
52
|
+
* processed. Returns `handled: false` if the line should fall through to the
|
|
53
|
+
* chat / lineQueue path.
|
|
54
|
+
*
|
|
55
|
+
* Order (跟原 repl.ts L434-481 1:1 保):
|
|
56
|
+
* 1. /help → out.write(i18n cli.builtin_help) + prompt + return
|
|
57
|
+
* 2. /verify → runVerify → formatReport → out.write → if (writer)
|
|
58
|
+
* appendVerificationEvent + try/catch wrap (1ceef94 红线)
|
|
59
|
+
* 3. /unknown slash (line.startsWith('/') 但不命中 /help /verify)
|
|
60
|
+
* → out.write(i18n cli.builtin_unknown) + prompt + return
|
|
61
|
+
*
|
|
62
|
+
* 5 红线 0 改 (跟 ship-quality-checks §7a + D-19/19.5/19.5p/6afccc8/1ceef94 一致):
|
|
63
|
+
* - /verify try/finally + appendVerificationEvent (1ceef94): 修法不在 try/finally,
|
|
64
|
+
* 而在 try/catch — verify 失败 (e.g. 命令不存在) 不污染 session, 走 stderr i18n
|
|
65
|
+
* 提示 + prompt 继续. appendVerificationEvent 仅 status='passed' 或 'failed' 时
|
|
66
|
+
* 写, 不在 catch 块里 (跟 D-11-4 拍板一致).
|
|
67
|
+
* - turnInFlight guard (D-19.6.1 + 6afccc8): 不在本 router, 调用方 repl.ts L409-418
|
|
68
|
+
* 决定是否调 dispatchSlashBuiltin.
|
|
69
|
+
* - confirm 期间 /exit dismiss (D-19.5 P2-dismiss): 不在本 router, repl.ts L370-373
|
|
70
|
+
* confirm path 处理.
|
|
71
|
+
* - /exit fast-path (D-19.5 P1): 不在本 router (line === '/exit' 走 turnInFlight guard
|
|
72
|
+
* L412 exclude, 不入 dispatch).
|
|
73
|
+
* - line.startsWith('/') unknown i18n (D-21.1): 跟原 L477-481 1:1 保.
|
|
74
|
+
*/
|
|
75
|
+
export declare function dispatchSlashBuiltin(line: string, ctx: SlashContext): Promise<{
|
|
76
|
+
handled: boolean;
|
|
77
|
+
}>;
|
|
78
|
+
//# sourceMappingURL=repl-command-router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repl-command-router.d.ts","sourceRoot":"","sources":["../../src/repl/repl-command-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,EAAK,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAEvD,OAAO,EAAgD,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAEnG,MAAM,WAAW,YAAY;IAC3B,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC,cAAc,CAAA;IAC1B,qCAAqC;IACrC,GAAG,EAAE,MAAM,CAAC,cAAc,CAAA;IAC1B,kEAAkE;IAClE,MAAM,EAAE,aAAa,GAAG,IAAI,CAAA;IAC5B,gGAAgG;IAChG,YAAY,EAAE,WAAW,EAAE,GAAG,SAAS,CAAA;IACvC,qDAAqD;IACrD,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,YAAY,GAChB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAkD/B"}
|