@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.
Files changed (54) hide show
  1. package/README.md +157 -53
  2. package/README.zh-CN.md +137 -53
  3. package/dist/agents.d.ts.map +1 -1
  4. package/dist/agents.js +128 -26
  5. package/dist/agents.js.map +1 -1
  6. package/dist/approval-gate.d.ts +147 -0
  7. package/dist/approval-gate.d.ts.map +1 -0
  8. package/dist/approval-gate.js +471 -0
  9. package/dist/approval-gate.js.map +1 -0
  10. package/dist/commands.js +3 -3
  11. package/dist/commands.js.map +1 -1
  12. package/dist/envprotect.d.ts +234 -0
  13. package/dist/envprotect.d.ts.map +1 -0
  14. package/dist/envprotect.js +820 -0
  15. package/dist/envprotect.js.map +1 -0
  16. package/dist/index.d.ts +5 -1
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +112 -1
  19. package/dist/index.js.map +1 -1
  20. package/dist/tm/config.d.ts +105 -0
  21. package/dist/tm/config.d.ts.map +1 -0
  22. package/dist/tm/config.js +118 -0
  23. package/dist/tm/config.js.map +1 -0
  24. package/dist/tm/guard.d.ts +56 -0
  25. package/dist/tm/guard.d.ts.map +1 -0
  26. package/dist/tm/guard.js +249 -0
  27. package/dist/tm/guard.js.map +1 -0
  28. package/dist/tm/index.d.ts +41 -0
  29. package/dist/tm/index.d.ts.map +1 -0
  30. package/dist/tm/index.js +93 -0
  31. package/dist/tm/index.js.map +1 -0
  32. package/dist/tm/preview.d.ts +46 -0
  33. package/dist/tm/preview.d.ts.map +1 -0
  34. package/dist/tm/preview.js +354 -0
  35. package/dist/tm/preview.js.map +1 -0
  36. package/dist/tm/ptc.d.ts +279 -0
  37. package/dist/tm/ptc.d.ts.map +1 -0
  38. package/dist/tm/ptc.js +839 -0
  39. package/dist/tm/ptc.js.map +1 -0
  40. package/dist/tm/refs.d.ts +37 -0
  41. package/dist/tm/refs.d.ts.map +1 -0
  42. package/dist/tm/refs.js +58 -0
  43. package/dist/tm/refs.js.map +1 -0
  44. package/dist/tm/store.d.ts +95 -0
  45. package/dist/tm/store.d.ts.map +1 -0
  46. package/dist/tm/store.js +222 -0
  47. package/dist/tm/store.js.map +1 -0
  48. package/dist/tm/tools.d.ts +84 -0
  49. package/dist/tm/tools.d.ts.map +1 -0
  50. package/dist/tm/tools.js +710 -0
  51. package/dist/tm/tools.js.map +1 -0
  52. package/dist/types.d.ts +155 -0
  53. package/dist/types.d.ts.map +1 -1
  54. 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) => ({ config(cfg) { ...inject... } })
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,YAAY,CAAA;AA6BhE,QAAA,MAAM,MAAM,EAAE,cAyCb,CAAA;AAED,eAAe,MAAM,CAAA"}
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) => ({ config(cfg) { ...inject... } })
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":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EACL,0BAA0B,EAC1B,YAAY,EACZ,gBAAgB,GACjB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,qBAAqB,EACrB,eAAe,GAChB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,4BAA4B,GAC7B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE7C,+EAA+E;AAC/E,SAAS,cAAc,CAAC,IAAY,EAAE,OAAe;IACnD,OAAO;QACL,EAAE;QACF,EAAE;QACF,kDAAkD;QAClD,qBAAqB,IAAI,IAAI;QAC7B,oFAAoF;QACpF,4EAA4E;QAC5E,mEAAmE;QACnE,iFAAiF;QACjF,mFAAmF;QACnF,uEAAuE;QACvE,kFAAkF;QAClF,mBAAmB;QACnB,yEAAyE,OAAO,gCAAgC;QAChH,sFAAsF;KACvF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,MAAM,MAAM,GAAmB;IAC7B,EAAE,EAAE,WAAW;IAEf,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAC/B,wEAAwE;QACxE,MAAM,SAAS,GACb,OAAO,KAAK,EAAE,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YAChE,CAAC,CAAC,KAAK,CAAC,SAAS;YACjB,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;QACnB,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,gBAAgB,CAAA;QAC7E,MAAM,SAAS,GAAG,0BAA0B,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;QAC9D,MAAM,IAAI,GAAG,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;QAE/C,oEAAoE;QACpE,wEAAwE;QACxE,wEAAwE;QACxE,uEAAuE;QACvE,oEAAoE;QACpE,+CAA+C;QAC/C,MAAM,cAAc,GAAG,qBAAqB,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;QACxE,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAA;QAE7E,6EAA6E;QAC7E,2EAA2E;QAC3E,0EAA0E;QAC1E,kEAAkE;QAClE,yEAAyE;QACzE,gEAAgE;QAChE,MAAM,YAAY,GAChB,cAAc,KAAK,KAAK,IAAI,4BAA4B,CAAC,KAAK,EAAE,MAAM,CAAC;YACrE,CAAC,CAAC,kBAAkB,CAAC;gBACjB,MAAM,EAAE,KAAK,EAAE,MAAM;gBACrB,SAAS,EAAE,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC;aAC5C,CAAC;YACJ,CAAC,CAAC,IAAI,CAAA;QACV,IAAI,YAAY;YAAE,YAAY,CAAC,KAAK,EAAE,CAAA;QAEtC,yEAAyE;QACzE,sEAAsE;QACtE,wEAAwE;QACxE,wEAAwE;QACxE,uEAAuE;QACvE,wEAAwE;QACxE,sEAAsE;QACtE,4DAA4D;QAC5D,iEAAiE;QACjE,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAA;QAE5C,MAAM,cAAc,GAAG,oBAAoB,CACzC,KAAK,EAAE,MAAM,EACb,cAAc,EACd,eAAe,EACf,EAAE,eAAe,EAAE,CAAC,SAAkB,EAAE,EAAE,CAAC,YAAY,EAAE,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK;YACnF,WAAW,EAAE,CAAC,SAAkB,EAAE,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC,SAAS,CAAC,IAAI,KAAK,EAAE,CACzF,CAAA;QAED,mFAAmF;QACnF,2EAA2E;QAC3E,uEAAuE;QACvE,2EAA2E;QAC3E,2EAA2E;QAC3E,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE;YAC3C,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,eAAe;SACvB,CAAC,CAAA;QAEF,OAAO;YACL,iEAAiE;YACjE,MAAM,CAAC,GAAmB;gBACxB,IAAI,CAAC,GAAG,CAAC,KAAK;oBAAE,GAAG,CAAC,KAAK,GAAG,EAAE,CAAA;gBAC9B,sEAAsE;gBACtE,oEAAoE;gBACpE,qEAAqE;gBACrE,qEAAqE;gBACrE,qEAAqE;gBACrE,gEAAgE;gBAChE,qEAAqE;gBACrE,MAAM,OAAO,GAAG,eAAe,CAAC,cAAc,EAAE,YAAY,KAAK,IAAI,CAAC,CAAA;gBACtE,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;oBACjD,mEAAmE;oBACnE,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;wBAAE,SAAQ;oBAC7B,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU;wBAC/B,CAAC,CAAC;4BACE,GAAG,GAAG,CAAC,UAAU;4BACjB,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;yBAChE;wBACH,CAAC,CAAC,GAAG,CAAC,UAAU,CAAA;oBAClB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG;wBAChB,GAAG,GAAG;wBACN,UAAU;wBACV,MAAM,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM;qBACjE,CAAA;oBACD,mEAAmE;oBACnE,2DAA2D;oBAC3D,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,KAAK,OAAO;wBAAE,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;gBACrF,CAAC;gBAED,IAAI,CAAC,GAAG,CAAC,OAAO;oBAAE,GAAG,CAAC,OAAO,GAAG,EAAE,CAAA;gBAClC,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACnD,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;wBAAE,SAAQ;oBAC/B,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,CAAA;gBACzB,CAAC;gBAED,uEAAuE;gBACvE,MAAM,OAAO,GAAG,OAAO,EAAE,YAAY,KAAK,KAAK,CAAA;gBAC/C,IAAI,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,aAAa,KAAK,OAAO,CAAC,EAAE,CAAC;oBACrE,GAAG,CAAC,aAAa,GAAG,MAAM,CAAA;gBAC5B,CAAC;YACH,CAAC;YAED,yEAAyE;YACzE,qBAAqB,EAAE,cAAc;YAErC,yEAAyE;YACzE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAwB,EAAE,EAAE;gBACzC,IAAI,CAAC,YAAY;oBAAE,OAAM;gBACzB,qEAAqE;gBACrE,qEAAqE;gBACrE,qEAAqE;gBACrE,oEAAoE;gBACpE,kEAAkE;gBAClE,gEAAgE;gBAChE,IAAI,KAAK,EAAE,IAAI,KAAK,iBAAiB,EAAE,CAAC;oBACtC,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,EAAE,IAElB,CAAA;oBACb,IACE,IAAI;wBACJ,IAAI,CAAC,IAAI,KAAK,MAAM;wBACpB,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;wBAC9B,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ;wBAClC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAClC,CAAC;wBACD,YAAY,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;oBAClD,CAAC;oBACD,OAAM;gBACR,CAAC;gBACD,YAAY,CAAC,WAAW,CAAC,KAAwB,CAAC,CAAA;YACpD,CAAC;YACD,sEAAsE;YACtE,gEAAgE;YAChE,cAAc,EAAE,CAAC,KAA6C,EAAE,EAAE;gBAChE,IAAI,CAAC,YAAY;oBAAE,OAAM;gBACzB,IACE,KAAK;oBACL,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;oBACnC,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;oBAC/B,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EACnC,CAAC;oBACD,YAAY,CAAC,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;gBACnD,CAAC;YACH,CAAC;YACD,OAAO,EAAE,GAAG,EAAE;gBACZ,YAAY,EAAE,OAAO,EAAE,CAAA;YACzB,CAAC;YAED,4EAA4E;YAC5E,IAAI,EAAE,SAAS,CAAC,KAAK;SACtB,CAAA;IACH,CAAC;CACF,CAAA;AAED,eAAe,MAAM,CAAA"}
@@ -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":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,+DAA+D;AAC/D,MAAM,CAAC,MAAM,6BAA6B,GAAsB;IAC9D,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM;IACxE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe;IACnE,gBAAgB;CACjB,CAAA;AAgCD,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,gBAAgB,EAAE,IAAI;IACtB,YAAY,EAAE,EAAE;IAChB,gBAAgB,EAAE,EAAE;IACpB,aAAa,EAAE,IAAI;IACnB,aAAa,EAAE,cAAc;IAC7B,aAAa,EAAE,cAAc;IAC7B,iBAAiB,EAAE,CAAC;IACpB,kBAAkB,EAAE,IAAI;IACxB,WAAW,EAAE,EAAE;IACf,YAAY,EAAE,CAAC;IACf,YAAY,EAAE,KAAK;IACnB,SAAS,EAAE,MAAM;CACT,CAAA;AAEV,mEAAmE;AACnE,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE;IAC9B,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;IAC9B,SAAS,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE;IACrC,YAAY,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE;CAC/B,CAAA;AAIV,SAAS,MAAM,CAAC,GAAY,EAAE,GAAW,EAAE,GAAW,EAAE,GAAW,EAAE,GAAW;IAC9E,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;IACpB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,GAAG,CAAA;IAC5D,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;IAC5B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,GAAG,CAAA;IACnC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACvB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG;QAAE,OAAO,GAAG,CAAA;IAClC,OAAO,CAAC,CAAA;AACV,CAAC;AAED,SAAS,MAAM,CAAC,GAAY,EAAE,GAAW,EAAE,GAAW;IACpD,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;IACpB,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAA;IACvC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IACpB,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AAC3B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAY;IAC5C,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA;IACxC,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;AAC/D,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,eAAe,CAAC,MAAe,OAAO,CAAC,GAAG;IACxD,MAAM,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAA;IACjE,OAAO;QACL,gBAAgB,EAAE,MAAM,CAAC,GAAG,EAAE,sBAAsB,EAAE,kBAAkB,CAAC,gBAAgB,EAAE,CAAC,EAAE,UAAU,CAAC;QACzG,YAAY,EAAE,MAAM,CAAC,GAAG,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,YAAY,EAAE,CAAC,EAAE,IAAI,CAAC;QACvF,gBAAgB,EAAE,MAAM,CAAC,GAAG,EAAE,uBAAuB,EAAE,kBAAkB,CAAC,gBAAgB,EAAE,EAAE,EAAE,OAAO,CAAC;QACxG,aAAa,EAAE,MAAM,CAAC,GAAG,EAAE,oBAAoB,EAAE,kBAAkB,CAAC,aAAa,EAAE,CAAC,EAAE,SAAS,CAAC;QAChG,aAAa,EAAE,MAAM,CAAC,GAAG,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,aAAa,CAAC;QACjF,aAAa,EAAE,MAAM,CAAC,GAAG,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,aAAa,CAAC;QACjF,iBAAiB,EAAE,MAAM,CAAC,GAAG,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,iBAAiB,EAAE,CAAC,EAAE,GAAG,CAAC;QACjG,mBAAmB,EAAE,SAAS,IAAI,CAAC,GAAG,6BAA6B,CAAC;QACpE,kBAAkB,EAAE,MAAM,CAAC,GAAG,EAAE,0BAA0B,EAAE,kBAAkB,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,YAAY,CAAC,GAAG,EAAE,iBAAiB,CAAC,YAAY,CAAC,GAAG,CAAC;QAC1K,WAAW,EAAE,MAAM,CAAC,GAAG,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,WAAW,EAAE,iBAAiB,CAAC,QAAQ,CAAC,GAAG,EAAE,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC;QAC5I,YAAY,EAAE,MAAM,CAAC,GAAG,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,YAAY,EAAE,iBAAiB,CAAC,SAAS,CAAC,GAAG,EAAE,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC;QACjJ,YAAY,EAAE,MAAM,CAAC,GAAG,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,YAAY,EAAE,iBAAiB,CAAC,SAAS,CAAC,GAAG,EAAE,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC;QACjJ,SAAS,EAAE,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC;KAC5C,CAAA;AACH,CAAC;AAED,SAAS,aAAa,CAAC,GAAY;IACjC,MAAM,CAAC,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IACjE,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;AACtD,CAAC;AACD;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;AAC3C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,SAAiB;IAC7D,OAAO,MAAM,IAAI,SAAS,CAAA;AAC5B,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,OAAO,CAAC,IAAa,EAAE,GAAW;IAChD,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;IACxD,OAAO,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;AACrE,CAAC"}
@@ -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"}