@agimon-ai/po-core 0.0.0-alpha.2 → 0.0.0-alpha.21

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 (1149) hide show
  1. package/LICENSE +149 -21
  2. package/NOTICE +41 -0
  3. package/dist/agentModel.cjs +1 -1
  4. package/dist/agentModel.d.mts +2 -2
  5. package/dist/agentModel.mjs +1 -2
  6. package/dist/apiContracts.cjs +623 -802
  7. package/dist/apiContracts.cjs.map +1 -1
  8. package/dist/apiContracts.d.mts +277 -615
  9. package/dist/apiContracts.d.mts.map +1 -1
  10. package/dist/apiContracts.mjs +617 -794
  11. package/dist/apiContracts.mjs.map +1 -1
  12. package/dist/askUser.cjs +2 -2
  13. package/dist/askUser.d.mts +2 -2
  14. package/dist/askUser.mjs +1 -2
  15. package/dist/authorTools.mjs +1 -2
  16. package/dist/backgroundWork.cjs +3 -3
  17. package/dist/backgroundWork.d.mts +2 -2
  18. package/dist/backgroundWork.mjs +1 -2
  19. package/dist/bundleAssetPolicy.mjs +1 -2
  20. package/dist/chatgptAuth.cjs +3 -2
  21. package/dist/chatgptAuth.d.mts +3 -2
  22. package/dist/chatgptAuth.mjs +2 -1
  23. package/dist/childProcess.cjs +1 -1
  24. package/dist/childProcess.d.mts +2 -2
  25. package/dist/childProcess.mjs +1 -2
  26. package/dist/childSession.cjs +11 -6
  27. package/dist/childSession.d.mts +3 -3
  28. package/dist/childSession.mjs +3 -3
  29. package/dist/cockpitContainer.mjs +1 -2
  30. package/dist/config.cjs +1 -1
  31. package/dist/config.d.mts +3 -3
  32. package/dist/config.mjs +1 -2
  33. package/dist/contextApi.cjs +1 -0
  34. package/dist/contextApi.d.mts +2 -2
  35. package/dist/contextApi.mjs +2 -2
  36. package/dist/contextContributions.cjs +4 -4
  37. package/dist/contextContributions.d.mts +3 -3
  38. package/dist/contextContributions.mjs +3 -3
  39. package/dist/contextDetailStore.cjs +7 -5
  40. package/dist/contextDetailStore.cjs.map +1 -1
  41. package/dist/contextDetailStore.d.mts +2 -1
  42. package/dist/contextDetailStore.d.mts.map +1 -1
  43. package/dist/contextDetailStore.mjs +6 -4
  44. package/dist/contextDetailStore.mjs.map +1 -1
  45. package/dist/contextProjection.cjs +7 -2
  46. package/dist/contextProjection.cjs.map +1 -1
  47. package/dist/contextProjection.d.mts +4 -1
  48. package/dist/contextProjection.d.mts.map +1 -1
  49. package/dist/contextProjection.mjs +5 -2
  50. package/dist/contextProjection.mjs.map +1 -1
  51. package/dist/cordisHost.cjs +11 -11
  52. package/dist/cordisHost.d.mts +2 -2
  53. package/dist/cordisHost.mjs +1 -2
  54. package/dist/delegation.cjs +8 -8
  55. package/dist/delegation.d.mts +2 -2
  56. package/dist/delegation.mjs +1 -2
  57. package/dist/executionBudget.cjs +4 -3
  58. package/dist/executionBudget.cjs.map +1 -1
  59. package/dist/executionBudget.d.mts +2 -2
  60. package/dist/executionBudget.d.mts.map +1 -1
  61. package/dist/executionBudget.mjs +4 -3
  62. package/dist/executionBudget.mjs.map +1 -1
  63. package/dist/extensionFile.cjs +5 -0
  64. package/dist/extensionFile.d.mts +4 -2
  65. package/dist/extensionFile.mjs +4 -2
  66. package/dist/footer.d.mts +2 -2
  67. package/dist/footer.mjs +1 -2
  68. package/dist/headless.cjs +14 -14
  69. package/dist/headless.d.mts +2 -2
  70. package/dist/headless.mjs +1 -2
  71. package/dist/headlessHub.cjs +308 -109
  72. package/dist/headlessHub.cjs.map +1 -1
  73. package/dist/headlessHub.d.mts +71 -36
  74. package/dist/headlessHub.d.mts.map +1 -1
  75. package/dist/headlessHub.mjs +309 -110
  76. package/dist/headlessHub.mjs.map +1 -1
  77. package/dist/headlessProtocol.cjs +327 -0
  78. package/dist/headlessProtocol.cjs.map +1 -0
  79. package/dist/headlessProtocol.d.mts +30 -0
  80. package/dist/headlessProtocol.d.mts.map +1 -0
  81. package/dist/headlessProtocol.mjs +326 -0
  82. package/dist/headlessProtocol.mjs.map +1 -0
  83. package/dist/headlessServer.cjs +166 -151
  84. package/dist/headlessServer.cjs.map +1 -1
  85. package/dist/headlessServer.d.mts +13 -5
  86. package/dist/headlessServer.d.mts.map +1 -1
  87. package/dist/headlessServer.mjs +166 -151
  88. package/dist/headlessServer.mjs.map +1 -1
  89. package/dist/headlessSessionHost.d.mts +58 -21
  90. package/dist/headlessSessionHost.d.mts.map +1 -1
  91. package/dist/help.cjs +20 -20
  92. package/dist/help.d.mts +2 -2
  93. package/dist/help.mjs +2 -2
  94. package/dist/history.cjs +16 -20
  95. package/dist/history.d.mts +9 -7
  96. package/dist/history.mjs +6 -7
  97. package/dist/historyOwnership.cjs.map +1 -1
  98. package/dist/historyOwnership.d.mts +1 -1
  99. package/dist/historyOwnership.mjs.map +1 -1
  100. package/dist/hubChannel.cjs +9 -0
  101. package/dist/hubChannel.d.mts +3 -2
  102. package/dist/hubChannel.mjs +3 -2
  103. package/dist/index.cjs +26 -28
  104. package/dist/index.d.mts +6 -6
  105. package/dist/index.mjs +6 -6
  106. package/dist/interop/chord.mjs +1 -0
  107. package/dist/interop/chordContext.mjs +1 -0
  108. package/dist/json.cjs +11 -5
  109. package/dist/json.d.mts +4 -2
  110. package/dist/json.mjs +4 -2
  111. package/dist/kernel.cjs +1 -1
  112. package/dist/kernel.d.mts +3 -3
  113. package/dist/kernel.mjs +1 -2
  114. package/dist/leader.d.mts +2 -2
  115. package/dist/leader.mjs +1 -2
  116. package/dist/logSinkTelemetry.mjs +1 -2
  117. package/dist/machineApi.cjs +80 -74
  118. package/dist/machineApi.cjs.map +1 -1
  119. package/dist/machineApi.d.mts +5 -2
  120. package/dist/machineApi.d.mts.map +1 -1
  121. package/dist/machineApi.mjs +78 -71
  122. package/dist/machineApi.mjs.map +1 -1
  123. package/dist/main.cjs +2 -1
  124. package/dist/main.d.mts +2 -1
  125. package/dist/main.mjs +2 -1
  126. package/dist/mcpFacet.d.mts +3 -3
  127. package/dist/mcpProjection.cjs +13 -13
  128. package/dist/mcpProjection.d.mts +2 -2
  129. package/dist/mcpProjection.mjs +1 -2
  130. package/dist/mcpSchemaCost.cjs +4 -4
  131. package/dist/mcpSchemaCost.cjs.map +1 -1
  132. package/dist/mcpSchemaCost.d.mts +2 -2
  133. package/dist/mcpSchemaCost.mjs +4 -4
  134. package/dist/mcpSchemaCost.mjs.map +1 -1
  135. package/dist/mcpSession.cjs +7 -7
  136. package/dist/mcpSession.d.mts +2 -2
  137. package/dist/mcpSession.mjs +1 -2
  138. package/dist/mcpStatus.cjs +2 -2
  139. package/dist/mcpStatus.d.mts +2 -2
  140. package/dist/mcpStatus.mjs +1 -2
  141. package/dist/mcpToolResolver.cjs +3 -3
  142. package/dist/mcpToolResolver.d.mts +2 -2
  143. package/dist/mcpToolResolver.mjs +1 -2
  144. package/dist/mcpWidget.d.mts +2 -2
  145. package/dist/moduleResolution.cjs +43 -8
  146. package/dist/moduleResolution.cjs.map +1 -1
  147. package/dist/moduleResolution.d.mts +10 -1
  148. package/dist/moduleResolution.d.mts.map +1 -1
  149. package/dist/moduleResolution.mjs +40 -7
  150. package/dist/moduleResolution.mjs.map +1 -1
  151. package/dist/narration.cjs +3 -3
  152. package/dist/narration.d.mts +2 -2
  153. package/dist/narration.mjs +1 -2
  154. package/dist/native.cjs +9 -0
  155. package/dist/native.d.mts +4 -3
  156. package/dist/native.mjs +3 -2
  157. package/dist/nodePlatform.cjs +77 -0
  158. package/dist/nodePlatform.cjs.map +1 -0
  159. package/dist/nodePlatform.d.mts +17 -0
  160. package/dist/nodePlatform.d.mts.map +1 -0
  161. package/dist/nodePlatform.mjs +72 -0
  162. package/dist/nodePlatform.mjs.map +1 -0
  163. package/dist/notification.cjs +15 -15
  164. package/dist/notification.d.mts +2 -2
  165. package/dist/notification.mjs +1 -2
  166. package/dist/packageApi.cjs +11 -11
  167. package/dist/packageApi.d.mts +2 -2
  168. package/dist/packageApi.mjs +2 -2
  169. package/dist/packageApiServer.cjs +45 -27
  170. package/dist/packageApiServer.cjs.map +1 -1
  171. package/dist/packageApiServer.d.mts +36 -26
  172. package/dist/packageApiServer.d.mts.map +1 -1
  173. package/dist/packageApiServer.mjs +44 -26
  174. package/dist/packageApiServer.mjs.map +1 -1
  175. package/dist/piSettings.cjs +41 -20
  176. package/dist/piSettings.d.mts +4 -2
  177. package/dist/piSettings.mjs +4 -2
  178. package/dist/platform.cjs +62 -0
  179. package/dist/platform.d.mts +10 -0
  180. package/dist/platform.mjs +10 -0
  181. package/dist/pluginProtocol.cjs +7 -8
  182. package/dist/pluginProtocol.d.mts +2 -2
  183. package/dist/pluginProtocol.mjs +1 -2
  184. package/dist/poPackage.cjs +12 -0
  185. package/dist/poPackage.d.mts +3 -0
  186. package/dist/poPackage.mjs +3 -0
  187. package/dist/profileIdentity.cjs +1 -1
  188. package/dist/profileIdentity.d.mts +2 -2
  189. package/dist/profileIdentity.mjs +1 -2
  190. package/dist/protocol.cjs +3 -3
  191. package/dist/protocol.d.mts +2 -2
  192. package/dist/protocol.mjs +1 -2
  193. package/dist/readiness.cjs +6 -6
  194. package/dist/readiness.d.mts +2 -2
  195. package/dist/readiness.mjs +1 -2
  196. package/dist/remoteApi.cjs.map +1 -1
  197. package/dist/remoteApi.d.mts +2 -2
  198. package/dist/remoteApi.mjs.map +1 -1
  199. package/dist/remoteRuntime.cjs +42 -65
  200. package/dist/remoteRuntime.cjs.map +1 -1
  201. package/dist/remoteRuntime.d.mts +3 -2
  202. package/dist/remoteRuntime.d.mts.map +1 -1
  203. package/dist/remoteRuntime.mjs +41 -62
  204. package/dist/remoteRuntime.mjs.map +1 -1
  205. package/dist/runtimeConfig.cjs +4 -4
  206. package/dist/runtimeConfig.cjs.map +1 -1
  207. package/dist/runtimeConfig.d.mts +10 -9
  208. package/dist/runtimeConfig.d.mts.map +1 -1
  209. package/dist/runtimeConfig.mjs +4 -4
  210. package/dist/runtimeConfig.mjs.map +1 -1
  211. package/dist/runtimeContextApi.cjs +10 -3
  212. package/dist/runtimeContextApi.cjs.map +1 -1
  213. package/dist/runtimeContextApi.d.mts +3 -3
  214. package/dist/runtimeContextApi.d.mts.map +1 -1
  215. package/dist/runtimeContextApi.mjs +10 -3
  216. package/dist/runtimeContextApi.mjs.map +1 -1
  217. package/dist/runtimeCordisHost.cjs +46 -46
  218. package/dist/runtimeCordisHost.cjs.map +1 -1
  219. package/dist/runtimeCordisHost.d.mts +29 -28
  220. package/dist/runtimeCordisHost.d.mts.map +1 -1
  221. package/dist/runtimeCordisHost.mjs +42 -42
  222. package/dist/runtimeCordisHost.mjs.map +1 -1
  223. package/dist/runtimeIdentity.cjs +6 -9
  224. package/dist/runtimeIdentity.cjs.map +1 -1
  225. package/dist/runtimeIdentity.d.mts +5 -1
  226. package/dist/runtimeIdentity.d.mts.map +1 -1
  227. package/dist/runtimeIdentity.mjs +5 -8
  228. package/dist/runtimeIdentity.mjs.map +1 -1
  229. package/dist/runtimeJson.cjs +10 -45
  230. package/dist/runtimeJson.d.mts +3 -22
  231. package/dist/runtimeJson.mjs +3 -39
  232. package/dist/runtimeLogSinkTelemetry.cjs +19 -19
  233. package/dist/runtimeLogSinkTelemetry.cjs.map +1 -1
  234. package/dist/runtimeLogSinkTelemetry.d.mts +19 -19
  235. package/dist/runtimeLogSinkTelemetry.mjs +19 -19
  236. package/dist/runtimeLogSinkTelemetry.mjs.map +1 -1
  237. package/dist/runtimePackages.cjs +7 -2
  238. package/dist/runtimePackages.cjs.map +1 -1
  239. package/dist/runtimePackages.d.mts +4 -1
  240. package/dist/runtimePackages.d.mts.map +1 -1
  241. package/dist/runtimePackages.mjs +7 -2
  242. package/dist/runtimePackages.mjs.map +1 -1
  243. package/dist/runtimePiSettings.cjs +40 -263
  244. package/dist/runtimePiSettings.d.mts +3 -72
  245. package/dist/runtimePiSettings.mjs +3 -241
  246. package/dist/runtimeProtocol.cjs +19 -19
  247. package/dist/runtimeProtocol.cjs.map +1 -1
  248. package/dist/runtimeProtocol.d.mts +7 -7
  249. package/dist/runtimeProtocol.d.mts.map +1 -1
  250. package/dist/runtimeProtocol.mjs +17 -17
  251. package/dist/runtimeProtocol.mjs.map +1 -1
  252. package/dist/runtimeTransition.cjs +9 -9
  253. package/dist/runtimeTransition.cjs.map +1 -1
  254. package/dist/runtimeTransition.d.mts +10 -10
  255. package/dist/runtimeTransition.d.mts.map +1 -1
  256. package/dist/runtimeTransition.mjs +7 -7
  257. package/dist/runtimeTransition.mjs.map +1 -1
  258. package/dist/sandboxHarness.mjs +1 -2
  259. package/dist/server.cjs +3 -7
  260. package/dist/server.d.mts +6 -6
  261. package/dist/server.mjs +3 -4
  262. package/dist/serverPlugin.cjs +39 -0
  263. package/dist/serverPlugin.d.mts +12 -0
  264. package/dist/serverPlugin.mjs +11 -0
  265. package/dist/serverTelemetry.cjs +1 -1
  266. package/dist/serverTelemetry.cjs.map +1 -1
  267. package/dist/serverTelemetry.d.mts +2 -2
  268. package/dist/serverTelemetry.mjs +2 -2
  269. package/dist/serverTelemetry.mjs.map +1 -1
  270. package/dist/sessionFilesApi.cjs +41 -37
  271. package/dist/sessionFilesApi.cjs.map +1 -1
  272. package/dist/sessionFilesApi.d.mts +6 -3
  273. package/dist/sessionFilesApi.d.mts.map +1 -1
  274. package/dist/sessionFilesApi.mjs +41 -36
  275. package/dist/sessionFilesApi.mjs.map +1 -1
  276. package/dist/sessionProtocol.cjs +31 -6
  277. package/dist/sessionProtocol.d.mts +8 -3
  278. package/dist/sessionProtocol.mjs +8 -2
  279. package/dist/skills.cjs +5 -5
  280. package/dist/skills.d.mts +2 -2
  281. package/dist/skills.mjs +1 -2
  282. package/dist/sqliteSessionStorage.cjs +28 -50
  283. package/dist/sqliteSessionStorage.cjs.map +1 -1
  284. package/dist/sqliteSessionStorage.d.mts +13 -20
  285. package/dist/sqliteSessionStorage.d.mts.map +1 -1
  286. package/dist/sqliteSessionStorage.mjs +25 -48
  287. package/dist/sqliteSessionStorage.mjs.map +1 -1
  288. package/dist/src/constants/agentSettled.cjs +7 -0
  289. package/dist/src/constants/agentSettled.cjs.map +1 -0
  290. package/dist/src/constants/agentSettled.mjs +7 -0
  291. package/dist/src/constants/agentSettled.mjs.map +1 -0
  292. package/dist/src/constants/contextApi.cjs +3 -1
  293. package/dist/src/constants/contextApi.cjs.map +1 -1
  294. package/dist/src/constants/contextApi.d.mts +2 -1
  295. package/dist/src/constants/contextApi.d.mts.map +1 -1
  296. package/dist/src/constants/contextApi.mjs +3 -2
  297. package/dist/src/constants/contextApi.mjs.map +1 -1
  298. package/dist/src/constants/voiceTools.cjs +6 -6
  299. package/dist/src/constants/voiceTools.cjs.map +1 -1
  300. package/dist/src/constants/voiceTools.d.mts +3 -3
  301. package/dist/src/constants/voiceTools.mjs +4 -4
  302. package/dist/src/constants/voiceTools.mjs.map +1 -1
  303. package/dist/src/extensions/extensionFile.cjs +22 -5
  304. package/dist/src/extensions/extensionFile.cjs.map +1 -1
  305. package/dist/src/extensions/extensionFile.d.mts +17 -4
  306. package/dist/src/extensions/extensionFile.d.mts.map +1 -1
  307. package/dist/src/extensions/extensionFile.mjs +22 -6
  308. package/dist/src/extensions/extensionFile.mjs.map +1 -1
  309. package/dist/src/extensions/serverPlugin.cjs +231 -92
  310. package/dist/src/extensions/serverPlugin.cjs.map +1 -1
  311. package/dist/src/extensions/serverPlugin.d.mts +2 -2
  312. package/dist/src/extensions/serverPlugin.d.mts.map +1 -1
  313. package/dist/src/extensions/serverPlugin.mjs +232 -93
  314. package/dist/src/extensions/serverPlugin.mjs.map +1 -1
  315. package/dist/src/pi/piSessionRuntime.cjs +349 -142
  316. package/dist/src/pi/piSessionRuntime.cjs.map +1 -1
  317. package/dist/src/pi/piSessionRuntime.d.mts +18 -17
  318. package/dist/src/pi/piSessionRuntime.d.mts.map +1 -1
  319. package/dist/src/pi/piSessionRuntime.mjs +342 -135
  320. package/dist/src/pi/piSessionRuntime.mjs.map +1 -1
  321. package/dist/src/schemas/agentModel.cjs +2 -2
  322. package/dist/src/schemas/agentModel.cjs.map +1 -1
  323. package/dist/src/schemas/agentModel.d.mts +1 -1
  324. package/dist/src/schemas/agentModel.mjs +2 -2
  325. package/dist/src/schemas/agentModel.mjs.map +1 -1
  326. package/dist/src/schemas/apiContracts.d.mts +2 -2
  327. package/dist/src/schemas/apiContracts.d.mts.map +1 -1
  328. package/dist/src/schemas/askUser.cjs +4 -4
  329. package/dist/src/schemas/askUser.cjs.map +1 -1
  330. package/dist/src/schemas/askUser.d.mts +4 -4
  331. package/dist/src/schemas/askUser.d.mts.map +1 -1
  332. package/dist/src/schemas/askUser.mjs +3 -3
  333. package/dist/src/schemas/askUser.mjs.map +1 -1
  334. package/dist/src/schemas/backgroundWork.cjs +10 -10
  335. package/dist/src/schemas/backgroundWork.cjs.map +1 -1
  336. package/dist/src/schemas/backgroundWork.d.mts +9 -9
  337. package/dist/src/schemas/backgroundWork.d.mts.map +1 -1
  338. package/dist/src/schemas/backgroundWork.mjs +8 -8
  339. package/dist/src/schemas/backgroundWork.mjs.map +1 -1
  340. package/dist/src/schemas/childProcess.cjs +5 -5
  341. package/dist/src/schemas/childProcess.cjs.map +1 -1
  342. package/dist/src/schemas/childProcess.d.mts +2 -2
  343. package/dist/src/schemas/childProcess.mjs +5 -5
  344. package/dist/src/schemas/childProcess.mjs.map +1 -1
  345. package/dist/src/schemas/contextContributions.cjs +10 -10
  346. package/dist/src/schemas/contextContributions.cjs.map +1 -1
  347. package/dist/src/schemas/contextContributions.d.mts +16 -16
  348. package/dist/src/schemas/contextContributions.d.mts.map +1 -1
  349. package/dist/src/schemas/contextContributions.mjs +8 -8
  350. package/dist/src/schemas/contextContributions.mjs.map +1 -1
  351. package/dist/src/schemas/delegation.cjs +17 -17
  352. package/dist/src/schemas/delegation.cjs.map +1 -1
  353. package/dist/src/schemas/delegation.d.mts +16 -16
  354. package/dist/src/schemas/delegation.d.mts.map +1 -1
  355. package/dist/src/schemas/delegation.mjs +10 -10
  356. package/dist/src/schemas/delegation.mjs.map +1 -1
  357. package/dist/src/schemas/extensionFile.d.mts +23 -19
  358. package/dist/src/schemas/extensionFile.d.mts.map +1 -1
  359. package/dist/src/schemas/footer.cjs.map +1 -1
  360. package/dist/src/schemas/footer.d.mts +5 -5
  361. package/dist/src/schemas/footer.d.mts.map +1 -1
  362. package/dist/src/schemas/footer.mjs.map +1 -1
  363. package/dist/src/schemas/headless.cjs +37 -37
  364. package/dist/src/schemas/headless.cjs.map +1 -1
  365. package/dist/src/schemas/headless.d.mts +100 -101
  366. package/dist/src/schemas/headless.d.mts.map +1 -1
  367. package/dist/src/schemas/headless.mjs +24 -24
  368. package/dist/src/schemas/headless.mjs.map +1 -1
  369. package/dist/src/schemas/help.cjs +60 -60
  370. package/dist/src/schemas/help.cjs.map +1 -1
  371. package/dist/src/schemas/help.d.mts +43 -43
  372. package/dist/src/schemas/help.d.mts.map +1 -1
  373. package/dist/src/schemas/help.mjs +41 -41
  374. package/dist/src/schemas/help.mjs.map +1 -1
  375. package/dist/src/schemas/home.cjs +127 -0
  376. package/dist/src/schemas/home.cjs.map +1 -0
  377. package/dist/src/schemas/home.d.mts +63 -0
  378. package/dist/src/schemas/home.d.mts.map +1 -0
  379. package/dist/src/schemas/home.mjs +121 -0
  380. package/dist/src/schemas/home.mjs.map +1 -0
  381. package/dist/src/schemas/httpApiContracts.cjs +441 -0
  382. package/dist/src/schemas/httpApiContracts.cjs.map +1 -0
  383. package/dist/src/schemas/httpApiContracts.d.mts +78 -0
  384. package/dist/src/schemas/httpApiContracts.d.mts.map +1 -0
  385. package/dist/src/schemas/httpApiContracts.mjs +434 -0
  386. package/dist/src/schemas/httpApiContracts.mjs.map +1 -0
  387. package/dist/src/schemas/hubChannel.cjs +3 -0
  388. package/dist/src/schemas/hubChannel.cjs.map +1 -1
  389. package/dist/src/schemas/hubChannel.d.mts +84 -60
  390. package/dist/src/schemas/hubChannel.d.mts.map +1 -1
  391. package/dist/src/schemas/hubChannel.mjs +3 -1
  392. package/dist/src/schemas/hubChannel.mjs.map +1 -1
  393. package/dist/src/schemas/leader.cjs.map +1 -1
  394. package/dist/src/schemas/leader.d.mts +3 -3
  395. package/dist/src/schemas/leader.d.mts.map +1 -1
  396. package/dist/src/schemas/leader.mjs.map +1 -1
  397. package/dist/src/schemas/mcpBundle.d.mts +3 -3
  398. package/dist/src/schemas/mcpFacet.cjs.map +1 -1
  399. package/dist/src/schemas/mcpFacet.d.mts +22 -22
  400. package/dist/src/schemas/mcpFacet.d.mts.map +1 -1
  401. package/dist/src/schemas/mcpFacet.mjs.map +1 -1
  402. package/dist/src/schemas/mcpProjection.cjs +41 -41
  403. package/dist/src/schemas/mcpProjection.cjs.map +1 -1
  404. package/dist/src/schemas/mcpProjection.d.mts +31 -30
  405. package/dist/src/schemas/mcpProjection.d.mts.map +1 -1
  406. package/dist/src/schemas/mcpProjection.mjs +29 -29
  407. package/dist/src/schemas/mcpProjection.mjs.map +1 -1
  408. package/dist/src/schemas/mcpSession.cjs +23 -23
  409. package/dist/src/schemas/mcpSession.cjs.map +1 -1
  410. package/dist/src/schemas/mcpSession.d.mts +12 -12
  411. package/dist/src/schemas/mcpSession.d.mts.map +1 -1
  412. package/dist/src/schemas/mcpSession.mjs +18 -18
  413. package/dist/src/schemas/mcpSession.mjs.map +1 -1
  414. package/dist/src/schemas/mcpStatus.cjs +5 -5
  415. package/dist/src/schemas/mcpStatus.cjs.map +1 -1
  416. package/dist/src/schemas/mcpStatus.d.mts +4 -4
  417. package/dist/src/schemas/mcpStatus.d.mts.map +1 -1
  418. package/dist/src/schemas/mcpStatus.mjs +4 -4
  419. package/dist/src/schemas/mcpStatus.mjs.map +1 -1
  420. package/dist/src/schemas/mcpToolResolver.cjs +9 -9
  421. package/dist/src/schemas/mcpToolResolver.cjs.map +1 -1
  422. package/dist/src/schemas/mcpToolResolver.d.mts +7 -7
  423. package/dist/src/schemas/mcpToolResolver.d.mts.map +1 -1
  424. package/dist/src/schemas/mcpToolResolver.mjs +7 -7
  425. package/dist/src/schemas/mcpToolResolver.mjs.map +1 -1
  426. package/dist/src/schemas/narration.cjs +9 -9
  427. package/dist/src/schemas/narration.cjs.map +1 -1
  428. package/dist/src/schemas/narration.d.mts +5 -5
  429. package/dist/src/schemas/narration.d.mts.map +1 -1
  430. package/dist/src/schemas/narration.mjs +7 -7
  431. package/dist/src/schemas/narration.mjs.map +1 -1
  432. package/dist/src/schemas/notification.cjs +45 -45
  433. package/dist/src/schemas/notification.cjs.map +1 -1
  434. package/dist/src/schemas/notification.d.mts +22 -22
  435. package/dist/src/schemas/notification.d.mts.map +1 -1
  436. package/dist/src/schemas/notification.mjs +31 -31
  437. package/dist/src/schemas/notification.mjs.map +1 -1
  438. package/dist/src/schemas/packageApi.cjs +28 -28
  439. package/dist/src/schemas/packageApi.cjs.map +1 -1
  440. package/dist/src/schemas/packageApi.d.mts +91 -65
  441. package/dist/src/schemas/packageApi.d.mts.map +1 -1
  442. package/dist/src/schemas/packageApi.mjs +18 -18
  443. package/dist/src/schemas/packageApi.mjs.map +1 -1
  444. package/dist/src/schemas/platform.cjs +34 -0
  445. package/dist/src/schemas/platform.cjs.map +1 -0
  446. package/dist/src/schemas/platform.d.mts +75 -0
  447. package/dist/src/schemas/platform.d.mts.map +1 -0
  448. package/dist/src/schemas/platform.mjs +27 -0
  449. package/dist/src/schemas/platform.mjs.map +1 -0
  450. package/dist/src/schemas/pluginContributions.cjs.map +1 -1
  451. package/dist/src/schemas/pluginContributions.d.mts +12 -12
  452. package/dist/src/schemas/pluginContributions.d.mts.map +1 -1
  453. package/dist/src/schemas/pluginContributions.mjs.map +1 -1
  454. package/dist/src/schemas/pluginProtocol.cjs +24 -27
  455. package/dist/src/schemas/pluginProtocol.cjs.map +1 -1
  456. package/dist/src/schemas/pluginProtocol.d.mts +21 -21
  457. package/dist/src/schemas/pluginProtocol.d.mts.map +1 -1
  458. package/dist/src/schemas/pluginProtocol.mjs +18 -20
  459. package/dist/src/schemas/pluginProtocol.mjs.map +1 -1
  460. package/dist/src/schemas/profileIdentity.cjs +2 -2
  461. package/dist/src/schemas/profileIdentity.cjs.map +1 -1
  462. package/dist/src/schemas/profileIdentity.d.mts +1 -1
  463. package/dist/src/schemas/profileIdentity.mjs +2 -2
  464. package/dist/src/schemas/profileIdentity.mjs.map +1 -1
  465. package/dist/src/schemas/protocolChannelsContract.cjs +27 -0
  466. package/dist/src/schemas/protocolChannelsContract.cjs.map +1 -0
  467. package/dist/src/schemas/protocolChannelsContract.d.mts +37 -0
  468. package/dist/src/schemas/protocolChannelsContract.d.mts.map +1 -0
  469. package/dist/src/schemas/protocolChannelsContract.mjs +25 -0
  470. package/dist/src/schemas/protocolChannelsContract.mjs.map +1 -0
  471. package/dist/src/schemas/protocolContracts.cjs +168 -0
  472. package/dist/src/schemas/protocolContracts.cjs.map +1 -0
  473. package/dist/src/schemas/protocolContracts.d.mts +69 -0
  474. package/dist/src/schemas/protocolContracts.d.mts.map +1 -0
  475. package/dist/src/schemas/protocolContracts.mjs +164 -0
  476. package/dist/src/schemas/protocolContracts.mjs.map +1 -0
  477. package/dist/src/schemas/protocolHubContract.cjs +51 -0
  478. package/dist/src/schemas/protocolHubContract.cjs.map +1 -0
  479. package/dist/src/schemas/protocolHubContract.d.mts +218 -0
  480. package/dist/src/schemas/protocolHubContract.d.mts.map +1 -0
  481. package/dist/src/schemas/protocolHubContract.mjs +49 -0
  482. package/dist/src/schemas/protocolHubContract.mjs.map +1 -0
  483. package/dist/src/schemas/protocolSessionContract.cjs +22 -0
  484. package/dist/src/schemas/protocolSessionContract.cjs.map +1 -0
  485. package/dist/src/schemas/protocolSessionContract.d.mts +324 -0
  486. package/dist/src/schemas/protocolSessionContract.d.mts.map +1 -0
  487. package/dist/src/schemas/protocolSessionContract.mjs +22 -0
  488. package/dist/src/schemas/protocolSessionContract.mjs.map +1 -0
  489. package/dist/src/schemas/protocolThreadContract.cjs +21 -0
  490. package/dist/src/schemas/protocolThreadContract.cjs.map +1 -0
  491. package/dist/src/schemas/protocolThreadContract.d.mts +29 -0
  492. package/dist/src/schemas/protocolThreadContract.d.mts.map +1 -0
  493. package/dist/src/schemas/protocolThreadContract.mjs +20 -0
  494. package/dist/src/schemas/protocolThreadContract.mjs.map +1 -0
  495. package/dist/src/schemas/readiness.cjs +36 -36
  496. package/dist/src/schemas/readiness.cjs.map +1 -1
  497. package/dist/src/schemas/readiness.d.mts +37 -37
  498. package/dist/src/schemas/readiness.d.mts.map +1 -1
  499. package/dist/src/schemas/readiness.mjs +31 -31
  500. package/dist/src/schemas/readiness.mjs.map +1 -1
  501. package/dist/src/schemas/serverBundle.d.mts +5 -5
  502. package/dist/src/schemas/serverPlugin.cjs +103 -0
  503. package/dist/src/schemas/serverPlugin.cjs.map +1 -0
  504. package/dist/src/schemas/serverPlugin.d.mts +176 -0
  505. package/dist/src/schemas/serverPlugin.d.mts.map +1 -0
  506. package/dist/src/schemas/serverPlugin.mjs +95 -0
  507. package/dist/src/schemas/serverPlugin.mjs.map +1 -0
  508. package/dist/src/schemas/serverScope.cjs +37 -0
  509. package/dist/src/schemas/serverScope.cjs.map +1 -0
  510. package/dist/src/schemas/serverScope.d.mts +77 -0
  511. package/dist/src/schemas/serverScope.d.mts.map +1 -0
  512. package/dist/src/schemas/serverScope.mjs +33 -0
  513. package/dist/src/schemas/serverScope.mjs.map +1 -0
  514. package/dist/src/schemas/sessionApiContracts.cjs +320 -0
  515. package/dist/src/schemas/sessionApiContracts.cjs.map +1 -0
  516. package/dist/src/schemas/sessionApiContracts.mjs +318 -0
  517. package/dist/src/schemas/sessionApiContracts.mjs.map +1 -0
  518. package/dist/src/schemas/sessionProtocol.cjs +20 -13
  519. package/dist/src/schemas/sessionProtocol.cjs.map +1 -1
  520. package/dist/src/schemas/sessionProtocol.d.mts +37 -54
  521. package/dist/src/schemas/sessionProtocol.d.mts.map +1 -1
  522. package/dist/src/schemas/sessionProtocol.mjs +17 -8
  523. package/dist/src/schemas/sessionProtocol.mjs.map +1 -1
  524. package/dist/src/schemas/skills.cjs +16 -16
  525. package/dist/src/schemas/skills.cjs.map +1 -1
  526. package/dist/src/schemas/skills.d.mts +7 -7
  527. package/dist/src/schemas/skills.d.mts.map +1 -1
  528. package/dist/src/schemas/skills.mjs +12 -12
  529. package/dist/src/schemas/skills.mjs.map +1 -1
  530. package/dist/src/schemas/toolOverrides.cjs +9 -9
  531. package/dist/src/schemas/toolOverrides.cjs.map +1 -1
  532. package/dist/src/schemas/toolOverrides.d.mts +8 -8
  533. package/dist/src/schemas/toolOverrides.d.mts.map +1 -1
  534. package/dist/src/schemas/toolOverrides.mjs +7 -7
  535. package/dist/src/schemas/toolOverrides.mjs.map +1 -1
  536. package/dist/src/schemas/toolSurface.cjs +9 -9
  537. package/dist/src/schemas/toolSurface.cjs.map +1 -1
  538. package/dist/src/schemas/toolSurface.d.mts +13 -13
  539. package/dist/src/schemas/toolSurface.d.mts.map +1 -1
  540. package/dist/src/schemas/toolSurface.mjs +7 -7
  541. package/dist/src/schemas/toolSurface.mjs.map +1 -1
  542. package/dist/src/schemas/uiHub.cjs +9 -9
  543. package/dist/src/schemas/uiHub.cjs.map +1 -1
  544. package/dist/src/schemas/uiHub.d.mts +12 -12
  545. package/dist/src/schemas/uiHub.d.mts.map +1 -1
  546. package/dist/src/schemas/uiHub.mjs +7 -7
  547. package/dist/src/schemas/uiHub.mjs.map +1 -1
  548. package/dist/src/server/directHarnessRuntime.cjs +691 -775
  549. package/dist/src/server/directHarnessRuntime.cjs.map +1 -1
  550. package/dist/src/server/directHarnessRuntime.d.mts +5 -1
  551. package/dist/src/server/directHarnessRuntime.d.mts.map +1 -0
  552. package/dist/src/server/directHarnessRuntime.mjs +671 -754
  553. package/dist/src/server/directHarnessRuntime.mjs.map +1 -1
  554. package/dist/src/server/largeFrameLink.cjs +47 -0
  555. package/dist/src/server/largeFrameLink.cjs.map +1 -0
  556. package/dist/src/server/largeFrameLink.mjs +47 -0
  557. package/dist/src/server/largeFrameLink.mjs.map +1 -0
  558. package/dist/src/server/liveImport.cjs +1 -1
  559. package/dist/src/server/liveImport.cjs.map +1 -1
  560. package/dist/src/server/liveImport.d.mts +1 -1
  561. package/dist/src/server/liveImport.mjs +1 -1
  562. package/dist/src/server/liveImport.mjs.map +1 -1
  563. package/dist/src/server/mcpBundleLoader.cjs.map +1 -1
  564. package/dist/src/server/mcpBundleLoader.d.mts +6 -6
  565. package/dist/src/server/mcpBundleLoader.d.mts.map +1 -1
  566. package/dist/src/server/mcpBundleLoader.mjs.map +1 -1
  567. package/dist/src/server/serverPackages.cjs +60 -0
  568. package/dist/src/server/serverPackages.cjs.map +1 -0
  569. package/dist/src/server/serverPackages.d.mts +44 -0
  570. package/dist/src/server/serverPackages.d.mts.map +1 -0
  571. package/dist/src/server/serverPackages.mjs +59 -0
  572. package/dist/src/server/serverPackages.mjs.map +1 -0
  573. package/dist/src/server/serverScope.cjs +510 -0
  574. package/dist/src/server/serverScope.cjs.map +1 -0
  575. package/dist/src/server/serverScope.d.mts +123 -0
  576. package/dist/src/server/serverScope.d.mts.map +1 -0
  577. package/dist/src/server/serverScope.mjs +510 -0
  578. package/dist/src/server/serverScope.mjs.map +1 -0
  579. package/dist/src/server/sessionMcpHandler.cjs +3 -3
  580. package/dist/src/server/sessionMcpHandler.cjs.map +1 -1
  581. package/dist/src/server/sessionMcpHandler.mjs +4 -4
  582. package/dist/src/server/sessionMcpHandler.mjs.map +1 -1
  583. package/dist/src/server/sessionMcpRoutes.cjs +2 -1
  584. package/dist/src/server/sessionMcpRoutes.cjs.map +1 -1
  585. package/dist/src/server/sessionMcpRoutes.mjs +2 -1
  586. package/dist/src/server/sessionMcpRoutes.mjs.map +1 -1
  587. package/dist/src/server/threadJournals.cjs +38 -107
  588. package/dist/src/server/threadJournals.cjs.map +1 -1
  589. package/dist/src/server/threadJournals.mjs +38 -104
  590. package/dist/src/server/threadJournals.mjs.map +1 -1
  591. package/dist/src/services/apiSurfaceAssert/index.cjs +1 -1
  592. package/dist/src/services/apiSurfaceAssert/index.cjs.map +1 -1
  593. package/dist/src/services/apiSurfaceAssert/index.d.mts +6 -6
  594. package/dist/src/services/apiSurfaceAssert/index.mjs +1 -1
  595. package/dist/src/services/apiSurfaceAssert/index.mjs.map +1 -1
  596. package/dist/src/services/chatgptAuth/index.cjs +1 -220
  597. package/dist/src/services/chatgptAuth/index.cjs.map +1 -1
  598. package/dist/src/services/chatgptAuth/index.d.mts +0 -18
  599. package/dist/src/services/chatgptAuth/index.d.mts.map +1 -1
  600. package/dist/src/services/chatgptAuth/index.mjs +1 -217
  601. package/dist/src/services/chatgptAuth/index.mjs.map +1 -1
  602. package/dist/src/services/chatgptImages/index.cjs +1 -1
  603. package/dist/src/services/chatgptImages/index.cjs.map +1 -1
  604. package/dist/src/services/chatgptImages/index.mjs +1 -1
  605. package/dist/src/services/chatgptImages/index.mjs.map +1 -1
  606. package/dist/src/services/chatgptLogin/index.cjs +230 -0
  607. package/dist/src/services/chatgptLogin/index.cjs.map +1 -0
  608. package/dist/src/services/chatgptLogin/index.d.mts +21 -0
  609. package/dist/src/services/chatgptLogin/index.d.mts.map +1 -0
  610. package/dist/src/services/chatgptLogin/index.mjs +227 -0
  611. package/dist/src/services/chatgptLogin/index.mjs.map +1 -0
  612. package/dist/src/services/chatgptWebSearch/index.cjs +1 -1
  613. package/dist/src/services/chatgptWebSearch/index.cjs.map +1 -1
  614. package/dist/src/services/chatgptWebSearch/index.mjs +1 -1
  615. package/dist/src/services/chatgptWebSearch/index.mjs.map +1 -1
  616. package/dist/src/services/contextContributions/index.cjs +8 -8
  617. package/dist/src/services/contextContributions/index.cjs.map +1 -1
  618. package/dist/src/services/contextContributions/index.d.mts +3 -3
  619. package/dist/src/services/contextContributions/index.d.mts.map +1 -1
  620. package/dist/src/services/contextContributions/index.mjs +8 -8
  621. package/dist/src/services/contextContributions/index.mjs.map +1 -1
  622. package/dist/src/services/devProxyStore/devProxyRecords.cjs +59 -0
  623. package/dist/src/services/devProxyStore/devProxyRecords.cjs.map +1 -0
  624. package/dist/src/services/devProxyStore/devProxyRecords.mjs +56 -0
  625. package/dist/src/services/devProxyStore/devProxyRecords.mjs.map +1 -0
  626. package/dist/src/services/devProxyStore/index.cjs +7 -101
  627. package/dist/src/services/devProxyStore/index.cjs.map +1 -1
  628. package/dist/src/services/devProxyStore/index.mjs +7 -101
  629. package/dist/src/services/devProxyStore/index.mjs.map +1 -1
  630. package/dist/src/services/devProxyStore/sync.cjs +66 -0
  631. package/dist/src/services/devProxyStore/sync.cjs.map +1 -0
  632. package/dist/src/services/devProxyStore/sync.mjs +63 -0
  633. package/dist/src/services/devProxyStore/sync.mjs.map +1 -0
  634. package/dist/src/services/durableNavigation/docs.cjs +15 -0
  635. package/dist/src/services/durableNavigation/docs.cjs.map +1 -0
  636. package/dist/src/services/durableNavigation/docs.mjs +16 -0
  637. package/dist/src/services/durableNavigation/docs.mjs.map +1 -0
  638. package/dist/src/services/durableNavigation/index.cjs +3 -18
  639. package/dist/src/services/durableNavigation/index.cjs.map +1 -1
  640. package/dist/src/services/durableNavigation/index.mjs +2 -17
  641. package/dist/src/services/durableNavigation/index.mjs.map +1 -1
  642. package/dist/src/services/durableQueue/docs.cjs +12 -0
  643. package/dist/src/services/durableQueue/docs.cjs.map +1 -0
  644. package/dist/src/services/durableQueue/docs.mjs +13 -0
  645. package/dist/src/services/durableQueue/docs.mjs.map +1 -0
  646. package/dist/src/services/durableQueue/index.cjs +151 -0
  647. package/dist/src/services/durableQueue/index.cjs.map +1 -0
  648. package/dist/src/services/durableQueue/index.mjs +149 -0
  649. package/dist/src/services/durableQueue/index.mjs.map +1 -0
  650. package/dist/src/services/durableRequestReceipts/docs.cjs +11 -0
  651. package/dist/src/services/durableRequestReceipts/docs.cjs.map +1 -0
  652. package/dist/src/services/durableRequestReceipts/docs.mjs +12 -0
  653. package/dist/src/services/durableRequestReceipts/docs.mjs.map +1 -0
  654. package/dist/src/services/{requestReceipts → durableRequestReceipts}/index.cjs +10 -16
  655. package/dist/src/services/durableRequestReceipts/index.cjs.map +1 -0
  656. package/dist/src/services/durableRequestReceipts/index.d.mts +12 -0
  657. package/dist/src/services/durableRequestReceipts/index.d.mts.map +1 -0
  658. package/dist/src/services/{requestReceipts → durableRequestReceipts}/index.mjs +7 -13
  659. package/dist/src/services/durableRequestReceipts/index.mjs.map +1 -0
  660. package/dist/src/services/durableSession/docs.cjs +65 -0
  661. package/dist/src/services/durableSession/docs.cjs.map +1 -0
  662. package/dist/src/services/durableSession/docs.d.mts +17 -0
  663. package/dist/src/services/durableSession/docs.d.mts.map +1 -0
  664. package/dist/src/services/durableSession/docs.mjs +60 -0
  665. package/dist/src/services/durableSession/docs.mjs.map +1 -0
  666. package/dist/src/services/durableSession/index.cjs +21 -0
  667. package/dist/src/services/durableSession/index.cjs.map +1 -0
  668. package/dist/src/services/durableSession/index.d.mts +13 -0
  669. package/dist/src/services/durableSession/index.d.mts.map +1 -0
  670. package/dist/src/services/durableSession/index.mjs +20 -0
  671. package/dist/src/services/durableSession/index.mjs.map +1 -0
  672. package/dist/src/services/durableSubagents/docs.cjs +15 -0
  673. package/dist/src/services/durableSubagents/docs.cjs.map +1 -0
  674. package/dist/src/services/durableSubagents/docs.mjs +16 -0
  675. package/dist/src/services/durableSubagents/docs.mjs.map +1 -0
  676. package/dist/src/services/durableSubagents/extension.cjs +11 -0
  677. package/dist/src/services/durableSubagents/extension.cjs.map +1 -0
  678. package/dist/src/services/durableSubagents/extension.mjs +12 -0
  679. package/dist/src/services/durableSubagents/extension.mjs.map +1 -0
  680. package/dist/src/services/durableSubagents/index.cjs +95 -0
  681. package/dist/src/services/durableSubagents/index.cjs.map +1 -0
  682. package/dist/src/services/durableSubagents/index.mjs +90 -0
  683. package/dist/src/services/durableSubagents/index.mjs.map +1 -0
  684. package/dist/src/services/durableSubagents/tasks.cjs +25 -0
  685. package/dist/src/services/durableSubagents/tasks.cjs.map +1 -0
  686. package/dist/src/services/durableSubagents/tasks.mjs +26 -0
  687. package/dist/src/services/durableSubagents/tasks.mjs.map +1 -0
  688. package/dist/src/services/headlessClient/index.cjs +20 -13
  689. package/dist/src/services/headlessClient/index.cjs.map +1 -1
  690. package/dist/src/services/headlessClient/index.mjs +21 -14
  691. package/dist/src/services/headlessClient/index.mjs.map +1 -1
  692. package/dist/src/services/historyOwnership/type.d.mts +15 -0
  693. package/dist/src/services/historyOwnership/type.d.mts.map +1 -0
  694. package/dist/src/services/hubChannelHarness/index.cjs +2 -2
  695. package/dist/src/services/hubChannelHarness/index.cjs.map +1 -1
  696. package/dist/src/services/hubChannelHarness/index.d.mts +8 -8
  697. package/dist/src/services/hubChannelHarness/index.d.mts.map +1 -1
  698. package/dist/src/services/hubChannelHarness/index.mjs +2 -2
  699. package/dist/src/services/hubChannelHarness/index.mjs.map +1 -1
  700. package/dist/src/services/json/core.cjs +30 -0
  701. package/dist/src/services/json/core.cjs.map +1 -0
  702. package/dist/src/services/json/core.d.mts +21 -0
  703. package/dist/src/services/json/core.d.mts.map +1 -0
  704. package/dist/src/services/json/core.mjs +26 -0
  705. package/dist/src/services/json/core.mjs.map +1 -0
  706. package/dist/src/services/json/sync.cjs +48 -0
  707. package/dist/src/services/json/sync.cjs.map +1 -0
  708. package/dist/src/services/json/sync.d.mts +22 -0
  709. package/dist/src/services/json/sync.d.mts.map +1 -0
  710. package/dist/src/services/json/sync.mjs +43 -0
  711. package/dist/src/services/json/sync.mjs.map +1 -0
  712. package/dist/src/services/kernel/index.cjs +2 -2
  713. package/dist/src/services/kernel/index.cjs.map +1 -1
  714. package/dist/src/services/kernel/index.d.mts +3 -3
  715. package/dist/src/services/kernel/index.d.mts.map +1 -1
  716. package/dist/src/services/kernel/index.mjs +2 -2
  717. package/dist/src/services/kernel/index.mjs.map +1 -1
  718. package/dist/src/services/nativeChildTools/index.cjs +16 -0
  719. package/dist/src/services/nativeChildTools/index.cjs.map +1 -0
  720. package/dist/src/services/nativeChildTools/index.mjs +16 -0
  721. package/dist/src/services/nativeChildTools/index.mjs.map +1 -0
  722. package/dist/src/services/nodeHost/index.cjs +30 -0
  723. package/dist/src/services/nodeHost/index.cjs.map +1 -0
  724. package/dist/src/services/nodeHost/index.d.mts +16 -0
  725. package/dist/src/services/nodeHost/index.d.mts.map +1 -0
  726. package/dist/src/services/nodeHost/index.mjs +27 -0
  727. package/dist/src/services/nodeHost/index.mjs.map +1 -0
  728. package/dist/src/services/nodeModelDependencies/index.cjs +89 -0
  729. package/dist/src/services/nodeModelDependencies/index.cjs.map +1 -0
  730. package/dist/src/services/nodeModelDependencies/index.mjs +86 -0
  731. package/dist/src/services/nodeModelDependencies/index.mjs.map +1 -0
  732. package/dist/src/services/openSessionRegistry/index.cjs +6 -128
  733. package/dist/src/services/openSessionRegistry/index.cjs.map +1 -1
  734. package/dist/src/services/openSessionRegistry/index.d.mts +5 -36
  735. package/dist/src/services/openSessionRegistry/index.mjs +6 -128
  736. package/dist/src/services/openSessionRegistry/index.mjs.map +1 -1
  737. package/dist/src/services/openSessionRegistry/openSessionRecords.cjs +87 -0
  738. package/dist/src/services/openSessionRegistry/openSessionRecords.cjs.map +1 -0
  739. package/dist/src/services/openSessionRegistry/openSessionRecords.d.mts +30 -0
  740. package/dist/src/services/openSessionRegistry/openSessionRecords.d.mts.map +1 -0
  741. package/dist/src/services/openSessionRegistry/openSessionRecords.mjs +81 -0
  742. package/dist/src/services/openSessionRegistry/openSessionRecords.mjs.map +1 -0
  743. package/dist/src/services/openSessionRegistry/sync.cjs +71 -0
  744. package/dist/src/services/openSessionRegistry/sync.cjs.map +1 -0
  745. package/dist/src/services/openSessionRegistry/sync.d.mts +14 -0
  746. package/dist/src/services/openSessionRegistry/sync.d.mts.map +1 -0
  747. package/dist/src/services/openSessionRegistry/sync.mjs +68 -0
  748. package/dist/src/services/openSessionRegistry/sync.mjs.map +1 -0
  749. package/dist/src/services/packageApiHarness/index.cjs +1 -1
  750. package/dist/src/services/packageApiHarness/index.cjs.map +1 -1
  751. package/dist/src/services/packageApiHarness/index.d.mts +6 -6
  752. package/dist/src/services/packageApiHarness/index.d.mts.map +1 -1
  753. package/dist/src/services/packageApiHarness/index.mjs +2 -2
  754. package/dist/src/services/packageApiHarness/index.mjs.map +1 -1
  755. package/dist/src/services/piArgs/index.cjs +53 -0
  756. package/dist/src/services/piArgs/index.cjs.map +1 -0
  757. package/dist/src/services/piArgs/index.d.mts +6 -0
  758. package/dist/src/services/piArgs/index.d.mts.map +1 -0
  759. package/dist/src/services/piArgs/index.mjs +53 -0
  760. package/dist/src/services/piArgs/index.mjs.map +1 -0
  761. package/dist/src/services/piExtensionHost/index.cjs +47 -39
  762. package/dist/src/services/piExtensionHost/index.cjs.map +1 -1
  763. package/dist/src/services/piExtensionHost/index.d.mts +83 -0
  764. package/dist/src/services/piExtensionHost/index.d.mts.map +1 -0
  765. package/dist/src/services/piExtensionHost/index.mjs +47 -38
  766. package/dist/src/services/piExtensionHost/index.mjs.map +1 -1
  767. package/dist/src/services/piHelpTools/index.cjs +5 -5
  768. package/dist/src/services/piHelpTools/index.cjs.map +1 -1
  769. package/dist/src/services/piHelpTools/index.d.mts.map +1 -1
  770. package/dist/src/services/piHelpTools/index.mjs +7 -7
  771. package/dist/src/services/piHelpTools/index.mjs.map +1 -1
  772. package/dist/src/services/piMessages/index.cjs +106 -0
  773. package/dist/src/services/piMessages/index.cjs.map +1 -0
  774. package/dist/src/services/piMessages/index.mjs +105 -0
  775. package/dist/src/services/piMessages/index.mjs.map +1 -0
  776. package/dist/src/services/piSessionEntries/index.cjs +4 -4
  777. package/dist/src/services/piSessionEntries/index.cjs.map +1 -1
  778. package/dist/src/services/piSessionEntries/index.mjs +3 -3
  779. package/dist/src/services/piSessionEntries/index.mjs.map +1 -1
  780. package/dist/src/services/piSettings/core.cjs +308 -0
  781. package/dist/src/services/piSettings/core.cjs.map +1 -0
  782. package/dist/src/services/piSettings/core.d.mts +102 -0
  783. package/dist/src/services/piSettings/core.d.mts.map +1 -0
  784. package/dist/src/services/piSettings/core.mjs +276 -0
  785. package/dist/src/services/piSettings/core.mjs.map +1 -0
  786. package/dist/src/services/piSettings/sync.cjs +119 -0
  787. package/dist/src/services/piSettings/sync.cjs.map +1 -0
  788. package/dist/src/services/piSettings/sync.d.mts +44 -0
  789. package/dist/src/services/piSettings/sync.d.mts.map +1 -0
  790. package/dist/src/services/piSettings/sync.mjs +110 -0
  791. package/dist/src/services/piSettings/sync.mjs.map +1 -0
  792. package/dist/src/services/piSummary/index.cjs +7 -0
  793. package/dist/src/services/piSummary/index.cjs.map +1 -0
  794. package/dist/src/services/piSummary/index.mjs +7 -0
  795. package/dist/src/services/piSummary/index.mjs.map +1 -0
  796. package/dist/src/services/platformFiles/index.cjs +44 -0
  797. package/dist/src/services/platformFiles/index.cjs.map +1 -0
  798. package/dist/src/services/platformFiles/index.d.mts +16 -0
  799. package/dist/src/services/platformFiles/index.d.mts.map +1 -0
  800. package/dist/src/services/platformFiles/index.mjs +39 -0
  801. package/dist/src/services/platformFiles/index.mjs.map +1 -0
  802. package/dist/src/services/pluginLifecycle/index.cjs +19 -13
  803. package/dist/src/services/pluginLifecycle/index.cjs.map +1 -1
  804. package/dist/src/services/pluginLifecycle/index.d.mts +2 -0
  805. package/dist/src/services/pluginLifecycle/index.d.mts.map +1 -1
  806. package/dist/src/services/pluginLifecycle/index.mjs +19 -14
  807. package/dist/src/services/pluginLifecycle/index.mjs.map +1 -1
  808. package/dist/src/services/poPackage/core.cjs +73 -0
  809. package/dist/src/services/poPackage/core.cjs.map +1 -0
  810. package/dist/src/services/poPackage/core.d.mts +32 -0
  811. package/dist/src/services/poPackage/core.d.mts.map +1 -0
  812. package/dist/src/services/poPackage/core.mjs +66 -0
  813. package/dist/src/services/poPackage/core.mjs.map +1 -0
  814. package/dist/src/services/poPackage/sync.cjs +55 -0
  815. package/dist/src/services/poPackage/sync.cjs.map +1 -0
  816. package/dist/src/services/poPackage/sync.d.mts +21 -0
  817. package/dist/src/services/poPackage/sync.d.mts.map +1 -0
  818. package/dist/src/services/poPackage/sync.mjs +50 -0
  819. package/dist/src/services/poPackage/sync.mjs.map +1 -0
  820. package/dist/src/services/providerAuth/index.cjs +11 -7
  821. package/dist/src/services/providerAuth/index.cjs.map +1 -1
  822. package/dist/src/services/providerAuth/index.mjs +11 -7
  823. package/dist/src/services/providerAuth/index.mjs.map +1 -1
  824. package/dist/src/services/publicFileShares/index.cjs +1 -1
  825. package/dist/src/services/publicFileShares/index.cjs.map +1 -1
  826. package/dist/src/services/publicFileShares/index.d.mts +2 -2
  827. package/dist/src/services/publicFileShares/index.mjs +2 -2
  828. package/dist/src/services/publicFileShares/index.mjs.map +1 -1
  829. package/dist/src/services/remoteAccess/index.d.mts +1 -0
  830. package/dist/src/services/remoteAccess/index.d.mts.map +1 -1
  831. package/dist/src/services/remoteAccessStore/index.cjs +8 -190
  832. package/dist/src/services/remoteAccessStore/index.cjs.map +1 -1
  833. package/dist/src/services/remoteAccessStore/index.d.mts +2 -0
  834. package/dist/src/services/remoteAccessStore/index.mjs +7 -187
  835. package/dist/src/services/remoteAccessStore/index.mjs.map +1 -1
  836. package/dist/src/services/remoteAccessStore/remoteAccessRecords.cjs +98 -0
  837. package/dist/src/services/remoteAccessStore/remoteAccessRecords.cjs.map +1 -0
  838. package/dist/src/services/remoteAccessStore/remoteAccessRecords.mjs +88 -0
  839. package/dist/src/services/remoteAccessStore/remoteAccessRecords.mjs.map +1 -0
  840. package/dist/src/services/remoteAccessStore/sync.cjs +111 -0
  841. package/dist/src/services/remoteAccessStore/sync.cjs.map +1 -0
  842. package/dist/src/services/remoteAccessStore/sync.mjs +108 -0
  843. package/dist/src/services/remoteAccessStore/sync.mjs.map +1 -0
  844. package/dist/src/services/runtimeIdentity/sync.cjs +23 -0
  845. package/dist/src/services/runtimeIdentity/sync.cjs.map +1 -0
  846. package/dist/src/services/runtimeIdentity/sync.d.mts +9 -0
  847. package/dist/src/services/runtimeIdentity/sync.d.mts.map +1 -0
  848. package/dist/src/services/runtimeIdentity/sync.mjs +20 -0
  849. package/dist/src/services/runtimeIdentity/sync.mjs.map +1 -0
  850. package/dist/src/services/serialRunner/index.cjs +25 -0
  851. package/dist/src/services/serialRunner/index.cjs.map +1 -0
  852. package/dist/src/services/serialRunner/index.d.mts +10 -0
  853. package/dist/src/services/serialRunner/index.d.mts.map +1 -0
  854. package/dist/src/services/serialRunner/index.mjs +25 -0
  855. package/dist/src/services/serialRunner/index.mjs.map +1 -0
  856. package/dist/src/services/{serverFacet → serverHost}/index.cjs +5 -5
  857. package/dist/src/services/serverHost/index.cjs.map +1 -0
  858. package/dist/src/services/serverHost/index.d.mts +31 -0
  859. package/dist/src/services/serverHost/index.d.mts.map +1 -0
  860. package/dist/src/services/{serverFacet → serverHost}/index.mjs +5 -5
  861. package/dist/src/services/serverHost/index.mjs.map +1 -0
  862. package/dist/src/services/sessionAttachments/index.cjs +4 -3
  863. package/dist/src/services/sessionAttachments/index.cjs.map +1 -1
  864. package/dist/src/services/sessionAttachments/index.d.mts +1 -6
  865. package/dist/src/services/sessionAttachments/index.d.mts.map +1 -1
  866. package/dist/src/services/sessionAttachments/index.mjs +3 -2
  867. package/dist/src/services/sessionAttachments/index.mjs.map +1 -1
  868. package/dist/src/services/sessionAttachments/type.d.mts +9 -0
  869. package/dist/src/services/sessionAttachments/type.d.mts.map +1 -0
  870. package/dist/src/services/sessionFiles/index.cjs +96 -0
  871. package/dist/src/services/sessionFiles/index.cjs.map +1 -0
  872. package/dist/src/services/sessionFiles/index.d.mts +33 -0
  873. package/dist/src/services/sessionFiles/index.d.mts.map +1 -0
  874. package/dist/src/services/sessionFiles/index.mjs +89 -0
  875. package/dist/src/services/sessionFiles/index.mjs.map +1 -0
  876. package/dist/src/services/sessionFiles/sessionDirectory.cjs +66 -0
  877. package/dist/src/services/sessionFiles/sessionDirectory.cjs.map +1 -0
  878. package/dist/src/services/sessionFiles/sessionDirectory.mjs +62 -0
  879. package/dist/src/services/sessionFiles/sessionDirectory.mjs.map +1 -0
  880. package/dist/src/services/sessionGitStatus/index.cjs +31 -33
  881. package/dist/src/services/sessionGitStatus/index.cjs.map +1 -1
  882. package/dist/src/services/sessionGitStatus/index.mjs +31 -33
  883. package/dist/src/services/sessionGitStatus/index.mjs.map +1 -1
  884. package/dist/src/services/sessionPresentation/index.cjs +3 -27
  885. package/dist/src/services/sessionPresentation/index.cjs.map +1 -1
  886. package/dist/src/services/sessionPresentation/index.mjs +3 -27
  887. package/dist/src/services/sessionPresentation/index.mjs.map +1 -1
  888. package/dist/src/services/skillPrompt/index.cjs +11 -0
  889. package/dist/src/services/skillPrompt/index.cjs.map +1 -0
  890. package/dist/src/services/skillPrompt/index.mjs +11 -0
  891. package/dist/src/services/skillPrompt/index.mjs.map +1 -0
  892. package/dist/src/services/sqliteSessionHistory/index.cjs +44 -30
  893. package/dist/src/services/sqliteSessionHistory/index.cjs.map +1 -1
  894. package/dist/src/services/sqliteSessionHistory/index.d.mts +7 -4
  895. package/dist/src/services/sqliteSessionHistory/index.d.mts.map +1 -1
  896. package/dist/src/services/sqliteSessionHistory/index.mjs +43 -28
  897. package/dist/src/services/sqliteSessionHistory/index.mjs.map +1 -1
  898. package/dist/src/services/sqliteTranscriptReader/index.cjs +21 -45
  899. package/dist/src/services/sqliteTranscriptReader/index.cjs.map +1 -1
  900. package/dist/src/services/sqliteTranscriptReader/index.d.mts +3 -2
  901. package/dist/src/services/sqliteTranscriptReader/index.d.mts.map +1 -1
  902. package/dist/src/services/sqliteTranscriptReader/index.mjs +16 -38
  903. package/dist/src/services/sqliteTranscriptReader/index.mjs.map +1 -1
  904. package/dist/src/services/testMode/index.cjs +162 -0
  905. package/dist/src/services/testMode/index.cjs.map +1 -0
  906. package/dist/src/services/testMode/index.d.mts +17 -0
  907. package/dist/src/services/testMode/index.d.mts.map +1 -0
  908. package/dist/src/services/testMode/index.mjs +155 -0
  909. package/dist/src/services/testMode/index.mjs.map +1 -0
  910. package/dist/src/services/toolOverrides/index.cjs +6 -6
  911. package/dist/src/services/toolOverrides/index.cjs.map +1 -1
  912. package/dist/src/services/toolOverrides/index.d.mts +3 -3
  913. package/dist/src/services/toolOverrides/index.d.mts.map +1 -1
  914. package/dist/src/services/toolOverrides/index.mjs +6 -6
  915. package/dist/src/services/toolOverrides/index.mjs.map +1 -1
  916. package/dist/src/services/toolPrompt/index.d.mts +17 -0
  917. package/dist/src/services/toolPrompt/index.d.mts.map +1 -0
  918. package/dist/src/services/toolSurface/index.cjs +3 -3
  919. package/dist/src/services/toolSurface/index.cjs.map +1 -1
  920. package/dist/src/services/toolSurface/index.d.mts +3 -3
  921. package/dist/src/services/toolSurface/index.d.mts.map +1 -1
  922. package/dist/src/services/toolSurface/index.mjs +4 -4
  923. package/dist/src/services/toolSurface/index.mjs.map +1 -1
  924. package/dist/src/services/traceContext/index.cjs.map +1 -1
  925. package/dist/src/services/traceContext/index.mjs.map +1 -1
  926. package/dist/src/services/transcriptPages/index.cjs +159 -33
  927. package/dist/src/services/transcriptPages/index.cjs.map +1 -1
  928. package/dist/src/services/transcriptPages/index.mjs +158 -34
  929. package/dist/src/services/transcriptPages/index.mjs.map +1 -1
  930. package/dist/src/services/voiceToolsContract/index.cjs +7 -7
  931. package/dist/src/services/voiceToolsContract/index.cjs.map +1 -1
  932. package/dist/src/services/voiceToolsContract/index.d.mts +4 -4
  933. package/dist/src/services/voiceToolsContract/index.d.mts.map +1 -1
  934. package/dist/src/services/voiceToolsContract/index.mjs +7 -7
  935. package/dist/src/services/voiceToolsContract/index.mjs.map +1 -1
  936. package/dist/src/services/workspaceRegistry/index.cjs +9 -179
  937. package/dist/src/services/workspaceRegistry/index.cjs.map +1 -1
  938. package/dist/src/services/workspaceRegistry/index.d.mts +5 -47
  939. package/dist/src/services/workspaceRegistry/index.mjs +7 -176
  940. package/dist/src/services/workspaceRegistry/index.mjs.map +1 -1
  941. package/dist/src/services/workspaceRegistry/sync.cjs +148 -0
  942. package/dist/src/services/workspaceRegistry/sync.cjs.map +1 -0
  943. package/dist/src/services/workspaceRegistry/sync.d.mts +34 -0
  944. package/dist/src/services/workspaceRegistry/sync.d.mts.map +1 -0
  945. package/dist/src/services/workspaceRegistry/sync.mjs +140 -0
  946. package/dist/src/services/workspaceRegistry/sync.mjs.map +1 -0
  947. package/dist/src/services/workspaceRegistry/workspaceRecords.cjs +114 -0
  948. package/dist/src/services/workspaceRegistry/workspaceRecords.cjs.map +1 -0
  949. package/dist/src/services/workspaceRegistry/workspaceRecords.d.mts +31 -0
  950. package/dist/src/services/workspaceRegistry/workspaceRecords.d.mts.map +1 -0
  951. package/dist/src/services/workspaceRegistry/workspaceRecords.mjs +101 -0
  952. package/dist/src/services/workspaceRegistry/workspaceRecords.mjs.map +1 -0
  953. package/dist/src/systems/child/adapters/headlessChildSessionService.cjs +339 -202
  954. package/dist/src/systems/child/adapters/headlessChildSessionService.cjs.map +1 -1
  955. package/dist/src/systems/child/adapters/headlessChildSessionService.d.mts +16 -21
  956. package/dist/src/systems/child/adapters/headlessChildSessionService.d.mts.map +1 -1
  957. package/dist/src/systems/child/adapters/headlessChildSessionService.mjs +329 -191
  958. package/dist/src/systems/child/adapters/headlessChildSessionService.mjs.map +1 -1
  959. package/dist/src/systems/child/services/childSession/index.cjs +94 -20
  960. package/dist/src/systems/child/services/childSession/index.cjs.map +1 -1
  961. package/dist/src/systems/child/services/childSession/index.d.mts +12 -3
  962. package/dist/src/systems/child/services/childSession/index.d.mts.map +1 -1
  963. package/dist/src/systems/child/services/childSession/index.mjs +94 -20
  964. package/dist/src/systems/child/services/childSession/index.mjs.map +1 -1
  965. package/dist/src/systems/child/types/childSession.cjs +33 -13
  966. package/dist/src/systems/child/types/childSession.cjs.map +1 -1
  967. package/dist/src/systems/child/types/childSession.d.mts +143 -80
  968. package/dist/src/systems/child/types/childSession.d.mts.map +1 -1
  969. package/dist/src/systems/child/types/childSession.mjs +24 -9
  970. package/dist/src/systems/child/types/childSession.mjs.map +1 -1
  971. package/dist/src/systems/main/adapters/headlessHost.cjs +30 -27
  972. package/dist/src/systems/main/adapters/headlessHost.cjs.map +1 -1
  973. package/dist/src/systems/main/adapters/headlessHost.d.mts +22 -22
  974. package/dist/src/systems/main/adapters/headlessHost.d.mts.map +1 -1
  975. package/dist/src/systems/main/adapters/headlessHost.mjs +33 -30
  976. package/dist/src/systems/main/adapters/headlessHost.mjs.map +1 -1
  977. package/dist/src/systems/main/adapters/headlessSessionHost.cjs +248 -229
  978. package/dist/src/systems/main/adapters/headlessSessionHost.cjs.map +1 -1
  979. package/dist/src/systems/main/adapters/headlessSessionHost.d.mts +4 -5
  980. package/dist/src/systems/main/adapters/headlessSessionHost.d.mts.map +1 -1
  981. package/dist/src/systems/main/adapters/headlessSessionHost.mjs +239 -219
  982. package/dist/src/systems/main/adapters/headlessSessionHost.mjs.map +1 -1
  983. package/dist/src/systems/main/types/headlessHost.d.mts +16 -14
  984. package/dist/src/systems/main/types/headlessHost.d.mts.map +1 -1
  985. package/dist/src/testing/pi/testHost.cjs +2 -2
  986. package/dist/src/testing/pi/testHost.cjs.map +1 -1
  987. package/dist/src/testing/pi/testHost.d.mts +3 -2
  988. package/dist/src/testing/pi/testHost.mjs +3 -3
  989. package/dist/src/testing/pi/testHost.mjs.map +1 -1
  990. package/dist/src/types/config.d.mts +1 -1
  991. package/dist/src/types/config.d.mts.map +1 -1
  992. package/dist/src/types/kernel.d.mts +3 -3
  993. package/dist/src/types/server/directHarnessRuntime.d.mts +54 -25
  994. package/dist/src/types/server/directHarnessRuntime.d.mts.map +1 -1
  995. package/dist/src/types/server/sessionToolSurface.d.mts +9 -9
  996. package/dist/src/web/services/apiClient/index.d.mts +1 -0
  997. package/dist/src/web/services/apiPaths/index.cjs.map +1 -1
  998. package/dist/src/web/services/apiPaths/index.d.mts +1 -1
  999. package/dist/src/web/services/apiPaths/index.mjs.map +1 -1
  1000. package/dist/src/web/services/mcpWidget.cjs.map +1 -1
  1001. package/dist/src/web/services/mcpWidget.d.mts +2 -2
  1002. package/dist/src/web/services/mcpWidget.d.mts.map +1 -1
  1003. package/dist/src/web/services/mcpWidget.mjs.map +1 -1
  1004. package/dist/src/web/services/testing/templateRail.cjs +3 -0
  1005. package/dist/src/web/services/testing/templateRail.cjs.map +1 -1
  1006. package/dist/src/web/services/testing/templateRail.mjs +3 -0
  1007. package/dist/src/web/services/testing/templateRail.mjs.map +1 -1
  1008. package/dist/src/web/types/mcpWidget.d.mts +1 -1
  1009. package/dist/src/web/types/nativeTemplate.d.mts +1 -1
  1010. package/dist/src/web/types/nativeTemplate.d.mts.map +1 -1
  1011. package/dist/src/web/types/template.d.mts +8 -0
  1012. package/dist/src/web/types/template.d.mts.map +1 -1
  1013. package/dist/src/web/types/webPlugin.d.mts +17 -5
  1014. package/dist/src/web/types/webPlugin.d.mts.map +1 -1
  1015. package/dist/testMode.cjs +4 -0
  1016. package/dist/testMode.d.mts +2 -0
  1017. package/dist/testMode.mjs +1 -0
  1018. package/dist/testing.cjs +1 -1
  1019. package/dist/testing.d.mts +2 -2
  1020. package/dist/testing.mjs +2 -2
  1021. package/dist/toolInventory.cjs.map +1 -1
  1022. package/dist/toolInventory.mjs.map +1 -1
  1023. package/dist/toolNames.mjs +1 -2
  1024. package/dist/toolOverrides.cjs +4 -4
  1025. package/dist/toolOverrides.d.mts +3 -3
  1026. package/dist/toolOverrides.mjs +3 -3
  1027. package/dist/toolSurface.cjs +4 -4
  1028. package/dist/toolSurface.d.mts +3 -3
  1029. package/dist/toolSurface.mjs +3 -3
  1030. package/dist/transition.cjs +3 -3
  1031. package/dist/transition.d.cjs +3 -3
  1032. package/dist/transition.d.mts +2 -2
  1033. package/dist/transition.mjs +1 -2
  1034. package/dist/transitionClassifier.cjs.map +1 -1
  1035. package/dist/transitionClassifier.d.mts +2 -2
  1036. package/dist/transitionClassifier.d.mts.map +1 -1
  1037. package/dist/transitionClassifier.mjs.map +1 -1
  1038. package/dist/transitionCoordinator.cjs +3 -3
  1039. package/dist/transitionCoordinator.cjs.map +1 -1
  1040. package/dist/transitionCoordinator.d.mts +4 -4
  1041. package/dist/transitionCoordinator.d.mts.map +1 -1
  1042. package/dist/transitionCoordinator.mjs +3 -3
  1043. package/dist/transitionCoordinator.mjs.map +1 -1
  1044. package/dist/typesContextApi.d.mts +2 -1
  1045. package/dist/typesContextApi.d.mts.map +1 -1
  1046. package/dist/uiHub.cjs +3 -3
  1047. package/dist/uiHub.d.mts +2 -2
  1048. package/dist/uiHub.mjs +1 -2
  1049. package/dist/voiceTools.cjs +5 -5
  1050. package/dist/voiceTools.d.mts +3 -3
  1051. package/dist/voiceTools.mjs +3 -3
  1052. package/dist/web.cjs +8 -0
  1053. package/dist/web.d.mts +3 -2
  1054. package/dist/web.mjs +2 -1
  1055. package/dist/webCompositions.cjs.map +1 -1
  1056. package/dist/webCompositions.d.mts +7 -7
  1057. package/dist/webCompositions.d.mts.map +1 -1
  1058. package/dist/webCompositions.mjs.map +1 -1
  1059. package/licenses/Codex-Apache-2.0.txt +201 -0
  1060. package/package.json +58 -53
  1061. package/dist/doomPackage.cjs +0 -61
  1062. package/dist/doomPackage.cjs.map +0 -1
  1063. package/dist/doomPackage.d.mts +0 -17
  1064. package/dist/doomPackage.d.mts.map +0 -1
  1065. package/dist/doomPackage.mjs +0 -54
  1066. package/dist/doomPackage.mjs.map +0 -1
  1067. package/dist/jsonlSessionRepo.cjs +0 -44
  1068. package/dist/jsonlSessionRepo.cjs.map +0 -1
  1069. package/dist/jsonlSessionRepo.d.mts +0 -7
  1070. package/dist/jsonlSessionRepo.d.mts.map +0 -1
  1071. package/dist/jsonlSessionRepo.mjs +0 -42
  1072. package/dist/jsonlSessionRepo.mjs.map +0 -1
  1073. package/dist/runtimeJson.cjs.map +0 -1
  1074. package/dist/runtimeJson.d.mts.map +0 -1
  1075. package/dist/runtimeJson.mjs.map +0 -1
  1076. package/dist/runtimePiSettings.cjs.map +0 -1
  1077. package/dist/runtimePiSettings.d.mts.map +0 -1
  1078. package/dist/runtimePiSettings.mjs.map +0 -1
  1079. package/dist/serverFacet.cjs +0 -34
  1080. package/dist/serverFacet.d.mts +0 -10
  1081. package/dist/serverFacet.mjs +0 -9
  1082. package/dist/src/pi/piWebSocketListener.cjs +0 -115
  1083. package/dist/src/pi/piWebSocketListener.cjs.map +0 -1
  1084. package/dist/src/pi/piWebSocketListener.mjs +0 -115
  1085. package/dist/src/pi/piWebSocketListener.mjs.map +0 -1
  1086. package/dist/src/schemas/serverFacet.cjs +0 -111
  1087. package/dist/src/schemas/serverFacet.cjs.map +0 -1
  1088. package/dist/src/schemas/serverFacet.d.mts +0 -152
  1089. package/dist/src/schemas/serverFacet.d.mts.map +0 -1
  1090. package/dist/src/schemas/serverFacet.mjs +0 -101
  1091. package/dist/src/schemas/serverFacet.mjs.map +0 -1
  1092. package/dist/src/schemas/sessionUpdates.d.mts +0 -34
  1093. package/dist/src/schemas/sessionUpdates.d.mts.map +0 -1
  1094. package/dist/src/server/headlessProtocol.cjs +0 -382
  1095. package/dist/src/server/headlessProtocol.cjs.map +0 -1
  1096. package/dist/src/server/headlessProtocol.mjs +0 -382
  1097. package/dist/src/server/headlessProtocol.mjs.map +0 -1
  1098. package/dist/src/server/nativeChildTranscriptReader.cjs +0 -20
  1099. package/dist/src/server/nativeChildTranscriptReader.cjs.map +0 -1
  1100. package/dist/src/server/nativeChildTranscriptReader.mjs +0 -18
  1101. package/dist/src/server/nativeChildTranscriptReader.mjs.map +0 -1
  1102. package/dist/src/server/serverFacetLoader.cjs +0 -214
  1103. package/dist/src/server/serverFacetLoader.cjs.map +0 -1
  1104. package/dist/src/server/serverFacetLoader.d.mts +0 -72
  1105. package/dist/src/server/serverFacetLoader.d.mts.map +0 -1
  1106. package/dist/src/server/serverFacetLoader.mjs +0 -212
  1107. package/dist/src/server/serverFacetLoader.mjs.map +0 -1
  1108. package/dist/src/services/acpSessionUpdates/index.cjs +0 -129
  1109. package/dist/src/services/acpSessionUpdates/index.cjs.map +0 -1
  1110. package/dist/src/services/acpSessionUpdates/index.mjs +0 -129
  1111. package/dist/src/services/acpSessionUpdates/index.mjs.map +0 -1
  1112. package/dist/src/services/historyImport/index.cjs +0 -8
  1113. package/dist/src/services/historyImport/index.cjs.map +0 -1
  1114. package/dist/src/services/historyImport/index.d.mts +0 -68
  1115. package/dist/src/services/historyImport/index.d.mts.map +0 -1
  1116. package/dist/src/services/historyImport/index.mjs +0 -8
  1117. package/dist/src/services/historyImport/index.mjs.map +0 -1
  1118. package/dist/src/services/openSessionRegistry/index.d.mts.map +0 -1
  1119. package/dist/src/services/requestReceipts/index.cjs.map +0 -1
  1120. package/dist/src/services/requestReceipts/index.d.mts +0 -11
  1121. package/dist/src/services/requestReceipts/index.d.mts.map +0 -1
  1122. package/dist/src/services/requestReceipts/index.mjs.map +0 -1
  1123. package/dist/src/services/rpcTranscript/index.cjs +0 -633
  1124. package/dist/src/services/rpcTranscript/index.cjs.map +0 -1
  1125. package/dist/src/services/rpcTranscript/index.d.mts +0 -50
  1126. package/dist/src/services/rpcTranscript/index.d.mts.map +0 -1
  1127. package/dist/src/services/rpcTranscript/index.mjs +0 -632
  1128. package/dist/src/services/rpcTranscript/index.mjs.map +0 -1
  1129. package/dist/src/services/serverFacet/index.cjs.map +0 -1
  1130. package/dist/src/services/serverFacet/index.d.mts +0 -31
  1131. package/dist/src/services/serverFacet/index.d.mts.map +0 -1
  1132. package/dist/src/services/serverFacet/index.mjs.map +0 -1
  1133. package/dist/src/services/workspaceRegistry/index.d.mts.map +0 -1
  1134. package/dist/src/systems/child/adapters/nativeChildRuntimes.cjs +0 -28
  1135. package/dist/src/systems/child/adapters/nativeChildRuntimes.cjs.map +0 -1
  1136. package/dist/src/systems/child/adapters/nativeChildRuntimes.mjs +0 -25
  1137. package/dist/src/systems/child/adapters/nativeChildRuntimes.mjs.map +0 -1
  1138. package/dist/terminalPiChildSessionService.cjs +0 -324
  1139. package/dist/terminalPiChildSessionService.cjs.map +0 -1
  1140. package/dist/terminalPiChildSessionService.d.mts +0 -46
  1141. package/dist/terminalPiChildSessionService.d.mts.map +0 -1
  1142. package/dist/terminalPiChildSessionService.mjs +0 -318
  1143. package/dist/terminalPiChildSessionService.mjs.map +0 -1
  1144. package/dist/v3Export.cjs +0 -10
  1145. package/dist/v3Export.cjs.map +0 -1
  1146. package/dist/v3Export.d.mts +0 -35
  1147. package/dist/v3Export.d.mts.map +0 -1
  1148. package/dist/v3Export.mjs +0 -9
  1149. package/dist/v3Export.mjs.map +0 -1
@@ -1,9 +1,8 @@
1
1
  const require_runtime = require("../../../_virtual/_rolldown/runtime.cjs");
2
+ const require_docs = require("../durableSession/docs.cjs");
2
3
  const require_sqliteSessionStorage = require("../../../sqliteSessionStorage.cjs");
3
4
  let node_path = require("node:path");
4
5
  node_path = require_runtime.__toESM(node_path, 1);
5
- let node_fs_promises = require("node:fs/promises");
6
- node_fs_promises = require_runtime.__toESM(node_fs_promises, 1);
7
6
  let _earendil_works_pi_durable = require("@earendil-works/pi-durable");
8
7
  //#region src/services/sqliteSessionHistory/index.ts
9
8
  function readSavedExecution(raw, owner) {
@@ -28,57 +27,72 @@ function readSavedExecution(raw, owner) {
28
27
  ...typeof record.sessionProvenance === "string" ? { sessionProvenance: record.sessionProvenance } : {}
29
28
  };
30
29
  }
31
- /** Lists only fresh durable containers, never legacy journals. */
32
- async function listSavedSessionRecords(sessionsRoot, workspaceRoot, activeSessionIds, workspaceId) {
33
- const directory = node_path.default.join(sessionsRoot, require_sqliteSessionStorage.DURABLE_DIRECTORY);
34
- const files = await node_fs_promises.default.readdir(directory).catch((error) => {
35
- if (error.code === "ENOENT") return [];
36
- throw error;
37
- });
30
+ /** The oldest user message of one conversation's fork-aware history older than `before`, read only up to it. */
31
+ async function firstUserEntry(storage, conversationId, before) {
32
+ let cursor;
33
+ do {
34
+ const page = await storage.scanEntries({
35
+ conversationId,
36
+ order: "ascending",
37
+ ...before === void 0 ? {} : { maxEntryId: before - 1 }
38
+ }, 100, cursor, require_sqliteSessionStorage.DURABLE_BACKGROUND_CONTEXT);
39
+ for (const entry of page.items) {
40
+ const message = entry.model?.find((item) => item.role === "user");
41
+ if (message) return {
42
+ id: entry.id,
43
+ message
44
+ };
45
+ }
46
+ cursor = page.next;
47
+ } while (cursor);
48
+ }
49
+ /**
50
+ * Lists the stored sessions the injected storage holds, read-only. One file that cannot be read is
51
+ * skipped and handed to `onUnreadable`, so it never empties the rest of the history.
52
+ */
53
+ async function listSavedSessionRecords(sessions, workspaceRoot, activeSessionIds, workspaceId, onUnreadable) {
38
54
  const result = [];
39
- for (const file of files) {
40
- if (!/^[a-zA-Z0-9_-]+\.sqlite$/u.test(file)) continue;
41
- const id = node_path.default.basename(file, ".sqlite");
55
+ for (const { sessionId: id, updatedAt } of await sessions.list(require_sqliteSessionStorage.DURABLE_BACKGROUND_CONTEXT)) {
42
56
  if (activeSessionIds.has(id)) continue;
43
- const filePath = node_path.default.join(directory, file);
44
- const storage = await require_sqliteSessionStorage.openReadOnlyDurableStorage(filePath);
57
+ let storage;
58
+ try {
59
+ storage = await sessions.openReadOnly(id, require_sqliteSessionStorage.DURABLE_BACKGROUND_CONTEXT);
60
+ } catch (error) {
61
+ onUnreadable?.(id, error);
62
+ continue;
63
+ }
45
64
  const session = (0, _earendil_works_pi_durable.createSession)(storage);
46
65
  try {
47
- const identity = await session.snapshot(require_sqliteSessionStorage.SessionIdentityDoc, require_sqliteSessionStorage.DURABLE_BACKGROUND_CONTEXT);
66
+ const identity = await session.snapshot(require_docs.SessionIdentityDoc, require_sqliteSessionStorage.DURABLE_BACKGROUND_CONTEXT);
48
67
  if (!identity || identity.id !== id) throw new Error("Durable session identity mismatch");
49
- const metadata = await session.snapshot(require_sqliteSessionStorage.SessionMetadataDoc, require_sqliteSessionStorage.DURABLE_BACKGROUND_CONTEXT);
68
+ const metadata = await session.snapshot(require_docs.SessionMetadataDoc, require_sqliteSessionStorage.DURABLE_BACKGROUND_CONTEXT);
50
69
  if (!metadata?.workspaceRoot) continue;
51
70
  const execution = readSavedExecution(metadata.execution, metadata.workspaceRoot);
52
71
  if (!execution || execution.groupingRoot !== workspaceRoot || workspaceId && execution.workspaceId !== workspaceId) continue;
53
- const entries = /* @__PURE__ */ new Map();
72
+ let first;
54
73
  let conversationCursor;
55
74
  do {
56
75
  const conversations = await storage.scanConversations({}, 100, conversationCursor, require_sqliteSessionStorage.DURABLE_BACKGROUND_CONTEXT);
57
76
  for (const conversation of conversations.items) {
58
- let cursor;
59
- do {
60
- const page = await storage.scanEntries({ conversationId: conversation.id }, 100, cursor, require_sqliteSessionStorage.DURABLE_BACKGROUND_CONTEXT);
61
- for (const entry of page.items) entries.set(entry.id, entry);
62
- cursor = page.next;
63
- } while (cursor);
77
+ if (conversation.owner) continue;
78
+ first = await firstUserEntry(storage, conversation.id, first?.id) ?? first;
64
79
  }
65
80
  conversationCursor = conversations.next;
66
81
  } while (conversationCursor);
67
- const messages = [...entries.values()].sort((a, b) => a.id - b.id).flatMap((entry) => entry.model ?? []);
68
- const content = messages.find((message) => message.role === "user")?.content;
82
+ const content = first?.message.content;
69
83
  const firstMessage = typeof content === "string" ? content : Array.isArray(content) ? content.filter((part) => part.type === "text").map((part) => part.text).join("\n") : "";
70
- const stat = await node_fs_promises.default.stat(filePath);
71
84
  result.push({
72
85
  summary: {
73
86
  id,
74
87
  ...metadata.name ? { name: metadata.name } : {},
75
88
  firstMessage,
76
89
  createdAt: new Date(identity.createdAt).toISOString(),
77
- updatedAt: stat.mtime.toISOString(),
78
- messageCount: messages.length
90
+ updatedAt: new Date(updatedAt).toISOString()
79
91
  },
80
92
  execution
81
93
  });
94
+ } catch (error) {
95
+ onUnreadable?.(id, error);
82
96
  } finally {
83
97
  await session.close(require_sqliteSessionStorage.DURABLE_BACKGROUND_CONTEXT);
84
98
  }
@@ -86,8 +100,8 @@ async function listSavedSessionRecords(sessionsRoot, workspaceRoot, activeSessio
86
100
  return result.sort((a, b) => b.summary.updatedAt.localeCompare(a.summary.updatedAt));
87
101
  }
88
102
  /** Public summaries do not expose private execution metadata. */
89
- async function listSavedSessions(sessionsRoot, workspaceRoot, activeSessionIds, workspaceId) {
90
- return (await listSavedSessionRecords(sessionsRoot, workspaceRoot, activeSessionIds, workspaceId)).map((record) => record.summary);
103
+ async function listSavedSessions(sessions, workspaceRoot, activeSessionIds, workspaceId, onUnreadable) {
104
+ return (await listSavedSessionRecords(sessions, workspaceRoot, activeSessionIds, workspaceId, onUnreadable)).map((record) => record.summary);
91
105
  }
92
106
  //#endregion
93
107
  exports.listSavedSessionRecords = listSavedSessionRecords;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["path","DURABLE_DIRECTORY","fs","openReadOnlyDurableStorage","createSession","SessionIdentityDoc","context","SessionMetadataDoc"],"sources":["../../../../src/services/sqliteSessionHistory/index.ts"],"sourcesContent":["import fs from 'node:fs/promises';\nimport path from 'node:path';\n\nimport { createSession, type Cursor, type EntryRecord } from '@earendil-works/pi-durable';\n\nimport {\n DURABLE_DIRECTORY,\n DURABLE_BACKGROUND_CONTEXT as context,\n SessionIdentityDoc,\n SessionMetadataDoc,\n openReadOnlyDurableStorage,\n} from '../sqliteSessionStorage';\n\nexport interface SavedSession {\n id: string;\n name?: string;\n firstMessage: string;\n createdAt: string;\n updatedAt: string;\n messageCount: number;\n}\n\n/** Private execution context, never included in the HTTP history summary. */\nexport interface SavedSessionExecution {\n cwd: string;\n repoRoot: string;\n workspaceId: string;\n groupingRoot: string;\n parentSessionId?: string;\n sessionProvenance?: string;\n}\n\nexport interface SavedSessionRecord {\n summary: SavedSession;\n execution: SavedSessionExecution;\n}\n\nexport function readSavedExecution(raw: unknown, owner: string): SavedSessionExecution | undefined {\n if (typeof raw !== 'string') return undefined;\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw);\n } catch {\n return undefined;\n }\n if (typeof parsed !== 'object' || parsed === null) return undefined;\n const record = parsed as Record<string, unknown>;\n if (\n typeof record.cwd !== 'string' ||\n !path.isAbsolute(record.cwd) ||\n typeof record.repoRoot !== 'string' ||\n !path.isAbsolute(record.repoRoot) ||\n record.repoRoot !== owner ||\n typeof record.workspaceId !== 'string' ||\n record.workspaceId === '' ||\n typeof record.groupingRoot !== 'string' ||\n !path.isAbsolute(record.groupingRoot)\n )\n return undefined;\n if (record.parentSessionId !== undefined && typeof record.parentSessionId !== 'string') return undefined;\n if (record.sessionProvenance !== undefined && typeof record.sessionProvenance !== 'string') return undefined;\n return {\n cwd: record.cwd,\n repoRoot: record.repoRoot,\n workspaceId: record.workspaceId,\n groupingRoot: record.groupingRoot,\n ...(typeof record.parentSessionId === 'string' ? { parentSessionId: record.parentSessionId } : {}),\n ...(typeof record.sessionProvenance === 'string' ? { sessionProvenance: record.sessionProvenance } : {}),\n };\n}\n\n/** Lists only fresh durable containers, never legacy journals. */\nexport async function listSavedSessionRecords(\n sessionsRoot: string,\n workspaceRoot: string,\n activeSessionIds: ReadonlySet<string>,\n workspaceId?: string,\n): Promise<SavedSessionRecord[]> {\n const directory = path.join(sessionsRoot, DURABLE_DIRECTORY);\n const files = await fs.readdir(directory).catch((error: NodeJS.ErrnoException) => {\n if (error.code === 'ENOENT') return [];\n throw error;\n });\n const result: SavedSessionRecord[] = [];\n for (const file of files) {\n if (!/^[a-zA-Z0-9_-]+\\.sqlite$/u.test(file)) continue;\n const id = path.basename(file, '.sqlite');\n if (activeSessionIds.has(id)) continue;\n const filePath = path.join(directory, file);\n const storage = await openReadOnlyDurableStorage(filePath);\n const session = createSession(storage);\n try {\n const identity = await session.snapshot(SessionIdentityDoc, context);\n if (!identity || identity.id !== id) throw new Error('Durable session identity mismatch');\n const metadata = await session.snapshot(SessionMetadataDoc, context);\n if (!metadata?.workspaceRoot) continue;\n const execution = readSavedExecution(metadata.execution, metadata.workspaceRoot);\n if (\n !execution ||\n execution.groupingRoot !== workspaceRoot ||\n (workspaceId && execution.workspaceId !== workspaceId)\n )\n continue;\n const entries = new Map<number, EntryRecord>();\n let conversationCursor: Cursor | undefined;\n do {\n const conversations = await storage.scanConversations({}, 100, conversationCursor, context);\n for (const conversation of conversations.items) {\n let cursor: Cursor | undefined;\n do {\n const page = await storage.scanEntries({ conversationId: conversation.id }, 100, cursor, context);\n for (const entry of page.items) entries.set(entry.id, entry);\n cursor = page.next;\n } while (cursor);\n }\n conversationCursor = conversations.next;\n } while (conversationCursor);\n const ordered = [...entries.values()].sort((a, b) => a.id - b.id);\n const messages = ordered.flatMap((entry) => entry.model ?? []);\n const content = messages.find((message) => message.role === 'user')?.content;\n const firstMessage =\n typeof content === 'string'\n ? content\n : Array.isArray(content)\n ? content\n .filter((part) => part.type === 'text')\n .map((part) => part.text)\n .join('\\n')\n : '';\n const stat = await fs.stat(filePath);\n result.push({\n summary: {\n id,\n ...(metadata.name ? { name: metadata.name } : {}),\n firstMessage,\n createdAt: new Date(identity.createdAt).toISOString(),\n updatedAt: stat.mtime.toISOString(),\n messageCount: messages.length,\n },\n execution,\n });\n } finally {\n await session.close(context);\n }\n }\n return result.sort((a, b) => b.summary.updatedAt.localeCompare(a.summary.updatedAt));\n}\n\n/** Public summaries do not expose private execution metadata. */\nexport async function listSavedSessions(\n sessionsRoot: string,\n workspaceRoot: string,\n activeSessionIds: ReadonlySet<string>,\n workspaceId?: string,\n): Promise<SavedSession[]> {\n return (await listSavedSessionRecords(sessionsRoot, workspaceRoot, activeSessionIds, workspaceId)).map(\n (record) => record.summary,\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["path","context","createSession","SessionIdentityDoc","SessionMetadataDoc"],"sources":["../../../../src/services/sqliteSessionHistory/index.ts"],"sourcesContent":["import path from 'node:path';\n\nimport {\n createSession,\n type ConversationId,\n type Cursor,\n type EntryId,\n type EntryRecord,\n type Storage,\n} from '@earendil-works/pi-durable';\n\nimport type { PoSessionStorageService } from '../../schemas/platform';\nimport { DURABLE_BACKGROUND_CONTEXT as context, SessionIdentityDoc, SessionMetadataDoc } from '../sqliteSessionStorage';\n\nexport interface SavedSession {\n id: string;\n name?: string;\n firstMessage: string;\n createdAt: string;\n updatedAt: string;\n}\n\n/** Private execution context, never included in the HTTP history summary. */\nexport interface SavedSessionExecution {\n cwd: string;\n repoRoot: string;\n workspaceId: string;\n groupingRoot: string;\n parentSessionId?: string;\n sessionProvenance?: string;\n}\n\nexport interface SavedSessionRecord {\n summary: SavedSession;\n execution: SavedSessionExecution;\n}\n\nexport function readSavedExecution(raw: unknown, owner: string): SavedSessionExecution | undefined {\n if (typeof raw !== 'string') return undefined;\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw);\n } catch {\n return undefined;\n }\n if (typeof parsed !== 'object' || parsed === null) return undefined;\n const record = parsed as Record<string, unknown>;\n if (\n typeof record.cwd !== 'string' ||\n !path.isAbsolute(record.cwd) ||\n typeof record.repoRoot !== 'string' ||\n !path.isAbsolute(record.repoRoot) ||\n record.repoRoot !== owner ||\n typeof record.workspaceId !== 'string' ||\n record.workspaceId === '' ||\n typeof record.groupingRoot !== 'string' ||\n !path.isAbsolute(record.groupingRoot)\n )\n return undefined;\n if (record.parentSessionId !== undefined && typeof record.parentSessionId !== 'string') return undefined;\n if (record.sessionProvenance !== undefined && typeof record.sessionProvenance !== 'string') return undefined;\n return {\n cwd: record.cwd,\n repoRoot: record.repoRoot,\n workspaceId: record.workspaceId,\n groupingRoot: record.groupingRoot,\n ...(typeof record.parentSessionId === 'string' ? { parentSessionId: record.parentSessionId } : {}),\n ...(typeof record.sessionProvenance === 'string' ? { sessionProvenance: record.sessionProvenance } : {}),\n };\n}\n\n/** The oldest user message of one conversation's fork-aware history older than `before`, read only up to it. */\nasync function firstUserEntry(\n storage: Storage,\n conversationId: ConversationId,\n before: EntryId | undefined,\n): Promise<{ id: EntryId; message: NonNullable<EntryRecord['model']>[number] } | undefined> {\n let cursor: Cursor | undefined;\n do {\n const page = await storage.scanEntries(\n { conversationId, order: 'ascending', ...(before === undefined ? {} : { maxEntryId: (before - 1) as EntryId }) },\n 100,\n cursor,\n context,\n );\n for (const entry of page.items) {\n const message = entry.model?.find((item) => item.role === 'user');\n if (message) return { id: entry.id, message };\n }\n cursor = page.next;\n } while (cursor);\n return undefined;\n}\n/**\n * Lists the stored sessions the injected storage holds, read-only. One file that cannot be read is\n * skipped and handed to `onUnreadable`, so it never empties the rest of the history.\n */\nexport async function listSavedSessionRecords(\n sessions: PoSessionStorageService,\n workspaceRoot: string,\n activeSessionIds: ReadonlySet<string>,\n workspaceId?: string,\n onUnreadable?: (sessionId: string, error: unknown) => void,\n): Promise<SavedSessionRecord[]> {\n const result: SavedSessionRecord[] = [];\n for (const { sessionId: id, updatedAt } of await sessions.list(context)) {\n if (activeSessionIds.has(id)) continue;\n let storage: Storage;\n try {\n storage = await sessions.openReadOnly(id, context);\n } catch (error) {\n onUnreadable?.(id, error);\n continue;\n }\n const session = createSession(storage);\n try {\n const identity = await session.snapshot(SessionIdentityDoc, context);\n if (!identity || identity.id !== id) throw new Error('Durable session identity mismatch');\n const metadata = await session.snapshot(SessionMetadataDoc, context);\n if (!metadata?.workspaceRoot) continue;\n const execution = readSavedExecution(metadata.execution, metadata.workspaceRoot);\n if (\n !execution ||\n execution.groupingRoot !== workspaceRoot ||\n (workspaceId && execution.workspaceId !== workspaceId)\n )\n continue;\n let first: Awaited<ReturnType<typeof firstUserEntry>>;\n let conversationCursor: Cursor | undefined;\n do {\n const conversations = await storage.scanConversations({}, 100, conversationCursor, context);\n for (const conversation of conversations.items) {\n // A task owns a child's conversation; the session's own history is its ownerless ones.\n if (conversation.owner) continue;\n first = (await firstUserEntry(storage, conversation.id, first?.id)) ?? first;\n }\n conversationCursor = conversations.next;\n } while (conversationCursor);\n const content = first?.message.content;\n const firstMessage =\n typeof content === 'string'\n ? content\n : Array.isArray(content)\n ? content\n .filter((part) => part.type === 'text')\n .map((part) => part.text)\n .join('\\n')\n : '';\n result.push({\n summary: {\n id,\n ...(metadata.name ? { name: metadata.name } : {}),\n firstMessage,\n createdAt: new Date(identity.createdAt).toISOString(),\n updatedAt: new Date(updatedAt).toISOString(),\n },\n execution,\n });\n } catch (error) {\n onUnreadable?.(id, error);\n } finally {\n await session.close(context);\n }\n }\n return result.sort((a, b) => b.summary.updatedAt.localeCompare(a.summary.updatedAt));\n}\n\n/** Public summaries do not expose private execution metadata. */\nexport async function listSavedSessions(\n sessions: PoSessionStorageService,\n workspaceRoot: string,\n activeSessionIds: ReadonlySet<string>,\n workspaceId?: string,\n onUnreadable?: (sessionId: string, error: unknown) => void,\n): Promise<SavedSession[]> {\n return (await listSavedSessionRecords(sessions, workspaceRoot, activeSessionIds, workspaceId, onUnreadable)).map(\n (record) => record.summary,\n );\n}\n"],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { PoSessionStorageService } from "../../schemas/platform.mjs";
1
2
  //#region src/services/sqliteSessionHistory/index.d.ts
2
3
  export interface SavedSession {
3
4
  id: string;
@@ -5,7 +6,6 @@ export interface SavedSession {
5
6
  firstMessage: string;
6
7
  createdAt: string;
7
8
  updatedAt: string;
8
- messageCount: number;
9
9
  }
10
10
  /** Private execution context, never included in the HTTP history summary. */
11
11
  export interface SavedSessionExecution {
@@ -20,9 +20,12 @@ export interface SavedSessionRecord {
20
20
  summary: SavedSession;
21
21
  execution: SavedSessionExecution;
22
22
  }
23
- /** Lists only fresh durable containers, never legacy journals. */
24
- export declare function listSavedSessionRecords(sessionsRoot: string, workspaceRoot: string, activeSessionIds: ReadonlySet<string>, workspaceId?: string): Promise<SavedSessionRecord[]>;
23
+ /**
24
+ * Lists the stored sessions the injected storage holds, read-only. One file that cannot be read is
25
+ * skipped and handed to `onUnreadable`, so it never empties the rest of the history.
26
+ */
27
+ export declare function listSavedSessionRecords(sessions: PoSessionStorageService, workspaceRoot: string, activeSessionIds: ReadonlySet<string>, workspaceId?: string, onUnreadable?: (sessionId: string, error: unknown) => void): Promise<SavedSessionRecord[]>;
25
28
  /** Public summaries do not expose private execution metadata. */
26
- export declare function listSavedSessions(sessionsRoot: string, workspaceRoot: string, activeSessionIds: ReadonlySet<string>, workspaceId?: string): Promise<SavedSession[]>;
29
+ export declare function listSavedSessions(sessions: PoSessionStorageService, workspaceRoot: string, activeSessionIds: ReadonlySet<string>, workspaceId?: string, onUnreadable?: (sessionId: string, error: unknown) => void): Promise<SavedSession[]>;
27
30
  //#endregion
28
31
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/services/sqliteSessionHistory/index.ts"],"mappings":";iBAaiB;EACf;EACA;EACA;EACA;EACA;EACA;;;iBAIe;EACf;EACA;EACA;EACA;EACA;EACA;;iBAGe;EACf,SAAS;EACT,WAAW;;;wBAsCS,wBACpB,sBACA,uBACA,kBAAkB,qBAClB,uBACC,QAAQ;;wBAwEW,kBACpB,sBACA,uBACA,kBAAkB,qBAClB,uBACC,QAAQ"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/services/sqliteSessionHistory/index.ts"],"mappings":";;iBAciB;EACf;EACA;EACA;EACA;EACA;;;iBAIe;EACf;EACA;EACA;EACA;EACA;EACA;;iBAGe;EACf,SAAS;EACT,WAAW;;;;;;wBA+DS,wBACpB,UAAU,yBACV,uBACA,kBAAkB,qBAClB,sBACA,gBAAgB,mBAAmB,0BAClC,QAAQ;;wBAiEW,kBACpB,UAAU,yBACV,uBACA,kBAAkB,qBAClB,sBACA,gBAAgB,mBAAmB,0BAClC,QAAQ"}
@@ -1,6 +1,6 @@
1
- import { DURABLE_BACKGROUND_CONTEXT, DURABLE_DIRECTORY, SessionIdentityDoc, SessionMetadataDoc, openReadOnlyDurableStorage } from "../../../sqliteSessionStorage.mjs";
1
+ import { SessionIdentityDoc, SessionMetadataDoc } from "../durableSession/docs.mjs";
2
+ import { DURABLE_BACKGROUND_CONTEXT } from "../../../sqliteSessionStorage.mjs";
2
3
  import path from "node:path";
3
- import fs from "node:fs/promises";
4
4
  import { createSession } from "@earendil-works/pi-durable";
5
5
  //#region src/services/sqliteSessionHistory/index.ts
6
6
  function readSavedExecution(raw, owner) {
@@ -25,20 +25,40 @@ function readSavedExecution(raw, owner) {
25
25
  ...typeof record.sessionProvenance === "string" ? { sessionProvenance: record.sessionProvenance } : {}
26
26
  };
27
27
  }
28
- /** Lists only fresh durable containers, never legacy journals. */
29
- async function listSavedSessionRecords(sessionsRoot, workspaceRoot, activeSessionIds, workspaceId) {
30
- const directory = path.join(sessionsRoot, DURABLE_DIRECTORY);
31
- const files = await fs.readdir(directory).catch((error) => {
32
- if (error.code === "ENOENT") return [];
33
- throw error;
34
- });
28
+ /** The oldest user message of one conversation's fork-aware history older than `before`, read only up to it. */
29
+ async function firstUserEntry(storage, conversationId, before) {
30
+ let cursor;
31
+ do {
32
+ const page = await storage.scanEntries({
33
+ conversationId,
34
+ order: "ascending",
35
+ ...before === void 0 ? {} : { maxEntryId: before - 1 }
36
+ }, 100, cursor, DURABLE_BACKGROUND_CONTEXT);
37
+ for (const entry of page.items) {
38
+ const message = entry.model?.find((item) => item.role === "user");
39
+ if (message) return {
40
+ id: entry.id,
41
+ message
42
+ };
43
+ }
44
+ cursor = page.next;
45
+ } while (cursor);
46
+ }
47
+ /**
48
+ * Lists the stored sessions the injected storage holds, read-only. One file that cannot be read is
49
+ * skipped and handed to `onUnreadable`, so it never empties the rest of the history.
50
+ */
51
+ async function listSavedSessionRecords(sessions, workspaceRoot, activeSessionIds, workspaceId, onUnreadable) {
35
52
  const result = [];
36
- for (const file of files) {
37
- if (!/^[a-zA-Z0-9_-]+\.sqlite$/u.test(file)) continue;
38
- const id = path.basename(file, ".sqlite");
53
+ for (const { sessionId: id, updatedAt } of await sessions.list(DURABLE_BACKGROUND_CONTEXT)) {
39
54
  if (activeSessionIds.has(id)) continue;
40
- const filePath = path.join(directory, file);
41
- const storage = await openReadOnlyDurableStorage(filePath);
55
+ let storage;
56
+ try {
57
+ storage = await sessions.openReadOnly(id, DURABLE_BACKGROUND_CONTEXT);
58
+ } catch (error) {
59
+ onUnreadable?.(id, error);
60
+ continue;
61
+ }
42
62
  const session = createSession(storage);
43
63
  try {
44
64
  const identity = await session.snapshot(SessionIdentityDoc, DURABLE_BACKGROUND_CONTEXT);
@@ -47,35 +67,30 @@ async function listSavedSessionRecords(sessionsRoot, workspaceRoot, activeSessio
47
67
  if (!metadata?.workspaceRoot) continue;
48
68
  const execution = readSavedExecution(metadata.execution, metadata.workspaceRoot);
49
69
  if (!execution || execution.groupingRoot !== workspaceRoot || workspaceId && execution.workspaceId !== workspaceId) continue;
50
- const entries = /* @__PURE__ */ new Map();
70
+ let first;
51
71
  let conversationCursor;
52
72
  do {
53
73
  const conversations = await storage.scanConversations({}, 100, conversationCursor, DURABLE_BACKGROUND_CONTEXT);
54
74
  for (const conversation of conversations.items) {
55
- let cursor;
56
- do {
57
- const page = await storage.scanEntries({ conversationId: conversation.id }, 100, cursor, DURABLE_BACKGROUND_CONTEXT);
58
- for (const entry of page.items) entries.set(entry.id, entry);
59
- cursor = page.next;
60
- } while (cursor);
75
+ if (conversation.owner) continue;
76
+ first = await firstUserEntry(storage, conversation.id, first?.id) ?? first;
61
77
  }
62
78
  conversationCursor = conversations.next;
63
79
  } while (conversationCursor);
64
- const messages = [...entries.values()].sort((a, b) => a.id - b.id).flatMap((entry) => entry.model ?? []);
65
- const content = messages.find((message) => message.role === "user")?.content;
80
+ const content = first?.message.content;
66
81
  const firstMessage = typeof content === "string" ? content : Array.isArray(content) ? content.filter((part) => part.type === "text").map((part) => part.text).join("\n") : "";
67
- const stat = await fs.stat(filePath);
68
82
  result.push({
69
83
  summary: {
70
84
  id,
71
85
  ...metadata.name ? { name: metadata.name } : {},
72
86
  firstMessage,
73
87
  createdAt: new Date(identity.createdAt).toISOString(),
74
- updatedAt: stat.mtime.toISOString(),
75
- messageCount: messages.length
88
+ updatedAt: new Date(updatedAt).toISOString()
76
89
  },
77
90
  execution
78
91
  });
92
+ } catch (error) {
93
+ onUnreadable?.(id, error);
79
94
  } finally {
80
95
  await session.close(DURABLE_BACKGROUND_CONTEXT);
81
96
  }
@@ -83,8 +98,8 @@ async function listSavedSessionRecords(sessionsRoot, workspaceRoot, activeSessio
83
98
  return result.sort((a, b) => b.summary.updatedAt.localeCompare(a.summary.updatedAt));
84
99
  }
85
100
  /** Public summaries do not expose private execution metadata. */
86
- async function listSavedSessions(sessionsRoot, workspaceRoot, activeSessionIds, workspaceId) {
87
- return (await listSavedSessionRecords(sessionsRoot, workspaceRoot, activeSessionIds, workspaceId)).map((record) => record.summary);
101
+ async function listSavedSessions(sessions, workspaceRoot, activeSessionIds, workspaceId, onUnreadable) {
102
+ return (await listSavedSessionRecords(sessions, workspaceRoot, activeSessionIds, workspaceId, onUnreadable)).map((record) => record.summary);
88
103
  }
89
104
  //#endregion
90
105
  export { listSavedSessionRecords, listSavedSessions, readSavedExecution };
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["context"],"sources":["../../../../src/services/sqliteSessionHistory/index.ts"],"sourcesContent":["import fs from 'node:fs/promises';\nimport path from 'node:path';\n\nimport { createSession, type Cursor, type EntryRecord } from '@earendil-works/pi-durable';\n\nimport {\n DURABLE_DIRECTORY,\n DURABLE_BACKGROUND_CONTEXT as context,\n SessionIdentityDoc,\n SessionMetadataDoc,\n openReadOnlyDurableStorage,\n} from '../sqliteSessionStorage';\n\nexport interface SavedSession {\n id: string;\n name?: string;\n firstMessage: string;\n createdAt: string;\n updatedAt: string;\n messageCount: number;\n}\n\n/** Private execution context, never included in the HTTP history summary. */\nexport interface SavedSessionExecution {\n cwd: string;\n repoRoot: string;\n workspaceId: string;\n groupingRoot: string;\n parentSessionId?: string;\n sessionProvenance?: string;\n}\n\nexport interface SavedSessionRecord {\n summary: SavedSession;\n execution: SavedSessionExecution;\n}\n\nexport function readSavedExecution(raw: unknown, owner: string): SavedSessionExecution | undefined {\n if (typeof raw !== 'string') return undefined;\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw);\n } catch {\n return undefined;\n }\n if (typeof parsed !== 'object' || parsed === null) return undefined;\n const record = parsed as Record<string, unknown>;\n if (\n typeof record.cwd !== 'string' ||\n !path.isAbsolute(record.cwd) ||\n typeof record.repoRoot !== 'string' ||\n !path.isAbsolute(record.repoRoot) ||\n record.repoRoot !== owner ||\n typeof record.workspaceId !== 'string' ||\n record.workspaceId === '' ||\n typeof record.groupingRoot !== 'string' ||\n !path.isAbsolute(record.groupingRoot)\n )\n return undefined;\n if (record.parentSessionId !== undefined && typeof record.parentSessionId !== 'string') return undefined;\n if (record.sessionProvenance !== undefined && typeof record.sessionProvenance !== 'string') return undefined;\n return {\n cwd: record.cwd,\n repoRoot: record.repoRoot,\n workspaceId: record.workspaceId,\n groupingRoot: record.groupingRoot,\n ...(typeof record.parentSessionId === 'string' ? { parentSessionId: record.parentSessionId } : {}),\n ...(typeof record.sessionProvenance === 'string' ? { sessionProvenance: record.sessionProvenance } : {}),\n };\n}\n\n/** Lists only fresh durable containers, never legacy journals. */\nexport async function listSavedSessionRecords(\n sessionsRoot: string,\n workspaceRoot: string,\n activeSessionIds: ReadonlySet<string>,\n workspaceId?: string,\n): Promise<SavedSessionRecord[]> {\n const directory = path.join(sessionsRoot, DURABLE_DIRECTORY);\n const files = await fs.readdir(directory).catch((error: NodeJS.ErrnoException) => {\n if (error.code === 'ENOENT') return [];\n throw error;\n });\n const result: SavedSessionRecord[] = [];\n for (const file of files) {\n if (!/^[a-zA-Z0-9_-]+\\.sqlite$/u.test(file)) continue;\n const id = path.basename(file, '.sqlite');\n if (activeSessionIds.has(id)) continue;\n const filePath = path.join(directory, file);\n const storage = await openReadOnlyDurableStorage(filePath);\n const session = createSession(storage);\n try {\n const identity = await session.snapshot(SessionIdentityDoc, context);\n if (!identity || identity.id !== id) throw new Error('Durable session identity mismatch');\n const metadata = await session.snapshot(SessionMetadataDoc, context);\n if (!metadata?.workspaceRoot) continue;\n const execution = readSavedExecution(metadata.execution, metadata.workspaceRoot);\n if (\n !execution ||\n execution.groupingRoot !== workspaceRoot ||\n (workspaceId && execution.workspaceId !== workspaceId)\n )\n continue;\n const entries = new Map<number, EntryRecord>();\n let conversationCursor: Cursor | undefined;\n do {\n const conversations = await storage.scanConversations({}, 100, conversationCursor, context);\n for (const conversation of conversations.items) {\n let cursor: Cursor | undefined;\n do {\n const page = await storage.scanEntries({ conversationId: conversation.id }, 100, cursor, context);\n for (const entry of page.items) entries.set(entry.id, entry);\n cursor = page.next;\n } while (cursor);\n }\n conversationCursor = conversations.next;\n } while (conversationCursor);\n const ordered = [...entries.values()].sort((a, b) => a.id - b.id);\n const messages = ordered.flatMap((entry) => entry.model ?? []);\n const content = messages.find((message) => message.role === 'user')?.content;\n const firstMessage =\n typeof content === 'string'\n ? content\n : Array.isArray(content)\n ? content\n .filter((part) => part.type === 'text')\n .map((part) => part.text)\n .join('\\n')\n : '';\n const stat = await fs.stat(filePath);\n result.push({\n summary: {\n id,\n ...(metadata.name ? { name: metadata.name } : {}),\n firstMessage,\n createdAt: new Date(identity.createdAt).toISOString(),\n updatedAt: stat.mtime.toISOString(),\n messageCount: messages.length,\n },\n execution,\n });\n } finally {\n await session.close(context);\n }\n }\n return result.sort((a, b) => b.summary.updatedAt.localeCompare(a.summary.updatedAt));\n}\n\n/** Public summaries do not expose private execution metadata. */\nexport async function listSavedSessions(\n sessionsRoot: string,\n workspaceRoot: string,\n activeSessionIds: ReadonlySet<string>,\n workspaceId?: string,\n): Promise<SavedSession[]> {\n return (await listSavedSessionRecords(sessionsRoot, workspaceRoot, activeSessionIds, workspaceId)).map(\n (record) => record.summary,\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["context"],"sources":["../../../../src/services/sqliteSessionHistory/index.ts"],"sourcesContent":["import path from 'node:path';\n\nimport {\n createSession,\n type ConversationId,\n type Cursor,\n type EntryId,\n type EntryRecord,\n type Storage,\n} from '@earendil-works/pi-durable';\n\nimport type { PoSessionStorageService } from '../../schemas/platform';\nimport { DURABLE_BACKGROUND_CONTEXT as context, SessionIdentityDoc, SessionMetadataDoc } from '../sqliteSessionStorage';\n\nexport interface SavedSession {\n id: string;\n name?: string;\n firstMessage: string;\n createdAt: string;\n updatedAt: string;\n}\n\n/** Private execution context, never included in the HTTP history summary. */\nexport interface SavedSessionExecution {\n cwd: string;\n repoRoot: string;\n workspaceId: string;\n groupingRoot: string;\n parentSessionId?: string;\n sessionProvenance?: string;\n}\n\nexport interface SavedSessionRecord {\n summary: SavedSession;\n execution: SavedSessionExecution;\n}\n\nexport function readSavedExecution(raw: unknown, owner: string): SavedSessionExecution | undefined {\n if (typeof raw !== 'string') return undefined;\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw);\n } catch {\n return undefined;\n }\n if (typeof parsed !== 'object' || parsed === null) return undefined;\n const record = parsed as Record<string, unknown>;\n if (\n typeof record.cwd !== 'string' ||\n !path.isAbsolute(record.cwd) ||\n typeof record.repoRoot !== 'string' ||\n !path.isAbsolute(record.repoRoot) ||\n record.repoRoot !== owner ||\n typeof record.workspaceId !== 'string' ||\n record.workspaceId === '' ||\n typeof record.groupingRoot !== 'string' ||\n !path.isAbsolute(record.groupingRoot)\n )\n return undefined;\n if (record.parentSessionId !== undefined && typeof record.parentSessionId !== 'string') return undefined;\n if (record.sessionProvenance !== undefined && typeof record.sessionProvenance !== 'string') return undefined;\n return {\n cwd: record.cwd,\n repoRoot: record.repoRoot,\n workspaceId: record.workspaceId,\n groupingRoot: record.groupingRoot,\n ...(typeof record.parentSessionId === 'string' ? { parentSessionId: record.parentSessionId } : {}),\n ...(typeof record.sessionProvenance === 'string' ? { sessionProvenance: record.sessionProvenance } : {}),\n };\n}\n\n/** The oldest user message of one conversation's fork-aware history older than `before`, read only up to it. */\nasync function firstUserEntry(\n storage: Storage,\n conversationId: ConversationId,\n before: EntryId | undefined,\n): Promise<{ id: EntryId; message: NonNullable<EntryRecord['model']>[number] } | undefined> {\n let cursor: Cursor | undefined;\n do {\n const page = await storage.scanEntries(\n { conversationId, order: 'ascending', ...(before === undefined ? {} : { maxEntryId: (before - 1) as EntryId }) },\n 100,\n cursor,\n context,\n );\n for (const entry of page.items) {\n const message = entry.model?.find((item) => item.role === 'user');\n if (message) return { id: entry.id, message };\n }\n cursor = page.next;\n } while (cursor);\n return undefined;\n}\n/**\n * Lists the stored sessions the injected storage holds, read-only. One file that cannot be read is\n * skipped and handed to `onUnreadable`, so it never empties the rest of the history.\n */\nexport async function listSavedSessionRecords(\n sessions: PoSessionStorageService,\n workspaceRoot: string,\n activeSessionIds: ReadonlySet<string>,\n workspaceId?: string,\n onUnreadable?: (sessionId: string, error: unknown) => void,\n): Promise<SavedSessionRecord[]> {\n const result: SavedSessionRecord[] = [];\n for (const { sessionId: id, updatedAt } of await sessions.list(context)) {\n if (activeSessionIds.has(id)) continue;\n let storage: Storage;\n try {\n storage = await sessions.openReadOnly(id, context);\n } catch (error) {\n onUnreadable?.(id, error);\n continue;\n }\n const session = createSession(storage);\n try {\n const identity = await session.snapshot(SessionIdentityDoc, context);\n if (!identity || identity.id !== id) throw new Error('Durable session identity mismatch');\n const metadata = await session.snapshot(SessionMetadataDoc, context);\n if (!metadata?.workspaceRoot) continue;\n const execution = readSavedExecution(metadata.execution, metadata.workspaceRoot);\n if (\n !execution ||\n execution.groupingRoot !== workspaceRoot ||\n (workspaceId && execution.workspaceId !== workspaceId)\n )\n continue;\n let first: Awaited<ReturnType<typeof firstUserEntry>>;\n let conversationCursor: Cursor | undefined;\n do {\n const conversations = await storage.scanConversations({}, 100, conversationCursor, context);\n for (const conversation of conversations.items) {\n // A task owns a child's conversation; the session's own history is its ownerless ones.\n if (conversation.owner) continue;\n first = (await firstUserEntry(storage, conversation.id, first?.id)) ?? first;\n }\n conversationCursor = conversations.next;\n } while (conversationCursor);\n const content = first?.message.content;\n const firstMessage =\n typeof content === 'string'\n ? content\n : Array.isArray(content)\n ? content\n .filter((part) => part.type === 'text')\n .map((part) => part.text)\n .join('\\n')\n : '';\n result.push({\n summary: {\n id,\n ...(metadata.name ? { name: metadata.name } : {}),\n firstMessage,\n createdAt: new Date(identity.createdAt).toISOString(),\n updatedAt: new Date(updatedAt).toISOString(),\n },\n execution,\n });\n } catch (error) {\n onUnreadable?.(id, error);\n } finally {\n await session.close(context);\n }\n }\n return result.sort((a, b) => b.summary.updatedAt.localeCompare(a.summary.updatedAt));\n}\n\n/** Public summaries do not expose private execution metadata. */\nexport async function listSavedSessions(\n sessions: PoSessionStorageService,\n workspaceRoot: string,\n activeSessionIds: ReadonlySet<string>,\n workspaceId?: string,\n onUnreadable?: (sessionId: string, error: unknown) => void,\n): Promise<SavedSession[]> {\n return (await listSavedSessionRecords(sessions, workspaceRoot, activeSessionIds, workspaceId, onUnreadable)).map(\n (record) => record.summary,\n );\n}\n"],"mappings":"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"}
@@ -1,61 +1,37 @@
1
- const require_runtime = require("../../../_virtual/_rolldown/runtime.cjs");
2
- const require_sqliteSessionStorage = require("../../../sqliteSessionStorage.cjs");
1
+ const require_docs = require("../durableSession/docs.cjs");
2
+ require("../../../sqliteSessionStorage.cjs");
3
3
  const require_index = require("../sqliteSessionHistory/index.cjs");
4
- const require_index$1 = require("../durableNavigation/index.cjs");
5
- const require_index$2 = require("../transcriptPages/index.cjs");
6
- let node_path = require("node:path");
7
- node_path = require_runtime.__toESM(node_path, 1);
4
+ const require_docs$1 = require("../durableNavigation/docs.cjs");
5
+ const require_index$1 = require("../transcriptPages/index.cjs");
8
6
  let _earendil_works_pi_durable = require("@earendil-works/pi-durable");
9
7
  //#region src/services/sqliteTranscriptReader/index.ts
10
- /** A completed child is read without admitting a writer or updating the schema. */
11
- async function readSqliteTranscript(file, request, context, ownership) {
12
- if (node_path.default.basename(node_path.default.dirname(file)) !== "durable-v1") throw new Error("Legacy SQLite transcripts are unsupported");
13
- const storage = await require_sqliteSessionStorage.openReadOnlyDurableStorage(file);
8
+ /** A stored session is read without admitting a writer or updating the schema. */
9
+ async function readSqliteTranscript(sessions, sessionId, request, context, ownership) {
10
+ const storage = await sessions.openReadOnly(sessionId, context);
14
11
  const session = (0, _earendil_works_pi_durable.createSession)(storage);
15
12
  try {
16
- const identity = await session.snapshot(require_sqliteSessionStorage.SessionIdentityDoc, context);
17
- if (!identity || identity.id !== node_path.default.basename(file, ".sqlite") || ownership && identity.id !== ownership.sessionId) throw new Error("Saved transcript does not belong to this session");
13
+ const identity = await session.snapshot(require_docs.SessionIdentityDoc, context);
14
+ if (!identity || identity.id !== sessionId || ownership && identity.id !== ownership.sessionId) throw new Error("Saved transcript does not belong to this session");
18
15
  if (ownership) {
19
- const metadata = await session.snapshot(require_sqliteSessionStorage.SessionMetadataDoc, context);
16
+ const metadata = await session.snapshot(require_docs.SessionMetadataDoc, context);
20
17
  const execution = require_index.readSavedExecution(metadata?.execution, ownership.workspaceRoot);
21
18
  if (metadata?.workspaceRoot !== ownership.workspaceRoot || !execution || ownership.workspaceId !== void 0 && execution.workspaceId !== ownership.workspaceId || ownership.groupingRoot !== void 0 && execution.groupingRoot !== ownership.groupingRoot) throw new Error("Saved transcript does not belong to this workspace");
22
19
  }
23
- const conversationId = (await session.snapshot(require_index$1.DurableNavigationDoc, context))?.activeConversationId;
24
- const raw = [];
25
- if (conversationId !== null && conversationId !== void 0) {
26
- let cursor;
27
- do {
28
- const page = await storage.scanEntries({ conversationId }, 100, cursor, context);
29
- raw.push(...page.items);
30
- cursor = page.next;
31
- } while (cursor);
32
- }
33
- const entries = require_index$2.projectDurableEntries(raw.reverse());
34
- const tip = entries.at(-1)?.id ?? null;
35
- const laneName = (await session.snapshot(require_sqliteSessionStorage.SessionMetadataDoc, context))?.laneName ?? "main";
20
+ const conversationId = (await session.snapshot(require_docs$1.DurableNavigationDoc, context))?.activeConversationId;
21
+ const laneName = (await session.snapshot(require_docs.SessionMetadataDoc, context))?.laneName ?? "main";
36
22
  return {
37
- ...await require_index$2.readTranscriptPage({
23
+ ...await require_index$1.readTranscriptPage({
38
24
  sessionId: identity.id,
39
25
  laneName,
40
- lane: {
41
- getTipId: async () => tip,
42
- findEntries: async (query) => {
43
- let rows = entries;
44
- if (query.start) {
45
- const index = rows.findIndex((entry) => entry.id === query.start);
46
- if (index < 0) throw new Error("Transcript references missing entry");
47
- rows = rows.slice(0, index + 1);
48
- }
49
- if (query.cursor) rows = rows.filter((entry) => query.order === "oldestFirst" ? entry.seq > query.cursor.seq : entry.seq < query.cursor.seq);
50
- if (query.type) rows = rows.filter((entry) => entry.type === query.type);
51
- if (query.customType) rows = rows.filter((entry) => entry.type === "custom" && entry.customType === query.customType);
52
- if (query.order !== "oldestFirst") rows = [...rows].reverse();
53
- return rows.slice(0, query.limit);
54
- }
55
- }
26
+ lane: conversationId === null || conversationId === void 0 ? {
27
+ findEntries: async () => [],
28
+ readIdentities: async () => void 0
29
+ } : require_index$1.durableTranscriptLane((query, limit, cursor, scanContext) => storage.scanEntries({
30
+ conversationId,
31
+ ...query
32
+ }, limit, cursor, scanContext), (readContext) => session.snapshot(require_docs.IdentityHistoryDoc, conversationId, readContext))
56
33
  }, request, 0, context),
57
- revision: 0,
58
- drafts: []
34
+ revision: 0
59
35
  };
60
36
  } finally {
61
37
  await session.close(context);
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["path","openReadOnlyDurableStorage","createSession","SessionIdentityDoc","SessionMetadataDoc","readSavedExecution","DurableNavigationDoc","projectDurableEntries","readTranscriptPage"],"sources":["../../../../src/services/sqliteTranscriptReader/index.ts"],"sourcesContent":["import path from 'node:path';\n\nimport type { Context } from '@earendil-works/chord';\nimport { createSession, type Cursor, type EntryRecord } from '@earendil-works/pi-durable';\n\nimport type { TranscriptPageRequest, TranscriptPage } from '../../exports/sessionProtocol';\nimport { DurableNavigationDoc } from '../durableNavigation';\nimport { readSavedExecution } from '../sqliteSessionHistory';\nimport {\n DURABLE_DIRECTORY,\n SessionIdentityDoc,\n SessionMetadataDoc,\n openReadOnlyDurableStorage,\n} from '../sqliteSessionStorage';\nimport { projectDurableEntries, readTranscriptPage } from '../transcriptPages';\n\nexport interface SqliteTranscriptOwnership {\n sessionId: string;\n workspaceRoot: string;\n workspaceId?: string;\n groupingRoot?: string;\n}\n\n/** A completed child is read without admitting a writer or updating the schema. */\nexport async function readSqliteTranscript(\n file: string,\n request: TranscriptPageRequest,\n context: Context,\n ownership?: SqliteTranscriptOwnership,\n): Promise<TranscriptPage> {\n if (path.basename(path.dirname(file)) !== DURABLE_DIRECTORY)\n throw new Error('Legacy SQLite transcripts are unsupported');\n const storage = await openReadOnlyDurableStorage(file);\n const session = createSession(storage);\n try {\n const identity = await session.snapshot(SessionIdentityDoc, context);\n if (\n !identity ||\n identity.id !== path.basename(file, '.sqlite') ||\n (ownership && identity.id !== ownership.sessionId)\n )\n throw new Error('Saved transcript does not belong to this session');\n if (ownership) {\n const metadata = await session.snapshot(SessionMetadataDoc, context);\n const execution = readSavedExecution(metadata?.execution, ownership.workspaceRoot);\n if (\n metadata?.workspaceRoot !== ownership.workspaceRoot ||\n !execution ||\n (ownership.workspaceId !== undefined && execution.workspaceId !== ownership.workspaceId) ||\n (ownership.groupingRoot !== undefined && execution.groupingRoot !== ownership.groupingRoot)\n )\n throw new Error('Saved transcript does not belong to this workspace');\n }\n const navigation = await session.snapshot(DurableNavigationDoc, context);\n const conversationId = navigation?.activeConversationId;\n const raw: EntryRecord[] = [];\n if (conversationId !== null && conversationId !== undefined) {\n let cursor: Cursor | undefined;\n do {\n const page = await storage.scanEntries({ conversationId }, 100, cursor, context);\n raw.push(...page.items);\n cursor = page.next;\n } while (cursor);\n }\n const entries = projectDurableEntries(raw.reverse());\n const tip = entries.at(-1)?.id ?? null;\n const metadata = await session.snapshot(SessionMetadataDoc, context);\n const laneName = metadata?.laneName ?? 'main';\n const page = await readTranscriptPage(\n {\n sessionId: identity.id,\n laneName,\n lane: {\n getTipId: async () => tip,\n findEntries: async (query) => {\n let rows = entries;\n if (query.start) {\n const index = rows.findIndex((entry) => entry.id === query.start);\n if (index < 0) throw new Error('Transcript references missing entry');\n rows = rows.slice(0, index + 1);\n }\n if (query.cursor)\n rows = rows.filter((entry) =>\n query.order === 'oldestFirst' ? entry.seq > query.cursor!.seq : entry.seq < query.cursor!.seq,\n );\n if (query.type) rows = rows.filter((entry) => entry.type === query.type);\n if (query.customType)\n rows = rows.filter((entry) => entry.type === 'custom' && entry.customType === query.customType);\n if (query.order !== 'oldestFirst') rows = [...rows].reverse();\n return rows.slice(0, query.limit);\n },\n },\n },\n request,\n 0,\n context,\n );\n return { ...page, revision: 0, drafts: [] };\n } finally {\n await session.close(context);\n }\n}\n"],"mappings":";;;;;;;;;;AAwBA,eAAsB,qBACpB,MACA,SACA,SACA,WACyB;CACzB,IAAIA,UAAAA,QAAK,SAASA,UAAAA,QAAK,QAAQ,IAAI,CAAC,MAAA,cAClC,MAAM,IAAI,MAAM,2CAA2C;CAC7D,MAAM,UAAU,MAAMC,6BAAAA,2BAA2B,IAAI;CACrD,MAAM,WAAA,GAAUC,2BAAAA,cAAAA,CAAc,OAAO;CACrC,IAAI;EACF,MAAM,WAAW,MAAM,QAAQ,SAASC,6BAAAA,oBAAoB,OAAO;EACnE,IACE,CAAC,YACD,SAAS,OAAOH,UAAAA,QAAK,SAAS,MAAM,SAAS,KAC5C,aAAa,SAAS,OAAO,UAAU,WAExC,MAAM,IAAI,MAAM,kDAAkD;EACpE,IAAI,WAAW;GACb,MAAM,WAAW,MAAM,QAAQ,SAASI,6BAAAA,oBAAoB,OAAO;GACnE,MAAM,YAAYC,cAAAA,mBAAmB,UAAU,WAAW,UAAU,aAAa;GACjF,IACE,UAAU,kBAAkB,UAAU,iBACtC,CAAC,aACA,UAAU,gBAAgB,KAAA,KAAa,UAAU,gBAAgB,UAAU,eAC3E,UAAU,iBAAiB,KAAA,KAAa,UAAU,iBAAiB,UAAU,cAE9E,MAAM,IAAI,MAAM,oDAAoD;EACxE;EAEA,MAAM,kBAAiB,MADE,QAAQ,SAASC,gBAAAA,sBAAsB,OAAO,EAAA,EACpC;EACnC,MAAM,MAAqB,CAAC;EAC5B,IAAI,mBAAmB,QAAQ,mBAAmB,KAAA,GAAW;GAC3D,IAAI;GACJ,GAAG;IACD,MAAM,OAAO,MAAM,QAAQ,YAAY,EAAE,eAAe,GAAG,KAAK,QAAQ,OAAO;IAC/E,IAAI,KAAK,GAAG,KAAK,KAAK;IACtB,SAAS,KAAK;GAChB,SAAS;EACX;EACA,MAAM,UAAUC,gBAAAA,sBAAsB,IAAI,QAAQ,CAAC;EACnD,MAAM,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,MAAM;EAElC,MAAM,YAAW,MADM,QAAQ,SAASH,6BAAAA,oBAAoB,OAAO,EAAA,EACxC,YAAY;EA8BvC,OAAO;GAAE,GAAG,MA7BOI,gBAAAA,mBACjB;IACE,WAAW,SAAS;IACpB;IACA,MAAM;KACJ,UAAU,YAAY;KACtB,aAAa,OAAO,UAAU;MAC5B,IAAI,OAAO;MACX,IAAI,MAAM,OAAO;OACf,MAAM,QAAQ,KAAK,WAAW,UAAU,MAAM,OAAO,MAAM,KAAK;OAChE,IAAI,QAAQ,GAAG,MAAM,IAAI,MAAM,qCAAqC;OACpE,OAAO,KAAK,MAAM,GAAG,QAAQ,CAAC;MAChC;MACA,IAAI,MAAM,QACR,OAAO,KAAK,QAAQ,UAClB,MAAM,UAAU,gBAAgB,MAAM,MAAM,MAAM,OAAQ,MAAM,MAAM,MAAM,MAAM,OAAQ,GAC5F;MACF,IAAI,MAAM,MAAM,OAAO,KAAK,QAAQ,UAAU,MAAM,SAAS,MAAM,IAAI;MACvE,IAAI,MAAM,YACR,OAAO,KAAK,QAAQ,UAAU,MAAM,SAAS,YAAY,MAAM,eAAe,MAAM,UAAU;MAChG,IAAI,MAAM,UAAU,eAAe,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,QAAQ;MAC5D,OAAO,KAAK,MAAM,GAAG,MAAM,KAAK;KAClC;IACF;GACF,GACA,SACA,GACA,OACF;GACkB,UAAU;GAAG,QAAQ,CAAC;EAAE;CAC5C,UAAU;EACR,MAAM,QAAQ,MAAM,OAAO;CAC7B;AACF"}
1
+ {"version":3,"file":"index.cjs","names":["createSession","SessionIdentityDoc","SessionMetadataDoc","readSavedExecution","DurableNavigationDoc","readTranscriptPage","durableTranscriptLane","IdentityHistoryDoc"],"sources":["../../../../src/services/sqliteTranscriptReader/index.ts"],"sourcesContent":["import type { Context } from '@earendil-works/chord';\nimport { createSession } from '@earendil-works/pi-durable';\n\nimport type { TranscriptPageRequest, TranscriptPage } from '../../exports/sessionProtocol';\nimport type { PoSessionStorageService } from '../../schemas/platform';\nimport { DurableNavigationDoc } from '../durableNavigation/docs';\nimport { IdentityHistoryDoc } from '../durableSession/docs';\nimport { readSavedExecution } from '../sqliteSessionHistory';\nimport { SessionIdentityDoc, SessionMetadataDoc } from '../sqliteSessionStorage';\nimport { durableTranscriptLane, readTranscriptPage } from '../transcriptPages';\n\nexport interface SqliteTranscriptOwnership {\n sessionId: string;\n workspaceRoot: string;\n workspaceId?: string;\n groupingRoot?: string;\n}\n\n/** A stored session is read without admitting a writer or updating the schema. */\nexport async function readSqliteTranscript(\n sessions: PoSessionStorageService,\n sessionId: string,\n request: TranscriptPageRequest,\n context: Context,\n ownership?: SqliteTranscriptOwnership,\n): Promise<TranscriptPage> {\n const storage = await sessions.openReadOnly(sessionId, context);\n const session = createSession(storage);\n try {\n const identity = await session.snapshot(SessionIdentityDoc, context);\n if (!identity || identity.id !== sessionId || (ownership && identity.id !== ownership.sessionId))\n throw new Error('Saved transcript does not belong to this session');\n if (ownership) {\n const metadata = await session.snapshot(SessionMetadataDoc, context);\n const execution = readSavedExecution(metadata?.execution, ownership.workspaceRoot);\n if (\n metadata?.workspaceRoot !== ownership.workspaceRoot ||\n !execution ||\n (ownership.workspaceId !== undefined && execution.workspaceId !== ownership.workspaceId) ||\n (ownership.groupingRoot !== undefined && execution.groupingRoot !== ownership.groupingRoot)\n )\n throw new Error('Saved transcript does not belong to this workspace');\n }\n const navigation = await session.snapshot(DurableNavigationDoc, context);\n const conversationId = navigation?.activeConversationId;\n const metadata = await session.snapshot(SessionMetadataDoc, context);\n const laneName = metadata?.laneName ?? 'main';\n const page = await readTranscriptPage(\n {\n sessionId: identity.id,\n laneName,\n lane:\n conversationId === null || conversationId === undefined\n ? { findEntries: async () => [], readIdentities: async () => undefined }\n : durableTranscriptLane(\n (query, limit, cursor, scanContext) =>\n storage.scanEntries({ conversationId, ...query }, limit, cursor, scanContext),\n (readContext) => session.snapshot(IdentityHistoryDoc, conversationId, readContext),\n ),\n },\n request,\n 0,\n context,\n );\n return { ...page, revision: 0 };\n } finally {\n await session.close(context);\n }\n}\n"],"mappings":";;;;;;;;AAmBA,eAAsB,qBACpB,UACA,WACA,SACA,SACA,WACyB;CACzB,MAAM,UAAU,MAAM,SAAS,aAAa,WAAW,OAAO;CAC9D,MAAM,WAAA,GAAUA,2BAAAA,cAAAA,CAAc,OAAO;CACrC,IAAI;EACF,MAAM,WAAW,MAAM,QAAQ,SAASC,aAAAA,oBAAoB,OAAO;EACnE,IAAI,CAAC,YAAY,SAAS,OAAO,aAAc,aAAa,SAAS,OAAO,UAAU,WACpF,MAAM,IAAI,MAAM,kDAAkD;EACpE,IAAI,WAAW;GACb,MAAM,WAAW,MAAM,QAAQ,SAASC,aAAAA,oBAAoB,OAAO;GACnE,MAAM,YAAYC,cAAAA,mBAAmB,UAAU,WAAW,UAAU,aAAa;GACjF,IACE,UAAU,kBAAkB,UAAU,iBACtC,CAAC,aACA,UAAU,gBAAgB,KAAA,KAAa,UAAU,gBAAgB,UAAU,eAC3E,UAAU,iBAAiB,KAAA,KAAa,UAAU,iBAAiB,UAAU,cAE9E,MAAM,IAAI,MAAM,oDAAoD;EACxE;EAEA,MAAM,kBAAiB,MADE,QAAQ,SAASC,eAAAA,sBAAsB,OAAO,EAAA,EACpC;EAEnC,MAAM,YAAW,MADM,QAAQ,SAASF,aAAAA,oBAAoB,OAAO,EAAA,EACxC,YAAY;EAkBvC,OAAO;GAAE,GAAG,MAjBOG,gBAAAA,mBACjB;IACE,WAAW,SAAS;IACpB;IACA,MACE,mBAAmB,QAAQ,mBAAmB,KAAA,IAC1C;KAAE,aAAa,YAAY,CAAC;KAAG,gBAAgB,YAAY,KAAA;IAAU,IACrEC,gBAAAA,uBACG,OAAO,OAAO,QAAQ,gBACrB,QAAQ,YAAY;KAAE;KAAgB,GAAG;IAAM,GAAG,OAAO,QAAQ,WAAW,IAC7E,gBAAgB,QAAQ,SAASC,aAAAA,oBAAoB,gBAAgB,WAAW,CACnF;GACR,GACA,SACA,GACA,OACF;GACkB,UAAU;EAAE;CAChC,UAAU;EACR,MAAM,QAAQ,MAAM,OAAO;CAC7B;AACF"}
@@ -1,4 +1,5 @@
1
1
  import { TranscriptPage, TranscriptPageRequest } from "../../schemas/sessionProtocol.mjs";
2
+ import { PoSessionStorageService } from "../../schemas/platform.mjs";
2
3
  import "../../../sessionProtocol.mjs";
3
4
  import { Context } from "@earendil-works/chord";
4
5
  //#region src/services/sqliteTranscriptReader/index.d.ts
@@ -8,7 +9,7 @@ export interface SqliteTranscriptOwnership {
8
9
  workspaceId?: string;
9
10
  groupingRoot?: string;
10
11
  }
11
- /** A completed child is read without admitting a writer or updating the schema. */
12
- export declare function readSqliteTranscript(file: string, request: TranscriptPageRequest, context: Context, ownership?: SqliteTranscriptOwnership): Promise<TranscriptPage>;
12
+ /** A stored session is read without admitting a writer or updating the schema. */
13
+ export declare function readSqliteTranscript(sessions: PoSessionStorageService, sessionId: string, request: TranscriptPageRequest, context: Context, ownership?: SqliteTranscriptOwnership): Promise<TranscriptPage>;
13
14
  //#endregion
14
15
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/services/sqliteTranscriptReader/index.ts"],"mappings":";;;;iBAgBiB;EACf;EACA;EACA;EACA;;;wBAIoB,qBACpB,cACA,SAAS,uBACT,SAAS,SACT,YAAY,4BACX,QAAQ"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/services/sqliteTranscriptReader/index.ts"],"mappings":";;;;;iBAWiB;EACf;EACA;EACA;EACA;;;wBAIoB,qBACpB,UAAU,yBACV,mBACA,SAAS,uBACT,SAAS,SACT,YAAY,4BACX,QAAQ"}
@@ -1,59 +1,37 @@
1
- import { SessionIdentityDoc, SessionMetadataDoc, openReadOnlyDurableStorage } from "../../../sqliteSessionStorage.mjs";
1
+ import { IdentityHistoryDoc, SessionIdentityDoc, SessionMetadataDoc } from "../durableSession/docs.mjs";
2
+ import "../../../sqliteSessionStorage.mjs";
2
3
  import { readSavedExecution } from "../sqliteSessionHistory/index.mjs";
3
- import { DurableNavigationDoc } from "../durableNavigation/index.mjs";
4
- import { projectDurableEntries, readTranscriptPage } from "../transcriptPages/index.mjs";
5
- import path from "node:path";
4
+ import { DurableNavigationDoc } from "../durableNavigation/docs.mjs";
5
+ import { durableTranscriptLane, readTranscriptPage } from "../transcriptPages/index.mjs";
6
6
  import { createSession } from "@earendil-works/pi-durable";
7
7
  //#region src/services/sqliteTranscriptReader/index.ts
8
- /** A completed child is read without admitting a writer or updating the schema. */
9
- async function readSqliteTranscript(file, request, context, ownership) {
10
- if (path.basename(path.dirname(file)) !== "durable-v1") throw new Error("Legacy SQLite transcripts are unsupported");
11
- const storage = await openReadOnlyDurableStorage(file);
8
+ /** A stored session is read without admitting a writer or updating the schema. */
9
+ async function readSqliteTranscript(sessions, sessionId, request, context, ownership) {
10
+ const storage = await sessions.openReadOnly(sessionId, context);
12
11
  const session = createSession(storage);
13
12
  try {
14
13
  const identity = await session.snapshot(SessionIdentityDoc, context);
15
- if (!identity || identity.id !== path.basename(file, ".sqlite") || ownership && identity.id !== ownership.sessionId) throw new Error("Saved transcript does not belong to this session");
14
+ if (!identity || identity.id !== sessionId || ownership && identity.id !== ownership.sessionId) throw new Error("Saved transcript does not belong to this session");
16
15
  if (ownership) {
17
16
  const metadata = await session.snapshot(SessionMetadataDoc, context);
18
17
  const execution = readSavedExecution(metadata?.execution, ownership.workspaceRoot);
19
18
  if (metadata?.workspaceRoot !== ownership.workspaceRoot || !execution || ownership.workspaceId !== void 0 && execution.workspaceId !== ownership.workspaceId || ownership.groupingRoot !== void 0 && execution.groupingRoot !== ownership.groupingRoot) throw new Error("Saved transcript does not belong to this workspace");
20
19
  }
21
20
  const conversationId = (await session.snapshot(DurableNavigationDoc, context))?.activeConversationId;
22
- const raw = [];
23
- if (conversationId !== null && conversationId !== void 0) {
24
- let cursor;
25
- do {
26
- const page = await storage.scanEntries({ conversationId }, 100, cursor, context);
27
- raw.push(...page.items);
28
- cursor = page.next;
29
- } while (cursor);
30
- }
31
- const entries = projectDurableEntries(raw.reverse());
32
- const tip = entries.at(-1)?.id ?? null;
33
21
  const laneName = (await session.snapshot(SessionMetadataDoc, context))?.laneName ?? "main";
34
22
  return {
35
23
  ...await readTranscriptPage({
36
24
  sessionId: identity.id,
37
25
  laneName,
38
- lane: {
39
- getTipId: async () => tip,
40
- findEntries: async (query) => {
41
- let rows = entries;
42
- if (query.start) {
43
- const index = rows.findIndex((entry) => entry.id === query.start);
44
- if (index < 0) throw new Error("Transcript references missing entry");
45
- rows = rows.slice(0, index + 1);
46
- }
47
- if (query.cursor) rows = rows.filter((entry) => query.order === "oldestFirst" ? entry.seq > query.cursor.seq : entry.seq < query.cursor.seq);
48
- if (query.type) rows = rows.filter((entry) => entry.type === query.type);
49
- if (query.customType) rows = rows.filter((entry) => entry.type === "custom" && entry.customType === query.customType);
50
- if (query.order !== "oldestFirst") rows = [...rows].reverse();
51
- return rows.slice(0, query.limit);
52
- }
53
- }
26
+ lane: conversationId === null || conversationId === void 0 ? {
27
+ findEntries: async () => [],
28
+ readIdentities: async () => void 0
29
+ } : durableTranscriptLane((query, limit, cursor, scanContext) => storage.scanEntries({
30
+ conversationId,
31
+ ...query
32
+ }, limit, cursor, scanContext), (readContext) => session.snapshot(IdentityHistoryDoc, conversationId, readContext))
54
33
  }, request, 0, context),
55
- revision: 0,
56
- drafts: []
34
+ revision: 0
57
35
  };
58
36
  } finally {
59
37
  await session.close(context);