@namzu/sdk 30.2.0 → 31.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 (712) hide show
  1. package/CHANGELOG.md +556 -0
  2. package/README.md +43 -2
  3. package/dist/advisory/executor.d.ts +2 -1
  4. package/dist/advisory/executor.d.ts.map +1 -1
  5. package/dist/advisory/executor.js +4 -1
  6. package/dist/advisory/executor.js.map +1 -1
  7. package/dist/agents/ReactiveAgent.d.ts.map +1 -1
  8. package/dist/agents/ReactiveAgent.js +12 -0
  9. package/dist/agents/ReactiveAgent.js.map +1 -1
  10. package/dist/agents/RouterAgent.d.ts.map +1 -1
  11. package/dist/agents/RouterAgent.js +21 -3
  12. package/dist/agents/RouterAgent.js.map +1 -1
  13. package/dist/agents/SupervisorAgent.d.ts.map +1 -1
  14. package/dist/agents/SupervisorAgent.js +34 -11
  15. package/dist/agents/SupervisorAgent.js.map +1 -1
  16. package/dist/agents/runAgent.d.ts +12 -0
  17. package/dist/agents/runAgent.d.ts.map +1 -1
  18. package/dist/agents/runAgent.js +26 -2
  19. package/dist/agents/runAgent.js.map +1 -1
  20. package/dist/authorization/command-line.d.ts +81 -0
  21. package/dist/authorization/command-line.d.ts.map +1 -0
  22. package/dist/authorization/command-line.js +347 -0
  23. package/dist/authorization/command-line.js.map +1 -0
  24. package/dist/authorization/rules.d.ts.map +1 -1
  25. package/dist/authorization/rules.js +22 -1
  26. package/dist/authorization/rules.js.map +1 -1
  27. package/dist/bridge/a2a/client.d.ts +23 -5
  28. package/dist/bridge/a2a/client.d.ts.map +1 -1
  29. package/dist/bridge/a2a/client.js +320 -73
  30. package/dist/bridge/a2a/client.js.map +1 -1
  31. package/dist/bridge/a2a/mapper.d.ts.map +1 -1
  32. package/dist/bridge/a2a/mapper.js +4 -0
  33. package/dist/bridge/a2a/mapper.js.map +1 -1
  34. package/dist/bridge/acp/server.d.ts +13 -1
  35. package/dist/bridge/acp/server.d.ts.map +1 -1
  36. package/dist/bridge/acp/server.js +150 -44
  37. package/dist/bridge/acp/server.js.map +1 -1
  38. package/dist/bridge/mcp/connector/adapter.d.ts +3 -2
  39. package/dist/bridge/mcp/connector/adapter.d.ts.map +1 -1
  40. package/dist/bridge/mcp/connector/adapter.js +17 -21
  41. package/dist/bridge/mcp/connector/adapter.js.map +1 -1
  42. package/dist/bridge/sse/mapper.d.ts.map +1 -1
  43. package/dist/bridge/sse/mapper.js +3 -0
  44. package/dist/bridge/sse/mapper.js.map +1 -1
  45. package/dist/compaction/dangling.d.ts +29 -2
  46. package/dist/compaction/dangling.d.ts.map +1 -1
  47. package/dist/compaction/dangling.js +172 -35
  48. package/dist/compaction/dangling.js.map +1 -1
  49. package/dist/compaction/index.d.ts +3 -2
  50. package/dist/compaction/index.d.ts.map +1 -1
  51. package/dist/compaction/index.js +1 -1
  52. package/dist/compaction/index.js.map +1 -1
  53. package/dist/compaction/manual.d.ts +11 -1
  54. package/dist/compaction/manual.d.ts.map +1 -1
  55. package/dist/compaction/manual.js +89 -14
  56. package/dist/compaction/manual.js.map +1 -1
  57. package/dist/compaction/plan.d.ts +19 -6
  58. package/dist/compaction/plan.d.ts.map +1 -1
  59. package/dist/compaction/plan.js +18 -4
  60. package/dist/compaction/plan.js.map +1 -1
  61. package/dist/compaction/retention.d.ts +10 -7
  62. package/dist/compaction/retention.d.ts.map +1 -1
  63. package/dist/compaction/retention.js +26 -8
  64. package/dist/compaction/retention.js.map +1 -1
  65. package/dist/compaction/summary.d.ts +4 -4
  66. package/dist/compaction/summary.js +4 -4
  67. package/dist/compaction/verifier.d.ts +19 -1
  68. package/dist/compaction/verifier.d.ts.map +1 -1
  69. package/dist/compaction/verifier.js +20 -1
  70. package/dist/compaction/verifier.js.map +1 -1
  71. package/dist/config/runtime.d.ts +6 -6
  72. package/dist/connector/BaseConnector.d.ts +6 -4
  73. package/dist/connector/BaseConnector.d.ts.map +1 -1
  74. package/dist/connector/BaseConnector.js +8 -2
  75. package/dist/connector/BaseConnector.js.map +1 -1
  76. package/dist/connector/builtins/http.d.ts +16 -4
  77. package/dist/connector/builtins/http.d.ts.map +1 -1
  78. package/dist/connector/builtins/http.js +177 -44
  79. package/dist/connector/builtins/http.js.map +1 -1
  80. package/dist/connector/builtins/webhook.d.ts +15 -4
  81. package/dist/connector/builtins/webhook.d.ts.map +1 -1
  82. package/dist/connector/builtins/webhook.js +165 -45
  83. package/dist/connector/builtins/webhook.js.map +1 -1
  84. package/dist/connector/execution-contract.d.ts +11 -0
  85. package/dist/connector/execution-contract.d.ts.map +1 -0
  86. package/dist/connector/execution-contract.js +14 -0
  87. package/dist/connector/execution-contract.js.map +1 -0
  88. package/dist/connector/http-operation.d.ts +48 -0
  89. package/dist/connector/http-operation.d.ts.map +1 -0
  90. package/dist/connector/http-operation.js +205 -0
  91. package/dist/connector/http-operation.js.map +1 -0
  92. package/dist/connector/mcp/adapter.d.ts.map +1 -1
  93. package/dist/connector/mcp/adapter.js +8 -3
  94. package/dist/connector/mcp/adapter.js.map +1 -1
  95. package/dist/connector/mcp/client.d.ts +14 -8
  96. package/dist/connector/mcp/client.d.ts.map +1 -1
  97. package/dist/connector/mcp/client.js +160 -44
  98. package/dist/connector/mcp/client.js.map +1 -1
  99. package/dist/connector/mcp/http-sse.d.ts +8 -2
  100. package/dist/connector/mcp/http-sse.d.ts.map +1 -1
  101. package/dist/connector/mcp/http-sse.js +70 -17
  102. package/dist/connector/mcp/http-sse.js.map +1 -1
  103. package/dist/connector/mcp/prompt-adapter.d.ts.map +1 -1
  104. package/dist/connector/mcp/prompt-adapter.js +9 -2
  105. package/dist/connector/mcp/prompt-adapter.js.map +1 -1
  106. package/dist/connector/mcp/stdio.d.ts +2 -2
  107. package/dist/connector/mcp/stdio.d.ts.map +1 -1
  108. package/dist/connector/mcp/stdio.js +14 -50
  109. package/dist/connector/mcp/stdio.js.map +1 -1
  110. package/dist/connector/mcp/streamable-http.d.ts +7 -2
  111. package/dist/connector/mcp/streamable-http.d.ts.map +1 -1
  112. package/dist/connector/mcp/streamable-http.js +66 -18
  113. package/dist/connector/mcp/streamable-http.js.map +1 -1
  114. package/dist/connector/tools/adapter.d.ts +2 -2
  115. package/dist/connector/tools/adapter.d.ts.map +1 -1
  116. package/dist/connector/tools/adapter.js +23 -14
  117. package/dist/connector/tools/adapter.js.map +1 -1
  118. package/dist/connector/tools/definitions.d.ts.map +1 -1
  119. package/dist/connector/tools/definitions.js +5 -2
  120. package/dist/connector/tools/definitions.js.map +1 -1
  121. package/dist/connector/tools/result.d.ts +4 -0
  122. package/dist/connector/tools/result.d.ts.map +1 -0
  123. package/dist/connector/tools/result.js +20 -0
  124. package/dist/connector/tools/result.js.map +1 -0
  125. package/dist/connector/web/guarded-fetch.d.ts +4 -2
  126. package/dist/connector/web/guarded-fetch.d.ts.map +1 -1
  127. package/dist/connector/web/guarded-fetch.js +157 -43
  128. package/dist/connector/web/guarded-fetch.js.map +1 -1
  129. package/dist/constants/sandbox/index.d.ts +3 -2
  130. package/dist/constants/sandbox/index.d.ts.map +1 -1
  131. package/dist/constants/sandbox/index.js +3 -2
  132. package/dist/constants/sandbox/index.js.map +1 -1
  133. package/dist/contracts/api.d.ts +2 -0
  134. package/dist/contracts/api.d.ts.map +1 -1
  135. package/dist/contracts/schemas.d.ts +38 -12
  136. package/dist/contracts/schemas.d.ts.map +1 -1
  137. package/dist/contracts/schemas.js +7 -0
  138. package/dist/contracts/schemas.js.map +1 -1
  139. package/dist/directory/derive-supervisor.d.ts.map +1 -1
  140. package/dist/directory/derive-supervisor.js +8 -0
  141. package/dist/directory/derive-supervisor.js.map +1 -1
  142. package/dist/directory/derive.d.ts.map +1 -1
  143. package/dist/directory/derive.js +8 -0
  144. package/dist/directory/derive.js.map +1 -1
  145. package/dist/directory/load.d.ts.map +1 -1
  146. package/dist/directory/load.js +2 -0
  147. package/dist/directory/load.js.map +1 -1
  148. package/dist/directory/types.d.ts +4 -0
  149. package/dist/directory/types.d.ts.map +1 -1
  150. package/dist/eval/experiment.d.ts +10 -10
  151. package/dist/eval/experiment.d.ts.map +1 -1
  152. package/dist/eval/experiment.js +121 -91
  153. package/dist/eval/experiment.js.map +1 -1
  154. package/dist/eval/judge.d.ts +6 -0
  155. package/dist/eval/judge.d.ts.map +1 -1
  156. package/dist/eval/judge.js +7 -2
  157. package/dist/eval/judge.js.map +1 -1
  158. package/dist/eval/types.d.ts +7 -1
  159. package/dist/eval/types.d.ts.map +1 -1
  160. package/dist/manager/agent/lifecycle.d.ts +12 -10
  161. package/dist/manager/agent/lifecycle.d.ts.map +1 -1
  162. package/dist/manager/agent/lifecycle.js +16 -3
  163. package/dist/manager/agent/lifecycle.js.map +1 -1
  164. package/dist/manager/connector/environment.d.ts +2 -2
  165. package/dist/manager/connector/environment.d.ts.map +1 -1
  166. package/dist/manager/connector/environment.js +2 -2
  167. package/dist/manager/connector/environment.js.map +1 -1
  168. package/dist/manager/connector/lifecycle.d.ts +10 -2
  169. package/dist/manager/connector/lifecycle.d.ts.map +1 -1
  170. package/dist/manager/connector/lifecycle.js +273 -24
  171. package/dist/manager/connector/lifecycle.js.map +1 -1
  172. package/dist/manager/connector/tenant.d.ts +5 -4
  173. package/dist/manager/connector/tenant.d.ts.map +1 -1
  174. package/dist/manager/connector/tenant.js +47 -22
  175. package/dist/manager/connector/tenant.js.map +1 -1
  176. package/dist/manager/goal/activation.d.ts +23 -0
  177. package/dist/manager/goal/activation.d.ts.map +1 -0
  178. package/dist/manager/goal/activation.js +41 -0
  179. package/dist/manager/goal/activation.js.map +1 -0
  180. package/dist/manager/index.d.ts +3 -2
  181. package/dist/manager/index.d.ts.map +1 -1
  182. package/dist/manager/index.js.map +1 -1
  183. package/dist/manager/run/persistence.d.ts +2 -0
  184. package/dist/manager/run/persistence.d.ts.map +1 -1
  185. package/dist/manager/run/persistence.js +5 -1
  186. package/dist/manager/run/persistence.js.map +1 -1
  187. package/dist/manager/topic/dependency.d.ts +24 -0
  188. package/dist/manager/topic/dependency.d.ts.map +1 -0
  189. package/dist/manager/topic/dependency.js +13 -0
  190. package/dist/manager/topic/dependency.js.map +1 -0
  191. package/dist/manager/topic/lifecycle.d.ts +9 -21
  192. package/dist/manager/topic/lifecycle.d.ts.map +1 -1
  193. package/dist/manager/topic/lifecycle.js +17 -29
  194. package/dist/manager/topic/lifecycle.js.map +1 -1
  195. package/dist/plugin/index.d.ts +1 -0
  196. package/dist/plugin/index.d.ts.map +1 -1
  197. package/dist/plugin/index.js.map +1 -1
  198. package/dist/plugin/lifecycle.d.ts +15 -0
  199. package/dist/plugin/lifecycle.d.ts.map +1 -1
  200. package/dist/plugin/lifecycle.js +144 -38
  201. package/dist/plugin/lifecycle.js.map +1 -1
  202. package/dist/plugin/loader.d.ts +3 -3
  203. package/dist/plugin/loader.d.ts.map +1 -1
  204. package/dist/plugin/loader.js +58 -12
  205. package/dist/plugin/loader.js.map +1 -1
  206. package/dist/provider/collect-chat-completion.d.ts.map +1 -1
  207. package/dist/provider/collect-chat-completion.js +4 -0
  208. package/dist/provider/collect-chat-completion.js.map +1 -1
  209. package/dist/provider/fallback.d.ts +3 -1
  210. package/dist/provider/fallback.d.ts.map +1 -1
  211. package/dist/provider/fallback.js +62 -10
  212. package/dist/provider/fallback.js.map +1 -1
  213. package/dist/provider/idle-timeout.d.ts +4 -0
  214. package/dist/provider/idle-timeout.d.ts.map +1 -1
  215. package/dist/provider/idle-timeout.js +131 -15
  216. package/dist/provider/idle-timeout.js.map +1 -1
  217. package/dist/provider/index.d.ts +2 -0
  218. package/dist/provider/index.d.ts.map +1 -1
  219. package/dist/provider/index.js +1 -0
  220. package/dist/provider/index.js.map +1 -1
  221. package/dist/provider/instrumentation.d.ts.map +1 -1
  222. package/dist/provider/instrumentation.js +1 -0
  223. package/dist/provider/instrumentation.js.map +1 -1
  224. package/dist/provider/retry.d.ts.map +1 -1
  225. package/dist/provider/retry.js +13 -1
  226. package/dist/provider/retry.js.map +1 -1
  227. package/dist/public-runtime.d.ts +57 -24
  228. package/dist/public-runtime.d.ts.map +1 -1
  229. package/dist/public-runtime.js +42 -35
  230. package/dist/public-runtime.js.map +1 -1
  231. package/dist/public-tools.d.ts +1 -0
  232. package/dist/public-tools.d.ts.map +1 -1
  233. package/dist/public-tools.js +5 -0
  234. package/dist/public-tools.js.map +1 -1
  235. package/dist/public-types.d.ts +33 -12
  236. package/dist/public-types.d.ts.map +1 -1
  237. package/dist/rag/embedding.d.ts +8 -3
  238. package/dist/rag/embedding.d.ts.map +1 -1
  239. package/dist/rag/embedding.js +120 -9
  240. package/dist/rag/embedding.js.map +1 -1
  241. package/dist/rag/index.d.ts +1 -1
  242. package/dist/rag/index.d.ts.map +1 -1
  243. package/dist/rag/index.js +1 -1
  244. package/dist/rag/index.js.map +1 -1
  245. package/dist/rag/ingestion.d.ts +2 -2
  246. package/dist/rag/ingestion.d.ts.map +1 -1
  247. package/dist/rag/ingestion.js +15 -3
  248. package/dist/rag/ingestion.js.map +1 -1
  249. package/dist/rag/knowledge-base.d.ts +3 -3
  250. package/dist/rag/knowledge-base.d.ts.map +1 -1
  251. package/dist/rag/knowledge-base.js +8 -4
  252. package/dist/rag/knowledge-base.js.map +1 -1
  253. package/dist/rag/operation.d.ts +10 -0
  254. package/dist/rag/operation.d.ts.map +1 -0
  255. package/dist/rag/operation.js +26 -0
  256. package/dist/rag/operation.js.map +1 -0
  257. package/dist/rag/rag-tool.d.ts.map +1 -1
  258. package/dist/rag/rag-tool.js +6 -3
  259. package/dist/rag/rag-tool.js.map +1 -1
  260. package/dist/rag/retriever.d.ts +2 -2
  261. package/dist/rag/retriever.d.ts.map +1 -1
  262. package/dist/rag/retriever.js +31 -15
  263. package/dist/rag/retriever.js.map +1 -1
  264. package/dist/rag/vector-store.d.ts +3 -3
  265. package/dist/rag/vector-store.d.ts.map +1 -1
  266. package/dist/rag/vector-store.js +4 -2
  267. package/dist/rag/vector-store.js.map +1 -1
  268. package/dist/registry/command/kernel-commands.d.ts +16 -4
  269. package/dist/registry/command/kernel-commands.d.ts.map +1 -1
  270. package/dist/registry/command/kernel-commands.js +171 -0
  271. package/dist/registry/command/kernel-commands.js.map +1 -1
  272. package/dist/run/reporter.d.ts.map +1 -1
  273. package/dist/run/reporter.js +9 -0
  274. package/dist/run/reporter.js.map +1 -1
  275. package/dist/run-query/index.d.ts +15 -1
  276. package/dist/run-query/index.d.ts.map +1 -1
  277. package/dist/run-query/index.js +69 -15
  278. package/dist/run-query/index.js.map +1 -1
  279. package/dist/runtime/query/context.d.ts.map +1 -1
  280. package/dist/runtime/query/context.js +10 -3
  281. package/dist/runtime/query/context.js.map +1 -1
  282. package/dist/runtime/query/executor.d.ts +3 -0
  283. package/dist/runtime/query/executor.d.ts.map +1 -1
  284. package/dist/runtime/query/executor.js +80 -18
  285. package/dist/runtime/query/executor.js.map +1 -1
  286. package/dist/runtime/query/guard.d.ts +9 -0
  287. package/dist/runtime/query/guard.d.ts.map +1 -1
  288. package/dist/runtime/query/guard.js +11 -0
  289. package/dist/runtime/query/guard.js.map +1 -1
  290. package/dist/runtime/query/index.d.ts +30 -1
  291. package/dist/runtime/query/index.d.ts.map +1 -1
  292. package/dist/runtime/query/index.js +548 -95
  293. package/dist/runtime/query/index.js.map +1 -1
  294. package/dist/runtime/query/iteration/index.d.ts.map +1 -1
  295. package/dist/runtime/query/iteration/index.js +74 -14
  296. package/dist/runtime/query/iteration/index.js.map +1 -1
  297. package/dist/runtime/query/iteration/phases/compaction.d.ts.map +1 -1
  298. package/dist/runtime/query/iteration/phases/compaction.js +94 -53
  299. package/dist/runtime/query/iteration/phases/compaction.js.map +1 -1
  300. package/dist/runtime/query/iteration/phases/context.d.ts +3 -0
  301. package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
  302. package/dist/runtime/query/iteration/phases/context.js.map +1 -1
  303. package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
  304. package/dist/runtime/query/iteration/phases/tool-review.js +21 -0
  305. package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
  306. package/dist/runtime/query/iteration/stream-turn.d.ts.map +1 -1
  307. package/dist/runtime/query/iteration/stream-turn.js +4 -0
  308. package/dist/runtime/query/iteration/stream-turn.js.map +1 -1
  309. package/dist/runtime/query/project-instructions.d.ts +69 -0
  310. package/dist/runtime/query/project-instructions.d.ts.map +1 -0
  311. package/dist/runtime/query/project-instructions.js +137 -0
  312. package/dist/runtime/query/project-instructions.js.map +1 -0
  313. package/dist/runtime/query/request-rich-content.d.ts +22 -0
  314. package/dist/runtime/query/request-rich-content.d.ts.map +1 -0
  315. package/dist/runtime/query/request-rich-content.js +122 -0
  316. package/dist/runtime/query/request-rich-content.js.map +1 -0
  317. package/dist/runtime/query/result.d.ts.map +1 -1
  318. package/dist/runtime/query/result.js +12 -1
  319. package/dist/runtime/query/result.js.map +1 -1
  320. package/dist/runtime/query/resume-pending.d.ts.map +1 -1
  321. package/dist/runtime/query/resume-pending.js +19 -20
  322. package/dist/runtime/query/resume-pending.js.map +1 -1
  323. package/dist/runtime/query/resume-run.d.ts.map +1 -1
  324. package/dist/runtime/query/resume-run.js +54 -8
  325. package/dist/runtime/query/resume-run.js.map +1 -1
  326. package/dist/runtime/query/run-state.d.ts +5 -0
  327. package/dist/runtime/query/run-state.d.ts.map +1 -1
  328. package/dist/runtime/query/run-state.js +6 -1
  329. package/dist/runtime/query/run-state.js.map +1 -1
  330. package/dist/runtime/query/sandbox-lifecycle.d.ts +54 -0
  331. package/dist/runtime/query/sandbox-lifecycle.d.ts.map +1 -0
  332. package/dist/runtime/query/sandbox-lifecycle.js +167 -0
  333. package/dist/runtime/query/sandbox-lifecycle.js.map +1 -0
  334. package/dist/sandbox/isolation.d.ts.map +1 -1
  335. package/dist/sandbox/isolation.js +9 -0
  336. package/dist/sandbox/isolation.js.map +1 -1
  337. package/dist/sandbox/provider/local.d.ts +56 -6
  338. package/dist/sandbox/provider/local.d.ts.map +1 -1
  339. package/dist/sandbox/provider/local.js +181 -76
  340. package/dist/sandbox/provider/local.js.map +1 -1
  341. package/dist/sandbox/terminal.d.ts +13 -5
  342. package/dist/sandbox/terminal.d.ts.map +1 -1
  343. package/dist/sandbox/terminal.js +11 -3
  344. package/dist/sandbox/terminal.js.map +1 -1
  345. package/dist/session/errors.d.ts +28 -29
  346. package/dist/session/errors.d.ts.map +1 -1
  347. package/dist/session/errors.js +28 -29
  348. package/dist/session/errors.js.map +1 -1
  349. package/dist/session/handoff/broadcast.d.ts +5 -8
  350. package/dist/session/handoff/broadcast.d.ts.map +1 -1
  351. package/dist/session/handoff/broadcast.js +16 -6
  352. package/dist/session/handoff/broadcast.js.map +1 -1
  353. package/dist/session/handoff/single.d.ts +5 -8
  354. package/dist/session/handoff/single.d.ts.map +1 -1
  355. package/dist/session/handoff/single.js +7 -4
  356. package/dist/session/handoff/single.js.map +1 -1
  357. package/dist/store/attachment/index.d.ts +11 -3
  358. package/dist/store/attachment/index.d.ts.map +1 -1
  359. package/dist/store/attachment/index.js +49 -4
  360. package/dist/store/attachment/index.js.map +1 -1
  361. package/dist/store/feedback/conformance.d.ts.map +1 -1
  362. package/dist/store/feedback/conformance.js +32 -0
  363. package/dist/store/feedback/conformance.js.map +1 -1
  364. package/dist/store/feedback/disk.d.ts +8 -6
  365. package/dist/store/feedback/disk.d.ts.map +1 -1
  366. package/dist/store/feedback/disk.js +111 -76
  367. package/dist/store/feedback/disk.js.map +1 -1
  368. package/dist/store/goal/index.d.ts +111 -0
  369. package/dist/store/goal/index.d.ts.map +1 -0
  370. package/dist/store/goal/index.js +436 -0
  371. package/dist/store/goal/index.js.map +1 -0
  372. package/dist/store/index.d.ts +1 -1
  373. package/dist/store/index.d.ts.map +1 -1
  374. package/dist/store/index.js +1 -1
  375. package/dist/store/index.js.map +1 -1
  376. package/dist/store/kv/revision-record-store.d.ts +70 -0
  377. package/dist/store/kv/revision-record-store.d.ts.map +1 -0
  378. package/dist/store/kv/revision-record-store.js +290 -0
  379. package/dist/store/kv/revision-record-store.js.map +1 -0
  380. package/dist/store/memory/disk.d.ts +9 -7
  381. package/dist/store/memory/disk.d.ts.map +1 -1
  382. package/dist/store/memory/disk.js +256 -98
  383. package/dist/store/memory/disk.js.map +1 -1
  384. package/dist/store/run/disk.d.ts +10 -2
  385. package/dist/store/run/disk.d.ts.map +1 -1
  386. package/dist/store/run/disk.js +70 -4
  387. package/dist/store/run/disk.js.map +1 -1
  388. package/dist/store/run/memory.d.ts +4 -2
  389. package/dist/store/run/memory.d.ts.map +1 -1
  390. package/dist/store/run/memory.js +15 -1
  391. package/dist/store/run/memory.js.map +1 -1
  392. package/dist/store/session/disk.d.ts +9 -0
  393. package/dist/store/session/disk.d.ts.map +1 -1
  394. package/dist/store/session/disk.js +57 -5
  395. package/dist/store/session/disk.js.map +1 -1
  396. package/dist/store/session/memory.d.ts +1 -0
  397. package/dist/store/session/memory.d.ts.map +1 -1
  398. package/dist/store/session/memory.js +14 -0
  399. package/dist/store/session/memory.js.map +1 -1
  400. package/dist/store/topic/memory.d.ts +1 -2
  401. package/dist/store/topic/memory.d.ts.map +1 -1
  402. package/dist/store/topic/memory.js +4 -5
  403. package/dist/store/topic/memory.js.map +1 -1
  404. package/dist/store/topic/objective.d.ts +8 -4
  405. package/dist/store/topic/objective.d.ts.map +1 -1
  406. package/dist/store/topic/objective.js +185 -100
  407. package/dist/store/topic/objective.js.map +1 -1
  408. package/dist/store/topic/state.d.ts +1 -2
  409. package/dist/store/topic/state.d.ts.map +1 -1
  410. package/dist/store/topic/state.js +50 -62
  411. package/dist/store/topic/state.js.map +1 -1
  412. package/dist/tools/builtins/bash.d.ts.map +1 -1
  413. package/dist/tools/builtins/bash.js +20 -0
  414. package/dist/tools/builtins/bash.js.map +1 -1
  415. package/dist/tools/builtins/computer-use.d.ts +9 -1
  416. package/dist/tools/builtins/computer-use.d.ts.map +1 -1
  417. package/dist/tools/builtins/computer-use.js.map +1 -1
  418. package/dist/tools/builtins/content-fingerprint.d.ts +8 -7
  419. package/dist/tools/builtins/content-fingerprint.d.ts.map +1 -1
  420. package/dist/tools/builtins/content-fingerprint.js +9 -10
  421. package/dist/tools/builtins/content-fingerprint.js.map +1 -1
  422. package/dist/tools/builtins/edit.d.ts +6 -1
  423. package/dist/tools/builtins/edit.d.ts.map +1 -1
  424. package/dist/tools/builtins/edit.js +166 -27
  425. package/dist/tools/builtins/edit.js.map +1 -1
  426. package/dist/tools/builtins/write-file.d.ts.map +1 -1
  427. package/dist/tools/builtins/write-file.js +45 -19
  428. package/dist/tools/builtins/write-file.js.map +1 -1
  429. package/dist/tools/command-arguments.d.ts +43 -0
  430. package/dist/tools/command-arguments.d.ts.map +1 -0
  431. package/dist/tools/command-arguments.js +52 -0
  432. package/dist/tools/command-arguments.js.map +1 -0
  433. package/dist/tools/coordinator/index.d.ts +2 -0
  434. package/dist/tools/coordinator/index.d.ts.map +1 -1
  435. package/dist/tools/coordinator/index.js +3 -1
  436. package/dist/tools/coordinator/index.js.map +1 -1
  437. package/dist/tools/defineTool.d.ts +10 -0
  438. package/dist/tools/defineTool.d.ts.map +1 -1
  439. package/dist/tools/defineTool.js +1 -0
  440. package/dist/tools/defineTool.js.map +1 -1
  441. package/dist/tools/env-scrub.d.ts +7 -5
  442. package/dist/tools/env-scrub.d.ts.map +1 -1
  443. package/dist/tools/env-scrub.js +7 -5
  444. package/dist/tools/env-scrub.js.map +1 -1
  445. package/dist/tools/goal/index.d.ts +20 -0
  446. package/dist/tools/goal/index.d.ts.map +1 -0
  447. package/dist/tools/goal/index.js +104 -0
  448. package/dist/tools/goal/index.js.map +1 -0
  449. package/dist/tools/memory/index.d.ts +16 -0
  450. package/dist/tools/memory/index.d.ts.map +1 -1
  451. package/dist/tools/memory/index.js +6 -2
  452. package/dist/tools/memory/index.js.map +1 -1
  453. package/dist/tools/memory/search.d.ts +4 -1
  454. package/dist/tools/memory/search.d.ts.map +1 -1
  455. package/dist/tools/memory/search.js +10 -2
  456. package/dist/tools/memory/search.js.map +1 -1
  457. package/dist/types/agent/base.d.ts +11 -3
  458. package/dist/types/agent/base.d.ts.map +1 -1
  459. package/dist/types/agent/factory.d.ts +2 -0
  460. package/dist/types/agent/factory.d.ts.map +1 -1
  461. package/dist/types/agent/reactive.d.ts +2 -0
  462. package/dist/types/agent/reactive.d.ts.map +1 -1
  463. package/dist/types/agent/supervisor.d.ts +6 -0
  464. package/dist/types/agent/supervisor.d.ts.map +1 -1
  465. package/dist/types/agent/task.d.ts +6 -2
  466. package/dist/types/agent/task.d.ts.map +1 -1
  467. package/dist/types/connector/core.d.ts +13 -8
  468. package/dist/types/connector/core.d.ts.map +1 -1
  469. package/dist/types/connector/definition.d.ts +37 -18
  470. package/dist/types/connector/definition.d.ts.map +1 -1
  471. package/dist/types/connector/http.d.ts +6 -0
  472. package/dist/types/connector/http.d.ts.map +1 -1
  473. package/dist/types/connector/mcp.d.ts +24 -6
  474. package/dist/types/connector/mcp.d.ts.map +1 -1
  475. package/dist/types/connector/tenant.d.ts +17 -7
  476. package/dist/types/connector/tenant.d.ts.map +1 -1
  477. package/dist/types/connector/webhook.d.ts +6 -0
  478. package/dist/types/connector/webhook.d.ts.map +1 -1
  479. package/dist/types/goal/index.d.ts +46 -0
  480. package/dist/types/goal/index.d.ts.map +1 -0
  481. package/dist/types/goal/index.js +2 -0
  482. package/dist/types/goal/index.js.map +1 -0
  483. package/dist/types/ids/index.d.ts +2 -0
  484. package/dist/types/ids/index.d.ts.map +1 -1
  485. package/dist/types/ids/index.js.map +1 -1
  486. package/dist/types/message/index.d.ts +75 -10
  487. package/dist/types/message/index.d.ts.map +1 -1
  488. package/dist/types/message/index.js +49 -3
  489. package/dist/types/message/index.js.map +1 -1
  490. package/dist/types/plugin/index.d.ts +7 -5
  491. package/dist/types/plugin/index.d.ts.map +1 -1
  492. package/dist/types/plugin/index.js.map +1 -1
  493. package/dist/types/provider/chat.d.ts +27 -4
  494. package/dist/types/provider/chat.d.ts.map +1 -1
  495. package/dist/types/provider/interface.d.ts +18 -7
  496. package/dist/types/provider/interface.d.ts.map +1 -1
  497. package/dist/types/provider/stream.d.ts +6 -0
  498. package/dist/types/provider/stream.d.ts.map +1 -1
  499. package/dist/types/rag/embedding.d.ts +15 -2
  500. package/dist/types/rag/embedding.d.ts.map +1 -1
  501. package/dist/types/rag/ingestion.d.ts +2 -2
  502. package/dist/types/rag/ingestion.d.ts.map +1 -1
  503. package/dist/types/rag/knowledge-base.d.ts +3 -3
  504. package/dist/types/rag/knowledge-base.d.ts.map +1 -1
  505. package/dist/types/rag/retrieval.d.ts +2 -2
  506. package/dist/types/rag/retrieval.d.ts.map +1 -1
  507. package/dist/types/rag/scope.d.ts +4 -0
  508. package/dist/types/rag/scope.d.ts.map +1 -1
  509. package/dist/types/rag/vector.d.ts +5 -2
  510. package/dist/types/rag/vector.d.ts.map +1 -1
  511. package/dist/types/run/config.d.ts +20 -0
  512. package/dist/types/run/config.d.ts.map +1 -1
  513. package/dist/types/run/events.d.ts +25 -1
  514. package/dist/types/run/events.d.ts.map +1 -1
  515. package/dist/types/run/events.js.map +1 -1
  516. package/dist/types/run/metadata.d.ts +2 -0
  517. package/dist/types/run/metadata.d.ts.map +1 -1
  518. package/dist/types/run/step.d.ts +2 -6
  519. package/dist/types/run/step.d.ts.map +1 -1
  520. package/dist/types/run/step.js.map +1 -1
  521. package/dist/types/run/store.d.ts +55 -2
  522. package/dist/types/run/store.d.ts.map +1 -1
  523. package/dist/types/sandbox/index.d.ts +47 -6
  524. package/dist/types/sandbox/index.d.ts.map +1 -1
  525. package/dist/types/sandbox/index.js +23 -10
  526. package/dist/types/sandbox/index.js.map +1 -1
  527. package/dist/types/session/store.d.ts +13 -0
  528. package/dist/types/session/store.d.ts.map +1 -1
  529. package/dist/types/tool/index.d.ts +33 -11
  530. package/dist/types/tool/index.d.ts.map +1 -1
  531. package/dist/types/tool/index.js.map +1 -1
  532. package/dist/types/topic/entity.d.ts +3 -4
  533. package/dist/types/topic/entity.d.ts.map +1 -1
  534. package/dist/types/topic/store.d.ts +3 -3
  535. package/dist/utils/id.d.ts +3 -1
  536. package/dist/utils/id.d.ts.map +1 -1
  537. package/dist/utils/id.js +4 -0
  538. package/dist/utils/id.js.map +1 -1
  539. package/dist/utils/process-environment.d.ts +26 -0
  540. package/dist/utils/process-environment.d.ts.map +1 -0
  541. package/dist/utils/process-environment.js +78 -0
  542. package/dist/utils/process-environment.js.map +1 -0
  543. package/dist/vault/InMemoryCredentialVault.d.ts +2 -0
  544. package/dist/vault/InMemoryCredentialVault.d.ts.map +1 -1
  545. package/dist/vault/InMemoryCredentialVault.js +24 -4
  546. package/dist/vault/InMemoryCredentialVault.js.map +1 -1
  547. package/dist/vault/instrumentation.d.ts.map +1 -1
  548. package/dist/vault/instrumentation.js +15 -0
  549. package/dist/vault/instrumentation.js.map +1 -1
  550. package/package.json +1 -1
  551. package/src/advisory/executor.ts +4 -1
  552. package/src/agents/ReactiveAgent.ts +12 -0
  553. package/src/agents/RouterAgent.ts +25 -3
  554. package/src/agents/SupervisorAgent.ts +33 -11
  555. package/src/agents/runAgent.ts +38 -2
  556. package/src/authorization/command-line.ts +390 -0
  557. package/src/authorization/rules.ts +22 -1
  558. package/src/bridge/a2a/client.ts +384 -97
  559. package/src/bridge/a2a/mapper.ts +5 -0
  560. package/src/bridge/acp/server.ts +184 -42
  561. package/src/bridge/mcp/connector/adapter.ts +28 -20
  562. package/src/bridge/sse/mapper.ts +3 -0
  563. package/src/compaction/dangling.ts +203 -38
  564. package/src/compaction/index.ts +9 -2
  565. package/src/compaction/manual.ts +125 -18
  566. package/src/compaction/plan.ts +42 -11
  567. package/src/compaction/retention.ts +23 -8
  568. package/src/compaction/summary.ts +4 -4
  569. package/src/compaction/verifier.ts +66 -0
  570. package/src/connector/BaseConnector.ts +19 -4
  571. package/src/connector/builtins/http.ts +236 -46
  572. package/src/connector/builtins/webhook.ts +207 -47
  573. package/src/connector/execution-contract.ts +27 -0
  574. package/src/connector/http-operation.ts +238 -0
  575. package/src/connector/mcp/adapter.ts +8 -3
  576. package/src/connector/mcp/client.ts +207 -58
  577. package/src/connector/mcp/http-sse.ts +91 -23
  578. package/src/connector/mcp/prompt-adapter.ts +8 -2
  579. package/src/connector/mcp/stdio.ts +21 -46
  580. package/src/connector/mcp/streamable-http.ts +86 -22
  581. package/src/connector/tools/adapter.ts +23 -14
  582. package/src/connector/tools/definitions.ts +5 -2
  583. package/src/connector/tools/result.ts +21 -0
  584. package/src/connector/web/guarded-fetch.ts +188 -48
  585. package/src/constants/sandbox/index.ts +3 -2
  586. package/src/contracts/api.ts +2 -0
  587. package/src/contracts/schemas.ts +7 -0
  588. package/src/directory/derive-supervisor.ts +8 -0
  589. package/src/directory/derive.ts +8 -0
  590. package/src/directory/load.ts +2 -0
  591. package/src/directory/types.ts +4 -0
  592. package/src/eval/experiment.ts +160 -111
  593. package/src/eval/judge.ts +13 -2
  594. package/src/eval/types.ts +7 -1
  595. package/src/manager/agent/lifecycle.ts +28 -12
  596. package/src/manager/connector/environment.ts +3 -1
  597. package/src/manager/connector/lifecycle.ts +364 -24
  598. package/src/manager/connector/tenant.ts +56 -23
  599. package/src/manager/goal/activation.ts +52 -0
  600. package/src/manager/index.ts +10 -2
  601. package/src/manager/run/persistence.ts +6 -1
  602. package/src/manager/topic/dependency.ts +39 -0
  603. package/src/manager/topic/lifecycle.ts +19 -31
  604. package/src/plugin/index.ts +1 -0
  605. package/src/plugin/lifecycle.ts +180 -39
  606. package/src/plugin/loader.ts +70 -13
  607. package/src/provider/collect-chat-completion.ts +3 -0
  608. package/src/provider/fallback.ts +79 -11
  609. package/src/provider/idle-timeout.ts +143 -17
  610. package/src/provider/index.ts +2 -0
  611. package/src/provider/instrumentation.ts +1 -0
  612. package/src/provider/retry.ts +16 -1
  613. package/src/public-runtime.ts +190 -32
  614. package/src/public-tools.ts +5 -0
  615. package/src/public-types.ts +85 -11
  616. package/src/rag/embedding.ts +147 -19
  617. package/src/rag/index.ts +1 -1
  618. package/src/rag/ingestion.ts +16 -2
  619. package/src/rag/knowledge-base.ts +13 -4
  620. package/src/rag/operation.ts +28 -0
  621. package/src/rag/rag-tool.ts +6 -3
  622. package/src/rag/retriever.ts +62 -11
  623. package/src/rag/vector-store.ts +8 -2
  624. package/src/registry/command/kernel-commands.ts +223 -4
  625. package/src/run/reporter.ts +10 -0
  626. package/src/run-query/index.ts +84 -15
  627. package/src/runtime/query/context.ts +13 -3
  628. package/src/runtime/query/executor.ts +90 -17
  629. package/src/runtime/query/guard.ts +12 -0
  630. package/src/runtime/query/index.ts +652 -103
  631. package/src/runtime/query/iteration/index.ts +89 -13
  632. package/src/runtime/query/iteration/phases/compaction.ts +120 -55
  633. package/src/runtime/query/iteration/phases/context.ts +4 -0
  634. package/src/runtime/query/iteration/phases/tool-review.ts +28 -0
  635. package/src/runtime/query/iteration/stream-turn.ts +3 -0
  636. package/src/runtime/query/project-instructions.ts +212 -0
  637. package/src/runtime/query/request-rich-content.ts +153 -0
  638. package/src/runtime/query/result.ts +12 -1
  639. package/src/runtime/query/resume-pending.ts +20 -18
  640. package/src/runtime/query/resume-run.ts +52 -8
  641. package/src/runtime/query/run-state.ts +11 -1
  642. package/src/runtime/query/sandbox-lifecycle.ts +210 -0
  643. package/src/sandbox/isolation.ts +9 -0
  644. package/src/sandbox/provider/local.ts +255 -90
  645. package/src/sandbox/terminal.ts +13 -5
  646. package/src/session/errors.ts +68 -42
  647. package/src/session/handoff/broadcast.ts +20 -14
  648. package/src/session/handoff/single.ts +14 -13
  649. package/src/store/attachment/index.ts +65 -3
  650. package/src/store/feedback/conformance.ts +39 -0
  651. package/src/store/feedback/disk.ts +128 -82
  652. package/src/store/goal/index.ts +594 -0
  653. package/src/store/index.ts +1 -1
  654. package/src/store/kv/revision-record-store.ts +346 -0
  655. package/src/store/memory/disk.ts +288 -113
  656. package/src/store/run/disk.ts +96 -5
  657. package/src/store/run/memory.ts +22 -2
  658. package/src/store/session/disk.ts +93 -6
  659. package/src/store/session/memory.ts +22 -0
  660. package/src/store/topic/memory.ts +4 -5
  661. package/src/store/topic/objective.ts +215 -100
  662. package/src/store/topic/state.ts +100 -63
  663. package/src/tools/builtins/bash.ts +21 -0
  664. package/src/tools/builtins/computer-use.ts +9 -1
  665. package/src/tools/builtins/content-fingerprint.ts +9 -12
  666. package/src/tools/builtins/edit.ts +190 -27
  667. package/src/tools/builtins/write-file.ts +55 -19
  668. package/src/tools/command-arguments.ts +54 -0
  669. package/src/tools/coordinator/index.ts +4 -1
  670. package/src/tools/defineTool.ts +11 -0
  671. package/src/tools/env-scrub.ts +7 -5
  672. package/src/tools/goal/index.ts +129 -0
  673. package/src/tools/memory/index.ts +26 -3
  674. package/src/tools/memory/search.ts +20 -3
  675. package/src/types/agent/base.ts +12 -3
  676. package/src/types/agent/factory.ts +2 -0
  677. package/src/types/agent/reactive.ts +2 -0
  678. package/src/types/agent/supervisor.ts +6 -0
  679. package/src/types/agent/task.ts +6 -2
  680. package/src/types/connector/core.ts +13 -8
  681. package/src/types/connector/definition.ts +54 -20
  682. package/src/types/connector/http.ts +7 -0
  683. package/src/types/connector/mcp.ts +27 -6
  684. package/src/types/connector/tenant.ts +21 -7
  685. package/src/types/connector/webhook.ts +7 -0
  686. package/src/types/goal/index.ts +50 -0
  687. package/src/types/ids/index.ts +2 -0
  688. package/src/types/message/index.ts +143 -9
  689. package/src/types/plugin/index.ts +7 -5
  690. package/src/types/provider/chat.ts +35 -4
  691. package/src/types/provider/interface.ts +22 -7
  692. package/src/types/provider/stream.ts +6 -0
  693. package/src/types/rag/embedding.ts +16 -2
  694. package/src/types/rag/ingestion.ts +2 -1
  695. package/src/types/rag/knowledge-base.ts +7 -3
  696. package/src/types/rag/retrieval.ts +2 -1
  697. package/src/types/rag/scope.ts +5 -0
  698. package/src/types/rag/vector.ts +5 -2
  699. package/src/types/run/config.ts +20 -0
  700. package/src/types/run/events.ts +28 -3
  701. package/src/types/run/metadata.ts +2 -0
  702. package/src/types/run/step.ts +2 -7
  703. package/src/types/run/store.ts +60 -2
  704. package/src/types/sandbox/index.ts +57 -14
  705. package/src/types/session/store.ts +18 -0
  706. package/src/types/tool/index.ts +33 -11
  707. package/src/types/topic/entity.ts +3 -4
  708. package/src/types/topic/store.ts +3 -3
  709. package/src/utils/id.ts +6 -0
  710. package/src/utils/process-environment.ts +101 -0
  711. package/src/vault/InMemoryCredentialVault.ts +29 -4
  712. package/src/vault/instrumentation.ts +24 -0
@@ -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,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,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAA;CAClD;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,GAChC,OAAO,CAAC,iBAAiB,CAAC,CA8B5B;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACvC,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,KAAK,EAAE,eAAe,GAAG,SAAS,GAChC,OAAO,CAAC,SAAS,OAAO,EAAE,CAAC,CAoB7B"}
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"}
@@ -35,12 +35,18 @@ export const isStoredAttachment = (attachment) => attachment.type === 'stored';
35
35
  * why — the worst available outcome, and the reason none of these three
36
36
  * branches returns the message unchanged.
37
37
  */
38
- export async function resolveAttachment(attachment, store) {
38
+ export async function resolveAttachment(attachment, store, options = {}) {
39
+ const { signal } = options;
40
+ signal?.throwIfAborted();
39
41
  if (!isStoredAttachment(attachment))
40
42
  return attachment;
41
43
  if (!store)
42
44
  throw new NoAttachmentStoreError({ ref: attachment.ref });
43
- const bytes = await store.get(attachment.ref);
45
+ const bytes = await awaitStoreRead(signal, () => signal ? store.get(attachment.ref, { signal }) : store.get(attachment.ref));
46
+ // A store completion can win its promise reaction and remove the abort
47
+ // listener immediately before an already-queued abort. Publication is a
48
+ // second authority boundary, so fence it independently.
49
+ signal?.throwIfAborted();
44
50
  if (!bytes)
45
51
  throw new AttachmentNotFoundError({ ref: attachment.ref });
46
52
  if (bytes.mediaType !== attachment.mediaType) {
@@ -73,7 +79,8 @@ export async function resolveAttachment(attachment, store) {
73
79
  * one scan and no allocation — and so a caller cannot tell resolved
74
80
  * messages from unresolved ones by identity and get it wrong.
75
81
  */
76
- export async function resolveAttachments(messages, store) {
82
+ export async function resolveAttachments(messages, store, options = {}) {
83
+ options.signal?.throwIfAborted();
77
84
  // `Message` rather than a structural constraint: only some members of
78
85
  // the union carry `attachments`, and a structural bound over a union
79
86
  // like that is not assignable in either direction. Naming the real type
@@ -87,8 +94,46 @@ export async function resolveAttachments(messages, store) {
87
94
  return message;
88
95
  return {
89
96
  ...message,
90
- attachments: await Promise.all(attachments.map((a) => resolveAttachment(a, store))),
97
+ attachments: await Promise.all(attachments.map((attachment) => resolveAttachment(attachment, store, options))),
91
98
  };
92
99
  }));
93
100
  }
101
+ /**
102
+ * Await a host store without handing it ownership of run cancellation.
103
+ *
104
+ * Forwarding the signal is cooperative cleanup; this race is the public
105
+ * liveness boundary when a remote or custom store ignores it. The first cause
106
+ * wins, and late store completion has no route back into the returned value.
107
+ */
108
+ async function awaitStoreRead(signal, start) {
109
+ if (!signal)
110
+ return await start();
111
+ signal.throwIfAborted();
112
+ return new Promise((resolve, reject) => {
113
+ let settled = false;
114
+ const cleanup = () => signal.removeEventListener('abort', onAbort);
115
+ const rejectOnce = (reason) => {
116
+ if (settled)
117
+ return;
118
+ settled = true;
119
+ cleanup();
120
+ reject(reason);
121
+ };
122
+ const resolveOnce = (value) => {
123
+ if (settled)
124
+ return;
125
+ settled = true;
126
+ cleanup();
127
+ resolve(value);
128
+ };
129
+ const onAbort = () => rejectOnce(signal.reason);
130
+ signal.addEventListener('abort', onAbort, { once: true });
131
+ try {
132
+ Promise.resolve(start()).then(resolveOnce, rejectOnce);
133
+ }
134
+ catch (error) {
135
+ rejectOnce(error);
136
+ }
137
+ });
138
+ }
94
139
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/store/attachment/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/store/attachment/index.ts"],"names":[],"mappings":"AA0EA,yCAAyC;AACzC,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IACxC,OAAO,CAAiB;IAEjC,YAAY,OAAwB;QACnC,KAAK,CAAC,0BAA0B,OAAO,CAAC,GAAG,IAAI,CAAC,CAAA;QAChD,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAA;QACrC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACvB,CAAC;CACD;AAED,yEAAyE;AACzE,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IACvC,OAAO,CAAiB;IAEjC,YAAY,OAAwB;QACnC,KAAK,CACJ,2CAA2C,OAAO,CAAC,GAAG,0CAA0C,CAChG,CAAA;QACD,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAA;QACpC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACvB,CAAC;CACD;AAED,mEAAmE;AACnE,MAAM,OAAO,gCAAiC,SAAQ,KAAK;IACjD,OAAO,CAAmD;IAEnE,YAAY,OAA0D;QACrE,KAAK,CACJ,eAAe,OAAO,CAAC,GAAG,kBAAkB,OAAO,CAAC,QAAQ,wBAAwB,OAAO,CAAC,MAAM,GAAG,CACrG,CAAA;QACD,IAAI,CAAC,IAAI,GAAG,kCAAkC,CAAA;QAC9C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACvB,CAAC;CACD;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CACjC,UAA6B,EACwB,EAAE,CACtD,UAAgC,CAAC,IAAI,KAAK,QAAQ,CAAA;AAEpD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACtC,UAA6B,EAC7B,KAAkC,EAClC,UAAsC,EAAE;IAExC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAC1B,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAA;IACtD,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,sBAAsB,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,CAAA;IAErE,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAC/C,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAC1E,CAAA;IACD,uEAAuE;IACvE,wEAAwE;IACxE,wDAAwD;IACxD,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,uBAAuB,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,CAAA;IAEtE,IAAI,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,SAAS,EAAE,CAAC;QAC9C,sEAAsE;QACtE,oEAAoE;QACpE,mEAAmE;QACnE,iEAAiE;QACjE,aAAa;QACb,MAAM,IAAI,gCAAgC,CAAC;YAC1C,GAAG,EAAE,UAAU,CAAC,GAAG;YACnB,QAAQ,EAAE,UAAU,CAAC,SAAS;YAC9B,MAAM,EAAE,KAAK,CAAC,SAAS;SACvB,CAAC,CAAA;IACH,CAAC;IAED,IAAI,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACpC,OAAO;YACN,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,GAAG,CAAC,UAAU,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC;YACnE,GAAG,CAAC,UAAU,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,CAAC;SAClF,CAAA;IACF,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;AACvE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACvC,QAA4B,EAC5B,KAAkC,EAClC,UAAsC,EAAE;IAExC,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAA;IAChC,sEAAsE;IACtE,qEAAqE;IACrE,wEAAwE;IACxE,4CAA4C;IAC5C,MAAM,GAAG,GAAG,CAAC,OAAgB,EAA4C,EAAE,CACzE,OAA0D,CAAC,WAAW,CAAA;IAExE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAA;IAE5E,OAAO,MAAM,OAAO,CAAC,GAAG,CACvB,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QAC9B,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,CAAA;QAChC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,kBAAkB,CAAC;YAAE,OAAO,OAAO,CAAA;QAC1D,OAAO;YACN,GAAG,OAAO;YACV,WAAW,EAAE,MAAM,OAAO,CAAC,GAAG,CAC7B,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAC9E;SACD,CAAA;IACF,CAAC,CAAC,CACF,CAAA;AACF,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,cAAc,CAC5B,MAA+B,EAC/B,KAAuB;IAEvB,IAAI,CAAC,MAAM;QAAE,OAAO,MAAM,KAAK,EAAE,CAAA;IACjC,MAAM,CAAC,cAAc,EAAE,CAAA;IAEvB,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACzC,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,MAAM,OAAO,GAAG,GAAS,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACxE,MAAM,UAAU,GAAG,CAAC,MAAe,EAAQ,EAAE;YAC5C,IAAI,OAAO;gBAAE,OAAM;YACnB,OAAO,GAAG,IAAI,CAAA;YACd,OAAO,EAAE,CAAA;YACT,MAAM,CAAC,MAAM,CAAC,CAAA;QACf,CAAC,CAAA;QACD,MAAM,WAAW,GAAG,CAAC,KAAQ,EAAQ,EAAE;YACtC,IAAI,OAAO;gBAAE,OAAM;YACnB,OAAO,GAAG,IAAI,CAAA;YACd,OAAO,EAAE,CAAA;YACT,OAAO,CAAC,KAAK,CAAC,CAAA;QACf,CAAC,CAAA;QACD,MAAM,OAAO,GAAG,GAAS,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAErD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QACzD,IAAI,CAAC;YACJ,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;QACvD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,UAAU,CAAC,KAAK,CAAC,CAAA;QAClB,CAAC;IACF,CAAC,CAAC,CAAA;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"conformance.d.ts","sourceRoot":"","sources":["../../../src/store/feedback/conformance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEtD;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,WAAW,0BAA0B;IAC1C,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;IAC3D,QAAQ,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,CAAA;IACrE,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK;QACrC,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAA;QAC7B,OAAO,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAA;QAChC,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAC7B,CAAA;IACD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,iEAAiE;IACjE,QAAQ,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC;QACjC,KAAK,EAAE,oBAAoB,CAAA;QAC3B,KAAK,EAAE,KAAK,CAAA;QACZ,cAAc,EAAE,SAAS,CAAA;QACzB,yDAAyD;QACzD,gBAAgB,EAAE,SAAS,CAAA;QAC3B,UAAU,EAAE,KAAK,CAAA;QACjB,mBAAmB,EAAE,SAAS,CAAA;KAC9B,CAAC,CAAA;CACF;AAED,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,0BAA0B,GAAG,IAAI,CAmJ1F"}
1
+ {"version":3,"file":"conformance.d.ts","sourceRoot":"","sources":["../../../src/store/feedback/conformance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEtD;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,WAAW,0BAA0B;IAC1C,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;IAC3D,QAAQ,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,CAAA;IACrE,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK;QACrC,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAA;QAC7B,OAAO,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAA;QAChC,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAC7B,CAAA;IACD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,iEAAiE;IACjE,QAAQ,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC;QACjC,KAAK,EAAE,oBAAoB,CAAA;QAC3B,KAAK,EAAE,KAAK,CAAA;QACZ,cAAc,EAAE,SAAS,CAAA;QACzB,yDAAyD;QACzD,gBAAgB,EAAE,SAAS,CAAA;QAC3B,UAAU,EAAE,KAAK,CAAA;QACjB,mBAAmB,EAAE,SAAS,CAAA;KAC9B,CAAC,CAAA;CACF;AAED,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,0BAA0B,GAAG,IAAI,CA0L1F"}
@@ -64,6 +64,38 @@ export function defineMessageFeedbackConformance(options) {
64
64
  expect(listed).toHaveLength(1);
65
65
  expect(listed[0]?.ownerVersion).toBe(1);
66
66
  });
67
+ it('lets exactly one of two racing updates advance a stored version', async () => {
68
+ const { store, runId, knownMessageId } = await makeStore();
69
+ await store.putMessageFeedback({
70
+ runId,
71
+ messageId: knownMessageId,
72
+ rating: 'good',
73
+ expectedVersion: 0,
74
+ });
75
+ const attempts = [
76
+ { rating: 'good', note: 'writer-a' },
77
+ { rating: 'bad', note: 'writer-b' },
78
+ ].map((candidate) => store
79
+ .putMessageFeedback({
80
+ runId,
81
+ messageId: knownMessageId,
82
+ ...candidate,
83
+ expectedVersion: 1,
84
+ })
85
+ .then((record) => ({ kind: 'ok', record }), () => ({ kind: 'refused' })));
86
+ const outcomes = await Promise.all(attempts);
87
+ const winners = outcomes.filter((outcome) => outcome.kind === 'ok');
88
+ expect(winners).toHaveLength(1);
89
+ expect(outcomes.filter((outcome) => outcome.kind === 'refused')).toHaveLength(1);
90
+ const winner = winners[0];
91
+ if (winner?.kind !== 'ok')
92
+ throw new Error('expected one feedback update winner');
93
+ const listed = await store.listMessageFeedback({ runId });
94
+ expect(listed).toHaveLength(1);
95
+ expect(listed[0]?.ownerVersion).toBe(2);
96
+ expect(listed[0]?.rating).toBe(winner.record.rating);
97
+ expect(listed[0]?.note).toBe(winner.record.note);
98
+ });
67
99
  it('advances the version on a correct update', async () => {
68
100
  const { store, runId, knownMessageId } = await makeStore();
69
101
  await store.putMessageFeedback({
@@ -1 +1 @@
1
- {"version":3,"file":"conformance.js","sourceRoot":"","sources":["../../../src/store/feedback/conformance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conformance.js","sourceRoot":"","sources":["../../../src/store/feedback/conformance.ts"],"names":[],"mappings":"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"}
@@ -2,13 +2,12 @@ import type { RunId } from '../../types/ids/index.js';
2
2
  import type { MessageExistenceCheck } from './memory.js';
3
3
  import { type MessageFeedback, type MessageFeedbackStore, type PutMessageFeedbackInput } from './types.js';
4
4
  /**
5
- * Feedback on disk, one file per rated message.
5
+ * Feedback on disk, one immutable commit per accepted owner version.
6
6
  *
7
- * One file rather than one appended log per run, because a rating is a
8
- * RECORD it is replaced, not accumulated and compare-and-set on a
9
- * record is what stops two raters silently overwriting each other. An
10
- * append log would have to be replayed to answer "what is the rating now",
11
- * and two appends racing would both succeed.
7
+ * A rating is a RECORD readers want its current value but replacing one
8
+ * mutable file cannot make the preceding version comparison atomic. The
9
+ * revision directory elects exactly one writer for N+1; the former single
10
+ * file remains only a checked, best-effort compatibility projection.
12
11
  */
13
12
  export interface DiskMessageFeedbackStoreConfig {
14
13
  /** Where feedback lives. Sibling of the run tree, not inside it. */
@@ -38,6 +37,9 @@ export declare class DiskMessageFeedbackStore implements MessageFeedbackStore {
38
37
  private readonly messageExists;
39
38
  constructor(config: DiskMessageFeedbackStoreConfig, messageExists?: MessageExistenceCheck, now?: () => number);
40
39
  private runDir;
40
+ private revisionsDir;
41
+ private location;
42
+ private assertKey;
41
43
  putMessageFeedback(input: PutMessageFeedbackInput): Promise<MessageFeedback>;
42
44
  listMessageFeedback(query: {
43
45
  runId: RunId;
@@ -1 +1 @@
1
- {"version":3,"file":"disk.d.ts","sourceRoot":"","sources":["../../../src/store/feedback/disk.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAa,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAIhE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,EACN,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAG5B,MAAM,YAAY,CAAA;AAMnB;;;;;;;;GAQG;AACH,MAAM,WAAW,8BAA8B;IAC9C,oEAAoE;IACpE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CACzB;AAUD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB,CAK3E;AAED,qBAAa,wBAAyB,YAAW,oBAAoB;IAOnE,OAAO,CAAC,QAAQ,CAAC,GAAG;IANrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuB;gBAGpD,MAAM,EAAE,8BAA8B,EACtC,aAAa,CAAC,EAAE,qBAAqB,EACpB,GAAG,GAAE,MAAM,MAAiB;IAgB9C,OAAO,CAAC,MAAM;IAIR,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,eAAe,CAAC;IA6E5E,mBAAmB,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;CAavF"}
1
+ {"version":3,"file":"disk.d.ts","sourceRoot":"","sources":["../../../src/store/feedback/disk.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAa,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAYhE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,EACN,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAG5B,MAAM,YAAY,CAAA;AAenB;;;;;;;GAOG;AACH,MAAM,WAAW,8BAA8B;IAC9C,oEAAoE;IACpE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CACzB;AAUD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,qBAAqB,CAO3E;AAED,qBAAa,wBAAyB,YAAW,oBAAoB;IAOnE,OAAO,CAAC,QAAQ,CAAC,GAAG;IANrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuB;gBAGpD,MAAM,EAAE,8BAA8B,EACtC,aAAa,CAAC,EAAE,qBAAqB,EACpB,GAAG,GAAE,MAAM,MAAiB;IAgB9C,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,QAAQ;IAahB,OAAO,CAAC,SAAS;IAgBX,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,eAAe,CAAC;IAyC5E,mBAAmB,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,KAAK,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;CA4CvF"}
@@ -1,11 +1,18 @@
1
- import { mkdir, writeFile } from 'node:fs/promises';
2
1
  import { join } from 'node:path';
2
+ import { NamzuError } from '../../types/errors/index.js';
3
+ import { asMessageId, asRunId } from '../../utils/id.js';
3
4
  import { DiskRecordStore } from '../kv/record-store.js';
5
+ import { DiskRevisionRecordStore, decodeRevisionFileSegment, legacyRevisionFileSegment, revisionFileSegment, } from '../kv/revision-record-store.js';
4
6
  import { readRunEventsIn } from '../run/disk.js';
5
- import { defineSchema, stamp } from '../schema.js';
7
+ import { defineSchema } from '../schema.js';
6
8
  import { StaleFeedbackError, UnknownMessageError, } from './types.js';
7
- const SCHEMA = defineSchema({ kind: 'feedback-store', current: 1, migrations: {} });
9
+ const SCHEMA = defineSchema({
10
+ kind: 'feedback-store',
11
+ current: 1,
12
+ migrations: {},
13
+ });
8
14
  const records = new DiskRecordStore(SCHEMA);
15
+ const revisionRecords = new DiskRevisionRecordStore(SCHEMA, 'message feedback store', (record) => record.ownerVersion);
9
16
  /** Filesystem-safe file name for one rated message. */
10
17
  function fileName(messageId) {
11
18
  // Message ids are `msg_` + an alphabet with no separators, so this is a
@@ -24,8 +31,10 @@ function fileName(messageId) {
24
31
  */
25
32
  export function runEventMessageCheck(runsDir) {
26
33
  return async (runId, messageId) => {
27
- const events = await readRunEventsIn(join(runsDir, runId));
28
- return events.some((event) => event.messageId === messageId);
34
+ const checkedRunId = asRunId(runId);
35
+ const checkedMessageId = asMessageId(messageId);
36
+ const events = await readRunEventsIn(join(runsDir, legacyRevisionFileSegment(checkedRunId)));
37
+ return events.some((event) => event.messageId === checkedMessageId);
29
38
  };
30
39
  }
31
40
  export class DiskMessageFeedbackStore {
@@ -48,92 +57,118 @@ export class DiskMessageFeedbackStore {
48
57
  });
49
58
  }
50
59
  runDir(runId) {
51
- return join(this.rootDir, runId);
60
+ return join(this.rootDir, legacyRevisionFileSegment(asRunId(runId)));
61
+ }
62
+ revisionsDir(runId) {
63
+ return join(this.runDir(runId), '.revisions');
64
+ }
65
+ location(runId, messageId) {
66
+ const checkedMessageId = asMessageId(messageId);
67
+ const legacyName = fileName(checkedMessageId);
68
+ return {
69
+ legacyPath: join(this.runDir(runId), legacyName),
70
+ revisionsDir: join(this.revisionsDir(runId), revisionFileSegment(checkedMessageId)),
71
+ // The previous filename replacement is lossy for punctuation and
72
+ // separators. Read such a legacy path forward if it exists, but never
73
+ // publish a new projection that could overwrite another message's file.
74
+ publishLegacyProjection: legacyName === `${checkedMessageId}.json`,
75
+ };
76
+ }
77
+ assertKey(record, runId, messageId) {
78
+ if (record.runId !== runId || record.messageId !== messageId) {
79
+ throw new NamzuError({
80
+ code: 'storage_error',
81
+ message: `Message feedback record key mismatch: expected ${runId}/${messageId}, found ${record.runId}/${record.messageId}. Repair or restore the record before retrying.`,
82
+ details: {
83
+ expectedRunId: runId,
84
+ expectedMessageId: messageId,
85
+ actualRunId: record.runId,
86
+ actualMessageId: record.messageId,
87
+ },
88
+ retryable: false,
89
+ });
90
+ }
52
91
  }
53
92
  async putMessageFeedback(input) {
93
+ // Runtime ids cross a public JS boundary. The nominal TypeScript brand can
94
+ // still be asserted, so validate before either an injected callback or a
95
+ // filesystem path sees the values.
96
+ const runId = asRunId(input.runId);
97
+ const messageId = asMessageId(input.messageId);
98
+ const location = this.location(runId, messageId);
54
99
  // Validated BEFORE the version check, so a rating aimed at a message
55
100
  // that does not exist is refused for what it is rather than reported
56
101
  // as a version conflict.
57
- if (!(await this.messageExists(input.runId, input.messageId))) {
58
- throw new UnknownMessageError({ runId: input.runId, messageId: input.messageId });
102
+ if (!(await this.messageExists(runId, messageId))) {
103
+ throw new UnknownMessageError({ runId, messageId });
59
104
  }
60
- const dir = this.runDir(input.runId);
61
- const path = join(dir, fileName(input.messageId));
62
- const existing = await records.read(path);
63
- const actualVersion = existing?.ownerVersion ?? 0;
64
- if (input.expectedVersion !== actualVersion) {
65
- throw new StaleFeedbackError({
66
- runId: input.runId,
67
- messageId: input.messageId,
68
- expectedVersion: input.expectedVersion,
69
- actualVersion,
70
- });
71
- }
72
- const timestamp = this.now();
73
- const record = {
74
- runId: input.runId,
75
- messageId: input.messageId,
76
- rating: input.rating,
77
- ...(input.note !== undefined ? { note: input.note } : {}),
78
- ownerVersion: actualVersion + 1,
79
- createdAt: existing?.createdAt ?? timestamp,
80
- updatedAt: timestamp,
81
- };
82
- await mkdir(dir, { recursive: true });
83
- if (actualVersion === 0) {
84
- // EXCLUSIVE create for the first write, and this is the whole
85
- // compare-and-set on a filesystem. A read-then-write is not
86
- // atomic: two raters who each read "no feedback yet" both see
87
- // version 0, both pass the check above, and both write — the
88
- // second silently discarding the first. `wx` makes the kernel
89
- // the arbiter, so exactly one of them lands.
90
- //
91
- // Found by the conformance suite on the day it was written, with
92
- // the in-memory store passing the same rule for free because
93
- // nothing awaits between its read and its write.
94
- try {
95
- await writeFile(path, `${JSON.stringify(stamp(SCHEMA, record), null, 2)}\n`, {
96
- encoding: 'utf-8',
97
- flag: 'wx',
98
- });
99
- }
100
- catch (err) {
101
- if (err.code !== 'EEXIST')
102
- throw err;
103
- // Somebody else got there between the read and here. Report
104
- // what is actually stored now, rather than the 0 we read.
105
- const winner = await records.read(path);
105
+ return await revisionRecords.transact(location, (existing) => {
106
+ if (existing)
107
+ this.assertKey(existing, runId, messageId);
108
+ const actualVersion = existing?.ownerVersion ?? 0;
109
+ if (input.expectedVersion !== actualVersion) {
106
110
  throw new StaleFeedbackError({
107
- runId: input.runId,
108
- messageId: input.messageId,
111
+ runId,
112
+ messageId,
109
113
  expectedVersion: input.expectedVersion,
110
- actualVersion: winner?.ownerVersion ?? 1,
114
+ actualVersion,
111
115
  });
112
116
  }
113
- return record;
114
- }
115
- // An UPDATE is written through the ordinary atomic replace. Two
116
- // concurrent updates from separate PROCESSES can still interleave
117
- // between the read above and this write — the file already exists, so
118
- // there is no exclusive-create to arbitrate, and feedback carries no
119
- // fencing token the way a run claim does. Said plainly rather than
120
- // implied by the `expectedVersion` parameter, which reads like a
121
- // stronger guarantee than a filesystem gives without one.
122
- await records.write(path, record);
123
- return record;
117
+ const timestamp = this.now();
118
+ const record = {
119
+ runId,
120
+ messageId,
121
+ rating: input.rating,
122
+ ...(input.note !== undefined ? { note: input.note } : {}),
123
+ ownerVersion: actualVersion + 1,
124
+ createdAt: existing?.createdAt ?? timestamp,
125
+ updatedAt: timestamp,
126
+ };
127
+ return { record, result: record };
128
+ });
124
129
  }
125
130
  async listMessageFeedback(query) {
126
- const dir = this.runDir(query.runId);
127
- const names = await records.scanNames(dir, '');
128
- const out = [];
129
- for (const name of names) {
131
+ const runId = asRunId(query.runId);
132
+ const dir = this.runDir(runId);
133
+ const ids = new Map();
134
+ // Old single-file records are still authoritative until their first
135
+ // current write. Read the body's id rather than attempting to reverse the
136
+ // old lossy filename mapping.
137
+ for (const name of await records.scanNames(dir, '')) {
130
138
  if (!name.endsWith('.json'))
131
139
  continue;
132
140
  const record = await records.read(join(dir, name));
133
- // A half-written entry from a crashed writer must not make the
134
- // whole listing unavailable.
135
- if (record !== null)
136
- out.push(record);
141
+ if (record === null)
142
+ continue;
143
+ const messageId = asMessageId(record.messageId);
144
+ this.assertKey(record, runId, messageId);
145
+ if (fileName(messageId) !== name) {
146
+ throw new NamzuError({
147
+ code: 'storage_error',
148
+ message: `Message feedback projection filename ${name} does not match record ${messageId}. Repair or restore the record before retrying.`,
149
+ details: { runId, messageId, name },
150
+ retryable: false,
151
+ });
152
+ }
153
+ ids.set(messageId, messageId);
154
+ }
155
+ // The immutable commit is the success boundary. Projection publication is
156
+ // deliberately best-effort, so enumerate canonical revision directories
157
+ // too or a successful first rating can disappear after a crash.
158
+ for (const segment of await records.scanNames(this.revisionsDir(runId), '')) {
159
+ const decoded = decodeRevisionFileSegment(segment);
160
+ if (decoded === null)
161
+ continue;
162
+ const messageId = asMessageId(decoded);
163
+ ids.set(messageId, messageId);
164
+ }
165
+ const out = [];
166
+ for (const messageId of [...ids.values()].sort((a, b) => a.localeCompare(b))) {
167
+ const record = await revisionRecords.read(this.location(runId, messageId));
168
+ if (record === null)
169
+ continue;
170
+ this.assertKey(record, runId, messageId);
171
+ out.push(record);
137
172
  }
138
173
  return out;
139
174
  }
@@ -1 +1 @@
1
- {"version":3,"file":"disk.js","sourceRoot":"","sources":["../../../src/store/feedback/disk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"disk.js","sourceRoot":"","sources":["../../../src/store/feedback/disk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ import type { GoalBlockReason, GoalPhase, GoalRef, GoalRoundAuthority, SessionGoal } from '../../types/goal/index.js';
2
+ import type { GoalId, SessionId, TenantId } from '../../types/ids/index.js';
3
+ import type { SessionStore } from '../../types/session/store.js';
4
+ /** Current source-backed limit for a human goal objective. */
5
+ export declare const MAX_GOAL_OBJECTIVE_CHARS = 4000;
6
+ /** Source-aligned default; hosts may choose a smaller positive finite cap. */
7
+ export declare const DEFAULT_MAX_GOAL_ROUNDS = 256;
8
+ export interface CreateSessionGoalParams {
9
+ readonly sessionId: SessionId;
10
+ readonly objective: string;
11
+ readonly maxGoalRounds?: number;
12
+ }
13
+ export interface EditSessionGoalParams {
14
+ readonly objective: string;
15
+ }
16
+ export interface SessionGoalStore {
17
+ getGoal(sessionId: SessionId, tenantId: TenantId): Promise<SessionGoal | null>;
18
+ createGoal(params: CreateSessionGoalParams, tenantId: TenantId): Promise<SessionGoal>;
19
+ editGoal(sessionId: SessionId, tenantId: TenantId, ref: GoalRef, changes: EditSessionGoalParams): Promise<SessionGoal>;
20
+ pauseGoal(sessionId: SessionId, tenantId: TenantId, ref: GoalRef): Promise<SessionGoal>;
21
+ resumeGoal(sessionId: SessionId, tenantId: TenantId, ref: GoalRef): Promise<SessionGoal>;
22
+ /** Durably reserve one automatic round before any provider work begins. */
23
+ admitRound(sessionId: SessionId, tenantId: TenantId, ref: GoalRef): Promise<GoalRoundAuthority>;
24
+ completeGoal(sessionId: SessionId, tenantId: TenantId, ref: GoalRef): Promise<SessionGoal>;
25
+ blockGoal(sessionId: SessionId, tenantId: TenantId, ref: GoalRef, reason: GoalBlockReason): Promise<SessionGoal>;
26
+ clearGoal(sessionId: SessionId, tenantId: TenantId, ref: GoalRef): Promise<void>;
27
+ }
28
+ /** A mutation was based on a goal revision that is no longer current. */
29
+ export declare class StaleGoalError extends Error {
30
+ readonly details: {
31
+ readonly sessionId: SessionId;
32
+ readonly expectedRevision: number;
33
+ readonly actualRevision: number;
34
+ };
35
+ constructor(details: StaleGoalError['details']);
36
+ }
37
+ /** A session already has a goal that has not completed or been cleared. */
38
+ export declare class GoalExistsError extends Error {
39
+ readonly goal: SessionGoal;
40
+ constructor(goal: SessionGoal);
41
+ }
42
+ /** A goal operation was requested for a session with no current goal. */
43
+ export declare class GoalNotFoundError extends Error {
44
+ readonly sessionId: SessionId;
45
+ constructor(sessionId: SessionId);
46
+ }
47
+ /** A goal transition is invalid from its current durable phase. */
48
+ export declare class GoalTransitionError extends Error {
49
+ readonly phase: GoalPhase;
50
+ readonly operation: string;
51
+ constructor(phase: GoalPhase, operation: string);
52
+ }
53
+ /** Goal storage refuses ids that do not name a live tenant-owned Session. */
54
+ export declare class GoalSessionNotFoundError extends Error {
55
+ readonly sessionId: SessionId;
56
+ constructor(sessionId: SessionId);
57
+ }
58
+ /** Admission reached its finite cap after durably blocking the goal. */
59
+ export declare class GoalRoundLimitError extends Error {
60
+ readonly goal: SessionGoal;
61
+ constructor(goal: SessionGoal);
62
+ }
63
+ interface SessionGoalRecord {
64
+ readonly sessionId: SessionId;
65
+ readonly tenantId: TenantId;
66
+ /** Storage sequence survives clear and fresh goal identities. */
67
+ readonly storageRevision: number;
68
+ readonly goal: SessionGoal | null;
69
+ readonly updatedAt: number;
70
+ }
71
+ declare abstract class SessionGoalStoreBase implements SessionGoalStore {
72
+ protected readonly sessions: Pick<SessionStore, 'getSession'>;
73
+ protected readonly now: () => number;
74
+ protected readonly makeGoalId: () => GoalId;
75
+ protected constructor(sessions: Pick<SessionStore, 'getSession'>, now: () => number, makeGoalId: () => GoalId);
76
+ protected abstract put(record: SessionGoalRecord): Promise<void>;
77
+ private requireSession;
78
+ getGoal(sessionId: SessionId, tenantId: TenantId): Promise<SessionGoal | null>;
79
+ createGoal(params: CreateSessionGoalParams, tenantId: TenantId): Promise<SessionGoal>;
80
+ editGoal(sessionId: SessionId, tenantId: TenantId, ref: GoalRef, changes: EditSessionGoalParams): Promise<SessionGoal>;
81
+ pauseGoal(sessionId: SessionId, tenantId: TenantId, ref: GoalRef): Promise<SessionGoal>;
82
+ resumeGoal(sessionId: SessionId, tenantId: TenantId, ref: GoalRef): Promise<SessionGoal>;
83
+ admitRound(sessionId: SessionId, tenantId: TenantId, ref: GoalRef): Promise<GoalRoundAuthority>;
84
+ completeGoal(sessionId: SessionId, tenantId: TenantId, ref: GoalRef): Promise<SessionGoal>;
85
+ blockGoal(sessionId: SessionId, tenantId: TenantId, ref: GoalRef, reason: GoalBlockReason): Promise<SessionGoal>;
86
+ clearGoal(sessionId: SessionId, tenantId: TenantId, ref: GoalRef): Promise<void>;
87
+ private transition;
88
+ private mutate;
89
+ }
90
+ export interface InMemorySessionGoalStoreConfig {
91
+ readonly sessions: Pick<SessionStore, 'getSession'>;
92
+ }
93
+ export declare class InMemorySessionGoalStore extends SessionGoalStoreBase {
94
+ private readonly records;
95
+ constructor(config: InMemorySessionGoalStoreConfig, now?: () => number, makeGoalId?: () => GoalId);
96
+ protected put(record: SessionGoalRecord): Promise<void>;
97
+ }
98
+ export interface DiskSessionGoalStoreConfig {
99
+ /** Session root; goals live under `<rootDir>/goals/`. */
100
+ readonly rootDir: string;
101
+ /** Authority for session existence and tenant ownership. */
102
+ readonly sessions: Pick<SessionStore, 'getSession'>;
103
+ }
104
+ export declare class DiskSessionGoalStore extends SessionGoalStoreBase {
105
+ private readonly config;
106
+ constructor(config: DiskSessionGoalStoreConfig, now?: () => number, makeGoalId?: () => GoalId);
107
+ private location;
108
+ protected put(record: SessionGoalRecord): Promise<void>;
109
+ }
110
+ export {};
111
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/store/goal/index.ts"],"names":[],"mappings":"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"}