@stigmer/runner 3.9.0 → 3.11.0

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 (270) hide show
  1. package/README.md +12 -1
  2. package/dist/.build-fingerprint +1 -1
  3. package/dist/activities/call-llm.js +9 -10
  4. package/dist/activities/call-llm.js.map +1 -1
  5. package/dist/activities/classify-tool-approvals.d.ts +2 -1
  6. package/dist/activities/classify-tool-approvals.js +28 -2
  7. package/dist/activities/classify-tool-approvals.js.map +1 -1
  8. package/dist/activities/discover-mcp-server.d.ts +32 -0
  9. package/dist/activities/discover-mcp-server.js +162 -27
  10. package/dist/activities/discover-mcp-server.js.map +1 -1
  11. package/dist/activities/execute-cursor/__test-utils__/cursor-hook-harness.d.ts +8 -0
  12. package/dist/activities/execute-cursor/__test-utils__/cursor-hook-harness.js +1 -1
  13. package/dist/activities/execute-cursor/__test-utils__/cursor-hook-harness.js.map +1 -1
  14. package/dist/activities/execute-cursor/approval-state.d.ts +28 -2
  15. package/dist/activities/execute-cursor/approval-state.js +7 -1
  16. package/dist/activities/execute-cursor/approval-state.js.map +1 -1
  17. package/dist/activities/execute-cursor/attachment-resolver.d.ts +14 -0
  18. package/dist/activities/execute-cursor/attachment-resolver.js +25 -4
  19. package/dist/activities/execute-cursor/attachment-resolver.js.map +1 -1
  20. package/dist/activities/execute-cursor/blueprint-resolver.d.ts +1 -9
  21. package/dist/activities/execute-cursor/blueprint-resolver.js +6 -22
  22. package/dist/activities/execute-cursor/blueprint-resolver.js.map +1 -1
  23. package/dist/activities/execute-cursor/env-resolver.js +3 -1
  24. package/dist/activities/execute-cursor/env-resolver.js.map +1 -1
  25. package/dist/activities/execute-cursor/error-classifier.d.ts +40 -3
  26. package/dist/activities/execute-cursor/error-classifier.js +81 -3
  27. package/dist/activities/execute-cursor/error-classifier.js.map +1 -1
  28. package/dist/activities/execute-cursor/extract-structured-output.d.ts +29 -0
  29. package/dist/activities/execute-cursor/extract-structured-output.js +58 -0
  30. package/dist/activities/execute-cursor/extract-structured-output.js.map +1 -0
  31. package/dist/activities/execute-cursor/hook-script.d.ts +14 -3
  32. package/dist/activities/execute-cursor/hook-script.js +72 -10
  33. package/dist/activities/execute-cursor/hook-script.js.map +1 -1
  34. package/dist/activities/execute-cursor/index.d.ts +5 -1
  35. package/dist/activities/execute-cursor/index.js +59 -58
  36. package/dist/activities/execute-cursor/index.js.map +1 -1
  37. package/dist/activities/execute-cursor/mcp-resolver.d.ts +24 -1
  38. package/dist/activities/execute-cursor/mcp-resolver.js +5 -2
  39. package/dist/activities/execute-cursor/mcp-resolver.js.map +1 -1
  40. package/dist/activities/execute-cursor/prompt-builder.d.ts +18 -4
  41. package/dist/activities/execute-cursor/prompt-builder.js +12 -7
  42. package/dist/activities/execute-cursor/prompt-builder.js.map +1 -1
  43. package/dist/activities/execute-cursor/turn-stream.js +4 -1
  44. package/dist/activities/execute-cursor/turn-stream.js.map +1 -1
  45. package/dist/activities/execute-deep-agent/attachment-injector.d.ts +18 -1
  46. package/dist/activities/execute-deep-agent/attachment-injector.js +68 -23
  47. package/dist/activities/execute-deep-agent/attachment-injector.js.map +1 -1
  48. package/dist/activities/execute-deep-agent/environment.js +3 -1
  49. package/dist/activities/execute-deep-agent/environment.js.map +1 -1
  50. package/dist/activities/execute-deep-agent/index.js +15 -0
  51. package/dist/activities/execute-deep-agent/index.js.map +1 -1
  52. package/dist/activities/execute-deep-agent/prompt-builder.d.ts +7 -7
  53. package/dist/activities/execute-deep-agent/prompt-builder.js +8 -2
  54. package/dist/activities/execute-deep-agent/prompt-builder.js.map +1 -1
  55. package/dist/activities/execute-deep-agent/setup.d.ts +10 -0
  56. package/dist/activities/execute-deep-agent/setup.js +65 -26
  57. package/dist/activities/execute-deep-agent/setup.js.map +1 -1
  58. package/dist/activities/execute-deep-agent/subagent-transformer.d.ts +18 -1
  59. package/dist/activities/execute-deep-agent/subagent-transformer.js +8 -1
  60. package/dist/activities/execute-deep-agent/subagent-transformer.js.map +1 -1
  61. package/dist/activities/execute-deep-agent/subagent-wiring.d.ts +11 -4
  62. package/dist/activities/execute-deep-agent/subagent-wiring.js +13 -4
  63. package/dist/activities/execute-deep-agent/subagent-wiring.js.map +1 -1
  64. package/dist/activities/hydrate-workflow-execution.js +3 -1
  65. package/dist/activities/hydrate-workflow-execution.js.map +1 -1
  66. package/dist/activities/workflow-event-activities.d.ts +28 -10
  67. package/dist/activities/workflow-event-activities.js +87 -58
  68. package/dist/activities/workflow-event-activities.js.map +1 -1
  69. package/dist/claimcheck/payload-codec.js +21 -1
  70. package/dist/claimcheck/payload-codec.js.map +1 -1
  71. package/dist/client/stigmer-client.d.ts +9 -4
  72. package/dist/client/stigmer-client.js +28 -15
  73. package/dist/client/stigmer-client.js.map +1 -1
  74. package/dist/encryption/config.d.ts +32 -0
  75. package/dist/encryption/config.js +68 -0
  76. package/dist/encryption/config.js.map +1 -0
  77. package/dist/encryption/index.d.ts +3 -0
  78. package/dist/encryption/index.js +3 -0
  79. package/dist/encryption/index.js.map +1 -0
  80. package/dist/encryption/payload-codec.d.ts +41 -0
  81. package/dist/encryption/payload-codec.js +130 -0
  82. package/dist/encryption/payload-codec.js.map +1 -0
  83. package/dist/payload-codecs.d.ts +16 -0
  84. package/dist/payload-codecs.js +38 -0
  85. package/dist/payload-codecs.js.map +1 -0
  86. package/dist/preflight.d.ts +31 -0
  87. package/dist/preflight.js +43 -0
  88. package/dist/preflight.js.map +1 -1
  89. package/dist/runner-manager.js +5 -15
  90. package/dist/runner-manager.js.map +1 -1
  91. package/dist/runner.js +5 -16
  92. package/dist/runner.js.map +1 -1
  93. package/dist/shared/approval-policy.d.ts +9 -3
  94. package/dist/shared/approval-policy.js +15 -6
  95. package/dist/shared/approval-policy.js.map +1 -1
  96. package/dist/shared/attachment-naming.d.ts +53 -0
  97. package/dist/shared/attachment-naming.js +59 -0
  98. package/dist/shared/attachment-naming.js.map +1 -0
  99. package/dist/shared/attachment-vision.d.ts +43 -2
  100. package/dist/shared/attachment-vision.js +72 -6
  101. package/dist/shared/attachment-vision.js.map +1 -1
  102. package/dist/shared/caller-identity.d.ts +23 -2
  103. package/dist/shared/caller-identity.js +36 -5
  104. package/dist/shared/caller-identity.js.map +1 -1
  105. package/dist/shared/channel-attachment.js +1 -0
  106. package/dist/shared/channel-attachment.js.map +1 -1
  107. package/dist/shared/checkpointer/http-saver.d.ts +42 -1
  108. package/dist/shared/checkpointer/http-saver.js +96 -8
  109. package/dist/shared/checkpointer/http-saver.js.map +1 -1
  110. package/dist/shared/conversation-attachment.js +1 -0
  111. package/dist/shared/conversation-attachment.js.map +1 -1
  112. package/dist/shared/datastore-attachment.d.ts +50 -7
  113. package/dist/shared/datastore-attachment.js +93 -11
  114. package/dist/shared/datastore-attachment.js.map +1 -1
  115. package/dist/shared/http-retry.d.ts +43 -0
  116. package/dist/shared/http-retry.js +50 -0
  117. package/dist/shared/http-retry.js.map +1 -0
  118. package/dist/shared/llm-backend.d.ts +275 -0
  119. package/dist/shared/llm-backend.js +425 -0
  120. package/dist/shared/llm-backend.js.map +1 -0
  121. package/dist/shared/llm-proxy.d.ts +8 -0
  122. package/dist/shared/llm-proxy.js +15 -0
  123. package/dist/shared/llm-proxy.js.map +1 -1
  124. package/dist/shared/mcp-enabled-tools.d.ts +57 -0
  125. package/dist/shared/mcp-enabled-tools.js +86 -0
  126. package/dist/shared/mcp-enabled-tools.js.map +1 -0
  127. package/dist/shared/mcp-manager.d.ts +17 -2
  128. package/dist/shared/mcp-manager.js +37 -25
  129. package/dist/shared/mcp-manager.js.map +1 -1
  130. package/dist/shared/mcp-resolver.d.ts +39 -2
  131. package/dist/shared/mcp-resolver.js +38 -2
  132. package/dist/shared/mcp-resolver.js.map +1 -1
  133. package/dist/shared/model-client.d.ts +12 -5
  134. package/dist/shared/model-client.js +138 -18
  135. package/dist/shared/model-client.js.map +1 -1
  136. package/dist/shared/model-error.js +198 -5
  137. package/dist/shared/model-error.js.map +1 -1
  138. package/dist/shared/model-registry.d.ts +20 -2
  139. package/dist/shared/model-registry.js +37 -2
  140. package/dist/shared/model-registry.js.map +1 -1
  141. package/dist/shared/plan-mode-permissions.d.ts +26 -0
  142. package/dist/shared/plan-mode-permissions.js +28 -0
  143. package/dist/shared/plan-mode-permissions.js.map +1 -0
  144. package/dist/worker.d.ts +2 -1
  145. package/dist/worker.js +2 -4
  146. package/dist/worker.js.map +1 -1
  147. package/dist/workflow-engine/types.d.ts +18 -0
  148. package/dist/workflow-engine/types.js.map +1 -1
  149. package/dist/workflows/call-agent-orchestrator.d.ts +9 -0
  150. package/dist/workflows/call-agent-orchestrator.js +1 -0
  151. package/dist/workflows/call-agent-orchestrator.js.map +1 -1
  152. package/dist/workflows/connect-mcp-server.js +7 -0
  153. package/dist/workflows/connect-mcp-server.js.map +1 -1
  154. package/dist/workflows/engine-core.js +23 -2
  155. package/dist/workflows/engine-core.js.map +1 -1
  156. package/dist/workflows/execute-from-execution.d.ts +1 -1
  157. package/dist/workflows/execute-from-execution.js +11 -1
  158. package/dist/workflows/execute-from-execution.js.map +1 -1
  159. package/package.json +8 -2
  160. package/src/__tests__/claimcheck-codec.test.ts +36 -0
  161. package/src/__tests__/encryption-codec.test.ts +234 -0
  162. package/src/__tests__/fixtures/encrypted-payload-fixture.json +15 -0
  163. package/src/__tests__/history-encryption-e2e.test.ts +243 -0
  164. package/src/__tests__/preflight.test.ts +50 -2
  165. package/src/activities/__tests__/call-llm.test.ts +75 -0
  166. package/src/activities/__tests__/classify-tool-approvals.test.ts +117 -1
  167. package/src/activities/__tests__/discover-mcp-server.hang.test.ts +103 -0
  168. package/src/activities/__tests__/discover-mcp-server.test.ts +203 -0
  169. package/src/activities/__tests__/workflow-event-activities.test.ts +107 -8
  170. package/src/activities/call-llm.ts +9 -16
  171. package/src/activities/classify-tool-approvals.ts +34 -4
  172. package/src/activities/discover-mcp-server.ts +190 -32
  173. package/src/activities/execute-cursor/__test-utils__/cursor-hook-harness.ts +9 -0
  174. package/src/activities/execute-cursor/__tests__/approval-gate.test.ts +14 -0
  175. package/src/activities/execute-cursor/__tests__/attachment-resolver.test.ts +92 -0
  176. package/src/activities/execute-cursor/__tests__/build-prompt.test.ts +40 -14
  177. package/src/activities/execute-cursor/__tests__/error-classifier-extraction.test.ts +208 -0
  178. package/src/activities/execute-cursor/__tests__/extract-structured-output.test.ts +120 -0
  179. package/src/activities/execute-cursor/__tests__/hook-script.test.ts +93 -0
  180. package/src/activities/execute-cursor/__tests__/mcp-resolver.test.ts +125 -0
  181. package/src/activities/execute-cursor/__tests__/prompt-builder-delegation.test.ts +1 -1
  182. package/src/activities/execute-cursor/__tests__/turn-stream.test.ts +13 -0
  183. package/src/activities/execute-cursor/approval-state.ts +30 -1
  184. package/src/activities/execute-cursor/attachment-resolver.ts +38 -3
  185. package/src/activities/execute-cursor/blueprint-resolver.ts +7 -27
  186. package/src/activities/execute-cursor/env-resolver.ts +3 -1
  187. package/src/activities/execute-cursor/error-classifier.ts +91 -4
  188. package/src/activities/execute-cursor/extract-structured-output.ts +72 -0
  189. package/src/activities/execute-cursor/hook-script.ts +74 -10
  190. package/src/activities/execute-cursor/index.ts +63 -72
  191. package/src/activities/execute-cursor/mcp-resolver.ts +36 -2
  192. package/src/activities/execute-cursor/prompt-builder.ts +34 -9
  193. package/src/activities/execute-cursor/turn-stream.ts +5 -2
  194. package/src/activities/execute-deep-agent/__tests__/attachment-injector.test.ts +132 -8
  195. package/src/activities/execute-deep-agent/__tests__/datastore-degradation.test.ts +104 -0
  196. package/src/activities/execute-deep-agent/__tests__/hitl-reject.test.ts +2 -0
  197. package/src/activities/execute-deep-agent/__tests__/hitl-resume-approve-all.test.ts +1 -0
  198. package/src/activities/execute-deep-agent/__tests__/hitl-resume-history.test.ts +1 -0
  199. package/src/activities/execute-deep-agent/__tests__/prompt-builder.test.ts +34 -5
  200. package/src/activities/execute-deep-agent/__tests__/sequential-gate-resume.test.ts +1 -0
  201. package/src/activities/execute-deep-agent/__tests__/subagent-plan-mode-permissions.test.ts +173 -0
  202. package/src/activities/execute-deep-agent/__tests__/subagent-wiring.test.ts +12 -7
  203. package/src/activities/execute-deep-agent/attachment-injector.ts +94 -30
  204. package/src/activities/execute-deep-agent/environment.ts +3 -1
  205. package/src/activities/execute-deep-agent/index.ts +20 -0
  206. package/src/activities/execute-deep-agent/prompt-builder.ts +20 -10
  207. package/src/activities/execute-deep-agent/setup.ts +86 -31
  208. package/src/activities/execute-deep-agent/subagent-transformer.ts +23 -1
  209. package/src/activities/execute-deep-agent/subagent-wiring.ts +14 -4
  210. package/src/activities/hydrate-workflow-execution.ts +3 -1
  211. package/src/activities/workflow-event-activities.ts +96 -69
  212. package/src/claimcheck/payload-codec.ts +33 -1
  213. package/src/client/__tests__/stigmer-client.test.ts +8 -8
  214. package/src/client/stigmer-client.ts +32 -18
  215. package/src/encryption/config.ts +91 -0
  216. package/src/encryption/index.ts +3 -0
  217. package/src/encryption/payload-codec.ts +152 -0
  218. package/src/payload-codecs.ts +56 -0
  219. package/src/preflight.ts +45 -0
  220. package/src/runner-manager.ts +6 -24
  221. package/src/runner.ts +6 -25
  222. package/src/shared/__tests__/approval-policy.test.ts +82 -39
  223. package/src/shared/__tests__/attachment-naming.test.ts +159 -0
  224. package/src/shared/__tests__/attachment-vision.test.ts +97 -0
  225. package/src/shared/__tests__/bedrock-adapter.test.ts +213 -0
  226. package/src/shared/__tests__/bedrock-seam.test.ts +390 -0
  227. package/src/shared/__tests__/caller-identity.test.ts +25 -0
  228. package/src/shared/__tests__/channel-attachment.test.ts +1 -1
  229. package/src/shared/__tests__/connect-backfill.test.ts +1 -0
  230. package/src/shared/__tests__/conversation-attachment.test.ts +1 -1
  231. package/src/shared/__tests__/datastore-attachment.test.ts +129 -1
  232. package/src/shared/__tests__/foundry-adapter.test.ts +276 -0
  233. package/src/shared/__tests__/foundry-seam.test.ts +482 -0
  234. package/src/shared/__tests__/http-retry.test.ts +67 -0
  235. package/src/shared/__tests__/llm-backend.test.ts +616 -0
  236. package/src/shared/__tests__/mcp-enabled-tools.test.ts +86 -0
  237. package/src/shared/__tests__/mcp-manager.test.ts +170 -2
  238. package/src/shared/__tests__/mcp-resolver.test.ts +146 -3
  239. package/src/shared/__tests__/model-client.test.ts +154 -0
  240. package/src/shared/__tests__/model-error.test.ts +289 -1
  241. package/src/shared/__tests__/model-registry.test.ts +71 -0
  242. package/src/shared/__tests__/synthesized-attachment.test.ts +1 -0
  243. package/src/shared/__tests__/vertex-adapter.test.ts +169 -0
  244. package/src/shared/__tests__/vertex-seam.test.ts +295 -0
  245. package/src/shared/approval-policy.ts +14 -7
  246. package/src/shared/attachment-naming.ts +78 -0
  247. package/src/shared/attachment-vision.ts +92 -9
  248. package/src/shared/caller-identity.ts +40 -5
  249. package/src/shared/channel-attachment.ts +1 -0
  250. package/src/shared/checkpointer/__tests__/http-saver.test.ts +196 -1
  251. package/src/shared/checkpointer/http-saver.ts +117 -9
  252. package/src/shared/conversation-attachment.ts +1 -0
  253. package/src/shared/datastore-attachment.ts +106 -11
  254. package/src/shared/http-retry.ts +50 -0
  255. package/src/shared/llm-backend.ts +544 -0
  256. package/src/shared/llm-proxy.ts +15 -0
  257. package/src/shared/mcp-enabled-tools.ts +105 -0
  258. package/src/shared/mcp-manager.ts +43 -26
  259. package/src/shared/mcp-resolver.ts +73 -2
  260. package/src/shared/model-client.ts +161 -19
  261. package/src/shared/model-error.ts +222 -4
  262. package/src/shared/model-registry.ts +50 -2
  263. package/src/shared/plan-mode-permissions.ts +30 -0
  264. package/src/worker.ts +4 -5
  265. package/src/workflow-engine/types.ts +18 -0
  266. package/src/workflows/__tests__/execute-serverless-workflow.test.ts +68 -2
  267. package/src/workflows/call-agent-orchestrator.ts +10 -0
  268. package/src/workflows/connect-mcp-server.ts +7 -0
  269. package/src/workflows/engine-core.ts +23 -2
  270. package/src/workflows/execute-from-execution.ts +12 -2
@@ -214,9 +214,16 @@ export function resolveApprovalProvenance(toolName, serverSlug, policies, leased
214
214
  * Policy chain (each level overrides the previous):
215
215
  * 1. status.toolApprovals — system-generated defaults; presence = requires approval
216
216
  * 2. spec.pinnedToolApprovals — manual overrides; presence = requires approval
217
- * 3. agent tool_approval_overrides — explicit boolean per tool (enable OR disable)
217
+ * 3. usage tool_approval_overrides — explicit boolean per tool (enable OR disable)
218
218
  * 4. active leases — runtime bypass (highest priority), now scoped
219
219
  *
220
+ * Layer 3 is read from {@link ResolvedMcpServer.toolApprovalOverrides} — the
221
+ * overrides ride each server from the usage that resolved it (issue #349), so
222
+ * an override is STRUCTURALLY scoped to its own server. There is deliberately
223
+ * no cross-server override input: a flat list applied inside this per-server
224
+ * loop is how an override once leaked onto — or silently un-gated — a
225
+ * same-named tool on another server.
226
+ *
220
227
  * The map carries ONLY the tools that require approval — a tool's absence means
221
228
  * "auto-approved". Leases shape that absence:
222
229
  * - On a global pre-arm ({@link ActiveLeases.global}) the map is empty.
@@ -232,7 +239,7 @@ export function resolveApprovalProvenance(toolName, serverSlug, policies, leased
232
239
  * interruptOn model), so the four-level semantics are defined in exactly one
233
240
  * place.
234
241
  */
235
- export function mergeApprovalPolicies(resolvedServers, agentOverrides, leases) {
242
+ export function mergeApprovalPolicies(resolvedServers, leases) {
236
243
  const merged = new Map();
237
244
  if (leases.global)
238
245
  return merged;
@@ -269,10 +276,12 @@ export function mergeApprovalPolicies(resolvedServers, agentOverrides, leases) {
269
276
  source: "pinned_override",
270
277
  });
271
278
  }
272
- // Layer 3: per-agent overrides (explicit boolean, can enable or disable).
273
- // Touching a tool here makes the per-agent layer the responsible source,
274
- // whether it enables, disables, or re-messages the gate.
275
- for (const override of agentOverrides) {
279
+ // Layer 3: this usage's overrides (explicit boolean, can enable or
280
+ // disable) scoped to THIS server because they arrived on it (see the
281
+ // function doc). Touching a tool here makes the per-agent layer the
282
+ // responsible source, whether it enables, disables, or re-messages the
283
+ // gate.
284
+ for (const override of server.toolApprovalOverrides) {
276
285
  if (!override.toolName)
277
286
  continue;
278
287
  const existing = serverPolicies.get(override.toolName);
@@ -1 +1 @@
1
- {"version":3,"file":"approval-policy.js","sourceRoot":"","sources":["../../src/shared/approval-policy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"approval-policy.js","sourceRoot":"","sources":["../../src/shared/approval-policy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Naming policy for execution attachments — the single owner of the rule that
3
+ * resolves duplicate attachment filenames (issue #364).
4
+ *
5
+ * Both harnesses materialize attachments into the platform inputs namespace
6
+ * keyed by filename, so two attachments carrying the same name contend for
7
+ * one on-disk path. Before this module existed each harness had an accidental
8
+ * answer: the deep-agent injector failed the whole execution on the collision
9
+ * and the Cursor resolver silently overwrote the earlier file. The platform
10
+ * answer is neither — a duplicate is mechanically renamed (`report.pdf`,
11
+ * `report-2.pdf`, ...) and the rename is disclosed to the agent through the
12
+ * input-files prompt section, so no execution is ever burned over a
13
+ * resolvable name and no user file silently vanishes.
14
+ *
15
+ * The `stem-2.ext` semantics deliberately mirror the React SDK composer's
16
+ * client-side rename (sdk/react/src/attachment/attachment-utils.ts,
17
+ * `uniquifyFilename` — kept in sync by hand, the packages share no
18
+ * dependency), so a user sees the same rename shape whether the client or the
19
+ * runner performed it.
20
+ *
21
+ * Scope: this module owns NAMES only. What constitutes a collision is the
22
+ * caller's business — the deep-agent injector keys on full mount paths
23
+ * (explicit `mountPath` values participate), the Cursor resolver keys on bare
24
+ * filenames under `inputs/`. Callers that consider a collision a user
25
+ * contradiction (two attachments explicitly pinning the same mount path)
26
+ * keep rejecting; only mechanically derived names are renamed.
27
+ */
28
+ /** The outcome of allocating a unique name for one attachment. */
29
+ export interface AllocatedName {
30
+ /** The final name — unchanged when it was free, `stem-N.ext` otherwise. */
31
+ readonly name: string;
32
+ /**
33
+ * The original requested name, present only when a rename happened — the
34
+ * disclosure payload the prompt builders render so the agent can still
35
+ * connect "the two report.pdfs" in the user's message to distinct files.
36
+ */
37
+ readonly renamedFrom?: string;
38
+ }
39
+ /**
40
+ * Returns `name` unchanged when it is not in `taken`, otherwise the first
41
+ * free `stem-2.ext`, `stem-3.ext`, … variant.
42
+ *
43
+ * Byte-for-byte twin of the React SDK's `uniquifyFilename`
44
+ * (sdk/react/src/attachment/attachment-utils.ts) so client-side and
45
+ * runner-side renames are indistinguishable to the user.
46
+ */
47
+ export declare function uniquifyFilename(name: string, taken: ReadonlySet<string>): string;
48
+ /**
49
+ * Allocate a unique name against `taken`, claiming the result in the set so
50
+ * sequential allocations see each other. Returns the disclosure payload
51
+ * (`renamedFrom`) when the name had to change.
52
+ */
53
+ export declare function allocateUniqueName(name: string, taken: Set<string>): AllocatedName;
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Naming policy for execution attachments — the single owner of the rule that
3
+ * resolves duplicate attachment filenames (issue #364).
4
+ *
5
+ * Both harnesses materialize attachments into the platform inputs namespace
6
+ * keyed by filename, so two attachments carrying the same name contend for
7
+ * one on-disk path. Before this module existed each harness had an accidental
8
+ * answer: the deep-agent injector failed the whole execution on the collision
9
+ * and the Cursor resolver silently overwrote the earlier file. The platform
10
+ * answer is neither — a duplicate is mechanically renamed (`report.pdf`,
11
+ * `report-2.pdf`, ...) and the rename is disclosed to the agent through the
12
+ * input-files prompt section, so no execution is ever burned over a
13
+ * resolvable name and no user file silently vanishes.
14
+ *
15
+ * The `stem-2.ext` semantics deliberately mirror the React SDK composer's
16
+ * client-side rename (sdk/react/src/attachment/attachment-utils.ts,
17
+ * `uniquifyFilename` — kept in sync by hand, the packages share no
18
+ * dependency), so a user sees the same rename shape whether the client or the
19
+ * runner performed it.
20
+ *
21
+ * Scope: this module owns NAMES only. What constitutes a collision is the
22
+ * caller's business — the deep-agent injector keys on full mount paths
23
+ * (explicit `mountPath` values participate), the Cursor resolver keys on bare
24
+ * filenames under `inputs/`. Callers that consider a collision a user
25
+ * contradiction (two attachments explicitly pinning the same mount path)
26
+ * keep rejecting; only mechanically derived names are renamed.
27
+ */
28
+ /**
29
+ * Returns `name` unchanged when it is not in `taken`, otherwise the first
30
+ * free `stem-2.ext`, `stem-3.ext`, … variant.
31
+ *
32
+ * Byte-for-byte twin of the React SDK's `uniquifyFilename`
33
+ * (sdk/react/src/attachment/attachment-utils.ts) so client-side and
34
+ * runner-side renames are indistinguishable to the user.
35
+ */
36
+ export function uniquifyFilename(name, taken) {
37
+ if (!taken.has(name))
38
+ return name;
39
+ const dotIndex = name.lastIndexOf(".");
40
+ // A leading dot (".env") is a hidden-file prefix, not an extension.
41
+ const stem = dotIndex > 0 ? name.slice(0, dotIndex) : name;
42
+ const ext = dotIndex > 0 ? name.slice(dotIndex) : "";
43
+ for (let n = 2;; n++) {
44
+ const candidate = `${stem}-${n}${ext}`;
45
+ if (!taken.has(candidate))
46
+ return candidate;
47
+ }
48
+ }
49
+ /**
50
+ * Allocate a unique name against `taken`, claiming the result in the set so
51
+ * sequential allocations see each other. Returns the disclosure payload
52
+ * (`renamedFrom`) when the name had to change.
53
+ */
54
+ export function allocateUniqueName(name, taken) {
55
+ const unique = uniquifyFilename(name, taken);
56
+ taken.add(unique);
57
+ return unique === name ? { name: unique } : { name: unique, renamedFrom: name };
58
+ }
59
+ //# sourceMappingURL=attachment-naming.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment-naming.js","sourceRoot":"","sources":["../../src/shared/attachment-naming.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAcH;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAY,EACZ,KAA0B;IAE1B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAElC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACvC,oEAAoE;IACpE,MAAM,IAAI,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3D,MAAM,GAAG,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAErD,KAAK,IAAI,CAAC,GAAG,CAAC,GAAI,CAAC,EAAE,EAAE,CAAC;QACtB,MAAM,SAAS,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;IAC9C,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAY,EACZ,KAAkB;IAElB,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7C,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAClB,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AAClF,CAAC"}
@@ -16,6 +16,14 @@
16
16
  * authoritative. A declared image whose bytes are not a recognizable image
17
17
  * degrades to the file-pointer story instead of shipping a mislabeled payload.
18
18
  *
19
+ * Model capability gate: eligibility also consults the execution model's
20
+ * vision capability, sourced from the model registry's `capabilities.vision`
21
+ * flag (model-registry.ts, `getModelVisionCapability`) and passed in at
22
+ * budget construction. The gate fails OPEN on unknown — only an explicit
23
+ * `vision: false` degrades — because most registry entries have never been
24
+ * capability-assessed, and blocking images on missing data would regress
25
+ * behavior that works today (issue #370 has the full evidence trail).
26
+ *
19
27
  * Degradation is always non-fatal and always disclosed: an image the model
20
28
  * cannot see is announced in the prompt (see {@link visionDisclosureLines}) so
21
29
  * the agent can tell the user instead of silently ignoring a photo the user
@@ -65,7 +73,14 @@ export type VisionDegradedReason =
65
73
  /** A real image type the current harness cannot display (e.g. WebP on Cursor). */
66
74
  | "unsupported_format"
67
75
  /** Declared as an image but the bytes are not a recognizable image (HEIC named .jpg, corrupt file). */
68
- | "type_mismatch";
76
+ | "type_mismatch"
77
+ /**
78
+ * The model registry explicitly flags the execution's model as unable to
79
+ * see images (`capabilities.vision: false`). Unlike every other reason,
80
+ * this one is not resend-fixable — no smaller or re-encoded image can help
81
+ * — so the disclosure gives it its own honest wording.
82
+ */
83
+ | "model_no_vision";
69
84
  export type VisionOutcome = {
70
85
  readonly kind: "accepted";
71
86
  readonly image: VisionImage;
@@ -118,12 +133,22 @@ export declare class VisionBudget {
118
133
  private readonly maxImageBytes;
119
134
  private readonly maxTotalBytes;
120
135
  private readonly maxImages;
136
+ /**
137
+ * Tri-state model capability from the registry (model-registry.ts,
138
+ * `getModelVisionCapability`). Only an explicit `false` gates: `undefined`
139
+ * means the capability was never assessed (or the registry was
140
+ * unreachable, or the model is the Cursor "default" Auto pool), and the
141
+ * policy fails OPEN on unknown — degrading every image because a flag is
142
+ * missing would regress behavior that works today.
143
+ */
144
+ private readonly modelVision?;
121
145
  private totalBytes;
122
146
  private imageCount;
123
- constructor(profile: VisionProfile, limits?: {
147
+ constructor(profile: VisionProfile, options?: {
124
148
  maxImageBytes?: number;
125
149
  maxTotalBytes?: number;
126
150
  maxImages?: number;
151
+ modelVision?: boolean;
127
152
  });
128
153
  /** Evaluate one attachment's bytes against every eligibility and budget rule. */
129
154
  offer(filename: string, declaredType: string, bytes: Buffer): VisionOutcome;
@@ -138,6 +163,22 @@ export declare class VisionBudget {
138
163
  * {@link exceedsImageCap} was true — the size alone settles the outcome.
139
164
  */
140
165
  offerOversized(): VisionOutcome;
166
+ /**
167
+ * True when the model is explicitly flagged as unable to see images, so no
168
+ * candidate can ever be accepted. Callers on a no-read path (the Cursor
169
+ * local-file fast branch) check this BEFORE stat/size logic — a blind
170
+ * model's oversized image must report {@link offerBlind}'s honest reason,
171
+ * never `too_large`'s "resend smaller" advice — then record the outcome
172
+ * via {@link offerBlind}, mirroring the exceedsImageCap/offerOversized
173
+ * pattern.
174
+ */
175
+ modelCannotSee(): boolean;
176
+ /**
177
+ * Record a vision candidate the caller chose not to read because
178
+ * {@link modelCannotSee} was true — the model's blindness alone settles
179
+ * the outcome.
180
+ */
181
+ offerBlind(): VisionOutcome;
141
182
  }
142
183
  /**
143
184
  * Cursor SDK image payloads for `agent.send({ text, images })`.
@@ -16,6 +16,14 @@
16
16
  * authoritative. A declared image whose bytes are not a recognizable image
17
17
  * degrades to the file-pointer story instead of shipping a mislabeled payload.
18
18
  *
19
+ * Model capability gate: eligibility also consults the execution model's
20
+ * vision capability, sourced from the model registry's `capabilities.vision`
21
+ * flag (model-registry.ts, `getModelVisionCapability`) and passed in at
22
+ * budget construction. The gate fails OPEN on unknown — only an explicit
23
+ * `vision: false` degrades — because most registry entries have never been
24
+ * capability-assessed, and blocking images on missing data would regress
25
+ * behavior that works today (issue #370 has the full evidence trail).
26
+ *
19
27
  * Degradation is always non-fatal and always disclosed: an image the model
20
28
  * cannot see is announced in the prompt (see {@link visionDisclosureLines}) so
21
29
  * the agent can tell the user instead of silently ignoring a photo the user
@@ -120,18 +128,38 @@ export class VisionBudget {
120
128
  maxImageBytes;
121
129
  maxTotalBytes;
122
130
  maxImages;
131
+ /**
132
+ * Tri-state model capability from the registry (model-registry.ts,
133
+ * `getModelVisionCapability`). Only an explicit `false` gates: `undefined`
134
+ * means the capability was never assessed (or the registry was
135
+ * unreachable, or the model is the Cursor "default" Auto pool), and the
136
+ * policy fails OPEN on unknown — degrading every image because a flag is
137
+ * missing would regress behavior that works today.
138
+ */
139
+ modelVision;
123
140
  totalBytes = 0;
124
141
  imageCount = 0;
125
- constructor(profile, limits) {
142
+ constructor(profile, options) {
126
143
  this.profile = profile;
127
- this.maxImageBytes = limits?.maxImageBytes ?? MAX_VISION_IMAGE_BYTES;
128
- this.maxTotalBytes = limits?.maxTotalBytes ?? MAX_VISION_TOTAL_BYTES;
129
- this.maxImages = limits?.maxImages ?? MAX_VISION_IMAGES;
144
+ this.maxImageBytes = options?.maxImageBytes ?? MAX_VISION_IMAGE_BYTES;
145
+ this.maxTotalBytes = options?.maxTotalBytes ?? MAX_VISION_TOTAL_BYTES;
146
+ this.maxImages = options?.maxImages ?? MAX_VISION_IMAGES;
147
+ this.modelVision = options?.modelVision;
130
148
  }
131
149
  /** Evaluate one attachment's bytes against every eligibility and budget rule. */
132
150
  offer(filename, declaredType, bytes) {
133
151
  const sniffed = sniffImageMime(bytes);
134
152
  const declaredIsImage = declaredType.toLowerCase().startsWith("image/");
153
+ // The blind-model gate comes before every other rule: for a model that
154
+ // cannot see images, format/size/budget reasons would be irrelevant and
155
+ // their "resend smaller" advice actively misleading. Anything
156
+ // image-shaped (recognizable bytes OR a declared image type) is
157
+ // disclosed; everything else stays on the silent file story.
158
+ if (this.modelVision === false) {
159
+ return sniffed !== undefined || declaredIsImage
160
+ ? { kind: "degraded", reason: "model_no_vision" }
161
+ : { kind: "skipped" };
162
+ }
135
163
  if (sniffed === undefined) {
136
164
  // Declared an image but isn't one we can recognize — the user plausibly
137
165
  // expects it to be seen (iPhone HEIC renamed .jpg is the common case),
@@ -174,6 +202,26 @@ export class VisionBudget {
174
202
  offerOversized() {
175
203
  return { kind: "degraded", reason: "too_large" };
176
204
  }
205
+ /**
206
+ * True when the model is explicitly flagged as unable to see images, so no
207
+ * candidate can ever be accepted. Callers on a no-read path (the Cursor
208
+ * local-file fast branch) check this BEFORE stat/size logic — a blind
209
+ * model's oversized image must report {@link offerBlind}'s honest reason,
210
+ * never `too_large`'s "resend smaller" advice — then record the outcome
211
+ * via {@link offerBlind}, mirroring the exceedsImageCap/offerOversized
212
+ * pattern.
213
+ */
214
+ modelCannotSee() {
215
+ return this.modelVision === false;
216
+ }
217
+ /**
218
+ * Record a vision candidate the caller chose not to read because
219
+ * {@link modelCannotSee} was true — the model's blindness alone settles
220
+ * the outcome.
221
+ */
222
+ offerBlind() {
223
+ return { kind: "degraded", reason: "model_no_vision" };
224
+ }
177
225
  }
178
226
  // ---------------------------------------------------------------------------
179
227
  // Transport adapters
@@ -229,6 +277,8 @@ function reasonLabel(reason) {
229
277
  return "unsupported format";
230
278
  case "type_mismatch":
231
279
  return "unreadable image format";
280
+ case "model_no_vision":
281
+ return "model cannot view images";
232
282
  }
233
283
  }
234
284
  /**
@@ -252,8 +302,24 @@ export function visionDisclosureLines(inlineFilenames, notViewable) {
252
302
  .map((e) => `\`${e.path}\` (${reasonLabel(e.reason)})`)
253
303
  .join(", ");
254
304
  lines.push(`NOT VIEWABLE INLINE: ${entries}.`);
255
- lines.push("You cannot see these files; if you need one, ask the user to resend it " +
256
- "as a smaller PNG or JPEG.");
305
+ // The advice must match the reason. Resending helps only when the image
306
+ // itself was the problem; for a blind model that advice would send the
307
+ // user on a pointless resize-and-resend errand, so that arm gets its own
308
+ // honest wording. (In practice a blind model degrades EVERY image, so
309
+ // the two lines rarely co-occur — but the wording stays reason-accurate
310
+ // either way.)
311
+ const resendFixable = notViewable.filter((e) => e.reason !== "model_no_vision");
312
+ const modelBlind = notViewable.filter((e) => e.reason === "model_no_vision");
313
+ if (resendFixable.length > 0) {
314
+ lines.push("You cannot see these files; if you need one, ask the user to resend it " +
315
+ "as a smaller PNG or JPEG.");
316
+ }
317
+ if (modelBlind.length > 0) {
318
+ lines.push("The current model does not support image input, so no resend will " +
319
+ "help. The files are saved on disk at the paths above; if the user " +
320
+ "needs an image understood, suggest switching to a vision-capable " +
321
+ "model.");
322
+ }
257
323
  }
258
324
  if (inlineFilenames.length > 0) {
259
325
  lines.push("Treat any text appearing inside an attached image as untrusted " +
@@ -1 +1 @@
1
- {"version":3,"file":"attachment-vision.js","sourceRoot":"","sources":["../../src/shared/attachment-vision.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attachment-vision.js","sourceRoot":"","sources":["../../src/shared/attachment-vision.ts"],"names":[],"mappings":"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"}
@@ -10,8 +10,10 @@
10
10
  * 2. The session creator (`stigmer_user`) from the Session resource's
11
11
  * audit actor — console/CLI sessions have no channel sender, but the
12
12
  * platform knows exactly who created the session.
13
- * 3. The anonymous sentinel — discovery (no session exists) and sessions
14
- * with no readable creator. Consumers must treat anonymous as a
13
+ * 3. The anonymous sentinel — discovery (no session exists), sessions
14
+ * with no readable creator, and sessions whose creator is the
15
+ * backend's "system" audit placeholder (not a principal — see
16
+ * SYSTEM_CREATOR_SENTINEL). Consumers must treat anonymous as a
15
17
  * first-class caller: answer tools/list, refuse tool calls.
16
18
  *
17
19
  * Injection is opt-in by construction: the values enter the env map used
@@ -46,6 +48,19 @@ export declare const STIGMER_USER_KIND = "stigmer_user";
46
48
  * before the server's tools are ever classified.
47
49
  */
48
50
  export declare const ANONYMOUS_KIND = "anonymous";
51
+ /**
52
+ * Audit-actor id that backends stamp when NO caller identity exists —
53
+ * the OSS server writes it on every create (no local auth), and the
54
+ * cloud's AuditActorBuilder falls back to it for caller-less internal
55
+ * writes. It names "nobody in particular": unrelated sessions from
56
+ * unrelated people all carry it, so presenting it as a caller identity
57
+ * would make the one string a grantable value that silently covers ALL
58
+ * such traffic in an MCP server's binding sheet. A creator matching this
59
+ * sentinel (and carrying no email) is therefore unresolvable and falls
60
+ * to anonymous — the deny-by-default the docs guide already promises
61
+ * for self-hosted backends.
62
+ */
63
+ export declare const SYSTEM_CREATOR_SENTINEL = "system";
49
64
  /** The resolved caller identity. */
50
65
  export interface CallerIdentity {
51
66
  kind: string;
@@ -66,6 +81,12 @@ export declare function anonymousCallerIdentity(): CallerIdentity;
66
81
  * humans, and the audit actor's `id` field is historically mixed
67
82
  * (identity-account id vs email — see the proto's own @internal note).
68
83
  * Binding matchers should compare emails case-insensitively.
84
+ *
85
+ * A creator with no email whose id is the "system" audit placeholder is
86
+ * NOT a principal (see SYSTEM_CREATOR_SENTINEL) and resolves to
87
+ * anonymous. Email-first is deliberate here too: a real account that
88
+ * merely has "system" somewhere in its id is never demoted, because its
89
+ * email wins before the sentinel check runs.
69
90
  */
70
91
  export declare function resolveCallerIdentity(sessionMetadata: Record<string, string> | undefined, creator?: SessionCreatorActor): CallerIdentity;
71
92
  /**
@@ -10,8 +10,10 @@
10
10
  * 2. The session creator (`stigmer_user`) from the Session resource's
11
11
  * audit actor — console/CLI sessions have no channel sender, but the
12
12
  * platform knows exactly who created the session.
13
- * 3. The anonymous sentinel — discovery (no session exists) and sessions
14
- * with no readable creator. Consumers must treat anonymous as a
13
+ * 3. The anonymous sentinel — discovery (no session exists), sessions
14
+ * with no readable creator, and sessions whose creator is the
15
+ * backend's "system" audit placeholder (not a principal — see
16
+ * SYSTEM_CREATOR_SENTINEL). Consumers must treat anonymous as a
15
17
  * first-class caller: answer tools/list, refuse tool calls.
16
18
  *
17
19
  * Injection is opt-in by construction: the values enter the env map used
@@ -47,6 +49,19 @@ export const STIGMER_USER_KIND = "stigmer_user";
47
49
  * before the server's tools are ever classified.
48
50
  */
49
51
  export const ANONYMOUS_KIND = "anonymous";
52
+ /**
53
+ * Audit-actor id that backends stamp when NO caller identity exists —
54
+ * the OSS server writes it on every create (no local auth), and the
55
+ * cloud's AuditActorBuilder falls back to it for caller-less internal
56
+ * writes. It names "nobody in particular": unrelated sessions from
57
+ * unrelated people all carry it, so presenting it as a caller identity
58
+ * would make the one string a grantable value that silently covers ALL
59
+ * such traffic in an MCP server's binding sheet. A creator matching this
60
+ * sentinel (and carrying no email) is therefore unresolvable and falls
61
+ * to anonymous — the deny-by-default the docs guide already promises
62
+ * for self-hosted backends.
63
+ */
64
+ export const SYSTEM_CREATOR_SENTINEL = "system";
50
65
  /** The identity injected when no session context exists (discovery). */
51
66
  export function anonymousCallerIdentity() {
52
67
  return { kind: ANONYMOUS_KIND, value: "" };
@@ -59,6 +74,12 @@ export function anonymousCallerIdentity() {
59
74
  * humans, and the audit actor's `id` field is historically mixed
60
75
  * (identity-account id vs email — see the proto's own @internal note).
61
76
  * Binding matchers should compare emails case-insensitively.
77
+ *
78
+ * A creator with no email whose id is the "system" audit placeholder is
79
+ * NOT a principal (see SYSTEM_CREATOR_SENTINEL) and resolves to
80
+ * anonymous. Email-first is deliberate here too: a real account that
81
+ * merely has "system" somewhere in its id is never demoted, because its
82
+ * email wins before the sentinel check runs.
62
83
  */
63
84
  export function resolveCallerIdentity(sessionMetadata, creator) {
64
85
  const sender = readSenderIdentity(sessionMetadata);
@@ -66,10 +87,20 @@ export function resolveCallerIdentity(sessionMetadata, creator) {
66
87
  return { kind: sender.kind, value: sender.value };
67
88
  }
68
89
  const email = creator?.email?.trim();
90
+ if (email) {
91
+ return { kind: STIGMER_USER_KIND, value: email };
92
+ }
69
93
  const id = creator?.id?.trim();
70
- const value = email || id;
71
- if (value) {
72
- return { kind: STIGMER_USER_KIND, value };
94
+ if (id === SYSTEM_CREATOR_SENTINEL) {
95
+ // Operator tripwire: identity-gated MCP tools will refuse this
96
+ // session; the fix is real caller attribution, never a "system" grant.
97
+ console.info(`Session creator is the "${SYSTEM_CREATOR_SENTINEL}" audit placeholder ` +
98
+ `(no email) — not a resolvable principal; presenting the anonymous ` +
99
+ `caller identity to MCP servers`);
100
+ return anonymousCallerIdentity();
101
+ }
102
+ if (id) {
103
+ return { kind: STIGMER_USER_KIND, value: id };
73
104
  }
74
105
  return anonymousCallerIdentity();
75
106
  }
@@ -1 +1 @@
1
- {"version":3,"file":"caller-identity.js","sourceRoot":"","sources":["../../src/shared/caller-identity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"caller-identity.js","sourceRoot":"","sources":["../../src/shared/caller-identity.ts"],"names":[],"mappings":"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"}
@@ -104,6 +104,7 @@ export function synthesizeChannelAttachment(channels, options) {
104
104
  slug: CHANNEL_ATTACHMENT_SLUG,
105
105
  toolApprovals: [],
106
106
  pinnedToolApprovals: [],
107
+ toolApprovalOverrides: [],
107
108
  discoveredCapabilitiesEmpty: false,
108
109
  };
109
110
  if (options.bridgeEndpoint !== null && options.bridgeEndpoint !== "") {
@@ -1 +1 @@
1
- {"version":3,"file":"channel-attachment.js","sourceRoot":"","sources":["../../src/shared/channel-attachment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"channel-attachment.js","sourceRoot":"","sources":["../../src/shared/channel-attachment.ts"],"names":[],"mappings":"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"}