kiokuko-dsh 0.2.7 → 0.2.9

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 (481) hide show
  1. package/PERMISSIONS.md +1 -1
  2. package/README.ja.md +38 -11
  3. package/README.ko.md +34 -3
  4. package/README.md +39 -13
  5. package/README.zh-CN.md +34 -3
  6. package/THIRD_PARTY_NOTICES.md +4 -0
  7. package/dist/db/transaction.d.ts +2 -1
  8. package/dist/db/transaction.d.ts.map +1 -1
  9. package/dist/db/transaction.js +44 -7
  10. package/dist/db/transaction.js.map +1 -1
  11. package/dist/deep-planning-config.d.ts +32 -0
  12. package/dist/deep-planning-config.d.ts.map +1 -0
  13. package/dist/deep-planning-config.js +20 -0
  14. package/dist/deep-planning-config.js.map +1 -0
  15. package/dist/deep-thinker/core/contracts.d.ts +1 -29
  16. package/dist/deep-thinker/core/contracts.d.ts.map +1 -1
  17. package/dist/deep-thinker/core/contracts.js +2 -17
  18. package/dist/deep-thinker/core/contracts.js.map +1 -1
  19. package/dist/deep-thinker/memory-finalizer.d.ts.map +1 -1
  20. package/dist/deep-thinker/memory-finalizer.js +1 -114
  21. package/dist/deep-thinker/memory-finalizer.js.map +1 -1
  22. package/dist/deep-thinker/native-executor.d.ts.map +1 -1
  23. package/dist/deep-thinker/native-executor.js +3 -4
  24. package/dist/deep-thinker/native-executor.js.map +1 -1
  25. package/dist/deep-thinker/store.js +1 -2
  26. package/dist/deep-thinker/store.js.map +1 -1
  27. package/dist/dsh/agenticreplay-event-mapper.d.ts +1 -1
  28. package/dist/dsh/agenticreplay-event-mapper.d.ts.map +1 -1
  29. package/dist/dsh/agenticreplay-event-mapper.js +5 -1
  30. package/dist/dsh/agenticreplay-event-mapper.js.map +1 -1
  31. package/dist/dsh/agenticreplay-files.d.ts +1 -0
  32. package/dist/dsh/agenticreplay-files.d.ts.map +1 -1
  33. package/dist/dsh/agenticreplay-files.js +19 -2
  34. package/dist/dsh/agenticreplay-files.js.map +1 -1
  35. package/dist/dsh/agenticreplay-host.js +3 -3
  36. package/dist/dsh/agenticreplay-host.js.map +1 -1
  37. package/dist/dsh/agenticreplay-read-service.d.ts +20 -0
  38. package/dist/dsh/agenticreplay-read-service.d.ts.map +1 -1
  39. package/dist/dsh/agenticreplay-read-service.js +27 -0
  40. package/dist/dsh/agenticreplay-read-service.js.map +1 -1
  41. package/dist/dsh/agenticreplay-recorder.d.ts +18 -12
  42. package/dist/dsh/agenticreplay-recorder.d.ts.map +1 -1
  43. package/dist/dsh/agenticreplay-recorder.js +43 -13
  44. package/dist/dsh/agenticreplay-recorder.js.map +1 -1
  45. package/dist/dsh/agenticreplay-security.d.ts +1 -0
  46. package/dist/dsh/agenticreplay-security.d.ts.map +1 -1
  47. package/dist/dsh/agenticreplay-security.js +84 -3
  48. package/dist/dsh/agenticreplay-security.js.map +1 -1
  49. package/dist/dsh/answer-review/coordinator.js +2 -1
  50. package/dist/dsh/answer-review/coordinator.js.map +1 -1
  51. package/dist/dsh/auto-memory-review.d.ts.map +1 -1
  52. package/dist/dsh/auto-memory-review.js +10 -193
  53. package/dist/dsh/auto-memory-review.js.map +1 -1
  54. package/dist/dsh/coding-workflow/contracts.d.ts +2 -0
  55. package/dist/dsh/coding-workflow/contracts.d.ts.map +1 -1
  56. package/dist/dsh/coding-workflow/contracts.js.map +1 -1
  57. package/dist/dsh/coding-workflow/intent.d.ts.map +1 -1
  58. package/dist/dsh/coding-workflow/intent.js +12 -4
  59. package/dist/dsh/coding-workflow/intent.js.map +1 -1
  60. package/dist/dsh/coding-workflow/service.d.ts +10 -81
  61. package/dist/dsh/coding-workflow/service.d.ts.map +1 -1
  62. package/dist/dsh/coding-workflow/service.js +52 -1
  63. package/dist/dsh/coding-workflow/service.js.map +1 -1
  64. package/dist/dsh/coding-workflow/store.d.ts +22 -0
  65. package/dist/dsh/coding-workflow/store.d.ts.map +1 -1
  66. package/dist/dsh/coding-workflow/store.js +51 -0
  67. package/dist/dsh/coding-workflow/store.js.map +1 -1
  68. package/dist/dsh/completion-verifiers.d.ts +6 -0
  69. package/dist/dsh/completion-verifiers.d.ts.map +1 -1
  70. package/dist/dsh/completion-verifiers.js.map +1 -1
  71. package/dist/dsh/composition.d.ts +2 -0
  72. package/dist/dsh/composition.d.ts.map +1 -1
  73. package/dist/dsh/composition.js +3 -0
  74. package/dist/dsh/composition.js.map +1 -1
  75. package/dist/dsh/config.d.ts +1 -1
  76. package/dist/dsh/config.d.ts.map +1 -1
  77. package/dist/dsh/config.js +3 -3
  78. package/dist/dsh/config.js.map +1 -1
  79. package/dist/dsh/core/host.d.ts.map +1 -1
  80. package/dist/dsh/core/host.js +159 -34
  81. package/dist/dsh/core/host.js.map +1 -1
  82. package/dist/dsh/core/tasks.d.ts +5 -2
  83. package/dist/dsh/core/tasks.d.ts.map +1 -1
  84. package/dist/dsh/core/tasks.js +124 -93
  85. package/dist/dsh/core/tasks.js.map +1 -1
  86. package/dist/dsh/decisions/request-intent.d.ts +114 -1
  87. package/dist/dsh/decisions/request-intent.d.ts.map +1 -1
  88. package/dist/dsh/decisions/request-intent.js +102 -18
  89. package/dist/dsh/decisions/request-intent.js.map +1 -1
  90. package/dist/dsh/execution-result.d.ts +1 -0
  91. package/dist/dsh/execution-result.d.ts.map +1 -1
  92. package/dist/dsh/execution-support.d.ts +2 -0
  93. package/dist/dsh/execution-support.d.ts.map +1 -1
  94. package/dist/dsh/execution-support.js +39 -4
  95. package/dist/dsh/execution-support.js.map +1 -1
  96. package/dist/dsh/existing-task-intake.d.ts +22 -0
  97. package/dist/dsh/existing-task-intake.d.ts.map +1 -0
  98. package/dist/dsh/existing-task-intake.js +46 -0
  99. package/dist/dsh/existing-task-intake.js.map +1 -0
  100. package/dist/dsh/finalization-request.d.ts +1 -1
  101. package/dist/dsh/finalization-request.d.ts.map +1 -1
  102. package/dist/dsh/finalization-request.js +1 -1
  103. package/dist/dsh/finalization-request.js.map +1 -1
  104. package/dist/dsh/guardrail/contracts.d.ts +85 -0
  105. package/dist/dsh/guardrail/contracts.d.ts.map +1 -0
  106. package/dist/dsh/guardrail/contracts.js +10 -0
  107. package/dist/dsh/guardrail/contracts.js.map +1 -0
  108. package/dist/dsh/guardrail/engine.d.ts +19 -0
  109. package/dist/dsh/guardrail/engine.d.ts.map +1 -0
  110. package/dist/dsh/guardrail/engine.js +178 -0
  111. package/dist/dsh/guardrail/engine.js.map +1 -0
  112. package/dist/dsh/guardrail/evidence.d.ts +16 -0
  113. package/dist/dsh/guardrail/evidence.d.ts.map +1 -0
  114. package/dist/dsh/guardrail/evidence.js +101 -0
  115. package/dist/dsh/guardrail/evidence.js.map +1 -0
  116. package/dist/dsh/guardrail/service.d.ts +27 -0
  117. package/dist/dsh/guardrail/service.d.ts.map +1 -0
  118. package/dist/dsh/guardrail/service.js +253 -0
  119. package/dist/dsh/guardrail/service.js.map +1 -0
  120. package/dist/dsh/host-adapter/admission.d.ts.map +1 -1
  121. package/dist/dsh/host-adapter/admission.js +143 -144
  122. package/dist/dsh/host-adapter/admission.js.map +1 -1
  123. package/dist/dsh/host-adapter/lifecycle.d.ts +1 -0
  124. package/dist/dsh/host-adapter/lifecycle.d.ts.map +1 -1
  125. package/dist/dsh/host-adapter/lifecycle.js +107 -77
  126. package/dist/dsh/host-adapter/lifecycle.js.map +1 -1
  127. package/dist/dsh/host-adapter/routing.d.ts.map +1 -1
  128. package/dist/dsh/host-adapter/routing.js +4 -4
  129. package/dist/dsh/host-adapter/routing.js.map +1 -1
  130. package/dist/dsh/host-adapter/turn-state.d.ts +4 -2
  131. package/dist/dsh/host-adapter/turn-state.d.ts.map +1 -1
  132. package/dist/dsh/host-adapter/turn-state.js +14 -7
  133. package/dist/dsh/host-adapter/turn-state.js.map +1 -1
  134. package/dist/dsh/host-adapter.d.ts.map +1 -1
  135. package/dist/dsh/host-adapter.js +125 -24
  136. package/dist/dsh/host-adapter.js.map +1 -1
  137. package/dist/dsh/intake-clarification.js +2 -2
  138. package/dist/dsh/intake-clarification.js.map +1 -1
  139. package/dist/dsh/intake-gate.js +6 -7
  140. package/dist/dsh/intake-gate.js.map +1 -1
  141. package/dist/dsh/legacy-session-codecs.d.ts +1 -0
  142. package/dist/dsh/legacy-session-codecs.d.ts.map +1 -1
  143. package/dist/dsh/legacy-session-codecs.js +831 -127
  144. package/dist/dsh/legacy-session-codecs.js.map +4 -4
  145. package/dist/dsh/lifecycle-memory.d.ts +66 -0
  146. package/dist/dsh/lifecycle-memory.d.ts.map +1 -0
  147. package/dist/dsh/lifecycle-memory.js +380 -0
  148. package/dist/dsh/lifecycle-memory.js.map +1 -0
  149. package/dist/dsh/lisp/candidate.d.ts +2 -2
  150. package/dist/dsh/lisp/ci.d.ts +2 -1
  151. package/dist/dsh/lisp/ci.d.ts.map +1 -1
  152. package/dist/dsh/lisp/ci.js +15 -2
  153. package/dist/dsh/lisp/ci.js.map +1 -1
  154. package/dist/dsh/lisp/contracts.d.ts +1 -18
  155. package/dist/dsh/lisp/contracts.d.ts.map +1 -1
  156. package/dist/dsh/lisp/contracts.js +1 -10
  157. package/dist/dsh/lisp/contracts.js.map +1 -1
  158. package/dist/dsh/lisp/files.d.ts +1 -1
  159. package/dist/dsh/lisp/files.d.ts.map +1 -1
  160. package/dist/dsh/lisp/files.js +17 -4
  161. package/dist/dsh/lisp/files.js.map +1 -1
  162. package/dist/dsh/lisp/hot-store.d.ts.map +1 -1
  163. package/dist/dsh/lisp/hot-store.js +4 -0
  164. package/dist/dsh/lisp/hot-store.js.map +1 -1
  165. package/dist/dsh/lisp/hot-tools.d.ts +2 -0
  166. package/dist/dsh/lisp/hot-tools.d.ts.map +1 -1
  167. package/dist/dsh/lisp/hot-tools.js +10 -0
  168. package/dist/dsh/lisp/hot-tools.js.map +1 -1
  169. package/dist/dsh/lisp/manager.d.ts +14 -1
  170. package/dist/dsh/lisp/manager.d.ts.map +1 -1
  171. package/dist/dsh/lisp/manager.js +238 -37
  172. package/dist/dsh/lisp/manager.js.map +1 -1
  173. package/dist/dsh/lisp/memory-verification.d.ts +5 -2
  174. package/dist/dsh/lisp/memory-verification.d.ts.map +1 -1
  175. package/dist/dsh/lisp/memory-verification.js +5 -1
  176. package/dist/dsh/lisp/memory-verification.js.map +1 -1
  177. package/dist/dsh/lisp/package-manager.d.ts +1 -1
  178. package/dist/dsh/lisp/package-manager.d.ts.map +1 -1
  179. package/dist/dsh/lisp/package-manager.js +10 -1
  180. package/dist/dsh/lisp/package-manager.js.map +1 -1
  181. package/dist/dsh/lisp/packages.d.ts +1 -1
  182. package/dist/dsh/lisp/packages.d.ts.map +1 -1
  183. package/dist/dsh/lisp/packages.js +15 -5
  184. package/dist/dsh/lisp/packages.js.map +1 -1
  185. package/dist/dsh/lisp/proposal-batch.d.ts +2 -0
  186. package/dist/dsh/lisp/proposal-batch.d.ts.map +1 -1
  187. package/dist/dsh/lisp/proposal-batch.js +17 -3
  188. package/dist/dsh/lisp/proposal-batch.js.map +1 -1
  189. package/dist/dsh/lisp/request-surface.d.ts +12 -0
  190. package/dist/dsh/lisp/request-surface.d.ts.map +1 -1
  191. package/dist/dsh/lisp/store.d.ts +2 -1
  192. package/dist/dsh/lisp/store.d.ts.map +1 -1
  193. package/dist/dsh/lisp/store.js +5 -1
  194. package/dist/dsh/lisp/store.js.map +1 -1
  195. package/dist/dsh/lisp/surface.d.ts.map +1 -1
  196. package/dist/dsh/lisp/surface.js +107 -13
  197. package/dist/dsh/lisp/surface.js.map +1 -1
  198. package/dist/dsh/lisp/task-authority.d.ts +29 -0
  199. package/dist/dsh/lisp/task-authority.d.ts.map +1 -0
  200. package/dist/dsh/lisp/task-authority.js +87 -0
  201. package/dist/dsh/lisp/task-authority.js.map +1 -0
  202. package/dist/dsh/lisp/worker.d.ts +3 -1
  203. package/dist/dsh/lisp/worker.d.ts.map +1 -1
  204. package/dist/dsh/lisp/worker.js +26 -4
  205. package/dist/dsh/lisp/worker.js.map +1 -1
  206. package/dist/dsh/lisp-config.d.ts +21 -0
  207. package/dist/dsh/lisp-config.d.ts.map +1 -0
  208. package/dist/dsh/lisp-config.js +13 -0
  209. package/dist/dsh/lisp-config.js.map +1 -0
  210. package/dist/dsh/memory-application.d.ts +3 -2
  211. package/dist/dsh/memory-application.d.ts.map +1 -1
  212. package/dist/dsh/memory-application.js +31 -22
  213. package/dist/dsh/memory-application.js.map +1 -1
  214. package/dist/dsh/model-handoff.d.ts.map +1 -1
  215. package/dist/dsh/model-handoff.js +2 -1
  216. package/dist/dsh/model-handoff.js.map +1 -1
  217. package/dist/dsh/models/service.d.ts.map +1 -1
  218. package/dist/dsh/models/service.js +13 -2
  219. package/dist/dsh/models/service.js.map +1 -1
  220. package/dist/dsh/models/vendor/opencode-codec.d.ts.map +1 -1
  221. package/dist/dsh/models/vendor/opencode-codec.js +71 -0
  222. package/dist/dsh/models/vendor/opencode-codec.js.map +1 -1
  223. package/dist/dsh/native-cancellation-observer.d.ts +13 -0
  224. package/dist/dsh/native-cancellation-observer.d.ts.map +1 -0
  225. package/dist/dsh/native-cancellation-observer.js +54 -0
  226. package/dist/dsh/native-cancellation-observer.js.map +1 -0
  227. package/dist/dsh/native-execution-ownership.d.ts +6 -0
  228. package/dist/dsh/native-execution-ownership.d.ts.map +1 -0
  229. package/dist/dsh/native-execution-ownership.js +34 -0
  230. package/dist/dsh/native-execution-ownership.js.map +1 -0
  231. package/dist/dsh/native-subagent.d.ts +2 -2
  232. package/dist/dsh/native-subagent.d.ts.map +1 -1
  233. package/dist/dsh/native-subagent.js +2 -3
  234. package/dist/dsh/native-subagent.js.map +1 -1
  235. package/dist/dsh/native-task-authority.d.ts +66 -0
  236. package/dist/dsh/native-task-authority.d.ts.map +1 -0
  237. package/dist/dsh/native-task-authority.js +220 -0
  238. package/dist/dsh/native-task-authority.js.map +1 -0
  239. package/dist/dsh/node-tap-summary.d.ts +1 -2
  240. package/dist/dsh/node-tap-summary.d.ts.map +1 -1
  241. package/dist/dsh/node-tap-summary.js +2 -24
  242. package/dist/dsh/node-tap-summary.js.map +1 -1
  243. package/dist/dsh/observation-pack/policy.d.ts +1 -0
  244. package/dist/dsh/observation-pack/policy.d.ts.map +1 -1
  245. package/dist/dsh/observation-pack/policy.js +3 -0
  246. package/dist/dsh/observation-pack/policy.js.map +1 -1
  247. package/dist/dsh/observation-pack/service.d.ts.map +1 -1
  248. package/dist/dsh/observation-pack/service.js +3 -1
  249. package/dist/dsh/observation-pack/service.js.map +1 -1
  250. package/dist/dsh/on-demand-intake.d.ts +28 -1
  251. package/dist/dsh/on-demand-intake.d.ts.map +1 -1
  252. package/dist/dsh/on-demand-intake.js +171 -10
  253. package/dist/dsh/on-demand-intake.js.map +1 -1
  254. package/dist/dsh/orchestration/execution-owner.js +1 -1
  255. package/dist/dsh/orchestration/execution-owner.js.map +1 -1
  256. package/dist/dsh/orchestration/managed-agent-executor.d.ts +12 -1
  257. package/dist/dsh/orchestration/managed-agent-executor.d.ts.map +1 -1
  258. package/dist/dsh/orchestration/managed-agent-executor.js +28 -2
  259. package/dist/dsh/orchestration/managed-agent-executor.js.map +1 -1
  260. package/dist/dsh/owned-completion-evidence.d.ts +11 -0
  261. package/dist/dsh/owned-completion-evidence.d.ts.map +1 -0
  262. package/dist/dsh/owned-completion-evidence.js +59 -0
  263. package/dist/dsh/owned-completion-evidence.js.map +1 -0
  264. package/dist/dsh/owned-execution.d.ts +28 -1
  265. package/dist/dsh/owned-execution.d.ts.map +1 -1
  266. package/dist/dsh/owned-execution.js +325 -101
  267. package/dist/dsh/owned-execution.js.map +1 -1
  268. package/dist/dsh/owned-read-owner.d.ts +6 -0
  269. package/dist/dsh/owned-read-owner.d.ts.map +1 -0
  270. package/dist/dsh/owned-read-owner.js +22 -0
  271. package/dist/dsh/owned-read-owner.js.map +1 -0
  272. package/dist/dsh/replay-memory-extract.d.ts +36 -0
  273. package/dist/dsh/replay-memory-extract.d.ts.map +1 -0
  274. package/dist/dsh/replay-memory-extract.js +192 -0
  275. package/dist/dsh/replay-memory-extract.js.map +1 -0
  276. package/dist/dsh/semantic-compaction/coordinator.d.ts.map +1 -1
  277. package/dist/dsh/semantic-compaction/coordinator.js +2 -1
  278. package/dist/dsh/semantic-compaction/coordinator.js.map +1 -1
  279. package/dist/dsh/session-bridge.d.ts +3 -0
  280. package/dist/dsh/session-bridge.d.ts.map +1 -1
  281. package/dist/dsh/session-bridge.js +22 -25
  282. package/dist/dsh/session-bridge.js.map +1 -1
  283. package/dist/dsh/session-history-compatibility.d.ts.map +1 -1
  284. package/dist/dsh/session-history-compatibility.js +15 -1
  285. package/dist/dsh/session-history-compatibility.js.map +1 -1
  286. package/dist/dsh/session-history-lookup.d.ts +1 -1
  287. package/dist/dsh/session-history-lookup.d.ts.map +1 -1
  288. package/dist/dsh/session-history-lookup.js +4 -3
  289. package/dist/dsh/session-history-lookup.js.map +1 -1
  290. package/dist/dsh/session-memory-finalizer.d.ts.map +1 -1
  291. package/dist/dsh/session-memory-finalizer.js +129 -117
  292. package/dist/dsh/session-memory-finalizer.js.map +1 -1
  293. package/dist/dsh/setup.d.ts +1 -1
  294. package/dist/dsh/setup.d.ts.map +1 -1
  295. package/dist/dsh/setup.js +1 -1
  296. package/dist/dsh/skill-prompts.json +1 -1
  297. package/dist/dsh/task-authority-context.d.ts +8 -0
  298. package/dist/dsh/task-authority-context.d.ts.map +1 -0
  299. package/dist/dsh/task-authority-context.js +28 -0
  300. package/dist/dsh/task-authority-context.js.map +1 -0
  301. package/dist/dsh/task-completion-host.d.ts +2 -1
  302. package/dist/dsh/task-completion-host.d.ts.map +1 -1
  303. package/dist/dsh/task-completion-host.js +17 -5
  304. package/dist/dsh/task-completion-host.js.map +1 -1
  305. package/dist/dsh/task-completion.d.ts +13 -0
  306. package/dist/dsh/task-completion.d.ts.map +1 -1
  307. package/dist/dsh/task-completion.js +23 -6
  308. package/dist/dsh/task-completion.js.map +1 -1
  309. package/dist/dsh/task-intake.d.ts.map +1 -1
  310. package/dist/dsh/task-intake.js +7 -16
  311. package/dist/dsh/task-intake.js.map +1 -1
  312. package/dist/dsh/task-source-history.d.ts +33 -0
  313. package/dist/dsh/task-source-history.d.ts.map +1 -0
  314. package/dist/dsh/task-source-history.js +62 -0
  315. package/dist/dsh/task-source-history.js.map +1 -0
  316. package/dist/dsh/task-state-host.d.ts +124 -0
  317. package/dist/dsh/task-state-host.d.ts.map +1 -0
  318. package/dist/dsh/task-state-host.js +403 -0
  319. package/dist/dsh/task-state-host.js.map +1 -0
  320. package/dist/dsh/task-state-surface.d.ts +8 -0
  321. package/dist/dsh/task-state-surface.d.ts.map +1 -0
  322. package/dist/dsh/task-state-surface.js +113 -0
  323. package/dist/dsh/task-state-surface.js.map +1 -0
  324. package/dist/dsh/task-state.d.ts +217 -0
  325. package/dist/dsh/task-state.d.ts.map +1 -0
  326. package/dist/dsh/task-state.js +315 -0
  327. package/dist/dsh/task-state.js.map +1 -0
  328. package/dist/dsh/tool-exposure-config.d.ts +12 -0
  329. package/dist/dsh/tool-exposure-config.d.ts.map +1 -0
  330. package/dist/dsh/tool-exposure-config.js +4 -0
  331. package/dist/dsh/tool-exposure-config.js.map +1 -0
  332. package/dist/dsh/tool-exposure.d.ts +2 -11
  333. package/dist/dsh/tool-exposure.d.ts.map +1 -1
  334. package/dist/dsh/tool-exposure.js +2 -2
  335. package/dist/dsh/tool-exposure.js.map +1 -1
  336. package/dist/dsh/tools.d.ts +2 -2
  337. package/dist/dsh/tools.d.ts.map +1 -1
  338. package/dist/dsh/tools.js +3 -2
  339. package/dist/dsh/tools.js.map +1 -1
  340. package/dist/enno-oduno/memory-verification.d.ts +2 -1
  341. package/dist/enno-oduno/memory-verification.d.ts.map +1 -1
  342. package/dist/enno-oduno/memory-verification.js +42 -30
  343. package/dist/enno-oduno/memory-verification.js.map +1 -1
  344. package/dist/enno-oduno/schemas.d.ts +1 -1
  345. package/dist/enno-oduno/store.d.ts +7 -0
  346. package/dist/enno-oduno/store.d.ts.map +1 -1
  347. package/dist/enno-oduno/store.js +42 -0
  348. package/dist/enno-oduno/store.js.map +1 -1
  349. package/dist/ledger/store.d.ts.map +1 -1
  350. package/dist/ledger/store.js +0 -5
  351. package/dist/ledger/store.js.map +1 -1
  352. package/dist/locale/en.json +1 -1
  353. package/dist/locale/ja.json +1 -1
  354. package/dist/locale/ko.json +1 -1
  355. package/dist/locale/zh-CN.json +1 -1
  356. package/dist/memory/application.js +1 -1
  357. package/dist/memory/application.js.map +1 -1
  358. package/dist/memory/auto-globalization.d.ts.map +1 -1
  359. package/dist/memory/auto-globalization.js +4 -82
  360. package/dist/memory/auto-globalization.js.map +1 -1
  361. package/dist/memory/evolution/contracts.d.ts +3 -1
  362. package/dist/memory/evolution/contracts.d.ts.map +1 -1
  363. package/dist/memory/evolution/contracts.js +1 -1
  364. package/dist/memory/evolution/contracts.js.map +1 -1
  365. package/dist/memory/evolution/store.d.ts +2 -1
  366. package/dist/memory/evolution/store.d.ts.map +1 -1
  367. package/dist/memory/evolution/store.js +75 -34
  368. package/dist/memory/evolution/store.js.map +1 -1
  369. package/dist/memory/evolution/worker.d.ts +1 -0
  370. package/dist/memory/evolution/worker.d.ts.map +1 -1
  371. package/dist/memory/evolution/worker.js +6 -18
  372. package/dist/memory/evolution/worker.js.map +1 -1
  373. package/dist/memory/explain.d.ts.map +1 -1
  374. package/dist/memory/explain.js +2 -2
  375. package/dist/memory/explain.js.map +1 -1
  376. package/dist/memory/forget.d.ts.map +1 -1
  377. package/dist/memory/forget.js +12 -3
  378. package/dist/memory/forget.js.map +1 -1
  379. package/dist/memory/hybrid-retrieval.d.ts.map +1 -1
  380. package/dist/memory/hybrid-retrieval.js +3 -0
  381. package/dist/memory/hybrid-retrieval.js.map +1 -1
  382. package/dist/memory/index-reasoning/service.d.ts.map +1 -1
  383. package/dist/memory/index-reasoning/service.js +5 -43
  384. package/dist/memory/index-reasoning/service.js.map +1 -1
  385. package/dist/memory/index-reasoning/worker.d.ts.map +1 -1
  386. package/dist/memory/index-reasoning/worker.js +1 -15
  387. package/dist/memory/index-reasoning/worker.js.map +1 -1
  388. package/dist/memory/lifecycle-cache.d.ts +12 -0
  389. package/dist/memory/lifecycle-cache.d.ts.map +1 -0
  390. package/dist/memory/lifecycle-cache.js +36 -0
  391. package/dist/memory/lifecycle-cache.js.map +1 -0
  392. package/dist/memory/lifecycle-database.d.ts +5 -0
  393. package/dist/memory/lifecycle-database.d.ts.map +1 -0
  394. package/dist/memory/lifecycle-database.js +32 -0
  395. package/dist/memory/lifecycle-database.js.map +1 -0
  396. package/dist/memory/lifecycle-global-state.d.ts +5 -0
  397. package/dist/memory/lifecycle-global-state.d.ts.map +1 -0
  398. package/dist/memory/lifecycle-global-state.js +23 -0
  399. package/dist/memory/lifecycle-global-state.js.map +1 -0
  400. package/dist/memory/lifecycle-global.d.ts +23 -0
  401. package/dist/memory/lifecycle-global.d.ts.map +1 -0
  402. package/dist/memory/lifecycle-global.js +56 -0
  403. package/dist/memory/lifecycle-global.js.map +1 -0
  404. package/dist/memory/lifecycle.d.ts +152 -0
  405. package/dist/memory/lifecycle.d.ts.map +1 -0
  406. package/dist/memory/lifecycle.js +152 -0
  407. package/dist/memory/lifecycle.js.map +1 -0
  408. package/dist/memory/replay-review.d.ts +90 -0
  409. package/dist/memory/replay-review.d.ts.map +1 -0
  410. package/dist/memory/replay-review.js +82 -0
  411. package/dist/memory/replay-review.js.map +1 -0
  412. package/dist/memory/replay-store.d.ts +14 -0
  413. package/dist/memory/replay-store.d.ts.map +1 -0
  414. package/dist/memory/replay-store.js +117 -0
  415. package/dist/memory/replay-store.js.map +1 -0
  416. package/dist/memory/review/adoption.d.ts.map +1 -1
  417. package/dist/memory/review/adoption.js +2 -106
  418. package/dist/memory/review/adoption.js.map +1 -1
  419. package/dist/memory/review/store.d.ts.map +1 -1
  420. package/dist/memory/review/store.js +9 -5
  421. package/dist/memory/review/store.js.map +1 -1
  422. package/dist/memory/review/worker.d.ts.map +1 -1
  423. package/dist/memory/review/worker.js +1 -7
  424. package/dist/memory/review/worker.js.map +1 -1
  425. package/dist/memory/scoped-memory.js +1 -1
  426. package/dist/memory/scoped-memory.js.map +1 -1
  427. package/dist/model-tools/contracts.d.ts +4 -4
  428. package/dist/model-tools/contracts.d.ts.map +1 -1
  429. package/dist/model-tools/contracts.js +1 -11
  430. package/dist/model-tools/contracts.js.map +1 -1
  431. package/dist/model-tools/names.d.ts +4 -0
  432. package/dist/model-tools/names.d.ts.map +1 -0
  433. package/dist/model-tools/names.js +13 -0
  434. package/dist/model-tools/names.js.map +1 -0
  435. package/docs/agenticreplay-recording.md +1 -1
  436. package/docs/code-intelligence.md +54 -119
  437. package/docs/dsh-plugin.md +86 -9
  438. package/docs/getting-started.md +10 -0
  439. package/docs/guardrail-licenses/Apache-2.0.txt +73 -0
  440. package/docs/guardrail-licenses/BSD-2-Clause.txt +9 -0
  441. package/docs/guardrail-licenses/COPYRIGHT-Rust.txt +34 -0
  442. package/docs/guardrail-licenses/COPYRIGHT-library.html +29357 -0
  443. package/docs/guardrail-licenses/ISC.txt +7 -0
  444. package/docs/guardrail-licenses/LICENSE-APACHE +176 -0
  445. package/docs/guardrail-licenses/LICENSE-MIT +25 -0
  446. package/docs/guardrail-licenses/LLVM-exception.txt +15 -0
  447. package/docs/guardrail-licenses/MIT.txt +9 -0
  448. package/docs/guardrail-licenses/NCSA.txt +29 -0
  449. package/docs/guardrail-licenses/README.md +7 -0
  450. package/docs/guardrail-licenses/Unicode-3.0.txt +39 -0
  451. package/docs/guardrail-licenses/libunwind-LICENSE.txt +311 -0
  452. package/docs/guardrail-licenses/manifest.json +71 -0
  453. package/docs/guardrail-licenses/musl-COPYRIGHT.txt +193 -0
  454. package/docs/guardrail.md +33 -0
  455. package/docs/lifecycle-memory.md +25 -0
  456. package/docs/lisp.md +33 -9
  457. package/docs/memory-evolution.md +6 -6
  458. package/docs/owned-execution.md +3 -3
  459. package/docs/replay-memory-review.md +26 -0
  460. package/docs/semantic-compaction.md +2 -0
  461. package/guardrail/aarch64-apple-darwin/kiokuko-guardrail +0 -0
  462. package/guardrail/aarch64-apple-darwin/manifest.json +71 -0
  463. package/guardrail/aarch64-unknown-linux-musl/kiokuko-guardrail +0 -0
  464. package/guardrail/aarch64-unknown-linux-musl/manifest.json +69 -0
  465. package/guardrail/manifest.json +204 -0
  466. package/guardrail/node-runner.mjs +37 -0
  467. package/guardrail/protocols/coding-routine.lisp +33 -0
  468. package/guardrail/x86_64-apple-darwin/kiokuko-guardrail +0 -0
  469. package/guardrail/x86_64-apple-darwin/manifest.json +71 -0
  470. package/guardrail/x86_64-unknown-linux-musl/kiokuko-guardrail +0 -0
  471. package/guardrail/x86_64-unknown-linux-musl/manifest.json +68 -0
  472. package/migrations/038_coding_admission.sql +19 -0
  473. package/migrations/039_memory_lifecycle.sql +336 -0
  474. package/migrations/040_task_state.sql +45 -0
  475. package/migrations/041_task_source_history.sql +88 -0
  476. package/migrations/042_evolution_source_epochs.sql +148 -0
  477. package/package.json +45 -27
  478. package/scripts/guardrail-artifacts.d.mts +13 -0
  479. package/scripts/guardrail-artifacts.mjs +136 -0
  480. package/skills/kiokuko-lisp/SKILL.md +1 -1
  481. package/skills/kiokuko-soul/SKILL.md +6 -6
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../node_modules/@deepseek-ai/dsh-util-values/lib/index.js", "../../node_modules/@deepseek-ai/dsh-session-format/lib/index.js", "../../node_modules/@deepseek-ai/dsh-session-format-v0-to-v1/lib/index.js", "../../node_modules/@deepseek-ai/dsh-session-format-v1-to-v2/lib/index.js", "../../node_modules/@deepseek-ai/dsh-llm/lib/types/assistant-stream.js"],
4
- "sourcesContent": ["//#region lib/types/partial-json.js\n/**\n* Lazily scanned view of one JSON object's top-level fields, built from text\n* that may still be streaming or from an already parsed object. Nothing is\n* scanned until a reader asks; the view remembers every question it answered\n* and reports changed answers when the owner refreshes for publication.\n* Used for model tool-call arguments: a row reads the fields it\n* cares about at whatever granularity it displays, at every stage of the call.\n* @module @deepseek-ai/dsh-util-values/src/partial-json\n*/\nconst SIMPLE_ESCAPES = {\n\t\"\\\"\": \"\\\"\",\n\t\"\\\\\": \"\\\\\",\n\t\"/\": \"/\",\n\tb: \"\\b\",\n\tf: \"\\f\",\n\tn: \"\\n\",\n\tr: \"\\r\",\n\tt: \"\t\"\n};\nconst CONTENT_ESCAPE = /[\\\\\\u0000-\\u001f]/u;\nfunction isWhitespace(c) {\n\treturn c === \" \" || c === \"\\n\" || c === \"\\r\" || c === \"\t\";\n}\nfunction isHex(c) {\n\treturn c >= \"0\" && c <= \"9\" || c >= \"a\" && c <= \"f\" || c >= \"A\" && c <= \"F\";\n}\n/**\n* The view. A streaming instance grows through {@link PartialArguments.append};\n* {@link PartialArguments.fromText} and {@link PartialArguments.fromObject} build\n* sealed instances over a finished call. Every reader is total: an absent or\n* differently typed field answers `undefined` (or `false`), never throws.\n*/\nvar PartialArguments = class PartialArguments {\n\t/** The view of a call with no arguments available. */\n\tstatic EMPTY = PartialArguments.fromObject({});\n\t/**\n\t* View finished argument text without scanning it until a reader asks.\n\t* @param text - the complete argument JSON text.\n\t* @returns a sealed view.\n\t*/\n\tstatic fromText(text) {\n\t\tconst view = new PartialArguments();\n\t\tview.append(text);\n\t\tview.sealed = true;\n\t\treturn view;\n\t}\n\t/**\n\t* View an already parsed argument payload, such as a PTC dispatch object.\n\t* @param value - the parsed argument value.\n\t* @returns a sealed view; a non-object payload has no fields.\n\t*/\n\tstatic fromObject(value) {\n\t\tconst view = new PartialArguments();\n\t\tview.object = typeof value === \"object\" && value !== null && !Array.isArray(value) ? value : {};\n\t\tview.sealed = true;\n\t\treturn view;\n\t}\n\t/**\n\t* The source: text so far or a parsed object, plus whether it can still grow.\n\t* These are the only enumerable fields, so two views over the same source\n\t* compare equal structurally however far each has been read.\n\t*/\n\tchunks = [];\n\tobject;\n\tsealed = false;\n\t#ends = [];\n\t#size = 0;\n\t#consumed = 0;\n\t#mode = \"root\";\n\t#escape = false;\n\t#keyStart = 0;\n\t#keyEscaped = false;\n\t#key = \"\";\n\t#current = null;\n\t#nestedEnds = [];\n\t#nestedInString = false;\n\t#invalidAt;\n\t#invalidValue = false;\n\t#entries = /* @__PURE__ */ new Map();\n\t#order = [];\n\t#reads = /* @__PURE__ */ new Map();\n\t/** Whether this view rejects further appends; does not scan text or register reads. */\n\tget isSealed() {\n\t\treturn this.sealed;\n\t}\n\t/** Whether indexing or a content read found invalid JSON; unread value contents are not validated. */\n\tget invalid() {\n\t\tthis.scan();\n\t\treturn this.#mode === \"invalid\" || this.#invalidValue;\n\t}\n\t/**\n\t* Retain streamed argument text without scanning or comparing observed answers.\n\t* @param fragment - the text following every fragment appended before.\n\t*/\n\tappend(fragment) {\n\t\tif (this.sealed) throw new Error(\"PartialArguments: cannot append to a sealed view\");\n\t\tif (fragment.length === 0) return;\n\t\tthis.chunks.push(fragment);\n\t\tthis.#size += fragment.length;\n\t\tthis.#ends.push(this.#size);\n\t}\n\t/**\n\t* Reconcile a streamed prefix with authoritative complete text without joining the fragments.\n\t* @param text - the final argument text, which replaces missing or conflicting deltas.\n\t* @returns this view sealed with its caches retained when every character matches; otherwise a new sealed view.\n\t*/\n\tsettle(text) {\n\t\tif (this.object !== void 0 || text.length !== this.#size) return PartialArguments.fromText(text);\n\t\tlet offset = 0;\n\t\tfor (const chunk of this.chunks) {\n\t\t\tif (!text.startsWith(chunk, offset)) return PartialArguments.fromText(text);\n\t\t\toffset += chunk.length;\n\t\t}\n\t\tthis.chunks = text.length === 0 ? [] : [text];\n\t\tthis.#ends = text.length === 0 ? [] : [text.length];\n\t\tthis.sealed = true;\n\t\treturn this;\n\t}\n\t/**\n\t* Compare observed answers and advance their publication baseline. Unread views remain unscanned.\n\t* @returns whether any observed answer changed since its first read or the preceding refresh.\n\t*/\n\trefresh() {\n\t\tif (this.#reads.size === 0) return false;\n\t\tthis.scan();\n\t\tlet changed = false;\n\t\tlet completions = false;\n\t\tfor (const read of this.#reads.values()) {\n\t\t\tif (read.completion) {\n\t\t\t\tcompletions = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tchanged = this.refreshRead(read) || changed;\n\t\t}\n\t\tif (completions) {\n\t\t\tfor (const read of this.#reads.values()) if (read.completion) changed = this.refreshRead(read) || changed;\n\t\t}\n\t\tif (this.sealed) this.#reads.clear();\n\t\treturn changed;\n\t}\n\trefreshRead(read) {\n\t\tconst now = read.answer();\n\t\tif (Object.is(now, read.last)) return false;\n\t\tread.last = now;\n\t\treturn true;\n\t}\n\t/**\n\t* Check whether no further fields can arrive.\n\t* @returns whether the outer object closed, indexing failed, or the view is sealed; unread values are not validated.\n\t*/\n\tclosed() {\n\t\treturn this.remember(\"closed\", \"\", () => this.closedNow());\n\t}\n\t/**\n\t* List discovered fields in first-appearance order.\n\t* @returns top-level keys seen so far, in first-appearance order.\n\t*/\n\tkeys() {\n\t\treturn this.remember(\"keys\", \"\", () => this.keysNow(), (keys) => keys.length);\n\t}\n\t/**\n\t* Check whether a top-level field has appeared.\n\t* @param key - argument name.\n\t* @returns whether the field has appeared (a string opened or another value began).\n\t*/\n\thas(key) {\n\t\treturn this.remember(\"has\", key, () => this.hasNow(key));\n\t}\n\t/**\n\t* Check whether a field's closing delimiter has arrived, without validating its contents.\n\t* @param key - argument name.\n\t* @returns whether its delimiter arrived and no content reader has reported an error for this value.\n\t*/\n\tcomplete(key) {\n\t\treturn this.remember(\"complete\", key, () => this.completeNow(key));\n\t}\n\t/**\n\t* Read string length without materializing its text.\n\t* @param key - argument name.\n\t* @param options - change granularity for a streaming string.\n\t* @returns decoded UTF-16 length of the string field so far; undefined when absent or not a string.\n\t*/\n\tstringLength(key, options) {\n\t\tconst step = Math.max(1, Math.floor(options?.step ?? 1));\n\t\tconst offset = options?.offset ?? 0;\n\t\treturn this.remember(`length:${step}:${offset}`, key, () => this.lengthNow(key), (length) => length === void 0 ? void 0 : Math.ceil((length + offset) / step));\n\t}\n\t/**\n\t* Check a string against a decoded UTF-16 length limit without materializing it.\n\t* @param key - argument name.\n\t* @param maxLength - decoded UTF-16 limit, floored to at least zero.\n\t* @returns whether the string is longer than the limit; false when absent or not a string.\n\t*/\n\tstringExceeds(key, maxLength) {\n\t\tconst limit = Math.max(0, Math.floor(maxLength));\n\t\treturn this.remember(`exceeds:${limit}`, key, () => (this.lengthNow(key, limit + 1) ?? 0) > limit);\n\t}\n\t/**\n\t* Read a decoded string, including a streaming prefix.\n\t* @param key - argument name.\n\t* @returns the string field's decoded text so far; undefined when absent or not a string.\n\t*/\n\ttext(key) {\n\t\treturn this.remember(\"text\", key, () => this.textNow(key));\n\t}\n\t/**\n\t* Read at most the first decoded UTF-16 units of a string.\n\t* @param key - argument name.\n\t* @param maxLength - maximum decoded UTF-16 length, floored to at least one.\n\t* @returns the bounded string prefix; undefined when absent or not a string.\n\t*/\n\ttextPrefix(key, maxLength) {\n\t\tconst limit = Math.max(1, Math.floor(maxLength));\n\t\treturn this.remember(`prefix:${limit}`, key, () => this.textPrefixNow(key, limit));\n\t}\n\t/**\n\t* Read a completed non-string argument.\n\t* @param key - argument name.\n\t* @returns the parsed non-string value once it closed; undefined while open, absent, or a string.\n\t*/\n\tvalue(key) {\n\t\treturn this.remember(\"value\", key, () => this.valueNow(key));\n\t}\n\t/** Answer a question and, on a streaming view, remember it for change detection. */\n\tremember(kind, key, read, comparison) {\n\t\tthis.scan();\n\t\tconst result = read();\n\t\tif (!this.sealed) {\n\t\t\tconst id = `${kind}/${key}`;\n\t\t\tif (!this.#reads.has(id)) this.#reads.set(id, {\n\t\t\t\tcompletion: kind === \"complete\",\n\t\t\t\tanswer: comparison === void 0 ? read : () => comparison(read()),\n\t\t\t\tlast: comparison === void 0 ? result : comparison(result)\n\t\t\t});\n\t\t}\n\t\treturn result;\n\t}\n\tclosedNow() {\n\t\treturn this.sealed || this.#mode === \"closed\" || this.#mode === \"invalid\";\n\t}\n\tkeysNow() {\n\t\treturn this.object === void 0 ? this.#order : Object.keys(this.object);\n\t}\n\thasNow(key) {\n\t\treturn this.object === void 0 ? this.#entries.has(key) : Object.hasOwn(this.object, key);\n\t}\n\tcompleteNow(key) {\n\t\tif (this.object !== void 0) return Object.hasOwn(this.object, key);\n\t\tconst entry = this.#entries.get(key);\n\t\treturn entry !== void 0 && entry.end >= 0 && (entry.kind === \"string\" ? entry.invalidAt === void 0 : !entry.invalid);\n\t}\n\tlengthNow(key, limit = Number.POSITIVE_INFINITY) {\n\t\tif (this.object !== void 0) {\n\t\t\tconst field = Object.hasOwn(this.object, key) ? this.object[key] : void 0;\n\t\t\treturn typeof field === \"string\" ? field.length : void 0;\n\t\t}\n\t\tconst entry = this.#entries.get(key);\n\t\tif (entry?.kind !== \"string\") return void 0;\n\t\tif (entry.text !== void 0 && entry.text.at === entry.end) return entry.text.length;\n\t\tconst read = entry.length ??= {\n\t\t\tat: entry.start,\n\t\t\tlength: 0,\n\t\t\ttext: \"\"\n\t\t};\n\t\tthis.readString(entry, read, limit, false);\n\t\treturn read.length;\n\t}\n\ttextNow(key) {\n\t\tif (this.object !== void 0) {\n\t\t\tconst field = Object.hasOwn(this.object, key) ? this.object[key] : void 0;\n\t\t\treturn typeof field === \"string\" ? field : void 0;\n\t\t}\n\t\tconst entry = this.#entries.get(key);\n\t\tif (entry?.kind !== \"string\") return void 0;\n\t\tif (entry.text === void 0 && entry.end >= 0 && entry.needsDecoding && entry.invalidAt === void 0) {\n\t\t\tlet text;\n\t\t\ttry {\n\t\t\t\ttext = JSON.parse(`\"${this.slice(entry.start, entry.end)}\"`);\n\t\t\t} catch (_error) {}\n\t\t\tif (text !== void 0) entry.text = {\n\t\t\t\tat: entry.end,\n\t\t\t\tlength: text.length,\n\t\t\t\ttext\n\t\t\t};\n\t\t}\n\t\tconst read = entry.text ??= {\n\t\t\tat: entry.start,\n\t\t\tlength: 0,\n\t\t\ttext: \"\"\n\t\t};\n\t\tthis.readString(entry, read, Number.POSITIVE_INFINITY, true);\n\t\treturn read.text;\n\t}\n\ttextPrefixNow(key, maxLength) {\n\t\tif (this.object !== void 0) {\n\t\t\tconst field = Object.hasOwn(this.object, key) ? this.object[key] : void 0;\n\t\t\treturn typeof field === \"string\" ? field.slice(0, maxLength) : void 0;\n\t\t}\n\t\tconst entry = this.#entries.get(key);\n\t\tif (entry?.kind !== \"string\") return void 0;\n\t\tconst prefixes = entry.prefixes ??= /* @__PURE__ */ new Map();\n\t\tlet read = prefixes.get(maxLength);\n\t\tif (read === void 0) {\n\t\t\tread = {\n\t\t\t\tat: entry.start,\n\t\t\t\tlength: 0,\n\t\t\t\ttext: \"\"\n\t\t\t};\n\t\t\tprefixes.set(maxLength, read);\n\t\t}\n\t\tthis.readString(entry, read, maxLength, true);\n\t\treturn read.text;\n\t}\n\tvalueNow(key) {\n\t\tif (this.object !== void 0) {\n\t\t\tif (!Object.hasOwn(this.object, key)) return void 0;\n\t\t\tconst field = this.object[key];\n\t\t\treturn typeof field === \"string\" ? void 0 : field;\n\t\t}\n\t\tconst entry = this.#entries.get(key);\n\t\tif (entry?.kind !== \"value\" || entry.end < 0 || entry.invalid) return void 0;\n\t\tif (entry.parsed === void 0) try {\n\t\t\tentry.parsed = JSON.parse(this.slice(entry.start, entry.end));\n\t\t} catch (_error) {\n\t\t\tentry.invalid = true;\n\t\t\tthis.#invalidValue = true;\n\t\t}\n\t\treturn entry.parsed;\n\t}\n\tchunkAt(at) {\n\t\tlet low = 0;\n\t\tlet high = this.#ends.length;\n\t\twhile (low < high) {\n\t\t\tconst mid = low + high >>> 1;\n\t\t\tif (this.#ends[mid] <= at) low = mid + 1;\n\t\t\telse high = mid;\n\t\t}\n\t\treturn low;\n\t}\n\t/** Materialize only a requested range, never the cumulative source. */\n\tslice(start, end) {\n\t\tif (start >= end) return \"\";\n\t\tconst first = this.chunkAt(start);\n\t\tconst last = this.chunkAt(end - 1);\n\t\tconst base = first === 0 ? 0 : this.#ends[first - 1];\n\t\tif (first === last) return this.chunks[first].slice(start - base, end - base);\n\t\tconst parts = [this.chunks[first].slice(start - base)];\n\t\tfor (let i = first + 1; i < last; i++) parts.push(this.chunks[i]);\n\t\tparts.push(this.chunks[last].slice(0, end - this.#ends[last - 1]));\n\t\treturn parts.join(\"\");\n\t}\n\treadString(entry, read, limit, materialize) {\n\t\tconst end = Math.min(entry.end < 0 ? this.#consumed : entry.end, entry.invalidAt ?? Number.POSITIVE_INFINITY, this.#invalidAt ?? Number.POSITIVE_INFINITY);\n\t\tif (!entry.needsDecoding) {\n\t\t\tconst length = Math.min(end - read.at, limit - read.length);\n\t\t\tif (length <= 0) return;\n\t\t\tif (materialize) read.text += this.slice(read.at, read.at + length);\n\t\t\tread.at += length;\n\t\t\tread.length += length;\n\t\t\treturn;\n\t\t}\n\t\tlet chunkIndex = this.chunkAt(read.at);\n\t\twhile (read.at < end && read.length < limit) {\n\t\t\tconst base = chunkIndex === 0 ? 0 : this.#ends[chunkIndex - 1];\n\t\t\tconst chunk = this.chunks[chunkIndex];\n\t\t\tconst remaining = chunk.slice(read.at - base, Math.min(chunk.length, end - base));\n\t\t\tconst boundary = remaining.search(CONTENT_ESCAPE);\n\t\t\tconst length = Math.min(boundary < 0 ? remaining.length : boundary, limit - read.length);\n\t\t\tif (length > 0) {\n\t\t\t\tif (materialize) read.text += remaining.slice(0, length);\n\t\t\t\tread.at += length;\n\t\t\t\tread.length += length;\n\t\t\t\tif (read.at === base + chunk.length) chunkIndex++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst type = remaining.length > 1 ? remaining[1] : read.at + 1 < end ? this.chunks[chunkIndex + 1][0] : void 0;\n\t\t\tlet decoded;\n\t\t\tlet width = 2;\n\t\t\tif (remaining[0] === \"\\\\\" && type === void 0 && entry.end < 0) return;\n\t\t\tif (remaining[0] === \"\\\\\" && type === \"u\") {\n\t\t\t\tconst hex = this.slice(read.at + 2, Math.min(end, read.at + 6));\n\t\t\t\tlet valid = true;\n\t\t\t\tfor (let i = 0; i < hex.length; i++) if (!isHex(hex[i])) valid = false;\n\t\t\t\tif (valid) {\n\t\t\t\t\tif (hex.length < 4 && entry.end < 0) return;\n\t\t\t\t\tif (hex.length === 4) decoded = String.fromCharCode(Number.parseInt(hex, 16));\n\t\t\t\t}\n\t\t\t\twidth = 6;\n\t\t\t} else if (remaining[0] === \"\\\\\" && type !== void 0) decoded = SIMPLE_ESCAPES[type];\n\t\t\tif (decoded === void 0) {\n\t\t\t\tentry.invalidAt = read.at;\n\t\t\t\tthis.#invalidValue = true;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (materialize) read.text += decoded;\n\t\t\tread.length++;\n\t\t\tread.at += width;\n\t\t\twhile (chunkIndex < this.chunks.length && read.at >= this.#ends[chunkIndex]) chunkIndex++;\n\t\t}\n\t}\n\t/** Locate new field ranges without decoding or parsing their contents. */\n\tscan() {\n\t\tif (this.object !== void 0 || this.#consumed === this.#size) return;\n\t\tfor (let i = this.chunkAt(this.#consumed); i < this.chunks.length && this.#invalidAt === void 0; i++) {\n\t\t\tconst pending = this.chunks[i];\n\t\t\tconst base = i === 0 ? 0 : this.#ends[i - 1];\n\t\t\tfor (let index = this.#consumed - base; index < pending.length && this.#mode !== \"invalid\"; index++) {\n\t\t\t\tif (this.#mode === \"string\" || this.#mode === \"nested\" && this.#nestedInString) {\n\t\t\t\t\tconst end = this.stringBoundary(pending, index);\n\t\t\t\t\tthis.#consumed += end - index;\n\t\t\t\t\tindex = end;\n\t\t\t\t\tif (index === pending.length) break;\n\t\t\t\t}\n\t\t\t\tthis.step(pending[index], this.#consumed);\n\t\t\t\tthis.#consumed++;\n\t\t\t}\n\t\t}\n\t}\n\t/** Only raw quotes and their preceding backslash runs can terminate a string. */\n\tstringBoundary(fragment, start) {\n\t\tlet at = start;\n\t\twhile (true) {\n\t\t\tconst quote = fragment.indexOf(\"\\\"\", at);\n\t\t\tconst end = quote < 0 ? fragment.length : quote;\n\t\t\tif (this.#mode === \"string\") {\n\t\t\t\tconst entry = this.#current;\n\t\t\t\tif (!entry.needsDecoding && CONTENT_ESCAPE.test(fragment.slice(at, end))) entry.needsDecoding = true;\n\t\t\t}\n\t\t\tlet slashStart = end;\n\t\t\twhile (slashStart > at && fragment[slashStart - 1] === \"\\\\\") slashStart--;\n\t\t\tconst escaped = (end - slashStart) % 2 === 1 !== (slashStart === at && this.#escape);\n\t\t\tthis.#escape = quote < 0 && escaped;\n\t\t\tif (quote < 0 || !escaped) return end;\n\t\t\tat = quote + 1;\n\t\t}\n\t}\n\tstep(c, at) {\n\t\tswitch (this.#mode) {\n\t\t\tcase \"root\":\n\t\t\t\tif (isWhitespace(c)) return;\n\t\t\t\tif (c === \"{\") {\n\t\t\t\t\tthis.#mode = \"key-or-end\";\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.fail();\n\t\t\t\treturn;\n\t\t\tcase \"key-or-end\":\n\t\t\t\tif (isWhitespace(c)) return;\n\t\t\t\tif (c === \"}\") {\n\t\t\t\t\tthis.#mode = \"closed\";\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (c === \"\\\"\") {\n\t\t\t\t\tthis.beginKey(at);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.fail();\n\t\t\t\treturn;\n\t\t\tcase \"key-only\":\n\t\t\t\tif (isWhitespace(c)) return;\n\t\t\t\tif (c === \"\\\"\") {\n\t\t\t\t\tthis.beginKey(at);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.fail();\n\t\t\t\treturn;\n\t\t\tcase \"key\":\n\t\t\t\tthis.stepKey(c, at);\n\t\t\t\treturn;\n\t\t\tcase \"colon\":\n\t\t\t\tif (isWhitespace(c)) return;\n\t\t\t\tif (c === \":\") {\n\t\t\t\t\tthis.#mode = \"value\";\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.fail();\n\t\t\t\treturn;\n\t\t\tcase \"value\":\n\t\t\t\tthis.beginValue(c, at);\n\t\t\t\treturn;\n\t\t\tcase \"string\": {\n\t\t\t\tconst entry = this.#current;\n\t\t\t\tentry.end = at;\n\t\t\t\tthis.#current = null;\n\t\t\t\tthis.#mode = \"comma-or-end\";\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase \"scalar\":\n\t\t\t\tthis.stepScalar(c, at);\n\t\t\t\treturn;\n\t\t\tcase \"nested\":\n\t\t\t\tthis.stepNested(c, at);\n\t\t\t\treturn;\n\t\t\tcase \"comma-or-end\":\n\t\t\t\tif (isWhitespace(c)) return;\n\t\t\t\tif (c === \",\") {\n\t\t\t\t\tthis.#mode = \"key-only\";\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (c === \"}\") {\n\t\t\t\t\tthis.#mode = \"closed\";\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.fail();\n\t\t\t\treturn;\n\t\t\tcase \"closed\":\n\t\t\t\tif (isWhitespace(c)) return;\n\t\t\t\tthis.fail();\n\t\t\t\treturn;\n\t\t\t/* v8 ignore next 2 -- scan() stops stepping once the view is invalid. */\n\t\t\tcase \"invalid\": return;\n\t\t\t/* v8 ignore next 2 -- Every scanner mode has a handler above. */\n\t\t\tdefault: assertNever(this.#mode);\n\t\t}\n\t}\n\tfail() {\n\t\tthis.#invalidAt = this.#consumed;\n\t\tthis.#mode = \"invalid\";\n\t\tthis.#current = null;\n\t}\n\tbeginKey(at) {\n\t\tthis.#mode = \"key\";\n\t\tthis.#keyStart = at + 1;\n\t\tthis.#keyEscaped = false;\n\t\tthis.#escape = false;\n\t}\n\tstepKey(c, at) {\n\t\tif (c < \" \") {\n\t\t\tthis.fail();\n\t\t\treturn;\n\t\t}\n\t\tif (this.#escape) {\n\t\t\tthis.#escape = false;\n\t\t\treturn;\n\t\t}\n\t\tif (c === \"\\\\\") {\n\t\t\tthis.#escape = true;\n\t\t\tthis.#keyEscaped = true;\n\t\t\treturn;\n\t\t}\n\t\tif (c !== \"\\\"\") return;\n\t\tconst raw = this.slice(this.#keyStart, at);\n\t\tif (this.#keyEscaped) try {\n\t\t\tthis.#key = JSON.parse(`\"${raw}\"`);\n\t\t} catch (_error) {\n\t\t\tthis.fail();\n\t\t\treturn;\n\t\t}\n\t\telse this.#key = raw;\n\t\tthis.#mode = \"colon\";\n\t}\n\topen(entry) {\n\t\tif (!this.#entries.has(this.#key)) this.#order.push(this.#key);\n\t\tthis.#entries.set(this.#key, entry);\n\t\tthis.#current = entry;\n\t}\n\tbeginValue(c, at) {\n\t\tif (isWhitespace(c)) return;\n\t\tif (c === \"\\\"\") {\n\t\t\tthis.open({\n\t\t\t\tkind: \"string\",\n\t\t\t\tstart: at + 1,\n\t\t\t\tend: -1,\n\t\t\t\tneedsDecoding: false,\n\t\t\t\tinvalidAt: void 0,\n\t\t\t\tlength: void 0,\n\t\t\t\ttext: void 0,\n\t\t\t\tprefixes: void 0\n\t\t\t});\n\t\t\tthis.#escape = false;\n\t\t\tthis.#mode = \"string\";\n\t\t\treturn;\n\t\t}\n\t\tif (c === \"}\" || c === \",\" || c === \":\" || c === \"]\") {\n\t\t\tthis.fail();\n\t\t\treturn;\n\t\t}\n\t\tthis.open({\n\t\t\tkind: \"value\",\n\t\t\tstart: at,\n\t\t\tend: -1,\n\t\t\tparsed: void 0,\n\t\t\tinvalid: false\n\t\t});\n\t\tif (c === \"{\" || c === \"[\") {\n\t\t\tthis.#mode = \"nested\";\n\t\t\tthis.#nestedEnds = [c === \"{\" ? \"}\" : \"]\"];\n\t\t\tthis.#nestedInString = false;\n\t\t\tthis.#escape = false;\n\t\t\treturn;\n\t\t}\n\t\tthis.#mode = \"scalar\";\n\t}\n\tstepScalar(c, at) {\n\t\tif (c !== \",\" && c !== \"}\" && !isWhitespace(c)) return;\n\t\tthis.closeValue(at);\n\t\tthis.#mode = c === \",\" ? \"key-only\" : c === \"}\" ? \"closed\" : \"comma-or-end\";\n\t}\n\tstepNested(c, at) {\n\t\tif (this.#nestedInString) {\n\t\t\tthis.#nestedInString = false;\n\t\t\treturn;\n\t\t}\n\t\tif (c === \"\\\"\") {\n\t\t\tthis.#nestedInString = true;\n\t\t\treturn;\n\t\t}\n\t\tif (c === \"{\" || c === \"[\") {\n\t\t\tthis.#nestedEnds.push(c === \"{\" ? \"}\" : \"]\");\n\t\t\treturn;\n\t\t}\n\t\tif (c === \"}\" || c === \"]\") {\n\t\t\tif (this.#nestedEnds.pop() !== c) {\n\t\t\t\tthis.fail();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this.#nestedEnds.length === 0) {\n\t\t\t\tthis.closeValue(at + 1);\n\t\t\t\tthis.#mode = \"comma-or-end\";\n\t\t\t}\n\t\t}\n\t}\n\tcloseValue(end) {\n\t\tconst entry = this.#current;\n\t\tentry.end = end;\n\t\tthis.#current = null;\n\t}\n};\n//#endregion\n//#region lib/types/index.js\n/** Duplicate-install-safe JSON and immutable-value helpers. @module @deepseek-ai/dsh-util-values */\n/**\n* Mark an unreachable closed-union branch.\n* @param value - impossible value; an unhandled typed variant fails at the call site.\n* @param context - optional switch-site label included in the failure message.\n* @returns never; a runtime value that escaped its type always throws.\n*/\nfunction assertNever(value, context) {\n\tconst rendered = JSON.stringify(value) ?? String(value);\n\tthrow new Error(`unreachable variant${context ? ` in ${context}` : \"\"}: ${rendered}`);\n}\n/** Whether a realm-owned intrinsic prototype has a native constructor matching this engine's representation. */\nfunction hasIntrinsicConstructor(prototype, name) {\n\tconst constructor = Object.getOwnPropertyDescriptor(prototype, \"constructor\")?.value;\n\tif (typeof constructor !== \"function\") return false;\n\ttry {\n\t\treturn constructor.name === name && constructor.prototype === prototype && Function.prototype.toString.call(constructor) === Function.prototype.toString.call(name === \"Array\" ? Array : Object);\n\t} catch {\n\t\treturn false;\n\t}\n}\n/** Whether a candidate is one realm's intrinsic `Object.prototype`. */\nfunction isIntrinsicObjectPrototype(value) {\n\treturn Object.getPrototypeOf(value) === null && hasIntrinsicConstructor(value, \"Object\");\n}\n/** Whether an array uses one realm's intrinsic `Array.prototype`, not a subclass or forged prototype. */\nfunction hasPlainArrayPrototype(value) {\n\tconst prototype = Object.getPrototypeOf(value);\n\tif (!Array.isArray(prototype) || !hasIntrinsicConstructor(prototype, \"Array\")) return false;\n\tconst objectPrototype = Object.getPrototypeOf(prototype);\n\treturn typeof objectPrototype === \"object\" && objectPrototype !== null && isIntrinsicObjectPrototype(objectPrototype);\n}\n/** Whether an object is a plain or null-prototype record from any JavaScript realm. */\nfunction hasPlainObjectPrototype(value) {\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn prototype === null || typeof prototype === \"object\" && isIntrinsicObjectPrototype(prototype);\n}\n/** Return every JSON-visible object key, or reject own data JSON would discard. */\nfunction enumerableStringKeys(value) {\n\tconst keys = Reflect.ownKeys(value);\n\tif (keys.some((key) => typeof key !== \"string\" || !Object.prototype.propertyIsEnumerable.call(value, key))) return void 0;\n\treturn keys;\n}\n/** Validate lossless JSON iteratively, optionally materializing a detached snapshot. */\nfunction walkJsonValue(value, detach) {\n\tconst ancestors = /* @__PURE__ */ new Set();\n\tlet root;\n\tconst assign = (destination, item) => {\n\t\tif (destination === void 0) return;\n\t\tif (destination.kind === \"root\") root = item;\n\t\telse if (destination.kind === \"array\") destination.target[destination.index] = item;\n\t\telse Object.defineProperty(destination.target, destination.key, {\n\t\t\tvalue: item,\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\twritable: true\n\t\t});\n\t};\n\tconst tasks = [{\n\t\tkind: \"visit\",\n\t\tvalue,\n\t\t...detach ? { destination: { kind: \"root\" } } : {}\n\t}];\n\tfor (let task = tasks.pop(); task !== void 0; task = tasks.pop()) {\n\t\tif (task.kind === \"leave\") {\n\t\t\tancestors.delete(task.source);\n\t\t\tcontinue;\n\t\t}\n\t\tif (task.kind === \"array-item\") {\n\t\t\tif (!Object.prototype.hasOwnProperty.call(task.source, task.index)) return void 0;\n\t\t\ttasks.push({\n\t\t\t\tkind: \"visit\",\n\t\t\t\tvalue: task.source[task.index],\n\t\t\t\t...task.target === void 0 ? {} : { destination: {\n\t\t\t\t\tkind: \"array\",\n\t\t\t\t\ttarget: task.target,\n\t\t\t\t\tindex: task.index\n\t\t\t\t} }\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (task.kind === \"object-property\") {\n\t\t\ttasks.push({\n\t\t\t\tkind: \"visit\",\n\t\t\t\tvalue: task.source[task.key],\n\t\t\t\t...task.target === void 0 ? {} : { destination: {\n\t\t\t\t\tkind: \"object\",\n\t\t\t\t\ttarget: task.target,\n\t\t\t\t\tkey: task.key\n\t\t\t\t} }\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tconst current = task.value;\n\t\tif (current === null) {\n\t\t\tassign(task.destination, null);\n\t\t\tcontinue;\n\t\t}\n\t\tif (typeof current === \"boolean\" || typeof current === \"string\") {\n\t\t\tassign(task.destination, current);\n\t\t\tcontinue;\n\t\t}\n\t\tif (typeof current === \"number\") {\n\t\t\tif (!Number.isFinite(current) || Object.is(current, -0)) return void 0;\n\t\t\tassign(task.destination, current);\n\t\t\tcontinue;\n\t\t}\n\t\tif (typeof current !== \"object\") return void 0;\n\t\tif (ancestors.has(current)) return void 0;\n\t\tif (Array.isArray(current)) {\n\t\t\tif (!hasPlainArrayPrototype(current)) return void 0;\n\t\t\tconst length = current.length;\n\t\t\tif (Reflect.ownKeys(current).length !== length + 1) return void 0;\n\t\t\tconst target = detach ? [] : void 0;\n\t\t\tif (target !== void 0) assign(task.destination, target);\n\t\t\tancestors.add(current);\n\t\t\ttasks.push({\n\t\t\t\tkind: \"leave\",\n\t\t\t\tsource: current\n\t\t\t});\n\t\t\tfor (let index = length - 1; index >= 0; index--) tasks.push({\n\t\t\t\tkind: \"array-item\",\n\t\t\t\tsource: current,\n\t\t\t\tindex,\n\t\t\t\t...target === void 0 ? {} : { target }\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (!hasPlainObjectPrototype(current)) return void 0;\n\t\tconst keys = enumerableStringKeys(current);\n\t\tif (keys === void 0) return void 0;\n\t\tconst target = detach ? {} : void 0;\n\t\tif (target !== void 0) assign(task.destination, target);\n\t\tancestors.add(current);\n\t\ttasks.push({\n\t\t\tkind: \"leave\",\n\t\t\tsource: current\n\t\t});\n\t\tfor (let index = keys.length - 1; index >= 0; index--) {\n\t\t\tconst key = keys[index];\n\t\t\t/* v8 ignore next -- the loop is bounded by the captured key count. */\n\t\t\tif (key === void 0) return void 0;\n\t\t\ttasks.push({\n\t\t\t\tkind: \"object-property\",\n\t\t\t\tsource: current,\n\t\t\t\tkey,\n\t\t\t\t...target === void 0 ? {} : { target }\n\t\t\t});\n\t\t}\n\t}\n\treturn detach ? root : true;\n}\n/**\n* Validate and detach lossless JSON in one read per property.\n* @param value - candidate value to validate and detach.\n* @returns the detached snapshot, or `undefined` when the value is not losslessly JSON-serializable.\n*/\nfunction snapshotJsonValue(value) {\n\treturn walkJsonValue(value, true);\n}\n/**\n* Test the same lossless JSON rules as {@link snapshotJsonValue} without detaching the value.\n* @param value - candidate value to test.\n* @returns whether the value survives a JSON round trip without loss.\n*/\nfunction isJsonValue(value) {\n\treturn walkJsonValue(value, false) === true;\n}\n/**\n* Compare JSON-compatible values structurally.\n* @param a - one JSON-compatible value.\n* @param b - the other JSON-compatible value.\n* @returns whether both values contain the same JSON data.\n*/\nfunction deepEqualJson(a, b) {\n\tif (a === b) return true;\n\tif (typeof a !== \"object\" || typeof b !== \"object\" || a === null || b === null) return false;\n\tif (Array.isArray(a) || Array.isArray(b)) {\n\t\tif (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length) return false;\n\t\treturn a.every((entry, index) => deepEqualJson(entry, b[index]));\n\t}\n\tconst left = a;\n\tconst right = b;\n\tconst keys = Object.keys(left);\n\tif (keys.length !== Object.keys(right).length) return false;\n\treturn keys.every((key) => key in right && deepEqualJson(left[key], right[key]));\n}\n/**\n* Deep-freeze an object graph in place while leaving live AbortSignal objects mutable.\n* @param value - value to freeze.\n* @returns the same value after every reachable enumerable child is frozen.\n*/\nfunction deepFreeze(value) {\n\tconst seen = /* @__PURE__ */ new WeakSet();\n\tconst pending = [{\n\t\tkind: \"visit\",\n\t\tnode: value\n\t}];\n\twhile (pending.length > 0) {\n\t\tconst task = pending.pop();\n\t\t/* v8 ignore next -- the loop condition guarantees one pending task. */\n\t\tif (task === void 0) continue;\n\t\tif (task.kind === \"property\") {\n\t\t\tpending.push({\n\t\t\t\tkind: \"visit\",\n\t\t\t\tnode: task.source[task.key]\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tconst node = task.node;\n\t\tif (node === null || typeof node !== \"object\") continue;\n\t\tif (node instanceof AbortSignal) continue;\n\t\tif (seen.has(node)) continue;\n\t\tseen.add(node);\n\t\tObject.freeze(node);\n\t\tconst keys = Object.keys(node);\n\t\tfor (let index = keys.length - 1; index >= 0; index--) {\n\t\t\tconst key = keys[index];\n\t\t\t/* v8 ignore next -- the loop is bounded by the captured key count. */\n\t\t\tif (key === void 0) continue;\n\t\t\tpending.push({\n\t\t\t\tkind: \"property\",\n\t\t\t\tsource: node,\n\t\t\t\tkey\n\t\t\t});\n\t\t}\n\t}\n\treturn value;\n}\n/**\n* Weak-key lookup with a strongly retained iterable set of associated values.\n*\n* Each value must belong to only one key. The container performs no automatic\n* cleanup; owners delete associations or clear the container at lifecycle end.\n*/\nvar WeakMapWithValues = class {\n\tkeys = /* @__PURE__ */ new WeakMap();\n\tvalueSet = /* @__PURE__ */ new Set();\n\t/** Live strongly retained values in insertion order. */\n\tvalues = this.valueSet;\n\t/**\n\t* Read the value associated with a key.\n\t* @param key - weakly held lookup key.\n\t* @returns the associated value, or absence.\n\t*/\n\tget(key) {\n\t\treturn this.keys.get(key);\n\t}\n\t/**\n\t* Test whether a key has an association.\n\t* @param key - weakly held lookup key.\n\t* @returns whether the key is present.\n\t*/\n\thas(key) {\n\t\treturn this.keys.has(key);\n\t}\n\t/**\n\t* Associate one key with one caller-unique value.\n\t* @param key - weakly held lookup key.\n\t* @param value - strongly retained value that belongs to no other key.\n\t* @returns this container.\n\t*/\n\tset(key, value) {\n\t\tif (this.keys.has(key)) {\n\t\t\tconst previous = this.keys.get(key);\n\t\t\tif (previous === value) return this;\n\t\t\tthis.valueSet.delete(previous);\n\t\t}\n\t\tthis.keys.set(key, value);\n\t\tthis.valueSet.add(value);\n\t\treturn this;\n\t}\n\t/**\n\t* Remove one association and its strongly retained value.\n\t* @param key - weakly held lookup key.\n\t* @returns whether an association was removed.\n\t*/\n\tdelete(key) {\n\t\tif (!this.keys.has(key)) return false;\n\t\tconst value = this.keys.get(key);\n\t\tconst deleted = this.keys.delete(key);\n\t\tthis.valueSet.delete(value);\n\t\treturn deleted;\n\t}\n\t/** Remove every association and strongly retained value. */\n\tclear() {\n\t\tthis.keys = /* @__PURE__ */ new WeakMap();\n\t\tthis.valueSet.clear();\n\t}\n};\n//#endregion\nexport { PartialArguments, WeakMapWithValues, assertNever, deepEqualJson, deepFreeze, isJsonValue, snapshotJsonValue };\n", "import { deepFreeze, snapshotJsonValue } from \"@deepseek-ai/dsh-util-values\";\n//#region lib/types/error.js\n/** Error raised when a durable Session artifact cannot be restored or migrated losslessly. */\nvar SessionFormatError = class extends Error {\n\tname = \"SessionFormatError\";\n};\n/** A readable artifact whose released source policy has no supported migration. */\nvar SessionFormatUnsupportedMigrationError = class extends SessionFormatError {\n\tname = \"SessionFormatUnsupportedMigrationError\";\n};\n//#endregion\n//#region lib/types/json.js\n/**\n* Test whether a value is a non-null, non-array object.\n* @param value - candidate value.\n* @returns whether the value is an object record.\n*/\nfunction isSessionFormatJsonObject(value) {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n/**\n* Require a non-negative safe integer without the JSON-unstable negative zero.\n* @param value - candidate count.\n* @param label - diagnostic subject.\n* @returns validated count.\n*/\nfunction sessionFormatCount(value, label) {\n\tif (!Number.isSafeInteger(value) || value < 0 || Object.is(value, -0)) throw new SessionFormatError(`${label} must be a non-negative safe integer`);\n\treturn value;\n}\n/**\n* Require a safe integer without the JSON-unstable negative zero.\n* @param value - candidate integer.\n* @param label - diagnostic subject.\n* @returns validated integer.\n*/\nfunction sessionFormatSafeInteger(value, label) {\n\tif (!Number.isSafeInteger(value) || Object.is(value, -0)) throw new SessionFormatError(`${label} must be a safe integer`);\n\treturn value;\n}\n/**\n* Require a non-negative integral format version.\n* @param value - candidate version.\n* @param label - diagnostic subject.\n* @returns validated version.\n*/\nfunction sessionFormatVersion(value, label = \"Session format version\") {\n\treturn sessionFormatCount(value, label);\n}\n/**\n* Read only the version required for directional dispatch.\n* @param headerValue - untrusted physical header value.\n* @returns validated stored version.\n*/\nfunction inspectSessionFormatVersion(headerValue) {\n\tif (!isSessionFormatJsonObject(headerValue)) throw new SessionFormatError(\"Session header must be a JSON object\");\n\treturn sessionFormatVersion(headerValue[\"version\"]);\n}\n/**\n* Detach and deeply freeze a caller-supplied lossless JSON value.\n* @param value - borrowed candidate.\n* @param label - diagnostic subject.\n* @returns an immutable detached JSON snapshot.\n*/\nfunction snapshotSessionFormatJson(value, label = \"Session value\") {\n\tconst snapshot = snapshotJsonValue(value);\n\tif (snapshot === void 0) throw new SessionFormatError(`${label} is not lossless JSON`);\n\treturn deepFreeze(snapshot);\n}\n/**\n* Snapshot one logical header without inspecting an event body.\n* @param header - borrowed logical header.\n* @param label - diagnostic subject.\n* @returns immutable detached header.\n*/\nfunction snapshotSessionFormatHeader(header, label = \"Session header\") {\n\tconst snapshot = snapshotSessionFormatJson(header, label);\n\tif (!isSessionFormatJsonObject(snapshot)) throw new SessionFormatError(`${label} must be a JSON object`);\n\tinspectSessionFormatVersion(snapshot);\n\tif (typeof snapshot[\"id\"] !== \"string\") throw new SessionFormatError(`${label} id must be a string`);\n\tsessionFormatCount(snapshot[\"createdAt\"], `${label} createdAt`);\n\tif (typeof snapshot[\"isSeeded\"] !== \"boolean\") throw new SessionFormatError(`${label} isSeeded must be a boolean`);\n\tsessionFormatCount(snapshot[\"delegationDepth\"], `${label} delegationDepth`);\n\treturn snapshot;\n}\n//#endregion\n//#region lib/types/chain.js\n/**\n* Validate and freeze one adjacent migration declaration.\n* @param migration - named exact adjacent conversion.\n* @returns immutable validated declaration.\n*/\nfunction defineSessionFormatMigration(migration) {\n\tif (typeof migration.name !== \"string\" || migration.name.length === 0) throw new SessionFormatError(\"Session migration name must be a non-empty string\");\n\tconst from = sessionFormatVersion(migration.fromVersion, `${migration.name} fromVersion`);\n\tif (sessionFormatVersion(migration.toVersion, `${migration.name} toVersion`) !== from + 1) throw new SessionFormatError(`${migration.name} must declare adjacent v${from}->v${from + 1}`);\n\treturn Object.freeze({ ...migration });\n}\n/**\n* Compile a unique, complete adjacent migration chain.\n* @param options - current version, adjacent declarations, and current restorer.\n* @returns immutable planner and streaming migration compiler.\n*/\nfunction createSessionFormatChain(options) {\n\treturn new CompiledSessionFormatChain(options);\n}\nvar CompiledSessionFormatChain = class {\n\tcurrentVersion;\n\tmigrations;\n\trestoreCurrentHeader;\n\tconstructor(options) {\n\t\tthis.currentVersion = sessionFormatVersion(options.currentVersion, \"current Session format version\");\n\t\tthis.restoreCurrentHeader = options.restoreCurrentHeader;\n\t\tconst byFrom = /* @__PURE__ */ new Map();\n\t\tconst names = /* @__PURE__ */ new Set();\n\t\tfor (const candidate of options.migrations) {\n\t\t\tconst migration = defineSessionFormatMigration(candidate);\n\t\t\tif (byFrom.has(migration.fromVersion)) throw new SessionFormatError(`Session migration v${migration.fromVersion}->v${migration.toVersion} is duplicated`);\n\t\t\tif (names.has(migration.name)) throw new SessionFormatError(`Session migration name ${JSON.stringify(migration.name)} is duplicated`);\n\t\t\tbyFrom.set(migration.fromVersion, migration);\n\t\t\tnames.add(migration.name);\n\t\t}\n\t\tconst ordered = [];\n\t\tfor (let version = 0; version < this.currentVersion; version += 1) {\n\t\t\tconst migration = byFrom.get(version);\n\t\t\tif (migration === void 0) throw new SessionFormatUnsupportedMigrationError(`Session migration v${version}->v${version + 1} is missing`);\n\t\t\tordered.push(migration);\n\t\t}\n\t\tif (byFrom.size !== ordered.length) throw new SessionFormatError(`Session migration from v${[...byFrom.keys()].find((version) => version >= this.currentVersion)} does not lead to current v${this.currentVersion}`);\n\t\tthis.migrations = Object.freeze(ordered);\n\t}\n\tplan(fromVersion) {\n\t\tconst from = sessionFormatVersion(fromVersion, \"stored Session format version\");\n\t\tif (from > this.currentVersion) throw new SessionFormatUnsupportedMigrationError(`stored Session uses newer format v${from}; this build writes v${this.currentVersion}`);\n\t\treturn Object.freeze(this.migrations.slice(from));\n\t}\n\tcreateStream(sourceHeader, sourceCut, output) {\n\t\tlet header = sourceHeader;\n\t\tconst validatedSourceCut = sourceCut === void 0 ? void 0 : sessionFormatCount(sourceCut, \"Session inherited event count\");\n\t\tlet inheritedEventCount = validatedSourceCut;\n\t\tconst stages = [];\n\t\tconst plan = this.plan(header.version);\n\t\tfor (const [index, migration] of plan.entries()) {\n\t\t\tconst targetHeader = this.advanceHeader(migration, header);\n\t\t\tlet stage;\n\t\t\ttry {\n\t\t\t\tstage = migration.createStage({\n\t\t\t\t\tsourceHeader: header,\n\t\t\t\t\ttargetHeader,\n\t\t\t\t\tsourceInheritedEventCount: inheritedEventCount,\n\t\t\t\t\tsourceKind: index === 0 ? \"decoded\" : \"transformed\"\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tthrowUnsupportedRefusal(migration, error);\n\t\t\t}\n\t\t\theader = targetHeader;\n\t\t\tstages.push({\n\t\t\t\tmigration,\n\t\t\t\tstage\n\t\t\t});\n\t\t\tinheritedEventCount = stage.headerInheritedEventCount;\n\t\t}\n\t\treturn new CompiledSessionFormatMigrationStream(header, validatedSourceCut, stages, output);\n\t}\n\tmigrateHeader(source) {\n\t\tlet current = snapshotSessionFormatHeader(source, \"stored Session header\");\n\t\tfor (const migration of this.plan(current.version)) current = this.advanceHeader(migration, current);\n\t\tcurrent = snapshotSessionFormatHeader(this.restoreCurrentHeader(current), \"current Session header restoration\");\n\t\tif (current.version !== this.currentVersion) throw new SessionFormatError(`current Session header restorer returned v${current.version}; expected v${this.currentVersion}`);\n\t\treturn current;\n\t}\n\tadvanceHeader(migration, source) {\n\t\tlet target;\n\t\ttry {\n\t\t\ttarget = migration.migrateHeader(snapshotSessionFormatHeader(source, `${migration.name} header input`));\n\t\t} catch (error) {\n\t\t\tthrowUnsupportedRefusal(migration, error, \"Session header\");\n\t\t}\n\t\tconst current = snapshotSessionFormatHeader(target, `${migration.name} header output`);\n\t\tif (current.version !== migration.toVersion) throw new SessionFormatError(`${migration.name} header returned v${current.version}; expected v${migration.toVersion}`);\n\t\ttry {\n\t\t\tmigration.validateTargetHeader(current);\n\t\t} catch (error) {\n\t\t\tthrowUnsupportedRefusal(migration, error, \"Session header\");\n\t\t}\n\t\treturn current;\n\t}\n};\nvar ChainedMigrationContext = class {\n\tentry;\n\toutput;\n\tconstructor(entry, output) {\n\t\tthis.entry = entry;\n\t\tthis.output = output;\n\t}\n\temitEvent(event) {\n\t\ttry {\n\t\t\tthis.entry.stage.transformEvent(event, this.output);\n\t\t} catch (error) {\n\t\t\tthrowUnsupportedRefusal(this.entry.migration, error);\n\t\t}\n\t}\n\temitRun(run) {\n\t\ttry {\n\t\t\tthis.entry.stage.transformRun(run, this.output);\n\t\t} catch (error) {\n\t\t\tthrowUnsupportedRefusal(this.entry.migration, error);\n\t\t}\n\t}\n\tfinish() {\n\t\tlet targetCut;\n\t\ttry {\n\t\t\ttargetCut = this.entry.stage.finish(this.output);\n\t\t} catch (error) {\n\t\t\tthrowUnsupportedRefusal(this.entry.migration, error);\n\t\t}\n\t\tif (this.entry.stage.headerInheritedEventCount !== void 0 && this.entry.stage.headerInheritedEventCount !== targetCut) throw new SessionFormatError(`${this.entry.migration.name} changed its predeclared inherited cut`);\n\t\treturn targetCut;\n\t}\n};\nvar CompiledSessionFormatMigrationStream = class {\n\theader;\n\tsourceInheritedEventCount;\n\tinput;\n\tstages;\n\tconstructor(header, sourceInheritedEventCount, entries, output) {\n\t\tthis.header = header;\n\t\tthis.sourceInheritedEventCount = sourceInheritedEventCount;\n\t\tconst stages = new Array(entries.length);\n\t\tlet downstream = output;\n\t\tfor (const [offset, entry] of entries.toReversed().entries()) {\n\t\t\tconst context = new ChainedMigrationContext(entry, downstream);\n\t\t\tstages[entries.length - offset - 1] = context;\n\t\t\tdownstream = context;\n\t\t}\n\t\tthis.input = downstream;\n\t\tthis.stages = stages;\n\t}\n\temitEvent(event) {\n\t\tthis.input.emitEvent(event);\n\t}\n\temitRun(run) {\n\t\tthis.input.emitRun(run);\n\t}\n\tfinish() {\n\t\tlet inheritedEventCount = this.sourceInheritedEventCount;\n\t\tfor (const stage of this.stages) inheritedEventCount = stage.finish();\n\t\treturn sessionFormatCount(inheritedEventCount, \"finished Session inherited event count\");\n\t}\n};\nfunction throwUnsupportedRefusal(migration, error, subject = \"Session\") {\n\tif (error instanceof SessionFormatUnsupportedMigrationError) throw error;\n\tconst detail = error instanceof Error ? error.message : String(error);\n\tthrow new SessionFormatUnsupportedMigrationError(`${migration.name} refuses this format v${migration.fromVersion} ${subject}: ${detail}`, { cause: error });\n}\n//#endregion\n//#region lib/types/context.js\n/** Migration output context that expands compact runs into retained events. */\nvar SessionFormatEventCollector = class {\n\t/** Events retained by this collector in source order. */\n\tvalues = [];\n\t/**\n\t* Retain one settled event.\n\t* @param event - settled event emitted by the upstream stage.\n\t*/\n\temitEvent(event) {\n\t\tthis.values.push(event);\n\t}\n\t/**\n\t* Expand one compact run directly into retained events.\n\t* @param run - compact event run emitted by the upstream stage.\n\t*/\n\temitRun(run) {\n\t\tfor (const event of run.expand()) this.values.push(event);\n\t}\n};\n//#endregion\n//#region lib/types/catalog.js\n/**\n* Compile a build-static physical codec and adjacent migration catalog.\n* @param options - complete codecs, migrations, current version, and restorer.\n* @returns immutable physical dispatch and migration operations.\n*/\nfunction createSessionFormatCatalog(options) {\n\tconst chain = createSessionFormatChain(options);\n\tconst codecs = /* @__PURE__ */ new Map();\n\tfor (const codec of options.codecs) {\n\t\tconst version = sessionFormatVersion(codec.version, \"Session format codec version\");\n\t\tif (codecs.has(version)) throw new SessionFormatError(`Session format codec v${version} is duplicated`);\n\t\tcodecs.set(version, Object.freeze({ ...codec }));\n\t}\n\tfor (let version = 0; version <= chain.currentVersion; version += 1) if (!codecs.has(version)) throw new SessionFormatError(`Session format codec v${version} is missing`);\n\tif (codecs.size !== chain.currentVersion + 1) throw new SessionFormatError(`Session format codec v${[...codecs.keys()].find((version) => version > chain.currentVersion)} is newer than current v${chain.currentVersion}`);\n\tfunction readHeader(headerValue) {\n\t\tlet storedVersion;\n\t\ttry {\n\t\t\tstoredVersion = inspectSessionFormatVersion(headerValue);\n\t\t} catch (error) {\n\t\t\treturn malformed(chain.currentVersion, error);\n\t\t}\n\t\tif (storedVersion > chain.currentVersion) return Object.freeze({\n\t\t\tstatus: \"unsupported\",\n\t\t\tstoredVersion,\n\t\t\ttargetVersion: chain.currentVersion,\n\t\t\treason: `stored Session uses newer format v${storedVersion}; this build writes v${chain.currentVersion}`\n\t\t});\n\t\tconst codec = codecs.get(storedVersion);\n\t\t/* v8 ignore next -- construction proves every supported version has exactly one codec. */\n\t\tif (codec === void 0) return Object.freeze({\n\t\t\tstatus: \"unsupported\",\n\t\t\tstoredVersion,\n\t\t\ttargetVersion: chain.currentVersion,\n\t\t\treason: `this build has no Session format codec for v${storedVersion}`\n\t\t});\n\t\ttry {\n\t\t\tconst decoded = snapshotSessionFormatHeader(codec.decodeHeader(headerValue), `format v${storedVersion} header`);\n\t\t\tconst header = chain.migrateHeader(decoded);\n\t\t\treturn Object.freeze({\n\t\t\t\tstatus: storedVersion === chain.currentVersion ? \"current\" : \"migration-required\",\n\t\t\t\tstoredVersion,\n\t\t\t\ttargetVersion: chain.currentVersion,\n\t\t\t\theader\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tif (error instanceof SessionFormatUnsupportedMigrationError) return Object.freeze({\n\t\t\t\tstatus: \"unsupported\",\n\t\t\t\tstoredVersion,\n\t\t\t\ttargetVersion: chain.currentVersion,\n\t\t\t\treason: error.message\n\t\t\t});\n\t\t\treturn malformed(chain.currentVersion, error, storedVersion);\n\t\t}\n\t}\n\tfunction artifactCodec(headerValue) {\n\t\tconst storedVersion = inspectSessionFormatVersion(headerValue);\n\t\tif (storedVersion > chain.currentVersion) throw new SessionFormatUnsupportedMigrationError(`stored Session uses newer format v${storedVersion}; this build writes v${chain.currentVersion}`);\n\t\tconst codec = codecs.get(storedVersion);\n\t\t/* v8 ignore next -- construction proves every supported version has exactly one codec. */\n\t\tif (codec === void 0) throw new SessionFormatUnsupportedMigrationError(`this build has no Session format codec for v${storedVersion}`);\n\t\treturn {\n\t\t\tstoredVersion,\n\t\t\tcodec\n\t\t};\n\t}\n\tfunction encodeCurrentHeader(header, inheritedEventCount) {\n\t\tif (inspectSessionFormatVersion(header) !== chain.currentVersion) throw new SessionFormatError(`encodeCurrent requires Session format v${chain.currentVersion}`);\n\t\tconst encoded = options.currentEncoder.encodeHeader(header, inheritedEventCount);\n\t\tif (inspectSessionFormatVersion(encoded) !== chain.currentVersion) throw new SessionFormatError(\"current Session codec returned a non-current header\");\n\t\treturn encoded;\n\t}\n\tfunction createRestore(headerValue, restoreOptions) {\n\t\tconst { storedVersion, codec } = artifactCodec(headerValue);\n\t\tconst decoder = codec.createDecoder(headerValue, restoreOptions.recovery);\n\t\tconst sourceCut = decoder.headerInheritedEventCount;\n\t\tif (storedVersion === chain.currentVersion) return new CurrentSessionFormatRestore(decoder, sourceCut, restoreOptions.validation === \"current\" ? options.restoreCurrent : identityArtifact, chain.currentVersion);\n\t\tconst collector = new SessionFormatEventCollector();\n\t\treturn new MigratingSessionFormatRestore(decoder, sourceCut, chain.createStream(decoder.header, sourceCut, collector), collector, restoreOptions.validation === \"current\" ? options.restoreCurrent : options.restoreTransformedCurrent, restoreOptions.validation, storedVersion, chain.currentVersion);\n\t}\n\treturn Object.freeze({\n\t\tcurrentVersion: chain.currentVersion,\n\t\treadHeader,\n\t\tcreateRestore,\n\t\tencodeCurrentHeader,\n\t\tencodeCurrentEvent: options.currentEncoder.encodeEvent.bind(options.currentEncoder)\n\t});\n}\nvar CurrentSessionFormatRestore = class {\n\tdecoder;\n\tsourceInheritedEventCount;\n\trestoreArtifact;\n\tcurrentVersion;\n\theader;\n\tcollector = new SessionFormatEventCollector();\n\tconstructor(decoder, sourceInheritedEventCount, restoreArtifact, currentVersion) {\n\t\tthis.decoder = decoder;\n\t\tthis.sourceInheritedEventCount = sourceInheritedEventCount;\n\t\tthis.restoreArtifact = restoreArtifact;\n\t\tthis.currentVersion = currentVersion;\n\t\tthis.header = decoder.header;\n\t}\n\tdecodeRow(rowValue) {\n\t\tthis.decoder.decodeRow(rowValue, this.collector);\n\t}\n\tfinish() {\n\t\tconst inheritedEventCount = finishDecoder(this.decoder, this.collector, this.sourceInheritedEventCount);\n\t\treturn restoreCurrentVersion(this.restoreArtifact({\n\t\t\theader: this.header,\n\t\t\tinheritedEventCount,\n\t\t\tevents: this.collector.values\n\t\t}), this.currentVersion);\n\t}\n};\nvar MigratingSessionFormatRestore = class {\n\tdecoder;\n\tsourceInheritedEventCount;\n\tmigration;\n\tcollector;\n\trestoreArtifact;\n\tvalidation;\n\tsourceVersion;\n\tcurrentVersion;\n\theader;\n\tconstructor(decoder, sourceInheritedEventCount, migration, collector, restoreArtifact, validation, sourceVersion, currentVersion) {\n\t\tthis.decoder = decoder;\n\t\tthis.sourceInheritedEventCount = sourceInheritedEventCount;\n\t\tthis.migration = migration;\n\t\tthis.collector = collector;\n\t\tthis.restoreArtifact = restoreArtifact;\n\t\tthis.validation = validation;\n\t\tthis.sourceVersion = sourceVersion;\n\t\tthis.currentVersion = currentVersion;\n\t\tthis.header = migration.header;\n\t}\n\tdecodeRow(rowValue) {\n\t\tthis.decoder.decodeRow(rowValue, this);\n\t}\n\temitEvent(event) {\n\t\tthis.migration.emitEvent(event);\n\t}\n\temitRun(run) {\n\t\tthis.migration.emitRun(run);\n\t}\n\tfinish() {\n\t\tfinishDecoder(this.decoder, this, this.sourceInheritedEventCount);\n\t\tconst artifact = {\n\t\t\theader: this.header,\n\t\t\tinheritedEventCount: this.migration.finish(),\n\t\t\tevents: this.collector.values\n\t\t};\n\t\tlet restored;\n\t\ttry {\n\t\t\trestored = this.restoreArtifact(artifact);\n\t\t} catch (error) {\n\t\t\tif (this.validation === \"current\" || error instanceof SessionFormatUnsupportedMigrationError) throw error;\n\t\t\tconst detail = error instanceof Error ? error.message : String(error);\n\t\t\tthrow new SessionFormatUnsupportedMigrationError(`Session migration from v${this.sourceVersion} to v${this.currentVersion} refuses the transformed artifact: ${detail}`, { cause: error });\n\t\t}\n\t\treturn restoreCurrentVersion(restored, this.currentVersion);\n\t}\n};\nfunction finishDecoder(decoder, context, sourceInheritedEventCount) {\n\tconst inheritedEventCount = decoder.finish(context);\n\tif (sourceInheritedEventCount !== void 0 && inheritedEventCount !== sourceInheritedEventCount) throw new SessionFormatError(\"streaming decoder changed its predeclared inherited cut\");\n\treturn inheritedEventCount;\n}\nfunction restoreCurrentVersion(artifact, currentVersion) {\n\tif (artifact.header.version !== currentVersion) throw new SessionFormatError(`current Session restorer returned v${artifact.header.version}; expected v${currentVersion}`);\n\treturn artifact;\n}\nfunction identityArtifact(artifact) {\n\treturn artifact;\n}\nfunction malformed(targetVersion, error, storedVersion) {\n\treturn Object.freeze({\n\t\tstatus: \"malformed\",\n\t\t...storedVersion === void 0 ? {} : { storedVersion },\n\t\ttargetVersion,\n\t\treason: error instanceof Error ? error.message : String(error)\n\t});\n}\n//#endregion\n//#region lib/types/filename.js\n/** Canonical raw log basename shared by every generation-addressed Session artifact. */\nconst CANONICAL_LOG_FILENAME = /^session(?:\\.v([1-9][0-9]*))?\\.jsonl$/u;\n/**\n* Name the raw JSONL log of one immutable Session format generation. Version\n* zero keeps the original `session.jsonl`; every later generation carries a\n* lowercase numeric `.vN` component before the `.jsonl` suffix.\n* @param version - non-negative safe integer Session format version.\n* @returns the canonical basename, without any compression suffix.\n*/\nfunction sessionFormatLogFilename(version) {\n\tconst generation = sessionFormatVersion(version, \"Session log generation version\");\n\treturn generation === 0 ? \"session.jsonl\" : `session.v${generation}.jsonl`;\n}\n/**\n* Read the generation named by one raw JSONL log basename. Temporary,\n* uppercase, leading-zero, `.v0`, and compression-suffixed names are not\n* canonical.\n* @param filename - one basename from a Session directory or archive.\n* @returns its Session format version, or `undefined` when the name is not canonical.\n*/\nfunction parseSessionFormatLogFilename(filename) {\n\tconst match = CANONICAL_LOG_FILENAME.exec(filename);\n\tif (match === null) return void 0;\n\tif (match[1] === void 0) return 0;\n\tconst version = Number(match[1]);\n\treturn Number.isSafeInteger(version) ? version : void 0;\n}\n//#endregion\nexport { SessionFormatError, SessionFormatEventCollector, SessionFormatUnsupportedMigrationError, createSessionFormatCatalog, createSessionFormatChain, defineSessionFormatMigration, inspectSessionFormatVersion, isSessionFormatJsonObject, parseSessionFormatLogFilename, sessionFormatCount, sessionFormatLogFilename, sessionFormatSafeInteger, sessionFormatVersion, snapshotSessionFormatHeader, snapshotSessionFormatJson };\n", "import { SessionFormatError, SessionFormatUnsupportedMigrationError, defineSessionFormatMigration, isSessionFormatJsonObject, sessionFormatCount, sessionFormatSafeInteger, snapshotSessionFormatJson } from \"@deepseek-ai/dsh-session-format\";\nimport { isAbsolute } from \"node:path\";\nimport { deepEqualJson, isJsonValue } from \"@deepseek-ai/dsh-util-values\";\n//#region lib/types/dispositions.js\n/**\n* Freeze one exact released payload-member disposition for adjacent format validators.\n* @param required - members that must be present.\n* @param optional - additional admitted members.\n* @param opaque - members retained as lossless JSON without nested semantic inspection.\n* @returns the detached frozen disposition.\n*/\nfunction defineReleasedPayloadDisposition(required, optional = [], opaque = []) {\n\treturn Object.freeze({\n\t\trequired: Object.freeze([...required]),\n\t\toptional: Object.freeze([...optional]),\n\t\topaque: Object.freeze([...opaque])\n\t});\n}\nconst disposition = defineReleasedPayloadDisposition;\n/**\n* Frozen released-v0 event and payload-member inventory.\n* Every listed member is preserved by the identity edge. Members in `opaque`\n* remain lossless JSON without nested Session-sequence interpretation. Nested\n* merge-extensible discriminants validate known variants and preserve\n* unknown variants as owner-opaque JSON.\n*/\nconst RELEASED_V0_EVENT_DISPOSITIONS = Object.freeze({\n\t\"agent-preset/selected\": disposition([\"agentPreset\"]),\n\t\"agent/inbox/spliced\": disposition([\n\t\t\"target\",\n\t\t\"start\",\n\t\t\"inserted\"\n\t], [\"removedCount\", \"outcome\"]),\n\t\"approval/asked\": disposition([\"id\", \"toolName\"], [\"callId\", \"reason\"]),\n\t\"approval/decided\": disposition([\"id\", \"outcome\"]),\n\t\"approval/policy\": disposition([\"policy\"], [\"source\"]),\n\t\"assistant/chunk\": disposition([\n\t\t\"turn\",\n\t\t\"step\",\n\t\t\"chunk\"\n\t]),\n\t\"assistant/message\": disposition([\n\t\t\"turn\",\n\t\t\"step\",\n\t\t\"message\"\n\t], [\"usage\", \"interrupted\"]),\n\t\"command/done\": disposition([\"commandId\", \"kind\"], [\"text\", \"sourceEventSeq\"]),\n\t\"command/run\": disposition([\n\t\t\"commandId\",\n\t\t\"name\",\n\t\t\"source\"\n\t], [\"args\"]),\n\t\"compaction/end\": disposition([\"compactionId\", \"turn\"], [\"sourceCommandId\", \"error\"]),\n\t\"compaction/prune\": disposition([\n\t\t\"shadowedRange\",\n\t\t\"shadowedSeqs\",\n\t\t\"shadowedTokenCount\"\n\t]),\n\t\"compaction/start\": disposition([\"compactionId\", \"turn\"], [\"sourceCommandId\"]),\n\t\"compaction/summary\": disposition([\n\t\t\"compactionId\",\n\t\t\"summary\",\n\t\t\"shadowedRange\",\n\t\t\"shadowedSeqs\",\n\t\t\"shadowedTokenCount\",\n\t\t\"provider\",\n\t\t\"model\"\n\t], [\n\t\t\"sourceCommandId\",\n\t\t\"maxTokens\",\n\t\t\"usage\",\n\t\t\"rawOutput\",\n\t\t\"llmStreamCall\"\n\t]),\n\t\"feedback/record\": disposition([\"text\"]),\n\t\"goal/change\": disposition([\n\t\t\"kind\",\n\t\t\"version\",\n\t\t\"operation\"\n\t], [\n\t\t\"goal\",\n\t\t\"roundsStarted\",\n\t\t\"createdAt\",\n\t\t\"updatedAt\",\n\t\t\"cleared\",\n\t\t\"clearedAt\"\n\t]),\n\t\"hook/invoked\": disposition([\n\t\t\"turn\",\n\t\t\"point\",\n\t\t\"dialect\",\n\t\t\"handlerId\"\n\t], [\"matcher\"]),\n\t\"hook/result\": disposition([\n\t\t\"turn\",\n\t\t\"point\",\n\t\t\"handlerId\",\n\t\t\"decision\",\n\t\t\"durationMs\"\n\t], [\"exitCode\", \"stderrSummary\"]),\n\t\"llm/retry\": disposition([\n\t\t\"retryId\",\n\t\t\"turn\",\n\t\t\"step\",\n\t\t\"provider\",\n\t\t\"mode\",\n\t\t\"policyKey\",\n\t\t\"retry\",\n\t\t\"delayMs\",\n\t\t\"failure\"\n\t], [\"maxRetries\"]),\n\t\"llm/retry-started\": disposition([\n\t\t\"retryId\",\n\t\t\"turn\",\n\t\t\"step\",\n\t\t\"retry\"\n\t]),\n\t\"model/selection\": disposition([\"provider\", \"model\"], [\"reasoningEffort\"]),\n\t\"permission/preset\": disposition([\"preset\"]),\n\t\"plan/mode\": disposition([\"active\"]),\n\t\"request/context\": disposition([\"provider\", \"model\"], [\"contextWindow\"]),\n\t\"request/header\": disposition([\"header\", \"reason\"], [\"startsSeries\"]),\n\t\"sandbox/mode\": disposition([\"mode\"], [\"source\"]),\n\t\"schedule/change\": disposition([\"version\", \"operation\"], [\n\t\t\"schedule\",\n\t\t\"id\",\n\t\t\"acceptedAt\"\n\t]),\n\t\"session-log-deepseek/delivery-accepted\": disposition([\"sessionId\", \"throughSeq\"]),\n\t\"session/end-seed\": disposition([]),\n\t\"session/title\": disposition([\n\t\t\"title\",\n\t\t\"messageSeqs\",\n\t\t\"source\"\n\t]),\n\t\"session/title-llm-request\": disposition([\n\t\t\"titleProvider\",\n\t\t\"messageSeqs\",\n\t\t\"route\",\n\t\t\"system\",\n\t\t\"messages\",\n\t\t\"maxTokens\"\n\t]),\n\t\"step/end\": disposition([\"turn\", \"step\"]),\n\t\"step/start\": disposition([\"turn\", \"step\"]),\n\t\"subagent/descriptor\": disposition([\n\t\t\"mode\",\n\t\t\"version\",\n\t\t\"provider\"\n\t], [\n\t\t\"label\",\n\t\t\"agentProvider\",\n\t\t\"agentModel\",\n\t\t\"agentReasoningEffort\",\n\t\t\"persona\",\n\t\t\"toolFilter\"\n\t]),\n\t\"subagent/model-selection-policy\": disposition([\"allowedModels\"]),\n\t\"team/member\": disposition([\n\t\t\"version\",\n\t\t\"teamId\",\n\t\t\"member\"\n\t]),\n\t\"team/message/delivered\": disposition([\n\t\t\"version\",\n\t\t\"teamId\",\n\t\t\"messageId\",\n\t\t\"targetId\"\n\t]),\n\t\"team/message/queued\": disposition([\n\t\t\"version\",\n\t\t\"teamId\",\n\t\t\"message\"\n\t]),\n\t\"team/task\": disposition([\n\t\t\"version\",\n\t\t\"teamId\",\n\t\t\"task\"\n\t]),\n\t\"todo/write\": disposition([\"todos\"]),\n\t\"tool-workflow/agent-end\": disposition([\n\t\t\"runId\",\n\t\t\"seq\",\n\t\t\"outcome\"\n\t]),\n\t\"tool-workflow/agent-start\": disposition([\n\t\t\"runId\",\n\t\t\"seq\",\n\t\t\"label\",\n\t\t\"childId\"\n\t], [\"phase\"]),\n\t\"tool-workflow/run-end\": disposition([\"runId\", \"stopReason\"]),\n\t\"tool-workflow/run-start\": disposition([\"runId\", \"name\"]),\n\t\"tool/call\": disposition([\n\t\t\"turn\",\n\t\t\"step\",\n\t\t\"callId\",\n\t\t\"name\",\n\t\t\"arguments\"\n\t]),\n\t\"tool/code-dispatch\": disposition([\n\t\t\"rootCallId\",\n\t\t\"parentCallId\",\n\t\t\"subCallId\",\n\t\t\"name\",\n\t\t\"arguments\",\n\t\t\"isError\",\n\t\t\"content\"\n\t], [], [\"arguments\"]),\n\t\"tool/code-dispatch-start\": disposition([\n\t\t\"rootCallId\",\n\t\t\"parentCallId\",\n\t\t\"subCallId\",\n\t\t\"name\",\n\t\t\"arguments\"\n\t], [], [\"arguments\"]),\n\t\"tool/result\": disposition([\n\t\t\"turn\",\n\t\t\"step\",\n\t\t\"message\"\n\t], [\"error\", \"meta\"], [\"meta\"]),\n\t\"turn/end\": disposition([\"turn\", \"reason\"]),\n\t\"turn/start\": disposition([\"turn\"]),\n\t\"user/message\": disposition([\n\t\t\"role\",\n\t\t\"id\",\n\t\t\"content\",\n\t\t\"source\"\n\t]),\n\t\"web/deepseek-search-llm-request\": disposition([\n\t\t\"endpoint\",\n\t\t\"apiVersion\",\n\t\t\"body\"\n\t])\n});\n/** Stable sorted released-v0 event inventory. */\nconst RELEASED_V0_EVENT_TYPES = Object.freeze(Object.keys(RELEASED_V0_EVENT_DISPOSITIONS).sort((left, right) => left.localeCompare(right, \"en\")));\n//#endregion\n//#region lib/types/validation-helpers.js\n/**\n* Require one plain JSON object.\n* @param value - candidate JSON value.\n* @param label - diagnostic subject.\n* @returns validated object record.\n*/\nfunction releasedV0Record(value, label) {\n\tif (!isSessionFormatJsonObject(value)) throw new SessionFormatError(`${label} must be a JSON object`);\n\treturn value;\n}\n/**\n* Require every named member and no member outside the optional list.\n* @param record - candidate object.\n* @param required - members that must exist.\n* @param optional - additional admitted members.\n* @param label - diagnostic subject.\n*/\nfunction assertReleasedV0Keys(record, required, optional = [], label) {\n\tconst allowed = new Set([...required, ...optional]);\n\tconst unexpected = Object.keys(record).find((key) => !allowed.has(key));\n\tif (unexpected !== void 0) throw new SessionFormatError(`${label} has unexpected member ${JSON.stringify(unexpected)}`);\n\tconst missing = required.find((key) => !Object.hasOwn(record, key));\n\tif (missing !== void 0) throw new SessionFormatError(`${label} lacks required member ${JSON.stringify(missing)}`);\n}\n//#endregion\n//#region lib/types/payload-validation.js\n/**\n* Validate nested released payload semantics for one known event.\n* @param event - known event with exact top-level members.\n* @param version - source or current payload generation.\n*/\nfunction assertReleasedPayloadSemantics(event, version) {\n\tconst data = releasedV0Record(event.data, `${event.type} ${event.seq} data`);\n\tconst label = `${event.type} ${event.seq}`;\n\tswitch (event.type) {\n\t\tcase \"agent-preset/selected\":\n\t\t\tstringValue(data[\"agentPreset\"], `${label} agentPreset`);\n\t\t\treturn;\n\t\tcase \"agent/inbox/spliced\":\n\t\t\tliteralValue(data[\"target\"], [\"next-turn\", \"next-step\"], `${label} target`);\n\t\t\tcountValue(data[\"start\"], `${label} start`);\n\t\t\tif (data[\"removedCount\"] !== void 0) countValue(data[\"removedCount\"], `${label} removedCount`);\n\t\t\tarrayValue(data[\"inserted\"], `${label} inserted`, (value) => {\n\t\t\t\tmessageValue(value, `${label} inserted message`, version, \"user\");\n\t\t\t});\n\t\t\tif (data[\"outcome\"] !== void 0) literalValue(data[\"outcome\"], [\"canceled\"], `${label} outcome`);\n\t\t\treturn;\n\t\tcase \"approval/asked\":\n\t\t\tnonEmptyString(data[\"id\"], `${label} id`);\n\t\t\tnonEmptyString(data[\"toolName\"], `${label} toolName`);\n\t\t\tif (data[\"callId\"] !== void 0) nonEmptyString(data[\"callId\"], `${label} callId`);\n\t\t\tif (data[\"reason\"] !== void 0) stringValue(data[\"reason\"], `${label} reason`);\n\t\t\treturn;\n\t\tcase \"approval/decided\":\n\t\t\tnonEmptyString(data[\"id\"], `${label} id`);\n\t\t\tliteralValue(data[\"outcome\"], [\n\t\t\t\t\"allowed-once\",\n\t\t\t\t\"rejected\",\n\t\t\t\t\"cancelled\",\n\t\t\t\t\"unavailable\"\n\t\t\t], `${label} outcome`);\n\t\t\treturn;\n\t\tcase \"approval/policy\":\n\t\t\tliteralValue(data[\"policy\"], [\"ask\", \"never\"], `${label} policy`);\n\t\t\tif (data[\"source\"] !== void 0) literalValue(data[\"source\"], [\"delegation\"], `${label} source`);\n\t\t\treturn;\n\t\tcase \"assistant/chunk\":\n\t\t\tcoordinatePair(data, label);\n\t\t\tstreamChunkValue(data[\"chunk\"], `${label} chunk`);\n\t\t\treturn;\n\t\tcase \"assistant/message\":\n\t\t\tcoordinatePair(data, label);\n\t\t\tmessageValue(data[\"message\"], `${label} message`, version, \"assistant\");\n\t\t\tif (data[\"usage\"] !== void 0) tokenUsageValue(data[\"usage\"], `${label} usage`);\n\t\t\tif (data[\"interrupted\"] !== void 0) literalValue(data[\"interrupted\"], [true], `${label} interrupted`);\n\t\t\treturn;\n\t\tcase \"command/done\":\n\t\t\tnonEmptyString(data[\"commandId\"], `${label} commandId`);\n\t\t\tliteralValue(data[\"kind\"], [\"success\", \"error\"], `${label} kind`);\n\t\t\tif (data[\"text\"] !== void 0) stringValue(data[\"text\"], `${label} text`);\n\t\t\tif (data[\"sourceEventSeq\"] !== void 0) earlierSeq(data[\"sourceEventSeq\"], event.seq, `${label} sourceEventSeq`);\n\t\t\treturn;\n\t\tcase \"command/run\":\n\t\t\tnonEmptyString(data[\"commandId\"], `${label} commandId`);\n\t\t\tnonEmptyString(data[\"name\"], `${label} name`);\n\t\t\tif (data[\"args\"] !== void 0) stringValue(data[\"args\"], `${label} args`);\n\t\t\tliteralValue(exactRecord(data[\"source\"], `${label} source`, [\"kind\"])[\"kind\"], [\"user\"], `${label} source kind`);\n\t\t\treturn;\n\t\tcase \"compaction/start\":\n\t\tcase \"compaction/end\":\n\t\t\tnonEmptyString(data[\"compactionId\"], `${label} compactionId`);\n\t\t\tif (data[\"sourceCommandId\"] !== void 0) nonEmptyString(data[\"sourceCommandId\"], `${label} sourceCommandId`);\n\t\t\tnullableValue(data[\"turn\"], `${label} turn`, countValue);\n\t\t\tif (data[\"error\"] !== void 0) stringValue(data[\"error\"], `${label} error`);\n\t\t\treturn;\n\t\tcase \"compaction/prune\":\n\t\t\tshadowedValue(data, event.seq, label);\n\t\t\treturn;\n\t\tcase \"compaction/summary\":\n\t\t\tif (data[\"llmStreamCall\"] === true && data[\"rawOutput\"] === void 0) throw new SessionFormatError(`${label} llmStreamCall requires rawOutput`);\n\t\t\tnonEmptyString(data[\"compactionId\"], `${label} compactionId`);\n\t\t\tif (data[\"sourceCommandId\"] !== void 0) nonEmptyString(data[\"sourceCommandId\"], `${label} sourceCommandId`);\n\t\t\tcontentBlocksValue(data[\"summary\"], `${label} summary`, version);\n\t\t\tshadowedValue(data, event.seq, label);\n\t\t\tnonEmptyString(data[\"provider\"], `${label} provider`);\n\t\t\tnonEmptyString(data[\"model\"], `${label} model`);\n\t\t\tif (data[\"maxTokens\"] !== void 0) countValue(data[\"maxTokens\"], `${label} maxTokens`);\n\t\t\tif (data[\"usage\"] !== void 0) tokenUsageValue(data[\"usage\"], `${label} usage`);\n\t\t\tif (data[\"rawOutput\"] !== void 0) contentBlocksValue(data[\"rawOutput\"], `${label} rawOutput`, version);\n\t\t\tif (data[\"llmStreamCall\"] !== void 0) literalValue(data[\"llmStreamCall\"], [true], `${label} llmStreamCall`);\n\t\t\treturn;\n\t\tcase \"feedback/record\":\n\t\t\tnonEmptyString(data[\"text\"], `${label} text`);\n\t\t\treturn;\n\t\tcase \"goal/change\":\n\t\t\tgoalChangeValue(data, label);\n\t\t\treturn;\n\t\tcase \"hook/invoked\":\n\t\t\tcountValue(data[\"turn\"], `${label} turn`);\n\t\t\tnonEmptyString(data[\"point\"], `${label} point`);\n\t\t\tliteralValue(data[\"dialect\"], [\"claude-code\", \"codex\"], `${label} dialect`);\n\t\t\tif (data[\"matcher\"] !== void 0) stringValue(data[\"matcher\"], `${label} matcher`);\n\t\t\tnonEmptyString(data[\"handlerId\"], `${label} handlerId`);\n\t\t\treturn;\n\t\tcase \"hook/result\":\n\t\t\tcountValue(data[\"turn\"], `${label} turn`);\n\t\t\tnonEmptyString(data[\"point\"], `${label} point`);\n\t\t\tnonEmptyString(data[\"handlerId\"], `${label} handlerId`);\n\t\t\tnonEmptyString(data[\"decision\"], `${label} decision`);\n\t\t\tif (data[\"exitCode\"] !== void 0) safeIntegerValue(data[\"exitCode\"], `${label} exitCode`);\n\t\t\tif (data[\"stderrSummary\"] !== void 0) stringValue(data[\"stderrSummary\"], `${label} stderrSummary`);\n\t\t\tif (finiteNumberValue(data[\"durationMs\"], `${label} durationMs`) < 0) throw new SessionFormatError(`${label} durationMs must be non-negative`);\n\t\t\treturn;\n\t\tcase \"llm/retry\":\n\t\t\tnonEmptyString(data[\"retryId\"], `${label} retryId`);\n\t\t\tcoordinatePair(data, label);\n\t\t\tnonEmptyString(data[\"provider\"], `${label} provider`);\n\t\t\tliteralValue(data[\"mode\"], [\"normal\", \"always\"], `${label} mode`);\n\t\t\tnonEmptyString(data[\"policyKey\"], `${label} policyKey`);\n\t\t\tpositiveIntegerValue(data[\"retry\"], `${label} retry`);\n\t\t\tif (data[\"mode\"] === \"normal\") {\n\t\t\t\tconst maxRetries = positiveIntegerValue(data[\"maxRetries\"], `${label} maxRetries`);\n\t\t\t\tif (data[\"retry\"] > maxRetries) throw new SessionFormatError(`${label} retry exceeds maxRetries`);\n\t\t\t} else if (data[\"maxRetries\"] !== void 0) throw new SessionFormatError(`${label} always mode must omit maxRetries`);\n\t\t\tconst delayMs = finiteNumberValue(data[\"delayMs\"], `${label} delayMs`);\n\t\t\tif (delayMs < 0) throw new SessionFormatError(`${label} delayMs must be non-negative`);\n\t\t\tif (delayMs > 2147483647) throw new SessionFormatError(`${label} delayMs exceeds the timer range`);\n\t\t\tllmFailureValue(data[\"failure\"], `${label} failure`);\n\t\t\treturn;\n\t\tcase \"llm/retry-started\":\n\t\t\tnonEmptyString(data[\"retryId\"], `${label} retryId`);\n\t\t\tcoordinatePair(data, label);\n\t\t\tpositiveIntegerValue(data[\"retry\"], `${label} retry`);\n\t\t\treturn;\n\t\tcase \"model/selection\":\n\t\t\tnonEmptyString(data[\"provider\"], `${label} provider`);\n\t\t\tnonEmptyString(data[\"model\"], `${label} model`);\n\t\t\tif (data[\"reasoningEffort\"] !== void 0) nonEmptyString(data[\"reasoningEffort\"], `${label} reasoningEffort`);\n\t\t\treturn;\n\t\tcase \"permission/preset\":\n\t\t\tnonEmptyString(data[\"preset\"], `${label} preset`);\n\t\t\treturn;\n\t\tcase \"plan/mode\":\n\t\t\tbooleanValue(data[\"active\"], `${label} active`);\n\t\t\treturn;\n\t\tcase \"request/context\":\n\t\t\tnonEmptyString(data[\"provider\"], `${label} provider`);\n\t\t\tnonEmptyString(data[\"model\"], `${label} model`);\n\t\t\tif (data[\"contextWindow\"] !== void 0) positiveIntegerValue(data[\"contextWindow\"], `${label} contextWindow`);\n\t\t\treturn;\n\t\tcase \"request/header\":\n\t\t\trequestHeaderValue(data[\"header\"], `${label} header`);\n\t\t\tliteralValue(data[\"reason\"], [\n\t\t\t\t\"initial\",\n\t\t\t\t\"resume\",\n\t\t\t\t\"change\",\n\t\t\t\t\"series\"\n\t\t\t], `${label} reason`);\n\t\t\tif (data[\"startsSeries\"] !== void 0) literalValue(data[\"startsSeries\"], [true], `${label} startsSeries`);\n\t\t\treturn;\n\t\tcase \"sandbox/mode\":\n\t\t\tliteralValue(data[\"mode\"], [\n\t\t\t\t\"read-only\",\n\t\t\t\t\"workspace-write\",\n\t\t\t\t\"danger-full-access\"\n\t\t\t], `${label} mode`);\n\t\t\tif (data[\"source\"] !== void 0) literalValue(data[\"source\"], [\"delegation\"], `${label} source`);\n\t\t\treturn;\n\t\tcase \"schedule/change\":\n\t\t\tscheduleChangeValue(data, label);\n\t\t\treturn;\n\t\tcase \"session-log-deepseek/delivery-accepted\":\n\t\t\tif ((data[\"sessionFormatVersion\"] === void 0 ? 0 : countValue(data[\"sessionFormatVersion\"], `${label} sessionFormatVersion`)) !== version) return;\n\t\t\tnonEmptyString(data[\"sessionId\"], `${label} sessionId`);\n\t\t\tearlierSeq(data[\"throughSeq\"], event.seq, `${label} throughSeq`);\n\t\t\treturn;\n\t\tcase \"session/end-seed\": return;\n\t\tcase \"session/title\":\n\t\t\tnonEmptyString(data[\"title\"], `${label} title`);\n\t\t\tseqArray(data[\"messageSeqs\"], event.seq, `${label} messageSeqs`, false);\n\t\t\ttitleSourceValue(data[\"source\"], `${label} source`);\n\t\t\treturn;\n\t\tcase \"session/title-llm-request\":\n\t\t\tnonEmptyString(data[\"titleProvider\"], `${label} titleProvider`);\n\t\t\tseqArray(data[\"messageSeqs\"], event.seq, `${label} messageSeqs`, true);\n\t\t\tmodelRouteValue(data[\"route\"], `${label} route`);\n\t\t\tstringValue(data[\"system\"], `${label} system`);\n\t\t\tarrayValue(data[\"messages\"], `${label} messages`, (value) => {\n\t\t\t\tmessageValue(value, `${label} message`, version);\n\t\t\t});\n\t\t\tpositiveIntegerValue(data[\"maxTokens\"], `${label} maxTokens`);\n\t\t\treturn;\n\t\tcase \"step/end\":\n\t\tcase \"step/start\":\n\t\t\tcoordinatePair(data, label);\n\t\t\treturn;\n\t\tcase \"subagent/descriptor\":\n\t\t\tsubagentDescriptorValue(data, label);\n\t\t\treturn;\n\t\tcase \"subagent/model-selection-policy\":\n\t\t\tallowedModelsValue(data[\"allowedModels\"], `${label} allowedModels`);\n\t\t\treturn;\n\t\tcase \"team/member\":\n\t\t\tteamSelector(data, label);\n\t\t\tteamMemberValue(data[\"member\"], `${label} member`);\n\t\t\treturn;\n\t\tcase \"team/message/delivered\":\n\t\t\tteamSelector(data, label);\n\t\t\tnonEmptyString(data[\"messageId\"], `${label} messageId`);\n\t\t\tnonEmptyString(data[\"targetId\"], `${label} targetId`);\n\t\t\treturn;\n\t\tcase \"team/message/queued\":\n\t\t\tteamSelector(data, label);\n\t\t\tteamMessageValue(data[\"message\"], `${label} message`, version);\n\t\t\treturn;\n\t\tcase \"team/task\":\n\t\t\tteamSelector(data, label);\n\t\t\tteamTaskValue(data[\"task\"], `${label} task`);\n\t\t\treturn;\n\t\tcase \"todo/write\":\n\t\t\tarrayValue(data[\"todos\"], `${label} todos`, (value, itemLabel) => {\n\t\t\t\tconst item = exactRecord(value, itemLabel, [\"content\", \"status\"]);\n\t\t\t\tstringValue(item[\"content\"], `${itemLabel} content`);\n\t\t\t\tliteralValue(item[\"status\"], [\n\t\t\t\t\t\"pending\",\n\t\t\t\t\t\"in_progress\",\n\t\t\t\t\t\"completed\"\n\t\t\t\t], `${itemLabel} status`);\n\t\t\t});\n\t\t\treturn;\n\t\tcase \"tool-workflow/agent-end\":\n\t\t\tworkflowIdentity(data, label);\n\t\t\tliteralValue(data[\"outcome\"], [\n\t\t\t\t\"completed\",\n\t\t\t\t\"failed\",\n\t\t\t\t\"cancelled\"\n\t\t\t], `${label} outcome`);\n\t\t\treturn;\n\t\tcase \"tool-workflow/agent-start\":\n\t\t\tworkflowIdentity(data, label);\n\t\t\tstringValue(data[\"label\"], `${label} label`);\n\t\t\tif (data[\"phase\"] !== void 0) stringValue(data[\"phase\"], `${label} phase`);\n\t\t\tnonEmptyString(data[\"childId\"], `${label} childId`);\n\t\t\treturn;\n\t\tcase \"tool-workflow/run-end\":\n\t\t\tnonEmptyString(data[\"runId\"], `${label} runId`);\n\t\t\tliteralValue(data[\"stopReason\"], [\n\t\t\t\t\"completed\",\n\t\t\t\t\"cancelled\",\n\t\t\t\t\"error\"\n\t\t\t], `${label} stopReason`);\n\t\t\treturn;\n\t\tcase \"tool-workflow/run-start\":\n\t\t\tnonEmptyString(data[\"runId\"], `${label} runId`);\n\t\t\tnonEmptyString(data[\"name\"], `${label} name`);\n\t\t\treturn;\n\t\tcase \"tool/call\":\n\t\t\tcoordinatePair(data, label);\n\t\t\tnonEmptyString(data[\"callId\"], `${label} callId`);\n\t\t\tnonEmptyString(data[\"name\"], `${label} name`);\n\t\t\tstringValue(data[\"arguments\"], `${label} arguments`);\n\t\t\treturn;\n\t\tcase \"tool/code-dispatch\":\n\t\tcase \"tool/code-dispatch-start\":\n\t\t\tnonEmptyString(data[\"rootCallId\"], `${label} rootCallId`);\n\t\t\tnonEmptyString(data[\"parentCallId\"], `${label} parentCallId`);\n\t\t\tnonEmptyString(data[\"subCallId\"], `${label} subCallId`);\n\t\t\tnonEmptyString(data[\"name\"], `${label} name`);\n\t\t\tif (event.type === \"tool/code-dispatch\") {\n\t\t\t\tbooleanValue(data[\"isError\"], `${label} isError`);\n\t\t\t\tcontentBlocksValue(data[\"content\"], `${label} content`, version);\n\t\t\t}\n\t\t\treturn;\n\t\tcase \"tool/result\":\n\t\t\tcoordinatePair(data, label);\n\t\t\tmessageValue(data[\"message\"], `${label} message`, version, \"tool\");\n\t\t\tif (data[\"error\"] !== void 0) {\n\t\t\t\tconst error = exactRecord(data[\"error\"], `${label} error`, [\"name\", \"code\"]);\n\t\t\t\tnonEmptyString(error[\"name\"], `${label} error name`);\n\t\t\t\tnonEmptyString(error[\"code\"], `${label} error code`);\n\t\t\t}\n\t\t\treturn;\n\t\tcase \"turn/end\":\n\t\t\tcountValue(data[\"turn\"], `${label} turn`);\n\t\t\tturnEndReasonValue(data[\"reason\"], `${label} reason`);\n\t\t\treturn;\n\t\tcase \"turn/start\":\n\t\t\tcountValue(data[\"turn\"], `${label} turn`);\n\t\t\treturn;\n\t\tcase \"user/message\":\n\t\t\tmessageValue(data, label, version, \"user\");\n\t\t\treturn;\n\t\tcase \"web/deepseek-search-llm-request\":\n\t\t\tnonEmptyString(data[\"endpoint\"], `${label} endpoint`);\n\t\t\tnonEmptyString(data[\"apiVersion\"], `${label} apiVersion`);\n\t\t\tdeepSeekSearchBodyValue(data[\"body\"], `${label} body`);\n\t\t\treturn;\n\t\t/* v8 ignore next -- the frozen disposition rejects unknown types before semantic dispatch. */\n\t\tdefault: throw new SessionFormatError(`released payload validator is missing event ${JSON.stringify(event.type)}`);\n\t}\n}\nfunction exactRecord(value, label, required, optional = []) {\n\tconst record = releasedV0Record(value, label);\n\tassertReleasedV0Keys(record, required, optional, label);\n\treturn record;\n}\nfunction stringValue(value, label) {\n\tif (typeof value !== \"string\") throw new SessionFormatError(`${label} must be a string`);\n}\nfunction nonEmptyString(value, label) {\n\tif (typeof value !== \"string\" || value.length === 0) throw new SessionFormatError(`${label} must be a non-empty string`);\n}\nfunction booleanValue(value, label) {\n\tif (typeof value !== \"boolean\") throw new SessionFormatError(`${label} must be a boolean`);\n}\nfunction safeIntegerValue(value, label) {\n\treturn sessionFormatSafeInteger(value, label);\n}\nfunction countValue(value, label) {\n\treturn sessionFormatCount(value, label);\n}\nfunction positiveIntegerValue(value, label) {\n\tconst result = countValue(value, label);\n\tif (result === 0) throw new SessionFormatError(`${label} must be positive`);\n\treturn result;\n}\nfunction finiteNumberValue(value, label) {\n\tif (typeof value !== \"number\" || !Number.isFinite(value) || Object.is(value, -0)) throw new SessionFormatError(`${label} must be a finite number`);\n\treturn value;\n}\nfunction literalValue(value, allowed, label) {\n\tif (!allowed.some((candidate) => candidate === value)) throw new SessionFormatError(`${label} must be one of ${allowed.map(String).join(\", \")}`);\n}\nfunction nullableValue(value, label, validate) {\n\tif (value !== null) validate(value, label);\n}\nfunction arrayValue(value, label, validate) {\n\tif (!Array.isArray(value)) throw new SessionFormatError(`${label} must be an array`);\n\tconst members = value;\n\tmembers.forEach((member, index) => {\n\t\tvalidate(member, `${label}[${index}]`);\n\t});\n\treturn members;\n}\nfunction coordinatePair(data, label) {\n\tcountValue(data[\"turn\"], `${label} turn`);\n\tcountValue(data[\"step\"], `${label} step`);\n}\nfunction earlierSeq(value, eventSeq, label) {\n\tconst seq = countValue(value, label);\n\tif (seq >= eventSeq) throw new SessionFormatError(`${label} must identify an earlier event`);\n\treturn seq;\n}\nfunction seqArray(value, eventSeq, label, requireNonEmpty) {\n\tconst seen = /* @__PURE__ */ new Set();\n\tconst values = arrayValue(value, label, (member, memberLabel) => {\n\t\tconst seq = earlierSeq(member, eventSeq, memberLabel);\n\t\tif (seen.has(seq)) throw new SessionFormatError(`${label} repeats seq ${seq}`);\n\t\tseen.add(seq);\n\t});\n\tif (requireNonEmpty && values.length === 0) throw new SessionFormatError(`${label} must be non-empty`);\n\treturn values;\n}\nfunction llmFailureValue(value, label) {\n\tconst failure = exactRecord(value, label, [\"message\", \"code\"], [\n\t\t\"status\",\n\t\t\"providerRetryAfterMs\",\n\t\t\"requestId\"\n\t]);\n\tnonEmptyString(failure[\"message\"], `${label} message`);\n\tnonEmptyString(failure[\"code\"], `${label} code`);\n\tif (failure[\"status\"] !== void 0) {\n\t\tconst status = safeIntegerValue(failure[\"status\"], `${label} status`);\n\t\tif (status < 100 || status > 599) throw new SessionFormatError(`${label} status must be 100 through 599`);\n\t}\n\tif (failure[\"providerRetryAfterMs\"] !== void 0 && finiteNumberValue(failure[\"providerRetryAfterMs\"], `${label} providerRetryAfterMs`) <= 0) throw new SessionFormatError(`${label} providerRetryAfterMs must be positive`);\n\tif (failure[\"requestId\"] !== void 0) nonEmptyString(failure[\"requestId\"], `${label} requestId`);\n}\nfunction tokenUsageValue(value, label) {\n\tconst usage = exactRecord(value, label, [\"inputTokens\", \"outputTokens\"], [\n\t\t\"totalTokens\",\n\t\t\"cacheReadTokens\",\n\t\t\"cacheWriteTokens\",\n\t\t\"reasoningTokens\"\n\t]);\n\tfor (const key of Object.keys(usage)) countValue(usage[key], `${label} ${key}`);\n}\nfunction contentBlocksValue(value, label, version) {\n\tarrayValue(value, label, (member, memberLabel) => {\n\t\tcontentBlockValue(member, memberLabel, version);\n\t});\n}\nfunction contentBlockValue(value, label, version) {\n\tconst block = releasedV0Record(value, label);\n\tswitch (block[\"type\"]) {\n\t\tcase \"text\":\n\t\tcase \"reasoning\":\n\t\t\tassertReleasedV0Keys(block, [\"type\", \"text\"], [], label);\n\t\t\tstringValue(block[\"text\"], `${label} text`);\n\t\t\treturn;\n\t\tcase \"image\":\n\t\t\tassertReleasedV0Keys(block, [\"type\", \"attachment\"], [], label);\n\t\t\timageAttachmentValue(block[\"attachment\"], `${label} attachment`);\n\t\t\treturn;\n\t\tcase \"tool-call\":\n\t\t\tassertReleasedV0Keys(block, [\n\t\t\t\t\"type\",\n\t\t\t\t\"id\",\n\t\t\t\t\"name\",\n\t\t\t\t\"arguments\"\n\t\t\t], [], label);\n\t\t\tnonEmptyString(block[\"id\"], `${label} id`);\n\t\t\tnonEmptyString(block[\"name\"], `${label} name`);\n\t\t\tstringValue(block[\"arguments\"], `${label} arguments`);\n\t\t\treturn;\n\t\tcase \"tool-result\":\n\t\t\tassertReleasedV0Keys(block, [\n\t\t\t\t\"type\",\n\t\t\t\t\"toolCallId\",\n\t\t\t\t\"content\"\n\t\t\t], [\"isError\"], label);\n\t\t\tnonEmptyString(block[\"toolCallId\"], `${label} toolCallId`);\n\t\t\tcontentBlocksValue(block[\"content\"], `${label} content`, version);\n\t\t\tif (block[\"isError\"] !== void 0) booleanValue(block[\"isError\"], `${label} isError`);\n\t\t\treturn;\n\t\tdefault:\n\t\t\tnonEmptyString(block[\"type\"], `${label} type`);\n\t\t\treturn;\n\t}\n}\nfunction imageAttachmentValue(value, label) {\n\tconst attachment = exactRecord(value, label, [\n\t\t\"attachmentId\",\n\t\t\"mediaType\",\n\t\t\"bytes\",\n\t\t\"width\",\n\t\t\"height\"\n\t], [\"name\", \"originalDimensions\"]);\n\tnonEmptyString(attachment[\"attachmentId\"], `${label} attachmentId`);\n\tliteralValue(attachment[\"mediaType\"], [\n\t\t\"image/png\",\n\t\t\"image/jpeg\",\n\t\t\"image/webp\",\n\t\t\"image/gif\"\n\t], `${label} mediaType`);\n\tcountValue(attachment[\"bytes\"], `${label} bytes`);\n\tpositiveIntegerValue(attachment[\"width\"], `${label} width`);\n\tpositiveIntegerValue(attachment[\"height\"], `${label} height`);\n\tif (attachment[\"name\"] !== void 0) stringValue(attachment[\"name\"], `${label} name`);\n\tif (attachment[\"originalDimensions\"] !== void 0) {\n\t\tconst dimensions = exactRecord(attachment[\"originalDimensions\"], `${label} originalDimensions`, [\"width\", \"height\"]);\n\t\tpositiveIntegerValue(dimensions[\"width\"], `${label} original width`);\n\t\tpositiveIntegerValue(dimensions[\"height\"], `${label} original height`);\n\t}\n}\nfunction messageValue(value, label, version, expected) {\n\tconst message = exactRecord(value, label, [\n\t\t\"id\",\n\t\t\"role\",\n\t\t\"content\",\n\t\t\"source\"\n\t]);\n\tnonEmptyString(message[\"id\"], `${label} id`);\n\tconst role = expected === \"assistant\" ? \"assistant\" : expected === \"user\" || expected === \"tool\" ? \"user\" : void 0;\n\tif (role === void 0) literalValue(message[\"role\"], [\n\t\t\"system\",\n\t\t\"user\",\n\t\t\"assistant\"\n\t], `${label} role`);\n\telse literalValue(message[\"role\"], [role], `${label} role`);\n\tcontentBlocksValue(message[\"content\"], `${label} content`, version);\n\tconst source = releasedV0Record(message[\"source\"], `${label} source`);\n\tif (version < 2 && expected === \"user\" && source[\"kind\"] === \"goal\" && source[\"change\"] !== void 0) legacyGoalMessageValue(message, source, label);\n\telse messageSourceValue(source, `${label} source`, version, expected);\n\tif (expected === \"tool\") {\n\t\tconst content = message[\"content\"];\n\t\tconst block = Array.isArray(content) && content.length === 1 ? releasedV0Record(content[0], `${label} tool result`) : void 0;\n\t\tconst source = releasedV0Record(message[\"source\"], `${label} source`);\n\t\tif (block?.[\"type\"] !== \"tool-result\" || block[\"toolCallId\"] !== source[\"callId\"]) throw new SessionFormatError(`${label} must contain exactly one tool-result block`);\n\t}\n}\nfunction legacyGoalMessageValue(message, source, label) {\n\tassertReleasedV0Keys(source, [\n\t\t\"kind\",\n\t\t\"goalId\",\n\t\t\"revision\",\n\t\t\"round\",\n\t\t\"change\"\n\t], [], `${label} source`);\n\tnonEmptyString(source[\"goalId\"], `${label} source goalId`);\n\tpositiveIntegerValue(source[\"revision\"], `${label} source revision`);\n\tif (source[\"round\"] !== 0) throw new SessionFormatError(`${label} legacy goal source round must be 0`);\n\tconst change = releasedV0Record(source[\"change\"], `${label} source change`);\n\tgoalChangeValue(change, `${label} source change`);\n\tconst ref = releasedV0Record(change[\"operation\"] === \"clear\" ? change[\"cleared\"] : change[\"goal\"], `${label} source change ref`);\n\tif (source[\"goalId\"] !== ref[\"id\"] || source[\"revision\"] !== ref[\"revision\"]) throw new SessionFormatError(`${label} legacy goal source does not match its change`);\n\tconst payload = change[\"operation\"] === \"clear\" ? {\n\t\tcleared: change[\"cleared\"],\n\t\tclearedAt: change[\"clearedAt\"]\n\t} : {\n\t\tgoal: change[\"goal\"],\n\t\troundsStarted: change[\"roundsStarted\"],\n\t\tcreatedAt: change[\"createdAt\"],\n\t\tupdatedAt: change[\"updatedAt\"]\n\t};\n\tconst expected = [{\n\t\ttype: \"text\",\n\t\ttext: `<goal_state>${JSON.stringify(payload)}</goal_state>`\n\t}];\n\tif (!deepEqualJson(message[\"content\"], expected)) throw new SessionFormatError(`${label} legacy goal content does not match its change`);\n}\nfunction messageSourceValue(value, label, version, expected) {\n\tconst source = releasedV0Record(value, label);\n\tif (expected === \"assistant\" && source[\"kind\"] !== \"model\") throw new SessionFormatError(`${label} must be model source`);\n\tif (expected === \"tool\" && source[\"kind\"] !== \"tool\") throw new SessionFormatError(`${label} must be tool source`);\n\tswitch (source[\"kind\"]) {\n\t\tcase \"user\":\n\t\t\tassertReleasedV0Keys(source, [\"kind\"], [\"rpcId\", \"clientTimeZone\"], label);\n\t\t\tif (source[\"rpcId\"] !== void 0) nonEmptyString(source[\"rpcId\"], `${label} rpcId`);\n\t\t\tif (source[\"clientTimeZone\"] !== void 0) nonEmptyString(source[\"clientTimeZone\"], `${label} clientTimeZone`);\n\t\t\treturn;\n\t\tcase \"plugin\":\n\t\t\tpluginSourceValue(source, label);\n\t\t\treturn;\n\t\tcase \"model\":\n\t\t\tassertReleasedV0Keys(source, [\n\t\t\t\t\"kind\",\n\t\t\t\t\"provider\",\n\t\t\t\t\"model\"\n\t\t\t], [\"replayState\"], label);\n\t\t\tnonEmptyString(source[\"provider\"], `${label} provider`);\n\t\t\tnonEmptyString(source[\"model\"], `${label} model`);\n\t\t\treturn;\n\t\tcase \"tool\":\n\t\t\tassertReleasedV0Keys(source, [\"kind\", \"callId\"], [], label);\n\t\t\tnonEmptyString(source[\"callId\"], `${label} callId`);\n\t\t\treturn;\n\t\tcase \"agent-instructions\":\n\t\t\tassertReleasedV0Keys(source, [\n\t\t\t\t\"kind\",\n\t\t\t\t\"form\",\n\t\t\t\t\"changes\"\n\t\t\t], [\"baseline\", \"baselineIdentity\"], label);\n\t\t\tliteralValue(source[\"form\"], [\"instructions\"], `${label} form`);\n\t\t\tif (source[\"baseline\"] !== void 0) literalValue(source[\"baseline\"], [true], `${label} baseline`);\n\t\t\tif (source[\"baselineIdentity\"] !== void 0) nonEmptyString(source[\"baselineIdentity\"], `${label} baselineIdentity`);\n\t\t\tarrayValue(source[\"changes\"], `${label} changes`, (member, memberLabel) => {\n\t\t\t\tconst change = exactRecord(member, memberLabel, [\n\t\t\t\t\t\"action\",\n\t\t\t\t\t\"scope\",\n\t\t\t\t\t\"path\"\n\t\t\t\t], [\"digest\"]);\n\t\t\t\tliteralValue(change[\"action\"], [\n\t\t\t\t\t\"set\",\n\t\t\t\t\t\"replace\",\n\t\t\t\t\t\"remove\"\n\t\t\t\t], `${memberLabel} action`);\n\t\t\t\tstringValue(change[\"scope\"], `${memberLabel} scope`);\n\t\t\t\tstringValue(change[\"path\"], `${memberLabel} path`);\n\t\t\t\tif (change[\"digest\"] !== void 0) stringValue(change[\"digest\"], `${memberLabel} digest`);\n\t\t\t});\n\t\t\treturn;\n\t\tcase \"session-reference\":\n\t\t\tsessionReferenceSourceValue(source, label, version);\n\t\t\treturn;\n\t\tcase \"team-message\":\n\t\t\tassertReleasedV0Keys(source, [\n\t\t\t\t\"kind\",\n\t\t\t\t\"teamId\",\n\t\t\t\t\"messageId\",\n\t\t\t\t\"senderId\",\n\t\t\t\t\"senderName\"\n\t\t\t], [], label);\n\t\t\tfor (const key of [\n\t\t\t\t\"teamId\",\n\t\t\t\t\"messageId\",\n\t\t\t\t\"senderId\"\n\t\t\t]) nonEmptyString(source[key], `${label} ${key}`);\n\t\t\tstringValue(source[\"senderName\"], `${label} senderName`);\n\t\t\treturn;\n\t\tcase \"goal\":\n\t\t\tassertReleasedV0Keys(source, [\n\t\t\t\t\"kind\",\n\t\t\t\t\"goalId\",\n\t\t\t\t\"revision\",\n\t\t\t\t\"round\"\n\t\t\t], [], label);\n\t\t\tnonEmptyString(source[\"goalId\"], `${label} goalId`);\n\t\t\tpositiveIntegerValue(source[\"revision\"], `${label} revision`);\n\t\t\tpositiveIntegerValue(source[\"round\"], `${label} round`);\n\t\t\treturn;\n\t\tcase \"skill-invocation\":\n\t\t\tassertReleasedV0Keys(source, [\n\t\t\t\t\"kind\",\n\t\t\t\t\"name\",\n\t\t\t\t\"form\"\n\t\t\t], [], label);\n\t\t\tnonEmptyString(source[\"name\"], `${label} name`);\n\t\t\tliteralValue(source[\"form\"], [\"instructions\"], `${label} form`);\n\t\t\treturn;\n\t\tcase \"skill-catalog\":\n\t\t\tassertReleasedV0Keys(source, [\n\t\t\t\t\"kind\",\n\t\t\t\t\"form\",\n\t\t\t\t\"entries\"\n\t\t\t], [\"update\"], label);\n\t\t\tliteralValue(source[\"form\"], [\"catalog\"], `${label} form`);\n\t\t\tif (source[\"update\"] !== void 0) literalValue(source[\"update\"], [true], `${label} update`);\n\t\t\tarrayValue(source[\"entries\"], `${label} entries`, (member, memberLabel) => {\n\t\t\t\tconst entry = exactRecord(member, memberLabel, [\"name\", \"description\"]);\n\t\t\t\tnonEmptyString(entry[\"name\"], `${memberLabel} name`);\n\t\t\t\tstringValue(entry[\"description\"], `${memberLabel} description`);\n\t\t\t});\n\t\t\treturn;\n\t\tcase \"coordinator\":\n\t\tcase \"subagent-report\":\n\t\t\tassertReleasedV0Keys(source, [\n\t\t\t\t\"kind\",\n\t\t\t\t\"form\",\n\t\t\t\t\"senderSessionId\"\n\t\t\t], [], label);\n\t\t\tliteralValue(source[\"form\"], [\"relay\"], `${label} form`);\n\t\t\tnonEmptyString(source[\"senderSessionId\"], `${label} senderSessionId`);\n\t\t\treturn;\n\t\tcase \"subagent-settled\":\n\t\t\tassertReleasedV0Keys(source, [\n\t\t\t\t\"kind\",\n\t\t\t\t\"form\",\n\t\t\t\t\"summary\",\n\t\t\t\t\"senderSessionId\"\n\t\t\t], [], label);\n\t\t\tliteralValue(source[\"form\"], [\"notice\"], `${label} form`);\n\t\t\tstringValue(source[\"summary\"], `${label} summary`);\n\t\t\tnonEmptyString(source[\"senderSessionId\"], `${label} senderSessionId`);\n\t\t\treturn;\n\t\tcase \"webhook\":\n\t\t\tassertReleasedV0Keys(source, [\n\t\t\t\t\"kind\",\n\t\t\t\t\"provider\",\n\t\t\t\t\"source\",\n\t\t\t\t\"deliveryId\",\n\t\t\t\t\"ruleId\",\n\t\t\t\t\"form\",\n\t\t\t\t\"summary\"\n\t\t\t], [], label);\n\t\t\tfor (const key of [\n\t\t\t\t\"provider\",\n\t\t\t\t\"source\",\n\t\t\t\t\"deliveryId\",\n\t\t\t\t\"ruleId\"\n\t\t\t]) nonEmptyString(source[key], `${label} ${key}`);\n\t\t\tliteralValue(source[\"form\"], [\"notice\"], `${label} form`);\n\t\t\tstringValue(source[\"summary\"], `${label} summary`);\n\t\t\treturn;\n\t\tdefault:\n\t\t\tnonEmptyString(source[\"kind\"], `${label} kind`);\n\t\t\treturn;\n\t}\n}\nfunction pluginSourceValue(source, label) {\n\tconst optional = [\n\t\t\"form\",\n\t\t\"sections\",\n\t\t\"summary\"\n\t];\n\tif (source[\"plugin\"] === \"compact\") optional.push(\"compactionId\", \"sourceCommandId\");\n\tassertReleasedV0Keys(source, [\"kind\", \"plugin\"], optional, label);\n\tnonEmptyString(source[\"plugin\"], `${label} plugin`);\n\tif (source[\"plugin\"] === \"compact\") {\n\t\tnonEmptyString(source[\"compactionId\"], `${label} compactionId`);\n\t\tif (source[\"sourceCommandId\"] !== void 0) nonEmptyString(source[\"sourceCommandId\"], `${label} sourceCommandId`);\n\t}\n\tconst form = source[\"form\"];\n\tif (form === void 0) return;\n\tliteralValue(form, [\n\t\t\"instructions\",\n\t\t\"catalog\",\n\t\t\"snapshot\",\n\t\t\"notice\",\n\t\t\"relay\",\n\t\t\"recall\"\n\t], `${label} form`);\n\tif (form === \"snapshot\") arrayValue(source[\"sections\"], `${label} sections`, (member, memberLabel) => {\n\t\tconst section = exactRecord(member, memberLabel, [\"name\", \"text\"]);\n\t\tnonEmptyString(section[\"name\"], `${memberLabel} name`);\n\t\tstringValue(section[\"text\"], `${memberLabel} text`);\n\t});\n\telse if (source[\"sections\"] !== void 0) throw new SessionFormatError(`${label} sections require snapshot form`);\n\tif (form === \"notice\") stringValue(source[\"summary\"], `${label} summary`);\n\telse if (source[\"summary\"] !== void 0) throw new SessionFormatError(`${label} summary requires notice form`);\n}\nfunction sessionReferenceSourceValue(source, label, version) {\n\tassertReleasedV0Keys(source, [\n\t\t\"kind\",\n\t\t\"form\",\n\t\t\"version\",\n\t\t\"references\"\n\t], [], label);\n\tliteralValue(source[\"form\"], [\"recall\"], `${label} form`);\n\tliteralValue(source[\"version\"], [1], `${label} version`);\n\tlet expectedInputIndex = 0;\n\tconst sessionIds = /* @__PURE__ */ new Set();\n\tif (arrayValue(source[\"references\"], `${label} references`, (member, memberLabel) => {\n\t\tconst reference = exactRecord(member, memberLabel, [\n\t\t\t\"sessionId\",\n\t\t\t\"label\",\n\t\t\t\"capturedThroughSeq\",\n\t\t\t\"compacted\",\n\t\t\t\"originalMessages\",\n\t\t\t\"retainedMessages\",\n\t\t\t\"omittedMessages\",\n\t\t\t\"omittedBytes\",\n\t\t\t\"truncated\",\n\t\t\t\"inputIndex\"\n\t\t], version >= 1 ? [\"capturedFormatVersion\"] : []);\n\t\tnonEmptyString(reference[\"sessionId\"], `${memberLabel} sessionId`);\n\t\tstringValue(reference[\"label\"], `${memberLabel} label`);\n\t\tif (reference[\"capturedThroughSeq\"] !== null) countValue(reference[\"capturedThroughSeq\"], `${memberLabel} capturedThroughSeq`);\n\t\tif (reference[\"capturedFormatVersion\"] !== void 0) {\n\t\t\tconst capturedVersion = countValue(reference[\"capturedFormatVersion\"], `${memberLabel} capturedFormatVersion`);\n\t\t\tif (capturedVersion < 1 || capturedVersion > version) throw new SessionFormatError(`${memberLabel} capturedFormatVersion must be between 1 and ${version}`);\n\t\t}\n\t\tbooleanValue(reference[\"compacted\"], `${memberLabel} compacted`);\n\t\tconst original = countValue(reference[\"originalMessages\"], `${memberLabel} originalMessages`);\n\t\tconst retained = countValue(reference[\"retainedMessages\"], `${memberLabel} retainedMessages`);\n\t\tconst omitted = countValue(reference[\"omittedMessages\"], `${memberLabel} omittedMessages`);\n\t\tconst omittedBytes = countValue(reference[\"omittedBytes\"], `${memberLabel} omittedBytes`);\n\t\tconst inputIndex = countValue(reference[\"inputIndex\"], `${memberLabel} inputIndex`);\n\t\tconst truncated = reference[\"truncated\"];\n\t\tbooleanValue(truncated, `${memberLabel} truncated`);\n\t\tif (retained > original || omitted !== original - retained) throw new SessionFormatError(`${memberLabel} message counts are inconsistent`);\n\t\tif (truncated !== (omitted > 0 || omittedBytes > 0)) throw new SessionFormatError(`${memberLabel} truncated disagrees with omitted content`);\n\t\tif (inputIndex !== expectedInputIndex) throw new SessionFormatError(`${label} inputIndex must match reference position`);\n\t\texpectedInputIndex += 1;\n\t\tconst sessionId = reference[\"sessionId\"];\n\t\tif (sessionIds.has(sessionId)) throw new SessionFormatError(`${label} repeats sessionId ${sessionId}`);\n\t\tsessionIds.add(sessionId);\n\t}).length === 0) throw new SessionFormatError(`${label} references must be non-empty`);\n}\nfunction streamChunkValue(value, label) {\n\tconst chunk = releasedV0Record(value, label);\n\tswitch (chunk[\"type\"]) {\n\t\tcase \"block-start\":\n\t\t\tassertReleasedV0Keys(chunk, [\n\t\t\t\t\"type\",\n\t\t\t\t\"index\",\n\t\t\t\t\"blockType\"\n\t\t\t], [], label);\n\t\t\tcountValue(chunk[\"index\"], `${label} index`);\n\t\t\tnonEmptyString(chunk[\"blockType\"], `${label} blockType`);\n\t\t\treturn;\n\t\tcase \"text-delta\":\n\t\tcase \"reasoning-delta\":\n\t\t\tassertReleasedV0Keys(chunk, [\n\t\t\t\t\"type\",\n\t\t\t\t\"index\",\n\t\t\t\t\"text\"\n\t\t\t], [], label);\n\t\t\tcountValue(chunk[\"index\"], `${label} index`);\n\t\t\tstringValue(chunk[\"text\"], `${label} text`);\n\t\t\treturn;\n\t\tcase \"tool-call-delta\":\n\t\t\tassertReleasedV0Keys(chunk, [\n\t\t\t\t\"type\",\n\t\t\t\t\"index\",\n\t\t\t\t\"id\",\n\t\t\t\t\"argumentsDelta\"\n\t\t\t], [\"name\"], label);\n\t\t\tcountValue(chunk[\"index\"], `${label} index`);\n\t\t\tnonEmptyString(chunk[\"id\"], `${label} id`);\n\t\t\tif (chunk[\"name\"] !== void 0) stringValue(chunk[\"name\"], `${label} name`);\n\t\t\tstringValue(chunk[\"argumentsDelta\"], `${label} argumentsDelta`);\n\t\t\treturn;\n\t\tcase \"block-end\":\n\t\t\tassertReleasedV0Keys(chunk, [\n\t\t\t\t\"type\",\n\t\t\t\t\"index\",\n\t\t\t\t\"block\"\n\t\t\t], [], label);\n\t\t\tcountValue(chunk[\"index\"], `${label} index`);\n\t\t\tcontentBlockValue(chunk[\"block\"], `${label} block`, 1);\n\t\t\treturn;\n\t\tcase \"usage\":\n\t\t\tassertReleasedV0Keys(chunk, [\"type\", \"usage\"], [], label);\n\t\t\ttokenUsageValue(chunk[\"usage\"], `${label} usage`);\n\t\t\treturn;\n\t\tcase \"finish\":\n\t\t\tassertReleasedV0Keys(chunk, [\"type\", \"reason\"], [\"replayState\"], label);\n\t\t\tfinishReasonValue(chunk[\"reason\"], `${label} reason`);\n\t\t\tif (chunk[\"replayState\"] !== void 0) replayEnvelopeValue(chunk[\"replayState\"], `${label} replayState`);\n\t\t\treturn;\n\t\tdefault: throw new SessionFormatError(`${label} has unknown stream chunk type ${JSON.stringify(chunk[\"type\"])}`);\n\t}\n}\nfunction finishReasonValue(value, label) {\n\tconst reason = releasedV0Record(value, label);\n\tif (reason[\"kind\"] === \"aborted\" || reason[\"kind\"] === \"error\") {\n\t\tassertReleasedV0Keys(reason, [\"kind\", \"failure\"], [], label);\n\t\tllmFailureValue(reason[\"failure\"], `${label} failure`);\n\t\treturn;\n\t}\n\tif (reason[\"kind\"] === \"stop\" || reason[\"kind\"] === \"tool-calls\" || reason[\"kind\"] === \"max-tokens\") assertReleasedV0Keys(reason, [\"kind\"], [], label);\n\tnonEmptyString(reason[\"kind\"], `${label} kind`);\n}\nfunction replayEnvelopeValue(value, label) {\n\tconst replay = exactRecord(value, label, [\"response\"], [\"blocks\"]);\n\tif (replay[\"blocks\"] !== void 0 && !Array.isArray(replay[\"blocks\"])) throw new SessionFormatError(`${label} blocks must be an array`);\n}\nfunction turnEndReasonValue(value, label) {\n\tconst reason = releasedV0Record(value, label);\n\tswitch (reason[\"kind\"]) {\n\t\tcase \"completed\":\n\t\tcase \"blocked\":\n\t\tcase \"max-tokens\":\n\t\tcase \"interrupted\":\n\t\t\tassertReleasedV0Keys(reason, [\"kind\"], [], label);\n\t\t\treturn;\n\t\tcase \"aborted\": {\n\t\t\tassertReleasedV0Keys(reason, [\"kind\", \"reason\"], [], label);\n\t\t\tconst cause = releasedV0Record(reason[\"reason\"], `${label} abort cause`);\n\t\t\tif (cause[\"kind\"] === \"hook\") {\n\t\t\t\tassertReleasedV0Keys(cause, [\"kind\", \"reason\"], [], `${label} abort cause`);\n\t\t\t\tstringValue(cause[\"reason\"], `${label} abort reason`);\n\t\t\t} else {\n\t\t\t\tassertReleasedV0Keys(cause, [\"kind\"], [], `${label} abort cause`);\n\t\t\t\tliteralValue(cause[\"kind\"], [\n\t\t\t\t\t\"user\",\n\t\t\t\t\t\"parent\",\n\t\t\t\t\t\"disposed\",\n\t\t\t\t\t\"legacy\"\n\t\t\t\t], `${label} abort kind`);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tcase \"error\":\n\t\t\tassertReleasedV0Keys(reason, [\"kind\", \"error\"], [], label);\n\t\t\tllmFailureValue(reason[\"error\"], `${label} error`);\n\t\t\treturn;\n\t\tdefault:\n\t\t\tnonEmptyString(reason[\"kind\"], `${label} kind`);\n\t\t\treturn;\n\t}\n}\nfunction requestHeaderValue(value, label) {\n\tconst header = exactRecord(value, label, [\"config\"], [\n\t\t\"adapterDefaults\",\n\t\t\"system\",\n\t\t\"tools\"\n\t]);\n\tconst config = exactRecord(header[\"config\"], `${label} config`, [\"provider\", \"model\"], [\n\t\t\"reasoningEffort\",\n\t\t\"temperature\",\n\t\t\"maxTokens\",\n\t\t\"stop\"\n\t]);\n\tnonEmptyString(config[\"provider\"], `${label} provider`);\n\tnonEmptyString(config[\"model\"], `${label} model`);\n\tif (config[\"reasoningEffort\"] !== void 0) nonEmptyString(config[\"reasoningEffort\"], `${label} reasoningEffort`);\n\tif (config[\"temperature\"] !== void 0) finiteNumberValue(config[\"temperature\"], `${label} temperature`);\n\tif (config[\"maxTokens\"] !== void 0) positiveIntegerValue(config[\"maxTokens\"], `${label} maxTokens`);\n\tif (config[\"stop\"] !== void 0) arrayValue(config[\"stop\"], `${label} stop`, stringValue);\n\tif (header[\"adapterDefaults\"] !== void 0) {\n\t\tconst defaults = exactRecord(header[\"adapterDefaults\"], `${label} adapterDefaults`, [], [\"reasoningEffort\", \"maxTokens\"]);\n\t\tfor (const [key, marker] of Object.entries(defaults)) {\n\t\t\tliteralValue(marker, [true], `${label} adapterDefaults ${key}`);\n\t\t\tif (!Object.hasOwn(config, key)) throw new SessionFormatError(`${label} adapter default ${key} lacks config value`);\n\t\t}\n\t}\n\tif (header[\"system\"] !== void 0) stringValue(header[\"system\"], `${label} system`);\n\tif (header[\"tools\"] !== void 0) arrayValue(header[\"tools\"], `${label} tools`, toolSchemaValue);\n}\nfunction toolSchemaValue(value, label) {\n\tconst schema = exactRecord(value, label, [\n\t\t\"name\",\n\t\t\"description\",\n\t\t\"parameters\"\n\t]);\n\tnonEmptyString(schema[\"name\"], `${label} name`);\n\tstringValue(schema[\"description\"], `${label} description`);\n\treleasedV0Record(schema[\"parameters\"], `${label} parameters`);\n}\nfunction shadowedValue(data, eventSeq, label) {\n\tconst range = exactRecord(data[\"shadowedRange\"], `${label} shadowedRange`, [\"start\", \"end\"]);\n\tconst start = earlierSeq(range[\"start\"], eventSeq, `${label} shadowedRange start`);\n\tconst end = earlierSeq(range[\"end\"], eventSeq, `${label} shadowedRange end`);\n\tconst seqs = seqArray(data[\"shadowedSeqs\"], eventSeq, `${label} shadowedSeqs`, true);\n\tif (seqs[0] !== start || seqs.at(-1) !== end) throw new SessionFormatError(`${label} shadowedRange must match shadowedSeqs endpoints`);\n\tcountValue(data[\"shadowedTokenCount\"], `${label} shadowedTokenCount`);\n}\nfunction goalChangeValue(data, label) {\n\tliteralValue(data[\"kind\"], [\"goal/change\"], `${label} kind`);\n\tliteralValue(data[\"version\"], [1], `${label} version`);\n\tif (data[\"operation\"] === \"clear\") {\n\t\tassertReleasedV0Keys(data, [\n\t\t\t\"kind\",\n\t\t\t\"version\",\n\t\t\t\"operation\",\n\t\t\t\"cleared\",\n\t\t\t\"clearedAt\"\n\t\t], [], `${label} data`);\n\t\tgoalRefValue(data[\"cleared\"], `${label} cleared`);\n\t\tcountValue(data[\"clearedAt\"], `${label} clearedAt`);\n\t\treturn;\n\t}\n\tassertReleasedV0Keys(data, [\n\t\t\"kind\",\n\t\t\"version\",\n\t\t\"operation\",\n\t\t\"goal\",\n\t\t\"roundsStarted\",\n\t\t\"createdAt\",\n\t\t\"updatedAt\"\n\t], [], `${label} data`);\n\tliteralValue(data[\"operation\"], [\n\t\t\"create\",\n\t\t\"edit\",\n\t\t\"pause\",\n\t\t\"resume\",\n\t\t\"complete\",\n\t\t\"block\"\n\t], `${label} operation`);\n\tgoalSnapshotValue(data[\"goal\"], `${label} goal`);\n\tcountValue(data[\"roundsStarted\"], `${label} roundsStarted`);\n\tcountValue(data[\"createdAt\"], `${label} createdAt`);\n\tcountValue(data[\"updatedAt\"], `${label} updatedAt`);\n}\nfunction goalRefValue(value, label) {\n\tconst ref = exactRecord(value, label, [\"id\", \"revision\"]);\n\tnonEmptyString(ref[\"id\"], `${label} id`);\n\tpositiveIntegerValue(ref[\"revision\"], `${label} revision`);\n}\nfunction goalSnapshotValue(value, label) {\n\tconst goal = exactRecord(value, label, [\n\t\t\"id\",\n\t\t\"revision\",\n\t\t\"objective\",\n\t\t\"phase\",\n\t\t\"maxGoalRounds\"\n\t], [\"blockedReason\"]);\n\tnonEmptyString(goal[\"id\"], `${label} id`);\n\tpositiveIntegerValue(goal[\"revision\"], `${label} revision`);\n\tnonEmptyString(goal[\"objective\"], `${label} objective`);\n\tliteralValue(goal[\"phase\"], [\n\t\t\"active\",\n\t\t\"paused\",\n\t\t\"blocked\",\n\t\t\"complete\"\n\t], `${label} phase`);\n\tpositiveIntegerValue(goal[\"maxGoalRounds\"], `${label} maxGoalRounds`);\n\tif (goal[\"phase\"] === \"blocked\") {\n\t\tconst reason = exactRecord(goal[\"blockedReason\"], `${label} blockedReason`, [\"code\", \"message\"]);\n\t\tnonEmptyString(reason[\"code\"], `${label} blocked code`);\n\t\tnonEmptyString(reason[\"message\"], `${label} blocked message`);\n\t} else if (goal[\"blockedReason\"] !== void 0) throw new SessionFormatError(`${label} blockedReason requires blocked phase`);\n}\nfunction scheduleChangeValue(data, label) {\n\tliteralValue(data[\"version\"], [1], `${label} version`);\n\tif (data[\"operation\"] === \"create\") {\n\t\tassertReleasedV0Keys(data, [\n\t\t\t\"version\",\n\t\t\t\"operation\",\n\t\t\t\"schedule\"\n\t\t], [], `${label} data`);\n\t\tscheduleRecordValue(data[\"schedule\"], `${label} schedule`);\n\t\treturn;\n\t}\n\tassertReleasedV0Keys(data, [\n\t\t\"version\",\n\t\t\"operation\",\n\t\t\"id\"\n\t], data[\"operation\"] === \"dispatch\" ? [\"acceptedAt\"] : [], `${label} data`);\n\tliteralValue(data[\"operation\"], [\"delete\", \"dispatch\"], `${label} operation`);\n\tscheduleIdValue(data[\"id\"], `${label} id`);\n\tif (data[\"acceptedAt\"] !== void 0) instantValue(data[\"acceptedAt\"], `${label} acceptedAt`);\n}\nfunction scheduleRecordValue(value, label) {\n\tconst record = releasedV0Record(value, label);\n\tif (record[\"kind\"] === \"after\") {\n\t\tassertReleasedV0Keys(record, [\n\t\t\t\"id\",\n\t\t\t\"kind\",\n\t\t\t\"prompt\",\n\t\t\t\"afterSeconds\",\n\t\t\t\"scheduledAt\"\n\t\t], [], label);\n\t\tpositiveIntegerValue(record[\"afterSeconds\"], `${label} afterSeconds`);\n\t} else if (record[\"kind\"] === \"at\") assertReleasedV0Keys(record, [\n\t\t\"id\",\n\t\t\"kind\",\n\t\t\"prompt\",\n\t\t\"scheduledAt\"\n\t], [], label);\n\telse if (record[\"kind\"] === \"every\") {\n\t\tassertReleasedV0Keys(record, [\n\t\t\t\"id\",\n\t\t\t\"kind\",\n\t\t\t\"prompt\",\n\t\t\t\"everySeconds\",\n\t\t\t\"scheduledAt\"\n\t\t], [], label);\n\t\tif (positiveIntegerValue(record[\"everySeconds\"], `${label} everySeconds`) < 300) throw new SessionFormatError(`${label} everySeconds must be at least 300`);\n\t} else throw new SessionFormatError(`${label} has unknown schedule kind`);\n\tscheduleIdValue(record[\"id\"], `${label} id`);\n\tnonEmptyString(record[\"prompt\"], `${label} prompt`);\n\tinstantValue(record[\"scheduledAt\"], `${label} scheduledAt`);\n}\nfunction scheduleIdValue(value, label) {\n\tnonEmptyString(value, label);\n\tif (value.trim() !== value) throw new SessionFormatError(`${label} must not have surrounding whitespace`);\n}\nfunction instantValue(value, label) {\n\tif (typeof value !== \"string\" || !/^(?!0000)\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}Z$/u.test(value) || !Number.isFinite(Date.parse(value)) || new Date(Date.parse(value)).toISOString() !== value) throw new SessionFormatError(`${label} must be a canonical UTC instant`);\n}\nfunction titleSourceValue(value, label) {\n\tconst source = releasedV0Record(value, label);\n\tif (source[\"kind\"] === \"provider\") {\n\t\tassertReleasedV0Keys(source, [\"kind\", \"provider\"], [\"model\"], label);\n\t\tnonEmptyString(source[\"provider\"], `${label} provider`);\n\t\tif (source[\"model\"] !== void 0) modelRouteValue(source[\"model\"], `${label} model`);\n\t\treturn;\n\t}\n\tassertReleasedV0Keys(source, [\"kind\"], [], label);\n\tliteralValue(source[\"kind\"], [\"fallback\", \"user\"], `${label} kind`);\n}\nfunction modelRouteValue(value, label) {\n\tconst route = exactRecord(value, label, [\"provider\", \"model\"]);\n\tnonEmptyString(route[\"provider\"], `${label} provider`);\n\tnonEmptyString(route[\"model\"], `${label} model`);\n}\nfunction subagentDescriptorValue(data, label) {\n\tliteralValue(data[\"version\"], [3], `${label} version`);\n\tnonEmptyString(data[\"provider\"], `${label} provider`);\n\tif (data[\"mode\"] === \"one-shot\") {\n\t\tassertReleasedV0Keys(data, [\n\t\t\t\"mode\",\n\t\t\t\"version\",\n\t\t\t\"provider\"\n\t\t], [\"label\"], `${label} data`);\n\t\tif (data[\"label\"] !== void 0) stringValue(data[\"label\"], `${label} label`);\n\t\treturn;\n\t}\n\tliteralValue(data[\"mode\"], [\"continuable\"], `${label} mode`);\n\tnonEmptyString(data[\"label\"], `${label} label`);\n\tfor (const key of [\n\t\t\"agentProvider\",\n\t\t\"agentModel\",\n\t\t\"agentReasoningEffort\",\n\t\t\"persona\"\n\t]) if (data[key] !== void 0) nonEmptyString(data[key], `${label} ${key}`);\n\tif (data[\"agentProvider\"] === void 0 !== (data[\"agentModel\"] === void 0)) throw new SessionFormatError(`${label} agentProvider and agentModel must be paired`);\n\tif (data[\"toolFilter\"] !== void 0) {\n\t\tconst filter = exactRecord(data[\"toolFilter\"], `${label} toolFilter`, [], [\"allow\", \"deny\"]);\n\t\tif (filter[\"allow\"] === void 0 && filter[\"deny\"] === void 0) throw new SessionFormatError(`${label} toolFilter requires allow or deny`);\n\t\tif (filter[\"allow\"] !== void 0) arrayValue(filter[\"allow\"], `${label} allow`, nonEmptyString);\n\t\tif (filter[\"deny\"] !== void 0) arrayValue(filter[\"deny\"], `${label} deny`, nonEmptyString);\n\t}\n}\nfunction allowedModelsValue(value, label) {\n\tconst seen = /* @__PURE__ */ new Set();\n\tif (arrayValue(value, label, (member, memberLabel) => {\n\t\tconst route = exactRecord(member, memberLabel, [\"provider\", \"model\"]);\n\t\tnonEmptyString(route[\"provider\"], `${memberLabel} provider`);\n\t\tnonEmptyString(route[\"model\"], `${memberLabel} model`);\n\t\tconst key = `${route[\"provider\"]}\\0${route[\"model\"]}`;\n\t\tif (seen.has(key)) throw new SessionFormatError(`${label} repeats route ${key}`);\n\t\tseen.add(key);\n\t}).length === 0) throw new SessionFormatError(`${label} must be non-empty`);\n}\nfunction teamSelector(data, label) {\n\tliteralValue(data[\"version\"], [1], `${label} version`);\n\tnonEmptyString(data[\"teamId\"], `${label} teamId`);\n}\nfunction teamMemberValue(value, label) {\n\tconst member = exactRecord(value, label, [\n\t\t\"id\",\n\t\t\"name\",\n\t\t\"description\",\n\t\t\"provider\",\n\t\t\"context\",\n\t\t\"phase\"\n\t], [\"error\"]);\n\tnonEmptyString(member[\"id\"], `${label} id`);\n\tstringValue(member[\"name\"], `${label} name`);\n\tstringValue(member[\"description\"], `${label} description`);\n\tstringValue(member[\"provider\"], `${label} provider`);\n\tliteralValue(member[\"context\"], [\"fresh\", \"fork\"], `${label} context`);\n\tliteralValue(member[\"phase\"], [\n\t\t\"provisioning\",\n\t\t\"active\",\n\t\t\"failed\"\n\t], `${label} phase`);\n\tif (member[\"error\"] !== void 0) stringValue(member[\"error\"], `${label} error`);\n}\nfunction teamTaskValue(value, label) {\n\tconst task = exactRecord(value, label, [\n\t\t\"id\",\n\t\t\"revision\",\n\t\t\"subject\",\n\t\t\"description\",\n\t\t\"status\",\n\t\t\"blockedBy\",\n\t\t\"writeScopes\"\n\t], [\"ownerId\"]);\n\tnonEmptyString(task[\"id\"], `${label} id`);\n\tpositiveIntegerValue(task[\"revision\"], `${label} revision`);\n\tstringValue(task[\"subject\"], `${label} subject`);\n\tstringValue(task[\"description\"], `${label} description`);\n\tliteralValue(task[\"status\"], [\n\t\t\"pending\",\n\t\t\"in_progress\",\n\t\t\"completed\",\n\t\t\"deleted\"\n\t], `${label} status`);\n\tif (task[\"ownerId\"] !== void 0) nonEmptyString(task[\"ownerId\"], `${label} ownerId`);\n\tarrayValue(task[\"blockedBy\"], `${label} blockedBy`, nonEmptyString);\n\tarrayValue(task[\"writeScopes\"], `${label} writeScopes`, stringValue);\n}\nfunction teamMessageValue(value, label, version) {\n\tconst message = exactRecord(value, label, [\n\t\t\"id\",\n\t\t\"senderId\",\n\t\t\"senderName\",\n\t\t\"targetId\",\n\t\t\"delivery\",\n\t\t\"content\"\n\t]);\n\tfor (const key of [\n\t\t\"id\",\n\t\t\"senderId\",\n\t\t\"targetId\"\n\t]) nonEmptyString(message[key], `${label} ${key}`);\n\tstringValue(message[\"senderName\"], `${label} senderName`);\n\tliteralValue(message[\"delivery\"], [\"quiet\", \"wakeup\"], `${label} delivery`);\n\tcontentBlocksValue(message[\"content\"], `${label} content`, version);\n}\nfunction workflowIdentity(data, label) {\n\tnonEmptyString(data[\"runId\"], `${label} runId`);\n\tpositiveIntegerValue(data[\"seq\"], `${label} seq`);\n}\nfunction deepSeekSearchBodyValue(value, label) {\n\tconst body = exactRecord(value, label, [\n\t\t\"model\",\n\t\t\"max_tokens\",\n\t\t\"messages\",\n\t\t\"tools\"\n\t]);\n\tnonEmptyString(body[\"model\"], `${label} model`);\n\tpositiveIntegerValue(body[\"max_tokens\"], `${label} max_tokens`);\n\tif (arrayValue(body[\"messages\"], `${label} messages`, (member, memberLabel) => {\n\t\tconst message = exactRecord(member, memberLabel, [\"role\", \"content\"]);\n\t\tliteralValue(message[\"role\"], [\"user\"], `${memberLabel} role`);\n\t\tif (arrayValue(message[\"content\"], `${memberLabel} content`, (block, blockLabel) => {\n\t\t\tconst text = exactRecord(block, blockLabel, [\"type\", \"text\"]);\n\t\t\tliteralValue(text[\"type\"], [\"text\"], `${blockLabel} type`);\n\t\t\tstringValue(text[\"text\"], `${blockLabel} text`);\n\t\t}).length !== 1) throw new SessionFormatError(`${memberLabel} content must contain one text block`);\n\t}).length !== 1) throw new SessionFormatError(`${label} messages must contain one user message`);\n\tif (arrayValue(body[\"tools\"], `${label} tools`, (member, memberLabel) => {\n\t\tconst tool = exactRecord(member, memberLabel, [\n\t\t\t\"type\",\n\t\t\t\"name\",\n\t\t\t\"max_uses\"\n\t\t]);\n\t\tliteralValue(tool[\"type\"], [\"web_search_20250305\"], `${memberLabel} type`);\n\t\tliteralValue(tool[\"name\"], [\"web_search\"], `${memberLabel} name`);\n\t\tpositiveIntegerValue(tool[\"max_uses\"], `${memberLabel} max_uses`);\n\t}).length !== 1) throw new SessionFormatError(`${label} tools must contain one web search tool`);\n}\n//#endregion\n//#region lib/types/validation.js\nconst HEADER_REQUIRED = [\n\t\"version\",\n\t\"id\",\n\t\"createdAt\",\n\t\"isSeeded\",\n\t\"delegationDepth\"\n];\nconst HEADER_OPTIONAL = [\n\t\"cwd\",\n\t\"parentSession\",\n\t\"origin\",\n\t\"agentPreset\"\n];\nconst EVENT_REQUIRED = [\n\t\"type\",\n\t\"seq\",\n\t\"time\",\n\t\"data\"\n];\nconst SURFACE_EVENT_TYPES = new Set([\n\t\"user/message\",\n\t\"assistant/message\",\n\t\"tool/result\"\n]);\nconst SURFACE_OPTIONAL = [\n\t\"ignorable\",\n\t\"sourceEventSeqs\",\n\t\"surfaceOp\"\n];\nconst LOG_OPTIONAL = [\"ignorable\"];\nconst LEGACY_SOURCE_TYPES = new Set([\n\t\"steering/message\",\n\t\"request/header-delta\",\n\t\"mode/set\",\n\t\"compact/start\",\n\t\"compact/summary\",\n\t\"compact/end\",\n\t\"compact/prune\"\n]);\n/**\n* Validate the logical header shared by released v0 and v1.\n* @param header - detached logical header.\n* @param version - exact expected generation.\n*/\nfunction assertReleasedSessionFormatHeader(header, version) {\n\tconst record = releasedV0Record(header, `format v${version} header`);\n\tassertReleasedV0Keys(record, HEADER_REQUIRED, HEADER_OPTIONAL, `format v${version} header`);\n\tif (record[\"version\"] !== version) throw new SessionFormatError(`expected format v${version} header`);\n\tif (typeof record[\"id\"] !== \"string\") throw new SessionFormatError(`format v${version} header id must be a string`);\n\tsessionFormatCount(record[\"createdAt\"], `format v${version} header createdAt`);\n\tif (typeof record[\"isSeeded\"] !== \"boolean\") throw new SessionFormatError(`format v${version} header isSeeded must be a boolean`);\n\tsessionFormatCount(record[\"delegationDepth\"], `format v${version} header delegationDepth`);\n\tfor (const key of [\n\t\t\"cwd\",\n\t\t\"parentSession\",\n\t\t\"agentPreset\"\n\t]) if (record[key] !== void 0 && typeof record[key] !== \"string\") throw new SessionFormatError(`format v${version} header ${key} must be a string`);\n\tif (typeof record[\"cwd\"] === \"string\" && !isAbsolute(record[\"cwd\"])) throw new SessionFormatError(`format v${version} header cwd must be absolute`);\n\tif (record[\"origin\"] !== void 0 && record[\"origin\"] !== \"subagent\") throw new SessionFormatError(`format v${version} header origin must be \"subagent\"`);\n}\n/**\n* Validate one released-v1 logical header.\n* @param header - detached logical header.\n*/\nfunction assertReleasedV1Header(header) {\n\tassertReleasedSessionFormatHeader(header, 1);\n}\n/**\n* Restore v1 against the installed build's ordinary event vocabulary without freezing payload additions.\n* @param artifact - vocabulary-neutral released-v1 physical decode.\n* @param knownEventTypes - event types understood by the installed current Session package.\n* @returns the same validated detached artifact.\n*/\nfunction restoreReleasedV1Artifact(artifact, knownEventTypes) {\n\tassertReleasedV1Header(artifact.header);\n\tassertReleasedArtifactCoordinates(artifact, false, knownEventTypes);\n\treturn artifact;\n}\n/**\n* Validate released-v0/v1 artifact coordinates under an explicit vocabulary policy.\n* @param artifact - logical artifact to validate.\n* @param allowLegacySteering - whether to accept the retired steering event name.\n* @param knownEventTypes - installed event vocabulary, when vocabulary-aware.\n* @param vocabularyNeutral - whether unknown event types remain opaque.\n* @param frozenEnvelope - whether event envelopes must already be frozen.\n*/\nfunction assertReleasedArtifactCoordinates(artifact, allowLegacySteering, knownEventTypes, vocabularyNeutral = false, frozenEnvelope = false) {\n\tconst inheritedEventCount = sessionFormatCount(artifact.inheritedEventCount, \"Session inheritedEventCount\");\n\tif (inheritedEventCount > artifact.events.length) throw new SessionFormatError(\"Session inheritedEventCount exceeds its event count\");\n\tif (!artifact.header.isSeeded && inheritedEventCount !== 0) throw new SessionFormatError(\"unseeded Session inheritedEventCount must be 0\");\n\tfor (let index = 0; index < artifact.events.length; index += 1) {\n\t\tconst event = artifact.events[index];\n\t\tconst record = releasedV0Record(event, `Session event ${index}`);\n\t\tconst type = record[\"type\"];\n\t\tif (typeof type !== \"string\") throw new SessionFormatError(`Session event ${index} type must be a string`);\n\t\tconst disposition = RELEASED_V0_EVENT_DISPOSITIONS[type];\n\t\tconst legacy = allowLegacySteering && LEGACY_SOURCE_TYPES.has(type);\n\t\tconst currentKnown = knownEventTypes?.has(type) === true;\n\t\tconst ignorableCurrent = !allowLegacySteering && !currentKnown && record[\"ignorable\"] === true;\n\t\tif (!currentKnown && !legacy && !ignorableCurrent && !vocabularyNeutral) {\n\t\t\tif (allowLegacySteering) throw new SessionFormatUnsupportedMigrationError(`format v0 contains unknown historical event type ${JSON.stringify(type)} at seq ${index}; migration refuses unknown historical events even when ignorable`);\n\t\t\tthrow new SessionFormatUnsupportedMigrationError(`format v1 contains unknown required event type ${JSON.stringify(type)} at seq ${index}`);\n\t\t}\n\t\tconst surface = disposition !== void 0 ? SURFACE_EVENT_TYPES.has(type) : type === \"steering/message\";\n\t\tassertReleasedV0Keys(record, EVENT_REQUIRED, frozenEnvelope ? surface ? SURFACE_OPTIONAL : LOG_OPTIONAL : SURFACE_OPTIONAL, `Session event ${index}`);\n\t\tif (record[\"seq\"] !== index) throw new SessionFormatError(`Session event ${index} has non-dense seq ${JSON.stringify(record[\"seq\"])}`);\n\t\tsessionFormatSafeInteger(record[\"time\"], `Session event ${index} time`);\n\t\tif (record[\"ignorable\"] !== void 0 && record[\"ignorable\"] !== true) throw new SessionFormatError(`Session event ${index} ignorable must be true when present`);\n\t\tif (frozenEnvelope && surface) assertReleasedSurfaceMetadata(record, index, type, \"allow-empty-assistant\");\n\t}\n}\n/**\n* Validate shared-layout surface references for one released generation.\n* @param record - exact event envelope.\n* @param seq - event position used for earlier-reference checks.\n* @param type - surface event type used in diagnostics.\n* @param assistantSources - whether this generation admits empty Assistant chunk references.\n*/\nfunction assertReleasedSurfaceMetadata(record, seq, type, assistantSources) {\n\tconst sources = record[\"sourceEventSeqs\"];\n\tif (type === \"assistant/message\" && sources !== void 0 && assistantSources === \"forbid-assistant\") throw new SessionFormatError(`assistant/message ${seq} retains obsolete chunk references`);\n\tif (sources !== void 0) {\n\t\tif (!Array.isArray(sources)) throw new SessionFormatError(`${type} ${seq} sourceEventSeqs must be an array`);\n\t\tconst seen = /* @__PURE__ */ new Set();\n\t\tfor (const source of sources) {\n\t\t\tconst current = sessionFormatCount(source, `${type} ${seq} sourceEventSeqs member`);\n\t\t\tif (current >= seq || seen.has(current)) throw new SessionFormatError(`${type} ${seq} sourceEventSeqs must be unique earlier seqs`);\n\t\t\tseen.add(current);\n\t\t}\n\t\tif (sources.length === 0 && type !== \"assistant/message\") throw new SessionFormatError(`${type} ${seq} sourceEventSeqs must be non-empty`);\n\t}\n\tconst operation = record[\"surfaceOp\"];\n\tif (operation === void 0 || operation === \"append\") return;\n\tconst replacement = releasedV0Record(operation, `${type} ${seq} surfaceOp`);\n\tassertReleasedV0Keys(replacement, [\n\t\t\"op\",\n\t\t\"start\",\n\t\t\"end\"\n\t], [], `${type} ${seq} surfaceOp`);\n\tif (replacement[\"op\"] !== \"replace\") throw new SessionFormatError(`${type} ${seq} surfaceOp must replace`);\n\tconst start = sessionFormatCount(replacement[\"start\"], `${type} ${seq} surface start`);\n\tconst end = sessionFormatCount(replacement[\"end\"], `${type} ${seq} surface end`);\n\tif (start >= seq || end >= seq) throw new SessionFormatError(`${type} ${seq} has an invalid surface replacement`);\n}\n/**\n* Validate one exact known payload after legacy normalization.\n* @param event - known event to validate.\n* @param version - payload generation controlling versioned members.\n*/\nfunction assertReleasedEventPayload(event, version) {\n\tconst disposition = RELEASED_V0_EVENT_DISPOSITIONS[event.type];\n\t/* v8 ignore next -- artifact coordinate validation admits only the frozen inventory before payload validation. */\n\tif (disposition === void 0) throw new SessionFormatUnsupportedMigrationError(`format v0 contains unknown historical event type ${JSON.stringify(event.type)} at seq ${event.seq}; migration refuses unknown historical events even when ignorable`);\n\tconst data = releasedV0Record(event.data, `${event.type} ${event.seq} data`);\n\tif (event.type === \"subagent/descriptor\" && data[\"version\"] !== 3) {\n\t\tconst descriptorVersion = sessionFormatCount(data[\"version\"], `${event.type} ${event.seq} version`);\n\t\tif (version === 0) throw new SessionFormatUnsupportedMigrationError(`${event.type} ${event.seq} uses unsupported descriptor version ${descriptorVersion}`);\n\t\treturn;\n\t}\n\tconst versionOptional = version === 1 && event.type === \"session-log-deepseek/delivery-accepted\" ? [...disposition.optional, \"sessionFormatVersion\"] : disposition.optional;\n\tassertReleasedV0Keys(data, disposition.required, versionOptional, `${event.type} ${event.seq} data`);\n\tfor (const key of disposition.opaque) if (Object.hasOwn(data, key) && !isJsonValue(data[key])) throw new SessionFormatError(`${event.type} ${event.seq} opaque ${key} is not lossless JSON`);\n\tassertReleasedPayloadSemantics(event, version);\n}\n//#endregion\n//#region lib/types/codec.js\nconst PHYSICAL_HEADER_REQUIRED = [\n\t\"type\",\n\t\"version\",\n\t\"id\",\n\t\"createdAt\",\n\t\"delegationDepth\"\n];\nconst PHYSICAL_HEADER_OPTIONAL = [\n\t\"cwd\",\n\t\"parentSession\",\n\t\"seedLength\",\n\t\"origin\",\n\t\"agentPreset\"\n];\nconst PACKED_TAGS = new Set([\n\t\"text-chunks\",\n\t\"reasoning-chunks\",\n\t\"tool-call-chunks\"\n]);\n/**\n* Test whether a compact migration item is a released packed Assistant row.\n* @param run - compact migration item to classify.\n* @returns whether the item carries the released Assistant chunk representation.\n*/\nfunction isReleasedAssistantChunkRun(run) {\n\treturn run.runType === \"released-assistant-chunks\";\n}\n/** Frozen physical JSON codec for the released v0 layout. */\nconst releasedV0SessionFormatCodec = createReleasedCodec(0);\n/** Frozen physical JSON codec for the shared-layout released v1 format. */\nconst releasedV1SessionFormatCodec = createReleasedCodec(1);\nfunction createReleasedCodec(version) {\n\treturn Object.freeze({\n\t\tversion,\n\t\tdecodeHeader: (value) => decodeHeader(value, version),\n\t\tcreateDecoder(headerValue, recovery) {\n\t\t\tconst physical = decodePhysicalHeader(headerValue, version);\n\t\t\tconst scanner = scanRows(recovery === \"recoverable\");\n\t\t\treturn {\n\t\t\t\theader: physical.header,\n\t\t\t\theaderInheritedEventCount: physical.inheritedEventCount,\n\t\t\t\tdecodeRow: (rowValue, context) => {\n\t\t\t\t\tscanner.decodeRow(rowValue, context);\n\t\t\t\t},\n\t\t\t\tfinish(_context) {\n\t\t\t\t\tscanner.finish(physical.inheritedEventCount);\n\t\t\t\t\treturn physical.inheritedEventCount;\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\nfunction scanRows(recoverable) {\n\tlet rowIndex = 0;\n\tlet eventCount = 0;\n\tlet issue;\n\treturn {\n\t\tdecodeRow(rowValue, context) {\n\t\t\tconst currentRow = rowIndex;\n\t\t\trowIndex += 1;\n\t\t\tlet packed = false;\n\t\t\tlet decoded;\n\t\t\ttry {\n\t\t\t\tconst record = releasedV0Record(rowValue, `released Session row ${currentRow}`);\n\t\t\t\tconst type = record[\"type\"];\n\t\t\t\tif (typeof type === \"string\" && PACKED_TAGS.has(type)) {\n\t\t\t\t\tpacked = true;\n\t\t\t\t\tdecoded = decodePackedRun(record, type, currentRow);\n\t\t\t\t} else decoded = decodeEvent(record, currentRow);\n\t\t\t} catch (error) {\n\t\t\t\tconst current = error instanceof SessionFormatError ? error : new SessionFormatError(`released Session row ${currentRow} is malformed`, { cause: error });\n\t\t\t\tif (!recoverable) throw current;\n\t\t\t\tissue ??= current;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (issue !== void 0) {\n\t\t\t\tif (!packed && decoded.type === \"turn/end\") throw issue;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst seq = packed ? decoded.firstSeq : decoded.seq;\n\t\t\tif (seq !== eventCount) {\n\t\t\t\tconst gap = new SessionFormatError(`released Session row ${currentRow} has seq gap (expected ${eventCount}, got ${seq})`);\n\t\t\t\tif (!recoverable) throw gap;\n\t\t\t\tissue = gap;\n\t\t\t\tif (!packed && decoded.type === \"turn/end\") throw gap;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (packed) {\n\t\t\t\tconst run = decoded;\n\t\t\t\teventCount += run.eventCount;\n\t\t\t\tcontext.emitRun(run);\n\t\t\t} else {\n\t\t\t\teventCount += 1;\n\t\t\t\tcontext.emitEvent(decoded);\n\t\t\t}\n\t\t},\n\t\tfinish(inheritedEventCount) {\n\t\t\tif (inheritedEventCount > eventCount) throw new SessionFormatError(\"Session inheritedEventCount exceeds its event count\");\n\t\t}\n\t};\n}\nfunction decodeHeader(value, version) {\n\treturn decodePhysicalHeader(value, version).header;\n}\nfunction decodePhysicalHeader(value, version) {\n\tconst record = releasedV0Record(snapshotSessionFormatJson(value, `released v${version} physical header`), `released v${version} physical header`);\n\tassertReleasedV0Keys(record, PHYSICAL_HEADER_REQUIRED, PHYSICAL_HEADER_OPTIONAL, `released v${version} physical header`);\n\tif (record[\"type\"] !== \"session\" || record[\"version\"] !== version) throw new SessionFormatError(`expected released v${version} physical Session header`);\n\tif (typeof record[\"id\"] !== \"string\") throw new SessionFormatError(`released v${version} header id must be a string`);\n\tconst createdAt = sessionFormatCount(record[\"createdAt\"], `released v${version} header createdAt`);\n\tconst delegationDepth = sessionFormatCount(record[\"delegationDepth\"], `released v${version} header delegationDepth`);\n\tconst seedLength = record[\"seedLength\"] === void 0 ? 0 : sessionFormatCount(record[\"seedLength\"], `released v${version} header seedLength`);\n\tfor (const key of [\n\t\t\"cwd\",\n\t\t\"parentSession\",\n\t\t\"agentPreset\"\n\t]) if (record[key] !== void 0 && typeof record[key] !== \"string\") throw new SessionFormatError(`released v${version} header ${key} must be a string`);\n\tif (record[\"origin\"] !== void 0 && record[\"origin\"] !== \"subagent\") throw new SessionFormatError(`released v${version} header origin must be \"subagent\"`);\n\tconst header = {\n\t\tversion,\n\t\tid: record[\"id\"],\n\t\tcreatedAt,\n\t\t...record[\"cwd\"] === void 0 ? {} : { cwd: record[\"cwd\"] },\n\t\t...record[\"parentSession\"] === void 0 ? {} : { parentSession: record[\"parentSession\"] },\n\t\tisSeeded: record[\"seedLength\"] !== void 0,\n\t\t...record[\"origin\"] === void 0 ? {} : { origin: record[\"origin\"] },\n\t\tdelegationDepth,\n\t\t...record[\"agentPreset\"] === void 0 ? {} : { agentPreset: record[\"agentPreset\"] }\n\t};\n\tassertReleasedSessionFormatHeader(header, version);\n\treturn {\n\t\theader,\n\t\tinheritedEventCount: seedLength\n\t};\n}\nfunction decodeEvent(record, rowIndex) {\n\tif (record[\"sourceEventSeqs\"] !== void 0) {\n\t\tconst seq = sessionFormatCount(record[\"seq\"], `released Session row ${rowIndex} seq`);\n\t\treturn {\n\t\t\t...record,\n\t\t\tsourceEventSeqs: decodeSeqRanges(record[\"sourceEventSeqs\"], seq)\n\t\t};\n\t}\n\treturn record;\n}\nfunction decodePackedRun(row, type, rowIndex) {\n\tconst label = `released ${type} row ${rowIndex}`;\n\tassertReleasedV0Keys(row, [\n\t\t\"type\",\n\t\t\"seq0\",\n\t\t\"time0\",\n\t\t\"data\"\n\t], [], label);\n\tconst seq0 = sessionFormatCount(row[\"seq0\"], `${label} seq0`);\n\tconst time0 = sessionFormatSafeInteger(row[\"time0\"], `${label} time0`);\n\tconst data = releasedV0Record(row[\"data\"], `${label} data`);\n\tconst isTool = type === \"tool-call-chunks\";\n\tassertReleasedV0Keys(data, isTool ? [\n\t\t\"turn\",\n\t\t\"step\",\n\t\t\"index\",\n\t\t\"id\",\n\t\t\"dt\",\n\t\t\"args\"\n\t] : [\n\t\t\"turn\",\n\t\t\"step\",\n\t\t\"index\",\n\t\t\"dt\",\n\t\t\"texts\"\n\t], isTool ? [\"name\"] : [], `${label} data`);\n\tconst payload = data[isTool ? \"args\" : \"texts\"];\n\tif (!Array.isArray(payload) || payload.length === 0 || payload.some((member) => typeof member !== \"string\")) throw new SessionFormatError(`${label} payload must be a non-empty string array`);\n\tconst gaps = data[\"dt\"];\n\tif (!Array.isArray(gaps) || gaps.length !== payload.length - 1) throw new SessionFormatError(`${label} dt length must match its payload`);\n\tlet lastTime = time0;\n\tfor (const gap of gaps) {\n\t\tconst validGap = sessionFormatSafeInteger(gap, `${label} dt member`);\n\t\tlastTime = sessionFormatSafeInteger(lastTime + validGap, `${label} member time`);\n\t}\n\tconst turn = sessionFormatCount(data[\"turn\"], `${label} turn`);\n\tconst step = sessionFormatCount(data[\"step\"], `${label} step`);\n\tconst chunkIndex = sessionFormatCount(data[\"index\"], `${label} index`);\n\tif (isTool && (typeof data[\"id\"] !== \"string\" || data[\"id\"].length === 0 || data[\"name\"] !== void 0 && typeof data[\"name\"] !== \"string\")) throw new SessionFormatError(`${label} id and optional name must be strings`);\n\tconst lastSeq = sessionFormatCount(seq0 + payload.length - 1, `${label} final seq`);\n\tconst stream = type === \"tool-call-chunks\" ? {\n\t\ttype,\n\t\ttime0,\n\t\tindex: chunkIndex,\n\t\tdt: gaps,\n\t\tid: data[\"id\"],\n\t\t...data[\"name\"] === void 0 ? {} : { name: data[\"name\"] },\n\t\targs: payload\n\t} : {\n\t\ttype,\n\t\ttime0,\n\t\tindex: chunkIndex,\n\t\tdt: gaps,\n\t\ttexts: payload\n\t};\n\tconst run = {\n\t\trunType: \"released-assistant-chunks\",\n\t\tfirstSeq: seq0,\n\t\teventCount: payload.length,\n\t\tturn,\n\t\tstep,\n\t\tlastSeq,\n\t\tlastTime,\n\t\tstream,\n\t\texpand: () => expandAssistantChunkRun(run)\n\t};\n\treturn run;\n}\nfunction* expandAssistantChunkRun(run) {\n\tconst stream = run.stream;\n\tconst gaps = stream[\"dt\"];\n\tconst members = stream[\"type\"] === \"tool-call-chunks\" ? stream[\"args\"] : stream[\"texts\"];\n\tlet time = run.stream[\"time0\"];\n\tfor (let index = 0; index < members.length; index += 1) {\n\t\tif (index > 0) time += gaps[index - 1];\n\t\tconst member = members[index];\n\t\tconst chunk = stream[\"type\"] === \"text-chunks\" ? {\n\t\t\ttype: \"text-delta\",\n\t\t\tindex: stream[\"index\"],\n\t\t\ttext: member\n\t\t} : stream[\"type\"] === \"reasoning-chunks\" ? {\n\t\t\ttype: \"reasoning-delta\",\n\t\t\tindex: stream[\"index\"],\n\t\t\ttext: member\n\t\t} : {\n\t\t\ttype: \"tool-call-delta\",\n\t\t\tindex: stream[\"index\"],\n\t\t\tid: stream[\"id\"],\n\t\t\t...stream[\"name\"] === void 0 ? {} : { name: stream[\"name\"] },\n\t\t\targumentsDelta: member\n\t\t};\n\t\tyield {\n\t\t\ttype: \"assistant/chunk\",\n\t\t\tseq: run.firstSeq + index,\n\t\t\ttime,\n\t\t\tdata: {\n\t\t\t\tturn: run.turn,\n\t\t\t\tstep: run.step,\n\t\t\t\tchunk\n\t\t\t}\n\t\t};\n\t}\n}\nfunction decodeSeqRanges(value, maxEntries) {\n\tif (!Array.isArray(value)) throw new SessionFormatError(\"sourceEventSeqs must be an array\");\n\tconst output = [];\n\tlet hasRange = false;\n\tfor (const entry of value) {\n\t\tif (typeof entry === \"number\") {\n\t\t\tif (output.length >= maxEntries) throw new SessionFormatError(\"sourceEventSeqs exceeds its event seq\");\n\t\t\toutput.push(sessionFormatCount(entry, \"sourceEventSeqs member\"));\n\t\t\tcontinue;\n\t\t}\n\t\tif (!Array.isArray(entry) || entry.length !== 2) throw new SessionFormatError(\"sourceEventSeqs range must be a [start, end] pair\");\n\t\tconst start = sessionFormatCount(entry[0], \"sourceEventSeqs range start\");\n\t\tconst end = sessionFormatCount(entry[1], \"sourceEventSeqs range end\");\n\t\tif (end < start || end - start + 1 > maxEntries - output.length) throw new SessionFormatError(\"sourceEventSeqs range exceeds its event seq\");\n\t\tfor (let seq = start; seq <= end; seq += 1) output.push(seq);\n\t\thasRange = true;\n\t}\n\tif (hasRange && output.some((member, index) => index > 0 && member <= output[index - 1])) throw new SessionFormatError(\"sourceEventSeqs ranges must be strictly increasing\");\n\treturn output;\n}\n//#endregion\n//#region lib/types/migration.js\nconst LEGACY_ASSISTANT_SOURCE_KEY = [\"pro\", \"venance\"].join(\"\");\n/** Identity format edge that promotes released v0 into released v1. */\nconst sessionFormatV0ToV1 = defineSessionFormatMigration({\n\tname: \"@deepseek-ai/dsh-session-format-v0-to-v1\",\n\tfromVersion: 0,\n\ttoVersion: 1,\n\tmigrateHeader(header) {\n\t\tassertHeaderVersion(header, 0);\n\t\treturn {\n\t\t\t...header,\n\t\t\tversion: 1\n\t\t};\n\t},\n\tcreateStage(input) {\n\t\treturn new ReleasedV0ToV1Stage(input);\n\t},\n\tvalidateTargetHeader: assertReleasedV1Header\n});\nvar ReleasedV0ToV1Stage = class {\n\tinput;\n\theaderInheritedEventCount;\n\tstate = {\n\t\tmessageIds: /* @__PURE__ */ new Map(),\n\t\tretryIds: /* @__PURE__ */ new Map()\n\t};\n\tconstructor(input) {\n\t\tthis.input = input;\n\t\tassertHeaderVersion(input.sourceHeader, 0);\n\t\tthis.headerInheritedEventCount = sessionFormatCount(input.sourceInheritedEventCount, \"format v0 inherited event count\");\n\t}\n\ttransformEvent(event, context) {\n\t\tconst normalized = normalizeReleasedV0Event(event, this.input.sourceHeader.id, this.state);\n\t\tassertSourceDeliveryMarker(normalized, this.input);\n\t\tcontext.emitEvent(normalized);\n\t}\n\ttransformRun(run, context) {\n\t\tif (isReleasedAssistantChunkRun(run)) {\n\t\t\tcontext.emitRun(run);\n\t\t\treturn;\n\t\t}\n\t\tfor (const event of run.expand()) this.transformEvent(event, context);\n\t}\n\tfinish(_context) {\n\t\treturn this.headerInheritedEventCount;\n\t}\n};\nfunction assertHeaderVersion(header, version) {\n\tif (header.version !== version) throw new SessionFormatError(`expected format v${version} header`);\n}\nfunction normalizeReleasedV0Event(event, sessionId, state) {\n\tconst named = normalizeLegacyCompactionType(event);\n\tassertSupportedLegacyType(named, sessionId);\n\tconst message = normalizeLegacyMessage(normalizeLegacyCompaction(normalizeLegacyRetry(normalizeLegacySteering(normalizeLegacyRequestHeader(normalizeLegacyTurnEnd(normalizeLegacyTurnStart(named, sessionId), sessionId), sessionId), sessionId), sessionId, state.retryIds), sessionId, state), sessionId, state.messageIds);\n\tif (message.type !== \"assistant/chunk\") assertReleasedEventPayload(message, 0);\n\tconst messageId = eventMessageId(message);\n\tif (messageId !== void 0) state.messageIds.set(message.seq, messageId);\n\treturn message;\n}\nfunction normalizeLegacyCompactionType(event) {\n\tswitch (event.type) {\n\t\tcase \"compact/start\": return {\n\t\t\t...event,\n\t\t\ttype: \"compaction/start\"\n\t\t};\n\t\tcase \"compact/summary\": return {\n\t\t\t...event,\n\t\t\ttype: \"compaction/summary\"\n\t\t};\n\t\tcase \"compact/end\": return {\n\t\t\t...event,\n\t\t\ttype: \"compaction/end\"\n\t\t};\n\t\tcase \"compact/prune\": return {\n\t\t\t...event,\n\t\t\ttype: \"compaction/prune\"\n\t\t};\n\t\tdefault: return event;\n\t}\n}\nfunction assertSourceDeliveryMarker(event, input) {\n\tif (event.type !== \"session-log-deepseek/delivery-accepted\") return;\n\tconst data = releasedV0Record(event.data, `${event.type} ${event.seq} data`);\n\tconst acceptedVersion = data[\"sessionFormatVersion\"] ?? 0;\n\tconst inherited = input.sourceHeader.parentSession !== void 0 && event.seq < sessionFormatCount(input.sourceInheritedEventCount, \"format v0 inherited event count\");\n\tif (acceptedVersion === 0 && !inherited && data[\"sessionId\"] !== input.sourceHeader.id) throw new SessionFormatError(\"current-generation delivery marker names the wrong Session\");\n}\nfunction normalizeLegacyRetry(event, sessionId, retryIds) {\n\tif (event.type !== \"llm/retry\") return event;\n\tconst data = releasedV0Record(event.data, `llm/retry ${event.seq} data`);\n\tconst chain = [\n\t\tdata[\"turn\"],\n\t\tdata[\"step\"],\n\t\tdata[\"provider\"],\n\t\tdata[\"policyKey\"]\n\t].map((value) => JSON.stringify(value)).join(\"\\0\");\n\tconst retryId = data[\"retryId\"];\n\tif (typeof retryId === \"string\" && retryId.length > 0) {\n\t\tretryIds.set(chain, retryId);\n\t\treturn event;\n\t}\n\tif (Object.hasOwn(data, \"retryId\")) return event;\n\tconst migratedRetryId = retryIds.get(chain) ?? `legacy-retry:${sessionId}:${event.seq}`;\n\tretryIds.set(chain, migratedRetryId);\n\treturn {\n\t\t...event,\n\t\tdata: {\n\t\t\t...data,\n\t\t\tretryId: migratedRetryId\n\t\t}\n\t};\n}\nfunction normalizeLegacyCompaction(event, sessionId, state) {\n\tif (event.type === \"session/end-seed\") {\n\t\tdelete state.compactionId;\n\t\treturn event;\n\t}\n\tif (event.type === \"compaction/start\") {\n\t\tconst data = releasedV0Record(event.data, `compaction/start ${event.seq} data`);\n\t\tconst existing = data[\"compactionId\"];\n\t\tif (typeof existing === \"string\" && existing.length > 0) {\n\t\t\tstate.compactionId = existing;\n\t\t\treturn event;\n\t\t}\n\t\tif (Object.hasOwn(data, \"compactionId\")) return event;\n\t\tconst id = `legacy-compaction:${sessionId}:${event.seq}`;\n\t\tstate.compactionId = id;\n\t\treturn {\n\t\t\t...event,\n\t\t\tdata: {\n\t\t\t\t...data,\n\t\t\t\tcompactionId: id\n\t\t\t}\n\t\t};\n\t}\n\tconst compactionId = state.compactionId;\n\tif (compactionId === void 0) return event;\n\tif (event.type === \"compaction/summary\" || event.type === \"compaction/end\") {\n\t\tconst normalized = addLegacyCompactionId(event, compactionId);\n\t\tif (event.type === \"compaction/end\") delete state.compactionId;\n\t\treturn normalized;\n\t}\n\tif (event.type !== \"user/message\") return event;\n\tconst data = releasedV0Record(event.data, `user/message ${event.seq} data`);\n\tconst source = data[\"source\"];\n\tif (!releasedIsRecord(source) || source[\"kind\"] !== \"plugin\" || source[\"plugin\"] !== \"compact\" || Object.hasOwn(source, \"compactionId\")) return event;\n\treturn {\n\t\t...event,\n\t\tdata: {\n\t\t\t...data,\n\t\t\tsource: {\n\t\t\t\t...source,\n\t\t\t\tcompactionId\n\t\t\t}\n\t\t}\n\t};\n}\nfunction addLegacyCompactionId(event, compactionId) {\n\tconst data = releasedV0Record(event.data, `${event.type} ${event.seq} data`);\n\tif (Object.hasOwn(data, \"compactionId\")) return event;\n\treturn {\n\t\t...event,\n\t\tdata: {\n\t\t\t...data,\n\t\t\tcompactionId\n\t\t}\n\t};\n}\nfunction normalizeLegacyRequestHeader(event, sessionId) {\n\tif (event.type !== \"request/header\") return event;\n\tconst data = releasedV0Record(event.data, `request/header ${event.seq} data`);\n\tconst header = releasedV0Record(data[\"header\"], `request/header ${event.seq} header`);\n\tif (!Object.hasOwn(header, \"messagePrefix\")) return event;\n\tif (!Array.isArray(header[\"messagePrefix\"])) throw new SessionFormatError(`session ${JSON.stringify(sessionId)} contains malformed request/header messagePrefix at seq ${event.seq}`);\n\tconst { messagePrefix: _messagePrefix, ...currentHeader } = header;\n\treturn {\n\t\t...event,\n\t\tdata: {\n\t\t\t...data,\n\t\t\theader: currentHeader\n\t\t}\n\t};\n}\nfunction assertSupportedLegacyType(event, sessionId) {\n\tif (event.type === \"request/header-delta\" || event.type === \"mode/set\") throw new SessionFormatUnsupportedMigrationError(`session ${JSON.stringify(sessionId)} contains unsupported legacy ${event.type} event at seq ${event.seq}`);\n\tif (event.type === \"request/header\") {\n\t\tif (releasedV0Record(event.data, `request/header ${event.seq} data`)[\"reason\"] === \"fallback\") throw new SessionFormatUnsupportedMigrationError(`session ${JSON.stringify(sessionId)} contains unsupported request/header reason \"fallback\" at seq ${event.seq}`);\n\t}\n}\nfunction normalizeLegacySteering(event, sessionId) {\n\tif (event.type !== \"steering/message\") return event;\n\tconst data = releasedV0Record(event.data, `steering/message ${event.seq} data`);\n\tconst wrapped = data[\"message\"];\n\tif (wrapped !== void 0) {\n\t\tassertReleasedV0Keys(data, [\"turn\", \"message\"], [], `steering/message ${event.seq} data`);\n\t\tsessionFormatCount(data[\"turn\"], `steering/message ${event.seq} turn`);\n\t\treturn {\n\t\t\t...event,\n\t\t\ttype: \"user/message\",\n\t\t\tdata: wrapped\n\t\t};\n\t}\n\tassertReleasedV0Keys(data, [\n\t\t\"turn\",\n\t\t\"content\",\n\t\t\"source\"\n\t], [], `steering/message ${event.seq} data`);\n\tsessionFormatCount(data[\"turn\"], `steering/message ${event.seq} turn`);\n\tconst { turn: _turn, ...message } = data;\n\treturn {\n\t\t...event,\n\t\ttype: \"user/message\",\n\t\tdata: {\n\t\t\t...message,\n\t\t\tid: legacyMessageId(sessionId, event.seq),\n\t\t\trole: \"user\"\n\t\t}\n\t};\n}\nfunction normalizeLegacyTurnStart(event, sessionId) {\n\tif (event.type !== \"turn/start\") return event;\n\tconst data = releasedV0Record(event.data, `turn/start ${event.seq} data`);\n\tif (!Object.hasOwn(data, \"trigger\")) return event;\n\tassertReleasedV0Keys(data, [\"turn\", \"trigger\"], [], `turn/start ${event.seq} data`);\n\tconst turn = sessionFormatCount(data[\"turn\"], `turn/start ${event.seq} turn`);\n\tconst trigger = releasedV0Record(data[\"trigger\"], `turn/start ${event.seq} trigger`);\n\tif (turn < 1 || typeof trigger[\"kind\"] !== \"string\" || trigger[\"kind\"].length === 0) throw malformedLegacy(sessionId, \"turn/start\", event.seq);\n\treturn {\n\t\t...event,\n\t\tdata: { turn }\n\t};\n}\nfunction normalizeLegacyTurnEnd(event, sessionId) {\n\tif (event.type !== \"turn/end\") return event;\n\tconst data = releasedV0Record(event.data, `turn/end ${event.seq} data`);\n\tassertReleasedV0Keys(data, [\"turn\", \"reason\"], [], `turn/end ${event.seq} data`);\n\tif (sessionFormatCount(data[\"turn\"], `turn/end ${event.seq} turn`) < 1) throw malformedLegacy(sessionId, \"turn/end\", event.seq);\n\tconst reason = releasedV0Record(data[\"reason\"], `turn/end ${event.seq} reason`);\n\tif (typeof reason[\"kind\"] !== \"string\") throw malformedLegacy(sessionId, \"turn/end\", event.seq);\n\tlet current;\n\tswitch (reason[\"kind\"]) {\n\t\tcase \"completed\":\n\t\tcase \"blocked\":\n\t\tcase \"max-tokens\":\n\t\tcase \"interrupted\":\n\t\t\tassertReleasedV0Keys(reason, [\"kind\"], [], `turn/end ${event.seq} reason`);\n\t\t\treturn event;\n\t\tcase \"aborted\":\n\t\t\tif (Object.hasOwn(reason, \"reason\")) return event;\n\t\t\tassertReleasedV0Keys(reason, [\"kind\"], [], `turn/end ${event.seq} reason`);\n\t\t\tcurrent = {\n\t\t\t\tkind: \"aborted\",\n\t\t\t\treason: { kind: \"legacy\" }\n\t\t\t};\n\t\t\tbreak;\n\t\tcase \"disposed\":\n\t\t\tassertReleasedV0Keys(reason, [\"kind\"], [], `turn/end ${event.seq} reason`);\n\t\t\tcurrent = {\n\t\t\t\tkind: \"aborted\",\n\t\t\t\treason: { kind: \"disposed\" }\n\t\t\t};\n\t\t\tbreak;\n\t\tcase \"error\":\n\t\t\tif (Object.hasOwn(reason, \"error\")) return event;\n\t\t\tcurrent = normalizeLegacyErrorReason(reason, event.seq, sessionId);\n\t\t\tbreak;\n\t\tdefault: return event;\n\t}\n\treturn {\n\t\t...event,\n\t\tdata: {\n\t\t\t...data,\n\t\t\treason: current\n\t\t}\n\t};\n}\nfunction normalizeLegacyErrorReason(reason, seq, sessionId) {\n\tsessionFormatCount(reason[\"step\"], `turn/end ${seq} error step`);\n\tconst failure = reason[\"failure\"];\n\tif (failure !== void 0) {\n\t\tassertReleasedV0Keys(reason, [\n\t\t\t\"kind\",\n\t\t\t\"step\",\n\t\t\t\"failure\"\n\t\t], [], `turn/end ${seq} reason`);\n\t\tconst record = releasedV0Record(failure, `turn/end ${seq} failure`);\n\t\tassertReleasedV0Keys(record, [\"message\", \"code\"], [\n\t\t\t\"status\",\n\t\t\t\"providerRetryAfterMs\",\n\t\t\t\"requestId\"\n\t\t], `turn/end ${seq} failure`);\n\t\tif (typeof record[\"message\"] !== \"string\" || typeof record[\"code\"] !== \"string\") throw malformedLegacy(sessionId, \"turn/end\", seq);\n\t\treturn {\n\t\t\tkind: \"error\",\n\t\t\terror: record\n\t\t};\n\t}\n\tassertReleasedV0Keys(reason, [\n\t\t\"kind\",\n\t\t\"step\",\n\t\t\"message\"\n\t], [\"code\"], `turn/end ${seq} reason`);\n\tif (typeof reason[\"message\"] !== \"string\" || reason[\"code\"] !== void 0 && typeof reason[\"code\"] !== \"string\") throw malformedLegacy(sessionId, \"turn/end\", seq);\n\treturn {\n\t\tkind: \"error\",\n\t\terror: {\n\t\t\tmessage: reason[\"message\"],\n\t\t\tcode: typeof reason[\"code\"] === \"string\" ? reason[\"code\"] : \"UNKNOWN\"\n\t\t}\n\t};\n}\nfunction normalizeLegacyMessage(event, sessionId, messageIds) {\n\tconst data = releasedV0Record(event.data, `${event.type} ${event.seq} data`);\n\tswitch (event.type) {\n\t\tcase \"user/message\":\n\t\t\tif (Object.hasOwn(data, \"id\") || Object.hasOwn(data, \"role\") || Object.hasOwn(data, \"message\") || !Object.hasOwn(data, \"content\") || !Object.hasOwn(data, \"source\")) return event;\n\t\t\treturn {\n\t\t\t\t...event,\n\t\t\t\tdata: {\n\t\t\t\t\t...data,\n\t\t\t\t\tid: legacyMessageId(sessionId, event.seq),\n\t\t\t\t\trole: \"user\"\n\t\t\t\t}\n\t\t\t};\n\t\tcase \"assistant/message\": {\n\t\t\tif (Object.hasOwn(data, \"message\") || !Object.hasOwn(data, \"content\") || !Object.hasOwn(data, LEGACY_ASSISTANT_SOURCE_KEY)) return event;\n\t\t\tconst content = data[\"content\"];\n\t\t\tconst eventData = { ...data };\n\t\t\tdelete eventData[\"content\"];\n\t\t\tconst source = releasedV0Record(eventData[LEGACY_ASSISTANT_SOURCE_KEY], `assistant/message ${event.seq} legacy source`);\n\t\t\tReflect.deleteProperty(eventData, LEGACY_ASSISTANT_SOURCE_KEY);\n\t\t\treturn {\n\t\t\t\t...event,\n\t\t\t\tdata: {\n\t\t\t\t\t...eventData,\n\t\t\t\t\tmessage: {\n\t\t\t\t\t\tid: legacyMessageId(sessionId, event.seq),\n\t\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\t\tcontent,\n\t\t\t\t\t\tsource: {\n\t\t\t\t\t\t\t...source,\n\t\t\t\t\t\t\tkind: \"model\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tcase \"tool/result\": {\n\t\t\tif (Object.hasOwn(data, \"message\") || !Object.hasOwn(data, \"callId\") || !Object.hasOwn(data, \"content\") || !Object.hasOwn(data, \"isError\")) return event;\n\t\t\tconst { callId, content, isError, ...eventData } = data;\n\t\t\tif (typeof callId !== \"string\" || typeof isError !== \"boolean\" || content === void 0) return event;\n\t\t\tconst inheritedId = replacementStart(event);\n\t\t\tconst messageId = inheritedId === void 0 ? legacyMessageId(sessionId, event.seq) : messageIds.get(inheritedId);\n\t\t\tif (messageId === void 0) throw new SessionFormatError(`tool/result ${event.seq} replacement cites a message without identity`);\n\t\t\treturn {\n\t\t\t\t...event,\n\t\t\t\tdata: {\n\t\t\t\t\t...eventData,\n\t\t\t\t\tmessage: {\n\t\t\t\t\t\tid: messageId,\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [{\n\t\t\t\t\t\t\ttype: \"tool-result\",\n\t\t\t\t\t\t\ttoolCallId: callId,\n\t\t\t\t\t\t\tcontent,\n\t\t\t\t\t\t\tisError\n\t\t\t\t\t\t}],\n\t\t\t\t\t\tsource: {\n\t\t\t\t\t\t\tkind: \"tool\",\n\t\t\t\t\t\t\tcallId\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tdefault: return event;\n\t}\n}\nfunction replacementStart(event) {\n\tconst operation = event[\"surfaceOp\"];\n\tif (operation === void 0 || !releasedIsRecord(operation) || operation[\"op\"] !== \"replace\") return void 0;\n\treturn operation[\"start\"];\n}\nfunction eventMessageId(event) {\n\tconst data = releasedV0Record(event.data, `${event.type} ${event.seq} data`);\n\tconst message = event.type === \"user/message\" ? data : releasedIsRecord(data[\"message\"]) ? data[\"message\"] : void 0;\n\treturn typeof message?.[\"id\"] === \"string\" ? message[\"id\"] : void 0;\n}\nfunction releasedIsRecord(value) {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction legacyMessageId(sessionId, seq) {\n\treturn `legacy-message:${sessionId}:${seq}`;\n}\nfunction malformedLegacy(sessionId, type, seq) {\n\treturn new SessionFormatError(`session ${JSON.stringify(sessionId)} contains malformed pre-react-loop ${type} at seq ${seq}`);\n}\n//#endregion\n//#region lib/types/relationships.js\nconst SURFACE_TYPES = new Set([\n\t\"user/message\",\n\t\"assistant/message\",\n\t\"tool/result\"\n]);\n/**\n* Validate cross-event relationships required to construct one current Session safely.\n* @param artifact - complete normalized v0 or exact current v1 artifact.\n* @param extensions - later-generation event roles interpreted by the calling format owner.\n*/\nfunction assertReleasedArtifactRelationships(artifact, extensions = {}) {\n\tlet openTurn = null;\n\tlet openStep = null;\n\tlet openStepProvider;\n\tlet nextTurn = 1;\n\tlet nextStep = 1;\n\tlet surface = [];\n\tlet openCompaction;\n\tconst staleCompactionStarts = inheritedOrphanCompactionStarts(artifact.events);\n\tconst retries = [];\n\tconst retryStarts = /* @__PURE__ */ new Set();\n\tconst ptcRoots = /* @__PURE__ */ new Map();\n\tconst ptcStarts = /* @__PURE__ */ new Map();\n\tconst toolLifecycles = /* @__PURE__ */ new Map();\n\tconst commandRuns = /* @__PURE__ */ new Set();\n\tfor (const event of artifact.events) {\n\t\tconst extensionStepEvent = extensions.stepEvents?.has(event.type) === true;\n\t\tif (RELEASED_V0_EVENT_DISPOSITIONS[event.type] === void 0 && !extensionStepEvent) continue;\n\t\tconst data = releasedV0Record(event.data, `${event.type} ${event.seq} data`);\n\t\tif (SURFACE_TYPES.has(event.type)) surface = applySurface(surface, event);\n\t\tif ((event.type === \"turn/start\" || event.type === \"turn/end\") && openCompaction !== void 0 && !staleCompactionStarts.has(openCompaction.startSeq)) throw new SessionFormatError(`${event.type} crosses an open compaction`);\n\t\tif (extensionStepEvent) {\n\t\t\trequireOpenStep(event, data, openTurn, openStep);\n\t\t\tcontinue;\n\t\t}\n\t\tswitch (event.type) {\n\t\t\tcase \"turn/start\": {\n\t\t\t\tconst previous = artifact.events[event.seq - 1];\n\t\t\t\tif (extensions.legacyInterruptedTurnRestart === true && openTurn !== null && openStep === null && data[\"turn\"] === openTurn + 1 && nextTurn === openTurn && previous?.type === \"agent/inbox/spliced\") {\n\t\t\t\t\tconst splice = releasedV0Record(previous.data, `agent/inbox/spliced ${previous.seq} data`);\n\t\t\t\t\tif (splice[\"target\"] === \"next-turn\" && Array.isArray(splice[\"inserted\"]) && splice[\"inserted\"].length > 0) {\n\t\t\t\t\t\topenTurn = null;\n\t\t\t\t\t\tnextTurn += 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (openTurn !== null || data[\"turn\"] !== nextTurn) throw new SessionFormatError(`turn/start ${JSON.stringify(data[\"turn\"])} does not open expected turn ${nextTurn}`);\n\t\t\t\topenTurn = data[\"turn\"];\n\t\t\t\topenStep = null;\n\t\t\t\ttoolLifecycles.clear();\n\t\t\t\tnextStep = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"turn/end\":\n\t\t\t\tif (openTurn !== data[\"turn\"]) throw new SessionFormatError(`turn/end ${JSON.stringify(data[\"turn\"])} has no matching open turn`);\n\t\t\t\tassertNoUnresolvedTools(toolLifecycles, \"turn/end\");\n\t\t\t\tif (openStep !== null) throw new SessionFormatError(`turn/end ${JSON.stringify(data[\"turn\"])} crosses an open step`);\n\t\t\t\topenTurn = null;\n\t\t\t\tnextTurn += 1;\n\t\t\t\tbreak;\n\t\t\tcase \"step/start\":\n\t\t\t\tif (openTurn !== data[\"turn\"] || openStep !== null || data[\"step\"] !== nextStep) throw new SessionFormatError(`${event.type} does not match the open turn and next step`);\n\t\t\t\topenStep = data[\"step\"];\n\t\t\t\tbreak;\n\t\t\tcase \"step/end\":\n\t\t\t\trequireOpenStep(event, data, openTurn, openStep);\n\t\t\t\tassertNoUnresolvedTools(toolLifecycles, \"step/end\");\n\t\t\t\ttoolLifecycles.clear();\n\t\t\t\topenStep = null;\n\t\t\t\tnextStep += 1;\n\t\t\t\tbreak;\n\t\t\tcase \"assistant/chunk\":\n\t\t\t\trequireOpenStep(event, data, openTurn, openStep);\n\t\t\t\tbreak;\n\t\t\tcase \"assistant/message\": {\n\t\t\t\trequireOpenStep(event, data, openTurn, openStep);\n\t\t\t\tconst content = releasedV0Record(data[\"message\"], `assistant/message ${event.seq} message`)[\"content\"];\n\t\t\t\tfor (const block of content) {\n\t\t\t\t\tif (block[\"type\"] !== \"tool-call\") continue;\n\t\t\t\t\tconst callId = block[\"id\"];\n\t\t\t\t\tif (toolLifecycles.has(callId)) throw new SessionFormatError(`assistant/message repeats advertised tool call ${callId}`);\n\t\t\t\t\ttoolLifecycles.set(callId, {\n\t\t\t\t\t\tname: block[\"name\"],\n\t\t\t\t\t\targuments: block[\"arguments\"],\n\t\t\t\t\t\tstate: \"advertised\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"tool/call\": {\n\t\t\t\trequireOpenStep(event, data, openTurn, openStep);\n\t\t\t\tconst callId = data[\"callId\"];\n\t\t\t\tconst lifecycle = toolLifecycles.get(callId);\n\t\t\t\tif (lifecycle === void 0 || lifecycle.state !== \"advertised\" || lifecycle.name !== data[\"name\"] || lifecycle.arguments !== data[\"arguments\"]) throw new SessionFormatError(`tool/call ${callId} does not match one advertised tool call`);\n\t\t\t\tlifecycle.state = \"started\";\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"tool/result\":\n\t\t\t\tif (event[\"surfaceOp\"] === \"append\") {\n\t\t\t\t\trequireOpenStep(event, data, openTurn, openStep);\n\t\t\t\t\tconst message = releasedV0Record(data[\"message\"], `tool/result ${event.seq} message`);\n\t\t\t\t\tconst callId = releasedV0Record(message[\"source\"], `tool/result ${event.seq} source`)[\"callId\"];\n\t\t\t\t\tconst content = message[\"content\"];\n\t\t\t\t\tconst error = data[\"error\"] === void 0 ? void 0 : releasedV0Record(data[\"error\"], `tool/result ${event.seq} error`);\n\t\t\t\t\tconst lifecycle = toolLifecycles.get(callId);\n\t\t\t\t\tif (lifecycle === void 0) throw new SessionFormatError(`tool/result ${callId} has no advertised tool lifecycle`);\n\t\t\t\t\tif (lifecycle.state === \"advertised\" && !isExactToolNotStartedRepair(event, content, error)) throw new SessionFormatError(`tool/result ${callId} is not the exact TOOL_NOT_STARTED repair`);\n\t\t\t\t\ttoolLifecycles.delete(callId);\n\t\t\t\t} else if (openTurn === null) throw new SessionFormatError(\"tool/result replacement is outside an open turn\");\n\t\t\t\tbreak;\n\t\t\tcase \"request/header\":\n\t\t\t\tif (openTurn === null) throw new SessionFormatError(`${event.type} is outside an open turn`);\n\t\t\t\topenStepProvider = data[\"header\"][\"config\"][\"provider\"];\n\t\t\t\tbreak;\n\t\t\tcase \"request/context\":\n\t\t\t\tif (openTurn === null) throw new SessionFormatError(`${event.type} is outside an open turn`);\n\t\t\t\tbreak;\n\t\t\tcase \"tool/code-dispatch-start\":\n\t\t\tcase \"tool/code-dispatch\": {\n\t\t\t\tif (openTurn === null) throw new SessionFormatError(`${event.type} is outside an open turn`);\n\t\t\t\tconst root = data[\"rootCallId\"];\n\t\t\t\tconst parent = data[\"parentCallId\"];\n\t\t\t\tconst child = data[\"subCallId\"];\n\t\t\t\tconst known = ptcRoots.get(child);\n\t\t\t\tif (known !== void 0 && known !== root) throw new SessionFormatError(`${event.type} changes its rootCallId`);\n\t\t\t\tif (parent !== root && ptcRoots.get(parent) !== root) throw new SessionFormatError(`${event.type} parentCallId does not belong to rootCallId`);\n\t\t\t\tif (event.type === \"tool/code-dispatch-start\") {\n\t\t\t\t\tif (ptcStarts.has(child)) throw new SessionFormatError(\"tool/code-dispatch-start repeats subCallId\");\n\t\t\t\t\tptcStarts.set(child, {\n\t\t\t\t\t\troot,\n\t\t\t\t\t\tparent,\n\t\t\t\t\t\tname: data[\"name\"],\n\t\t\t\t\t\targuments: data[\"arguments\"],\n\t\t\t\t\t\tsettled: false\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tconst start = ptcStarts.get(child);\n\t\t\t\t\tif (start === void 0 || start.settled) throw new SessionFormatError(\"tool/code-dispatch has no unique start\");\n\t\t\t\t\tif (start.root !== root || start.parent !== parent || start.name !== data[\"name\"] || !deepEqualJson(start.arguments, data[\"arguments\"])) throw new SessionFormatError(\"tool/code-dispatch does not match its start\");\n\t\t\t\t\tstart.settled = true;\n\t\t\t\t}\n\t\t\t\tptcRoots.set(child, root);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"llm/retry\":\n\t\t\t\tif (openTurn !== data[\"turn\"] || data[\"step\"] !== (openStep ?? nextStep - 1) || openTurn === null) throw new SessionFormatError(\"llm/retry does not match the current turn and step\");\n\t\t\t\tif (data[\"provider\"] !== openStepProvider) throw new SessionFormatError(\"llm/retry provider does not match the open request/header\");\n\t\t\t\tassertRetryChain(retries, data);\n\t\t\t\tretries.push(event);\n\t\t\t\tbreak;\n\t\t\tcase \"llm/retry-started\": {\n\t\t\t\tconst scheduled = retries.find((candidate) => {\n\t\t\t\t\tconst prior = candidate.data;\n\t\t\t\t\treturn prior[\"retryId\"] === data[\"retryId\"] && prior[\"retry\"] === data[\"retry\"];\n\t\t\t\t});\n\t\t\t\tif (scheduled === void 0) throw new SessionFormatError(\"llm/retry-started pairs no prior scheduled attempt\");\n\t\t\t\tconst prior = scheduled.data;\n\t\t\t\tif (prior[\"turn\"] !== data[\"turn\"] || prior[\"step\"] !== data[\"step\"]) throw new SessionFormatError(\"llm/retry-started does not match its scheduled turn and step\");\n\t\t\t\tconst key = `${JSON.stringify(data[\"retryId\"])}\\0${JSON.stringify(data[\"retry\"])}`;\n\t\t\t\tif (retryStarts.has(key)) throw new SessionFormatError(\"llm/retry-started repeats one scheduled attempt\");\n\t\t\t\tretryStarts.add(key);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"session/title\":\n\t\t\tcase \"session/title-llm-request\":\n\t\t\t\tassertTitleSources(artifact.events, event, data, extensions.preservedSourceTitleRequestText !== true);\n\t\t\t\tbreak;\n\t\t\tcase \"command/run\": {\n\t\t\t\tconst id = data[\"commandId\"];\n\t\t\t\tif (commandRuns.has(id)) throw new SessionFormatError(`command/run repeats commandId ${id}`);\n\t\t\t\tcommandRuns.add(id);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"command/done\": {\n\t\t\t\tconst id = data[\"commandId\"];\n\t\t\t\tif (!commandRuns.has(id)) throw new SessionFormatError(`command/done ${id} has no prior command/run`);\n\t\t\t\tconst sourceSeq = data[\"sourceEventSeq\"];\n\t\t\t\tif (sourceSeq !== void 0) {\n\t\t\t\t\tconst source = artifact.events[sourceSeq];\n\t\t\t\t\tif (data[\"kind\"] !== \"success\" || source?.type === \"command/run\" || source?.type === \"command/done\") throw new SessionFormatError(`command/done ${id} has invalid sourceEventSeq`);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"session-log-deepseek/delivery-accepted\":\n\t\t\t\tif ((data[\"sessionFormatVersion\"] ?? 0) === artifact.header.version) {\n\t\t\t\t\tif (!(artifact.header.parentSession !== void 0 && event.seq < artifact.inheritedEventCount) && data[\"sessionId\"] !== artifact.header.id) throw new SessionFormatError(\"current-generation delivery marker names the wrong Session\");\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"compaction/start\":\n\t\t\t\tif (openCompaction !== void 0) throw new SessionFormatError(\"compaction/start overlaps an open compaction\");\n\t\t\t\tassertCompactionTurn(data[\"turn\"], openTurn, \"compaction/start\");\n\t\t\t\topenCompaction = {\n\t\t\t\t\tid: data[\"compactionId\"],\n\t\t\t\t\t...data[\"sourceCommandId\"] === void 0 ? {} : { sourceCommandId: data[\"sourceCommandId\"] },\n\t\t\t\t\tturn: data[\"turn\"],\n\t\t\t\t\tstartSeq: event.seq,\n\t\t\t\t\tsummarized: false\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase \"compaction/summary\":\n\t\t\t\tassertCompactionOwner(openCompaction, data, \"compaction/summary\");\n\t\t\t\tassertCompactionTurn(openCompaction?.turn, openTurn, \"compaction/summary\");\n\t\t\t\tif (openCompaction?.summarized === true) throw new SessionFormatError(\"compaction/summary repeats\");\n\t\t\t\tassertCurrentSurfaceSpan(surface, data, \"compaction/summary\");\n\t\t\t\topenCompaction = {\n\t\t\t\t\t...openCompaction,\n\t\t\t\t\tsummarized: true\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase \"compaction/end\":\n\t\t\t\tassertCompactionOwner(openCompaction, data, \"compaction/end\");\n\t\t\t\tif (data[\"turn\"] !== openCompaction?.turn) throw new SessionFormatError(\"compaction/end changes its owner turn\");\n\t\t\t\tassertCompactionTurn(openCompaction?.turn, openTurn, \"compaction/end\");\n\t\t\t\tif (data[\"error\"] === void 0 && openCompaction?.summarized !== true) throw new SessionFormatError(\"successful compaction/end requires one summary\");\n\t\t\t\topenCompaction = void 0;\n\t\t\t\tbreak;\n\t\t\tcase \"compaction/prune\":\n\t\t\t\tassertCurrentSurfaceSpan(surface, data, \"compaction/prune\");\n\t\t\t\tbreak;\n\t\t\tcase \"user/message\": {\n\t\t\t\tconst source = releasedV0Record(data[\"source\"], `user/message ${event.seq} source`);\n\t\t\t\tif (event[\"surfaceOp\"] !== \"append\" && source[\"kind\"] === \"plugin\" && source[\"plugin\"] === \"compact\") assertCompactionOwner(openCompaction, source, `compaction checkpoint at seq ${event.seq}`);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"session/end-seed\":\n\t\t\t\topenCompaction = void 0;\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\nfunction inheritedOrphanCompactionStarts(events) {\n\tconst stale = /* @__PURE__ */ new Set();\n\tlet open;\n\tfor (const event of events) if (event.type === \"compaction/start\") open = event.seq;\n\telse if (event.type === \"compaction/end\") open = void 0;\n\telse if (event.type === \"session/end-seed\") {\n\t\tif (open !== void 0) stale.add(open);\n\t\topen = void 0;\n\t}\n\treturn stale;\n}\nfunction assertRetryChain(retries, data) {\n\tconst prior = [...retries].reverse().find((candidate) => {\n\t\tconst value = candidate.data;\n\t\treturn value[\"turn\"] === data[\"turn\"] && value[\"step\"] === data[\"step\"] && value[\"provider\"] === data[\"provider\"] && value[\"policyKey\"] === data[\"policyKey\"];\n\t});\n\tconst expected = (prior?.data?.[\"retry\"] ?? 0) + 1;\n\tif (data[\"retry\"] !== expected) throw new SessionFormatError(`llm/retry must use retry ${expected}`);\n\tif (prior !== void 0 && prior.data[\"retryId\"] !== data[\"retryId\"]) throw new SessionFormatError(\"llm/retry must preserve retryId across one policy chain\");\n\tif (prior === void 0 && retries.some((candidate) => candidate.data[\"retryId\"] === data[\"retryId\"])) throw new SessionFormatError(`llm/retry reuses retryId ${JSON.stringify(data[\"retryId\"])} across policy chains`);\n}\nfunction requireOpenStep(event, data, openTurn, openStep) {\n\tif (data[\"turn\"] !== openTurn || data[\"step\"] !== openStep || openTurn === null || openStep === null) throw new SessionFormatError(`${event.type} does not match an open turn and step`);\n}\nfunction assertNoUnresolvedTools(lifecycles, boundary) {\n\tconst unresolved = lifecycles.keys().next().value;\n\tif (unresolved !== void 0) throw new SessionFormatError(`${boundary} leaves unresolved tool call ${unresolved}`);\n}\nfunction isExactToolNotStartedRepair(event, content, error) {\n\tconst message = event.data[\"message\"];\n\tconst callId = message[\"source\"][\"callId\"];\n\tconst block = content[0];\n\tconst repairContent = block?.[\"content\"];\n\treturn error?.[\"name\"] === \"ToolNotStartedError\" && error[\"code\"] === \"TOOL_NOT_STARTED\" && event[\"sourceEventSeqs\"] === void 0 && message[\"id\"] === `interrupted-tool-result-${callId}-${event.seq}` && block?.[\"isError\"] === true && repairContent?.length === 1 && repairContent[0]?.[\"type\"] === \"text\" && repairContent[0][\"text\"] === \"The tool call was interrupted before the Harness recorded it as started. Retry it if it is still needed.\";\n}\nfunction applySurface(surface, event) {\n\tconst operation = event[\"surfaceOp\"];\n\tif (operation === void 0) throw new SessionFormatError(`${event.type} requires a surfaceOp marker`);\n\tif (operation === \"append\") return [...surface, event.seq];\n\tconst replace = operation;\n\tconst start = surface.indexOf(replace.start);\n\tconst end = surface.indexOf(replace.end);\n\tif (start < 0 || end < start) throw new SessionFormatError(`${event.type} replacement range is not on the current surface`);\n\tconst shadowed = surface.slice(start, end + 1);\n\tconst sources = new Set(Array.isArray(event[\"sourceEventSeqs\"]) ? event[\"sourceEventSeqs\"] : []);\n\tif (shadowed.some((seq) => !sources.has(seq))) throw new SessionFormatError(`${event.type} replacement sourceEventSeqs omit a shadowed surface node`);\n\treturn [\n\t\t...surface.slice(0, start),\n\t\tevent.seq,\n\t\t...surface.slice(end + 1)\n\t];\n}\nfunction assertTitleSources(events, event, data, validateFramedText) {\n\tconst seqs = data[\"messageSeqs\"];\n\tif (event.type === \"session/title\") {\n\t\tconst titleSource = releasedV0Record(data[\"source\"], `session/title ${event.seq} source`);\n\t\tif (seqs.length === 0 !== (titleSource[\"kind\"] === \"user\")) throw new SessionFormatError(`session/title ${event.seq} messageSeqs must be empty exactly for a user title`);\n\t}\n\tconst selected = [];\n\tfor (const seq of seqs) {\n\t\tconst source = events[seq];\n\t\tif (source?.type !== \"user/message\") throw new SessionFormatError(`${event.type} ${event.seq} messageSeqs must cite earlier human user/message events`);\n\t\tconst sourceData = releasedV0Record(source.data, `${source.type} ${seq} data`);\n\t\tif (releasedV0Record(sourceData[\"source\"], `${source.type} ${seq} source`)[\"kind\"] !== \"user\") throw new SessionFormatError(`${event.type} ${event.seq} messageSeqs must cite earlier human user/message events`);\n\t\tconst content = sourceData[\"content\"];\n\t\tselected.push({\n\t\t\tseq,\n\t\t\ttext: content.flatMap((block) => block[\"type\"] === \"text\" && typeof block[\"text\"] === \"string\" ? [block[\"text\"]] : []).join(\"\\n\")\n\t\t});\n\t}\n\tif (event.type === \"session/title-llm-request\") {\n\t\tconst messages = data[\"messages\"];\n\t\tconst expected = `Generate the session title from this JSON array of human messages:\\n${JSON.stringify(selected)}`;\n\t\tconst message = messages[0];\n\t\tconst content = message?.[\"content\"];\n\t\tconst source = message === void 0 ? void 0 : releasedV0Record(message[\"source\"], \"session/title-llm-request message source\");\n\t\tif (messages.length !== 1 || message?.[\"role\"] !== \"user\" || content?.length !== 1 || source?.[\"kind\"] !== \"plugin\" || source[\"plugin\"] !== \"dsh-session-title-llm\") throw new SessionFormatError(\"session/title-llm-request messages do not represent messageSeqs\");\n\t\tconst framed = content[0];\n\t\tif (framed === void 0 || framed[\"type\"] !== \"text\" || validateFramedText && framed[\"text\"] !== expected) throw new SessionFormatError(\"session/title-llm-request messages do not represent messageSeqs\");\n\t}\n}\nfunction assertCompactionOwner(open, data, type) {\n\tif (open === void 0 || data[\"compactionId\"] !== open.id || data[\"sourceCommandId\"] !== open.sourceCommandId) throw new SessionFormatError(`${type} has no matching compaction/start`);\n}\nfunction assertCompactionTurn(owner, openTurn, type) {\n\tif (owner === null ? openTurn !== null : owner !== openTurn) throw new SessionFormatError(`${type} does not match the open turn`);\n}\nfunction assertCurrentSurfaceSpan(surface, data, type) {\n\tconst range = data[\"shadowedRange\"];\n\tconst seqs = data[\"shadowedSeqs\"];\n\tconst start = surface.indexOf(range.start);\n\tconst end = surface.indexOf(range.end);\n\tconst expected = start < 0 || end < start ? [] : surface.slice(start, end + 1);\n\tif (expected.length !== seqs.length || expected.some((seq, index) => seq !== seqs[index])) throw new SessionFormatError(`${type} shadowedSeqs do not name an exact current surface span`);\n}\n//#endregion\nexport { RELEASED_V0_EVENT_DISPOSITIONS, RELEASED_V0_EVENT_TYPES, assertReleasedArtifactRelationships, assertReleasedEventPayload, assertReleasedPayloadSemantics, assertReleasedSurfaceMetadata, assertReleasedV1Header, defineReleasedPayloadDisposition, isReleasedAssistantChunkRun, releasedV0SessionFormatCodec, releasedV1SessionFormatCodec, restoreReleasedV1Artifact, sessionFormatV0ToV1 };\n", "import { RELEASED_V0_EVENT_DISPOSITIONS, assertReleasedArtifactRelationships, assertReleasedEventPayload, assertReleasedV1Header, defineReleasedPayloadDisposition, isReleasedAssistantChunkRun, releasedV1SessionFormatCodec } from \"@deepseek-ai/dsh-session-format-v0-to-v1\";\nimport { SessionFormatError, SessionFormatUnsupportedMigrationError, defineSessionFormatMigration, sessionFormatCount, sessionFormatSafeInteger, snapshotSessionFormatJson } from \"@deepseek-ai/dsh-session-format\";\nimport { isAbsolute } from \"node:path\";\nimport { AssistantStreamAccumulator } from \"@deepseek-ai/dsh-llm\";\n//#region lib/types/dispositions.js\nconst retained = Object.fromEntries(Object.entries(RELEASED_V0_EVENT_DISPOSITIONS).filter(([type]) => type !== \"assistant/chunk\" && type !== \"assistant/message\" && type !== \"session-log-deepseek/delivery-accepted\" && type !== \"session/end-seed\"));\n/** Exact top-level event and payload-member inventory frozen for released v2. */\nconst RELEASED_V2_EVENT_DISPOSITIONS = Object.freeze({\n\t...retained,\n\t\"assistant/attempt\": defineReleasedPayloadDisposition([\n\t\t\"turn\",\n\t\t\"step\",\n\t\t\"stream\"\n\t]),\n\t\"assistant/message\": defineReleasedPayloadDisposition([\n\t\t\"turn\",\n\t\t\"step\",\n\t\t\"message\",\n\t\t\"stream\"\n\t], [\"usage\", \"interrupted\"]),\n\t\"session-log-deepseek/delivery-accepted\": defineReleasedPayloadDisposition([\"sessionId\", \"throughSeq\"], [\"sessionFormatVersion\"]),\n\t\"session/end-seed\": defineReleasedPayloadDisposition([], [\"inherited\"])\n});\n/** Stable sorted released-v2 event inventory. */\nconst RELEASED_V2_EVENT_TYPES = Object.freeze(Object.keys(RELEASED_V2_EVENT_DISPOSITIONS).sort((left, right) => left.localeCompare(right, \"en\")));\n//#endregion\n//#region lib/types/validation.js\nconst HEADER_REQUIRED$1 = [\n\t\"version\",\n\t\"id\",\n\t\"createdAt\",\n\t\"isSeeded\",\n\t\"delegationDepth\"\n];\nconst HEADER_OPTIONAL$1 = [\n\t\"cwd\",\n\t\"parentSession\",\n\t\"origin\",\n\t\"agentPreset\"\n];\nconst EVENT_REQUIRED$1 = [\n\t\"type\",\n\t\"seq\",\n\t\"time\",\n\t\"data\"\n];\nconst SURFACE_TYPES = new Set([\n\t\"user/message\",\n\t\"assistant/message\",\n\t\"tool/result\"\n]);\nconst SURFACE_OPTIONAL = [\n\t\"ignorable\",\n\t\"sourceEventSeqs\",\n\t\"surfaceOp\"\n];\nconst LOG_OPTIONAL = [\"ignorable\"];\nconst RELEASED_V2_RELATIONSHIP_EXTENSIONS = {\n\tstepEvents: new Set([\"assistant/attempt\"]),\n\tpreservedSourceTitleRequestText: true\n};\n/**\n* Validate the exact logical header written by released v2.\n* @param header - decoded released-v2 Session header.\n* @throws {SessionFormatError} when the header is not an exact released-v2 value.\n*/\nfunction assertReleasedV2Header(header) {\n\tconst record = releasedV2Record(header, \"format v2 header\");\n\tassertReleasedV2Keys(record, HEADER_REQUIRED$1, HEADER_OPTIONAL$1, \"format v2 header\");\n\tif (record[\"version\"] !== 2) throw new SessionFormatError(\"expected format v2 header\");\n\tif (typeof record[\"id\"] !== \"string\") throw new SessionFormatError(\"format v2 header id must be a string\");\n\tsessionFormatCount(record[\"createdAt\"], \"format v2 header createdAt\");\n\tsessionFormatCount(record[\"delegationDepth\"], \"format v2 header delegationDepth\");\n\tif (typeof record[\"isSeeded\"] !== \"boolean\") throw new SessionFormatError(\"format v2 header isSeeded must be boolean\");\n\tif (record[\"cwd\"] !== void 0 && (typeof record[\"cwd\"] !== \"string\" || !isAbsolute(record[\"cwd\"]))) throw new SessionFormatError(\"format v2 header cwd must be absolute\");\n\tfor (const key of [\"parentSession\", \"agentPreset\"]) if (record[key] !== void 0 && typeof record[key] !== \"string\") throw new SessionFormatError(`format v2 header ${key} must be a string`);\n\tif (record[\"origin\"] !== void 0 && record[\"origin\"] !== \"subagent\") throw new SessionFormatError(\"format v2 header origin must be \\\"subagent\\\"\");\n}\nfunction validateReleasedV2Artifact(artifact, mode, knownEventTypes, relationshipHeaderVersion = artifact.header.version) {\n\tassertReleasedV2Header(artifact.header);\n\tconst cut = sessionFormatCount(artifact.inheritedEventCount, \"format v2 inherited event count\");\n\tif (cut > artifact.events.length) throw new SessionFormatError(\"format v2 inherited event count exceeds its events\");\n\tif (!artifact.header.isSeeded && cut !== 0) throw new SessionFormatError(\"unseeded format v2 Session has inherited events\");\n\tlet lastInheritedMarker;\n\tfor (const [index, event] of artifact.events.entries()) {\n\t\tconst record = releasedV2Record(event, `format v2 event ${index}`);\n\t\tconst type = record[\"type\"];\n\t\tif (typeof type !== \"string\") throw new SessionFormatError(`format v2 event ${index} type must be a string`);\n\t\tconst disposition = RELEASED_V2_EVENT_DISPOSITIONS[type];\n\t\tconst installed = knownEventTypes?.has(type) === true;\n\t\tconst ignorableUnknown = disposition === void 0 && record[\"ignorable\"] === true;\n\t\tif (mode === \"current\" && disposition === void 0 && !installed && !ignorableUnknown) throw new SessionFormatUnsupportedMigrationError(`format v2 contains unknown event type ${JSON.stringify(type)} at seq ${index}`);\n\t\tconst surface = disposition !== void 0 && SURFACE_TYPES.has(type);\n\t\tassertReleasedV2Keys(record, EVENT_REQUIRED$1, mode === \"physical\" || disposition === void 0 ? SURFACE_OPTIONAL : surface ? SURFACE_OPTIONAL : LOG_OPTIONAL, `format v2 event ${index}`);\n\t\tif (record[\"seq\"] !== index) throw new SessionFormatError(`format v2 event ${index} is not dense`);\n\t\tsessionFormatSafeInteger(record[\"time\"], `format v2 event ${index} time`);\n\t\tif (record[\"ignorable\"] !== void 0 && record[\"ignorable\"] !== true) throw new SessionFormatError(`format v2 event ${index} ignorable must be true when present`);\n\t\tif (type === \"session/end-seed\") {\n\t\t\tif (releasedV2Record(event.data, `session/end-seed ${index} data`)[\"inherited\"] === true) lastInheritedMarker = index;\n\t\t}\n\t}\n\tif (artifact.header.isSeeded && lastInheritedMarker !== cut) throw new SessionFormatError(\"format v2 seeded header disagrees with its last inherited end-seed marker\");\n\tif (!artifact.header.isSeeded && lastInheritedMarker !== void 0) throw new SessionFormatError(\"format v2 unseeded Session contains an inherited end-seed marker\");\n\tif (mode === \"current\") assertReleasedArtifactRelationships({\n\t\t...artifact,\n\t\theader: {\n\t\t\t...artifact.header,\n\t\t\tversion: relationshipHeaderVersion\n\t\t}\n\t}, RELEASED_V2_RELATIONSHIP_EXTENSIONS);\n}\n/**\n* Require one released-v2 value to be a JSON object.\n* @param value - value to narrow.\n* @param label - diagnostic subject.\n* @returns the narrowed object.\n*/\nfunction releasedV2Record(value, label) {\n\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) throw new SessionFormatError(`${label} must be an object`);\n\treturn value;\n}\n/**\n* Require one released-v2 object to contain exactly the admitted keys.\n* @param value - object to inspect.\n* @param required - keys that must be present.\n* @param optional - additional keys that may be present.\n* @param label - diagnostic subject.\n*/\nfunction assertReleasedV2Keys(value, required, optional, label) {\n\tconst allowed = new Set([...required, ...optional]);\n\tconst missing = required.find((key) => !Object.hasOwn(value, key));\n\tif (missing !== void 0) throw new SessionFormatError(`${label} lacks required field ${missing}`);\n\tconst unexpected = Object.keys(value).find((key) => !allowed.has(key));\n\tif (unexpected !== void 0) throw new SessionFormatError(`${label} has unexpected field ${unexpected}`);\n}\n/**\n* Restore and validate one decoded released-v2 artifact.\n* @param artifact - detached vocabulary-restored artifact.\n* @param knownEventTypes - event types understood by the installed current Session package.\n* @param relationshipHeaderVersion - logical generation whose version-sensitive relationships are checked.\n* @returns the same validated artifact.\n*/\nfunction restoreReleasedV2Artifact(artifact, knownEventTypes, relationshipHeaderVersion = artifact.header.version) {\n\tvalidateReleasedV2Artifact(artifact, \"current\", knownEventTypes, relationshipHeaderVersion);\n\treturn artifact;\n}\n//#endregion\n//#region lib/types/codec.js\nconst HEADER_REQUIRED = [\n\t\"type\",\n\t\"version\",\n\t\"id\",\n\t\"createdAt\",\n\t\"isSeeded\",\n\t\"delegationDepth\"\n];\nconst HEADER_OPTIONAL = [\n\t\"cwd\",\n\t\"parentSession\",\n\t\"origin\",\n\t\"agentPreset\"\n];\nconst EVENT_REQUIRED = [\n\t\"type\",\n\t\"seq\",\n\t\"time\",\n\t\"data\"\n];\nconst EVENT_OPTIONAL = [\n\t\"ignorable\",\n\t\"sourceEventSeqs\",\n\t\"surfaceOp\"\n];\nconst EVENT_KEYS = new Set([...EVENT_REQUIRED, ...EVENT_OPTIONAL]);\n/** Frozen physical JSON codec for released v2. */\nconst releasedV2SessionFormatCodec = Object.freeze({\n\tversion: 2,\n\tdecodeHeader(value) {\n\t\treturn decodePhysicalHeader(value);\n\t},\n\tcreateDecoder(headerValue, recovery) {\n\t\treturn createDecoder(headerValue, recovery);\n\t},\n\tencodeHeader(header, inheritedEventCount) {\n\t\treturn encodeHeader(header, inheritedEventCount);\n\t},\n\tencodeEvent(event) {\n\t\treturn encodeSourceEventRanges(event);\n\t}\n});\nfunction decodePhysicalHeader(value) {\n\tconst record = jsonRecord(snapshotSessionFormatJson(value, \"released v2 physical header\"), \"released v2 physical header\");\n\texactKeys(record, HEADER_REQUIRED, HEADER_OPTIONAL, \"released v2 physical header\");\n\tif (record[\"type\"] !== \"session\" || record[\"version\"] !== 2) throw new SessionFormatError(\"expected released v2 physical Session header\");\n\tif (typeof record[\"id\"] !== \"string\") throw new SessionFormatError(\"released v2 header id must be a string\");\n\tconst createdAt = sessionFormatCount(record[\"createdAt\"], \"released v2 header createdAt\");\n\tconst delegationDepth = sessionFormatCount(record[\"delegationDepth\"], \"released v2 header delegationDepth\");\n\tif (typeof record[\"isSeeded\"] !== \"boolean\") throw new SessionFormatError(\"released v2 header isSeeded must be boolean\");\n\tfor (const key of [\n\t\t\"cwd\",\n\t\t\"parentSession\",\n\t\t\"agentPreset\"\n\t]) if (record[key] !== void 0 && typeof record[key] !== \"string\") throw new SessionFormatError(`released v2 header ${key} must be a string`);\n\tif (record[\"origin\"] !== void 0 && record[\"origin\"] !== \"subagent\") throw new SessionFormatError(\"released v2 header origin must be \\\"subagent\\\"\");\n\tconst header = snapshotSessionFormatJson({\n\t\tversion: 2,\n\t\tid: record[\"id\"],\n\t\tcreatedAt,\n\t\t...record[\"cwd\"] === void 0 ? {} : { cwd: record[\"cwd\"] },\n\t\t...record[\"parentSession\"] === void 0 ? {} : { parentSession: record[\"parentSession\"] },\n\t\tisSeeded: record[\"isSeeded\"],\n\t\t...record[\"origin\"] === void 0 ? {} : { origin: record[\"origin\"] },\n\t\tdelegationDepth,\n\t\t...record[\"agentPreset\"] === void 0 ? {} : { agentPreset: record[\"agentPreset\"] }\n\t}, \"released v2 logical header\");\n\tassertReleasedV2Header(header);\n\treturn header;\n}\nfunction createDecoder(headerValue, recovery) {\n\tconst header = decodePhysicalHeader(headerValue);\n\tlet rowIndex = 0;\n\tlet eventCount = 0;\n\tlet inheritedEventCount;\n\tlet issue;\n\treturn {\n\t\theader,\n\t\tdecodeRow(value, context) {\n\t\t\tconst currentRow = rowIndex;\n\t\t\trowIndex += 1;\n\t\t\tlet event;\n\t\t\ttry {\n\t\t\t\tevent = decodeEvent(value, currentRow);\n\t\t\t} catch (error) {\n\t\t\t\tconst current = error instanceof SessionFormatError ? error : new SessionFormatError(`released v2 row ${currentRow} is malformed`, { cause: error });\n\t\t\t\tif (recovery === \"strict\") throw current;\n\t\t\t\tissue ??= current;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (issue !== void 0) {\n\t\t\t\tif (event.type === \"turn/end\") throw issue;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (event.seq !== eventCount) {\n\t\t\t\tconst gap = new SessionFormatError(`released v2 row ${currentRow} has seq gap (expected ${eventCount}, got ${event.seq})`);\n\t\t\t\tif (recovery === \"strict\") throw gap;\n\t\t\t\tissue = gap;\n\t\t\t\tif (event.type === \"turn/end\") throw issue;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\teventCount += 1;\n\t\t\tif (event.type === \"session/end-seed\") {\n\t\t\t\tif (jsonRecord(event.data, `session/end-seed ${event.seq} data`)[\"inherited\"] === true) inheritedEventCount = event.seq;\n\t\t\t}\n\t\t\tcontext.emitEvent(event);\n\t\t},\n\t\tfinish(_context) {\n\t\t\tif (header.isSeeded && inheritedEventCount === void 0) throw new SessionFormatError(\"released v2 seeded Session lacks an inherited end-seed marker\");\n\t\t\tif (!header.isSeeded && inheritedEventCount !== void 0) throw new SessionFormatError(\"released v2 unseeded Session contains an inherited end-seed marker\");\n\t\t\treturn inheritedEventCount ?? 0;\n\t\t}\n\t};\n}\nfunction decodeEvent(value, rowIndex) {\n\tconst record = jsonRecord(value, `released v2 row ${rowIndex}`);\n\tconst missing = EVENT_REQUIRED.find((key) => !Object.hasOwn(record, key));\n\tif (missing !== void 0) throw new SessionFormatError(`released v2 row ${rowIndex} lacks required field ${missing}`);\n\tconst unexpected = Object.keys(record).find((key) => !EVENT_KEYS.has(key));\n\tif (unexpected !== void 0) throw new SessionFormatError(`released v2 row ${rowIndex} has unexpected field ${unexpected}`);\n\tif (typeof record[\"type\"] !== \"string\") throw new SessionFormatError(`released v2 row ${rowIndex} type must be a string`);\n\tsessionFormatSafeInteger(record[\"time\"], `released v2 row ${rowIndex} time`);\n\tif (record[\"ignorable\"] !== void 0 && record[\"ignorable\"] !== true) throw new SessionFormatError(`released v2 row ${rowIndex} ignorable must be true when present`);\n\tif (record[\"sourceEventSeqs\"] === void 0) return record;\n\tconst seq = sessionFormatCount(record[\"seq\"], `released v2 row ${rowIndex} seq`);\n\treturn {\n\t\t...record,\n\t\tsourceEventSeqs: decodeSeqRanges(record[\"sourceEventSeqs\"], seq)\n\t};\n}\nfunction encodeHeader(header, inheritedEventCount) {\n\tassertReleasedV2Header(header);\n\tconst cut = sessionFormatCount(inheritedEventCount, \"format v2 inherited event count\");\n\tif (!header.isSeeded && cut !== 0) throw new SessionFormatError(\"unseeded format v2 Session has inherited events\");\n\treturn {\n\t\ttype: \"session\",\n\t\tversion: 2,\n\t\tid: header.id,\n\t\tcreatedAt: header.createdAt,\n\t\t...header.cwd === void 0 ? {} : { cwd: header.cwd },\n\t\t...header.parentSession === void 0 ? {} : { parentSession: header.parentSession },\n\t\tisSeeded: header.isSeeded,\n\t\t...header.origin === void 0 ? {} : { origin: header.origin },\n\t\tdelegationDepth: header.delegationDepth,\n\t\t...header.agentPreset === void 0 ? {} : { agentPreset: header.agentPreset }\n\t};\n}\nfunction encodeSourceEventRanges(event) {\n\tif (event.sourceEventSeqs === void 0) return event;\n\treturn {\n\t\t...event,\n\t\tsourceEventSeqs: encodeSeqRanges(event.sourceEventSeqs)\n\t};\n}\nfunction decodeSeqRanges(value, maxEntries) {\n\tif (!Array.isArray(value)) throw new SessionFormatError(\"sourceEventSeqs must be an array\");\n\tconst output = [];\n\tlet hasRange = false;\n\tfor (const entry of value) {\n\t\tif (!Array.isArray(entry)) {\n\t\t\toutput.push(sessionFormatCount(entry, \"sourceEventSeqs member\"));\n\t\t\tcontinue;\n\t\t}\n\t\tif (entry.length !== 2) throw new SessionFormatError(\"sourceEventSeqs range must be a [start, end] pair\");\n\t\tconst start = sessionFormatCount(entry[0], \"sourceEventSeqs range start\");\n\t\tconst end = sessionFormatCount(entry[1], \"sourceEventSeqs range end\");\n\t\tif (start > end || end >= maxEntries || end - start + 1 > maxEntries - output.length) throw new SessionFormatError(\"sourceEventSeqs range exceeds its event seq\");\n\t\tfor (let current = start; current <= end; current += 1) output.push(current);\n\t\thasRange = true;\n\t}\n\tconst seen = /* @__PURE__ */ new Set();\n\tfor (const source of output) {\n\t\tif (source >= maxEntries || seen.has(source)) throw new SessionFormatError(\"sourceEventSeqs ranges must contain unique earlier seqs\");\n\t\tseen.add(source);\n\t}\n\tif (hasRange && output.some((source, index) => index > 0 && source <= output[index - 1])) throw new SessionFormatError(\"sourceEventSeqs ranges must be strictly increasing\");\n\treturn output;\n}\nfunction encodeSeqRanges(values) {\n\tif (values.some((value, index) => index > 0 && value <= values[index - 1])) return [...values];\n\tconst output = [];\n\tfor (let index = 0; index < values.length;) {\n\t\tconst start = values[index];\n\t\tlet end = start;\n\t\twhile (index + 1 < values.length && values[index + 1] === end + 1) {\n\t\t\tindex += 1;\n\t\t\tend += 1;\n\t\t}\n\t\toutput.push(end - start >= 2 ? [start, end] : start);\n\t\tif (end - start === 1) output.push(end);\n\t\tindex += 1;\n\t}\n\treturn output;\n}\nfunction jsonRecord(value, label) {\n\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) throw new SessionFormatError(`${label} must be an object`);\n\treturn value;\n}\nfunction exactKeys(record, required, optional, label) {\n\tconst allowed = new Set([...required, ...optional]);\n\tconst missing = required.find((key) => !Object.hasOwn(record, key));\n\tif (missing !== void 0) throw new SessionFormatError(`${label} lacks ${missing}`);\n\tconst unexpected = Object.keys(record).find((key) => !allowed.has(key));\n\tif (unexpected !== void 0) throw new SessionFormatError(`${label} has unexpected field ${unexpected}`);\n}\n//#endregion\n//#region lib/types/migration.js\nconst CHUNK_EVENT_REQUIRED = [\n\t\"type\",\n\t\"seq\",\n\t\"time\",\n\t\"data\"\n];\nconst CHUNK_EVENT_OPTIONAL = [\n\t\"ignorable\",\n\t\"sourceEventSeqs\",\n\t\"surfaceOp\"\n];\nconst CHUNK_EVENT_KEYS = new Set([...CHUNK_EVENT_REQUIRED, ...CHUNK_EVENT_OPTIONAL]);\n/** Adjacent migration that embeds released-v1 top-level Assistant chunks into v2 attempt events. */\nconst sessionFormatV1ToV2 = defineSessionFormatMigration({\n\tname: \"@deepseek-ai/dsh-session-format-v1-to-v2\",\n\tfromVersion: 1,\n\ttoVersion: 2,\n\tmigrateHeader(header) {\n\t\tassertReleasedV1Header(header);\n\t\treturn {\n\t\t\t...header,\n\t\t\tversion: 2\n\t\t};\n\t},\n\tcreateStage(input) {\n\t\treturn input.sourceKind === \"decoded\" ? new DecodedReleasedV1ToV2Stage(input) : new TransformedReleasedV1ToV2Stage(input);\n\t},\n\tvalidateTargetHeader: assertReleasedV2Header\n});\nvar TransformedReleasedV1ToV2Stage = class {\n\tstate;\n\tconstructor(input) {\n\t\tassertReleasedV1Header(input.sourceHeader);\n\t\tthis.state = {\n\t\t\tsourceHeader: input.sourceHeader,\n\t\t\tsourceCut: sessionFormatCount(input.sourceInheritedEventCount, \"format v1 inherited event count\"),\n\t\t\tmapping: /* @__PURE__ */ new Map(),\n\t\t\tlegacyTurns: legacyTurnState(),\n\t\t\tpending: void 0,\n\t\t\ttargetSeq: 0,\n\t\t\ttargetCut: input.sourceHeader.isSeeded ? void 0 : 0,\n\t\t\tlastTime: input.sourceHeader.createdAt\n\t\t};\n\t}\n\ttransformEvent(event, context) {\n\t\ttransformReleasedEvent(this.state, event, context);\n\t}\n\ttransformRun(run, context) {\n\t\ttransformReleasedRun(this.state, run, context);\n\t}\n\tfinish(context) {\n\t\treturn finishMigration(this.state, context);\n\t}\n};\nvar DecodedReleasedV1ToV2Stage = class extends TransformedReleasedV1ToV2Stage {\n\ttransformEvent(event, context) {\n\t\tif (event.type !== \"assistant/chunk\" && RELEASED_V0_EVENT_DISPOSITIONS[event.type] !== void 0) assertReleasedEventPayload(event, 1);\n\t\tsuper.transformEvent(event, context);\n\t}\n};\nfunction transformReleasedEvent(state, event, context) {\n\tif (event.type === \"assistant/chunk\") assertChunkEnvelope(event);\n\tif (RELEASED_V0_EVENT_DISPOSITIONS[event.type] === void 0) throw refusal(`format v1 contains unknown event type ${JSON.stringify(event.type)} at seq ${event.seq}`);\n\tconst interrupted = legacyInterruptedTurn(state.legacyTurns, event);\n\tif (event.type === \"turn/start\" && state.legacyTurns.openTurn !== null && interrupted === void 0) throw refusal(`turn/start ${JSON.stringify(record(event.data)[\"turn\"])} does not close the prior turn`);\n\tassertSourceDeliveryMarker(state, event);\n\tobserveLegacyTurn(state.legacyTurns, event);\n\tstate.lastTime = event.time;\n\tif (interrupted !== void 0) {\n\t\tfinishAttempt(state, context);\n\t\temitGenerated(state, event.seq, interrupted, context);\n\t}\n\tconst legacyGoal = splitLegacyGoalChange(event);\n\tif (legacyGoal !== void 0) {\n\t\temitGenerated(state, event.seq, legacyGoal.change, context);\n\t\temitSource(state, legacyGoal.message, context);\n\t\treturn;\n\t}\n\tif (event.type === \"assistant/chunk\") {\n\t\ttransformChunk(state, event, context);\n\t\treturn;\n\t}\n\tif (event.type === \"assistant/message\") {\n\t\ttransformMessage(state, event, context);\n\t\treturn;\n\t}\n\tif (closesAttempt(event)) {\n\t\tfinishAttempt(state, context);\n\t\temitSource(state, event, context);\n\t\treturn;\n\t}\n\tif (state.pending !== void 0) {\n\t\tstate.pending.afterLastChunk.push(event);\n\t\treturn;\n\t}\n\temitSource(state, event, context);\n}\nfunction assertChunkEnvelope(event) {\n\tconst unexpected = Object.keys(event).find((key) => !CHUNK_EVENT_KEYS.has(key));\n\tif (unexpected !== void 0) throw refusal(`assistant/chunk ${event.seq} has unexpected member ${unexpected}`);\n\tconst missing = CHUNK_EVENT_REQUIRED.find((key) => !Object.hasOwn(event, key));\n\tif (missing !== void 0) throw refusal(`assistant/chunk ${event.seq} lacks required member ${missing}`);\n\tif (event.ignorable !== void 0 && event.ignorable !== true) throw refusal(`assistant/chunk ${event.seq} ignorable must be true when present`);\n}\nfunction assertSourceDeliveryMarker(state, event) {\n\tif (event.type !== \"session-log-deepseek/delivery-accepted\") return;\n\tconst data = record(event.data);\n\tconst inherited = state.sourceHeader.parentSession !== void 0 && event.seq < state.sourceCut;\n\tif (data[\"sessionFormatVersion\"] === 1 && !inherited && data[\"sessionId\"] !== state.sourceHeader.id) throw refusal(\"current-generation delivery marker names the wrong Session\");\n}\nfunction transformReleasedRun(state, run, context) {\n\tif (!isReleasedAssistantChunkRun(run)) {\n\t\tfor (const event of run.expand()) transformReleasedEvent(state, event, context);\n\t\treturn;\n\t}\n\tstate.legacyTurns.previous = void 0;\n\tstate.lastTime = run.lastTime;\n\tif (state.pending !== void 0 && (state.pending.group.terminal || state.pending.group.turn !== run.turn || state.pending.group.step !== run.step)) finishAttempt(state, context);\n\telse if (state.pending !== void 0) flushBuffered(state, state.pending, context);\n\tstate.pending ??= {\n\t\tgroup: attemptGroup(run.turn, run.step),\n\t\tafterLastChunk: []\n\t};\n\tassertAttemptRange(state, run.firstSeq, run.lastSeq);\n\tflushAccumulator(state.pending.group);\n\tappendStreamRecord(state.pending.group, run.stream, run.lastTime);\n\trecordChunkSpan(state.pending.group, run.firstSeq, run.eventCount, run.lastTime);\n}\nfunction finishMigration(state, context) {\n\tfinishAttempt(state, context);\n\tif (state.sourceHeader.isSeeded && state.targetCut === void 0) {\n\t\tstate.targetCut = state.targetSeq;\n\t\tcontext.emitEvent({\n\t\t\ttype: \"session/end-seed\",\n\t\t\tseq: state.targetSeq,\n\t\t\ttime: state.lastTime,\n\t\t\tdata: { inherited: true }\n\t\t});\n\t\tstate.targetSeq += 1;\n\t}\n\treturn state.targetCut;\n}\nfunction transformChunk(state, event, context) {\n\tconst data = record(event.data);\n\tconst turn = coordinate(data[\"turn\"]);\n\tconst step = coordinate(data[\"step\"]);\n\tconst chunk = record(data[\"chunk\"]);\n\tif (state.pending !== void 0 && (state.pending.group.terminal || state.pending.group.turn !== turn || state.pending.group.step !== step)) finishAttempt(state, context);\n\telse if (state.pending !== void 0) flushBuffered(state, state.pending, context);\n\tstate.pending ??= {\n\t\tgroup: attemptGroup(turn, step),\n\t\tafterLastChunk: []\n\t};\n\tassertAttemptCut(state, state.pending.group, event.seq);\n\tstate.pending.group.accumulator ??= new AssistantStreamAccumulator();\n\tstate.pending.group.accumulator.push({\n\t\ttime: event.time,\n\t\tchunk: data[\"chunk\"]\n\t});\n\trecordChunkSpan(state.pending.group, event.seq, 1, event.time);\n\tif (chunk[\"type\"] === \"finish\") state.pending.group.terminal = true;\n}\nfunction transformMessage(state, event, context) {\n\tconst data = record(event.data);\n\tconst turn = coordinate(data[\"turn\"]);\n\tconst step = coordinate(data[\"step\"]);\n\tconst sources = event.sourceEventSeqs;\n\tconst pending = state.pending;\n\tif (pending !== void 0 && (pending.group.turn !== turn || pending.group.step !== step)) {\n\t\tfinishAttempt(state, context);\n\t\temitSource(state, messageEvent(event, attemptGroup(turn, step)), context);\n\t\treturn;\n\t}\n\tif (!Array.isArray(sources)) {\n\t\tif (pending !== void 0) throw refusal(`assistant/message ${event.seq} does not cite its complete v1 chunk attempt`);\n\t\temitSource(state, messageEvent(event, attemptGroup(turn, step)), context);\n\t\treturn;\n\t}\n\tif (sources.length === 0) {\n\t\tfinishAttempt(state, context);\n\t\temitSource(state, messageEvent(event, attemptGroup(turn, step)), context);\n\t\treturn;\n\t}\n\tif (pending === void 0 || !matchesChunkSources(pending.group, sources)) throw refusal(`assistant/message ${event.seq} chunk references are not one complete ordered attempt`);\n\tassertAttemptCut(state, pending.group, event.seq);\n\tpending.group.terminal = true;\n\tflushBuffered(state, pending, context);\n\temitSource(state, messageEvent(event, pending.group), context);\n\tstate.pending = void 0;\n}\nfunction finishAttempt(state, context) {\n\tconst pending = state.pending;\n\tif (pending === void 0) return;\n\temitGenerated(state, pending.group.lastChunkSeq, attemptEvent(pending.group), context);\n\tflushBuffered(state, pending, context);\n\tstate.pending = void 0;\n}\nfunction flushBuffered(state, pending, context) {\n\tfor (const event of pending.afterLastChunk) emitSource(state, event, context);\n\tpending.afterLastChunk.length = 0;\n}\nfunction emitSource(state, event, context) {\n\tlet source = event;\n\tif (state.sourceHeader.isSeeded && event.seq === state.sourceCut && event.type === \"session/end-seed\") source = {\n\t\t...event,\n\t\tdata: { inherited: true }\n\t};\n\tensureTargetCut(state, event.seq, event.time, source.type, context);\n\tstate.mapping.set(event.seq, state.targetSeq);\n\tcontext.emitEvent(remapReferences(source, state.targetSeq, state.mapping));\n\tstate.targetSeq += 1;\n}\nfunction emitGenerated(state, origin, event, context) {\n\tensureTargetCut(state, origin, event.time, event.type, context);\n\tcontext.emitEvent(remapReferences(event, state.targetSeq, state.mapping));\n\tstate.targetSeq += 1;\n}\nfunction ensureTargetCut(state, origin, time, type, context) {\n\tif (!state.sourceHeader.isSeeded || state.targetCut !== void 0 || origin < state.sourceCut) return;\n\tstate.targetCut = state.targetSeq;\n\tif (origin === state.sourceCut && type === \"session/end-seed\") return;\n\tcontext.emitEvent({\n\t\ttype: \"session/end-seed\",\n\t\tseq: state.targetSeq,\n\t\ttime,\n\t\tdata: { inherited: true }\n\t});\n\tstate.targetSeq += 1;\n}\nfunction assertAttemptCut(state, group, member) {\n\tif ((group.spans[0]?.firstSeq ?? member) < state.sourceCut !== member < state.sourceCut) throw refusal(`inherited Session cut ${state.sourceCut} splits one Assistant attempt`);\n}\nfunction assertAttemptRange(state, first, last) {\n\tif (first < state.sourceCut !== last < state.sourceCut) throw refusal(`inherited Session cut ${state.sourceCut} splits one Assistant attempt`);\n}\nfunction legacyTurnState() {\n\treturn {\n\t\topenTurn: null,\n\t\topenStep: null,\n\t\tprevious: void 0\n\t};\n}\nfunction legacyInterruptedTurn(state, event) {\n\tif (event.type !== \"turn/start\" || state.openTurn === null || state.openStep !== null || coordinate(record(event.data)[\"turn\"]) !== state.openTurn + 1 || state.previous?.type !== \"agent/inbox/spliced\") return void 0;\n\tconst splice = record(state.previous.data);\n\tif (splice[\"target\"] !== \"next-turn\" || !Array.isArray(splice[\"inserted\"]) || splice[\"inserted\"].length === 0) return;\n\treturn {\n\t\ttype: \"turn/end\",\n\t\tseq: event.seq,\n\t\ttime: event.time,\n\t\tdata: {\n\t\t\tturn: state.openTurn,\n\t\t\treason: { kind: \"interrupted\" }\n\t\t}\n\t};\n}\nfunction observeLegacyTurn(state, event) {\n\tconst data = record(event.data);\n\tif (event.type === \"turn/start\") {\n\t\tstate.openTurn = coordinate(data[\"turn\"]);\n\t\tstate.openStep = null;\n\t} else if (event.type === \"turn/end\") {\n\t\tstate.openTurn = null;\n\t\tstate.openStep = null;\n\t} else if (event.type === \"step/start\") state.openStep = coordinate(data[\"step\"]);\n\telse if (event.type === \"step/end\") state.openStep = null;\n\tstate.previous = event;\n}\nfunction splitLegacyGoalChange(event) {\n\tif (event.type !== \"user/message\") return void 0;\n\tconst data = record(event.data);\n\tconst source = record(data[\"source\"]);\n\tif (source[\"kind\"] !== \"goal\" || source[\"change\"] === void 0) return void 0;\n\treturn {\n\t\tchange: {\n\t\t\ttype: \"goal/change\",\n\t\t\tseq: event.seq,\n\t\t\ttime: event.time,\n\t\t\tdata: source[\"change\"]\n\t\t},\n\t\tmessage: {\n\t\t\t...event,\n\t\t\tdata: {\n\t\t\t\t...data,\n\t\t\t\tsource: {\n\t\t\t\t\tkind: \"plugin\",\n\t\t\t\t\tplugin: \"goal\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\nfunction closesAttempt(event) {\n\treturn event.type === \"turn/end\" || event.type === \"step/end\" || event.type === \"llm/retry\" || event.type === \"llm/retry-started\";\n}\nfunction attemptGroup(turn, step) {\n\treturn {\n\t\tturn,\n\t\tstep,\n\t\tspans: [],\n\t\tstream: [],\n\t\tchunkCount: 0,\n\t\tterminal: false\n\t};\n}\nfunction recordChunkSpan(group, firstSeq, eventCount, lastTime) {\n\tconst previous = group.spans.at(-1);\n\tif (previous !== void 0 && previous.firstSeq + previous.eventCount === firstSeq) previous.eventCount += eventCount;\n\telse group.spans.push({\n\t\tfirstSeq,\n\t\teventCount\n\t});\n\tgroup.chunkCount += eventCount;\n\tgroup.lastChunkSeq = firstSeq + eventCount - 1;\n\tgroup.lastChunkTime = lastTime;\n}\nfunction matchesChunkSources(group, sources) {\n\tif (sources.length !== group.chunkCount) return false;\n\tlet index = 0;\n\tfor (const span of group.spans) for (let offset = 0; offset < span.eventCount; offset += 1) {\n\t\tif (sources[index] !== span.firstSeq + offset) return false;\n\t\tindex += 1;\n\t}\n\treturn true;\n}\nfunction recordLastTime(record) {\n\tif (record.type === \"chunk\") return record.time;\n\treturn record.dt.reduce((time, gap) => time + gap, record.time0);\n}\nfunction mutableRecord(record) {\n\tif (record.type === \"chunk\") return record;\n\tif (record.type === \"tool-call-chunks\") return {\n\t\t...record,\n\t\tdt: [...record.dt],\n\t\targs: [...record.args]\n\t};\n\treturn {\n\t\t...record,\n\t\tdt: [...record.dt],\n\t\ttexts: [...record.texts]\n\t};\n}\nfunction appendStreamRecord(group, source, lastTime, owned = true) {\n\tconst previous = group.stream.at(-1);\n\tif (previous === void 0 || source.type === \"chunk\" || previous.record.type !== source.type) {\n\t\tgroup.stream.push({\n\t\t\trecord: owned ? source : mutableRecord(source),\n\t\t\tlastTime\n\t\t});\n\t\treturn;\n\t}\n\tconst gap = source.time0 - previous.lastTime;\n\tif (previous.record.index !== source.index || !Number.isSafeInteger(gap)) {\n\t\tgroup.stream.push({\n\t\t\trecord: owned ? source : mutableRecord(source),\n\t\t\tlastTime\n\t\t});\n\t\treturn;\n\t}\n\tif (source.type === \"tool-call-chunks\") {\n\t\tconst target = previous.record;\n\t\tif (target.id !== source.id || target.name !== source.name) {\n\t\t\tgroup.stream.push({\n\t\t\t\trecord: owned ? source : mutableRecord(source),\n\t\t\t\tlastTime\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\ttarget.dt.push(gap);\n\t\tfor (const value of source.dt) target.dt.push(value);\n\t\tfor (const value of source.args) target.args.push(value);\n\t} else {\n\t\tconst target = previous.record;\n\t\ttarget.dt.push(gap);\n\t\tfor (const value of source.dt) target.dt.push(value);\n\t\tfor (const value of source.texts) target.texts.push(value);\n\t}\n\tprevious.lastTime = lastTime;\n}\nfunction flushAccumulator(group) {\n\tconst accumulator = group.accumulator;\n\tif (accumulator === void 0) return;\n\tfor (const record of accumulator.snapshot()) appendStreamRecord(group, record, recordLastTime(record), false);\n\tdelete group.accumulator;\n}\nfunction streamOf(group) {\n\tflushAccumulator(group);\n\treturn group.stream.map(({ record }) => record);\n}\nfunction messageEvent(source, group) {\n\tconst data = record(source.data);\n\tconst { sourceEventSeqs: _sourceEventSeqs, ...event } = source;\n\treturn {\n\t\t...event,\n\t\tdata: {\n\t\t\t...data,\n\t\t\tstream: streamOf(group)\n\t\t}\n\t};\n}\nfunction attemptEvent(group) {\n\treturn {\n\t\ttype: \"assistant/attempt\",\n\t\tseq: group.lastChunkSeq,\n\t\ttime: group.lastChunkTime,\n\t\tdata: {\n\t\t\tturn: group.turn,\n\t\t\tstep: group.step,\n\t\t\tstream: streamOf(group)\n\t\t}\n\t};\n}\nfunction remapReferences(source, targetSeq, mapping) {\n\tconst { sourceEventSeqs, surfaceOp, ...event } = source;\n\tconst sources = sourceEventSeqs === void 0 ? {} : { sourceEventSeqs: mapList(numberArray(sourceEventSeqs), mapping, `${source.type} ${source.seq} sources`) };\n\tlet operation = surfaceOp;\n\tif (surfaceOp !== void 0 && surfaceOp !== \"append\") {\n\t\tconst replacement = record(surfaceOp);\n\t\toperation = {\n\t\t\top: \"replace\",\n\t\t\tstart: mapOne(coordinate(replacement[\"start\"]), mapping, `${source.type} ${source.seq} surface start`),\n\t\t\tend: mapOne(coordinate(replacement[\"end\"]), mapping, `${source.type} ${source.seq} surface end`)\n\t\t};\n\t}\n\treturn {\n\t\t...event,\n\t\tseq: targetSeq,\n\t\tdata: remapPayloadReferences(source, mapping),\n\t\t...sources,\n\t\t...operation === void 0 ? {} : { surfaceOp: operation }\n\t};\n}\nfunction remapPayloadReferences(event, mapping) {\n\tconst data = record(event.data);\n\tswitch (event.type) {\n\t\tcase \"command/done\": return data[\"sourceEventSeq\"] === void 0 ? data : {\n\t\t\t...data,\n\t\t\tsourceEventSeq: mapOne(coordinate(data[\"sourceEventSeq\"]), mapping, `command/done ${event.seq} sourceEventSeq`)\n\t\t};\n\t\tcase \"compaction/prune\":\n\t\tcase \"compaction/summary\": {\n\t\t\tconst range = record(data[\"shadowedRange\"]);\n\t\t\treturn {\n\t\t\t\t...data,\n\t\t\t\tshadowedRange: {\n\t\t\t\t\tstart: mapOne(coordinate(range[\"start\"]), mapping, `${event.type} ${event.seq} shadowedRange start`),\n\t\t\t\t\tend: mapOne(coordinate(range[\"end\"]), mapping, `${event.type} ${event.seq} shadowedRange end`)\n\t\t\t\t},\n\t\t\t\tshadowedSeqs: mapList(numberArray(data[\"shadowedSeqs\"]), mapping, `${event.type} ${event.seq} shadowedSeqs`)\n\t\t\t};\n\t\t}\n\t\tcase \"session/title\":\n\t\tcase \"session/title-llm-request\": return {\n\t\t\t...data,\n\t\t\tmessageSeqs: mapList(numberArray(data[\"messageSeqs\"]), mapping, `${event.type} ${event.seq} messageSeqs`)\n\t\t};\n\t\tdefault: return data;\n\t}\n}\nfunction mapList(values, mapping, label) {\n\treturn values.map((value) => mapOne(value, mapping, label));\n}\nfunction mapOne(value, mapping, label) {\n\tconst mapped = mapping.get(value);\n\tif (mapped === void 0) throw refusal(`${label} targets consumed assistant/chunk ${value}`);\n\treturn mapped;\n}\nfunction record(value) {\n\treturn value;\n}\nfunction numberArray(value) {\n\treturn value;\n}\nfunction coordinate(value) {\n\treturn value;\n}\nfunction refusal(message) {\n\treturn new SessionFormatUnsupportedMigrationError(message);\n}\n//#endregion\nexport { RELEASED_V2_EVENT_DISPOSITIONS, RELEASED_V2_EVENT_TYPES, assertReleasedV2Header, releasedV1SessionFormatCodec, releasedV2SessionFormatCodec, restoreReleasedV2Artifact, sessionFormatV1ToV2 };\n", "/**\n * Lossless compact representation of one model-stream attempt, plus record-level\n * readers that answer common consumer questions without materializing members.\n * Readers trust the static record type; expandAssistantStream is the validating\n * path for records read at a durable boundary.\n */\nimport { assertNever, deepFreeze, snapshotJsonValue } from '@deepseek-ai/dsh-util-values';\nimport { BlockAssembler } from \"./assembler.js\";\nfunction safeTime(value) {\n if (!Number.isSafeInteger(value))\n throw new TypeError(`Assistant stream time must be a safe integer, got ${String(value)}`);\n return value;\n}\nfunction safeIndex(value, label) {\n if (!Number.isSafeInteger(value) || value < 0 || Object.is(value, -0)) {\n throw new TypeError(`${label} index must be a non-negative safe integer`);\n }\n return value;\n}\nfunction snapshotChunk(chunk) {\n const snapshot = snapshotJsonValue(chunk);\n if (snapshot === undefined)\n throw new TypeError('Assistant stream chunk must be losslessly JSON-serializable');\n return snapshot;\n}\nfunction safeGap(previous, next) {\n const gap = next - previous;\n return Number.isSafeInteger(gap) && previous + gap === next ? gap : undefined;\n}\n/** Incrementally compacts one attempt without retaining a second raw-chunk list. */\nexport class AssistantStreamAccumulator {\n records = [];\n /**\n * Add one timed chunk to the compact attempt stream.\n * @param value - model chunk and its original Session timestamp.\n * @returns a detached immutable copy for assembly and live publication.\n */\n push(value) {\n const time = safeTime(value.time);\n const chunk = snapshotChunk(value.chunk);\n const timed = deepFreeze({ time, chunk });\n const previous = this.records.at(-1);\n switch (chunk.type) {\n case 'text-delta':\n case 'reasoning-delta': {\n safeIndex(chunk.index, chunk.type);\n if (typeof chunk.text !== 'string')\n throw new TypeError(`${chunk.type} text must be a string`);\n const type = chunk.type === 'text-delta' ? 'text-chunks' : 'reasoning-chunks';\n const gap = previous !== undefined && previous.type === type ? safeGap(previous.lastTime, time) : undefined;\n if (previous !== undefined && previous.type === type && previous.index === chunk.index && gap !== undefined) {\n previous.dt.push(gap);\n previous.texts.push(chunk.text);\n previous.lastTime = time;\n }\n else {\n this.records.push({ type, time0: time, index: chunk.index, dt: [], texts: [chunk.text], lastTime: time });\n }\n return timed;\n }\n case 'tool-call-delta': {\n safeIndex(chunk.index, chunk.type);\n if (typeof chunk.id !== 'string')\n throw new TypeError('tool-call-delta id must be a string');\n if (Object.hasOwn(chunk, 'name') && typeof chunk.name !== 'string') {\n throw new TypeError('tool-call-delta name must be a string');\n }\n if (typeof chunk.argumentsDelta !== 'string') {\n throw new TypeError('tool-call-delta argumentsDelta must be a string');\n }\n if (chunk.id.length === 0 || chunk.name === '') {\n this.records.push({ type: 'chunk', time, chunk });\n return timed;\n }\n const gap = previous?.type === 'tool-call-chunks' ? safeGap(previous.lastTime, time) : undefined;\n const sameName = previous?.type === 'tool-call-chunks'\n && Object.hasOwn(previous, 'name') === Object.hasOwn(chunk, 'name')\n && previous.name === chunk.name;\n if (previous?.type === 'tool-call-chunks'\n && previous.index === chunk.index\n && previous.id === chunk.id\n && sameName\n && gap !== undefined) {\n previous.dt.push(gap);\n previous.args.push(chunk.argumentsDelta);\n previous.lastTime = time;\n }\n else {\n this.records.push({\n type: 'tool-call-chunks',\n time0: time,\n index: chunk.index,\n dt: [],\n id: chunk.id,\n ...Object.hasOwn(chunk, 'name') ? { name: chunk.name } : {},\n args: [chunk.argumentsDelta],\n lastTime: time,\n });\n }\n return timed;\n }\n case 'block-start':\n case 'block-end':\n case 'usage':\n case 'finish':\n this.records.push({ type: 'chunk', time, chunk });\n return timed;\n default:\n return assertNever(chunk, 'AssistantStreamAccumulator.push');\n }\n }\n /**\n * Return the current compact attempt stream.\n * @returns a detached immutable record list suitable for a durable event.\n */\n snapshot() {\n const records = this.records.map((record) => {\n if (record.type === 'chunk')\n return { ...record };\n const { lastTime: _lastTime, ...durable } = record;\n if (durable.type === 'tool-call-chunks') {\n return { ...durable, dt: [...durable.dt], args: [...durable.args] };\n }\n return { ...durable, dt: [...durable.dt], texts: [...durable.texts] };\n });\n return deepFreeze(records);\n }\n}\n/**\n * Expand compact records into the exact timed chunk sequence.\n * @param stream - compact records from one durable Assistant settlement.\n * @returns detached timed chunks with every original delta boundary preserved.\n * @throws {TypeError} when a record or reconstructed timestamp is invalid.\n */\nexport function expandAssistantStream(stream) {\n const chunks = [];\n for (const candidate of stream) {\n const record = validateRecord(candidate);\n if (record.type === 'chunk') {\n chunks.push({ time: record.time, chunk: record.chunk });\n continue;\n }\n const members = record.type === 'tool-call-chunks' ? record.args : record.texts;\n let time = record.time0;\n for (let index = 0; index < members.length; index += 1) {\n if (index > 0)\n time += record.dt[index - 1];\n let chunk;\n if (record.type === 'text-chunks') {\n chunk = { type: 'text-delta', index: record.index, text: members[index] };\n }\n else if (record.type === 'reasoning-chunks') {\n chunk = { type: 'reasoning-delta', index: record.index, text: members[index] };\n }\n else {\n chunk = {\n type: 'tool-call-delta',\n index: record.index,\n id: record.id,\n ...Object.hasOwn(record, 'name') ? { name: record.name } : {},\n argumentsDelta: members[index],\n };\n }\n chunks.push({ time, chunk });\n }\n }\n return chunks;\n}\nfunction hasNonWhitespace(text) {\n return /\\S/.test(text);\n}\nfunction blockIsVisible(block) {\n if (block.type === 'tool-call')\n return false;\n if (block.type === 'text' || block.type === 'reasoning')\n return hasNonWhitespace(block.text);\n return true;\n}\n/**\n * Whether one chunk carries the model's first output token for latency measurement.\n * @param chunk - any stream chunk.\n * @returns true for a non-empty text, reasoning, or Tool-call arguments fragment and for\n * every name-bearing Tool-call delta; false for block, usage, and finish chunks.\n */\nexport function isTokenDelta(chunk) {\n switch (chunk.type) {\n case 'text-delta':\n case 'reasoning-delta':\n return chunk.text !== '';\n case 'tool-call-delta':\n return chunk.argumentsDelta !== '' || chunk.name !== undefined;\n default:\n return false;\n }\n}\n/**\n * Whether one chunk by itself contributes reader-visible transcript content.\n * Text and reasoning count only with non-whitespace content, streamed as a delta or\n * completed as a block; a block of any other kind counts at its start and its end,\n * except a Tool call, which is protocol rather than content. Usage and finish never count.\n * @param chunk - any stream chunk.\n * @returns whether a transcript reader would see this chunk.\n */\nexport function isVisibleChunk(chunk) {\n switch (chunk.type) {\n case 'text-delta':\n case 'reasoning-delta':\n return hasNonWhitespace(chunk.text);\n case 'block-start':\n return chunk.blockType !== 'text' && chunk.blockType !== 'reasoning' && chunk.blockType !== 'tool-call';\n case 'block-end':\n return blockIsVisible(chunk.block);\n default:\n return false;\n }\n}\n/**\n * Whether one chunk carries non-whitespace text, as a text delta or a completed text block.\n * Reasoning, Tool calls, and other block kinds never count.\n * @param chunk - any stream chunk.\n * @returns whether the chunk contributes visible text.\n */\nexport function chunkHasVisibleText(chunk) {\n if (chunk.type === 'text-delta')\n return hasNonWhitespace(chunk.text);\n return chunk.type === 'block-end' && chunk.block.type === 'text' && hasNonWhitespace(chunk.block.text);\n}\nfunction firstRunMemberTime(run, predicate) {\n const fragments = run.type === 'tool-call-chunks' ? run.args : run.texts;\n let time = run.time0;\n for (let index = 0; index < fragments.length; index += 1) {\n if (index > 0)\n time += run.dt[index - 1];\n if (predicate(fragments[index]))\n return time;\n }\n return undefined;\n}\n/**\n * Time of the first member of one packed run that {@link isTokenDelta} accepts: a\n * name-bearing Tool-call run starts at its first member, otherwise the first non-empty fragment.\n * Stops scanning at that member.\n * @param run - one packed delta run.\n * @returns the member's reconstructed time, or undefined when no member qualifies.\n */\nexport function runFirstTokenTime(run) {\n if (run.type === 'tool-call-chunks' && run.name !== undefined)\n return run.time0;\n return firstRunMemberTime(run, fragment => fragment !== '');\n}\n/**\n * Time of the first member of one packed run that {@link isVisibleChunk} accepts: the first\n * non-whitespace text or reasoning fragment. A Tool-call run has none. Stops scanning at that member.\n * @param run - one packed delta run.\n * @returns the member's reconstructed time, or undefined when no member qualifies.\n */\nexport function runFirstVisibleTime(run) {\n return run.type === 'tool-call-chunks' ? undefined : firstRunMemberTime(run, hasNonWhitespace);\n}\n/**\n * Time of the first token in one compact stream per {@link isTokenDelta}, read from the\n * records themselves and stopping at the first qualifying member.\n * @param stream - compact records from one durable Assistant settlement.\n * @returns the first token's time, or undefined when the stream carries no token.\n */\nexport function assistantStreamFirstTokenTime(stream) {\n for (const record of stream) {\n const time = record.type === 'chunk'\n ? (isTokenDelta(record.chunk) ? record.time : undefined)\n : runFirstTokenTime(record);\n if (time !== undefined)\n return time;\n }\n return undefined;\n}\n/**\n * Whether one compact stream carries any reader-visible content per {@link isVisibleChunk},\n * stopping at the first qualifying member.\n * @param stream - compact records from one durable Assistant settlement.\n * @returns whether a transcript reader would see anything from this stream.\n */\nexport function assistantStreamHasVisibleContent(stream) {\n return stream.some(record => record.type === 'chunk'\n ? isVisibleChunk(record.chunk)\n : runFirstVisibleTime(record) !== undefined);\n}\n/**\n * Whether one compact stream carries non-whitespace text per {@link chunkHasVisibleText},\n * stopping at the first qualifying member.\n * @param stream - compact records from one durable Assistant settlement.\n * @returns whether the stream contributes visible text.\n */\nexport function assistantStreamHasVisibleText(stream) {\n return stream.some(record => record.type === 'text-chunks'\n ? record.texts.some(hasNonWhitespace)\n : record.type === 'chunk' && chunkHasVisibleText(record.chunk));\n}\n/**\n * The last raw chunk of one never-packed type, scanning backwards and stopping at the first hit.\n * @param stream - compact records from one durable Assistant settlement.\n * @param type - chunk type that only appears as a raw record.\n * @returns the stream's final chunk of that type, or undefined when it has none.\n */\nexport function lastAssistantStreamChunk(stream, type) {\n for (let index = stream.length - 1; index >= 0; index -= 1) {\n const record = stream[index];\n if (record.type === 'chunk' && record.chunk.type === type)\n return record.chunk;\n }\n return undefined;\n}\n/**\n * Every raw chunk of one never-packed type, in stream order.\n * @param stream - compact records from one durable Assistant settlement.\n * @param type - chunk type that only appears as a raw record.\n * @returns the matching chunks; empty when the stream has none.\n */\nexport function assistantStreamChunks(stream, type) {\n const chunks = [];\n for (const record of stream) {\n if (record.type === 'chunk' && record.chunk.type === type)\n chunks.push(record.chunk);\n }\n return chunks;\n}\n/**\n * Every streamed text-delta fragment joined in stream order; reasoning and Tool-call fragments are excluded.\n * @param stream - compact records from one durable Assistant settlement.\n * @returns the joined text, empty when the stream carries no text delta.\n */\nexport function joinAssistantStreamText(stream) {\n const parts = [];\n for (const record of stream) {\n if (record.type === 'text-chunks')\n parts.push(record.texts.join(''));\n else if (record.type === 'chunk' && record.chunk.type === 'text-delta')\n parts.push(record.chunk.text);\n }\n return parts.join('');\n}\n/**\n * Feed one compact stream into a {@link BlockAssembler} without materializing members.\n * Each run contributes one delta carrying its joined fragments, which assembles the same\n * blocks as the original per-member deltas because assembly only concatenates them;\n * raw chunks are pushed as recorded. The records are trusted, not validated: validate a\n * stream read at a durable boundary with {@link expandAssistantStream} first.\n * @param stream - compact records from one durable Assistant settlement.\n * @param assembler - assembler to feed; a fresh one by default.\n * @returns the same assembler after every record was pushed.\n */\nexport function assembleAssistantStream(stream, assembler = new BlockAssembler()) {\n for (const record of stream) {\n switch (record.type) {\n case 'chunk':\n assembler.push(record.chunk);\n break;\n case 'text-chunks':\n assembler.push({ type: 'text-delta', index: record.index, text: record.texts.join('') });\n break;\n case 'reasoning-chunks':\n assembler.push({ type: 'reasoning-delta', index: record.index, text: record.texts.join('') });\n break;\n case 'tool-call-chunks':\n assembler.push({\n type: 'tool-call-delta',\n index: record.index,\n id: record.id,\n ...record.name === undefined ? {} : { name: record.name },\n argumentsDelta: record.args.join(''),\n });\n break;\n default:\n assertNever(record, 'assembleAssistantStream');\n }\n }\n return assembler;\n}\nfunction validateRecord(value) {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n throw new TypeError('Assistant stream record must be an object');\n }\n const record = value;\n switch (record.type) {\n case 'text-chunks':\n case 'reasoning-chunks': {\n exactKeys(record, ['type', 'time0', 'index', 'dt', 'texts'], record.type);\n const texts = stringArray(record.texts, `${record.type} texts`);\n if (texts.length === 0)\n throw new TypeError(`${record.type} texts must be non-empty`);\n validateRun(record, texts.length, record.type);\n return record;\n }\n case 'tool-call-chunks': {\n const keys = Object.hasOwn(record, 'name')\n ? ['type', 'time0', 'index', 'dt', 'id', 'name', 'args']\n : ['type', 'time0', 'index', 'dt', 'id', 'args'];\n exactKeys(record, keys, record.type);\n const args = stringArray(record.args, 'tool-call-chunks args');\n if (args.length === 0)\n throw new TypeError('tool-call-chunks args must be non-empty');\n if (typeof record.id !== 'string' || record.id.length === 0) {\n throw new TypeError('tool-call-chunks id must be a non-empty string');\n }\n if (record.name !== undefined && (typeof record.name !== 'string' || record.name.length === 0)) {\n throw new TypeError('tool-call-chunks name must be a non-empty string');\n }\n validateRun(record, args.length, record.type);\n return record;\n }\n case 'chunk': {\n exactKeys(record, ['type', 'time', 'chunk'], 'chunk');\n const time = safeTime(record.time);\n if (typeof record.chunk !== 'object'\n || record.chunk === null\n || Array.isArray(record.chunk)) {\n throw new TypeError('Assistant stream raw chunk must be a lossless JSON object');\n }\n let chunk;\n try {\n chunk = snapshotChunk(record.chunk);\n }\n catch (error) {\n throw new TypeError('Assistant stream raw chunk must be a lossless JSON object', { cause: error });\n }\n return deepFreeze({ type: 'chunk', time, chunk });\n }\n default:\n throw new TypeError(`Unsupported Assistant stream record ${JSON.stringify(record.type)}`);\n }\n}\nfunction validateRun(record, members, label) {\n safeTime(record.time0);\n safeIndex(record.index, label);\n if (!Array.isArray(record.dt) || record.dt.some(value => !Number.isSafeInteger(value))) {\n throw new TypeError(`${label} dt must contain safe integers`);\n }\n if (record.dt.length !== members - 1) {\n throw new TypeError(`${label} dt length must be one less than its members`);\n }\n let time = record.time0;\n for (const gap of record.dt) {\n time += gap;\n if (!Number.isSafeInteger(time))\n throw new TypeError(`${label} member times must stay safe integers`);\n }\n}\nfunction stringArray(value, label) {\n if (!Array.isArray(value) || value.some(member => typeof member !== 'string')) {\n throw new TypeError(`${label} must be a string array`);\n }\n return value;\n}\nfunction exactKeys(record, keys, label) {\n if (Object.keys(record).length !== keys.length || !keys.every(key => Object.hasOwn(record, key))) {\n throw new TypeError(`${label} Assistant stream record must contain exactly ${keys.join(', ')}`);\n }\n}\n//# sourceMappingURL=assistant-stream.js.map"],
5
- "mappings": "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",
6
- "names": ["PartialArguments", "target", "record", "source", "retained", "record", "disposition", "record", "data", "isAbsolute", "record", "record", "isAbsolute", "HEADER_REQUIRED", "HEADER_OPTIONAL", "decodePhysicalHeader", "record", "decodeEvent", "decodeSeqRanges", "assertSourceDeliveryMarker"]
3
+ "sources": ["../../node_modules/@deepseek-ai/dsh-util-values/lib/index.js", "../../node_modules/@deepseek-ai/dsh-session-format/lib/index.js", "../../node_modules/@deepseek-ai/dsh-session-format-v0-to-v1/lib/index.js", "../../node_modules/@deepseek-ai/dsh-session-format-v1-to-v2/lib/index.js", "../../node_modules/@deepseek-ai/dsh-llm/lib/types/assistant-stream.js", "../../node_modules/@deepseek-ai/dsh-session-format-v2-to-v3/lib/index.js"],
4
+ "sourcesContent": ["//#region lib/types/partial-json.js\n/**\n* Lazily scanned view of one JSON object's top-level fields, built from text\n* that may still be streaming or from an already parsed object. Nothing is\n* scanned until a reader asks; the view remembers every question it answered\n* and reports changed answers when the owner refreshes for publication.\n* Used for model tool-call arguments: a row reads the fields it\n* cares about at whatever granularity it displays, at every stage of the call.\n* @module @deepseek-ai/dsh-util-values/src/partial-json\n*/\nconst SIMPLE_ESCAPES = {\n\t\"\\\"\": \"\\\"\",\n\t\"\\\\\": \"\\\\\",\n\t\"/\": \"/\",\n\tb: \"\\b\",\n\tf: \"\\f\",\n\tn: \"\\n\",\n\tr: \"\\r\",\n\tt: \"\t\"\n};\nconst CONTENT_ESCAPE = /[\\\\\\u0000-\\u001f]/u;\nfunction isWhitespace(c) {\n\treturn c === \" \" || c === \"\\n\" || c === \"\\r\" || c === \"\t\";\n}\nfunction isHex(c) {\n\treturn c >= \"0\" && c <= \"9\" || c >= \"a\" && c <= \"f\" || c >= \"A\" && c <= \"F\";\n}\n/**\n* The view. A streaming instance grows through {@link PartialArguments.append};\n* {@link PartialArguments.fromText} and {@link PartialArguments.fromObject} build\n* sealed instances over a finished call. Every reader is total: an absent or\n* differently typed field answers `undefined` (or `false`), never throws.\n*/\nvar PartialArguments = class PartialArguments {\n\t/** The view of a call with no arguments available. */\n\tstatic EMPTY = PartialArguments.fromObject({});\n\t/**\n\t* View finished argument text without scanning it until a reader asks.\n\t* @param text - the complete argument JSON text.\n\t* @returns a sealed view.\n\t*/\n\tstatic fromText(text) {\n\t\tconst view = new PartialArguments();\n\t\tview.append(text);\n\t\tview.sealed = true;\n\t\treturn view;\n\t}\n\t/**\n\t* View an already parsed argument payload, such as a PTC dispatch object.\n\t* @param value - the parsed argument value.\n\t* @returns a sealed view; a non-object payload has no fields.\n\t*/\n\tstatic fromObject(value) {\n\t\tconst view = new PartialArguments();\n\t\tview.object = typeof value === \"object\" && value !== null && !Array.isArray(value) ? value : {};\n\t\tview.sealed = true;\n\t\treturn view;\n\t}\n\t/**\n\t* The source: text so far or a parsed object, plus whether it can still grow.\n\t* These are the only enumerable fields, so two views over the same source\n\t* compare equal structurally however far each has been read.\n\t*/\n\tchunks = [];\n\tobject;\n\tsealed = false;\n\t#ends = [];\n\t#size = 0;\n\t#consumed = 0;\n\t#mode = \"root\";\n\t#escape = false;\n\t#keyStart = 0;\n\t#keyEscaped = false;\n\t#key = \"\";\n\t#current = null;\n\t#nestedEnds = [];\n\t#nestedInString = false;\n\t#invalidAt;\n\t#invalidValue = false;\n\t#entries = /* @__PURE__ */ new Map();\n\t#order = [];\n\t#reads = /* @__PURE__ */ new Map();\n\t/** Whether this view rejects further appends; does not scan text or register reads. */\n\tget isSealed() {\n\t\treturn this.sealed;\n\t}\n\t/** Whether indexing or a content read found invalid JSON; unread value contents are not validated. */\n\tget invalid() {\n\t\tthis.scan();\n\t\treturn this.#mode === \"invalid\" || this.#invalidValue;\n\t}\n\t/**\n\t* Retain streamed argument text without scanning or comparing observed answers.\n\t* @param fragment - the text following every fragment appended before.\n\t*/\n\tappend(fragment) {\n\t\tif (this.sealed) throw new Error(\"PartialArguments: cannot append to a sealed view\");\n\t\tif (fragment.length === 0) return;\n\t\tthis.chunks.push(fragment);\n\t\tthis.#size += fragment.length;\n\t\tthis.#ends.push(this.#size);\n\t}\n\t/**\n\t* Reconcile a streamed prefix with authoritative complete text without joining the fragments.\n\t* @param text - the final argument text, which replaces missing or conflicting deltas.\n\t* @returns this view sealed with its caches retained when every character matches; otherwise a new sealed view.\n\t*/\n\tsettle(text) {\n\t\tif (this.object !== void 0 || text.length !== this.#size) return PartialArguments.fromText(text);\n\t\tlet offset = 0;\n\t\tfor (const chunk of this.chunks) {\n\t\t\tif (!text.startsWith(chunk, offset)) return PartialArguments.fromText(text);\n\t\t\toffset += chunk.length;\n\t\t}\n\t\tthis.chunks = text.length === 0 ? [] : [text];\n\t\tthis.#ends = text.length === 0 ? [] : [text.length];\n\t\tthis.sealed = true;\n\t\treturn this;\n\t}\n\t/**\n\t* Compare observed answers and advance their publication baseline. Unread views remain unscanned.\n\t* @returns whether any observed answer changed since its first read or the preceding refresh.\n\t*/\n\trefresh() {\n\t\tif (this.#reads.size === 0) return false;\n\t\tthis.scan();\n\t\tlet changed = false;\n\t\tlet completions = false;\n\t\tfor (const read of this.#reads.values()) {\n\t\t\tif (read.completion) {\n\t\t\t\tcompletions = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tchanged = this.refreshRead(read) || changed;\n\t\t}\n\t\tif (completions) {\n\t\t\tfor (const read of this.#reads.values()) if (read.completion) changed = this.refreshRead(read) || changed;\n\t\t}\n\t\tif (this.sealed) this.#reads.clear();\n\t\treturn changed;\n\t}\n\trefreshRead(read) {\n\t\tconst now = read.answer();\n\t\tif (Object.is(now, read.last)) return false;\n\t\tread.last = now;\n\t\treturn true;\n\t}\n\t/**\n\t* Check whether no further fields can arrive.\n\t* @returns whether the outer object closed, indexing failed, or the view is sealed; unread values are not validated.\n\t*/\n\tclosed() {\n\t\treturn this.remember(\"closed\", \"\", () => this.closedNow());\n\t}\n\t/**\n\t* List discovered fields in first-appearance order.\n\t* @returns top-level keys seen so far, in first-appearance order.\n\t*/\n\tkeys() {\n\t\treturn this.remember(\"keys\", \"\", () => this.keysNow(), (keys) => keys.length);\n\t}\n\t/**\n\t* Check whether a top-level field has appeared.\n\t* @param key - argument name.\n\t* @returns whether the field has appeared (a string opened or another value began).\n\t*/\n\thas(key) {\n\t\treturn this.remember(\"has\", key, () => this.hasNow(key));\n\t}\n\t/**\n\t* Check whether a field's closing delimiter has arrived, without validating its contents.\n\t* @param key - argument name.\n\t* @returns whether its delimiter arrived and no content reader has reported an error for this value.\n\t*/\n\tcomplete(key) {\n\t\treturn this.remember(\"complete\", key, () => this.completeNow(key));\n\t}\n\t/**\n\t* Read string length without materializing its text.\n\t* @param key - argument name.\n\t* @param options - change granularity for a streaming string.\n\t* @returns decoded UTF-16 length of the string field so far; undefined when absent or not a string.\n\t*/\n\tstringLength(key, options) {\n\t\tconst step = Math.max(1, Math.floor(options?.step ?? 1));\n\t\tconst offset = options?.offset ?? 0;\n\t\treturn this.remember(`length:${step}:${offset}`, key, () => this.lengthNow(key), (length) => length === void 0 ? void 0 : Math.ceil((length + offset) / step));\n\t}\n\t/**\n\t* Check a string against a decoded UTF-16 length limit without materializing it.\n\t* @param key - argument name.\n\t* @param maxLength - decoded UTF-16 limit, floored to at least zero.\n\t* @returns whether the string is longer than the limit; false when absent or not a string.\n\t*/\n\tstringExceeds(key, maxLength) {\n\t\tconst limit = Math.max(0, Math.floor(maxLength));\n\t\treturn this.remember(`exceeds:${limit}`, key, () => (this.lengthNow(key, limit + 1) ?? 0) > limit);\n\t}\n\t/**\n\t* Read a decoded string, including a streaming prefix.\n\t* @param key - argument name.\n\t* @returns the string field's decoded text so far; undefined when absent or not a string.\n\t*/\n\ttext(key) {\n\t\treturn this.remember(\"text\", key, () => this.textNow(key));\n\t}\n\t/**\n\t* Read at most the first decoded UTF-16 units of a string.\n\t* @param key - argument name.\n\t* @param maxLength - maximum decoded UTF-16 length, floored to at least one.\n\t* @returns the bounded string prefix; undefined when absent or not a string.\n\t*/\n\ttextPrefix(key, maxLength) {\n\t\tconst limit = Math.max(1, Math.floor(maxLength));\n\t\treturn this.remember(`prefix:${limit}`, key, () => this.textPrefixNow(key, limit));\n\t}\n\t/**\n\t* Read a completed non-string argument.\n\t* @param key - argument name.\n\t* @returns the parsed non-string value once it closed; undefined while open, absent, or a string.\n\t*/\n\tvalue(key) {\n\t\treturn this.remember(\"value\", key, () => this.valueNow(key));\n\t}\n\t/** Answer a question and, on a streaming view, remember it for change detection. */\n\tremember(kind, key, read, comparison) {\n\t\tthis.scan();\n\t\tconst result = read();\n\t\tif (!this.sealed) {\n\t\t\tconst id = `${kind}/${key}`;\n\t\t\tif (!this.#reads.has(id)) this.#reads.set(id, {\n\t\t\t\tcompletion: kind === \"complete\",\n\t\t\t\tanswer: comparison === void 0 ? read : () => comparison(read()),\n\t\t\t\tlast: comparison === void 0 ? result : comparison(result)\n\t\t\t});\n\t\t}\n\t\treturn result;\n\t}\n\tclosedNow() {\n\t\treturn this.sealed || this.#mode === \"closed\" || this.#mode === \"invalid\";\n\t}\n\tkeysNow() {\n\t\treturn this.object === void 0 ? this.#order : Object.keys(this.object);\n\t}\n\thasNow(key) {\n\t\treturn this.object === void 0 ? this.#entries.has(key) : Object.hasOwn(this.object, key);\n\t}\n\tcompleteNow(key) {\n\t\tif (this.object !== void 0) return Object.hasOwn(this.object, key);\n\t\tconst entry = this.#entries.get(key);\n\t\treturn entry !== void 0 && entry.end >= 0 && (entry.kind === \"string\" ? entry.invalidAt === void 0 : !entry.invalid);\n\t}\n\tlengthNow(key, limit = Number.POSITIVE_INFINITY) {\n\t\tif (this.object !== void 0) {\n\t\t\tconst field = Object.hasOwn(this.object, key) ? this.object[key] : void 0;\n\t\t\treturn typeof field === \"string\" ? field.length : void 0;\n\t\t}\n\t\tconst entry = this.#entries.get(key);\n\t\tif (entry?.kind !== \"string\") return void 0;\n\t\tif (entry.text !== void 0 && entry.text.at === entry.end) return entry.text.length;\n\t\tconst read = entry.length ??= {\n\t\t\tat: entry.start,\n\t\t\tlength: 0,\n\t\t\ttext: \"\"\n\t\t};\n\t\tthis.readString(entry, read, limit, false);\n\t\treturn read.length;\n\t}\n\ttextNow(key) {\n\t\tif (this.object !== void 0) {\n\t\t\tconst field = Object.hasOwn(this.object, key) ? this.object[key] : void 0;\n\t\t\treturn typeof field === \"string\" ? field : void 0;\n\t\t}\n\t\tconst entry = this.#entries.get(key);\n\t\tif (entry?.kind !== \"string\") return void 0;\n\t\tif (entry.text === void 0 && entry.end >= 0 && entry.needsDecoding && entry.invalidAt === void 0) {\n\t\t\tlet text;\n\t\t\ttry {\n\t\t\t\ttext = JSON.parse(`\"${this.slice(entry.start, entry.end)}\"`);\n\t\t\t} catch (_error) {}\n\t\t\tif (text !== void 0) entry.text = {\n\t\t\t\tat: entry.end,\n\t\t\t\tlength: text.length,\n\t\t\t\ttext\n\t\t\t};\n\t\t}\n\t\tconst read = entry.text ??= {\n\t\t\tat: entry.start,\n\t\t\tlength: 0,\n\t\t\ttext: \"\"\n\t\t};\n\t\tthis.readString(entry, read, Number.POSITIVE_INFINITY, true);\n\t\treturn read.text;\n\t}\n\ttextPrefixNow(key, maxLength) {\n\t\tif (this.object !== void 0) {\n\t\t\tconst field = Object.hasOwn(this.object, key) ? this.object[key] : void 0;\n\t\t\treturn typeof field === \"string\" ? field.slice(0, maxLength) : void 0;\n\t\t}\n\t\tconst entry = this.#entries.get(key);\n\t\tif (entry?.kind !== \"string\") return void 0;\n\t\tconst prefixes = entry.prefixes ??= /* @__PURE__ */ new Map();\n\t\tlet read = prefixes.get(maxLength);\n\t\tif (read === void 0) {\n\t\t\tread = {\n\t\t\t\tat: entry.start,\n\t\t\t\tlength: 0,\n\t\t\t\ttext: \"\"\n\t\t\t};\n\t\t\tprefixes.set(maxLength, read);\n\t\t}\n\t\tthis.readString(entry, read, maxLength, true);\n\t\treturn read.text;\n\t}\n\tvalueNow(key) {\n\t\tif (this.object !== void 0) {\n\t\t\tif (!Object.hasOwn(this.object, key)) return void 0;\n\t\t\tconst field = this.object[key];\n\t\t\treturn typeof field === \"string\" ? void 0 : field;\n\t\t}\n\t\tconst entry = this.#entries.get(key);\n\t\tif (entry?.kind !== \"value\" || entry.end < 0 || entry.invalid) return void 0;\n\t\tif (entry.parsed === void 0) try {\n\t\t\tentry.parsed = JSON.parse(this.slice(entry.start, entry.end));\n\t\t} catch (_error) {\n\t\t\tentry.invalid = true;\n\t\t\tthis.#invalidValue = true;\n\t\t}\n\t\treturn entry.parsed;\n\t}\n\tchunkAt(at) {\n\t\tlet low = 0;\n\t\tlet high = this.#ends.length;\n\t\twhile (low < high) {\n\t\t\tconst mid = low + high >>> 1;\n\t\t\tif (this.#ends[mid] <= at) low = mid + 1;\n\t\t\telse high = mid;\n\t\t}\n\t\treturn low;\n\t}\n\t/** Materialize only a requested range, never the cumulative source. */\n\tslice(start, end) {\n\t\tif (start >= end) return \"\";\n\t\tconst first = this.chunkAt(start);\n\t\tconst last = this.chunkAt(end - 1);\n\t\tconst base = first === 0 ? 0 : this.#ends[first - 1];\n\t\tif (first === last) return this.chunks[first].slice(start - base, end - base);\n\t\tconst parts = [this.chunks[first].slice(start - base)];\n\t\tfor (let i = first + 1; i < last; i++) parts.push(this.chunks[i]);\n\t\tparts.push(this.chunks[last].slice(0, end - this.#ends[last - 1]));\n\t\treturn parts.join(\"\");\n\t}\n\treadString(entry, read, limit, materialize) {\n\t\tconst end = Math.min(entry.end < 0 ? this.#consumed : entry.end, entry.invalidAt ?? Number.POSITIVE_INFINITY, this.#invalidAt ?? Number.POSITIVE_INFINITY);\n\t\tif (!entry.needsDecoding) {\n\t\t\tconst length = Math.min(end - read.at, limit - read.length);\n\t\t\tif (length <= 0) return;\n\t\t\tif (materialize) read.text += this.slice(read.at, read.at + length);\n\t\t\tread.at += length;\n\t\t\tread.length += length;\n\t\t\treturn;\n\t\t}\n\t\tlet chunkIndex = this.chunkAt(read.at);\n\t\twhile (read.at < end && read.length < limit) {\n\t\t\tconst base = chunkIndex === 0 ? 0 : this.#ends[chunkIndex - 1];\n\t\t\tconst chunk = this.chunks[chunkIndex];\n\t\t\tconst remaining = chunk.slice(read.at - base, Math.min(chunk.length, end - base));\n\t\t\tconst boundary = remaining.search(CONTENT_ESCAPE);\n\t\t\tconst length = Math.min(boundary < 0 ? remaining.length : boundary, limit - read.length);\n\t\t\tif (length > 0) {\n\t\t\t\tif (materialize) read.text += remaining.slice(0, length);\n\t\t\t\tread.at += length;\n\t\t\t\tread.length += length;\n\t\t\t\tif (read.at === base + chunk.length) chunkIndex++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst type = remaining.length > 1 ? remaining[1] : read.at + 1 < end ? this.chunks[chunkIndex + 1][0] : void 0;\n\t\t\tlet decoded;\n\t\t\tlet width = 2;\n\t\t\tif (remaining[0] === \"\\\\\" && type === void 0 && entry.end < 0) return;\n\t\t\tif (remaining[0] === \"\\\\\" && type === \"u\") {\n\t\t\t\tconst hex = this.slice(read.at + 2, Math.min(end, read.at + 6));\n\t\t\t\tlet valid = true;\n\t\t\t\tfor (let i = 0; i < hex.length; i++) if (!isHex(hex[i])) valid = false;\n\t\t\t\tif (valid) {\n\t\t\t\t\tif (hex.length < 4 && entry.end < 0) return;\n\t\t\t\t\tif (hex.length === 4) decoded = String.fromCharCode(Number.parseInt(hex, 16));\n\t\t\t\t}\n\t\t\t\twidth = 6;\n\t\t\t} else if (remaining[0] === \"\\\\\" && type !== void 0) decoded = SIMPLE_ESCAPES[type];\n\t\t\tif (decoded === void 0) {\n\t\t\t\tentry.invalidAt = read.at;\n\t\t\t\tthis.#invalidValue = true;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (materialize) read.text += decoded;\n\t\t\tread.length++;\n\t\t\tread.at += width;\n\t\t\twhile (chunkIndex < this.chunks.length && read.at >= this.#ends[chunkIndex]) chunkIndex++;\n\t\t}\n\t}\n\t/** Locate new field ranges without decoding or parsing their contents. */\n\tscan() {\n\t\tif (this.object !== void 0 || this.#consumed === this.#size) return;\n\t\tfor (let i = this.chunkAt(this.#consumed); i < this.chunks.length && this.#invalidAt === void 0; i++) {\n\t\t\tconst pending = this.chunks[i];\n\t\t\tconst base = i === 0 ? 0 : this.#ends[i - 1];\n\t\t\tfor (let index = this.#consumed - base; index < pending.length && this.#mode !== \"invalid\"; index++) {\n\t\t\t\tif (this.#mode === \"string\" || this.#mode === \"nested\" && this.#nestedInString) {\n\t\t\t\t\tconst end = this.stringBoundary(pending, index);\n\t\t\t\t\tthis.#consumed += end - index;\n\t\t\t\t\tindex = end;\n\t\t\t\t\tif (index === pending.length) break;\n\t\t\t\t}\n\t\t\t\tthis.step(pending[index], this.#consumed);\n\t\t\t\tthis.#consumed++;\n\t\t\t}\n\t\t}\n\t}\n\t/** Only raw quotes and their preceding backslash runs can terminate a string. */\n\tstringBoundary(fragment, start) {\n\t\tlet at = start;\n\t\twhile (true) {\n\t\t\tconst quote = fragment.indexOf(\"\\\"\", at);\n\t\t\tconst end = quote < 0 ? fragment.length : quote;\n\t\t\tif (this.#mode === \"string\") {\n\t\t\t\tconst entry = this.#current;\n\t\t\t\tif (!entry.needsDecoding && CONTENT_ESCAPE.test(fragment.slice(at, end))) entry.needsDecoding = true;\n\t\t\t}\n\t\t\tlet slashStart = end;\n\t\t\twhile (slashStart > at && fragment[slashStart - 1] === \"\\\\\") slashStart--;\n\t\t\tconst escaped = (end - slashStart) % 2 === 1 !== (slashStart === at && this.#escape);\n\t\t\tthis.#escape = quote < 0 && escaped;\n\t\t\tif (quote < 0 || !escaped) return end;\n\t\t\tat = quote + 1;\n\t\t}\n\t}\n\tstep(c, at) {\n\t\tswitch (this.#mode) {\n\t\t\tcase \"root\":\n\t\t\t\tif (isWhitespace(c)) return;\n\t\t\t\tif (c === \"{\") {\n\t\t\t\t\tthis.#mode = \"key-or-end\";\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.fail();\n\t\t\t\treturn;\n\t\t\tcase \"key-or-end\":\n\t\t\t\tif (isWhitespace(c)) return;\n\t\t\t\tif (c === \"}\") {\n\t\t\t\t\tthis.#mode = \"closed\";\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (c === \"\\\"\") {\n\t\t\t\t\tthis.beginKey(at);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.fail();\n\t\t\t\treturn;\n\t\t\tcase \"key-only\":\n\t\t\t\tif (isWhitespace(c)) return;\n\t\t\t\tif (c === \"\\\"\") {\n\t\t\t\t\tthis.beginKey(at);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.fail();\n\t\t\t\treturn;\n\t\t\tcase \"key\":\n\t\t\t\tthis.stepKey(c, at);\n\t\t\t\treturn;\n\t\t\tcase \"colon\":\n\t\t\t\tif (isWhitespace(c)) return;\n\t\t\t\tif (c === \":\") {\n\t\t\t\t\tthis.#mode = \"value\";\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.fail();\n\t\t\t\treturn;\n\t\t\tcase \"value\":\n\t\t\t\tthis.beginValue(c, at);\n\t\t\t\treturn;\n\t\t\tcase \"string\": {\n\t\t\t\tconst entry = this.#current;\n\t\t\t\tentry.end = at;\n\t\t\t\tthis.#current = null;\n\t\t\t\tthis.#mode = \"comma-or-end\";\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase \"scalar\":\n\t\t\t\tthis.stepScalar(c, at);\n\t\t\t\treturn;\n\t\t\tcase \"nested\":\n\t\t\t\tthis.stepNested(c, at);\n\t\t\t\treturn;\n\t\t\tcase \"comma-or-end\":\n\t\t\t\tif (isWhitespace(c)) return;\n\t\t\t\tif (c === \",\") {\n\t\t\t\t\tthis.#mode = \"key-only\";\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (c === \"}\") {\n\t\t\t\t\tthis.#mode = \"closed\";\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.fail();\n\t\t\t\treturn;\n\t\t\tcase \"closed\":\n\t\t\t\tif (isWhitespace(c)) return;\n\t\t\t\tthis.fail();\n\t\t\t\treturn;\n\t\t\t/* v8 ignore next 2 -- scan() stops stepping once the view is invalid. */\n\t\t\tcase \"invalid\": return;\n\t\t\t/* v8 ignore next 2 -- Every scanner mode has a handler above. */\n\t\t\tdefault: assertNever(this.#mode);\n\t\t}\n\t}\n\tfail() {\n\t\tthis.#invalidAt = this.#consumed;\n\t\tthis.#mode = \"invalid\";\n\t\tthis.#current = null;\n\t}\n\tbeginKey(at) {\n\t\tthis.#mode = \"key\";\n\t\tthis.#keyStart = at + 1;\n\t\tthis.#keyEscaped = false;\n\t\tthis.#escape = false;\n\t}\n\tstepKey(c, at) {\n\t\tif (c < \" \") {\n\t\t\tthis.fail();\n\t\t\treturn;\n\t\t}\n\t\tif (this.#escape) {\n\t\t\tthis.#escape = false;\n\t\t\treturn;\n\t\t}\n\t\tif (c === \"\\\\\") {\n\t\t\tthis.#escape = true;\n\t\t\tthis.#keyEscaped = true;\n\t\t\treturn;\n\t\t}\n\t\tif (c !== \"\\\"\") return;\n\t\tconst raw = this.slice(this.#keyStart, at);\n\t\tif (this.#keyEscaped) try {\n\t\t\tthis.#key = JSON.parse(`\"${raw}\"`);\n\t\t} catch (_error) {\n\t\t\tthis.fail();\n\t\t\treturn;\n\t\t}\n\t\telse this.#key = raw;\n\t\tthis.#mode = \"colon\";\n\t}\n\topen(entry) {\n\t\tif (!this.#entries.has(this.#key)) this.#order.push(this.#key);\n\t\tthis.#entries.set(this.#key, entry);\n\t\tthis.#current = entry;\n\t}\n\tbeginValue(c, at) {\n\t\tif (isWhitespace(c)) return;\n\t\tif (c === \"\\\"\") {\n\t\t\tthis.open({\n\t\t\t\tkind: \"string\",\n\t\t\t\tstart: at + 1,\n\t\t\t\tend: -1,\n\t\t\t\tneedsDecoding: false,\n\t\t\t\tinvalidAt: void 0,\n\t\t\t\tlength: void 0,\n\t\t\t\ttext: void 0,\n\t\t\t\tprefixes: void 0\n\t\t\t});\n\t\t\tthis.#escape = false;\n\t\t\tthis.#mode = \"string\";\n\t\t\treturn;\n\t\t}\n\t\tif (c === \"}\" || c === \",\" || c === \":\" || c === \"]\") {\n\t\t\tthis.fail();\n\t\t\treturn;\n\t\t}\n\t\tthis.open({\n\t\t\tkind: \"value\",\n\t\t\tstart: at,\n\t\t\tend: -1,\n\t\t\tparsed: void 0,\n\t\t\tinvalid: false\n\t\t});\n\t\tif (c === \"{\" || c === \"[\") {\n\t\t\tthis.#mode = \"nested\";\n\t\t\tthis.#nestedEnds = [c === \"{\" ? \"}\" : \"]\"];\n\t\t\tthis.#nestedInString = false;\n\t\t\tthis.#escape = false;\n\t\t\treturn;\n\t\t}\n\t\tthis.#mode = \"scalar\";\n\t}\n\tstepScalar(c, at) {\n\t\tif (c !== \",\" && c !== \"}\" && !isWhitespace(c)) return;\n\t\tthis.closeValue(at);\n\t\tthis.#mode = c === \",\" ? \"key-only\" : c === \"}\" ? \"closed\" : \"comma-or-end\";\n\t}\n\tstepNested(c, at) {\n\t\tif (this.#nestedInString) {\n\t\t\tthis.#nestedInString = false;\n\t\t\treturn;\n\t\t}\n\t\tif (c === \"\\\"\") {\n\t\t\tthis.#nestedInString = true;\n\t\t\treturn;\n\t\t}\n\t\tif (c === \"{\" || c === \"[\") {\n\t\t\tthis.#nestedEnds.push(c === \"{\" ? \"}\" : \"]\");\n\t\t\treturn;\n\t\t}\n\t\tif (c === \"}\" || c === \"]\") {\n\t\t\tif (this.#nestedEnds.pop() !== c) {\n\t\t\t\tthis.fail();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this.#nestedEnds.length === 0) {\n\t\t\t\tthis.closeValue(at + 1);\n\t\t\t\tthis.#mode = \"comma-or-end\";\n\t\t\t}\n\t\t}\n\t}\n\tcloseValue(end) {\n\t\tconst entry = this.#current;\n\t\tentry.end = end;\n\t\tthis.#current = null;\n\t}\n};\n//#endregion\n//#region lib/types/index.js\n/** Duplicate-install-safe JSON and immutable-value helpers. @module @deepseek-ai/dsh-util-values */\n/**\n* Mark an unreachable closed-union branch.\n* @param value - impossible value; an unhandled typed variant fails at the call site.\n* @param context - optional switch-site label included in the failure message.\n* @returns never; a runtime value that escaped its type always throws.\n*/\nfunction assertNever(value, context) {\n\tconst rendered = JSON.stringify(value) ?? String(value);\n\tthrow new Error(`unreachable variant${context ? ` in ${context}` : \"\"}: ${rendered}`);\n}\n/** Whether a realm-owned intrinsic prototype has a native constructor matching this engine's representation. */\nfunction hasIntrinsicConstructor(prototype, name) {\n\tconst constructor = Object.getOwnPropertyDescriptor(prototype, \"constructor\")?.value;\n\tif (typeof constructor !== \"function\") return false;\n\ttry {\n\t\treturn constructor.name === name && constructor.prototype === prototype && Function.prototype.toString.call(constructor) === Function.prototype.toString.call(name === \"Array\" ? Array : Object);\n\t} catch {\n\t\treturn false;\n\t}\n}\n/** Whether a candidate is one realm's intrinsic `Object.prototype`. */\nfunction isIntrinsicObjectPrototype(value) {\n\treturn Object.getPrototypeOf(value) === null && hasIntrinsicConstructor(value, \"Object\");\n}\n/** Whether an array uses one realm's intrinsic `Array.prototype`, not a subclass or forged prototype. */\nfunction hasPlainArrayPrototype(value) {\n\tconst prototype = Object.getPrototypeOf(value);\n\tif (!Array.isArray(prototype) || !hasIntrinsicConstructor(prototype, \"Array\")) return false;\n\tconst objectPrototype = Object.getPrototypeOf(prototype);\n\treturn typeof objectPrototype === \"object\" && objectPrototype !== null && isIntrinsicObjectPrototype(objectPrototype);\n}\n/** Whether an object is a plain or null-prototype record from any JavaScript realm. */\nfunction hasPlainObjectPrototype(value) {\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn prototype === null || typeof prototype === \"object\" && isIntrinsicObjectPrototype(prototype);\n}\n/** Return every JSON-visible object key, or reject own data JSON would discard. */\nfunction enumerableStringKeys(value) {\n\tconst keys = Reflect.ownKeys(value);\n\tif (keys.some((key) => typeof key !== \"string\" || !Object.prototype.propertyIsEnumerable.call(value, key))) return void 0;\n\treturn keys;\n}\n/** Validate lossless JSON iteratively, optionally materializing a detached snapshot. */\nfunction walkJsonValue(value, detach) {\n\tconst ancestors = /* @__PURE__ */ new Set();\n\tlet root;\n\tconst assign = (destination, item) => {\n\t\tif (destination === void 0) return;\n\t\tif (destination.kind === \"root\") root = item;\n\t\telse if (destination.kind === \"array\") destination.target[destination.index] = item;\n\t\telse Object.defineProperty(destination.target, destination.key, {\n\t\t\tvalue: item,\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\twritable: true\n\t\t});\n\t};\n\tconst tasks = [{\n\t\tkind: \"visit\",\n\t\tvalue,\n\t\t...detach ? { destination: { kind: \"root\" } } : {}\n\t}];\n\tfor (let task = tasks.pop(); task !== void 0; task = tasks.pop()) {\n\t\tif (task.kind === \"leave\") {\n\t\t\tancestors.delete(task.source);\n\t\t\tcontinue;\n\t\t}\n\t\tif (task.kind === \"array-item\") {\n\t\t\tif (!Object.prototype.hasOwnProperty.call(task.source, task.index)) return void 0;\n\t\t\ttasks.push({\n\t\t\t\tkind: \"visit\",\n\t\t\t\tvalue: task.source[task.index],\n\t\t\t\t...task.target === void 0 ? {} : { destination: {\n\t\t\t\t\tkind: \"array\",\n\t\t\t\t\ttarget: task.target,\n\t\t\t\t\tindex: task.index\n\t\t\t\t} }\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (task.kind === \"object-property\") {\n\t\t\ttasks.push({\n\t\t\t\tkind: \"visit\",\n\t\t\t\tvalue: task.source[task.key],\n\t\t\t\t...task.target === void 0 ? {} : { destination: {\n\t\t\t\t\tkind: \"object\",\n\t\t\t\t\ttarget: task.target,\n\t\t\t\t\tkey: task.key\n\t\t\t\t} }\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tconst current = task.value;\n\t\tif (current === null) {\n\t\t\tassign(task.destination, null);\n\t\t\tcontinue;\n\t\t}\n\t\tif (typeof current === \"boolean\" || typeof current === \"string\") {\n\t\t\tassign(task.destination, current);\n\t\t\tcontinue;\n\t\t}\n\t\tif (typeof current === \"number\") {\n\t\t\tif (!Number.isFinite(current) || Object.is(current, -0)) return void 0;\n\t\t\tassign(task.destination, current);\n\t\t\tcontinue;\n\t\t}\n\t\tif (typeof current !== \"object\") return void 0;\n\t\tif (ancestors.has(current)) return void 0;\n\t\tif (Array.isArray(current)) {\n\t\t\tif (!hasPlainArrayPrototype(current)) return void 0;\n\t\t\tconst length = current.length;\n\t\t\tif (Reflect.ownKeys(current).length !== length + 1) return void 0;\n\t\t\tconst target = detach ? [] : void 0;\n\t\t\tif (target !== void 0) assign(task.destination, target);\n\t\t\tancestors.add(current);\n\t\t\ttasks.push({\n\t\t\t\tkind: \"leave\",\n\t\t\t\tsource: current\n\t\t\t});\n\t\t\tfor (let index = length - 1; index >= 0; index--) tasks.push({\n\t\t\t\tkind: \"array-item\",\n\t\t\t\tsource: current,\n\t\t\t\tindex,\n\t\t\t\t...target === void 0 ? {} : { target }\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (!hasPlainObjectPrototype(current)) return void 0;\n\t\tconst keys = enumerableStringKeys(current);\n\t\tif (keys === void 0) return void 0;\n\t\tconst target = detach ? {} : void 0;\n\t\tif (target !== void 0) assign(task.destination, target);\n\t\tancestors.add(current);\n\t\ttasks.push({\n\t\t\tkind: \"leave\",\n\t\t\tsource: current\n\t\t});\n\t\tfor (let index = keys.length - 1; index >= 0; index--) {\n\t\t\tconst key = keys[index];\n\t\t\t/* v8 ignore next -- the loop is bounded by the captured key count. */\n\t\t\tif (key === void 0) return void 0;\n\t\t\ttasks.push({\n\t\t\t\tkind: \"object-property\",\n\t\t\t\tsource: current,\n\t\t\t\tkey,\n\t\t\t\t...target === void 0 ? {} : { target }\n\t\t\t});\n\t\t}\n\t}\n\treturn detach ? root : true;\n}\n/**\n* Validate and detach lossless JSON in one read per property.\n* @param value - candidate value to validate and detach.\n* @returns the detached snapshot, or `undefined` when the value is not losslessly JSON-serializable.\n*/\nfunction snapshotJsonValue(value) {\n\treturn walkJsonValue(value, true);\n}\n/**\n* Test the same lossless JSON rules as {@link snapshotJsonValue} without detaching the value.\n* @param value - candidate value to test.\n* @returns whether the value survives a JSON round trip without loss.\n*/\nfunction isJsonValue(value) {\n\treturn walkJsonValue(value, false) === true;\n}\n/**\n* Compare JSON-compatible values structurally.\n* @param a - one JSON-compatible value.\n* @param b - the other JSON-compatible value.\n* @returns whether both values contain the same JSON data.\n*/\nfunction deepEqualJson(a, b) {\n\tif (a === b) return true;\n\tif (typeof a !== \"object\" || typeof b !== \"object\" || a === null || b === null) return false;\n\tif (Array.isArray(a) || Array.isArray(b)) {\n\t\tif (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length) return false;\n\t\treturn a.every((entry, index) => deepEqualJson(entry, b[index]));\n\t}\n\tconst left = a;\n\tconst right = b;\n\tconst keys = Object.keys(left);\n\tif (keys.length !== Object.keys(right).length) return false;\n\treturn keys.every((key) => key in right && deepEqualJson(left[key], right[key]));\n}\n/**\n* Deep-freeze an object graph in place while leaving live AbortSignal objects mutable.\n* @param value - value to freeze.\n* @returns the same value after every reachable enumerable child is frozen.\n*/\nfunction deepFreeze(value) {\n\tconst seen = /* @__PURE__ */ new WeakSet();\n\tconst pending = [{\n\t\tkind: \"visit\",\n\t\tnode: value\n\t}];\n\twhile (pending.length > 0) {\n\t\tconst task = pending.pop();\n\t\t/* v8 ignore next -- the loop condition guarantees one pending task. */\n\t\tif (task === void 0) continue;\n\t\tif (task.kind === \"property\") {\n\t\t\tpending.push({\n\t\t\t\tkind: \"visit\",\n\t\t\t\tnode: task.source[task.key]\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tconst node = task.node;\n\t\tif (node === null || typeof node !== \"object\") continue;\n\t\tif (node instanceof AbortSignal) continue;\n\t\tif (seen.has(node)) continue;\n\t\tseen.add(node);\n\t\tObject.freeze(node);\n\t\tconst keys = Object.keys(node);\n\t\tfor (let index = keys.length - 1; index >= 0; index--) {\n\t\t\tconst key = keys[index];\n\t\t\t/* v8 ignore next -- the loop is bounded by the captured key count. */\n\t\t\tif (key === void 0) continue;\n\t\t\tpending.push({\n\t\t\t\tkind: \"property\",\n\t\t\t\tsource: node,\n\t\t\t\tkey\n\t\t\t});\n\t\t}\n\t}\n\treturn value;\n}\n/**\n* Weak-key lookup with a strongly retained iterable set of associated values.\n*\n* Each value must belong to only one key. The container performs no automatic\n* cleanup; owners delete associations or clear the container at lifecycle end.\n*/\nvar WeakMapWithValues = class {\n\tkeys = /* @__PURE__ */ new WeakMap();\n\tvalueSet = /* @__PURE__ */ new Set();\n\t/** Live strongly retained values in insertion order. */\n\tvalues = this.valueSet;\n\t/**\n\t* Read the value associated with a key.\n\t* @param key - weakly held lookup key.\n\t* @returns the associated value, or absence.\n\t*/\n\tget(key) {\n\t\treturn this.keys.get(key);\n\t}\n\t/**\n\t* Test whether a key has an association.\n\t* @param key - weakly held lookup key.\n\t* @returns whether the key is present.\n\t*/\n\thas(key) {\n\t\treturn this.keys.has(key);\n\t}\n\t/**\n\t* Associate one key with one caller-unique value.\n\t* @param key - weakly held lookup key.\n\t* @param value - strongly retained value that belongs to no other key.\n\t* @returns this container.\n\t*/\n\tset(key, value) {\n\t\tif (this.keys.has(key)) {\n\t\t\tconst previous = this.keys.get(key);\n\t\t\tif (previous === value) return this;\n\t\t\tthis.valueSet.delete(previous);\n\t\t}\n\t\tthis.keys.set(key, value);\n\t\tthis.valueSet.add(value);\n\t\treturn this;\n\t}\n\t/**\n\t* Remove one association and its strongly retained value.\n\t* @param key - weakly held lookup key.\n\t* @returns whether an association was removed.\n\t*/\n\tdelete(key) {\n\t\tif (!this.keys.has(key)) return false;\n\t\tconst value = this.keys.get(key);\n\t\tconst deleted = this.keys.delete(key);\n\t\tthis.valueSet.delete(value);\n\t\treturn deleted;\n\t}\n\t/** Remove every association and strongly retained value. */\n\tclear() {\n\t\tthis.keys = /* @__PURE__ */ new WeakMap();\n\t\tthis.valueSet.clear();\n\t}\n};\n//#endregion\nexport { PartialArguments, WeakMapWithValues, assertNever, deepEqualJson, deepFreeze, isJsonValue, snapshotJsonValue };\n", "import { deepFreeze, snapshotJsonValue } from \"@deepseek-ai/dsh-util-values\";\n//#region lib/types/error.js\n/** Error raised when a durable Session artifact cannot be restored or migrated losslessly. */\nvar SessionFormatError = class extends Error {\n\tname = \"SessionFormatError\";\n};\n/** A readable artifact whose released source policy has no supported migration. */\nvar SessionFormatUnsupportedMigrationError = class extends SessionFormatError {\n\tname = \"SessionFormatUnsupportedMigrationError\";\n};\n//#endregion\n//#region lib/types/json.js\n/**\n* Test whether a value is a non-null, non-array object.\n* @param value - candidate value.\n* @returns whether the value is an object record.\n*/\nfunction isSessionFormatJsonObject(value) {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n/**\n* Require a non-negative safe integer without the JSON-unstable negative zero.\n* @param value - candidate count.\n* @param label - diagnostic subject.\n* @returns validated count.\n*/\nfunction sessionFormatCount(value, label) {\n\tif (!Number.isSafeInteger(value) || value < 0 || Object.is(value, -0)) throw new SessionFormatError(`${label} must be a non-negative safe integer`);\n\treturn value;\n}\n/**\n* Require a safe integer without the JSON-unstable negative zero.\n* @param value - candidate integer.\n* @param label - diagnostic subject.\n* @returns validated integer.\n*/\nfunction sessionFormatSafeInteger(value, label) {\n\tif (!Number.isSafeInteger(value) || Object.is(value, -0)) throw new SessionFormatError(`${label} must be a safe integer`);\n\treturn value;\n}\n/**\n* Require a non-negative integral format version.\n* @param value - candidate version.\n* @param label - diagnostic subject.\n* @returns validated version.\n*/\nfunction sessionFormatVersion(value, label = \"Session format version\") {\n\treturn sessionFormatCount(value, label);\n}\n/**\n* Read only the version required for directional dispatch.\n* @param headerValue - untrusted physical header value.\n* @returns validated stored version.\n*/\nfunction inspectSessionFormatVersion(headerValue) {\n\tif (!isSessionFormatJsonObject(headerValue)) throw new SessionFormatError(\"Session header must be a JSON object\");\n\treturn sessionFormatVersion(headerValue[\"version\"]);\n}\n/**\n* Detach and deeply freeze a caller-supplied lossless JSON value.\n* @param value - borrowed candidate.\n* @param label - diagnostic subject.\n* @returns an immutable detached JSON snapshot.\n*/\nfunction snapshotSessionFormatJson(value, label = \"Session value\") {\n\tconst snapshot = snapshotJsonValue(value);\n\tif (snapshot === void 0) throw new SessionFormatError(`${label} is not lossless JSON`);\n\treturn deepFreeze(snapshot);\n}\n/**\n* Snapshot one logical header without inspecting an event body.\n* @param header - borrowed logical header.\n* @param label - diagnostic subject.\n* @returns immutable detached header.\n*/\nfunction snapshotSessionFormatHeader(header, label = \"Session header\") {\n\tconst snapshot = snapshotSessionFormatJson(header, label);\n\tif (!isSessionFormatJsonObject(snapshot)) throw new SessionFormatError(`${label} must be a JSON object`);\n\tinspectSessionFormatVersion(snapshot);\n\tif (typeof snapshot[\"id\"] !== \"string\") throw new SessionFormatError(`${label} id must be a string`);\n\tsessionFormatCount(snapshot[\"createdAt\"], `${label} createdAt`);\n\tif (typeof snapshot[\"isSeeded\"] !== \"boolean\") throw new SessionFormatError(`${label} isSeeded must be a boolean`);\n\tsessionFormatCount(snapshot[\"delegationDepth\"], `${label} delegationDepth`);\n\treturn snapshot;\n}\n//#endregion\n//#region lib/types/chain.js\n/**\n* Validate and freeze one adjacent migration declaration.\n* @param migration - named exact adjacent conversion.\n* @returns immutable validated declaration.\n*/\nfunction defineSessionFormatMigration(migration) {\n\tif (typeof migration.name !== \"string\" || migration.name.length === 0) throw new SessionFormatError(\"Session migration name must be a non-empty string\");\n\tconst from = sessionFormatVersion(migration.fromVersion, `${migration.name} fromVersion`);\n\tif (sessionFormatVersion(migration.toVersion, `${migration.name} toVersion`) !== from + 1) throw new SessionFormatError(`${migration.name} must declare adjacent v${from}->v${from + 1}`);\n\treturn Object.freeze({ ...migration });\n}\n/**\n* Compile a unique, complete adjacent migration chain.\n* @param options - current version, adjacent declarations, and current restorer.\n* @returns immutable planner and streaming migration compiler.\n*/\nfunction createSessionFormatChain(options) {\n\treturn new CompiledSessionFormatChain(options);\n}\nvar CompiledSessionFormatChain = class {\n\tcurrentVersion;\n\tmigrations;\n\trestoreCurrentHeader;\n\tconstructor(options) {\n\t\tthis.currentVersion = sessionFormatVersion(options.currentVersion, \"current Session format version\");\n\t\tthis.restoreCurrentHeader = options.restoreCurrentHeader;\n\t\tconst byFrom = /* @__PURE__ */ new Map();\n\t\tconst names = /* @__PURE__ */ new Set();\n\t\tfor (const candidate of options.migrations) {\n\t\t\tconst migration = defineSessionFormatMigration(candidate);\n\t\t\tif (byFrom.has(migration.fromVersion)) throw new SessionFormatError(`Session migration v${migration.fromVersion}->v${migration.toVersion} is duplicated`);\n\t\t\tif (names.has(migration.name)) throw new SessionFormatError(`Session migration name ${JSON.stringify(migration.name)} is duplicated`);\n\t\t\tbyFrom.set(migration.fromVersion, migration);\n\t\t\tnames.add(migration.name);\n\t\t}\n\t\tconst ordered = [];\n\t\tfor (let version = 0; version < this.currentVersion; version += 1) {\n\t\t\tconst migration = byFrom.get(version);\n\t\t\tif (migration === void 0) throw new SessionFormatUnsupportedMigrationError(`Session migration v${version}->v${version + 1} is missing`);\n\t\t\tordered.push(migration);\n\t\t}\n\t\tif (byFrom.size !== ordered.length) throw new SessionFormatError(`Session migration from v${[...byFrom.keys()].find((version) => version >= this.currentVersion)} does not lead to current v${this.currentVersion}`);\n\t\tthis.migrations = Object.freeze(ordered);\n\t}\n\tplan(fromVersion) {\n\t\tconst from = sessionFormatVersion(fromVersion, \"stored Session format version\");\n\t\tif (from > this.currentVersion) throw new SessionFormatUnsupportedMigrationError(`stored Session uses newer format v${from}; this build writes v${this.currentVersion}`);\n\t\treturn Object.freeze(this.migrations.slice(from));\n\t}\n\tcreateStream(sourceHeader, sourceCut, output) {\n\t\tlet header = sourceHeader;\n\t\tconst validatedSourceCut = sourceCut === void 0 ? void 0 : sessionFormatCount(sourceCut, \"Session inherited event count\");\n\t\tlet inheritedEventCount = validatedSourceCut;\n\t\tconst stages = [];\n\t\tconst plan = this.plan(header.version);\n\t\tfor (const [index, migration] of plan.entries()) {\n\t\t\tconst targetHeader = this.advanceHeader(migration, header);\n\t\t\tlet stage;\n\t\t\ttry {\n\t\t\t\tstage = migration.createStage({\n\t\t\t\t\tsourceHeader: header,\n\t\t\t\t\ttargetHeader,\n\t\t\t\t\tsourceInheritedEventCount: inheritedEventCount,\n\t\t\t\t\tsourceKind: index === 0 ? \"decoded\" : \"transformed\"\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tthrowUnsupportedRefusal(migration, error);\n\t\t\t}\n\t\t\theader = targetHeader;\n\t\t\tstages.push({\n\t\t\t\tmigration,\n\t\t\t\tstage\n\t\t\t});\n\t\t\tinheritedEventCount = stage.headerInheritedEventCount;\n\t\t}\n\t\treturn new CompiledSessionFormatMigrationStream(header, validatedSourceCut, stages, output);\n\t}\n\tmigrateHeader(source) {\n\t\tlet current = snapshotSessionFormatHeader(source, \"stored Session header\");\n\t\tfor (const migration of this.plan(current.version)) current = this.advanceHeader(migration, current);\n\t\tcurrent = snapshotSessionFormatHeader(this.restoreCurrentHeader(current), \"current Session header restoration\");\n\t\tif (current.version !== this.currentVersion) throw new SessionFormatError(`current Session header restorer returned v${current.version}; expected v${this.currentVersion}`);\n\t\treturn current;\n\t}\n\tadvanceHeader(migration, source) {\n\t\tlet target;\n\t\ttry {\n\t\t\ttarget = migration.migrateHeader(snapshotSessionFormatHeader(source, `${migration.name} header input`));\n\t\t} catch (error) {\n\t\t\tthrowUnsupportedRefusal(migration, error, \"Session header\");\n\t\t}\n\t\tconst current = snapshotSessionFormatHeader(target, `${migration.name} header output`);\n\t\tif (current.version !== migration.toVersion) throw new SessionFormatError(`${migration.name} header returned v${current.version}; expected v${migration.toVersion}`);\n\t\ttry {\n\t\t\tmigration.validateTargetHeader(current);\n\t\t} catch (error) {\n\t\t\tthrowUnsupportedRefusal(migration, error, \"Session header\");\n\t\t}\n\t\treturn current;\n\t}\n};\nvar ChainedMigrationContext = class {\n\tentry;\n\toutput;\n\tconstructor(entry, output) {\n\t\tthis.entry = entry;\n\t\tthis.output = output;\n\t}\n\temitEvent(event) {\n\t\ttry {\n\t\t\tthis.entry.stage.transformEvent(event, this.output);\n\t\t} catch (error) {\n\t\t\tthrowUnsupportedRefusal(this.entry.migration, error);\n\t\t}\n\t}\n\temitRun(run) {\n\t\ttry {\n\t\t\tthis.entry.stage.transformRun(run, this.output);\n\t\t} catch (error) {\n\t\t\tthrowUnsupportedRefusal(this.entry.migration, error);\n\t\t}\n\t}\n\tfinish() {\n\t\tlet targetCut;\n\t\ttry {\n\t\t\ttargetCut = this.entry.stage.finish(this.output);\n\t\t} catch (error) {\n\t\t\tthrowUnsupportedRefusal(this.entry.migration, error);\n\t\t}\n\t\tif (this.entry.stage.headerInheritedEventCount !== void 0 && this.entry.stage.headerInheritedEventCount !== targetCut) throw new SessionFormatError(`${this.entry.migration.name} changed its predeclared inherited cut`);\n\t\treturn targetCut;\n\t}\n};\nvar CompiledSessionFormatMigrationStream = class {\n\theader;\n\tsourceInheritedEventCount;\n\tinput;\n\tstages;\n\tconstructor(header, sourceInheritedEventCount, entries, output) {\n\t\tthis.header = header;\n\t\tthis.sourceInheritedEventCount = sourceInheritedEventCount;\n\t\tconst stages = new Array(entries.length);\n\t\tlet downstream = output;\n\t\tfor (const [offset, entry] of entries.toReversed().entries()) {\n\t\t\tconst context = new ChainedMigrationContext(entry, downstream);\n\t\t\tstages[entries.length - offset - 1] = context;\n\t\t\tdownstream = context;\n\t\t}\n\t\tthis.input = downstream;\n\t\tthis.stages = stages;\n\t}\n\temitEvent(event) {\n\t\tthis.input.emitEvent(event);\n\t}\n\temitRun(run) {\n\t\tthis.input.emitRun(run);\n\t}\n\tfinish() {\n\t\tlet inheritedEventCount = this.sourceInheritedEventCount;\n\t\tfor (const stage of this.stages) inheritedEventCount = stage.finish();\n\t\treturn sessionFormatCount(inheritedEventCount, \"finished Session inherited event count\");\n\t}\n};\nfunction throwUnsupportedRefusal(migration, error, subject = \"Session\") {\n\tif (error instanceof SessionFormatUnsupportedMigrationError) throw error;\n\tconst detail = error instanceof Error ? error.message : String(error);\n\tthrow new SessionFormatUnsupportedMigrationError(`${migration.name} refuses this format v${migration.fromVersion} ${subject}: ${detail}`, { cause: error });\n}\n//#endregion\n//#region lib/types/context.js\n/** Migration output context that expands compact runs into retained events. */\nvar SessionFormatEventCollector = class {\n\t/** Events retained by this collector in source order. */\n\tvalues = [];\n\t/**\n\t* Retain one settled event.\n\t* @param event - settled event emitted by the upstream stage.\n\t*/\n\temitEvent(event) {\n\t\tthis.values.push(event);\n\t}\n\t/**\n\t* Expand one compact run directly into retained events.\n\t* @param run - compact event run emitted by the upstream stage.\n\t*/\n\temitRun(run) {\n\t\tfor (const event of run.expand()) this.values.push(event);\n\t}\n};\n//#endregion\n//#region lib/types/catalog.js\n/**\n* Compile a build-static physical codec and adjacent migration catalog.\n* @param options - complete codecs, migrations, current version, and restorer.\n* @returns immutable physical dispatch and migration operations.\n*/\nfunction createSessionFormatCatalog(options) {\n\tconst chain = createSessionFormatChain(options);\n\tconst codecs = /* @__PURE__ */ new Map();\n\tfor (const codec of options.codecs) {\n\t\tconst version = sessionFormatVersion(codec.version, \"Session format codec version\");\n\t\tif (codecs.has(version)) throw new SessionFormatError(`Session format codec v${version} is duplicated`);\n\t\tcodecs.set(version, Object.freeze({ ...codec }));\n\t}\n\tfor (let version = 0; version <= chain.currentVersion; version += 1) if (!codecs.has(version)) throw new SessionFormatError(`Session format codec v${version} is missing`);\n\tif (codecs.size !== chain.currentVersion + 1) throw new SessionFormatError(`Session format codec v${[...codecs.keys()].find((version) => version > chain.currentVersion)} is newer than current v${chain.currentVersion}`);\n\tfunction readHeader(headerValue) {\n\t\tlet storedVersion;\n\t\ttry {\n\t\t\tstoredVersion = inspectSessionFormatVersion(headerValue);\n\t\t} catch (error) {\n\t\t\treturn malformed(chain.currentVersion, error);\n\t\t}\n\t\tif (storedVersion > chain.currentVersion) return Object.freeze({\n\t\t\tstatus: \"unsupported\",\n\t\t\tstoredVersion,\n\t\t\ttargetVersion: chain.currentVersion,\n\t\t\treason: `stored Session uses newer format v${storedVersion}; this build writes v${chain.currentVersion}`\n\t\t});\n\t\tconst codec = codecs.get(storedVersion);\n\t\t/* v8 ignore next -- construction proves every supported version has exactly one codec. */\n\t\tif (codec === void 0) return Object.freeze({\n\t\t\tstatus: \"unsupported\",\n\t\t\tstoredVersion,\n\t\t\ttargetVersion: chain.currentVersion,\n\t\t\treason: `this build has no Session format codec for v${storedVersion}`\n\t\t});\n\t\ttry {\n\t\t\tconst decoded = snapshotSessionFormatHeader(codec.decodeHeader(headerValue), `format v${storedVersion} header`);\n\t\t\tconst header = chain.migrateHeader(decoded);\n\t\t\treturn Object.freeze({\n\t\t\t\tstatus: storedVersion === chain.currentVersion ? \"current\" : \"migration-required\",\n\t\t\t\tstoredVersion,\n\t\t\t\ttargetVersion: chain.currentVersion,\n\t\t\t\theader\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tif (error instanceof SessionFormatUnsupportedMigrationError) return Object.freeze({\n\t\t\t\tstatus: \"unsupported\",\n\t\t\t\tstoredVersion,\n\t\t\t\ttargetVersion: chain.currentVersion,\n\t\t\t\treason: error.message\n\t\t\t});\n\t\t\treturn malformed(chain.currentVersion, error, storedVersion);\n\t\t}\n\t}\n\tfunction artifactCodec(headerValue) {\n\t\tconst storedVersion = inspectSessionFormatVersion(headerValue);\n\t\tif (storedVersion > chain.currentVersion) throw new SessionFormatUnsupportedMigrationError(`stored Session uses newer format v${storedVersion}; this build writes v${chain.currentVersion}`);\n\t\tconst codec = codecs.get(storedVersion);\n\t\t/* v8 ignore next -- construction proves every supported version has exactly one codec. */\n\t\tif (codec === void 0) throw new SessionFormatUnsupportedMigrationError(`this build has no Session format codec for v${storedVersion}`);\n\t\treturn {\n\t\t\tstoredVersion,\n\t\t\tcodec\n\t\t};\n\t}\n\tfunction encodeCurrentHeader(header, inheritedEventCount) {\n\t\tif (inspectSessionFormatVersion(header) !== chain.currentVersion) throw new SessionFormatError(`encodeCurrent requires Session format v${chain.currentVersion}`);\n\t\tconst encoded = options.currentEncoder.encodeHeader(header, inheritedEventCount);\n\t\tif (inspectSessionFormatVersion(encoded) !== chain.currentVersion) throw new SessionFormatError(\"current Session codec returned a non-current header\");\n\t\treturn encoded;\n\t}\n\tfunction createRestore(headerValue, restoreOptions) {\n\t\tconst { storedVersion, codec } = artifactCodec(headerValue);\n\t\tconst decoder = codec.createDecoder(headerValue, restoreOptions.recovery);\n\t\tconst sourceCut = decoder.headerInheritedEventCount;\n\t\tif (storedVersion === chain.currentVersion) return new CurrentSessionFormatRestore(decoder, sourceCut, restoreOptions.validation === \"current\" ? options.restoreCurrent : identityArtifact, chain.currentVersion);\n\t\tconst collector = new SessionFormatEventCollector();\n\t\treturn new MigratingSessionFormatRestore(decoder, sourceCut, chain.createStream(decoder.header, sourceCut, collector), collector, restoreOptions.validation === \"current\" ? options.restoreCurrent : options.restoreTransformedCurrent, restoreOptions.validation, storedVersion, chain.currentVersion);\n\t}\n\treturn Object.freeze({\n\t\tcurrentVersion: chain.currentVersion,\n\t\treadHeader,\n\t\tcreateRestore,\n\t\tencodeCurrentHeader,\n\t\tencodeCurrentEvent: options.currentEncoder.encodeEvent.bind(options.currentEncoder)\n\t});\n}\nvar CurrentSessionFormatRestore = class {\n\tdecoder;\n\tsourceInheritedEventCount;\n\trestoreArtifact;\n\tcurrentVersion;\n\theader;\n\tcollector = new SessionFormatEventCollector();\n\tconstructor(decoder, sourceInheritedEventCount, restoreArtifact, currentVersion) {\n\t\tthis.decoder = decoder;\n\t\tthis.sourceInheritedEventCount = sourceInheritedEventCount;\n\t\tthis.restoreArtifact = restoreArtifact;\n\t\tthis.currentVersion = currentVersion;\n\t\tthis.header = decoder.header;\n\t}\n\tdecodeRow(rowValue) {\n\t\tthis.decoder.decodeRow(rowValue, this.collector);\n\t}\n\tfinish() {\n\t\tconst inheritedEventCount = finishDecoder(this.decoder, this.collector, this.sourceInheritedEventCount);\n\t\treturn restoreCurrentVersion(this.restoreArtifact({\n\t\t\theader: this.header,\n\t\t\tinheritedEventCount,\n\t\t\tevents: this.collector.values\n\t\t}), this.currentVersion);\n\t}\n};\nvar MigratingSessionFormatRestore = class {\n\tdecoder;\n\tsourceInheritedEventCount;\n\tmigration;\n\tcollector;\n\trestoreArtifact;\n\tvalidation;\n\tsourceVersion;\n\tcurrentVersion;\n\theader;\n\tconstructor(decoder, sourceInheritedEventCount, migration, collector, restoreArtifact, validation, sourceVersion, currentVersion) {\n\t\tthis.decoder = decoder;\n\t\tthis.sourceInheritedEventCount = sourceInheritedEventCount;\n\t\tthis.migration = migration;\n\t\tthis.collector = collector;\n\t\tthis.restoreArtifact = restoreArtifact;\n\t\tthis.validation = validation;\n\t\tthis.sourceVersion = sourceVersion;\n\t\tthis.currentVersion = currentVersion;\n\t\tthis.header = migration.header;\n\t}\n\tdecodeRow(rowValue) {\n\t\tthis.decoder.decodeRow(rowValue, this);\n\t}\n\temitEvent(event) {\n\t\tthis.migration.emitEvent(event);\n\t}\n\temitRun(run) {\n\t\tthis.migration.emitRun(run);\n\t}\n\tfinish() {\n\t\tfinishDecoder(this.decoder, this, this.sourceInheritedEventCount);\n\t\tconst artifact = {\n\t\t\theader: this.header,\n\t\t\tinheritedEventCount: this.migration.finish(),\n\t\t\tevents: this.collector.values\n\t\t};\n\t\tlet restored;\n\t\ttry {\n\t\t\trestored = this.restoreArtifact(artifact);\n\t\t} catch (error) {\n\t\t\tif (this.validation === \"current\" || error instanceof SessionFormatUnsupportedMigrationError) throw error;\n\t\t\tconst detail = error instanceof Error ? error.message : String(error);\n\t\t\tthrow new SessionFormatUnsupportedMigrationError(`Session migration from v${this.sourceVersion} to v${this.currentVersion} refuses the transformed artifact: ${detail}`, { cause: error });\n\t\t}\n\t\treturn restoreCurrentVersion(restored, this.currentVersion);\n\t}\n};\nfunction finishDecoder(decoder, context, sourceInheritedEventCount) {\n\tconst inheritedEventCount = decoder.finish(context);\n\tif (sourceInheritedEventCount !== void 0 && inheritedEventCount !== sourceInheritedEventCount) throw new SessionFormatError(\"streaming decoder changed its predeclared inherited cut\");\n\treturn inheritedEventCount;\n}\nfunction restoreCurrentVersion(artifact, currentVersion) {\n\tif (artifact.header.version !== currentVersion) throw new SessionFormatError(`current Session restorer returned v${artifact.header.version}; expected v${currentVersion}`);\n\treturn artifact;\n}\nfunction identityArtifact(artifact) {\n\treturn artifact;\n}\nfunction malformed(targetVersion, error, storedVersion) {\n\treturn Object.freeze({\n\t\tstatus: \"malformed\",\n\t\t...storedVersion === void 0 ? {} : { storedVersion },\n\t\ttargetVersion,\n\t\treason: error instanceof Error ? error.message : String(error)\n\t});\n}\n//#endregion\n//#region lib/types/filename.js\n/** Canonical raw log basename shared by every generation-addressed Session artifact. */\nconst CANONICAL_LOG_FILENAME = /^session(?:\\.v([1-9][0-9]*))?\\.jsonl$/u;\n/**\n* Name the raw JSONL log of one immutable Session format generation. Version\n* zero keeps the original `session.jsonl`; every later generation carries a\n* lowercase numeric `.vN` component before the `.jsonl` suffix.\n* @param version - non-negative safe integer Session format version.\n* @returns the canonical basename, without any compression suffix.\n*/\nfunction sessionFormatLogFilename(version) {\n\tconst generation = sessionFormatVersion(version, \"Session log generation version\");\n\treturn generation === 0 ? \"session.jsonl\" : `session.v${generation}.jsonl`;\n}\n/**\n* Read the generation named by one raw JSONL log basename. Temporary,\n* uppercase, leading-zero, `.v0`, and compression-suffixed names are not\n* canonical.\n* @param filename - one basename from a Session directory or archive.\n* @returns its Session format version, or `undefined` when the name is not canonical.\n*/\nfunction parseSessionFormatLogFilename(filename) {\n\tconst match = CANONICAL_LOG_FILENAME.exec(filename);\n\tif (match === null) return void 0;\n\tif (match[1] === void 0) return 0;\n\tconst version = Number(match[1]);\n\treturn Number.isSafeInteger(version) ? version : void 0;\n}\n//#endregion\nexport { SessionFormatError, SessionFormatEventCollector, SessionFormatUnsupportedMigrationError, createSessionFormatCatalog, createSessionFormatChain, defineSessionFormatMigration, inspectSessionFormatVersion, isSessionFormatJsonObject, parseSessionFormatLogFilename, sessionFormatCount, sessionFormatLogFilename, sessionFormatSafeInteger, sessionFormatVersion, snapshotSessionFormatHeader, snapshotSessionFormatJson };\n", "import { SessionFormatError, SessionFormatUnsupportedMigrationError, defineSessionFormatMigration, isSessionFormatJsonObject, sessionFormatCount, sessionFormatSafeInteger, snapshotSessionFormatJson } from \"@deepseek-ai/dsh-session-format\";\nimport { isAbsolute } from \"node:path\";\nimport { deepEqualJson, isJsonValue } from \"@deepseek-ai/dsh-util-values\";\n//#region lib/types/dispositions.js\n/**\n* Freeze one exact released payload-member disposition for adjacent format validators.\n* @param required - members that must be present.\n* @param optional - additional admitted members.\n* @param opaque - members retained as lossless JSON without nested semantic inspection.\n* @returns the detached frozen disposition.\n*/\nfunction defineReleasedPayloadDisposition(required, optional = [], opaque = []) {\n\treturn Object.freeze({\n\t\trequired: Object.freeze([...required]),\n\t\toptional: Object.freeze([...optional]),\n\t\topaque: Object.freeze([...opaque])\n\t});\n}\nconst disposition = defineReleasedPayloadDisposition;\n/**\n* Frozen released-v0 event and payload-member inventory.\n* Every listed member is preserved by the identity edge. Members in `opaque`\n* remain lossless JSON without nested Session-sequence interpretation. Nested\n* merge-extensible discriminants validate known variants and preserve\n* unknown variants as owner-opaque JSON.\n*/\nconst RELEASED_V0_EVENT_DISPOSITIONS = Object.freeze({\n\t\"agent-preset/selected\": disposition([\"agentPreset\"]),\n\t\"agent/inbox/spliced\": disposition([\n\t\t\"target\",\n\t\t\"start\",\n\t\t\"inserted\"\n\t], [\"removedCount\", \"outcome\"]),\n\t\"approval/asked\": disposition([\"id\", \"toolName\"], [\"callId\", \"reason\"]),\n\t\"approval/decided\": disposition([\"id\", \"outcome\"]),\n\t\"approval/policy\": disposition([\"policy\"], [\"source\"]),\n\t\"assistant/chunk\": disposition([\n\t\t\"turn\",\n\t\t\"step\",\n\t\t\"chunk\"\n\t]),\n\t\"assistant/message\": disposition([\n\t\t\"turn\",\n\t\t\"step\",\n\t\t\"message\"\n\t], [\"usage\", \"interrupted\"]),\n\t\"command/done\": disposition([\"commandId\", \"kind\"], [\"text\", \"sourceEventSeq\"]),\n\t\"command/run\": disposition([\n\t\t\"commandId\",\n\t\t\"name\",\n\t\t\"source\"\n\t], [\"args\"]),\n\t\"compaction/end\": disposition([\"compactionId\", \"turn\"], [\"sourceCommandId\", \"error\"]),\n\t\"compaction/prune\": disposition([\n\t\t\"shadowedRange\",\n\t\t\"shadowedSeqs\",\n\t\t\"shadowedTokenCount\"\n\t]),\n\t\"compaction/start\": disposition([\"compactionId\", \"turn\"], [\"sourceCommandId\"]),\n\t\"compaction/summary\": disposition([\n\t\t\"compactionId\",\n\t\t\"summary\",\n\t\t\"shadowedRange\",\n\t\t\"shadowedSeqs\",\n\t\t\"shadowedTokenCount\",\n\t\t\"provider\",\n\t\t\"model\"\n\t], [\n\t\t\"sourceCommandId\",\n\t\t\"maxTokens\",\n\t\t\"usage\",\n\t\t\"rawOutput\",\n\t\t\"llmStreamCall\"\n\t]),\n\t\"feedback/record\": disposition([\"text\"]),\n\t\"goal/change\": disposition([\n\t\t\"kind\",\n\t\t\"version\",\n\t\t\"operation\"\n\t], [\n\t\t\"goal\",\n\t\t\"roundsStarted\",\n\t\t\"createdAt\",\n\t\t\"updatedAt\",\n\t\t\"cleared\",\n\t\t\"clearedAt\"\n\t]),\n\t\"hook/invoked\": disposition([\n\t\t\"turn\",\n\t\t\"point\",\n\t\t\"dialect\",\n\t\t\"handlerId\"\n\t], [\"matcher\"]),\n\t\"hook/result\": disposition([\n\t\t\"turn\",\n\t\t\"point\",\n\t\t\"handlerId\",\n\t\t\"decision\",\n\t\t\"durationMs\"\n\t], [\"exitCode\", \"stderrSummary\"]),\n\t\"llm/retry\": disposition([\n\t\t\"retryId\",\n\t\t\"turn\",\n\t\t\"step\",\n\t\t\"provider\",\n\t\t\"mode\",\n\t\t\"policyKey\",\n\t\t\"retry\",\n\t\t\"delayMs\",\n\t\t\"failure\"\n\t], [\"maxRetries\"]),\n\t\"llm/retry-started\": disposition([\n\t\t\"retryId\",\n\t\t\"turn\",\n\t\t\"step\",\n\t\t\"retry\"\n\t]),\n\t\"model/selection\": disposition([\"provider\", \"model\"], [\"reasoningEffort\"]),\n\t\"permission/preset\": disposition([\"preset\"]),\n\t\"plan/mode\": disposition([\"active\"]),\n\t\"request/context\": disposition([\"provider\", \"model\"], [\"contextWindow\"]),\n\t\"request/header\": disposition([\"header\", \"reason\"], [\"startsSeries\"]),\n\t\"sandbox/mode\": disposition([\"mode\"], [\"source\"]),\n\t\"schedule/change\": disposition([\"version\", \"operation\"], [\n\t\t\"schedule\",\n\t\t\"id\",\n\t\t\"acceptedAt\"\n\t]),\n\t\"session-log-deepseek/delivery-accepted\": disposition([\"sessionId\", \"throughSeq\"]),\n\t\"session/end-seed\": disposition([]),\n\t\"session/title\": disposition([\n\t\t\"title\",\n\t\t\"messageSeqs\",\n\t\t\"source\"\n\t]),\n\t\"session/title-llm-request\": disposition([\n\t\t\"titleProvider\",\n\t\t\"messageSeqs\",\n\t\t\"route\",\n\t\t\"system\",\n\t\t\"messages\",\n\t\t\"maxTokens\"\n\t]),\n\t\"step/end\": disposition([\"turn\", \"step\"]),\n\t\"step/start\": disposition([\"turn\", \"step\"]),\n\t\"subagent/descriptor\": disposition([\n\t\t\"mode\",\n\t\t\"version\",\n\t\t\"provider\"\n\t], [\n\t\t\"label\",\n\t\t\"agentProvider\",\n\t\t\"agentModel\",\n\t\t\"agentReasoningEffort\",\n\t\t\"persona\",\n\t\t\"toolFilter\"\n\t]),\n\t\"subagent/model-selection-policy\": disposition([\"allowedModels\"]),\n\t\"team/member\": disposition([\n\t\t\"version\",\n\t\t\"teamId\",\n\t\t\"member\"\n\t]),\n\t\"team/message/delivered\": disposition([\n\t\t\"version\",\n\t\t\"teamId\",\n\t\t\"messageId\",\n\t\t\"targetId\"\n\t]),\n\t\"team/message/queued\": disposition([\n\t\t\"version\",\n\t\t\"teamId\",\n\t\t\"message\"\n\t]),\n\t\"team/task\": disposition([\n\t\t\"version\",\n\t\t\"teamId\",\n\t\t\"task\"\n\t]),\n\t\"todo/write\": disposition([\"todos\"]),\n\t\"tool-workflow/agent-end\": disposition([\n\t\t\"runId\",\n\t\t\"seq\",\n\t\t\"outcome\"\n\t]),\n\t\"tool-workflow/agent-start\": disposition([\n\t\t\"runId\",\n\t\t\"seq\",\n\t\t\"label\",\n\t\t\"childId\"\n\t], [\"phase\"]),\n\t\"tool-workflow/run-end\": disposition([\"runId\", \"stopReason\"]),\n\t\"tool-workflow/run-start\": disposition([\"runId\", \"name\"]),\n\t\"tool/call\": disposition([\n\t\t\"turn\",\n\t\t\"step\",\n\t\t\"callId\",\n\t\t\"name\",\n\t\t\"arguments\"\n\t]),\n\t\"tool/code-dispatch\": disposition([\n\t\t\"rootCallId\",\n\t\t\"parentCallId\",\n\t\t\"subCallId\",\n\t\t\"name\",\n\t\t\"arguments\",\n\t\t\"isError\",\n\t\t\"content\"\n\t], [], [\"arguments\"]),\n\t\"tool/code-dispatch-start\": disposition([\n\t\t\"rootCallId\",\n\t\t\"parentCallId\",\n\t\t\"subCallId\",\n\t\t\"name\",\n\t\t\"arguments\"\n\t], [], [\"arguments\"]),\n\t\"tool/result\": disposition([\n\t\t\"turn\",\n\t\t\"step\",\n\t\t\"message\"\n\t], [\"error\", \"meta\"], [\"meta\"]),\n\t\"turn/end\": disposition([\"turn\", \"reason\"]),\n\t\"turn/start\": disposition([\"turn\"]),\n\t\"user/message\": disposition([\n\t\t\"role\",\n\t\t\"id\",\n\t\t\"content\",\n\t\t\"source\"\n\t]),\n\t\"web/deepseek-search-llm-request\": disposition([\n\t\t\"endpoint\",\n\t\t\"apiVersion\",\n\t\t\"body\"\n\t])\n});\n/** Stable sorted released-v0 event inventory. */\nconst RELEASED_V0_EVENT_TYPES = Object.freeze(Object.keys(RELEASED_V0_EVENT_DISPOSITIONS).sort((left, right) => left.localeCompare(right, \"en\")));\n//#endregion\n//#region lib/types/validation-helpers.js\n/**\n* Require one plain JSON object.\n* @param value - candidate JSON value.\n* @param label - diagnostic subject.\n* @returns validated object record.\n*/\nfunction releasedV0Record(value, label) {\n\tif (!isSessionFormatJsonObject(value)) throw new SessionFormatError(`${label} must be a JSON object`);\n\treturn value;\n}\n/**\n* Require every named member and no member outside the optional list.\n* @param record - candidate object.\n* @param required - members that must exist.\n* @param optional - additional admitted members.\n* @param label - diagnostic subject.\n*/\nfunction assertReleasedV0Keys(record, required, optional = [], label) {\n\tconst allowed = new Set([...required, ...optional]);\n\tconst unexpected = Object.keys(record).find((key) => !allowed.has(key));\n\tif (unexpected !== void 0) throw new SessionFormatError(`${label} has unexpected member ${JSON.stringify(unexpected)}`);\n\tconst missing = required.find((key) => !Object.hasOwn(record, key));\n\tif (missing !== void 0) throw new SessionFormatError(`${label} lacks required member ${JSON.stringify(missing)}`);\n}\n//#endregion\n//#region lib/types/payload-validation.js\n/**\n* Validate nested released payload semantics for one known event.\n* @param event - known event with exact top-level members.\n* @param version - source or current payload generation.\n*/\nfunction assertReleasedPayloadSemantics(event, version) {\n\tconst data = releasedV0Record(event.data, `${event.type} ${event.seq} data`);\n\tconst label = `${event.type} ${event.seq}`;\n\tswitch (event.type) {\n\t\tcase \"agent-preset/selected\":\n\t\t\tstringValue(data[\"agentPreset\"], `${label} agentPreset`);\n\t\t\treturn;\n\t\tcase \"agent/inbox/spliced\":\n\t\t\tliteralValue(data[\"target\"], [\"next-turn\", \"next-step\"], `${label} target`);\n\t\t\tcountValue(data[\"start\"], `${label} start`);\n\t\t\tif (data[\"removedCount\"] !== void 0) countValue(data[\"removedCount\"], `${label} removedCount`);\n\t\t\tarrayValue(data[\"inserted\"], `${label} inserted`, (value) => {\n\t\t\t\tmessageValue(value, `${label} inserted message`, version, \"user\");\n\t\t\t});\n\t\t\tif (data[\"outcome\"] !== void 0) literalValue(data[\"outcome\"], [\"canceled\"], `${label} outcome`);\n\t\t\treturn;\n\t\tcase \"approval/asked\":\n\t\t\tnonEmptyString(data[\"id\"], `${label} id`);\n\t\t\tnonEmptyString(data[\"toolName\"], `${label} toolName`);\n\t\t\tif (data[\"callId\"] !== void 0) nonEmptyString(data[\"callId\"], `${label} callId`);\n\t\t\tif (data[\"reason\"] !== void 0) stringValue(data[\"reason\"], `${label} reason`);\n\t\t\treturn;\n\t\tcase \"approval/decided\":\n\t\t\tnonEmptyString(data[\"id\"], `${label} id`);\n\t\t\tliteralValue(data[\"outcome\"], [\n\t\t\t\t\"allowed-once\",\n\t\t\t\t\"rejected\",\n\t\t\t\t\"cancelled\",\n\t\t\t\t\"unavailable\"\n\t\t\t], `${label} outcome`);\n\t\t\treturn;\n\t\tcase \"approval/policy\":\n\t\t\tliteralValue(data[\"policy\"], [\"ask\", \"never\"], `${label} policy`);\n\t\t\tif (data[\"source\"] !== void 0) literalValue(data[\"source\"], [\"delegation\"], `${label} source`);\n\t\t\treturn;\n\t\tcase \"assistant/chunk\":\n\t\t\tcoordinatePair(data, label);\n\t\t\tstreamChunkValue(data[\"chunk\"], `${label} chunk`);\n\t\t\treturn;\n\t\tcase \"assistant/message\":\n\t\t\tcoordinatePair(data, label);\n\t\t\tmessageValue(data[\"message\"], `${label} message`, version, \"assistant\");\n\t\t\tif (data[\"usage\"] !== void 0) tokenUsageValue(data[\"usage\"], `${label} usage`);\n\t\t\tif (data[\"interrupted\"] !== void 0) literalValue(data[\"interrupted\"], [true], `${label} interrupted`);\n\t\t\treturn;\n\t\tcase \"command/done\":\n\t\t\tnonEmptyString(data[\"commandId\"], `${label} commandId`);\n\t\t\tliteralValue(data[\"kind\"], [\"success\", \"error\"], `${label} kind`);\n\t\t\tif (data[\"text\"] !== void 0) stringValue(data[\"text\"], `${label} text`);\n\t\t\tif (data[\"sourceEventSeq\"] !== void 0) earlierSeq(data[\"sourceEventSeq\"], event.seq, `${label} sourceEventSeq`);\n\t\t\treturn;\n\t\tcase \"command/run\":\n\t\t\tnonEmptyString(data[\"commandId\"], `${label} commandId`);\n\t\t\tnonEmptyString(data[\"name\"], `${label} name`);\n\t\t\tif (data[\"args\"] !== void 0) stringValue(data[\"args\"], `${label} args`);\n\t\t\tliteralValue(exactRecord(data[\"source\"], `${label} source`, [\"kind\"])[\"kind\"], [\"user\"], `${label} source kind`);\n\t\t\treturn;\n\t\tcase \"compaction/start\":\n\t\tcase \"compaction/end\":\n\t\t\tnonEmptyString(data[\"compactionId\"], `${label} compactionId`);\n\t\t\tif (data[\"sourceCommandId\"] !== void 0) nonEmptyString(data[\"sourceCommandId\"], `${label} sourceCommandId`);\n\t\t\tnullableValue(data[\"turn\"], `${label} turn`, countValue);\n\t\t\tif (data[\"error\"] !== void 0) stringValue(data[\"error\"], `${label} error`);\n\t\t\treturn;\n\t\tcase \"compaction/prune\":\n\t\t\tshadowedValue(data, event.seq, label);\n\t\t\treturn;\n\t\tcase \"compaction/summary\":\n\t\t\tif (data[\"llmStreamCall\"] === true && data[\"rawOutput\"] === void 0) throw new SessionFormatError(`${label} llmStreamCall requires rawOutput`);\n\t\t\tnonEmptyString(data[\"compactionId\"], `${label} compactionId`);\n\t\t\tif (data[\"sourceCommandId\"] !== void 0) nonEmptyString(data[\"sourceCommandId\"], `${label} sourceCommandId`);\n\t\t\tcontentBlocksValue(data[\"summary\"], `${label} summary`, version);\n\t\t\tshadowedValue(data, event.seq, label);\n\t\t\tnonEmptyString(data[\"provider\"], `${label} provider`);\n\t\t\tnonEmptyString(data[\"model\"], `${label} model`);\n\t\t\tif (data[\"maxTokens\"] !== void 0) countValue(data[\"maxTokens\"], `${label} maxTokens`);\n\t\t\tif (data[\"usage\"] !== void 0) tokenUsageValue(data[\"usage\"], `${label} usage`);\n\t\t\tif (data[\"rawOutput\"] !== void 0) contentBlocksValue(data[\"rawOutput\"], `${label} rawOutput`, version);\n\t\t\tif (data[\"llmStreamCall\"] !== void 0) literalValue(data[\"llmStreamCall\"], [true], `${label} llmStreamCall`);\n\t\t\treturn;\n\t\tcase \"feedback/record\":\n\t\t\tnonEmptyString(data[\"text\"], `${label} text`);\n\t\t\treturn;\n\t\tcase \"goal/change\":\n\t\t\tgoalChangeValue(data, label);\n\t\t\treturn;\n\t\tcase \"hook/invoked\":\n\t\t\tcountValue(data[\"turn\"], `${label} turn`);\n\t\t\tnonEmptyString(data[\"point\"], `${label} point`);\n\t\t\tliteralValue(data[\"dialect\"], [\"claude-code\", \"codex\"], `${label} dialect`);\n\t\t\tif (data[\"matcher\"] !== void 0) stringValue(data[\"matcher\"], `${label} matcher`);\n\t\t\tnonEmptyString(data[\"handlerId\"], `${label} handlerId`);\n\t\t\treturn;\n\t\tcase \"hook/result\":\n\t\t\tcountValue(data[\"turn\"], `${label} turn`);\n\t\t\tnonEmptyString(data[\"point\"], `${label} point`);\n\t\t\tnonEmptyString(data[\"handlerId\"], `${label} handlerId`);\n\t\t\tnonEmptyString(data[\"decision\"], `${label} decision`);\n\t\t\tif (data[\"exitCode\"] !== void 0) safeIntegerValue(data[\"exitCode\"], `${label} exitCode`);\n\t\t\tif (data[\"stderrSummary\"] !== void 0) stringValue(data[\"stderrSummary\"], `${label} stderrSummary`);\n\t\t\tif (finiteNumberValue(data[\"durationMs\"], `${label} durationMs`) < 0) throw new SessionFormatError(`${label} durationMs must be non-negative`);\n\t\t\treturn;\n\t\tcase \"llm/retry\":\n\t\t\tnonEmptyString(data[\"retryId\"], `${label} retryId`);\n\t\t\tcoordinatePair(data, label);\n\t\t\tnonEmptyString(data[\"provider\"], `${label} provider`);\n\t\t\tliteralValue(data[\"mode\"], [\"normal\", \"always\"], `${label} mode`);\n\t\t\tnonEmptyString(data[\"policyKey\"], `${label} policyKey`);\n\t\t\tpositiveIntegerValue(data[\"retry\"], `${label} retry`);\n\t\t\tif (data[\"mode\"] === \"normal\") {\n\t\t\t\tconst maxRetries = positiveIntegerValue(data[\"maxRetries\"], `${label} maxRetries`);\n\t\t\t\tif (data[\"retry\"] > maxRetries) throw new SessionFormatError(`${label} retry exceeds maxRetries`);\n\t\t\t} else if (data[\"maxRetries\"] !== void 0) throw new SessionFormatError(`${label} always mode must omit maxRetries`);\n\t\t\tconst delayMs = finiteNumberValue(data[\"delayMs\"], `${label} delayMs`);\n\t\t\tif (delayMs < 0) throw new SessionFormatError(`${label} delayMs must be non-negative`);\n\t\t\tif (delayMs > 2147483647) throw new SessionFormatError(`${label} delayMs exceeds the timer range`);\n\t\t\tllmFailureValue(data[\"failure\"], `${label} failure`);\n\t\t\treturn;\n\t\tcase \"llm/retry-started\":\n\t\t\tnonEmptyString(data[\"retryId\"], `${label} retryId`);\n\t\t\tcoordinatePair(data, label);\n\t\t\tpositiveIntegerValue(data[\"retry\"], `${label} retry`);\n\t\t\treturn;\n\t\tcase \"model/selection\":\n\t\t\tnonEmptyString(data[\"provider\"], `${label} provider`);\n\t\t\tnonEmptyString(data[\"model\"], `${label} model`);\n\t\t\tif (data[\"reasoningEffort\"] !== void 0) nonEmptyString(data[\"reasoningEffort\"], `${label} reasoningEffort`);\n\t\t\treturn;\n\t\tcase \"permission/preset\":\n\t\t\tnonEmptyString(data[\"preset\"], `${label} preset`);\n\t\t\treturn;\n\t\tcase \"plan/mode\":\n\t\t\tbooleanValue(data[\"active\"], `${label} active`);\n\t\t\treturn;\n\t\tcase \"request/context\":\n\t\t\tnonEmptyString(data[\"provider\"], `${label} provider`);\n\t\t\tnonEmptyString(data[\"model\"], `${label} model`);\n\t\t\tif (data[\"contextWindow\"] !== void 0) positiveIntegerValue(data[\"contextWindow\"], `${label} contextWindow`);\n\t\t\treturn;\n\t\tcase \"request/header\":\n\t\t\trequestHeaderValue(data[\"header\"], `${label} header`);\n\t\t\tliteralValue(data[\"reason\"], [\n\t\t\t\t\"initial\",\n\t\t\t\t\"resume\",\n\t\t\t\t\"change\",\n\t\t\t\t\"series\"\n\t\t\t], `${label} reason`);\n\t\t\tif (data[\"startsSeries\"] !== void 0) literalValue(data[\"startsSeries\"], [true], `${label} startsSeries`);\n\t\t\treturn;\n\t\tcase \"sandbox/mode\":\n\t\t\tliteralValue(data[\"mode\"], [\n\t\t\t\t\"read-only\",\n\t\t\t\t\"workspace-write\",\n\t\t\t\t\"danger-full-access\"\n\t\t\t], `${label} mode`);\n\t\t\tif (data[\"source\"] !== void 0) literalValue(data[\"source\"], [\"delegation\"], `${label} source`);\n\t\t\treturn;\n\t\tcase \"schedule/change\":\n\t\t\tscheduleChangeValue(data, label);\n\t\t\treturn;\n\t\tcase \"session-log-deepseek/delivery-accepted\":\n\t\t\tif ((data[\"sessionFormatVersion\"] === void 0 ? 0 : countValue(data[\"sessionFormatVersion\"], `${label} sessionFormatVersion`)) !== version) return;\n\t\t\tnonEmptyString(data[\"sessionId\"], `${label} sessionId`);\n\t\t\tearlierSeq(data[\"throughSeq\"], event.seq, `${label} throughSeq`);\n\t\t\treturn;\n\t\tcase \"session/end-seed\": return;\n\t\tcase \"session/title\":\n\t\t\tnonEmptyString(data[\"title\"], `${label} title`);\n\t\t\tseqArray(data[\"messageSeqs\"], event.seq, `${label} messageSeqs`, false);\n\t\t\ttitleSourceValue(data[\"source\"], `${label} source`);\n\t\t\treturn;\n\t\tcase \"session/title-llm-request\":\n\t\t\tnonEmptyString(data[\"titleProvider\"], `${label} titleProvider`);\n\t\t\tseqArray(data[\"messageSeqs\"], event.seq, `${label} messageSeqs`, true);\n\t\t\tmodelRouteValue(data[\"route\"], `${label} route`);\n\t\t\tstringValue(data[\"system\"], `${label} system`);\n\t\t\tarrayValue(data[\"messages\"], `${label} messages`, (value) => {\n\t\t\t\tmessageValue(value, `${label} message`, version);\n\t\t\t});\n\t\t\tpositiveIntegerValue(data[\"maxTokens\"], `${label} maxTokens`);\n\t\t\treturn;\n\t\tcase \"step/end\":\n\t\tcase \"step/start\":\n\t\t\tcoordinatePair(data, label);\n\t\t\treturn;\n\t\tcase \"subagent/descriptor\":\n\t\t\tsubagentDescriptorValue(data, label);\n\t\t\treturn;\n\t\tcase \"subagent/model-selection-policy\":\n\t\t\tallowedModelsValue(data[\"allowedModels\"], `${label} allowedModels`);\n\t\t\treturn;\n\t\tcase \"team/member\":\n\t\t\tteamSelector(data, label);\n\t\t\tteamMemberValue(data[\"member\"], `${label} member`);\n\t\t\treturn;\n\t\tcase \"team/message/delivered\":\n\t\t\tteamSelector(data, label);\n\t\t\tnonEmptyString(data[\"messageId\"], `${label} messageId`);\n\t\t\tnonEmptyString(data[\"targetId\"], `${label} targetId`);\n\t\t\treturn;\n\t\tcase \"team/message/queued\":\n\t\t\tteamSelector(data, label);\n\t\t\tteamMessageValue(data[\"message\"], `${label} message`, version);\n\t\t\treturn;\n\t\tcase \"team/task\":\n\t\t\tteamSelector(data, label);\n\t\t\tteamTaskValue(data[\"task\"], `${label} task`);\n\t\t\treturn;\n\t\tcase \"todo/write\":\n\t\t\tarrayValue(data[\"todos\"], `${label} todos`, (value, itemLabel) => {\n\t\t\t\tconst item = exactRecord(value, itemLabel, [\"content\", \"status\"]);\n\t\t\t\tstringValue(item[\"content\"], `${itemLabel} content`);\n\t\t\t\tliteralValue(item[\"status\"], [\n\t\t\t\t\t\"pending\",\n\t\t\t\t\t\"in_progress\",\n\t\t\t\t\t\"completed\"\n\t\t\t\t], `${itemLabel} status`);\n\t\t\t});\n\t\t\treturn;\n\t\tcase \"tool-workflow/agent-end\":\n\t\t\tworkflowIdentity(data, label);\n\t\t\tliteralValue(data[\"outcome\"], [\n\t\t\t\t\"completed\",\n\t\t\t\t\"failed\",\n\t\t\t\t\"cancelled\"\n\t\t\t], `${label} outcome`);\n\t\t\treturn;\n\t\tcase \"tool-workflow/agent-start\":\n\t\t\tworkflowIdentity(data, label);\n\t\t\tstringValue(data[\"label\"], `${label} label`);\n\t\t\tif (data[\"phase\"] !== void 0) stringValue(data[\"phase\"], `${label} phase`);\n\t\t\tnonEmptyString(data[\"childId\"], `${label} childId`);\n\t\t\treturn;\n\t\tcase \"tool-workflow/run-end\":\n\t\t\tnonEmptyString(data[\"runId\"], `${label} runId`);\n\t\t\tliteralValue(data[\"stopReason\"], [\n\t\t\t\t\"completed\",\n\t\t\t\t\"cancelled\",\n\t\t\t\t\"error\"\n\t\t\t], `${label} stopReason`);\n\t\t\treturn;\n\t\tcase \"tool-workflow/run-start\":\n\t\t\tnonEmptyString(data[\"runId\"], `${label} runId`);\n\t\t\tnonEmptyString(data[\"name\"], `${label} name`);\n\t\t\treturn;\n\t\tcase \"tool/call\":\n\t\t\tcoordinatePair(data, label);\n\t\t\tnonEmptyString(data[\"callId\"], `${label} callId`);\n\t\t\tnonEmptyString(data[\"name\"], `${label} name`);\n\t\t\tstringValue(data[\"arguments\"], `${label} arguments`);\n\t\t\treturn;\n\t\tcase \"tool/code-dispatch\":\n\t\tcase \"tool/code-dispatch-start\":\n\t\t\tnonEmptyString(data[\"rootCallId\"], `${label} rootCallId`);\n\t\t\tnonEmptyString(data[\"parentCallId\"], `${label} parentCallId`);\n\t\t\tnonEmptyString(data[\"subCallId\"], `${label} subCallId`);\n\t\t\tnonEmptyString(data[\"name\"], `${label} name`);\n\t\t\tif (event.type === \"tool/code-dispatch\") {\n\t\t\t\tbooleanValue(data[\"isError\"], `${label} isError`);\n\t\t\t\tcontentBlocksValue(data[\"content\"], `${label} content`, version);\n\t\t\t}\n\t\t\treturn;\n\t\tcase \"tool/result\":\n\t\t\tcoordinatePair(data, label);\n\t\t\tmessageValue(data[\"message\"], `${label} message`, version, \"tool\");\n\t\t\tif (data[\"error\"] !== void 0) {\n\t\t\t\tconst error = exactRecord(data[\"error\"], `${label} error`, [\"name\", \"code\"]);\n\t\t\t\tnonEmptyString(error[\"name\"], `${label} error name`);\n\t\t\t\tnonEmptyString(error[\"code\"], `${label} error code`);\n\t\t\t}\n\t\t\treturn;\n\t\tcase \"turn/end\":\n\t\t\tcountValue(data[\"turn\"], `${label} turn`);\n\t\t\tturnEndReasonValue(data[\"reason\"], `${label} reason`);\n\t\t\treturn;\n\t\tcase \"turn/start\":\n\t\t\tcountValue(data[\"turn\"], `${label} turn`);\n\t\t\treturn;\n\t\tcase \"user/message\":\n\t\t\tmessageValue(data, label, version, \"user\");\n\t\t\treturn;\n\t\tcase \"web/deepseek-search-llm-request\":\n\t\t\tnonEmptyString(data[\"endpoint\"], `${label} endpoint`);\n\t\t\tnonEmptyString(data[\"apiVersion\"], `${label} apiVersion`);\n\t\t\tdeepSeekSearchBodyValue(data[\"body\"], `${label} body`);\n\t\t\treturn;\n\t\t/* v8 ignore next -- the frozen disposition rejects unknown types before semantic dispatch. */\n\t\tdefault: throw new SessionFormatError(`released payload validator is missing event ${JSON.stringify(event.type)}`);\n\t}\n}\nfunction exactRecord(value, label, required, optional = []) {\n\tconst record = releasedV0Record(value, label);\n\tassertReleasedV0Keys(record, required, optional, label);\n\treturn record;\n}\nfunction stringValue(value, label) {\n\tif (typeof value !== \"string\") throw new SessionFormatError(`${label} must be a string`);\n}\nfunction nonEmptyString(value, label) {\n\tif (typeof value !== \"string\" || value.length === 0) throw new SessionFormatError(`${label} must be a non-empty string`);\n}\nfunction booleanValue(value, label) {\n\tif (typeof value !== \"boolean\") throw new SessionFormatError(`${label} must be a boolean`);\n}\nfunction safeIntegerValue(value, label) {\n\treturn sessionFormatSafeInteger(value, label);\n}\nfunction countValue(value, label) {\n\treturn sessionFormatCount(value, label);\n}\nfunction positiveIntegerValue(value, label) {\n\tconst result = countValue(value, label);\n\tif (result === 0) throw new SessionFormatError(`${label} must be positive`);\n\treturn result;\n}\nfunction finiteNumberValue(value, label) {\n\tif (typeof value !== \"number\" || !Number.isFinite(value) || Object.is(value, -0)) throw new SessionFormatError(`${label} must be a finite number`);\n\treturn value;\n}\nfunction literalValue(value, allowed, label) {\n\tif (!allowed.some((candidate) => candidate === value)) throw new SessionFormatError(`${label} must be one of ${allowed.map(String).join(\", \")}`);\n}\nfunction nullableValue(value, label, validate) {\n\tif (value !== null) validate(value, label);\n}\nfunction arrayValue(value, label, validate) {\n\tif (!Array.isArray(value)) throw new SessionFormatError(`${label} must be an array`);\n\tconst members = value;\n\tmembers.forEach((member, index) => {\n\t\tvalidate(member, `${label}[${index}]`);\n\t});\n\treturn members;\n}\nfunction coordinatePair(data, label) {\n\tcountValue(data[\"turn\"], `${label} turn`);\n\tcountValue(data[\"step\"], `${label} step`);\n}\nfunction earlierSeq(value, eventSeq, label) {\n\tconst seq = countValue(value, label);\n\tif (seq >= eventSeq) throw new SessionFormatError(`${label} must identify an earlier event`);\n\treturn seq;\n}\nfunction seqArray(value, eventSeq, label, requireNonEmpty) {\n\tconst seen = /* @__PURE__ */ new Set();\n\tconst values = arrayValue(value, label, (member, memberLabel) => {\n\t\tconst seq = earlierSeq(member, eventSeq, memberLabel);\n\t\tif (seen.has(seq)) throw new SessionFormatError(`${label} repeats seq ${seq}`);\n\t\tseen.add(seq);\n\t});\n\tif (requireNonEmpty && values.length === 0) throw new SessionFormatError(`${label} must be non-empty`);\n\treturn values;\n}\nfunction llmFailureValue(value, label) {\n\tconst failure = exactRecord(value, label, [\"message\", \"code\"], [\n\t\t\"status\",\n\t\t\"providerRetryAfterMs\",\n\t\t\"requestId\"\n\t]);\n\tnonEmptyString(failure[\"message\"], `${label} message`);\n\tnonEmptyString(failure[\"code\"], `${label} code`);\n\tif (failure[\"status\"] !== void 0) {\n\t\tconst status = safeIntegerValue(failure[\"status\"], `${label} status`);\n\t\tif (status < 100 || status > 599) throw new SessionFormatError(`${label} status must be 100 through 599`);\n\t}\n\tif (failure[\"providerRetryAfterMs\"] !== void 0 && finiteNumberValue(failure[\"providerRetryAfterMs\"], `${label} providerRetryAfterMs`) <= 0) throw new SessionFormatError(`${label} providerRetryAfterMs must be positive`);\n\tif (failure[\"requestId\"] !== void 0) nonEmptyString(failure[\"requestId\"], `${label} requestId`);\n}\nfunction tokenUsageValue(value, label) {\n\tconst usage = exactRecord(value, label, [\"inputTokens\", \"outputTokens\"], [\n\t\t\"totalTokens\",\n\t\t\"cacheReadTokens\",\n\t\t\"cacheWriteTokens\",\n\t\t\"reasoningTokens\"\n\t]);\n\tfor (const key of Object.keys(usage)) countValue(usage[key], `${label} ${key}`);\n}\nfunction contentBlocksValue(value, label, version) {\n\tarrayValue(value, label, (member, memberLabel) => {\n\t\tcontentBlockValue(member, memberLabel, version);\n\t});\n}\nfunction contentBlockValue(value, label, version) {\n\tconst block = releasedV0Record(value, label);\n\tswitch (block[\"type\"]) {\n\t\tcase \"text\":\n\t\tcase \"reasoning\":\n\t\t\tassertReleasedV0Keys(block, [\"type\", \"text\"], [], label);\n\t\t\tstringValue(block[\"text\"], `${label} text`);\n\t\t\treturn;\n\t\tcase \"image\":\n\t\t\tassertReleasedV0Keys(block, [\"type\", \"attachment\"], [], label);\n\t\t\timageAttachmentValue(block[\"attachment\"], `${label} attachment`);\n\t\t\treturn;\n\t\tcase \"tool-call\":\n\t\t\tassertReleasedV0Keys(block, [\n\t\t\t\t\"type\",\n\t\t\t\t\"id\",\n\t\t\t\t\"name\",\n\t\t\t\t\"arguments\"\n\t\t\t], [], label);\n\t\t\tnonEmptyString(block[\"id\"], `${label} id`);\n\t\t\tnonEmptyString(block[\"name\"], `${label} name`);\n\t\t\tstringValue(block[\"arguments\"], `${label} arguments`);\n\t\t\treturn;\n\t\tcase \"tool-result\":\n\t\t\tassertReleasedV0Keys(block, [\n\t\t\t\t\"type\",\n\t\t\t\t\"toolCallId\",\n\t\t\t\t\"content\"\n\t\t\t], [\"isError\"], label);\n\t\t\tnonEmptyString(block[\"toolCallId\"], `${label} toolCallId`);\n\t\t\tcontentBlocksValue(block[\"content\"], `${label} content`, version);\n\t\t\tif (block[\"isError\"] !== void 0) booleanValue(block[\"isError\"], `${label} isError`);\n\t\t\treturn;\n\t\tdefault:\n\t\t\tnonEmptyString(block[\"type\"], `${label} type`);\n\t\t\treturn;\n\t}\n}\nfunction imageAttachmentValue(value, label) {\n\tconst attachment = exactRecord(value, label, [\n\t\t\"attachmentId\",\n\t\t\"mediaType\",\n\t\t\"bytes\",\n\t\t\"width\",\n\t\t\"height\"\n\t], [\"name\", \"originalDimensions\"]);\n\tnonEmptyString(attachment[\"attachmentId\"], `${label} attachmentId`);\n\tliteralValue(attachment[\"mediaType\"], [\n\t\t\"image/png\",\n\t\t\"image/jpeg\",\n\t\t\"image/webp\",\n\t\t\"image/gif\"\n\t], `${label} mediaType`);\n\tcountValue(attachment[\"bytes\"], `${label} bytes`);\n\tpositiveIntegerValue(attachment[\"width\"], `${label} width`);\n\tpositiveIntegerValue(attachment[\"height\"], `${label} height`);\n\tif (attachment[\"name\"] !== void 0) stringValue(attachment[\"name\"], `${label} name`);\n\tif (attachment[\"originalDimensions\"] !== void 0) {\n\t\tconst dimensions = exactRecord(attachment[\"originalDimensions\"], `${label} originalDimensions`, [\"width\", \"height\"]);\n\t\tpositiveIntegerValue(dimensions[\"width\"], `${label} original width`);\n\t\tpositiveIntegerValue(dimensions[\"height\"], `${label} original height`);\n\t}\n}\nfunction messageValue(value, label, version, expected) {\n\tconst message = exactRecord(value, label, [\n\t\t\"id\",\n\t\t\"role\",\n\t\t\"content\",\n\t\t\"source\"\n\t]);\n\tnonEmptyString(message[\"id\"], `${label} id`);\n\tconst role = expected === \"assistant\" ? \"assistant\" : expected === \"user\" || expected === \"tool\" ? \"user\" : void 0;\n\tif (role === void 0) literalValue(message[\"role\"], [\n\t\t\"system\",\n\t\t\"user\",\n\t\t\"assistant\"\n\t], `${label} role`);\n\telse literalValue(message[\"role\"], [role], `${label} role`);\n\tcontentBlocksValue(message[\"content\"], `${label} content`, version);\n\tconst source = releasedV0Record(message[\"source\"], `${label} source`);\n\tif (version < 2 && expected === \"user\" && source[\"kind\"] === \"goal\" && source[\"change\"] !== void 0) legacyGoalMessageValue(message, source, label);\n\telse messageSourceValue(source, `${label} source`, version, expected);\n\tif (expected === \"tool\") {\n\t\tconst content = message[\"content\"];\n\t\tconst block = Array.isArray(content) && content.length === 1 ? releasedV0Record(content[0], `${label} tool result`) : void 0;\n\t\tconst source = releasedV0Record(message[\"source\"], `${label} source`);\n\t\tif (block?.[\"type\"] !== \"tool-result\" || block[\"toolCallId\"] !== source[\"callId\"]) throw new SessionFormatError(`${label} must contain exactly one tool-result block`);\n\t}\n}\nfunction legacyGoalMessageValue(message, source, label) {\n\tassertReleasedV0Keys(source, [\n\t\t\"kind\",\n\t\t\"goalId\",\n\t\t\"revision\",\n\t\t\"round\",\n\t\t\"change\"\n\t], [], `${label} source`);\n\tnonEmptyString(source[\"goalId\"], `${label} source goalId`);\n\tpositiveIntegerValue(source[\"revision\"], `${label} source revision`);\n\tif (source[\"round\"] !== 0) throw new SessionFormatError(`${label} legacy goal source round must be 0`);\n\tconst change = releasedV0Record(source[\"change\"], `${label} source change`);\n\tgoalChangeValue(change, `${label} source change`);\n\tconst ref = releasedV0Record(change[\"operation\"] === \"clear\" ? change[\"cleared\"] : change[\"goal\"], `${label} source change ref`);\n\tif (source[\"goalId\"] !== ref[\"id\"] || source[\"revision\"] !== ref[\"revision\"]) throw new SessionFormatError(`${label} legacy goal source does not match its change`);\n\tconst payload = change[\"operation\"] === \"clear\" ? {\n\t\tcleared: change[\"cleared\"],\n\t\tclearedAt: change[\"clearedAt\"]\n\t} : {\n\t\tgoal: change[\"goal\"],\n\t\troundsStarted: change[\"roundsStarted\"],\n\t\tcreatedAt: change[\"createdAt\"],\n\t\tupdatedAt: change[\"updatedAt\"]\n\t};\n\tconst expected = [{\n\t\ttype: \"text\",\n\t\ttext: `<goal_state>${JSON.stringify(payload)}</goal_state>`\n\t}];\n\tif (!deepEqualJson(message[\"content\"], expected)) throw new SessionFormatError(`${label} legacy goal content does not match its change`);\n}\nfunction messageSourceValue(value, label, version, expected) {\n\tconst source = releasedV0Record(value, label);\n\tif (expected === \"assistant\" && source[\"kind\"] !== \"model\") throw new SessionFormatError(`${label} must be model source`);\n\tif (expected === \"tool\" && source[\"kind\"] !== \"tool\") throw new SessionFormatError(`${label} must be tool source`);\n\tswitch (source[\"kind\"]) {\n\t\tcase \"user\":\n\t\t\tassertReleasedV0Keys(source, [\"kind\"], [\"rpcId\", \"clientTimeZone\"], label);\n\t\t\tif (source[\"rpcId\"] !== void 0) nonEmptyString(source[\"rpcId\"], `${label} rpcId`);\n\t\t\tif (source[\"clientTimeZone\"] !== void 0) nonEmptyString(source[\"clientTimeZone\"], `${label} clientTimeZone`);\n\t\t\treturn;\n\t\tcase \"plugin\":\n\t\t\tpluginSourceValue(source, label);\n\t\t\treturn;\n\t\tcase \"model\":\n\t\t\tassertReleasedV0Keys(source, [\n\t\t\t\t\"kind\",\n\t\t\t\t\"provider\",\n\t\t\t\t\"model\"\n\t\t\t], [\"replayState\"], label);\n\t\t\tnonEmptyString(source[\"provider\"], `${label} provider`);\n\t\t\tnonEmptyString(source[\"model\"], `${label} model`);\n\t\t\treturn;\n\t\tcase \"tool\":\n\t\t\tassertReleasedV0Keys(source, [\"kind\", \"callId\"], [], label);\n\t\t\tnonEmptyString(source[\"callId\"], `${label} callId`);\n\t\t\treturn;\n\t\tcase \"agent-instructions\":\n\t\t\tassertReleasedV0Keys(source, [\n\t\t\t\t\"kind\",\n\t\t\t\t\"form\",\n\t\t\t\t\"changes\"\n\t\t\t], [\"baseline\", \"baselineIdentity\"], label);\n\t\t\tliteralValue(source[\"form\"], [\"instructions\"], `${label} form`);\n\t\t\tif (source[\"baseline\"] !== void 0) literalValue(source[\"baseline\"], [true], `${label} baseline`);\n\t\t\tif (source[\"baselineIdentity\"] !== void 0) nonEmptyString(source[\"baselineIdentity\"], `${label} baselineIdentity`);\n\t\t\tarrayValue(source[\"changes\"], `${label} changes`, (member, memberLabel) => {\n\t\t\t\tconst change = exactRecord(member, memberLabel, [\n\t\t\t\t\t\"action\",\n\t\t\t\t\t\"scope\",\n\t\t\t\t\t\"path\"\n\t\t\t\t], [\"digest\"]);\n\t\t\t\tliteralValue(change[\"action\"], [\n\t\t\t\t\t\"set\",\n\t\t\t\t\t\"replace\",\n\t\t\t\t\t\"remove\"\n\t\t\t\t], `${memberLabel} action`);\n\t\t\t\tstringValue(change[\"scope\"], `${memberLabel} scope`);\n\t\t\t\tstringValue(change[\"path\"], `${memberLabel} path`);\n\t\t\t\tif (change[\"digest\"] !== void 0) stringValue(change[\"digest\"], `${memberLabel} digest`);\n\t\t\t});\n\t\t\treturn;\n\t\tcase \"session-reference\":\n\t\t\tsessionReferenceSourceValue(source, label, version);\n\t\t\treturn;\n\t\tcase \"team-message\":\n\t\t\tassertReleasedV0Keys(source, [\n\t\t\t\t\"kind\",\n\t\t\t\t\"teamId\",\n\t\t\t\t\"messageId\",\n\t\t\t\t\"senderId\",\n\t\t\t\t\"senderName\"\n\t\t\t], [], label);\n\t\t\tfor (const key of [\n\t\t\t\t\"teamId\",\n\t\t\t\t\"messageId\",\n\t\t\t\t\"senderId\"\n\t\t\t]) nonEmptyString(source[key], `${label} ${key}`);\n\t\t\tstringValue(source[\"senderName\"], `${label} senderName`);\n\t\t\treturn;\n\t\tcase \"goal\":\n\t\t\tassertReleasedV0Keys(source, [\n\t\t\t\t\"kind\",\n\t\t\t\t\"goalId\",\n\t\t\t\t\"revision\",\n\t\t\t\t\"round\"\n\t\t\t], [], label);\n\t\t\tnonEmptyString(source[\"goalId\"], `${label} goalId`);\n\t\t\tpositiveIntegerValue(source[\"revision\"], `${label} revision`);\n\t\t\tpositiveIntegerValue(source[\"round\"], `${label} round`);\n\t\t\treturn;\n\t\tcase \"skill-invocation\":\n\t\t\tassertReleasedV0Keys(source, [\n\t\t\t\t\"kind\",\n\t\t\t\t\"name\",\n\t\t\t\t\"form\"\n\t\t\t], [], label);\n\t\t\tnonEmptyString(source[\"name\"], `${label} name`);\n\t\t\tliteralValue(source[\"form\"], [\"instructions\"], `${label} form`);\n\t\t\treturn;\n\t\tcase \"skill-catalog\":\n\t\t\tassertReleasedV0Keys(source, [\n\t\t\t\t\"kind\",\n\t\t\t\t\"form\",\n\t\t\t\t\"entries\"\n\t\t\t], [\"update\"], label);\n\t\t\tliteralValue(source[\"form\"], [\"catalog\"], `${label} form`);\n\t\t\tif (source[\"update\"] !== void 0) literalValue(source[\"update\"], [true], `${label} update`);\n\t\t\tarrayValue(source[\"entries\"], `${label} entries`, (member, memberLabel) => {\n\t\t\t\tconst entry = exactRecord(member, memberLabel, [\"name\", \"description\"]);\n\t\t\t\tnonEmptyString(entry[\"name\"], `${memberLabel} name`);\n\t\t\t\tstringValue(entry[\"description\"], `${memberLabel} description`);\n\t\t\t});\n\t\t\treturn;\n\t\tcase \"coordinator\":\n\t\tcase \"subagent-report\":\n\t\t\tassertReleasedV0Keys(source, [\n\t\t\t\t\"kind\",\n\t\t\t\t\"form\",\n\t\t\t\t\"senderSessionId\"\n\t\t\t], [], label);\n\t\t\tliteralValue(source[\"form\"], [\"relay\"], `${label} form`);\n\t\t\tnonEmptyString(source[\"senderSessionId\"], `${label} senderSessionId`);\n\t\t\treturn;\n\t\tcase \"subagent-settled\":\n\t\t\tassertReleasedV0Keys(source, [\n\t\t\t\t\"kind\",\n\t\t\t\t\"form\",\n\t\t\t\t\"summary\",\n\t\t\t\t\"senderSessionId\"\n\t\t\t], [], label);\n\t\t\tliteralValue(source[\"form\"], [\"notice\"], `${label} form`);\n\t\t\tstringValue(source[\"summary\"], `${label} summary`);\n\t\t\tnonEmptyString(source[\"senderSessionId\"], `${label} senderSessionId`);\n\t\t\treturn;\n\t\tcase \"webhook\":\n\t\t\tassertReleasedV0Keys(source, [\n\t\t\t\t\"kind\",\n\t\t\t\t\"provider\",\n\t\t\t\t\"source\",\n\t\t\t\t\"deliveryId\",\n\t\t\t\t\"ruleId\",\n\t\t\t\t\"form\",\n\t\t\t\t\"summary\"\n\t\t\t], [], label);\n\t\t\tfor (const key of [\n\t\t\t\t\"provider\",\n\t\t\t\t\"source\",\n\t\t\t\t\"deliveryId\",\n\t\t\t\t\"ruleId\"\n\t\t\t]) nonEmptyString(source[key], `${label} ${key}`);\n\t\t\tliteralValue(source[\"form\"], [\"notice\"], `${label} form`);\n\t\t\tstringValue(source[\"summary\"], `${label} summary`);\n\t\t\treturn;\n\t\tdefault:\n\t\t\tnonEmptyString(source[\"kind\"], `${label} kind`);\n\t\t\treturn;\n\t}\n}\nfunction pluginSourceValue(source, label) {\n\tconst optional = [\n\t\t\"form\",\n\t\t\"sections\",\n\t\t\"summary\"\n\t];\n\tif (source[\"plugin\"] === \"compact\") optional.push(\"compactionId\", \"sourceCommandId\");\n\tassertReleasedV0Keys(source, [\"kind\", \"plugin\"], optional, label);\n\tnonEmptyString(source[\"plugin\"], `${label} plugin`);\n\tif (source[\"plugin\"] === \"compact\") {\n\t\tnonEmptyString(source[\"compactionId\"], `${label} compactionId`);\n\t\tif (source[\"sourceCommandId\"] !== void 0) nonEmptyString(source[\"sourceCommandId\"], `${label} sourceCommandId`);\n\t}\n\tconst form = source[\"form\"];\n\tif (form === void 0) return;\n\tliteralValue(form, [\n\t\t\"instructions\",\n\t\t\"catalog\",\n\t\t\"snapshot\",\n\t\t\"notice\",\n\t\t\"relay\",\n\t\t\"recall\"\n\t], `${label} form`);\n\tif (form === \"snapshot\") arrayValue(source[\"sections\"], `${label} sections`, (member, memberLabel) => {\n\t\tconst section = exactRecord(member, memberLabel, [\"name\", \"text\"]);\n\t\tnonEmptyString(section[\"name\"], `${memberLabel} name`);\n\t\tstringValue(section[\"text\"], `${memberLabel} text`);\n\t});\n\telse if (source[\"sections\"] !== void 0) throw new SessionFormatError(`${label} sections require snapshot form`);\n\tif (form === \"notice\") stringValue(source[\"summary\"], `${label} summary`);\n\telse if (source[\"summary\"] !== void 0) throw new SessionFormatError(`${label} summary requires notice form`);\n}\nfunction sessionReferenceSourceValue(source, label, version) {\n\tassertReleasedV0Keys(source, [\n\t\t\"kind\",\n\t\t\"form\",\n\t\t\"version\",\n\t\t\"references\"\n\t], [], label);\n\tliteralValue(source[\"form\"], [\"recall\"], `${label} form`);\n\tliteralValue(source[\"version\"], [1], `${label} version`);\n\tlet expectedInputIndex = 0;\n\tconst sessionIds = /* @__PURE__ */ new Set();\n\tif (arrayValue(source[\"references\"], `${label} references`, (member, memberLabel) => {\n\t\tconst reference = exactRecord(member, memberLabel, [\n\t\t\t\"sessionId\",\n\t\t\t\"label\",\n\t\t\t\"capturedThroughSeq\",\n\t\t\t\"compacted\",\n\t\t\t\"originalMessages\",\n\t\t\t\"retainedMessages\",\n\t\t\t\"omittedMessages\",\n\t\t\t\"omittedBytes\",\n\t\t\t\"truncated\",\n\t\t\t\"inputIndex\"\n\t\t], version >= 1 ? [\"capturedFormatVersion\"] : []);\n\t\tnonEmptyString(reference[\"sessionId\"], `${memberLabel} sessionId`);\n\t\tstringValue(reference[\"label\"], `${memberLabel} label`);\n\t\tif (reference[\"capturedThroughSeq\"] !== null) countValue(reference[\"capturedThroughSeq\"], `${memberLabel} capturedThroughSeq`);\n\t\tif (reference[\"capturedFormatVersion\"] !== void 0) {\n\t\t\tconst capturedVersion = countValue(reference[\"capturedFormatVersion\"], `${memberLabel} capturedFormatVersion`);\n\t\t\tif (capturedVersion < 1 || capturedVersion > version) throw new SessionFormatError(`${memberLabel} capturedFormatVersion must be between 1 and ${version}`);\n\t\t}\n\t\tbooleanValue(reference[\"compacted\"], `${memberLabel} compacted`);\n\t\tconst original = countValue(reference[\"originalMessages\"], `${memberLabel} originalMessages`);\n\t\tconst retained = countValue(reference[\"retainedMessages\"], `${memberLabel} retainedMessages`);\n\t\tconst omitted = countValue(reference[\"omittedMessages\"], `${memberLabel} omittedMessages`);\n\t\tconst omittedBytes = countValue(reference[\"omittedBytes\"], `${memberLabel} omittedBytes`);\n\t\tconst inputIndex = countValue(reference[\"inputIndex\"], `${memberLabel} inputIndex`);\n\t\tconst truncated = reference[\"truncated\"];\n\t\tbooleanValue(truncated, `${memberLabel} truncated`);\n\t\tif (retained > original || omitted !== original - retained) throw new SessionFormatError(`${memberLabel} message counts are inconsistent`);\n\t\tif (truncated !== (omitted > 0 || omittedBytes > 0)) throw new SessionFormatError(`${memberLabel} truncated disagrees with omitted content`);\n\t\tif (inputIndex !== expectedInputIndex) throw new SessionFormatError(`${label} inputIndex must match reference position`);\n\t\texpectedInputIndex += 1;\n\t\tconst sessionId = reference[\"sessionId\"];\n\t\tif (sessionIds.has(sessionId)) throw new SessionFormatError(`${label} repeats sessionId ${sessionId}`);\n\t\tsessionIds.add(sessionId);\n\t}).length === 0) throw new SessionFormatError(`${label} references must be non-empty`);\n}\nfunction streamChunkValue(value, label) {\n\tconst chunk = releasedV0Record(value, label);\n\tswitch (chunk[\"type\"]) {\n\t\tcase \"block-start\":\n\t\t\tassertReleasedV0Keys(chunk, [\n\t\t\t\t\"type\",\n\t\t\t\t\"index\",\n\t\t\t\t\"blockType\"\n\t\t\t], [], label);\n\t\t\tcountValue(chunk[\"index\"], `${label} index`);\n\t\t\tnonEmptyString(chunk[\"blockType\"], `${label} blockType`);\n\t\t\treturn;\n\t\tcase \"text-delta\":\n\t\tcase \"reasoning-delta\":\n\t\t\tassertReleasedV0Keys(chunk, [\n\t\t\t\t\"type\",\n\t\t\t\t\"index\",\n\t\t\t\t\"text\"\n\t\t\t], [], label);\n\t\t\tcountValue(chunk[\"index\"], `${label} index`);\n\t\t\tstringValue(chunk[\"text\"], `${label} text`);\n\t\t\treturn;\n\t\tcase \"tool-call-delta\":\n\t\t\tassertReleasedV0Keys(chunk, [\n\t\t\t\t\"type\",\n\t\t\t\t\"index\",\n\t\t\t\t\"id\",\n\t\t\t\t\"argumentsDelta\"\n\t\t\t], [\"name\"], label);\n\t\t\tcountValue(chunk[\"index\"], `${label} index`);\n\t\t\tnonEmptyString(chunk[\"id\"], `${label} id`);\n\t\t\tif (chunk[\"name\"] !== void 0) stringValue(chunk[\"name\"], `${label} name`);\n\t\t\tstringValue(chunk[\"argumentsDelta\"], `${label} argumentsDelta`);\n\t\t\treturn;\n\t\tcase \"block-end\":\n\t\t\tassertReleasedV0Keys(chunk, [\n\t\t\t\t\"type\",\n\t\t\t\t\"index\",\n\t\t\t\t\"block\"\n\t\t\t], [], label);\n\t\t\tcountValue(chunk[\"index\"], `${label} index`);\n\t\t\tcontentBlockValue(chunk[\"block\"], `${label} block`, 1);\n\t\t\treturn;\n\t\tcase \"usage\":\n\t\t\tassertReleasedV0Keys(chunk, [\"type\", \"usage\"], [], label);\n\t\t\ttokenUsageValue(chunk[\"usage\"], `${label} usage`);\n\t\t\treturn;\n\t\tcase \"finish\":\n\t\t\tassertReleasedV0Keys(chunk, [\"type\", \"reason\"], [\"replayState\"], label);\n\t\t\tfinishReasonValue(chunk[\"reason\"], `${label} reason`);\n\t\t\tif (chunk[\"replayState\"] !== void 0) replayEnvelopeValue(chunk[\"replayState\"], `${label} replayState`);\n\t\t\treturn;\n\t\tdefault: throw new SessionFormatError(`${label} has unknown stream chunk type ${JSON.stringify(chunk[\"type\"])}`);\n\t}\n}\nfunction finishReasonValue(value, label) {\n\tconst reason = releasedV0Record(value, label);\n\tif (reason[\"kind\"] === \"aborted\" || reason[\"kind\"] === \"error\") {\n\t\tassertReleasedV0Keys(reason, [\"kind\", \"failure\"], [], label);\n\t\tllmFailureValue(reason[\"failure\"], `${label} failure`);\n\t\treturn;\n\t}\n\tif (reason[\"kind\"] === \"stop\" || reason[\"kind\"] === \"tool-calls\" || reason[\"kind\"] === \"max-tokens\") assertReleasedV0Keys(reason, [\"kind\"], [], label);\n\tnonEmptyString(reason[\"kind\"], `${label} kind`);\n}\nfunction replayEnvelopeValue(value, label) {\n\tconst replay = exactRecord(value, label, [\"response\"], [\"blocks\"]);\n\tif (replay[\"blocks\"] !== void 0 && !Array.isArray(replay[\"blocks\"])) throw new SessionFormatError(`${label} blocks must be an array`);\n}\nfunction turnEndReasonValue(value, label) {\n\tconst reason = releasedV0Record(value, label);\n\tswitch (reason[\"kind\"]) {\n\t\tcase \"completed\":\n\t\tcase \"blocked\":\n\t\tcase \"max-tokens\":\n\t\tcase \"interrupted\":\n\t\t\tassertReleasedV0Keys(reason, [\"kind\"], [], label);\n\t\t\treturn;\n\t\tcase \"aborted\": {\n\t\t\tassertReleasedV0Keys(reason, [\"kind\", \"reason\"], [], label);\n\t\t\tconst cause = releasedV0Record(reason[\"reason\"], `${label} abort cause`);\n\t\t\tif (cause[\"kind\"] === \"hook\") {\n\t\t\t\tassertReleasedV0Keys(cause, [\"kind\", \"reason\"], [], `${label} abort cause`);\n\t\t\t\tstringValue(cause[\"reason\"], `${label} abort reason`);\n\t\t\t} else {\n\t\t\t\tassertReleasedV0Keys(cause, [\"kind\"], [], `${label} abort cause`);\n\t\t\t\tliteralValue(cause[\"kind\"], [\n\t\t\t\t\t\"user\",\n\t\t\t\t\t\"parent\",\n\t\t\t\t\t\"disposed\",\n\t\t\t\t\t\"legacy\"\n\t\t\t\t], `${label} abort kind`);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tcase \"error\":\n\t\t\tassertReleasedV0Keys(reason, [\"kind\", \"error\"], [], label);\n\t\t\tllmFailureValue(reason[\"error\"], `${label} error`);\n\t\t\treturn;\n\t\tdefault:\n\t\t\tnonEmptyString(reason[\"kind\"], `${label} kind`);\n\t\t\treturn;\n\t}\n}\nfunction requestHeaderValue(value, label) {\n\tconst header = exactRecord(value, label, [\"config\"], [\n\t\t\"adapterDefaults\",\n\t\t\"system\",\n\t\t\"tools\"\n\t]);\n\tconst config = exactRecord(header[\"config\"], `${label} config`, [\"provider\", \"model\"], [\n\t\t\"reasoningEffort\",\n\t\t\"temperature\",\n\t\t\"maxTokens\",\n\t\t\"stop\"\n\t]);\n\tnonEmptyString(config[\"provider\"], `${label} provider`);\n\tnonEmptyString(config[\"model\"], `${label} model`);\n\tif (config[\"reasoningEffort\"] !== void 0) nonEmptyString(config[\"reasoningEffort\"], `${label} reasoningEffort`);\n\tif (config[\"temperature\"] !== void 0) finiteNumberValue(config[\"temperature\"], `${label} temperature`);\n\tif (config[\"maxTokens\"] !== void 0) positiveIntegerValue(config[\"maxTokens\"], `${label} maxTokens`);\n\tif (config[\"stop\"] !== void 0) arrayValue(config[\"stop\"], `${label} stop`, stringValue);\n\tif (header[\"adapterDefaults\"] !== void 0) {\n\t\tconst defaults = exactRecord(header[\"adapterDefaults\"], `${label} adapterDefaults`, [], [\"reasoningEffort\", \"maxTokens\"]);\n\t\tfor (const [key, marker] of Object.entries(defaults)) {\n\t\t\tliteralValue(marker, [true], `${label} adapterDefaults ${key}`);\n\t\t\tif (!Object.hasOwn(config, key)) throw new SessionFormatError(`${label} adapter default ${key} lacks config value`);\n\t\t}\n\t}\n\tif (header[\"system\"] !== void 0) stringValue(header[\"system\"], `${label} system`);\n\tif (header[\"tools\"] !== void 0) arrayValue(header[\"tools\"], `${label} tools`, toolSchemaValue);\n}\nfunction toolSchemaValue(value, label) {\n\tconst schema = exactRecord(value, label, [\n\t\t\"name\",\n\t\t\"description\",\n\t\t\"parameters\"\n\t]);\n\tnonEmptyString(schema[\"name\"], `${label} name`);\n\tstringValue(schema[\"description\"], `${label} description`);\n\treleasedV0Record(schema[\"parameters\"], `${label} parameters`);\n}\nfunction shadowedValue(data, eventSeq, label) {\n\tconst range = exactRecord(data[\"shadowedRange\"], `${label} shadowedRange`, [\"start\", \"end\"]);\n\tconst start = earlierSeq(range[\"start\"], eventSeq, `${label} shadowedRange start`);\n\tconst end = earlierSeq(range[\"end\"], eventSeq, `${label} shadowedRange end`);\n\tconst seqs = seqArray(data[\"shadowedSeqs\"], eventSeq, `${label} shadowedSeqs`, true);\n\tif (seqs[0] !== start || seqs.at(-1) !== end) throw new SessionFormatError(`${label} shadowedRange must match shadowedSeqs endpoints`);\n\tcountValue(data[\"shadowedTokenCount\"], `${label} shadowedTokenCount`);\n}\nfunction goalChangeValue(data, label) {\n\tliteralValue(data[\"kind\"], [\"goal/change\"], `${label} kind`);\n\tliteralValue(data[\"version\"], [1], `${label} version`);\n\tif (data[\"operation\"] === \"clear\") {\n\t\tassertReleasedV0Keys(data, [\n\t\t\t\"kind\",\n\t\t\t\"version\",\n\t\t\t\"operation\",\n\t\t\t\"cleared\",\n\t\t\t\"clearedAt\"\n\t\t], [], `${label} data`);\n\t\tgoalRefValue(data[\"cleared\"], `${label} cleared`);\n\t\tcountValue(data[\"clearedAt\"], `${label} clearedAt`);\n\t\treturn;\n\t}\n\tassertReleasedV0Keys(data, [\n\t\t\"kind\",\n\t\t\"version\",\n\t\t\"operation\",\n\t\t\"goal\",\n\t\t\"roundsStarted\",\n\t\t\"createdAt\",\n\t\t\"updatedAt\"\n\t], [], `${label} data`);\n\tliteralValue(data[\"operation\"], [\n\t\t\"create\",\n\t\t\"edit\",\n\t\t\"pause\",\n\t\t\"resume\",\n\t\t\"complete\",\n\t\t\"block\"\n\t], `${label} operation`);\n\tgoalSnapshotValue(data[\"goal\"], `${label} goal`);\n\tcountValue(data[\"roundsStarted\"], `${label} roundsStarted`);\n\tcountValue(data[\"createdAt\"], `${label} createdAt`);\n\tcountValue(data[\"updatedAt\"], `${label} updatedAt`);\n}\nfunction goalRefValue(value, label) {\n\tconst ref = exactRecord(value, label, [\"id\", \"revision\"]);\n\tnonEmptyString(ref[\"id\"], `${label} id`);\n\tpositiveIntegerValue(ref[\"revision\"], `${label} revision`);\n}\nfunction goalSnapshotValue(value, label) {\n\tconst goal = exactRecord(value, label, [\n\t\t\"id\",\n\t\t\"revision\",\n\t\t\"objective\",\n\t\t\"phase\",\n\t\t\"maxGoalRounds\"\n\t], [\"blockedReason\"]);\n\tnonEmptyString(goal[\"id\"], `${label} id`);\n\tpositiveIntegerValue(goal[\"revision\"], `${label} revision`);\n\tnonEmptyString(goal[\"objective\"], `${label} objective`);\n\tliteralValue(goal[\"phase\"], [\n\t\t\"active\",\n\t\t\"paused\",\n\t\t\"blocked\",\n\t\t\"complete\"\n\t], `${label} phase`);\n\tpositiveIntegerValue(goal[\"maxGoalRounds\"], `${label} maxGoalRounds`);\n\tif (goal[\"phase\"] === \"blocked\") {\n\t\tconst reason = exactRecord(goal[\"blockedReason\"], `${label} blockedReason`, [\"code\", \"message\"]);\n\t\tnonEmptyString(reason[\"code\"], `${label} blocked code`);\n\t\tnonEmptyString(reason[\"message\"], `${label} blocked message`);\n\t} else if (goal[\"blockedReason\"] !== void 0) throw new SessionFormatError(`${label} blockedReason requires blocked phase`);\n}\nfunction scheduleChangeValue(data, label) {\n\tliteralValue(data[\"version\"], [1], `${label} version`);\n\tif (data[\"operation\"] === \"create\") {\n\t\tassertReleasedV0Keys(data, [\n\t\t\t\"version\",\n\t\t\t\"operation\",\n\t\t\t\"schedule\"\n\t\t], [], `${label} data`);\n\t\tscheduleRecordValue(data[\"schedule\"], `${label} schedule`);\n\t\treturn;\n\t}\n\tassertReleasedV0Keys(data, [\n\t\t\"version\",\n\t\t\"operation\",\n\t\t\"id\"\n\t], data[\"operation\"] === \"dispatch\" ? [\"acceptedAt\"] : [], `${label} data`);\n\tliteralValue(data[\"operation\"], [\"delete\", \"dispatch\"], `${label} operation`);\n\tscheduleIdValue(data[\"id\"], `${label} id`);\n\tif (data[\"acceptedAt\"] !== void 0) instantValue(data[\"acceptedAt\"], `${label} acceptedAt`);\n}\nfunction scheduleRecordValue(value, label) {\n\tconst record = releasedV0Record(value, label);\n\tif (record[\"kind\"] === \"after\") {\n\t\tassertReleasedV0Keys(record, [\n\t\t\t\"id\",\n\t\t\t\"kind\",\n\t\t\t\"prompt\",\n\t\t\t\"afterSeconds\",\n\t\t\t\"scheduledAt\"\n\t\t], [], label);\n\t\tpositiveIntegerValue(record[\"afterSeconds\"], `${label} afterSeconds`);\n\t} else if (record[\"kind\"] === \"at\") assertReleasedV0Keys(record, [\n\t\t\"id\",\n\t\t\"kind\",\n\t\t\"prompt\",\n\t\t\"scheduledAt\"\n\t], [], label);\n\telse if (record[\"kind\"] === \"every\") {\n\t\tassertReleasedV0Keys(record, [\n\t\t\t\"id\",\n\t\t\t\"kind\",\n\t\t\t\"prompt\",\n\t\t\t\"everySeconds\",\n\t\t\t\"scheduledAt\"\n\t\t], [], label);\n\t\tif (positiveIntegerValue(record[\"everySeconds\"], `${label} everySeconds`) < 300) throw new SessionFormatError(`${label} everySeconds must be at least 300`);\n\t} else throw new SessionFormatError(`${label} has unknown schedule kind`);\n\tscheduleIdValue(record[\"id\"], `${label} id`);\n\tnonEmptyString(record[\"prompt\"], `${label} prompt`);\n\tinstantValue(record[\"scheduledAt\"], `${label} scheduledAt`);\n}\nfunction scheduleIdValue(value, label) {\n\tnonEmptyString(value, label);\n\tif (value.trim() !== value) throw new SessionFormatError(`${label} must not have surrounding whitespace`);\n}\nfunction instantValue(value, label) {\n\tif (typeof value !== \"string\" || !/^(?!0000)\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])T(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{3}Z$/u.test(value) || !Number.isFinite(Date.parse(value)) || new Date(Date.parse(value)).toISOString() !== value) throw new SessionFormatError(`${label} must be a canonical UTC instant`);\n}\nfunction titleSourceValue(value, label) {\n\tconst source = releasedV0Record(value, label);\n\tif (source[\"kind\"] === \"provider\") {\n\t\tassertReleasedV0Keys(source, [\"kind\", \"provider\"], [\"model\"], label);\n\t\tnonEmptyString(source[\"provider\"], `${label} provider`);\n\t\tif (source[\"model\"] !== void 0) modelRouteValue(source[\"model\"], `${label} model`);\n\t\treturn;\n\t}\n\tassertReleasedV0Keys(source, [\"kind\"], [], label);\n\tliteralValue(source[\"kind\"], [\"fallback\", \"user\"], `${label} kind`);\n}\nfunction modelRouteValue(value, label) {\n\tconst route = exactRecord(value, label, [\"provider\", \"model\"]);\n\tnonEmptyString(route[\"provider\"], `${label} provider`);\n\tnonEmptyString(route[\"model\"], `${label} model`);\n}\nfunction subagentDescriptorValue(data, label) {\n\tliteralValue(data[\"version\"], [3], `${label} version`);\n\tnonEmptyString(data[\"provider\"], `${label} provider`);\n\tif (data[\"mode\"] === \"one-shot\") {\n\t\tassertReleasedV0Keys(data, [\n\t\t\t\"mode\",\n\t\t\t\"version\",\n\t\t\t\"provider\"\n\t\t], [\"label\"], `${label} data`);\n\t\tif (data[\"label\"] !== void 0) stringValue(data[\"label\"], `${label} label`);\n\t\treturn;\n\t}\n\tliteralValue(data[\"mode\"], [\"continuable\"], `${label} mode`);\n\tnonEmptyString(data[\"label\"], `${label} label`);\n\tfor (const key of [\n\t\t\"agentProvider\",\n\t\t\"agentModel\",\n\t\t\"agentReasoningEffort\",\n\t\t\"persona\"\n\t]) if (data[key] !== void 0) nonEmptyString(data[key], `${label} ${key}`);\n\tif (data[\"agentProvider\"] === void 0 !== (data[\"agentModel\"] === void 0)) throw new SessionFormatError(`${label} agentProvider and agentModel must be paired`);\n\tif (data[\"toolFilter\"] !== void 0) {\n\t\tconst filter = exactRecord(data[\"toolFilter\"], `${label} toolFilter`, [], [\"allow\", \"deny\"]);\n\t\tif (filter[\"allow\"] === void 0 && filter[\"deny\"] === void 0) throw new SessionFormatError(`${label} toolFilter requires allow or deny`);\n\t\tif (filter[\"allow\"] !== void 0) arrayValue(filter[\"allow\"], `${label} allow`, nonEmptyString);\n\t\tif (filter[\"deny\"] !== void 0) arrayValue(filter[\"deny\"], `${label} deny`, nonEmptyString);\n\t}\n}\nfunction allowedModelsValue(value, label) {\n\tconst seen = /* @__PURE__ */ new Set();\n\tif (arrayValue(value, label, (member, memberLabel) => {\n\t\tconst route = exactRecord(member, memberLabel, [\"provider\", \"model\"]);\n\t\tnonEmptyString(route[\"provider\"], `${memberLabel} provider`);\n\t\tnonEmptyString(route[\"model\"], `${memberLabel} model`);\n\t\tconst key = `${route[\"provider\"]}\\0${route[\"model\"]}`;\n\t\tif (seen.has(key)) throw new SessionFormatError(`${label} repeats route ${key}`);\n\t\tseen.add(key);\n\t}).length === 0) throw new SessionFormatError(`${label} must be non-empty`);\n}\nfunction teamSelector(data, label) {\n\tliteralValue(data[\"version\"], [1], `${label} version`);\n\tnonEmptyString(data[\"teamId\"], `${label} teamId`);\n}\nfunction teamMemberValue(value, label) {\n\tconst member = exactRecord(value, label, [\n\t\t\"id\",\n\t\t\"name\",\n\t\t\"description\",\n\t\t\"provider\",\n\t\t\"context\",\n\t\t\"phase\"\n\t], [\"error\"]);\n\tnonEmptyString(member[\"id\"], `${label} id`);\n\tstringValue(member[\"name\"], `${label} name`);\n\tstringValue(member[\"description\"], `${label} description`);\n\tstringValue(member[\"provider\"], `${label} provider`);\n\tliteralValue(member[\"context\"], [\"fresh\", \"fork\"], `${label} context`);\n\tliteralValue(member[\"phase\"], [\n\t\t\"provisioning\",\n\t\t\"active\",\n\t\t\"failed\"\n\t], `${label} phase`);\n\tif (member[\"error\"] !== void 0) stringValue(member[\"error\"], `${label} error`);\n}\nfunction teamTaskValue(value, label) {\n\tconst task = exactRecord(value, label, [\n\t\t\"id\",\n\t\t\"revision\",\n\t\t\"subject\",\n\t\t\"description\",\n\t\t\"status\",\n\t\t\"blockedBy\",\n\t\t\"writeScopes\"\n\t], [\"ownerId\"]);\n\tnonEmptyString(task[\"id\"], `${label} id`);\n\tpositiveIntegerValue(task[\"revision\"], `${label} revision`);\n\tstringValue(task[\"subject\"], `${label} subject`);\n\tstringValue(task[\"description\"], `${label} description`);\n\tliteralValue(task[\"status\"], [\n\t\t\"pending\",\n\t\t\"in_progress\",\n\t\t\"completed\",\n\t\t\"deleted\"\n\t], `${label} status`);\n\tif (task[\"ownerId\"] !== void 0) nonEmptyString(task[\"ownerId\"], `${label} ownerId`);\n\tarrayValue(task[\"blockedBy\"], `${label} blockedBy`, nonEmptyString);\n\tarrayValue(task[\"writeScopes\"], `${label} writeScopes`, stringValue);\n}\nfunction teamMessageValue(value, label, version) {\n\tconst message = exactRecord(value, label, [\n\t\t\"id\",\n\t\t\"senderId\",\n\t\t\"senderName\",\n\t\t\"targetId\",\n\t\t\"delivery\",\n\t\t\"content\"\n\t]);\n\tfor (const key of [\n\t\t\"id\",\n\t\t\"senderId\",\n\t\t\"targetId\"\n\t]) nonEmptyString(message[key], `${label} ${key}`);\n\tstringValue(message[\"senderName\"], `${label} senderName`);\n\tliteralValue(message[\"delivery\"], [\"quiet\", \"wakeup\"], `${label} delivery`);\n\tcontentBlocksValue(message[\"content\"], `${label} content`, version);\n}\nfunction workflowIdentity(data, label) {\n\tnonEmptyString(data[\"runId\"], `${label} runId`);\n\tpositiveIntegerValue(data[\"seq\"], `${label} seq`);\n}\nfunction deepSeekSearchBodyValue(value, label) {\n\tconst body = exactRecord(value, label, [\n\t\t\"model\",\n\t\t\"max_tokens\",\n\t\t\"messages\",\n\t\t\"tools\"\n\t]);\n\tnonEmptyString(body[\"model\"], `${label} model`);\n\tpositiveIntegerValue(body[\"max_tokens\"], `${label} max_tokens`);\n\tif (arrayValue(body[\"messages\"], `${label} messages`, (member, memberLabel) => {\n\t\tconst message = exactRecord(member, memberLabel, [\"role\", \"content\"]);\n\t\tliteralValue(message[\"role\"], [\"user\"], `${memberLabel} role`);\n\t\tif (arrayValue(message[\"content\"], `${memberLabel} content`, (block, blockLabel) => {\n\t\t\tconst text = exactRecord(block, blockLabel, [\"type\", \"text\"]);\n\t\t\tliteralValue(text[\"type\"], [\"text\"], `${blockLabel} type`);\n\t\t\tstringValue(text[\"text\"], `${blockLabel} text`);\n\t\t}).length !== 1) throw new SessionFormatError(`${memberLabel} content must contain one text block`);\n\t}).length !== 1) throw new SessionFormatError(`${label} messages must contain one user message`);\n\tif (arrayValue(body[\"tools\"], `${label} tools`, (member, memberLabel) => {\n\t\tconst tool = exactRecord(member, memberLabel, [\n\t\t\t\"type\",\n\t\t\t\"name\",\n\t\t\t\"max_uses\"\n\t\t]);\n\t\tliteralValue(tool[\"type\"], [\"web_search_20250305\"], `${memberLabel} type`);\n\t\tliteralValue(tool[\"name\"], [\"web_search\"], `${memberLabel} name`);\n\t\tpositiveIntegerValue(tool[\"max_uses\"], `${memberLabel} max_uses`);\n\t}).length !== 1) throw new SessionFormatError(`${label} tools must contain one web search tool`);\n}\n//#endregion\n//#region lib/types/validation.js\nconst HEADER_REQUIRED = [\n\t\"version\",\n\t\"id\",\n\t\"createdAt\",\n\t\"isSeeded\",\n\t\"delegationDepth\"\n];\nconst HEADER_OPTIONAL = [\n\t\"cwd\",\n\t\"parentSession\",\n\t\"origin\",\n\t\"agentPreset\"\n];\nconst EVENT_REQUIRED = [\n\t\"type\",\n\t\"seq\",\n\t\"time\",\n\t\"data\"\n];\nconst SURFACE_EVENT_TYPES = new Set([\n\t\"user/message\",\n\t\"assistant/message\",\n\t\"tool/result\"\n]);\nconst SURFACE_OPTIONAL = [\n\t\"ignorable\",\n\t\"sourceEventSeqs\",\n\t\"surfaceOp\"\n];\nconst LOG_OPTIONAL = [\"ignorable\"];\nconst LEGACY_SOURCE_TYPES = new Set([\n\t\"steering/message\",\n\t\"request/header-delta\",\n\t\"mode/set\",\n\t\"compact/start\",\n\t\"compact/summary\",\n\t\"compact/end\",\n\t\"compact/prune\"\n]);\n/**\n* Validate the logical header shared by released v0 and v1.\n* @param header - detached logical header.\n* @param version - exact expected generation.\n*/\nfunction assertReleasedSessionFormatHeader(header, version) {\n\tconst record = releasedV0Record(header, `format v${version} header`);\n\tassertReleasedV0Keys(record, HEADER_REQUIRED, HEADER_OPTIONAL, `format v${version} header`);\n\tif (record[\"version\"] !== version) throw new SessionFormatError(`expected format v${version} header`);\n\tif (typeof record[\"id\"] !== \"string\") throw new SessionFormatError(`format v${version} header id must be a string`);\n\tsessionFormatCount(record[\"createdAt\"], `format v${version} header createdAt`);\n\tif (typeof record[\"isSeeded\"] !== \"boolean\") throw new SessionFormatError(`format v${version} header isSeeded must be a boolean`);\n\tsessionFormatCount(record[\"delegationDepth\"], `format v${version} header delegationDepth`);\n\tfor (const key of [\n\t\t\"cwd\",\n\t\t\"parentSession\",\n\t\t\"agentPreset\"\n\t]) if (record[key] !== void 0 && typeof record[key] !== \"string\") throw new SessionFormatError(`format v${version} header ${key} must be a string`);\n\tif (typeof record[\"cwd\"] === \"string\" && !isAbsolute(record[\"cwd\"])) throw new SessionFormatError(`format v${version} header cwd must be absolute`);\n\tif (record[\"origin\"] !== void 0 && record[\"origin\"] !== \"subagent\") throw new SessionFormatError(`format v${version} header origin must be \"subagent\"`);\n}\n/**\n* Validate one released-v1 logical header.\n* @param header - detached logical header.\n*/\nfunction assertReleasedV1Header(header) {\n\tassertReleasedSessionFormatHeader(header, 1);\n}\n/**\n* Restore v1 against the installed build's ordinary event vocabulary without freezing payload additions.\n* @param artifact - vocabulary-neutral released-v1 physical decode.\n* @param knownEventTypes - event types understood by the installed current Session package.\n* @returns the same validated detached artifact.\n*/\nfunction restoreReleasedV1Artifact(artifact, knownEventTypes) {\n\tassertReleasedV1Header(artifact.header);\n\tassertReleasedArtifactCoordinates(artifact, false, knownEventTypes);\n\treturn artifact;\n}\n/**\n* Validate released-v0/v1 artifact coordinates under an explicit vocabulary policy.\n* @param artifact - logical artifact to validate.\n* @param allowLegacySteering - whether to accept the retired steering event name.\n* @param knownEventTypes - installed event vocabulary, when vocabulary-aware.\n* @param vocabularyNeutral - whether unknown event types remain opaque.\n* @param frozenEnvelope - whether event envelopes must already be frozen.\n*/\nfunction assertReleasedArtifactCoordinates(artifact, allowLegacySteering, knownEventTypes, vocabularyNeutral = false, frozenEnvelope = false) {\n\tconst inheritedEventCount = sessionFormatCount(artifact.inheritedEventCount, \"Session inheritedEventCount\");\n\tif (inheritedEventCount > artifact.events.length) throw new SessionFormatError(\"Session inheritedEventCount exceeds its event count\");\n\tif (!artifact.header.isSeeded && inheritedEventCount !== 0) throw new SessionFormatError(\"unseeded Session inheritedEventCount must be 0\");\n\tfor (let index = 0; index < artifact.events.length; index += 1) {\n\t\tconst event = artifact.events[index];\n\t\tconst record = releasedV0Record(event, `Session event ${index}`);\n\t\tconst type = record[\"type\"];\n\t\tif (typeof type !== \"string\") throw new SessionFormatError(`Session event ${index} type must be a string`);\n\t\tconst disposition = RELEASED_V0_EVENT_DISPOSITIONS[type];\n\t\tconst legacy = allowLegacySteering && LEGACY_SOURCE_TYPES.has(type);\n\t\tconst currentKnown = knownEventTypes?.has(type) === true;\n\t\tconst ignorableCurrent = !allowLegacySteering && !currentKnown && record[\"ignorable\"] === true;\n\t\tif (!currentKnown && !legacy && !ignorableCurrent && !vocabularyNeutral) {\n\t\t\tif (allowLegacySteering) throw new SessionFormatUnsupportedMigrationError(`format v0 contains unknown historical event type ${JSON.stringify(type)} at seq ${index}; migration refuses unknown historical events even when ignorable`);\n\t\t\tthrow new SessionFormatUnsupportedMigrationError(`format v1 contains unknown required event type ${JSON.stringify(type)} at seq ${index}`);\n\t\t}\n\t\tconst surface = disposition !== void 0 ? SURFACE_EVENT_TYPES.has(type) : type === \"steering/message\";\n\t\tassertReleasedV0Keys(record, EVENT_REQUIRED, frozenEnvelope ? surface ? SURFACE_OPTIONAL : LOG_OPTIONAL : SURFACE_OPTIONAL, `Session event ${index}`);\n\t\tif (record[\"seq\"] !== index) throw new SessionFormatError(`Session event ${index} has non-dense seq ${JSON.stringify(record[\"seq\"])}`);\n\t\tsessionFormatSafeInteger(record[\"time\"], `Session event ${index} time`);\n\t\tif (record[\"ignorable\"] !== void 0 && record[\"ignorable\"] !== true) throw new SessionFormatError(`Session event ${index} ignorable must be true when present`);\n\t\tif (frozenEnvelope && surface) assertReleasedSurfaceMetadata(record, index, type, \"allow-empty-assistant\");\n\t}\n}\n/**\n* Validate shared-layout surface references for one released generation.\n* @param record - exact event envelope.\n* @param seq - event position used for earlier-reference checks.\n* @param type - surface event type used in diagnostics.\n* @param assistantSources - whether this generation admits empty Assistant chunk references.\n*/\nfunction assertReleasedSurfaceMetadata(record, seq, type, assistantSources) {\n\tconst sources = record[\"sourceEventSeqs\"];\n\tif (type === \"assistant/message\" && sources !== void 0 && assistantSources === \"forbid-assistant\") throw new SessionFormatError(`assistant/message ${seq} retains obsolete chunk references`);\n\tif (sources !== void 0) {\n\t\tif (!Array.isArray(sources)) throw new SessionFormatError(`${type} ${seq} sourceEventSeqs must be an array`);\n\t\tconst seen = /* @__PURE__ */ new Set();\n\t\tfor (const source of sources) {\n\t\t\tconst current = sessionFormatCount(source, `${type} ${seq} sourceEventSeqs member`);\n\t\t\tif (current >= seq || seen.has(current)) throw new SessionFormatError(`${type} ${seq} sourceEventSeqs must be unique earlier seqs`);\n\t\t\tseen.add(current);\n\t\t}\n\t\tif (sources.length === 0 && type !== \"assistant/message\") throw new SessionFormatError(`${type} ${seq} sourceEventSeqs must be non-empty`);\n\t}\n\tconst operation = record[\"surfaceOp\"];\n\tif (operation === void 0 || operation === \"append\") return;\n\tconst replacement = releasedV0Record(operation, `${type} ${seq} surfaceOp`);\n\tassertReleasedV0Keys(replacement, [\n\t\t\"op\",\n\t\t\"start\",\n\t\t\"end\"\n\t], [], `${type} ${seq} surfaceOp`);\n\tif (replacement[\"op\"] !== \"replace\") throw new SessionFormatError(`${type} ${seq} surfaceOp must replace`);\n\tconst start = sessionFormatCount(replacement[\"start\"], `${type} ${seq} surface start`);\n\tconst end = sessionFormatCount(replacement[\"end\"], `${type} ${seq} surface end`);\n\tif (start >= seq || end >= seq) throw new SessionFormatError(`${type} ${seq} has an invalid surface replacement`);\n}\n/**\n* Validate one exact known payload after legacy normalization.\n* @param event - known event to validate.\n* @param version - payload generation controlling versioned members.\n*/\nfunction assertReleasedEventPayload(event, version) {\n\tconst disposition = RELEASED_V0_EVENT_DISPOSITIONS[event.type];\n\t/* v8 ignore next -- artifact coordinate validation admits only the frozen inventory before payload validation. */\n\tif (disposition === void 0) throw new SessionFormatUnsupportedMigrationError(`format v0 contains unknown historical event type ${JSON.stringify(event.type)} at seq ${event.seq}; migration refuses unknown historical events even when ignorable`);\n\tconst data = releasedV0Record(event.data, `${event.type} ${event.seq} data`);\n\tif (event.type === \"subagent/descriptor\" && data[\"version\"] !== 3) {\n\t\tconst descriptorVersion = sessionFormatCount(data[\"version\"], `${event.type} ${event.seq} version`);\n\t\tif (version === 0) throw new SessionFormatUnsupportedMigrationError(`${event.type} ${event.seq} uses unsupported descriptor version ${descriptorVersion}`);\n\t\treturn;\n\t}\n\tconst versionOptional = version === 1 && event.type === \"session-log-deepseek/delivery-accepted\" ? [...disposition.optional, \"sessionFormatVersion\"] : disposition.optional;\n\tassertReleasedV0Keys(data, disposition.required, versionOptional, `${event.type} ${event.seq} data`);\n\tfor (const key of disposition.opaque) if (Object.hasOwn(data, key) && !isJsonValue(data[key])) throw new SessionFormatError(`${event.type} ${event.seq} opaque ${key} is not lossless JSON`);\n\tassertReleasedPayloadSemantics(event, version);\n}\n//#endregion\n//#region lib/types/codec.js\nconst PHYSICAL_HEADER_REQUIRED = [\n\t\"type\",\n\t\"version\",\n\t\"id\",\n\t\"createdAt\",\n\t\"delegationDepth\"\n];\nconst PHYSICAL_HEADER_OPTIONAL = [\n\t\"cwd\",\n\t\"parentSession\",\n\t\"seedLength\",\n\t\"origin\",\n\t\"agentPreset\"\n];\nconst PACKED_TAGS = new Set([\n\t\"text-chunks\",\n\t\"reasoning-chunks\",\n\t\"tool-call-chunks\"\n]);\n/**\n* Test whether a compact migration item is a released packed Assistant row.\n* @param run - compact migration item to classify.\n* @returns whether the item carries the released Assistant chunk representation.\n*/\nfunction isReleasedAssistantChunkRun(run) {\n\treturn run.runType === \"released-assistant-chunks\";\n}\n/** Frozen physical JSON codec for the released v0 layout. */\nconst releasedV0SessionFormatCodec = createReleasedCodec(0);\n/** Frozen physical JSON codec for the shared-layout released v1 format. */\nconst releasedV1SessionFormatCodec = createReleasedCodec(1);\nfunction createReleasedCodec(version) {\n\treturn Object.freeze({\n\t\tversion,\n\t\tdecodeHeader: (value) => decodeHeader(value, version),\n\t\tcreateDecoder(headerValue, recovery) {\n\t\t\tconst physical = decodePhysicalHeader(headerValue, version);\n\t\t\tconst scanner = scanRows(recovery === \"recoverable\");\n\t\t\treturn {\n\t\t\t\theader: physical.header,\n\t\t\t\theaderInheritedEventCount: physical.inheritedEventCount,\n\t\t\t\tdecodeRow: (rowValue, context) => {\n\t\t\t\t\tscanner.decodeRow(rowValue, context);\n\t\t\t\t},\n\t\t\t\tfinish(_context) {\n\t\t\t\t\tscanner.finish(physical.inheritedEventCount);\n\t\t\t\t\treturn physical.inheritedEventCount;\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n}\nfunction scanRows(recoverable) {\n\tlet rowIndex = 0;\n\tlet eventCount = 0;\n\tlet issue;\n\treturn {\n\t\tdecodeRow(rowValue, context) {\n\t\t\tconst currentRow = rowIndex;\n\t\t\trowIndex += 1;\n\t\t\tlet packed = false;\n\t\t\tlet decoded;\n\t\t\ttry {\n\t\t\t\tconst record = releasedV0Record(rowValue, `released Session row ${currentRow}`);\n\t\t\t\tconst type = record[\"type\"];\n\t\t\t\tif (typeof type === \"string\" && PACKED_TAGS.has(type)) {\n\t\t\t\t\tpacked = true;\n\t\t\t\t\tdecoded = decodePackedRun(record, type, currentRow);\n\t\t\t\t} else decoded = decodeEvent(record, currentRow);\n\t\t\t} catch (error) {\n\t\t\t\tconst current = error instanceof SessionFormatError ? error : new SessionFormatError(`released Session row ${currentRow} is malformed`, { cause: error });\n\t\t\t\tif (!recoverable) throw current;\n\t\t\t\tissue ??= current;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (issue !== void 0) {\n\t\t\t\tif (!packed && decoded.type === \"turn/end\") throw issue;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst seq = packed ? decoded.firstSeq : decoded.seq;\n\t\t\tif (seq !== eventCount) {\n\t\t\t\tconst gap = new SessionFormatError(`released Session row ${currentRow} has seq gap (expected ${eventCount}, got ${seq})`);\n\t\t\t\tif (!recoverable) throw gap;\n\t\t\t\tissue = gap;\n\t\t\t\tif (!packed && decoded.type === \"turn/end\") throw gap;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (packed) {\n\t\t\t\tconst run = decoded;\n\t\t\t\teventCount += run.eventCount;\n\t\t\t\tcontext.emitRun(run);\n\t\t\t} else {\n\t\t\t\teventCount += 1;\n\t\t\t\tcontext.emitEvent(decoded);\n\t\t\t}\n\t\t},\n\t\tfinish(inheritedEventCount) {\n\t\t\tif (inheritedEventCount > eventCount) throw new SessionFormatError(\"Session inheritedEventCount exceeds its event count\");\n\t\t}\n\t};\n}\nfunction decodeHeader(value, version) {\n\treturn decodePhysicalHeader(value, version).header;\n}\nfunction decodePhysicalHeader(value, version) {\n\tconst record = releasedV0Record(snapshotSessionFormatJson(value, `released v${version} physical header`), `released v${version} physical header`);\n\tassertReleasedV0Keys(record, PHYSICAL_HEADER_REQUIRED, PHYSICAL_HEADER_OPTIONAL, `released v${version} physical header`);\n\tif (record[\"type\"] !== \"session\" || record[\"version\"] !== version) throw new SessionFormatError(`expected released v${version} physical Session header`);\n\tif (typeof record[\"id\"] !== \"string\") throw new SessionFormatError(`released v${version} header id must be a string`);\n\tconst createdAt = sessionFormatCount(record[\"createdAt\"], `released v${version} header createdAt`);\n\tconst delegationDepth = sessionFormatCount(record[\"delegationDepth\"], `released v${version} header delegationDepth`);\n\tconst seedLength = record[\"seedLength\"] === void 0 ? 0 : sessionFormatCount(record[\"seedLength\"], `released v${version} header seedLength`);\n\tfor (const key of [\n\t\t\"cwd\",\n\t\t\"parentSession\",\n\t\t\"agentPreset\"\n\t]) if (record[key] !== void 0 && typeof record[key] !== \"string\") throw new SessionFormatError(`released v${version} header ${key} must be a string`);\n\tif (record[\"origin\"] !== void 0 && record[\"origin\"] !== \"subagent\") throw new SessionFormatError(`released v${version} header origin must be \"subagent\"`);\n\tconst header = {\n\t\tversion,\n\t\tid: record[\"id\"],\n\t\tcreatedAt,\n\t\t...record[\"cwd\"] === void 0 ? {} : { cwd: record[\"cwd\"] },\n\t\t...record[\"parentSession\"] === void 0 ? {} : { parentSession: record[\"parentSession\"] },\n\t\tisSeeded: record[\"seedLength\"] !== void 0,\n\t\t...record[\"origin\"] === void 0 ? {} : { origin: record[\"origin\"] },\n\t\tdelegationDepth,\n\t\t...record[\"agentPreset\"] === void 0 ? {} : { agentPreset: record[\"agentPreset\"] }\n\t};\n\tassertReleasedSessionFormatHeader(header, version);\n\treturn {\n\t\theader,\n\t\tinheritedEventCount: seedLength\n\t};\n}\nfunction decodeEvent(record, rowIndex) {\n\tif (record[\"sourceEventSeqs\"] !== void 0) {\n\t\tconst seq = sessionFormatCount(record[\"seq\"], `released Session row ${rowIndex} seq`);\n\t\treturn {\n\t\t\t...record,\n\t\t\tsourceEventSeqs: decodeSeqRanges(record[\"sourceEventSeqs\"], seq)\n\t\t};\n\t}\n\treturn record;\n}\nfunction decodePackedRun(row, type, rowIndex) {\n\tconst label = `released ${type} row ${rowIndex}`;\n\tassertReleasedV0Keys(row, [\n\t\t\"type\",\n\t\t\"seq0\",\n\t\t\"time0\",\n\t\t\"data\"\n\t], [], label);\n\tconst seq0 = sessionFormatCount(row[\"seq0\"], `${label} seq0`);\n\tconst time0 = sessionFormatSafeInteger(row[\"time0\"], `${label} time0`);\n\tconst data = releasedV0Record(row[\"data\"], `${label} data`);\n\tconst isTool = type === \"tool-call-chunks\";\n\tassertReleasedV0Keys(data, isTool ? [\n\t\t\"turn\",\n\t\t\"step\",\n\t\t\"index\",\n\t\t\"id\",\n\t\t\"dt\",\n\t\t\"args\"\n\t] : [\n\t\t\"turn\",\n\t\t\"step\",\n\t\t\"index\",\n\t\t\"dt\",\n\t\t\"texts\"\n\t], isTool ? [\"name\"] : [], `${label} data`);\n\tconst payload = data[isTool ? \"args\" : \"texts\"];\n\tif (!Array.isArray(payload) || payload.length === 0 || payload.some((member) => typeof member !== \"string\")) throw new SessionFormatError(`${label} payload must be a non-empty string array`);\n\tconst gaps = data[\"dt\"];\n\tif (!Array.isArray(gaps) || gaps.length !== payload.length - 1) throw new SessionFormatError(`${label} dt length must match its payload`);\n\tlet lastTime = time0;\n\tfor (const gap of gaps) {\n\t\tconst validGap = sessionFormatSafeInteger(gap, `${label} dt member`);\n\t\tlastTime = sessionFormatSafeInteger(lastTime + validGap, `${label} member time`);\n\t}\n\tconst turn = sessionFormatCount(data[\"turn\"], `${label} turn`);\n\tconst step = sessionFormatCount(data[\"step\"], `${label} step`);\n\tconst chunkIndex = sessionFormatCount(data[\"index\"], `${label} index`);\n\tif (isTool && (typeof data[\"id\"] !== \"string\" || data[\"id\"].length === 0 || data[\"name\"] !== void 0 && typeof data[\"name\"] !== \"string\")) throw new SessionFormatError(`${label} id and optional name must be strings`);\n\tconst lastSeq = sessionFormatCount(seq0 + payload.length - 1, `${label} final seq`);\n\tconst stream = type === \"tool-call-chunks\" ? {\n\t\ttype,\n\t\ttime0,\n\t\tindex: chunkIndex,\n\t\tdt: gaps,\n\t\tid: data[\"id\"],\n\t\t...data[\"name\"] === void 0 ? {} : { name: data[\"name\"] },\n\t\targs: payload\n\t} : {\n\t\ttype,\n\t\ttime0,\n\t\tindex: chunkIndex,\n\t\tdt: gaps,\n\t\ttexts: payload\n\t};\n\tconst run = {\n\t\trunType: \"released-assistant-chunks\",\n\t\tfirstSeq: seq0,\n\t\teventCount: payload.length,\n\t\tturn,\n\t\tstep,\n\t\tlastSeq,\n\t\tlastTime,\n\t\tstream,\n\t\texpand: () => expandAssistantChunkRun(run)\n\t};\n\treturn run;\n}\nfunction* expandAssistantChunkRun(run) {\n\tconst stream = run.stream;\n\tconst gaps = stream[\"dt\"];\n\tconst members = stream[\"type\"] === \"tool-call-chunks\" ? stream[\"args\"] : stream[\"texts\"];\n\tlet time = run.stream[\"time0\"];\n\tfor (let index = 0; index < members.length; index += 1) {\n\t\tif (index > 0) time += gaps[index - 1];\n\t\tconst member = members[index];\n\t\tconst chunk = stream[\"type\"] === \"text-chunks\" ? {\n\t\t\ttype: \"text-delta\",\n\t\t\tindex: stream[\"index\"],\n\t\t\ttext: member\n\t\t} : stream[\"type\"] === \"reasoning-chunks\" ? {\n\t\t\ttype: \"reasoning-delta\",\n\t\t\tindex: stream[\"index\"],\n\t\t\ttext: member\n\t\t} : {\n\t\t\ttype: \"tool-call-delta\",\n\t\t\tindex: stream[\"index\"],\n\t\t\tid: stream[\"id\"],\n\t\t\t...stream[\"name\"] === void 0 ? {} : { name: stream[\"name\"] },\n\t\t\targumentsDelta: member\n\t\t};\n\t\tyield {\n\t\t\ttype: \"assistant/chunk\",\n\t\t\tseq: run.firstSeq + index,\n\t\t\ttime,\n\t\t\tdata: {\n\t\t\t\tturn: run.turn,\n\t\t\t\tstep: run.step,\n\t\t\t\tchunk\n\t\t\t}\n\t\t};\n\t}\n}\nfunction decodeSeqRanges(value, maxEntries) {\n\tif (!Array.isArray(value)) throw new SessionFormatError(\"sourceEventSeqs must be an array\");\n\tconst output = [];\n\tlet hasRange = false;\n\tfor (const entry of value) {\n\t\tif (typeof entry === \"number\") {\n\t\t\tif (output.length >= maxEntries) throw new SessionFormatError(\"sourceEventSeqs exceeds its event seq\");\n\t\t\toutput.push(sessionFormatCount(entry, \"sourceEventSeqs member\"));\n\t\t\tcontinue;\n\t\t}\n\t\tif (!Array.isArray(entry) || entry.length !== 2) throw new SessionFormatError(\"sourceEventSeqs range must be a [start, end] pair\");\n\t\tconst start = sessionFormatCount(entry[0], \"sourceEventSeqs range start\");\n\t\tconst end = sessionFormatCount(entry[1], \"sourceEventSeqs range end\");\n\t\tif (end < start || end - start + 1 > maxEntries - output.length) throw new SessionFormatError(\"sourceEventSeqs range exceeds its event seq\");\n\t\tfor (let seq = start; seq <= end; seq += 1) output.push(seq);\n\t\thasRange = true;\n\t}\n\tif (hasRange && output.some((member, index) => index > 0 && member <= output[index - 1])) throw new SessionFormatError(\"sourceEventSeqs ranges must be strictly increasing\");\n\treturn output;\n}\n//#endregion\n//#region lib/types/migration.js\nconst LEGACY_ASSISTANT_SOURCE_KEY = [\"pro\", \"venance\"].join(\"\");\n/** Identity format edge that promotes released v0 into released v1. */\nconst sessionFormatV0ToV1 = defineSessionFormatMigration({\n\tname: \"@deepseek-ai/dsh-session-format-v0-to-v1\",\n\tfromVersion: 0,\n\ttoVersion: 1,\n\tmigrateHeader(header) {\n\t\tassertHeaderVersion(header, 0);\n\t\treturn {\n\t\t\t...header,\n\t\t\tversion: 1\n\t\t};\n\t},\n\tcreateStage(input) {\n\t\treturn new ReleasedV0ToV1Stage(input);\n\t},\n\tvalidateTargetHeader: assertReleasedV1Header\n});\nvar ReleasedV0ToV1Stage = class {\n\tinput;\n\theaderInheritedEventCount;\n\tstate = {\n\t\tmessageIds: /* @__PURE__ */ new Map(),\n\t\tretryIds: /* @__PURE__ */ new Map()\n\t};\n\tconstructor(input) {\n\t\tthis.input = input;\n\t\tassertHeaderVersion(input.sourceHeader, 0);\n\t\tthis.headerInheritedEventCount = sessionFormatCount(input.sourceInheritedEventCount, \"format v0 inherited event count\");\n\t}\n\ttransformEvent(event, context) {\n\t\tconst normalized = normalizeReleasedV0Event(event, this.input.sourceHeader.id, this.state);\n\t\tassertSourceDeliveryMarker(normalized, this.input);\n\t\tcontext.emitEvent(normalized);\n\t}\n\ttransformRun(run, context) {\n\t\tif (isReleasedAssistantChunkRun(run)) {\n\t\t\tcontext.emitRun(run);\n\t\t\treturn;\n\t\t}\n\t\tfor (const event of run.expand()) this.transformEvent(event, context);\n\t}\n\tfinish(_context) {\n\t\treturn this.headerInheritedEventCount;\n\t}\n};\nfunction assertHeaderVersion(header, version) {\n\tif (header.version !== version) throw new SessionFormatError(`expected format v${version} header`);\n}\nfunction normalizeReleasedV0Event(event, sessionId, state) {\n\tconst named = normalizeLegacyCompactionType(event);\n\tassertSupportedLegacyType(named, sessionId);\n\tconst message = normalizeLegacyMessage(normalizeLegacyCompaction(normalizeLegacyRetry(normalizeLegacySteering(normalizeLegacyRequestHeader(normalizeLegacyTurnEnd(normalizeLegacyTurnStart(named, sessionId), sessionId), sessionId), sessionId), sessionId, state.retryIds), sessionId, state), sessionId, state.messageIds);\n\tif (message.type !== \"assistant/chunk\") assertReleasedEventPayload(message, 0);\n\tconst messageId = eventMessageId(message);\n\tif (messageId !== void 0) state.messageIds.set(message.seq, messageId);\n\treturn message;\n}\nfunction normalizeLegacyCompactionType(event) {\n\tswitch (event.type) {\n\t\tcase \"compact/start\": return {\n\t\t\t...event,\n\t\t\ttype: \"compaction/start\"\n\t\t};\n\t\tcase \"compact/summary\": return {\n\t\t\t...event,\n\t\t\ttype: \"compaction/summary\"\n\t\t};\n\t\tcase \"compact/end\": return {\n\t\t\t...event,\n\t\t\ttype: \"compaction/end\"\n\t\t};\n\t\tcase \"compact/prune\": return {\n\t\t\t...event,\n\t\t\ttype: \"compaction/prune\"\n\t\t};\n\t\tdefault: return event;\n\t}\n}\nfunction assertSourceDeliveryMarker(event, input) {\n\tif (event.type !== \"session-log-deepseek/delivery-accepted\") return;\n\tconst data = releasedV0Record(event.data, `${event.type} ${event.seq} data`);\n\tconst acceptedVersion = data[\"sessionFormatVersion\"] ?? 0;\n\tconst inherited = input.sourceHeader.parentSession !== void 0 && event.seq < sessionFormatCount(input.sourceInheritedEventCount, \"format v0 inherited event count\");\n\tif (acceptedVersion === 0 && !inherited && data[\"sessionId\"] !== input.sourceHeader.id) throw new SessionFormatError(\"current-generation delivery marker names the wrong Session\");\n}\nfunction normalizeLegacyRetry(event, sessionId, retryIds) {\n\tif (event.type !== \"llm/retry\") return event;\n\tconst data = releasedV0Record(event.data, `llm/retry ${event.seq} data`);\n\tconst chain = [\n\t\tdata[\"turn\"],\n\t\tdata[\"step\"],\n\t\tdata[\"provider\"],\n\t\tdata[\"policyKey\"]\n\t].map((value) => JSON.stringify(value)).join(\"\\0\");\n\tconst retryId = data[\"retryId\"];\n\tif (typeof retryId === \"string\" && retryId.length > 0) {\n\t\tretryIds.set(chain, retryId);\n\t\treturn event;\n\t}\n\tif (Object.hasOwn(data, \"retryId\")) return event;\n\tconst migratedRetryId = retryIds.get(chain) ?? `legacy-retry:${sessionId}:${event.seq}`;\n\tretryIds.set(chain, migratedRetryId);\n\treturn {\n\t\t...event,\n\t\tdata: {\n\t\t\t...data,\n\t\t\tretryId: migratedRetryId\n\t\t}\n\t};\n}\nfunction normalizeLegacyCompaction(event, sessionId, state) {\n\tif (event.type === \"session/end-seed\") {\n\t\tdelete state.compactionId;\n\t\treturn event;\n\t}\n\tif (event.type === \"compaction/start\") {\n\t\tconst data = releasedV0Record(event.data, `compaction/start ${event.seq} data`);\n\t\tconst existing = data[\"compactionId\"];\n\t\tif (typeof existing === \"string\" && existing.length > 0) {\n\t\t\tstate.compactionId = existing;\n\t\t\treturn event;\n\t\t}\n\t\tif (Object.hasOwn(data, \"compactionId\")) return event;\n\t\tconst id = `legacy-compaction:${sessionId}:${event.seq}`;\n\t\tstate.compactionId = id;\n\t\treturn {\n\t\t\t...event,\n\t\t\tdata: {\n\t\t\t\t...data,\n\t\t\t\tcompactionId: id\n\t\t\t}\n\t\t};\n\t}\n\tconst compactionId = state.compactionId;\n\tif (compactionId === void 0) return event;\n\tif (event.type === \"compaction/summary\" || event.type === \"compaction/end\") {\n\t\tconst normalized = addLegacyCompactionId(event, compactionId);\n\t\tif (event.type === \"compaction/end\") delete state.compactionId;\n\t\treturn normalized;\n\t}\n\tif (event.type !== \"user/message\") return event;\n\tconst data = releasedV0Record(event.data, `user/message ${event.seq} data`);\n\tconst source = data[\"source\"];\n\tif (!releasedIsRecord(source) || source[\"kind\"] !== \"plugin\" || source[\"plugin\"] !== \"compact\" || Object.hasOwn(source, \"compactionId\")) return event;\n\treturn {\n\t\t...event,\n\t\tdata: {\n\t\t\t...data,\n\t\t\tsource: {\n\t\t\t\t...source,\n\t\t\t\tcompactionId\n\t\t\t}\n\t\t}\n\t};\n}\nfunction addLegacyCompactionId(event, compactionId) {\n\tconst data = releasedV0Record(event.data, `${event.type} ${event.seq} data`);\n\tif (Object.hasOwn(data, \"compactionId\")) return event;\n\treturn {\n\t\t...event,\n\t\tdata: {\n\t\t\t...data,\n\t\t\tcompactionId\n\t\t}\n\t};\n}\nfunction normalizeLegacyRequestHeader(event, sessionId) {\n\tif (event.type !== \"request/header\") return event;\n\tconst data = releasedV0Record(event.data, `request/header ${event.seq} data`);\n\tconst header = releasedV0Record(data[\"header\"], `request/header ${event.seq} header`);\n\tif (!Object.hasOwn(header, \"messagePrefix\")) return event;\n\tif (!Array.isArray(header[\"messagePrefix\"])) throw new SessionFormatError(`session ${JSON.stringify(sessionId)} contains malformed request/header messagePrefix at seq ${event.seq}`);\n\tconst { messagePrefix: _messagePrefix, ...currentHeader } = header;\n\treturn {\n\t\t...event,\n\t\tdata: {\n\t\t\t...data,\n\t\t\theader: currentHeader\n\t\t}\n\t};\n}\nfunction assertSupportedLegacyType(event, sessionId) {\n\tif (event.type === \"request/header-delta\" || event.type === \"mode/set\") throw new SessionFormatUnsupportedMigrationError(`session ${JSON.stringify(sessionId)} contains unsupported legacy ${event.type} event at seq ${event.seq}`);\n\tif (event.type === \"request/header\") {\n\t\tif (releasedV0Record(event.data, `request/header ${event.seq} data`)[\"reason\"] === \"fallback\") throw new SessionFormatUnsupportedMigrationError(`session ${JSON.stringify(sessionId)} contains unsupported request/header reason \"fallback\" at seq ${event.seq}`);\n\t}\n}\nfunction normalizeLegacySteering(event, sessionId) {\n\tif (event.type !== \"steering/message\") return event;\n\tconst data = releasedV0Record(event.data, `steering/message ${event.seq} data`);\n\tconst wrapped = data[\"message\"];\n\tif (wrapped !== void 0) {\n\t\tassertReleasedV0Keys(data, [\"turn\", \"message\"], [], `steering/message ${event.seq} data`);\n\t\tsessionFormatCount(data[\"turn\"], `steering/message ${event.seq} turn`);\n\t\treturn {\n\t\t\t...event,\n\t\t\ttype: \"user/message\",\n\t\t\tdata: wrapped\n\t\t};\n\t}\n\tassertReleasedV0Keys(data, [\n\t\t\"turn\",\n\t\t\"content\",\n\t\t\"source\"\n\t], [], `steering/message ${event.seq} data`);\n\tsessionFormatCount(data[\"turn\"], `steering/message ${event.seq} turn`);\n\tconst { turn: _turn, ...message } = data;\n\treturn {\n\t\t...event,\n\t\ttype: \"user/message\",\n\t\tdata: {\n\t\t\t...message,\n\t\t\tid: legacyMessageId(sessionId, event.seq),\n\t\t\trole: \"user\"\n\t\t}\n\t};\n}\nfunction normalizeLegacyTurnStart(event, sessionId) {\n\tif (event.type !== \"turn/start\") return event;\n\tconst data = releasedV0Record(event.data, `turn/start ${event.seq} data`);\n\tif (!Object.hasOwn(data, \"trigger\")) return event;\n\tassertReleasedV0Keys(data, [\"turn\", \"trigger\"], [], `turn/start ${event.seq} data`);\n\tconst turn = sessionFormatCount(data[\"turn\"], `turn/start ${event.seq} turn`);\n\tconst trigger = releasedV0Record(data[\"trigger\"], `turn/start ${event.seq} trigger`);\n\tif (turn < 1 || typeof trigger[\"kind\"] !== \"string\" || trigger[\"kind\"].length === 0) throw malformedLegacy(sessionId, \"turn/start\", event.seq);\n\treturn {\n\t\t...event,\n\t\tdata: { turn }\n\t};\n}\nfunction normalizeLegacyTurnEnd(event, sessionId) {\n\tif (event.type !== \"turn/end\") return event;\n\tconst data = releasedV0Record(event.data, `turn/end ${event.seq} data`);\n\tassertReleasedV0Keys(data, [\"turn\", \"reason\"], [], `turn/end ${event.seq} data`);\n\tif (sessionFormatCount(data[\"turn\"], `turn/end ${event.seq} turn`) < 1) throw malformedLegacy(sessionId, \"turn/end\", event.seq);\n\tconst reason = releasedV0Record(data[\"reason\"], `turn/end ${event.seq} reason`);\n\tif (typeof reason[\"kind\"] !== \"string\") throw malformedLegacy(sessionId, \"turn/end\", event.seq);\n\tlet current;\n\tswitch (reason[\"kind\"]) {\n\t\tcase \"completed\":\n\t\tcase \"blocked\":\n\t\tcase \"max-tokens\":\n\t\tcase \"interrupted\":\n\t\t\tassertReleasedV0Keys(reason, [\"kind\"], [], `turn/end ${event.seq} reason`);\n\t\t\treturn event;\n\t\tcase \"aborted\":\n\t\t\tif (Object.hasOwn(reason, \"reason\")) return event;\n\t\t\tassertReleasedV0Keys(reason, [\"kind\"], [], `turn/end ${event.seq} reason`);\n\t\t\tcurrent = {\n\t\t\t\tkind: \"aborted\",\n\t\t\t\treason: { kind: \"legacy\" }\n\t\t\t};\n\t\t\tbreak;\n\t\tcase \"disposed\":\n\t\t\tassertReleasedV0Keys(reason, [\"kind\"], [], `turn/end ${event.seq} reason`);\n\t\t\tcurrent = {\n\t\t\t\tkind: \"aborted\",\n\t\t\t\treason: { kind: \"disposed\" }\n\t\t\t};\n\t\t\tbreak;\n\t\tcase \"error\":\n\t\t\tif (Object.hasOwn(reason, \"error\")) return event;\n\t\t\tcurrent = normalizeLegacyErrorReason(reason, event.seq, sessionId);\n\t\t\tbreak;\n\t\tdefault: return event;\n\t}\n\treturn {\n\t\t...event,\n\t\tdata: {\n\t\t\t...data,\n\t\t\treason: current\n\t\t}\n\t};\n}\nfunction normalizeLegacyErrorReason(reason, seq, sessionId) {\n\tsessionFormatCount(reason[\"step\"], `turn/end ${seq} error step`);\n\tconst failure = reason[\"failure\"];\n\tif (failure !== void 0) {\n\t\tassertReleasedV0Keys(reason, [\n\t\t\t\"kind\",\n\t\t\t\"step\",\n\t\t\t\"failure\"\n\t\t], [], `turn/end ${seq} reason`);\n\t\tconst record = releasedV0Record(failure, `turn/end ${seq} failure`);\n\t\tassertReleasedV0Keys(record, [\"message\", \"code\"], [\n\t\t\t\"status\",\n\t\t\t\"providerRetryAfterMs\",\n\t\t\t\"requestId\"\n\t\t], `turn/end ${seq} failure`);\n\t\tif (typeof record[\"message\"] !== \"string\" || typeof record[\"code\"] !== \"string\") throw malformedLegacy(sessionId, \"turn/end\", seq);\n\t\treturn {\n\t\t\tkind: \"error\",\n\t\t\terror: record\n\t\t};\n\t}\n\tassertReleasedV0Keys(reason, [\n\t\t\"kind\",\n\t\t\"step\",\n\t\t\"message\"\n\t], [\"code\"], `turn/end ${seq} reason`);\n\tif (typeof reason[\"message\"] !== \"string\" || reason[\"code\"] !== void 0 && typeof reason[\"code\"] !== \"string\") throw malformedLegacy(sessionId, \"turn/end\", seq);\n\treturn {\n\t\tkind: \"error\",\n\t\terror: {\n\t\t\tmessage: reason[\"message\"],\n\t\t\tcode: typeof reason[\"code\"] === \"string\" ? reason[\"code\"] : \"UNKNOWN\"\n\t\t}\n\t};\n}\nfunction normalizeLegacyMessage(event, sessionId, messageIds) {\n\tconst data = releasedV0Record(event.data, `${event.type} ${event.seq} data`);\n\tswitch (event.type) {\n\t\tcase \"user/message\":\n\t\t\tif (Object.hasOwn(data, \"id\") || Object.hasOwn(data, \"role\") || Object.hasOwn(data, \"message\") || !Object.hasOwn(data, \"content\") || !Object.hasOwn(data, \"source\")) return event;\n\t\t\treturn {\n\t\t\t\t...event,\n\t\t\t\tdata: {\n\t\t\t\t\t...data,\n\t\t\t\t\tid: legacyMessageId(sessionId, event.seq),\n\t\t\t\t\trole: \"user\"\n\t\t\t\t}\n\t\t\t};\n\t\tcase \"assistant/message\": {\n\t\t\tif (Object.hasOwn(data, \"message\") || !Object.hasOwn(data, \"content\") || !Object.hasOwn(data, LEGACY_ASSISTANT_SOURCE_KEY)) return event;\n\t\t\tconst content = data[\"content\"];\n\t\t\tconst eventData = { ...data };\n\t\t\tdelete eventData[\"content\"];\n\t\t\tconst source = releasedV0Record(eventData[LEGACY_ASSISTANT_SOURCE_KEY], `assistant/message ${event.seq} legacy source`);\n\t\t\tReflect.deleteProperty(eventData, LEGACY_ASSISTANT_SOURCE_KEY);\n\t\t\treturn {\n\t\t\t\t...event,\n\t\t\t\tdata: {\n\t\t\t\t\t...eventData,\n\t\t\t\t\tmessage: {\n\t\t\t\t\t\tid: legacyMessageId(sessionId, event.seq),\n\t\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\t\tcontent,\n\t\t\t\t\t\tsource: {\n\t\t\t\t\t\t\t...source,\n\t\t\t\t\t\t\tkind: \"model\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tcase \"tool/result\": {\n\t\t\tif (Object.hasOwn(data, \"message\") || !Object.hasOwn(data, \"callId\") || !Object.hasOwn(data, \"content\") || !Object.hasOwn(data, \"isError\")) return event;\n\t\t\tconst { callId, content, isError, ...eventData } = data;\n\t\t\tif (typeof callId !== \"string\" || typeof isError !== \"boolean\" || content === void 0) return event;\n\t\t\tconst inheritedId = replacementStart(event);\n\t\t\tconst messageId = inheritedId === void 0 ? legacyMessageId(sessionId, event.seq) : messageIds.get(inheritedId);\n\t\t\tif (messageId === void 0) throw new SessionFormatError(`tool/result ${event.seq} replacement cites a message without identity`);\n\t\t\treturn {\n\t\t\t\t...event,\n\t\t\t\tdata: {\n\t\t\t\t\t...eventData,\n\t\t\t\t\tmessage: {\n\t\t\t\t\t\tid: messageId,\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [{\n\t\t\t\t\t\t\ttype: \"tool-result\",\n\t\t\t\t\t\t\ttoolCallId: callId,\n\t\t\t\t\t\t\tcontent,\n\t\t\t\t\t\t\tisError\n\t\t\t\t\t\t}],\n\t\t\t\t\t\tsource: {\n\t\t\t\t\t\t\tkind: \"tool\",\n\t\t\t\t\t\t\tcallId\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tdefault: return event;\n\t}\n}\nfunction replacementStart(event) {\n\tconst operation = event[\"surfaceOp\"];\n\tif (operation === void 0 || !releasedIsRecord(operation) || operation[\"op\"] !== \"replace\") return void 0;\n\treturn operation[\"start\"];\n}\nfunction eventMessageId(event) {\n\tconst data = releasedV0Record(event.data, `${event.type} ${event.seq} data`);\n\tconst message = event.type === \"user/message\" ? data : releasedIsRecord(data[\"message\"]) ? data[\"message\"] : void 0;\n\treturn typeof message?.[\"id\"] === \"string\" ? message[\"id\"] : void 0;\n}\nfunction releasedIsRecord(value) {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction legacyMessageId(sessionId, seq) {\n\treturn `legacy-message:${sessionId}:${seq}`;\n}\nfunction malformedLegacy(sessionId, type, seq) {\n\treturn new SessionFormatError(`session ${JSON.stringify(sessionId)} contains malformed pre-react-loop ${type} at seq ${seq}`);\n}\n//#endregion\n//#region lib/types/relationships.js\nconst SURFACE_TYPES = new Set([\n\t\"user/message\",\n\t\"assistant/message\",\n\t\"tool/result\"\n]);\n/**\n* Validate cross-event relationships required to construct one current Session safely.\n* @param artifact - complete normalized v0 or exact current v1 artifact.\n* @param extensions - later-generation event roles interpreted by the calling format owner.\n*/\nfunction assertReleasedArtifactRelationships(artifact, extensions = {}) {\n\tlet openTurn = null;\n\tlet openStep = null;\n\tlet openStepProvider;\n\tlet nextTurn = 1;\n\tlet nextStep = 1;\n\tlet surface = [];\n\tlet openCompaction;\n\tconst staleCompactionStarts = inheritedOrphanCompactionStarts(artifact.events);\n\tconst retries = [];\n\tconst retryStarts = /* @__PURE__ */ new Set();\n\tconst ptcRoots = /* @__PURE__ */ new Map();\n\tconst ptcStarts = /* @__PURE__ */ new Map();\n\tconst toolLifecycles = /* @__PURE__ */ new Map();\n\tconst commandRuns = /* @__PURE__ */ new Set();\n\tfor (const event of artifact.events) {\n\t\tconst extensionStepEvent = extensions.stepEvents?.has(event.type) === true;\n\t\tif (RELEASED_V0_EVENT_DISPOSITIONS[event.type] === void 0 && !extensionStepEvent) continue;\n\t\tconst data = releasedV0Record(event.data, `${event.type} ${event.seq} data`);\n\t\tif (SURFACE_TYPES.has(event.type)) surface = applySurface(surface, event);\n\t\tif ((event.type === \"turn/start\" || event.type === \"turn/end\") && openCompaction !== void 0 && !staleCompactionStarts.has(openCompaction.startSeq)) throw new SessionFormatError(`${event.type} crosses an open compaction`);\n\t\tif (extensionStepEvent) {\n\t\t\trequireOpenStep(event, data, openTurn, openStep);\n\t\t\tcontinue;\n\t\t}\n\t\tswitch (event.type) {\n\t\t\tcase \"turn/start\": {\n\t\t\t\tconst previous = artifact.events[event.seq - 1];\n\t\t\t\tif (extensions.legacyInterruptedTurnRestart === true && openTurn !== null && openStep === null && data[\"turn\"] === openTurn + 1 && nextTurn === openTurn && previous?.type === \"agent/inbox/spliced\") {\n\t\t\t\t\tconst splice = releasedV0Record(previous.data, `agent/inbox/spliced ${previous.seq} data`);\n\t\t\t\t\tif (splice[\"target\"] === \"next-turn\" && Array.isArray(splice[\"inserted\"]) && splice[\"inserted\"].length > 0) {\n\t\t\t\t\t\topenTurn = null;\n\t\t\t\t\t\tnextTurn += 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (openTurn !== null || data[\"turn\"] !== nextTurn) throw new SessionFormatError(`turn/start ${JSON.stringify(data[\"turn\"])} does not open expected turn ${nextTurn}`);\n\t\t\t\topenTurn = data[\"turn\"];\n\t\t\t\topenStep = null;\n\t\t\t\ttoolLifecycles.clear();\n\t\t\t\tnextStep = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"turn/end\":\n\t\t\t\tif (openTurn !== data[\"turn\"]) throw new SessionFormatError(`turn/end ${JSON.stringify(data[\"turn\"])} has no matching open turn`);\n\t\t\t\tassertNoUnresolvedTools(toolLifecycles, \"turn/end\");\n\t\t\t\tif (openStep !== null) throw new SessionFormatError(`turn/end ${JSON.stringify(data[\"turn\"])} crosses an open step`);\n\t\t\t\topenTurn = null;\n\t\t\t\tnextTurn += 1;\n\t\t\t\tbreak;\n\t\t\tcase \"step/start\":\n\t\t\t\tif (openTurn !== data[\"turn\"] || openStep !== null || data[\"step\"] !== nextStep) throw new SessionFormatError(`${event.type} does not match the open turn and next step`);\n\t\t\t\topenStep = data[\"step\"];\n\t\t\t\tbreak;\n\t\t\tcase \"step/end\":\n\t\t\t\trequireOpenStep(event, data, openTurn, openStep);\n\t\t\t\tassertNoUnresolvedTools(toolLifecycles, \"step/end\");\n\t\t\t\ttoolLifecycles.clear();\n\t\t\t\topenStep = null;\n\t\t\t\tnextStep += 1;\n\t\t\t\tbreak;\n\t\t\tcase \"assistant/chunk\":\n\t\t\t\trequireOpenStep(event, data, openTurn, openStep);\n\t\t\t\tbreak;\n\t\t\tcase \"assistant/message\": {\n\t\t\t\trequireOpenStep(event, data, openTurn, openStep);\n\t\t\t\tconst content = releasedV0Record(data[\"message\"], `assistant/message ${event.seq} message`)[\"content\"];\n\t\t\t\tfor (const block of content) {\n\t\t\t\t\tif (block[\"type\"] !== \"tool-call\") continue;\n\t\t\t\t\tconst callId = block[\"id\"];\n\t\t\t\t\tif (toolLifecycles.has(callId)) throw new SessionFormatError(`assistant/message repeats advertised tool call ${callId}`);\n\t\t\t\t\ttoolLifecycles.set(callId, {\n\t\t\t\t\t\tname: block[\"name\"],\n\t\t\t\t\t\targuments: block[\"arguments\"],\n\t\t\t\t\t\tstate: \"advertised\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"tool/call\": {\n\t\t\t\trequireOpenStep(event, data, openTurn, openStep);\n\t\t\t\tconst callId = data[\"callId\"];\n\t\t\t\tconst lifecycle = toolLifecycles.get(callId);\n\t\t\t\tif (lifecycle === void 0 || lifecycle.state !== \"advertised\" || lifecycle.name !== data[\"name\"] || lifecycle.arguments !== data[\"arguments\"]) throw new SessionFormatError(`tool/call ${callId} does not match one advertised tool call`);\n\t\t\t\tlifecycle.state = \"started\";\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"tool/result\":\n\t\t\t\tif (event[\"surfaceOp\"] === \"append\") {\n\t\t\t\t\trequireOpenStep(event, data, openTurn, openStep);\n\t\t\t\t\tconst message = releasedV0Record(data[\"message\"], `tool/result ${event.seq} message`);\n\t\t\t\t\tconst callId = releasedV0Record(message[\"source\"], `tool/result ${event.seq} source`)[\"callId\"];\n\t\t\t\t\tconst content = message[\"content\"];\n\t\t\t\t\tconst error = data[\"error\"] === void 0 ? void 0 : releasedV0Record(data[\"error\"], `tool/result ${event.seq} error`);\n\t\t\t\t\tconst lifecycle = toolLifecycles.get(callId);\n\t\t\t\t\tif (lifecycle === void 0) throw new SessionFormatError(`tool/result ${callId} has no advertised tool lifecycle`);\n\t\t\t\t\tif (lifecycle.state === \"advertised\" && !isExactToolNotStartedRepair(event, content, error)) throw new SessionFormatError(`tool/result ${callId} is not the exact TOOL_NOT_STARTED repair`);\n\t\t\t\t\ttoolLifecycles.delete(callId);\n\t\t\t\t} else if (openTurn === null) throw new SessionFormatError(\"tool/result replacement is outside an open turn\");\n\t\t\t\tbreak;\n\t\t\tcase \"request/header\":\n\t\t\t\tif (openTurn === null) throw new SessionFormatError(`${event.type} is outside an open turn`);\n\t\t\t\topenStepProvider = data[\"header\"][\"config\"][\"provider\"];\n\t\t\t\tbreak;\n\t\t\tcase \"request/context\":\n\t\t\t\tif (openTurn === null) throw new SessionFormatError(`${event.type} is outside an open turn`);\n\t\t\t\tbreak;\n\t\t\tcase \"tool/code-dispatch-start\":\n\t\t\tcase \"tool/code-dispatch\": {\n\t\t\t\tif (openTurn === null) throw new SessionFormatError(`${event.type} is outside an open turn`);\n\t\t\t\tconst root = data[\"rootCallId\"];\n\t\t\t\tconst parent = data[\"parentCallId\"];\n\t\t\t\tconst child = data[\"subCallId\"];\n\t\t\t\tconst known = ptcRoots.get(child);\n\t\t\t\tif (known !== void 0 && known !== root) throw new SessionFormatError(`${event.type} changes its rootCallId`);\n\t\t\t\tif (parent !== root && ptcRoots.get(parent) !== root) throw new SessionFormatError(`${event.type} parentCallId does not belong to rootCallId`);\n\t\t\t\tif (event.type === \"tool/code-dispatch-start\") {\n\t\t\t\t\tif (ptcStarts.has(child)) throw new SessionFormatError(\"tool/code-dispatch-start repeats subCallId\");\n\t\t\t\t\tptcStarts.set(child, {\n\t\t\t\t\t\troot,\n\t\t\t\t\t\tparent,\n\t\t\t\t\t\tname: data[\"name\"],\n\t\t\t\t\t\targuments: data[\"arguments\"],\n\t\t\t\t\t\tsettled: false\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tconst start = ptcStarts.get(child);\n\t\t\t\t\tif (start === void 0 || start.settled) throw new SessionFormatError(\"tool/code-dispatch has no unique start\");\n\t\t\t\t\tif (start.root !== root || start.parent !== parent || start.name !== data[\"name\"] || !deepEqualJson(start.arguments, data[\"arguments\"])) throw new SessionFormatError(\"tool/code-dispatch does not match its start\");\n\t\t\t\t\tstart.settled = true;\n\t\t\t\t}\n\t\t\t\tptcRoots.set(child, root);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"llm/retry\":\n\t\t\t\tif (openTurn !== data[\"turn\"] || data[\"step\"] !== (openStep ?? nextStep - 1) || openTurn === null) throw new SessionFormatError(\"llm/retry does not match the current turn and step\");\n\t\t\t\tif (data[\"provider\"] !== openStepProvider) throw new SessionFormatError(\"llm/retry provider does not match the open request/header\");\n\t\t\t\tassertRetryChain(retries, data);\n\t\t\t\tretries.push(event);\n\t\t\t\tbreak;\n\t\t\tcase \"llm/retry-started\": {\n\t\t\t\tconst scheduled = retries.find((candidate) => {\n\t\t\t\t\tconst prior = candidate.data;\n\t\t\t\t\treturn prior[\"retryId\"] === data[\"retryId\"] && prior[\"retry\"] === data[\"retry\"];\n\t\t\t\t});\n\t\t\t\tif (scheduled === void 0) throw new SessionFormatError(\"llm/retry-started pairs no prior scheduled attempt\");\n\t\t\t\tconst prior = scheduled.data;\n\t\t\t\tif (prior[\"turn\"] !== data[\"turn\"] || prior[\"step\"] !== data[\"step\"]) throw new SessionFormatError(\"llm/retry-started does not match its scheduled turn and step\");\n\t\t\t\tconst key = `${JSON.stringify(data[\"retryId\"])}\\0${JSON.stringify(data[\"retry\"])}`;\n\t\t\t\tif (retryStarts.has(key)) throw new SessionFormatError(\"llm/retry-started repeats one scheduled attempt\");\n\t\t\t\tretryStarts.add(key);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"session/title\":\n\t\t\tcase \"session/title-llm-request\":\n\t\t\t\tassertTitleSources(artifact.events, event, data, extensions.preservedSourceTitleRequestText !== true);\n\t\t\t\tbreak;\n\t\t\tcase \"command/run\": {\n\t\t\t\tconst id = data[\"commandId\"];\n\t\t\t\tif (commandRuns.has(id)) throw new SessionFormatError(`command/run repeats commandId ${id}`);\n\t\t\t\tcommandRuns.add(id);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"command/done\": {\n\t\t\t\tconst id = data[\"commandId\"];\n\t\t\t\tif (!commandRuns.has(id)) throw new SessionFormatError(`command/done ${id} has no prior command/run`);\n\t\t\t\tconst sourceSeq = data[\"sourceEventSeq\"];\n\t\t\t\tif (sourceSeq !== void 0) {\n\t\t\t\t\tconst source = artifact.events[sourceSeq];\n\t\t\t\t\tif (data[\"kind\"] !== \"success\" || source?.type === \"command/run\" || source?.type === \"command/done\") throw new SessionFormatError(`command/done ${id} has invalid sourceEventSeq`);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"session-log-deepseek/delivery-accepted\":\n\t\t\t\tif ((data[\"sessionFormatVersion\"] ?? 0) === artifact.header.version) {\n\t\t\t\t\tif (!(artifact.header.parentSession !== void 0 && event.seq < artifact.inheritedEventCount) && data[\"sessionId\"] !== artifact.header.id) throw new SessionFormatError(\"current-generation delivery marker names the wrong Session\");\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"compaction/start\":\n\t\t\t\tif (openCompaction !== void 0) throw new SessionFormatError(\"compaction/start overlaps an open compaction\");\n\t\t\t\tassertCompactionTurn(data[\"turn\"], openTurn, \"compaction/start\");\n\t\t\t\topenCompaction = {\n\t\t\t\t\tid: data[\"compactionId\"],\n\t\t\t\t\t...data[\"sourceCommandId\"] === void 0 ? {} : { sourceCommandId: data[\"sourceCommandId\"] },\n\t\t\t\t\tturn: data[\"turn\"],\n\t\t\t\t\tstartSeq: event.seq,\n\t\t\t\t\tsummarized: false\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase \"compaction/summary\":\n\t\t\t\tassertCompactionOwner(openCompaction, data, \"compaction/summary\");\n\t\t\t\tassertCompactionTurn(openCompaction?.turn, openTurn, \"compaction/summary\");\n\t\t\t\tif (openCompaction?.summarized === true) throw new SessionFormatError(\"compaction/summary repeats\");\n\t\t\t\tassertCurrentSurfaceSpan(surface, data, \"compaction/summary\");\n\t\t\t\topenCompaction = {\n\t\t\t\t\t...openCompaction,\n\t\t\t\t\tsummarized: true\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase \"compaction/end\":\n\t\t\t\tassertCompactionOwner(openCompaction, data, \"compaction/end\");\n\t\t\t\tif (data[\"turn\"] !== openCompaction?.turn) throw new SessionFormatError(\"compaction/end changes its owner turn\");\n\t\t\t\tassertCompactionTurn(openCompaction?.turn, openTurn, \"compaction/end\");\n\t\t\t\tif (data[\"error\"] === void 0 && openCompaction?.summarized !== true) throw new SessionFormatError(\"successful compaction/end requires one summary\");\n\t\t\t\topenCompaction = void 0;\n\t\t\t\tbreak;\n\t\t\tcase \"compaction/prune\":\n\t\t\t\tassertCurrentSurfaceSpan(surface, data, \"compaction/prune\");\n\t\t\t\tbreak;\n\t\t\tcase \"user/message\": {\n\t\t\t\tconst source = releasedV0Record(data[\"source\"], `user/message ${event.seq} source`);\n\t\t\t\tif (event[\"surfaceOp\"] !== \"append\" && source[\"kind\"] === \"plugin\" && source[\"plugin\"] === \"compact\") assertCompactionOwner(openCompaction, source, `compaction checkpoint at seq ${event.seq}`);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"session/end-seed\":\n\t\t\t\topenCompaction = void 0;\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\nfunction inheritedOrphanCompactionStarts(events) {\n\tconst stale = /* @__PURE__ */ new Set();\n\tlet open;\n\tfor (const event of events) if (event.type === \"compaction/start\") open = event.seq;\n\telse if (event.type === \"compaction/end\") open = void 0;\n\telse if (event.type === \"session/end-seed\") {\n\t\tif (open !== void 0) stale.add(open);\n\t\topen = void 0;\n\t}\n\treturn stale;\n}\nfunction assertRetryChain(retries, data) {\n\tconst prior = [...retries].reverse().find((candidate) => {\n\t\tconst value = candidate.data;\n\t\treturn value[\"turn\"] === data[\"turn\"] && value[\"step\"] === data[\"step\"] && value[\"provider\"] === data[\"provider\"] && value[\"policyKey\"] === data[\"policyKey\"];\n\t});\n\tconst expected = (prior?.data?.[\"retry\"] ?? 0) + 1;\n\tif (data[\"retry\"] !== expected) throw new SessionFormatError(`llm/retry must use retry ${expected}`);\n\tif (prior !== void 0 && prior.data[\"retryId\"] !== data[\"retryId\"]) throw new SessionFormatError(\"llm/retry must preserve retryId across one policy chain\");\n\tif (prior === void 0 && retries.some((candidate) => candidate.data[\"retryId\"] === data[\"retryId\"])) throw new SessionFormatError(`llm/retry reuses retryId ${JSON.stringify(data[\"retryId\"])} across policy chains`);\n}\nfunction requireOpenStep(event, data, openTurn, openStep) {\n\tif (data[\"turn\"] !== openTurn || data[\"step\"] !== openStep || openTurn === null || openStep === null) throw new SessionFormatError(`${event.type} does not match an open turn and step`);\n}\nfunction assertNoUnresolvedTools(lifecycles, boundary) {\n\tconst unresolved = lifecycles.keys().next().value;\n\tif (unresolved !== void 0) throw new SessionFormatError(`${boundary} leaves unresolved tool call ${unresolved}`);\n}\nfunction isExactToolNotStartedRepair(event, content, error) {\n\tconst message = event.data[\"message\"];\n\tconst callId = message[\"source\"][\"callId\"];\n\tconst block = content[0];\n\tconst repairContent = block?.[\"content\"];\n\treturn error?.[\"name\"] === \"ToolNotStartedError\" && error[\"code\"] === \"TOOL_NOT_STARTED\" && event[\"sourceEventSeqs\"] === void 0 && message[\"id\"] === `interrupted-tool-result-${callId}-${event.seq}` && block?.[\"isError\"] === true && repairContent?.length === 1 && repairContent[0]?.[\"type\"] === \"text\" && repairContent[0][\"text\"] === \"The tool call was interrupted before the Harness recorded it as started. Retry it if it is still needed.\";\n}\nfunction applySurface(surface, event) {\n\tconst operation = event[\"surfaceOp\"];\n\tif (operation === void 0) throw new SessionFormatError(`${event.type} requires a surfaceOp marker`);\n\tif (operation === \"append\") return [...surface, event.seq];\n\tconst replace = operation;\n\tconst start = surface.indexOf(replace.start);\n\tconst end = surface.indexOf(replace.end);\n\tif (start < 0 || end < start) throw new SessionFormatError(`${event.type} replacement range is not on the current surface`);\n\tconst shadowed = surface.slice(start, end + 1);\n\tconst sources = new Set(Array.isArray(event[\"sourceEventSeqs\"]) ? event[\"sourceEventSeqs\"] : []);\n\tif (shadowed.some((seq) => !sources.has(seq))) throw new SessionFormatError(`${event.type} replacement sourceEventSeqs omit a shadowed surface node`);\n\treturn [\n\t\t...surface.slice(0, start),\n\t\tevent.seq,\n\t\t...surface.slice(end + 1)\n\t];\n}\nfunction assertTitleSources(events, event, data, validateFramedText) {\n\tconst seqs = data[\"messageSeqs\"];\n\tif (event.type === \"session/title\") {\n\t\tconst titleSource = releasedV0Record(data[\"source\"], `session/title ${event.seq} source`);\n\t\tif (seqs.length === 0 !== (titleSource[\"kind\"] === \"user\")) throw new SessionFormatError(`session/title ${event.seq} messageSeqs must be empty exactly for a user title`);\n\t}\n\tconst selected = [];\n\tfor (const seq of seqs) {\n\t\tconst source = events[seq];\n\t\tif (source?.type !== \"user/message\") throw new SessionFormatError(`${event.type} ${event.seq} messageSeqs must cite earlier human user/message events`);\n\t\tconst sourceData = releasedV0Record(source.data, `${source.type} ${seq} data`);\n\t\tif (releasedV0Record(sourceData[\"source\"], `${source.type} ${seq} source`)[\"kind\"] !== \"user\") throw new SessionFormatError(`${event.type} ${event.seq} messageSeqs must cite earlier human user/message events`);\n\t\tconst content = sourceData[\"content\"];\n\t\tselected.push({\n\t\t\tseq,\n\t\t\ttext: content.flatMap((block) => block[\"type\"] === \"text\" && typeof block[\"text\"] === \"string\" ? [block[\"text\"]] : []).join(\"\\n\")\n\t\t});\n\t}\n\tif (event.type === \"session/title-llm-request\") {\n\t\tconst messages = data[\"messages\"];\n\t\tconst expected = `Generate the session title from this JSON array of human messages:\\n${JSON.stringify(selected)}`;\n\t\tconst message = messages[0];\n\t\tconst content = message?.[\"content\"];\n\t\tconst source = message === void 0 ? void 0 : releasedV0Record(message[\"source\"], \"session/title-llm-request message source\");\n\t\tif (messages.length !== 1 || message?.[\"role\"] !== \"user\" || content?.length !== 1 || source?.[\"kind\"] !== \"plugin\" || source[\"plugin\"] !== \"dsh-session-title-llm\") throw new SessionFormatError(\"session/title-llm-request messages do not represent messageSeqs\");\n\t\tconst framed = content[0];\n\t\tif (framed === void 0 || framed[\"type\"] !== \"text\" || validateFramedText && framed[\"text\"] !== expected) throw new SessionFormatError(\"session/title-llm-request messages do not represent messageSeqs\");\n\t}\n}\nfunction assertCompactionOwner(open, data, type) {\n\tif (open === void 0 || data[\"compactionId\"] !== open.id || data[\"sourceCommandId\"] !== open.sourceCommandId) throw new SessionFormatError(`${type} has no matching compaction/start`);\n}\nfunction assertCompactionTurn(owner, openTurn, type) {\n\tif (owner === null ? openTurn !== null : owner !== openTurn) throw new SessionFormatError(`${type} does not match the open turn`);\n}\nfunction assertCurrentSurfaceSpan(surface, data, type) {\n\tconst range = data[\"shadowedRange\"];\n\tconst seqs = data[\"shadowedSeqs\"];\n\tconst start = surface.indexOf(range.start);\n\tconst end = surface.indexOf(range.end);\n\tconst expected = start < 0 || end < start ? [] : surface.slice(start, end + 1);\n\tif (expected.length !== seqs.length || expected.some((seq, index) => seq !== seqs[index])) throw new SessionFormatError(`${type} shadowedSeqs do not name an exact current surface span`);\n}\n//#endregion\nexport { RELEASED_V0_EVENT_DISPOSITIONS, RELEASED_V0_EVENT_TYPES, assertReleasedArtifactRelationships, assertReleasedEventPayload, assertReleasedPayloadSemantics, assertReleasedSurfaceMetadata, assertReleasedV1Header, defineReleasedPayloadDisposition, isReleasedAssistantChunkRun, releasedV0SessionFormatCodec, releasedV1SessionFormatCodec, restoreReleasedV1Artifact, sessionFormatV0ToV1 };\n", "import { RELEASED_V0_EVENT_DISPOSITIONS, assertReleasedArtifactRelationships, assertReleasedEventPayload, assertReleasedV1Header, defineReleasedPayloadDisposition, isReleasedAssistantChunkRun, releasedV1SessionFormatCodec } from \"@deepseek-ai/dsh-session-format-v0-to-v1\";\nimport { SessionFormatError, SessionFormatUnsupportedMigrationError, defineSessionFormatMigration, sessionFormatCount, sessionFormatSafeInteger, snapshotSessionFormatJson } from \"@deepseek-ai/dsh-session-format\";\nimport { isAbsolute } from \"node:path\";\nimport { AssistantStreamAccumulator } from \"@deepseek-ai/dsh-llm\";\n//#region lib/types/dispositions.js\nconst retained = Object.fromEntries(Object.entries(RELEASED_V0_EVENT_DISPOSITIONS).filter(([type]) => type !== \"assistant/chunk\" && type !== \"assistant/message\" && type !== \"session-log-deepseek/delivery-accepted\" && type !== \"session/end-seed\"));\n/** Exact top-level event and payload-member inventory frozen for released v2. */\nconst RELEASED_V2_EVENT_DISPOSITIONS = Object.freeze({\n\t...retained,\n\t\"assistant/attempt\": defineReleasedPayloadDisposition([\n\t\t\"turn\",\n\t\t\"step\",\n\t\t\"stream\"\n\t]),\n\t\"assistant/message\": defineReleasedPayloadDisposition([\n\t\t\"turn\",\n\t\t\"step\",\n\t\t\"message\",\n\t\t\"stream\"\n\t], [\"usage\", \"interrupted\"]),\n\t\"session-log-deepseek/delivery-accepted\": defineReleasedPayloadDisposition([\"sessionId\", \"throughSeq\"], [\"sessionFormatVersion\"]),\n\t\"session/end-seed\": defineReleasedPayloadDisposition([], [\"inherited\"])\n});\n/** Stable sorted released-v2 event inventory. */\nconst RELEASED_V2_EVENT_TYPES = Object.freeze(Object.keys(RELEASED_V2_EVENT_DISPOSITIONS).sort((left, right) => left.localeCompare(right, \"en\")));\n//#endregion\n//#region lib/types/validation.js\nconst HEADER_REQUIRED$1 = [\n\t\"version\",\n\t\"id\",\n\t\"createdAt\",\n\t\"isSeeded\",\n\t\"delegationDepth\"\n];\nconst HEADER_OPTIONAL$1 = [\n\t\"cwd\",\n\t\"parentSession\",\n\t\"origin\",\n\t\"agentPreset\"\n];\nconst EVENT_REQUIRED$1 = [\n\t\"type\",\n\t\"seq\",\n\t\"time\",\n\t\"data\"\n];\nconst SURFACE_TYPES = new Set([\n\t\"user/message\",\n\t\"assistant/message\",\n\t\"tool/result\"\n]);\nconst SURFACE_OPTIONAL = [\n\t\"ignorable\",\n\t\"sourceEventSeqs\",\n\t\"surfaceOp\"\n];\nconst LOG_OPTIONAL = [\"ignorable\"];\nconst RELEASED_V2_RELATIONSHIP_EXTENSIONS = {\n\tstepEvents: new Set([\"assistant/attempt\"]),\n\tpreservedSourceTitleRequestText: true\n};\n/**\n* Validate the exact logical header written by released v2.\n* @param header - decoded released-v2 Session header.\n* @throws {SessionFormatError} when the header is not an exact released-v2 value.\n*/\nfunction assertReleasedV2Header(header) {\n\tconst record = releasedV2Record(header, \"format v2 header\");\n\tassertReleasedV2Keys(record, HEADER_REQUIRED$1, HEADER_OPTIONAL$1, \"format v2 header\");\n\tif (record[\"version\"] !== 2) throw new SessionFormatError(\"expected format v2 header\");\n\tif (typeof record[\"id\"] !== \"string\") throw new SessionFormatError(\"format v2 header id must be a string\");\n\tsessionFormatCount(record[\"createdAt\"], \"format v2 header createdAt\");\n\tsessionFormatCount(record[\"delegationDepth\"], \"format v2 header delegationDepth\");\n\tif (typeof record[\"isSeeded\"] !== \"boolean\") throw new SessionFormatError(\"format v2 header isSeeded must be boolean\");\n\tif (record[\"cwd\"] !== void 0 && (typeof record[\"cwd\"] !== \"string\" || !isAbsolute(record[\"cwd\"]))) throw new SessionFormatError(\"format v2 header cwd must be absolute\");\n\tfor (const key of [\"parentSession\", \"agentPreset\"]) if (record[key] !== void 0 && typeof record[key] !== \"string\") throw new SessionFormatError(`format v2 header ${key} must be a string`);\n\tif (record[\"origin\"] !== void 0 && record[\"origin\"] !== \"subagent\") throw new SessionFormatError(\"format v2 header origin must be \\\"subagent\\\"\");\n}\nfunction validateReleasedV2Artifact(artifact, mode, knownEventTypes, relationshipHeaderVersion = artifact.header.version) {\n\tassertReleasedV2Header(artifact.header);\n\tconst cut = sessionFormatCount(artifact.inheritedEventCount, \"format v2 inherited event count\");\n\tif (cut > artifact.events.length) throw new SessionFormatError(\"format v2 inherited event count exceeds its events\");\n\tif (!artifact.header.isSeeded && cut !== 0) throw new SessionFormatError(\"unseeded format v2 Session has inherited events\");\n\tlet lastInheritedMarker;\n\tfor (const [index, event] of artifact.events.entries()) {\n\t\tconst record = releasedV2Record(event, `format v2 event ${index}`);\n\t\tconst type = record[\"type\"];\n\t\tif (typeof type !== \"string\") throw new SessionFormatError(`format v2 event ${index} type must be a string`);\n\t\tconst disposition = RELEASED_V2_EVENT_DISPOSITIONS[type];\n\t\tconst installed = knownEventTypes?.has(type) === true;\n\t\tconst ignorableUnknown = disposition === void 0 && record[\"ignorable\"] === true;\n\t\tif (mode === \"current\" && disposition === void 0 && !installed && !ignorableUnknown) throw new SessionFormatUnsupportedMigrationError(`format v2 contains unknown event type ${JSON.stringify(type)} at seq ${index}`);\n\t\tconst surface = disposition !== void 0 && SURFACE_TYPES.has(type);\n\t\tassertReleasedV2Keys(record, EVENT_REQUIRED$1, mode === \"physical\" || disposition === void 0 ? SURFACE_OPTIONAL : surface ? SURFACE_OPTIONAL : LOG_OPTIONAL, `format v2 event ${index}`);\n\t\tif (record[\"seq\"] !== index) throw new SessionFormatError(`format v2 event ${index} is not dense`);\n\t\tsessionFormatSafeInteger(record[\"time\"], `format v2 event ${index} time`);\n\t\tif (record[\"ignorable\"] !== void 0 && record[\"ignorable\"] !== true) throw new SessionFormatError(`format v2 event ${index} ignorable must be true when present`);\n\t\tif (type === \"session/end-seed\") {\n\t\t\tif (releasedV2Record(event.data, `session/end-seed ${index} data`)[\"inherited\"] === true) lastInheritedMarker = index;\n\t\t}\n\t}\n\tif (artifact.header.isSeeded && lastInheritedMarker !== cut) throw new SessionFormatError(\"format v2 seeded header disagrees with its last inherited end-seed marker\");\n\tif (!artifact.header.isSeeded && lastInheritedMarker !== void 0) throw new SessionFormatError(\"format v2 unseeded Session contains an inherited end-seed marker\");\n\tif (mode === \"current\") assertReleasedArtifactRelationships({\n\t\t...artifact,\n\t\theader: {\n\t\t\t...artifact.header,\n\t\t\tversion: relationshipHeaderVersion\n\t\t}\n\t}, RELEASED_V2_RELATIONSHIP_EXTENSIONS);\n}\n/**\n* Require one released-v2 value to be a JSON object.\n* @param value - value to narrow.\n* @param label - diagnostic subject.\n* @returns the narrowed object.\n*/\nfunction releasedV2Record(value, label) {\n\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) throw new SessionFormatError(`${label} must be an object`);\n\treturn value;\n}\n/**\n* Require one released-v2 object to contain exactly the admitted keys.\n* @param value - object to inspect.\n* @param required - keys that must be present.\n* @param optional - additional keys that may be present.\n* @param label - diagnostic subject.\n*/\nfunction assertReleasedV2Keys(value, required, optional, label) {\n\tconst allowed = new Set([...required, ...optional]);\n\tconst missing = required.find((key) => !Object.hasOwn(value, key));\n\tif (missing !== void 0) throw new SessionFormatError(`${label} lacks required field ${missing}`);\n\tconst unexpected = Object.keys(value).find((key) => !allowed.has(key));\n\tif (unexpected !== void 0) throw new SessionFormatError(`${label} has unexpected field ${unexpected}`);\n}\n/**\n* Restore and validate one decoded released-v2 artifact.\n* @param artifact - detached vocabulary-restored artifact.\n* @param knownEventTypes - event types understood by the installed current Session package.\n* @param relationshipHeaderVersion - logical generation whose version-sensitive relationships are checked.\n* @returns the same validated artifact.\n*/\nfunction restoreReleasedV2Artifact(artifact, knownEventTypes, relationshipHeaderVersion = artifact.header.version) {\n\tvalidateReleasedV2Artifact(artifact, \"current\", knownEventTypes, relationshipHeaderVersion);\n\treturn artifact;\n}\n//#endregion\n//#region lib/types/codec.js\nconst HEADER_REQUIRED = [\n\t\"type\",\n\t\"version\",\n\t\"id\",\n\t\"createdAt\",\n\t\"isSeeded\",\n\t\"delegationDepth\"\n];\nconst HEADER_OPTIONAL = [\n\t\"cwd\",\n\t\"parentSession\",\n\t\"origin\",\n\t\"agentPreset\"\n];\nconst EVENT_REQUIRED = [\n\t\"type\",\n\t\"seq\",\n\t\"time\",\n\t\"data\"\n];\nconst EVENT_OPTIONAL = [\n\t\"ignorable\",\n\t\"sourceEventSeqs\",\n\t\"surfaceOp\"\n];\nconst EVENT_KEYS = new Set([...EVENT_REQUIRED, ...EVENT_OPTIONAL]);\n/** Frozen physical JSON codec for released v2. */\nconst releasedV2SessionFormatCodec = Object.freeze({\n\tversion: 2,\n\tdecodeHeader(value) {\n\t\treturn decodePhysicalHeader(value);\n\t},\n\tcreateDecoder(headerValue, recovery) {\n\t\treturn createDecoder(headerValue, recovery);\n\t},\n\tencodeHeader(header, inheritedEventCount) {\n\t\treturn encodeHeader(header, inheritedEventCount);\n\t},\n\tencodeEvent(event) {\n\t\treturn encodeSourceEventRanges(event);\n\t}\n});\nfunction decodePhysicalHeader(value) {\n\tconst record = jsonRecord(snapshotSessionFormatJson(value, \"released v2 physical header\"), \"released v2 physical header\");\n\texactKeys(record, HEADER_REQUIRED, HEADER_OPTIONAL, \"released v2 physical header\");\n\tif (record[\"type\"] !== \"session\" || record[\"version\"] !== 2) throw new SessionFormatError(\"expected released v2 physical Session header\");\n\tif (typeof record[\"id\"] !== \"string\") throw new SessionFormatError(\"released v2 header id must be a string\");\n\tconst createdAt = sessionFormatCount(record[\"createdAt\"], \"released v2 header createdAt\");\n\tconst delegationDepth = sessionFormatCount(record[\"delegationDepth\"], \"released v2 header delegationDepth\");\n\tif (typeof record[\"isSeeded\"] !== \"boolean\") throw new SessionFormatError(\"released v2 header isSeeded must be boolean\");\n\tfor (const key of [\n\t\t\"cwd\",\n\t\t\"parentSession\",\n\t\t\"agentPreset\"\n\t]) if (record[key] !== void 0 && typeof record[key] !== \"string\") throw new SessionFormatError(`released v2 header ${key} must be a string`);\n\tif (record[\"origin\"] !== void 0 && record[\"origin\"] !== \"subagent\") throw new SessionFormatError(\"released v2 header origin must be \\\"subagent\\\"\");\n\tconst header = snapshotSessionFormatJson({\n\t\tversion: 2,\n\t\tid: record[\"id\"],\n\t\tcreatedAt,\n\t\t...record[\"cwd\"] === void 0 ? {} : { cwd: record[\"cwd\"] },\n\t\t...record[\"parentSession\"] === void 0 ? {} : { parentSession: record[\"parentSession\"] },\n\t\tisSeeded: record[\"isSeeded\"],\n\t\t...record[\"origin\"] === void 0 ? {} : { origin: record[\"origin\"] },\n\t\tdelegationDepth,\n\t\t...record[\"agentPreset\"] === void 0 ? {} : { agentPreset: record[\"agentPreset\"] }\n\t}, \"released v2 logical header\");\n\tassertReleasedV2Header(header);\n\treturn header;\n}\nfunction createDecoder(headerValue, recovery) {\n\tconst header = decodePhysicalHeader(headerValue);\n\tlet rowIndex = 0;\n\tlet eventCount = 0;\n\tlet inheritedEventCount;\n\tlet issue;\n\treturn {\n\t\theader,\n\t\tdecodeRow(value, context) {\n\t\t\tconst currentRow = rowIndex;\n\t\t\trowIndex += 1;\n\t\t\tlet event;\n\t\t\ttry {\n\t\t\t\tevent = decodeEvent(value, currentRow);\n\t\t\t} catch (error) {\n\t\t\t\tconst current = error instanceof SessionFormatError ? error : new SessionFormatError(`released v2 row ${currentRow} is malformed`, { cause: error });\n\t\t\t\tif (recovery === \"strict\") throw current;\n\t\t\t\tissue ??= current;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (issue !== void 0) {\n\t\t\t\tif (event.type === \"turn/end\") throw issue;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (event.seq !== eventCount) {\n\t\t\t\tconst gap = new SessionFormatError(`released v2 row ${currentRow} has seq gap (expected ${eventCount}, got ${event.seq})`);\n\t\t\t\tif (recovery === \"strict\") throw gap;\n\t\t\t\tissue = gap;\n\t\t\t\tif (event.type === \"turn/end\") throw issue;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\teventCount += 1;\n\t\t\tif (event.type === \"session/end-seed\") {\n\t\t\t\tif (jsonRecord(event.data, `session/end-seed ${event.seq} data`)[\"inherited\"] === true) inheritedEventCount = event.seq;\n\t\t\t}\n\t\t\tcontext.emitEvent(event);\n\t\t},\n\t\tfinish(_context) {\n\t\t\tif (header.isSeeded && inheritedEventCount === void 0) throw new SessionFormatError(\"released v2 seeded Session lacks an inherited end-seed marker\");\n\t\t\tif (!header.isSeeded && inheritedEventCount !== void 0) throw new SessionFormatError(\"released v2 unseeded Session contains an inherited end-seed marker\");\n\t\t\treturn inheritedEventCount ?? 0;\n\t\t}\n\t};\n}\nfunction decodeEvent(value, rowIndex) {\n\tconst record = jsonRecord(value, `released v2 row ${rowIndex}`);\n\tconst missing = EVENT_REQUIRED.find((key) => !Object.hasOwn(record, key));\n\tif (missing !== void 0) throw new SessionFormatError(`released v2 row ${rowIndex} lacks required field ${missing}`);\n\tconst unexpected = Object.keys(record).find((key) => !EVENT_KEYS.has(key));\n\tif (unexpected !== void 0) throw new SessionFormatError(`released v2 row ${rowIndex} has unexpected field ${unexpected}`);\n\tif (typeof record[\"type\"] !== \"string\") throw new SessionFormatError(`released v2 row ${rowIndex} type must be a string`);\n\tsessionFormatSafeInteger(record[\"time\"], `released v2 row ${rowIndex} time`);\n\tif (record[\"ignorable\"] !== void 0 && record[\"ignorable\"] !== true) throw new SessionFormatError(`released v2 row ${rowIndex} ignorable must be true when present`);\n\tif (record[\"sourceEventSeqs\"] === void 0) return record;\n\tconst seq = sessionFormatCount(record[\"seq\"], `released v2 row ${rowIndex} seq`);\n\treturn {\n\t\t...record,\n\t\tsourceEventSeqs: decodeSeqRanges(record[\"sourceEventSeqs\"], seq)\n\t};\n}\nfunction encodeHeader(header, inheritedEventCount) {\n\tassertReleasedV2Header(header);\n\tconst cut = sessionFormatCount(inheritedEventCount, \"format v2 inherited event count\");\n\tif (!header.isSeeded && cut !== 0) throw new SessionFormatError(\"unseeded format v2 Session has inherited events\");\n\treturn {\n\t\ttype: \"session\",\n\t\tversion: 2,\n\t\tid: header.id,\n\t\tcreatedAt: header.createdAt,\n\t\t...header.cwd === void 0 ? {} : { cwd: header.cwd },\n\t\t...header.parentSession === void 0 ? {} : { parentSession: header.parentSession },\n\t\tisSeeded: header.isSeeded,\n\t\t...header.origin === void 0 ? {} : { origin: header.origin },\n\t\tdelegationDepth: header.delegationDepth,\n\t\t...header.agentPreset === void 0 ? {} : { agentPreset: header.agentPreset }\n\t};\n}\nfunction encodeSourceEventRanges(event) {\n\tif (event.sourceEventSeqs === void 0) return event;\n\treturn {\n\t\t...event,\n\t\tsourceEventSeqs: encodeSeqRanges(event.sourceEventSeqs)\n\t};\n}\nfunction decodeSeqRanges(value, maxEntries) {\n\tif (!Array.isArray(value)) throw new SessionFormatError(\"sourceEventSeqs must be an array\");\n\tconst output = [];\n\tlet hasRange = false;\n\tfor (const entry of value) {\n\t\tif (!Array.isArray(entry)) {\n\t\t\toutput.push(sessionFormatCount(entry, \"sourceEventSeqs member\"));\n\t\t\tcontinue;\n\t\t}\n\t\tif (entry.length !== 2) throw new SessionFormatError(\"sourceEventSeqs range must be a [start, end] pair\");\n\t\tconst start = sessionFormatCount(entry[0], \"sourceEventSeqs range start\");\n\t\tconst end = sessionFormatCount(entry[1], \"sourceEventSeqs range end\");\n\t\tif (start > end || end >= maxEntries || end - start + 1 > maxEntries - output.length) throw new SessionFormatError(\"sourceEventSeqs range exceeds its event seq\");\n\t\tfor (let current = start; current <= end; current += 1) output.push(current);\n\t\thasRange = true;\n\t}\n\tconst seen = /* @__PURE__ */ new Set();\n\tfor (const source of output) {\n\t\tif (source >= maxEntries || seen.has(source)) throw new SessionFormatError(\"sourceEventSeqs ranges must contain unique earlier seqs\");\n\t\tseen.add(source);\n\t}\n\tif (hasRange && output.some((source, index) => index > 0 && source <= output[index - 1])) throw new SessionFormatError(\"sourceEventSeqs ranges must be strictly increasing\");\n\treturn output;\n}\nfunction encodeSeqRanges(values) {\n\tif (values.some((value, index) => index > 0 && value <= values[index - 1])) return [...values];\n\tconst output = [];\n\tfor (let index = 0; index < values.length;) {\n\t\tconst start = values[index];\n\t\tlet end = start;\n\t\twhile (index + 1 < values.length && values[index + 1] === end + 1) {\n\t\t\tindex += 1;\n\t\t\tend += 1;\n\t\t}\n\t\toutput.push(end - start >= 2 ? [start, end] : start);\n\t\tif (end - start === 1) output.push(end);\n\t\tindex += 1;\n\t}\n\treturn output;\n}\nfunction jsonRecord(value, label) {\n\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) throw new SessionFormatError(`${label} must be an object`);\n\treturn value;\n}\nfunction exactKeys(record, required, optional, label) {\n\tconst allowed = new Set([...required, ...optional]);\n\tconst missing = required.find((key) => !Object.hasOwn(record, key));\n\tif (missing !== void 0) throw new SessionFormatError(`${label} lacks ${missing}`);\n\tconst unexpected = Object.keys(record).find((key) => !allowed.has(key));\n\tif (unexpected !== void 0) throw new SessionFormatError(`${label} has unexpected field ${unexpected}`);\n}\n//#endregion\n//#region lib/types/migration.js\nconst CHUNK_EVENT_REQUIRED = [\n\t\"type\",\n\t\"seq\",\n\t\"time\",\n\t\"data\"\n];\nconst CHUNK_EVENT_OPTIONAL = [\n\t\"ignorable\",\n\t\"sourceEventSeqs\",\n\t\"surfaceOp\"\n];\nconst CHUNK_EVENT_KEYS = new Set([...CHUNK_EVENT_REQUIRED, ...CHUNK_EVENT_OPTIONAL]);\n/** Adjacent migration that embeds released-v1 top-level Assistant chunks into v2 attempt events. */\nconst sessionFormatV1ToV2 = defineSessionFormatMigration({\n\tname: \"@deepseek-ai/dsh-session-format-v1-to-v2\",\n\tfromVersion: 1,\n\ttoVersion: 2,\n\tmigrateHeader(header) {\n\t\tassertReleasedV1Header(header);\n\t\treturn {\n\t\t\t...header,\n\t\t\tversion: 2\n\t\t};\n\t},\n\tcreateStage(input) {\n\t\treturn input.sourceKind === \"decoded\" ? new DecodedReleasedV1ToV2Stage(input) : new TransformedReleasedV1ToV2Stage(input);\n\t},\n\tvalidateTargetHeader: assertReleasedV2Header\n});\nvar TransformedReleasedV1ToV2Stage = class {\n\tstate;\n\tconstructor(input) {\n\t\tassertReleasedV1Header(input.sourceHeader);\n\t\tthis.state = {\n\t\t\tsourceHeader: input.sourceHeader,\n\t\t\tsourceCut: sessionFormatCount(input.sourceInheritedEventCount, \"format v1 inherited event count\"),\n\t\t\tmapping: /* @__PURE__ */ new Map(),\n\t\t\tlegacyTurns: legacyTurnState(),\n\t\t\tpending: void 0,\n\t\t\ttargetSeq: 0,\n\t\t\ttargetCut: input.sourceHeader.isSeeded ? void 0 : 0,\n\t\t\tlastTime: input.sourceHeader.createdAt\n\t\t};\n\t}\n\ttransformEvent(event, context) {\n\t\ttransformReleasedEvent(this.state, event, context);\n\t}\n\ttransformRun(run, context) {\n\t\ttransformReleasedRun(this.state, run, context);\n\t}\n\tfinish(context) {\n\t\treturn finishMigration(this.state, context);\n\t}\n};\nvar DecodedReleasedV1ToV2Stage = class extends TransformedReleasedV1ToV2Stage {\n\ttransformEvent(event, context) {\n\t\tif (event.type !== \"assistant/chunk\" && RELEASED_V0_EVENT_DISPOSITIONS[event.type] !== void 0) assertReleasedEventPayload(event, 1);\n\t\tsuper.transformEvent(event, context);\n\t}\n};\nfunction transformReleasedEvent(state, event, context) {\n\tif (event.type === \"assistant/chunk\") assertChunkEnvelope(event);\n\tif (RELEASED_V0_EVENT_DISPOSITIONS[event.type] === void 0) throw refusal(`format v1 contains unknown event type ${JSON.stringify(event.type)} at seq ${event.seq}`);\n\tconst interrupted = legacyInterruptedTurn(state.legacyTurns, event);\n\tif (event.type === \"turn/start\" && state.legacyTurns.openTurn !== null && interrupted === void 0) throw refusal(`turn/start ${JSON.stringify(record(event.data)[\"turn\"])} does not close the prior turn`);\n\tassertSourceDeliveryMarker(state, event);\n\tobserveLegacyTurn(state.legacyTurns, event);\n\tstate.lastTime = event.time;\n\tif (interrupted !== void 0) {\n\t\tfinishAttempt(state, context);\n\t\temitGenerated(state, event.seq, interrupted, context);\n\t}\n\tconst legacyGoal = splitLegacyGoalChange(event);\n\tif (legacyGoal !== void 0) {\n\t\temitGenerated(state, event.seq, legacyGoal.change, context);\n\t\temitSource(state, legacyGoal.message, context);\n\t\treturn;\n\t}\n\tif (event.type === \"assistant/chunk\") {\n\t\ttransformChunk(state, event, context);\n\t\treturn;\n\t}\n\tif (event.type === \"assistant/message\") {\n\t\ttransformMessage(state, event, context);\n\t\treturn;\n\t}\n\tif (closesAttempt(event)) {\n\t\tfinishAttempt(state, context);\n\t\temitSource(state, event, context);\n\t\treturn;\n\t}\n\tif (state.pending !== void 0) {\n\t\tstate.pending.afterLastChunk.push(event);\n\t\treturn;\n\t}\n\temitSource(state, event, context);\n}\nfunction assertChunkEnvelope(event) {\n\tconst unexpected = Object.keys(event).find((key) => !CHUNK_EVENT_KEYS.has(key));\n\tif (unexpected !== void 0) throw refusal(`assistant/chunk ${event.seq} has unexpected member ${unexpected}`);\n\tconst missing = CHUNK_EVENT_REQUIRED.find((key) => !Object.hasOwn(event, key));\n\tif (missing !== void 0) throw refusal(`assistant/chunk ${event.seq} lacks required member ${missing}`);\n\tif (event.ignorable !== void 0 && event.ignorable !== true) throw refusal(`assistant/chunk ${event.seq} ignorable must be true when present`);\n}\nfunction assertSourceDeliveryMarker(state, event) {\n\tif (event.type !== \"session-log-deepseek/delivery-accepted\") return;\n\tconst data = record(event.data);\n\tconst inherited = state.sourceHeader.parentSession !== void 0 && event.seq < state.sourceCut;\n\tif (data[\"sessionFormatVersion\"] === 1 && !inherited && data[\"sessionId\"] !== state.sourceHeader.id) throw refusal(\"current-generation delivery marker names the wrong Session\");\n}\nfunction transformReleasedRun(state, run, context) {\n\tif (!isReleasedAssistantChunkRun(run)) {\n\t\tfor (const event of run.expand()) transformReleasedEvent(state, event, context);\n\t\treturn;\n\t}\n\tstate.legacyTurns.previous = void 0;\n\tstate.lastTime = run.lastTime;\n\tif (state.pending !== void 0 && (state.pending.group.terminal || state.pending.group.turn !== run.turn || state.pending.group.step !== run.step)) finishAttempt(state, context);\n\telse if (state.pending !== void 0) flushBuffered(state, state.pending, context);\n\tstate.pending ??= {\n\t\tgroup: attemptGroup(run.turn, run.step),\n\t\tafterLastChunk: []\n\t};\n\tassertAttemptRange(state, run.firstSeq, run.lastSeq);\n\tflushAccumulator(state.pending.group);\n\tappendStreamRecord(state.pending.group, run.stream, run.lastTime);\n\trecordChunkSpan(state.pending.group, run.firstSeq, run.eventCount, run.lastTime);\n}\nfunction finishMigration(state, context) {\n\tfinishAttempt(state, context);\n\tif (state.sourceHeader.isSeeded && state.targetCut === void 0) {\n\t\tstate.targetCut = state.targetSeq;\n\t\tcontext.emitEvent({\n\t\t\ttype: \"session/end-seed\",\n\t\t\tseq: state.targetSeq,\n\t\t\ttime: state.lastTime,\n\t\t\tdata: { inherited: true }\n\t\t});\n\t\tstate.targetSeq += 1;\n\t}\n\treturn state.targetCut;\n}\nfunction transformChunk(state, event, context) {\n\tconst data = record(event.data);\n\tconst turn = coordinate(data[\"turn\"]);\n\tconst step = coordinate(data[\"step\"]);\n\tconst chunk = record(data[\"chunk\"]);\n\tif (state.pending !== void 0 && (state.pending.group.terminal || state.pending.group.turn !== turn || state.pending.group.step !== step)) finishAttempt(state, context);\n\telse if (state.pending !== void 0) flushBuffered(state, state.pending, context);\n\tstate.pending ??= {\n\t\tgroup: attemptGroup(turn, step),\n\t\tafterLastChunk: []\n\t};\n\tassertAttemptCut(state, state.pending.group, event.seq);\n\tstate.pending.group.accumulator ??= new AssistantStreamAccumulator();\n\tstate.pending.group.accumulator.push({\n\t\ttime: event.time,\n\t\tchunk: data[\"chunk\"]\n\t});\n\trecordChunkSpan(state.pending.group, event.seq, 1, event.time);\n\tif (chunk[\"type\"] === \"finish\") state.pending.group.terminal = true;\n}\nfunction transformMessage(state, event, context) {\n\tconst data = record(event.data);\n\tconst turn = coordinate(data[\"turn\"]);\n\tconst step = coordinate(data[\"step\"]);\n\tconst sources = event.sourceEventSeqs;\n\tconst pending = state.pending;\n\tif (pending !== void 0 && (pending.group.turn !== turn || pending.group.step !== step)) {\n\t\tfinishAttempt(state, context);\n\t\temitSource(state, messageEvent(event, attemptGroup(turn, step)), context);\n\t\treturn;\n\t}\n\tif (!Array.isArray(sources)) {\n\t\tif (pending !== void 0) throw refusal(`assistant/message ${event.seq} does not cite its complete v1 chunk attempt`);\n\t\temitSource(state, messageEvent(event, attemptGroup(turn, step)), context);\n\t\treturn;\n\t}\n\tif (sources.length === 0) {\n\t\tfinishAttempt(state, context);\n\t\temitSource(state, messageEvent(event, attemptGroup(turn, step)), context);\n\t\treturn;\n\t}\n\tif (pending === void 0 || !matchesChunkSources(pending.group, sources)) throw refusal(`assistant/message ${event.seq} chunk references are not one complete ordered attempt`);\n\tassertAttemptCut(state, pending.group, event.seq);\n\tpending.group.terminal = true;\n\tflushBuffered(state, pending, context);\n\temitSource(state, messageEvent(event, pending.group), context);\n\tstate.pending = void 0;\n}\nfunction finishAttempt(state, context) {\n\tconst pending = state.pending;\n\tif (pending === void 0) return;\n\temitGenerated(state, pending.group.lastChunkSeq, attemptEvent(pending.group), context);\n\tflushBuffered(state, pending, context);\n\tstate.pending = void 0;\n}\nfunction flushBuffered(state, pending, context) {\n\tfor (const event of pending.afterLastChunk) emitSource(state, event, context);\n\tpending.afterLastChunk.length = 0;\n}\nfunction emitSource(state, event, context) {\n\tlet source = event;\n\tif (state.sourceHeader.isSeeded && event.seq === state.sourceCut && event.type === \"session/end-seed\") source = {\n\t\t...event,\n\t\tdata: { inherited: true }\n\t};\n\tensureTargetCut(state, event.seq, event.time, source.type, context);\n\tstate.mapping.set(event.seq, state.targetSeq);\n\tcontext.emitEvent(remapReferences(source, state.targetSeq, state.mapping));\n\tstate.targetSeq += 1;\n}\nfunction emitGenerated(state, origin, event, context) {\n\tensureTargetCut(state, origin, event.time, event.type, context);\n\tcontext.emitEvent(remapReferences(event, state.targetSeq, state.mapping));\n\tstate.targetSeq += 1;\n}\nfunction ensureTargetCut(state, origin, time, type, context) {\n\tif (!state.sourceHeader.isSeeded || state.targetCut !== void 0 || origin < state.sourceCut) return;\n\tstate.targetCut = state.targetSeq;\n\tif (origin === state.sourceCut && type === \"session/end-seed\") return;\n\tcontext.emitEvent({\n\t\ttype: \"session/end-seed\",\n\t\tseq: state.targetSeq,\n\t\ttime,\n\t\tdata: { inherited: true }\n\t});\n\tstate.targetSeq += 1;\n}\nfunction assertAttemptCut(state, group, member) {\n\tif ((group.spans[0]?.firstSeq ?? member) < state.sourceCut !== member < state.sourceCut) throw refusal(`inherited Session cut ${state.sourceCut} splits one Assistant attempt`);\n}\nfunction assertAttemptRange(state, first, last) {\n\tif (first < state.sourceCut !== last < state.sourceCut) throw refusal(`inherited Session cut ${state.sourceCut} splits one Assistant attempt`);\n}\nfunction legacyTurnState() {\n\treturn {\n\t\topenTurn: null,\n\t\topenStep: null,\n\t\tprevious: void 0\n\t};\n}\nfunction legacyInterruptedTurn(state, event) {\n\tif (event.type !== \"turn/start\" || state.openTurn === null || state.openStep !== null || coordinate(record(event.data)[\"turn\"]) !== state.openTurn + 1 || state.previous?.type !== \"agent/inbox/spliced\") return void 0;\n\tconst splice = record(state.previous.data);\n\tif (splice[\"target\"] !== \"next-turn\" || !Array.isArray(splice[\"inserted\"]) || splice[\"inserted\"].length === 0) return;\n\treturn {\n\t\ttype: \"turn/end\",\n\t\tseq: event.seq,\n\t\ttime: event.time,\n\t\tdata: {\n\t\t\tturn: state.openTurn,\n\t\t\treason: { kind: \"interrupted\" }\n\t\t}\n\t};\n}\nfunction observeLegacyTurn(state, event) {\n\tconst data = record(event.data);\n\tif (event.type === \"turn/start\") {\n\t\tstate.openTurn = coordinate(data[\"turn\"]);\n\t\tstate.openStep = null;\n\t} else if (event.type === \"turn/end\") {\n\t\tstate.openTurn = null;\n\t\tstate.openStep = null;\n\t} else if (event.type === \"step/start\") state.openStep = coordinate(data[\"step\"]);\n\telse if (event.type === \"step/end\") state.openStep = null;\n\tstate.previous = event;\n}\nfunction splitLegacyGoalChange(event) {\n\tif (event.type !== \"user/message\") return void 0;\n\tconst data = record(event.data);\n\tconst source = record(data[\"source\"]);\n\tif (source[\"kind\"] !== \"goal\" || source[\"change\"] === void 0) return void 0;\n\treturn {\n\t\tchange: {\n\t\t\ttype: \"goal/change\",\n\t\t\tseq: event.seq,\n\t\t\ttime: event.time,\n\t\t\tdata: source[\"change\"]\n\t\t},\n\t\tmessage: {\n\t\t\t...event,\n\t\t\tdata: {\n\t\t\t\t...data,\n\t\t\t\tsource: {\n\t\t\t\t\tkind: \"plugin\",\n\t\t\t\t\tplugin: \"goal\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\nfunction closesAttempt(event) {\n\treturn event.type === \"turn/end\" || event.type === \"step/end\" || event.type === \"llm/retry\" || event.type === \"llm/retry-started\";\n}\nfunction attemptGroup(turn, step) {\n\treturn {\n\t\tturn,\n\t\tstep,\n\t\tspans: [],\n\t\tstream: [],\n\t\tchunkCount: 0,\n\t\tterminal: false\n\t};\n}\nfunction recordChunkSpan(group, firstSeq, eventCount, lastTime) {\n\tconst previous = group.spans.at(-1);\n\tif (previous !== void 0 && previous.firstSeq + previous.eventCount === firstSeq) previous.eventCount += eventCount;\n\telse group.spans.push({\n\t\tfirstSeq,\n\t\teventCount\n\t});\n\tgroup.chunkCount += eventCount;\n\tgroup.lastChunkSeq = firstSeq + eventCount - 1;\n\tgroup.lastChunkTime = lastTime;\n}\nfunction matchesChunkSources(group, sources) {\n\tif (sources.length !== group.chunkCount) return false;\n\tlet index = 0;\n\tfor (const span of group.spans) for (let offset = 0; offset < span.eventCount; offset += 1) {\n\t\tif (sources[index] !== span.firstSeq + offset) return false;\n\t\tindex += 1;\n\t}\n\treturn true;\n}\nfunction recordLastTime(record) {\n\tif (record.type === \"chunk\") return record.time;\n\treturn record.dt.reduce((time, gap) => time + gap, record.time0);\n}\nfunction mutableRecord(record) {\n\tif (record.type === \"chunk\") return record;\n\tif (record.type === \"tool-call-chunks\") return {\n\t\t...record,\n\t\tdt: [...record.dt],\n\t\targs: [...record.args]\n\t};\n\treturn {\n\t\t...record,\n\t\tdt: [...record.dt],\n\t\ttexts: [...record.texts]\n\t};\n}\nfunction appendStreamRecord(group, source, lastTime, owned = true) {\n\tconst previous = group.stream.at(-1);\n\tif (previous === void 0 || source.type === \"chunk\" || previous.record.type !== source.type) {\n\t\tgroup.stream.push({\n\t\t\trecord: owned ? source : mutableRecord(source),\n\t\t\tlastTime\n\t\t});\n\t\treturn;\n\t}\n\tconst gap = source.time0 - previous.lastTime;\n\tif (previous.record.index !== source.index || !Number.isSafeInteger(gap)) {\n\t\tgroup.stream.push({\n\t\t\trecord: owned ? source : mutableRecord(source),\n\t\t\tlastTime\n\t\t});\n\t\treturn;\n\t}\n\tif (source.type === \"tool-call-chunks\") {\n\t\tconst target = previous.record;\n\t\tif (target.id !== source.id || target.name !== source.name) {\n\t\t\tgroup.stream.push({\n\t\t\t\trecord: owned ? source : mutableRecord(source),\n\t\t\t\tlastTime\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\ttarget.dt.push(gap);\n\t\tfor (const value of source.dt) target.dt.push(value);\n\t\tfor (const value of source.args) target.args.push(value);\n\t} else {\n\t\tconst target = previous.record;\n\t\ttarget.dt.push(gap);\n\t\tfor (const value of source.dt) target.dt.push(value);\n\t\tfor (const value of source.texts) target.texts.push(value);\n\t}\n\tprevious.lastTime = lastTime;\n}\nfunction flushAccumulator(group) {\n\tconst accumulator = group.accumulator;\n\tif (accumulator === void 0) return;\n\tfor (const record of accumulator.snapshot()) appendStreamRecord(group, record, recordLastTime(record), false);\n\tdelete group.accumulator;\n}\nfunction streamOf(group) {\n\tflushAccumulator(group);\n\treturn group.stream.map(({ record }) => record);\n}\nfunction messageEvent(source, group) {\n\tconst data = record(source.data);\n\tconst { sourceEventSeqs: _sourceEventSeqs, ...event } = source;\n\treturn {\n\t\t...event,\n\t\tdata: {\n\t\t\t...data,\n\t\t\tstream: streamOf(group)\n\t\t}\n\t};\n}\nfunction attemptEvent(group) {\n\treturn {\n\t\ttype: \"assistant/attempt\",\n\t\tseq: group.lastChunkSeq,\n\t\ttime: group.lastChunkTime,\n\t\tdata: {\n\t\t\tturn: group.turn,\n\t\t\tstep: group.step,\n\t\t\tstream: streamOf(group)\n\t\t}\n\t};\n}\nfunction remapReferences(source, targetSeq, mapping) {\n\tconst { sourceEventSeqs, surfaceOp, ...event } = source;\n\tconst sources = sourceEventSeqs === void 0 ? {} : { sourceEventSeqs: mapList(numberArray(sourceEventSeqs), mapping, `${source.type} ${source.seq} sources`) };\n\tlet operation = surfaceOp;\n\tif (surfaceOp !== void 0 && surfaceOp !== \"append\") {\n\t\tconst replacement = record(surfaceOp);\n\t\toperation = {\n\t\t\top: \"replace\",\n\t\t\tstart: mapOne(coordinate(replacement[\"start\"]), mapping, `${source.type} ${source.seq} surface start`),\n\t\t\tend: mapOne(coordinate(replacement[\"end\"]), mapping, `${source.type} ${source.seq} surface end`)\n\t\t};\n\t}\n\treturn {\n\t\t...event,\n\t\tseq: targetSeq,\n\t\tdata: remapPayloadReferences(source, mapping),\n\t\t...sources,\n\t\t...operation === void 0 ? {} : { surfaceOp: operation }\n\t};\n}\nfunction remapPayloadReferences(event, mapping) {\n\tconst data = record(event.data);\n\tswitch (event.type) {\n\t\tcase \"command/done\": return data[\"sourceEventSeq\"] === void 0 ? data : {\n\t\t\t...data,\n\t\t\tsourceEventSeq: mapOne(coordinate(data[\"sourceEventSeq\"]), mapping, `command/done ${event.seq} sourceEventSeq`)\n\t\t};\n\t\tcase \"compaction/prune\":\n\t\tcase \"compaction/summary\": {\n\t\t\tconst range = record(data[\"shadowedRange\"]);\n\t\t\treturn {\n\t\t\t\t...data,\n\t\t\t\tshadowedRange: {\n\t\t\t\t\tstart: mapOne(coordinate(range[\"start\"]), mapping, `${event.type} ${event.seq} shadowedRange start`),\n\t\t\t\t\tend: mapOne(coordinate(range[\"end\"]), mapping, `${event.type} ${event.seq} shadowedRange end`)\n\t\t\t\t},\n\t\t\t\tshadowedSeqs: mapList(numberArray(data[\"shadowedSeqs\"]), mapping, `${event.type} ${event.seq} shadowedSeqs`)\n\t\t\t};\n\t\t}\n\t\tcase \"session/title\":\n\t\tcase \"session/title-llm-request\": return {\n\t\t\t...data,\n\t\t\tmessageSeqs: mapList(numberArray(data[\"messageSeqs\"]), mapping, `${event.type} ${event.seq} messageSeqs`)\n\t\t};\n\t\tdefault: return data;\n\t}\n}\nfunction mapList(values, mapping, label) {\n\treturn values.map((value) => mapOne(value, mapping, label));\n}\nfunction mapOne(value, mapping, label) {\n\tconst mapped = mapping.get(value);\n\tif (mapped === void 0) throw refusal(`${label} targets consumed assistant/chunk ${value}`);\n\treturn mapped;\n}\nfunction record(value) {\n\treturn value;\n}\nfunction numberArray(value) {\n\treturn value;\n}\nfunction coordinate(value) {\n\treturn value;\n}\nfunction refusal(message) {\n\treturn new SessionFormatUnsupportedMigrationError(message);\n}\n//#endregion\nexport { RELEASED_V2_EVENT_DISPOSITIONS, RELEASED_V2_EVENT_TYPES, assertReleasedV2Header, releasedV1SessionFormatCodec, releasedV2SessionFormatCodec, restoreReleasedV2Artifact, sessionFormatV1ToV2 };\n", "/**\n * Lossless compact representation of one model-stream attempt, plus record-level\n * readers that answer common consumer questions without materializing members.\n * Readers trust the static record type; expandAssistantStream is the validating\n * path for records read at a durable boundary.\n */\nimport { assertNever, deepFreeze, snapshotJsonValue } from '@deepseek-ai/dsh-util-values';\nimport { BlockAssembler } from \"./assembler.js\";\nfunction safeTime(value) {\n if (!Number.isSafeInteger(value))\n throw new TypeError(`Assistant stream time must be a safe integer, got ${String(value)}`);\n return value;\n}\nfunction safeIndex(value, label) {\n if (!Number.isSafeInteger(value) || value < 0 || Object.is(value, -0)) {\n throw new TypeError(`${label} index must be a non-negative safe integer`);\n }\n return value;\n}\nfunction snapshotChunk(chunk) {\n const snapshot = snapshotJsonValue(chunk);\n if (snapshot === undefined)\n throw new TypeError('Assistant stream chunk must be losslessly JSON-serializable');\n return snapshot;\n}\nfunction safeGap(previous, next) {\n const gap = next - previous;\n return Number.isSafeInteger(gap) && previous + gap === next ? gap : undefined;\n}\n/** Incrementally compacts one attempt without retaining a second raw-chunk list. */\nexport class AssistantStreamAccumulator {\n records = [];\n /**\n * Add one timed chunk to the compact attempt stream.\n * @param value - model chunk and its original Session timestamp.\n * @returns a detached immutable copy for assembly and live publication.\n */\n push(value) {\n const time = safeTime(value.time);\n const chunk = snapshotChunk(value.chunk);\n const timed = deepFreeze({ time, chunk });\n const previous = this.records.at(-1);\n switch (chunk.type) {\n case 'text-delta':\n case 'reasoning-delta': {\n safeIndex(chunk.index, chunk.type);\n if (typeof chunk.text !== 'string')\n throw new TypeError(`${chunk.type} text must be a string`);\n const type = chunk.type === 'text-delta' ? 'text-chunks' : 'reasoning-chunks';\n const gap = previous !== undefined && previous.type === type ? safeGap(previous.lastTime, time) : undefined;\n if (previous !== undefined && previous.type === type && previous.index === chunk.index && gap !== undefined) {\n previous.dt.push(gap);\n previous.texts.push(chunk.text);\n previous.lastTime = time;\n }\n else {\n this.records.push({ type, time0: time, index: chunk.index, dt: [], texts: [chunk.text], lastTime: time });\n }\n return timed;\n }\n case 'tool-call-delta': {\n safeIndex(chunk.index, chunk.type);\n if (typeof chunk.id !== 'string')\n throw new TypeError('tool-call-delta id must be a string');\n if (Object.hasOwn(chunk, 'name') && typeof chunk.name !== 'string') {\n throw new TypeError('tool-call-delta name must be a string');\n }\n if (typeof chunk.argumentsDelta !== 'string') {\n throw new TypeError('tool-call-delta argumentsDelta must be a string');\n }\n if (chunk.id.length === 0 || chunk.name === '') {\n this.records.push({ type: 'chunk', time, chunk });\n return timed;\n }\n const gap = previous?.type === 'tool-call-chunks' ? safeGap(previous.lastTime, time) : undefined;\n const sameName = previous?.type === 'tool-call-chunks'\n && Object.hasOwn(previous, 'name') === Object.hasOwn(chunk, 'name')\n && previous.name === chunk.name;\n if (previous?.type === 'tool-call-chunks'\n && previous.index === chunk.index\n && previous.id === chunk.id\n && sameName\n && gap !== undefined) {\n previous.dt.push(gap);\n previous.args.push(chunk.argumentsDelta);\n previous.lastTime = time;\n }\n else {\n this.records.push({\n type: 'tool-call-chunks',\n time0: time,\n index: chunk.index,\n dt: [],\n id: chunk.id,\n ...Object.hasOwn(chunk, 'name') ? { name: chunk.name } : {},\n args: [chunk.argumentsDelta],\n lastTime: time,\n });\n }\n return timed;\n }\n case 'block-start':\n case 'block-end':\n case 'usage':\n case 'finish':\n this.records.push({ type: 'chunk', time, chunk });\n return timed;\n default:\n return assertNever(chunk, 'AssistantStreamAccumulator.push');\n }\n }\n /**\n * Return the current compact attempt stream.\n * @returns a detached immutable record list suitable for a durable event.\n */\n snapshot() {\n const records = this.records.map((record) => {\n if (record.type === 'chunk')\n return { ...record };\n const { lastTime: _lastTime, ...durable } = record;\n if (durable.type === 'tool-call-chunks') {\n return { ...durable, dt: [...durable.dt], args: [...durable.args] };\n }\n return { ...durable, dt: [...durable.dt], texts: [...durable.texts] };\n });\n return deepFreeze(records);\n }\n}\n/**\n * Expand compact records into the exact timed chunk sequence.\n * @param stream - compact records from one durable Assistant settlement.\n * @returns detached timed chunks with every original delta boundary preserved.\n * @throws {TypeError} when a record or reconstructed timestamp is invalid.\n */\nexport function expandAssistantStream(stream) {\n const chunks = [];\n for (const candidate of stream) {\n const record = validateRecord(candidate);\n if (record.type === 'chunk') {\n chunks.push({ time: record.time, chunk: record.chunk });\n continue;\n }\n const members = record.type === 'tool-call-chunks' ? record.args : record.texts;\n let time = record.time0;\n for (let index = 0; index < members.length; index += 1) {\n if (index > 0)\n time += record.dt[index - 1];\n let chunk;\n if (record.type === 'text-chunks') {\n chunk = { type: 'text-delta', index: record.index, text: members[index] };\n }\n else if (record.type === 'reasoning-chunks') {\n chunk = { type: 'reasoning-delta', index: record.index, text: members[index] };\n }\n else {\n chunk = {\n type: 'tool-call-delta',\n index: record.index,\n id: record.id,\n ...Object.hasOwn(record, 'name') ? { name: record.name } : {},\n argumentsDelta: members[index],\n };\n }\n chunks.push({ time, chunk });\n }\n }\n return chunks;\n}\nfunction hasNonWhitespace(text) {\n return /\\S/.test(text);\n}\nfunction blockIsVisible(block) {\n if (block.type === 'tool-call')\n return false;\n if (block.type === 'text' || block.type === 'reasoning')\n return hasNonWhitespace(block.text);\n return true;\n}\n/**\n * Whether one chunk carries the model's first output token for latency measurement.\n * @param chunk - any stream chunk.\n * @returns true for a non-empty text, reasoning, or Tool-call arguments fragment and for\n * every name-bearing Tool-call delta; false for block, usage, and finish chunks.\n */\nexport function isTokenDelta(chunk) {\n switch (chunk.type) {\n case 'text-delta':\n case 'reasoning-delta':\n return chunk.text !== '';\n case 'tool-call-delta':\n return chunk.argumentsDelta !== '' || chunk.name !== undefined;\n default:\n return false;\n }\n}\n/**\n * Whether one chunk by itself contributes reader-visible transcript content.\n * Text and reasoning count only with non-whitespace content, streamed as a delta or\n * completed as a block; a block of any other kind counts at its start and its end,\n * except a Tool call, which is protocol rather than content. Usage and finish never count.\n * @param chunk - any stream chunk.\n * @returns whether a transcript reader would see this chunk.\n */\nexport function isVisibleChunk(chunk) {\n switch (chunk.type) {\n case 'text-delta':\n case 'reasoning-delta':\n return hasNonWhitespace(chunk.text);\n case 'block-start':\n return chunk.blockType !== 'text' && chunk.blockType !== 'reasoning' && chunk.blockType !== 'tool-call';\n case 'block-end':\n return blockIsVisible(chunk.block);\n default:\n return false;\n }\n}\n/**\n * Whether one chunk carries non-whitespace text, as a text delta or a completed text block.\n * Reasoning, Tool calls, and other block kinds never count.\n * @param chunk - any stream chunk.\n * @returns whether the chunk contributes visible text.\n */\nexport function chunkHasVisibleText(chunk) {\n if (chunk.type === 'text-delta')\n return hasNonWhitespace(chunk.text);\n return chunk.type === 'block-end' && chunk.block.type === 'text' && hasNonWhitespace(chunk.block.text);\n}\nfunction firstRunMemberTime(run, predicate) {\n const fragments = run.type === 'tool-call-chunks' ? run.args : run.texts;\n let time = run.time0;\n for (let index = 0; index < fragments.length; index += 1) {\n if (index > 0)\n time += run.dt[index - 1];\n if (predicate(fragments[index]))\n return time;\n }\n return undefined;\n}\n/**\n * Time of the first member of one packed run that {@link isTokenDelta} accepts: a\n * name-bearing Tool-call run starts at its first member, otherwise the first non-empty fragment.\n * Stops scanning at that member.\n * @param run - one packed delta run.\n * @returns the member's reconstructed time, or undefined when no member qualifies.\n */\nexport function runFirstTokenTime(run) {\n if (run.type === 'tool-call-chunks' && run.name !== undefined)\n return run.time0;\n return firstRunMemberTime(run, fragment => fragment !== '');\n}\n/**\n * Time of the first member of one packed run that {@link isVisibleChunk} accepts: the first\n * non-whitespace text or reasoning fragment. A Tool-call run has none. Stops scanning at that member.\n * @param run - one packed delta run.\n * @returns the member's reconstructed time, or undefined when no member qualifies.\n */\nexport function runFirstVisibleTime(run) {\n return run.type === 'tool-call-chunks' ? undefined : firstRunMemberTime(run, hasNonWhitespace);\n}\n/**\n * Time of the first token in one compact stream per {@link isTokenDelta}, read from the\n * records themselves and stopping at the first qualifying member.\n * @param stream - compact records from one durable Assistant settlement.\n * @returns the first token's time, or undefined when the stream carries no token.\n */\nexport function assistantStreamFirstTokenTime(stream) {\n for (const record of stream) {\n const time = record.type === 'chunk'\n ? (isTokenDelta(record.chunk) ? record.time : undefined)\n : runFirstTokenTime(record);\n if (time !== undefined)\n return time;\n }\n return undefined;\n}\n/**\n * Whether one compact stream carries any reader-visible content per {@link isVisibleChunk},\n * stopping at the first qualifying member.\n * @param stream - compact records from one durable Assistant settlement.\n * @returns whether a transcript reader would see anything from this stream.\n */\nexport function assistantStreamHasVisibleContent(stream) {\n return stream.some(record => record.type === 'chunk'\n ? isVisibleChunk(record.chunk)\n : runFirstVisibleTime(record) !== undefined);\n}\n/**\n * Whether one compact stream carries non-whitespace text per {@link chunkHasVisibleText},\n * stopping at the first qualifying member.\n * @param stream - compact records from one durable Assistant settlement.\n * @returns whether the stream contributes visible text.\n */\nexport function assistantStreamHasVisibleText(stream) {\n return stream.some(record => record.type === 'text-chunks'\n ? record.texts.some(hasNonWhitespace)\n : record.type === 'chunk' && chunkHasVisibleText(record.chunk));\n}\n/**\n * The last raw chunk of one never-packed type, scanning backwards and stopping at the first hit.\n * @param stream - compact records from one durable Assistant settlement.\n * @param type - chunk type that only appears as a raw record.\n * @returns the stream's final chunk of that type, or undefined when it has none.\n */\nexport function lastAssistantStreamChunk(stream, type) {\n for (let index = stream.length - 1; index >= 0; index -= 1) {\n const record = stream[index];\n if (record.type === 'chunk' && record.chunk.type === type)\n return record.chunk;\n }\n return undefined;\n}\n/**\n * Every raw chunk of one never-packed type, in stream order.\n * @param stream - compact records from one durable Assistant settlement.\n * @param type - chunk type that only appears as a raw record.\n * @returns the matching chunks; empty when the stream has none.\n */\nexport function assistantStreamChunks(stream, type) {\n const chunks = [];\n for (const record of stream) {\n if (record.type === 'chunk' && record.chunk.type === type)\n chunks.push(record.chunk);\n }\n return chunks;\n}\n/**\n * Every streamed text-delta fragment joined in stream order; reasoning and Tool-call fragments are excluded.\n * @param stream - compact records from one durable Assistant settlement.\n * @returns the joined text, empty when the stream carries no text delta.\n */\nexport function joinAssistantStreamText(stream) {\n const parts = [];\n for (const record of stream) {\n if (record.type === 'text-chunks')\n parts.push(record.texts.join(''));\n else if (record.type === 'chunk' && record.chunk.type === 'text-delta')\n parts.push(record.chunk.text);\n }\n return parts.join('');\n}\n/**\n * Feed one compact stream into a {@link BlockAssembler} without materializing members.\n * Each run contributes one delta carrying its joined fragments, which assembles the same\n * blocks as the original per-member deltas because assembly only concatenates them;\n * raw chunks are pushed as recorded. The records are trusted, not validated: validate a\n * stream read at a durable boundary with {@link expandAssistantStream} first.\n * @param stream - compact records from one durable Assistant settlement.\n * @param assembler - assembler to feed; a fresh one by default.\n * @returns the same assembler after every record was pushed.\n */\nexport function assembleAssistantStream(stream, assembler = new BlockAssembler()) {\n for (const record of stream) {\n switch (record.type) {\n case 'chunk':\n assembler.push(record.chunk);\n break;\n case 'text-chunks':\n assembler.push({ type: 'text-delta', index: record.index, text: record.texts.join('') });\n break;\n case 'reasoning-chunks':\n assembler.push({ type: 'reasoning-delta', index: record.index, text: record.texts.join('') });\n break;\n case 'tool-call-chunks':\n assembler.push({\n type: 'tool-call-delta',\n index: record.index,\n id: record.id,\n ...record.name === undefined ? {} : { name: record.name },\n argumentsDelta: record.args.join(''),\n });\n break;\n default:\n assertNever(record, 'assembleAssistantStream');\n }\n }\n return assembler;\n}\nfunction validateRecord(value) {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n throw new TypeError('Assistant stream record must be an object');\n }\n const record = value;\n switch (record.type) {\n case 'text-chunks':\n case 'reasoning-chunks': {\n exactKeys(record, ['type', 'time0', 'index', 'dt', 'texts'], record.type);\n const texts = stringArray(record.texts, `${record.type} texts`);\n if (texts.length === 0)\n throw new TypeError(`${record.type} texts must be non-empty`);\n validateRun(record, texts.length, record.type);\n return record;\n }\n case 'tool-call-chunks': {\n const keys = Object.hasOwn(record, 'name')\n ? ['type', 'time0', 'index', 'dt', 'id', 'name', 'args']\n : ['type', 'time0', 'index', 'dt', 'id', 'args'];\n exactKeys(record, keys, record.type);\n const args = stringArray(record.args, 'tool-call-chunks args');\n if (args.length === 0)\n throw new TypeError('tool-call-chunks args must be non-empty');\n if (typeof record.id !== 'string' || record.id.length === 0) {\n throw new TypeError('tool-call-chunks id must be a non-empty string');\n }\n if (record.name !== undefined && (typeof record.name !== 'string' || record.name.length === 0)) {\n throw new TypeError('tool-call-chunks name must be a non-empty string');\n }\n validateRun(record, args.length, record.type);\n return record;\n }\n case 'chunk': {\n exactKeys(record, ['type', 'time', 'chunk'], 'chunk');\n const time = safeTime(record.time);\n if (typeof record.chunk !== 'object'\n || record.chunk === null\n || Array.isArray(record.chunk)) {\n throw new TypeError('Assistant stream raw chunk must be a lossless JSON object');\n }\n let chunk;\n try {\n chunk = snapshotChunk(record.chunk);\n }\n catch (error) {\n throw new TypeError('Assistant stream raw chunk must be a lossless JSON object', { cause: error });\n }\n return deepFreeze({ type: 'chunk', time, chunk });\n }\n default:\n throw new TypeError(`Unsupported Assistant stream record ${JSON.stringify(record.type)}`);\n }\n}\nfunction validateRun(record, members, label) {\n safeTime(record.time0);\n safeIndex(record.index, label);\n if (!Array.isArray(record.dt) || record.dt.some(value => !Number.isSafeInteger(value))) {\n throw new TypeError(`${label} dt must contain safe integers`);\n }\n if (record.dt.length !== members - 1) {\n throw new TypeError(`${label} dt length must be one less than its members`);\n }\n let time = record.time0;\n for (const gap of record.dt) {\n time += gap;\n if (!Number.isSafeInteger(time))\n throw new TypeError(`${label} member times must stay safe integers`);\n }\n}\nfunction stringArray(value, label) {\n if (!Array.isArray(value) || value.some(member => typeof member !== 'string')) {\n throw new TypeError(`${label} must be a string array`);\n }\n return value;\n}\nfunction exactKeys(record, keys, label) {\n if (Object.keys(record).length !== keys.length || !keys.every(key => Object.hasOwn(record, key))) {\n throw new TypeError(`${label} Assistant stream record must contain exactly ${keys.join(', ')}`);\n }\n}\n//# sourceMappingURL=assistant-stream.js.map", "import { RELEASED_V2_EVENT_DISPOSITIONS, assertReleasedV2Header, releasedV2SessionFormatCodec, releasedV2SessionFormatCodec as releasedV2SessionFormatCodec$1, restoreReleasedV2Artifact } from \"@deepseek-ai/dsh-session-format-v1-to-v2\";\nimport { SessionFormatError, SessionFormatUnsupportedMigrationError, defineSessionFormatMigration, isSessionFormatJsonObject, sessionFormatCount, sessionFormatSafeInteger, snapshotSessionFormatJson } from \"@deepseek-ai/dsh-session-format\";\nimport { assertReleasedPayloadSemantics, assertReleasedSurfaceMetadata } from \"@deepseek-ai/dsh-session-format-v0-to-v1\";\nimport { createHash } from \"node:crypto\";\n//#region lib/types/payload.js\n/** Audited V2 migration admission and V3 payload validation, independent of installed core Session types. */\n/** Audited surface event names; all other admitted events are log-only. */\nconst SURFACE_TYPES = new Set([\n\t\"system/message\",\n\t\"user/message\",\n\t\"assistant/message\",\n\t\"tool/result\"\n]);\nconst SOURCE_KINDS = new Set([\n\t\"user\",\n\t\"plugin\",\n\t\"model\",\n\t\"tool\",\n\t\"agent-instructions\",\n\t\"session-reference\",\n\t\"team-message\",\n\t\"goal\",\n\t\"skill-invocation\",\n\t\"skill-catalog\",\n\t\"coordinator\",\n\t\"subagent-report\",\n\t\"subagent-settled\",\n\t\"webhook\",\n\t\"agent-message\"\n]);\n/**\n* Require a JSON object at the durable input boundary.\n* @param value - decoded value.\n* @param label - diagnostic subject.\n* @returns the narrowed object.\n*/\nfunction record(value, label) {\n\tif (!isSessionFormatJsonObject(value)) throw new SessionFormatError(label + \" must be an object\");\n\treturn value;\n}\n/**\n* Reject missing and unaudited members rather than guessing whether they contain coordinates.\n* @param value - decoded record.\n* @param required - required member names.\n* @param optional - additional admitted names.\n* @param label - diagnostic subject.\n*/\nfunction keys(value, required, optional, label) {\n\tconst missing = required.find((key) => !Object.hasOwn(value, key));\n\tconst unexpected = Object.keys(value).find((key) => !required.includes(key) && !optional.includes(key));\n\tif (missing !== void 0) throw new SessionFormatError(label + \" lacks required field \" + missing);\n\tif (unexpected !== void 0) throw new SessionFormatError(label + \" has unexpected field \" + unexpected);\n}\n/**\n* Validate classified payloads before migration, or native V3 system/header payloads.\n* @param event - decoded logical event.\n* @param version - source or target generation.\n*/\nfunction assertEvent(event, version) {\n\tif (version === 3) {\n\t\tassertV3Event(event);\n\t\treturn;\n\t}\n\tconst disposition = RELEASED_V2_EVENT_DISPOSITIONS[event.type];\n\tconst feedback = event.type === \"feedback/message-put\" || event.type === \"feedback/message-delete\";\n\tif (disposition === void 0 && !feedback) throw new SessionFormatUnsupportedMigrationError(\"format v2 to v3 cannot safely transform unclassified event \" + event.type);\n\tconst surface = SURFACE_TYPES.has(event.type);\n\tkeys(event, [\n\t\t\"type\",\n\t\t\"seq\",\n\t\t\"time\",\n\t\t\"data\"\n\t], surface ? [\n\t\t\"ignorable\",\n\t\t\"sourceEventSeqs\",\n\t\t\"surfaceOp\"\n\t] : [\"ignorable\"], event.type);\n\tsessionFormatCount(event.seq, \"event seq\");\n\tsessionFormatSafeInteger(event.time, \"event time\");\n\tif (event[\"ignorable\"] !== void 0 && event[\"ignorable\"] !== true) throw new SessionFormatError(\"ignorable must be true\");\n\tif (surface) {\n\t\tassertReleasedSurfaceMetadata(event, event.seq, event.type, \"forbid-assistant\");\n\t\tif (event[\"surfaceOp\"] === void 0) throw new SessionFormatError(event.type + \" requires surfaceOp\");\n\t}\n\tconst data = record(event.data, event.type + \" data\");\n\tif (feedback) {\n\t\tassertFeedback(event.type, data);\n\t\treturn;\n\t}\n\tconst admitted = disposition;\n\tkeys(data, admitted.required, admitted.optional, event.type + \" data\");\n\tassertOwnedContent(event, data);\n\tif (event.type !== \"assistant/attempt\") assertReleasedPayloadSemantics(event, version);\n\tif (event.type === \"assistant/message\" || event.type === \"assistant/attempt\") {\n\t\tfor (const coordinate of [\"turn\", \"step\"]) if (sessionFormatCount(data[coordinate], coordinate) === 0) throw new SessionFormatError(coordinate + \" must be positive\");\n\t}\n\tif (event.type === \"session/end-seed\" && data[\"inherited\"] !== void 0 && data[\"inherited\"] !== true) throw new SessionFormatError(\"session/end-seed inherited must be true\");\n\tif (event.type === \"user/message\") assertSource(data);\n\tif (event.type === \"assistant/message\" || event.type === \"tool/result\") assertSource(record(data[\"message\"], \"message\"));\n\tif (event.type === \"tool/result\" && isSessionFormatJsonObject(data[\"error\"]) && data[\"error\"][\"code\"] === \"TOOL_NOT_STARTED\") {\n\t\tconst message = record(data[\"message\"], \"tool result message\");\n\t\tconst source = record(message[\"source\"], \"tool result source\");\n\t\tif (!isRepairIdentity(message[\"id\"], source[\"callId\"])) throw new SessionFormatError(\"TOOL_NOT_STARTED repair requires its canonical historical message id\");\n\t}\n\tif (event.type === \"agent/inbox/spliced\" || event.type === \"session/title-llm-request\") {\n\t\tconst messages = data[event.type === \"agent/inbox/spliced\" ? \"inserted\" : \"messages\"];\n\t\tfor (const message of messages) assertSource(message);\n\t}\n}\n/**\n* Recognize stable generated repair IDs without interpreting their historical suffix as a current coordinate.\n* @param id - durable message identity.\n* @param callId - advertised tool identity.\n* @returns whether the identity has the canonical historical repair form.\n*/\nfunction isRepairIdentity(id, callId) {\n\tif (typeof callId !== \"string\") return false;\n\tconst prefix = \"interrupted-tool-result-\" + callId + \"-\";\n\tif (typeof id !== \"string\" || !id.startsWith(prefix)) return false;\n\tconst suffix = id.slice(prefix.length);\n\treturn /^(0|[1-9]\\d*)$/.test(suffix) && Number.isSafeInteger(Number(suffix));\n}\nfunction assertSource(message) {\n\tconst source = record(message[\"source\"], \"message source\");\n\tif (typeof source[\"kind\"] !== \"string\" || !SOURCE_KINDS.has(source[\"kind\"])) throw new SessionFormatUnsupportedMigrationError(\"cannot safely transform unclassified message source\");\n\tif (source[\"kind\"] === \"agent-message\") {\n\t\tkeys(source, [\n\t\t\t\"kind\",\n\t\t\t\"form\",\n\t\t\t\"senderSessionId\"\n\t\t], [], \"agent-message source\");\n\t\tif (source[\"form\"] !== \"relay\" || typeof source[\"senderSessionId\"] !== \"string\" || source[\"senderSessionId\"].length === 0) throw new SessionFormatError(\"agent-message source requires relay form and senderSessionId\");\n\t}\n}\nconst CONTENT_KINDS = new Set([\n\t\"text\",\n\t\"reasoning\",\n\t\"image\",\n\t\"file\",\n\t\"tool-call\",\n\t\"tool-result\"\n]);\nfunction contentArray(value, label) {\n\tif (!Array.isArray(value)) throw new SessionFormatError(label + \": content must be an array\");\n\treturn value;\n}\nfunction assertOwnedContent(event, data) {\n\tconst label = \"format v2 \" + event.type + \" at seq \" + String(event.seq) + \" data\";\n\tswitch (event.type) {\n\t\tcase \"user/message\":\n\t\tcase \"tool/code-dispatch\":\n\t\t\tassertContentKinds(data[\"content\"], label + \".content\");\n\t\t\tbreak;\n\t\tcase \"assistant/message\":\n\t\tcase \"tool/result\":\n\t\tcase \"team/message/queued\":\n\t\t\tassertContentKinds(record(data[\"message\"], label + \".message\")[\"content\"], label + \".message.content\");\n\t\t\tbreak;\n\t\tcase \"agent/inbox/spliced\":\n\t\tcase \"session/title-llm-request\": {\n\t\t\tconst field = event.type === \"agent/inbox/spliced\" ? \"inserted\" : \"messages\";\n\t\t\tfor (const [index, value] of contentArray(data[field], label + \".\" + field).entries()) {\n\t\t\t\tconst path = label + \".\" + field + \"[\" + String(index) + \"]\";\n\t\t\t\tassertContentKinds(record(value, path)[\"content\"], path + \".content\");\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tcase \"compaction/summary\":\n\t\t\tassertContentKinds(data[\"summary\"], label + \".summary\");\n\t\t\tif (data[\"rawOutput\"] !== void 0) assertContentKinds(data[\"rawOutput\"], label + \".rawOutput\");\n\t\t\tbreak;\n\t}\n\tif (event.type === \"assistant/message\" || event.type === \"assistant/attempt\") for (const [index, value] of contentArray(data[\"stream\"], label + \".stream\").entries()) {\n\t\tconst path = label + \".stream[\" + String(index) + \"]\";\n\t\tconst entry = record(value, path);\n\t\tif (entry[\"type\"] !== \"chunk\") continue;\n\t\tconst chunk = record(entry[\"chunk\"], path + \".chunk\");\n\t\tif (chunk[\"type\"] === \"block-end\") assertContentBlock(chunk[\"block\"], path + \".chunk.block\");\n\t\tif (chunk[\"type\"] === \"block-start\") assertContentKind(chunk[\"blockType\"], path + \".chunk.blockType\");\n\t}\n}\nfunction assertContentKind(kind, label) {\n\tif (typeof kind !== \"string\" || !CONTENT_KINDS.has(kind)) throw new SessionFormatUnsupportedMigrationError(label + \": cannot safely transform unclassified message content kind \" + JSON.stringify(kind));\n}\nfunction assertContentKinds(content, label) {\n\tfor (const [index, value] of contentArray(content, label).entries()) assertContentBlock(value, label + \"[\" + String(index) + \"]\");\n}\nfunction assertContentBlock(value, label) {\n\tconst block = record(value, label);\n\tassertContentKind(block[\"type\"], label);\n\tif (block[\"type\"] === \"tool-result\") {\n\t\tif (!Array.isArray(block[\"content\"])) throw new SessionFormatError(label + \".content: invalid message content kind \\\"tool-result\\\": content must be an array\");\n\t\tassertContentKinds(block[\"content\"], label + \".content\");\n\t}\n\tif (block[\"type\"] === \"file\") {\n\t\tkeys(block, [\"type\", \"attachment\"], [], label + \" kind \\\"file\\\"\");\n\t\tconst attachment = record(block[\"attachment\"], label + \" kind \\\"file\\\" attachment\");\n\t\tkeys(attachment, [\n\t\t\t\"attachmentId\",\n\t\t\t\"name\",\n\t\t\t\"bytes\"\n\t\t], [], label + \" kind \\\"file\\\" attachment\");\n\t\tif (typeof attachment[\"attachmentId\"] !== \"string\" || attachment[\"attachmentId\"].length === 0 || typeof attachment[\"name\"] !== \"string\") throw new SessionFormatError(label + \" kind \\\"file\\\": file attachment requires attachmentId and name\");\n\t\tsessionFormatCount(attachment[\"bytes\"], label + \" kind \\\"file\\\" attachment bytes\");\n\t\treturn;\n\t}\n\tconst probe = {\n\t\ttype: \"user/message\",\n\t\tseq: 0,\n\t\ttime: 0,\n\t\tdata: {\n\t\t\tid: \"content-admission\",\n\t\t\trole: \"user\",\n\t\t\tsource: { kind: \"user\" },\n\t\t\tcontent: [block[\"type\"] === \"tool-result\" ? {\n\t\t\t\t...block,\n\t\t\t\tcontent: []\n\t\t\t} : block]\n\t\t}\n\t};\n\ttry {\n\t\tassertReleasedPayloadSemantics(probe, 2);\n\t} catch (error) {\n\t\tthrow new SessionFormatError(label + \": invalid message content kind \" + JSON.stringify(block[\"type\"]) + \": \" + String(error));\n\t}\n}\n/**\n* Reject V3 structural payload violations even beyond a recoverable physical-row failure.\n* @param value - raw physical row; ordinary rows retain the frozen decoder's recovery policy.\n*/\nfunction assertV3StructuralRow(value) {\n\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) return;\n\tconst row = value;\n\tif (row[\"type\"] === \"request/header\") {\n\t\tconst data = record(row[\"data\"], \"request/header data\");\n\t\tif (Object.hasOwn(record(data[\"header\"], \"request header\"), \"system\")) throw new SessionFormatUnsupportedMigrationError(\"format v3 request/header rejects retired header.system\");\n\t} else if (row[\"type\"] === \"system/message\") {\n\t\tconst data = record(row[\"data\"], \"system/message data\");\n\t\tassertSystem({\n\t\t\ttype: \"system/message\",\n\t\t\tseq: 0,\n\t\t\ttime: 0,\n\t\t\tdata\n\t\t}, data);\n\t}\n}\nfunction assertSystem(event, data) {\n\tkeys(data, [\n\t\t\"turn\",\n\t\t\"step\",\n\t\t\"message\"\n\t], [], \"system/message data\");\n\tfor (const coordinate of [\"turn\", \"step\"]) if (sessionFormatCount(data[coordinate], coordinate) === 0) throw new SessionFormatError(coordinate + \" must be positive\");\n\tconst message = record(data[\"message\"], \"system message\");\n\tkeys(message, [\n\t\t\"id\",\n\t\t\"role\",\n\t\t\"source\",\n\t\t\"content\"\n\t], [], \"system message\");\n\tif (typeof message[\"id\"] !== \"string\" || message[\"id\"].length === 0 || message[\"role\"] !== \"system\") throw new SessionFormatError(\"system message requires an id and system role\");\n\tconst source = record(message[\"source\"], \"system source\");\n\tif (source[\"kind\"] !== \"plugin\" || typeof source[\"plugin\"] !== \"string\" || source[\"plugin\"].length === 0) throw new SessionFormatError(\"system message requires plugin source\");\n\tassertReleasedPayloadSemantics({\n\t\t...event,\n\t\ttype: \"user/message\",\n\t\tdata: {\n\t\t\t...message,\n\t\t\trole: \"user\"\n\t\t}\n\t}, 3);\n}\nfunction assertFeedback(type, data) {\n\tkeys(data, type === \"feedback/message-put\" ? [\"sessionId\", \"item\"] : [\"sessionId\", \"messageId\"], [], type);\n\tif (typeof data[\"sessionId\"] !== \"string\") throw new SessionFormatError(\"feedback sessionId must be a string\");\n\tif (type === \"feedback/message-delete\") {\n\t\tif (typeof data[\"messageId\"] !== \"string\") throw new SessionFormatError(\"feedback messageId must be a string\");\n\t\treturn;\n\t}\n\tconst item = record(data[\"item\"], \"feedback item\");\n\tkeys(item, [\n\t\t\"messageId\",\n\t\t\"rating\",\n\t\t\"version\",\n\t\t\"createdAt\",\n\t\t\"updatedAt\"\n\t], [\"note\"], \"feedback item\");\n\tfor (const key of [\"messageId\", \"version\"]) if (typeof item[key] !== \"string\") throw new SessionFormatError(\"feedback \" + key + \" must be a string\");\n\tif (item[\"rating\"] !== \"positive\" && item[\"rating\"] !== \"negative\") throw new SessionFormatError(\"invalid feedback rating\");\n\tif (item[\"note\"] !== void 0 && typeof item[\"note\"] !== \"string\") throw new SessionFormatError(\"feedback note must be a string\");\n\tsessionFormatCount(item[\"createdAt\"], \"feedback createdAt\");\n\tsessionFormatCount(item[\"updatedAt\"], \"feedback updatedAt\");\n}\n/**\n* Validate one canonical V3 event without interpreting plugin-owned payloads or log relationships.\n* Unclassified metadata is deferred to vocabulary-aware restoration; unknown required types must not become recoverable corruption.\n* @param event - decoded logical event.\n* @param knownEventTypes - additional installed event types whose envelopes are interpreted.\n*/\nfunction assertV3Event(event, knownEventTypes) {\n\tconst value = record(event, \"format v3 event\");\n\tconst subject = `format v3 ${event.type} at seq ${event.seq}`;\n\tconst opaque = !(!(event.type === \"tool/code-dispatch-start\" || event.type === \"tool/code-dispatch\") && (SURFACE_TYPES.has(event.type) || RELEASED_V2_EVENT_DISPOSITIONS[event.type] !== void 0 || event.type === \"tool/ptc-dispatch-start\" || event.type === \"tool/ptc-dispatch\" || event.type === \"feedback/message-put\" || event.type === \"feedback/message-delete\" || knownEventTypes?.has(event.type) === true));\n\tkeys(value, [\n\t\t\"type\",\n\t\t\"seq\",\n\t\t\"time\",\n\t\t\"data\"\n\t], SURFACE_TYPES.has(event.type) || opaque ? [\n\t\t\"ignorable\",\n\t\t\"surfaceOp\",\n\t\t\"sourceEventSeqs\"\n\t] : [\"ignorable\"], subject);\n\tif (typeof event.type !== \"string\") throw new SessionFormatError(`${subject} type must be a string`);\n\tsessionFormatCount(event.seq, `${subject} seq`);\n\tsessionFormatSafeInteger(event.time, `${subject} time`);\n\tif (Object.hasOwn(value, \"ignorable\") && value[\"ignorable\"] !== true) throw new SessionFormatError(`${subject} ignorable must be true when present`);\n\tif (SURFACE_TYPES.has(event.type)) {\n\t\tconst operation = value[\"surfaceOp\"];\n\t\tif (operation === void 0) throw new SessionFormatError(`${subject} requires a surfaceOp marker`);\n\t\tif (operation !== \"append\") {\n\t\t\tconst replace = record(operation, `${subject} surfaceOp`);\n\t\t\tif (Object.keys(replace).length !== 3 || replace[\"op\"] !== \"replace\" || !Object.hasOwn(replace, \"startSeq\") || !Object.hasOwn(replace, \"endSeq\")) throw new SessionFormatError(`${subject} requires exact replace fields op/startSeq/endSeq`);\n\t\t\tfor (const key of [\"startSeq\", \"endSeq\"]) if (sessionFormatCount(replace[key], `${subject} surfaceOp ${key}`) >= event.seq) throw new SessionFormatError(`${subject} replacement endpoints must reference earlier events`);\n\t\t}\n\t\tconst sources = value[\"sourceEventSeqs\"];\n\t\tif (event.type === \"assistant/message\" && sources !== void 0) throw new SessionFormatError(`${subject} embeds its stream and cannot carry sourceEventSeqs`);\n\t\tif (sources !== void 0) {\n\t\t\tif (!Array.isArray(sources) || sources.length === 0) throw new SessionFormatError(`${subject} sourceEventSeqs must be a non-empty array`);\n\t\t\tconst seen = /* @__PURE__ */ new Set();\n\t\t\tfor (const source of sources) {\n\t\t\t\tconst seq = sessionFormatCount(source, `${subject} sourceEventSeqs member`);\n\t\t\t\tif (seq >= event.seq || seen.has(seq)) throw new SessionFormatError(`${subject} sourceEventSeqs must be unique earlier seqs`);\n\t\t\t\tseen.add(seq);\n\t\t\t}\n\t\t}\n\t}\n\tassertV3StructuralRow(event);\n\tassertCanonicalPayload(event);\n}\nfunction assertCanonicalPayload(event) {\n\tconst subject = `format v3 ${event.type} at seq ${event.seq}`;\n\tif (event.type === \"request/header\") {\n\t\tconst header = record(record(event.data, `${subject} data`)[\"header\"], `${subject} header`);\n\t\tif (Array.isArray(header[\"tools\"]) && header[\"tools\"].length === 0 || isSessionFormatJsonObject(header[\"adapterDefaults\"]) && Object.keys(header[\"adapterDefaults\"]).length === 0) throw new SessionFormatError(`${subject} empty optional header fields must be omitted`);\n\t}\n\tif (event.type !== \"tool/result\") return;\n\tconst data = record(event.data, `${subject} data`);\n\tif (data[\"error\"] === void 0) return;\n\tconst content = record(data[\"message\"], `${subject} message`)[\"content\"];\n\tif (!Array.isArray(content) || content.length !== 1 || !isSessionFormatJsonObject(content[0]) || content[0][\"type\"] !== \"tool-result\" || content[0][\"isError\"] !== true) throw new SessionFormatError(`${subject} carries error metadata for a non-error tool result`);\n}\n/**\n* Canonicalize structurally transformed events without changing their target coordinates.\n* @param event - transformed event using released replacement names and target coordinates.\n* @returns a V3 event sharing all unchanged payloads and reference values.\n*/\nfunction canonicalizeTransformedEvent(event) {\n\tlet target = event;\n\tconst operation = event[\"surfaceOp\"];\n\tif (operation !== void 0 && operation !== \"append\") {\n\t\tconst replace = record(operation, `format v2 ${event.type} at seq ${event.seq} surfaceOp`);\n\t\tif (Object.keys(replace).length !== 3 || replace[\"op\"] !== \"replace\" || !Object.hasOwn(replace, \"start\") || !Object.hasOwn(replace, \"end\")) throw new SessionFormatError(`format v2 ${event.type} at seq ${event.seq} requires exact replace fields op/start/end`);\n\t\ttarget = {\n\t\t\t...event,\n\t\t\tsurfaceOp: {\n\t\t\t\top: \"replace\",\n\t\t\t\tstartSeq: sessionFormatCount(replace[\"start\"], `format v2 ${event.type} at seq ${event.seq} replace start`),\n\t\t\t\tendSeq: sessionFormatCount(replace[\"end\"], `format v2 ${event.type} at seq ${event.seq} replace end`)\n\t\t\t}\n\t\t};\n\t}\n\tif (event.type === \"request/header\") {\n\t\tconst data = record(event.data, `format v2 request/header at seq ${event.seq} data`);\n\t\tconst header = record(data[\"header\"], `format v2 request/header at seq ${event.seq} header`);\n\t\tconst empty = Object.keys(header).filter((key) => key === \"tools\" && Array.isArray(header[key]) && header[key].length === 0 || key === \"adapterDefaults\" && isSessionFormatJsonObject(header[key]) && Object.keys(header[key]).length === 0);\n\t\tif (empty.length > 0) {\n\t\t\tconst canonical = Object.fromEntries(Object.entries(header).filter(([key]) => !empty.includes(key)));\n\t\t\ttarget = {\n\t\t\t\t...target,\n\t\t\t\tdata: {\n\t\t\t\t\t...data,\n\t\t\t\t\theader: canonical\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t}\n\tassertV3Event(target);\n\treturn target;\n}\n//#endregion\n//#region lib/types/validation.js\n/** Native V3 system-head validation with a private view for frozen non-system relationships. */\n/**\n* Validate v3 logical metadata with the released-v2 fields.\n* @param header - decoded v3 Session header.\n*/\nfunction assertReleasedV3Header(header) {\n\tif (header.version !== 3) throw new SessionFormatError(\"expected format v3 header\");\n\tassertReleasedV2Header({\n\t\t...header,\n\t\tversion: 2\n\t});\n}\n/**\n* Validate system ownership, protected-head operations, ordinary relationships, and inherited cut.\n* The private relationship view never escapes; the returned artifact and its messages are unchanged.\n* @param artifact - detached v3 artifact.\n* @param knownEventTypes - event types understood by the installed Session package.\n* @returns the same validated artifact.\n*/\nfunction restoreReleasedV3Artifact(artifact, knownEventTypes) {\n\tassertReleasedV3Header(artifact.header);\n\tlet step;\n\tlet head;\n\tlet hasSurface = false;\n\tconst events = artifact.events.map((event) => {\n\t\tassertV3EventAdmission(event);\n\t\tassertV3Event(event, knownEventTypes);\n\t\tconst system = event.type === \"system/message\";\n\t\tif (event.type === \"step/start\") {\n\t\t\tconst data = record(event.data, event.type);\n\t\t\tstep = {\n\t\t\t\tturn: data[\"turn\"],\n\t\t\t\tstep: data[\"step\"]\n\t\t\t};\n\t\t} else if (event.type === \"step/end\" || event.type === \"turn/end\") step = void 0;\n\t\tif (system) {\n\t\t\tconst data = record(event.data, \"system/message\");\n\t\t\tif (step === void 0 || step.turn !== data[\"turn\"] || step.step !== data[\"step\"]) throw new SessionFormatError(\"system/message does not match an open step\");\n\t\t\tconst operation = event[\"surfaceOp\"];\n\t\t\tif (hasSurface && head === void 0) throw new SessionFormatError(\"system/message requires a protected first surface head\");\n\t\t\tif (operation === \"append\") {\n\t\t\t\tif (!hasSurface) head = event.seq;\n\t\t\t} else {\n\t\t\t\tconst replace = record(operation, \"system replacement\");\n\t\t\t\tif (replace[\"startSeq\"] === head || replace[\"endSeq\"] === head) {\n\t\t\t\t\tif (replace[\"startSeq\"] !== head || replace[\"endSeq\"] !== head) throw new SessionFormatError(\"system/message must replace exactly the current system head\");\n\t\t\t\t\thead = event.seq;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (SURFACE_TYPES.has(event.type) && event[\"surfaceOp\"] !== \"append\") {\n\t\t\tconst replace = record(event[\"surfaceOp\"], \"surface replacement\");\n\t\t\tif (replace[\"startSeq\"] === head || replace[\"endSeq\"] === head) throw new SessionFormatError(\"surface replacement cannot shadow the protected system head\");\n\t\t}\n\t\tif (event.type === \"compaction/prune\" || event.type === \"compaction/summary\") {\n\t\t\tconst seqs = record(event.data, event.type)[\"shadowedSeqs\"];\n\t\t\tif (Array.isArray(seqs) && seqs.some((seq) => seq === head)) throw new SessionFormatError(\"compaction cannot shadow the protected system head\");\n\t\t}\n\t\tif (SURFACE_TYPES.has(event.type)) hasSurface = true;\n\t\tconst projected = relationshipEvent(event);\n\t\tif (!SURFACE_TYPES.has(event.type) || event[\"surfaceOp\"] === \"append\") return projected;\n\t\tconst replacement = event[\"surfaceOp\"];\n\t\treturn {\n\t\t\t...projected,\n\t\t\tsurfaceOp: {\n\t\t\t\top: \"replace\",\n\t\t\t\tstart: replacement.startSeq,\n\t\t\t\tend: replacement.endSeq\n\t\t\t}\n\t\t};\n\t});\n\trestoreReleasedV2Artifact({\n\t\t...artifact,\n\t\theader: {\n\t\t\t...artifact.header,\n\t\t\tversion: 2\n\t\t},\n\t\tevents\n\t}, knownEventTypes, 3);\n\treturn artifact;\n}\n/**\n* Refuse required predecessor PTC tags without interpreting native extension payloads.\n* @param event - event envelope whose type and ignorable admission markers are available.\n*/\nfunction assertV3EventAdmission(event) {\n\tif ((event.type === \"tool/code-dispatch-start\" || event.type === \"tool/code-dispatch\") && event[\"ignorable\"] !== true) throw new SessionFormatUnsupportedMigrationError(\"format v3 contains unknown event type \" + JSON.stringify(event.type) + \" at seq \" + String(event.seq));\n}\nfunction relationshipEvent(event) {\n\tswitch (event.type) {\n\t\tcase \"tool/ptc-dispatch-start\": return {\n\t\t\t...event,\n\t\t\ttype: \"tool/code-dispatch-start\"\n\t\t};\n\t\tcase \"tool/ptc-dispatch\": return {\n\t\t\t...event,\n\t\t\ttype: \"tool/code-dispatch\"\n\t\t};\n\t\tcase \"tool/code-dispatch-start\":\n\t\tcase \"tool/code-dispatch\":\n\t\t\tassertV3EventAdmission(event);\n\t\t\treturn {\n\t\t\t\t...event,\n\t\t\t\ttype: \"v3/opaque-released-event\"\n\t\t\t};\n\t}\n\tif (event.type === \"system/message\") {\n\t\tconst message = record(record(event.data, \"system data\")[\"message\"], \"system message\");\n\t\treturn {\n\t\t\t...event,\n\t\t\ttype: \"user/message\",\n\t\t\tdata: {\n\t\t\t\t...message,\n\t\t\t\trole: \"user\"\n\t\t\t}\n\t\t};\n\t}\n\tif (event.type !== \"tool/result\") return event;\n\tconst data = record(event.data, \"tool result\");\n\tif (data[\"error\"] === void 0) return event;\n\tif (record(data[\"error\"], \"tool error\")[\"code\"] !== \"TOOL_NOT_STARTED\") return event;\n\tconst message = record(data[\"message\"], \"tool message\");\n\tconst callId = record(message[\"source\"], \"tool source\")[\"callId\"];\n\tconst id = message[\"id\"];\n\tif (!isRepairIdentity(id, callId)) return event;\n\tconst prefix = \"interrupted-tool-result-\" + callId + \"-\";\n\treturn {\n\t\t...event,\n\t\tdata: {\n\t\t\t...data,\n\t\t\tmessage: {\n\t\t\t\t...message,\n\t\t\t\tid: `${prefix}${event.seq}`\n\t\t\t}\n\t\t}\n\t};\n}\n//#endregion\n//#region lib/types/codec.js\n/** V3 framing with hard structural admission and recoverable canonical event validation. */\n/** V3 codec validates structural rows before recovery and logical envelopes after source-event range decoding. */\nconst releasedV3SessionFormatCodec = Object.freeze({\n\tversion: 3,\n\tdecodeHeader(value) {\n\t\treturn {\n\t\t\t...releasedV2SessionFormatCodec$1.decodeHeader(v2PhysicalHeader(value)),\n\t\t\tversion: 3\n\t\t};\n\t},\n\tcreateDecoder(value, recovery) {\n\t\tconst decoder = releasedV2SessionFormatCodec$1.createDecoder(v2PhysicalHeader(value), recovery);\n\t\tlet issue;\n\t\tlet acceptedInheritedCut;\n\t\treturn {\n\t\t\theader: {\n\t\t\t\t...decoder.header,\n\t\t\t\tversion: 3\n\t\t\t},\n\t\t\tdecodeRow(row, context) {\n\t\t\t\tassertV3RowAdmission(row);\n\t\t\t\tdecoder.decodeRow(row, {\n\t\t\t\t\temitRun: context.emitRun.bind(context),\n\t\t\t\t\temitEvent(event) {\n\t\t\t\t\t\tassertV3EventAdmission(event);\n\t\t\t\t\t\tif (issue === void 0) try {\n\t\t\t\t\t\t\tassertV3Event(event);\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tconst invalid = error;\n\t\t\t\t\t\t\tif (recovery === \"strict\") throw invalid;\n\t\t\t\t\t\t\tissue = invalid;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (issue !== void 0) {\n\t\t\t\t\t\t\tif (event.type === \"turn/end\") throw issue;\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (event.type === \"session/end-seed\" && isSessionFormatJsonObject(event.data) && event.data[\"inherited\"] === true) acceptedInheritedCut = event.seq;\n\t\t\t\t\t\tcontext.emitEvent(event);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\tfinish(context) {\n\t\t\t\tif (issue === void 0) return decoder.finish(context);\n\t\t\t\tif (decoder.header.isSeeded && acceptedInheritedCut === void 0) throw new SessionFormatError(\"format v3 seeded Session lacks an accepted inherited end-seed marker\");\n\t\t\t\tif (!decoder.header.isSeeded && acceptedInheritedCut !== void 0) throw new SessionFormatError(\"format v3 unseeded Session contains an inherited end-seed marker\");\n\t\t\t\treturn acceptedInheritedCut ?? 0;\n\t\t\t}\n\t\t};\n\t},\n\tencodeHeader(header, inheritedEventCount) {\n\t\tassertReleasedV3Header(header);\n\t\treturn {\n\t\t\t...releasedV2SessionFormatCodec$1.encodeHeader({\n\t\t\t\t...header,\n\t\t\t\tversion: 2\n\t\t\t}, inheritedEventCount),\n\t\t\tversion: 3\n\t\t};\n\t},\n\tencodeEvent(event) {\n\t\tassertV3EventAdmission(event);\n\t\tassertV3Event(event);\n\t\treturn releasedV2SessionFormatCodec$1.encodeEvent(event);\n\t}\n});\n/**\n* Validate owned V3 admission rules before a scanner or codec can discard a recoverable tail.\n* This checks only identified structural payloads; physical source-event ranges still belong to decoding.\n* @param row - parsed physical row, before envelope or compressed-range decoding.\n*/\nfunction assertV3RowAdmission(row) {\n\tassertV3StructuralRow(row);\n\tif (typeof row === \"object\" && row !== null && !Array.isArray(row)) assertV3EventAdmission(row);\n}\nfunction v2PhysicalHeader(value) {\n\tconst header = snapshotSessionFormatJson(value, \"format v3 physical header\");\n\tif (!isSessionFormatJsonObject(header) || header[\"version\"] !== 3) throw new SessionFormatError(\"expected format v3 physical Session header\");\n\treturn {\n\t\t...header,\n\t\tversion: 2\n\t};\n}\n//#endregion\n//#region lib/types/references.js\n/** Explicit local-coordinate remapping; captured generations and owner-local counters remain opaque. */\n/**\n* Remap only audited same-artifact references, preserving IDs and embedded model input.\n* @param event - validated source event.\n* @param seq - output event position.\n* @param mapping - earlier source positions mapped to output positions.\n* @returns the event in target coordinates.\n*/\nfunction remapEvent(event, seq, mapping) {\n\tconst one = (value) => {\n\t\tconst source = sessionFormatCount(value, \"source event reference\");\n\t\tconst target = mapping[source];\n\t\tif (source >= event.seq || target === void 0) throw new SessionFormatError(\"reference must name an earlier source event\");\n\t\treturn target;\n\t};\n\tconst list = (value) => {\n\t\tif (!Array.isArray(value)) throw new SessionFormatError(\"sequence references must be an array\");\n\t\treturn value.map(one);\n\t};\n\tconst range = (value) => {\n\t\tconst source = record(value, \"sequence range\");\n\t\treturn {\n\t\t\t...source,\n\t\t\tstart: one(source[\"start\"]),\n\t\t\tend: one(source[\"end\"])\n\t\t};\n\t};\n\tlet data = record(event.data, event.type);\n\tswitch (event.type) {\n\t\tcase \"command/done\":\n\t\t\tif (data[\"sourceEventSeq\"] !== void 0) data = {\n\t\t\t\t...data,\n\t\t\t\tsourceEventSeq: one(data[\"sourceEventSeq\"])\n\t\t\t};\n\t\t\tbreak;\n\t\tcase \"compaction/summary\":\n\t\tcase \"compaction/prune\":\n\t\t\tdata = {\n\t\t\t\t...data,\n\t\t\t\tshadowedRange: range(data[\"shadowedRange\"]),\n\t\t\t\tshadowedSeqs: list(data[\"shadowedSeqs\"])\n\t\t\t};\n\t\t\tbreak;\n\t\tcase \"session/title\":\n\t\tcase \"session/title-llm-request\":\n\t\t\tdata = {\n\t\t\t\t...data,\n\t\t\t\tmessageSeqs: list(data[\"messageSeqs\"])\n\t\t\t};\n\t\t\tbreak;\n\t}\n\treturn {\n\t\t...event,\n\t\tseq,\n\t\tdata,\n\t\t...event[\"sourceEventSeqs\"] === void 0 ? {} : { sourceEventSeqs: list(event[\"sourceEventSeqs\"]) },\n\t\t...event[\"surfaceOp\"] === void 0 || event[\"surfaceOp\"] === \"append\" ? {} : { surfaceOp: range(event[\"surfaceOp\"]) }\n\t};\n}\n//#endregion\n//#region lib/types/migration.js\n/** Streaming system-prompt promotion followed by canonical V3 envelope conversion. */\n/** Promote system prompts, remap audited references, and canonicalize envelopes and PTC vocabulary. */\nconst sessionFormatV2ToV3 = defineSessionFormatMigration({\n\tname: \"@deepseek-ai/dsh-session-format-v2-to-v3\",\n\tfromVersion: 2,\n\ttoVersion: 3,\n\tmigrateHeader(header) {\n\t\tassertReleasedV2Header(header);\n\t\treturn {\n\t\t\t...header,\n\t\t\tversion: 3,\n\t\t\t...header.agentPreset === \"code\" ? { agentPreset: \"ptc\" } : {}\n\t\t};\n\t},\n\tcreateStage(input) {\n\t\treturn new ReleasedV2ToV3Stage(input);\n\t},\n\tvalidateTargetHeader: assertReleasedV3Header\n});\nvar ReleasedV2ToV3Stage = class {\n\tinput;\n\theaderInheritedEventCount;\n\tmapping = [];\n\toriginalIds = /* @__PURE__ */ new Set();\n\tgeneratedIds = /* @__PURE__ */ new Set();\n\ttargetSeq = 0;\n\tsourceCut;\n\ttargetCut;\n\tlastForeignDeliverySeq;\n\tstep;\n\thead;\n\tprompt = \"\";\n\tconstructor(input) {\n\t\tthis.input = input;\n\t\tassertReleasedV2Header(input.sourceHeader);\n\t\tthis.sourceCut = input.sourceHeader.isSeeded ? void 0 : 0;\n\t\tthis.targetCut = input.sourceHeader.isSeeded ? void 0 : 0;\n\t\tif (!input.sourceHeader.isSeeded) this.headerInheritedEventCount = 0;\n\t}\n\ttransformEvent(event, context) {\n\t\tif (event.seq !== this.mapping.length) throw new SessionFormatError(\"format v2 source events must be dense\");\n\t\tassertEvent(event, 2);\n\t\tthis.observeMessageIds(event);\n\t\tlet source = event;\n\t\tconst data = record(event.data, event.type);\n\t\tif (event.type === \"request/header\") {\n\t\t\tconst { system, ...header } = record(data[\"header\"], \"request header\");\n\t\t\tconst prompt = typeof system === \"string\" ? system : \"\";\n\t\t\tif (prompt !== this.prompt) this.emitSystem(prompt, event, context);\n\t\t\tsource = {\n\t\t\t\t...event,\n\t\t\t\tdata: {\n\t\t\t\t\t...data,\n\t\t\t\t\theader\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tif (SURFACE_TYPES.has(event.type) && this.head === void 0) throw new SessionFormatUnsupportedMigrationError(\"format v2 surface before first step cannot acquire a system head without changing chronology\");\n\t\tif (event.type === \"session/end-seed\" && data[\"inherited\"] === true) {\n\t\t\tif (!this.input.sourceHeader.isSeeded) throw new SessionFormatError(\"format v2 unseeded Session contains an inherited end-seed marker\");\n\t\t\tthis.sourceCut = event.seq;\n\t\t\tthis.targetCut = this.targetSeq;\n\t\t}\n\t\tif (event.type === \"session-log-deepseek/delivery-accepted\") {\n\t\t\tif (data[\"sessionFormatVersion\"] === 3) throw new SessionFormatError(\"format v2 delivery marker claims target format v3\");\n\t\t\tif (data[\"sessionFormatVersion\"] === 2 && data[\"sessionId\"] !== this.input.sourceHeader.id) this.lastForeignDeliverySeq = event.seq;\n\t\t}\n\t\tconst target = remapEvent(source, this.targetSeq, this.mapping);\n\t\tthis.mapping.push(this.targetSeq++);\n\t\tcontext.emitEvent(canonicalizeTransformedEvent(renamePtcEvent(target)));\n\t\tif (event.type === \"step/start\") {\n\t\t\tthis.step = {\n\t\t\t\tturn: data[\"turn\"],\n\t\t\t\tstep: data[\"step\"]\n\t\t\t};\n\t\t\tif (this.head === void 0) this.emitSystem(\"\", event, context);\n\t\t} else if (event.type === \"step/end\" || event.type === \"turn/end\") this.step = void 0;\n\t}\n\ttransformRun(run, context) {\n\t\tfor (const event of run.expand()) this.transformEvent(event, context);\n\t}\n\tfinish(_context) {\n\t\tconst cut = sessionFormatCount(this.sourceCut, \"format v2 inherited end-seed marker\");\n\t\tif (this.input.sourceInheritedEventCount !== void 0 && this.input.sourceInheritedEventCount !== cut) throw new SessionFormatError(\"format v2 inherited end-seed marker disagrees with its source cut\");\n\t\tif (this.lastForeignDeliverySeq !== void 0 && (this.input.sourceHeader.parentSession === void 0 || this.lastForeignDeliverySeq >= cut)) throw new SessionFormatError(\"current-generation delivery marker names the wrong Session\");\n\t\treturn sessionFormatCount(this.targetCut, \"format v3 inherited event count\");\n\t}\n\tobserveMessageIds(event) {\n\t\tconst data = record(event.data, event.type);\n\t\tconst messages = event.type === \"user/message\" ? [data] : event.type === \"assistant/message\" || event.type === \"tool/result\" ? [record(data[\"message\"], \"message\")] : event.type === \"agent/inbox/spliced\" ? data[\"inserted\"] : event.type === \"session/title-llm-request\" ? data[\"messages\"] : [];\n\t\tfor (const message of messages) {\n\t\t\tconst id = message[\"id\"];\n\t\t\tif (this.generatedIds.has(id)) throw new SessionFormatUnsupportedMigrationError(\"source message id collides with a generated system message id\");\n\t\t\tthis.originalIds.add(id);\n\t\t}\n\t}\n\temitSystem(prompt, anchor, context) {\n\t\tif (this.step === void 0) throw new SessionFormatUnsupportedMigrationError(\"format v2 changed request prompt outside an open step cannot retain source chronology\");\n\t\tconst identity = JSON.stringify([\n\t\t\t\"session-format-v2-to-v3\",\n\t\t\tthis.input.sourceHeader.id,\n\t\t\tanchor.seq,\n\t\t\tanchor.type\n\t\t]);\n\t\tconst id = \"v2-to-v3-system-\" + createHash(\"sha256\").update(identity).digest(\"hex\");\n\t\tif (this.originalIds.has(id) || this.generatedIds.has(id)) throw new SessionFormatUnsupportedMigrationError(\"generated system message id collides with an existing message id\");\n\t\tthis.generatedIds.add(id);\n\t\tconst seq = this.targetSeq++;\n\t\tcontext.emitEvent(canonicalizeTransformedEvent({\n\t\t\ttype: \"system/message\",\n\t\t\tseq,\n\t\t\ttime: anchor.time,\n\t\t\tdata: {\n\t\t\t\t...this.step,\n\t\t\t\tmessage: {\n\t\t\t\t\tid,\n\t\t\t\t\trole: \"system\",\n\t\t\t\t\tsource: {\n\t\t\t\t\t\tkind: \"plugin\",\n\t\t\t\t\t\tplugin: \"@deepseek-ai/dsh-system-prompt\"\n\t\t\t\t\t},\n\t\t\t\t\tcontent: prompt === \"\" ? [] : [{\n\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\ttext: prompt\n\t\t\t\t\t}]\n\t\t\t\t}\n\t\t\t},\n\t\t\t...this.head === void 0 ? { surfaceOp: \"append\" } : {\n\t\t\t\tsurfaceOp: {\n\t\t\t\t\top: \"replace\",\n\t\t\t\t\tstart: this.head,\n\t\t\t\t\tend: this.head\n\t\t\t\t},\n\t\t\t\tsourceEventSeqs: [this.head]\n\t\t\t}\n\t\t}));\n\t\tthis.head = seq;\n\t\tthis.prompt = prompt;\n\t}\n};\n/** Source admission precedes renaming, so these payloads have exact audited fields. */\nfunction renamePtcEvent(event) {\n\tswitch (event.type) {\n\t\tcase \"agent-preset/selected\": return event.data[\"agentPreset\"] === \"code\" ? {\n\t\t\t...event,\n\t\t\tdata: {\n\t\t\t\t...event.data,\n\t\t\t\tagentPreset: \"ptc\"\n\t\t\t}\n\t\t} : event;\n\t\tcase \"tool/code-dispatch-start\": return {\n\t\t\t...event,\n\t\t\ttype: \"tool/ptc-dispatch-start\"\n\t\t};\n\t\tcase \"tool/code-dispatch\": return {\n\t\t\t...event,\n\t\t\ttype: \"tool/ptc-dispatch\"\n\t\t};\n\t\tcase \"user/message\": {\n\t\t\tconst data = renameMessageSource(event.data);\n\t\t\treturn data === event.data ? event : {\n\t\t\t\t...event,\n\t\t\t\tdata\n\t\t\t};\n\t\t}\n\t\tcase \"agent/inbox/spliced\":\n\t\tcase \"session/title-llm-request\": {\n\t\t\tconst data = event.data;\n\t\t\tconst key = event.type === \"agent/inbox/spliced\" ? \"inserted\" : \"messages\";\n\t\t\tconst messages = data[key];\n\t\t\tconst renamed = messages.map(renameMessageSource);\n\t\t\treturn renamed.every((message, index) => message === messages[index]) ? event : {\n\t\t\t\t...event,\n\t\t\t\tdata: {\n\t\t\t\t\t...data,\n\t\t\t\t\t[key]: renamed\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tdefault: return event;\n\t}\n}\nfunction renameMessageSource(message) {\n\tconst source = message[\"source\"];\n\tif (source[\"kind\"] !== \"plugin\" || source[\"plugin\"] !== \"tools-code-mode\") return message;\n\treturn {\n\t\t...message,\n\t\tsource: {\n\t\t\t...source,\n\t\t\tplugin: \"tools-ptc\"\n\t\t}\n\t};\n}\n//#endregion\nexport { assertReleasedV3Header, assertV3EventAdmission, assertV3RowAdmission, releasedV2SessionFormatCodec, releasedV3SessionFormatCodec, restoreReleasedV3Artifact, sessionFormatV2ToV3 };\n"],
5
+ "mappings": "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",
6
+ "names": ["PartialArguments", "keys", "target", "record", "source", "retained", "record", "record", "disposition", "data", "isAbsolute", "record", "record", "isAbsolute", "HEADER_REQUIRED", "HEADER_OPTIONAL", "decodePhysicalHeader", "record", "decodeEvent", "decodeSeqRanges", "assertSourceDeliveryMarker", "record", "disposition", "coordinate", "record"]
7
7
  }