@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,4 +1,43 @@
1
- import type { EmbeddingProvider, HttpEmbeddingConfig } from '../types/rag/index.js'
1
+ import type {
2
+ EmbeddingProvider,
3
+ HttpEmbeddingConfig,
4
+ RAGOperationOptions,
5
+ } from '../types/rag/index.js'
6
+
7
+ /** Each HTTP embedding batch owns a finite transport lifetime by default. */
8
+ export const DEFAULT_EMBEDDING_REQUEST_TIMEOUT_MS = 30_000
9
+
10
+ const MAX_TIMER_DELAY_MS = 2_147_483_647
11
+
12
+ function resolveRequestTimeoutMs(value: number | undefined): number {
13
+ const resolved = value ?? DEFAULT_EMBEDDING_REQUEST_TIMEOUT_MS
14
+ if (!Number.isInteger(resolved) || resolved < 0 || resolved > MAX_TIMER_DELAY_MS) {
15
+ throw new RangeError(
16
+ `requestTimeoutMs must be an integer from 0 to ${MAX_TIMER_DELAY_MS}; received ${String(resolved)}`,
17
+ )
18
+ }
19
+ return resolved
20
+ }
21
+
22
+ function resolveBatchSize(value: number | undefined): number {
23
+ const resolved = value ?? 64
24
+ if (!Number.isSafeInteger(resolved) || resolved <= 0) {
25
+ throw new RangeError(`batchSize must be a positive safe integer; received ${String(resolved)}`)
26
+ }
27
+ return resolved
28
+ }
29
+
30
+ function resolveDimensions(value: number | undefined): number {
31
+ const resolved = value ?? 1536
32
+ if (!Number.isSafeInteger(resolved) || resolved <= 0) {
33
+ throw new RangeError(`dimensions must be a positive safe integer; received ${String(resolved)}`)
34
+ }
35
+ return resolved
36
+ }
37
+
38
+ function isRecord(value: unknown): value is Record<string, unknown> {
39
+ return typeof value === 'object' && value !== null
40
+ }
2
41
 
3
42
  /**
4
43
  * Embeddings over the common HTTP shape: `POST {baseUrl}/embeddings` with
@@ -29,36 +68,94 @@ export class HttpEmbeddingProvider implements EmbeddingProvider {
29
68
  private readonly apiKey: string
30
69
  private readonly baseUrl: string
31
70
  private readonly batchSize: number
71
+ private readonly requestTimeoutMs: number
32
72
 
33
73
  constructor(config: HttpEmbeddingConfig) {
34
74
  this.model = config.model
35
- this.dimensions = config.dimensions ?? 1536
75
+ this.dimensions = resolveDimensions(config.dimensions)
36
76
  this.apiKey = config.apiKey
37
77
  this.baseUrl = stripTrailingSlashes(config.baseUrl)
38
- this.batchSize = config.batchSize ?? 64
78
+ this.batchSize = resolveBatchSize(config.batchSize)
79
+ this.requestTimeoutMs = resolveRequestTimeoutMs(config.requestTimeoutMs)
39
80
  }
40
81
 
41
- async embed(texts: string[]): Promise<number[][]> {
82
+ async embed(texts: string[], options: RAGOperationOptions = {}): Promise<number[][]> {
83
+ options.signal?.throwIfAborted()
42
84
  const results: number[][] = []
43
85
 
44
86
  for (let i = 0; i < texts.length; i += this.batchSize) {
45
87
  const batch = texts.slice(i, i + this.batchSize)
46
- const batchResults = await this.callEmbeddingApi(batch)
88
+ const batchResults = await this.callEmbeddingApi(batch, options.signal)
47
89
  results.push(...batchResults)
48
90
  }
49
91
 
50
92
  return results
51
93
  }
52
94
 
53
- async embedQuery(query: string): Promise<number[]> {
54
- const [result] = await this.embed([query])
95
+ async embedQuery(query: string, options: RAGOperationOptions = {}): Promise<number[]> {
96
+ const [result] = await this.embed([query], options)
55
97
  if (!result) {
56
98
  throw new Error('Embedding returned no results')
57
99
  }
58
100
  return result
59
101
  }
60
102
 
61
- private async callEmbeddingApi(texts: string[]): Promise<number[][]> {
103
+ private async callEmbeddingApi(texts: string[], callerSignal?: AbortSignal): Promise<number[][]> {
104
+ callerSignal?.throwIfAborted()
105
+
106
+ // The provider owns this controller. A caller cancellation flows into it,
107
+ // while the provider's deadline never aborts the caller's controller.
108
+ const transport = new AbortController()
109
+ let rejectCallerAbort: ((reason?: unknown) => void) | undefined
110
+ const callerAbort = callerSignal
111
+ ? new Promise<never>((_resolve, reject) => {
112
+ rejectCallerAbort = reject
113
+ })
114
+ : undefined
115
+ const onCallerAbort = (): void => {
116
+ const reason = callerSignal?.reason
117
+ // Settle the public operation with the caller's exact reason before
118
+ // aborting fetch: transports commonly turn every abort into a generic
119
+ // DOMException, which would erase who stopped the run.
120
+ rejectCallerAbort?.(reason)
121
+ if (!transport.signal.aborted) transport.abort(reason)
122
+ }
123
+ callerSignal?.addEventListener('abort', onCallerAbort, { once: true })
124
+
125
+ let timer: ReturnType<typeof setTimeout> | undefined
126
+ const timeout =
127
+ this.requestTimeoutMs > 0
128
+ ? new Promise<never>((_resolve, reject) => {
129
+ timer = setTimeout(() => {
130
+ const error = new Error(
131
+ `Embedding request timed out after ${this.requestTimeoutMs}ms`,
132
+ )
133
+ error.name = 'TimeoutError'
134
+ reject(error)
135
+ if (!transport.signal.aborted) transport.abort(error)
136
+ }, this.requestTimeoutMs)
137
+ })
138
+ : undefined
139
+
140
+ const request = this.performEmbeddingRequest(texts, transport.signal)
141
+ // A custom or polyfilled fetch may ignore AbortSignal and reject later.
142
+ // Once the operation has settled, that late rejection is not allowed to
143
+ // become an unhandled process error.
144
+ request.catch(() => {})
145
+
146
+ try {
147
+ return await Promise.race([
148
+ request,
149
+ ...(callerAbort ? [callerAbort] : []),
150
+ ...(timeout ? [timeout] : []),
151
+ ])
152
+ } finally {
153
+ if (timer !== undefined) clearTimeout(timer)
154
+ callerSignal?.removeEventListener('abort', onCallerAbort)
155
+ }
156
+ }
157
+
158
+ private async performEmbeddingRequest(texts: string[], signal: AbortSignal): Promise<number[][]> {
62
159
  const response = await fetch(`${this.baseUrl}/embeddings`, {
63
160
  method: 'POST',
64
161
  headers: {
@@ -70,6 +167,7 @@ export class HttpEmbeddingProvider implements EmbeddingProvider {
70
167
  input: texts,
71
168
  dimensions: this.dimensions,
72
169
  }),
170
+ signal,
73
171
  })
74
172
 
75
173
  if (!response.ok) {
@@ -77,18 +175,48 @@ export class HttpEmbeddingProvider implements EmbeddingProvider {
77
175
  throw new Error(`Embedding API error (${response.status}): ${errorText}`)
78
176
  }
79
177
 
80
- const data = (await response.json()) as EmbeddingApiResponse
81
- return data.data.sort((a, b) => a.index - b.index).map((d) => d.embedding)
178
+ return this.validateEmbeddingResponse(await response.json(), texts.length)
82
179
  }
83
- }
84
180
 
85
- interface EmbeddingApiResponse {
86
- data: Array<{
87
- index: number
88
- embedding: number[]
89
- }>
90
- usage: {
91
- prompt_tokens: number
92
- total_tokens: number
181
+ private validateEmbeddingResponse(value: unknown, expectedCount: number): number[][] {
182
+ if (!isRecord(value) || !Array.isArray(value.data)) {
183
+ throw new Error('Embedding API response must contain a data array')
184
+ }
185
+ if (value.data.length !== expectedCount) {
186
+ throw new Error(
187
+ `Embedding API returned ${value.data.length} vectors for ${expectedCount} inputs`,
188
+ )
189
+ }
190
+
191
+ const embeddings = new Array<number[]>(expectedCount)
192
+ const seen = new Set<number>()
193
+ for (const item of value.data) {
194
+ if (!isRecord(item) || !Number.isSafeInteger(item.index)) {
195
+ throw new Error('Embedding API response contains a non-integer index')
196
+ }
197
+ const index = item.index as number
198
+ if (index < 0 || index >= expectedCount) {
199
+ throw new Error(`Embedding API response index ${index} is outside the input range`)
200
+ }
201
+ if (seen.has(index)) {
202
+ throw new Error(`Embedding API response contains duplicate index ${index}`)
203
+ }
204
+ if (
205
+ !Array.isArray(item.embedding) ||
206
+ item.embedding.length !== this.dimensions ||
207
+ !item.embedding.every(
208
+ (coordinate) => typeof coordinate === 'number' && Number.isFinite(coordinate),
209
+ )
210
+ ) {
211
+ throw new Error(
212
+ `Embedding API response index ${index} must contain ${this.dimensions} finite numbers`,
213
+ )
214
+ }
215
+
216
+ seen.add(index)
217
+ embeddings[index] = item.embedding
218
+ }
219
+
220
+ return embeddings
93
221
  }
94
222
  }
package/src/rag/index.ts CHANGED
@@ -28,7 +28,7 @@ export type {
28
28
 
29
29
  export { TextChunker, DEFAULT_CHUNKING_CONFIG } from './chunking.js'
30
30
 
31
- export { HttpEmbeddingProvider } from './embedding.js'
31
+ export { DEFAULT_EMBEDDING_REQUEST_TIMEOUT_MS, HttpEmbeddingProvider } from './embedding.js'
32
32
 
33
33
  export { InMemoryVectorStore, cosineSimilarity } from './vector-store.js'
34
34
 
@@ -6,11 +6,13 @@ import type {
6
6
  EmbeddingProvider,
7
7
  IngestionPipeline,
8
8
  IngestionResult,
9
+ RAGOperationOptions,
9
10
  TenantScope,
10
11
  VectorStore,
11
12
  } from '../types/rag/index.js'
12
13
  import { generateChunkId, generateDocumentId } from '../utils/id.js'
13
14
  import { DEFAULT_CHUNKING_CONFIG, TextChunker } from './chunking.js'
15
+ import { awaitRAGOperation } from './operation.js'
14
16
 
15
17
  export class DefaultIngestionPipeline implements IngestionPipeline {
16
18
  private readonly chunker: TextChunker
@@ -30,7 +32,9 @@ export class DefaultIngestionPipeline implements IngestionPipeline {
30
32
  metadata: DocumentMetadata,
31
33
  scope: TenantScope,
32
34
  knowledgeBaseId: KnowledgeBaseId,
35
+ options?: RAGOperationOptions,
33
36
  ): Promise<IngestionResult> {
37
+ options?.signal?.throwIfAborted()
34
38
  const startTime = Date.now()
35
39
  const documentId = generateDocumentId()
36
40
 
@@ -40,7 +44,14 @@ export class DefaultIngestionPipeline implements IngestionPipeline {
40
44
  }
41
45
 
42
46
  const texts = chunkContents.map((c) => c.content)
43
- const embeddings = await this.embeddingProvider.embed(texts)
47
+ const embeddings = options
48
+ ? await this.embeddingProvider.embed(texts, options)
49
+ : await this.embeddingProvider.embed(texts)
50
+ // A custom provider may accept the signal yet settle successfully after
51
+ // cancellation. Its cooperation is outside the kernel's control; whether
52
+ // Namzu now persists those late results is not. Recheck before the first
53
+ // state-changing store call.
54
+ options?.signal?.throwIfAborted()
44
55
 
45
56
  const now = Date.now()
46
57
  const chunks: Chunk[] = chunkContents.map((cc, i) => ({
@@ -57,7 +68,10 @@ export class DefaultIngestionPipeline implements IngestionPipeline {
57
68
  createdAt: now,
58
69
  }))
59
70
 
60
- await this.vectorStore.upsert(chunks)
71
+ const upsert = options
72
+ ? this.vectorStore.upsert(chunks, options)
73
+ : this.vectorStore.upsert(chunks)
74
+ await awaitRAGOperation(upsert, options?.signal)
61
75
 
62
76
  const totalTokens = chunks.reduce((sum, c) => sum + c.tokenCount, 0)
63
77
  return {
@@ -6,6 +6,7 @@ import type {
6
6
  IngestionResult,
7
7
  KnowledgeBase,
8
8
  KnowledgeBaseConfig,
9
+ RAGOperationOptions,
9
10
  RetrievalConfig,
10
11
  RetrievalQuery,
11
12
  RetrievalResult,
@@ -54,16 +55,24 @@ export class DefaultKnowledgeBase implements KnowledgeBase {
54
55
  this.retriever = new DefaultRetriever(vectorStore, embeddingProvider, retrievalConfig)
55
56
  }
56
57
 
57
- async ingest(content: string, metadata: DocumentMetadata = {}): Promise<IngestionResult> {
58
- return this.ingestion.ingest(content, metadata, this.scope, this.id)
58
+ async ingest(
59
+ content: string,
60
+ metadata: DocumentMetadata = {},
61
+ options?: RAGOperationOptions,
62
+ ): Promise<IngestionResult> {
63
+ return options
64
+ ? this.ingestion.ingest(content, metadata, this.scope, this.id, options)
65
+ : this.ingestion.ingest(content, metadata, this.scope, this.id)
59
66
  }
60
67
 
61
68
  async remove(documentId: DocumentId): Promise<void> {
62
69
  return this.ingestion.remove(documentId)
63
70
  }
64
71
 
65
- async query(query: RetrievalQuery): Promise<RetrievalResult> {
66
- return this.retriever.retrieve(query, this.scope, this.id)
72
+ async query(query: RetrievalQuery, options?: RAGOperationOptions): Promise<RetrievalResult> {
73
+ return options
74
+ ? this.retriever.retrieve(query, this.scope, this.id, options)
75
+ : this.retriever.retrieve(query, this.scope, this.id)
67
76
  }
68
77
 
69
78
  async clear(): Promise<void> {
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Bound a host-supplied RAG promise to operation cancellation.
3
+ *
4
+ * The signal is also passed to cooperative providers. This race is the
5
+ * kernel-owned half of the contract: a custom store that ignores its signal
6
+ * may continue its own work, but it cannot keep the public operation pending
7
+ * or make a late result advance the caller's pipeline.
8
+ */
9
+ export async function awaitRAGOperation<T>(
10
+ operation: Promise<T>,
11
+ signal?: AbortSignal,
12
+ ): Promise<T> {
13
+ if (!signal) return operation
14
+ signal.throwIfAborted()
15
+
16
+ let rejectAbort: ((reason?: unknown) => void) | undefined
17
+ const aborted = new Promise<never>((_resolve, reject) => {
18
+ rejectAbort = reject
19
+ })
20
+ const onAbort = (): void => rejectAbort?.(signal.reason)
21
+ signal.addEventListener('abort', onAbort, { once: true })
22
+
23
+ try {
24
+ return await Promise.race([operation, aborted])
25
+ } finally {
26
+ signal.removeEventListener('abort', onAbort)
27
+ }
28
+ }
@@ -22,7 +22,7 @@ export function createRAGTool(config: RAGToolConfig) {
22
22
  destructive: false,
23
23
  concurrencySafe: true,
24
24
 
25
- async execute(input) {
25
+ async execute(input, toolContext) {
26
26
  const kbId =
27
27
  (input.knowledge_base_id === undefined
28
28
  ? undefined
@@ -39,10 +39,13 @@ export function createRAGTool(config: RAGToolConfig) {
39
39
  }
40
40
  }
41
41
 
42
- const result = await kb.query({
42
+ const query = {
43
43
  text: input.query,
44
44
  config: { topK: input.top_k ?? config.topK ?? 5 },
45
- })
45
+ }
46
+ const result = toolContext.abortSignal
47
+ ? await kb.query(query, { signal: toolContext.abortSignal })
48
+ : await kb.query(query)
46
49
 
47
50
  if (result.chunks.length === 0) {
48
51
  return {
@@ -2,6 +2,7 @@ import { DEFAULT_RETRIEVAL_CONFIG } from '../constants/rag/index.js'
2
2
  import type { KnowledgeBaseId } from '../types/ids/index.js'
3
3
  import type {
4
4
  EmbeddingProvider,
5
+ RAGOperationOptions,
5
6
  RetrievalConfig,
6
7
  RetrievalQuery,
7
8
  RetrievalResult,
@@ -10,6 +11,7 @@ import type {
10
11
  VectorSearchResult,
11
12
  VectorStore,
12
13
  } from '../types/rag/index.js'
14
+ import { awaitRAGOperation } from './operation.js'
13
15
 
14
16
  export { DEFAULT_RETRIEVAL_CONFIG }
15
17
 
@@ -24,7 +26,9 @@ export class DefaultRetriever implements Retriever {
24
26
  query: RetrievalQuery,
25
27
  scope: TenantScope,
26
28
  knowledgeBaseId?: KnowledgeBaseId,
29
+ options?: RAGOperationOptions,
27
30
  ): Promise<RetrievalResult> {
31
+ options?.signal?.throwIfAborted()
28
32
  const startTime = Date.now()
29
33
  const effectiveConfig = { ...this.config, ...query.config }
30
34
  const expandedQuery = this.expandQuery(query)
@@ -33,13 +37,31 @@ export class DefaultRetriever implements Retriever {
33
37
 
34
38
  switch (effectiveConfig.mode) {
35
39
  case 'vector':
36
- chunks = await this.vectorSearch(expandedQuery, scope, knowledgeBaseId, effectiveConfig)
40
+ chunks = await this.vectorSearch(
41
+ expandedQuery,
42
+ scope,
43
+ knowledgeBaseId,
44
+ effectiveConfig,
45
+ options,
46
+ )
37
47
  break
38
48
  case 'keyword':
39
- chunks = await this.keywordSearch(expandedQuery, scope, knowledgeBaseId, effectiveConfig)
49
+ chunks = await this.keywordSearch(
50
+ expandedQuery,
51
+ scope,
52
+ knowledgeBaseId,
53
+ effectiveConfig,
54
+ options,
55
+ )
40
56
  break
41
57
  case 'hybrid':
42
- chunks = await this.hybridSearch(expandedQuery, scope, knowledgeBaseId, effectiveConfig)
58
+ chunks = await this.hybridSearch(
59
+ expandedQuery,
60
+ scope,
61
+ knowledgeBaseId,
62
+ effectiveConfig,
63
+ options,
64
+ )
43
65
  break
44
66
  default: {
45
67
  const _exhaustive: never = effectiveConfig.mode
@@ -70,16 +92,24 @@ export class DefaultRetriever implements Retriever {
70
92
  scope: TenantScope,
71
93
  knowledgeBaseId: KnowledgeBaseId | undefined,
72
94
  config: RetrievalConfig,
95
+ options?: RAGOperationOptions,
73
96
  ): Promise<VectorSearchResult[]> {
74
- const embedding = await this.embeddingProvider.embedQuery(query)
75
- return this.vectorStore.search({
97
+ const embedding = options
98
+ ? await this.embeddingProvider.embedQuery(query, options)
99
+ : await this.embeddingProvider.embedQuery(query)
100
+ options?.signal?.throwIfAborted()
101
+ const storeQuery = {
76
102
  embedding,
77
103
  topK: config.topK,
78
104
  tenantId: scope.tenantId,
79
105
  ...(scope.namespace !== undefined ? { namespace: scope.namespace } : {}),
80
106
  knowledgeBaseId,
81
107
  minScore: config.minScore,
82
- })
108
+ }
109
+ const search = options
110
+ ? this.vectorStore.search(storeQuery, options)
111
+ : this.vectorStore.search(storeQuery)
112
+ return awaitRAGOperation(search, options?.signal)
83
113
  }
84
114
 
85
115
  private async keywordSearch(
@@ -87,16 +117,24 @@ export class DefaultRetriever implements Retriever {
87
117
  scope: TenantScope,
88
118
  knowledgeBaseId: KnowledgeBaseId | undefined,
89
119
  config: RetrievalConfig,
120
+ options?: RAGOperationOptions,
90
121
  ): Promise<VectorSearchResult[]> {
91
- const embedding = await this.embeddingProvider.embedQuery(query)
92
- const vectorResults = await this.vectorStore.search({
122
+ const embedding = options
123
+ ? await this.embeddingProvider.embedQuery(query, options)
124
+ : await this.embeddingProvider.embedQuery(query)
125
+ options?.signal?.throwIfAborted()
126
+ const storeQuery = {
93
127
  embedding,
94
128
  topK: config.topK * 2,
95
129
  tenantId: scope.tenantId,
96
130
  ...(scope.namespace !== undefined ? { namespace: scope.namespace } : {}),
97
131
  knowledgeBaseId,
98
132
  minScore: 0,
99
- })
133
+ }
134
+ const search = options
135
+ ? this.vectorStore.search(storeQuery, options)
136
+ : this.vectorStore.search(storeQuery)
137
+ const vectorResults = await awaitRAGOperation(search, options?.signal)
100
138
 
101
139
  const queryTerms = this.tokenize(query)
102
140
 
@@ -123,12 +161,25 @@ export class DefaultRetriever implements Retriever {
123
161
  scope: TenantScope,
124
162
  knowledgeBaseId: KnowledgeBaseId | undefined,
125
163
  config: RetrievalConfig,
164
+ options?: RAGOperationOptions,
126
165
  ): Promise<VectorSearchResult[]> {
127
166
  const alpha = config.hybridAlpha ?? 0.7
128
167
 
129
168
  const [vectorResults, keywordResults] = await Promise.all([
130
- this.vectorSearch(query, scope, knowledgeBaseId, { ...config, topK: config.topK * 2 }),
131
- this.keywordSearch(query, scope, knowledgeBaseId, { ...config, topK: config.topK * 2 }),
169
+ this.vectorSearch(
170
+ query,
171
+ scope,
172
+ knowledgeBaseId,
173
+ { ...config, topK: config.topK * 2 },
174
+ options,
175
+ ),
176
+ this.keywordSearch(
177
+ query,
178
+ scope,
179
+ knowledgeBaseId,
180
+ { ...config, topK: config.topK * 2 },
181
+ options,
182
+ ),
132
183
  ])
133
184
 
134
185
  const scoreMap = new Map<string, { chunk: VectorSearchResult['chunk']; score: number }>()
@@ -1,6 +1,7 @@
1
1
  import type { ChunkId, DocumentId, KnowledgeBaseId, TenantId } from '../types/ids/index.js'
2
2
  import type {
3
3
  Chunk,
4
+ RAGOperationOptions,
4
5
  VectorSearchResult,
5
6
  VectorStore,
6
7
  VectorStoreQuery,
@@ -9,13 +10,18 @@ import type {
9
10
  export class InMemoryVectorStore implements VectorStore {
10
11
  private chunks: Map<ChunkId, Chunk> = new Map()
11
12
 
12
- async upsert(chunks: Chunk[]): Promise<void> {
13
+ async upsert(chunks: Chunk[], options?: RAGOperationOptions): Promise<void> {
14
+ options?.signal?.throwIfAborted()
13
15
  for (const chunk of chunks) {
14
16
  this.chunks.set(chunk.id, chunk)
15
17
  }
16
18
  }
17
19
 
18
- async search(query: VectorStoreQuery): Promise<VectorSearchResult[]> {
20
+ async search(
21
+ query: VectorStoreQuery,
22
+ options?: RAGOperationOptions,
23
+ ): Promise<VectorSearchResult[]> {
24
+ options?.signal?.throwIfAborted()
19
25
  const candidates: VectorSearchResult[] = []
20
26
 
21
27
  for (const chunk of this.chunks.values()) {