@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
@@ -0,0 +1,149 @@
1
+ import { HeldQueueDoc } from "./docs.mjs";
2
+ import { CompactionTask, GenerationTask, InboxDoc, LiveDoc, UserEntry } from "@earendil-works/pi-durable";
3
+ //#region src/services/durableQueue/index.ts
4
+ /** pi-durable deduplicates by request ID, so a held input can be handed over again after a crash. */
5
+ const heldRequestId = (id) => `po.queue:${id}`;
6
+ /** The pi.inbox content of a held or freshly submitted input. */
7
+ function heldContent(message, images) {
8
+ if (typeof message !== "string") {
9
+ if (message.role !== "user") throw new Error("Only user messages can admit an agent run");
10
+ return message.content;
11
+ }
12
+ return images?.length ? [{
13
+ type: "text",
14
+ text: message
15
+ }, ...images] : message;
16
+ }
17
+ /** Appends the entry an input is placed as: `entry`'s kind and data, or `pi.user`, as pi-durable's own boundary does. */
18
+ function appendInput(tx, conversationId, content, entry, now) {
19
+ const model = [{
20
+ role: "user",
21
+ content,
22
+ timestamp: now
23
+ }];
24
+ return entry ? tx.appendEntry(conversationId, {
25
+ kind: entry.kind,
26
+ ...entry.data === void 0 ? {} : { data: entry.data },
27
+ model
28
+ }) : tx.appendEntry(UserEntry, conversationId, { model });
29
+ }
30
+ /**
31
+ * Promotes one explicitly queued input to steer its operation, or starts it from idle, in one commit with only public
32
+ * Tx operations: target validation and the move from held to pi.inbox happen on the same Session mutation line.
33
+ *
34
+ * Mirrors pi-durable `harness/inbox.d.ts:42-52` (`prepareBoundary`/`applyBoundary` at `final`) and `admitSubmission`
35
+ * in `harness/submissions.js`, which pi-durable does not export. Re-run the promote tests on every pi-durable upgrade.
36
+ */
37
+ async function admitSelected(tx, conversationId, selection, modes, replay) {
38
+ const doc = await tx.doc(HeldQueueDoc);
39
+ const record = JSON.parse(doc.json);
40
+ const requestId = heldRequestId(selection.id);
41
+ const accepted = await tx.submissionByRequest(conversationId, requestId);
42
+ if (accepted && accepted.type !== "input") throw new Error(`Request ${requestId} already identifies a submission of type ${accepted.type}`);
43
+ if (accepted && replay) return accepted.id;
44
+ if (accepted) return accepted.status === "queued" ? "in_flight" : "not_found";
45
+ const index = record.held.findIndex((q) => q.id === selection.id && q.explicitQueue);
46
+ if (index === -1) return "not_found";
47
+ const q = record.held[index];
48
+ const live = await tx.doc(LiveDoc, conversationId);
49
+ const task = live.run ? await tx.task(live.run.taskId) : void 0;
50
+ if ((live.run ? String(live.run.inputs[0]) : void 0) !== selection.operationId || task?.abortRequested || live.run && record.abortOperationId === selection.operationId) return "target_changed";
51
+ if (!live.run) {
52
+ let page = await tx.scanTasks({
53
+ conversationId,
54
+ kind: CompactionTask.definition.name,
55
+ background: false
56
+ }, 128);
57
+ while (true) {
58
+ if (page.items.some((task) => task.state.status !== "terminal")) return "target_changed";
59
+ if (!page.next) break;
60
+ page = await tx.scanTasks({
61
+ conversationId,
62
+ kind: CompactionTask.definition.name,
63
+ background: false
64
+ }, 128, page.next);
65
+ }
66
+ }
67
+ const content = heldContent(q.message ?? q.text, q.images);
68
+ const inbox = await tx.doc(InboxDoc, conversationId);
69
+ let head = live.run ? void 0 : (await tx.latestHeadMarker(conversationId))?.head;
70
+ const now = Date.now();
71
+ let id;
72
+ if (!live.run && inbox.items.length === 0) {
73
+ const entry = await appendInput(tx, conversationId, content, q.entry, now);
74
+ id = (await tx.createSubmission({
75
+ conversationId,
76
+ requestId,
77
+ type: "input",
78
+ status: "placed",
79
+ entry: entry.id
80
+ })).id;
81
+ live.run = {
82
+ taskId: await tx.createTask(GenerationTask, {}, {
83
+ ownership: { kind: "conversation" },
84
+ conversationId
85
+ }),
86
+ inputs: [id]
87
+ };
88
+ } else {
89
+ id = (await tx.createSubmission({
90
+ conversationId,
91
+ requestId,
92
+ type: "input",
93
+ status: "queued"
94
+ })).id;
95
+ inbox.items.push({
96
+ id,
97
+ mode: "steer",
98
+ content: JSON.parse(JSON.stringify(content)),
99
+ ...q.entry ? { entry: JSON.parse(JSON.stringify(q.entry)) } : {}
100
+ });
101
+ if (!live.run) {
102
+ const writes = inbox.items.flatMap((item, index) => item.mode === "write" ? [index] : []);
103
+ const pick = (mode) => {
104
+ const indexes = inbox.items.flatMap((item, index) => item.mode === mode ? [index] : []);
105
+ return (mode === "steer" ? modes.steeringMode : modes.followUpMode) === "all" ? indexes : indexes.slice(0, 1);
106
+ };
107
+ const users = [...pick("steer"), ...pick("followUp")].sort((a, b) => a - b);
108
+ for (const index of writes) {
109
+ const item = inbox.items[index];
110
+ if (item.mode !== "write") continue;
111
+ const draft = item.entry;
112
+ if (typeof draft.head === "number" && head !== void 0 && draft.head < head) {
113
+ tx.settleSubmission(item.id, {
114
+ status: "unanswered",
115
+ reason: "stale"
116
+ });
117
+ continue;
118
+ }
119
+ const entry = await tx.appendEntry(conversationId, draft);
120
+ if (draft.head !== void 0) head = draft.head === "self" ? entry.id : draft.head;
121
+ tx.placeSubmission(item.id, entry.id);
122
+ }
123
+ const inputs = [];
124
+ for (const index of users) {
125
+ const item = inbox.items[index];
126
+ if (item.mode === "write") continue;
127
+ const entry = await appendInput(tx, conversationId, item.content, item.entry, now);
128
+ tx.placeSubmission(item.id, entry.id);
129
+ inputs.push(item.id);
130
+ }
131
+ for (const index of [...writes, ...users].sort((a, b) => b - a)) inbox.items.splice(index, 1);
132
+ if (inputs.length) live.run = {
133
+ taskId: await tx.createTask(GenerationTask, {}, {
134
+ ownership: { kind: "conversation" },
135
+ conversationId
136
+ }),
137
+ inputs
138
+ };
139
+ }
140
+ }
141
+ record.held.splice(index, 1);
142
+ record.revision++;
143
+ doc.json = JSON.stringify(record);
144
+ return id;
145
+ }
146
+ //#endregion
147
+ export { admitSelected, heldContent, heldRequestId };
148
+
149
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/durableQueue/index.ts"],"sourcesContent":["/**\n * Po's queue around pi.inbox. Follow-ups that are not paused go straight to pi.inbox; only paused and explicitly\n * queued inputs stay in `po.queue.held`, and a held input enters pi.inbox under its stable request ID.\n */\nimport type { ImageContent } from '@earendil-works/pi-ai';\nimport {\n CompactionTask,\n GenerationTask,\n InboxDoc,\n LiveDoc,\n UserEntry,\n type Conversation,\n type ConversationId,\n type HarnessSettings,\n type InputEntry,\n type SubmissionId,\n type Tx,\n} from '@earendil-works/pi-durable';\n\nimport type { AgentMessage, DirectHarnessQueuedInput } from '../../types/server/directHarnessRuntime';\nimport { HeldQueueDoc } from './docs';\n\nexport type HeldInput = Omit<DirectHarnessQueuedInput, 'disposition'> & {\n message?: AgentMessage;\n // The entry the input is placed as instead of `pi.user`, kept when an abort moves a queued input here.\n entry?: InputEntry;\n // Only explicitly queued inputs are visible to, and removable or promotable by, the operator.\n explicitQueue: boolean;\n};\nexport type HeldQueue = { revision: number; paused: boolean; abortOperationId?: string; held: HeldInput[] };\n\n/** pi-durable deduplicates by request ID, so a held input can be handed over again after a crash. */\nexport const heldRequestId = (id: string) => `po.queue:${id}`;\n\n/** The pi.inbox content of a held or freshly submitted input. */\nexport function heldContent(message: string | AgentMessage, images?: ImageContent[]) {\n if (typeof message !== 'string') {\n if (message.role !== 'user') throw new Error('Only user messages can admit an agent run');\n return message.content;\n }\n return images?.length ? [{ type: 'text' as const, text: message }, ...images] : message;\n}\n\n/** Appends the entry an input is placed as: `entry`'s kind and data, or `pi.user`, as pi-durable's own boundary does. */\nfunction appendInput(\n tx: Tx,\n conversationId: ConversationId,\n content: ReturnType<typeof heldContent>,\n entry: InputEntry | undefined,\n now: number,\n) {\n const model = [{ role: 'user' as const, content, timestamp: now }];\n return entry\n ? tx.appendEntry(conversationId, {\n kind: entry.kind,\n ...(entry.data === undefined ? {} : { data: entry.data }),\n model,\n })\n : tx.appendEntry(UserEntry, conversationId, { model });\n}\n\n/**\n * Promotes one explicitly queued input to steer its operation, or starts it from idle, in one commit with only public\n * Tx operations: target validation and the move from held to pi.inbox happen on the same Session mutation line.\n *\n * Mirrors pi-durable `harness/inbox.d.ts:42-52` (`prepareBoundary`/`applyBoundary` at `final`) and `admitSubmission`\n * in `harness/submissions.js`, which pi-durable does not export. Re-run the promote tests on every pi-durable upgrade.\n */\nexport async function admitSelected(\n tx: Tx,\n conversationId: ConversationId,\n selection: { id: string; operationId?: string },\n modes: Pick<HarnessSettings, 'steeringMode' | 'followUpMode'>,\n replay: boolean,\n): Promise<SubmissionId | 'not_found' | 'in_flight' | 'target_changed'> {\n const doc = await tx.doc(HeldQueueDoc);\n const record = JSON.parse(doc.json) as HeldQueue;\n const requestId = heldRequestId(selection.id);\n // An accepted request survives completion/replacement and a lost acknowledgement.\n const accepted = await tx.submissionByRequest(conversationId, requestId);\n if (accepted && accepted.type !== 'input')\n throw new Error(`Request ${requestId} already identifies a submission of type ${accepted.type}`);\n if (accepted && replay) return accepted.id;\n if (accepted) return accepted.status === 'queued' ? 'in_flight' : 'not_found';\n const index = record.held.findIndex((q) => q.id === selection.id && q.explicitQueue);\n if (index === -1) return 'not_found';\n const q = record.held[index]!;\n const live = await tx.doc(LiveDoc, conversationId);\n const task = live.run ? await tx.task(live.run.taskId) : undefined;\n if (\n (live.run ? String(live.run.inputs[0]) : undefined) !== selection.operationId ||\n task?.abortRequested ||\n (live.run && record.abortOperationId === selection.operationId)\n )\n return 'target_changed';\n if (!live.run) {\n let page = await tx.scanTasks({ conversationId, kind: CompactionTask.definition.name, background: false }, 128);\n while (true) {\n if (page.items.some((task) => task.state.status !== 'terminal')) return 'target_changed';\n if (!page.next) break;\n page = await tx.scanTasks(\n { conversationId, kind: CompactionTask.definition.name, background: false },\n 128,\n page.next,\n );\n }\n }\n const content = heldContent(q.message ?? q.text, q.images);\n const inbox = await tx.doc(InboxDoc, conversationId);\n // Native final boundaries read the active head before any table writes.\n let head = live.run ? undefined : (await tx.latestHeadMarker(conversationId))?.head;\n const now = Date.now();\n let id: SubmissionId;\n if (!live.run && inbox.items.length === 0) {\n const entry = await appendInput(tx, conversationId, content, q.entry, now);\n id = (await tx.createSubmission({ conversationId, requestId, type: 'input', status: 'placed', entry: entry.id }))\n .id;\n live.run = {\n taskId: await tx.createTask(GenerationTask, {}, { ownership: { kind: 'conversation' }, conversationId }),\n inputs: [id],\n };\n } else {\n id = (await tx.createSubmission({ conversationId, requestId, type: 'input', status: 'queued' })).id;\n inbox.items.push({\n id,\n mode: 'steer',\n content: JSON.parse(JSON.stringify(content)) as typeof content,\n ...(q.entry ? { entry: JSON.parse(JSON.stringify(q.entry)) as InputEntry } : {}),\n });\n if (!live.run) {\n // Preserve native write-first placement, stale heads, queue modes and\n // positional input order rather than restarting just the selected input.\n const writes = inbox.items.flatMap((item, index) => (item.mode === 'write' ? [index] : []));\n const pick = (mode: 'steer' | 'followUp') => {\n const indexes = inbox.items.flatMap((item, index) => (item.mode === mode ? [index] : []));\n const queueMode = mode === 'steer' ? modes.steeringMode : modes.followUpMode;\n return queueMode === 'all' ? indexes : indexes.slice(0, 1);\n };\n const users = [...pick('steer'), ...pick('followUp')].sort((a, b) => a - b);\n for (const index of writes) {\n const item = inbox.items[index]!;\n if (item.mode !== 'write') continue;\n // Public InboxDoc represents native write drafts as JsonObject.\n const draft = item.entry as unknown as Extract<\n Parameters<Conversation['submit']>[0],\n { type: 'write' }\n >['entry'];\n if (typeof draft.head === 'number' && head !== undefined && draft.head < head) {\n tx.settleSubmission(item.id, { status: 'unanswered', reason: 'stale' });\n continue;\n }\n const entry = await tx.appendEntry(conversationId, draft);\n if (draft.head !== undefined) head = draft.head === 'self' ? entry.id : draft.head;\n tx.placeSubmission(item.id, entry.id);\n }\n const inputs: SubmissionId[] = [];\n for (const index of users) {\n const item = inbox.items[index]!;\n if (item.mode === 'write') continue;\n const entry = await appendInput(tx, conversationId, item.content, item.entry, now);\n tx.placeSubmission(item.id, entry.id);\n inputs.push(item.id);\n }\n for (const index of [...writes, ...users].sort((a, b) => b - a)) inbox.items.splice(index, 1);\n if (inputs.length)\n live.run = {\n taskId: await tx.createTask(GenerationTask, {}, { ownership: { kind: 'conversation' }, conversationId }),\n inputs,\n };\n }\n }\n record.held.splice(index, 1);\n record.revision++;\n doc.json = JSON.stringify(record);\n return id;\n}\n"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ //#region src/services/durableRequestReceipts/docs.ts
2
+ const ReceiptsDoc = (0, require("@earendil-works/pi-durable").defineDoc)({
3
+ kind: "po.request-receipts",
4
+ version: 1,
5
+ scope: "session",
6
+ initial: () => ({ receipts: {} })
7
+ });
8
+ //#endregion
9
+ exports.ReceiptsDoc = ReceiptsDoc;
10
+
11
+ //# sourceMappingURL=docs.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.cjs","names":["defineDoc"],"sources":["../../../../src/services/durableRequestReceipts/docs.ts"],"sourcesContent":["import { defineDoc, type JsonObject } from '@earendil-works/pi-durable';\n\nexport const ReceiptsDoc = defineDoc<{ receipts: JsonObject }>({\n kind: 'po.request-receipts',\n version: 1,\n scope: 'session',\n initial: () => ({ receipts: {} }),\n});\n"],"mappings":";AAEA,MAAa,eAAA,uCAAcA,CAAAA,CAAAA,UAAAA,CAAoC;CAC7D,MAAM;CACN,SAAS;CACT,OAAO;CACP,gBAAgB,EAAE,UAAU,CAAC,EAAE;AACjC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { defineDoc } from "@earendil-works/pi-durable";
2
+ //#region src/services/durableRequestReceipts/docs.ts
3
+ const ReceiptsDoc = defineDoc({
4
+ kind: "po.request-receipts",
5
+ version: 1,
6
+ scope: "session",
7
+ initial: () => ({ receipts: {} })
8
+ });
9
+ //#endregion
10
+ export { ReceiptsDoc };
11
+
12
+ //# sourceMappingURL=docs.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.mjs","names":[],"sources":["../../../../src/services/durableRequestReceipts/docs.ts"],"sourcesContent":["import { defineDoc, type JsonObject } from '@earendil-works/pi-durable';\n\nexport const ReceiptsDoc = defineDoc<{ receipts: JsonObject }>({\n kind: 'po.request-receipts',\n version: 1,\n scope: 'session',\n initial: () => ({ receipts: {} }),\n});\n"],"mappings":";;AAEA,MAAa,cAAc,UAAoC;CAC7D,MAAM;CACN,SAAS;CACT,OAAO;CACP,gBAAgB,EAAE,UAAU,CAAC,EAAE;AACjC,CAAC"}
@@ -1,17 +1,12 @@
1
1
  const require_historyOwnership = require("../../../historyOwnership.cjs");
2
2
  const require_sqliteSessionStorage = require("../../../sqliteSessionStorage.cjs");
3
+ const require_docs = require("./docs.cjs");
3
4
  let node_crypto = require("node:crypto");
4
- let _earendil_works_pi_durable = require("@earendil-works/pi-durable");
5
- //#region src/services/requestReceipts/index.ts
5
+ //#region src/services/durableRequestReceipts/index.ts
6
6
  const RECEIPTS_SESSION_ID = "request_receipts";
7
- const ReceiptsDoc = (0, _earendil_works_pi_durable.defineDoc)({
8
- kind: "po.request-receipts",
9
- version: 1,
10
- scope: "session",
11
- initial: () => ({ receipts: {} })
12
- });
13
7
  const FINGERPRINT = /^[a-f0-9]{64}$/u;
14
8
  const NAMESPACE = /^[a-z][a-z0-9.-]*$/u;
9
+ const MAX_RECEIPTS = 1024;
15
10
  function bounded(value, maximum) {
16
11
  return typeof value === "string" && value.length > 0 && value.length <= maximum;
17
12
  }
@@ -64,7 +59,7 @@ function createRequestReceipts(options) {
64
59
  const receiptAddress = address(request);
65
60
  if (!FINGERPRINT.test(request.fingerprint) || !bounded(request.destination, 512) || !bounded(request.transactionId, 256)) throw new Error("Invalid request receipt reservation.");
66
61
  return operate((storage) => storage.commit(async (mutator) => {
67
- const doc = await mutator.doc(ReceiptsDoc);
62
+ const doc = await mutator.doc(require_docs.ReceiptsDoc);
68
63
  const existing = doc.receipts[receiptAddress];
69
64
  if (existing !== void 0) {
70
65
  const prior = storedReceipt(existing, request).receipt;
@@ -91,6 +86,10 @@ function createRequestReceipts(options) {
91
86
  receipt,
92
87
  token
93
88
  }));
89
+ const older = Object.keys(doc.receipts).filter((key) => key !== receiptAddress);
90
+ const reserved = (key) => doc.receipts[key].receipt?.outcome === "reserved";
91
+ const excess = Math.max(0, older.length + 1 - (options.maxReceipts ?? MAX_RECEIPTS));
92
+ for (const key of [...older.filter((key) => !reserved(key)), ...older.filter(reserved)].slice(0, excess)) delete doc.receipts[key];
94
93
  return {
95
94
  kind: "reserved",
96
95
  token
@@ -100,7 +99,7 @@ function createRequestReceipts(options) {
100
99
  lookup(key) {
101
100
  const receiptAddress = address(key);
102
101
  return operate(async (storage) => {
103
- const existing = (await storage.snapshot(ReceiptsDoc, require_sqliteSessionStorage.DURABLE_BACKGROUND_CONTEXT))?.receipts[receiptAddress];
102
+ const existing = (await storage.snapshot(require_docs.ReceiptsDoc, require_sqliteSessionStorage.DURABLE_BACKGROUND_CONTEXT))?.receipts[receiptAddress];
104
103
  return existing === void 0 ? void 0 : storedReceipt(existing, key).receipt;
105
104
  });
106
105
  },
@@ -112,7 +111,7 @@ function createRequestReceipts(options) {
112
111
  "uncertain"
113
112
  ].includes(request.outcome)) throw new Error("Invalid request receipt finish.");
114
113
  return operate((storage) => storage.commit(async (mutator) => {
115
- const doc = await mutator.doc(ReceiptsDoc);
114
+ const doc = await mutator.doc(require_docs.ReceiptsDoc);
116
115
  const existing = doc.receipts[receiptAddress];
117
116
  if (existing === void 0) throw new Error("Request receipt reservation does not exist.");
118
117
  const prior = storedReceipt(existing, request);
@@ -145,11 +144,6 @@ function createRequestReceipts(options) {
145
144
  } catch (error) {
146
145
  errors.push(error);
147
146
  }
148
- try {
149
- await storage.repository.close(require_sqliteSessionStorage.DURABLE_BACKGROUND_CONTEXT);
150
- } catch (error) {
151
- errors.push(error);
152
- }
153
147
  try {
154
148
  await storage.historyLease.release();
155
149
  } catch (error) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["createHistoryOwnership","openSqliteSessionStorage","BACKGROUND_CONTEXT","ReceiptsDoc","randomUUID"],"sources":["../../../../src/services/durableRequestReceipts/index.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\n\nimport type { Session } from '@earendil-works/pi-durable';\n\nimport type {\n PoRequestReceipt,\n PoRequestReceiptKey,\n PoRequestReceiptReservation,\n PoRequestReceipts,\n} from '../../schemas/packageApi';\nimport { createHistoryOwnership } from '../historyOwnership';\nimport { DURABLE_BACKGROUND_CONTEXT as BACKGROUND_CONTEXT, openSqliteSessionStorage } from '../sqliteSessionStorage';\nimport { ReceiptsDoc } from './docs';\n\nconst RECEIPTS_SESSION_ID = 'request_receipts';\nconst FINGERPRINT = /^[a-f0-9]{64}$/u;\nconst NAMESPACE = /^[a-z][a-z0-9.-]*$/u;\n// ponytail: oldest receipts are dropped past this cap (the whole map is one doc rewritten per commit), so a\n// retry older than ~1k sends can duplicate. Upgrade: a doc family keyed by address.\nconst MAX_RECEIPTS = 1024;\n\ntype TerminalOutcome = Exclude<PoRequestReceipt['outcome'], 'reserved'>;\ninterface StoredReceipt {\n version: 1;\n receipt: PoRequestReceipt;\n token: string;\n}\n\nfunction bounded(value: unknown, maximum: number): value is string {\n return typeof value === 'string' && value.length > 0 && value.length <= maximum;\n}\n\nfunction address(key: PoRequestReceiptKey): string {\n if (\n !bounded(key.namespace, 64) ||\n !NAMESPACE.test(key.namespace) ||\n !bounded(key.activationId, 256) ||\n !bounded(key.requestId, 256)\n )\n throw new Error('Invalid request receipt address.');\n // JSON tuple encoding retains exact arbitrary provider IDs, including separators.\n return JSON.stringify([key.namespace, key.activationId, key.requestId]);\n}\n\nfunction storedReceipt(input: unknown, key: PoRequestReceiptKey): StoredReceipt {\n if (typeof input !== 'object' || input === null || Array.isArray(input))\n throw new Error('Request receipt storage is corrupt.');\n const stored = JSON.parse(JSON.stringify(input)) as Partial<StoredReceipt>;\n const receipt = stored.receipt;\n if (\n stored.version !== 1 ||\n !bounded(stored.token, 128) ||\n typeof receipt !== 'object' ||\n receipt === null ||\n receipt.namespace !== key.namespace ||\n receipt.activationId !== key.activationId ||\n receipt.requestId !== key.requestId ||\n !bounded(receipt.destination, 512) ||\n !bounded(receipt.transactionId, 256) ||\n !FINGERPRINT.test(receipt.fingerprint) ||\n !['reserved', 'admitted', 'rejected', 'uncertain'].includes(receipt.outcome)\n )\n throw new Error('Request receipt storage is corrupt.');\n return stored as StoredReceipt;\n}\n\n/** One native SQLite metadata history, independent of any selected agent session. */\nexport function createRequestReceipts(options: { directory: string; maxReceipts?: number }): {\n receipts: PoRequestReceipts;\n close(): Promise<void>;\n} {\n const ownership = createHistoryOwnership({ sourceFormat: 'sqlite' });\n let opened: ReturnType<typeof openSqliteSessionStorage> | undefined;\n let closed = false;\n let closing: Promise<void> | undefined;\n const operations = new Set<Promise<unknown>>();\n\n const session = async (): Promise<Session> => {\n if (closed) throw new Error('Request receipt storage is closed.');\n opened ??= openSqliteSessionStorage(\n { sessionsRoot: options.directory, sessionId: RECEIPTS_SESSION_ID, historyOwnership: ownership },\n BACKGROUND_CONTEXT,\n );\n return (await opened).session;\n };\n const operate = <T>(callback: (session: Session) => Promise<T>): Promise<T> => {\n if (closed) return Promise.reject(new Error('Request receipt storage is closed.'));\n const operation = session().then(callback);\n operations.add(operation);\n void operation.then(\n () => operations.delete(operation),\n () => operations.delete(operation),\n );\n return operation;\n };\n\n const receipts: PoRequestReceipts = {\n reserve(request: PoRequestReceiptReservation) {\n const receiptAddress = address(request);\n if (\n !FINGERPRINT.test(request.fingerprint) ||\n !bounded(request.destination, 512) ||\n !bounded(request.transactionId, 256)\n )\n throw new Error('Invalid request receipt reservation.');\n return operate((storage) =>\n storage.commit(async (mutator) => {\n const doc = await mutator.doc(ReceiptsDoc);\n const existing = doc.receipts[receiptAddress];\n if (existing !== undefined) {\n const prior = storedReceipt(existing, request).receipt;\n return prior.fingerprint === request.fingerprint &&\n prior.destination === request.destination &&\n prior.transactionId === request.transactionId\n ? { kind: 'existing' as const, receipt: prior }\n : { kind: 'conflict' as const, receipt: prior };\n }\n const token = randomUUID();\n const receipt: PoRequestReceipt = {\n namespace: request.namespace,\n activationId: request.activationId,\n requestId: request.requestId,\n fingerprint: request.fingerprint,\n destination: request.destination,\n transactionId: request.transactionId,\n outcome: 'reserved',\n };\n doc.receipts[receiptAddress] = JSON.parse(JSON.stringify({ version: 1, receipt, token }));\n // Object keys keep insertion order, so the first keys are the oldest. Finished receipts go first; a\n // reservation nothing finished (a crash mid-send) goes only once those run out, never the new one.\n const older = Object.keys(doc.receipts).filter((key) => key !== receiptAddress);\n const reserved = (key: string) =>\n (doc.receipts[key] as unknown as StoredReceipt).receipt?.outcome === 'reserved';\n const excess = Math.max(0, older.length + 1 - (options.maxReceipts ?? MAX_RECEIPTS));\n for (const key of [...older.filter((key) => !reserved(key)), ...older.filter(reserved)].slice(0, excess))\n delete doc.receipts[key];\n return { kind: 'reserved' as const, token };\n }, BACKGROUND_CONTEXT),\n );\n },\n lookup(key: PoRequestReceiptKey) {\n const receiptAddress = address(key);\n return operate(async (storage) => {\n const doc = await storage.snapshot(ReceiptsDoc, BACKGROUND_CONTEXT);\n const existing = doc?.receipts[receiptAddress];\n return existing === undefined ? undefined : storedReceipt(existing, key).receipt;\n });\n },\n finish(request: PoRequestReceiptKey & { token: string; outcome: TerminalOutcome }) {\n const receiptAddress = address(request);\n if (!bounded(request.token, 128) || !['admitted', 'rejected', 'uncertain'].includes(request.outcome))\n throw new Error('Invalid request receipt finish.');\n return operate((storage) =>\n storage.commit(async (mutator) => {\n const doc = await mutator.doc(ReceiptsDoc);\n const existing = doc.receipts[receiptAddress];\n if (existing === undefined) throw new Error('Request receipt reservation does not exist.');\n const prior = storedReceipt(existing, request);\n if (prior.token !== request.token) throw new Error('Request receipt token does not match.');\n if (prior.receipt.outcome === request.outcome) return prior.receipt;\n if (prior.receipt.outcome !== 'reserved') throw new Error('Request receipt has already been finished.');\n const receipt: PoRequestReceipt = { ...prior.receipt, outcome: request.outcome };\n doc.receipts[receiptAddress] = JSON.parse(JSON.stringify({ ...prior, receipt }));\n return receipt;\n }, BACKGROUND_CONTEXT),\n );\n },\n };\n\n return {\n receipts,\n close() {\n if (closing !== undefined) return closing;\n closed = true;\n closing = (async () => {\n await Promise.allSettled(operations);\n if (opened === undefined) return;\n const storage = await opened.catch(() => undefined);\n if (storage === undefined) return;\n const errors: unknown[] = [];\n try {\n await storage.session.close(BACKGROUND_CONTEXT);\n } catch (error) {\n errors.push(error);\n }\n try {\n await storage.historyLease.release();\n } catch (error) {\n errors.push(error);\n }\n if (errors.length > 0) throw new AggregateError(errors, 'Request receipt storage failed to close.');\n })();\n return closing;\n },\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { PoRequestReceipts } from "../../schemas/packageApi.mjs";
2
+ //#region src/services/durableRequestReceipts/index.d.ts
3
+ /** One native SQLite metadata history, independent of any selected agent session. */
4
+ export declare function createRequestReceipts(options: {
5
+ directory: string;
6
+ maxReceipts?: number;
7
+ }): {
8
+ receipts: PoRequestReceipts;
9
+ close(): Promise<void>;
10
+ };
11
+ //#endregion
12
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/services/durableRequestReceipts/index.ts"],"mappings":";;;wBAmEgB,sBAAsB;EAAW;EAAmB;;EAClE,UAAU;EACV,SAAS"}
@@ -1,17 +1,12 @@
1
1
  import { createHistoryOwnership } from "../../../historyOwnership.mjs";
2
2
  import { DURABLE_BACKGROUND_CONTEXT, openSqliteSessionStorage } from "../../../sqliteSessionStorage.mjs";
3
+ import { ReceiptsDoc } from "./docs.mjs";
3
4
  import { randomUUID } from "node:crypto";
4
- import { defineDoc } from "@earendil-works/pi-durable";
5
- //#region src/services/requestReceipts/index.ts
5
+ //#region src/services/durableRequestReceipts/index.ts
6
6
  const RECEIPTS_SESSION_ID = "request_receipts";
7
- const ReceiptsDoc = defineDoc({
8
- kind: "po.request-receipts",
9
- version: 1,
10
- scope: "session",
11
- initial: () => ({ receipts: {} })
12
- });
13
7
  const FINGERPRINT = /^[a-f0-9]{64}$/u;
14
8
  const NAMESPACE = /^[a-z][a-z0-9.-]*$/u;
9
+ const MAX_RECEIPTS = 1024;
15
10
  function bounded(value, maximum) {
16
11
  return typeof value === "string" && value.length > 0 && value.length <= maximum;
17
12
  }
@@ -91,6 +86,10 @@ function createRequestReceipts(options) {
91
86
  receipt,
92
87
  token
93
88
  }));
89
+ const older = Object.keys(doc.receipts).filter((key) => key !== receiptAddress);
90
+ const reserved = (key) => doc.receipts[key].receipt?.outcome === "reserved";
91
+ const excess = Math.max(0, older.length + 1 - (options.maxReceipts ?? MAX_RECEIPTS));
92
+ for (const key of [...older.filter((key) => !reserved(key)), ...older.filter(reserved)].slice(0, excess)) delete doc.receipts[key];
94
93
  return {
95
94
  kind: "reserved",
96
95
  token
@@ -145,11 +144,6 @@ function createRequestReceipts(options) {
145
144
  } catch (error) {
146
145
  errors.push(error);
147
146
  }
148
- try {
149
- await storage.repository.close(DURABLE_BACKGROUND_CONTEXT);
150
- } catch (error) {
151
- errors.push(error);
152
- }
153
147
  try {
154
148
  await storage.historyLease.release();
155
149
  } catch (error) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":["BACKGROUND_CONTEXT"],"sources":["../../../../src/services/durableRequestReceipts/index.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\n\nimport type { Session } from '@earendil-works/pi-durable';\n\nimport type {\n PoRequestReceipt,\n PoRequestReceiptKey,\n PoRequestReceiptReservation,\n PoRequestReceipts,\n} from '../../schemas/packageApi';\nimport { createHistoryOwnership } from '../historyOwnership';\nimport { DURABLE_BACKGROUND_CONTEXT as BACKGROUND_CONTEXT, openSqliteSessionStorage } from '../sqliteSessionStorage';\nimport { ReceiptsDoc } from './docs';\n\nconst RECEIPTS_SESSION_ID = 'request_receipts';\nconst FINGERPRINT = /^[a-f0-9]{64}$/u;\nconst NAMESPACE = /^[a-z][a-z0-9.-]*$/u;\n// ponytail: oldest receipts are dropped past this cap (the whole map is one doc rewritten per commit), so a\n// retry older than ~1k sends can duplicate. Upgrade: a doc family keyed by address.\nconst MAX_RECEIPTS = 1024;\n\ntype TerminalOutcome = Exclude<PoRequestReceipt['outcome'], 'reserved'>;\ninterface StoredReceipt {\n version: 1;\n receipt: PoRequestReceipt;\n token: string;\n}\n\nfunction bounded(value: unknown, maximum: number): value is string {\n return typeof value === 'string' && value.length > 0 && value.length <= maximum;\n}\n\nfunction address(key: PoRequestReceiptKey): string {\n if (\n !bounded(key.namespace, 64) ||\n !NAMESPACE.test(key.namespace) ||\n !bounded(key.activationId, 256) ||\n !bounded(key.requestId, 256)\n )\n throw new Error('Invalid request receipt address.');\n // JSON tuple encoding retains exact arbitrary provider IDs, including separators.\n return JSON.stringify([key.namespace, key.activationId, key.requestId]);\n}\n\nfunction storedReceipt(input: unknown, key: PoRequestReceiptKey): StoredReceipt {\n if (typeof input !== 'object' || input === null || Array.isArray(input))\n throw new Error('Request receipt storage is corrupt.');\n const stored = JSON.parse(JSON.stringify(input)) as Partial<StoredReceipt>;\n const receipt = stored.receipt;\n if (\n stored.version !== 1 ||\n !bounded(stored.token, 128) ||\n typeof receipt !== 'object' ||\n receipt === null ||\n receipt.namespace !== key.namespace ||\n receipt.activationId !== key.activationId ||\n receipt.requestId !== key.requestId ||\n !bounded(receipt.destination, 512) ||\n !bounded(receipt.transactionId, 256) ||\n !FINGERPRINT.test(receipt.fingerprint) ||\n !['reserved', 'admitted', 'rejected', 'uncertain'].includes(receipt.outcome)\n )\n throw new Error('Request receipt storage is corrupt.');\n return stored as StoredReceipt;\n}\n\n/** One native SQLite metadata history, independent of any selected agent session. */\nexport function createRequestReceipts(options: { directory: string; maxReceipts?: number }): {\n receipts: PoRequestReceipts;\n close(): Promise<void>;\n} {\n const ownership = createHistoryOwnership({ sourceFormat: 'sqlite' });\n let opened: ReturnType<typeof openSqliteSessionStorage> | undefined;\n let closed = false;\n let closing: Promise<void> | undefined;\n const operations = new Set<Promise<unknown>>();\n\n const session = async (): Promise<Session> => {\n if (closed) throw new Error('Request receipt storage is closed.');\n opened ??= openSqliteSessionStorage(\n { sessionsRoot: options.directory, sessionId: RECEIPTS_SESSION_ID, historyOwnership: ownership },\n BACKGROUND_CONTEXT,\n );\n return (await opened).session;\n };\n const operate = <T>(callback: (session: Session) => Promise<T>): Promise<T> => {\n if (closed) return Promise.reject(new Error('Request receipt storage is closed.'));\n const operation = session().then(callback);\n operations.add(operation);\n void operation.then(\n () => operations.delete(operation),\n () => operations.delete(operation),\n );\n return operation;\n };\n\n const receipts: PoRequestReceipts = {\n reserve(request: PoRequestReceiptReservation) {\n const receiptAddress = address(request);\n if (\n !FINGERPRINT.test(request.fingerprint) ||\n !bounded(request.destination, 512) ||\n !bounded(request.transactionId, 256)\n )\n throw new Error('Invalid request receipt reservation.');\n return operate((storage) =>\n storage.commit(async (mutator) => {\n const doc = await mutator.doc(ReceiptsDoc);\n const existing = doc.receipts[receiptAddress];\n if (existing !== undefined) {\n const prior = storedReceipt(existing, request).receipt;\n return prior.fingerprint === request.fingerprint &&\n prior.destination === request.destination &&\n prior.transactionId === request.transactionId\n ? { kind: 'existing' as const, receipt: prior }\n : { kind: 'conflict' as const, receipt: prior };\n }\n const token = randomUUID();\n const receipt: PoRequestReceipt = {\n namespace: request.namespace,\n activationId: request.activationId,\n requestId: request.requestId,\n fingerprint: request.fingerprint,\n destination: request.destination,\n transactionId: request.transactionId,\n outcome: 'reserved',\n };\n doc.receipts[receiptAddress] = JSON.parse(JSON.stringify({ version: 1, receipt, token }));\n // Object keys keep insertion order, so the first keys are the oldest. Finished receipts go first; a\n // reservation nothing finished (a crash mid-send) goes only once those run out, never the new one.\n const older = Object.keys(doc.receipts).filter((key) => key !== receiptAddress);\n const reserved = (key: string) =>\n (doc.receipts[key] as unknown as StoredReceipt).receipt?.outcome === 'reserved';\n const excess = Math.max(0, older.length + 1 - (options.maxReceipts ?? MAX_RECEIPTS));\n for (const key of [...older.filter((key) => !reserved(key)), ...older.filter(reserved)].slice(0, excess))\n delete doc.receipts[key];\n return { kind: 'reserved' as const, token };\n }, BACKGROUND_CONTEXT),\n );\n },\n lookup(key: PoRequestReceiptKey) {\n const receiptAddress = address(key);\n return operate(async (storage) => {\n const doc = await storage.snapshot(ReceiptsDoc, BACKGROUND_CONTEXT);\n const existing = doc?.receipts[receiptAddress];\n return existing === undefined ? undefined : storedReceipt(existing, key).receipt;\n });\n },\n finish(request: PoRequestReceiptKey & { token: string; outcome: TerminalOutcome }) {\n const receiptAddress = address(request);\n if (!bounded(request.token, 128) || !['admitted', 'rejected', 'uncertain'].includes(request.outcome))\n throw new Error('Invalid request receipt finish.');\n return operate((storage) =>\n storage.commit(async (mutator) => {\n const doc = await mutator.doc(ReceiptsDoc);\n const existing = doc.receipts[receiptAddress];\n if (existing === undefined) throw new Error('Request receipt reservation does not exist.');\n const prior = storedReceipt(existing, request);\n if (prior.token !== request.token) throw new Error('Request receipt token does not match.');\n if (prior.receipt.outcome === request.outcome) return prior.receipt;\n if (prior.receipt.outcome !== 'reserved') throw new Error('Request receipt has already been finished.');\n const receipt: PoRequestReceipt = { ...prior.receipt, outcome: request.outcome };\n doc.receipts[receiptAddress] = JSON.parse(JSON.stringify({ ...prior, receipt }));\n return receipt;\n }, BACKGROUND_CONTEXT),\n );\n },\n };\n\n return {\n receipts,\n close() {\n if (closing !== undefined) return closing;\n closed = true;\n closing = (async () => {\n await Promise.allSettled(operations);\n if (opened === undefined) return;\n const storage = await opened.catch(() => undefined);\n if (storage === undefined) return;\n const errors: unknown[] = [];\n try {\n await storage.session.close(BACKGROUND_CONTEXT);\n } catch (error) {\n errors.push(error);\n }\n try {\n await storage.historyLease.release();\n } catch (error) {\n errors.push(error);\n }\n if (errors.length > 0) throw new AggregateError(errors, 'Request receipt storage failed to close.');\n })();\n return closing;\n },\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ let _earendil_works_pi_durable = require("@earendil-works/pi-durable");
2
+ //#region src/services/durableSession/docs.ts
3
+ /** Public string identity belongs to Po, not the durable numeric ID namespace. */
4
+ const SessionIdentityDoc = (0, _earendil_works_pi_durable.defineDoc)({
5
+ kind: "po.session.identity",
6
+ version: 1,
7
+ scope: "session",
8
+ initial: () => ({
9
+ id: "",
10
+ createdAt: 0,
11
+ parentSessionId: ""
12
+ })
13
+ });
14
+ const SessionMetadataDoc = (0, _earendil_works_pi_durable.defineDoc)({
15
+ kind: "po.session.metadata",
16
+ version: 1,
17
+ scope: "session",
18
+ initial: () => ({
19
+ name: "",
20
+ workspaceRoot: "",
21
+ execution: "",
22
+ laneName: "main",
23
+ groups: []
24
+ })
25
+ });
26
+ const FastModeDoc = (0, _earendil_works_pi_durable.defineDoc)({
27
+ kind: "po.fast-mode",
28
+ version: 1,
29
+ scope: "session",
30
+ initial: () => ({ enabled: false })
31
+ });
32
+ const AgentLockDoc = (0, _earendil_works_pi_durable.defineDoc)({
33
+ kind: "po.agent-lock",
34
+ version: 1,
35
+ scope: "session",
36
+ initial: () => ({ locked: false })
37
+ });
38
+ const LabelsDoc = (0, _earendil_works_pi_durable.defineDoc)({
39
+ kind: "po.labels",
40
+ version: 1,
41
+ scope: "session",
42
+ initial: () => ({ labels: {} })
43
+ });
44
+ /**
45
+ * Profile identity entries of one conversation, written in the identity entry's commit, so a transcript page finds
46
+ * the avatar in effect without scanning backwards. Rewindable with `asOf` forks: a fork keeps only the identities
47
+ * written before its fork point. Sessions written before this document have no entries and show the default avatar.
48
+ */
49
+ const IdentityHistoryDoc = (0, _earendil_works_pi_durable.defineDoc)({
50
+ kind: "po.identity-history",
51
+ version: 1,
52
+ scope: "conversation",
53
+ history: "rewindable",
54
+ fork: "asOf",
55
+ initial: () => ({ items: [] })
56
+ });
57
+ //#endregion
58
+ exports.AgentLockDoc = AgentLockDoc;
59
+ exports.FastModeDoc = FastModeDoc;
60
+ exports.IdentityHistoryDoc = IdentityHistoryDoc;
61
+ exports.LabelsDoc = LabelsDoc;
62
+ exports.SessionIdentityDoc = SessionIdentityDoc;
63
+ exports.SessionMetadataDoc = SessionMetadataDoc;
64
+
65
+ //# sourceMappingURL=docs.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.cjs","names":["defineDoc"],"sources":["../../../../src/services/durableSession/docs.ts"],"sourcesContent":["import type { JsonValue } from '@earendil-works/chord';\nimport { defineDoc } from '@earendil-works/pi-durable';\n\n/** Public string identity belongs to Po, not the durable numeric ID namespace. */\nexport const SessionIdentityDoc = defineDoc({\n kind: 'po.session.identity',\n version: 1,\n scope: 'session',\n initial: () => ({ id: '', createdAt: 0, parentSessionId: '' }),\n});\nexport const SessionMetadataDoc = defineDoc({\n kind: 'po.session.metadata',\n version: 1,\n scope: 'session',\n // `groups` arrived after version 1 shipped: older sessions have no field, so readers default it.\n initial: () => ({ name: '', workspaceRoot: '', execution: '', laneName: 'main', groups: [] as string[] }),\n});\nexport const FastModeDoc = defineDoc({\n kind: 'po.fast-mode',\n version: 1,\n scope: 'session',\n initial: (): { enabled: boolean } => ({ enabled: false }),\n});\n// Blocks local agent turns so a remote MCP agent can work without the local model acting.\nexport const AgentLockDoc = defineDoc({\n kind: 'po.agent-lock',\n version: 1,\n scope: 'session',\n initial: (): { locked: boolean } => ({ locked: false }),\n});\nexport const LabelsDoc = defineDoc({\n kind: 'po.labels',\n version: 1,\n scope: 'session',\n initial: () => ({ labels: {} as Record<string, string> }),\n});\nexport type IdentityHistory = { items: { seq: number; data: JsonValue }[] };\n/**\n * Profile identity entries of one conversation, written in the identity entry's commit, so a transcript page finds\n * the avatar in effect without scanning backwards. Rewindable with `asOf` forks: a fork keeps only the identities\n * written before its fork point. Sessions written before this document have no entries and show the default avatar.\n */\nexport const IdentityHistoryDoc = defineDoc({\n kind: 'po.identity-history',\n version: 1,\n scope: 'conversation',\n history: 'rewindable',\n fork: 'asOf',\n initial: (): IdentityHistory => ({ items: [] }),\n});\n"],"mappings":";;;AAIA,MAAa,sBAAA,GAAqBA,2BAAAA,UAAAA,CAAU;CAC1C,MAAM;CACN,SAAS;CACT,OAAO;CACP,gBAAgB;EAAE,IAAI;EAAI,WAAW;EAAG,iBAAiB;CAAG;AAC9D,CAAC;AACD,MAAa,sBAAA,GAAqBA,2BAAAA,UAAAA,CAAU;CAC1C,MAAM;CACN,SAAS;CACT,OAAO;CAEP,gBAAgB;EAAE,MAAM;EAAI,eAAe;EAAI,WAAW;EAAI,UAAU;EAAQ,QAAQ,CAAC;CAAc;AACzG,CAAC;AACD,MAAa,eAAA,GAAcA,2BAAAA,UAAAA,CAAU;CACnC,MAAM;CACN,SAAS;CACT,OAAO;CACP,gBAAsC,EAAE,SAAS,MAAM;AACzD,CAAC;AAED,MAAa,gBAAA,GAAeA,2BAAAA,UAAAA,CAAU;CACpC,MAAM;CACN,SAAS;CACT,OAAO;CACP,gBAAqC,EAAE,QAAQ,MAAM;AACvD,CAAC;AACD,MAAa,aAAA,GAAYA,2BAAAA,UAAAA,CAAU;CACjC,MAAM;CACN,SAAS;CACT,OAAO;CACP,gBAAgB,EAAE,QAAQ,CAAC,EAA4B;AACzD,CAAC;;;;;;AAOD,MAAa,sBAAA,GAAqBA,2BAAAA,UAAAA,CAAU;CAC1C,MAAM;CACN,SAAS;CACT,OAAO;CACP,SAAS;CACT,MAAM;CACN,gBAAiC,EAAE,OAAO,CAAC,EAAE;AAC/C,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { JsonValue } from "@earendil-works/chord";
2
+ //#region src/services/durableSession/docs.d.ts
3
+ /** Public string identity belongs to Po, not the durable numeric ID namespace. */
4
+ export declare const SessionIdentityDoc: import("@earendil-works/pi-durable").SessionDocToken<{
5
+ id: string;
6
+ createdAt: number;
7
+ parentSessionId: string;
8
+ }>;
9
+ export declare const SessionMetadataDoc: import("@earendil-works/pi-durable").SessionDocToken<{
10
+ name: string;
11
+ workspaceRoot: string;
12
+ execution: string;
13
+ laneName: string;
14
+ groups: string[];
15
+ }>;
16
+ //#endregion
17
+ //# sourceMappingURL=docs.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.d.mts","names":[],"sources":["../../../../src/services/durableSession/docs.ts"],"mappings":";;;qBAIa,yDAAkB;;;;;qBAMlB,yDAAkB;;;;;EAKiE"}
@@ -0,0 +1,60 @@
1
+ import { defineDoc } from "@earendil-works/pi-durable";
2
+ //#region src/services/durableSession/docs.ts
3
+ /** Public string identity belongs to Po, not the durable numeric ID namespace. */
4
+ const SessionIdentityDoc = defineDoc({
5
+ kind: "po.session.identity",
6
+ version: 1,
7
+ scope: "session",
8
+ initial: () => ({
9
+ id: "",
10
+ createdAt: 0,
11
+ parentSessionId: ""
12
+ })
13
+ });
14
+ const SessionMetadataDoc = defineDoc({
15
+ kind: "po.session.metadata",
16
+ version: 1,
17
+ scope: "session",
18
+ initial: () => ({
19
+ name: "",
20
+ workspaceRoot: "",
21
+ execution: "",
22
+ laneName: "main",
23
+ groups: []
24
+ })
25
+ });
26
+ const FastModeDoc = defineDoc({
27
+ kind: "po.fast-mode",
28
+ version: 1,
29
+ scope: "session",
30
+ initial: () => ({ enabled: false })
31
+ });
32
+ const AgentLockDoc = defineDoc({
33
+ kind: "po.agent-lock",
34
+ version: 1,
35
+ scope: "session",
36
+ initial: () => ({ locked: false })
37
+ });
38
+ const LabelsDoc = defineDoc({
39
+ kind: "po.labels",
40
+ version: 1,
41
+ scope: "session",
42
+ initial: () => ({ labels: {} })
43
+ });
44
+ /**
45
+ * Profile identity entries of one conversation, written in the identity entry's commit, so a transcript page finds
46
+ * the avatar in effect without scanning backwards. Rewindable with `asOf` forks: a fork keeps only the identities
47
+ * written before its fork point. Sessions written before this document have no entries and show the default avatar.
48
+ */
49
+ const IdentityHistoryDoc = defineDoc({
50
+ kind: "po.identity-history",
51
+ version: 1,
52
+ scope: "conversation",
53
+ history: "rewindable",
54
+ fork: "asOf",
55
+ initial: () => ({ items: [] })
56
+ });
57
+ //#endregion
58
+ export { AgentLockDoc, FastModeDoc, IdentityHistoryDoc, LabelsDoc, SessionIdentityDoc, SessionMetadataDoc };
59
+
60
+ //# sourceMappingURL=docs.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.mjs","names":[],"sources":["../../../../src/services/durableSession/docs.ts"],"sourcesContent":["import type { JsonValue } from '@earendil-works/chord';\nimport { defineDoc } from '@earendil-works/pi-durable';\n\n/** Public string identity belongs to Po, not the durable numeric ID namespace. */\nexport const SessionIdentityDoc = defineDoc({\n kind: 'po.session.identity',\n version: 1,\n scope: 'session',\n initial: () => ({ id: '', createdAt: 0, parentSessionId: '' }),\n});\nexport const SessionMetadataDoc = defineDoc({\n kind: 'po.session.metadata',\n version: 1,\n scope: 'session',\n // `groups` arrived after version 1 shipped: older sessions have no field, so readers default it.\n initial: () => ({ name: '', workspaceRoot: '', execution: '', laneName: 'main', groups: [] as string[] }),\n});\nexport const FastModeDoc = defineDoc({\n kind: 'po.fast-mode',\n version: 1,\n scope: 'session',\n initial: (): { enabled: boolean } => ({ enabled: false }),\n});\n// Blocks local agent turns so a remote MCP agent can work without the local model acting.\nexport const AgentLockDoc = defineDoc({\n kind: 'po.agent-lock',\n version: 1,\n scope: 'session',\n initial: (): { locked: boolean } => ({ locked: false }),\n});\nexport const LabelsDoc = defineDoc({\n kind: 'po.labels',\n version: 1,\n scope: 'session',\n initial: () => ({ labels: {} as Record<string, string> }),\n});\nexport type IdentityHistory = { items: { seq: number; data: JsonValue }[] };\n/**\n * Profile identity entries of one conversation, written in the identity entry's commit, so a transcript page finds\n * the avatar in effect without scanning backwards. Rewindable with `asOf` forks: a fork keeps only the identities\n * written before its fork point. Sessions written before this document have no entries and show the default avatar.\n */\nexport const IdentityHistoryDoc = defineDoc({\n kind: 'po.identity-history',\n version: 1,\n scope: 'conversation',\n history: 'rewindable',\n fork: 'asOf',\n initial: (): IdentityHistory => ({ items: [] }),\n});\n"],"mappings":";;;AAIA,MAAa,qBAAqB,UAAU;CAC1C,MAAM;CACN,SAAS;CACT,OAAO;CACP,gBAAgB;EAAE,IAAI;EAAI,WAAW;EAAG,iBAAiB;CAAG;AAC9D,CAAC;AACD,MAAa,qBAAqB,UAAU;CAC1C,MAAM;CACN,SAAS;CACT,OAAO;CAEP,gBAAgB;EAAE,MAAM;EAAI,eAAe;EAAI,WAAW;EAAI,UAAU;EAAQ,QAAQ,CAAC;CAAc;AACzG,CAAC;AACD,MAAa,cAAc,UAAU;CACnC,MAAM;CACN,SAAS;CACT,OAAO;CACP,gBAAsC,EAAE,SAAS,MAAM;AACzD,CAAC;AAED,MAAa,eAAe,UAAU;CACpC,MAAM;CACN,SAAS;CACT,OAAO;CACP,gBAAqC,EAAE,QAAQ,MAAM;AACvD,CAAC;AACD,MAAa,YAAY,UAAU;CACjC,MAAM;CACN,SAAS;CACT,OAAO;CACP,gBAAgB,EAAE,QAAQ,CAAC,EAA4B;AACzD,CAAC;;;;;;AAOD,MAAa,qBAAqB,UAAU;CAC1C,MAAM;CACN,SAAS;CACT,OAAO;CACP,SAAS;CACT,MAAM;CACN,gBAAiC,EAAE,OAAO,CAAC,EAAE;AAC/C,CAAC"}
@@ -0,0 +1,21 @@
1
+ const require_docs = require("./docs.cjs");
2
+ //#region src/services/durableSession/index.ts
3
+ /** The directory every durable session journal lives in, under the sessions root. */
4
+ const DURABLE_DIRECTORY = "durable-v1";
5
+ /** Stamps a new session's identity, or checks an existing one matches the requested id. */
6
+ async function initializeSessionIdentity(session, request, context) {
7
+ const identity = await session.snapshot(require_docs.SessionIdentityDoc, context);
8
+ if (request.existing && (!identity || identity.id !== request.id)) throw new Error("SQLite session id does not match the requested session");
9
+ if (request.existing) return;
10
+ await session.commit(async (tx) => {
11
+ const doc = await tx.doc(require_docs.SessionIdentityDoc);
12
+ doc.id = request.id;
13
+ doc.createdAt = Date.now();
14
+ doc.parentSessionId = request.parentSessionId ?? "";
15
+ }, context);
16
+ }
17
+ //#endregion
18
+ exports.DURABLE_DIRECTORY = DURABLE_DIRECTORY;
19
+ exports.initializeSessionIdentity = initializeSessionIdentity;
20
+
21
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["SessionIdentityDoc"],"sources":["../../../../src/services/durableSession/index.ts"],"sourcesContent":["import type { Context } from '@earendil-works/chord';\nimport type { Session } from '@earendil-works/pi-durable';\n\nimport { SessionIdentityDoc } from './docs';\n\n/** The directory every durable session journal lives in, under the sessions root. */\nexport const DURABLE_DIRECTORY = 'durable-v1';\n/** Stamps a new session's identity, or checks an existing one matches the requested id. */\nexport async function initializeSessionIdentity(\n session: Session,\n request: { readonly id: string; readonly existing: boolean; readonly parentSessionId?: string },\n context: Context,\n): Promise<void> {\n const identity = await session.snapshot(SessionIdentityDoc, context);\n if (request.existing && (!identity || identity.id !== request.id))\n throw new Error('SQLite session id does not match the requested session');\n if (request.existing) return;\n await session.commit(async (tx) => {\n const doc = await tx.doc(SessionIdentityDoc);\n doc.id = request.id;\n doc.createdAt = Date.now();\n doc.parentSessionId = request.parentSessionId ?? '';\n }, context);\n}\n"],"mappings":";;;AAMA,MAAa,oBAAoB;;AAEjC,eAAsB,0BACpB,SACA,SACA,SACe;CACf,MAAM,WAAW,MAAM,QAAQ,SAASA,aAAAA,oBAAoB,OAAO;CACnE,IAAI,QAAQ,aAAa,CAAC,YAAY,SAAS,OAAO,QAAQ,KAC5D,MAAM,IAAI,MAAM,wDAAwD;CAC1E,IAAI,QAAQ,UAAU;CACtB,MAAM,QAAQ,OAAO,OAAO,OAAO;EACjC,MAAM,MAAM,MAAM,GAAG,IAAIA,aAAAA,kBAAkB;EAC3C,IAAI,KAAK,QAAQ;EACjB,IAAI,YAAY,KAAK,IAAI;EACzB,IAAI,kBAAkB,QAAQ,mBAAmB;CACnD,GAAG,OAAO;AACZ"}
@@ -0,0 +1,13 @@
1
+ import { Session } from "@earendil-works/pi-durable";
2
+ import { Context } from "@earendil-works/chord";
3
+ //#region src/services/durableSession/index.d.ts
4
+ /** The directory every durable session journal lives in, under the sessions root. */
5
+ export declare const DURABLE_DIRECTORY = "durable-v1";
6
+ /** Stamps a new session's identity, or checks an existing one matches the requested id. */
7
+ export declare function initializeSessionIdentity(session: Session, request: {
8
+ readonly id: string;
9
+ readonly existing: boolean;
10
+ readonly parentSessionId?: string;
11
+ }, context: Context): Promise<void>;
12
+ //#endregion
13
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/services/durableSession/index.ts"],"mappings":";;;;qBAMa;;wBAES,0BACpB,SAAS,SACT;WAAoB;WAAqB;WAA4B;GACrE,SAAS,UACR"}