@te-river/opencode-team-mode 1.5.4 → 1.5.6
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 +732 -634
- package/README.zh-CN.md +655 -576
- package/dist/agents.d.ts +6 -1
- package/dist/agents.d.ts.map +1 -1
- package/dist/agents.js +103 -522
- package/dist/agents.js.map +1 -1
- package/dist/approval-gate.d.ts +16 -0
- package/dist/approval-gate.d.ts.map +1 -1
- package/dist/approval-gate.js +8 -1
- package/dist/approval-gate.js.map +1 -1
- package/dist/blackboard.d.ts.map +1 -1
- package/dist/blackboard.js +3 -2
- package/dist/blackboard.js.map +1 -1
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +7 -6
- package/dist/commands.js.map +1 -1
- package/dist/envprotect/bash-classify.d.ts +42 -0
- package/dist/envprotect/bash-classify.d.ts.map +1 -0
- package/dist/envprotect/bash-classify.js +221 -0
- package/dist/envprotect/bash-classify.js.map +1 -0
- package/dist/envprotect/gate-predicates.d.ts +57 -0
- package/dist/envprotect/gate-predicates.d.ts.map +1 -0
- package/dist/envprotect/gate-predicates.js +174 -0
- package/dist/envprotect/gate-predicates.js.map +1 -0
- package/dist/envprotect/hook.d.ts +45 -0
- package/dist/envprotect/hook.d.ts.map +1 -0
- package/dist/envprotect/hook.js +158 -0
- package/dist/envprotect/hook.js.map +1 -0
- package/dist/envprotect/path-classify.d.ts +16 -0
- package/dist/envprotect/path-classify.d.ts.map +1 -0
- package/dist/envprotect/path-classify.js +72 -0
- package/dist/envprotect/path-classify.js.map +1 -0
- package/dist/envprotect/patterns.d.ts +77 -0
- package/dist/envprotect/patterns.d.ts.map +1 -0
- package/dist/envprotect/patterns.js +182 -0
- package/dist/envprotect/patterns.js.map +1 -0
- package/dist/envprotect.d.ts +19 -217
- package/dist/envprotect.d.ts.map +1 -1
- package/dist/envprotect.js +18 -803
- package/dist/envprotect.js.map +1 -1
- package/dist/fs-safe.d.ts +16 -0
- package/dist/fs-safe.d.ts.map +1 -0
- package/dist/fs-safe.js +56 -0
- package/dist/fs-safe.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -6
- package/dist/index.js.map +1 -1
- package/dist/prompts/lead.d.ts +7 -0
- package/dist/prompts/lead.d.ts.map +1 -0
- package/dist/prompts/lead.js +230 -0
- package/dist/prompts/lead.js.map +1 -0
- package/dist/prompts/shared.d.ts +8 -0
- package/dist/prompts/shared.d.ts.map +1 -0
- package/dist/prompts/shared.js +118 -0
- package/dist/prompts/shared.js.map +1 -0
- package/dist/prompts/specialists.d.ts +12 -0
- package/dist/prompts/specialists.d.ts.map +1 -0
- package/dist/prompts/specialists.js +218 -0
- package/dist/prompts/specialists.js.map +1 -0
- package/dist/shell-text.d.ts +14 -0
- package/dist/shell-text.d.ts.map +1 -0
- package/dist/shell-text.js +16 -0
- package/dist/shell-text.js.map +1 -0
- package/dist/tm/args-schema.d.ts +36 -0
- package/dist/tm/args-schema.d.ts.map +1 -0
- package/dist/tm/args-schema.js +191 -0
- package/dist/tm/args-schema.js.map +1 -0
- package/dist/tm/browser.d.ts +52 -0
- package/dist/tm/browser.d.ts.map +1 -0
- package/dist/tm/browser.js +361 -0
- package/dist/tm/browser.js.map +1 -0
- package/dist/tm/client-unwrap.d.ts +38 -0
- package/dist/tm/client-unwrap.d.ts.map +1 -0
- package/dist/tm/client-unwrap.js +113 -0
- package/dist/tm/client-unwrap.js.map +1 -0
- package/dist/tm/config.d.ts +46 -18
- package/dist/tm/config.d.ts.map +1 -1
- package/dist/tm/config.js +60 -17
- package/dist/tm/config.js.map +1 -1
- package/dist/tm/guard.d.ts.map +1 -1
- package/dist/tm/guard.js +4 -7
- package/dist/tm/guard.js.map +1 -1
- package/dist/tm/index.d.ts +15 -5
- package/dist/tm/index.d.ts.map +1 -1
- package/dist/tm/index.js +95 -19
- package/dist/tm/index.js.map +1 -1
- package/dist/tm/memory.d.ts +82 -0
- package/dist/tm/memory.d.ts.map +1 -0
- package/dist/tm/memory.js +350 -0
- package/dist/tm/memory.js.map +1 -0
- package/dist/tm/pipelines.d.ts +58 -0
- package/dist/tm/pipelines.d.ts.map +1 -0
- package/dist/tm/pipelines.js +301 -0
- package/dist/tm/pipelines.js.map +1 -0
- package/dist/tm/preview.d.ts +6 -1
- package/dist/tm/preview.d.ts.map +1 -1
- package/dist/tm/preview.js +31 -8
- package/dist/tm/preview.js.map +1 -1
- package/dist/tm/ptc/budgets.d.ts +38 -0
- package/dist/tm/ptc/budgets.d.ts.map +1 -0
- package/dist/tm/ptc/budgets.js +59 -0
- package/dist/tm/ptc/budgets.js.map +1 -0
- package/dist/tm/ptc/contract.d.ts +131 -0
- package/dist/tm/ptc/contract.d.ts.map +1 -0
- package/dist/tm/ptc/contract.js +47 -0
- package/dist/tm/ptc/contract.js.map +1 -0
- package/dist/tm/ptc/driver.d.ts +37 -0
- package/dist/tm/ptc/driver.d.ts.map +1 -0
- package/dist/tm/ptc/driver.js +181 -0
- package/dist/tm/ptc/driver.js.map +1 -0
- package/dist/tm/ptc/engines.d.ts +32 -0
- package/dist/tm/ptc/engines.d.ts.map +1 -0
- package/dist/tm/ptc/engines.js +201 -0
- package/dist/tm/ptc/engines.js.map +1 -0
- package/dist/tm/ptc/gate.d.ts +28 -0
- package/dist/tm/ptc/gate.d.ts.map +1 -0
- package/dist/tm/ptc/gate.js +127 -0
- package/dist/tm/ptc/gate.js.map +1 -0
- package/dist/tm/ptc/index.d.ts +19 -0
- package/dist/tm/ptc/index.d.ts.map +1 -0
- package/dist/tm/ptc/index.js +15 -0
- package/dist/tm/ptc/index.js.map +1 -0
- package/dist/tm/ptc/pscan.d.ts +11 -0
- package/dist/tm/ptc/pscan.d.ts.map +1 -0
- package/dist/tm/ptc/pscan.js +27 -0
- package/dist/tm/ptc/pscan.js.map +1 -0
- package/dist/tm/ptc/summary.d.ts +17 -0
- package/dist/tm/ptc/summary.d.ts.map +1 -0
- package/dist/tm/ptc/summary.js +107 -0
- package/dist/tm/ptc/summary.js.map +1 -0
- package/dist/tm/ptc/tool.d.ts +35 -0
- package/dist/tm/ptc/tool.d.ts.map +1 -0
- package/dist/tm/ptc/tool.js +135 -0
- package/dist/tm/ptc/tool.js.map +1 -0
- package/dist/tm/ptc.d.ts +45 -26
- package/dist/tm/ptc.d.ts.map +1 -1
- package/dist/tm/ptc.js +71 -45
- package/dist/tm/ptc.js.map +1 -1
- package/dist/tm/result.d.ts +34 -0
- package/dist/tm/result.d.ts.map +1 -0
- package/dist/tm/result.js +87 -0
- package/dist/tm/result.js.map +1 -0
- package/dist/tm/shell-bridge.d.ts +22 -0
- package/dist/tm/shell-bridge.d.ts.map +1 -0
- package/dist/tm/shell-bridge.js +70 -0
- package/dist/tm/shell-bridge.js.map +1 -0
- package/dist/tm/store.d.ts.map +1 -1
- package/dist/tm/store.js +2 -1
- package/dist/tm/store.js.map +1 -1
- package/dist/tm/tools.d.ts +13 -71
- package/dist/tm/tools.d.ts.map +1 -1
- package/dist/tm/tools.js +23 -656
- package/dist/tm/tools.js.map +1 -1
- package/dist/tm/webfetch.d.ts +94 -0
- package/dist/tm/webfetch.d.ts.map +1 -0
- package/dist/tm/webfetch.js +225 -0
- package/dist/tm/webfetch.js.map +1 -0
- package/package.json +2 -2
package/dist/tm/config.d.ts
CHANGED
|
@@ -6,20 +6,29 @@
|
|
|
6
6
|
* (same fail-soft philosophy as blackboard.resolveTtlMs and
|
|
7
7
|
* envprotect.resolveEnvProtectMode).
|
|
8
8
|
*
|
|
9
|
-
* Token 口径 (estimate basis):
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
9
|
+
* Token 口径 (estimate basis): CJK-range code points ≈ one token each,
|
|
10
|
+
* everything else tokens ≈ chars/4, ceil. Pure chars/4 under-counted CJK
|
|
11
|
+
* up to 4× — the LESS-governed direction for CJK-heavy payloads — so CJK
|
|
12
|
+
* now counts as a full token (offload earlier, the safe direction). Two
|
|
13
|
+
* design choices keep the estimate honest: the conservative boundary
|
|
14
|
+
* (estimate == threshold still offloads) and the hard preview cap. This
|
|
15
|
+
* 口径 is pinned by test-tm-tools.mjs.
|
|
15
16
|
*
|
|
16
|
-
* Naming note: TM_BLACKBOARD_DIR (this module, run-payload store
|
|
17
|
-
*
|
|
18
|
-
* team blackboard in blackboard.ts (`.git/opencode-team/`,
|
|
19
|
-
* They share a philosophy (TTL sweeper is the sole
|
|
17
|
+
* Naming note: TM_BLACKBOARD_DIR (this module, run-payload store, default
|
|
18
|
+
* AUTO = `<repo>/.git/opencode-team/blackboard`) is a DIFFERENT artifact
|
|
19
|
+
* from the team blackboard in blackboard.ts (`.git/opencode-team/`,
|
|
20
|
+
* plugin options). They share a root philosophy (TTL sweeper is the sole
|
|
21
|
+
* cleanup path), not code.
|
|
20
22
|
*/
|
|
21
23
|
/** Default tm_bash read-only allowlist (P3, command-level). */
|
|
22
24
|
export declare const DEFAULT_BASH_READONLY_ALLOWED: readonly string[];
|
|
25
|
+
/**
|
|
26
|
+
* Seeded tm_webfetch domain allowlist — the four lookup hosts the design
|
|
27
|
+
* names (wiki term / bilibili search / bing / baidu). Subdomains of an
|
|
28
|
+
* entry are included; TM_WEBFETCH_ALLOWED_DOMAINS overrides the list
|
|
29
|
+
* (comma/semicolon separated; a lone "*" opens every host).
|
|
30
|
+
*/
|
|
31
|
+
export declare const DEFAULT_WEBFETCH_DOMAINS: readonly string[];
|
|
23
32
|
export interface TmConfig {
|
|
24
33
|
/** Offload boundary in estimated tokens (estimate == threshold offloads). */
|
|
25
34
|
offloadThreshold: number;
|
|
@@ -29,14 +38,18 @@ export interface TmConfig {
|
|
|
29
38
|
previewMaxTokens: number;
|
|
30
39
|
/** Single tm_fetch segment cap in lines. */
|
|
31
40
|
fetchMaxLines: number;
|
|
32
|
-
/** Run-payload store dir
|
|
41
|
+
/** Run-payload store dir. Empty = AUTO (<repo>/.git/opencode-team/blackboard,
|
|
42
|
+
* tmpdir fallback); explicit value = absolute, or relative to project root. */
|
|
33
43
|
blackboardDir: string;
|
|
34
|
-
/** Trajectory store dir
|
|
44
|
+
/** Trajectory store dir. Empty = AUTO (<repo>/.git/opencode-team/trajectory,
|
|
45
|
+
* tmpdir fallback); explicit value = absolute, or relative to project root. */
|
|
35
46
|
trajectoryDir: string;
|
|
36
47
|
/** Handle TTL in days (expire_at + physical sweep of expired run dirs). */
|
|
37
48
|
blackboardTtlDays: number;
|
|
38
49
|
/** P3 read-only command allowlist for tm_bash. */
|
|
39
50
|
bashReadonlyAllowed: string[];
|
|
51
|
+
/** tm_webfetch domain allowlist (subdomains included; "*" = any host). */
|
|
52
|
+
webfetchAllowedDomains: string[];
|
|
40
53
|
/** Hard cap on a PTC program source string length (chars). */
|
|
41
54
|
ptcMaxProgramChars: number;
|
|
42
55
|
/** Ceiling for per-run bridge-call budget (callers may only tighten). */
|
|
@@ -53,8 +66,8 @@ export declare const TM_CONFIG_DEFAULTS: {
|
|
|
53
66
|
readonly previewLines: 20;
|
|
54
67
|
readonly previewMaxTokens: 80;
|
|
55
68
|
readonly fetchMaxLines: 2000;
|
|
56
|
-
readonly blackboardDir: "
|
|
57
|
-
readonly trajectoryDir: "
|
|
69
|
+
readonly blackboardDir: "";
|
|
70
|
+
readonly trajectoryDir: "";
|
|
58
71
|
readonly blackboardTtlDays: 7;
|
|
59
72
|
readonly ptcMaxProgramChars: 4000;
|
|
60
73
|
readonly ptcMaxCalls: 20;
|
|
@@ -83,15 +96,30 @@ export declare const PTC_BUDGET_BOUNDS: {
|
|
|
83
96
|
};
|
|
84
97
|
type EnvLike = Record<string, string | undefined>;
|
|
85
98
|
/**
|
|
86
|
-
* Parse
|
|
87
|
-
* default
|
|
88
|
-
* an explicit user choice is respected
|
|
99
|
+
* Parse a comma/semicolon-separated allowlist env var. Unset/absent -> null
|
|
100
|
+
* (caller applies the default). An explicitly EMPTY string parses to []
|
|
101
|
+
* (deny-all) — an explicit user choice is respected. Shared by
|
|
102
|
+
* TM_BASH_READONLY_ALLOWED and TM_WEBFETCH_ALLOWED_DOMAINS.
|
|
89
103
|
*/
|
|
90
104
|
export declare function parseAllowlistEnv(raw: unknown): string[] | null;
|
|
105
|
+
/** Historical alias — identical grammar to parseAllowlistEnv. */
|
|
106
|
+
export declare const parseWebfetchAllowlistEnv: typeof parseAllowlistEnv;
|
|
91
107
|
/** Resolve the full tm-tools config from an env-like record (default: process.env). */
|
|
92
108
|
export declare function resolveTmConfig(env?: EnvLike): TmConfig;
|
|
109
|
+
/** Token cost of ONE code point — CJK-range ≈ 1 token (kana / Hangul /
|
|
110
|
+
* fullwidth / CJK punctuation all sit above U+2E80), everything else ≈ 0.25
|
|
111
|
+
* (chars/4). Shared by estimateTokens and preview.capTokens so the two
|
|
112
|
+
* can never drift apart (a chars/4 cap would under-count CJK bodies 4×). */
|
|
113
|
+
export declare function tokenCostOf(cp: number): number;
|
|
93
114
|
/**
|
|
94
|
-
* Token estimate —
|
|
115
|
+
* Token estimate — CJK-aware: CJK-range code points count ≈ one token each,
|
|
116
|
+
* everything else chars/4, ceil. The pure chars/4 basis under-counted CJK
|
|
117
|
+
* up to 4× (one CJK char ≈ one token), which let CJK-heavy payloads ride
|
|
118
|
+
* inline PAST the threshold — a mis-estimate in the LESS-governed
|
|
119
|
+
* direction. Counting CJK as a full token errs the other way (offload
|
|
120
|
+
* earlier), the safe direction for context size. The conservative
|
|
121
|
+
* boundary (estimate == threshold still offloads) is unchanged. Empty
|
|
122
|
+
* input = 0.
|
|
95
123
|
*/
|
|
96
124
|
export declare function estimateTokens(text: string): number;
|
|
97
125
|
/**
|
package/dist/tm/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/tm/config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/tm/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,+DAA+D;AAC/D,eAAO,MAAM,6BAA6B,EAAE,SAAS,MAAM,EAI1D,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,EAAE,SAAS,MAAM,EAKrD,CAAA;AAED,MAAM,WAAW,QAAQ;IACvB,6EAA6E;IAC7E,gBAAgB,EAAE,MAAM,CAAA;IACxB,+DAA+D;IAC/D,YAAY,EAAE,MAAM,CAAA;IACpB,gFAAgF;IAChF,gBAAgB,EAAE,MAAM,CAAA;IACxB,4CAA4C;IAC5C,aAAa,EAAE,MAAM,CAAA;IACrB;oFACgF;IAChF,aAAa,EAAE,MAAM,CAAA;IACrB;oFACgF;IAChF,aAAa,EAAE,MAAM,CAAA;IACrB,2EAA2E;IAC3E,iBAAiB,EAAE,MAAM,CAAA;IACzB,kDAAkD;IAClD,mBAAmB,EAAE,MAAM,EAAE,CAAA;IAC7B,0EAA0E;IAC1E,sBAAsB,EAAE,MAAM,EAAE,CAAA;IAEhC,8DAA8D;IAC9D,kBAAkB,EAAE,MAAM,CAAA;IAC1B,yEAAyE;IACzE,WAAW,EAAE,MAAM,CAAA;IACnB,mEAAmE;IACnE,YAAY,EAAE,MAAM,CAAA;IACpB,+EAA+E;IAC/E,YAAY,EAAE,MAAM,CAAA;IACpB,yEAAyE;IACzE,SAAS,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAA;CACxC;AAED,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;CAmBrB,CAAA;AAEV,mEAAmE;AACnE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;CAKpB,CAAA;AAEV,KAAK,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;AAmBjD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,EAAE,GAAG,IAAI,CAG/D;AAED,iEAAiE;AACjE,eAAO,MAAM,yBAAyB,0BAAoB,CAAA;AAE1D,uFAAuF;AACvF,wBAAgB,eAAe,CAAC,GAAG,GAAE,OAAqB,GAAG,QAAQ,CAmBpE;AAMD;;;6EAG6E;AAC7E,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKnD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAExE;AAED,2EAA2E;AAC3E,wBAAgB,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAG1D"}
|
package/dist/tm/config.js
CHANGED
|
@@ -6,17 +6,19 @@
|
|
|
6
6
|
* (same fail-soft philosophy as blackboard.resolveTtlMs and
|
|
7
7
|
* envprotect.resolveEnvProtectMode).
|
|
8
8
|
*
|
|
9
|
-
* Token 口径 (estimate basis):
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
9
|
+
* Token 口径 (estimate basis): CJK-range code points ≈ one token each,
|
|
10
|
+
* everything else tokens ≈ chars/4, ceil. Pure chars/4 under-counted CJK
|
|
11
|
+
* up to 4× — the LESS-governed direction for CJK-heavy payloads — so CJK
|
|
12
|
+
* now counts as a full token (offload earlier, the safe direction). Two
|
|
13
|
+
* design choices keep the estimate honest: the conservative boundary
|
|
14
|
+
* (estimate == threshold still offloads) and the hard preview cap. This
|
|
15
|
+
* 口径 is pinned by test-tm-tools.mjs.
|
|
15
16
|
*
|
|
16
|
-
* Naming note: TM_BLACKBOARD_DIR (this module, run-payload store
|
|
17
|
-
*
|
|
18
|
-
* team blackboard in blackboard.ts (`.git/opencode-team/`,
|
|
19
|
-
* They share a philosophy (TTL sweeper is the sole
|
|
17
|
+
* Naming note: TM_BLACKBOARD_DIR (this module, run-payload store, default
|
|
18
|
+
* AUTO = `<repo>/.git/opencode-team/blackboard`) is a DIFFERENT artifact
|
|
19
|
+
* from the team blackboard in blackboard.ts (`.git/opencode-team/`,
|
|
20
|
+
* plugin options). They share a root philosophy (TTL sweeper is the sole
|
|
21
|
+
* cleanup path), not code.
|
|
20
22
|
*/
|
|
21
23
|
/** Default tm_bash read-only allowlist (P3, command-level). */
|
|
22
24
|
export const DEFAULT_BASH_READONLY_ALLOWED = [
|
|
@@ -24,13 +26,31 @@ export const DEFAULT_BASH_READONLY_ALLOWED = [
|
|
|
24
26
|
"wc", "cut", "dir", "Get-Content", "Get-ChildItem", "Select-String",
|
|
25
27
|
"Measure-Object",
|
|
26
28
|
];
|
|
29
|
+
/**
|
|
30
|
+
* Seeded tm_webfetch domain allowlist — the four lookup hosts the design
|
|
31
|
+
* names (wiki term / bilibili search / bing / baidu). Subdomains of an
|
|
32
|
+
* entry are included; TM_WEBFETCH_ALLOWED_DOMAINS overrides the list
|
|
33
|
+
* (comma/semicolon separated; a lone "*" opens every host).
|
|
34
|
+
*/
|
|
35
|
+
export const DEFAULT_WEBFETCH_DOMAINS = [
|
|
36
|
+
"mobile.moegirl.org.cn",
|
|
37
|
+
"search.bilibili.com",
|
|
38
|
+
"cn.bing.com",
|
|
39
|
+
"www.baidu.com",
|
|
40
|
+
];
|
|
27
41
|
export const TM_CONFIG_DEFAULTS = {
|
|
28
42
|
offloadThreshold: 2000,
|
|
29
43
|
previewLines: 20,
|
|
30
44
|
previewMaxTokens: 80,
|
|
31
45
|
fetchMaxLines: 2000,
|
|
32
|
-
|
|
33
|
-
|
|
46
|
+
// Empty string = AUTO: resolve git-aware at runtime —
|
|
47
|
+
// <repo>/.git/opencode-team/{blackboard,trajectory} (tmpdir fallback for
|
|
48
|
+
// non-git workspaces). Keeps the payload/trajectory stores out of the
|
|
49
|
+
// user's working tree (user projects never had .blackboard/.trajectory
|
|
50
|
+
// gitignore entries). An explicit TM_BLACKBOARD_DIR / TM_TRAJECTORY_DIR
|
|
51
|
+
// keeps the old semantics: absolute, or relative to the project root.
|
|
52
|
+
blackboardDir: "",
|
|
53
|
+
trajectoryDir: "",
|
|
34
54
|
blackboardTtlDays: 7,
|
|
35
55
|
ptcMaxProgramChars: 4000,
|
|
36
56
|
ptcMaxCalls: 20,
|
|
@@ -65,15 +85,18 @@ function envStr(env, key, def) {
|
|
|
65
85
|
return v === "" ? def : v;
|
|
66
86
|
}
|
|
67
87
|
/**
|
|
68
|
-
* Parse
|
|
69
|
-
* default
|
|
70
|
-
* an explicit user choice is respected
|
|
88
|
+
* Parse a comma/semicolon-separated allowlist env var. Unset/absent -> null
|
|
89
|
+
* (caller applies the default). An explicitly EMPTY string parses to []
|
|
90
|
+
* (deny-all) — an explicit user choice is respected. Shared by
|
|
91
|
+
* TM_BASH_READONLY_ALLOWED and TM_WEBFETCH_ALLOWED_DOMAINS.
|
|
71
92
|
*/
|
|
72
93
|
export function parseAllowlistEnv(raw) {
|
|
73
94
|
if (typeof raw !== "string")
|
|
74
95
|
return null;
|
|
75
96
|
return raw.split(/[,;]/).map((s) => s.trim()).filter(Boolean);
|
|
76
97
|
}
|
|
98
|
+
/** Historical alias — identical grammar to parseAllowlistEnv. */
|
|
99
|
+
export const parseWebfetchAllowlistEnv = parseAllowlistEnv;
|
|
77
100
|
/** Resolve the full tm-tools config from an env-like record (default: process.env). */
|
|
78
101
|
export function resolveTmConfig(env = process.env) {
|
|
79
102
|
const allowlist = parseAllowlistEnv(env.TM_BASH_READONLY_ALLOWED);
|
|
@@ -86,6 +109,7 @@ export function resolveTmConfig(env = process.env) {
|
|
|
86
109
|
trajectoryDir: envStr(env, "TM_TRAJECTORY_DIR", TM_CONFIG_DEFAULTS.trajectoryDir),
|
|
87
110
|
blackboardTtlDays: envInt(env, "TM_BLACKBOARD_TTL", TM_CONFIG_DEFAULTS.blackboardTtlDays, 1, 365),
|
|
88
111
|
bashReadonlyAllowed: allowlist ?? [...DEFAULT_BASH_READONLY_ALLOWED],
|
|
112
|
+
webfetchAllowedDomains: parseAllowlistEnv(env.TM_WEBFETCH_ALLOWED_DOMAINS) ?? [...DEFAULT_WEBFETCH_DOMAINS],
|
|
89
113
|
ptcMaxProgramChars: envInt(env, "TM_PTC_MAX_PROGRAM_CHARS", TM_CONFIG_DEFAULTS.ptcMaxProgramChars, PTC_BUDGET_BOUNDS.programChars.min, PTC_BUDGET_BOUNDS.programChars.max),
|
|
90
114
|
ptcMaxCalls: envInt(env, "TM_PTC_MAX_CALLS", TM_CONFIG_DEFAULTS.ptcMaxCalls, PTC_BUDGET_BOUNDS.maxCalls.min, PTC_BUDGET_BOUNDS.maxCalls.max),
|
|
91
115
|
ptcMaxErrors: envInt(env, "TM_PTC_MAX_ERRORS", TM_CONFIG_DEFAULTS.ptcMaxErrors, PTC_BUDGET_BOUNDS.maxErrors.min, PTC_BUDGET_BOUNDS.maxErrors.max),
|
|
@@ -97,11 +121,30 @@ function resolveEngine(raw) {
|
|
|
97
121
|
const v = typeof raw === "string" ? raw.trim().toLowerCase() : "";
|
|
98
122
|
return v === "worker" || v === "inline" ? v : "auto";
|
|
99
123
|
}
|
|
124
|
+
/** Token cost of ONE code point — CJK-range ≈ 1 token (kana / Hangul /
|
|
125
|
+
* fullwidth / CJK punctuation all sit above U+2E80), everything else ≈ 0.25
|
|
126
|
+
* (chars/4). Shared by estimateTokens and preview.capTokens so the two
|
|
127
|
+
* can never drift apart (a chars/4 cap would under-count CJK bodies 4×). */
|
|
128
|
+
export function tokenCostOf(cp) {
|
|
129
|
+
return cp >= 0x2e80 ? 1 : 0.25;
|
|
130
|
+
}
|
|
100
131
|
/**
|
|
101
|
-
* Token estimate —
|
|
132
|
+
* Token estimate — CJK-aware: CJK-range code points count ≈ one token each,
|
|
133
|
+
* everything else chars/4, ceil. The pure chars/4 basis under-counted CJK
|
|
134
|
+
* up to 4× (one CJK char ≈ one token), which let CJK-heavy payloads ride
|
|
135
|
+
* inline PAST the threshold — a mis-estimate in the LESS-governed
|
|
136
|
+
* direction. Counting CJK as a full token errs the other way (offload
|
|
137
|
+
* earlier), the safe direction for context size. The conservative
|
|
138
|
+
* boundary (estimate == threshold still offloads) is unchanged. Empty
|
|
139
|
+
* input = 0.
|
|
102
140
|
*/
|
|
103
141
|
export function estimateTokens(text) {
|
|
104
|
-
|
|
142
|
+
if (!text)
|
|
143
|
+
return 0;
|
|
144
|
+
let cost = 0;
|
|
145
|
+
for (const ch of text)
|
|
146
|
+
cost += tokenCostOf(ch.codePointAt(0) ?? 0);
|
|
147
|
+
return Math.ceil(cost);
|
|
105
148
|
}
|
|
106
149
|
/**
|
|
107
150
|
* Offload decision. estimate == threshold ALSO offloads — the conservative
|
package/dist/tm/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/tm/config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/tm/config.ts"],"names":[],"mappings":"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"}
|
package/dist/tm/guard.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../src/tm/guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;
|
|
1
|
+
{"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../src/tm/guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAOH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAmED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,MAAM,EAAE,GAC3B,YAAY,CAwHd;AAID,wFAAwF;AACxF,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAWpE;AAED,MAAM,MAAM,gBAAgB,GACxB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACzB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAWlC;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,OAAO,EAClB,SAAS,GAAE,SAAS,MAAM,EAAO,GAChC,gBAAgB,CAyBlB"}
|
package/dist/tm/guard.js
CHANGED
|
@@ -24,13 +24,10 @@
|
|
|
24
24
|
import * as fs from "node:fs";
|
|
25
25
|
import * as path from "node:path";
|
|
26
26
|
import { shorten } from "./config.js";
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
function segments(command) {
|
|
32
|
-
return command.split(/&&|\|\||[;\n|&]/);
|
|
33
|
-
}
|
|
27
|
+
import { splitShellSegments } from "../shell-text.js";
|
|
28
|
+
// statement segmentation is the shared implementation in ../shell-text.ts;
|
|
29
|
+
// local name kept for the call sites below.
|
|
30
|
+
const segments = splitShellSegments;
|
|
34
31
|
/**
|
|
35
32
|
* Quoted-span blanking — ONE shared implementation for every quote-aware
|
|
36
33
|
* view (two prior review rounds both traced back to drifted copies). A
|
package/dist/tm/guard.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guard.js","sourceRoot":"","sources":["../../src/tm/guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"guard.js","sourceRoot":"","sources":["../../src/tm/guard.ts"],"names":[],"mappings":"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"}
|
package/dist/tm/index.d.ts
CHANGED
|
@@ -16,11 +16,16 @@ import type { PluginInput, ToolDefinition } from "../types.js";
|
|
|
16
16
|
import { type EnvProtectMode } from "../envprotect.js";
|
|
17
17
|
import { type TmConfig } from "./config.js";
|
|
18
18
|
import { RunStore } from "./store.js";
|
|
19
|
+
export { rmForceSafe } from "../fs-safe.js";
|
|
20
|
+
export { buildTmMemoryTool, MEMORY_CATEGORIES, MEMORY_CONTENT_MAX, MEMORY_TITLE_MAX, projectSlug, scoreMemory, parseMemoryMarkdown, renderMemoryMarkdown, } from "./memory.js";
|
|
21
|
+
export { buildTmBrowserTool, findBrowserExecutable, resolveHeadless } from "./browser.js";
|
|
19
22
|
export interface TmRuntime {
|
|
20
23
|
runId: string;
|
|
21
24
|
config: TmConfig;
|
|
22
25
|
store: RunStore;
|
|
23
26
|
tools: Record<string, ToolDefinition>;
|
|
27
|
+
/** Kill any long-lived session the tools own (tm_browser child process). */
|
|
28
|
+
dispose: () => void;
|
|
24
29
|
}
|
|
25
30
|
export interface CreateTmToolsOptions {
|
|
26
31
|
/** R6 mode — pass the plugin-level resolved value to keep ONE source. */
|
|
@@ -29,13 +34,18 @@ export interface CreateTmToolsOptions {
|
|
|
29
34
|
extra?: RegExp[];
|
|
30
35
|
}
|
|
31
36
|
export declare function createTmTools(input: PluginInput, opts?: CreateTmToolsOptions): Promise<TmRuntime>;
|
|
32
|
-
export { DEFAULT_BASH_READONLY_ALLOWED, estimateTokens, parseAllowlistEnv, resolveTmConfig, shouldOffload, shorten, TM_CONFIG_DEFAULTS, } from "./config.js";
|
|
37
|
+
export { DEFAULT_BASH_READONLY_ALLOWED, DEFAULT_WEBFETCH_DOMAINS, estimateTokens, parseAllowlistEnv, parseWebfetchAllowlistEnv, resolveTmConfig, shouldOffload, shorten, TM_CONFIG_DEFAULTS, } from "./config.js";
|
|
33
38
|
export { buildRef, hmacToken, isExpired, newRunId, parseRef, REF_PATTERN, verifyToken, } from "./refs.js";
|
|
34
39
|
export { RunStore, USAGE_JSONL_RELPATH } from "./store.js";
|
|
35
40
|
export { buildPreview, buildStructureSummary, capTokens, contentTypeForPath, detectContentType, sniffContentType, } from "./preview.js";
|
|
36
41
|
export { assertReadablePath, classifyReadonlyCommand, isInsideDir, } from "./guard.js";
|
|
37
|
-
export { buildTmTools
|
|
38
|
-
export
|
|
39
|
-
export {
|
|
40
|
-
export
|
|
42
|
+
export { buildTmTools } from "./tools.js";
|
|
43
|
+
export { buildPipelines } from "./pipelines.js";
|
|
44
|
+
export type { TmDeps, TmPipelines } from "./pipelines.js";
|
|
45
|
+
export { buildPtcArgsSchema, buildWebfetchArgsSchema } from "./args-schema.js";
|
|
46
|
+
export { toToolResult, HANDLE_INVALID_MESSAGE, tmError } from "./result.js";
|
|
47
|
+
export type { TmPhase } from "./result.js";
|
|
48
|
+
export { buildTmWebfetchTool, checkWebUrl, extractWebResponse, fetchWebText, hostAllowed, htmlToText, } from "./webfetch.js";
|
|
49
|
+
export { BRIDGE_ALLOW, InlineSequentialEngine, InlineVmEngine, WorkerEngine, PTC_LABEL_MAX, PTC_STATUS_VALUES, RETRYABLE_PHASES, PTC_SUMMARY_HEADER, PTC_OK_SECTION, PTC_OK_HEADER, PTC_ERR_SECTION, PTC_ERR_HEADER, PTC_RETURN_PREFIX, PTC_ERRORFULL_PREFIX, buildPtcRunTool, createGateBridge, parsePtcArgs, pipelineBridge, renderPtcSummary, resolvePtcBudgets, runPtc, selectEngine, staticPscan, } from "./ptc/index.js";
|
|
50
|
+
export type { PtcStatus, PtcEngine, PtcEngineName, PtcBridge, PtcCallResult, PtcErrorBody, PtcRunRequest, PtcRpcRequest, PtcRpcResponse, PtcRpcAbort, PtcEngineMessage, PtcBudgets, PtcStepRecord, PtcRunOutcome, RunPtcOptions, } from "./ptc/index.js";
|
|
41
51
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/tm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tm/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tm/index.ts"],"names":[],"mappings":"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"}
|
package/dist/tm/index.js
CHANGED
|
@@ -13,12 +13,24 @@
|
|
|
13
13
|
* `{ tool: { tm_read: { description, args, execute(args, ctx) } } }`).
|
|
14
14
|
*/
|
|
15
15
|
import * as crypto from "node:crypto";
|
|
16
|
+
import * as fs from "node:fs";
|
|
17
|
+
import * as os from "node:os";
|
|
18
|
+
import * as path from "node:path";
|
|
19
|
+
import { findRepoRoot } from "../blackboard.js";
|
|
16
20
|
import { parseExtraDeny, resolveEnvProtectMode, } from "../envprotect.js";
|
|
17
21
|
import { resolveTmConfig } from "./config.js";
|
|
18
22
|
import { hmacToken, newRunId } from "./refs.js";
|
|
19
23
|
import { RunStore } from "./store.js";
|
|
20
|
-
import { buildTmTools
|
|
21
|
-
import {
|
|
24
|
+
import { buildTmTools } from "./tools.js";
|
|
25
|
+
import { buildPipelines } from "./pipelines.js";
|
|
26
|
+
import { buildPtcArgsSchema, buildWebfetchArgsSchema, buildMemoryArgsSchema, buildBrowserArgsSchema } from "./args-schema.js";
|
|
27
|
+
import { buildPtcRunTool } from "./ptc/index.js";
|
|
28
|
+
import { buildTmWebfetchTool } from "./webfetch.js";
|
|
29
|
+
export { rmForceSafe } from "../fs-safe.js";
|
|
30
|
+
export { buildTmMemoryTool, MEMORY_CATEGORIES, MEMORY_CONTENT_MAX, MEMORY_TITLE_MAX, projectSlug, scoreMemory, parseMemoryMarkdown, renderMemoryMarkdown, } from "./memory.js";
|
|
31
|
+
export { buildTmBrowserTool, findBrowserExecutable, resolveHeadless } from "./browser.js";
|
|
32
|
+
import { buildTmMemoryTool } from "./memory.js";
|
|
33
|
+
import { buildTmBrowserTool } from "./browser.js";
|
|
22
34
|
export async function createTmTools(input, opts = {}) {
|
|
23
35
|
const cfg = resolveTmConfig(process.env);
|
|
24
36
|
const directory = typeof input?.directory === "string" && input.directory.length > 0
|
|
@@ -27,10 +39,31 @@ export async function createTmTools(input, opts = {}) {
|
|
|
27
39
|
const runId = newRunId();
|
|
28
40
|
const hmacKey = crypto.randomBytes(32);
|
|
29
41
|
const accessToken = hmacToken(hmacKey, runId);
|
|
42
|
+
// Store roots — AUTO default resolves git-aware: under <repo>/.git, so
|
|
43
|
+
// the payload/trajectory stores never pollute the user's working tree
|
|
44
|
+
// (user projects never had .blackboard/.trajectory gitignore entries).
|
|
45
|
+
// The .git-is-a-directory check covers worktrees where .git is a FILE
|
|
46
|
+
// pointing elsewhere. Explicit TM_BLACKBOARD_DIR / TM_TRAJECTORY_DIR
|
|
47
|
+
// overrides keep the old semantics (absolute, or relative to project
|
|
48
|
+
// root — RunStore handles both).
|
|
49
|
+
const repo = findRepoRoot(directory);
|
|
50
|
+
const gitDir = repo ? path.join(repo, ".git") : null;
|
|
51
|
+
const gitUsable = gitDir !== null &&
|
|
52
|
+
(() => {
|
|
53
|
+
try {
|
|
54
|
+
return fs.statSync(gitDir).isDirectory();
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
})();
|
|
60
|
+
const storeBase = gitUsable
|
|
61
|
+
? path.join(gitDir, "opencode-team")
|
|
62
|
+
: path.join(os.tmpdir(), "opencode-team");
|
|
30
63
|
const store = new RunStore({
|
|
31
64
|
projectRoot: directory,
|
|
32
|
-
blackboardDir: cfg.blackboardDir,
|
|
33
|
-
trajectoryDir: cfg.trajectoryDir,
|
|
65
|
+
blackboardDir: cfg.blackboardDir || path.join(storeBase, "blackboard"),
|
|
66
|
+
trajectoryDir: cfg.trajectoryDir || path.join(storeBase, "trajectory"),
|
|
34
67
|
runId,
|
|
35
68
|
ttlDays: cfg.blackboardTtlDays,
|
|
36
69
|
});
|
|
@@ -40,12 +73,17 @@ export async function createTmTools(input, opts = {}) {
|
|
|
40
73
|
const mode = opts.mode ?? resolveEnvProtectMode(process.env.TM_ENV_PROTECT);
|
|
41
74
|
const extra = opts.extra ?? parseExtraDeny(process.env.TM_ENV_PROTECT_EXTRA_DENY);
|
|
42
75
|
const expireAt = Date.now() + cfg.blackboardTtlDays * 24 * 60 * 60 * 1000;
|
|
43
|
-
|
|
76
|
+
// Bun shell ($): try input.$ first (T0.4② verified), then Bun globals
|
|
77
|
+
// (desktop loader may not pass $ through; Bun exposes it globally).
|
|
78
|
+
// Resolved ONCE and shared by the main pipelines AND the PTC pipeline
|
|
79
|
+
// instance below — v1.5.4 added the fallback to the main path only, so
|
|
80
|
+
// PTC's tm.bash bridging died with "宿主 shell 桥($)不可用" on desktops
|
|
81
|
+
// where input.$ is absent.
|
|
82
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
83
|
+
const shellBridge = input?.$ ?? globalThis.$ ?? globalThis.Bun?.$;
|
|
84
|
+
const deps = {
|
|
44
85
|
client: input?.client,
|
|
45
|
-
|
|
46
|
-
// (desktop loader may not pass $ through; Bun exposes it globally).
|
|
47
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
48
|
-
$: input?.$ ?? globalThis.$ ?? globalThis.Bun?.$,
|
|
86
|
+
$: shellBridge,
|
|
49
87
|
cfg,
|
|
50
88
|
store,
|
|
51
89
|
runId,
|
|
@@ -54,13 +92,43 @@ export async function createTmTools(input, opts = {}) {
|
|
|
54
92
|
expireAt,
|
|
55
93
|
mode,
|
|
56
94
|
extra,
|
|
95
|
+
};
|
|
96
|
+
// ONE main pipeline instance shared by the four tools AND tm_webfetch —
|
|
97
|
+
// a shared step counter keeps their refs unambiguous (a second instance
|
|
98
|
+
// would re-emit s0001 and cross-contaminate offloaded payloads).
|
|
99
|
+
const pipelines = buildPipelines(deps);
|
|
100
|
+
const tools = await buildTmTools(deps, pipelines);
|
|
101
|
+
// tm_webfetch — the governed web FALLBACK channel. Registered on the
|
|
102
|
+
// host tool surface for everyone, but the AGENT PERMISSION map gates who
|
|
103
|
+
// sees it: explicit allow for team + researcher only (agents.ts), explicit
|
|
104
|
+
// deny for the other four (overrides the tm_* wildcard).
|
|
105
|
+
const webfetchArgs = await buildWebfetchArgsSchema();
|
|
106
|
+
tools.tm_webfetch = buildTmWebfetchTool({ pipelines, cfg, args: webfetchArgs });
|
|
107
|
+
// tm_memory — project/global memory mirror (Markdown + frontmatter under
|
|
108
|
+
// the same git-aware store base). Available to ALL agents: memory is not
|
|
109
|
+
// a network channel, it is shared project knowledge.
|
|
110
|
+
const memoryArgs = await buildMemoryArgsSchema();
|
|
111
|
+
tools.tm_memory = buildTmMemoryTool({
|
|
112
|
+
storeBase,
|
|
113
|
+
directory,
|
|
114
|
+
cfg,
|
|
115
|
+
pipelines,
|
|
116
|
+
args: memoryArgs,
|
|
57
117
|
});
|
|
118
|
+
// tm_browser — governed interactive browser (Plan C, headful CDP pipe).
|
|
119
|
+
// Network role tool: team + researcher carry the allow; the other four
|
|
120
|
+
// hold an explicit deny (overrides the tm_* wildcard). dispose() kills
|
|
121
|
+
// the browser child when the host tears the plugin down.
|
|
122
|
+
const browserTool = buildTmBrowserTool({ pipelines, cfg, args: await buildBrowserArgsSchema() });
|
|
123
|
+
tools.tm_browser = browserTool;
|
|
58
124
|
// M3: build tm_ptc_run using a separate pipeline instance (governance
|
|
59
|
-
// reused verbatim
|
|
60
|
-
//
|
|
125
|
+
// reused verbatim). Its step counter starts at s0001 again — the
|
|
126
|
+
// "ptc-" stepPrefix namespaces its step ids so offloaded payloads can
|
|
127
|
+
// never collide with same-numbered main-pipeline steps in the shared
|
|
128
|
+
// run store (refs ignore seq, so a collision would corrupt tm_fetch).
|
|
61
129
|
const ptcDeps = {
|
|
62
130
|
client: input?.client,
|
|
63
|
-
$:
|
|
131
|
+
$: shellBridge,
|
|
64
132
|
cfg,
|
|
65
133
|
store,
|
|
66
134
|
runId,
|
|
@@ -69,6 +137,7 @@ export async function createTmTools(input, opts = {}) {
|
|
|
69
137
|
expireAt,
|
|
70
138
|
mode,
|
|
71
139
|
extra,
|
|
140
|
+
stepPrefix: "ptc-",
|
|
72
141
|
};
|
|
73
142
|
const ptcPipelines = buildPipelines(ptcDeps);
|
|
74
143
|
const ptcTool = buildPtcRunTool({
|
|
@@ -77,20 +146,27 @@ export async function createTmTools(input, opts = {}) {
|
|
|
77
146
|
nextStepId: ptcPipelines.nextStepId,
|
|
78
147
|
ctx: { directory },
|
|
79
148
|
accessToken,
|
|
149
|
+
args: await buildPtcArgsSchema(),
|
|
80
150
|
pipelines: ptcPipelines,
|
|
81
151
|
});
|
|
82
152
|
tools.tm_ptc_run = ptcTool;
|
|
83
|
-
return { runId, config: cfg, store, tools };
|
|
153
|
+
return { runId, config: cfg, store, tools, dispose: () => browserTool.dispose() };
|
|
84
154
|
}
|
|
85
155
|
// ---------- re-exports (stable import surface for tests + plugin entry) ----------
|
|
86
|
-
export { DEFAULT_BASH_READONLY_ALLOWED, estimateTokens, parseAllowlistEnv, resolveTmConfig, shouldOffload, shorten, TM_CONFIG_DEFAULTS, } from "./config.js";
|
|
156
|
+
export { DEFAULT_BASH_READONLY_ALLOWED, DEFAULT_WEBFETCH_DOMAINS, estimateTokens, parseAllowlistEnv, parseWebfetchAllowlistEnv, resolveTmConfig, shouldOffload, shorten, TM_CONFIG_DEFAULTS, } from "./config.js";
|
|
87
157
|
export { buildRef, hmacToken, isExpired, newRunId, parseRef, REF_PATTERN, verifyToken, } from "./refs.js";
|
|
88
158
|
export { RunStore, USAGE_JSONL_RELPATH } from "./store.js";
|
|
89
159
|
export { buildPreview, buildStructureSummary, capTokens, contentTypeForPath, detectContentType, sniffContentType, } from "./preview.js";
|
|
90
160
|
export { assertReadablePath, classifyReadonlyCommand, isInsideDir, } from "./guard.js";
|
|
91
|
-
export { buildTmTools
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
export {
|
|
161
|
+
export { buildTmTools } from "./tools.js";
|
|
162
|
+
export { buildPipelines } from "./pipelines.js";
|
|
163
|
+
export { buildPtcArgsSchema, buildWebfetchArgsSchema } from "./args-schema.js";
|
|
164
|
+
export { toToolResult, HANDLE_INVALID_MESSAGE, tmError } from "./result.js";
|
|
165
|
+
export { buildTmWebfetchTool, checkWebUrl, extractWebResponse, fetchWebText, hostAllowed, htmlToText, } from "./webfetch.js";
|
|
166
|
+
// ---------- tm_ptc_run ----------
|
|
167
|
+
// Built here with its own pipeline instance (governance reused verbatim;
|
|
168
|
+
// step counter is independent — store handles any step-id overlap via
|
|
169
|
+
// tool-name-prefixed files) and MERGED into the registered `tools` map
|
|
170
|
+
// below, so all five tools ship in the `tool` segment.
|
|
171
|
+
export { BRIDGE_ALLOW, InlineSequentialEngine, InlineVmEngine, WorkerEngine, PTC_LABEL_MAX, PTC_STATUS_VALUES, RETRYABLE_PHASES, PTC_SUMMARY_HEADER, PTC_OK_SECTION, PTC_OK_HEADER, PTC_ERR_SECTION, PTC_ERR_HEADER, PTC_RETURN_PREFIX, PTC_ERRORFULL_PREFIX, buildPtcRunTool, createGateBridge, parsePtcArgs, pipelineBridge, renderPtcSummary, resolvePtcBudgets, runPtc, selectEngine, staticPscan, } from "./ptc/index.js";
|
|
96
172
|
//# sourceMappingURL=index.js.map
|
package/dist/tm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tm/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tm/index.ts"],"names":[],"mappings":"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"}
|