@te-river/opencode-team-mode 1.7.2 → 1.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/README.md +1008 -849
  2. package/README.zh-CN.md +905 -756
  3. package/dist/host/v2-browser-gate.d.ts +4 -1
  4. package/dist/host/v2-browser-gate.d.ts.map +1 -1
  5. package/dist/host/v2-browser-gate.js +1 -1
  6. package/dist/host/v2-browser-gate.js.map +1 -1
  7. package/dist/host/v2-capabilities.js +1 -1
  8. package/dist/host/v2-capabilities.js.map +1 -1
  9. package/dist/host/v2-events.d.ts +8 -2
  10. package/dist/host/v2-events.d.ts.map +1 -1
  11. package/dist/host/v2-events.js +16 -2
  12. package/dist/host/v2-events.js.map +1 -1
  13. package/dist/host/v2-guard.d.ts +3 -45
  14. package/dist/host/v2-guard.d.ts.map +1 -1
  15. package/dist/host/v2-guard.js +10 -73
  16. package/dist/host/v2-guard.js.map +1 -1
  17. package/dist/host/v2-offload.d.ts +12 -2
  18. package/dist/host/v2-offload.d.ts.map +1 -1
  19. package/dist/host/v2-offload.js +9 -9
  20. package/dist/host/v2-offload.js.map +1 -1
  21. package/dist/host/v2-probe-chain.d.ts +5 -1
  22. package/dist/host/v2-probe-chain.d.ts.map +1 -1
  23. package/dist/host/v2-probe-chain.js +4 -6
  24. package/dist/host/v2-probe-chain.js.map +1 -1
  25. package/dist/host/v2-probe.d.ts.map +1 -1
  26. package/dist/host/v2-probe.js +2 -1
  27. package/dist/host/v2-probe.js.map +1 -1
  28. package/dist/host/v2-prune.d.ts +5 -1
  29. package/dist/host/v2-prune.d.ts.map +1 -1
  30. package/dist/host/v2-prune.js +8 -14
  31. package/dist/host/v2-prune.js.map +1 -1
  32. package/dist/host/v2-retry.d.ts +10 -3
  33. package/dist/host/v2-retry.d.ts.map +1 -1
  34. package/dist/host/v2-retry.js +14 -16
  35. package/dist/host/v2-retry.js.map +1 -1
  36. package/dist/host/v2-session.d.ts +6 -2
  37. package/dist/host/v2-session.d.ts.map +1 -1
  38. package/dist/host/v2-session.js +7 -13
  39. package/dist/host/v2-session.js.map +1 -1
  40. package/dist/host/v2.d.ts +0 -5
  41. package/dist/host/v2.d.ts.map +1 -1
  42. package/dist/host/v2.js +32 -73
  43. package/dist/host/v2.js.map +1 -1
  44. package/dist/prompts/lead.d.ts +1 -1
  45. package/dist/prompts/lead.d.ts.map +1 -1
  46. package/dist/prompts/lead.js +47 -19
  47. package/dist/prompts/lead.js.map +1 -1
  48. package/dist/prompts/shared.d.ts +1 -1
  49. package/dist/prompts/shared.d.ts.map +1 -1
  50. package/dist/prompts/shared.js +16 -0
  51. package/dist/prompts/shared.js.map +1 -1
  52. package/dist/prompts/specialists.d.ts +1 -1
  53. package/dist/prompts/specialists.d.ts.map +1 -1
  54. package/dist/prompts/specialists.js +1 -1
  55. package/dist/tm/args-schema.d.ts +1 -1
  56. package/dist/tm/args-schema.js +6 -6
  57. package/dist/tm/args-schema.js.map +1 -1
  58. package/dist/tm/board.js +2 -2
  59. package/dist/tm/board.js.map +1 -1
  60. package/dist/tm/config-files.d.ts +41 -17
  61. package/dist/tm/config-files.d.ts.map +1 -1
  62. package/dist/tm/config-files.js +68 -73
  63. package/dist/tm/config-files.js.map +1 -1
  64. package/dist/tm/config-layers.d.ts +65 -33
  65. package/dist/tm/config-layers.d.ts.map +1 -1
  66. package/dist/tm/config-layers.js +164 -81
  67. package/dist/tm/config-layers.js.map +1 -1
  68. package/dist/tm/config-template.d.ts +32 -0
  69. package/dist/tm/config-template.d.ts.map +1 -0
  70. package/dist/tm/config-template.js +74 -0
  71. package/dist/tm/config-template.js.map +1 -0
  72. package/dist/tm/config.d.ts +113 -140
  73. package/dist/tm/config.d.ts.map +1 -1
  74. package/dist/tm/config.js +100 -200
  75. package/dist/tm/config.js.map +1 -1
  76. package/dist/tm/dispatch.d.ts +0 -9
  77. package/dist/tm/dispatch.d.ts.map +1 -1
  78. package/dist/tm/dispatch.js +14 -16
  79. package/dist/tm/dispatch.js.map +1 -1
  80. package/dist/tm/index.d.ts +12 -12
  81. package/dist/tm/index.d.ts.map +1 -1
  82. package/dist/tm/index.js +48 -26
  83. package/dist/tm/index.js.map +1 -1
  84. package/dist/tm/ledger.d.ts +7 -3
  85. package/dist/tm/ledger.d.ts.map +1 -1
  86. package/dist/tm/ledger.js +5 -4
  87. package/dist/tm/ledger.js.map +1 -1
  88. package/dist/tm/memory.js +3 -3
  89. package/dist/tm/pipelines.js +1 -1
  90. package/dist/tm/search.js +6 -6
  91. package/dist/tm/search.js.map +1 -1
  92. package/dist/tm/stats.js +2 -2
  93. package/dist/tm/stats.js.map +1 -1
  94. package/dist/tm/tools.js +2 -2
  95. package/dist/tm/webfetch.d.ts +5 -2
  96. package/dist/tm/webfetch.d.ts.map +1 -1
  97. package/dist/tm/webfetch.js +24 -18
  98. package/dist/tm/webfetch.js.map +1 -1
  99. package/docs/installation-v2.md +59 -38
  100. package/docs/installation.md +4 -4
  101. package/package.json +1 -1
  102. package/scripts/gen-v2-config.mjs +8 -7
  103. package/dist/approval-gate.d.ts +0 -205
  104. package/dist/approval-gate.d.ts.map +0 -1
  105. package/dist/approval-gate.js +0 -627
  106. package/dist/approval-gate.js.map +0 -1
  107. package/dist/host/v1.d.ts +0 -14
  108. package/dist/host/v1.d.ts.map +0 -1
  109. package/dist/host/v1.js +0 -340
  110. package/dist/host/v1.js.map +0 -1
  111. package/dist/host/v2-client.d.ts +0 -53
  112. package/dist/host/v2-client.d.ts.map +0 -1
  113. package/dist/host/v2-client.js +0 -193
  114. package/dist/host/v2-client.js.map +0 -1
  115. package/dist/host/v2-transcript.d.ts +0 -73
  116. package/dist/host/v2-transcript.d.ts.map +0 -1
  117. package/dist/host/v2-transcript.js +0 -151
  118. package/dist/host/v2-transcript.js.map +0 -1
  119. package/dist/host-hooks.d.ts +0 -126
  120. package/dist/host-hooks.d.ts.map +0 -1
  121. package/dist/host-hooks.js +0 -284
  122. package/dist/host-hooks.js.map +0 -1
  123. package/dist/tm/bash-timeout.d.ts +0 -72
  124. package/dist/tm/bash-timeout.d.ts.map +0 -1
  125. package/dist/tm/bash-timeout.js +0 -100
  126. package/dist/tm/bash-timeout.js.map +0 -1
  127. package/dist/tm/browser.d.ts +0 -642
  128. package/dist/tm/browser.d.ts.map +0 -1
  129. package/dist/tm/browser.js +0 -2836
  130. package/dist/tm/browser.js.map +0 -1
  131. package/dist/tm/ptc/budgets.d.ts +0 -59
  132. package/dist/tm/ptc/budgets.d.ts.map +0 -1
  133. package/dist/tm/ptc/budgets.js +0 -138
  134. package/dist/tm/ptc/budgets.js.map +0 -1
  135. package/dist/tm/ptc/contract.d.ts +0 -171
  136. package/dist/tm/ptc/contract.d.ts.map +0 -1
  137. package/dist/tm/ptc/contract.js +0 -85
  138. package/dist/tm/ptc/contract.js.map +0 -1
  139. package/dist/tm/ptc/driver.d.ts +0 -40
  140. package/dist/tm/ptc/driver.d.ts.map +0 -1
  141. package/dist/tm/ptc/driver.js +0 -213
  142. package/dist/tm/ptc/driver.js.map +0 -1
  143. package/dist/tm/ptc/engines.d.ts +0 -43
  144. package/dist/tm/ptc/engines.d.ts.map +0 -1
  145. package/dist/tm/ptc/engines.js +0 -454
  146. package/dist/tm/ptc/engines.js.map +0 -1
  147. package/dist/tm/ptc/gate.d.ts +0 -28
  148. package/dist/tm/ptc/gate.d.ts.map +0 -1
  149. package/dist/tm/ptc/gate.js +0 -130
  150. package/dist/tm/ptc/gate.js.map +0 -1
  151. package/dist/tm/ptc/index.d.ts +0 -19
  152. package/dist/tm/ptc/index.d.ts.map +0 -1
  153. package/dist/tm/ptc/index.js +0 -15
  154. package/dist/tm/ptc/index.js.map +0 -1
  155. package/dist/tm/ptc/pscan.d.ts +0 -30
  156. package/dist/tm/ptc/pscan.d.ts.map +0 -1
  157. package/dist/tm/ptc/pscan.js +0 -341
  158. package/dist/tm/ptc/pscan.js.map +0 -1
  159. package/dist/tm/ptc/summary.d.ts +0 -17
  160. package/dist/tm/ptc/summary.d.ts.map +0 -1
  161. package/dist/tm/ptc/summary.js +0 -134
  162. package/dist/tm/ptc/summary.js.map +0 -1
  163. package/dist/tm/ptc/tool.d.ts +0 -66
  164. package/dist/tm/ptc/tool.d.ts.map +0 -1
  165. package/dist/tm/ptc/tool.js +0 -231
  166. package/dist/tm/ptc/tool.js.map +0 -1
  167. package/dist/tm/ptc.d.ts +0 -298
  168. package/dist/tm/ptc.d.ts.map +0 -1
  169. package/dist/tm/ptc.js +0 -865
  170. package/dist/tm/ptc.js.map +0 -1
  171. package/dist/tm/pty.d.ts +0 -70
  172. package/dist/tm/pty.d.ts.map +0 -1
  173. package/dist/tm/pty.js +0 -245
  174. package/dist/tm/pty.js.map +0 -1
  175. package/dist/tool-coerce.d.ts +0 -24
  176. package/dist/tool-coerce.d.ts.map +0 -1
  177. package/dist/tool-coerce.js +0 -63
  178. package/dist/tool-coerce.js.map +0 -1
@@ -1,19 +0,0 @@
1
- /**
2
- * tm_ptc_run — module facade. The former monolithic ptc.ts (1092 lines)
3
- * split into: contract (frozen seam + RPC) / budgets / pscan / engines /
4
- * gate / driver / summary / tool. This re-export keeps every historical
5
- * export name stable for `dist/tm/index.js` and any deep-path importers.
6
- */
7
- export type { BridgeTool, PtcBridge, PtcCallResult, PtcEngine, PtcEngineMessage, PtcEngineName, PtcEngineRunOpts, PtcErrorBody, PtcRunOutcome, PtcRpcAbort, PtcRpcRequest, PtcRpcResponse, PtcRunRequest, PtcStatus, PtcStepRecord, } from "./contract.js";
8
- export { BRIDGE_ALLOW, PTC_STATUS_VALUES, PtcProgramError, PtcStopSignal, RETRYABLE_PHASES, shortRefCode, } from "./contract.js";
9
- export type { PtcArgsResult, PtcBudgets, PtcBudgetResolution, PtcCallerBudgets, PtcValidArgs } from "./budgets.js";
10
- export { parsePtcArgs, PTC_LABEL_MAX, resolvePtcBudgets, resolvePtcBudgetsDetailed } from "./budgets.js";
11
- export { staticPscan } from "./pscan.js";
12
- export { InlineSequentialEngine, InlineVmEngine, WorkerEngine } from "./engines.js";
13
- export type { GateState } from "./gate.js";
14
- export { createGateBridge } from "./gate.js";
15
- export type { EngineSelection, RunPtcOptions } from "./driver.js";
16
- export { runPtc, selectEngine } from "./driver.js";
17
- export { PTC_ERR_HEADER, PTC_ERR_SECTION, PTC_ERRORFULL_PREFIX, PTC_OK_HEADER, PTC_OK_SECTION, PTC_RETURN_PREFIX, PTC_SUMMARY_HEADER, renderPtcSummary, } from "./summary.js";
18
- export { buildPtcRunTool, pipelineBridge } from "./tool.js";
19
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tm/ptc/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,YAAY,EACV,UAAU,EACV,SAAS,EACT,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,WAAW,EACX,aAAa,EACb,cAAc,EACd,aAAa,EACb,SAAS,EACT,aAAa,GACd,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,YAAY,GACb,MAAM,eAAe,CAAA;AACtB,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAClH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AACxG,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AACnF,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAC5C,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACjE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EACL,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA"}
@@ -1,15 +0,0 @@
1
- /**
2
- * tm_ptc_run — module facade. The former monolithic ptc.ts (1092 lines)
3
- * split into: contract (frozen seam + RPC) / budgets / pscan / engines /
4
- * gate / driver / summary / tool. This re-export keeps every historical
5
- * export name stable for `dist/tm/index.js` and any deep-path importers.
6
- */
7
- export { BRIDGE_ALLOW, PTC_STATUS_VALUES, PtcProgramError, PtcStopSignal, RETRYABLE_PHASES, shortRefCode, } from "./contract.js";
8
- export { parsePtcArgs, PTC_LABEL_MAX, resolvePtcBudgets, resolvePtcBudgetsDetailed } from "./budgets.js";
9
- export { staticPscan } from "./pscan.js";
10
- export { InlineSequentialEngine, InlineVmEngine, WorkerEngine } from "./engines.js";
11
- export { createGateBridge } from "./gate.js";
12
- export { runPtc, selectEngine } from "./driver.js";
13
- export { PTC_ERR_HEADER, PTC_ERR_SECTION, PTC_ERRORFULL_PREFIX, PTC_OK_HEADER, PTC_OK_SECTION, PTC_RETURN_PREFIX, PTC_SUMMARY_HEADER, renderPtcSummary, } from "./summary.js";
14
- export { buildPtcRunTool, pipelineBridge } from "./tool.js";
15
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tm/ptc/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAmBH,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,YAAY,GACb,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AACxG,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAE5C,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,EACL,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA"}
@@ -1,30 +0,0 @@
1
- /**
2
- * tm_ptc_run — static pre-scan: the FIRST gate. runPtc and buildPtcRunTool
3
- * both reject a rejected program before any engine runs. Auxiliary guard,
4
- * not a security boundary (design §3 trust model). Split out of the former
5
- * monolithic ptc.ts.
6
- *
7
- * C1 fix batch: the old single-regex stripper deleted an ENTIRE template
8
- * literal including its `${…}` executable interpolations, so
9
- * `` `x ${process.exit(1)} y` `` was a FALSE NEGATIVE (a real escape written
10
- * inside an interpolation sailed through). The scanner below is a tiny
11
- * hand-written lexer that:
12
- * - drops line/block comments and '…'/"…" string bodies (data, not code),
13
- * - drops the LITERAL TEXT of a template but RECURSIVELY SCANS every
14
- * `${…}` interpolation body (that text IS executed), and
15
- * - drops regex-literal bodies, so `{ pattern: /\brequire\b/ }` (a plain
16
- * DATA regex) no longer rejects the whole program.
17
- * Everything is fail-CLOSED: an unterminated literal/comment/interpolation
18
- * leaves its remainder in place to be scanned, so an open quote can never
19
- * hide a banned token behind it.
20
- */
21
- /** The program source with string / comment / template-text / regex-literal
22
- * bodies removed but `${…}` interpolation bodies retained and scanned.
23
- * Each removed literal becomes a single SPACE (not "") so a token split
24
- * across two literals cannot re-form, and word boundaries stay intact. */
25
- export declare function stripNonExecutable(program: string): string;
26
- export declare function staticPscan(program: string): {
27
- rejected: boolean;
28
- tokens: string[];
29
- };
30
- //# sourceMappingURL=pscan.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pscan.d.ts","sourceRoot":"","sources":["../../../src/tm/ptc/pscan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAmTH;;;2EAG2E;AAC3E,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CASpF"}
@@ -1,341 +0,0 @@
1
- /**
2
- * tm_ptc_run — static pre-scan: the FIRST gate. runPtc and buildPtcRunTool
3
- * both reject a rejected program before any engine runs. Auxiliary guard,
4
- * not a security boundary (design §3 trust model). Split out of the former
5
- * monolithic ptc.ts.
6
- *
7
- * C1 fix batch: the old single-regex stripper deleted an ENTIRE template
8
- * literal including its `${…}` executable interpolations, so
9
- * `` `x ${process.exit(1)} y` `` was a FALSE NEGATIVE (a real escape written
10
- * inside an interpolation sailed through). The scanner below is a tiny
11
- * hand-written lexer that:
12
- * - drops line/block comments and '…'/"…" string bodies (data, not code),
13
- * - drops the LITERAL TEXT of a template but RECURSIVELY SCANS every
14
- * `${…}` interpolation body (that text IS executed), and
15
- * - drops regex-literal bodies, so `{ pattern: /\brequire\b/ }` (a plain
16
- * DATA regex) no longer rejects the whole program.
17
- * Everything is fail-CLOSED: an unterminated literal/comment/interpolation
18
- * leaves its remainder in place to be scanned, so an open quote can never
19
- * hide a banned token behind it.
20
- */
21
- /** Banned tokens for the program source. The last three (constructor(,
22
- * Function(, eval() are the C1 escape call-sites; dynamic `import(` is
23
- * already covered by the `import` word token. */
24
- const PSCAN_PATTERNS = [
25
- { name: "require", re: /\brequire\b/ },
26
- { name: "import", re: /\bimport\b/ },
27
- { name: "process", re: /\bprocess\b/ },
28
- { name: "globalThis", re: /\bglobalThis\b/ },
29
- { name: "Deno", re: /\bDeno\b/ },
30
- { name: "Bun", re: /\bBun\b/ },
31
- { name: "fs", re: /\bfs\b/ },
32
- { name: "net", re: /\bnet\b/ },
33
- { name: "child_process", re: /\bchild_process\b/ },
34
- { name: "constructor(", re: /\bconstructor\s*\(/ },
35
- { name: "Function(", re: /\bFunction\s*\(/ },
36
- { name: "eval(", re: /\beval\s*\(/ },
37
- ];
38
- // Chars after which a `/` STARTS a regex literal (an operator/punctuator that
39
- // cannot END an operand). Anything else (identifier, number, `)`, `]`, a
40
- // closing quote) means the `/` is a DIVISION, so its right-hand side stays
41
- // live code and is scanned.
42
- const REGEX_POS_CHARS = new Set([
43
- "(", ",", "=", ":", "[", "!", "&", "|", "?", "{", "}", ";", "+", "-", "*",
44
- "%", "<", ">", "^", "~", "&", "|",
45
- ]);
46
- // Keywords after which a `/` is a regex (e.g. `return /x/`, `typeof /x/`).
47
- const KEYWORDS_BEFORE_REGEX = new Set([
48
- "return", "typeof", "instanceof", "in", "of", "new", "delete", "void",
49
- "throw", "case", "do", "else", "yield", "await",
50
- ]);
51
- const isWordChar = (c) => (c >= "a" && c <= "z") || (c >= "A" && c <= "Z") || (c >= "0" && c <= "9") ||
52
- c === "_" || c === "$";
53
- /** s[start] is a quote; return the index AFTER the closing quote honouring
54
- * backslash escapes, or -1 when the string runs off the end (unterminated). */
55
- function scanString(s, start) {
56
- const q = s[start];
57
- let i = start + 1;
58
- while (i < s.length) {
59
- const c = s[i];
60
- if (c === "\\") {
61
- i += 2;
62
- continue;
63
- }
64
- if (c === q)
65
- return i + 1;
66
- if (c === "\n")
67
- return -1; // a plain string cannot span a newline → not a string
68
- i++;
69
- }
70
- return -1;
71
- }
72
- /** s[start] is `/`; return the index AFTER the closing unescaped `/` (honour
73
- * a `[...]` char class where `/` is literal), or -1 if it never closes on
74
- * this line (so it is NOT a regex literal). */
75
- function scanRegex(s, start) {
76
- let i = start + 1;
77
- let inClass = false;
78
- while (i < s.length) {
79
- const c = s[i];
80
- if (c === "\\") {
81
- i += 2;
82
- continue;
83
- }
84
- if (c === "\n")
85
- return -1;
86
- if (c === "[")
87
- inClass = true;
88
- else if (c === "]")
89
- inClass = false;
90
- else if (c === "/" && !inClass)
91
- return i + 1;
92
- i++;
93
- }
94
- return -1;
95
- }
96
- /** s[start] is a backtick. Collapse the template's LITERAL TEXT to a single
97
- * space (banned words there are data) and RECURSIVELY SCAN each `${…}`
98
- * interpolation body (executed code). Returns the stripped text and the
99
- * index after the closing backtick, or null when unterminated. */
100
- function scanTemplate(s, start) {
101
- let i = start + 1;
102
- let out = "";
103
- while (i < s.length) {
104
- const c = s[i];
105
- if (c === "\\") {
106
- i += 2;
107
- continue;
108
- }
109
- if (c === "`")
110
- return { out: out + " ", end: i + 1 };
111
- if (c === "$" && s[i + 1] === "{") {
112
- out += " ";
113
- const inner = scanToCloseBrace(s, i + 2);
114
- if (!inner)
115
- return null;
116
- out += " " + scanCode(inner.code) + " ";
117
- i = inner.end;
118
- continue;
119
- }
120
- i++; // template text char — dropped (a single space represents the run)
121
- }
122
- return null; // unterminated
123
- }
124
- /** Start just after a `${`; find the matching `}` (depth-tracked, skipping
125
- * strings / comments / regex / nested templates so a `}` inside them cannot
126
- * close early). Returns the inner code (without the braces) + the index
127
- * after `}`, or null on an unterminated interpolation. */
128
- function scanToCloseBrace(s, start) {
129
- let depth = 1;
130
- let i = start;
131
- let lastCode = "";
132
- let lastWord = "";
133
- let curWord = "";
134
- const flushWord = () => {
135
- if (curWord) {
136
- lastWord = curWord;
137
- curWord = "";
138
- }
139
- else {
140
- lastWord = "";
141
- }
142
- };
143
- while (i < s.length) {
144
- const c = s[i];
145
- if (c === "/" && s[i + 1] === "/") {
146
- while (i < s.length && s[i] !== "\n")
147
- i++;
148
- flushWord();
149
- continue;
150
- }
151
- if (c === "/" && s[i + 1] === "*") {
152
- const e = s.indexOf("*/", i + 2);
153
- if (e < 0)
154
- return null;
155
- i = e + 2;
156
- flushWord();
157
- continue;
158
- }
159
- if (c === '"' || c === "'") {
160
- const e = scanString(s, i);
161
- if (e < 0)
162
- return null;
163
- i = e;
164
- lastCode = c;
165
- flushWord();
166
- continue;
167
- }
168
- if (c === "`") {
169
- const r = scanTemplate(s, i);
170
- if (!r)
171
- return null;
172
- i = r.end;
173
- lastCode = "`";
174
- flushWord();
175
- continue;
176
- }
177
- if (c === "/") {
178
- const regexPos = lastCode === "" || REGEX_POS_CHARS.has(lastCode) || KEYWORDS_BEFORE_REGEX.has(lastWord);
179
- if (regexPos) {
180
- const e = scanRegex(s, i);
181
- if (e > 0) {
182
- i = e;
183
- lastCode = ")";
184
- flushWord();
185
- continue;
186
- }
187
- }
188
- lastCode = "/";
189
- flushWord();
190
- i++;
191
- continue;
192
- }
193
- if (c === "{") {
194
- depth++;
195
- lastCode = "{";
196
- flushWord();
197
- i++;
198
- continue;
199
- }
200
- if (c === "}") {
201
- depth--;
202
- if (depth === 0)
203
- return { code: s.slice(start, i), end: i + 1 };
204
- lastCode = "}";
205
- flushWord();
206
- i++;
207
- continue;
208
- }
209
- if (isWordChar(c)) {
210
- curWord += c;
211
- lastCode = c;
212
- }
213
- else {
214
- flushWord();
215
- if (c !== " " && c !== "\t" && c !== "\n" && c !== "\r")
216
- lastCode = c;
217
- }
218
- i++;
219
- }
220
- return null; // ran off the end before the interpolation closed
221
- }
222
- /** Scan a code region: strip comments / strings / template-text / regex, keep
223
- * interpolation bodies (recursively scanned) and all other code. */
224
- function scanCode(s) {
225
- let out = "";
226
- let i = 0;
227
- let lastCode = "";
228
- let lastWord = "";
229
- let curWord = "";
230
- const flushWord = () => {
231
- if (curWord) {
232
- lastWord = curWord;
233
- curWord = "";
234
- }
235
- else {
236
- lastWord = "";
237
- }
238
- };
239
- while (i < s.length) {
240
- const c = s[i];
241
- // line comment → collapse to a single space, keep the newline
242
- if (c === "/" && s[i + 1] === "/") {
243
- let k = i + 2;
244
- while (k < s.length && s[k] !== "\n")
245
- k++;
246
- out += " ";
247
- i = k;
248
- flushWord();
249
- continue;
250
- }
251
- // block comment → collapse to a single space; unterminated = fail closed
252
- if (c === "/" && s[i + 1] === "*") {
253
- const e = s.indexOf("*/", i + 2);
254
- if (e < 0) {
255
- out += s.slice(i);
256
- break;
257
- }
258
- out += " ";
259
- i = e + 2;
260
- flushWord();
261
- continue;
262
- }
263
- // string literal → single space; unterminated = fail closed (scan raw rest)
264
- if (c === '"' || c === "'") {
265
- const e = scanString(s, i);
266
- if (e < 0) {
267
- out += s.slice(i);
268
- break;
269
- }
270
- out += " ";
271
- i = e;
272
- lastCode = c;
273
- flushWord();
274
- continue;
275
- }
276
- // template literal → text dropped, ${…} bodies scanned; unterminated = raw
277
- if (c === "`") {
278
- const r = scanTemplate(s, i);
279
- if (!r) {
280
- out += s.slice(i);
281
- break;
282
- }
283
- out += r.out;
284
- i = r.end;
285
- lastCode = "`";
286
- flushWord();
287
- continue;
288
- }
289
- // `/` → regex literal (in a regex position) else division operator
290
- if (c === "/") {
291
- const regexPos = lastCode === "" || REGEX_POS_CHARS.has(lastCode) || KEYWORDS_BEFORE_REGEX.has(lastWord);
292
- if (regexPos) {
293
- const e = scanRegex(s, i);
294
- if (e > 0) {
295
- out += " ";
296
- i = e;
297
- lastCode = ")";
298
- flushWord();
299
- continue;
300
- }
301
- }
302
- out += "/";
303
- i++;
304
- lastCode = "/";
305
- flushWord();
306
- continue;
307
- }
308
- // ordinary code char
309
- out += c;
310
- if (isWordChar(c)) {
311
- curWord += c;
312
- lastCode = c;
313
- }
314
- else {
315
- flushWord();
316
- if (c !== " " && c !== "\t" && c !== "\n" && c !== "\r")
317
- lastCode = c;
318
- }
319
- i++;
320
- }
321
- return out;
322
- }
323
- /** The program source with string / comment / template-text / regex-literal
324
- * bodies removed but `${…}` interpolation bodies retained and scanned.
325
- * Each removed literal becomes a single SPACE (not "") so a token split
326
- * across two literals cannot re-form, and word boundaries stay intact. */
327
- export function stripNonExecutable(program) {
328
- return scanCode(program);
329
- }
330
- export function staticPscan(program) {
331
- // Scan the EXECUTABLE surface only — string/comment/regex/template-text are
332
- // data, but template interpolations ARE code and are retained by the scan.
333
- const code = stripNonExecutable(program);
334
- const tokens = [];
335
- for (const { name, re } of PSCAN_PATTERNS) {
336
- if (re.test(code))
337
- tokens.push(name);
338
- }
339
- return { rejected: tokens.length > 0, tokens };
340
- }
341
- //# sourceMappingURL=pscan.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pscan.js","sourceRoot":"","sources":["../../../src/tm/ptc/pscan.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- /**
2
- * tm_ptc_run — the char-pinned aggregation summary (design §2). Verbatim
3
- * headers + metrics format are pinned by test-tm-tools §9h — do not reword.
4
- * Split out of the former monolithic ptc.ts; behavior unchanged.
5
- */
6
- import type { PtcRunOutcome } from "./contract.js";
7
- export declare const PTC_SUMMARY_HEADER = "PTC \u6458\u8981";
8
- export declare const PTC_OK_SECTION = "-- \u6210\u529F\u5206\u90E8\uFF08\u22648 \u884C\uFF0C\u8D85\u51FA\u6574\u8868\u5378\u8F7D\uFF09";
9
- export declare const PTC_OK_HEADER = " # tool ms tokens \u843D\u70B9(inline|ref \u77ED\u7801)";
10
- export declare const PTC_ERR_SECTION = "-- \u9519\u8BEF\u5206\u90E8\uFF08\u5168\u91CF\u9519\u8BEF\u5DF2\u843D run store\uFF09";
11
- export declare const PTC_ERR_HEADER = " # tool phase line retry message(\u622A\u65AD)";
12
- export declare const PTC_RETURN_PREFIX = "\u8FD4\u56DE\u503C: ";
13
- export declare const PTC_ERRORFULL_PREFIX = "\u9519\u8BEF\u5168\u6587: ";
14
- /** Render the fixed-shape aggregation summary. `offload` is used to route an
15
- * oversized success/error table (or return value) to a run-store handle. */
16
- export declare function renderPtcSummary(o: PtcRunOutcome, offload?: (content: string, kind: string) => string): string;
17
- //# sourceMappingURL=summary.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../../src/tm/ptc/summary.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,eAAe,CAAA;AAGjE,eAAO,MAAM,kBAAkB,qBAAW,CAAA;AAC1C,eAAO,MAAM,cAAc,oGAAyB,CAAA;AACpD,eAAO,MAAM,aAAa,qEAAiD,CAAA;AAC3E,eAAO,MAAM,eAAe,0FAA8B,CAAA;AAC1D,eAAO,MAAM,cAAc,gEAAsD,CAAA;AACjF,eAAO,MAAM,iBAAiB,yBAAU,CAAA;AACxC,eAAO,MAAM,oBAAoB,+BAAW,CAAA;AAU5C;6EAC6E;AAC7E,wBAAgB,gBAAgB,CAC9B,CAAC,EAAE,aAAa,EAChB,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,GAClD,MAAM,CAsFR"}
@@ -1,134 +0,0 @@
1
- /**
2
- * tm_ptc_run — the char-pinned aggregation summary (design §2). Verbatim
3
- * headers + metrics format are pinned by test-tm-tools §9h — do not reword.
4
- * Split out of the former monolithic ptc.ts; behavior unchanged.
5
- */
6
- import { shorten } from "../config.js";
7
- import { shortRefCode } from "./contract.js";
8
- export const PTC_SUMMARY_HEADER = "PTC 摘要";
9
- export const PTC_OK_SECTION = "-- 成功分部(≤8 行,超出整表卸载)";
10
- export const PTC_OK_HEADER = " # tool ms tokens 落点(inline|ref 短码)";
11
- export const PTC_ERR_SECTION = "-- 错误分部(全量错误已落 run store)";
12
- export const PTC_ERR_HEADER = " # tool phase line retry message(截断)";
13
- export const PTC_RETURN_PREFIX = "返回值: ";
14
- export const PTC_ERRORFULL_PREFIX = "错误全文: ";
15
- const OK_ROWS_INLINE_MAX = 8;
16
- const RETURN_VALUE_MAX = 2000;
17
- function engineLabel(o) {
18
- if (o.engine === "worker")
19
- return "worker";
20
- return o.degraded ? "inline(degraded)" : "inline";
21
- }
22
- /** Render the fixed-shape aggregation summary. `offload` is used to route an
23
- * oversized success/error table (or return value) to a run-store handle. */
24
- export function renderPtcSummary(o, offload) {
25
- const lines = [];
26
- lines.push(`${PTC_SUMMARY_HEADER} · ${o.label} · status=${o.status}`);
27
- lines.push(`steps=${o.okCount + o.errCount} ok=${o.okCount} err=${o.errCount} retries=${o.retries} ms=${o.ms} engine=${engineLabel(o)}`);
28
- // budgets echo (fix batch T1): the operator must SEE the effective values
29
- // and any clamping — a silently-clamped budget is an invisible contract
30
- // change. Absent on hand-built outcomes (backward compatible).
31
- // T6: the note now names WHICH fields the caller set (custom=) AND which
32
- // were clamped (CLAMPED=), so a mixed run (one field tightened, one clamped)
33
- // is fully transparent — not just "some numbers changed".
34
- if (o.budgets) {
35
- const b = o.budgets;
36
- const setBy = b.setByUser && b.setByUser.length > 0 ? b.setByUser.join(", ") : "";
37
- const clamp = b.clamped && b.clamped.length > 0 ? b.clamped.join(", ") : "";
38
- let note;
39
- if (clamp)
40
- note = `(custom: ${setBy || "—"} · CLAMPED: ${clamp})`;
41
- else if (setBy)
42
- note = `(custom: ${setBy})`;
43
- else
44
- note = "(defaults)";
45
- lines.push(`budgets: calls≤${b.maxCalls} err≤${b.maxErrors} to=${b.timeoutMs}ms ${note}`);
46
- }
47
- const okSteps = o.steps.filter((s) => s.ok);
48
- const errSteps = o.steps.filter((s) => !s.ok);
49
- lines.push(PTC_OK_SECTION);
50
- lines.push(PTC_OK_HEADER);
51
- if (okSteps.length > OK_ROWS_INLINE_MAX && offload) {
52
- const table = okSteps.map(okRow).join("\n");
53
- lines.push(`(成功 ${okSteps.length} 行,超 ${OK_ROWS_INLINE_MAX},整表卸载)`);
54
- lines.push(offload(table, "ok"));
55
- }
56
- else {
57
- for (const s of okSteps)
58
- lines.push(okRow(s));
59
- }
60
- lines.push(PTC_ERR_SECTION);
61
- lines.push(PTC_ERR_HEADER);
62
- for (const s of errSteps)
63
- lines.push(errRow(s));
64
- if (o.engineError) {
65
- // T5: program faults and engine faults render DISTINCTLY so the
66
- // operator can tell a bad program from a bad engine at a glance.
67
- const faultKind = o.status === "program-error" ? "程序错误" : "引擎错误";
68
- lines.push(errRow({
69
- n: 0,
70
- tool: "tm_ptc_run",
71
- phase: o.engineError.phase,
72
- line: o.engineError.line,
73
- retry: false,
74
- message: `${faultKind}:${o.engineError.message}`,
75
- }));
76
- }
77
- if (errSteps.length === 0 && !o.engineError)
78
- lines.push(" (无)");
79
- // return value (JSON-serialized, capped; oversized → offload handle)
80
- if (o.returned) {
81
- const json = safeStringify(o.returnValue);
82
- if (json.length > RETURN_VALUE_MAX && offload) {
83
- lines.push(PTC_RETURN_PREFIX + "(超 2000 字符,卸载为句柄)");
84
- lines.push(offload(json, "return"));
85
- }
86
- else {
87
- lines.push(PTC_RETURN_PREFIX + json);
88
- }
89
- }
90
- else {
91
- lines.push(PTC_RETURN_PREFIX + "(无:程序未正常 return)");
92
- }
93
- // educator line: ok bridged calls whose inline results never entered the
94
- // summary teach the model to `return` — the #1 adoption killer otherwise
95
- if (o.returned && (o.returnValue === undefined || o.returnValue === null) && okSteps.length > 0) {
96
- lines.push(`⚠️ 程序未 return 数据:${okSteps.length} 次成功桥接的内联结果未进入摘要(句柄类结果仍可经 tm.fetch 取回)。下次在程序末尾 return 聚合结果。`);
97
- }
98
- // error full-text refs (aggregate handle when many)
99
- const refs = o.steps.filter((s) => s.errorRef).map((s) => s.errorRef);
100
- if (refs.length === 0) {
101
- lines.push(PTC_ERRORFULL_PREFIX + "(无错误落盘)");
102
- }
103
- else if (refs.length > 8 && offload) {
104
- lines.push(PTC_ERRORFULL_PREFIX + offload(refs.join("\n"), "errrefs"));
105
- }
106
- else {
107
- lines.push(PTC_ERRORFULL_PREFIX + refs.map((r) => `tm://…/${shortRefCode(r)}`).join(" "));
108
- }
109
- return lines.join("\n");
110
- }
111
- function okRow(s) {
112
- return ` ${s.n} ${pad(s.tool, 8)}${String(s.ms)}ms ${s.tokens} ${s.dest}`;
113
- }
114
- function errRow(s) {
115
- const phase = s.phase ?? "-";
116
- const line = typeof s.line === "number" ? String(s.line) : "-";
117
- const retry = s.retry ? "yes" : "no";
118
- const msg = shorten(s.message ?? "", 60);
119
- return ` ${s.n} ${pad(s.tool, 8)}${pad(phase, 11)}${pad(line, 5)}${pad(retry, 5)}${msg}`;
120
- }
121
- function pad(v, w) {
122
- const s = String(v);
123
- return s.length >= w ? s + " " : s + " ".repeat(w - s.length);
124
- }
125
- function safeStringify(v) {
126
- try {
127
- const s = JSON.stringify(v);
128
- return s === undefined ? "null" : s;
129
- }
130
- catch {
131
- return String(v);
132
- }
133
- }
134
- //# sourceMappingURL=summary.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"summary.js","sourceRoot":"","sources":["../../../src/tm/ptc/summary.ts"],"names":[],"mappings":"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"}