@namzu/sdk 30.2.0 → 31.1.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 (718) hide show
  1. package/CHANGELOG.md +562 -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 +79 -13
  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/index.d.ts +1 -1
  496. package/dist/types/provider/index.d.ts.map +1 -1
  497. package/dist/types/provider/interface.d.ts +18 -7
  498. package/dist/types/provider/interface.d.ts.map +1 -1
  499. package/dist/types/provider/model.d.ts +12 -0
  500. package/dist/types/provider/model.d.ts.map +1 -1
  501. package/dist/types/provider/stream.d.ts +6 -0
  502. package/dist/types/provider/stream.d.ts.map +1 -1
  503. package/dist/types/rag/embedding.d.ts +15 -2
  504. package/dist/types/rag/embedding.d.ts.map +1 -1
  505. package/dist/types/rag/ingestion.d.ts +2 -2
  506. package/dist/types/rag/ingestion.d.ts.map +1 -1
  507. package/dist/types/rag/knowledge-base.d.ts +3 -3
  508. package/dist/types/rag/knowledge-base.d.ts.map +1 -1
  509. package/dist/types/rag/retrieval.d.ts +2 -2
  510. package/dist/types/rag/retrieval.d.ts.map +1 -1
  511. package/dist/types/rag/scope.d.ts +4 -0
  512. package/dist/types/rag/scope.d.ts.map +1 -1
  513. package/dist/types/rag/vector.d.ts +5 -2
  514. package/dist/types/rag/vector.d.ts.map +1 -1
  515. package/dist/types/run/config.d.ts +20 -0
  516. package/dist/types/run/config.d.ts.map +1 -1
  517. package/dist/types/run/events.d.ts +25 -1
  518. package/dist/types/run/events.d.ts.map +1 -1
  519. package/dist/types/run/events.js.map +1 -1
  520. package/dist/types/run/metadata.d.ts +2 -0
  521. package/dist/types/run/metadata.d.ts.map +1 -1
  522. package/dist/types/run/step.d.ts +2 -6
  523. package/dist/types/run/step.d.ts.map +1 -1
  524. package/dist/types/run/step.js.map +1 -1
  525. package/dist/types/run/store.d.ts +55 -2
  526. package/dist/types/run/store.d.ts.map +1 -1
  527. package/dist/types/sandbox/index.d.ts +47 -6
  528. package/dist/types/sandbox/index.d.ts.map +1 -1
  529. package/dist/types/sandbox/index.js +23 -10
  530. package/dist/types/sandbox/index.js.map +1 -1
  531. package/dist/types/session/store.d.ts +13 -0
  532. package/dist/types/session/store.d.ts.map +1 -1
  533. package/dist/types/tool/index.d.ts +33 -11
  534. package/dist/types/tool/index.d.ts.map +1 -1
  535. package/dist/types/tool/index.js.map +1 -1
  536. package/dist/types/topic/entity.d.ts +3 -4
  537. package/dist/types/topic/entity.d.ts.map +1 -1
  538. package/dist/types/topic/store.d.ts +3 -3
  539. package/dist/utils/id.d.ts +3 -1
  540. package/dist/utils/id.d.ts.map +1 -1
  541. package/dist/utils/id.js +4 -0
  542. package/dist/utils/id.js.map +1 -1
  543. package/dist/utils/process-environment.d.ts +26 -0
  544. package/dist/utils/process-environment.d.ts.map +1 -0
  545. package/dist/utils/process-environment.js +78 -0
  546. package/dist/utils/process-environment.js.map +1 -0
  547. package/dist/vault/InMemoryCredentialVault.d.ts +2 -0
  548. package/dist/vault/InMemoryCredentialVault.d.ts.map +1 -1
  549. package/dist/vault/InMemoryCredentialVault.js +24 -4
  550. package/dist/vault/InMemoryCredentialVault.js.map +1 -1
  551. package/dist/vault/instrumentation.d.ts.map +1 -1
  552. package/dist/vault/instrumentation.js +15 -0
  553. package/dist/vault/instrumentation.js.map +1 -1
  554. package/package.json +1 -1
  555. package/src/advisory/executor.ts +4 -1
  556. package/src/agents/ReactiveAgent.ts +12 -0
  557. package/src/agents/RouterAgent.ts +25 -3
  558. package/src/agents/SupervisorAgent.ts +33 -11
  559. package/src/agents/runAgent.ts +38 -2
  560. package/src/authorization/command-line.ts +390 -0
  561. package/src/authorization/rules.ts +22 -1
  562. package/src/bridge/a2a/client.ts +384 -97
  563. package/src/bridge/a2a/mapper.ts +5 -0
  564. package/src/bridge/acp/server.ts +184 -42
  565. package/src/bridge/mcp/connector/adapter.ts +28 -20
  566. package/src/bridge/sse/mapper.ts +3 -0
  567. package/src/compaction/dangling.ts +203 -38
  568. package/src/compaction/index.ts +9 -2
  569. package/src/compaction/manual.ts +125 -18
  570. package/src/compaction/plan.ts +42 -11
  571. package/src/compaction/retention.ts +23 -8
  572. package/src/compaction/summary.ts +4 -4
  573. package/src/compaction/verifier.ts +66 -0
  574. package/src/connector/BaseConnector.ts +19 -4
  575. package/src/connector/builtins/http.ts +236 -46
  576. package/src/connector/builtins/webhook.ts +207 -47
  577. package/src/connector/execution-contract.ts +27 -0
  578. package/src/connector/http-operation.ts +238 -0
  579. package/src/connector/mcp/adapter.ts +8 -3
  580. package/src/connector/mcp/client.ts +207 -58
  581. package/src/connector/mcp/http-sse.ts +91 -23
  582. package/src/connector/mcp/prompt-adapter.ts +8 -2
  583. package/src/connector/mcp/stdio.ts +21 -46
  584. package/src/connector/mcp/streamable-http.ts +86 -22
  585. package/src/connector/tools/adapter.ts +23 -14
  586. package/src/connector/tools/definitions.ts +5 -2
  587. package/src/connector/tools/result.ts +21 -0
  588. package/src/connector/web/guarded-fetch.ts +188 -48
  589. package/src/constants/sandbox/index.ts +3 -2
  590. package/src/contracts/api.ts +2 -0
  591. package/src/contracts/schemas.ts +7 -0
  592. package/src/directory/derive-supervisor.ts +8 -0
  593. package/src/directory/derive.ts +8 -0
  594. package/src/directory/load.ts +2 -0
  595. package/src/directory/types.ts +4 -0
  596. package/src/eval/experiment.ts +160 -111
  597. package/src/eval/judge.ts +13 -2
  598. package/src/eval/types.ts +7 -1
  599. package/src/manager/agent/lifecycle.ts +28 -12
  600. package/src/manager/connector/environment.ts +3 -1
  601. package/src/manager/connector/lifecycle.ts +364 -24
  602. package/src/manager/connector/tenant.ts +56 -23
  603. package/src/manager/goal/activation.ts +52 -0
  604. package/src/manager/index.ts +10 -2
  605. package/src/manager/run/persistence.ts +6 -1
  606. package/src/manager/topic/dependency.ts +39 -0
  607. package/src/manager/topic/lifecycle.ts +19 -31
  608. package/src/plugin/index.ts +1 -0
  609. package/src/plugin/lifecycle.ts +180 -39
  610. package/src/plugin/loader.ts +70 -13
  611. package/src/provider/collect-chat-completion.ts +3 -0
  612. package/src/provider/fallback.ts +79 -11
  613. package/src/provider/idle-timeout.ts +143 -17
  614. package/src/provider/index.ts +2 -0
  615. package/src/provider/instrumentation.ts +1 -0
  616. package/src/provider/retry.ts +16 -1
  617. package/src/public-runtime.ts +190 -32
  618. package/src/public-tools.ts +5 -0
  619. package/src/public-types.ts +85 -11
  620. package/src/rag/embedding.ts +147 -19
  621. package/src/rag/index.ts +1 -1
  622. package/src/rag/ingestion.ts +16 -2
  623. package/src/rag/knowledge-base.ts +13 -4
  624. package/src/rag/operation.ts +28 -0
  625. package/src/rag/rag-tool.ts +6 -3
  626. package/src/rag/retriever.ts +62 -11
  627. package/src/rag/vector-store.ts +8 -2
  628. package/src/registry/command/kernel-commands.ts +223 -4
  629. package/src/run/reporter.ts +10 -0
  630. package/src/run-query/index.ts +84 -15
  631. package/src/runtime/query/context.ts +13 -3
  632. package/src/runtime/query/executor.ts +90 -17
  633. package/src/runtime/query/guard.ts +12 -0
  634. package/src/runtime/query/index.ts +652 -103
  635. package/src/runtime/query/iteration/index.ts +89 -13
  636. package/src/runtime/query/iteration/phases/compaction.ts +120 -55
  637. package/src/runtime/query/iteration/phases/context.ts +4 -0
  638. package/src/runtime/query/iteration/phases/tool-review.ts +28 -0
  639. package/src/runtime/query/iteration/stream-turn.ts +3 -0
  640. package/src/runtime/query/project-instructions.ts +212 -0
  641. package/src/runtime/query/request-rich-content.ts +153 -0
  642. package/src/runtime/query/result.ts +12 -1
  643. package/src/runtime/query/resume-pending.ts +20 -18
  644. package/src/runtime/query/resume-run.ts +52 -8
  645. package/src/runtime/query/run-state.ts +11 -1
  646. package/src/runtime/query/sandbox-lifecycle.ts +210 -0
  647. package/src/sandbox/isolation.ts +9 -0
  648. package/src/sandbox/provider/local.ts +255 -90
  649. package/src/sandbox/terminal.ts +13 -5
  650. package/src/session/errors.ts +68 -42
  651. package/src/session/handoff/broadcast.ts +20 -14
  652. package/src/session/handoff/single.ts +14 -13
  653. package/src/store/attachment/index.ts +65 -3
  654. package/src/store/feedback/conformance.ts +39 -0
  655. package/src/store/feedback/disk.ts +128 -82
  656. package/src/store/goal/index.ts +594 -0
  657. package/src/store/index.ts +1 -1
  658. package/src/store/kv/revision-record-store.ts +346 -0
  659. package/src/store/memory/disk.ts +288 -113
  660. package/src/store/run/disk.ts +96 -5
  661. package/src/store/run/memory.ts +22 -2
  662. package/src/store/session/disk.ts +93 -6
  663. package/src/store/session/memory.ts +22 -0
  664. package/src/store/topic/memory.ts +4 -5
  665. package/src/store/topic/objective.ts +215 -100
  666. package/src/store/topic/state.ts +100 -63
  667. package/src/tools/builtins/bash.ts +21 -0
  668. package/src/tools/builtins/computer-use.ts +9 -1
  669. package/src/tools/builtins/content-fingerprint.ts +9 -12
  670. package/src/tools/builtins/edit.ts +190 -27
  671. package/src/tools/builtins/write-file.ts +55 -19
  672. package/src/tools/command-arguments.ts +54 -0
  673. package/src/tools/coordinator/index.ts +4 -1
  674. package/src/tools/defineTool.ts +11 -0
  675. package/src/tools/env-scrub.ts +7 -5
  676. package/src/tools/goal/index.ts +129 -0
  677. package/src/tools/memory/index.ts +26 -3
  678. package/src/tools/memory/search.ts +20 -3
  679. package/src/types/agent/base.ts +12 -3
  680. package/src/types/agent/factory.ts +2 -0
  681. package/src/types/agent/reactive.ts +2 -0
  682. package/src/types/agent/supervisor.ts +6 -0
  683. package/src/types/agent/task.ts +6 -2
  684. package/src/types/connector/core.ts +13 -8
  685. package/src/types/connector/definition.ts +54 -20
  686. package/src/types/connector/http.ts +7 -0
  687. package/src/types/connector/mcp.ts +27 -6
  688. package/src/types/connector/tenant.ts +21 -7
  689. package/src/types/connector/webhook.ts +7 -0
  690. package/src/types/goal/index.ts +50 -0
  691. package/src/types/ids/index.ts +2 -0
  692. package/src/types/message/index.ts +147 -12
  693. package/src/types/plugin/index.ts +7 -5
  694. package/src/types/provider/chat.ts +35 -4
  695. package/src/types/provider/index.ts +1 -1
  696. package/src/types/provider/interface.ts +22 -7
  697. package/src/types/provider/model.ts +13 -0
  698. package/src/types/provider/stream.ts +6 -0
  699. package/src/types/rag/embedding.ts +16 -2
  700. package/src/types/rag/ingestion.ts +2 -1
  701. package/src/types/rag/knowledge-base.ts +7 -3
  702. package/src/types/rag/retrieval.ts +2 -1
  703. package/src/types/rag/scope.ts +5 -0
  704. package/src/types/rag/vector.ts +5 -2
  705. package/src/types/run/config.ts +20 -0
  706. package/src/types/run/events.ts +28 -3
  707. package/src/types/run/metadata.ts +2 -0
  708. package/src/types/run/step.ts +2 -7
  709. package/src/types/run/store.ts +60 -2
  710. package/src/types/sandbox/index.ts +57 -14
  711. package/src/types/session/store.ts +18 -0
  712. package/src/types/tool/index.ts +33 -11
  713. package/src/types/topic/entity.ts +3 -4
  714. package/src/types/topic/store.ts +3 -3
  715. package/src/utils/id.ts +6 -0
  716. package/src/utils/process-environment.ts +101 -0
  717. package/src/vault/InMemoryCredentialVault.ts +29 -4
  718. package/src/vault/instrumentation.ts +24 -0
@@ -16,10 +16,10 @@ export const COMPACTION_HEADER =
16
16
  /**
17
17
  * Identity check for a prior compaction summary in the leading floor.
18
18
  *
19
- * Used to REPLACE one in place, so at most one `[COMPACTED CONTEXT]` block
20
- * ever lives in the never-trimmed floor, and by the checkpoint-restore path
21
- * to PRESERVE the summary across a resume it is the only surviving record
22
- * of the older history a run compacted away.
19
+ * Used to replace a summary produced by the SAME run in place, and by restore
20
+ * paths to preserve summaries whose state was produced elsewhere. A retained
21
+ * summary is deliberately not replaceable: it is the only surviving record
22
+ * of an opaque older span.
23
23
  */
24
24
  export function isCompactionMessage(content: string | null | undefined): boolean {
25
25
  return typeof content === 'string' && content.startsWith(COMPACTION_HEADER)
@@ -1,5 +1,6 @@
1
1
  import type { CompactionConfig } from '../config/runtime.js'
2
2
  import { collectChatCompletion } from '../provider/collect-chat-completion.js'
3
+ import { resolveStreamIdleTimeoutMs, withStreamIdleTimeout } from '../provider/idle-timeout.js'
3
4
  import type { TokenUsage } from '../types/common/index.js'
4
5
  import type { Message } from '../types/message/index.js'
5
6
  import type { LLMProvider } from '../types/provider/interface.js'
@@ -54,6 +55,18 @@ function truncateMessages(messages: Message[], budget: number): string {
54
55
  */
55
56
  export type UsageSink = (usage: TokenUsage) => void
56
57
 
58
+ /** Cancellation and stream-liveness policy for a compaction verifier call. */
59
+ export interface CompactionVerificationOptions {
60
+ /** Stop before provider work starts, or close an in-flight verifier transport. */
61
+ readonly signal?: AbortSignal
62
+ /**
63
+ * Milliseconds without a verifier chunk before the provider stream is
64
+ * treated as stalled. Defaults to the SDK's finite shared bound. Set `0`
65
+ * only for explicit unbounded compatibility.
66
+ */
67
+ readonly streamIdleTimeoutMs?: number
68
+ }
69
+
57
70
  export async function buildVerifiedSummary(
58
71
  manager: WorkingStateManager,
59
72
  olderMessages: Message[],
@@ -68,6 +81,58 @@ export async function buildVerifiedSummary(
68
81
  * failure surfaced as compaction killing the run it exists to save.
69
82
  */
70
83
  model?: string,
84
+ options: CompactionVerificationOptions = {},
85
+ ): Promise<string> {
86
+ options.signal?.throwIfAborted()
87
+ const providerWithIdleBound = withStreamIdleTimeout(provider, {
88
+ idleTimeoutMs: resolveStreamIdleTimeoutMs(options.streamIdleTimeoutMs),
89
+ })
90
+ return await buildVerifiedSummaryWithProvider(
91
+ manager,
92
+ olderMessages,
93
+ providerWithIdleBound,
94
+ config,
95
+ onUsage,
96
+ model,
97
+ options.signal,
98
+ )
99
+ }
100
+
101
+ /**
102
+ * Query-only seam for a provider whose idle/retry/fallback order was already
103
+ * composed at run admission. Wrapping that chain again would put an idle
104
+ * timer around retry backoff and misclassify a healthy recovery pause as a
105
+ * stalled stream. This symbol is intentionally absent from the package barrel.
106
+ */
107
+ export async function buildVerifiedSummaryWithBoundedProvider(
108
+ manager: WorkingStateManager,
109
+ olderMessages: Message[],
110
+ provider: LLMProvider,
111
+ config: CompactionConfig,
112
+ onUsage?: UsageSink,
113
+ model?: string,
114
+ signal?: AbortSignal,
115
+ ): Promise<string> {
116
+ signal?.throwIfAborted()
117
+ return await buildVerifiedSummaryWithProvider(
118
+ manager,
119
+ olderMessages,
120
+ provider,
121
+ config,
122
+ onUsage,
123
+ model,
124
+ signal,
125
+ )
126
+ }
127
+
128
+ async function buildVerifiedSummaryWithProvider(
129
+ manager: WorkingStateManager,
130
+ olderMessages: Message[],
131
+ provider: LLMProvider,
132
+ config: CompactionConfig,
133
+ onUsage?: UsageSink,
134
+ model?: string,
135
+ signal?: AbortSignal,
71
136
  ): Promise<string> {
72
137
  const serialized = serializeState(manager.getState())
73
138
 
@@ -102,6 +167,7 @@ export async function buildVerifiedSummary(
102
167
  messages: verificationMessages,
103
168
  maxTokens: config.llmVerificationMaxTokens,
104
169
  temperature: 0,
170
+ ...(signal ? { signal } : {}),
105
171
  }),
106
172
  )
107
173
 
@@ -2,21 +2,26 @@ import type { z } from 'zod'
2
2
  import { NAMZU } from '../constants/telemetry/index.js'
3
3
  import type {
4
4
  AuthConfig,
5
+ AuthType,
5
6
  ConnectionType,
6
7
  ConnectorDefinition,
7
8
  ConnectorExecuteResult,
8
9
  ConnectorLifecycle,
9
10
  ConnectorMethod,
11
+ ConnectorOperationOptions,
10
12
  } from '../types/connector/index.js'
11
13
  import type { ConnectorId } from '../types/ids/index.js'
12
14
  import { SCOPE_ATTRIBUTE } from '../utils/log/types.js'
13
15
  import { type Logger, resolveLogger } from '../utils/logger.js'
16
+ import { hasManagerValidatedInput } from './execution-contract.js'
14
17
 
15
18
  export abstract class BaseConnector<TConfig = unknown> implements ConnectorLifecycle<TConfig> {
16
19
  abstract readonly id: ConnectorId
17
20
  abstract readonly name: string
18
21
  abstract readonly description: string
19
22
  abstract readonly connectionType: ConnectionType
23
+ /** Omit only when the connector intentionally accepts every auth scheme. */
24
+ readonly supportedAuth?: readonly AuthType[]
20
25
  abstract readonly configSchema: z.ZodType<TConfig, z.ZodTypeDef, unknown>
21
26
  abstract readonly methods: ConnectorMethod[]
22
27
 
@@ -33,8 +38,12 @@ export abstract class BaseConnector<TConfig = unknown> implements ConnectorLifec
33
38
 
34
39
  abstract connect(config: TConfig, auth?: AuthConfig): Promise<void>
35
40
  abstract disconnect(): Promise<void>
36
- abstract healthCheck(): Promise<boolean>
37
- abstract execute(method: string, input: unknown): Promise<ConnectorExecuteResult>
41
+ abstract healthCheck(options?: ConnectorOperationOptions): Promise<boolean>
42
+ abstract execute(
43
+ method: string,
44
+ input: unknown,
45
+ options?: ConnectorOperationOptions,
46
+ ): Promise<ConnectorExecuteResult>
38
47
 
39
48
  toDefinition(): ConnectorDefinition<TConfig> {
40
49
  return {
@@ -42,6 +51,7 @@ export abstract class BaseConnector<TConfig = unknown> implements ConnectorLifec
42
51
  name: this.name,
43
52
  description: this.description,
44
53
  connectionType: this.connectionType,
54
+ ...(this.supportedAuth ? { supportedAuth: [...this.supportedAuth] } : {}),
45
55
  configSchema: this.configSchema,
46
56
  methods: this.methods,
47
57
  }
@@ -62,8 +72,13 @@ export abstract class BaseConnector<TConfig = unknown> implements ConnectorLifec
62
72
  return method
63
73
  }
64
74
 
65
- protected validateInput(method: ConnectorMethod, input: unknown): unknown {
66
- const result = method.inputSchema.safeParse(input)
75
+ protected async validateInput(
76
+ method: ConnectorMethod,
77
+ input: unknown,
78
+ options?: ConnectorOperationOptions,
79
+ ): Promise<unknown> {
80
+ if (hasManagerValidatedInput(options)) return input
81
+ const result = await method.inputSchema.safeParseAsync(input)
67
82
  if (!result.success) {
68
83
  const errors = result.error.issues.map((i) => `${i.path.join('.')}: ${i.message}`).join('; ')
69
84
  throw new Error(`Invalid input for method "${method.name}": ${errors}`)
@@ -1,20 +1,52 @@
1
1
  import { z } from 'zod'
2
2
  import type {
3
3
  AuthConfig,
4
+ AuthType,
4
5
  ConnectionType,
5
6
  ConnectorExecuteResult,
7
+ ConnectorExecutionMetadata,
6
8
  ConnectorMethod,
9
+ ConnectorOperationOptions,
7
10
  HttpConnectorConfig,
11
+ HttpMethod,
8
12
  HttpRequestInput,
9
13
  HttpResponseOutput,
10
14
  } from '../../types/connector/index.js'
11
15
  import { asConnectorId } from '../../utils/id.js'
12
16
  import { BaseConnector } from '../BaseConnector.js'
17
+ import {
18
+ CONNECTOR_HEALTH_TIMEOUT_MS,
19
+ ConnectorHttpOperation,
20
+ DEFAULT_CONNECTOR_MAX_RESPONSE_BYTES,
21
+ DEFAULT_CONNECTOR_REQUEST_TIMEOUT_MS,
22
+ readConnectorResponseBody,
23
+ requireHttpUrl,
24
+ requireSafeConnectorInputHeaders,
25
+ requireSameOrigin,
26
+ validateConnectorMaxResponseBytes,
27
+ validateConnectorTimeoutMs,
28
+ } from '../http-operation.js'
13
29
 
14
30
  const HttpConnectorConfigSchema = z.object({
15
- baseUrl: z.string().url(),
31
+ baseUrl: z
32
+ .string()
33
+ .url()
34
+ .refine((value) => /^https?:/i.test(value), 'baseUrl must use http: or https:'),
16
35
  defaultHeaders: z.record(z.string()).optional(),
17
- timeoutMs: z.number().positive().optional().default(30_000),
36
+ maxResponseBytes: z
37
+ .number()
38
+ .int()
39
+ .positive()
40
+ .max(2_147_483_647)
41
+ .optional()
42
+ .default(DEFAULT_CONNECTOR_MAX_RESPONSE_BYTES),
43
+ timeoutMs: z
44
+ .number()
45
+ .int()
46
+ .positive()
47
+ .max(2_147_483_647)
48
+ .optional()
49
+ .default(DEFAULT_CONNECTOR_REQUEST_TIMEOUT_MS),
18
50
  })
19
51
 
20
52
  const HttpRequestInputSchema = z.object({
@@ -53,6 +85,14 @@ export class HttpConnector extends BaseConnector<HttpConnectorConfig> {
53
85
  readonly name = 'HTTP Connector'
54
86
  readonly description = 'Generic HTTP/REST API connector for making HTTP requests'
55
87
  readonly connectionType: ConnectionType = 'http'
88
+ override readonly supportedAuth: readonly AuthType[] = [
89
+ 'none',
90
+ 'api_key',
91
+ 'bearer',
92
+ 'basic',
93
+ 'oauth2',
94
+ 'custom',
95
+ ]
56
96
  readonly configSchema = HttpConnectorConfigSchema
57
97
  readonly methods: ConnectorMethod[] = [
58
98
  {
@@ -63,66 +103,95 @@ export class HttpConnector extends BaseConnector<HttpConnectorConfig> {
63
103
  ]
64
104
 
65
105
  private baseUrl = ''
106
+ private baseOrigin = ''
66
107
  private defaultHeaders: Record<string, string> = {}
67
- private timeoutMs = 30_000
108
+ private timeoutMs = DEFAULT_CONNECTOR_REQUEST_TIMEOUT_MS
109
+ private maxResponseBytes = DEFAULT_CONNECTOR_MAX_RESPONSE_BYTES
68
110
 
69
111
  async connect(config: HttpConnectorConfig, auth?: AuthConfig): Promise<void> {
70
- this.config = config
112
+ const validated = HttpConnectorConfigSchema.parse(config)
113
+ const baseUrl = stripTrailingSlashes(validated.baseUrl)
114
+ const parsedBase = requireHttpUrl(baseUrl, 'HttpConnector baseUrl')
115
+ this.config = validated
71
116
  this.auth = auth
72
- this.baseUrl = stripTrailingSlashes(config.baseUrl)
73
- this.defaultHeaders = config.defaultHeaders ?? {}
74
- this.timeoutMs = config.timeoutMs ?? 30_000
117
+ this.baseUrl = baseUrl
118
+ this.baseOrigin = parsedBase.origin
119
+ this.defaultHeaders = { ...(validated.defaultHeaders ?? {}) }
120
+ this.timeoutMs = validateConnectorTimeoutMs(validated.timeoutMs, 'HttpConnector timeoutMs')
121
+ this.maxResponseBytes = validateConnectorMaxResponseBytes(
122
+ validated.maxResponseBytes,
123
+ 'HttpConnector maxResponseBytes',
124
+ )
75
125
 
76
126
  if (auth) {
77
127
  Object.assign(this.defaultHeaders, this.resolveAuthHeaders(auth))
78
128
  }
79
129
 
80
- this.log.info('HTTP connector connected', { 'namzu.connector.base_url': this.baseUrl })
130
+ this.log.info('HTTP connector connected', {
131
+ 'namzu.connector.base_url': this.baseUrl,
132
+ })
81
133
  }
82
134
 
83
135
  async disconnect(): Promise<void> {
84
136
  this.config = null
85
137
  this.auth = undefined
86
138
  this.baseUrl = ''
139
+ this.baseOrigin = ''
87
140
  this.defaultHeaders = {}
88
141
  this.log.info('HTTP connector disconnected')
89
142
  }
90
143
 
91
- async healthCheck(): Promise<boolean> {
144
+ async healthCheck(options?: ConnectorOperationOptions): Promise<boolean> {
92
145
  if (!this.baseUrl) return false
146
+ let operation: ConnectorHttpOperation | undefined
93
147
  try {
94
- const controller = new AbortController()
95
- const timeout = setTimeout(() => controller.abort(), 5_000)
96
- const response = await fetch(this.baseUrl, {
97
- method: 'HEAD',
98
- signal: controller.signal,
99
- })
100
- clearTimeout(timeout)
148
+ operation = new ConnectorHttpOperation(
149
+ options?.signal,
150
+ CONNECTOR_HEALTH_TIMEOUT_MS,
151
+ 'HTTP connector health check',
152
+ )
153
+ const activeOperation = operation
154
+ const response = await activeOperation.run(() =>
155
+ fetch(this.baseUrl, {
156
+ method: 'HEAD',
157
+ redirect: 'manual',
158
+ signal: activeOperation.signal,
159
+ }),
160
+ )
101
161
  return response.ok || response.status < 500
102
162
  } catch {
103
163
  return false
164
+ } finally {
165
+ operation?.close()
104
166
  }
105
167
  }
106
168
 
107
- async execute(method: string, input: unknown): Promise<ConnectorExecuteResult> {
169
+ async execute(
170
+ method: string,
171
+ input: unknown,
172
+ options?: ConnectorOperationOptions,
173
+ ): Promise<ConnectorExecuteResult> {
108
174
  this.requireMethod(method)
109
- const validated = this.validateInput(this.requireMethod(method), input) as HttpRequestInput
110
-
111
- const { result, durationMs } = await this.measureExecution(() => this.doRequest(validated))
112
-
113
- return {
114
- success: result.status >= 200 && result.status < 400,
115
- output: result,
116
- durationMs,
117
- metadata: {
118
- status: result.status,
119
- statusText: result.statusText,
120
- },
175
+ const validated = (await this.validateInput(
176
+ this.requireMethod(method),
177
+ input,
178
+ options,
179
+ )) as HttpRequestInput
180
+ const startedAt = performance.now()
181
+ if (options?.signal?.aborted) {
182
+ return this.notStarted(validated.method, options.signal.reason, startedAt)
121
183
  }
184
+ return this.doRequest(validated, options, startedAt)
122
185
  }
123
186
 
124
- private async doRequest(input: HttpRequestInput): Promise<HttpResponseOutput> {
187
+ private async doRequest(
188
+ input: HttpRequestInput,
189
+ options: ConnectorOperationOptions | undefined,
190
+ startedAt: number,
191
+ ): Promise<ConnectorExecuteResult> {
125
192
  const url = new URL(input.path, `${this.baseUrl}/`)
193
+ requireSameOrigin(url.toString(), this.baseOrigin, 'HttpConnector request URL')
194
+ requireSafeConnectorInputHeaders(input.headers, 'HttpConnector request headers')
126
195
  if (input.query) {
127
196
  for (const [key, value] of Object.entries(input.query)) {
128
197
  url.searchParams.set(key, value)
@@ -134,45 +203,166 @@ export class HttpConnector extends BaseConnector<HttpConnectorConfig> {
134
203
  ...input.headers,
135
204
  }
136
205
 
137
- if (input.body && !headers['content-type'] && !headers['Content-Type']) {
206
+ if (input.body !== undefined && !headers['content-type'] && !headers['Content-Type']) {
138
207
  headers['Content-Type'] = 'application/json'
139
208
  }
140
209
 
141
- const controller = new AbortController()
142
- const timeout = setTimeout(() => controller.abort(), this.timeoutMs)
210
+ let operation: ConnectorHttpOperation | undefined
143
211
 
144
212
  try {
145
- const response = await fetch(url.toString(), {
146
- method: input.method,
147
- headers,
148
- body: input.body !== undefined ? JSON.stringify(input.body) : undefined,
149
- signal: controller.signal,
150
- })
213
+ try {
214
+ operation = new ConnectorHttpOperation(
215
+ options?.signal,
216
+ this.timeoutMs,
217
+ `HTTP connector ${input.method}`,
218
+ )
219
+ } catch (error) {
220
+ return this.notStarted(input.method, error, startedAt)
221
+ }
222
+ let response: Response
223
+ try {
224
+ const activeOperation = operation
225
+ response = await activeOperation.run(() =>
226
+ fetch(url.toString(), {
227
+ method: input.method,
228
+ headers,
229
+ body: input.body !== undefined ? JSON.stringify(input.body) : undefined,
230
+ redirect: 'manual',
231
+ signal: activeOperation.signal,
232
+ }),
233
+ )
234
+ } catch (error) {
235
+ return this.unknownOutcome(input.method, error, startedAt)
236
+ }
151
237
 
152
238
  const responseHeaders: Record<string, string> = {}
153
239
  response.headers.forEach((value, key) => {
154
240
  responseHeaders[key] = value
155
241
  })
156
242
 
243
+ const retrySafety = this.retrySafety(input.method)
244
+ const metadata: ConnectorExecutionMetadata = {
245
+ status: response.status,
246
+ statusText: response.statusText,
247
+ remoteOutcome: 'response_received',
248
+ retrySafety,
249
+ bodyAvailable: true,
250
+ }
157
251
  let body: unknown
158
- const contentType = response.headers.get('content-type') ?? ''
159
- if (contentType.includes('application/json')) {
160
- body = await response.json()
161
- } else {
162
- body = await response.text()
252
+ try {
253
+ body = await readConnectorResponseBody(response, operation, this.maxResponseBytes)
254
+ } catch (error) {
255
+ const bodyError = `Response body unavailable: ${this.errorText(error)}`
256
+ const output: HttpResponseOutput = {
257
+ status: response.status,
258
+ statusText: response.statusText,
259
+ headers: responseHeaders,
260
+ body: null,
261
+ bodyAvailable: false,
262
+ bodyError,
263
+ remoteOutcome: 'response_received',
264
+ retrySafety,
265
+ }
266
+ metadata.bodyAvailable = false
267
+ return {
268
+ success: response.status >= 200 && response.status < 300,
269
+ output,
270
+ ...(response.status < 200 || response.status >= 300
271
+ ? { error: this.statusError(response, retrySafety, true) }
272
+ : {}),
273
+ durationMs: this.duration(startedAt),
274
+ metadata,
275
+ }
163
276
  }
164
277
 
165
- return {
278
+ const output: HttpResponseOutput = {
166
279
  status: response.status,
167
280
  statusText: response.statusText,
168
281
  headers: responseHeaders,
169
282
  body,
283
+ bodyAvailable: true,
284
+ remoteOutcome: 'response_received',
285
+ retrySafety,
286
+ }
287
+ return {
288
+ success: response.status >= 200 && response.status < 300,
289
+ output,
290
+ ...(response.status < 200 || response.status >= 300
291
+ ? { error: this.statusError(response, retrySafety, false) }
292
+ : {}),
293
+ durationMs: this.duration(startedAt),
294
+ metadata,
170
295
  }
171
296
  } finally {
172
- clearTimeout(timeout)
297
+ operation?.close()
173
298
  }
174
299
  }
175
300
 
301
+ private notStarted(
302
+ method: HttpMethod,
303
+ reason: unknown,
304
+ startedAt: number,
305
+ ): ConnectorExecuteResult {
306
+ return {
307
+ success: false,
308
+ output: null,
309
+ error: `HTTP ${method} was cancelled before it started: ${this.errorText(reason)}. No remote request was started; retry is safe.`,
310
+ durationMs: this.duration(startedAt),
311
+ metadata: {
312
+ remoteOutcome: 'not_started',
313
+ retrySafety: 'safe',
314
+ bodyAvailable: false,
315
+ },
316
+ }
317
+ }
318
+
319
+ private unknownOutcome(
320
+ method: HttpMethod,
321
+ error: unknown,
322
+ startedAt: number,
323
+ ): ConnectorExecuteResult {
324
+ const retrySafety = this.retrySafety(method)
325
+ const advice =
326
+ retrySafety === 'safe'
327
+ ? `Retry is safe because ${method} is a safe HTTP method.`
328
+ : 'Do not automatically retry this request; it may duplicate a remote side effect.'
329
+ return {
330
+ success: false,
331
+ output: null,
332
+ error: `HTTP ${method} produced no response: ${this.errorText(error)}. The remote outcome is unknown. ${advice}`,
333
+ durationMs: this.duration(startedAt),
334
+ metadata: { remoteOutcome: 'unknown', retrySafety, bodyAvailable: false },
335
+ }
336
+ }
337
+
338
+ private statusError(
339
+ response: Response,
340
+ retrySafety: 'safe' | 'unsafe',
341
+ bodyMissing: boolean,
342
+ ): string {
343
+ const retry =
344
+ retrySafety === 'safe'
345
+ ? 'Retry is safe for this HTTP method.'
346
+ : 'Do not automatically retry; the remote side effect may already have happened.'
347
+ if (response.status >= 300 && response.status < 400) {
348
+ const location = response.headers.get('location')
349
+ return `HTTP ${response.status}: ${response.statusText}. The redirect was not followed because connector requests cannot leave their configured origin.${location ? ` Location: ${location}.` : ''} ${retry}`
350
+ }
351
+ return `HTTP ${response.status}: ${response.statusText}.${bodyMissing ? ' The response body was unavailable.' : ''} ${retry}`
352
+ }
353
+
354
+ private retrySafety(method: HttpMethod): 'safe' | 'unsafe' {
355
+ return method === 'GET' || method === 'HEAD' ? 'safe' : 'unsafe'
356
+ }
357
+
358
+ private duration(startedAt: number): number {
359
+ return Math.round(performance.now() - startedAt)
360
+ }
361
+
362
+ private errorText(error: unknown): string {
363
+ return error instanceof Error ? error.message : String(error)
364
+ }
365
+
176
366
  private resolveAuthHeaders(auth: AuthConfig): Record<string, string> {
177
367
  const creds = auth.credentials ?? {}
178
368
  switch (auth.type) {