@namzu/sdk 0.4.1 → 0.4.3

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 (685) hide show
  1. package/CHANGELOG.md +83 -0
  2. package/dist/__tests__/replay-public-surface.test.d.ts +2 -0
  3. package/dist/__tests__/replay-public-surface.test.d.ts.map +1 -0
  4. package/dist/__tests__/replay-public-surface.test.js +45 -0
  5. package/dist/__tests__/replay-public-surface.test.js.map +1 -0
  6. package/dist/advisory/context.test.d.ts +16 -0
  7. package/dist/advisory/context.test.d.ts.map +1 -0
  8. package/dist/advisory/context.test.js +92 -0
  9. package/dist/advisory/context.test.js.map +1 -0
  10. package/dist/advisory/evaluator.test.d.ts +34 -0
  11. package/dist/advisory/evaluator.test.d.ts.map +1 -0
  12. package/dist/advisory/evaluator.test.js +172 -0
  13. package/dist/advisory/evaluator.test.js.map +1 -0
  14. package/dist/advisory/executor.test.d.ts +35 -0
  15. package/dist/advisory/executor.test.d.ts.map +1 -0
  16. package/dist/advisory/executor.test.js +233 -0
  17. package/dist/advisory/executor.test.js.map +1 -0
  18. package/dist/advisory/registry.test.d.ts +16 -0
  19. package/dist/advisory/registry.test.d.ts.map +1 -0
  20. package/dist/advisory/registry.test.js +62 -0
  21. package/dist/advisory/registry.test.js.map +1 -0
  22. package/dist/agents/SupervisorAgent.d.ts.map +1 -1
  23. package/dist/agents/SupervisorAgent.js.map +1 -1
  24. package/dist/bridge/a2a/agent-card.test.d.ts +24 -0
  25. package/dist/bridge/a2a/agent-card.test.d.ts.map +1 -0
  26. package/dist/bridge/a2a/agent-card.test.js +118 -0
  27. package/dist/bridge/a2a/agent-card.test.js.map +1 -0
  28. package/dist/bridge/a2a/mapper.test.d.ts +29 -0
  29. package/dist/bridge/a2a/mapper.test.d.ts.map +1 -0
  30. package/dist/bridge/a2a/mapper.test.js +265 -0
  31. package/dist/bridge/a2a/mapper.test.js.map +1 -0
  32. package/dist/bridge/a2a/message.test.d.ts +20 -0
  33. package/dist/bridge/a2a/message.test.d.ts.map +1 -0
  34. package/dist/bridge/a2a/message.test.js +116 -0
  35. package/dist/bridge/a2a/message.test.js.map +1 -0
  36. package/dist/bridge/a2a/task.d.ts +2 -2
  37. package/dist/bridge/a2a/task.d.ts.map +1 -1
  38. package/dist/bridge/a2a/task.js.map +1 -1
  39. package/dist/bridge/a2a/task.test.d.ts +29 -0
  40. package/dist/bridge/a2a/task.test.d.ts.map +1 -0
  41. package/dist/bridge/a2a/task.test.js +198 -0
  42. package/dist/bridge/a2a/task.test.js.map +1 -0
  43. package/dist/bridge/mcp/connector/adapter.test.d.ts +27 -0
  44. package/dist/bridge/mcp/connector/adapter.test.d.ts.map +1 -0
  45. package/dist/bridge/mcp/connector/adapter.test.js +203 -0
  46. package/dist/bridge/mcp/connector/adapter.test.js.map +1 -0
  47. package/dist/bridge/sse/mapper.test.d.ts +27 -0
  48. package/dist/bridge/sse/mapper.test.d.ts.map +1 -0
  49. package/dist/bridge/sse/mapper.test.js +271 -0
  50. package/dist/bridge/sse/mapper.test.js.map +1 -0
  51. package/dist/bridge/tools/connector/adapter.test.d.ts +28 -0
  52. package/dist/bridge/tools/connector/adapter.test.d.ts.map +1 -0
  53. package/dist/bridge/tools/connector/adapter.test.js +182 -0
  54. package/dist/bridge/tools/connector/adapter.test.js.map +1 -0
  55. package/dist/bridge/tools/connector/definitions.test.d.ts +23 -0
  56. package/dist/bridge/tools/connector/definitions.test.d.ts.map +1 -0
  57. package/dist/bridge/tools/connector/definitions.test.js +158 -0
  58. package/dist/bridge/tools/connector/definitions.test.js.map +1 -0
  59. package/dist/bridge/tools/connector/router.test.d.ts +21 -0
  60. package/dist/bridge/tools/connector/router.test.d.ts.map +1 -0
  61. package/dist/bridge/tools/connector/router.test.js +139 -0
  62. package/dist/bridge/tools/connector/router.test.js.map +1 -0
  63. package/dist/bus/breaker.test.d.ts +41 -0
  64. package/dist/bus/breaker.test.d.ts.map +1 -0
  65. package/dist/bus/breaker.test.js +242 -0
  66. package/dist/bus/breaker.test.js.map +1 -0
  67. package/dist/bus/index.test.d.ts +25 -0
  68. package/dist/bus/index.test.d.ts.map +1 -0
  69. package/dist/bus/index.test.js +151 -0
  70. package/dist/bus/index.test.js.map +1 -0
  71. package/dist/bus/lock.test.d.ts +44 -0
  72. package/dist/bus/lock.test.d.ts.map +1 -0
  73. package/dist/bus/lock.test.js +226 -0
  74. package/dist/bus/lock.test.js.map +1 -0
  75. package/dist/bus/ownership.test.d.ts +26 -0
  76. package/dist/bus/ownership.test.d.ts.map +1 -0
  77. package/dist/bus/ownership.test.js +205 -0
  78. package/dist/bus/ownership.test.js.map +1 -0
  79. package/dist/config/runtime.d.ts +24 -25
  80. package/dist/config/runtime.d.ts.map +1 -1
  81. package/dist/config/runtime.js.map +1 -1
  82. package/dist/connector/BaseConnector.test.d.ts +21 -0
  83. package/dist/connector/BaseConnector.test.d.ts.map +1 -0
  84. package/dist/connector/BaseConnector.test.js +108 -0
  85. package/dist/connector/BaseConnector.test.js.map +1 -0
  86. package/dist/connector/builtins/http.test.d.ts +30 -0
  87. package/dist/connector/builtins/http.test.d.ts.map +1 -0
  88. package/dist/connector/builtins/http.test.js +232 -0
  89. package/dist/connector/builtins/http.test.js.map +1 -0
  90. package/dist/connector/builtins/webhook.test.d.ts +20 -0
  91. package/dist/connector/builtins/webhook.test.d.ts.map +1 -0
  92. package/dist/connector/builtins/webhook.test.js +113 -0
  93. package/dist/connector/builtins/webhook.test.js.map +1 -0
  94. package/dist/connector/execution/factory.test.d.ts +16 -0
  95. package/dist/connector/execution/factory.test.d.ts.map +1 -0
  96. package/dist/connector/execution/factory.test.js +64 -0
  97. package/dist/connector/execution/factory.test.js.map +1 -0
  98. package/dist/connector/execution/remote.test.d.ts +16 -0
  99. package/dist/connector/execution/remote.test.d.ts.map +1 -0
  100. package/dist/connector/execution/remote.test.js +53 -0
  101. package/dist/connector/execution/remote.test.js.map +1 -0
  102. package/dist/connector/mcp/adapter.test.d.ts +34 -0
  103. package/dist/connector/mcp/adapter.test.d.ts.map +1 -0
  104. package/dist/connector/mcp/adapter.test.js +199 -0
  105. package/dist/connector/mcp/adapter.test.js.map +1 -0
  106. package/dist/contracts/api.d.ts +2 -2
  107. package/dist/contracts/api.d.ts.map +1 -1
  108. package/dist/contracts/index.d.ts +1 -2
  109. package/dist/contracts/index.d.ts.map +1 -1
  110. package/dist/contracts/index.js.map +1 -1
  111. package/dist/contracts/schemas.d.ts +10 -10
  112. package/dist/index.d.ts +3 -103
  113. package/dist/index.d.ts.map +1 -1
  114. package/dist/index.js +9 -89
  115. package/dist/index.js.map +1 -1
  116. package/dist/manager/agent/__tests__/lifecycle.test.js.map +1 -1
  117. package/dist/manager/agent/lifecycle.d.ts +1 -1
  118. package/dist/manager/agent/lifecycle.d.ts.map +1 -1
  119. package/dist/manager/agent/lifecycle.js +1 -1
  120. package/dist/manager/agent/lifecycle.js.map +1 -1
  121. package/dist/manager/run/persistence.d.ts +3 -3
  122. package/dist/manager/run/persistence.d.ts.map +1 -1
  123. package/dist/manager/run/persistence.js.map +1 -1
  124. package/dist/manager/thread/__tests__/lifecycle.test.js.map +1 -1
  125. package/dist/manager/thread/lifecycle.d.ts +1 -1
  126. package/dist/manager/thread/lifecycle.d.ts.map +1 -1
  127. package/dist/plugin/loader.d.ts +0 -5
  128. package/dist/plugin/loader.d.ts.map +1 -1
  129. package/dist/plugin/loader.js +1 -13
  130. package/dist/plugin/loader.js.map +1 -1
  131. package/dist/public-runtime.d.ts +70 -0
  132. package/dist/public-runtime.d.ts.map +1 -0
  133. package/dist/public-runtime.js +108 -0
  134. package/dist/public-runtime.js.map +1 -0
  135. package/dist/public-tools.d.ts +19 -0
  136. package/dist/public-tools.d.ts.map +1 -0
  137. package/dist/public-tools.js +34 -0
  138. package/dist/public-tools.js.map +1 -0
  139. package/dist/public-types.d.ts +55 -0
  140. package/dist/public-types.d.ts.map +1 -0
  141. package/dist/public-types.js +14 -0
  142. package/dist/public-types.js.map +1 -0
  143. package/dist/rag/chunking.test.d.ts +20 -0
  144. package/dist/rag/chunking.test.d.ts.map +1 -0
  145. package/dist/rag/chunking.test.js +92 -0
  146. package/dist/rag/chunking.test.js.map +1 -0
  147. package/dist/rag/context-assembler.test.d.ts +19 -0
  148. package/dist/rag/context-assembler.test.d.ts.map +1 -0
  149. package/dist/rag/context-assembler.test.js +98 -0
  150. package/dist/rag/context-assembler.test.js.map +1 -0
  151. package/dist/rag/embedding.test.d.ts +19 -0
  152. package/dist/rag/embedding.test.d.ts.map +1 -0
  153. package/dist/rag/embedding.test.js +115 -0
  154. package/dist/rag/embedding.test.js.map +1 -0
  155. package/dist/rag/ingestion.test.d.ts +22 -0
  156. package/dist/rag/ingestion.test.d.ts.map +1 -0
  157. package/dist/rag/ingestion.test.js +99 -0
  158. package/dist/rag/ingestion.test.js.map +1 -0
  159. package/dist/rag/knowledge-base.test.d.ts +17 -0
  160. package/dist/rag/knowledge-base.test.d.ts.map +1 -0
  161. package/dist/rag/knowledge-base.test.js +77 -0
  162. package/dist/rag/knowledge-base.test.js.map +1 -0
  163. package/dist/rag/rag-tool.d.ts +1 -1
  164. package/dist/rag/rag-tool.test.d.ts +21 -0
  165. package/dist/rag/rag-tool.test.d.ts.map +1 -0
  166. package/dist/rag/rag-tool.test.js +149 -0
  167. package/dist/rag/rag-tool.test.js.map +1 -0
  168. package/dist/rag/retriever.test.d.ts +26 -0
  169. package/dist/rag/retriever.test.d.ts.map +1 -0
  170. package/dist/rag/retriever.test.js +180 -0
  171. package/dist/rag/retriever.test.js.map +1 -0
  172. package/dist/rag/vector-store.test.d.ts +38 -0
  173. package/dist/rag/vector-store.test.d.ts.map +1 -0
  174. package/dist/rag/vector-store.test.js +175 -0
  175. package/dist/rag/vector-store.test.js.map +1 -0
  176. package/dist/registry/ManagedRegistry.test.d.ts +21 -0
  177. package/dist/registry/ManagedRegistry.test.d.ts.map +1 -0
  178. package/dist/registry/ManagedRegistry.test.js +98 -0
  179. package/dist/registry/ManagedRegistry.test.js.map +1 -0
  180. package/dist/registry/Registry.test.d.ts +18 -0
  181. package/dist/registry/Registry.test.d.ts.map +1 -0
  182. package/dist/registry/Registry.test.js +79 -0
  183. package/dist/registry/Registry.test.js.map +1 -0
  184. package/dist/registry/agent/definitions.test.d.ts +15 -0
  185. package/dist/registry/agent/definitions.test.d.ts.map +1 -0
  186. package/dist/registry/agent/definitions.test.js +84 -0
  187. package/dist/registry/agent/definitions.test.js.map +1 -0
  188. package/dist/registry/connector/definitions.test.d.ts +13 -0
  189. package/dist/registry/connector/definitions.test.d.ts.map +1 -0
  190. package/dist/registry/connector/definitions.test.js +41 -0
  191. package/dist/registry/connector/definitions.test.js.map +1 -0
  192. package/dist/registry/connector/scoped.test.d.ts +21 -0
  193. package/dist/registry/connector/scoped.test.d.ts.map +1 -0
  194. package/dist/registry/connector/scoped.test.js +115 -0
  195. package/dist/registry/connector/scoped.test.js.map +1 -0
  196. package/dist/registry/plugin/index.test.d.ts +12 -0
  197. package/dist/registry/plugin/index.test.d.ts.map +1 -0
  198. package/dist/registry/plugin/index.test.js +69 -0
  199. package/dist/registry/plugin/index.test.js.map +1 -0
  200. package/dist/registry/tool/execute.test.d.ts +42 -0
  201. package/dist/registry/tool/execute.test.d.ts.map +1 -0
  202. package/dist/registry/tool/execute.test.js +281 -0
  203. package/dist/registry/tool/execute.test.js.map +1 -0
  204. package/dist/run/LimitChecker.d.ts +0 -1
  205. package/dist/run/LimitChecker.d.ts.map +1 -1
  206. package/dist/run/LimitChecker.js +0 -6
  207. package/dist/run/LimitChecker.js.map +1 -1
  208. package/dist/run/reporter.d.ts +2 -2
  209. package/dist/run/reporter.d.ts.map +1 -1
  210. package/dist/run/reporter.js.map +1 -1
  211. package/dist/runtime/query/__tests__/checkpoint.test.d.ts +2 -0
  212. package/dist/runtime/query/__tests__/checkpoint.test.d.ts.map +1 -0
  213. package/dist/runtime/query/__tests__/checkpoint.test.js +150 -0
  214. package/dist/runtime/query/__tests__/checkpoint.test.js.map +1 -0
  215. package/dist/runtime/query/checkpoint.d.ts +23 -0
  216. package/dist/runtime/query/checkpoint.d.ts.map +1 -1
  217. package/dist/runtime/query/checkpoint.js +49 -0
  218. package/dist/runtime/query/checkpoint.js.map +1 -1
  219. package/dist/runtime/query/context.d.ts +0 -2
  220. package/dist/runtime/query/context.d.ts.map +1 -1
  221. package/dist/runtime/query/context.js +0 -4
  222. package/dist/runtime/query/context.js.map +1 -1
  223. package/dist/runtime/query/index.d.ts +3 -3
  224. package/dist/runtime/query/index.d.ts.map +1 -1
  225. package/dist/runtime/query/iteration/phases/advisory.test.d.ts +42 -0
  226. package/dist/runtime/query/iteration/phases/advisory.test.d.ts.map +1 -0
  227. package/dist/runtime/query/iteration/phases/advisory.test.js +334 -0
  228. package/dist/runtime/query/iteration/phases/advisory.test.js.map +1 -0
  229. package/dist/runtime/query/replay/__tests__/mutate.test.d.ts +2 -0
  230. package/dist/runtime/query/replay/__tests__/mutate.test.d.ts.map +1 -0
  231. package/dist/runtime/query/replay/__tests__/mutate.test.js +123 -0
  232. package/dist/runtime/query/replay/__tests__/mutate.test.js.map +1 -0
  233. package/dist/runtime/query/replay/__tests__/prepare.test.d.ts +2 -0
  234. package/dist/runtime/query/replay/__tests__/prepare.test.d.ts.map +1 -0
  235. package/dist/runtime/query/replay/__tests__/prepare.test.js +171 -0
  236. package/dist/runtime/query/replay/__tests__/prepare.test.js.map +1 -0
  237. package/dist/runtime/query/replay/list.d.ts +24 -0
  238. package/dist/runtime/query/replay/list.d.ts.map +1 -0
  239. package/dist/runtime/query/replay/list.js +21 -0
  240. package/dist/runtime/query/replay/list.js.map +1 -0
  241. package/dist/runtime/query/replay/mutate.d.ts +17 -0
  242. package/dist/runtime/query/replay/mutate.d.ts.map +1 -0
  243. package/dist/runtime/query/replay/mutate.js +62 -0
  244. package/dist/runtime/query/replay/mutate.js.map +1 -0
  245. package/dist/runtime/query/replay/prepare.d.ts +56 -0
  246. package/dist/runtime/query/replay/prepare.d.ts.map +1 -0
  247. package/dist/runtime/query/replay/prepare.js +65 -0
  248. package/dist/runtime/query/replay/prepare.js.map +1 -0
  249. package/dist/runtime/query/result.d.ts +2 -2
  250. package/dist/runtime/query/result.d.ts.map +1 -1
  251. package/dist/session/__tests__/integration/_fixtures.d.ts +4 -4
  252. package/dist/session/__tests__/integration/_fixtures.d.ts.map +1 -1
  253. package/dist/session/__tests__/integration/_fixtures.js.map +1 -1
  254. package/dist/session/__tests__/integration/archive-gate.test.js.map +1 -1
  255. package/dist/session/__tests__/integration/capacity-caps.test.js.map +1 -1
  256. package/dist/session/__tests__/integration/e2e-spawn.test.js.map +1 -1
  257. package/dist/session/__tests__/integration/handoff-broadcast-e2e.test.js.map +1 -1
  258. package/dist/session/__tests__/integration/handoff-single-e2e.test.js.map +1 -1
  259. package/dist/session/__tests__/integration/prev-artifact-dag.test.js.map +1 -1
  260. package/dist/session/__tests__/integration/retention-archive.test.js.map +1 -1
  261. package/dist/session/__tests__/integration/spawn-rollback.test.js.map +1 -1
  262. package/dist/session/__tests__/integration/summary-materialization-e2e.test.js +1 -1
  263. package/dist/session/__tests__/integration/summary-materialization-e2e.test.js.map +1 -1
  264. package/dist/session/errors.d.ts +1 -1
  265. package/dist/session/errors.d.ts.map +1 -1
  266. package/dist/session/events/index.d.ts +3 -3
  267. package/dist/session/events/index.d.ts.map +1 -1
  268. package/dist/session/events/index.js +3 -2
  269. package/dist/session/events/index.js.map +1 -1
  270. package/dist/session/handoff/__tests__/broadcast.test.js.map +1 -1
  271. package/dist/session/handoff/__tests__/capacity.test.js.map +1 -1
  272. package/dist/session/handoff/__tests__/single.test.js.map +1 -1
  273. package/dist/session/handoff/assignment.d.ts +1 -1
  274. package/dist/session/handoff/assignment.d.ts.map +1 -1
  275. package/dist/session/handoff/broadcast.d.ts.map +1 -1
  276. package/dist/session/handoff/broadcast.js.map +1 -1
  277. package/dist/session/handoff/single.d.ts.map +1 -1
  278. package/dist/session/handoff/single.js.map +1 -1
  279. package/dist/session/index.d.ts +0 -1
  280. package/dist/session/index.d.ts.map +1 -1
  281. package/dist/session/index.js +7 -6
  282. package/dist/session/index.js.map +1 -1
  283. package/dist/session/intervention/__tests__/prev-artifact.test.js.map +1 -1
  284. package/dist/session/intervention/prev-artifact.d.ts +1 -1
  285. package/dist/session/intervention/prev-artifact.d.ts.map +1 -1
  286. package/dist/session/retention/__tests__/archive.test.js.map +1 -1
  287. package/dist/session/retention/__tests__/disk-backend.test.js.map +1 -1
  288. package/dist/session/retention/archive.d.ts +1 -1
  289. package/dist/session/retention/archive.d.ts.map +1 -1
  290. package/dist/session/retention/backend.d.ts +4 -4
  291. package/dist/session/retention/backend.d.ts.map +1 -1
  292. package/dist/session/retention/disk-backend.d.ts +1 -1
  293. package/dist/session/retention/disk-backend.d.ts.map +1 -1
  294. package/dist/session/retention/index.d.ts +3 -3
  295. package/dist/session/retention/index.d.ts.map +1 -1
  296. package/dist/session/retention/index.js +4 -2
  297. package/dist/session/retention/index.js.map +1 -1
  298. package/dist/session/status/__tests__/derive.test.d.ts +2 -0
  299. package/dist/session/status/__tests__/derive.test.d.ts.map +1 -0
  300. package/dist/session/{hierarchy/__tests__/session.test.js → status/__tests__/derive.test.js} +2 -2
  301. package/dist/session/status/__tests__/derive.test.js.map +1 -0
  302. package/dist/session/status/derive.d.ts +33 -0
  303. package/dist/session/status/derive.d.ts.map +1 -0
  304. package/dist/session/{hierarchy/session.js → status/derive.js} +6 -1
  305. package/dist/session/status/derive.js.map +1 -0
  306. package/dist/session/summary/__tests__/materialize.test.js +2 -1
  307. package/dist/session/summary/__tests__/materialize.test.js.map +1 -1
  308. package/dist/session/summary/errors.d.ts +43 -0
  309. package/dist/session/summary/errors.d.ts.map +1 -0
  310. package/dist/session/summary/errors.js +37 -0
  311. package/dist/session/summary/errors.js.map +1 -0
  312. package/dist/session/summary/index.d.ts +4 -3
  313. package/dist/session/summary/index.d.ts.map +1 -1
  314. package/dist/session/summary/index.js +5 -4
  315. package/dist/session/summary/index.js.map +1 -1
  316. package/dist/session/summary/materialize.d.ts +2 -2
  317. package/dist/session/summary/materialize.d.ts.map +1 -1
  318. package/dist/session/summary/materialize.js +2 -1
  319. package/dist/session/summary/materialize.js.map +1 -1
  320. package/dist/session/workspace/__tests__/git-worktree.test.js.map +1 -1
  321. package/dist/session/workspace/driver.d.ts +2 -2
  322. package/dist/session/workspace/driver.d.ts.map +1 -1
  323. package/dist/session/workspace/git-worktree.d.ts +1 -1
  324. package/dist/session/workspace/git-worktree.d.ts.map +1 -1
  325. package/dist/session/workspace/git-worktree.js.map +1 -1
  326. package/dist/session/workspace/index.d.ts +1 -1
  327. package/dist/session/workspace/index.d.ts.map +1 -1
  328. package/dist/session/workspace/index.js +3 -2
  329. package/dist/session/workspace/index.js.map +1 -1
  330. package/dist/store/run/disk.d.ts +4 -4
  331. package/dist/store/run/disk.d.ts.map +1 -1
  332. package/dist/store/run/disk.js.map +1 -1
  333. package/dist/store/session/__tests__/disk.test.js.map +1 -1
  334. package/dist/store/session/__tests__/memory.test.js.map +1 -1
  335. package/dist/store/session/disk.d.ts +6 -6
  336. package/dist/store/session/disk.d.ts.map +1 -1
  337. package/dist/store/session/disk.js +1 -1
  338. package/dist/store/session/disk.js.map +1 -1
  339. package/dist/store/session/index.d.ts +1 -1
  340. package/dist/store/session/index.d.ts.map +1 -1
  341. package/dist/store/session/index.js +2 -1
  342. package/dist/store/session/index.js.map +1 -1
  343. package/dist/store/session/linkage.d.ts +1 -1
  344. package/dist/store/session/linkage.d.ts.map +1 -1
  345. package/dist/store/session/memory.d.ts +5 -5
  346. package/dist/store/session/memory.d.ts.map +1 -1
  347. package/dist/store/session/memory.js +1 -1
  348. package/dist/store/session/memory.js.map +1 -1
  349. package/dist/store/thread/disk.d.ts +1 -1
  350. package/dist/store/thread/disk.d.ts.map +1 -1
  351. package/dist/store/thread/memory.d.ts +1 -1
  352. package/dist/store/thread/memory.d.ts.map +1 -1
  353. package/dist/telemetry/attributes.d.ts +0 -1
  354. package/dist/telemetry/attributes.d.ts.map +1 -1
  355. package/dist/telemetry/attributes.js +0 -3
  356. package/dist/telemetry/attributes.js.map +1 -1
  357. package/dist/telemetry/runtime-accessors.d.ts +1 -2
  358. package/dist/telemetry/runtime-accessors.d.ts.map +1 -1
  359. package/dist/telemetry/runtime-accessors.js +1 -4
  360. package/dist/telemetry/runtime-accessors.js.map +1 -1
  361. package/dist/test-setup.d.ts +22 -0
  362. package/dist/test-setup.d.ts.map +1 -0
  363. package/dist/test-setup.js +23 -0
  364. package/dist/test-setup.js.map +1 -0
  365. package/dist/tools/builtins/bash.d.ts +1 -1
  366. package/dist/tools/builtins/computer-use.d.ts +4 -4
  367. package/dist/tools/builtins/edit.d.ts +1 -1
  368. package/dist/tools/builtins/glob.d.ts +1 -1
  369. package/dist/tools/builtins/grep.d.ts +1 -1
  370. package/dist/tools/builtins/ls.d.ts +1 -1
  371. package/dist/tools/builtins/read-file.d.ts +1 -1
  372. package/dist/tools/builtins/search-tools.d.ts +1 -1
  373. package/dist/tools/builtins/write-file.d.ts +1 -1
  374. package/dist/types/agent/task.d.ts +2 -2
  375. package/dist/types/agent/task.d.ts.map +1 -1
  376. package/dist/{session/hierarchy/project.d.ts → types/project/entity.d.ts} +4 -4
  377. package/dist/types/project/entity.d.ts.map +1 -0
  378. package/dist/types/project/entity.js +2 -0
  379. package/dist/types/project/entity.js.map +1 -0
  380. package/dist/types/project/index.d.ts +2 -0
  381. package/dist/types/project/index.d.ts.map +1 -0
  382. package/dist/types/project/index.js +4 -0
  383. package/dist/types/project/index.js.map +1 -0
  384. package/dist/types/retention/archive-backend-ref.d.ts.map +1 -0
  385. package/dist/types/retention/archive-backend-ref.js.map +1 -0
  386. package/dist/types/retention/index.d.ts +4 -0
  387. package/dist/types/retention/index.d.ts.map +1 -0
  388. package/dist/types/retention/index.js +4 -0
  389. package/dist/types/retention/index.js.map +1 -0
  390. package/dist/types/retention/policy.d.ts.map +1 -0
  391. package/dist/types/retention/policy.js.map +1 -0
  392. package/dist/types/run/entity.d.ts +56 -0
  393. package/dist/types/run/entity.d.ts.map +1 -0
  394. package/dist/types/run/entity.js +2 -0
  395. package/dist/types/run/entity.js.map +1 -0
  396. package/dist/types/run/events.d.ts +2 -2
  397. package/dist/types/run/events.d.ts.map +1 -1
  398. package/dist/types/run/index.d.ts +7 -1
  399. package/dist/types/run/index.d.ts.map +1 -1
  400. package/dist/types/run/index.js +8 -9
  401. package/dist/types/run/index.js.map +1 -1
  402. package/dist/{session/hierarchy → types/run}/lineage.d.ts +1 -1
  403. package/dist/types/run/lineage.d.ts.map +1 -0
  404. package/dist/types/run/lineage.js.map +1 -0
  405. package/dist/types/run/replay.d.ts +53 -0
  406. package/dist/types/run/replay.d.ts.map +1 -0
  407. package/dist/types/run/replay.js +15 -0
  408. package/dist/types/run/replay.js.map +1 -0
  409. package/dist/types/run/schema-version.d.ts.map +1 -0
  410. package/dist/types/run/schema-version.js.map +1 -0
  411. package/dist/{session/events/types.d.ts → types/run/subsession-events.d.ts} +5 -5
  412. package/dist/types/run/subsession-events.d.ts.map +1 -0
  413. package/dist/types/run/subsession-events.js +2 -0
  414. package/dist/types/run/subsession-events.js.map +1 -0
  415. package/dist/{session/hierarchy → types/session}/actor.d.ts +1 -1
  416. package/dist/types/session/actor.d.ts.map +1 -0
  417. package/dist/{session/hierarchy → types/session}/actor.js.map +1 -1
  418. package/dist/types/session/entity.d.ts +51 -0
  419. package/dist/types/session/entity.d.ts.map +1 -0
  420. package/dist/types/session/entity.js +2 -0
  421. package/dist/types/session/entity.js.map +1 -0
  422. package/dist/types/session/index.d.ts +4 -0
  423. package/dist/types/session/index.d.ts.map +1 -1
  424. package/dist/{store → types}/session/messages.d.ts +2 -2
  425. package/dist/{store → types}/session/messages.d.ts.map +1 -1
  426. package/dist/types/session/messages.js.map +1 -0
  427. package/dist/types/session/store.d.ts +6 -6
  428. package/dist/types/session/store.d.ts.map +1 -1
  429. package/dist/{session/hierarchy → types/session}/sub-session.d.ts +9 -9
  430. package/dist/types/session/sub-session.d.ts.map +1 -0
  431. package/dist/types/session/sub-session.js.map +1 -0
  432. package/dist/{session → types}/summary/deliverable.d.ts +2 -2
  433. package/dist/types/summary/deliverable.d.ts.map +1 -0
  434. package/dist/types/summary/deliverable.js.map +1 -0
  435. package/dist/types/summary/index.d.ts +4 -0
  436. package/dist/types/summary/index.d.ts.map +1 -0
  437. package/dist/types/summary/index.js +4 -0
  438. package/dist/types/summary/index.js.map +1 -0
  439. package/dist/{session → types}/summary/ref.d.ts +9 -36
  440. package/dist/types/summary/ref.d.ts.map +1 -0
  441. package/dist/types/summary/ref.js +28 -0
  442. package/dist/types/summary/ref.js.map +1 -0
  443. package/dist/{session/hierarchy/tenant.d.ts → types/tenant/entity.d.ts} +2 -2
  444. package/dist/types/tenant/entity.d.ts.map +1 -0
  445. package/dist/types/tenant/entity.js +2 -0
  446. package/dist/types/tenant/entity.js.map +1 -0
  447. package/dist/types/tenant/index.d.ts +2 -0
  448. package/dist/types/tenant/index.d.ts.map +1 -0
  449. package/dist/types/tenant/index.js +4 -0
  450. package/dist/types/tenant/index.js.map +1 -0
  451. package/dist/{session/hierarchy/thread.d.ts → types/thread/entity.d.ts} +31 -7
  452. package/dist/types/thread/entity.d.ts.map +1 -0
  453. package/dist/types/thread/entity.js +2 -0
  454. package/dist/types/thread/entity.js.map +1 -0
  455. package/dist/types/thread/index.d.ts +1 -0
  456. package/dist/types/thread/index.d.ts.map +1 -1
  457. package/dist/types/thread/store.d.ts +1 -1
  458. package/dist/types/thread/store.d.ts.map +1 -1
  459. package/dist/types/workspace/index.d.ts +2 -0
  460. package/dist/types/workspace/index.d.ts.map +1 -0
  461. package/dist/types/workspace/index.js +7 -0
  462. package/dist/types/workspace/index.js.map +1 -0
  463. package/dist/{session → types}/workspace/ref.d.ts +1 -1
  464. package/dist/types/workspace/ref.d.ts.map +1 -0
  465. package/dist/types/workspace/ref.js.map +1 -0
  466. package/dist/utils/logger.d.ts +1 -1
  467. package/dist/utils/logger.d.ts.map +1 -1
  468. package/dist/utils/logger.js +5 -0
  469. package/dist/utils/logger.js.map +1 -1
  470. package/package.json +4 -1
  471. package/src/__tests__/replay-public-surface.test.ts +54 -0
  472. package/src/advisory/context.test.ts +109 -0
  473. package/src/advisory/evaluator.test.ts +192 -0
  474. package/src/advisory/executor.test.ts +272 -0
  475. package/src/advisory/registry.test.ts +75 -0
  476. package/src/agents/SupervisorAgent.ts +1 -1
  477. package/src/bridge/a2a/agent-card.test.ts +140 -0
  478. package/src/bridge/a2a/mapper.test.ts +293 -0
  479. package/src/bridge/a2a/message.test.ts +138 -0
  480. package/src/bridge/a2a/task.test.ts +235 -0
  481. package/src/bridge/a2a/task.ts +4 -4
  482. package/src/bridge/mcp/connector/adapter.test.ts +230 -0
  483. package/src/bridge/sse/mapper.test.ts +422 -0
  484. package/src/bridge/tools/connector/adapter.test.ts +224 -0
  485. package/src/bridge/tools/connector/definitions.test.ts +183 -0
  486. package/src/bridge/tools/connector/router.test.ts +159 -0
  487. package/src/bus/breaker.test.ts +274 -0
  488. package/src/bus/index.test.ts +183 -0
  489. package/src/bus/lock.test.ts +265 -0
  490. package/src/bus/ownership.test.ts +243 -0
  491. package/src/config/runtime.ts +0 -2
  492. package/src/connector/BaseConnector.test.ts +130 -0
  493. package/src/connector/builtins/http.test.ts +290 -0
  494. package/src/connector/builtins/webhook.test.ts +138 -0
  495. package/src/connector/execution/factory.test.ts +75 -0
  496. package/src/connector/execution/remote.test.ts +63 -0
  497. package/src/connector/mcp/adapter.test.ts +249 -0
  498. package/src/contracts/api.ts +2 -2
  499. package/src/contracts/index.ts +1 -3
  500. package/src/index.ts +11 -362
  501. package/src/manager/agent/__tests__/lifecycle.test.ts +2 -2
  502. package/src/manager/agent/lifecycle.ts +5 -5
  503. package/src/manager/run/persistence.ts +4 -4
  504. package/src/manager/thread/__tests__/lifecycle.test.ts +1 -1
  505. package/src/manager/thread/lifecycle.ts +2 -2
  506. package/src/plugin/loader.ts +0 -16
  507. package/src/public-runtime.ts +373 -0
  508. package/src/public-tools.ts +63 -0
  509. package/src/public-types.ts +156 -0
  510. package/src/rag/chunking.test.ts +107 -0
  511. package/src/rag/context-assembler.test.ts +114 -0
  512. package/src/rag/embedding.test.ts +130 -0
  513. package/src/rag/ingestion.test.ts +114 -0
  514. package/src/rag/knowledge-base.test.ts +106 -0
  515. package/src/rag/rag-tool.test.ts +167 -0
  516. package/src/rag/retriever.test.ts +210 -0
  517. package/src/rag/vector-store.test.ts +196 -0
  518. package/src/registry/ManagedRegistry.test.ts +118 -0
  519. package/src/registry/Registry.test.ts +91 -0
  520. package/src/registry/agent/definitions.test.ts +100 -0
  521. package/src/registry/connector/definitions.test.ts +51 -0
  522. package/src/registry/connector/scoped.test.ts +129 -0
  523. package/src/registry/plugin/index.test.ts +85 -0
  524. package/src/registry/tool/execute.test.ts +330 -0
  525. package/src/run/LimitChecker.ts +0 -9
  526. package/src/run/reporter.ts +3 -3
  527. package/src/runtime/query/__tests__/checkpoint.test.ts +169 -0
  528. package/src/runtime/query/checkpoint.ts +54 -0
  529. package/src/runtime/query/context.ts +0 -5
  530. package/src/runtime/query/index.ts +4 -4
  531. package/src/runtime/query/iteration/phases/advisory.test.ts +412 -0
  532. package/src/runtime/query/replay/__tests__/mutate.test.ts +134 -0
  533. package/src/runtime/query/replay/__tests__/prepare.test.ts +207 -0
  534. package/src/runtime/query/replay/list.ts +32 -0
  535. package/src/runtime/query/replay/mutate.ts +76 -0
  536. package/src/runtime/query/replay/prepare.ts +114 -0
  537. package/src/runtime/query/result.ts +2 -2
  538. package/src/session/__tests__/integration/_fixtures.ts +2 -2
  539. package/src/session/__tests__/integration/archive-gate.test.ts +1 -1
  540. package/src/session/__tests__/integration/capacity-caps.test.ts +1 -1
  541. package/src/session/__tests__/integration/e2e-spawn.test.ts +1 -1
  542. package/src/session/__tests__/integration/handoff-broadcast-e2e.test.ts +1 -1
  543. package/src/session/__tests__/integration/handoff-single-e2e.test.ts +1 -1
  544. package/src/session/__tests__/integration/prev-artifact-dag.test.ts +4 -1
  545. package/src/session/__tests__/integration/retention-archive.test.ts +1 -1
  546. package/src/session/__tests__/integration/spawn-rollback.test.ts +2 -2
  547. package/src/session/__tests__/integration/summary-materialization-e2e.test.ts +1 -1
  548. package/src/session/errors.ts +1 -1
  549. package/src/session/events/index.ts +5 -4
  550. package/src/session/handoff/__tests__/broadcast.test.ts +1 -1
  551. package/src/session/handoff/__tests__/capacity.test.ts +1 -1
  552. package/src/session/handoff/__tests__/single.test.ts +1 -1
  553. package/src/session/handoff/assignment.ts +1 -1
  554. package/src/session/handoff/broadcast.ts +2 -2
  555. package/src/session/handoff/single.ts +2 -2
  556. package/src/session/index.ts +7 -6
  557. package/src/session/intervention/__tests__/prev-artifact.test.ts +4 -1
  558. package/src/session/intervention/prev-artifact.ts +1 -1
  559. package/src/session/retention/__tests__/archive.test.ts +3 -3
  560. package/src/session/retention/__tests__/disk-backend.test.ts +4 -4
  561. package/src/session/retention/archive.ts +2 -2
  562. package/src/session/retention/backend.ts +4 -4
  563. package/src/session/retention/disk-backend.ts +4 -4
  564. package/src/session/retention/index.ts +6 -4
  565. package/src/session/{hierarchy/__tests__/session.test.ts → status/__tests__/derive.test.ts} +3 -2
  566. package/src/session/{hierarchy/session.ts → status/derive.ts} +9 -55
  567. package/src/session/summary/__tests__/materialize.test.ts +4 -7
  568. package/src/session/summary/errors.ts +51 -0
  569. package/src/session/summary/index.ts +7 -10
  570. package/src/session/summary/materialize.ts +4 -5
  571. package/src/session/workspace/__tests__/git-worktree.test.ts +1 -1
  572. package/src/session/workspace/driver.ts +2 -2
  573. package/src/session/workspace/git-worktree.ts +1 -1
  574. package/src/session/workspace/index.ts +7 -6
  575. package/src/store/run/disk.ts +4 -4
  576. package/src/store/session/__tests__/disk.test.ts +2 -2
  577. package/src/store/session/__tests__/memory.test.ts +2 -2
  578. package/src/store/session/disk.ts +12 -12
  579. package/src/store/session/index.ts +3 -2
  580. package/src/store/session/linkage.ts +1 -1
  581. package/src/store/session/memory.ts +6 -6
  582. package/src/store/thread/disk.ts +1 -1
  583. package/src/store/thread/memory.ts +1 -1
  584. package/src/telemetry/attributes.ts +0 -4
  585. package/src/telemetry/runtime-accessors.ts +1 -5
  586. package/src/test-setup.ts +24 -0
  587. package/src/types/agent/task.ts +2 -2
  588. package/src/{session/hierarchy/project.ts → types/project/entity.ts} +3 -3
  589. package/src/types/project/index.ts +4 -0
  590. package/src/types/retention/index.ts +6 -0
  591. package/src/types/run/entity.ts +63 -0
  592. package/src/types/run/events.ts +6 -6
  593. package/src/types/run/index.ts +16 -9
  594. package/src/{session/hierarchy → types/run}/lineage.ts +1 -1
  595. package/src/types/run/replay.ts +61 -0
  596. package/src/{session/events/types.ts → types/run/subsession-events.ts} +4 -4
  597. package/src/{session/hierarchy → types/session}/actor.ts +1 -1
  598. package/src/types/session/entity.ts +59 -0
  599. package/src/types/session/index.ts +15 -0
  600. package/src/{store → types}/session/messages.ts +2 -2
  601. package/src/types/session/store.ts +6 -6
  602. package/src/{session/hierarchy → types/session}/sub-session.ts +9 -9
  603. package/src/{session → types}/summary/deliverable.ts +2 -2
  604. package/src/types/summary/index.ts +18 -0
  605. package/src/{session → types}/summary/ref.ts +9 -44
  606. package/src/{session/hierarchy/tenant.ts → types/tenant/entity.ts} +1 -1
  607. package/src/types/tenant/index.ts +4 -0
  608. package/src/{session/hierarchy/thread.ts → types/thread/entity.ts} +30 -6
  609. package/src/types/thread/index.ts +1 -0
  610. package/src/types/thread/store.ts +1 -1
  611. package/src/types/workspace/index.ts +12 -0
  612. package/src/{session → types}/workspace/ref.ts +1 -1
  613. package/src/utils/logger.ts +6 -1
  614. package/dist/contracts/ids.d.ts +0 -2
  615. package/dist/contracts/ids.d.ts.map +0 -1
  616. package/dist/contracts/ids.js +0 -2
  617. package/dist/contracts/ids.js.map +0 -1
  618. package/dist/session/events/schema-version.d.ts.map +0 -1
  619. package/dist/session/events/schema-version.js.map +0 -1
  620. package/dist/session/events/types.d.ts.map +0 -1
  621. package/dist/session/events/types.js +0 -2
  622. package/dist/session/events/types.js.map +0 -1
  623. package/dist/session/hierarchy/__tests__/session.test.d.ts +0 -2
  624. package/dist/session/hierarchy/__tests__/session.test.d.ts.map +0 -1
  625. package/dist/session/hierarchy/__tests__/session.test.js.map +0 -1
  626. package/dist/session/hierarchy/actor.d.ts.map +0 -1
  627. package/dist/session/hierarchy/index.d.ts +0 -9
  628. package/dist/session/hierarchy/index.d.ts.map +0 -1
  629. package/dist/session/hierarchy/index.js +0 -4
  630. package/dist/session/hierarchy/index.js.map +0 -1
  631. package/dist/session/hierarchy/lineage.d.ts.map +0 -1
  632. package/dist/session/hierarchy/lineage.js.map +0 -1
  633. package/dist/session/hierarchy/project.d.ts.map +0 -1
  634. package/dist/session/hierarchy/project.js +0 -2
  635. package/dist/session/hierarchy/project.js.map +0 -1
  636. package/dist/session/hierarchy/session.d.ts +0 -71
  637. package/dist/session/hierarchy/session.d.ts.map +0 -1
  638. package/dist/session/hierarchy/session.js.map +0 -1
  639. package/dist/session/hierarchy/sub-session.d.ts.map +0 -1
  640. package/dist/session/hierarchy/sub-session.js.map +0 -1
  641. package/dist/session/hierarchy/tenant.d.ts.map +0 -1
  642. package/dist/session/hierarchy/tenant.js +0 -2
  643. package/dist/session/hierarchy/tenant.js.map +0 -1
  644. package/dist/session/hierarchy/thread.d.ts.map +0 -1
  645. package/dist/session/hierarchy/thread.js +0 -2
  646. package/dist/session/hierarchy/thread.js.map +0 -1
  647. package/dist/session/retention/archive-backend-ref.d.ts.map +0 -1
  648. package/dist/session/retention/archive-backend-ref.js.map +0 -1
  649. package/dist/session/retention/policy.d.ts.map +0 -1
  650. package/dist/session/retention/policy.js.map +0 -1
  651. package/dist/session/summary/deliverable.d.ts.map +0 -1
  652. package/dist/session/summary/deliverable.js.map +0 -1
  653. package/dist/session/summary/ref.d.ts.map +0 -1
  654. package/dist/session/summary/ref.js +0 -51
  655. package/dist/session/summary/ref.js.map +0 -1
  656. package/dist/session/workspace/ref.d.ts.map +0 -1
  657. package/dist/session/workspace/ref.js.map +0 -1
  658. package/dist/store/session/messages.js.map +0 -1
  659. package/dist/tools/builtins/__tests__/structuredOutput.example.d.ts +0 -140
  660. package/dist/tools/builtins/__tests__/structuredOutput.example.d.ts.map +0 -1
  661. package/dist/tools/builtins/__tests__/structuredOutput.example.js +0 -183
  662. package/dist/tools/builtins/__tests__/structuredOutput.example.js.map +0 -1
  663. package/dist/types/run/state.d.ts +0 -30
  664. package/dist/types/run/state.d.ts.map +0 -1
  665. package/dist/types/run/state.js +0 -2
  666. package/dist/types/run/state.js.map +0 -1
  667. package/src/contracts/ids.ts +0 -1
  668. package/src/session/hierarchy/index.ts +0 -18
  669. package/src/tools/builtins/__tests__/structuredOutput.example.ts +0 -221
  670. package/src/types/run/state.ts +0 -35
  671. /package/dist/{session → types}/retention/archive-backend-ref.d.ts +0 -0
  672. /package/dist/{session → types}/retention/archive-backend-ref.js +0 -0
  673. /package/dist/{session → types}/retention/policy.d.ts +0 -0
  674. /package/dist/{session → types}/retention/policy.js +0 -0
  675. /package/dist/{session/hierarchy → types/run}/lineage.js +0 -0
  676. /package/dist/{session/events → types/run}/schema-version.d.ts +0 -0
  677. /package/dist/{session/events → types/run}/schema-version.js +0 -0
  678. /package/dist/{session/hierarchy → types/session}/actor.js +0 -0
  679. /package/dist/{store → types}/session/messages.js +0 -0
  680. /package/dist/{session/hierarchy → types/session}/sub-session.js +0 -0
  681. /package/dist/{session → types}/summary/deliverable.js +0 -0
  682. /package/dist/{session → types}/workspace/ref.js +0 -0
  683. /package/src/{session → types}/retention/archive-backend-ref.ts +0 -0
  684. /package/src/{session → types}/retention/policy.ts +0 -0
  685. /package/src/{session/events → types/run}/schema-version.ts +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,88 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.4.3
4
+
5
+ ### Patch Changes
6
+
7
+ - ddd0aad: Test-side hardening from ses_006 pre-freeze fix.
8
+
9
+ - **New test: `runtime/query/iteration/phases/advisory.test.ts`** — pins the advisory-phase mutation boundary where fired advisories inject user messages via `runMgr.pushMessage(createUserMessage(...))`. 13 assertions covering early-return paths, happy-path exactly-once calls, envelope format, warnings + decisions rendering, and trigger-selection semantics. Before this test a regression removing the `pushMessage` call at `advisory.ts:154` would pass typecheck, lint, the coverage gate, and every existing `src/advisory/*` test. It now fails deterministically.
10
+ - **`LogLevel` gains `'silent'`** — purely additive; the value short-circuits every `log()` call. Used by the SDK's vitest setup to suppress unmocked `getRootLogger()` stderr writes so GitHub Actions stops annotating `[ERROR]`-level log lines as workflow errors. Consumer impact: zero unless you pass `'silent'` to `configureLogger()` yourself.
11
+ - No runtime behavior change. No public surface additions beyond the one `LogLevel` union member.
12
+
13
+ ## 0.4.2
14
+
15
+ ### Patch Changes
16
+
17
+ - 14ff062: Public-surface barrel split (ses_011-sdk-public-surface).
18
+
19
+ **Note on bump level.** Originally classified as minor when ses_011 froze on 2026-04-21. Downgraded to patch post-freeze (2026-04-21) as part of a repo-wide release-cadence policy decision: the pre-1.0 SDK reserves minor/major for feature-delta releases, and internal refactors that keep the public-surface baseline intact ride patch. This changeset explicitly preserved all 380 pre-existing public names (verified by `.github/scripts/verify-public-surface.mjs`), so patch is semver-accurate at the name-set level. See `.changeset/sdk-replay-primitive.md` for the same-day rationale block.
20
+
21
+ `packages/sdk/src/index.ts` splits from 357 lines of mixed re-exports into three focused bucket files, consumed through a thin 10-line root barrel:
22
+
23
+ - **`public-types.ts`** — every type a consumer type-checks against (branded IDs, wire shapes, domain entities, store contracts, event unions, config types).
24
+ - **`public-runtime.ts`** — every runtime value (classes, functions, constants, zod schemas, error classes, ID generators).
25
+ - **`public-tools.ts`** — agent-tool surface (`defineTool` primitive, built-in tools, domain builders, connector tool bridge, `createRAGTool`).
26
+
27
+ No consumer-visible change. All 380 previously-exported names continue to be exported; none removed, none added. Verified by a baseline snapshot (`.github/scripts/public-surface-baseline.json` — captured at the tip of ses_010) plus a CI smoke test (`.github/scripts/verify-public-surface.mjs`) that loads `@namzu/sdk` at runtime and compares `Object.keys()` against the baseline.
28
+
29
+ Additional cleanup:
30
+
31
+ - The `ProjectId` / `RunId` / `MessageId` / `SessionId` double-channel (reachable through both `contracts/` and `types/ids/`) is closed. IDs come from `types/ids/` uniformly; `contracts/ids.ts` is deleted; `contracts/api.ts` imports IDs from `../types/ids/` directly.
32
+ - The `RunStatus` carve-out is folded. Since ses_010 renamed the wire-side alias to `WireRunStatus`, the domain `RunStatus` can flow through `types/run/index.ts` with a plain `export *` — no explicit carve-out needed.
33
+
34
+ - 2eccadd: Replay primitive v1 — fork an existing run from any stored checkpoint with optional mutation at the fork point (ses_005-deterministic-replay).
35
+
36
+ **Note on bump level.** This release adds new public exports (`prepareReplayState`, `listCheckpoints`, `projectEmergencyToCheckpoint`, `MutationNotApplicableError`, the `Mutation` / `CheckpointListEntry` / `ReplayAttribution` types, `Run.replayOf?`). In strict semver these would be a minor bump. Classified as patch here because the SDK is pre-1.0 and the project reserves minor/major for larger feature deltas — 0.5.0 should land with a more complete replay surface (5b end-to-end wrapper, reproduce mode, or similar) rather than just this state-preparation half. Decision logged 2026-04-21 post-freeze of ses_005.
37
+
38
+ New public runtime values:
39
+
40
+ - **`prepareReplayState({ baseDir, runId, fromCheckpoint, mutate?, emergencyDir? })`** — pure-read helper that resolves `fromCheckpoint` (`CheckpointId | 'latest' | 'emergency'`), applies mutations, and returns `{ messages, sourceCheckpoint, attribution }` ready to thread into a `query(...)` call.
41
+ - **`listCheckpoints({ baseDir, runId })`** — lists a run's checkpoints as lightweight `CheckpointListEntry` projections.
42
+ - **`projectEmergencyToCheckpoint(dump)`** — project an `EmergencySaveData` snapshot to an `IterationCheckpoint` shape with deterministic `cp_emergency_*` id.
43
+ - **`MutationNotApplicableError`** — thrown by `prepareReplayState` when a mutation targets a tool call that is not pending at the fork point; carries `availableToolCallIds` for recovery.
44
+
45
+ New public types:
46
+
47
+ - **`Mutation`** — discriminated union; single `injectToolResponse` variant in v1.
48
+ - **`CheckpointListEntry`** — listing projection distinct from the pre-existing HITL `CheckpointSummary`.
49
+ - **`ReplayAttribution`** — `{ sourceRunId, fromCheckpointId, mutations, replayedAt }` record.
50
+ - **`Run.replayOf?: ReplayAttribution`** — optional attribution field; `undefined` on original runs.
51
+
52
+ Scope and non-scope — v1 ships **forked execution from a captured checkpoint, not byte-for-byte reproduction**. Past the fork point, provider calls and tool calls execute live. Deterministic reproduce mode is deferred to a follow-up session.
53
+
54
+ A single-call `replay({ runId, opts })` wrapper is intentionally not shipped in v1. Composing `listCheckpoints → prepareReplayState → caller-owned query()` is the v1 flow; the wrapper requires a `ReplayEnvironment` design (provider, tools, resume handler, session scope) that lands in a follow-up session.
55
+
56
+ See `docs/sdk/runtime/replay.md` for the full primitive docs, determinism envelope, and non-scope.
57
+
58
+ - 9efae03: Type layering rationalised (ses_010-sdk-type-layering).
59
+
60
+ **Note on bump level.** Originally classified as minor when ses_010 froze on 2026-04-21. Downgraded to patch post-freeze (2026-04-21) as part of a repo-wide release-cadence policy decision: the pre-1.0 SDK reserves minor/major for feature-delta releases, and internal refactors that keep the public-surface baseline intact ride patch. This changeset introduced no consumer-visible new names and renamed `AgentRun → Run` with a `@deprecated` alias, which the policy treats as a patch-level churn for 0.x. See `.changeset/sdk-replay-primitive.md` for the same-day rationale block.
61
+
62
+ All pure shapes — entities, store contracts, wire types, events — now live under `packages/sdk/src/types/`. Feature folders (`session/`, `manager/`, `store/`, `agent/`, `provider/`) contain runtime code only.
63
+
64
+ **Public surface changes:**
65
+
66
+ - `AgentRun` renamed to `Run`. `AgentRun` and `AgentSession` are kept as `@deprecated` type aliases for the 0.4.x compatibility window — existing code importing either continues to compile. New code should use `Run`.
67
+ - Wire-side `Run` interface renamed to `WireRun`, mirroring the existing `WireRunStatus` precedent. The root `@namzu/sdk` barrel now exports domain `Run` and wire `WireRun` with no collision.
68
+ - Internal folder `packages/sdk/src/session/hierarchy/` removed. Only the `@namzu/sdk` root barrel (`.`) is a supported import surface; deep-imports were never supported and the old path no longer exists.
69
+
70
+ No runtime behaviour change. Every entity previously exported (`Project`, `Thread`, `Session`, `SubSession`, `ActorRef`, `Lineage`, `Tenant`) continues to be exported from `@namzu/sdk`.
71
+
72
+ ## Unreleased
73
+
74
+ ### Minor Changes
75
+
76
+ - ses_010-sdk-type-layering: Type layering rationalised. All pure shapes (entities, store contracts, wire types, events) now live under `packages/sdk/src/types/`; feature folders under `session/`, `manager/`, `store/`, `agent/`, `provider/` contain runtime code only.
77
+
78
+ Public surface changes:
79
+
80
+ - `AgentRun` renamed to `Run`. `AgentRun` and `AgentSession` remain as `@deprecated` type aliases for the 0.4.x compatibility window; consumers importing either keep compiling. New code should use `Run`.
81
+ - The wire-side `Run` interface at `contracts/api.ts` renamed to `WireRun` — mirrors the existing `WireRunStatus` precedent. The root `@namzu/sdk` barrel now exports domain `Run` (from `types/run/`) and wire `WireRun` (from `contracts/`) with no same-symbol collision.
82
+ - Internal folder `packages/sdk/src/session/hierarchy/` removed. Only the `@namzu/sdk` root barrel (`.`) is a supported import surface; deep-imports were never supported and the path no longer exists.
83
+
84
+ No change to runtime behaviour. Every entity shape that used to live under `session/hierarchy/` (`Project`, `Thread`, `Session`, `SubSession`, `ActorRef`, `Lineage`, `Tenant`) continues to be exported from `@namzu/sdk` — only the internal folder structure moved.
85
+
3
86
  ## 0.4.1
4
87
 
5
88
  ### Patch Changes
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=replay-public-surface.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replay-public-surface.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/replay-public-surface.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,45 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { CheckpointManager, MutationNotApplicableError, listCheckpoints, prepareReplayState, projectEmergencyToCheckpoint, } from '../index.js';
3
+ describe('ses_005 replay primitive — root public surface', () => {
4
+ it('exposes runtime values at the package root', () => {
5
+ expect(typeof prepareReplayState).toBe('function');
6
+ expect(typeof listCheckpoints).toBe('function');
7
+ expect(typeof projectEmergencyToCheckpoint).toBe('function');
8
+ expect(typeof CheckpointManager).toBe('function');
9
+ expect(typeof MutationNotApplicableError).toBe('function');
10
+ });
11
+ it('MutationNotApplicableError is a throwable Error subclass with availableToolCallIds', () => {
12
+ const err = new MutationNotApplicableError('nope', ['call_x', 'call_y']);
13
+ expect(err).toBeInstanceOf(Error);
14
+ expect(err).toBeInstanceOf(MutationNotApplicableError);
15
+ expect(err.name).toBe('MutationNotApplicableError');
16
+ expect(err.availableToolCallIds).toEqual(['call_x', 'call_y']);
17
+ });
18
+ // Type-only checks — if these expressions compile, the type surface is
19
+ // correctly flowing through public-types.ts.
20
+ it('exposes replay types (compile-time check)', () => {
21
+ const mutation = {
22
+ type: 'injectToolResponse',
23
+ toolCallId: 'call_a',
24
+ response: { success: true, output: '' },
25
+ };
26
+ const entry = {
27
+ id: 'cp_x',
28
+ runId: 'run_x',
29
+ iteration: 0,
30
+ createdAt: 0,
31
+ messageCount: 0,
32
+ };
33
+ const attribution = {
34
+ sourceRunId: 'run_source',
35
+ fromCheckpointId: 'cp_x',
36
+ mutations: [mutation],
37
+ replayedAt: 0,
38
+ };
39
+ const run = { replayOf: attribution };
40
+ expect(mutation.type).toBe('injectToolResponse');
41
+ expect(entry.iteration).toBe(0);
42
+ expect(run.replayOf?.sourceRunId).toBe('run_source');
43
+ });
44
+ });
45
+ //# sourceMappingURL=replay-public-surface.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replay-public-surface.test.js","sourceRoot":"","sources":["../../src/__tests__/replay-public-surface.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EACN,iBAAiB,EACjB,0BAA0B,EAC1B,eAAe,EACf,kBAAkB,EAClB,4BAA4B,GAC5B,MAAM,aAAa,CAAA;AAGpB,QAAQ,CAAC,gDAAgD,EAAE,GAAG,EAAE;IAC/D,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACrD,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAClD,MAAM,CAAC,OAAO,eAAe,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC/C,MAAM,CAAC,OAAO,4BAA4B,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC5D,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACjD,MAAM,CAAC,OAAO,0BAA0B,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAC3D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,oFAAoF,EAAE,GAAG,EAAE;QAC7F,MAAM,GAAG,GAAG,IAAI,0BAA0B,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAU,CAAC,CAAA;QACjF,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;QACjC,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,0BAA0B,CAAC,CAAA;QACtD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAA;QACnD,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;IAC/D,CAAC,CAAC,CAAA;IAEF,uEAAuE;IACvE,6CAA6C;IAC7C,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACpD,MAAM,QAAQ,GAAa;YAC1B,IAAI,EAAE,oBAAoB;YAC1B,UAAU,EAAE,QAAiB;YAC7B,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE;SACvC,CAAA;QACD,MAAM,KAAK,GAAwB;YAClC,EAAE,EAAE,MAAe;YACnB,KAAK,EAAE,OAAgB;YACvB,SAAS,EAAE,CAAC;YACZ,SAAS,EAAE,CAAC;YACZ,YAAY,EAAE,CAAC;SACf,CAAA;QACD,MAAM,WAAW,GAAsB;YACtC,WAAW,EAAE,YAAqB;YAClC,gBAAgB,EAAE,MAAe;YACjC,SAAS,EAAE,CAAC,QAAQ,CAAC;YACrB,UAAU,EAAE,CAAC;SACb,CAAA;QACD,MAAM,GAAG,GAA0B,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAA;QAC5D,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;QAChD,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC/B,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACrD,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Current-code invariants asserted (2026-04-21, ses_006 Phase 6):
3
+ *
4
+ * - `AdvisoryContext` composes a registry + executor + evaluator +
5
+ * optional budget. It is a dumb container + a call-history log.
6
+ * - `recordCall(record)` appends to `callHistory` in call order.
7
+ * - `getBudgetStatus()`:
8
+ * - `used` = `callHistory.length`.
9
+ * - `total` = `budget?.maxCallsPerRun` (undefined when no budget).
10
+ * - `remaining` = total − used when total defined; undefined else.
11
+ * - `checkBudget()`:
12
+ * - Allowed when no budget OR remaining > 0.
13
+ * - Denied with reason when remaining ≤ 0.
14
+ */
15
+ export {};
16
+ //# sourceMappingURL=context.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.test.d.ts","sourceRoot":"","sources":["../../src/advisory/context.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Current-code invariants asserted (2026-04-21, ses_006 Phase 6):
3
+ *
4
+ * - `AdvisoryContext` composes a registry + executor + evaluator +
5
+ * optional budget. It is a dumb container + a call-history log.
6
+ * - `recordCall(record)` appends to `callHistory` in call order.
7
+ * - `getBudgetStatus()`:
8
+ * - `used` = `callHistory.length`.
9
+ * - `total` = `budget?.maxCallsPerRun` (undefined when no budget).
10
+ * - `remaining` = total − used when total defined; undefined else.
11
+ * - `checkBudget()`:
12
+ * - Allowed when no budget OR remaining > 0.
13
+ * - Denied with reason when remaining ≤ 0.
14
+ */
15
+ import { describe, expect, it } from 'vitest';
16
+ import { AdvisoryContext } from './context.js';
17
+ function stubRegistry() {
18
+ return {};
19
+ }
20
+ function stubExecutor() {
21
+ return {};
22
+ }
23
+ function stubEvaluator() {
24
+ return {};
25
+ }
26
+ function callRecord(id) {
27
+ return {
28
+ advisorId: id,
29
+ request: { question: 'q' },
30
+ result: { advice: 'a' },
31
+ usage: {
32
+ promptTokens: 0,
33
+ completionTokens: 0,
34
+ totalTokens: 0,
35
+ cachedTokens: 0,
36
+ cacheWriteTokens: 0,
37
+ },
38
+ cost: { inputCostPer1M: 0, outputCostPer1M: 0, totalCost: 0, cacheDiscount: 0 },
39
+ durationMs: 0,
40
+ iteration: 0,
41
+ timestamp: Date.now(),
42
+ };
43
+ }
44
+ describe('AdvisoryContext', () => {
45
+ it('starts with empty callHistory', () => {
46
+ const ctx = new AdvisoryContext(stubRegistry(), stubExecutor(), stubEvaluator());
47
+ expect(ctx.callHistory).toEqual([]);
48
+ });
49
+ it('recordCall appends in order', () => {
50
+ const ctx = new AdvisoryContext(stubRegistry(), stubExecutor(), stubEvaluator());
51
+ ctx.recordCall(callRecord('a'));
52
+ ctx.recordCall(callRecord('b'));
53
+ expect(ctx.callHistory.map((r) => r.advisorId)).toEqual(['a', 'b']);
54
+ });
55
+ describe('getBudgetStatus', () => {
56
+ it('no budget → total + remaining undefined; used reflects history length', () => {
57
+ const ctx = new AdvisoryContext(stubRegistry(), stubExecutor(), stubEvaluator());
58
+ ctx.recordCall(callRecord('a'));
59
+ expect(ctx.getBudgetStatus()).toEqual({ used: 1, total: undefined, remaining: undefined });
60
+ });
61
+ it('with budget → total + remaining computed', () => {
62
+ const ctx = new AdvisoryContext(stubRegistry(), stubExecutor(), stubEvaluator(), {
63
+ maxCallsPerRun: 3,
64
+ });
65
+ ctx.recordCall(callRecord('a'));
66
+ expect(ctx.getBudgetStatus()).toEqual({ used: 1, total: 3, remaining: 2 });
67
+ });
68
+ });
69
+ describe('checkBudget', () => {
70
+ it('allowed when no budget', () => {
71
+ const ctx = new AdvisoryContext(stubRegistry(), stubExecutor(), stubEvaluator());
72
+ expect(ctx.checkBudget()).toEqual({ allowed: true });
73
+ });
74
+ it('allowed when remaining > 0', () => {
75
+ const ctx = new AdvisoryContext(stubRegistry(), stubExecutor(), stubEvaluator(), {
76
+ maxCallsPerRun: 2,
77
+ });
78
+ ctx.recordCall(callRecord('a'));
79
+ expect(ctx.checkBudget()).toEqual({ allowed: true });
80
+ });
81
+ it('denied when remaining <= 0', () => {
82
+ const ctx = new AdvisoryContext(stubRegistry(), stubExecutor(), stubEvaluator(), {
83
+ maxCallsPerRun: 1,
84
+ });
85
+ ctx.recordCall(callRecord('a'));
86
+ const result = ctx.checkBudget();
87
+ expect(result.allowed).toBe(false);
88
+ expect(result.reason).toMatch(/budget exhausted/);
89
+ });
90
+ });
91
+ });
92
+ //# sourceMappingURL=context.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.test.js","sourceRoot":"","sources":["../../src/advisory/context.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Current-code invariants asserted (2026-04-21, ses_006 Phase 6):
3
+ *
4
+ * - Constructor filters OUT triggers with `enabled: false` + sorts
5
+ * by `priority` desc (higher first). Triggers without priority
6
+ * sort at 0.
7
+ * - `evaluate(state)` returns every trigger whose condition matches
8
+ * AND whose cooldown has elapsed. Order reflects the sorted
9
+ * trigger list.
10
+ * - Budget exhausted (callCount ≥ maxCallsPerRun) → evaluate returns [].
11
+ * - `recordFiring(id, iteration)` updates both `lastFiredMap` (for
12
+ * cooldown) and `callCount` (for budget).
13
+ * - Condition matchers:
14
+ * - `on_error`: matches iff state.lastError is set; if categories
15
+ * are given, requires at least one category substring match.
16
+ * - `on_iteration`: `state.iteration % everyN === 0`.
17
+ * - `on_context_percent`: `state.contextWindowPercent >= threshold`.
18
+ * - `on_tool_category`: `state.lastToolCategory` present + in
19
+ * `condition.categories`.
20
+ * - `on_cost_percent`: costBudgetPercent present + ≥ threshold.
21
+ * - `on_complexity`: totalToolCalls ≥ toolCallThreshold.
22
+ * - `custom`: calls the predicate.
23
+ * - Cooldown: trigger does NOT fire if `iteration - lastFired <
24
+ * cooldownIterations`. No cooldown → always eligible.
25
+ *
26
+ * - **Purity:** evaluate() is pure relative to the advisory phase —
27
+ * it returns triggers; it does NOT inject messages or mutate
28
+ * external state. The injection happens in the advisory phase
29
+ * (runtime/query/iteration/phases/advisory.ts), which pushes a
30
+ * user message via `runMgr.pushMessage`. That file is OUT of
31
+ * scope for this test file (covered by the phase test).
32
+ */
33
+ export {};
34
+ //# sourceMappingURL=evaluator.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluator.test.d.ts","sourceRoot":"","sources":["../../src/advisory/evaluator.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG"}
@@ -0,0 +1,172 @@
1
+ /**
2
+ * Current-code invariants asserted (2026-04-21, ses_006 Phase 6):
3
+ *
4
+ * - Constructor filters OUT triggers with `enabled: false` + sorts
5
+ * by `priority` desc (higher first). Triggers without priority
6
+ * sort at 0.
7
+ * - `evaluate(state)` returns every trigger whose condition matches
8
+ * AND whose cooldown has elapsed. Order reflects the sorted
9
+ * trigger list.
10
+ * - Budget exhausted (callCount ≥ maxCallsPerRun) → evaluate returns [].
11
+ * - `recordFiring(id, iteration)` updates both `lastFiredMap` (for
12
+ * cooldown) and `callCount` (for budget).
13
+ * - Condition matchers:
14
+ * - `on_error`: matches iff state.lastError is set; if categories
15
+ * are given, requires at least one category substring match.
16
+ * - `on_iteration`: `state.iteration % everyN === 0`.
17
+ * - `on_context_percent`: `state.contextWindowPercent >= threshold`.
18
+ * - `on_tool_category`: `state.lastToolCategory` present + in
19
+ * `condition.categories`.
20
+ * - `on_cost_percent`: costBudgetPercent present + ≥ threshold.
21
+ * - `on_complexity`: totalToolCalls ≥ toolCallThreshold.
22
+ * - `custom`: calls the predicate.
23
+ * - Cooldown: trigger does NOT fire if `iteration - lastFired <
24
+ * cooldownIterations`. No cooldown → always eligible.
25
+ *
26
+ * - **Purity:** evaluate() is pure relative to the advisory phase —
27
+ * it returns triggers; it does NOT inject messages or mutate
28
+ * external state. The injection happens in the advisory phase
29
+ * (runtime/query/iteration/phases/advisory.ts), which pushes a
30
+ * user message via `runMgr.pushMessage`. That file is OUT of
31
+ * scope for this test file (covered by the phase test).
32
+ */
33
+ import { describe, expect, it, vi } from 'vitest';
34
+ import { TriggerEvaluator } from './evaluator.js';
35
+ function trigger(id, overrides = {}) {
36
+ return {
37
+ id,
38
+ condition: { type: 'on_iteration', everyN: 1 },
39
+ ...overrides,
40
+ };
41
+ }
42
+ function state(overrides = {}) {
43
+ return {
44
+ iteration: 1,
45
+ totalToolCalls: 0,
46
+ totalTokens: 0,
47
+ contextWindowPercent: 0,
48
+ totalCostUsd: 0,
49
+ costBudgetPercent: undefined,
50
+ lastError: undefined,
51
+ lastToolCategory: undefined,
52
+ advisoryCallCount: 0,
53
+ ...overrides,
54
+ };
55
+ }
56
+ describe('TriggerEvaluator — constructor', () => {
57
+ it('filters out triggers with enabled: false', () => {
58
+ const e = new TriggerEvaluator([trigger('a'), trigger('b', { enabled: false })]);
59
+ expect(e.evaluate(state()).map((t) => t.id)).toEqual(['a']);
60
+ });
61
+ it('sorts triggers by priority descending', () => {
62
+ const e = new TriggerEvaluator([
63
+ trigger('low', { priority: 1 }),
64
+ trigger('high', { priority: 10 }),
65
+ trigger('mid', { priority: 5 }),
66
+ ]);
67
+ expect(e.evaluate(state()).map((t) => t.id)).toEqual(['high', 'mid', 'low']);
68
+ });
69
+ });
70
+ describe('TriggerEvaluator — budget', () => {
71
+ it('returns [] when callCount >= maxCallsPerRun', () => {
72
+ const e = new TriggerEvaluator([trigger('a')], { maxCallsPerRun: 1 });
73
+ e.recordFiring('a', 1);
74
+ expect(e.evaluate(state({ iteration: 2 }))).toEqual([]);
75
+ });
76
+ it('ignores budget when maxCallsPerRun is not set', () => {
77
+ const e = new TriggerEvaluator([trigger('a')]);
78
+ e.recordFiring('a', 1);
79
+ e.recordFiring('a', 2);
80
+ expect(e.evaluate(state({ iteration: 3 })).length).toBeGreaterThan(0);
81
+ });
82
+ });
83
+ describe('TriggerEvaluator — cooldown', () => {
84
+ it('blocks triggers in their cooldown window', () => {
85
+ const e = new TriggerEvaluator([trigger('a', { cooldownIterations: 3 })]);
86
+ e.recordFiring('a', 1);
87
+ expect(e.evaluate(state({ iteration: 2 })).map((t) => t.id)).toEqual([]);
88
+ expect(e.evaluate(state({ iteration: 3 })).map((t) => t.id)).toEqual([]);
89
+ expect(e.evaluate(state({ iteration: 4 })).map((t) => t.id)).toEqual(['a']);
90
+ });
91
+ it('always fires when no cooldown is configured', () => {
92
+ const e = new TriggerEvaluator([trigger('a')]);
93
+ e.recordFiring('a', 1);
94
+ expect(e.evaluate(state({ iteration: 2 })).map((t) => t.id)).toEqual(['a']);
95
+ });
96
+ });
97
+ describe('TriggerEvaluator — condition matchers', () => {
98
+ it('on_error: requires lastError to be set', () => {
99
+ const e = new TriggerEvaluator([trigger('t', { condition: { type: 'on_error' } })]);
100
+ expect(e.evaluate(state())).toEqual([]);
101
+ expect(e.evaluate(state({ lastError: 'boom' })).map((t) => t.id)).toEqual(['t']);
102
+ });
103
+ it('on_error with categories: at least one substring match', () => {
104
+ const e = new TriggerEvaluator([
105
+ trigger('t', { condition: { type: 'on_error', categories: ['timeout', 'permission'] } }),
106
+ ]);
107
+ expect(e.evaluate(state({ lastError: 'Connection timeout' })).map((t) => t.id)).toEqual(['t']);
108
+ expect(e.evaluate(state({ lastError: 'Syntax error' }))).toEqual([]);
109
+ });
110
+ it('on_iteration: iteration % everyN === 0', () => {
111
+ const e = new TriggerEvaluator([
112
+ trigger('t', { condition: { type: 'on_iteration', everyN: 3 } }),
113
+ ]);
114
+ expect(e.evaluate(state({ iteration: 1 }))).toEqual([]);
115
+ expect(e.evaluate(state({ iteration: 3 })).map((t) => t.id)).toEqual(['t']);
116
+ expect(e.evaluate(state({ iteration: 6 })).map((t) => t.id)).toEqual(['t']);
117
+ });
118
+ it('on_context_percent: contextWindowPercent >= threshold', () => {
119
+ const e = new TriggerEvaluator([
120
+ trigger('t', { condition: { type: 'on_context_percent', threshold: 80 } }),
121
+ ]);
122
+ expect(e.evaluate(state({ contextWindowPercent: 70 }))).toEqual([]);
123
+ expect(e.evaluate(state({ contextWindowPercent: 80 })).map((t) => t.id)).toEqual(['t']);
124
+ });
125
+ it('on_tool_category: lastToolCategory present + in categories list', () => {
126
+ const e = new TriggerEvaluator([
127
+ trigger('t', {
128
+ condition: { type: 'on_tool_category', categories: ['network', 'filesystem'] },
129
+ }),
130
+ ]);
131
+ expect(e.evaluate(state())).toEqual([]);
132
+ expect(e.evaluate(state({ lastToolCategory: 'other' }))).toEqual([]);
133
+ expect(e.evaluate(state({ lastToolCategory: 'network' })).map((t) => t.id)).toEqual(['t']);
134
+ });
135
+ it('on_cost_percent: costBudgetPercent present + >= threshold', () => {
136
+ const e = new TriggerEvaluator([
137
+ trigger('t', { condition: { type: 'on_cost_percent', threshold: 75 } }),
138
+ ]);
139
+ expect(e.evaluate(state())).toEqual([]); // undefined costBudgetPercent
140
+ expect(e.evaluate(state({ costBudgetPercent: 50 }))).toEqual([]);
141
+ expect(e.evaluate(state({ costBudgetPercent: 80 })).map((t) => t.id)).toEqual(['t']);
142
+ });
143
+ it('on_complexity: totalToolCalls >= toolCallThreshold', () => {
144
+ const e = new TriggerEvaluator([
145
+ trigger('t', { condition: { type: 'on_complexity', toolCallThreshold: 10 } }),
146
+ ]);
147
+ expect(e.evaluate(state({ totalToolCalls: 5 }))).toEqual([]);
148
+ expect(e.evaluate(state({ totalToolCalls: 10 })).map((t) => t.id)).toEqual(['t']);
149
+ });
150
+ it('custom: calls the predicate with state', () => {
151
+ const predicate = vi.fn(() => true);
152
+ const e = new TriggerEvaluator([trigger('t', { condition: { type: 'custom', predicate } })]);
153
+ const s = state({ iteration: 42 });
154
+ expect(e.evaluate(s).map((t) => t.id)).toEqual(['t']);
155
+ expect(predicate).toHaveBeenCalledWith(s);
156
+ });
157
+ });
158
+ describe('TriggerEvaluator — recordFiring', () => {
159
+ it('updates lastFiredMap + callCount', () => {
160
+ const e = new TriggerEvaluator([trigger('a', { cooldownIterations: 5 })], {
161
+ maxCallsPerRun: 2,
162
+ });
163
+ e.recordFiring('a', 1);
164
+ // cooldown active: no fires in iterations 2–5
165
+ expect(e.evaluate(state({ iteration: 2 }))).toEqual([]);
166
+ // cooldown lifted at 6, but budget allows one more
167
+ e.recordFiring('a', 6);
168
+ // budget exhausted
169
+ expect(e.evaluate(state({ iteration: 11 }))).toEqual([]);
170
+ });
171
+ });
172
+ //# sourceMappingURL=evaluator.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluator.test.js","sourceRoot":"","sources":["../../src/advisory/evaluator.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Current-code invariants asserted (2026-04-21, ses_006 Phase 6):
3
+ *
4
+ * - `AdvisoryExecutor.consult(advisor, request, callCtx)`:
5
+ * - Builds a system prompt (see buildSystemPrompt tests).
6
+ * - Builds a context message block (see buildContext tests).
7
+ * - Concatenates `[system, ...context, user(question)]` and calls
8
+ * `advisor.provider.chat(...)` with `toolChoice: 'none'`.
9
+ * - Parses the response via a passthrough `{ advice: rawContent }`
10
+ * shape (no structured parsing yet — advisor.ts line 166-168).
11
+ * - Returns `{result, usage, cost, durationMs}`. `cost` is a
12
+ * zero-value `CostInfo` — pricing is provider-specific and not
13
+ * applied here.
14
+ *
15
+ * - `buildSystemPrompt` priority:
16
+ * 1. `advisor.systemPrompt` (verbatim).
17
+ * 2. `advisor.persona` (via `assembleSystemPrompt`).
18
+ * 3. Fallback: "You are <name>, an advisory agent." + optional
19
+ * domains line + "Provide concise, actionable advice..."
20
+ *
21
+ * - `buildContext`:
22
+ * - Returns [] when `request.includeContext === false`.
23
+ * - Includes workingStateSummary when present.
24
+ * - Includes toolCatalog names when present + non-empty.
25
+ * - Includes truncated conversation context (most-recent-first
26
+ * walk, bounded by `advisor.maxContextTokens * CHARS_PER_TOKEN`).
27
+ * - Returns [] when no context parts were assembled.
28
+ *
29
+ * - `truncateMessages(msgs, maxTokens)` walks right-to-left and
30
+ * includes messages until the char budget is exhausted (in token
31
+ * terms). Returns the included subset preserving original order.
32
+ * No limit when `maxTokens` is undefined.
33
+ */
34
+ export {};
35
+ //# sourceMappingURL=executor.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.test.d.ts","sourceRoot":"","sources":["../../src/advisory/executor.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG"}