@te-river/opencode-team-mode 1.7.1 → 1.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1009 -849
- package/README.zh-CN.md +906 -756
- package/dist/host/v2-browser-gate.d.ts +4 -1
- package/dist/host/v2-browser-gate.d.ts.map +1 -1
- package/dist/host/v2-browser-gate.js +1 -1
- package/dist/host/v2-browser-gate.js.map +1 -1
- package/dist/host/v2-capabilities.js +1 -1
- package/dist/host/v2-capabilities.js.map +1 -1
- package/dist/host/v2-guard.d.ts +3 -1
- package/dist/host/v2-guard.d.ts.map +1 -1
- package/dist/host/v2-guard.js +2 -2
- package/dist/host/v2-guard.js.map +1 -1
- package/dist/host/v2-offload.d.ts +12 -2
- package/dist/host/v2-offload.d.ts.map +1 -1
- package/dist/host/v2-offload.js +9 -9
- package/dist/host/v2-offload.js.map +1 -1
- package/dist/host/v2-probe-chain.d.ts +5 -1
- package/dist/host/v2-probe-chain.d.ts.map +1 -1
- package/dist/host/v2-probe-chain.js +4 -6
- package/dist/host/v2-probe-chain.js.map +1 -1
- package/dist/host/v2-probe.d.ts.map +1 -1
- package/dist/host/v2-probe.js +2 -1
- package/dist/host/v2-probe.js.map +1 -1
- package/dist/host/v2-prune.d.ts +5 -1
- package/dist/host/v2-prune.d.ts.map +1 -1
- package/dist/host/v2-prune.js +8 -14
- package/dist/host/v2-prune.js.map +1 -1
- package/dist/host/v2-retry.d.ts +9 -2
- package/dist/host/v2-retry.d.ts.map +1 -1
- package/dist/host/v2-retry.js +13 -15
- package/dist/host/v2-retry.js.map +1 -1
- package/dist/host/v2-session.d.ts +6 -2
- package/dist/host/v2-session.d.ts.map +1 -1
- package/dist/host/v2-session.js +7 -13
- package/dist/host/v2-session.js.map +1 -1
- package/dist/host/v2.d.ts +7 -2
- package/dist/host/v2.d.ts.map +1 -1
- package/dist/host/v2.js +38 -35
- package/dist/host/v2.js.map +1 -1
- package/dist/prompts/lead.d.ts +1 -1
- package/dist/prompts/lead.d.ts.map +1 -1
- package/dist/prompts/lead.js +23 -7
- package/dist/prompts/lead.js.map +1 -1
- package/dist/prompts/specialists.d.ts +1 -1
- package/dist/prompts/specialists.d.ts.map +1 -1
- package/dist/prompts/specialists.js +1 -1
- package/dist/tm/args-schema.d.ts +1 -1
- package/dist/tm/args-schema.js +6 -6
- package/dist/tm/args-schema.js.map +1 -1
- package/dist/tm/board.js +2 -2
- package/dist/tm/board.js.map +1 -1
- package/dist/tm/config-files.d.ts +41 -17
- package/dist/tm/config-files.d.ts.map +1 -1
- package/dist/tm/config-files.js +68 -73
- package/dist/tm/config-files.js.map +1 -1
- package/dist/tm/config-layers.d.ts +65 -33
- package/dist/tm/config-layers.d.ts.map +1 -1
- package/dist/tm/config-layers.js +165 -81
- package/dist/tm/config-layers.js.map +1 -1
- package/dist/tm/config-template.d.ts +32 -0
- package/dist/tm/config-template.d.ts.map +1 -0
- package/dist/tm/config-template.js +74 -0
- package/dist/tm/config-template.js.map +1 -0
- package/dist/tm/config.d.ts +115 -140
- package/dist/tm/config.d.ts.map +1 -1
- package/dist/tm/config.js +100 -200
- package/dist/tm/config.js.map +1 -1
- package/dist/tm/index.d.ts +11 -3
- package/dist/tm/index.d.ts.map +1 -1
- package/dist/tm/index.js +46 -16
- package/dist/tm/index.js.map +1 -1
- package/dist/tm/ledger.d.ts +7 -3
- package/dist/tm/ledger.d.ts.map +1 -1
- package/dist/tm/ledger.js +5 -4
- package/dist/tm/ledger.js.map +1 -1
- package/dist/tm/memory.js +3 -3
- package/dist/tm/pipelines.js +1 -1
- package/dist/tm/search.js +6 -6
- package/dist/tm/search.js.map +1 -1
- package/dist/tm/stats.js +2 -2
- package/dist/tm/stats.js.map +1 -1
- package/dist/tm/tools.js +2 -2
- package/dist/tm/webfetch.d.ts +5 -2
- package/dist/tm/webfetch.d.ts.map +1 -1
- package/dist/tm/webfetch.js +24 -18
- package/dist/tm/webfetch.js.map +1 -1
- package/docs/installation-v2.md +61 -38
- package/docs/installation.md +4 -4
- package/docs/v2-port-notes.md +31 -0
- package/package.json +1 -1
- package/scripts/gen-v2-config.mjs +40 -4
- package/dist/approval-gate.d.ts +0 -205
- package/dist/approval-gate.d.ts.map +0 -1
- package/dist/approval-gate.js +0 -627
- package/dist/approval-gate.js.map +0 -1
- package/dist/host/v1.d.ts +0 -14
- package/dist/host/v1.d.ts.map +0 -1
- package/dist/host/v1.js +0 -340
- package/dist/host/v1.js.map +0 -1
- package/dist/host/v2-client.d.ts +0 -53
- package/dist/host/v2-client.d.ts.map +0 -1
- package/dist/host/v2-client.js +0 -193
- package/dist/host/v2-client.js.map +0 -1
- package/dist/host/v2-transcript.d.ts +0 -73
- package/dist/host/v2-transcript.d.ts.map +0 -1
- package/dist/host/v2-transcript.js +0 -151
- package/dist/host/v2-transcript.js.map +0 -1
- package/dist/host-hooks.d.ts +0 -126
- package/dist/host-hooks.d.ts.map +0 -1
- package/dist/host-hooks.js +0 -284
- package/dist/host-hooks.js.map +0 -1
- package/dist/tm/bash-timeout.d.ts +0 -72
- package/dist/tm/bash-timeout.d.ts.map +0 -1
- package/dist/tm/bash-timeout.js +0 -100
- package/dist/tm/bash-timeout.js.map +0 -1
- package/dist/tm/browser.d.ts +0 -642
- package/dist/tm/browser.d.ts.map +0 -1
- package/dist/tm/browser.js +0 -2836
- package/dist/tm/browser.js.map +0 -1
- package/dist/tm/ptc/budgets.d.ts +0 -59
- package/dist/tm/ptc/budgets.d.ts.map +0 -1
- package/dist/tm/ptc/budgets.js +0 -138
- package/dist/tm/ptc/budgets.js.map +0 -1
- package/dist/tm/ptc/contract.d.ts +0 -171
- package/dist/tm/ptc/contract.d.ts.map +0 -1
- package/dist/tm/ptc/contract.js +0 -85
- package/dist/tm/ptc/contract.js.map +0 -1
- package/dist/tm/ptc/driver.d.ts +0 -40
- package/dist/tm/ptc/driver.d.ts.map +0 -1
- package/dist/tm/ptc/driver.js +0 -213
- package/dist/tm/ptc/driver.js.map +0 -1
- package/dist/tm/ptc/engines.d.ts +0 -43
- package/dist/tm/ptc/engines.d.ts.map +0 -1
- package/dist/tm/ptc/engines.js +0 -454
- package/dist/tm/ptc/engines.js.map +0 -1
- package/dist/tm/ptc/gate.d.ts +0 -28
- package/dist/tm/ptc/gate.d.ts.map +0 -1
- package/dist/tm/ptc/gate.js +0 -130
- package/dist/tm/ptc/gate.js.map +0 -1
- package/dist/tm/ptc/index.d.ts +0 -19
- package/dist/tm/ptc/index.d.ts.map +0 -1
- package/dist/tm/ptc/index.js +0 -15
- package/dist/tm/ptc/index.js.map +0 -1
- package/dist/tm/ptc/pscan.d.ts +0 -30
- package/dist/tm/ptc/pscan.d.ts.map +0 -1
- package/dist/tm/ptc/pscan.js +0 -341
- package/dist/tm/ptc/pscan.js.map +0 -1
- package/dist/tm/ptc/summary.d.ts +0 -17
- package/dist/tm/ptc/summary.d.ts.map +0 -1
- package/dist/tm/ptc/summary.js +0 -134
- package/dist/tm/ptc/summary.js.map +0 -1
- package/dist/tm/ptc/tool.d.ts +0 -66
- package/dist/tm/ptc/tool.d.ts.map +0 -1
- package/dist/tm/ptc/tool.js +0 -231
- package/dist/tm/ptc/tool.js.map +0 -1
- package/dist/tm/ptc.d.ts +0 -298
- package/dist/tm/ptc.d.ts.map +0 -1
- package/dist/tm/ptc.js +0 -865
- package/dist/tm/ptc.js.map +0 -1
- package/dist/tm/pty.d.ts +0 -70
- package/dist/tm/pty.d.ts.map +0 -1
- package/dist/tm/pty.js +0 -245
- package/dist/tm/pty.js.map +0 -1
- package/dist/tool-coerce.d.ts +0 -24
- package/dist/tool-coerce.d.ts.map +0 -1
- package/dist/tool-coerce.js +0 -63
- package/dist/tool-coerce.js.map +0 -1
package/dist/tm/ptc/index.d.ts
DELETED
|
@@ -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"}
|
package/dist/tm/ptc/index.js
DELETED
|
@@ -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
|
package/dist/tm/ptc/index.js.map
DELETED
|
@@ -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"}
|
package/dist/tm/ptc/pscan.d.ts
DELETED
|
@@ -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"}
|
package/dist/tm/ptc/pscan.js
DELETED
|
@@ -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
|
package/dist/tm/ptc/pscan.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pscan.js","sourceRoot":"","sources":["../../../src/tm/ptc/pscan.ts"],"names":[],"mappings":"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"}
|
package/dist/tm/ptc/summary.d.ts
DELETED
|
@@ -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"}
|
package/dist/tm/ptc/summary.js
DELETED
|
@@ -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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"}
|