@te-river/opencode-team-mode 1.5.5 → 1.5.7

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 (163) hide show
  1. package/README.md +544 -634
  2. package/README.zh-CN.md +511 -576
  3. package/dist/agents.d.ts +6 -1
  4. package/dist/agents.d.ts.map +1 -1
  5. package/dist/agents.js +113 -533
  6. package/dist/agents.js.map +1 -1
  7. package/dist/approval-gate.d.ts +16 -0
  8. package/dist/approval-gate.d.ts.map +1 -1
  9. package/dist/approval-gate.js +8 -1
  10. package/dist/approval-gate.js.map +1 -1
  11. package/dist/blackboard.d.ts.map +1 -1
  12. package/dist/blackboard.js +3 -2
  13. package/dist/blackboard.js.map +1 -1
  14. package/dist/commands.d.ts.map +1 -1
  15. package/dist/commands.js +7 -6
  16. package/dist/commands.js.map +1 -1
  17. package/dist/envprotect/bash-classify.d.ts +42 -0
  18. package/dist/envprotect/bash-classify.d.ts.map +1 -0
  19. package/dist/envprotect/bash-classify.js +221 -0
  20. package/dist/envprotect/bash-classify.js.map +1 -0
  21. package/dist/envprotect/gate-predicates.d.ts +57 -0
  22. package/dist/envprotect/gate-predicates.d.ts.map +1 -0
  23. package/dist/envprotect/gate-predicates.js +174 -0
  24. package/dist/envprotect/gate-predicates.js.map +1 -0
  25. package/dist/envprotect/hook.d.ts +45 -0
  26. package/dist/envprotect/hook.d.ts.map +1 -0
  27. package/dist/envprotect/hook.js +158 -0
  28. package/dist/envprotect/hook.js.map +1 -0
  29. package/dist/envprotect/path-classify.d.ts +16 -0
  30. package/dist/envprotect/path-classify.d.ts.map +1 -0
  31. package/dist/envprotect/path-classify.js +72 -0
  32. package/dist/envprotect/path-classify.js.map +1 -0
  33. package/dist/envprotect/patterns.d.ts +77 -0
  34. package/dist/envprotect/patterns.d.ts.map +1 -0
  35. package/dist/envprotect/patterns.js +182 -0
  36. package/dist/envprotect/patterns.js.map +1 -0
  37. package/dist/envprotect.d.ts +19 -217
  38. package/dist/envprotect.d.ts.map +1 -1
  39. package/dist/envprotect.js +18 -803
  40. package/dist/envprotect.js.map +1 -1
  41. package/dist/fs-safe.d.ts +16 -0
  42. package/dist/fs-safe.d.ts.map +1 -0
  43. package/dist/fs-safe.js +56 -0
  44. package/dist/fs-safe.js.map +1 -0
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +22 -6
  47. package/dist/index.js.map +1 -1
  48. package/dist/prompts/lead.d.ts +7 -0
  49. package/dist/prompts/lead.d.ts.map +1 -0
  50. package/dist/prompts/lead.js +233 -0
  51. package/dist/prompts/lead.js.map +1 -0
  52. package/dist/prompts/shared.d.ts +8 -0
  53. package/dist/prompts/shared.d.ts.map +1 -0
  54. package/dist/prompts/shared.js +120 -0
  55. package/dist/prompts/shared.js.map +1 -0
  56. package/dist/prompts/specialists.d.ts +12 -0
  57. package/dist/prompts/specialists.d.ts.map +1 -0
  58. package/dist/prompts/specialists.js +241 -0
  59. package/dist/prompts/specialists.js.map +1 -0
  60. package/dist/shell-text.d.ts +14 -0
  61. package/dist/shell-text.d.ts.map +1 -0
  62. package/dist/shell-text.js +16 -0
  63. package/dist/shell-text.js.map +1 -0
  64. package/dist/tm/args-schema.d.ts +42 -0
  65. package/dist/tm/args-schema.d.ts.map +1 -0
  66. package/dist/tm/args-schema.js +213 -0
  67. package/dist/tm/args-schema.js.map +1 -0
  68. package/dist/tm/browser.d.ts +52 -0
  69. package/dist/tm/browser.d.ts.map +1 -0
  70. package/dist/tm/browser.js +361 -0
  71. package/dist/tm/browser.js.map +1 -0
  72. package/dist/tm/client-unwrap.d.ts +38 -0
  73. package/dist/tm/client-unwrap.d.ts.map +1 -0
  74. package/dist/tm/client-unwrap.js +113 -0
  75. package/dist/tm/client-unwrap.js.map +1 -0
  76. package/dist/tm/config.d.ts +55 -19
  77. package/dist/tm/config.d.ts.map +1 -1
  78. package/dist/tm/config.js +74 -19
  79. package/dist/tm/config.js.map +1 -1
  80. package/dist/tm/guard.d.ts.map +1 -1
  81. package/dist/tm/guard.js +4 -7
  82. package/dist/tm/guard.js.map +1 -1
  83. package/dist/tm/index.d.ts +24 -7
  84. package/dist/tm/index.d.ts.map +1 -1
  85. package/dist/tm/index.js +111 -21
  86. package/dist/tm/index.js.map +1 -1
  87. package/dist/tm/memory.d.ts +88 -0
  88. package/dist/tm/memory.d.ts.map +1 -0
  89. package/dist/tm/memory.js +360 -0
  90. package/dist/tm/memory.js.map +1 -0
  91. package/dist/tm/pipelines.d.ts +58 -0
  92. package/dist/tm/pipelines.d.ts.map +1 -0
  93. package/dist/tm/pipelines.js +308 -0
  94. package/dist/tm/pipelines.js.map +1 -0
  95. package/dist/tm/preview.d.ts +6 -1
  96. package/dist/tm/preview.d.ts.map +1 -1
  97. package/dist/tm/preview.js +63 -13
  98. package/dist/tm/preview.js.map +1 -1
  99. package/dist/tm/ptc/budgets.d.ts +38 -0
  100. package/dist/tm/ptc/budgets.d.ts.map +1 -0
  101. package/dist/tm/ptc/budgets.js +59 -0
  102. package/dist/tm/ptc/budgets.js.map +1 -0
  103. package/dist/tm/ptc/contract.d.ts +131 -0
  104. package/dist/tm/ptc/contract.d.ts.map +1 -0
  105. package/dist/tm/ptc/contract.js +47 -0
  106. package/dist/tm/ptc/contract.js.map +1 -0
  107. package/dist/tm/ptc/driver.d.ts +37 -0
  108. package/dist/tm/ptc/driver.d.ts.map +1 -0
  109. package/dist/tm/ptc/driver.js +181 -0
  110. package/dist/tm/ptc/driver.js.map +1 -0
  111. package/dist/tm/ptc/engines.d.ts +32 -0
  112. package/dist/tm/ptc/engines.d.ts.map +1 -0
  113. package/dist/tm/ptc/engines.js +201 -0
  114. package/dist/tm/ptc/engines.js.map +1 -0
  115. package/dist/tm/ptc/gate.d.ts +28 -0
  116. package/dist/tm/ptc/gate.d.ts.map +1 -0
  117. package/dist/tm/ptc/gate.js +130 -0
  118. package/dist/tm/ptc/gate.js.map +1 -0
  119. package/dist/tm/ptc/index.d.ts +19 -0
  120. package/dist/tm/ptc/index.d.ts.map +1 -0
  121. package/dist/tm/ptc/index.js +15 -0
  122. package/dist/tm/ptc/index.js.map +1 -0
  123. package/dist/tm/ptc/pscan.d.ts +11 -0
  124. package/dist/tm/ptc/pscan.d.ts.map +1 -0
  125. package/dist/tm/ptc/pscan.js +27 -0
  126. package/dist/tm/ptc/pscan.js.map +1 -0
  127. package/dist/tm/ptc/summary.d.ts +17 -0
  128. package/dist/tm/ptc/summary.d.ts.map +1 -0
  129. package/dist/tm/ptc/summary.js +112 -0
  130. package/dist/tm/ptc/summary.js.map +1 -0
  131. package/dist/tm/ptc/tool.d.ts +35 -0
  132. package/dist/tm/ptc/tool.d.ts.map +1 -0
  133. package/dist/tm/ptc/tool.js +136 -0
  134. package/dist/tm/ptc/tool.js.map +1 -0
  135. package/dist/tm/ptc.d.ts +45 -26
  136. package/dist/tm/ptc.d.ts.map +1 -1
  137. package/dist/tm/ptc.js +71 -45
  138. package/dist/tm/ptc.js.map +1 -1
  139. package/dist/tm/result.d.ts +34 -0
  140. package/dist/tm/result.d.ts.map +1 -0
  141. package/dist/tm/result.js +87 -0
  142. package/dist/tm/result.js.map +1 -0
  143. package/dist/tm/search.d.ts +58 -0
  144. package/dist/tm/search.d.ts.map +1 -0
  145. package/dist/tm/search.js +229 -0
  146. package/dist/tm/search.js.map +1 -0
  147. package/dist/tm/shell-bridge.d.ts +22 -0
  148. package/dist/tm/shell-bridge.d.ts.map +1 -0
  149. package/dist/tm/shell-bridge.js +116 -0
  150. package/dist/tm/shell-bridge.js.map +1 -0
  151. package/dist/tm/store.d.ts.map +1 -1
  152. package/dist/tm/store.js +2 -1
  153. package/dist/tm/store.js.map +1 -1
  154. package/dist/tm/tools.d.ts +13 -71
  155. package/dist/tm/tools.d.ts.map +1 -1
  156. package/dist/tm/tools.js +22 -656
  157. package/dist/tm/tools.js.map +1 -1
  158. package/dist/tm/webfetch.d.ts +109 -0
  159. package/dist/tm/webfetch.d.ts.map +1 -0
  160. package/dist/tm/webfetch.js +305 -0
  161. package/dist/tm/webfetch.js.map +1 -0
  162. package/docs/installation.md +201 -0
  163. package/package.json +4 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engines.js","sourceRoot":"","sources":["../../../src/tm/ptc/engines.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * tm_ptc_run — the StepGate. All budget/retry/step-id/trajectory logic lives
3
+ * ONLY here (outside the engines), per design §3 ("决策进代码"). Split out
4
+ * of the former monolithic ptc.ts; behavior unchanged.
5
+ */
6
+ import type { RunStore } from "../store.js";
7
+ import type { PtcBridge, PtcStepRecord } from "./contract.js";
8
+ import type { PtcBudgets } from "./budgets.js";
9
+ export interface GateState {
10
+ calls: number;
11
+ errors: number;
12
+ retries: number;
13
+ steps: PtcStepRecord[];
14
+ stopReason?: "timeout" | "error-budget" | "call-budget";
15
+ }
16
+ /**
17
+ * Wrap a raw bridge with the StepGate. Every call: enforce time/call budget
18
+ * (throw a stop that unwinds the program), assign a composite step id
19
+ * `parent.kNN`, retry ≤1 on idempotent phases, record + persist errors, and
20
+ * trip the error budget.
21
+ */
22
+ export declare function createGateBridge(raw: PtcBridge, parent: string, budgets: PtcBudgets, state: GateState, opts: {
23
+ now: () => number;
24
+ deadlineAt: number;
25
+ store?: RunStore;
26
+ trajectoryParent?: string;
27
+ }): PtcBridge;
28
+ //# sourceMappingURL=gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate.d.ts","sourceRoot":"","sources":["../../../src/tm/ptc/gate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,KAAK,EAAc,SAAS,EAAiB,aAAa,EAAE,MAAM,eAAe,CAAA;AAExF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAE9C,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,aAAa,EAAE,CAAA;IACtB,UAAU,CAAC,EAAE,SAAS,GAAG,cAAc,GAAG,aAAa,CAAA;CACxD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3F,SAAS,CAkGX"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * tm_ptc_run — the StepGate. All budget/retry/step-id/trajectory logic lives
3
+ * ONLY here (outside the engines), per design §3 ("决策进代码"). Split out
4
+ * of the former monolithic ptc.ts; behavior unchanged.
5
+ */
6
+ import { estimateTokens, shorten } from "../config.js";
7
+ import { buildRef } from "../refs.js";
8
+ import { PtcStopSignal, RETRYABLE_PHASES, shortRefCode } from "./contract.js";
9
+ /**
10
+ * Wrap a raw bridge with the StepGate. Every call: enforce time/call budget
11
+ * (throw a stop that unwinds the program), assign a composite step id
12
+ * `parent.kNN`, retry ≤1 on idempotent phases, record + persist errors, and
13
+ * trip the error budget.
14
+ */
15
+ export function createGateBridge(raw, parent, budgets, state, opts) {
16
+ const { now, deadlineAt, store } = opts;
17
+ const ptcTag = opts.trajectoryParent ?? parent;
18
+ let seq = 0;
19
+ const traj = (e) => store?.appendTrajectory(e);
20
+ return {
21
+ async call(tool, args) {
22
+ if (state.stopReason)
23
+ throw new PtcStopSignal(state.stopReason);
24
+ // time budget checked BEFORE the call so a run cannot start a call it
25
+ // has no time left for.
26
+ if (now() >= deadlineAt) {
27
+ state.stopReason = "timeout";
28
+ throw new PtcStopSignal("timeout");
29
+ }
30
+ // call budget: only `maxCalls` bridged calls may be dispatched.
31
+ if (state.calls >= budgets.maxCalls) {
32
+ state.stopReason = "call-budget";
33
+ throw new PtcStopSignal("call-budget");
34
+ }
35
+ state.calls++;
36
+ seq++;
37
+ const composite = `${parent}.k${String(seq).padStart(2, "0")}`;
38
+ traj({ tool, step_id: composite, event: "call", ptc: ptcTag });
39
+ const t0 = now();
40
+ let res = await raw.call(tool, args);
41
+ let retried = false;
42
+ // ≤1 retry on idempotent phases — but never PAST the deadline: a
43
+ // retryable failure at the wire must not buy extra wall-clock time.
44
+ // The retry still rides the same budget unit (one call = one unit).
45
+ if (!res.ok && RETRYABLE_PHASES.includes(res.error.phase) && now() < deadlineAt) {
46
+ retried = true;
47
+ state.retries++;
48
+ res = await raw.call(tool, args);
49
+ }
50
+ const ms = now() - t0;
51
+ if (res.ok) {
52
+ const { tokens, dest, ref } = describeOk(res.data);
53
+ state.steps.push({ n: seq, tool, ok: true, ms, tokens, dest, ref });
54
+ traj({
55
+ tool,
56
+ step_id: composite,
57
+ event: "result",
58
+ offloaded: Boolean(ref),
59
+ tokens,
60
+ ptc: ptcTag,
61
+ ...(ref ? { ref } : {}),
62
+ });
63
+ return res;
64
+ }
65
+ // error path — full text persists to steps/sXXXX.kNN/ (design §4.1)
66
+ state.errors++;
67
+ const err = res.error;
68
+ let errorRef;
69
+ if (store) {
70
+ try {
71
+ store.writeResult(composite, {
72
+ tool,
73
+ content: JSON.stringify({ error: err }, null, 2),
74
+ tokens: estimateTokens(JSON.stringify(err)),
75
+ contentType: "json",
76
+ preview: shorten(err.message, 120),
77
+ expireAt: Date.now() + 24 * 60 * 60 * 1000,
78
+ });
79
+ errorRef = buildRef(store.runId, composite);
80
+ }
81
+ catch {
82
+ /* error persistence is best-effort; never mask the original error */
83
+ }
84
+ }
85
+ state.steps.push({
86
+ n: seq,
87
+ tool,
88
+ ok: false,
89
+ ms,
90
+ tokens: 0,
91
+ dest: "err",
92
+ phase: err.phase,
93
+ line: err.line,
94
+ retry: retried,
95
+ message: err.message,
96
+ errorRef,
97
+ });
98
+ traj({
99
+ tool,
100
+ step_id: composite,
101
+ event: "error",
102
+ phase: err.phase,
103
+ ...(typeof err.line === "number" ? { line: err.line } : {}),
104
+ retry: retried,
105
+ ptc: ptcTag,
106
+ ...(errorRef ? { ref: errorRef } : {}),
107
+ });
108
+ if (state.errors >= budgets.maxErrors) {
109
+ state.stopReason = "error-budget";
110
+ throw new PtcStopSignal("error-budget");
111
+ }
112
+ return res;
113
+ },
114
+ };
115
+ }
116
+ /** Describe an ok bridge result for the success table (inline vs handle). */
117
+ function describeOk(data) {
118
+ if (data && typeof data === "object" && data.offloaded === true) {
119
+ const o = data;
120
+ const ref = typeof o.ref === "string" ? o.ref : null;
121
+ return {
122
+ tokens: typeof o.tokens === "number" ? o.tokens : 0,
123
+ dest: ref ? `ref:${shortRefCode(ref)}` : "ref",
124
+ ref,
125
+ };
126
+ }
127
+ const text = typeof data === "string" ? data : JSON.stringify(data ?? "");
128
+ return { tokens: estimateTokens(text), dest: "inline", ref: null };
129
+ }
130
+ //# sourceMappingURL=gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate.js","sourceRoot":"","sources":["../../../src/tm/ptc/gate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
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, PtcErrorBody, PtcRunOutcome, PtcRpcAbort, PtcRpcRequest, PtcRpcResponse, PtcRunRequest, PtcStatus, PtcStepRecord, } from "./contract.js";
8
+ export { BRIDGE_ALLOW, PTC_STATUS_VALUES, PtcStopSignal, RETRYABLE_PHASES, shortRefCode, } from "./contract.js";
9
+ export type { PtcArgsResult, PtcBudgets, PtcCallerBudgets, PtcValidArgs } from "./budgets.js";
10
+ export { parsePtcArgs, PTC_LABEL_MAX, resolvePtcBudgets } 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
@@ -0,0 +1 @@
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,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,aAAa,EACb,gBAAgB,EAChB,YAAY,GACb,MAAM,eAAe,CAAA;AACtB,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC7F,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAC7E,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"}
@@ -0,0 +1,15 @@
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, PtcStopSignal, RETRYABLE_PHASES, shortRefCode, } from "./contract.js";
8
+ export { parsePtcArgs, PTC_LABEL_MAX, resolvePtcBudgets } 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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tm/ptc/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkBH,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,YAAY,GACb,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAC7E,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"}
@@ -0,0 +1,11 @@
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; behavior unchanged.
6
+ */
7
+ export declare function staticPscan(program: string): {
8
+ rejected: boolean;
9
+ tokens: string[];
10
+ };
11
+ //# sourceMappingURL=pscan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pscan.d.ts","sourceRoot":"","sources":["../../../src/tm/ptc/pscan.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAeH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAMpF"}
@@ -0,0 +1,27 @@
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; behavior unchanged.
6
+ */
7
+ /** Banned identifier tokens for the program source. */
8
+ const PSCAN_PATTERNS = [
9
+ /\brequire\b/,
10
+ /\bimport\b/,
11
+ /\bprocess\b/,
12
+ /\bglobalThis\b/,
13
+ /\bDeno\b/,
14
+ /\bBun\b/,
15
+ /\bfs\b/,
16
+ /\bnet\b/,
17
+ /\bchild_process\b/,
18
+ ];
19
+ export function staticPscan(program) {
20
+ const tokens = [];
21
+ for (const re of PSCAN_PATTERNS) {
22
+ if (re.test(program))
23
+ tokens.push(re.source.replace(/\\b/g, "").replace(/\b/g, ""));
24
+ }
25
+ return { rejected: tokens.length > 0, tokens };
26
+ }
27
+ //# sourceMappingURL=pscan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pscan.js","sourceRoot":"","sources":["../../../src/tm/ptc/pscan.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,uDAAuD;AACvD,MAAM,cAAc,GAAsB;IACxC,aAAa;IACb,YAAY;IACZ,aAAa;IACb,gBAAgB;IAChB,UAAU;IACV,SAAS;IACT,QAAQ;IACR,SAAS;IACT,mBAAmB;CACpB,CAAA;AAED,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,KAAK,MAAM,EAAE,IAAI,cAAc,EAAE,CAAC;QAChC,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAA;IACrF,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,EAAE,CAAA;AAChD,CAAC"}
@@ -0,0 +1,17 @@
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
@@ -0,0 +1 @@
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,CAmER"}
@@ -0,0 +1,112 @@
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
+ const okSteps = o.steps.filter((s) => s.ok);
29
+ const errSteps = o.steps.filter((s) => !s.ok);
30
+ lines.push(PTC_OK_SECTION);
31
+ lines.push(PTC_OK_HEADER);
32
+ if (okSteps.length > OK_ROWS_INLINE_MAX && offload) {
33
+ const table = okSteps.map(okRow).join("\n");
34
+ lines.push(`(成功 ${okSteps.length} 行,超 ${OK_ROWS_INLINE_MAX},整表卸载)`);
35
+ lines.push(offload(table, "ok"));
36
+ }
37
+ else {
38
+ for (const s of okSteps)
39
+ lines.push(okRow(s));
40
+ }
41
+ lines.push(PTC_ERR_SECTION);
42
+ lines.push(PTC_ERR_HEADER);
43
+ for (const s of errSteps)
44
+ lines.push(errRow(s));
45
+ if (o.engineError) {
46
+ lines.push(errRow({
47
+ n: 0,
48
+ tool: "tm_ptc_run",
49
+ phase: o.engineError.phase,
50
+ line: o.engineError.line,
51
+ retry: false,
52
+ message: `程序抛出:${o.engineError.message}`,
53
+ }));
54
+ }
55
+ if (errSteps.length === 0 && !o.engineError)
56
+ lines.push(" (无)");
57
+ // return value (JSON-serialized, capped; oversized → offload handle)
58
+ if (o.returned) {
59
+ const json = safeStringify(o.returnValue);
60
+ if (json.length > RETURN_VALUE_MAX && offload) {
61
+ lines.push(PTC_RETURN_PREFIX + "(超 2000 字符,卸载为句柄)");
62
+ lines.push(offload(json, "return"));
63
+ }
64
+ else {
65
+ lines.push(PTC_RETURN_PREFIX + json);
66
+ }
67
+ }
68
+ else {
69
+ lines.push(PTC_RETURN_PREFIX + "(无:程序未正常 return)");
70
+ }
71
+ // educator line: ok bridged calls whose inline results never entered the
72
+ // summary teach the model to `return` — the #1 adoption killer otherwise
73
+ if (o.returned && (o.returnValue === undefined || o.returnValue === null) && okSteps.length > 0) {
74
+ lines.push(`⚠️ 程序未 return 数据:${okSteps.length} 次成功桥接的内联结果未进入摘要(句柄类结果仍可经 tm.fetch 取回)。下次在程序末尾 return 聚合结果。`);
75
+ }
76
+ // error full-text refs (aggregate handle when many)
77
+ const refs = o.steps.filter((s) => s.errorRef).map((s) => s.errorRef);
78
+ if (refs.length === 0) {
79
+ lines.push(PTC_ERRORFULL_PREFIX + "(无错误落盘)");
80
+ }
81
+ else if (refs.length > 8 && offload) {
82
+ lines.push(PTC_ERRORFULL_PREFIX + offload(refs.join("\n"), "errrefs"));
83
+ }
84
+ else {
85
+ lines.push(PTC_ERRORFULL_PREFIX + refs.map((r) => `tm://…/${shortRefCode(r)}`).join(" "));
86
+ }
87
+ return lines.join("\n");
88
+ }
89
+ function okRow(s) {
90
+ return ` ${s.n} ${pad(s.tool, 8)}${String(s.ms)}ms ${s.tokens} ${s.dest}`;
91
+ }
92
+ function errRow(s) {
93
+ const phase = s.phase ?? "-";
94
+ const line = typeof s.line === "number" ? String(s.line) : "-";
95
+ const retry = s.retry ? "yes" : "no";
96
+ const msg = shorten(s.message ?? "", 60);
97
+ return ` ${s.n} ${pad(s.tool, 8)}${pad(phase, 11)}${pad(line, 5)}${pad(retry, 5)}${msg}`;
98
+ }
99
+ function pad(v, w) {
100
+ const s = String(v);
101
+ return s.length >= w ? s + " " : s + " ".repeat(w - s.length);
102
+ }
103
+ function safeStringify(v) {
104
+ try {
105
+ const s = JSON.stringify(v);
106
+ return s === undefined ? "null" : s;
107
+ }
108
+ catch {
109
+ return String(v);
110
+ }
111
+ }
112
+ //# sourceMappingURL=summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.js","sourceRoot":"","sources":["../../../src/tm/ptc/summary.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * tm_ptc_run — the bridge over the real governed pipelines + the tool
3
+ * definition. Governance is REUSED, never forked (D6 lock): every bridged
4
+ * call runs the full tm_* pipeline (P2 path scope, P3 allowlist, R6,
5
+ * threshold offload + handles, TTL). PTC is NOT a bypass layer.
6
+ * Split out of the former monolithic ptc.ts; behavior unchanged.
7
+ */
8
+ import type { ToolDefinition } from "../../types.js";
9
+ import { type TmConfig } from "../config.js";
10
+ import type { RunStore } from "../store.js";
11
+ import type { TmPipelines } from "../pipelines.js";
12
+ import type { PtcBridge, PtcEngine } from "./contract.js";
13
+ /**
14
+ * Real bridge: delegate each call to the corresponding exported pipeline,
15
+ * `ctx` passed through untouched, and normalize the pipeline's `unknown`
16
+ * result into `PtcCallResult` (TmErrorBody -> ok:false; anything else -> the
17
+ * already-governed data). Governance is entirely the pipelines'.
18
+ */
19
+ export declare function pipelineBridge(pipelines: TmPipelines, ctx: unknown): PtcBridge;
20
+ /** Build the tm_ptc_run ToolDefinition. Registered in the tool segment
21
+ * when the agent's whitelist grants tm_ptc_run (M3). `deps.args` is the
22
+ * ZodRawShape from tools.buildPtcArgsSchema() when zod is available — the
23
+ * descriptor fallback below keeps the tool usable without zod. */
24
+ export declare function buildPtcRunTool(deps: {
25
+ cfg: TmConfig;
26
+ store: RunStore;
27
+ nextStepId: () => string;
28
+ ctx: unknown;
29
+ accessToken: string;
30
+ args?: Record<string, unknown>;
31
+ engine?: PtcEngine;
32
+ pipelines?: TmPipelines;
33
+ bridge?: PtcBridge;
34
+ }): ToolDefinition;
35
+ //# sourceMappingURL=tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../../src/tm/ptc/tool.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,gBAAgB,CAAA;AAChE,OAAO,EAA0C,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAA;AAGpF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,KAAK,EAAc,SAAS,EAAiB,SAAS,EAAgB,MAAM,eAAe,CAAA;AAUlG;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,GAAG,SAAS,CAqB9E;AAaD;;;mEAGmE;AACnE,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,GAAG,EAAE,QAAQ,CAAA;IACb,KAAK,EAAE,QAAQ,CAAA;IACf,UAAU,EAAE,MAAM,MAAM,CAAA;IACxB,GAAG,EAAE,OAAO,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,SAAS,CAAC,EAAE,WAAW,CAAA;IACvB,MAAM,CAAC,EAAE,SAAS,CAAA;CACnB,GAAG,cAAc,CA+EjB"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * tm_ptc_run — the bridge over the real governed pipelines + the tool
3
+ * definition. Governance is REUSED, never forked (D6 lock): every bridged
4
+ * call runs the full tm_* pipeline (P2 path scope, P3 allowlist, R6,
5
+ * threshold offload + handles, TTL). PTC is NOT a bypass layer.
6
+ * Split out of the former monolithic ptc.ts; behavior unchanged.
7
+ */
8
+ import { estimateTokens, shouldOffload, shorten } from "../config.js";
9
+ import { detectContentType } from "../preview.js";
10
+ import { tmError } from "../result.js";
11
+ import { BRIDGE_ALLOW } from "./contract.js";
12
+ import { parsePtcArgs } from "./budgets.js";
13
+ import { staticPscan } from "./pscan.js";
14
+ import { runPtc } from "./driver.js";
15
+ import { renderPtcSummary } from "./summary.js";
16
+ // ---------- bridge over the real governed pipelines --------------------------
17
+ /**
18
+ * Real bridge: delegate each call to the corresponding exported pipeline,
19
+ * `ctx` passed through untouched, and normalize the pipeline's `unknown`
20
+ * result into `PtcCallResult` (TmErrorBody -> ok:false; anything else -> the
21
+ * already-governed data). Governance is entirely the pipelines'.
22
+ */
23
+ export function pipelineBridge(pipelines, ctx) {
24
+ const pick = (tool) => tool === "tm_read"
25
+ ? pipelines.tmRead
26
+ : tool === "tm_grep"
27
+ ? pipelines.tmGrep
28
+ : tool === "tm_bash"
29
+ ? pipelines.tmBash
30
+ : pipelines.tmFetch;
31
+ return {
32
+ async call(tool, args) {
33
+ if (!BRIDGE_ALLOW.includes(tool)) {
34
+ return { ok: false, error: tmError(tool, "args", "工具不在桥接白名单内").error };
35
+ }
36
+ const res = await pick(tool)(args ?? {}, ctx);
37
+ if (res && typeof res === "object" && "error" in res) {
38
+ return { ok: false, error: res.error };
39
+ }
40
+ return { ok: true, data: res };
41
+ },
42
+ };
43
+ }
44
+ // ---------- the tool definition ----------------------------------------------
45
+ const PTC_RUN_DESCRIPTION = `Batch orchestration: ONE async program makes N governed tm_* calls with ZERO LLM round-trips — use it INSTEAD of chaining ≥3 tm_read / tm_grep / tm_bash calls toward the same goal (multi-file recon, bulk grep+read aggregation, cross-referencing search results). Only a char-pinned aggregation summary returns to context, so ALWAYS \`return\` the aggregated value at the end of the program: unreturned inline results are discarded (offload handles stay retrievable via tm.fetch).
46
+
47
+ - Example: \`const out = []; for (const p of ["a.ts", "b.ts", "c.ts"]) { const f = await tm.read({ path: p }); if (f.ok) out.push({ p, head: String(f.data).slice(0, 400) }); } return out;\`
48
+ - program: an async function body. Available: \`tm.read(args)\`, \`tm.grep(args)\`, \`tm.bash(args)\`, \`tm.fetch(args)\` — same args as the tm_* four. Each returns \`{ok:true, data}\` (data is already governed: inline text, or an offload handle you can tm.fetch again) or \`{ok:false, error:{tool,phase,line?,message}}\`. \`return\` a value; it is JSON-serialized into the summary (capped 2000 chars, oversized → handle).
49
+ - budgets (optional, tighten-only; clamped to TM_PTC_* ceilings): max_calls, max_errors, timeout_ms. Hitting any budget stops the whole run (produced output is NOT lost). Errors are retried at most once and only on idempotent phases (client/execute/store).
50
+ - Governance is NOT bypassed: every bridged call runs the full tm_* pipeline (P2 path scope, P3 allowlist, R6, threshold offload + handles, TTL). Status is one of ok | stopped-error-budget | stopped-call-budget | timeout | engine-error.
51
+ - Programs containing require/import/process/globalThis/Deno/Bun/fs/net/child_process are rejected before execution (static pre-scan, auxiliary guard).
52
+ - Engine: TM_PTC_ENGINE=auto|worker|inline (auto tries worker first; on engine failure it re-runs the WHOLE program on inline with a degraded-engine mark — bridged calls are read-only, so a re-run is safe, and the fallback starts with fresh budgets under the same wall-clock deadline).`;
53
+ /** Build the tm_ptc_run ToolDefinition. Registered in the tool segment
54
+ * when the agent's whitelist grants tm_ptc_run (M3). `deps.args` is the
55
+ * ZodRawShape from tools.buildPtcArgsSchema() when zod is available — the
56
+ * descriptor fallback below keeps the tool usable without zod. */
57
+ export function buildPtcRunTool(deps) {
58
+ const { cfg, store, nextStepId, ctx, accessToken } = deps;
59
+ const baseBridge = deps.bridge ?? (deps.pipelines ? pipelineBridge(deps.pipelines, ctx) : undefined);
60
+ const expireAt = () => Date.now() + cfg.blackboardTtlDays * 24 * 60 * 60 * 1000;
61
+ return {
62
+ description: PTC_RUN_DESCRIPTION,
63
+ args: deps.args ?? {
64
+ program: { descriptor: "program: string (required, async fn body, ≤TM_PTC_MAX_PROGRAM_CHARS)" },
65
+ label: { descriptor: "label: string (optional, ≤80 chars)" },
66
+ budgets: { descriptor: "budgets: { max_calls?, max_errors?, timeout_ms? } (optional, tighten-only)" },
67
+ },
68
+ execute: async (rawArgs) => {
69
+ const parsed = parsePtcArgs(rawArgs ?? {}, cfg);
70
+ if (!parsed.ok) {
71
+ return { output: `[${parsed.error.error.tool} 失败 · phase=${parsed.error.error.phase}]\n${parsed.error.error.message}` };
72
+ }
73
+ // static pre-scan — reject programs with banned tokens before any
74
+ // engine runs.
75
+ const pscan = staticPscan(parsed.args.program);
76
+ if (pscan.rejected) {
77
+ return {
78
+ output: `[tm_ptc_run 失败 · phase=args]\n程序包含禁止标识符(${pscan.tokens.join(", ")}),已拒绝执行。PTC 桥接仅暴露 tm.read/tm.grep/tm.bash/tm.fetch;require/import/process 等不在桥接白名单内。`,
79
+ };
80
+ }
81
+ if (!baseBridge) {
82
+ return {
83
+ output: "[tm_ptc_run 失败 · phase=client]\n桥接管线未提供。",
84
+ };
85
+ }
86
+ // Generate a fresh parent step ID per call.
87
+ const parentStepId = nextStepId();
88
+ // Per-call offload helper: persist `text` under a PTC sub-step and
89
+ // render a handle block matching the four tools' visible shape.
90
+ const offloadBlock = (text, kind) => {
91
+ const tokens = estimateTokens(text);
92
+ try {
93
+ const stored = store.writeResult(`${parentStepId}.${kind}`, {
94
+ tool: "tm_ptc_run",
95
+ content: text,
96
+ tokens,
97
+ contentType: detectContentType(text),
98
+ preview: shorten(text, 120),
99
+ expireAt: expireAt(),
100
+ });
101
+ return [
102
+ `ref: ${stored.ref}`,
103
+ `access_token: ${accessToken}`,
104
+ `expire_at: ${stored.expireAt}`,
105
+ `tokens: ${tokens}`,
106
+ `(用 tm_fetch(ref, access_token) 取回;大载荷先试 mode:"structure")`,
107
+ ].join("\n");
108
+ }
109
+ catch {
110
+ return text.slice(0, 2000);
111
+ }
112
+ };
113
+ const outcome = await runPtc({
114
+ program: parsed.args.program,
115
+ label: parsed.args.label,
116
+ budgets: parsed.args.budgets,
117
+ parentStepId,
118
+ cfg,
119
+ store,
120
+ bridge: baseBridge,
121
+ ...(deps.engine ? { engine: deps.engine } : {}),
122
+ });
123
+ const content = renderPtcSummary(outcome, offloadBlock);
124
+ // whole-summary offload if it still exceeds the threshold.
125
+ if (shouldOffload(estimateTokens(content), cfg.offloadThreshold)) {
126
+ return {
127
+ output: `PTC 摘要过大(≈${estimateTokens(content)} tokens),已整体卸载为句柄,短摘要随后:\n` +
128
+ offloadBlock(content, "rpt") +
129
+ `\n--- 摘要前 1200 字符 ---\n${content.slice(0, 1200)}`,
130
+ };
131
+ }
132
+ return { output: content };
133
+ },
134
+ };
135
+ }
136
+ //# sourceMappingURL=tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/tm/ptc/tool.ts"],"names":[],"mappings":"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"}