@namzu/sdk 31.1.0 → 33.0.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 (355) hide show
  1. package/CHANGELOG.md +188 -0
  2. package/dist/agents/ReactiveAgent.d.ts.map +1 -1
  3. package/dist/agents/ReactiveAgent.js +4 -0
  4. package/dist/agents/ReactiveAgent.js.map +1 -1
  5. package/dist/agents/SupervisorAgent.d.ts.map +1 -1
  6. package/dist/agents/SupervisorAgent.js +4 -0
  7. package/dist/agents/SupervisorAgent.js.map +1 -1
  8. package/dist/agents/runAgent.d.ts +4 -0
  9. package/dist/agents/runAgent.d.ts.map +1 -1
  10. package/dist/agents/runAgent.js +4 -0
  11. package/dist/agents/runAgent.js.map +1 -1
  12. package/dist/authorization/gate.d.ts +1 -1
  13. package/dist/authorization/gate.js +1 -1
  14. package/dist/connector/index.d.ts +1 -1
  15. package/dist/connector/index.d.ts.map +1 -1
  16. package/dist/connector/index.js +1 -1
  17. package/dist/connector/index.js.map +1 -1
  18. package/dist/connector/mcp/adapter.d.ts.map +1 -1
  19. package/dist/connector/mcp/adapter.js +71 -16
  20. package/dist/connector/mcp/adapter.js.map +1 -1
  21. package/dist/connector/mcp/client.d.ts.map +1 -1
  22. package/dist/connector/mcp/client.js +3 -2
  23. package/dist/connector/mcp/client.js.map +1 -1
  24. package/dist/connector/mcp/http-redirect.d.ts +17 -0
  25. package/dist/connector/mcp/http-redirect.d.ts.map +1 -0
  26. package/dist/connector/mcp/http-redirect.js +31 -0
  27. package/dist/connector/mcp/http-redirect.js.map +1 -0
  28. package/dist/connector/mcp/http-sse.d.ts.map +1 -1
  29. package/dist/connector/mcp/http-sse.js +5 -0
  30. package/dist/connector/mcp/http-sse.js.map +1 -1
  31. package/dist/connector/mcp/image-admission.d.ts +16 -0
  32. package/dist/connector/mcp/image-admission.d.ts.map +1 -0
  33. package/dist/connector/mcp/image-admission.js +288 -0
  34. package/dist/connector/mcp/image-admission.js.map +1 -0
  35. package/dist/connector/mcp/stdio.d.ts +13 -0
  36. package/dist/connector/mcp/stdio.d.ts.map +1 -1
  37. package/dist/connector/mcp/stdio.js +66 -23
  38. package/dist/connector/mcp/stdio.js.map +1 -1
  39. package/dist/connector/mcp/streamable-http.d.ts.map +1 -1
  40. package/dist/connector/mcp/streamable-http.js +3 -0
  41. package/dist/connector/mcp/streamable-http.js.map +1 -1
  42. package/dist/constants/tools/index.js +1 -1
  43. package/dist/constants/tools/index.js.map +1 -1
  44. package/dist/directory/derive-supervisor.d.ts.map +1 -1
  45. package/dist/directory/derive-supervisor.js +5 -0
  46. package/dist/directory/derive-supervisor.js.map +1 -1
  47. package/dist/directory/derive.d.ts.map +1 -1
  48. package/dist/directory/derive.js +5 -0
  49. package/dist/directory/derive.js.map +1 -1
  50. package/dist/directory/load.d.ts.map +1 -1
  51. package/dist/directory/load.js +1 -0
  52. package/dist/directory/load.js.map +1 -1
  53. package/dist/directory/types.d.ts +2 -0
  54. package/dist/directory/types.d.ts.map +1 -1
  55. package/dist/execution/base.d.ts +13 -0
  56. package/dist/execution/base.d.ts.map +1 -1
  57. package/dist/execution/base.js +103 -8
  58. package/dist/execution/base.js.map +1 -1
  59. package/dist/execution/code-runtime/types.d.ts +11 -1
  60. package/dist/execution/code-runtime/types.d.ts.map +1 -1
  61. package/dist/execution/code-runtime/types.js.map +1 -1
  62. package/dist/execution/code-runtime/worker.d.ts.map +1 -1
  63. package/dist/execution/code-runtime/worker.js +67 -9
  64. package/dist/execution/code-runtime/worker.js.map +1 -1
  65. package/dist/execution/errors.d.ts +12 -0
  66. package/dist/execution/errors.d.ts.map +1 -0
  67. package/dist/execution/errors.js +21 -0
  68. package/dist/execution/errors.js.map +1 -0
  69. package/dist/execution/factory.d.ts.map +1 -1
  70. package/dist/execution/factory.js +1 -0
  71. package/dist/execution/factory.js.map +1 -1
  72. package/dist/execution/hybrid.d.ts +5 -0
  73. package/dist/execution/hybrid.d.ts.map +1 -1
  74. package/dist/execution/hybrid.js +36 -16
  75. package/dist/execution/hybrid.js.map +1 -1
  76. package/dist/execution/index.d.ts +1 -0
  77. package/dist/execution/index.d.ts.map +1 -1
  78. package/dist/execution/index.js +1 -0
  79. package/dist/execution/index.js.map +1 -1
  80. package/dist/execution/local.d.ts +13 -0
  81. package/dist/execution/local.d.ts.map +1 -1
  82. package/dist/execution/local.js +145 -19
  83. package/dist/execution/local.js.map +1 -1
  84. package/dist/execution/output.d.ts +27 -0
  85. package/dist/execution/output.d.ts.map +1 -0
  86. package/dist/execution/output.js +105 -0
  87. package/dist/execution/output.js.map +1 -0
  88. package/dist/execution/remote.d.ts +26 -2
  89. package/dist/execution/remote.d.ts.map +1 -1
  90. package/dist/execution/remote.js +86 -15
  91. package/dist/execution/remote.js.map +1 -1
  92. package/dist/manager/agent/lifecycle.d.ts.map +1 -1
  93. package/dist/manager/agent/lifecycle.js +1 -0
  94. package/dist/manager/agent/lifecycle.js.map +1 -1
  95. package/dist/plugin/lifecycle.d.ts.map +1 -1
  96. package/dist/plugin/lifecycle.js +9 -3
  97. package/dist/plugin/lifecycle.js.map +1 -1
  98. package/dist/process/kill-tree.d.ts +11 -13
  99. package/dist/process/kill-tree.d.ts.map +1 -1
  100. package/dist/process/kill-tree.js +11 -13
  101. package/dist/process/kill-tree.js.map +1 -1
  102. package/dist/provider/errors.d.ts +1 -0
  103. package/dist/provider/errors.d.ts.map +1 -1
  104. package/dist/provider/errors.js +39 -1
  105. package/dist/provider/errors.js.map +1 -1
  106. package/dist/provider/fallback.d.ts.map +1 -1
  107. package/dist/provider/fallback.js +31 -0
  108. package/dist/provider/fallback.js.map +1 -1
  109. package/dist/provider/idle-timeout.d.ts.map +1 -1
  110. package/dist/provider/idle-timeout.js +5 -0
  111. package/dist/provider/idle-timeout.js.map +1 -1
  112. package/dist/provider/retry.d.ts.map +1 -1
  113. package/dist/provider/retry.js +5 -0
  114. package/dist/provider/retry.js.map +1 -1
  115. package/dist/public-runtime.d.ts +7 -5
  116. package/dist/public-runtime.d.ts.map +1 -1
  117. package/dist/public-runtime.js +9 -4
  118. package/dist/public-runtime.js.map +1 -1
  119. package/dist/public-types.d.ts +2 -1
  120. package/dist/public-types.d.ts.map +1 -1
  121. package/dist/registry/tool/execute.d.ts +7 -1
  122. package/dist/registry/tool/execute.d.ts.map +1 -1
  123. package/dist/registry/tool/execute.js +201 -54
  124. package/dist/registry/tool/execute.js.map +1 -1
  125. package/dist/run/command-gate.d.ts.map +1 -1
  126. package/dist/run/command-gate.js +11 -0
  127. package/dist/run/command-gate.js.map +1 -1
  128. package/dist/run/reporter.d.ts.map +1 -1
  129. package/dist/run/reporter.js +6 -1
  130. package/dist/run/reporter.js.map +1 -1
  131. package/dist/run/workspace-fingerprint.d.ts +4 -4
  132. package/dist/run/workspace-fingerprint.d.ts.map +1 -1
  133. package/dist/run/workspace-fingerprint.js +6 -4
  134. package/dist/run/workspace-fingerprint.js.map +1 -1
  135. package/dist/runtime/bidi/index.d.ts +1 -1
  136. package/dist/runtime/bidi/index.d.ts.map +1 -1
  137. package/dist/runtime/bidi/index.js +1 -1
  138. package/dist/runtime/bidi/index.js.map +1 -1
  139. package/dist/runtime/bidi/session.d.ts +19 -0
  140. package/dist/runtime/bidi/session.d.ts.map +1 -1
  141. package/dist/runtime/bidi/session.js +150 -26
  142. package/dist/runtime/bidi/session.js.map +1 -1
  143. package/dist/runtime/query/executor.d.ts +43 -1
  144. package/dist/runtime/query/executor.d.ts.map +1 -1
  145. package/dist/runtime/query/executor.js +824 -174
  146. package/dist/runtime/query/executor.js.map +1 -1
  147. package/dist/runtime/query/index.d.ts +5 -0
  148. package/dist/runtime/query/index.d.ts.map +1 -1
  149. package/dist/runtime/query/index.js +47 -4
  150. package/dist/runtime/query/index.js.map +1 -1
  151. package/dist/runtime/query/iteration/index.d.ts +1 -0
  152. package/dist/runtime/query/iteration/index.d.ts.map +1 -1
  153. package/dist/runtime/query/iteration/index.js +34 -14
  154. package/dist/runtime/query/iteration/index.js.map +1 -1
  155. package/dist/runtime/query/iteration/phases/advisory.js +2 -2
  156. package/dist/runtime/query/iteration/phases/advisory.js.map +1 -1
  157. package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
  158. package/dist/runtime/query/iteration/phases/tool-review.js +84 -22
  159. package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
  160. package/dist/runtime/query/iteration/provider-rejected-image.d.ts +13 -0
  161. package/dist/runtime/query/iteration/provider-rejected-image.d.ts.map +1 -0
  162. package/dist/runtime/query/iteration/provider-rejected-image.js +91 -0
  163. package/dist/runtime/query/iteration/provider-rejected-image.js.map +1 -0
  164. package/dist/runtime/query/iteration/stream-turn.d.ts +4 -1
  165. package/dist/runtime/query/iteration/stream-turn.d.ts.map +1 -1
  166. package/dist/runtime/query/iteration/stream-turn.js +7 -3
  167. package/dist/runtime/query/iteration/stream-turn.js.map +1 -1
  168. package/dist/runtime/query/request-rich-content.d.ts +13 -0
  169. package/dist/runtime/query/request-rich-content.d.ts.map +1 -1
  170. package/dist/runtime/query/request-rich-content.js +173 -17
  171. package/dist/runtime/query/request-rich-content.js.map +1 -1
  172. package/dist/runtime/query/result.d.ts.map +1 -1
  173. package/dist/runtime/query/result.js +1 -0
  174. package/dist/runtime/query/result.js.map +1 -1
  175. package/dist/runtime/query/resume-pending.d.ts +5 -1
  176. package/dist/runtime/query/resume-pending.d.ts.map +1 -1
  177. package/dist/runtime/query/resume-pending.js +66 -1
  178. package/dist/runtime/query/resume-pending.js.map +1 -1
  179. package/dist/runtime/query/tool-output-budget.d.ts.map +1 -1
  180. package/dist/runtime/query/tool-output-budget.js +45 -16
  181. package/dist/runtime/query/tool-output-budget.js.map +1 -1
  182. package/dist/runtime/query/tooling.d.ts +6 -0
  183. package/dist/runtime/query/tooling.d.ts.map +1 -1
  184. package/dist/runtime/query/tooling.js +4 -0
  185. package/dist/runtime/query/tooling.js.map +1 -1
  186. package/dist/sandbox/provider/local.d.ts.map +1 -1
  187. package/dist/sandbox/provider/local.js +193 -41
  188. package/dist/sandbox/provider/local.js.map +1 -1
  189. package/dist/scheduler/delegating.d.ts +2 -1
  190. package/dist/scheduler/delegating.d.ts.map +1 -1
  191. package/dist/scheduler/delegating.js +6 -5
  192. package/dist/scheduler/delegating.js.map +1 -1
  193. package/dist/scheduler/local.d.ts +2 -1
  194. package/dist/scheduler/local.d.ts.map +1 -1
  195. package/dist/scheduler/local.js +2 -2
  196. package/dist/scheduler/local.js.map +1 -1
  197. package/dist/session/workspace/driver.d.ts +12 -4
  198. package/dist/session/workspace/driver.d.ts.map +1 -1
  199. package/dist/session/workspace/git-worktree.d.ts +17 -3
  200. package/dist/session/workspace/git-worktree.d.ts.map +1 -1
  201. package/dist/session/workspace/git-worktree.js +153 -34
  202. package/dist/session/workspace/git-worktree.js.map +1 -1
  203. package/dist/skills/registry.d.ts +15 -0
  204. package/dist/skills/registry.d.ts.map +1 -1
  205. package/dist/skills/registry.js +33 -0
  206. package/dist/skills/registry.js.map +1 -1
  207. package/dist/store/attachment/index.d.ts +24 -2
  208. package/dist/store/attachment/index.d.ts.map +1 -1
  209. package/dist/store/attachment/index.js +52 -5
  210. package/dist/store/attachment/index.js.map +1 -1
  211. package/dist/tools/builtins/computer-use.d.ts.map +1 -1
  212. package/dist/tools/builtins/computer-use.js +39 -2
  213. package/dist/tools/builtins/computer-use.js.map +1 -1
  214. package/dist/tools/builtins/lsp.d.ts +1 -1
  215. package/dist/tools/builtins/run-code.d.ts.map +1 -1
  216. package/dist/tools/builtins/run-code.js +24 -16
  217. package/dist/tools/builtins/run-code.js.map +1 -1
  218. package/dist/tools/builtins/skill.d.ts +2 -1
  219. package/dist/tools/builtins/skill.d.ts.map +1 -1
  220. package/dist/tools/builtins/skill.js +250 -6
  221. package/dist/tools/builtins/skill.js.map +1 -1
  222. package/dist/tools/coordinator/agent.d.ts.map +1 -1
  223. package/dist/tools/coordinator/agent.js +100 -30
  224. package/dist/tools/coordinator/agent.js.map +1 -1
  225. package/dist/types/agent/base.d.ts +4 -0
  226. package/dist/types/agent/base.d.ts.map +1 -1
  227. package/dist/types/agent/factory.d.ts +1 -0
  228. package/dist/types/agent/factory.d.ts.map +1 -1
  229. package/dist/types/agent/manager.d.ts +1 -1
  230. package/dist/types/agent/manager.d.ts.map +1 -1
  231. package/dist/types/agent/scheduler.d.ts +10 -1
  232. package/dist/types/agent/scheduler.d.ts.map +1 -1
  233. package/dist/types/authorization/index.d.ts +12 -12
  234. package/dist/types/bidi/index.d.ts +19 -2
  235. package/dist/types/bidi/index.d.ts.map +1 -1
  236. package/dist/types/computer-use/index.d.ts +18 -0
  237. package/dist/types/computer-use/index.d.ts.map +1 -1
  238. package/dist/types/connector/execution-context.d.ts +3 -1
  239. package/dist/types/connector/execution-context.d.ts.map +1 -1
  240. package/dist/types/execution/index.d.ts +43 -1
  241. package/dist/types/execution/index.d.ts.map +1 -1
  242. package/dist/types/hitl/index.d.ts +11 -0
  243. package/dist/types/hitl/index.d.ts.map +1 -1
  244. package/dist/types/hitl/index.js.map +1 -1
  245. package/dist/types/message/index.d.ts +31 -1
  246. package/dist/types/message/index.d.ts.map +1 -1
  247. package/dist/types/message/index.js +43 -0
  248. package/dist/types/message/index.js.map +1 -1
  249. package/dist/types/plugin/index.d.ts +14 -1
  250. package/dist/types/plugin/index.d.ts.map +1 -1
  251. package/dist/types/plugin/index.js +1 -0
  252. package/dist/types/plugin/index.js.map +1 -1
  253. package/dist/types/provider/error.d.ts +4 -1
  254. package/dist/types/provider/error.d.ts.map +1 -1
  255. package/dist/types/provider/interface.d.ts +14 -0
  256. package/dist/types/provider/interface.d.ts.map +1 -1
  257. package/dist/types/run/events.d.ts +10 -2
  258. package/dist/types/run/events.d.ts.map +1 -1
  259. package/dist/types/run/events.js.map +1 -1
  260. package/dist/types/sandbox/index.d.ts +15 -10
  261. package/dist/types/sandbox/index.d.ts.map +1 -1
  262. package/dist/types/sandbox/index.js.map +1 -1
  263. package/dist/types/tool/index.d.ts +129 -12
  264. package/dist/types/tool/index.d.ts.map +1 -1
  265. package/dist/types/tool/index.js.map +1 -1
  266. package/dist/types/workspace/ref.d.ts +5 -0
  267. package/dist/types/workspace/ref.d.ts.map +1 -1
  268. package/dist/utils/abort.d.ts +8 -0
  269. package/dist/utils/abort.d.ts.map +1 -1
  270. package/dist/utils/abort.js +16 -0
  271. package/dist/utils/abort.js.map +1 -1
  272. package/package.json +4 -4
  273. package/src/agents/ReactiveAgent.ts +4 -0
  274. package/src/agents/SupervisorAgent.ts +4 -0
  275. package/src/agents/runAgent.ts +8 -0
  276. package/src/authorization/gate.ts +1 -1
  277. package/src/connector/index.ts +2 -0
  278. package/src/connector/mcp/adapter.ts +82 -21
  279. package/src/connector/mcp/client.ts +2 -1
  280. package/src/connector/mcp/http-redirect.ts +32 -0
  281. package/src/connector/mcp/http-sse.ts +5 -0
  282. package/src/connector/mcp/image-admission.ts +272 -0
  283. package/src/connector/mcp/stdio.ts +63 -21
  284. package/src/connector/mcp/streamable-http.ts +3 -0
  285. package/src/constants/tools/index.ts +1 -1
  286. package/src/directory/derive-supervisor.ts +5 -0
  287. package/src/directory/derive.ts +5 -0
  288. package/src/directory/load.ts +1 -0
  289. package/src/directory/types.ts +2 -0
  290. package/src/execution/base.ts +124 -7
  291. package/src/execution/code-runtime/types.ts +15 -1
  292. package/src/execution/code-runtime/worker.ts +72 -9
  293. package/src/execution/errors.ts +24 -0
  294. package/src/execution/factory.ts +1 -0
  295. package/src/execution/hybrid.ts +47 -16
  296. package/src/execution/index.ts +1 -0
  297. package/src/execution/local.ts +164 -19
  298. package/src/execution/output.ts +104 -0
  299. package/src/execution/remote.ts +122 -17
  300. package/src/manager/agent/lifecycle.ts +1 -0
  301. package/src/plugin/lifecycle.ts +9 -3
  302. package/src/process/kill-tree.ts +11 -13
  303. package/src/provider/errors.ts +40 -1
  304. package/src/provider/fallback.ts +39 -0
  305. package/src/provider/idle-timeout.ts +8 -0
  306. package/src/provider/retry.ts +8 -0
  307. package/src/public-runtime.ts +23 -2
  308. package/src/public-types.ts +11 -0
  309. package/src/registry/tool/execute.ts +230 -64
  310. package/src/run/command-gate.ts +12 -0
  311. package/src/run/reporter.ts +7 -1
  312. package/src/run/workspace-fingerprint.ts +5 -4
  313. package/src/runtime/bidi/index.ts +1 -1
  314. package/src/runtime/bidi/session.ts +177 -28
  315. package/src/runtime/query/executor.ts +987 -172
  316. package/src/runtime/query/index.ts +59 -6
  317. package/src/runtime/query/iteration/index.ts +69 -29
  318. package/src/runtime/query/iteration/phases/advisory.ts +2 -2
  319. package/src/runtime/query/iteration/phases/tool-review.ts +87 -23
  320. package/src/runtime/query/iteration/provider-rejected-image.ts +106 -0
  321. package/src/runtime/query/iteration/stream-turn.ts +12 -2
  322. package/src/runtime/query/request-rich-content.ts +213 -15
  323. package/src/runtime/query/result.ts +1 -0
  324. package/src/runtime/query/resume-pending.ts +83 -1
  325. package/src/runtime/query/tool-output-budget.ts +52 -17
  326. package/src/runtime/query/tooling.ts +10 -0
  327. package/src/sandbox/provider/local.ts +213 -45
  328. package/src/scheduler/delegating.ts +6 -5
  329. package/src/scheduler/local.ts +3 -2
  330. package/src/session/workspace/driver.ts +12 -4
  331. package/src/session/workspace/git-worktree.ts +173 -34
  332. package/src/skills/registry.ts +47 -0
  333. package/src/store/attachment/index.ts +100 -15
  334. package/src/tools/builtins/computer-use.ts +45 -2
  335. package/src/tools/builtins/run-code.ts +24 -16
  336. package/src/tools/builtins/skill.ts +325 -7
  337. package/src/tools/coordinator/agent.ts +108 -33
  338. package/src/types/agent/base.ts +4 -0
  339. package/src/types/agent/factory.ts +1 -0
  340. package/src/types/agent/manager.ts +1 -1
  341. package/src/types/agent/scheduler.ts +10 -1
  342. package/src/types/bidi/index.ts +19 -2
  343. package/src/types/computer-use/index.ts +19 -0
  344. package/src/types/connector/execution-context.ts +3 -0
  345. package/src/types/execution/index.ts +46 -1
  346. package/src/types/hitl/index.ts +11 -0
  347. package/src/types/message/index.ts +78 -1
  348. package/src/types/plugin/index.ts +15 -0
  349. package/src/types/provider/error.ts +4 -1
  350. package/src/types/provider/interface.ts +18 -0
  351. package/src/types/run/events.ts +18 -4
  352. package/src/types/sandbox/index.ts +15 -10
  353. package/src/types/tool/index.ts +159 -15
  354. package/src/types/workspace/ref.ts +5 -0
  355. package/src/utils/abort.ts +18 -0
@@ -17,12 +17,18 @@ import type { WorkspaceBackendKind, WorkspaceRef } from '../../types/workspace/r
17
17
  */
18
18
  export interface CreateWorkspaceParams {
19
19
  baseRef?: string;
20
+ /**
21
+ * Traceable name below the configured workspace root. Nested names are
22
+ * accepted; absolute paths, traversal, and paths rewritten by a filesystem
23
+ * link are refused by the reference Git driver.
24
+ */
20
25
  label?: string;
21
26
  }
22
27
  /**
23
- * Params for {@link WorkspaceBackendDriver.branch}. `label` is a free-form
24
- * tag embedded into the new workspace name so operators can trace provenance
25
- * without reaching into the driver's internal naming scheme.
28
+ * Params for {@link WorkspaceBackendDriver.branch}. `label` is a traceable tag
29
+ * embedded into the new workspace name so operators can identify provenance
30
+ * without reaching into the driver's internal naming scheme. Backend path and
31
+ * identifier constraints still apply.
26
32
  */
27
33
  export interface BranchWorkspaceParams {
28
34
  label?: string;
@@ -42,7 +48,9 @@ export interface WorkspaceInspection {
42
48
  * Backend driver contract. All methods are async and may throw
43
49
  * {@link WorkspaceBackendError} on I/O failures. `dispose` is idempotent —
44
50
  * calling it against an already-disposed ref is not an error (mitigates
45
- * roadmap Risk #3: broadcast rollback must not fail on partial state).
51
+ * roadmap Risk #3: broadcast rollback must not fail on partial state). A ref
52
+ * remains affiliated with the driver configuration that created it; drivers
53
+ * refuse foreign backend, repository, or ownership-root metadata.
46
54
  */
47
55
  export interface WorkspaceBackendDriver {
48
56
  readonly kind: WorkspaceBackendKind;
@@ -1 +1 @@
1
- {"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../../src/session/workspace/driver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAEtF;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACrC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACrC,KAAK,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IACnC,MAAM,EAAE,OAAO,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,OAAO,CAAA;CAChB;AAED;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAA;IACnC,MAAM,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IAC5D,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IAClF,OAAO,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACzC,OAAO,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;CACxD;AAED,YAAY,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA"}
1
+ {"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../../src/session/workspace/driver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAEtF;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACrC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACrC,KAAK,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IACnC,MAAM,EAAE,OAAO,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,OAAO,CAAA;CAChB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAA;IACnC,MAAM,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IAC5D,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IAClF,OAAO,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACzC,OAAO,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;CACxD;AAED,YAAY,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA"}
@@ -4,9 +4,10 @@
4
4
  *
5
5
  * See session-hierarchy.md §7.2 (Git-worktree reference backend).
6
6
  *
7
- * Safety: every subprocess invocation uses `execFile` with an argv array
8
- * no shell interpolation so caller-supplied `label`/`baseRef` strings
9
- * cannot escape their argument slot. Failures surface as
7
+ * Safety: every subprocess invocation uses `execFile` with an argv array and
8
+ * separates caller-controlled positional arguments from Git options with
9
+ * `--`. Filesystem paths are canonicalized and confined to the configured
10
+ * worktree root before Git receives them. Failures surface as
10
11
  * {@link WorkspaceBackendError} carrying the underlying cause.
11
12
  */
12
13
  import type { WorkspaceRef } from '../../types/workspace/ref.js';
@@ -67,6 +68,19 @@ export declare class GitWorktreeDriver implements WorkspaceBackendDriver {
67
68
  */
68
69
  private createdDespite;
69
70
  inspect(ref: WorkspaceRef): Promise<WorkspaceInspection>;
71
+ /**
72
+ * Turn persisted metadata back into an owned driver capability.
73
+ *
74
+ * A WorkspaceRef is recovery data, not authority to make this driver act on
75
+ * any worktree registered in the same repository. Existing links are
76
+ * resolved before the boundary is decided, and every Git call receives the
77
+ * canonical path that was checked. This closes static symlink escapes. It
78
+ * does not claim protection from a host process concurrently swapping path
79
+ * components or mount points; the Git CLI exposes no descriptor-relative
80
+ * removal primitive with which to make that guarantee.
81
+ */
82
+ private requireOwnedRef;
83
+ private registeredEntry;
70
84
  }
71
85
  /**
72
86
  * Parses `git worktree list --porcelain` output, returning the record for
@@ -1 +1 @@
1
- {"version":3,"file":"git-worktree.d.ts","sourceRoot":"","sources":["../../../src/session/workspace/git-worktree.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,KAAK,EAA0B,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAGxF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAEnD,OAAO,KAAK,EACX,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,MAAM,aAAa,CAAA;AAIpB;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACd;AAED;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC,cAAc,CAAC,CAAA;AAIzF;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACvC,uEAAuE;IACvE,QAAQ,EAAE,MAAM,CAAA;IAChB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,QAAQ,CAAA;CACnB;AAED,qBAAa,iBAAkB,YAAW,sBAAsB;IAC/D,QAAQ,CAAC,IAAI,EAAG,cAAc,CAAS;IAEvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IACrC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;gBAEnB,MAAM,EAAE,uBAAuB;IAOrC,MAAM,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC;IAuD5D,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC;IAMlF,OAAO,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC/C;;;;;;;;;;;;;OAaG;YACW,cAAc;IAqBtB,OAAO,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAkC9D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAChC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAqBzD"}
1
+ {"version":3,"file":"git-worktree.d.ts","sourceRoot":"","sources":["../../../src/session/workspace/git-worktree.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAOH,OAAO,KAAK,EAA0B,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAGxF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAEnD,OAAO,KAAK,EACX,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,MAAM,aAAa,CAAA;AAIpB;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACd;AAED;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC,cAAc,CAAC,CAAA;AAIzF;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACvC,uEAAuE;IACvE,QAAQ,EAAE,MAAM,CAAA;IAChB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,QAAQ,CAAA;CACnB;AAED,qBAAa,iBAAkB,YAAW,sBAAsB;IAC/D,QAAQ,CAAC,IAAI,EAAG,cAAc,CAAS;IAEvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IACrC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;gBAEnB,MAAM,EAAE,uBAAuB;IAOrC,MAAM,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC;IAmF5D,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC;IAOlF,OAAO,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IA+C/C;;;;;;;;;;;;;OAaG;YACW,cAAc;IAmBtB,OAAO,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAoC9D;;;;;;;;;;OAUG;YACW,eAAe;YAmCf,eAAe;CAqB7B;AA4BD;;;GAGG;AACH,wBAAgB,iBAAiB,CAChC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAqBzD"}
@@ -4,13 +4,15 @@
4
4
  *
5
5
  * See session-hierarchy.md §7.2 (Git-worktree reference backend).
6
6
  *
7
- * Safety: every subprocess invocation uses `execFile` with an argv array
8
- * no shell interpolation so caller-supplied `label`/`baseRef` strings
9
- * cannot escape their argument slot. Failures surface as
7
+ * Safety: every subprocess invocation uses `execFile` with an argv array and
8
+ * separates caller-controlled positional arguments from Git options with
9
+ * `--`. Filesystem paths are canonicalized and confined to the configured
10
+ * worktree root before Git receives them. Failures surface as
10
11
  * {@link WorkspaceBackendError} carrying the underlying cause.
11
12
  */
12
13
  import { execFile } from 'node:child_process';
13
- import { join } from 'node:path';
14
+ import { realpath } from 'node:fs/promises';
15
+ import { basename, dirname, isAbsolute, join, relative, resolve, sep } from 'node:path';
14
16
  import { promisify } from 'node:util';
15
17
  import { NAMZU } from '../../constants/telemetry/index.js';
16
18
  import { generateWorkspaceId } from '../../utils/id.js';
@@ -25,17 +27,41 @@ export class GitWorktreeDriver {
25
27
  log;
26
28
  exec;
27
29
  constructor(config) {
28
- this.repoRoot = config.repoRoot;
29
- this.worktreesDir = config.worktreesDir ?? join(config.repoRoot, '.namzu', 'worktrees');
30
+ this.repoRoot = resolve(config.repoRoot);
31
+ this.worktreesDir = resolve(config.worktreesDir ?? join(config.repoRoot, '.namzu', 'worktrees'));
30
32
  this.log = config.logger.child({ [SCOPE_ATTRIBUTE]: 'session/workspace/git-worktree' });
31
33
  this.exec = config.execFile ?? defaultExecFile;
32
34
  }
33
35
  async create(params) {
34
36
  const id = generateWorkspaceId();
35
37
  const label = params.label ?? id;
36
- const branch = `namzu/${label}`;
37
- const worktreePath = join(this.worktreesDir, label);
38
- const argv = ['-C', this.repoRoot, 'worktree', 'add', '-b', branch, worktreePath];
38
+ let repoRoot;
39
+ let worktreesDir;
40
+ let worktreePath;
41
+ try {
42
+ repoRoot = await canonicalizeThroughExisting(this.repoRoot);
43
+ worktreesDir = await canonicalizeThroughExisting(this.worktreesDir);
44
+ const lexicalPath = resolve(worktreesDir, label);
45
+ if (!isStrictDescendant(worktreesDir, lexicalPath)) {
46
+ throw new Error(`Workspace label escapes the managed worktree directory: ${label}`);
47
+ }
48
+ worktreePath = await canonicalizeThroughExisting(lexicalPath);
49
+ if (!isStrictDescendant(worktreesDir, worktreePath)) {
50
+ throw new Error(`Workspace label resolves through a link outside the managed worktree directory: ${label}`);
51
+ }
52
+ if (relative(worktreesDir, lexicalPath) !== relative(worktreesDir, worktreePath)) {
53
+ throw new Error(`Workspace label resolves through a link to a different managed path: ${label}`);
54
+ }
55
+ }
56
+ catch (cause) {
57
+ throw new WorkspaceBackendError({ op: 'create:ownership', kind: this.kind, cause });
58
+ }
59
+ const relativePath = relative(worktreesDir, worktreePath).split(sep).join('/');
60
+ const branch = `namzu/${relativePath}`;
61
+ // `--` belongs before caller-controlled positional arguments. Without it,
62
+ // a base ref such as `--no-checkout` is accepted as a Git option and the
63
+ // driver publishes a checkout containing only its `.git` link.
64
+ const argv = ['-C', repoRoot, 'worktree', 'add', '-b', branch, '--', worktreePath];
39
65
  if (params.baseRef !== undefined) {
40
66
  argv.push(params.baseRef);
41
67
  }
@@ -55,7 +81,7 @@ export class GitWorktreeDriver {
55
81
  // The bar is deliberately high: registered under this exact path
56
82
  // AND carrying the branch this call asked for. A registered path
57
83
  // alone can be a half-finished checkout, or somebody else's.
58
- if (!(await this.createdDespite(worktreePath, branch))) {
84
+ if (!(await this.createdDespite(repoRoot, worktreePath, branch))) {
59
85
  throw new WorkspaceBackendError({ op: 'create', kind: this.kind, cause });
60
86
  }
61
87
  this.log.warn('git-worktree add reported failure but the worktree is present', {
@@ -66,7 +92,7 @@ export class GitWorktreeDriver {
66
92
  }
67
93
  const meta = {
68
94
  backend: 'git-worktree',
69
- repoRoot: this.repoRoot,
95
+ repoRoot,
70
96
  branch,
71
97
  worktreePath,
72
98
  };
@@ -84,34 +110,47 @@ export class GitWorktreeDriver {
84
110
  async branch(source, params) {
85
111
  // Branch from the source worktree's current branch. The source's
86
112
  // `meta.branch` is the ref we base off.
87
- return this.create({ baseRef: source.meta.branch, label: params.label });
113
+ const owned = await this.requireOwnedRef(source, 'branch');
114
+ return this.create({ baseRef: owned.branch, label: params.label });
88
115
  }
89
116
  async dispose(ref) {
117
+ const owned = await this.requireOwnedRef(ref, 'dispose');
118
+ const registered = await this.registeredEntry(owned, 'dispose:list');
119
+ if (!registered) {
120
+ this.log.debug('git-worktree already gone; dispose idempotent', {
121
+ [NAMZU.SESSION_ID]: ref.id,
122
+ 'namzu.session.path': owned.worktreePath,
123
+ });
124
+ return;
125
+ }
90
126
  // Tolerate missing directories per roadmap Risk #3 mitigation: the
91
127
  // broadcast-rollback compensating step calls dispose on partially
92
- // provisioned refs and must not propagate "already gone" errors.
128
+ // provisioned refs and must not propagate "already gone" errors. The
129
+ // repository list, rather than an error-message regex, is the evidence:
130
+ // an unavailable repository can contain the same "No such file" words.
93
131
  try {
94
132
  await this.exec('git', [
95
133
  '-C',
96
- this.repoRoot,
134
+ owned.repoRoot,
97
135
  'worktree',
98
136
  'remove',
99
- ref.meta.worktreePath,
137
+ owned.worktreePath,
100
138
  '--force',
101
139
  ]);
102
140
  this.log.info('git-worktree disposed', {
103
141
  [NAMZU.SESSION_ID]: ref.id,
104
- 'namzu.session.path': ref.meta.worktreePath,
142
+ 'namzu.session.path': owned.worktreePath,
105
143
  });
106
144
  }
107
145
  catch (cause) {
108
- const message = cause instanceof Error ? cause.message : String(cause);
109
- // git exits non-zero with "is not a working tree" when the path is
110
- // absent; treat as idempotent success and log at debug.
111
- if (/not a working tree|does not exist|No such file/i.test(message)) {
146
+ // Two concurrent disposals can both observe the entry before one wins.
147
+ // Re-read after failure and accept only repository evidence that the
148
+ // exact owned branch/path pair is now absent.
149
+ const nowRegistered = await this.registeredEntry(owned, 'dispose:recheck').catch(() => undefined);
150
+ if (nowRegistered === null) {
112
151
  this.log.debug('git-worktree already gone; dispose idempotent', {
113
152
  [NAMZU.SESSION_ID]: ref.id,
114
- 'namzu.session.path': ref.meta.worktreePath,
153
+ 'namzu.session.path': owned.worktreePath,
115
154
  });
116
155
  return;
117
156
  }
@@ -132,15 +171,9 @@ export class GitWorktreeDriver {
132
171
  * has already gone wrong once, and guessing optimistically there is how
133
172
  * a recovery turns a bad situation into a wrong one.
134
173
  */
135
- async createdDespite(worktreePath, branch) {
174
+ async createdDespite(repoRoot, worktreePath, branch) {
136
175
  try {
137
- const { stdout } = await this.exec('git', [
138
- '-C',
139
- this.repoRoot,
140
- 'worktree',
141
- 'list',
142
- '--porcelain',
143
- ]);
176
+ const { stdout } = await this.exec('git', ['-C', repoRoot, 'worktree', 'list', '--porcelain']);
144
177
  const entry = parseWorktreeList(stdout, worktreePath);
145
178
  // `--porcelain` writes the branch as a full ref (`refs/heads/x`),
146
179
  // and `branch` here is the short name this call passed to `-b`.
@@ -154,11 +187,12 @@ export class GitWorktreeDriver {
154
187
  }
155
188
  }
156
189
  async inspect(ref) {
190
+ const owned = await this.requireOwnedRef(ref, 'inspect');
157
191
  let listStdout;
158
192
  try {
159
193
  const result = await this.exec('git', [
160
194
  '-C',
161
- this.repoRoot,
195
+ owned.repoRoot,
162
196
  'worktree',
163
197
  'list',
164
198
  '--porcelain',
@@ -168,13 +202,13 @@ export class GitWorktreeDriver {
168
202
  catch (cause) {
169
203
  throw new WorkspaceBackendError({ op: 'inspect:list', kind: this.kind, cause });
170
204
  }
171
- const entry = parseWorktreeList(listStdout, ref.meta.worktreePath);
172
- if (!entry) {
173
- return { exists: false, currentRef: ref.meta.branch, isDirty: false };
205
+ const entry = parseWorktreeList(listStdout, owned.worktreePath);
206
+ if (!entry || entry.branch !== `refs/heads/${owned.branch}`) {
207
+ return { exists: false, currentRef: owned.branch, isDirty: false };
174
208
  }
175
209
  let statusStdout;
176
210
  try {
177
- const result = await this.exec('git', ['-C', ref.meta.worktreePath, 'status', '--porcelain']);
211
+ const result = await this.exec('git', ['-C', owned.worktreePath, 'status', '--porcelain']);
178
212
  statusStdout = result.stdout;
179
213
  }
180
214
  catch (cause) {
@@ -186,6 +220,91 @@ export class GitWorktreeDriver {
186
220
  isDirty: statusStdout.trim().length > 0,
187
221
  };
188
222
  }
223
+ /**
224
+ * Turn persisted metadata back into an owned driver capability.
225
+ *
226
+ * A WorkspaceRef is recovery data, not authority to make this driver act on
227
+ * any worktree registered in the same repository. Existing links are
228
+ * resolved before the boundary is decided, and every Git call receives the
229
+ * canonical path that was checked. This closes static symlink escapes. It
230
+ * does not claim protection from a host process concurrently swapping path
231
+ * components or mount points; the Git CLI exposes no descriptor-relative
232
+ * removal primitive with which to make that guarantee.
233
+ */
234
+ async requireOwnedRef(ref, op) {
235
+ try {
236
+ if (ref.meta.backend !== this.kind) {
237
+ throw new Error(`Workspace backend ${ref.meta.backend} does not belong to ${this.kind}`);
238
+ }
239
+ const repoRoot = await canonicalizeThroughExisting(this.repoRoot);
240
+ const refRepoRoot = await canonicalizeThroughExisting(ref.meta.repoRoot);
241
+ if (refRepoRoot !== repoRoot) {
242
+ throw new Error('Workspace reference belongs to a different repository');
243
+ }
244
+ const worktreesDir = await canonicalizeThroughExisting(this.worktreesDir);
245
+ const worktreePath = await canonicalizeThroughExisting(ref.meta.worktreePath);
246
+ if (!isStrictDescendant(worktreesDir, worktreePath)) {
247
+ throw new Error('Workspace reference escapes the managed worktree directory');
248
+ }
249
+ const label = relative(worktreesDir, worktreePath).split(sep).join('/');
250
+ const branch = `namzu/${label}`;
251
+ if (ref.meta.branch !== branch) {
252
+ throw new Error('Workspace reference branch does not match its managed path');
253
+ }
254
+ return {
255
+ backend: 'git-worktree',
256
+ repoRoot,
257
+ branch,
258
+ worktreePath,
259
+ };
260
+ }
261
+ catch (cause) {
262
+ throw new WorkspaceBackendError({ op: `${op}:ownership`, kind: this.kind, cause });
263
+ }
264
+ }
265
+ async registeredEntry(owned, op) {
266
+ let stdout;
267
+ try {
268
+ const result = await this.exec('git', [
269
+ '-C',
270
+ owned.repoRoot,
271
+ 'worktree',
272
+ 'list',
273
+ '--porcelain',
274
+ ]);
275
+ stdout = result.stdout;
276
+ }
277
+ catch (cause) {
278
+ throw new WorkspaceBackendError({ op, kind: this.kind, cause });
279
+ }
280
+ const entry = parseWorktreeList(stdout, owned.worktreePath);
281
+ return entry?.branch === `refs/heads/${owned.branch}` ? entry : null;
282
+ }
283
+ }
284
+ /** Resolve every existing path component, preserving only a missing suffix. */
285
+ async function canonicalizeThroughExisting(input) {
286
+ let existing = resolve(input);
287
+ const remainder = [];
288
+ for (;;) {
289
+ try {
290
+ const canonical = await realpath(existing);
291
+ return resolve(canonical, ...remainder);
292
+ }
293
+ catch (cause) {
294
+ const code = cause.code;
295
+ if (code !== 'ENOENT' && code !== 'ENOTDIR')
296
+ throw cause;
297
+ }
298
+ const parent = dirname(existing);
299
+ if (parent === existing)
300
+ return resolve(existing, ...remainder);
301
+ remainder.unshift(basename(existing));
302
+ existing = parent;
303
+ }
304
+ }
305
+ function isStrictDescendant(root, candidate) {
306
+ const rel = relative(root, candidate);
307
+ return rel !== '' && rel !== '..' && !rel.startsWith(`..${sep}`) && !isAbsolute(rel);
189
308
  }
190
309
  /**
191
310
  * Parses `git worktree list --porcelain` output, returning the record for
@@ -1 +1 @@
1
- {"version":3,"file":"git-worktree.js","sourceRoot":"","sources":["../../../src/session/workspace/git-worktree.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,oCAAoC,CAAA;AAE1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAE1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAQpD,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAkBzC,MAAM,eAAe,GAAa,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;AAkBtF,MAAM,OAAO,iBAAiB;IACpB,IAAI,GAAG,cAAuB,CAAA;IAEtB,QAAQ,CAAQ;IAChB,YAAY,CAAQ;IACpB,GAAG,CAAQ;IACX,IAAI,CAAU;IAE/B,YAAY,MAA+B;QAC1C,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAA;QAC/B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAA;QACvF,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,gCAAgC,EAAE,CAAC,CAAA;QACvF,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,IAAI,eAAe,CAAA;IAC/C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAA6B;QACzC,MAAM,EAAE,GAAG,mBAAmB,EAAE,CAAA;QAChC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAA;QAChC,MAAM,MAAM,GAAG,SAAS,KAAK,EAAE,CAAA;QAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAA;QAEnD,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,CAAA;QACjF,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAC1B,CAAC;QAED,IAAI,CAAC;YACJ,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,mEAAmE;YACnE,oEAAoE;YACpE,+DAA+D;YAC/D,mEAAmE;YACnE,mEAAmE;YACnE,iEAAiE;YACjE,oDAAoD;YACpD,EAAE;YACF,iEAAiE;YACjE,iEAAiE;YACjE,iEAAiE;YACjE,6DAA6D;YAC7D,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;gBACxD,MAAM,IAAI,qBAAqB,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;YAC1E,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,+DAA+D,EAAE;gBAC9E,sBAAsB,EAAE,MAAM;gBAC9B,6BAA6B,EAAE,YAAY;gBAC3C,qBAAqB,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC7E,CAAC,CAAA;QACH,CAAC;QAED,MAAM,IAAI,GAA2B;YACpC,OAAO,EAAE,cAAc;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM;YACN,YAAY;SACZ,CAAA;QAED,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE;YACrC,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,EAAE;YACtB,sBAAsB,EAAE,MAAM;YAC9B,6BAA6B,EAAE,YAAY;SAC3C,CAAC,CAAA;QACF,OAAO;YACN,EAAE;YACF,IAAI;YACJ,SAAS,EAAE,IAAI,IAAI,EAAE;SACrB,CAAA;IACF,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAoB,EAAE,MAA6B;QAC/D,iEAAiE;QACjE,wCAAwC;QACxC,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAA;IACzE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAiB;QAC9B,mEAAmE;QACnE,kEAAkE;QAClE,iEAAiE;QACjE,IAAI,CAAC;YACJ,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACtB,IAAI;gBACJ,IAAI,CAAC,QAAQ;gBACb,UAAU;gBACV,QAAQ;gBACR,GAAG,CAAC,IAAI,CAAC,YAAY;gBACrB,SAAS;aACT,CAAC,CAAA;YACF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,EAAE;gBACtC,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,EAAE;gBAC1B,oBAAoB,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY;aAC3C,CAAC,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACtE,mEAAmE;YACnE,wDAAwD;YACxD,IAAI,iDAAiD,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACrE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,+CAA+C,EAAE;oBAC/D,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,EAAE;oBAC1B,oBAAoB,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY;iBAC3C,CAAC,CAAA;gBACF,OAAM;YACP,CAAC;YACD,MAAM,IAAI,qBAAqB,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;QAC3E,CAAC;IACF,CAAC;IAED;;;;;;;;;;;;;OAaG;IACK,KAAK,CAAC,cAAc,CAAC,YAAoB,EAAE,MAAc;QAChE,IAAI,CAAC;YACJ,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACzC,IAAI;gBACJ,IAAI,CAAC,QAAQ;gBACb,UAAU;gBACV,MAAM;gBACN,aAAa;aACb,CAAC,CAAA;YACF,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;YACrD,kEAAkE;YAClE,gEAAgE;YAChE,gEAAgE;YAChE,gEAAgE;YAChE,4BAA4B;YAC5B,OAAO,KAAK,EAAE,MAAM,KAAK,cAAc,MAAM,EAAE,CAAA;QAChD,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,KAAK,CAAA;QACb,CAAC;IACF,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAiB;QAC9B,IAAI,UAAkB,CAAA;QACtB,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACrC,IAAI;gBACJ,IAAI,CAAC,QAAQ;gBACb,UAAU;gBACV,MAAM;gBACN,aAAa;aACb,CAAC,CAAA;YACF,UAAU,GAAG,MAAM,CAAC,MAAM,CAAA;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,qBAAqB,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;QAChF,CAAC;QAED,MAAM,KAAK,GAAG,iBAAiB,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAClE,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;QACtE,CAAC;QAED,IAAI,YAAoB,CAAA;QACxB,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAA;YAC7F,YAAY,GAAG,MAAM,CAAC,MAAM,CAAA;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,qBAAqB,CAAC,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;QAClF,CAAC;QAED,OAAO;YACN,MAAM,EAAE,IAAI;YACZ,UAAU,EAAE,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM;YACzD,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;SACvC,CAAA;IACF,CAAC;CACD;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAChC,MAAc,EACd,YAAoB;IAEpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACpC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QAC3D,IAAI,IAAwB,CAAA;QAC5B,IAAI,IAAwB,CAAA;QAC5B,IAAI,MAA0B,CAAA;QAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YAC1B,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;gBAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;iBAClE,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;iBAC/D,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QAC3E,CAAC;QACD,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YAC3B,OAAO;gBACN,IAAI;gBACJ,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,CAAC;gBACnC,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,CAAC;aACvC,CAAA;QACF,CAAC;IACF,CAAC;IACD,OAAO,IAAI,CAAA;AACZ,CAAC"}
1
+ {"version":3,"file":"git-worktree.js","sourceRoot":"","sources":["../../../src/session/workspace/git-worktree.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AACvF,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,oCAAoC,CAAA;AAE1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAE1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAQpD,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAkBzC,MAAM,eAAe,GAAa,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;AAkBtF,MAAM,OAAO,iBAAiB;IACpB,IAAI,GAAG,cAAuB,CAAA;IAEtB,QAAQ,CAAQ;IAChB,YAAY,CAAQ;IACpB,GAAG,CAAQ;IACX,IAAI,CAAU;IAE/B,YAAY,MAA+B;QAC1C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACxC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAA;QAChG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,gCAAgC,EAAE,CAAC,CAAA;QACvF,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,IAAI,eAAe,CAAA;IAC/C,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAA6B;QACzC,MAAM,EAAE,GAAG,mBAAmB,EAAE,CAAA;QAChC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAA;QAChC,IAAI,QAAgB,CAAA;QACpB,IAAI,YAAoB,CAAA;QACxB,IAAI,YAAoB,CAAA;QACxB,IAAI,CAAC;YACJ,QAAQ,GAAG,MAAM,2BAA2B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAC3D,YAAY,GAAG,MAAM,2BAA2B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YACnE,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAA;YAChD,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,CAAC;gBACpD,MAAM,IAAI,KAAK,CAAC,2DAA2D,KAAK,EAAE,CAAC,CAAA;YACpF,CAAC;YACD,YAAY,GAAG,MAAM,2BAA2B,CAAC,WAAW,CAAC,CAAA;YAC7D,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,CAAC;gBACrD,MAAM,IAAI,KAAK,CACd,mFAAmF,KAAK,EAAE,CAC1F,CAAA;YACF,CAAC;YACD,IAAI,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,KAAK,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,CAAC;gBAClF,MAAM,IAAI,KAAK,CACd,wEAAwE,KAAK,EAAE,CAC/E,CAAA;YACF,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,qBAAqB,CAAC,EAAE,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;QACpF,CAAC;QAED,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC9E,MAAM,MAAM,GAAG,SAAS,YAAY,EAAE,CAAA;QAEtC,0EAA0E;QAC1E,yEAAyE;QACzE,+DAA+D;QAC/D,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,CAAA;QAClF,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAC1B,CAAC;QAED,IAAI,CAAC;YACJ,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,mEAAmE;YACnE,oEAAoE;YACpE,+DAA+D;YAC/D,mEAAmE;YACnE,mEAAmE;YACnE,iEAAiE;YACjE,oDAAoD;YACpD,EAAE;YACF,iEAAiE;YACjE,iEAAiE;YACjE,iEAAiE;YACjE,6DAA6D;YAC7D,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;gBAClE,MAAM,IAAI,qBAAqB,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;YAC1E,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,+DAA+D,EAAE;gBAC9E,sBAAsB,EAAE,MAAM;gBAC9B,6BAA6B,EAAE,YAAY;gBAC3C,qBAAqB,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC7E,CAAC,CAAA;QACH,CAAC;QAED,MAAM,IAAI,GAA2B;YACpC,OAAO,EAAE,cAAc;YACvB,QAAQ;YACR,MAAM;YACN,YAAY;SACZ,CAAA;QAED,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE;YACrC,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,EAAE;YACtB,sBAAsB,EAAE,MAAM;YAC9B,6BAA6B,EAAE,YAAY;SAC3C,CAAC,CAAA;QACF,OAAO;YACN,EAAE;YACF,IAAI;YACJ,SAAS,EAAE,IAAI,IAAI,EAAE;SACrB,CAAA;IACF,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAoB,EAAE,MAA6B;QAC/D,iEAAiE;QACjE,wCAAwC;QACxC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAC1D,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAA;IACnE,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAiB;QAC9B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;QACxD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,cAAc,CAAC,CAAA;QACpE,IAAI,CAAC,UAAU,EAAE,CAAC;YACjB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,+CAA+C,EAAE;gBAC/D,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,EAAE;gBAC1B,oBAAoB,EAAE,KAAK,CAAC,YAAY;aACxC,CAAC,CAAA;YACF,OAAM;QACP,CAAC;QAED,mEAAmE;QACnE,kEAAkE;QAClE,qEAAqE;QACrE,wEAAwE;QACxE,uEAAuE;QACvE,IAAI,CAAC;YACJ,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACtB,IAAI;gBACJ,KAAK,CAAC,QAAQ;gBACd,UAAU;gBACV,QAAQ;gBACR,KAAK,CAAC,YAAY;gBAClB,SAAS;aACT,CAAC,CAAA;YACF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,EAAE;gBACtC,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,EAAE;gBAC1B,oBAAoB,EAAE,KAAK,CAAC,YAAY;aACxC,CAAC,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,uEAAuE;YACvE,qEAAqE;YACrE,8CAA8C;YAC9C,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,KAAK,CAC/E,GAAG,EAAE,CAAC,SAAS,CACf,CAAA;YACD,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;gBAC5B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,+CAA+C,EAAE;oBAC/D,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,EAAE;oBAC1B,oBAAoB,EAAE,KAAK,CAAC,YAAY;iBACxC,CAAC,CAAA;gBACF,OAAM;YACP,CAAC;YACD,MAAM,IAAI,qBAAqB,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;QAC3E,CAAC;IACF,CAAC;IAED;;;;;;;;;;;;;OAaG;IACK,KAAK,CAAC,cAAc,CAC3B,QAAgB,EAChB,YAAoB,EACpB,MAAc;QAEd,IAAI,CAAC;YACJ,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAA;YAC9F,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;YACrD,kEAAkE;YAClE,gEAAgE;YAChE,gEAAgE;YAChE,gEAAgE;YAChE,4BAA4B;YAC5B,OAAO,KAAK,EAAE,MAAM,KAAK,cAAc,MAAM,EAAE,CAAA;QAChD,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,KAAK,CAAA;QACb,CAAC;IACF,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAiB;QAC9B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;QACxD,IAAI,UAAkB,CAAA;QACtB,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACrC,IAAI;gBACJ,KAAK,CAAC,QAAQ;gBACd,UAAU;gBACV,MAAM;gBACN,aAAa;aACb,CAAC,CAAA;YACF,UAAU,GAAG,MAAM,CAAC,MAAM,CAAA;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,qBAAqB,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;QAChF,CAAC;QAED,MAAM,KAAK,GAAG,iBAAiB,CAAC,UAAU,EAAE,KAAK,CAAC,YAAY,CAAC,CAAA;QAC/D,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,cAAc,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YAC7D,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;QACnE,CAAC;QAED,IAAI,YAAoB,CAAA;QACxB,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,YAAY,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAA;YAC1F,YAAY,GAAG,MAAM,CAAC,MAAM,CAAA;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,qBAAqB,CAAC,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;QAClF,CAAC;QAED,OAAO;YACN,MAAM,EAAE,IAAI;YACZ,UAAU,EAAE,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM;YACzD,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;SACvC,CAAA;IACF,CAAC;IAED;;;;;;;;;;OAUG;IACK,KAAK,CAAC,eAAe,CAAC,GAAiB,EAAE,EAAU;QAC1D,IAAI,CAAC;YACJ,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,CAAC,IAAI,CAAC,OAAO,uBAAuB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;YACzF,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,2BAA2B,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YACjE,MAAM,WAAW,GAAG,MAAM,2BAA2B,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YACxE,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAA;YACzE,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,2BAA2B,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YACzE,MAAM,YAAY,GAAG,MAAM,2BAA2B,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YAC7E,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,CAAC;gBACrD,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAA;YAC9E,CAAC;YAED,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACvE,MAAM,MAAM,GAAG,SAAS,KAAK,EAAE,CAAA;YAC/B,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAA;YAC9E,CAAC;YAED,OAAO;gBACN,OAAO,EAAE,cAAc;gBACvB,QAAQ;gBACR,MAAM;gBACN,YAAY;aACZ,CAAA;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,qBAAqB,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;QACnF,CAAC;IACF,CAAC;IAEO,KAAK,CAAC,eAAe,CAC5B,KAA6B,EAC7B,EAAU;QAEV,IAAI,MAAc,CAAA;QAClB,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACrC,IAAI;gBACJ,KAAK,CAAC,QAAQ;gBACd,UAAU;gBACV,MAAM;gBACN,aAAa;aACb,CAAC,CAAA;YACF,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,qBAAqB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;QAChE,CAAC;QAED,MAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,CAAA;QAC3D,OAAO,KAAK,EAAE,MAAM,KAAK,cAAc,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;IACrE,CAAC;CACD;AAED,+EAA+E;AAC/E,KAAK,UAAU,2BAA2B,CAAC,KAAa;IACvD,IAAI,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;IAC7B,MAAM,SAAS,GAAa,EAAE,CAAA;IAE9B,SAAS,CAAC;QACT,IAAI,CAAC;YACJ,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAA;YAC1C,OAAO,OAAO,CAAC,SAAS,EAAE,GAAG,SAAS,CAAC,CAAA;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,GAAI,KAA+B,CAAC,IAAI,CAAA;YAClD,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS;gBAAE,MAAM,KAAK,CAAA;QACzD,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;QAChC,IAAI,MAAM,KAAK,QAAQ;YAAE,OAAO,OAAO,CAAC,QAAQ,EAAE,GAAG,SAAS,CAAC,CAAA;QAC/D,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAA;QACrC,QAAQ,GAAG,MAAM,CAAA;IAClB,CAAC;AACF,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY,EAAE,SAAiB;IAC1D,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;IACrC,OAAO,GAAG,KAAK,EAAE,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;AACrF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAChC,MAAc,EACd,YAAoB;IAEpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACpC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QAC3D,IAAI,IAAwB,CAAA;QAC5B,IAAI,IAAwB,CAAA;QAC5B,IAAI,MAA0B,CAAA;QAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YAC1B,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;gBAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;iBAClE,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;iBAC/D,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;gBAAE,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QAC3E,CAAC;QACD,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YAC3B,OAAO;gBACN,IAAI;gBACJ,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,CAAC;gBACnC,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,CAAC;aACvC,CAAA;QACF,CAAC;IACF,CAAC;IACD,OAAO,IAAI,CAAA;AACZ,CAAC"}
@@ -56,6 +56,21 @@ export declare class SkillRegistry {
56
56
  /** `same`, `changed`, or `gone`. */
57
57
  private hasChanged;
58
58
  list(): Skill[];
59
+ /**
60
+ * The model-facing catalog, keyed by what this registry actually accepts.
61
+ *
62
+ * Reading the Map key is load-bearing for host namespaces. A plugin may file
63
+ * `reconcile` as `ledger__reconcile`; reconstructing the name from the skill
64
+ * body would advertise a call that cannot resolve (and could collide with a
65
+ * different plugin's unqualified name).
66
+ */
67
+ catalog(): Promise<readonly {
68
+ registeredName: string;
69
+ description: string;
70
+ location: string;
71
+ allowedTools?: string;
72
+ invocation?: 'model' | 'operator' | 'both';
73
+ }[]>;
59
74
  /**
60
75
  * Every registered name.
61
76
  *
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/skills/registry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,KAAK,EACL,UAAU,EACV,oBAAoB,EACpB,eAAe,EACf,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,oBAAoB,CAAA;AAsB/D,qBAAa,aAAa;IACzB,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAE5B;;;;;;;OAOG;gBACS,GAAG,CAAC,EAAE,MAAM;IAIlB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,oBAAiC,GAAG,OAAO,CAAC,KAAK,CAAC;IAOzF,6EAA6E;YAC/D,KAAK;IAeb,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,oBAAiC,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAkBhG,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS;IAIpC;;;;;;;OAOG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAUrC;;;;;;;;OAQG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAKjC;;;;;;;;;;;;;;OAcG;IACG,IAAI,CACT,IAAI,EAAE,MAAM,EACZ,KAAK,GAAE,oBAA6B,GAClC,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IA4CvC,oCAAoC;YACtB,UAAU;IAiBxB,IAAI,IAAI,KAAK,EAAE;IAIf;;;;;;OAMG;IACH,KAAK,IAAI,SAAS,MAAM,EAAE;IAI1B,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAG1B;AAED,wBAAsB,iBAAiB,CACtC,iBAAiB,EAAE,MAAM,GAAG,SAAS,EACrC,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,KAAK,GAAE,oBAAiC,EACxC,GAAG,CAAC,EAAE,MAAM,GACV,OAAO,CAAC,UAAU,CAAC,CA8BrB"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/skills/registry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,KAAK,EACL,UAAU,EACV,oBAAoB,EACpB,eAAe,EACf,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,oBAAoB,CAAA;AAsB/D,qBAAa,aAAa;IACzB,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAE5B;;;;;;;OAOG;gBACS,GAAG,CAAC,EAAE,MAAM;IAIlB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,oBAAiC,GAAG,OAAO,CAAC,KAAK,CAAC;IAOzF,6EAA6E;YAC/D,KAAK;IAeb,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,oBAAiC,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAkBhG,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS;IAIpC;;;;;;;OAOG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAUrC;;;;;;;;OAQG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAKjC;;;;;;;;;;;;;;OAcG;IACG,IAAI,CACT,IAAI,EAAE,MAAM,EACZ,KAAK,GAAE,oBAA6B,GAClC,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IA4CvC,oCAAoC;YACtB,UAAU;IAiBxB,IAAI,IAAI,KAAK,EAAE;IAIf;;;;;;;OAOG;IACG,OAAO,IAAI,OAAO,CACvB,SAAS;QACR,cAAc,EAAE,MAAM,CAAA;QACtB,WAAW,EAAE,MAAM,CAAA;QACnB,QAAQ,EAAE,MAAM,CAAA;QAChB,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,UAAU,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,CAAA;KAC1C,EAAE,CACH;IA+BD;;;;;;OAMG;IACH,KAAK,IAAI,SAAS,MAAM,EAAE;IAI1B,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAG1B;AAED,wBAAsB,iBAAiB,CACtC,iBAAiB,EAAE,MAAM,GAAG,SAAS,EACrC,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,KAAK,GAAE,oBAAiC,EACxC,GAAG,CAAC,EAAE,MAAM,GACV,OAAO,CAAC,UAAU,CAAC,CA8BrB"}
@@ -165,6 +165,39 @@ export class SkillRegistry {
165
165
  list() {
166
166
  return [...this.skills.values()];
167
167
  }
168
+ /**
169
+ * The model-facing catalog, keyed by what this registry actually accepts.
170
+ *
171
+ * Reading the Map key is load-bearing for host namespaces. A plugin may file
172
+ * `reconcile` as `ledger__reconcile`; reconstructing the name from the skill
173
+ * body would advertise a call that cannot resolve (and could collide with a
174
+ * different plugin's unqualified name).
175
+ */
176
+ async catalog() {
177
+ const entries = [];
178
+ // `load` owns file freshness and deletion. Listing straight from the Map
179
+ // would make an edited SKILL.md stale here while a named read in the same
180
+ // run saw the new metadata — two catalogs depending on which operation the
181
+ // model happened to try first.
182
+ for (const registeredName of [...this.skills.keys()]) {
183
+ const loaded = await this.load(registeredName, 'metadata');
184
+ if (!loaded)
185
+ continue;
186
+ const skill = loaded.skill;
187
+ entries.push({
188
+ registeredName,
189
+ description: skill.metadata.description,
190
+ location: join(skill.dirPath, SKILL_FILENAME),
191
+ ...(skill.metadata.allowedTools === undefined
192
+ ? {}
193
+ : { allowedTools: skill.metadata.allowedTools }),
194
+ ...(skill.metadata.invocation === undefined
195
+ ? {}
196
+ : { invocation: skill.metadata.invocation }),
197
+ });
198
+ }
199
+ return entries;
200
+ }
168
201
  /**
169
202
  * Every registered name.
170
203
  *
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/skills/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/skills/registry.ts"],"names":[],"mappings":"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"}
@@ -55,6 +55,19 @@ export interface AttachmentOperationOptions {
55
55
  */
56
56
  readonly signal?: AbortSignal;
57
57
  }
58
+ /** Policy owned by the operation that materializes one or more references. */
59
+ export interface AttachmentResolutionOptions extends AttachmentOperationOptions {
60
+ /**
61
+ * Maximum wall-clock time for the complete materialization phase.
62
+ *
63
+ * Defaults to one minute. `0` retains the prior unbounded wait. The SDK
64
+ * still races the wait itself, so a custom store cannot defeat this bound
65
+ * by ignoring the signal it receives.
66
+ */
67
+ readonly timeoutMs?: number;
68
+ }
69
+ /** One minute is long enough for remote stores without letting a run wedge forever. */
70
+ export declare const DEFAULT_ATTACHMENT_RESOLVE_TIMEOUT_MS = 60000;
58
71
  export interface AttachmentStore {
59
72
  /**
60
73
  * Take bytes, return a ref.
@@ -97,6 +110,15 @@ export declare class AttachmentMediaTypeMismatchError extends Error {
97
110
  stored: string;
98
111
  });
99
112
  }
113
+ /** A store did not settle the materialization phase within its declared bound. */
114
+ export declare class AttachmentResolutionTimeoutError extends Error {
115
+ readonly details: {
116
+ timeoutMs: number;
117
+ };
118
+ constructor(details: {
119
+ timeoutMs: number;
120
+ });
121
+ }
100
122
  export declare const isStoredAttachment: (attachment: MessageAttachment) => attachment is MessageAttachment & StoredAttachment;
101
123
  /**
102
124
  * Turn a stored attachment into an inline one, or refuse.
@@ -107,7 +129,7 @@ export declare const isStoredAttachment: (attachment: MessageAttachment) => atta
107
129
  * why — the worst available outcome, and the reason none of these three
108
130
  * branches returns the message unchanged.
109
131
  */
110
- export declare function resolveAttachment(attachment: MessageAttachment, store: AttachmentStore | undefined, options?: AttachmentOperationOptions): Promise<MessageAttachment>;
132
+ export declare function resolveAttachment(attachment: MessageAttachment, store: AttachmentStore | undefined, options?: AttachmentResolutionOptions): Promise<MessageAttachment>;
111
133
  /**
112
134
  * Resolve every stored attachment on every message.
113
135
  *
@@ -115,5 +137,5 @@ export declare function resolveAttachment(attachment: MessageAttachment, store:
115
137
  * one scan and no allocation — and so a caller cannot tell resolved
116
138
  * messages from unresolved ones by identity and get it wrong.
117
139
  */
118
- export declare function resolveAttachments(messages: readonly Message[], store: AttachmentStore | undefined, options?: AttachmentOperationOptions): Promise<readonly Message[]>;
140
+ export declare function resolveAttachments(messages: readonly Message[], store: AttachmentStore | undefined, options?: AttachmentResolutionOptions): Promise<readonly Message[]>;
119
141
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/store/attachment/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAE9E;;;;;;;;;;;;;;;;GAgBG;AAEH,qDAAqD;AACrD,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;IACvB;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB;;;;;;;OAOG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,0DAA0D;IAC1D,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,CAAA;IACnC,kEAAkE;IAClE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,sEAAsE;IACtE,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAC5B;AAED,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC1B;AAED,sEAAsE;AACtE,MAAM,WAAW,0BAA0B;IAC1C;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAC7B;AAED,MAAM,WAAW,eAAe;IAC/B;;;;;OAKG;IACH,GAAG,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACxC,sDAAsD;IACtD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,0BAA0B,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAA;CACxF;AAED,yCAAyC;AACzC,qBAAa,uBAAwB,SAAQ,KAAK;IACjD,QAAQ,CAAC,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;gBAErB,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE;CAKpC;AAED,yEAAyE;AACzE,qBAAa,sBAAuB,SAAQ,KAAK;IAChD,QAAQ,CAAC,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;gBAErB,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE;CAOpC;AAED,mEAAmE;AACnE,qBAAa,gCAAiC,SAAQ,KAAK;IAC1D,QAAQ,CAAC,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;gBAEvD,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;CAOtE;AAED,eAAO,MAAM,kBAAkB,GAC9B,YAAY,iBAAiB,KAC3B,UAAU,IAAI,iBAAiB,GAAG,gBACe,CAAA;AAEpD;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACtC,UAAU,EAAE,iBAAiB,EAC7B,KAAK,EAAE,eAAe,GAAG,SAAS,EAClC,OAAO,GAAE,0BAA+B,GACtC,OAAO,CAAC,iBAAiB,CAAC,CAsC5B;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACvC,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,KAAK,EAAE,eAAe,GAAG,SAAS,EAClC,OAAO,GAAE,0BAA+B,GACtC,OAAO,CAAC,SAAS,OAAO,EAAE,CAAC,CAuB7B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/store/attachment/index.ts"],"names":[],"mappings":"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"}