@namzu/sdk 0.1.8 → 0.2.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 (531) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/agents/ReactiveAgent.d.ts.map +1 -1
  3. package/dist/agents/ReactiveAgent.js +5 -3
  4. package/dist/agents/ReactiveAgent.js.map +1 -1
  5. package/dist/agents/RouterAgent.d.ts.map +1 -1
  6. package/dist/agents/RouterAgent.js +3 -0
  7. package/dist/agents/RouterAgent.js.map +1 -1
  8. package/dist/agents/SupervisorAgent.d.ts.map +1 -1
  9. package/dist/agents/SupervisorAgent.js +18 -5
  10. package/dist/agents/SupervisorAgent.js.map +1 -1
  11. package/dist/bridge/a2a/mapper.d.ts.map +1 -1
  12. package/dist/bridge/a2a/mapper.js +6 -0
  13. package/dist/bridge/a2a/mapper.js.map +1 -1
  14. package/dist/bridge/a2a/task.d.ts +2 -2
  15. package/dist/bridge/a2a/task.d.ts.map +1 -1
  16. package/dist/bridge/a2a/task.js.map +1 -1
  17. package/dist/bridge/sse/mapper.d.ts.map +1 -1
  18. package/dist/bridge/sse/mapper.js +6 -0
  19. package/dist/bridge/sse/mapper.js.map +1 -1
  20. package/dist/constants/a2a/index.d.ts +2 -2
  21. package/dist/constants/a2a/index.d.ts.map +1 -1
  22. package/dist/constants/a2a/index.js.map +1 -1
  23. package/dist/contracts/api.d.ts +22 -3
  24. package/dist/contracts/api.d.ts.map +1 -1
  25. package/dist/contracts/index.d.ts +3 -1
  26. package/dist/contracts/index.d.ts.map +1 -1
  27. package/dist/contracts/index.js.map +1 -1
  28. package/dist/gateway/local.d.ts.map +1 -1
  29. package/dist/gateway/local.js +6 -0
  30. package/dist/gateway/local.js.map +1 -1
  31. package/dist/index.d.ts +4 -0
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +4 -0
  34. package/dist/index.js.map +1 -1
  35. package/dist/manager/agent/__tests__/lifecycle.test.d.ts +2 -0
  36. package/dist/manager/agent/__tests__/lifecycle.test.d.ts.map +1 -0
  37. package/dist/manager/agent/__tests__/lifecycle.test.js +302 -0
  38. package/dist/manager/agent/__tests__/lifecycle.test.js.map +1 -0
  39. package/dist/manager/agent/lifecycle.d.ts +58 -3
  40. package/dist/manager/agent/lifecycle.d.ts.map +1 -1
  41. package/dist/manager/agent/lifecycle.js +311 -12
  42. package/dist/manager/agent/lifecycle.js.map +1 -1
  43. package/dist/manager/run/persistence.d.ts +8 -1
  44. package/dist/manager/run/persistence.d.ts.map +1 -1
  45. package/dist/manager/run/persistence.js +15 -0
  46. package/dist/manager/run/persistence.js.map +1 -1
  47. package/dist/run/reporter.d.ts.map +1 -1
  48. package/dist/run/reporter.js +25 -0
  49. package/dist/run/reporter.js.map +1 -1
  50. package/dist/runtime/query/__tests__/context.test.d.ts +2 -0
  51. package/dist/runtime/query/__tests__/context.test.d.ts.map +1 -0
  52. package/dist/runtime/query/__tests__/context.test.js +84 -0
  53. package/dist/runtime/query/__tests__/context.test.js.map +1 -0
  54. package/dist/runtime/query/context.d.ts +55 -2
  55. package/dist/runtime/query/context.d.ts.map +1 -1
  56. package/dist/runtime/query/context.js +48 -8
  57. package/dist/runtime/query/context.js.map +1 -1
  58. package/dist/runtime/query/events.d.ts.map +1 -1
  59. package/dist/runtime/query/events.js +8 -0
  60. package/dist/runtime/query/events.js.map +1 -1
  61. package/dist/runtime/query/index.d.ts +25 -2
  62. package/dist/runtime/query/index.d.ts.map +1 -1
  63. package/dist/runtime/query/index.js +11 -1
  64. package/dist/runtime/query/index.js.map +1 -1
  65. package/dist/session/__tests__/integration/_fixtures.d.ts +115 -0
  66. package/dist/session/__tests__/integration/_fixtures.d.ts.map +1 -0
  67. package/dist/session/__tests__/integration/_fixtures.js +198 -0
  68. package/dist/session/__tests__/integration/_fixtures.js.map +1 -0
  69. package/dist/session/__tests__/integration/capacity-caps.test.d.ts +13 -0
  70. package/dist/session/__tests__/integration/capacity-caps.test.d.ts.map +1 -0
  71. package/dist/session/__tests__/integration/capacity-caps.test.js +116 -0
  72. package/dist/session/__tests__/integration/capacity-caps.test.js.map +1 -0
  73. package/dist/session/__tests__/integration/e2e-spawn.test.d.ts +18 -0
  74. package/dist/session/__tests__/integration/e2e-spawn.test.d.ts.map +1 -0
  75. package/dist/session/__tests__/integration/e2e-spawn.test.js +226 -0
  76. package/dist/session/__tests__/integration/e2e-spawn.test.js.map +1 -0
  77. package/dist/session/__tests__/integration/event-stream-ordering.test.d.ts +15 -0
  78. package/dist/session/__tests__/integration/event-stream-ordering.test.d.ts.map +1 -0
  79. package/dist/session/__tests__/integration/event-stream-ordering.test.js +323 -0
  80. package/dist/session/__tests__/integration/event-stream-ordering.test.js.map +1 -0
  81. package/dist/session/__tests__/integration/handoff-broadcast-e2e.test.d.ts +12 -0
  82. package/dist/session/__tests__/integration/handoff-broadcast-e2e.test.d.ts.map +1 -0
  83. package/dist/session/__tests__/integration/handoff-broadcast-e2e.test.js +170 -0
  84. package/dist/session/__tests__/integration/handoff-broadcast-e2e.test.js.map +1 -0
  85. package/dist/session/__tests__/integration/handoff-illegal-transition.test.d.ts +18 -0
  86. package/dist/session/__tests__/integration/handoff-illegal-transition.test.d.ts.map +1 -0
  87. package/dist/session/__tests__/integration/handoff-illegal-transition.test.js +146 -0
  88. package/dist/session/__tests__/integration/handoff-illegal-transition.test.js.map +1 -0
  89. package/dist/session/__tests__/integration/handoff-single-e2e.test.d.ts +15 -0
  90. package/dist/session/__tests__/integration/handoff-single-e2e.test.d.ts.map +1 -0
  91. package/dist/session/__tests__/integration/handoff-single-e2e.test.js +163 -0
  92. package/dist/session/__tests__/integration/handoff-single-e2e.test.js.map +1 -0
  93. package/dist/session/__tests__/integration/hierarchy-lifecycle.test.d.ts +12 -0
  94. package/dist/session/__tests__/integration/hierarchy-lifecycle.test.d.ts.map +1 -0
  95. package/dist/session/__tests__/integration/hierarchy-lifecycle.test.js +157 -0
  96. package/dist/session/__tests__/integration/hierarchy-lifecycle.test.js.map +1 -0
  97. package/dist/session/__tests__/integration/migration-filesystem.test.d.ts +11 -0
  98. package/dist/session/__tests__/integration/migration-filesystem.test.d.ts.map +1 -0
  99. package/dist/session/__tests__/integration/migration-filesystem.test.js +140 -0
  100. package/dist/session/__tests__/integration/migration-filesystem.test.js.map +1 -0
  101. package/dist/session/__tests__/integration/migration-id-prefix.test.d.ts +13 -0
  102. package/dist/session/__tests__/integration/migration-id-prefix.test.d.ts.map +1 -0
  103. package/dist/session/__tests__/integration/migration-id-prefix.test.js +84 -0
  104. package/dist/session/__tests__/integration/migration-id-prefix.test.js.map +1 -0
  105. package/dist/session/__tests__/integration/prev-artifact-dag.test.d.ts +14 -0
  106. package/dist/session/__tests__/integration/prev-artifact-dag.test.d.ts.map +1 -0
  107. package/dist/session/__tests__/integration/prev-artifact-dag.test.js +241 -0
  108. package/dist/session/__tests__/integration/prev-artifact-dag.test.js.map +1 -0
  109. package/dist/session/__tests__/integration/retention-archive.test.d.ts +12 -0
  110. package/dist/session/__tests__/integration/retention-archive.test.d.ts.map +1 -0
  111. package/dist/session/__tests__/integration/retention-archive.test.js +186 -0
  112. package/dist/session/__tests__/integration/retention-archive.test.js.map +1 -0
  113. package/dist/session/__tests__/integration/summary-materialization-e2e.test.d.ts +18 -0
  114. package/dist/session/__tests__/integration/summary-materialization-e2e.test.d.ts.map +1 -0
  115. package/dist/session/__tests__/integration/summary-materialization-e2e.test.js +200 -0
  116. package/dist/session/__tests__/integration/summary-materialization-e2e.test.js.map +1 -0
  117. package/dist/session/__tests__/integration/tenant-isolation.test.d.ts +14 -0
  118. package/dist/session/__tests__/integration/tenant-isolation.test.d.ts.map +1 -0
  119. package/dist/session/__tests__/integration/tenant-isolation.test.js +180 -0
  120. package/dist/session/__tests__/integration/tenant-isolation.test.js.map +1 -0
  121. package/dist/session/errors.d.ts +60 -0
  122. package/dist/session/errors.d.ts.map +1 -0
  123. package/dist/session/errors.js +50 -0
  124. package/dist/session/errors.js.map +1 -0
  125. package/dist/session/events/index.d.ts +4 -0
  126. package/dist/session/events/index.d.ts.map +1 -0
  127. package/dist/session/events/index.js +8 -0
  128. package/dist/session/events/index.js.map +1 -0
  129. package/dist/session/events/schema-version.d.ts +13 -0
  130. package/dist/session/events/schema-version.d.ts.map +1 -0
  131. package/dist/session/events/schema-version.js +12 -0
  132. package/dist/session/events/schema-version.js.map +1 -0
  133. package/dist/session/events/types.d.ts +64 -0
  134. package/dist/session/events/types.d.ts.map +1 -0
  135. package/dist/session/events/types.js +2 -0
  136. package/dist/session/events/types.js.map +1 -0
  137. package/dist/session/handoff/__tests__/broadcast.test.d.ts +2 -0
  138. package/dist/session/handoff/__tests__/broadcast.test.d.ts.map +1 -0
  139. package/dist/session/handoff/__tests__/broadcast.test.js +243 -0
  140. package/dist/session/handoff/__tests__/broadcast.test.js.map +1 -0
  141. package/dist/session/handoff/__tests__/capacity.test.d.ts +2 -0
  142. package/dist/session/handoff/__tests__/capacity.test.d.ts.map +1 -0
  143. package/dist/session/handoff/__tests__/capacity.test.js +100 -0
  144. package/dist/session/handoff/__tests__/capacity.test.js.map +1 -0
  145. package/dist/session/handoff/__tests__/single.test.d.ts +2 -0
  146. package/dist/session/handoff/__tests__/single.test.d.ts.map +1 -0
  147. package/dist/session/handoff/__tests__/single.test.js +230 -0
  148. package/dist/session/handoff/__tests__/single.test.js.map +1 -0
  149. package/dist/session/handoff/assignment.d.ts +59 -0
  150. package/dist/session/handoff/assignment.d.ts.map +1 -0
  151. package/dist/session/handoff/assignment.js +11 -0
  152. package/dist/session/handoff/assignment.js.map +1 -0
  153. package/dist/session/handoff/broadcast.d.ts +47 -0
  154. package/dist/session/handoff/broadcast.d.ts.map +1 -0
  155. package/dist/session/handoff/broadcast.js +296 -0
  156. package/dist/session/handoff/broadcast.js.map +1 -0
  157. package/dist/session/handoff/capacity.d.ts +66 -0
  158. package/dist/session/handoff/capacity.d.ts.map +1 -0
  159. package/dist/session/handoff/capacity.js +60 -0
  160. package/dist/session/handoff/capacity.js.map +1 -0
  161. package/dist/session/handoff/events.d.ts +66 -0
  162. package/dist/session/handoff/events.d.ts.map +1 -0
  163. package/dist/session/handoff/events.js +13 -0
  164. package/dist/session/handoff/events.js.map +1 -0
  165. package/dist/session/handoff/index.d.ts +12 -0
  166. package/dist/session/handoff/index.d.ts.map +1 -0
  167. package/dist/session/handoff/index.js +9 -0
  168. package/dist/session/handoff/index.js.map +1 -0
  169. package/dist/session/handoff/single.d.ts +62 -0
  170. package/dist/session/handoff/single.d.ts.map +1 -0
  171. package/dist/session/handoff/single.js +217 -0
  172. package/dist/session/handoff/single.js.map +1 -0
  173. package/dist/session/handoff/version.d.ts +52 -0
  174. package/dist/session/handoff/version.d.ts.map +1 -0
  175. package/dist/session/handoff/version.js +36 -0
  176. package/dist/session/handoff/version.js.map +1 -0
  177. package/dist/session/hierarchy/__tests__/session.test.d.ts +2 -0
  178. package/dist/session/hierarchy/__tests__/session.test.d.ts.map +1 -0
  179. package/dist/session/hierarchy/__tests__/session.test.js +67 -0
  180. package/dist/session/hierarchy/__tests__/session.test.js.map +1 -0
  181. package/dist/session/hierarchy/actor.d.ts +26 -0
  182. package/dist/session/hierarchy/actor.d.ts.map +1 -0
  183. package/dist/session/hierarchy/actor.js +2 -0
  184. package/dist/session/hierarchy/actor.js.map +1 -0
  185. package/dist/session/hierarchy/index.d.ts +8 -0
  186. package/dist/session/hierarchy/index.d.ts.map +1 -0
  187. package/dist/session/hierarchy/index.js +4 -0
  188. package/dist/session/hierarchy/index.js.map +1 -0
  189. package/dist/session/hierarchy/lineage.d.ts +15 -0
  190. package/dist/session/hierarchy/lineage.d.ts.map +1 -0
  191. package/dist/session/hierarchy/lineage.js +2 -0
  192. package/dist/session/hierarchy/lineage.js.map +1 -0
  193. package/dist/session/hierarchy/project.d.ts +40 -0
  194. package/dist/session/hierarchy/project.d.ts.map +1 -0
  195. package/dist/session/hierarchy/project.js +2 -0
  196. package/dist/session/hierarchy/project.js.map +1 -0
  197. package/dist/session/hierarchy/session.d.ts +59 -0
  198. package/dist/session/hierarchy/session.d.ts.map +1 -0
  199. package/dist/session/hierarchy/session.js +51 -0
  200. package/dist/session/hierarchy/session.js.map +1 -0
  201. package/dist/session/hierarchy/sub-session.d.ts +76 -0
  202. package/dist/session/hierarchy/sub-session.d.ts.map +1 -0
  203. package/dist/session/hierarchy/sub-session.js +2 -0
  204. package/dist/session/hierarchy/sub-session.js.map +1 -0
  205. package/dist/session/hierarchy/tenant.d.ts +13 -0
  206. package/dist/session/hierarchy/tenant.d.ts.map +1 -0
  207. package/dist/session/hierarchy/tenant.js +2 -0
  208. package/dist/session/hierarchy/tenant.js.map +1 -0
  209. package/dist/session/index.d.ts +10 -0
  210. package/dist/session/index.d.ts.map +1 -0
  211. package/dist/session/index.js +15 -0
  212. package/dist/session/index.js.map +1 -0
  213. package/dist/session/intervention/__tests__/prev-artifact.test.d.ts +2 -0
  214. package/dist/session/intervention/__tests__/prev-artifact.test.d.ts.map +1 -0
  215. package/dist/session/intervention/__tests__/prev-artifact.test.js +179 -0
  216. package/dist/session/intervention/__tests__/prev-artifact.test.js.map +1 -0
  217. package/dist/session/intervention/index.d.ts +3 -0
  218. package/dist/session/intervention/index.d.ts.map +1 -0
  219. package/dist/session/intervention/index.js +8 -0
  220. package/dist/session/intervention/index.js.map +1 -0
  221. package/dist/session/intervention/prev-artifact.d.ts +103 -0
  222. package/dist/session/intervention/prev-artifact.d.ts.map +1 -0
  223. package/dist/session/intervention/prev-artifact.js +112 -0
  224. package/dist/session/intervention/prev-artifact.js.map +1 -0
  225. package/dist/session/migration/__tests__/filesystem.test.d.ts +2 -0
  226. package/dist/session/migration/__tests__/filesystem.test.d.ts.map +1 -0
  227. package/dist/session/migration/__tests__/filesystem.test.js +188 -0
  228. package/dist/session/migration/__tests__/filesystem.test.js.map +1 -0
  229. package/dist/session/migration/__tests__/id-prefix.test.d.ts +2 -0
  230. package/dist/session/migration/__tests__/id-prefix.test.d.ts.map +1 -0
  231. package/dist/session/migration/__tests__/id-prefix.test.js +83 -0
  232. package/dist/session/migration/__tests__/id-prefix.test.js.map +1 -0
  233. package/dist/session/migration/__tests__/marker.test.d.ts +2 -0
  234. package/dist/session/migration/__tests__/marker.test.d.ts.map +1 -0
  235. package/dist/session/migration/__tests__/marker.test.js +75 -0
  236. package/dist/session/migration/__tests__/marker.test.js.map +1 -0
  237. package/dist/session/migration/errors.d.ts +26 -0
  238. package/dist/session/migration/errors.d.ts.map +1 -0
  239. package/dist/session/migration/errors.js +22 -0
  240. package/dist/session/migration/errors.js.map +1 -0
  241. package/dist/session/migration/filesystem.d.ts +94 -0
  242. package/dist/session/migration/filesystem.d.ts.map +1 -0
  243. package/dist/session/migration/filesystem.js +319 -0
  244. package/dist/session/migration/filesystem.js.map +1 -0
  245. package/dist/session/migration/id-prefix.d.ts +98 -0
  246. package/dist/session/migration/id-prefix.d.ts.map +1 -0
  247. package/dist/session/migration/id-prefix.js +116 -0
  248. package/dist/session/migration/id-prefix.js.map +1 -0
  249. package/dist/session/migration/index.d.ts +8 -0
  250. package/dist/session/migration/index.d.ts.map +1 -0
  251. package/dist/session/migration/index.js +8 -0
  252. package/dist/session/migration/index.js.map +1 -0
  253. package/dist/session/migration/marker.d.ts +57 -0
  254. package/dist/session/migration/marker.d.ts.map +1 -0
  255. package/dist/session/migration/marker.js +111 -0
  256. package/dist/session/migration/marker.js.map +1 -0
  257. package/dist/session/retention/__tests__/archive.test.d.ts +2 -0
  258. package/dist/session/retention/__tests__/archive.test.d.ts.map +1 -0
  259. package/dist/session/retention/__tests__/archive.test.js +252 -0
  260. package/dist/session/retention/__tests__/archive.test.js.map +1 -0
  261. package/dist/session/retention/__tests__/disk-backend.test.d.ts +2 -0
  262. package/dist/session/retention/__tests__/disk-backend.test.d.ts.map +1 -0
  263. package/dist/session/retention/__tests__/disk-backend.test.js +154 -0
  264. package/dist/session/retention/__tests__/disk-backend.test.js.map +1 -0
  265. package/dist/session/retention/archive-backend-ref.d.ts +18 -0
  266. package/dist/session/retention/archive-backend-ref.d.ts.map +1 -0
  267. package/dist/session/retention/archive-backend-ref.js +2 -0
  268. package/dist/session/retention/archive-backend-ref.js.map +1 -0
  269. package/dist/session/retention/archive.d.ts +130 -0
  270. package/dist/session/retention/archive.d.ts.map +1 -0
  271. package/dist/session/retention/archive.js +203 -0
  272. package/dist/session/retention/archive.js.map +1 -0
  273. package/dist/session/retention/backend.d.ts +101 -0
  274. package/dist/session/retention/backend.d.ts.map +1 -0
  275. package/dist/session/retention/backend.js +15 -0
  276. package/dist/session/retention/backend.js.map +1 -0
  277. package/dist/session/retention/disk-backend.d.ts +59 -0
  278. package/dist/session/retention/disk-backend.d.ts.map +1 -0
  279. package/dist/session/retention/disk-backend.js +236 -0
  280. package/dist/session/retention/disk-backend.js.map +1 -0
  281. package/dist/session/retention/index.d.ts +9 -0
  282. package/dist/session/retention/index.d.ts.map +1 -0
  283. package/dist/session/retention/index.js +6 -0
  284. package/dist/session/retention/index.js.map +1 -0
  285. package/dist/session/retention/policy.d.ts +49 -0
  286. package/dist/session/retention/policy.d.ts.map +1 -0
  287. package/dist/session/retention/policy.js +21 -0
  288. package/dist/session/retention/policy.js.map +1 -0
  289. package/dist/session/summary/__tests__/materialize.test.d.ts +2 -0
  290. package/dist/session/summary/__tests__/materialize.test.d.ts.map +1 -0
  291. package/dist/session/summary/__tests__/materialize.test.js +269 -0
  292. package/dist/session/summary/__tests__/materialize.test.js.map +1 -0
  293. package/dist/session/summary/deliverable.d.ts +74 -0
  294. package/dist/session/summary/deliverable.d.ts.map +1 -0
  295. package/dist/session/summary/deliverable.js +20 -0
  296. package/dist/session/summary/deliverable.js.map +1 -0
  297. package/dist/session/summary/index.d.ts +6 -0
  298. package/dist/session/summary/index.d.ts.map +1 -0
  299. package/dist/session/summary/index.js +9 -0
  300. package/dist/session/summary/index.js.map +1 -0
  301. package/dist/session/summary/materialize.d.ts +82 -0
  302. package/dist/session/summary/materialize.d.ts.map +1 -0
  303. package/dist/session/summary/materialize.js +117 -0
  304. package/dist/session/summary/materialize.js.map +1 -0
  305. package/dist/session/summary/ref.d.ts +91 -0
  306. package/dist/session/summary/ref.d.ts.map +1 -0
  307. package/dist/session/summary/ref.js +51 -0
  308. package/dist/session/summary/ref.js.map +1 -0
  309. package/dist/session/workspace/__tests__/git-worktree.test.d.ts +2 -0
  310. package/dist/session/workspace/__tests__/git-worktree.test.d.ts.map +1 -0
  311. package/dist/session/workspace/__tests__/git-worktree.test.js +244 -0
  312. package/dist/session/workspace/__tests__/git-worktree.test.js.map +1 -0
  313. package/dist/session/workspace/__tests__/path-builder.test.d.ts +2 -0
  314. package/dist/session/workspace/__tests__/path-builder.test.d.ts.map +1 -0
  315. package/dist/session/workspace/__tests__/path-builder.test.js +37 -0
  316. package/dist/session/workspace/__tests__/path-builder.test.js.map +1 -0
  317. package/dist/session/workspace/driver.d.ts +55 -0
  318. package/dist/session/workspace/driver.d.ts.map +1 -0
  319. package/dist/session/workspace/driver.js +12 -0
  320. package/dist/session/workspace/driver.js.map +1 -0
  321. package/dist/session/workspace/git-worktree.d.ts +65 -0
  322. package/dist/session/workspace/git-worktree.d.ts.map +1 -0
  323. package/dist/session/workspace/git-worktree.js +156 -0
  324. package/dist/session/workspace/git-worktree.js.map +1 -0
  325. package/dist/session/workspace/index.d.ts +8 -0
  326. package/dist/session/workspace/index.d.ts.map +1 -0
  327. package/dist/session/workspace/index.js +7 -0
  328. package/dist/session/workspace/index.js.map +1 -0
  329. package/dist/session/workspace/path-builder.d.ts +50 -0
  330. package/dist/session/workspace/path-builder.d.ts.map +1 -0
  331. package/dist/session/workspace/path-builder.js +50 -0
  332. package/dist/session/workspace/path-builder.js.map +1 -0
  333. package/dist/session/workspace/ref.d.ts +46 -0
  334. package/dist/session/workspace/ref.d.ts.map +1 -0
  335. package/dist/session/workspace/ref.js +11 -0
  336. package/dist/session/workspace/ref.js.map +1 -0
  337. package/dist/session/workspace/registry.d.ts +26 -0
  338. package/dist/session/workspace/registry.d.ts.map +1 -0
  339. package/dist/session/workspace/registry.js +35 -0
  340. package/dist/session/workspace/registry.js.map +1 -0
  341. package/dist/store/conversation/memory.d.ts +22 -0
  342. package/dist/store/conversation/memory.d.ts.map +1 -1
  343. package/dist/store/conversation/memory.js +22 -0
  344. package/dist/store/conversation/memory.js.map +1 -1
  345. package/dist/store/session/__tests__/disk.test.d.ts +2 -0
  346. package/dist/store/session/__tests__/disk.test.d.ts.map +1 -0
  347. package/dist/store/session/__tests__/disk.test.js +240 -0
  348. package/dist/store/session/__tests__/disk.test.js.map +1 -0
  349. package/dist/store/session/__tests__/memory.test.d.ts +2 -0
  350. package/dist/store/session/__tests__/memory.test.d.ts.map +1 -0
  351. package/dist/store/session/__tests__/memory.test.js +217 -0
  352. package/dist/store/session/__tests__/memory.test.js.map +1 -0
  353. package/dist/store/session/disk.d.ts +85 -0
  354. package/dist/store/session/disk.d.ts.map +1 -0
  355. package/dist/store/session/disk.js +757 -0
  356. package/dist/store/session/disk.js.map +1 -0
  357. package/dist/store/session/index.d.ts +7 -0
  358. package/dist/store/session/index.d.ts.map +1 -0
  359. package/dist/store/session/index.js +11 -0
  360. package/dist/store/session/index.js.map +1 -0
  361. package/dist/store/session/linkage.d.ts +38 -0
  362. package/dist/store/session/linkage.d.ts.map +1 -0
  363. package/dist/store/session/linkage.js +64 -0
  364. package/dist/store/session/linkage.js.map +1 -0
  365. package/dist/store/session/memory.d.ts +48 -0
  366. package/dist/store/session/memory.d.ts.map +1 -0
  367. package/dist/store/session/memory.js +322 -0
  368. package/dist/store/session/memory.js.map +1 -0
  369. package/dist/store/session/messages.d.ts +20 -0
  370. package/dist/store/session/messages.d.ts.map +1 -0
  371. package/dist/store/session/messages.js +12 -0
  372. package/dist/store/session/messages.js.map +1 -0
  373. package/dist/tools/builtins/__tests__/structuredOutput.example.d.ts +1 -1
  374. package/dist/types/agent/base.d.ts +28 -1
  375. package/dist/types/agent/base.d.ts.map +1 -1
  376. package/dist/types/agent/task.d.ts +50 -2
  377. package/dist/types/agent/task.d.ts.map +1 -1
  378. package/dist/types/agent/task.js.map +1 -1
  379. package/dist/types/conversation/index.d.ts +7 -0
  380. package/dist/types/conversation/index.d.ts.map +1 -1
  381. package/dist/types/ids/index.d.ts +26 -3
  382. package/dist/types/ids/index.d.ts.map +1 -1
  383. package/dist/types/ids/index.js +8 -1
  384. package/dist/types/ids/index.js.map +1 -1
  385. package/dist/types/invocation/__tests__/state.test.js +36 -29
  386. package/dist/types/invocation/__tests__/state.test.js.map +1 -1
  387. package/dist/types/invocation/index.d.ts +20 -4
  388. package/dist/types/invocation/index.d.ts.map +1 -1
  389. package/dist/types/invocation/index.js +10 -7
  390. package/dist/types/invocation/index.js.map +1 -1
  391. package/dist/types/run/config.d.ts +11 -1
  392. package/dist/types/run/config.d.ts.map +1 -1
  393. package/dist/types/run/events.d.ts +26 -1
  394. package/dist/types/run/events.d.ts.map +1 -1
  395. package/dist/types/run/index.d.ts.map +1 -1
  396. package/dist/types/run/index.js +8 -0
  397. package/dist/types/run/index.js.map +1 -1
  398. package/dist/types/run/metadata.d.ts +24 -1
  399. package/dist/types/run/metadata.d.ts.map +1 -1
  400. package/dist/types/run/status.d.ts +26 -0
  401. package/dist/types/run/status.d.ts.map +1 -0
  402. package/dist/types/run/status.js +2 -0
  403. package/dist/types/run/status.js.map +1 -0
  404. package/dist/types/session/ids.d.ts +18 -0
  405. package/dist/types/session/ids.d.ts.map +1 -0
  406. package/dist/types/session/ids.js +12 -0
  407. package/dist/types/session/ids.js.map +1 -0
  408. package/dist/types/session/index.d.ts +3 -0
  409. package/dist/types/session/index.d.ts.map +1 -0
  410. package/dist/types/session/index.js +5 -0
  411. package/dist/types/session/index.js.map +1 -0
  412. package/dist/types/session/store.d.ts +188 -0
  413. package/dist/types/session/store.d.ts.map +1 -0
  414. package/dist/types/session/store.js +14 -0
  415. package/dist/types/session/store.js.map +1 -0
  416. package/dist/utils/id.d.ts +18 -1
  417. package/dist/utils/id.d.ts.map +1 -1
  418. package/dist/utils/id.js +42 -4
  419. package/dist/utils/id.js.map +1 -1
  420. package/package.json +1 -1
  421. package/src/agents/ReactiveAgent.ts +7 -3
  422. package/src/agents/RouterAgent.ts +5 -0
  423. package/src/agents/SupervisorAgent.ts +26 -6
  424. package/src/bridge/a2a/mapper.ts +7 -0
  425. package/src/bridge/a2a/task.ts +2 -2
  426. package/src/bridge/sse/mapper.ts +8 -1
  427. package/src/constants/a2a/index.ts +2 -2
  428. package/src/contracts/api.ts +23 -3
  429. package/src/contracts/index.ts +2 -0
  430. package/src/gateway/local.ts +6 -0
  431. package/src/index.ts +14 -0
  432. package/src/manager/agent/__tests__/lifecycle.test.ts +452 -0
  433. package/src/manager/agent/lifecycle.ts +434 -19
  434. package/src/manager/run/persistence.ts +20 -1
  435. package/src/run/reporter.ts +28 -0
  436. package/src/runtime/query/__tests__/context.test.ts +101 -0
  437. package/src/runtime/query/context.ts +106 -10
  438. package/src/runtime/query/events.ts +8 -0
  439. package/src/runtime/query/index.ts +41 -3
  440. package/src/session/__tests__/integration/_fixtures.ts +282 -0
  441. package/src/session/__tests__/integration/capacity-caps.test.ts +164 -0
  442. package/src/session/__tests__/integration/e2e-spawn.test.ts +278 -0
  443. package/src/session/__tests__/integration/event-stream-ordering.test.ts +403 -0
  444. package/src/session/__tests__/integration/handoff-broadcast-e2e.test.ts +245 -0
  445. package/src/session/__tests__/integration/handoff-illegal-transition.test.ts +179 -0
  446. package/src/session/__tests__/integration/handoff-single-e2e.test.ts +220 -0
  447. package/src/session/__tests__/integration/hierarchy-lifecycle.test.ts +237 -0
  448. package/src/session/__tests__/integration/migration-filesystem.test.ts +209 -0
  449. package/src/session/__tests__/integration/migration-id-prefix.test.ts +101 -0
  450. package/src/session/__tests__/integration/prev-artifact-dag.test.ts +318 -0
  451. package/src/session/__tests__/integration/retention-archive.test.ts +231 -0
  452. package/src/session/__tests__/integration/summary-materialization-e2e.test.ts +237 -0
  453. package/src/session/__tests__/integration/tenant-isolation.test.ts +282 -0
  454. package/src/session/errors.ts +70 -0
  455. package/src/session/events/index.ts +16 -0
  456. package/src/session/events/schema-version.ts +13 -0
  457. package/src/session/events/types.ts +71 -0
  458. package/src/session/handoff/__tests__/broadcast.test.ts +350 -0
  459. package/src/session/handoff/__tests__/capacity.test.ts +123 -0
  460. package/src/session/handoff/__tests__/single.test.ts +316 -0
  461. package/src/session/handoff/assignment.ts +62 -0
  462. package/src/session/handoff/broadcast.ts +381 -0
  463. package/src/session/handoff/capacity.ts +121 -0
  464. package/src/session/handoff/events.ts +72 -0
  465. package/src/session/handoff/index.ts +29 -0
  466. package/src/session/handoff/single.ts +288 -0
  467. package/src/session/handoff/version.ts +59 -0
  468. package/src/session/hierarchy/__tests__/session.test.ts +92 -0
  469. package/src/session/hierarchy/actor.ts +17 -0
  470. package/src/session/hierarchy/index.ts +17 -0
  471. package/src/session/hierarchy/lineage.ts +15 -0
  472. package/src/session/hierarchy/project.ts +41 -0
  473. package/src/session/hierarchy/session.ts +97 -0
  474. package/src/session/hierarchy/sub-session.ts +92 -0
  475. package/src/session/hierarchy/tenant.ts +13 -0
  476. package/src/session/index.ts +15 -0
  477. package/src/session/intervention/__tests__/prev-artifact.test.ts +234 -0
  478. package/src/session/intervention/index.ts +16 -0
  479. package/src/session/intervention/prev-artifact.ts +180 -0
  480. package/src/session/migration/__tests__/filesystem.test.ts +263 -0
  481. package/src/session/migration/__tests__/id-prefix.test.ts +101 -0
  482. package/src/session/migration/__tests__/marker.test.ts +84 -0
  483. package/src/session/migration/errors.ts +23 -0
  484. package/src/session/migration/filesystem.ts +401 -0
  485. package/src/session/migration/id-prefix.ts +146 -0
  486. package/src/session/migration/index.ts +38 -0
  487. package/src/session/migration/marker.ts +131 -0
  488. package/src/session/retention/__tests__/archive.test.ts +316 -0
  489. package/src/session/retention/__tests__/disk-backend.test.ts +180 -0
  490. package/src/session/retention/archive-backend-ref.ts +17 -0
  491. package/src/session/retention/archive.ts +281 -0
  492. package/src/session/retention/backend.ts +107 -0
  493. package/src/session/retention/disk-backend.ts +304 -0
  494. package/src/session/retention/index.ts +16 -0
  495. package/src/session/retention/policy.ts +53 -0
  496. package/src/session/summary/__tests__/materialize.test.ts +341 -0
  497. package/src/session/summary/deliverable.ts +84 -0
  498. package/src/session/summary/index.ts +31 -0
  499. package/src/session/summary/materialize.ts +169 -0
  500. package/src/session/summary/ref.ts +104 -0
  501. package/src/session/workspace/__tests__/git-worktree.test.ts +258 -0
  502. package/src/session/workspace/__tests__/path-builder.test.ts +51 -0
  503. package/src/session/workspace/driver.ts +60 -0
  504. package/src/session/workspace/git-worktree.ts +209 -0
  505. package/src/session/workspace/index.ts +25 -0
  506. package/src/session/workspace/path-builder.ts +71 -0
  507. package/src/session/workspace/ref.ts +50 -0
  508. package/src/session/workspace/registry.ts +42 -0
  509. package/src/store/conversation/memory.ts +23 -0
  510. package/src/store/session/__tests__/disk.test.ts +346 -0
  511. package/src/store/session/__tests__/memory.test.ts +327 -0
  512. package/src/store/session/disk.ts +920 -0
  513. package/src/store/session/index.ts +14 -0
  514. package/src/store/session/linkage.ts +80 -0
  515. package/src/store/session/memory.ts +400 -0
  516. package/src/store/session/messages.ts +21 -0
  517. package/src/types/agent/base.ts +31 -1
  518. package/src/types/agent/task.ts +58 -2
  519. package/src/types/conversation/index.ts +7 -0
  520. package/src/types/ids/index.ts +41 -3
  521. package/src/types/invocation/__tests__/state.test.ts +37 -29
  522. package/src/types/invocation/index.ts +26 -10
  523. package/src/types/run/config.ts +12 -1
  524. package/src/types/run/events.ts +36 -1
  525. package/src/types/run/index.ts +8 -0
  526. package/src/types/run/metadata.ts +24 -1
  527. package/src/types/run/status.ts +33 -0
  528. package/src/types/session/ids.ts +34 -0
  529. package/src/types/session/index.ts +28 -0
  530. package/src/types/session/store.ts +229 -0
  531. package/src/utils/id.ts +55 -4
@@ -1,7 +1,6 @@
1
- export type ThreadId = `thd_${string}`
2
1
  export type RunId = `run_${string}`
3
2
  export type MessageId = `msg_${string}`
4
- export type SessionId = `sess_${string}`
3
+ export type SessionId = `ses_${string}`
5
4
  export type ToolCallId = `call_${string}`
6
5
  export type ActivityId = `act_${string}`
7
6
  export type TaskId = `task_${string}`
@@ -11,7 +10,7 @@ export type DocumentId = `doc_${string}`
11
10
  export type ChunkId = `chk_${string}`
12
11
  export type ConnectorId = `conn_${string}`
13
12
  export type ConnectorInstanceId = `ci_${string}`
14
- export type TenantId = `ten_${string}`
13
+ export type TenantId = `tnt_${string}`
15
14
  export type CredentialId = `cred_${string}`
16
15
  export type ExecutionContextId = `ectx_${string}`
17
16
  export type MCPServerId = `mcp_${string}`
@@ -26,3 +25,42 @@ export type EmergencySaveId = `esave_${string}`
26
25
  export type MemoryId = `mem_${string}`
27
26
  export type PluginId = `plg_${string}`
28
27
  export type SandboxId = `sbx_${string}`
28
+
29
+ // Actor identifiers (Session Hierarchy §4.3). Branded so actor refs cannot be
30
+ // constructed from bare strings.
31
+ export type UserId = `usr_${string}`
32
+ export type AgentId = `agt_${string}`
33
+
34
+ // Shared-store placeholder refs (Session Hierarchy §4.2 / §3.2). Full shapes
35
+ // land in later phases; kept here as opaque branded IDs so ProjectConfig can
36
+ // reference them today.
37
+ export type MemoryStoreRef = `mms_${string}`
38
+ export type VaultRef = `vlt_${string}`
39
+ export type KnowledgeBaseRef = `kbs_${string}`
40
+
41
+ // Session hierarchy IDs — live canonically here (Phase 9 Known Delta #4
42
+ // collapse: previously split across `types/ids/` and `types/session/ids.ts`
43
+ // with a circular re-export). Convention #2 branded IDs; prefixes mandated
44
+ // by session-hierarchy.md §4. The `types/session/ids.ts` barrel re-exports
45
+ // these for co-location ergonomics.
46
+ export type ProjectId = `prj_${string}`
47
+ export type SubSessionId = `sub_${string}`
48
+ export type HandoffId = `hof_${string}`
49
+ export type WorkspaceId = `wsp_${string}`
50
+ export type SummaryId = `sum_${string}`
51
+ export type DeliverableId = `del_${string}`
52
+
53
+ /**
54
+ * @deprecated Use {@link ProjectId}. Alias retained for the 0.2.x migration
55
+ * window; will be removed in 0.3.0. See session-hierarchy.md §13.3.1.
56
+ */
57
+ export type ThreadId = ProjectId
58
+
59
+ /**
60
+ * Sentinel {@link TenantId} for legacy pre-0.2.0 runs rehomed by the
61
+ * boot-time filesystem migration (session-hierarchy.md §13.4.1). Consumers
62
+ * with strict tenant enforcement should either tag these records on first
63
+ * access or reject them until a real tenant is assigned — the kernel
64
+ * surfaces the sentinel but does not prescribe policy (Convention #17).
65
+ */
66
+ export const UNKNOWN_TENANT_ID = 'tnt_unknown_legacy' as TenantId
@@ -3,20 +3,22 @@ import type { TenantId } from '../../ids/index.js'
3
3
  import { deriveChildState } from '../index.js'
4
4
  import type { InvocationState } from '../index.js'
5
5
 
6
+ const ROOT_TENANT = 'tnt_root' as TenantId
7
+
6
8
  describe('InvocationState', () => {
7
9
  describe('deriveChildState', () => {
8
- it('should create child state with single agent in parentChain when parent is undefined', () => {
9
- const childState = deriveChildState(undefined, 'agent-123')
10
+ it('seeds parentChain from a root seed when no parent state exists', () => {
11
+ const childState = deriveChildState({ tenantId: ROOT_TENANT }, 'agent-123')
10
12
 
11
13
  expect(childState.parentChain).toEqual(['agent-123'])
12
- expect(childState.tenantId).toBeUndefined()
14
+ expect(childState.tenantId).toBe(ROOT_TENANT)
13
15
  expect(childState.metadata).toBeUndefined()
14
16
  expect(childState.services).toBeUndefined()
15
17
  })
16
18
 
17
- it('should create child state with single agent in parentChain when parent has no parentChain', () => {
19
+ it('seeds parentChain when parent has no parentChain', () => {
18
20
  const parent: InvocationState = {
19
- tenantId: 'ten_abc' as TenantId,
21
+ tenantId: 'tnt_abc' as TenantId,
20
22
  metadata: { userId: 'user-123' },
21
23
  }
22
24
 
@@ -27,10 +29,10 @@ describe('InvocationState', () => {
27
29
  expect(childState.metadata).toBe(parent.metadata)
28
30
  })
29
31
 
30
- it('should extend parentChain with current agent', () => {
32
+ it('extends parentChain with current agent', () => {
31
33
  const parent: InvocationState = {
32
34
  parentChain: ['supervisor', 'router'],
33
- tenantId: 'ten_xyz' as TenantId,
35
+ tenantId: 'tnt_xyz' as TenantId,
34
36
  }
35
37
 
36
38
  const childState = deriveChildState(parent, 'worker-agent')
@@ -38,8 +40,8 @@ describe('InvocationState', () => {
38
40
  expect(childState.parentChain).toEqual(['supervisor', 'router', 'worker-agent'])
39
41
  })
40
42
 
41
- it('should preserve tenantId through derivation', () => {
42
- const tenantId = 'ten_tenant123' as TenantId
43
+ it('preserves tenantId through derivation', () => {
44
+ const tenantId = 'tnt_tenant123' as TenantId
43
45
  const parent: InvocationState = {
44
46
  tenantId,
45
47
  parentChain: ['agent-1'],
@@ -50,13 +52,14 @@ describe('InvocationState', () => {
50
52
  expect(childState.tenantId).toBe(tenantId)
51
53
  })
52
54
 
53
- it('should preserve metadata through derivation', () => {
55
+ it('preserves metadata through derivation', () => {
54
56
  const metadata = {
55
57
  userId: 'user-456',
56
- sessionId: 'sess_789',
58
+ sessionId: 'ses_789',
57
59
  correlationId: 'corr_abc',
58
60
  }
59
61
  const parent: InvocationState = {
62
+ tenantId: ROOT_TENANT,
60
63
  metadata,
61
64
  parentChain: ['agent-1'],
62
65
  }
@@ -67,12 +70,13 @@ describe('InvocationState', () => {
67
70
  expect(childState.metadata?.userId).toBe('user-456')
68
71
  })
69
72
 
70
- it('should preserve services through derivation', () => {
73
+ it('preserves services through derivation', () => {
71
74
  const services = {
72
75
  db: { pool: 'mock-pool' },
73
76
  cache: { client: 'mock-redis' },
74
77
  }
75
78
  const parent: InvocationState = {
79
+ tenantId: ROOT_TENANT,
76
80
  services,
77
81
  parentChain: ['agent-1'],
78
82
  }
@@ -82,12 +86,12 @@ describe('InvocationState', () => {
82
86
  expect(childState.services).toBe(services)
83
87
  })
84
88
 
85
- it('should preserve all fields through multi-level derivation', () => {
86
- const tenantId = 'ten_multi' as TenantId
89
+ it('preserves all fields through multi-level derivation', () => {
90
+ const tenantId = 'tnt_multi' as TenantId
87
91
  const metadata = { userId: 'user-multi' }
88
92
  const services = { db: 'postgres' }
89
93
 
90
- const level1 = deriveChildState(undefined, 'supervisor')
94
+ const level1 = deriveChildState({ tenantId }, 'supervisor')
91
95
  expect(level1.parentChain).toEqual(['supervisor'])
92
96
 
93
97
  const parent: InvocationState = {
@@ -110,8 +114,9 @@ describe('InvocationState', () => {
110
114
  expect(level3.services).toBe(services)
111
115
  })
112
116
 
113
- it('should create immutable parentChain', () => {
117
+ it('creates immutable parentChain', () => {
114
118
  const parent: InvocationState = {
119
+ tenantId: ROOT_TENANT,
115
120
  parentChain: ['agent-1'],
116
121
  }
117
122
 
@@ -122,8 +127,9 @@ describe('InvocationState', () => {
122
127
  expect(childState.parentChain).toEqual(['agent-1', 'agent-2'])
123
128
  })
124
129
 
125
- it('should handle empty parentChain in parent', () => {
130
+ it('handles empty parentChain in parent', () => {
126
131
  const parent: InvocationState = {
132
+ tenantId: ROOT_TENANT,
127
133
  parentChain: [],
128
134
  }
129
135
 
@@ -132,25 +138,25 @@ describe('InvocationState', () => {
132
138
  expect(childState.parentChain).toEqual(['agent-first'])
133
139
  })
134
140
 
135
- it('should allow complex agent IDs in parentChain', () => {
141
+ it('allows complex agent IDs in parentChain', () => {
136
142
  const agentIds = ['supervisor-agent-123', 'router-multi-path', 'worker-task-handler']
137
143
 
138
- let state: InvocationState | undefined
144
+ let state: InvocationState = { tenantId: ROOT_TENANT }
139
145
  for (const agentId of agentIds) {
140
146
  state = deriveChildState(state, agentId)
141
147
  }
142
148
 
143
- expect(state?.parentChain).toEqual(agentIds)
149
+ expect(state.parentChain).toEqual(agentIds)
144
150
  })
145
151
 
146
- it('should not mutate parent state', () => {
152
+ it('does not mutate parent state', () => {
147
153
  const parent: InvocationState = {
148
154
  parentChain: ['original'],
149
- tenantId: 'ten_orig' as TenantId,
155
+ tenantId: 'tnt_orig' as TenantId,
150
156
  metadata: { key: 'value' },
151
157
  }
152
158
 
153
- const originalParentChain = [...parent.parentChain!]
159
+ const originalParentChain = [...(parent.parentChain ?? [])]
154
160
 
155
161
  deriveChildState(parent, 'child')
156
162
 
@@ -161,33 +167,34 @@ describe('InvocationState', () => {
161
167
  })
162
168
 
163
169
  describe('InvocationState immutability', () => {
164
- it('should have readonly fields', () => {
170
+ it('has readonly fields', () => {
165
171
  const state: InvocationState = {
166
- tenantId: 'ten_test' as TenantId,
172
+ tenantId: 'tnt_test' as TenantId,
167
173
  metadata: { key: 'value' },
168
174
  services: { db: 'postgres' },
169
175
  parentChain: ['agent-1'],
170
176
  }
171
177
 
172
178
  // Type system enforces immutability, so these assertions verify the type definitions
173
- expect(state.tenantId).toBe('ten_test')
179
+ expect(state.tenantId).toBe('tnt_test')
174
180
  expect(state.metadata).toBeDefined()
175
181
  expect(state.services).toBeDefined()
176
182
  expect(state.parentChain).toBeDefined()
177
183
  })
178
184
 
179
- it('should support undefined optional fields', () => {
185
+ it('supports undefined optional fields (tenantId still required)', () => {
180
186
  const minimalState: InvocationState = {
187
+ tenantId: ROOT_TENANT,
181
188
  parentChain: ['agent-1'],
182
189
  }
183
190
 
184
- expect(minimalState.tenantId).toBeUndefined()
191
+ expect(minimalState.tenantId).toBe(ROOT_TENANT)
185
192
  expect(minimalState.metadata).toBeUndefined()
186
193
  expect(minimalState.services).toBeUndefined()
187
194
  expect(minimalState.parentChain).toEqual(['agent-1'])
188
195
  })
189
196
 
190
- it('should handle metadata with various types', () => {
197
+ it('handles metadata with various types', () => {
191
198
  const metadata = {
192
199
  userId: 'user-123',
193
200
  count: 42,
@@ -197,6 +204,7 @@ describe('InvocationState', () => {
197
204
  }
198
205
 
199
206
  const state: InvocationState = {
207
+ tenantId: ROOT_TENANT,
200
208
  metadata,
201
209
  }
202
210
 
@@ -14,8 +14,12 @@ import type { TenantId } from '../ids/index.js'
14
14
  * - Tools can access state via ToolContext.invocationState
15
15
  */
16
16
  export interface InvocationState {
17
- /** Tenant context for multi-tenant isolation (if applicable) */
18
- readonly tenantId?: TenantId
17
+ /**
18
+ * Isolation boundary — required in 0.2.0 per session-hierarchy.md §12.1.
19
+ * Every store accessor downstream branches on this id; omission is a
20
+ * compile-time error.
21
+ */
22
+ readonly tenantId: TenantId
19
23
 
20
24
  /** Request-scoped metadata (user info, session, correlation IDs, etc.) */
21
25
  readonly metadata?: Readonly<Record<string, unknown>>
@@ -27,6 +31,15 @@ export interface InvocationState {
27
31
  readonly parentChain?: readonly string[]
28
32
  }
29
33
 
34
+ /**
35
+ * Params for {@link deriveChildState} when the parent is absent. `tenantId`
36
+ * is required even at the top level — the kernel refuses to guess tenant
37
+ * identity (session-hierarchy.md §12.1).
38
+ */
39
+ export interface DeriveChildStateRoot {
40
+ readonly tenantId: TenantId
41
+ }
42
+
30
43
  /**
31
44
  * Create a child invocation state with the current agent appended to parentChain.
32
45
  *
@@ -34,22 +47,25 @@ export interface InvocationState {
34
47
  * to sub-agents. It ensures the full agent hierarchy is tracked for debugging,
35
48
  * logging, and tenant isolation validation.
36
49
  *
37
- * @param parent The parent invocation state (may be undefined for top-level agents)
50
+ * When `parent` is undefined (top-level agent), a minimal root context is
51
+ * required so `tenantId` can be seeded — see {@link DeriveChildStateRoot}.
52
+ * `InvocationState.tenantId` is required in 0.2.0 (§12.1).
53
+ *
54
+ * @param parent The parent invocation state, or a root seed carrying `tenantId`.
38
55
  * @param currentAgentId The ID of the agent making the delegation
39
56
  * @returns A new InvocationState with currentAgentId appended to parentChain
40
57
  */
41
58
  export function deriveChildState(
42
- parent: InvocationState | undefined,
59
+ parent: InvocationState | DeriveChildStateRoot,
43
60
  currentAgentId: string,
44
61
  ): InvocationState {
45
- const parentChain = parent?.parentChain
46
- ? [...parent.parentChain, currentAgentId]
47
- : [currentAgentId]
62
+ const existingChain = 'parentChain' in parent ? parent.parentChain : undefined
63
+ const parentChain = existingChain ? [...existingChain, currentAgentId] : [currentAgentId]
48
64
 
49
65
  return {
50
- tenantId: parent?.tenantId,
51
- metadata: parent?.metadata,
52
- services: parent?.services,
66
+ tenantId: parent.tenantId,
67
+ metadata: 'metadata' in parent ? parent.metadata : undefined,
68
+ services: 'services' in parent ? parent.services : undefined,
53
69
  parentChain,
54
70
  }
55
71
  }
@@ -1,7 +1,8 @@
1
1
  import type { ModelPricing } from '../../utils/cost.js'
2
2
  import type { Logger } from '../../utils/logger.js'
3
- import type { RunId } from '../ids/index.js'
3
+ import type { RunId, SessionId, TenantId } from '../ids/index.js'
4
4
  import type { PermissionMode } from '../permission/index.js'
5
+ import type { ProjectId } from '../session/ids.js'
5
6
 
6
7
  export interface AgentRunConfig {
7
8
  model: string
@@ -20,6 +21,12 @@ export interface AgentRunConfig {
20
21
  }
21
22
  }
22
23
 
24
+ /**
25
+ * Config for {@link RunPersistence}. Phase 6 promotes `sessionId`, `tenantId`,
26
+ * and `projectId` to required — every Run must be attributed to a Session
27
+ * under a Project within a Tenant (session-hierarchy.md §12.1). The legacy
28
+ * `threadId`-only shape is gone.
29
+ */
23
30
  export interface RunPersistenceConfig {
24
31
  runId: RunId
25
32
  agentId: string
@@ -30,6 +37,10 @@ export interface RunPersistenceConfig {
30
37
  pricing?: ModelPricing
31
38
  log: Logger
32
39
 
40
+ sessionId: SessionId
41
+ tenantId: TenantId
42
+ projectId: ProjectId
43
+
33
44
  parentRunId?: RunId
34
45
 
35
46
  depth?: number
@@ -1,3 +1,9 @@
1
+ import type {
2
+ SubsessionIdledEvent,
3
+ SubsessionMessagedEvent,
4
+ SubsessionSpawnedEvent,
5
+ } from '../../session/events/index.js'
6
+ import type { Lineage } from '../../session/hierarchy/lineage.js'
1
7
  import type { ActivityStatus, ActivityType } from '../activity/index.js'
2
8
  import type { BaseAgentResult } from '../agent/base.js'
3
9
  import type { CostInfo, TokenUsage } from '../common/index.js'
@@ -9,7 +15,21 @@ import type { TaskStatus } from '../task/index.js'
9
15
 
10
16
  export type { StopReason } from './stop-reason.js'
11
17
 
12
- export type RunEvent =
18
+ /**
19
+ * Additive envelope fields present on every {@link RunEvent} variant.
20
+ *
21
+ * Per session-hierarchy.md §10.1 evolution is additive and consumers filter
22
+ * by the `type` discriminator, never by field shape. 0.2.0+ emitters stamp
23
+ * `schemaVersion: 2`; older untagged events are treated as virtually v1 by
24
+ * readers. `lineage` is populated on sub-session emissions (§10.4) and left
25
+ * absent on root-session events.
26
+ */
27
+ interface RunEventEnvelope {
28
+ schemaVersion?: 2
29
+ lineage?: Lineage
30
+ }
31
+
32
+ type CoreRunEvent =
13
33
  | { type: 'run_started'; runId: RunId; systemPrompt?: string }
14
34
  | { type: 'iteration_started'; runId: RunId; iteration: number }
15
35
  | {
@@ -174,4 +194,19 @@ export type RunEvent =
174
194
  }
175
195
  | { type: 'sandbox_destroyed'; runId: RunId; sandboxId: SandboxId }
176
196
 
197
+ /**
198
+ * Discriminated union of all run-scoped events emitted by the kernel.
199
+ *
200
+ * Convention #16: `type` is the sole discriminator for exhaustive switches;
201
+ * envelope fields (`schemaVersion`, `lineage`) are additive and never
202
+ * participate in discrimination. Sub-session lifecycle variants
203
+ * (`subsession_spawned`, `subsession_messaged`, `subsession_idled`) carry a
204
+ * required `lineage` — see session-hierarchy.md §10.4.
205
+ */
206
+ export type RunEvent =
207
+ | (CoreRunEvent & RunEventEnvelope)
208
+ | SubsessionSpawnedEvent
209
+ | SubsessionMessagedEvent
210
+ | SubsessionIdledEvent
211
+
177
212
  export type RunEventListener = (event: RunEvent) => void | Promise<void>
@@ -1,6 +1,14 @@
1
1
  export * from './stop-reason.js'
2
2
  export * from './config.js'
3
3
  export * from './state.js'
4
+ // Note: `./status.js` is intentionally NOT re-exported via `export *` from
5
+ // this barrel — the domain `RunStatus` type (session-hierarchy.md §4.6)
6
+ // shares its name with the deprecated wire alias `RunStatus` in
7
+ // `contracts/api.ts` (the canonical wire name is now `WireRunStatus`, see
8
+ // Task 10 Phase 9). The root barrel re-exports the domain `RunStatus`
9
+ // explicitly via `export type { RunStatus } from './types/run/status.js'`
10
+ // so external consumers of `@namzu/sdk` land on the domain enum while
11
+ // `@namzu/contracts` continues to own the wire shape.
4
12
  export * from './events.js'
5
13
  export * from './metadata.js'
6
14
  export * from './emergency.js'
@@ -1,9 +1,32 @@
1
1
  import type { AgentStatus, CostInfo, TokenUsage } from '../common/index.js'
2
- import type { RunId, TaskId, ThreadId } from '../ids/index.js'
2
+ import type { RunId, TaskId, TenantId, ThreadId } from '../ids/index.js'
3
+ import type { ProjectId } from '../session/ids.js'
3
4
  import type { StopReason } from './stop-reason.js'
4
5
 
6
+ /**
7
+ * Denormalized metadata for a run.
8
+ *
9
+ * See session-hierarchy.md §4.6, §10.1, and §12.1.
10
+ *
11
+ * 0.2.0 promotes `projectId` and `tenantId` to required fields. `threadId`
12
+ * remains as a deprecated mirror of `projectId` for the 0.2.x migration
13
+ * window — consumers should prefer `projectId` and fall back to `threadId`
14
+ * only for legacy records. 0.3.x removes `threadId` entirely (§13.1).
15
+ */
5
16
  export interface RunMetadata {
6
17
  id: RunId
18
+ /**
19
+ * Long-lived goal scope. Required in 0.2.0. Replaces the root-scope role
20
+ * `threadId` played in 0.1.x.
21
+ */
22
+ projectId: ProjectId
23
+ /** Isolation boundary (Convention #17). Required in 0.2.0. */
24
+ tenantId: TenantId
25
+ /**
26
+ * @deprecated Use {@link RunMetadata.projectId}. Mirror retained for the
27
+ * 0.2.x migration window; scheduled for removal in 0.3.0 per
28
+ * session-hierarchy.md §13.1.
29
+ */
7
30
  threadId: ThreadId
8
31
  agentId: string
9
32
  agentName: string
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Domain Run status enum. See session-hierarchy.md §4.6 + §5.2 state machine.
3
+ *
4
+ * Distinct from the wire-side {@link WireRunStatus} in `contracts/api.ts`,
5
+ * which maps these states onto HTTP payload shapes (`completed` /
6
+ * `cancelling` / `expired`). Keep this enum purely the domain surface; any
7
+ * consumer that needs the HTTP representation should translate at the bridge
8
+ * boundary.
9
+ *
10
+ * Variants:
11
+ * - `queued` — run created, not yet started.
12
+ * - `running` — iteration loop in flight.
13
+ * - `awaiting_hitl` — synchronous-wait on a HITL gate (user present).
14
+ * - `awaiting_hitl_resolution` — persisted-wait after a HITL timeout under
15
+ * `HITLConfig.onTimeout = 'pause_run_until_resolved'`. User absent; Run
16
+ * persists until resolved or cancelled (permission-policies.md §13.3).
17
+ * - `awaiting_subsession` — parent Run has delegated to a child SubSession
18
+ * and is suspended until the Materializer seals the child's summary.
19
+ * Session-level fan-in treats this as `active` (delegation in flight
20
+ * means the parent IS active). See session-hierarchy.md §5.1.
21
+ * - `succeeded` — terminal, run completed without error.
22
+ * - `failed` — terminal, run errored out.
23
+ * - `cancelled` — terminal, explicitly cancelled.
24
+ */
25
+ export type RunStatus =
26
+ | 'queued'
27
+ | 'running'
28
+ | 'awaiting_hitl'
29
+ | 'awaiting_hitl_resolution'
30
+ | 'awaiting_subsession'
31
+ | 'succeeded'
32
+ | 'failed'
33
+ | 'cancelled'
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Session hierarchy branded ID re-export barrel.
3
+ *
4
+ * Canonical definitions live in `../ids/index.ts` (Phase 9 Known Delta #4
5
+ * collapse: previously this file declared ProjectId/SubSessionId/etc. and
6
+ * `types/ids/` re-exported them — a circular re-export that TypeScript
7
+ * resolved cleanly but smelled). All session IDs now live in one place;
8
+ * this barrel exists solely for ergonomic co-location with session-scoped
9
+ * callers (they already import from `types/session/`).
10
+ */
11
+
12
+ export type {
13
+ ProjectId,
14
+ SubSessionId,
15
+ HandoffId,
16
+ WorkspaceId,
17
+ SummaryId,
18
+ DeliverableId,
19
+ SessionId,
20
+ TenantId,
21
+ RunId,
22
+ AgentId,
23
+ UserId,
24
+ TaskId,
25
+ ThreadId,
26
+ } from '../ids/index.js'
27
+
28
+ import type { ProjectId } from '../ids/index.js'
29
+
30
+ /**
31
+ * @deprecated Use {@link ProjectId}. Alias kept for one version migration
32
+ * window; scheduled for removal in 0.3.0 per session-hierarchy.md §13.3.1.
33
+ */
34
+ export type ThreadIdDeprecated = ProjectId
@@ -0,0 +1,28 @@
1
+ // Sub-barrel for session-hierarchy type surface.
2
+ // Concrete definitions live in sibling files; re-export them here so other
3
+ // modules import via `../types/session/index.js`.
4
+
5
+ export type {
6
+ ProjectId,
7
+ SubSessionId,
8
+ HandoffId,
9
+ WorkspaceId,
10
+ SummaryId,
11
+ DeliverableId,
12
+ SessionId,
13
+ TenantId,
14
+ RunId,
15
+ AgentId,
16
+ UserId,
17
+ TaskId,
18
+ ThreadId,
19
+ ThreadIdDeprecated,
20
+ } from './ids.js'
21
+
22
+ export type {
23
+ SessionStore,
24
+ SessionView,
25
+ CreateProjectParams,
26
+ CreateSessionParams,
27
+ CreateSubSessionParams,
28
+ } from './store.js'