@namzu/sdk 0.2.0 → 0.3.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 (297) hide show
  1. package/CHANGELOG.md +53 -2
  2. package/dist/agents/ReactiveAgent.d.ts.map +1 -1
  3. package/dist/agents/ReactiveAgent.js +3 -2
  4. package/dist/agents/ReactiveAgent.js.map +1 -1
  5. package/dist/agents/SupervisorAgent.d.ts.map +1 -1
  6. package/dist/agents/SupervisorAgent.js +5 -2
  7. package/dist/agents/SupervisorAgent.js.map +1 -1
  8. package/dist/bridge/a2a/index.d.ts +1 -1
  9. package/dist/bridge/a2a/index.d.ts.map +1 -1
  10. package/dist/bridge/a2a/index.js +1 -1
  11. package/dist/bridge/a2a/index.js.map +1 -1
  12. package/dist/bridge/a2a/message.d.ts +0 -2
  13. package/dist/bridge/a2a/message.d.ts.map +1 -1
  14. package/dist/bridge/a2a/message.js +0 -26
  15. package/dist/bridge/a2a/message.js.map +1 -1
  16. package/dist/bridge/a2a/task.d.ts +4 -3
  17. package/dist/bridge/a2a/task.d.ts.map +1 -1
  18. package/dist/bridge/a2a/task.js +4 -4
  19. package/dist/bridge/a2a/task.js.map +1 -1
  20. package/dist/contracts/api.d.ts +6 -38
  21. package/dist/contracts/api.d.ts.map +1 -1
  22. package/dist/contracts/ids.d.ts +1 -1
  23. package/dist/contracts/ids.d.ts.map +1 -1
  24. package/dist/contracts/index.d.ts +3 -5
  25. package/dist/contracts/index.d.ts.map +1 -1
  26. package/dist/contracts/index.js +1 -1
  27. package/dist/contracts/index.js.map +1 -1
  28. package/dist/contracts/schemas.d.ts +1 -31
  29. package/dist/contracts/schemas.d.ts.map +1 -1
  30. package/dist/contracts/schemas.js +1 -7
  31. package/dist/contracts/schemas.js.map +1 -1
  32. package/dist/index.d.ts +2 -3
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +2 -3
  35. package/dist/index.js.map +1 -1
  36. package/dist/manager/agent/__tests__/lifecycle.test.js +27 -13
  37. package/dist/manager/agent/__tests__/lifecycle.test.js.map +1 -1
  38. package/dist/manager/agent/lifecycle.d.ts +9 -0
  39. package/dist/manager/agent/lifecycle.d.ts.map +1 -1
  40. package/dist/manager/agent/lifecycle.js +93 -31
  41. package/dist/manager/agent/lifecycle.js.map +1 -1
  42. package/dist/manager/index.d.ts +2 -0
  43. package/dist/manager/index.d.ts.map +1 -1
  44. package/dist/manager/index.js +1 -0
  45. package/dist/manager/index.js.map +1 -1
  46. package/dist/manager/run/persistence.d.ts +3 -1
  47. package/dist/manager/run/persistence.d.ts.map +1 -1
  48. package/dist/manager/run/persistence.js +5 -0
  49. package/dist/manager/run/persistence.js.map +1 -1
  50. package/dist/manager/thread/__tests__/lifecycle.test.d.ts +2 -0
  51. package/dist/manager/thread/__tests__/lifecycle.test.d.ts.map +1 -0
  52. package/dist/manager/thread/__tests__/lifecycle.test.js +216 -0
  53. package/dist/manager/thread/__tests__/lifecycle.test.js.map +1 -0
  54. package/dist/manager/thread/lifecycle.d.ts +105 -0
  55. package/dist/manager/thread/lifecycle.d.ts.map +1 -0
  56. package/dist/manager/thread/lifecycle.js +186 -0
  57. package/dist/manager/thread/lifecycle.js.map +1 -0
  58. package/dist/rag/retriever.js +2 -2
  59. package/dist/runtime/query/__tests__/context.test.js +8 -7
  60. package/dist/runtime/query/__tests__/context.test.js.map +1 -1
  61. package/dist/runtime/query/context-cache.d.ts +3 -3
  62. package/dist/runtime/query/context-cache.d.ts.map +1 -1
  63. package/dist/runtime/query/context-cache.js +2 -2
  64. package/dist/runtime/query/context-cache.js.map +1 -1
  65. package/dist/runtime/query/context.d.ts +12 -21
  66. package/dist/runtime/query/context.d.ts.map +1 -1
  67. package/dist/runtime/query/context.js +3 -1
  68. package/dist/runtime/query/context.js.map +1 -1
  69. package/dist/runtime/query/index.d.ts +13 -15
  70. package/dist/runtime/query/index.d.ts.map +1 -1
  71. package/dist/runtime/query/index.js +1 -0
  72. package/dist/runtime/query/index.js.map +1 -1
  73. package/dist/session/__tests__/integration/_fixtures.d.ts +11 -4
  74. package/dist/session/__tests__/integration/_fixtures.d.ts.map +1 -1
  75. package/dist/session/__tests__/integration/_fixtures.js +23 -6
  76. package/dist/session/__tests__/integration/_fixtures.js.map +1 -1
  77. package/dist/session/__tests__/integration/archive-gate.test.d.ts +15 -0
  78. package/dist/session/__tests__/integration/archive-gate.test.d.ts.map +1 -0
  79. package/dist/session/__tests__/integration/archive-gate.test.js +214 -0
  80. package/dist/session/__tests__/integration/archive-gate.test.js.map +1 -0
  81. package/dist/session/__tests__/integration/capacity-caps.test.js +13 -6
  82. package/dist/session/__tests__/integration/capacity-caps.test.js.map +1 -1
  83. package/dist/session/__tests__/integration/e2e-spawn.test.js +14 -2
  84. package/dist/session/__tests__/integration/e2e-spawn.test.js.map +1 -1
  85. package/dist/session/__tests__/integration/event-stream-ordering.test.js +14 -7
  86. package/dist/session/__tests__/integration/event-stream-ordering.test.js.map +1 -1
  87. package/dist/session/__tests__/integration/handoff-broadcast-e2e.test.js +26 -14
  88. package/dist/session/__tests__/integration/handoff-broadcast-e2e.test.js.map +1 -1
  89. package/dist/session/__tests__/integration/handoff-illegal-transition.test.js +30 -20
  90. package/dist/session/__tests__/integration/handoff-illegal-transition.test.js.map +1 -1
  91. package/dist/session/__tests__/integration/handoff-single-e2e.test.js +25 -9
  92. package/dist/session/__tests__/integration/handoff-single-e2e.test.js.map +1 -1
  93. package/dist/session/__tests__/integration/hierarchy-lifecycle.test.js +11 -10
  94. package/dist/session/__tests__/integration/hierarchy-lifecycle.test.js.map +1 -1
  95. package/dist/session/__tests__/integration/prev-artifact-dag.test.js +5 -4
  96. package/dist/session/__tests__/integration/prev-artifact-dag.test.js.map +1 -1
  97. package/dist/session/__tests__/integration/retention-archive.test.js +3 -2
  98. package/dist/session/__tests__/integration/retention-archive.test.js.map +1 -1
  99. package/dist/session/__tests__/integration/spawn-rollback.test.d.ts +26 -0
  100. package/dist/session/__tests__/integration/spawn-rollback.test.d.ts.map +1 -0
  101. package/dist/session/__tests__/integration/spawn-rollback.test.js +236 -0
  102. package/dist/session/__tests__/integration/spawn-rollback.test.js.map +1 -0
  103. package/dist/session/__tests__/integration/summary-materialization-e2e.test.js +2 -1
  104. package/dist/session/__tests__/integration/summary-materialization-e2e.test.js.map +1 -1
  105. package/dist/session/__tests__/integration/tenant-isolation.test.js +14 -5
  106. package/dist/session/__tests__/integration/tenant-isolation.test.js.map +1 -1
  107. package/dist/session/errors.d.ts +79 -0
  108. package/dist/session/errors.d.ts.map +1 -1
  109. package/dist/session/errors.js +57 -0
  110. package/dist/session/errors.js.map +1 -1
  111. package/dist/session/handoff/__tests__/broadcast.test.js +49 -31
  112. package/dist/session/handoff/__tests__/broadcast.test.js.map +1 -1
  113. package/dist/session/handoff/__tests__/capacity.test.js +21 -18
  114. package/dist/session/handoff/__tests__/capacity.test.js.map +1 -1
  115. package/dist/session/handoff/__tests__/single.test.js +39 -30
  116. package/dist/session/handoff/__tests__/single.test.js.map +1 -1
  117. package/dist/session/handoff/assignment.d.ts +13 -1
  118. package/dist/session/handoff/assignment.d.ts.map +1 -1
  119. package/dist/session/handoff/broadcast.d.ts +7 -0
  120. package/dist/session/handoff/broadcast.d.ts.map +1 -1
  121. package/dist/session/handoff/broadcast.js +16 -1
  122. package/dist/session/handoff/broadcast.js.map +1 -1
  123. package/dist/session/handoff/single.d.ts +7 -0
  124. package/dist/session/handoff/single.d.ts.map +1 -1
  125. package/dist/session/handoff/single.js +13 -1
  126. package/dist/session/handoff/single.js.map +1 -1
  127. package/dist/session/hierarchy/__tests__/session.test.js +2 -0
  128. package/dist/session/hierarchy/__tests__/session.test.js.map +1 -1
  129. package/dist/session/hierarchy/index.d.ts +1 -0
  130. package/dist/session/hierarchy/index.d.ts.map +1 -1
  131. package/dist/session/hierarchy/index.js.map +1 -1
  132. package/dist/session/hierarchy/session.d.ts +15 -3
  133. package/dist/session/hierarchy/session.d.ts.map +1 -1
  134. package/dist/session/hierarchy/session.js.map +1 -1
  135. package/dist/session/hierarchy/thread.d.ts +54 -0
  136. package/dist/session/hierarchy/thread.d.ts.map +1 -0
  137. package/dist/session/hierarchy/thread.js +2 -0
  138. package/dist/session/hierarchy/thread.js.map +1 -0
  139. package/dist/session/migration/id-prefix.d.ts +8 -13
  140. package/dist/session/migration/id-prefix.d.ts.map +1 -1
  141. package/dist/session/migration/id-prefix.js +8 -13
  142. package/dist/session/migration/id-prefix.js.map +1 -1
  143. package/dist/session/retention/__tests__/archive.test.js +3 -2
  144. package/dist/session/retention/__tests__/archive.test.js.map +1 -1
  145. package/dist/session/summary/__tests__/materialize.test.js +4 -3
  146. package/dist/session/summary/__tests__/materialize.test.js.map +1 -1
  147. package/dist/store/index.d.ts +0 -2
  148. package/dist/store/index.d.ts.map +1 -1
  149. package/dist/store/index.js +0 -1
  150. package/dist/store/index.js.map +1 -1
  151. package/dist/store/session/__tests__/disk.test.js +32 -5
  152. package/dist/store/session/__tests__/disk.test.js.map +1 -1
  153. package/dist/store/session/__tests__/memory.test.js +50 -9
  154. package/dist/store/session/__tests__/memory.test.js.map +1 -1
  155. package/dist/store/session/disk.d.ts +2 -1
  156. package/dist/store/session/disk.d.ts.map +1 -1
  157. package/dist/store/session/disk.js +61 -0
  158. package/dist/store/session/disk.js.map +1 -1
  159. package/dist/store/session/index.d.ts.map +1 -1
  160. package/dist/store/session/index.js +3 -4
  161. package/dist/store/session/index.js.map +1 -1
  162. package/dist/store/session/memory.d.ts +2 -1
  163. package/dist/store/session/memory.d.ts.map +1 -1
  164. package/dist/store/session/memory.js +13 -0
  165. package/dist/store/session/memory.js.map +1 -1
  166. package/dist/store/thread/disk.d.ts +41 -0
  167. package/dist/store/thread/disk.d.ts.map +1 -0
  168. package/dist/store/thread/disk.js +229 -0
  169. package/dist/store/thread/disk.js.map +1 -0
  170. package/dist/store/thread/index.d.ts +4 -0
  171. package/dist/store/thread/index.d.ts.map +1 -0
  172. package/dist/store/thread/index.js +6 -0
  173. package/dist/store/thread/index.js.map +1 -0
  174. package/dist/store/thread/memory.d.ts +23 -0
  175. package/dist/store/thread/memory.d.ts.map +1 -0
  176. package/dist/store/thread/memory.js +90 -0
  177. package/dist/store/thread/memory.js.map +1 -0
  178. package/dist/types/agent/base.d.ts +17 -21
  179. package/dist/types/agent/base.d.ts.map +1 -1
  180. package/dist/types/agent/factory.d.ts +8 -2
  181. package/dist/types/agent/factory.d.ts.map +1 -1
  182. package/dist/types/agent/task.d.ts +18 -11
  183. package/dist/types/agent/task.d.ts.map +1 -1
  184. package/dist/types/ids/index.d.ts +5 -9
  185. package/dist/types/ids/index.d.ts.map +1 -1
  186. package/dist/types/ids/index.js +4 -4
  187. package/dist/types/ids/index.js.map +1 -1
  188. package/dist/types/rag/retrieval.d.ts +4 -3
  189. package/dist/types/rag/retrieval.d.ts.map +1 -1
  190. package/dist/types/run/config.d.ts +6 -5
  191. package/dist/types/run/config.d.ts.map +1 -1
  192. package/dist/types/run/metadata.d.ts +5 -18
  193. package/dist/types/run/metadata.d.ts.map +1 -1
  194. package/dist/types/session/ids.d.ts +4 -13
  195. package/dist/types/session/ids.d.ts.map +1 -1
  196. package/dist/types/session/ids.js +3 -6
  197. package/dist/types/session/ids.js.map +1 -1
  198. package/dist/types/session/index.d.ts +1 -1
  199. package/dist/types/session/index.d.ts.map +1 -1
  200. package/dist/types/session/store.d.ts +32 -10
  201. package/dist/types/session/store.d.ts.map +1 -1
  202. package/dist/types/session/store.js +3 -8
  203. package/dist/types/session/store.js.map +1 -1
  204. package/dist/types/thread/index.d.ts +2 -0
  205. package/dist/types/thread/index.d.ts.map +1 -0
  206. package/dist/types/thread/index.js +5 -0
  207. package/dist/types/thread/index.js.map +1 -0
  208. package/dist/types/thread/store.d.ts +86 -0
  209. package/dist/types/thread/store.d.ts.map +1 -0
  210. package/dist/types/thread/store.js +22 -0
  211. package/dist/types/thread/store.js.map +1 -0
  212. package/dist/utils/id.d.ts +1 -12
  213. package/dist/utils/id.d.ts.map +1 -1
  214. package/dist/utils/id.js +3 -23
  215. package/dist/utils/id.js.map +1 -1
  216. package/package.json +6 -11
  217. package/src/agents/ReactiveAgent.ts +3 -2
  218. package/src/agents/SupervisorAgent.ts +5 -2
  219. package/src/bridge/a2a/index.ts +0 -1
  220. package/src/bridge/a2a/message.ts +0 -32
  221. package/src/bridge/a2a/task.ts +8 -7
  222. package/src/contracts/api.ts +6 -42
  223. package/src/contracts/ids.ts +1 -1
  224. package/src/contracts/index.ts +2 -8
  225. package/src/contracts/schemas.ts +1 -8
  226. package/src/index.ts +0 -4
  227. package/src/manager/agent/__tests__/lifecycle.test.ts +34 -13
  228. package/src/manager/agent/lifecycle.ts +114 -35
  229. package/src/manager/index.ts +3 -0
  230. package/src/manager/run/persistence.ts +7 -1
  231. package/src/manager/thread/__tests__/lifecycle.test.ts +286 -0
  232. package/src/manager/thread/lifecycle.ts +217 -0
  233. package/src/rag/retriever.ts +2 -2
  234. package/src/runtime/query/__tests__/context.test.ts +9 -8
  235. package/src/runtime/query/context-cache.ts +4 -4
  236. package/src/runtime/query/context.ts +15 -22
  237. package/src/runtime/query/index.ts +15 -16
  238. package/src/session/__tests__/integration/_fixtures.ts +36 -8
  239. package/src/session/__tests__/integration/archive-gate.test.ts +288 -0
  240. package/src/session/__tests__/integration/capacity-caps.test.ts +13 -6
  241. package/src/session/__tests__/integration/e2e-spawn.test.ts +20 -2
  242. package/src/session/__tests__/integration/event-stream-ordering.test.ts +14 -7
  243. package/src/session/__tests__/integration/handoff-broadcast-e2e.test.ts +39 -13
  244. package/src/session/__tests__/integration/handoff-illegal-transition.test.ts +54 -19
  245. package/src/session/__tests__/integration/handoff-single-e2e.test.ts +40 -9
  246. package/src/session/__tests__/integration/hierarchy-lifecycle.test.ts +13 -10
  247. package/src/session/__tests__/integration/prev-artifact-dag.test.ts +12 -5
  248. package/src/session/__tests__/integration/retention-archive.test.ts +5 -3
  249. package/src/session/__tests__/integration/spawn-rollback.test.ts +313 -0
  250. package/src/session/__tests__/integration/summary-materialization-e2e.test.ts +4 -2
  251. package/src/session/__tests__/integration/tenant-isolation.test.ts +16 -6
  252. package/src/session/errors.ts +89 -0
  253. package/src/session/handoff/__tests__/broadcast.test.ts +56 -28
  254. package/src/session/handoff/__tests__/capacity.test.ts +26 -20
  255. package/src/session/handoff/__tests__/single.test.ts +45 -28
  256. package/src/session/handoff/assignment.ts +13 -1
  257. package/src/session/handoff/broadcast.ts +26 -1
  258. package/src/session/handoff/single.ts +23 -1
  259. package/src/session/hierarchy/__tests__/session.test.ts +9 -1
  260. package/src/session/hierarchy/index.ts +1 -0
  261. package/src/session/hierarchy/session.ts +15 -3
  262. package/src/session/hierarchy/thread.ts +55 -0
  263. package/src/session/migration/id-prefix.ts +8 -13
  264. package/src/session/retention/__tests__/archive.test.ts +5 -3
  265. package/src/session/summary/__tests__/materialize.test.ts +6 -4
  266. package/src/store/index.ts +0 -3
  267. package/src/store/session/__tests__/disk.test.ts +57 -6
  268. package/src/store/session/__tests__/memory.test.ts +84 -9
  269. package/src/store/session/disk.ts +57 -1
  270. package/src/store/session/index.ts +3 -4
  271. package/src/store/session/memory.ts +13 -1
  272. package/src/store/thread/disk.ts +261 -0
  273. package/src/store/thread/index.ts +7 -0
  274. package/src/store/thread/memory.ts +104 -0
  275. package/src/types/agent/base.ts +17 -21
  276. package/src/types/agent/factory.ts +8 -3
  277. package/src/types/agent/task.ts +19 -11
  278. package/src/types/ids/index.ts +8 -15
  279. package/src/types/rag/retrieval.ts +4 -3
  280. package/src/types/run/config.ts +6 -5
  281. package/src/types/run/metadata.ts +5 -18
  282. package/src/types/session/ids.ts +4 -15
  283. package/src/types/session/index.ts +1 -2
  284. package/src/types/session/store.ts +34 -11
  285. package/src/types/thread/index.ts +5 -0
  286. package/src/types/thread/store.ts +92 -0
  287. package/src/utils/id.ts +3 -24
  288. package/dist/store/conversation/memory.d.ts +0 -43
  289. package/dist/store/conversation/memory.d.ts.map +0 -1
  290. package/dist/store/conversation/memory.js +0 -108
  291. package/dist/store/conversation/memory.js.map +0 -1
  292. package/dist/types/conversation/index.d.ts +0 -14
  293. package/dist/types/conversation/index.d.ts.map +0 -1
  294. package/dist/types/conversation/index.js +0 -2
  295. package/dist/types/conversation/index.js.map +0 -1
  296. package/src/store/conversation/memory.ts +0 -144
  297. package/src/types/conversation/index.ts +0 -15
@@ -0,0 +1,236 @@
1
+ /**
2
+ * Integration — AgentManager.provisionSpawn compensating rollback.
3
+ *
4
+ * Covers Codex SPAWN-ROLLBACK critique (ses_001-hierarchy-redesign Phase 2
5
+ * adversarial review, 2026-04-18). Without the try/catch wrapper around the
6
+ * createSession → updateSession → createSubSession → workspace.create
7
+ * mutation block, a failure after createSession leaves an `active` child
8
+ * session with no subsession edge — invisible to the parent, but counted
9
+ * against `maxDelegationWidth` and visible to SessionStore.listSessions
10
+ * consumers (archive/delete flows in ThreadManager).
11
+ *
12
+ * Failure modes exercised:
13
+ * A. Workspace driver throws on create. Subsession exists; must flip to
14
+ * 'failed' for audit. Child session must be hard-deleted.
15
+ * B. Subsession insert fails (store injection). No subsession recorded.
16
+ * Child session must be hard-deleted.
17
+ *
18
+ * Assertions in both cases:
19
+ * - sendMessage rejects with the underlying error.
20
+ * - SessionStore.listSessions(threadId) returns no row with the child id.
21
+ * - Parent session remains untouched (status, currentActor).
22
+ * - Fan-out cap reclaims the slot (next spawn succeeds up to the same
23
+ * width).
24
+ */
25
+ import { describe, expect, it } from 'vitest';
26
+ import { EMPTY_TOKEN_USAGE } from '../../../constants/limits.js';
27
+ import { AgentManager } from '../../../manager/agent/lifecycle.js';
28
+ import { ThreadManager } from '../../../manager/thread/lifecycle.js';
29
+ import { AgentRegistry } from '../../../registry/agent/definitions.js';
30
+ import { InMemorySessionStore } from '../../../store/session/memory.js';
31
+ import { InMemoryThreadStore } from '../../../store/thread/memory.js';
32
+ import { createAssistantMessage } from '../../../types/message/index.js';
33
+ import { ZERO_COST } from '../../../utils/cost.js';
34
+ import { DefaultCapacityValidator } from '../../handoff/capacity.js';
35
+ import { SessionSummaryMaterializer } from '../../summary/materialize.js';
36
+ import { WorkspaceBackendRegistry } from '../../workspace/registry.js';
37
+ const tenant = 'tnt_alpha';
38
+ const capabilities = {
39
+ supportsTools: false,
40
+ supportsStreaming: false,
41
+ supportsConcurrency: false,
42
+ supportsSubAgents: false,
43
+ };
44
+ function buildAgent(id) {
45
+ return {
46
+ type: 'reactive',
47
+ metadata: {
48
+ type: 'reactive',
49
+ id,
50
+ name: id,
51
+ version: '1.0.0',
52
+ category: 'test',
53
+ description: id,
54
+ capabilities,
55
+ },
56
+ run: async (_input, _config) => ({
57
+ runId: 'run_child',
58
+ status: 'completed',
59
+ usage: { ...EMPTY_TOKEN_USAGE },
60
+ cost: { ...ZERO_COST },
61
+ iterations: 1,
62
+ durationMs: 1,
63
+ messages: [createAssistantMessage('child did the work')],
64
+ result: 'child did the work',
65
+ }),
66
+ cancel: async () => undefined,
67
+ getCapabilities: () => capabilities,
68
+ };
69
+ }
70
+ function buildDefinition(agent) {
71
+ return {
72
+ info: {
73
+ id: agent.metadata.id,
74
+ name: agent.metadata.name,
75
+ version: agent.metadata.version,
76
+ category: agent.metadata.category,
77
+ description: agent.metadata.description,
78
+ tools: [],
79
+ defaults: { model: 'test', tokenBudget: 1_000 },
80
+ },
81
+ typedAgent: agent,
82
+ };
83
+ }
84
+ class FailingWorkspaceDriver {
85
+ kind = 'git-worktree';
86
+ createCalls = 0;
87
+ async create(_params) {
88
+ this.createCalls += 1;
89
+ throw new Error('synthetic workspace backend failure');
90
+ }
91
+ async branch(_source, _params) {
92
+ throw new Error('unused in this test');
93
+ }
94
+ async dispose(_ref) {
95
+ /* no-op */
96
+ }
97
+ async inspect(_ref) {
98
+ throw new Error('unused in this test');
99
+ }
100
+ }
101
+ describe('provisionSpawn compensating rollback', () => {
102
+ it('workspace driver failure — deletes child session, marks subsession failed, leaves no orphan', async () => {
103
+ const store = new InMemorySessionStore();
104
+ const threadStore = new InMemoryThreadStore();
105
+ const project = await store.createProject({ tenantId: tenant, name: 'rollback-project' }, tenant);
106
+ const thread = await threadStore.createThread({ projectId: project.id, title: 'rollback-topic' }, tenant);
107
+ const userActor = {
108
+ kind: 'user',
109
+ userId: 'usr_root',
110
+ tenantId: tenant,
111
+ };
112
+ const parentSession = await store.createSession({ threadId: thread.id, projectId: project.id, currentActor: userActor }, tenant);
113
+ await store.updateSession({ ...parentSession, status: 'active' }, tenant);
114
+ let summaryCounter = 0;
115
+ const materializer = new SessionSummaryMaterializer({
116
+ store,
117
+ generateSummaryId: () => `sum_test_${++summaryCounter}`,
118
+ });
119
+ const registry = new AgentRegistry();
120
+ registry.register(buildDefinition(buildAgent('worker')));
121
+ const workspaceRegistry = new WorkspaceBackendRegistry();
122
+ const failingDriver = new FailingWorkspaceDriver();
123
+ workspaceRegistry.register(failingDriver);
124
+ const threadManager = new ThreadManager({ threadStore, sessionStore: store });
125
+ const manager = new AgentManager(registry, undefined, {
126
+ sessionStore: store,
127
+ summaryMaterializer: materializer,
128
+ workspaceRegistry,
129
+ capacity: new DefaultCapacityValidator(store),
130
+ threadManager,
131
+ });
132
+ const taskContext = {
133
+ parentRunId: 'run_parent',
134
+ parentAgentId: 'supervisor',
135
+ parentAbortController: new AbortController(),
136
+ depth: 0,
137
+ budgetTracker: { total: 100_000, remaining: 100_000 },
138
+ tenantId: tenant,
139
+ threadId: thread.id,
140
+ sessionId: parentSession.id,
141
+ projectId: project.id,
142
+ parentActor: userActor,
143
+ };
144
+ const options = {
145
+ agentId: 'worker',
146
+ input: { messages: [], workingDirectory: '/tmp' },
147
+ parentSessionId: parentSession.id,
148
+ tenantId: tenant,
149
+ projectId: project.id,
150
+ parentActor: userActor,
151
+ workspaceBackend: 'git-worktree',
152
+ };
153
+ await expect(manager.sendMessage(options, taskContext)).rejects.toThrow('synthetic workspace backend failure');
154
+ expect(failingDriver.createCalls).toBe(1);
155
+ // Child session is gone — archive/delete flows and fan-out caps see
156
+ // zero child attached to the thread beyond the parent.
157
+ const sessionsOnThread = await store.listSessions(thread.id, tenant);
158
+ expect(sessionsOnThread.map((s) => s.id)).toEqual([parentSession.id]);
159
+ // Parent session is untouched.
160
+ const refetchedParent = await store.getSession(parentSession.id, tenant);
161
+ expect(refetchedParent?.status).toBe('active');
162
+ expect(refetchedParent?.currentActor).toEqual(userActor);
163
+ // No subsession breadcrumb — `subsession_spawned` never fired
164
+ // (provisionSpawn aborted before buildSpawnRecord), so nothing is
165
+ // expecting an audit row. Leaving a `status: 'failed'` record would
166
+ // dangle with no corresponding emission.
167
+ const subsessions = await store.getChildren(parentSession.id, tenant);
168
+ expect(subsessions).toHaveLength(0);
169
+ });
170
+ it('repeated rollback does not accumulate orphan sessions or subsessions', async () => {
171
+ const store = new InMemorySessionStore();
172
+ const threadStore = new InMemoryThreadStore();
173
+ const project = await store.createProject({
174
+ tenantId: tenant,
175
+ name: 'rollback-repeat-project',
176
+ }, tenant);
177
+ const thread = await threadStore.createThread({ projectId: project.id, title: 'rollback-width-topic' }, tenant);
178
+ const userActor = {
179
+ kind: 'user',
180
+ userId: 'usr_root',
181
+ tenantId: tenant,
182
+ };
183
+ const parentSession = await store.createSession({ threadId: thread.id, projectId: project.id, currentActor: userActor }, tenant);
184
+ await store.updateSession({ ...parentSession, status: 'active' }, tenant);
185
+ let summaryCounter = 0;
186
+ const materializer = new SessionSummaryMaterializer({
187
+ store,
188
+ generateSummaryId: () => `sum_test_${++summaryCounter}`,
189
+ });
190
+ const registry = new AgentRegistry();
191
+ registry.register(buildDefinition(buildAgent('worker')));
192
+ const workspaceRegistry = new WorkspaceBackendRegistry();
193
+ workspaceRegistry.register(new FailingWorkspaceDriver());
194
+ const threadManager = new ThreadManager({ threadStore, sessionStore: store });
195
+ const manager = new AgentManager(registry, undefined, {
196
+ sessionStore: store,
197
+ summaryMaterializer: materializer,
198
+ workspaceRegistry,
199
+ capacity: new DefaultCapacityValidator(store),
200
+ threadManager,
201
+ });
202
+ const taskContext = {
203
+ parentRunId: 'run_parent',
204
+ parentAgentId: 'supervisor',
205
+ parentAbortController: new AbortController(),
206
+ depth: 0,
207
+ budgetTracker: { total: 100_000, remaining: 100_000 },
208
+ tenantId: tenant,
209
+ threadId: thread.id,
210
+ sessionId: parentSession.id,
211
+ projectId: project.id,
212
+ parentActor: userActor,
213
+ };
214
+ const options = {
215
+ agentId: 'worker',
216
+ input: { messages: [], workingDirectory: '/tmp' },
217
+ parentSessionId: parentSession.id,
218
+ tenantId: tenant,
219
+ projectId: project.id,
220
+ parentActor: userActor,
221
+ workspaceBackend: 'git-worktree',
222
+ };
223
+ // Two consecutive failing spawns. Without rollback, two orphan
224
+ // `active` child sessions would accumulate; with rollback, each
225
+ // attempt cleans up after itself and the store stays at { parent }.
226
+ await expect(manager.sendMessage(options, taskContext)).rejects.toThrow('synthetic workspace backend failure');
227
+ await expect(manager.sendMessage(options, taskContext)).rejects.toThrow('synthetic workspace backend failure');
228
+ // Still no child session under the thread.
229
+ const sessionsOnThread = await store.listSessions(thread.id, tenant);
230
+ expect(sessionsOnThread.map((s) => s.id)).toEqual([parentSession.id]);
231
+ // No lingering subsession rows — both attempts rolled back cleanly.
232
+ const subsessions = await store.getChildren(parentSession.id, tenant);
233
+ expect(subsessions).toHaveLength(0);
234
+ });
235
+ });
236
+ //# sourceMappingURL=spawn-rollback.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawn-rollback.test.js","sourceRoot":"","sources":["../../../../src/session/__tests__/integration/spawn-rollback.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAA;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAA;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAA;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAA;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAA;AAWrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAA;AAExE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AAEpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAA;AAQzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAA;AAEtE,MAAM,MAAM,GAAG,WAAuB,CAAA;AAEtC,MAAM,YAAY,GAAsB;IACvC,aAAa,EAAE,KAAK;IACpB,iBAAiB,EAAE,KAAK;IACxB,mBAAmB,EAAE,KAAK;IAC1B,iBAAiB,EAAE,KAAK;CACxB,CAAA;AAED,SAAS,UAAU,CAAC,EAAU;IAC7B,OAAO;QACN,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACT,IAAI,EAAE,UAAU;YAChB,EAAE;YACF,IAAI,EAAE,EAAE;YACR,OAAO,EAAE,OAAO;YAChB,QAAQ,EAAE,MAAM;YAChB,WAAW,EAAE,EAAE;YACf,YAAY;SACZ;QACD,GAAG,EAAE,KAAK,EAAE,MAAkB,EAAE,OAAwB,EAA4B,EAAE,CAAC,CAAC;YACvF,KAAK,EAAE,WAAoB;YAC3B,MAAM,EAAE,WAAW;YACnB,KAAK,EAAE,EAAE,GAAG,iBAAiB,EAAE;YAC/B,IAAI,EAAE,EAAE,GAAG,SAAS,EAAE;YACtB,UAAU,EAAE,CAAC;YACb,UAAU,EAAE,CAAC;YACb,QAAQ,EAAE,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,CAAC;YACxD,MAAM,EAAE,oBAAoB;SAC5B,CAAC;QACF,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,SAAS;QAC7B,eAAe,EAAE,GAAG,EAAE,CAAC,YAAY;KACnC,CAAA;AACF,CAAC;AAED,SAAS,eAAe,CAAC,KAA8C;IACtE,OAAO;QACN,IAAI,EAAE;YACL,EAAE,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE;YACrB,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI;YACzB,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO;YAC/B,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ;YACjC,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,WAAW;YACvC,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE;SAC/C;QACD,UAAU,EAAE,KAAK;KACjB,CAAA;AACF,CAAC;AAED,MAAM,sBAAsB;IAClB,IAAI,GAAG,cAAuB,CAAA;IACvC,WAAW,GAAG,CAAC,CAAA;IAEf,KAAK,CAAC,MAAM,CAAC,OAA8B;QAC1C,IAAI,CAAC,WAAW,IAAI,CAAC,CAAA;QACrB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;IACvD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAqB,EAAE,OAA8B;QACjE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;IACvC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAkB;QAC/B,WAAW;IACZ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAkB;QAC/B,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;IACvC,CAAC;CACD;AAED,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;IACrD,EAAE,CAAC,6FAA6F,EAAE,KAAK,IAAI,EAAE;QAC5G,MAAM,KAAK,GAAG,IAAI,oBAAoB,EAAE,CAAA;QACxC,MAAM,WAAW,GAAG,IAAI,mBAAmB,EAAE,CAAA;QAC7C,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,aAAa,CACxC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAC9C,MAAM,CACN,CAAA;QACD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,YAAY,CAC5C,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAClD,MAAM,CACN,CAAA;QAED,MAAM,SAAS,GAAa;YAC3B,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,UAAoB;YAC5B,QAAQ,EAAE,MAAM;SAChB,CAAA;QAED,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,aAAa,CAC9C,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,EACvE,MAAM,CACN,CAAA;QACD,MAAM,KAAK,CAAC,aAAa,CAAC,EAAE,GAAG,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAA;QAEzE,IAAI,cAAc,GAAG,CAAC,CAAA;QACtB,MAAM,YAAY,GAAG,IAAI,0BAA0B,CAAC;YACnD,KAAK;YACL,iBAAiB,EAAE,GAAG,EAAE,CAAC,YAAY,EAAE,cAAc,EAAe;SACpE,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAA;QACpC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QAExD,MAAM,iBAAiB,GAAG,IAAI,wBAAwB,EAAE,CAAA;QACxD,MAAM,aAAa,GAAG,IAAI,sBAAsB,EAAE,CAAA;QAClD,iBAAiB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;QAEzC,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAA;QAC7E,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE;YACrD,YAAY,EAAE,KAAK;YACnB,mBAAmB,EAAE,YAAY;YACjC,iBAAiB;YACjB,QAAQ,EAAE,IAAI,wBAAwB,CAAC,KAAK,CAAC;YAC7C,aAAa;SACb,CAAC,CAAA;QAEF,MAAM,WAAW,GAAqB;YACrC,WAAW,EAAE,YAAqB;YAClC,aAAa,EAAE,YAAY;YAC3B,qBAAqB,EAAE,IAAI,eAAe,EAAE;YAC5C,KAAK,EAAE,CAAC;YACR,aAAa,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE;YACrD,QAAQ,EAAE,MAAM;YAChB,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,SAAS,EAAE,aAAa,CAAC,EAAE;YAC3B,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,WAAW,EAAE,SAAS;SACtB,CAAA;QAED,MAAM,OAAO,GAAuB;YACnC,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE;YACjD,eAAe,EAAE,aAAa,CAAC,EAAE;YACjC,QAAQ,EAAE,MAAM;YAChB,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,WAAW,EAAE,SAAS;YACtB,gBAAgB,EAAE,cAAc;SAChC,CAAA;QAED,MAAM,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CACtE,qCAAqC,CACrC,CAAA;QACD,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAEzC,oEAAoE;QACpE,uDAAuD;QACvD,MAAM,gBAAgB,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;QACpE,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAA;QAErE,+BAA+B;QAC/B,MAAM,eAAe,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;QACxE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC9C,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAExD,8DAA8D;QAC9D,kEAAkE;QAClE,oEAAoE;QACpE,yCAAyC;QACzC,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;QACrE,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;QACrF,MAAM,KAAK,GAAG,IAAI,oBAAoB,EAAE,CAAA;QACxC,MAAM,WAAW,GAAG,IAAI,mBAAmB,EAAE,CAAA;QAC7C,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,aAAa,CACxC;YACC,QAAQ,EAAE,MAAM;YAChB,IAAI,EAAE,yBAAyB;SAC/B,EACD,MAAM,CACN,CAAA;QACD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,YAAY,CAC5C,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,EACxD,MAAM,CACN,CAAA;QAED,MAAM,SAAS,GAAa;YAC3B,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,UAAoB;YAC5B,QAAQ,EAAE,MAAM;SAChB,CAAA;QAED,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,aAAa,CAC9C,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,EACvE,MAAM,CACN,CAAA;QACD,MAAM,KAAK,CAAC,aAAa,CAAC,EAAE,GAAG,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAA;QAEzE,IAAI,cAAc,GAAG,CAAC,CAAA;QACtB,MAAM,YAAY,GAAG,IAAI,0BAA0B,CAAC;YACnD,KAAK;YACL,iBAAiB,EAAE,GAAG,EAAE,CAAC,YAAY,EAAE,cAAc,EAAe;SACpE,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAA;QACpC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QAExD,MAAM,iBAAiB,GAAG,IAAI,wBAAwB,EAAE,CAAA;QACxD,iBAAiB,CAAC,QAAQ,CAAC,IAAI,sBAAsB,EAAE,CAAC,CAAA;QAExD,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAA;QAC7E,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE;YACrD,YAAY,EAAE,KAAK;YACnB,mBAAmB,EAAE,YAAY;YACjC,iBAAiB;YACjB,QAAQ,EAAE,IAAI,wBAAwB,CAAC,KAAK,CAAC;YAC7C,aAAa;SACb,CAAC,CAAA;QAEF,MAAM,WAAW,GAAqB;YACrC,WAAW,EAAE,YAAqB;YAClC,aAAa,EAAE,YAAY;YAC3B,qBAAqB,EAAE,IAAI,eAAe,EAAE;YAC5C,KAAK,EAAE,CAAC;YACR,aAAa,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE;YACrD,QAAQ,EAAE,MAAM;YAChB,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,SAAS,EAAE,aAAa,CAAC,EAAE;YAC3B,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,WAAW,EAAE,SAAS;SACtB,CAAA;QAED,MAAM,OAAO,GAAuB;YACnC,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE;YACjD,eAAe,EAAE,aAAa,CAAC,EAAE;YACjC,QAAQ,EAAE,MAAM;YAChB,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,WAAW,EAAE,SAAS;YACtB,gBAAgB,EAAE,cAAc;SAChC,CAAA;QAED,+DAA+D;QAC/D,gEAAgE;QAChE,oEAAoE;QACpE,MAAM,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CACtE,qCAAqC,CACrC,CAAA;QACD,MAAM,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CACtE,qCAAqC,CACrC,CAAA;QAED,2CAA2C;QAC3C,MAAM,gBAAgB,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;QACpE,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAA;QAErE,oEAAoE;QACpE,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;QACrE,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -19,9 +19,10 @@ import { InMemorySessionStore } from '../../../store/session/memory.js';
19
19
  import { SessionSummaryMaterializer } from '../../summary/materialize.js';
20
20
  import { SessionAlreadySummarizedError } from '../../summary/ref.js';
21
21
  import { DEFAULT_TENANT, agentActor } from './_fixtures.js';
22
+ const TEST_THREAD_ID = 'thd_test';
22
23
  async function seedActive(store) {
23
24
  const project = await store.createProject({ tenantId: DEFAULT_TENANT, name: 'summary' }, DEFAULT_TENANT);
24
- const session = await store.createSession({ projectId: project.id, currentActor: agentActor('agt_worker') }, DEFAULT_TENANT);
25
+ const session = await store.createSession({ threadId: TEST_THREAD_ID, projectId: project.id, currentActor: agentActor('agt_worker') }, DEFAULT_TENANT);
25
26
  await store.updateSession({ ...session, status: 'active' }, DEFAULT_TENANT);
26
27
  return { project, session: { ...session, status: 'active' } };
27
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"summary-materialization-e2e.test.js","sourceRoot":"","sources":["../../../../src/session/__tests__/integration/summary-materialization-e2e.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"summary-materialization-e2e.test.js","sourceRoot":"","sources":["../../../../src/session/__tests__/integration/summary-materialization-e2e.test.ts"],"names":[],"mappings":"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"}
@@ -15,11 +15,12 @@ import { InMemorySessionStore } from '../../../store/session/memory.js';
15
15
  import { createUserMessage } from '../../../types/message/index.js';
16
16
  import { TenantIsolationError } from '../../errors.js';
17
17
  import { DEFAULT_TENANT, OTHER_TENANT, agentActor, userActor } from './_fixtures.js';
18
+ const TEST_THREAD_ID = 'thd_test';
18
19
  async function seedTenantAResources() {
19
20
  const store = new InMemorySessionStore();
20
21
  const project = await store.createProject({ tenantId: DEFAULT_TENANT, name: 'tenA' }, DEFAULT_TENANT);
21
- const parent = await store.createSession({ projectId: project.id, currentActor: userActor('usr_a') }, DEFAULT_TENANT);
22
- const child = await store.createSession({ projectId: project.id, currentActor: agentActor('agt_a') }, DEFAULT_TENANT);
22
+ const parent = await store.createSession({ threadId: TEST_THREAD_ID, projectId: project.id, currentActor: userActor('usr_a') }, DEFAULT_TENANT);
23
+ const child = await store.createSession({ threadId: TEST_THREAD_ID, projectId: project.id, currentActor: agentActor('agt_a') }, DEFAULT_TENANT);
23
24
  const sub = await store.createSubSession({
24
25
  parentSessionId: parent.id,
25
26
  childSessionId: child.id,
@@ -128,7 +129,11 @@ describe('Integration — tenant isolation', () => {
128
129
  });
129
130
  it('createSession with project owned by another tenant → TenantIsolationError', async () => {
130
131
  const { store, project } = await seedTenantAResources();
131
- await expect(store.createSession({ projectId: project.id, currentActor: userActor('usr_intruder', OTHER_TENANT) }, OTHER_TENANT)).rejects.toBeInstanceOf(TenantIsolationError);
132
+ await expect(store.createSession({
133
+ threadId: TEST_THREAD_ID,
134
+ projectId: project.id,
135
+ currentActor: userActor('usr_intruder', OTHER_TENANT),
136
+ }, OTHER_TENANT)).rejects.toBeInstanceOf(TenantIsolationError);
132
137
  });
133
138
  it('tenant denormalization: Session, SubSession records carry tenantId explicitly', async () => {
134
139
  const { store, parent, sub } = await seedTenantAResources();
@@ -149,7 +154,11 @@ describe('Integration — tenant isolation', () => {
149
154
  const { store, parent } = await seedTenantAResources();
150
155
  // Create a session in OTHER_TENANT with its own project.
151
156
  const otherProject = await store.createProject({ tenantId: OTHER_TENANT, name: 'other' }, OTHER_TENANT);
152
- const otherChild = await store.createSession({ projectId: otherProject.id, currentActor: userActor('usr_other', OTHER_TENANT) }, OTHER_TENANT);
157
+ const otherChild = await store.createSession({
158
+ threadId: TEST_THREAD_ID,
159
+ projectId: otherProject.id,
160
+ currentActor: userActor('usr_other', OTHER_TENANT),
161
+ }, OTHER_TENANT);
153
162
  await expect(store.createSubSession({
154
163
  parentSessionId: parent.id, // DEFAULT_TENANT
155
164
  childSessionId: otherChild.id, // OTHER_TENANT
@@ -166,7 +175,7 @@ describe('Integration — tenant isolation', () => {
166
175
  // Parent has a sub-session attached → deleteSession would fail anyway,
167
176
  // but the tenant guard fires first. Use a standalone session.
168
177
  const project = (await store.createProject({ tenantId: DEFAULT_TENANT, name: 'del' }, DEFAULT_TENANT)).id;
169
- const lonely = await store.createSession({ projectId: project, currentActor: userActor('usr_lonely') }, DEFAULT_TENANT);
178
+ const lonely = await store.createSession({ threadId: TEST_THREAD_ID, projectId: project, currentActor: userActor('usr_lonely') }, DEFAULT_TENANT);
170
179
  await expect(store.deleteSession(lonely.id, OTHER_TENANT)).rejects.toBeInstanceOf(TenantIsolationError);
171
180
  });
172
181
  it('missing sub-session returns null for correct tenant (not a leak channel)', async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"tenant-isolation.test.js","sourceRoot":"","sources":["../../../../src/session/__tests__/integration/tenant-isolation.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tenant-isolation.test.js","sourceRoot":"","sources":["../../../../src/session/__tests__/integration/tenant-isolation.test.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,8 @@
7
7
  * (Convention #5: deny-by-default, fail fast).
8
8
  */
9
9
  import type { SessionId, TenantId } from '../types/ids/index.js';
10
+ import type { ThreadId } from '../types/session/ids.js';
11
+ import type { SessionStatus } from './hierarchy/session.js';
10
12
  import type { WorkspaceBackendKind } from './workspace/driver.js';
11
13
  /**
12
14
  * Raised by {@link SessionStore} accessors when the supplied {@link TenantId}
@@ -57,4 +59,81 @@ export declare class WorkspaceBackendError extends Error {
57
59
  cause?: unknown;
58
60
  });
59
61
  }
62
+ /**
63
+ * Raised by {@link import('../types/thread/store.js').ThreadStore.updateThread}
64
+ * when the supplied {@link Thread.ownerVersion} does not match the persisted
65
+ * record. The caller must re-read via `getThread`, re-apply its intended
66
+ * mutation on top of the fresh record, and retry. Mirrors the Session
67
+ * handoff CAS pattern (§6.1).
68
+ */
69
+ export declare class StaleThreadError extends Error {
70
+ readonly details: {
71
+ threadId: ThreadId;
72
+ expectedVersion: number;
73
+ actualVersion: number;
74
+ };
75
+ constructor(details: {
76
+ threadId: ThreadId;
77
+ expectedVersion: number;
78
+ actualVersion: number;
79
+ });
80
+ }
81
+ /**
82
+ * Raised by the spawn path (and any caller that enforces the open-thread
83
+ * precondition) when a Thread is in `'archived'` state and would-be mutations
84
+ * require it to be `'open'`. Convention #5: deny-by-default — archival is a
85
+ * hard read-only boundary.
86
+ */
87
+ export declare class ThreadClosedError extends Error {
88
+ readonly details: {
89
+ threadId: ThreadId;
90
+ op: string;
91
+ };
92
+ constructor(details: {
93
+ threadId: ThreadId;
94
+ op: string;
95
+ });
96
+ }
97
+ /**
98
+ * Raised by {@link import('../manager/thread/lifecycle.js').ThreadManager.archive}
99
+ * and `.delete` when the Thread's session-presence precondition is violated:
100
+ *
101
+ * - `op: 'archive'` — at least one Session under the Thread is in a
102
+ * non-terminal state (`active | locked | awaiting_hitl | awaiting_merge`).
103
+ * The caller must first quiesce those sessions (let them reach `idle`,
104
+ * `failed`, or `archived`) before flipping the Thread to archived.
105
+ * - `op: 'delete'` — the Thread still has at least one attached Session.
106
+ * Callers must either archive + tombstone those sessions (`deleteSession`)
107
+ * before calling `deleteThread`, or accept that deletion is not yet safe.
108
+ *
109
+ * `blockingSessions` carries the first {@link THREAD_NOT_EMPTY_SAMPLE_LIMIT}
110
+ * offenders with their current status so operator tooling can surface an
111
+ * actionable list without unbounded error payloads on large threads.
112
+ * `totalBlockingSessions` holds the full count even when the sample is
113
+ * truncated. Convention #5: deny-by-default — no implicit cascade, no silent
114
+ * no-op.
115
+ */
116
+ export declare const THREAD_NOT_EMPTY_SAMPLE_LIMIT = 50;
117
+ export declare class ThreadNotEmptyError extends Error {
118
+ readonly details: {
119
+ threadId: ThreadId;
120
+ tenantId: TenantId;
121
+ op: 'archive' | 'delete';
122
+ blockingSessions: ReadonlyArray<{
123
+ sessionId: SessionId;
124
+ status: SessionStatus;
125
+ }>;
126
+ totalBlockingSessions: number;
127
+ };
128
+ constructor(details: {
129
+ threadId: ThreadId;
130
+ tenantId: TenantId;
131
+ op: 'archive' | 'delete';
132
+ blockingSessions: ReadonlyArray<{
133
+ sessionId: SessionId;
134
+ status: SessionStatus;
135
+ }>;
136
+ totalBlockingSessions: number;
137
+ });
138
+ }
60
139
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/session/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAEjE;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,OAAO,EAAE;QACjB,SAAS,EAAE,QAAQ,CAAA;QACnB,QAAQ,EAAE,MAAM,CAAA;KAChB,CAAA;gBAEW,OAAO,EAAE;QAAE,SAAS,EAAE,QAAQ,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;CAK9D;AAED;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,OAAO,EAAE;QACjB,SAAS,EAAE,SAAS,CAAA;QACpB,SAAS,EAAE,SAAS,SAAS,EAAE,CAAA;KAC/B,CAAA;gBAEW,OAAO,EAAE;QAAE,SAAS,EAAE,SAAS,CAAC;QAAC,SAAS,EAAE,SAAS,SAAS,EAAE,CAAA;KAAE;CAO9E;AAED;;;;;GAKG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,OAAO,EAAE;QACjB,EAAE,EAAE,MAAM,CAAA;QACV,IAAI,EAAE,oBAAoB,CAAA;QAC1B,KAAK,CAAC,EAAE,OAAO,CAAA;KACf,CAAA;gBAEW,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,oBAAoB,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAKhF"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/session/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAEjE;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,OAAO,EAAE;QACjB,SAAS,EAAE,QAAQ,CAAA;QACnB,QAAQ,EAAE,MAAM,CAAA;KAChB,CAAA;gBAEW,OAAO,EAAE;QAAE,SAAS,EAAE,QAAQ,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;CAK9D;AAED;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,OAAO,EAAE;QACjB,SAAS,EAAE,SAAS,CAAA;QACpB,SAAS,EAAE,SAAS,SAAS,EAAE,CAAA;KAC/B,CAAA;gBAEW,OAAO,EAAE;QAAE,SAAS,EAAE,SAAS,CAAC;QAAC,SAAS,EAAE,SAAS,SAAS,EAAE,CAAA;KAAE;CAO9E;AAED;;;;;GAKG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,OAAO,EAAE;QACjB,EAAE,EAAE,MAAM,CAAA;QACV,IAAI,EAAE,oBAAoB,CAAA;QAC1B,KAAK,CAAC,EAAE,OAAO,CAAA;KACf,CAAA;gBAEW,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,oBAAoB,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAKhF;AAED;;;;;;GAMG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,OAAO,EAAE;QACjB,QAAQ,EAAE,QAAQ,CAAA;QAClB,eAAe,EAAE,MAAM,CAAA;QACvB,aAAa,EAAE,MAAM,CAAA;KACrB,CAAA;gBAEW,OAAO,EAAE;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,eAAe,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE;CAO3F;AAED;;;;;GAKG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,OAAO,EAAE;QACjB,QAAQ,EAAE,QAAQ,CAAA;QAClB,EAAE,EAAE,MAAM,CAAA;KACV,CAAA;gBAEW,OAAO,EAAE;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE;CAKvD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,6BAA6B,KAAK,CAAA;AAE/C,qBAAa,mBAAoB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,OAAO,EAAE;QACjB,QAAQ,EAAE,QAAQ,CAAA;QAClB,QAAQ,EAAE,QAAQ,CAAA;QAClB,EAAE,EAAE,SAAS,GAAG,QAAQ,CAAA;QACxB,gBAAgB,EAAE,aAAa,CAAC;YAAE,SAAS,EAAE,SAAS,CAAC;YAAC,MAAM,EAAE,aAAa,CAAA;SAAE,CAAC,CAAA;QAChF,qBAAqB,EAAE,MAAM,CAAA;KAC7B,CAAA;gBAEW,OAAO,EAAE;QACpB,QAAQ,EAAE,QAAQ,CAAA;QAClB,QAAQ,EAAE,QAAQ,CAAA;QAClB,EAAE,EAAE,SAAS,GAAG,QAAQ,CAAA;QACxB,gBAAgB,EAAE,aAAa,CAAC;YAAE,SAAS,EAAE,SAAS,CAAC;YAAC,MAAM,EAAE,aAAa,CAAA;SAAE,CAAC,CAAA;QAChF,qBAAqB,EAAE,MAAM,CAAA;KAC7B;CAOD"}
@@ -47,4 +47,61 @@ export class WorkspaceBackendError extends Error {
47
47
  this.details = details;
48
48
  }
49
49
  }
50
+ /**
51
+ * Raised by {@link import('../types/thread/store.js').ThreadStore.updateThread}
52
+ * when the supplied {@link Thread.ownerVersion} does not match the persisted
53
+ * record. The caller must re-read via `getThread`, re-apply its intended
54
+ * mutation on top of the fresh record, and retry. Mirrors the Session
55
+ * handoff CAS pattern (§6.1).
56
+ */
57
+ export class StaleThreadError extends Error {
58
+ details;
59
+ constructor(details) {
60
+ super(`Stale Thread ${details.threadId}: expected ownerVersion=${details.expectedVersion}, actual=${details.actualVersion}`);
61
+ this.name = 'StaleThreadError';
62
+ this.details = details;
63
+ }
64
+ }
65
+ /**
66
+ * Raised by the spawn path (and any caller that enforces the open-thread
67
+ * precondition) when a Thread is in `'archived'` state and would-be mutations
68
+ * require it to be `'open'`. Convention #5: deny-by-default — archival is a
69
+ * hard read-only boundary.
70
+ */
71
+ export class ThreadClosedError extends Error {
72
+ details;
73
+ constructor(details) {
74
+ super(`Thread ${details.threadId} is archived; operation '${details.op}' rejected`);
75
+ this.name = 'ThreadClosedError';
76
+ this.details = details;
77
+ }
78
+ }
79
+ /**
80
+ * Raised by {@link import('../manager/thread/lifecycle.js').ThreadManager.archive}
81
+ * and `.delete` when the Thread's session-presence precondition is violated:
82
+ *
83
+ * - `op: 'archive'` — at least one Session under the Thread is in a
84
+ * non-terminal state (`active | locked | awaiting_hitl | awaiting_merge`).
85
+ * The caller must first quiesce those sessions (let them reach `idle`,
86
+ * `failed`, or `archived`) before flipping the Thread to archived.
87
+ * - `op: 'delete'` — the Thread still has at least one attached Session.
88
+ * Callers must either archive + tombstone those sessions (`deleteSession`)
89
+ * before calling `deleteThread`, or accept that deletion is not yet safe.
90
+ *
91
+ * `blockingSessions` carries the first {@link THREAD_NOT_EMPTY_SAMPLE_LIMIT}
92
+ * offenders with their current status so operator tooling can surface an
93
+ * actionable list without unbounded error payloads on large threads.
94
+ * `totalBlockingSessions` holds the full count even when the sample is
95
+ * truncated. Convention #5: deny-by-default — no implicit cascade, no silent
96
+ * no-op.
97
+ */
98
+ export const THREAD_NOT_EMPTY_SAMPLE_LIMIT = 50;
99
+ export class ThreadNotEmptyError extends Error {
100
+ details;
101
+ constructor(details) {
102
+ super(`Thread ${details.threadId} ${details.op} blocked: ${details.totalBlockingSessions} session(s) still attached`);
103
+ this.name = 'ThreadNotEmptyError';
104
+ this.details = details;
105
+ }
106
+ }
50
107
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/session/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH;;;;;GAKG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IACrC,OAAO,CAGf;IAED,YAAY,OAAkD;QAC7D,KAAK,CAAC,+BAA+B,OAAO,CAAC,SAAS,aAAa,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;QACtF,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAA;QAClC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACvB,CAAC;CACD;AAED;;;;GAIG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IACnC,OAAO,CAGf;IAED,YAAY,OAAkE;QAC7E,KAAK,CACJ,uCAAuC,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAC7F,CAAA;QACD,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAA;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACvB,CAAC;CACD;AAED;;;;;GAKG;AACH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IACtC,OAAO,CAIf;IAED,YAAY,OAAoE;QAC/E,KAAK,CAAC,qBAAqB,OAAO,CAAC,IAAI,cAAc,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;QAClE,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAA;QACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACvB,CAAC;CACD"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/session/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH;;;;;GAKG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IACrC,OAAO,CAGf;IAED,YAAY,OAAkD;QAC7D,KAAK,CAAC,+BAA+B,OAAO,CAAC,SAAS,aAAa,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;QACtF,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAA;QAClC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACvB,CAAC;CACD;AAED;;;;GAIG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IACnC,OAAO,CAGf;IAED,YAAY,OAAkE;QAC7E,KAAK,CACJ,uCAAuC,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAC7F,CAAA;QACD,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAA;QAChC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACvB,CAAC;CACD;AAED;;;;;GAKG;AACH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IACtC,OAAO,CAIf;IAED,YAAY,OAAoE;QAC/E,KAAK,CAAC,qBAAqB,OAAO,CAAC,IAAI,cAAc,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;QAClE,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAA;QACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACvB,CAAC;CACD;AAED;;;;;;GAMG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACjC,OAAO,CAIf;IAED,YAAY,OAA+E;QAC1F,KAAK,CACJ,gBAAgB,OAAO,CAAC,QAAQ,2BAA2B,OAAO,CAAC,eAAe,YAAY,OAAO,CAAC,aAAa,EAAE,CACrH,CAAA;QACD,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAA;QAC9B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACvB,CAAC;CACD;AAED;;;;;GAKG;AACH,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAClC,OAAO,CAGf;IAED,YAAY,OAA2C;QACtD,KAAK,CAAC,UAAU,OAAO,CAAC,QAAQ,4BAA4B,OAAO,CAAC,EAAE,YAAY,CAAC,CAAA;QACnF,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAA;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACvB,CAAC;CACD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,CAAA;AAE/C,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IACpC,OAAO,CAMf;IAED,YAAY,OAMX;QACA,KAAK,CACJ,UAAU,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,EAAE,aAAa,OAAO,CAAC,qBAAqB,4BAA4B,CAC9G,CAAA;QACD,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAA;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACvB,CAAC;CACD"}