@te-river/opencode-team-mode 1.5.0 → 1.5.2
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 +157 -53
- package/README.zh-CN.md +137 -53
- package/dist/agents.d.ts.map +1 -1
- package/dist/agents.js +128 -26
- package/dist/agents.js.map +1 -1
- package/dist/approval-gate.d.ts +147 -0
- package/dist/approval-gate.d.ts.map +1 -0
- package/dist/approval-gate.js +471 -0
- package/dist/approval-gate.js.map +1 -0
- package/dist/commands.js +3 -3
- package/dist/commands.js.map +1 -1
- package/dist/envprotect.d.ts +234 -0
- package/dist/envprotect.d.ts.map +1 -0
- package/dist/envprotect.js +820 -0
- package/dist/envprotect.js.map +1 -0
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +112 -1
- package/dist/index.js.map +1 -1
- package/dist/tm/config.d.ts +105 -0
- package/dist/tm/config.d.ts.map +1 -0
- package/dist/tm/config.js +118 -0
- package/dist/tm/config.js.map +1 -0
- package/dist/tm/guard.d.ts +56 -0
- package/dist/tm/guard.d.ts.map +1 -0
- package/dist/tm/guard.js +249 -0
- package/dist/tm/guard.js.map +1 -0
- package/dist/tm/index.d.ts +41 -0
- package/dist/tm/index.d.ts.map +1 -0
- package/dist/tm/index.js +93 -0
- package/dist/tm/index.js.map +1 -0
- package/dist/tm/preview.d.ts +46 -0
- package/dist/tm/preview.d.ts.map +1 -0
- package/dist/tm/preview.js +354 -0
- package/dist/tm/preview.js.map +1 -0
- package/dist/tm/ptc.d.ts +279 -0
- package/dist/tm/ptc.d.ts.map +1 -0
- package/dist/tm/ptc.js +839 -0
- package/dist/tm/ptc.js.map +1 -0
- package/dist/tm/refs.d.ts +37 -0
- package/dist/tm/refs.d.ts.map +1 -0
- package/dist/tm/refs.js +58 -0
- package/dist/tm/refs.js.map +1 -0
- package/dist/tm/store.d.ts +95 -0
- package/dist/tm/store.d.ts.map +1 -0
- package/dist/tm/store.js +222 -0
- package/dist/tm/store.js.map +1 -0
- package/dist/tm/tools.d.ts +84 -0
- package/dist/tm/tools.d.ts.map +1 -0
- package/dist/tm/tools.js +710 -0
- package/dist/tm/tools.js.map +1 -0
- package/dist/types.d.ts +155 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"envprotect.js","sourceRoot":"","sources":["../src/envprotect.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,7 +6,11 @@
|
|
|
6
6
|
*
|
|
7
7
|
* export default {
|
|
8
8
|
* id: "team-mode", → Desktop plugin display name
|
|
9
|
-
* server: async (input, options) => ({
|
|
9
|
+
* server: async (input, options) => ({
|
|
10
|
+
* config(cfg) { ...inject agents/commands... },
|
|
11
|
+
* "tool.execute.before"(...) { ...R6 env protection... },
|
|
12
|
+
* tool: { tm_read, tm_grep, tm_bash, tm_fetch }, → JIT layer-2 tools
|
|
13
|
+
* })
|
|
10
14
|
* }
|
|
11
15
|
*
|
|
12
16
|
* `server()` is the ONLY function the loader calls; a `setup` property is
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EAAE,cAAc,EAA8C,MAAM,YAAY,CAAA;AAyC5F,QAAA,MAAM,MAAM,EAAE,cAiKb,CAAA;AAED,eAAe,MAAM,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -6,7 +6,11 @@
|
|
|
6
6
|
*
|
|
7
7
|
* export default {
|
|
8
8
|
* id: "team-mode", → Desktop plugin display name
|
|
9
|
-
* server: async (input, options) => ({
|
|
9
|
+
* server: async (input, options) => ({
|
|
10
|
+
* config(cfg) { ...inject agents/commands... },
|
|
11
|
+
* "tool.execute.before"(...) { ...R6 env protection... },
|
|
12
|
+
* tool: { tm_read, tm_grep, tm_bash, tm_fetch }, → JIT layer-2 tools
|
|
13
|
+
* })
|
|
10
14
|
* }
|
|
11
15
|
*
|
|
12
16
|
* `server()` is the ONLY function the loader calls; a `setup` property is
|
|
@@ -27,6 +31,9 @@
|
|
|
27
31
|
import { agents } from "./agents.js";
|
|
28
32
|
import { commands } from "./commands.js";
|
|
29
33
|
import { startBlackboardMaintenance, resolveTtlMs, DEFAULT_TTL_DAYS, } from "./blackboard.js";
|
|
34
|
+
import { createEnvProtectHook, parseExtraDeny, resolveEnvProtectMode, bashAskPatterns, } from "./envprotect.js";
|
|
35
|
+
import { createApprovalGate, resolveAskTimeoutMs, hasPermissionReplyCapability, } from "./approval-gate.js";
|
|
36
|
+
import { createTmTools } from "./tm/index.js";
|
|
30
37
|
/** Runtime addendum to the team prompt: concrete board + TTL (hybrid mode). */
|
|
31
38
|
function blackboardNote(root, ttlDays) {
|
|
32
39
|
return [
|
|
@@ -57,19 +64,81 @@ const plugin = {
|
|
|
57
64
|
const ttlDays = Math.round(ttlMs / (24 * 60 * 60 * 1000)) || DEFAULT_TTL_DAYS;
|
|
58
65
|
const boardRoot = startBlackboardMaintenance(directory, ttlMs);
|
|
59
66
|
const note = blackboardNote(boardRoot, ttlDays);
|
|
67
|
+
// ---------- R6 env protection (code-level interception) ----------
|
|
68
|
+
// Reading TM_ENV_PROTECT / TM_ENV_PROTECT_EXTRA_DENY here is the PLUGIN
|
|
69
|
+
// configuring ITSELF at startup — program-level configuration, the same
|
|
70
|
+
// category as the ttlDays option. R6 exists to stop the MODEL reading
|
|
71
|
+
// environment variables through tool calls; these two reads are not
|
|
72
|
+
// that and are out of scope of the protection.
|
|
73
|
+
const envProtectMode = resolveEnvProtectMode(process.env.TM_ENV_PROTECT);
|
|
74
|
+
const envProtectExtra = parseExtraDeny(process.env.TM_ENV_PROTECT_EXTRA_DENY);
|
|
75
|
+
// ---------- unified approval gate (R6 env face + R2 danger face) ----------
|
|
76
|
+
// Layer 2: ONE timer that auto-REJECTS unanswered official-dialog requests
|
|
77
|
+
// after TM_ASK_TIMEOUT_MIN and (Layer 3) fails closed if the SDK reply is
|
|
78
|
+
// broken. Armed ONLY when R6 is not off AND the client exposes a
|
|
79
|
+
// permission-reply path — otherwise there is no live auto-reject and the
|
|
80
|
+
// R6 hook must keep hard-throwing every env read (fail-closed).
|
|
81
|
+
const approvalGate = envProtectMode !== "off" && hasPermissionReplyCapability(input?.client)
|
|
82
|
+
? createApprovalGate({
|
|
83
|
+
client: input?.client,
|
|
84
|
+
timeoutMs: resolveAskTimeoutMs(process.env),
|
|
85
|
+
})
|
|
86
|
+
: null;
|
|
87
|
+
if (approvalGate)
|
|
88
|
+
approvalGate.start();
|
|
89
|
+
// Sessions are only allowed to DEFER expressible env reads to the dialog
|
|
90
|
+
// once the gate registered them as carrying our injected bash ask set
|
|
91
|
+
// (reviewer C1: a global isArmed() deferral let stock build/plan agents
|
|
92
|
+
// run printenv silently). The authoritative source of that fact is the
|
|
93
|
+
// config hook below: it records exactly which agents got the escalated
|
|
94
|
+
// ask object, and a `message.updated`/`chat.message` user prompt routed
|
|
95
|
+
// to one of those agents registers its session (live-proven ordering:
|
|
96
|
+
// the user message event arrives before the session's first
|
|
97
|
+
// tool.execute.before, while permission.asked arrives AFTER it).
|
|
98
|
+
const injectedExecAgents = new Set();
|
|
99
|
+
const envProtectHook = createEnvProtectHook(input?.client, envProtectMode, envProtectExtra, { deferToApproval: (sessionID) => approvalGate?.canDefer(sessionID) ?? false,
|
|
100
|
+
envApproved: (sessionID) => approvalGate?.isEnvApproved(sessionID) ?? false });
|
|
101
|
+
// ---------- JIT layer-2 tools (tm_read / tm_grep / tm_bash / tm_fetch) ----------
|
|
102
|
+
// T0.4-verified static registration: server() hooks gain a `tool` segment.
|
|
103
|
+
// The R6 mode/extra resolved above are passed in so the tm_* pipelines
|
|
104
|
+
// share the SAME interception source as the built-in tools (anti-backdoor:
|
|
105
|
+
// the global hook ALSO aliases tm_* onto read/grep/bash — see envprotect).
|
|
106
|
+
const tmRuntime = await createTmTools(input, {
|
|
107
|
+
mode: envProtectMode,
|
|
108
|
+
extra: envProtectExtra,
|
|
109
|
+
});
|
|
60
110
|
return {
|
|
61
111
|
// ---------- v1 config hook: inject agents & commands ----------
|
|
62
112
|
config(cfg) {
|
|
63
113
|
if (!cfg.agent)
|
|
64
114
|
cfg.agent = {};
|
|
115
|
+
// Execution roles carry permission.bash === "allow"; escalate it to a
|
|
116
|
+
// pattern object so the host opens its official confirmation dialog
|
|
117
|
+
// for the R6 env face + R2 danger face (default `*` stays allow). A
|
|
118
|
+
// shallow copy keeps the module-level `agents` object pristine. The
|
|
119
|
+
// R6 env face is only injected while the approval gate can arm: with
|
|
120
|
+
// no arming client the R6 hook hard-throws env reads BEFORE any
|
|
121
|
+
// dialog could be satisfied, so those patterns would be dead popups.
|
|
122
|
+
const bashAsk = bashAskPatterns(envProtectMode, approvalGate !== null);
|
|
65
123
|
for (const [name, def] of Object.entries(agents)) {
|
|
66
124
|
// Respect user-defined overrides: never clobber an existing entry.
|
|
67
125
|
if (cfg.agent[name])
|
|
68
126
|
continue;
|
|
127
|
+
const permission = def.permission
|
|
128
|
+
? {
|
|
129
|
+
...def.permission,
|
|
130
|
+
...(def.permission.bash === "allow" ? { bash: bashAsk } : null),
|
|
131
|
+
}
|
|
132
|
+
: def.permission;
|
|
69
133
|
cfg.agent[name] = {
|
|
70
134
|
...def,
|
|
135
|
+
permission,
|
|
71
136
|
prompt: name === "team" ? (def.prompt ?? "") + note : def.prompt,
|
|
72
137
|
};
|
|
138
|
+
// deferral-registry seed: agents that ACTUALLY carry our escalated
|
|
139
|
+
// bash ask object (user-overridden agents never get added)
|
|
140
|
+
if (def.permission && def.permission.bash === "allow")
|
|
141
|
+
injectedExecAgents.add(name);
|
|
73
142
|
}
|
|
74
143
|
if (!cfg.command)
|
|
75
144
|
cfg.command = {};
|
|
@@ -84,6 +153,48 @@ const plugin = {
|
|
|
84
153
|
cfg.default_agent = "team";
|
|
85
154
|
}
|
|
86
155
|
},
|
|
156
|
+
// ---------- R6: block the model's env-var read paths in code ----------
|
|
157
|
+
"tool.execute.before": envProtectHook,
|
|
158
|
+
// ---------- unified approval gate: watch the host permission dialog ---
|
|
159
|
+
event: ({ event }) => {
|
|
160
|
+
if (!approvalGate)
|
|
161
|
+
return;
|
|
162
|
+
// Pre-tool session registration: the live host emits message.updated
|
|
163
|
+
// with the full UserMessage ({ sessionID, role:"user", agent }) when
|
|
164
|
+
// a prompt enters a session — BEFORE any tool.execute.before of that
|
|
165
|
+
// turn, which is exactly when the R6 hook needs to know the session
|
|
166
|
+
// carries our injected ask set (permission.asked only fires AFTER
|
|
167
|
+
// the hook, so it can never be the first-command registration).
|
|
168
|
+
if (event?.type === "message.updated") {
|
|
169
|
+
const info = event.properties?.info;
|
|
170
|
+
if (info &&
|
|
171
|
+
info.role === "user" &&
|
|
172
|
+
typeof info.agent === "string" &&
|
|
173
|
+
typeof info.sessionID === "string" &&
|
|
174
|
+
injectedExecAgents.has(info.agent)) {
|
|
175
|
+
approvalGate.registerExecSession(info.sessionID);
|
|
176
|
+
}
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
approvalGate.handleEvent(event);
|
|
180
|
+
},
|
|
181
|
+
// secondary registration channel (official 1.18.x contract; the event
|
|
182
|
+
// route above is the one verified against the live 1.18.29 bus)
|
|
183
|
+
"chat.message": (input) => {
|
|
184
|
+
if (!approvalGate)
|
|
185
|
+
return;
|
|
186
|
+
if (input &&
|
|
187
|
+
typeof input.sessionID === "string" &&
|
|
188
|
+
typeof input.agent === "string" &&
|
|
189
|
+
injectedExecAgents.has(input.agent)) {
|
|
190
|
+
approvalGate.registerExecSession(input.sessionID);
|
|
191
|
+
}
|
|
192
|
+
},
|
|
193
|
+
dispose: () => {
|
|
194
|
+
approvalGate?.dispose();
|
|
195
|
+
},
|
|
196
|
+
// ---------- JIT layer-2: tm_read / tm_grep / tm_bash / tm_fetch ----------
|
|
197
|
+
tool: tmRuntime.tools,
|
|
87
198
|
};
|
|
88
199
|
},
|
|
89
200
|
};
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JIT layer-2 tools (T1.2 + T1.3) — configuration surface.
|
|
3
|
+
*
|
|
4
|
+
* Every knob resolves from the process environment with a typed default;
|
|
5
|
+
* invalid values never crash plugin startup, they fall back to the default
|
|
6
|
+
* (same fail-soft philosophy as blackboard.resolveTtlMs and
|
|
7
|
+
* envprotect.resolveEnvProtectMode).
|
|
8
|
+
*
|
|
9
|
+
* Token 口径 (estimate basis): tokens ≈ chars/4, ceil. This is a rough
|
|
10
|
+
* ASCII/code calibration; CJK text is under-counted by it (one CJK char is
|
|
11
|
+
* closer to a full token than to 0.25). Two design choices keep that honest:
|
|
12
|
+
* the conservative boundary (estimate == threshold still offloads) and the
|
|
13
|
+
* hard preview cap — a mis-estimate can only make governance MORE aggressive,
|
|
14
|
+
* never less. This口径 is pinned by test-tm-tools.mjs.
|
|
15
|
+
*
|
|
16
|
+
* Naming note: TM_BLACKBOARD_DIR (this module, run-payload store under the
|
|
17
|
+
* project root, default `.blackboard/`) is a DIFFERENT artifact from the
|
|
18
|
+
* team blackboard in blackboard.ts (`.git/opencode-team/`, plugin options).
|
|
19
|
+
* They share a philosophy (TTL sweeper is the sole cleanup path), not code.
|
|
20
|
+
*/
|
|
21
|
+
/** Default tm_bash read-only allowlist (P3, command-level). */
|
|
22
|
+
export declare const DEFAULT_BASH_READONLY_ALLOWED: readonly string[];
|
|
23
|
+
export interface TmConfig {
|
|
24
|
+
/** Offload boundary in estimated tokens (estimate == threshold offloads). */
|
|
25
|
+
offloadThreshold: number;
|
|
26
|
+
/** Raw lines a preview builder may scan before summarizing. */
|
|
27
|
+
previewLines: number;
|
|
28
|
+
/** Hard preview cap in estimated tokens — preview bloat is an R4 regression. */
|
|
29
|
+
previewMaxTokens: number;
|
|
30
|
+
/** Single tm_fetch segment cap in lines. */
|
|
31
|
+
fetchMaxLines: number;
|
|
32
|
+
/** Run-payload store dir (relative to project root, or absolute). */
|
|
33
|
+
blackboardDir: string;
|
|
34
|
+
/** Trajectory store dir (relative to project root, or absolute). */
|
|
35
|
+
trajectoryDir: string;
|
|
36
|
+
/** Handle TTL in days (expire_at + physical sweep of expired run dirs). */
|
|
37
|
+
blackboardTtlDays: number;
|
|
38
|
+
/** P3 read-only command allowlist for tm_bash. */
|
|
39
|
+
bashReadonlyAllowed: string[];
|
|
40
|
+
/** Hard cap on a PTC program source string length (chars). */
|
|
41
|
+
ptcMaxProgramChars: number;
|
|
42
|
+
/** Ceiling for per-run bridge-call budget (callers may only tighten). */
|
|
43
|
+
ptcMaxCalls: number;
|
|
44
|
+
/** Ceiling for per-run error budget (callers may only tighten). */
|
|
45
|
+
ptcMaxErrors: number;
|
|
46
|
+
/** Ceiling for per-run wall-clock timeout in ms (callers may only tighten). */
|
|
47
|
+
ptcTimeoutMs: number;
|
|
48
|
+
/** Engine selection: auto (worker→inline fallback) | worker | inline. */
|
|
49
|
+
ptcEngine: "auto" | "worker" | "inline";
|
|
50
|
+
}
|
|
51
|
+
export declare const TM_CONFIG_DEFAULTS: {
|
|
52
|
+
readonly offloadThreshold: 2000;
|
|
53
|
+
readonly previewLines: 20;
|
|
54
|
+
readonly previewMaxTokens: 80;
|
|
55
|
+
readonly fetchMaxLines: 2000;
|
|
56
|
+
readonly blackboardDir: ".blackboard/";
|
|
57
|
+
readonly trajectoryDir: ".trajectory/";
|
|
58
|
+
readonly blackboardTtlDays: 7;
|
|
59
|
+
readonly ptcMaxProgramChars: 4000;
|
|
60
|
+
readonly ptcMaxCalls: 20;
|
|
61
|
+
readonly ptcMaxErrors: 3;
|
|
62
|
+
readonly ptcTimeoutMs: 60000;
|
|
63
|
+
readonly ptcEngine: "auto";
|
|
64
|
+
};
|
|
65
|
+
/** Inclusive ceilings/floors for the PTC budgets (design §4.3). */
|
|
66
|
+
export declare const PTC_BUDGET_BOUNDS: {
|
|
67
|
+
readonly maxCalls: {
|
|
68
|
+
readonly min: 1;
|
|
69
|
+
readonly max: 200;
|
|
70
|
+
};
|
|
71
|
+
readonly maxErrors: {
|
|
72
|
+
readonly min: 1;
|
|
73
|
+
readonly max: 50;
|
|
74
|
+
};
|
|
75
|
+
readonly timeoutMs: {
|
|
76
|
+
readonly min: 5000;
|
|
77
|
+
readonly max: 600000;
|
|
78
|
+
};
|
|
79
|
+
readonly programChars: {
|
|
80
|
+
readonly min: 200;
|
|
81
|
+
readonly max: 200000;
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
type EnvLike = Record<string, string | undefined>;
|
|
85
|
+
/**
|
|
86
|
+
* Parse `TM_BASH_READONLY_ALLOWED`. Unset/absent -> null (caller applies the
|
|
87
|
+
* default list). An explicitly EMPTY string parses to [] (deny-all bash) —
|
|
88
|
+
* an explicit user choice is respected; separator is comma or semicolon.
|
|
89
|
+
*/
|
|
90
|
+
export declare function parseAllowlistEnv(raw: unknown): string[] | null;
|
|
91
|
+
/** Resolve the full tm-tools config from an env-like record (default: process.env). */
|
|
92
|
+
export declare function resolveTmConfig(env?: EnvLike): TmConfig;
|
|
93
|
+
/**
|
|
94
|
+
* Token estimate — chars/4, ceil (口径 documented above). Empty input = 0.
|
|
95
|
+
*/
|
|
96
|
+
export declare function estimateTokens(text: string): number;
|
|
97
|
+
/**
|
|
98
|
+
* Offload decision. estimate == threshold ALSO offloads — the conservative
|
|
99
|
+
* boundary (HUMAN-pinned spec: "等于阈值也卸载").
|
|
100
|
+
*/
|
|
101
|
+
export declare function shouldOffload(tokens: number, threshold: number): boolean;
|
|
102
|
+
/** Collapse whitespace and hard-cap a string for messages / clue lines. */
|
|
103
|
+
export declare function shorten(text: unknown, max: number): string;
|
|
104
|
+
export {};
|
|
105
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/tm/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,+DAA+D;AAC/D,eAAO,MAAM,6BAA6B,EAAE,SAAS,MAAM,EAI1D,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,qEAAqE;IACrE,aAAa,EAAE,MAAM,CAAA;IACrB,oEAAoE;IACpE,aAAa,EAAE,MAAM,CAAA;IACrB,2EAA2E;IAC3E,iBAAiB,EAAE,MAAM,CAAA;IACzB,kDAAkD;IAClD,mBAAmB,EAAE,MAAM,EAAE,CAAA;IAE7B,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;;;;;;;;;;;;;CAarB,CAAA;AAEV,mEAAmE;AACnE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;CAKpB,CAAA;AAEV,KAAK,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;AAmBjD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,EAAE,GAAG,IAAI,CAG/D;AAED,uFAAuF;AACvF,wBAAgB,eAAe,CAAC,GAAG,GAAE,OAAqB,GAAG,QAAQ,CAiBpE;AAMD;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;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"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JIT layer-2 tools (T1.2 + T1.3) — configuration surface.
|
|
3
|
+
*
|
|
4
|
+
* Every knob resolves from the process environment with a typed default;
|
|
5
|
+
* invalid values never crash plugin startup, they fall back to the default
|
|
6
|
+
* (same fail-soft philosophy as blackboard.resolveTtlMs and
|
|
7
|
+
* envprotect.resolveEnvProtectMode).
|
|
8
|
+
*
|
|
9
|
+
* Token 口径 (estimate basis): tokens ≈ chars/4, ceil. This is a rough
|
|
10
|
+
* ASCII/code calibration; CJK text is under-counted by it (one CJK char is
|
|
11
|
+
* closer to a full token than to 0.25). Two design choices keep that honest:
|
|
12
|
+
* the conservative boundary (estimate == threshold still offloads) and the
|
|
13
|
+
* hard preview cap — a mis-estimate can only make governance MORE aggressive,
|
|
14
|
+
* never less. This口径 is pinned by test-tm-tools.mjs.
|
|
15
|
+
*
|
|
16
|
+
* Naming note: TM_BLACKBOARD_DIR (this module, run-payload store under the
|
|
17
|
+
* project root, default `.blackboard/`) is a DIFFERENT artifact from the
|
|
18
|
+
* team blackboard in blackboard.ts (`.git/opencode-team/`, plugin options).
|
|
19
|
+
* They share a philosophy (TTL sweeper is the sole cleanup path), not code.
|
|
20
|
+
*/
|
|
21
|
+
/** Default tm_bash read-only allowlist (P3, command-level). */
|
|
22
|
+
export const DEFAULT_BASH_READONLY_ALLOWED = [
|
|
23
|
+
"ls", "cat", "head", "tail", "grep", "rg", "find", "awk", "sort", "uniq",
|
|
24
|
+
"wc", "cut", "dir", "Get-Content", "Get-ChildItem", "Select-String",
|
|
25
|
+
"Measure-Object",
|
|
26
|
+
];
|
|
27
|
+
export const TM_CONFIG_DEFAULTS = {
|
|
28
|
+
offloadThreshold: 2000,
|
|
29
|
+
previewLines: 20,
|
|
30
|
+
previewMaxTokens: 80,
|
|
31
|
+
fetchMaxLines: 2000,
|
|
32
|
+
blackboardDir: ".blackboard/",
|
|
33
|
+
trajectoryDir: ".trajectory/",
|
|
34
|
+
blackboardTtlDays: 7,
|
|
35
|
+
ptcMaxProgramChars: 4000,
|
|
36
|
+
ptcMaxCalls: 20,
|
|
37
|
+
ptcMaxErrors: 3,
|
|
38
|
+
ptcTimeoutMs: 60000,
|
|
39
|
+
ptcEngine: "auto",
|
|
40
|
+
};
|
|
41
|
+
/** Inclusive ceilings/floors for the PTC budgets (design §4.3). */
|
|
42
|
+
export const PTC_BUDGET_BOUNDS = {
|
|
43
|
+
maxCalls: { min: 1, max: 200 },
|
|
44
|
+
maxErrors: { min: 1, max: 50 },
|
|
45
|
+
timeoutMs: { min: 5000, max: 600000 },
|
|
46
|
+
programChars: { min: 200, max: 200000 },
|
|
47
|
+
};
|
|
48
|
+
function envInt(env, key, def, min, max) {
|
|
49
|
+
const raw = env[key];
|
|
50
|
+
if (typeof raw !== "string" || raw.trim() === "")
|
|
51
|
+
return def;
|
|
52
|
+
const n = Number(raw.trim());
|
|
53
|
+
if (!Number.isFinite(n))
|
|
54
|
+
return def;
|
|
55
|
+
const i = Math.trunc(n);
|
|
56
|
+
if (i < min || i > max)
|
|
57
|
+
return def;
|
|
58
|
+
return i;
|
|
59
|
+
}
|
|
60
|
+
function envStr(env, key, def) {
|
|
61
|
+
const raw = env[key];
|
|
62
|
+
if (typeof raw !== "string")
|
|
63
|
+
return def;
|
|
64
|
+
const v = raw.trim();
|
|
65
|
+
return v === "" ? def : v;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Parse `TM_BASH_READONLY_ALLOWED`. Unset/absent -> null (caller applies the
|
|
69
|
+
* default list). An explicitly EMPTY string parses to [] (deny-all bash) —
|
|
70
|
+
* an explicit user choice is respected; separator is comma or semicolon.
|
|
71
|
+
*/
|
|
72
|
+
export function parseAllowlistEnv(raw) {
|
|
73
|
+
if (typeof raw !== "string")
|
|
74
|
+
return null;
|
|
75
|
+
return raw.split(/[,;]/).map((s) => s.trim()).filter(Boolean);
|
|
76
|
+
}
|
|
77
|
+
/** Resolve the full tm-tools config from an env-like record (default: process.env). */
|
|
78
|
+
export function resolveTmConfig(env = process.env) {
|
|
79
|
+
const allowlist = parseAllowlistEnv(env.TM_BASH_READONLY_ALLOWED);
|
|
80
|
+
return {
|
|
81
|
+
offloadThreshold: envInt(env, "TM_OFFLOAD_THRESHOLD", TM_CONFIG_DEFAULTS.offloadThreshold, 0, 10_000_000),
|
|
82
|
+
previewLines: envInt(env, "TM_PREVIEW_LINES", TM_CONFIG_DEFAULTS.previewLines, 1, 1000),
|
|
83
|
+
previewMaxTokens: envInt(env, "TM_PREVIEW_MAX_TOKENS", TM_CONFIG_DEFAULTS.previewMaxTokens, 10, 100_000),
|
|
84
|
+
fetchMaxLines: envInt(env, "TM_FETCH_MAX_LINES", TM_CONFIG_DEFAULTS.fetchMaxLines, 1, 1_000_000),
|
|
85
|
+
blackboardDir: envStr(env, "TM_BLACKBOARD_DIR", TM_CONFIG_DEFAULTS.blackboardDir),
|
|
86
|
+
trajectoryDir: envStr(env, "TM_TRAJECTORY_DIR", TM_CONFIG_DEFAULTS.trajectoryDir),
|
|
87
|
+
blackboardTtlDays: envInt(env, "TM_BLACKBOARD_TTL", TM_CONFIG_DEFAULTS.blackboardTtlDays, 1, 365),
|
|
88
|
+
bashReadonlyAllowed: allowlist ?? [...DEFAULT_BASH_READONLY_ALLOWED],
|
|
89
|
+
ptcMaxProgramChars: envInt(env, "TM_PTC_MAX_PROGRAM_CHARS", TM_CONFIG_DEFAULTS.ptcMaxProgramChars, PTC_BUDGET_BOUNDS.programChars.min, PTC_BUDGET_BOUNDS.programChars.max),
|
|
90
|
+
ptcMaxCalls: envInt(env, "TM_PTC_MAX_CALLS", TM_CONFIG_DEFAULTS.ptcMaxCalls, PTC_BUDGET_BOUNDS.maxCalls.min, PTC_BUDGET_BOUNDS.maxCalls.max),
|
|
91
|
+
ptcMaxErrors: envInt(env, "TM_PTC_MAX_ERRORS", TM_CONFIG_DEFAULTS.ptcMaxErrors, PTC_BUDGET_BOUNDS.maxErrors.min, PTC_BUDGET_BOUNDS.maxErrors.max),
|
|
92
|
+
ptcTimeoutMs: envInt(env, "TM_PTC_TIMEOUT_MS", TM_CONFIG_DEFAULTS.ptcTimeoutMs, PTC_BUDGET_BOUNDS.timeoutMs.min, PTC_BUDGET_BOUNDS.timeoutMs.max),
|
|
93
|
+
ptcEngine: resolveEngine(env.TM_PTC_ENGINE),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
function resolveEngine(raw) {
|
|
97
|
+
const v = typeof raw === "string" ? raw.trim().toLowerCase() : "";
|
|
98
|
+
return v === "worker" || v === "inline" ? v : "auto";
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Token estimate — chars/4, ceil (口径 documented above). Empty input = 0.
|
|
102
|
+
*/
|
|
103
|
+
export function estimateTokens(text) {
|
|
104
|
+
return Math.ceil((text?.length ?? 0) / 4);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Offload decision. estimate == threshold ALSO offloads — the conservative
|
|
108
|
+
* boundary (HUMAN-pinned spec: "等于阈值也卸载").
|
|
109
|
+
*/
|
|
110
|
+
export function shouldOffload(tokens, threshold) {
|
|
111
|
+
return tokens >= threshold;
|
|
112
|
+
}
|
|
113
|
+
/** Collapse whitespace and hard-cap a string for messages / clue lines. */
|
|
114
|
+
export function shorten(text, max) {
|
|
115
|
+
const s = String(text ?? "").replace(/\s+/g, " ").trim();
|
|
116
|
+
return s.length <= max ? s : s.slice(0, Math.max(0, max - 1)) + "…";
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/tm/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JIT layer-2 tools — permission guards (R1 pipeline).
|
|
3
|
+
*
|
|
4
|
+
* P2 (path level, tm_read / tm_grep scope): read scope = project root +
|
|
5
|
+
* blackboard dir + trajectory dir. Everything else — including `..` escapes
|
|
6
|
+
* and absolute paths outside the scopes — is rejected. Both the target and
|
|
7
|
+
* each scope are fs.realpathSync'd first (fail-closed): a junction/symlink
|
|
8
|
+
* pointing outside the scope defeats purely lexical resolve/relative checks.
|
|
9
|
+
*
|
|
10
|
+
* P3 (command level, tm_bash): a read-only allowlist gates what R6 does not
|
|
11
|
+
* already forbid. The two layers are deliberately non-conflicting:
|
|
12
|
+
* R6 governs what is FORBIDDEN (env dumps, env files — same source);
|
|
13
|
+
* the P3 allowlist governs what is PERMITTED (read-only heads only).
|
|
14
|
+
* Hardening beyond the head token: output redirection, command substitution
|
|
15
|
+
* ($()/backticks/<>()), VAR=value assignment prefixes (BASH_ENV/LD_PRELOAD/
|
|
16
|
+
* PATH borrow an allowlisted head to run arbitrary scripts — fail closed),
|
|
17
|
+
* find -delete/-exec, tail -f and Get-Content/Get-ChildItem -Wait (hang),
|
|
18
|
+
* awk system() and rg --pre are rejected even under allowlisted heads.
|
|
19
|
+
* Quoted metacharacters (`|`, `;`, `>`, single-quoted `$()`) are literal
|
|
20
|
+
* text in both dialects — one shared quote-blanking view keeps segmentation
|
|
21
|
+
* and the redirect/substitution checks from misreading them (see the
|
|
22
|
+
* blankQuoted helpers; one implementation, never two drifting copies).
|
|
23
|
+
*/
|
|
24
|
+
export interface AllowVerdict {
|
|
25
|
+
ok: boolean;
|
|
26
|
+
reason?: string;
|
|
27
|
+
suggestion?: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Classify a tm_bash command against the read-only allowlist.
|
|
31
|
+
* Every segment head (across && ; | & and newlines) must be allowlisted.
|
|
32
|
+
* Matching is case-insensitive (PowerShell is; sh spellings are unaffected).
|
|
33
|
+
*/
|
|
34
|
+
export declare function classifyReadonlyCommand(command: string, allowlist: readonly string[]): AllowVerdict;
|
|
35
|
+
/** True when `target` resolves inside `rootDir` (win32 compares case-insensitively). */
|
|
36
|
+
export declare function isInsideDir(rootDir: string, target: string): boolean;
|
|
37
|
+
export type PathScopeVerdict = {
|
|
38
|
+
ok: true;
|
|
39
|
+
abs: string;
|
|
40
|
+
} | {
|
|
41
|
+
ok: false;
|
|
42
|
+
message: string;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Resolve a requested path against the tool's directory and enforce the P2
|
|
46
|
+
* read scope (project root + extra dirs, i.e. blackboard + trajectory).
|
|
47
|
+
* Junction/symlink hardening (#6): BOTH the target and each scope dir are
|
|
48
|
+
* fs.realpathSync'd before the containment check — a purely lexical
|
|
49
|
+
* resolve/relative is defeated by a junction pointing outside the scope.
|
|
50
|
+
* Fail-closed: an unresolvable target is rejected; a scope dir that cannot
|
|
51
|
+
* be resolved (not created yet) simply cannot contain anything real and is
|
|
52
|
+
* skipped. The error message never echoes env-file style paths beyond the
|
|
53
|
+
* scope verdict itself (R6 rejections upstream carry no path text at all).
|
|
54
|
+
*/
|
|
55
|
+
export declare function assertReadablePath(baseDir: string, requested: unknown, extraDirs?: readonly string[]): PathScopeVerdict;
|
|
56
|
+
//# sourceMappingURL=guard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../src/tm/guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAMH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAuED;;;;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"}
|