@te-river/opencode-team-mode 1.5.10 → 1.5.12

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 (89) hide show
  1. package/README.md +143 -56
  2. package/README.zh-CN.md +116 -47
  3. package/dist/agents.d.ts.map +1 -1
  4. package/dist/agents.js +17 -11
  5. package/dist/agents.js.map +1 -1
  6. package/dist/approval-gate.d.ts +54 -16
  7. package/dist/approval-gate.d.ts.map +1 -1
  8. package/dist/approval-gate.js +163 -42
  9. package/dist/approval-gate.js.map +1 -1
  10. package/dist/prompts/lead.d.ts +1 -1
  11. package/dist/prompts/lead.d.ts.map +1 -1
  12. package/dist/prompts/lead.js +22 -3
  13. package/dist/prompts/lead.js.map +1 -1
  14. package/dist/prompts/shared.d.ts +1 -1
  15. package/dist/prompts/shared.d.ts.map +1 -1
  16. package/dist/prompts/shared.js +154 -119
  17. package/dist/prompts/shared.js.map +1 -1
  18. package/dist/prompts/specialists.d.ts +2 -2
  19. package/dist/prompts/specialists.d.ts.map +1 -1
  20. package/dist/prompts/specialists.js +40 -11
  21. package/dist/prompts/specialists.js.map +1 -1
  22. package/dist/tm/args-schema.d.ts +25 -1
  23. package/dist/tm/args-schema.d.ts.map +1 -1
  24. package/dist/tm/args-schema.js +149 -39
  25. package/dist/tm/args-schema.js.map +1 -1
  26. package/dist/tm/browser.d.ts +203 -18
  27. package/dist/tm/browser.d.ts.map +1 -1
  28. package/dist/tm/browser.js +853 -111
  29. package/dist/tm/browser.js.map +1 -1
  30. package/dist/tm/config.d.ts +61 -0
  31. package/dist/tm/config.d.ts.map +1 -1
  32. package/dist/tm/config.js +55 -1
  33. package/dist/tm/config.js.map +1 -1
  34. package/dist/tm/index.d.ts +7 -5
  35. package/dist/tm/index.d.ts.map +1 -1
  36. package/dist/tm/index.js +38 -4
  37. package/dist/tm/index.js.map +1 -1
  38. package/dist/tm/memory.d.ts +88 -10
  39. package/dist/tm/memory.d.ts.map +1 -1
  40. package/dist/tm/memory.js +881 -99
  41. package/dist/tm/memory.js.map +1 -1
  42. package/dist/tm/pipelines.d.ts +26 -3
  43. package/dist/tm/pipelines.d.ts.map +1 -1
  44. package/dist/tm/pipelines.js +167 -11
  45. package/dist/tm/pipelines.js.map +1 -1
  46. package/dist/tm/ptc/budgets.d.ts +22 -1
  47. package/dist/tm/ptc/budgets.d.ts.map +1 -1
  48. package/dist/tm/ptc/budgets.js +87 -8
  49. package/dist/tm/ptc/budgets.js.map +1 -1
  50. package/dist/tm/ptc/contract.d.ts +49 -9
  51. package/dist/tm/ptc/contract.d.ts.map +1 -1
  52. package/dist/tm/ptc/contract.js +41 -3
  53. package/dist/tm/ptc/contract.js.map +1 -1
  54. package/dist/tm/ptc/driver.d.ts +5 -2
  55. package/dist/tm/ptc/driver.d.ts.map +1 -1
  56. package/dist/tm/ptc/driver.js +47 -15
  57. package/dist/tm/ptc/driver.js.map +1 -1
  58. package/dist/tm/ptc/engines.d.ts +15 -4
  59. package/dist/tm/ptc/engines.d.ts.map +1 -1
  60. package/dist/tm/ptc/engines.js +281 -28
  61. package/dist/tm/ptc/engines.js.map +1 -1
  62. package/dist/tm/ptc/index.d.ts +4 -4
  63. package/dist/tm/ptc/index.d.ts.map +1 -1
  64. package/dist/tm/ptc/index.js +2 -2
  65. package/dist/tm/ptc/index.js.map +1 -1
  66. package/dist/tm/ptc/pscan.d.ts +20 -1
  67. package/dist/tm/ptc/pscan.d.ts.map +1 -1
  68. package/dist/tm/ptc/pscan.js +328 -14
  69. package/dist/tm/ptc/pscan.js.map +1 -1
  70. package/dist/tm/ptc/summary.d.ts.map +1 -1
  71. package/dist/tm/ptc/summary.js +23 -1
  72. package/dist/tm/ptc/summary.js.map +1 -1
  73. package/dist/tm/ptc/tool.d.ts +34 -3
  74. package/dist/tm/ptc/tool.d.ts.map +1 -1
  75. package/dist/tm/ptc/tool.js +117 -20
  76. package/dist/tm/ptc/tool.js.map +1 -1
  77. package/dist/tm/search.d.ts +83 -14
  78. package/dist/tm/search.d.ts.map +1 -1
  79. package/dist/tm/search.js +440 -45
  80. package/dist/tm/search.js.map +1 -1
  81. package/dist/tm/shell-bridge.d.ts +14 -1
  82. package/dist/tm/shell-bridge.d.ts.map +1 -1
  83. package/dist/tm/shell-bridge.js +57 -10
  84. package/dist/tm/shell-bridge.js.map +1 -1
  85. package/dist/tm/webfetch.d.ts +33 -8
  86. package/dist/tm/webfetch.d.ts.map +1 -1
  87. package/dist/tm/webfetch.js +131 -20
  88. package/dist/tm/webfetch.js.map +1 -1
  89. package/package.json +5 -2
package/dist/agents.js CHANGED
@@ -76,8 +76,11 @@ const NEVER_ALLOWED = [
76
76
  "skill",
77
77
  "question",
78
78
  ];
79
- /** Built-ins granted per agent; every one NOT granted is denied. todowrite
80
- * and question are LEAD-ONLY grants (see the whitelist call below): the
79
+ /** Built-ins granted per agent; every one NOT granted is denied. task,
80
+ * todowrite and question are LEAD-ONLY grants (see the whitelist calls
81
+ * below): only the lead dispatches — specialists spawning sub-agents is
82
+ * the nesting the T3 task-reclaim closed (architect and reviewer lost
83
+ * "task"; the matrix deny is zero-bypass, live-verified T0.4③). The
81
84
  * lead's prompt MANDATES a todo list ("your state memory is the todo
82
85
  * list") and batched blocking questions — denying those tools to the lead
83
86
  * made the prompt unfulfillable; specialists answer through the lead
@@ -169,12 +172,14 @@ const architect = {
169
172
  "module breakdown before implementation.",
170
173
  prompt: ARCHITECT_PROMPT,
171
174
  color: "#38BDF8", // sky blue
172
- // Whitelist: tm_* x4 + task dispatch; tm_webfetch DENIED (not a network
173
- // role). Fully read-only by design (T2.1): output lives in the reply; if
174
- // a board artifact is ever dispatched, the BLACKBOARD WRITE FAILED
175
- // fallback hands the content to the lead inline (see Blackboard rules).
175
+ // Whitelist: tm_* x4 only (T3 task-reclaim: "task" DROPPED — no
176
+ // sub-agents for sub-agents, the lead is the only dispatcher);
177
+ // tm_webfetch DENIED (not a network role). Fully read-only by design
178
+ // (T2.1): output lives in the reply; if a board artifact is ever
179
+ // dispatched, the BLACKBOARD WRITE FAILED fallback hands the content to
180
+ // the lead inline (see Blackboard rules).
176
181
  // No bash — unchanged from the pre-T2.1 architect bash:deny posture.
177
- permission: whitelist("task"),
182
+ permission: whitelist(),
178
183
  temperature: 0.2,
179
184
  };
180
185
  const implementer = {
@@ -199,12 +204,13 @@ const reviewer = {
199
204
  "any non-trivial change.",
200
205
  prompt: REVIEWER_PROMPT,
201
206
  color: "#FB923C", // orange
202
- // Whitelist: tm_* x4 + task dispatch + bash; tm_webfetch DENIED (not a
203
- // network role). No edit/write (T2.1): findings travel in the reply
204
- // skeleton; a dispatched board artifact rides the BLACKBOARD WRITE FAILED
207
+ // Whitelist: tm_* x4 + bash; tm_webfetch DENIED (not a network role).
208
+ // T3 task-reclaim: "task" DROPPED (only the lead dispatches). No
209
+ // edit/write (T2.1): findings travel in the reply skeleton; a dispatched
210
+ // board artifact rides the BLACKBOARD WRITE FAILED
205
211
  // inline fallback (see Blackboard rules). bash backs the evidence
206
212
  // standard — the reviewer must be able to run npm test / tsc itself.
207
- permission: whitelist("task", "bash"),
213
+ permission: whitelist("bash"),
208
214
  temperature: 0.2,
209
215
  };
210
216
  const tester = {
@@ -1 +1 @@
1
- {"version":3,"file":"agents.js","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"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"}
@@ -63,28 +63,49 @@
63
63
  * no-op (events are the sole pending signal there).
64
64
  */
65
65
  import type { PermissionEvent } from "./types.js";
66
- /** Default timeout, in minutes, before an unanswered dialog is auto-rejected. */
67
- export declare const DEFAULT_ASK_TIMEOUT_MIN = 10;
66
+ /** Default timeout, in minutes, before an unanswered dialog is auto-rejected.
67
+ * 1 min (user directive) — an unanswered dialog no longer hangs for 10.
68
+ * A short timer is safe because a reject that lands on an already-closed
69
+ * request is benign; see `MIN_ASK_TIMEOUT_MIN` for the full rationale. */
70
+ export declare const DEFAULT_ASK_TIMEOUT_MIN = 1;
68
71
  /**
69
- * Hard floor (minutes) for the auto-reject timeout. Measured live on the
70
- * OpenCode Desktop: a `permission.replied` (human answered "once") reaches
71
- * the plugin through the host event bus ~120s LATE — a 1-minute timer
72
- * therefore fires BEFORE the cancel arrives and auto-rejects the just-
73
- * approved request on a dead id (4xx → permanent degraded, the D4
74
- * double-reject race). 3 min = observed ~120s lag + margin; in-range
75
- * values below the floor clamp UP to it (a longer timeout is always the
76
- * safe direction — the dialog just stays open a bit longer).
72
+ * Hard floor (minutes) for the auto-reject timeout. The HISTORIC 3-min
73
+ * floor existed to dodge the measured ~120s `permission.replied` bus lag:
74
+ * a shorter timer would fire before the cancel arrives and auto-reject a
75
+ * just-approved request. That lag, though, is the HOST DELIVERING the
76
+ * replied event to the plugin over the bus — NOT the host resolving the
77
+ * user's click: an approval takes effect instantly host-side, so the
78
+ * plugin's late reject simply targets an already-closed request id → 404.
79
+ * T2's `classifyReplyFailure` maps that outcome to the benign
80
+ * `already-closed` verdict (it never flips the gate to `degraded`, and the
81
+ * approved command runs either way); `onReplied` records a reply landing
82
+ * after the auto-reject as `late-<verdict>` for observability. With that
83
+ * classification in place a short timeout no longer disables the gate, so
84
+ * the floor drops to 1 minute (user directive). Trade-off: an UNANSWERED
85
+ * dialog auto-rejects after 1 min — a user who stepped away re-triggers
86
+ * the command. In-range values below the floor still clamp UP to it.
87
+ *
88
+ * This is the FALLBACK default of the floor. The live floor comes from the
89
+ * P0 config knob `TM_ASK_TIMEOUT_FLOOR_MIN`
90
+ * (`resolveTmConfig().askTimeoutFloorMin`, itself defaulted to 1).
77
91
  */
78
- export declare const MIN_ASK_TIMEOUT_MIN = 3;
92
+ export declare const MIN_ASK_TIMEOUT_MIN = 1;
79
93
  /** The verdict vocabulary recorded in the audit trail (privacy: no command
80
- * text, path, variable name or value is ever logged). */
81
- export type ApprovalVerdict = "ask" | "allowed-once" | "allowed-always" | "rejected" | "timeout-rejected" | "degraded";
94
+ * text, path, variable name or value is ever logged). `already-closed` /
95
+ * `rejected-shape-bug` split the old blanket `degraded` on a failed reply by
96
+ * `classifyReplyFailure`; a late reply past the auto-reject is recorded as a
97
+ * dynamic `late-<verdict>` string (observability only — never re-runs or
98
+ * revives the command). */
99
+ export type ApprovalVerdict = "ask" | "allowed-once" | "allowed-always" | "rejected" | "timeout-rejected" | "already-closed" | "rejected-shape-bug" | "degraded";
82
100
  /**
83
101
  * Resolve `TM_ASK_TIMEOUT_MIN`. Unset / blank / non-numeric / <1 / >1440
84
- * (24h) fall back to the 10-minute default — a mistyped value can never
102
+ * (24h) fall back to the 1-minute default — a mistyped value can never
85
103
  * disable the timeout or make it absurdly long. Valid values below the
86
- * 3-minute bus-lag floor clamp UP to it (1→3, 2→3; see
87
- * `MIN_ASK_TIMEOUT_MIN` for the measured ~120s replied-event lag).
104
+ * floor clamp UP to it — the floor is the P0 config knob
105
+ * `TM_ASK_TIMEOUT_FLOOR_MIN` (`resolveTmConfig().askTimeoutFloorMin`,
106
+ * default 1). The historic ~120s bus-lag reason for a 3-min floor is
107
+ * obsolete: a late reject on an already-closed id is benign
108
+ * `already-closed`, not a degraded flip (see `MIN_ASK_TIMEOUT_MIN`).
88
109
  */
89
110
  export declare function resolveAskTimeoutMs(env?: Record<string, string | undefined>): number;
90
111
  type TimerHandle = unknown;
@@ -153,6 +174,23 @@ export interface ApprovalGate {
153
174
  /** Number of pending requests currently being timed (tests / introspection). */
154
175
  pendingSize(): number;
155
176
  }
177
+ /** How a FAILED permission-reply call should be treated by the gate. */
178
+ export type ReplyFailureClass = "benign-closed" | "param-shape" | "transport";
179
+ /**
180
+ * Classify a reply-call failure so the gate no longer flips permanently
181
+ * `degraded` on a harmless close. `unwrapSdkEnvelope` has already hoisted the
182
+ * HTTP status onto the thrown envelope error; a genuine `Promise.reject`
183
+ * arrives as a plain Error with no status.
184
+ * - `benign-closed`: 404, or a NotFound/PermissionNotFound name/_tag — the
185
+ * dialog was ALREADY closed on the host (the D4 late-reply race): our
186
+ * reject was a no-op, so the popup path stays trustworthy.
187
+ * - `param-shape`: 400, or a BadRequest/InvalidRequest name/_tag — our
188
+ * reply body/params are wrong for this host: a real integration bug.
189
+ * - `transport`: everything else — a genuine Error, a 5xx, or an empty /
190
+ * status-less body — we could not reach or close the dialog.
191
+ * Reads only the error CLASS + status number (privacy: never message text).
192
+ */
193
+ export declare function classifyReplyFailure(err: unknown): ReplyFailureClass;
156
194
  /** True when the client exposes a permission-reply path at all. index.ts
157
195
  * arms the gate ONLY for such a client — fail-closed otherwise (no armed
158
196
  * auto-reject ⇒ the R6 hook keeps hard-throwing every env read). */
@@ -1 +1 @@
1
- {"version":3,"file":"approval-gate.d.ts","sourceRoot":"","sources":["../src/approval-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAGjD,iFAAiF;AACjF,eAAO,MAAM,uBAAuB,KAAK,CAAA;AAEzC;;;;;;;;;GASG;AACH,eAAO,MAAM,mBAAmB,IAAI,CAAA;AAiBpC;0DAC0D;AAC1D,MAAM,MAAM,eAAe,GACvB,KAAK,GACL,cAAc,GACd,gBAAgB,GAChB,UAAU,GACV,kBAAkB,GAClB,UAAU,CAAA;AAEd;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GAAG,MAAM,CAQjG;AAED,KAAK,WAAW,GAAG,OAAO,CAAA;AAE1B,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,EAAE,EAAE,MAAM,KAAK,WAAW,CAAA;IACzD,cAAc,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAA;CAC9C;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,2EAA2E;IAC3E,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAClB;;;iFAG6E;IAC7E,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC;AAED,MAAM,WAAW,YAAY;IAC3B,6EAA6E;IAC7E,WAAW,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAA;IACzC,2EAA2E;IAC3E,KAAK,IAAI,IAAI,CAAA;IACb,2CAA2C;IAC3C,OAAO,IAAI,IAAI,CAAA;IACf,yEAAyE;IACzE,OAAO,IAAI,OAAO,CAAA;IAClB;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACrC;;8DAE0D;IAC1D,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACvC;;;;8EAI0E;IAC1E,mBAAmB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7C;;;;;;;;;;;;;;OAcG;IACH,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3C;uFACmF;IACnF,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IAC1C,gFAAgF;IAChF,WAAW,IAAI,MAAM,CAAA;CACtB;AA6GD;;qEAEqE;AACrE,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAErE;AAgBD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,YAAY,CA+QvE"}
1
+ {"version":3,"file":"approval-gate.d.ts","sourceRoot":"","sources":["../src/approval-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAIjD;;;2EAG2E;AAC3E,eAAO,MAAM,uBAAuB,IAAI,CAAA;AAExC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,mBAAmB,IAAI,CAAA;AAkBpC;;;;;4BAK4B;AAC5B,MAAM,MAAM,eAAe,GACvB,KAAK,GACL,cAAc,GACd,gBAAgB,GAChB,UAAU,GACV,kBAAkB,GAClB,gBAAgB,GAChB,oBAAoB,GACpB,UAAU,CAAA;AAEd;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GAAG,MAAM,CAWjG;AAED,KAAK,WAAW,GAAG,OAAO,CAAA;AAE1B,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,EAAE,EAAE,MAAM,KAAK,WAAW,CAAA;IACzD,cAAc,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAA;CAC9C;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,2EAA2E;IAC3E,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAClB;;;iFAG6E;IAC7E,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC;AAED,MAAM,WAAW,YAAY;IAC3B,6EAA6E;IAC7E,WAAW,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAA;IACzC,2EAA2E;IAC3E,KAAK,IAAI,IAAI,CAAA;IACb,2CAA2C;IAC3C,OAAO,IAAI,IAAI,CAAA;IACf,yEAAyE;IACzE,OAAO,IAAI,OAAO,CAAA;IAClB;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACrC;;8DAE0D;IAC1D,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACvC;;;;8EAI0E;IAC1E,mBAAmB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7C;;;;;;;;;;;;;;OAcG;IACH,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3C;uFACmF;IACnF,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IAC1C,gFAAgF;IAChF,WAAW,IAAI,MAAM,CAAA;CACtB;AAuED,wEAAwE;AACxE,MAAM,MAAM,iBAAiB,GAAG,eAAe,GAAG,aAAa,GAAG,WAAW,CAAA;AAE7E;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,iBAAiB,CAgBpE;AA8DD;;qEAEqE;AACrE,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAErE;AAyBD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,GAAG,YAAY,CAqUvE"}
@@ -63,19 +63,34 @@
63
63
  * no-op (events are the sole pending signal there).
64
64
  */
65
65
  import { ENV_PROTECT_SERVICE, categorizePermission } from "./envprotect.js";
66
- /** Default timeout, in minutes, before an unanswered dialog is auto-rejected. */
67
- export const DEFAULT_ASK_TIMEOUT_MIN = 10;
66
+ import { resolveTmConfig } from "./tm/config.js";
67
+ /** Default timeout, in minutes, before an unanswered dialog is auto-rejected.
68
+ * 1 min (user directive) — an unanswered dialog no longer hangs for 10.
69
+ * A short timer is safe because a reject that lands on an already-closed
70
+ * request is benign; see `MIN_ASK_TIMEOUT_MIN` for the full rationale. */
71
+ export const DEFAULT_ASK_TIMEOUT_MIN = 1;
68
72
  /**
69
- * Hard floor (minutes) for the auto-reject timeout. Measured live on the
70
- * OpenCode Desktop: a `permission.replied` (human answered "once") reaches
71
- * the plugin through the host event bus ~120s LATE — a 1-minute timer
72
- * therefore fires BEFORE the cancel arrives and auto-rejects the just-
73
- * approved request on a dead id (4xx → permanent degraded, the D4
74
- * double-reject race). 3 min = observed ~120s lag + margin; in-range
75
- * values below the floor clamp UP to it (a longer timeout is always the
76
- * safe direction — the dialog just stays open a bit longer).
73
+ * Hard floor (minutes) for the auto-reject timeout. The HISTORIC 3-min
74
+ * floor existed to dodge the measured ~120s `permission.replied` bus lag:
75
+ * a shorter timer would fire before the cancel arrives and auto-reject a
76
+ * just-approved request. That lag, though, is the HOST DELIVERING the
77
+ * replied event to the plugin over the bus — NOT the host resolving the
78
+ * user's click: an approval takes effect instantly host-side, so the
79
+ * plugin's late reject simply targets an already-closed request id → 404.
80
+ * T2's `classifyReplyFailure` maps that outcome to the benign
81
+ * `already-closed` verdict (it never flips the gate to `degraded`, and the
82
+ * approved command runs either way); `onReplied` records a reply landing
83
+ * after the auto-reject as `late-<verdict>` for observability. With that
84
+ * classification in place a short timeout no longer disables the gate, so
85
+ * the floor drops to 1 minute (user directive). Trade-off: an UNANSWERED
86
+ * dialog auto-rejects after 1 min — a user who stepped away re-triggers
87
+ * the command. In-range values below the floor still clamp UP to it.
88
+ *
89
+ * This is the FALLBACK default of the floor. The live floor comes from the
90
+ * P0 config knob `TM_ASK_TIMEOUT_FLOOR_MIN`
91
+ * (`resolveTmConfig().askTimeoutFloorMin`, itself defaulted to 1).
77
92
  */
78
- export const MIN_ASK_TIMEOUT_MIN = 3;
93
+ export const MIN_ASK_TIMEOUT_MIN = 1;
79
94
  /** Poll cadence (ms) that re-scans pending permissions in case an event was
80
95
  * missed — only meaningful when the client exposes a list capability. */
81
96
  const POLL_INTERVAL_MS = 60 * 1000;
@@ -85,15 +100,19 @@ const POLL_INTERVAL_MS = 60 * 1000;
85
100
  * window only sacrifices the timeout for brand-new asks of the same session
86
101
  * for this short period, never a self-allow. */
87
102
  const GHOST_ASK_WINDOW_MS = 60 * 1000;
88
- /** Cap on the closed-permission-id tombstone set (ids are unique, so the
89
- * set is purely an anti-ghost cache — pruning oldest is sufficient). */
103
+ /** Cap on the closed-permission-id tombstone LRU (ids are unique, so it is
104
+ * purely an anti-ghost cache + late-verdict provenance store — pruning the
105
+ * oldest is sufficient). */
90
106
  const MAX_TOMBSTONES = 500;
91
107
  /**
92
108
  * Resolve `TM_ASK_TIMEOUT_MIN`. Unset / blank / non-numeric / <1 / >1440
93
- * (24h) fall back to the 10-minute default — a mistyped value can never
109
+ * (24h) fall back to the 1-minute default — a mistyped value can never
94
110
  * disable the timeout or make it absurdly long. Valid values below the
95
- * 3-minute bus-lag floor clamp UP to it (1→3, 2→3; see
96
- * `MIN_ASK_TIMEOUT_MIN` for the measured ~120s replied-event lag).
111
+ * floor clamp UP to it — the floor is the P0 config knob
112
+ * `TM_ASK_TIMEOUT_FLOOR_MIN` (`resolveTmConfig().askTimeoutFloorMin`,
113
+ * default 1). The historic ~120s bus-lag reason for a 3-min floor is
114
+ * obsolete: a late reject on an already-closed id is benign
115
+ * `already-closed`, not a degraded flip (see `MIN_ASK_TIMEOUT_MIN`).
97
116
  */
98
117
  export function resolveAskTimeoutMs(env = process.env) {
99
118
  const raw = env.TM_ASK_TIMEOUT_MIN;
@@ -105,7 +124,10 @@ export function resolveAskTimeoutMs(env = process.env) {
105
124
  const min = Math.trunc(n);
106
125
  if (min < 1 || min > 1440)
107
126
  return DEFAULT_ASK_TIMEOUT_MIN * 60 * 1000;
108
- return Math.max(min, MIN_ASK_TIMEOUT_MIN) * 60 * 1000;
127
+ // Floor read from the config knob (bounded to [1,1440] by envInt) so a
128
+ // stricter posture can raise it WITHOUT a source change; default is 1.
129
+ const floorMin = resolveTmConfig(env).askTimeoutFloorMin;
130
+ return Math.max(min, floorMin) * 60 * 1000;
109
131
  }
110
132
  /** Best-effort structured audit; a failing log endpoint never breaks the gate. */
111
133
  function auditAsk(client, tool, category, verdict) {
@@ -138,8 +160,16 @@ function auditAsk(client, tool, category, verdict) {
138
160
  function unwrapSdkEnvelope(res) {
139
161
  if (res && typeof res === "object" && "error" in res) {
140
162
  const err = res.error;
141
- if (err)
142
- throw err;
163
+ if (err) {
164
+ // Carry the HTTP status ONTO the thrown error. On the real v1 host the
165
+ // status sits at `res.response.status` (NOT on the error body), and
166
+ // `classifyReplyFailure` needs it to tell a benign 404 (dialog already
167
+ // closed — the D4 late-reply race) from a shape-bug 400 / a transport
168
+ // failure. Falls back to an error-body status, then undefined.
169
+ const status = res.response?.status ??
170
+ err.status;
171
+ throw Object.assign(err, { status });
172
+ }
143
173
  }
144
174
  return res;
145
175
  }
@@ -158,6 +188,42 @@ function errorDiagnostic(err) {
158
188
  const rawStatus = [e?.status, e?.statusCode, e?.status_code].find((v) => typeof v === "number" && Number.isFinite(v));
159
189
  return ` err=${name}${rawStatus !== undefined ? ` status=${rawStatus}` : ""}`;
160
190
  }
191
+ /**
192
+ * Classify a reply-call failure so the gate no longer flips permanently
193
+ * `degraded` on a harmless close. `unwrapSdkEnvelope` has already hoisted the
194
+ * HTTP status onto the thrown envelope error; a genuine `Promise.reject`
195
+ * arrives as a plain Error with no status.
196
+ * - `benign-closed`: 404, or a NotFound/PermissionNotFound name/_tag — the
197
+ * dialog was ALREADY closed on the host (the D4 late-reply race): our
198
+ * reject was a no-op, so the popup path stays trustworthy.
199
+ * - `param-shape`: 400, or a BadRequest/InvalidRequest name/_tag — our
200
+ * reply body/params are wrong for this host: a real integration bug.
201
+ * - `transport`: everything else — a genuine Error, a 5xx, or an empty /
202
+ * status-less body — we could not reach or close the dialog.
203
+ * Reads only the error CLASS + status number (privacy: never message text).
204
+ */
205
+ export function classifyReplyFailure(err) {
206
+ const e = err;
207
+ const rawStatus = [e?.status, e?.statusCode, e?.status_code].find((v) => typeof v === "number" && Number.isFinite(v));
208
+ const tag = `${typeof e?.name === "string" ? e.name : ""} ${typeof e?._tag === "string" ? e._tag : ""}`.trim();
209
+ if (rawStatus === 404 || /NotFound|PermissionNotFound/.test(tag))
210
+ return "benign-closed";
211
+ if (rawStatus === 400 || /BadRequest|InvalidRequest/.test(tag))
212
+ return "param-shape";
213
+ return "transport";
214
+ }
215
+ /** A recognized human reply word -> its audit verdict; null for anything the
216
+ * out-of-vocabulary path keeps silent about (used by the LATE-verdict audit
217
+ * so an unknown late word can never fabricate a verdict or a `late-degraded`). */
218
+ function lateVerdictWord(lower) {
219
+ if (lower === "reject")
220
+ return "rejected";
221
+ if (lower === "always")
222
+ return "allowed-always";
223
+ if (lower === "once")
224
+ return "allowed-once";
225
+ return null;
226
+ }
161
227
  /**
162
228
  * Build the reject closure. CRITICAL: every SDK endpoint is invoked as a
163
229
  * METHOD (`perm.reply({...})` / `c.post...({...})` — property-access call
@@ -239,8 +305,12 @@ export function createApprovalGate(deps) {
239
305
  /** Sessions known to carry our injected ask set (deferral whitelist). */
240
306
  const liveAsk = new Set();
241
307
  /** Permission ids already closed (replied / timed out): a late or
242
- * duplicated `asked` replay for one must never re-arm a ghost timer. */
243
- const closedIds = new Set();
308
+ * duplicated `asked` replay for one must never re-arm a ghost timer.
309
+ * Upgraded from a bare Set to a small LRU map — R1#8 — so a LATE
310
+ * `permission.replied` (the human's decision reaching the plugin AFTER the
311
+ * timer already auto-rejected) can be audited with its real category.
312
+ * Bounded at MAX_TOMBSTONES with the oldest evicted. */
313
+ const closed = new Map();
244
314
  /** Sessions whose reply carried NO permission id → suppress fresh asks of
245
315
  * that session briefly (map sid → expiry ms). */
246
316
  const repliedNoId = new Map();
@@ -257,12 +327,23 @@ export function createApprovalGate(deps) {
257
327
  }
258
328
  return rec;
259
329
  }
260
- function tombstone(id) {
261
- closedIds.add(id);
262
- if (closedIds.size > MAX_TOMBSTONES) {
263
- const oldest = closedIds.values().next().value;
264
- if (oldest !== undefined)
265
- closedIds.delete(oldest);
330
+ function tombstone(id, sid, cat) {
331
+ // LRU touch: delete+set moves the id to the newest end. Re-inserting a
332
+ // known id preserves its recorded cat/sid when THIS call omits them, so a
333
+ // late/duplicate reply never overwrites the real category a prior close
334
+ // (fireReject / first reply) recorded.
335
+ const prev = closed.get(id);
336
+ closed.delete(id);
337
+ closed.set(id, {
338
+ sid: sid ?? prev?.sid ?? "",
339
+ cat: cat ?? prev?.cat ?? "danger",
340
+ at: nowMs(),
341
+ });
342
+ while (closed.size > MAX_TOMBSTONES) {
343
+ const oldest = closed.keys().next().value;
344
+ if (oldest === undefined)
345
+ break;
346
+ closed.delete(oldest);
266
347
  }
267
348
  }
268
349
  /** True while sid is inside the no-id-reply ghost window. */
@@ -281,29 +362,48 @@ export function createApprovalGate(deps) {
281
362
  if (!rec)
282
363
  return;
283
364
  pending.delete(id);
284
- tombstone(id);
365
+ tombstone(id, rec.sid, rec.cat);
285
366
  let ok = false;
286
367
  let errDiag = "";
368
+ let failClass = null;
287
369
  try {
288
370
  if (reply) {
289
- // unwrapSdkEnvelope inside `reply` turns the v1 {error} envelope into
290
- // a throw; a rejecting transport lands in the same catch.
371
+ // unwrapSdkEnvelope inside `reply` turns the v1 {error} envelope into a
372
+ // throw (carrying the hoisted HTTP status); a rejecting transport
373
+ // lands in the same catch.
291
374
  await reply(rec.sid, id);
292
375
  ok = true;
293
376
  }
294
377
  }
295
378
  catch (err) {
296
379
  ok = false;
380
+ failClass = classifyReplyFailure(err);
297
381
  errDiag = errorDiagnostic(err);
298
382
  }
299
- if (!ok) {
300
- // Layer 3 fallback: we could not close the dialog ⇒ stop trusting the
301
- // popup path; the hook reverts to hard-throwing env reads.
383
+ // Classify a failed reply instead of a blanket degraded flip:
384
+ // benign-closed (404 / NotFound) — the dialog was ALREADY closed on the
385
+ // host (the D4 late-reply race): our reject was a harmless no-op, NOT
386
+ // an integration fault, so the popup path stays trustworthy. Do NOT
387
+ // flip degraded — one dead-id reject must never poison the whole gate.
388
+ // param-shape (400 / BadRequest) — our reply shape is wrong for this
389
+ // host: a real bug, fail closed.
390
+ // transport (a real Error / 5xx / status-less body) — we could not reach
391
+ // or close the dialog: fail closed (the historic behaviour).
392
+ if (!ok && failClass !== "benign-closed") {
393
+ // Layer 3 fallback: stop trusting the popup path; the hook reverts to
394
+ // hard-throwing env reads.
302
395
  degraded = true;
303
396
  }
304
- // degraded carries the non-privacy error class/status tail (see
305
- // errorDiagnostic) so a live-host failure is diagnosable from the log
306
- auditAsk(client, "bash", cat, (ok ? "timeout-rejected" : "degraded") + errDiag);
397
+ const verdict = ok
398
+ ? "timeout-rejected"
399
+ : failClass === "benign-closed"
400
+ ? "already-closed"
401
+ : failClass === "param-shape"
402
+ ? "rejected-shape-bug"
403
+ : "degraded";
404
+ // every failure verdict carries the non-privacy error class/status tail
405
+ // (see errorDiagnostic) so a live-host failure is diagnosable from the log
406
+ auditAsk(client, "bash", cat, verdict + errDiag);
307
407
  }
308
408
  function arm(id, sid, cat) {
309
409
  if (pending.has(id))
@@ -315,7 +415,7 @@ export function createApprovalGate(deps) {
315
415
  function registerAsk(id, sid, cat) {
316
416
  if (!id || !sid)
317
417
  return;
318
- if (closedIds.has(id))
418
+ if (closed.has(id))
319
419
  return; // ghost replay of a closed request
320
420
  if (ghostSuppressed(sid))
321
421
  return; // replied-without-id; assume a replay
@@ -401,29 +501,50 @@ export function createApprovalGate(deps) {
401
501
  const sid = str(props.sessionID);
402
502
  const id = str(props.requestID, props.permissionID, props.id);
403
503
  const resp = str(props.reply, props.response);
504
+ // Capture prior-closed state BEFORE this reply tombstones the id: the
505
+ // late-verdict audit must fire only for a reply that arrives AFTER the id
506
+ // was already closed (a timeout auto-reject / an earlier reply), not for
507
+ // the first-ever reply we happen to be tombstoning right now.
508
+ const wasClosed = id ? closed.has(id) : false;
509
+ const prec = id ? pending.get(id) : undefined;
404
510
  if (id)
405
- tombstone(id);
511
+ tombstone(id, sid ?? prec?.sid, prec?.cat);
406
512
  // Real 1.18.29 replied props identify the request via `requestID` — and
407
513
  // the plugin-side observer has seen builds carrying ONLY { sessionID }.
408
514
  // Cancel EVERY pending timer of the session either way: an approved
409
515
  // command left timed would fire a reject on a dead id (4xx) and flip the
410
516
  // gate permanently degraded.
411
517
  const affected = [];
518
+ let removed;
412
519
  if (id) {
413
- const rec = remove(id);
414
- if (rec)
415
- affected.push(rec);
520
+ removed = remove(id);
521
+ if (removed)
522
+ affected.push(removed);
416
523
  }
417
524
  for (const [pid, rec] of [...pending]) {
418
525
  if (sid && rec.sid === sid) {
419
526
  pending.delete(pid);
420
527
  timers.clearTimeoutFn(rec.timer);
421
- tombstone(pid);
528
+ tombstone(pid, rec.sid, rec.cat);
422
529
  affected.push(rec);
423
530
  }
424
531
  }
425
532
  if (!id && sid)
426
533
  repliedNoId.set(sid, nowMs() + GHOST_ASK_WINDOW_MS);
534
+ // R1#8 — LATE VERDICT OBSERVABILITY: the id was ALREADY closed (remove()
535
+ // found nothing, and it was closed before this reply — `wasClosed`), yet a
536
+ // real reply word rode in afterwards: the human's decision reached the
537
+ // plugin past the auto-reject (the D4 race the timeout floor guards). The
538
+ // reject already landed, so this is OBSERVABILITY ONLY — it never re-arms a
539
+ // timer, never revives the command, and sends NO SDK reply, so it cannot
540
+ // breach "the plugin only ever rejects". The category comes from the
541
+ // original close, so the audit line stays well-formed with no command text.
542
+ if (id && !removed && wasClosed && resp) {
543
+ const entry = closed.get(id);
544
+ const late = entry ? lateVerdictWord(resp.toLowerCase()) : null;
545
+ if (entry && late)
546
+ auditAsk(client, "bash", entry.cat, `late-${late}`);
547
+ }
427
548
  for (const rec of affected) {
428
549
  if (!resp)
429
550
  continue; // outcome unknown: cancel silently, never invent a verdict
@@ -1 +1 @@
1
- {"version":3,"file":"approval-gate.js","sourceRoot":"","sources":["../src/approval-gate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"approval-gate.js","sourceRoot":"","sources":["../src/approval-gate.ts"],"names":[],"mappings":"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"}