@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,20 @@
1
+ import { SessionIdentityDoc } from "./docs.mjs";
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(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(SessionIdentityDoc);
12
+ doc.id = request.id;
13
+ doc.createdAt = Date.now();
14
+ doc.parentSessionId = request.parentSessionId ?? "";
15
+ }, context);
16
+ }
17
+ //#endregion
18
+ export { DURABLE_DIRECTORY, initializeSessionIdentity };
19
+
20
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"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,SAAS,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,IAAI,kBAAkB;EAC3C,IAAI,KAAK,QAAQ;EACjB,IAAI,YAAY,KAAK,IAAI;EACzB,IAAI,kBAAkB,QAAQ,mBAAmB;CACnD,GAAG,OAAO;AACZ"}
@@ -0,0 +1,15 @@
1
+ //#region src/services/durableSubagents/docs.ts
2
+ /** This session's child runs by run ID, and the child conversations of reported runs dropped past the cap. */
3
+ const SubagentsDoc = (0, require("@earendil-works/pi-durable").defineDoc)({
4
+ kind: "po.subagents.identity",
5
+ version: 1,
6
+ scope: "session",
7
+ initial: () => ({
8
+ runs: {},
9
+ retired: []
10
+ })
11
+ });
12
+ //#endregion
13
+ exports.SubagentsDoc = SubagentsDoc;
14
+
15
+ //# sourceMappingURL=docs.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.cjs","names":["defineDoc"],"sources":["../../../../src/services/durableSubagents/docs.ts"],"sourcesContent":["import { defineDoc, type JsonObject } from '@earendil-works/pi-durable';\n\n/** One child run in its parent's Harness, kept so it can be re-attached after a restart. */\nexport type StoredSubagent = {\n conversationId: number;\n anchorTaskId: number;\n /** Request ID of the task input given to the child. */\n inputRequestId: string;\n /** The launcher's request without its live parts; dropped once the run is reported. */\n request: JsonObject | null;\n /** Set once the run's completion reached its launcher. */\n reported: boolean;\n /** Kept from the request once it is reported, so a finished run still has a status. */\n agent?: string;\n task?: string;\n /** How the run ended, when its launcher reported it. */\n state?: 'completed' | 'failed' | 'stopped';\n};\n\n/** This session's child runs by run ID, and the child conversations of reported runs dropped past the cap. */\nexport const SubagentsDoc = defineDoc({\n kind: 'po.subagents.identity',\n version: 1,\n scope: 'session',\n initial: () => ({ runs: {} as Record<string, StoredSubagent>, retired: [] as number[] }),\n});\n"],"mappings":";;AAoBA,MAAa,gBAAA,uCAAeA,CAAAA,CAAAA,UAAAA,CAAU;CACpC,MAAM;CACN,SAAS;CACT,OAAO;CACP,gBAAgB;EAAE,MAAM,CAAC;EAAqC,SAAS,CAAC;CAAc;AACxF,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { defineDoc } from "@earendil-works/pi-durable";
2
+ //#region src/services/durableSubagents/docs.ts
3
+ /** This session's child runs by run ID, and the child conversations of reported runs dropped past the cap. */
4
+ const SubagentsDoc = defineDoc({
5
+ kind: "po.subagents.identity",
6
+ version: 1,
7
+ scope: "session",
8
+ initial: () => ({
9
+ runs: {},
10
+ retired: []
11
+ })
12
+ });
13
+ //#endregion
14
+ export { SubagentsDoc };
15
+
16
+ //# sourceMappingURL=docs.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.mjs","names":[],"sources":["../../../../src/services/durableSubagents/docs.ts"],"sourcesContent":["import { defineDoc, type JsonObject } from '@earendil-works/pi-durable';\n\n/** One child run in its parent's Harness, kept so it can be re-attached after a restart. */\nexport type StoredSubagent = {\n conversationId: number;\n anchorTaskId: number;\n /** Request ID of the task input given to the child. */\n inputRequestId: string;\n /** The launcher's request without its live parts; dropped once the run is reported. */\n request: JsonObject | null;\n /** Set once the run's completion reached its launcher. */\n reported: boolean;\n /** Kept from the request once it is reported, so a finished run still has a status. */\n agent?: string;\n task?: string;\n /** How the run ended, when its launcher reported it. */\n state?: 'completed' | 'failed' | 'stopped';\n};\n\n/** This session's child runs by run ID, and the child conversations of reported runs dropped past the cap. */\nexport const SubagentsDoc = defineDoc({\n kind: 'po.subagents.identity',\n version: 1,\n scope: 'session',\n initial: () => ({ runs: {} as Record<string, StoredSubagent>, retired: [] as number[] }),\n});\n"],"mappings":";;;AAoBA,MAAa,eAAe,UAAU;CACpC,MAAM;CACN,SAAS;CACT,OAAO;CACP,gBAAgB;EAAE,MAAM,CAAC;EAAqC,SAAS,CAAC;CAAc;AACxF,CAAC"}
@@ -0,0 +1,11 @@
1
+ const require_tasks = require("./tasks.cjs");
2
+ //#region src/services/durableSubagents/extension.ts
3
+ /** Installed in every Harness so a live anchor's definition resolves after a restart. */
4
+ const SubagentsExtension = (0, require("@earendil-works/pi-durable").defineExtension)({
5
+ name: "po.subagents",
6
+ tasks: [require_tasks.SubagentAnchorTask]
7
+ });
8
+ //#endregion
9
+ exports.SubagentsExtension = SubagentsExtension;
10
+
11
+ //# sourceMappingURL=extension.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension.cjs","names":["defineExtension","SubagentAnchorTask"],"sources":["../../../../src/services/durableSubagents/extension.ts"],"sourcesContent":["import { defineExtension } from '@earendil-works/pi-durable';\n\nimport { SubagentAnchorTask } from './tasks';\n\n/** Installed in every Harness so a live anchor's definition resolves after a restart. */\nexport const SubagentsExtension = defineExtension({ name: 'po.subagents', tasks: [SubagentAnchorTask] });\n"],"mappings":";;;AAKA,MAAa,sBAAA,uCAAqBA,CAAAA,CAAAA,gBAAAA,CAAgB;CAAE,MAAM;CAAgB,OAAO,CAACC,cAAAA,kBAAkB;AAAE,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { SubagentAnchorTask } from "./tasks.mjs";
2
+ import { defineExtension } from "@earendil-works/pi-durable";
3
+ //#region src/services/durableSubagents/extension.ts
4
+ /** Installed in every Harness so a live anchor's definition resolves after a restart. */
5
+ const SubagentsExtension = defineExtension({
6
+ name: "po.subagents",
7
+ tasks: [SubagentAnchorTask]
8
+ });
9
+ //#endregion
10
+ export { SubagentsExtension };
11
+
12
+ //# sourceMappingURL=extension.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension.mjs","names":[],"sources":["../../../../src/services/durableSubagents/extension.ts"],"sourcesContent":["import { defineExtension } from '@earendil-works/pi-durable';\n\nimport { SubagentAnchorTask } from './tasks';\n\n/** Installed in every Harness so a live anchor's definition resolves after a restart. */\nexport const SubagentsExtension = defineExtension({ name: 'po.subagents', tasks: [SubagentAnchorTask] });\n"],"mappings":";;;;AAKA,MAAa,qBAAqB,gBAAgB;CAAE,MAAM;CAAgB,OAAO,CAAC,kBAAkB;AAAE,CAAC"}
@@ -0,0 +1,95 @@
1
+ const require_docs = require("./docs.cjs");
2
+ const require_tasks = require("./tasks.cjs");
3
+ const require_extension = require("./extension.cjs");
4
+ //#region src/services/durableSubagents/index.ts
5
+ /**
6
+ * Creates one run's child conversation, owned by a background anchor of `parent`, and records the run, in one
7
+ * commit. A fresh child starts as a copy of the parent's agent; a fork also keeps its history through `forkAt`.
8
+ */
9
+ async function createSubagentConversation(harness, parent, launch, context) {
10
+ const { id, stored } = await parent.commit(async (tx) => {
11
+ const anchor = await tx.createTask(require_tasks.SubagentAnchorTask, null, {
12
+ ownership: { kind: "conversation" },
13
+ background: true
14
+ });
15
+ const ownership = {
16
+ kind: "task",
17
+ taskId: anchor
18
+ };
19
+ const child = launch.forkAt === void 0 ? await tx.createConversation({ ownership }) : await tx.forkConversation(parent.id, launch.forkAt, { ownership });
20
+ const runs = (await tx.doc(require_docs.SubagentsDoc)).runs;
21
+ if (Object.hasOwn(runs, launch.runId)) throw new Error(`Child run '${launch.runId}' already exists.`);
22
+ const record = {
23
+ conversationId: child.id,
24
+ anchorTaskId: anchor,
25
+ inputRequestId: `subagent:${anchor}:1`,
26
+ request: launch.request,
27
+ reported: false
28
+ };
29
+ runs[launch.runId] = record;
30
+ return {
31
+ id: child.id,
32
+ stored: record
33
+ };
34
+ }, context);
35
+ const conversation = await harness.conversation(id, context);
36
+ if (!conversation) throw new Error(`Child conversation ${id} is unavailable.`);
37
+ return {
38
+ conversation,
39
+ stored
40
+ };
41
+ }
42
+ async function readSubagents(harness, context) {
43
+ return (await harness.snapshot(require_docs.SubagentsDoc, context))?.runs ?? {};
44
+ }
45
+ const MAX_REPORTED_RUNS = 256;
46
+ /**
47
+ * Marks a run reported and drops the request only a re-attach needed, keeping its agent, task and outcome. Returns
48
+ * the run's child conversation, or nothing when the run was already reported or is unknown.
49
+ */
50
+ async function markSubagentReported(harness, runId, context, outcome, maxReported = MAX_REPORTED_RUNS) {
51
+ return harness.commit(async (tx) => {
52
+ const doc = await tx.doc(require_docs.SubagentsDoc);
53
+ const run = doc.runs[runId];
54
+ if (!run || run.reported) return void 0;
55
+ run.reported = true;
56
+ if (typeof run.request?.agent === "string") run.agent = run.request.agent;
57
+ if (typeof run.request?.task === "string") run.task = run.request.task;
58
+ if (outcome) run.state = outcome.state;
59
+ run.request = null;
60
+ const reported = Object.entries(doc.runs).filter(([, stored]) => stored.reported);
61
+ const dropped = reported.slice(0, Math.max(0, reported.length - maxReported));
62
+ if (dropped.length > 0) {
63
+ doc.retired = [...doc.retired ?? [], ...dropped.map(([, stored]) => stored.conversationId)];
64
+ for (const [id] of dropped) delete doc.runs[id];
65
+ }
66
+ return run.conversationId;
67
+ }, context);
68
+ }
69
+ /**
70
+ * Stops a run nothing could re-attach, before the Harness resumes: its child would otherwise run on without a
71
+ * launcher. Only marks its live tasks and withdraws its queued inputs, so scheduling stays paused, then reports it
72
+ * failed. Returns its child conversation, or nothing for an unknown or reported run.
73
+ */
74
+ async function abandonSubagent(harness, runId, context) {
75
+ const run = (await readSubagents(harness, context))[runId];
76
+ if (!run || run.reported) return void 0;
77
+ const { tasks, submissions } = await harness.inspect(context);
78
+ for (const submission of submissions) if (submission.conversationId === run.conversationId && submission.status === "queued") await harness.abortSubmission(submission.id, context, submission.conversationId);
79
+ for (const task of tasks) if (task.record.conversationId === run.conversationId) await harness.abortTask(task.record.id, context);
80
+ return markSubagentReported(harness, runId, context, { state: "failed" });
81
+ }
82
+ /** Child conversations of this session; their launcher reports what they spend, not the parent. */
83
+ async function subagentConversations(harness, context) {
84
+ const doc = await harness.snapshot(require_docs.SubagentsDoc, context);
85
+ return [...Object.values(doc?.runs ?? {}).map((run) => run.conversationId), ...doc?.retired ?? []].map((id) => id);
86
+ }
87
+ //#endregion
88
+ exports.SubagentsExtension = require_extension.SubagentsExtension;
89
+ exports.abandonSubagent = abandonSubagent;
90
+ exports.createSubagentConversation = createSubagentConversation;
91
+ exports.markSubagentReported = markSubagentReported;
92
+ exports.readSubagents = readSubagents;
93
+ exports.subagentConversations = subagentConversations;
94
+
95
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["SubagentAnchorTask","SubagentsDoc"],"sources":["../../../../src/services/durableSubagents/index.ts"],"sourcesContent":["import type { Context } from '@earendil-works/chord';\nimport type { Conversation, ConversationId, EntryId, Harness, JsonObject } from '@earendil-works/pi-durable';\n\nimport { SubagentsDoc, type StoredSubagent } from './docs';\nimport { SubagentAnchorTask } from './tasks';\n\nexport { SubagentsDoc, type StoredSubagent } from './docs';\nexport { SubagentsExtension } from './extension';\n\nexport interface SubagentLaunch {\n readonly runId: string;\n readonly request: JsonObject;\n /** Start from the parent's history through this entry instead of a fresh copy of its agent. */\n readonly forkAt?: EntryId;\n}\n\n/**\n * Creates one run's child conversation, owned by a background anchor of `parent`, and records the run, in one\n * commit. A fresh child starts as a copy of the parent's agent; a fork also keeps its history through `forkAt`.\n */\nexport async function createSubagentConversation(\n harness: Harness,\n parent: Conversation,\n launch: SubagentLaunch,\n context: Context,\n): Promise<{ conversation: Conversation; stored: StoredSubagent }> {\n const { id, stored } = await parent.commit(async (tx) => {\n const anchor = await tx.createTask(SubagentAnchorTask, null, {\n ownership: { kind: 'conversation' },\n background: true,\n });\n const ownership = { kind: 'task', taskId: anchor } as const;\n const child =\n launch.forkAt === undefined\n ? await tx.createConversation({ ownership })\n : await tx.forkConversation(parent.id, launch.forkAt, { ownership });\n const runs = (await tx.doc(SubagentsDoc)).runs;\n if (Object.hasOwn(runs, launch.runId)) throw new Error(`Child run '${launch.runId}' already exists.`);\n const record: StoredSubagent = {\n conversationId: child.id,\n anchorTaskId: anchor,\n // One task input per anchor, so a retried admission never posts it twice.\n inputRequestId: `subagent:${anchor}:1`,\n request: launch.request,\n reported: false,\n };\n runs[launch.runId] = record;\n return { id: child.id, stored: record };\n }, context);\n const conversation = await harness.conversation(id, context);\n if (!conversation) throw new Error(`Child conversation ${id} is unavailable.`);\n return { conversation, stored };\n}\n\nexport async function readSubagents(\n harness: Harness,\n context: Context,\n): Promise<Readonly<Record<string, StoredSubagent>>> {\n return (await harness.snapshot(SubagentsDoc, context))?.runs ?? {};\n}\n\n// ponytail: past this many reported runs the oldest records go and only their child conversation IDs stay, so a\n// long session's doc stays small while its usage still leaves those children out. Upgrade: a doc family per run.\nconst MAX_REPORTED_RUNS = 256;\n\n/**\n * Marks a run reported and drops the request only a re-attach needed, keeping its agent, task and outcome. Returns\n * the run's child conversation, or nothing when the run was already reported or is unknown.\n */\nexport async function markSubagentReported(\n harness: Harness,\n runId: string,\n context: Context,\n outcome?: { readonly state: NonNullable<StoredSubagent['state']> },\n maxReported = MAX_REPORTED_RUNS,\n): Promise<ConversationId | undefined> {\n return harness.commit(async (tx) => {\n const doc = await tx.doc(SubagentsDoc);\n const run = doc.runs[runId];\n if (!run || run.reported) return undefined;\n run.reported = true;\n if (typeof run.request?.agent === 'string') run.agent = run.request.agent;\n if (typeof run.request?.task === 'string') run.task = run.request.task;\n if (outcome) run.state = outcome.state;\n run.request = null;\n // Object keys keep insertion order, so the first reported runs are the oldest.\n const reported = Object.entries(doc.runs).filter(([, stored]) => stored.reported);\n const dropped = reported.slice(0, Math.max(0, reported.length - maxReported));\n if (dropped.length > 0) {\n doc.retired = [...(doc.retired ?? []), ...dropped.map(([, stored]) => stored.conversationId)];\n for (const [id] of dropped) delete doc.runs[id];\n }\n return run.conversationId as ConversationId;\n }, context);\n}\n\n/**\n * Stops a run nothing could re-attach, before the Harness resumes: its child would otherwise run on without a\n * launcher. Only marks its live tasks and withdraws its queued inputs, so scheduling stays paused, then reports it\n * failed. Returns its child conversation, or nothing for an unknown or reported run.\n */\nexport async function abandonSubagent(\n harness: Harness,\n runId: string,\n context: Context,\n): Promise<ConversationId | undefined> {\n const run = (await readSubagents(harness, context))[runId];\n if (!run || run.reported) return undefined;\n const { tasks, submissions } = await harness.inspect(context);\n for (const submission of submissions)\n if (submission.conversationId === run.conversationId && submission.status === 'queued')\n await harness.abortSubmission(submission.id, context, submission.conversationId);\n for (const task of tasks)\n if (task.record.conversationId === run.conversationId) await harness.abortTask(task.record.id, context);\n return markSubagentReported(harness, runId, context, { state: 'failed' });\n}\n\n/** Child conversations of this session; their launcher reports what they spend, not the parent. */\nexport async function subagentConversations(harness: Harness, context: Context): Promise<ConversationId[]> {\n const doc = await harness.snapshot(SubagentsDoc, context);\n return [...Object.values(doc?.runs ?? {}).map((run) => run.conversationId), ...(doc?.retired ?? [])].map(\n (id) => id as ConversationId,\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ import { SubagentsDoc } from "./docs.mjs";
2
+ import { SubagentAnchorTask } from "./tasks.mjs";
3
+ import { SubagentsExtension } from "./extension.mjs";
4
+ //#region src/services/durableSubagents/index.ts
5
+ /**
6
+ * Creates one run's child conversation, owned by a background anchor of `parent`, and records the run, in one
7
+ * commit. A fresh child starts as a copy of the parent's agent; a fork also keeps its history through `forkAt`.
8
+ */
9
+ async function createSubagentConversation(harness, parent, launch, context) {
10
+ const { id, stored } = await parent.commit(async (tx) => {
11
+ const anchor = await tx.createTask(SubagentAnchorTask, null, {
12
+ ownership: { kind: "conversation" },
13
+ background: true
14
+ });
15
+ const ownership = {
16
+ kind: "task",
17
+ taskId: anchor
18
+ };
19
+ const child = launch.forkAt === void 0 ? await tx.createConversation({ ownership }) : await tx.forkConversation(parent.id, launch.forkAt, { ownership });
20
+ const runs = (await tx.doc(SubagentsDoc)).runs;
21
+ if (Object.hasOwn(runs, launch.runId)) throw new Error(`Child run '${launch.runId}' already exists.`);
22
+ const record = {
23
+ conversationId: child.id,
24
+ anchorTaskId: anchor,
25
+ inputRequestId: `subagent:${anchor}:1`,
26
+ request: launch.request,
27
+ reported: false
28
+ };
29
+ runs[launch.runId] = record;
30
+ return {
31
+ id: child.id,
32
+ stored: record
33
+ };
34
+ }, context);
35
+ const conversation = await harness.conversation(id, context);
36
+ if (!conversation) throw new Error(`Child conversation ${id} is unavailable.`);
37
+ return {
38
+ conversation,
39
+ stored
40
+ };
41
+ }
42
+ async function readSubagents(harness, context) {
43
+ return (await harness.snapshot(SubagentsDoc, context))?.runs ?? {};
44
+ }
45
+ const MAX_REPORTED_RUNS = 256;
46
+ /**
47
+ * Marks a run reported and drops the request only a re-attach needed, keeping its agent, task and outcome. Returns
48
+ * the run's child conversation, or nothing when the run was already reported or is unknown.
49
+ */
50
+ async function markSubagentReported(harness, runId, context, outcome, maxReported = MAX_REPORTED_RUNS) {
51
+ return harness.commit(async (tx) => {
52
+ const doc = await tx.doc(SubagentsDoc);
53
+ const run = doc.runs[runId];
54
+ if (!run || run.reported) return void 0;
55
+ run.reported = true;
56
+ if (typeof run.request?.agent === "string") run.agent = run.request.agent;
57
+ if (typeof run.request?.task === "string") run.task = run.request.task;
58
+ if (outcome) run.state = outcome.state;
59
+ run.request = null;
60
+ const reported = Object.entries(doc.runs).filter(([, stored]) => stored.reported);
61
+ const dropped = reported.slice(0, Math.max(0, reported.length - maxReported));
62
+ if (dropped.length > 0) {
63
+ doc.retired = [...doc.retired ?? [], ...dropped.map(([, stored]) => stored.conversationId)];
64
+ for (const [id] of dropped) delete doc.runs[id];
65
+ }
66
+ return run.conversationId;
67
+ }, context);
68
+ }
69
+ /**
70
+ * Stops a run nothing could re-attach, before the Harness resumes: its child would otherwise run on without a
71
+ * launcher. Only marks its live tasks and withdraws its queued inputs, so scheduling stays paused, then reports it
72
+ * failed. Returns its child conversation, or nothing for an unknown or reported run.
73
+ */
74
+ async function abandonSubagent(harness, runId, context) {
75
+ const run = (await readSubagents(harness, context))[runId];
76
+ if (!run || run.reported) return void 0;
77
+ const { tasks, submissions } = await harness.inspect(context);
78
+ for (const submission of submissions) if (submission.conversationId === run.conversationId && submission.status === "queued") await harness.abortSubmission(submission.id, context, submission.conversationId);
79
+ for (const task of tasks) if (task.record.conversationId === run.conversationId) await harness.abortTask(task.record.id, context);
80
+ return markSubagentReported(harness, runId, context, { state: "failed" });
81
+ }
82
+ /** Child conversations of this session; their launcher reports what they spend, not the parent. */
83
+ async function subagentConversations(harness, context) {
84
+ const doc = await harness.snapshot(SubagentsDoc, context);
85
+ return [...Object.values(doc?.runs ?? {}).map((run) => run.conversationId), ...doc?.retired ?? []].map((id) => id);
86
+ }
87
+ //#endregion
88
+ export { SubagentsExtension, abandonSubagent, createSubagentConversation, markSubagentReported, readSubagents, subagentConversations };
89
+
90
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/durableSubagents/index.ts"],"sourcesContent":["import type { Context } from '@earendil-works/chord';\nimport type { Conversation, ConversationId, EntryId, Harness, JsonObject } from '@earendil-works/pi-durable';\n\nimport { SubagentsDoc, type StoredSubagent } from './docs';\nimport { SubagentAnchorTask } from './tasks';\n\nexport { SubagentsDoc, type StoredSubagent } from './docs';\nexport { SubagentsExtension } from './extension';\n\nexport interface SubagentLaunch {\n readonly runId: string;\n readonly request: JsonObject;\n /** Start from the parent's history through this entry instead of a fresh copy of its agent. */\n readonly forkAt?: EntryId;\n}\n\n/**\n * Creates one run's child conversation, owned by a background anchor of `parent`, and records the run, in one\n * commit. A fresh child starts as a copy of the parent's agent; a fork also keeps its history through `forkAt`.\n */\nexport async function createSubagentConversation(\n harness: Harness,\n parent: Conversation,\n launch: SubagentLaunch,\n context: Context,\n): Promise<{ conversation: Conversation; stored: StoredSubagent }> {\n const { id, stored } = await parent.commit(async (tx) => {\n const anchor = await tx.createTask(SubagentAnchorTask, null, {\n ownership: { kind: 'conversation' },\n background: true,\n });\n const ownership = { kind: 'task', taskId: anchor } as const;\n const child =\n launch.forkAt === undefined\n ? await tx.createConversation({ ownership })\n : await tx.forkConversation(parent.id, launch.forkAt, { ownership });\n const runs = (await tx.doc(SubagentsDoc)).runs;\n if (Object.hasOwn(runs, launch.runId)) throw new Error(`Child run '${launch.runId}' already exists.`);\n const record: StoredSubagent = {\n conversationId: child.id,\n anchorTaskId: anchor,\n // One task input per anchor, so a retried admission never posts it twice.\n inputRequestId: `subagent:${anchor}:1`,\n request: launch.request,\n reported: false,\n };\n runs[launch.runId] = record;\n return { id: child.id, stored: record };\n }, context);\n const conversation = await harness.conversation(id, context);\n if (!conversation) throw new Error(`Child conversation ${id} is unavailable.`);\n return { conversation, stored };\n}\n\nexport async function readSubagents(\n harness: Harness,\n context: Context,\n): Promise<Readonly<Record<string, StoredSubagent>>> {\n return (await harness.snapshot(SubagentsDoc, context))?.runs ?? {};\n}\n\n// ponytail: past this many reported runs the oldest records go and only their child conversation IDs stay, so a\n// long session's doc stays small while its usage still leaves those children out. Upgrade: a doc family per run.\nconst MAX_REPORTED_RUNS = 256;\n\n/**\n * Marks a run reported and drops the request only a re-attach needed, keeping its agent, task and outcome. Returns\n * the run's child conversation, or nothing when the run was already reported or is unknown.\n */\nexport async function markSubagentReported(\n harness: Harness,\n runId: string,\n context: Context,\n outcome?: { readonly state: NonNullable<StoredSubagent['state']> },\n maxReported = MAX_REPORTED_RUNS,\n): Promise<ConversationId | undefined> {\n return harness.commit(async (tx) => {\n const doc = await tx.doc(SubagentsDoc);\n const run = doc.runs[runId];\n if (!run || run.reported) return undefined;\n run.reported = true;\n if (typeof run.request?.agent === 'string') run.agent = run.request.agent;\n if (typeof run.request?.task === 'string') run.task = run.request.task;\n if (outcome) run.state = outcome.state;\n run.request = null;\n // Object keys keep insertion order, so the first reported runs are the oldest.\n const reported = Object.entries(doc.runs).filter(([, stored]) => stored.reported);\n const dropped = reported.slice(0, Math.max(0, reported.length - maxReported));\n if (dropped.length > 0) {\n doc.retired = [...(doc.retired ?? []), ...dropped.map(([, stored]) => stored.conversationId)];\n for (const [id] of dropped) delete doc.runs[id];\n }\n return run.conversationId as ConversationId;\n }, context);\n}\n\n/**\n * Stops a run nothing could re-attach, before the Harness resumes: its child would otherwise run on without a\n * launcher. Only marks its live tasks and withdraws its queued inputs, so scheduling stays paused, then reports it\n * failed. Returns its child conversation, or nothing for an unknown or reported run.\n */\nexport async function abandonSubagent(\n harness: Harness,\n runId: string,\n context: Context,\n): Promise<ConversationId | undefined> {\n const run = (await readSubagents(harness, context))[runId];\n if (!run || run.reported) return undefined;\n const { tasks, submissions } = await harness.inspect(context);\n for (const submission of submissions)\n if (submission.conversationId === run.conversationId && submission.status === 'queued')\n await harness.abortSubmission(submission.id, context, submission.conversationId);\n for (const task of tasks)\n if (task.record.conversationId === run.conversationId) await harness.abortTask(task.record.id, context);\n return markSubagentReported(harness, runId, context, { state: 'failed' });\n}\n\n/** Child conversations of this session; their launcher reports what they spend, not the parent. */\nexport async function subagentConversations(harness: Harness, context: Context): Promise<ConversationId[]> {\n const doc = await harness.snapshot(SubagentsDoc, context);\n return [...Object.values(doc?.runs ?? {}).map((run) => run.conversationId), ...(doc?.retired ?? [])].map(\n (id) => id as ConversationId,\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ //#region src/services/durableSubagents/tasks.ts
2
+ /**
3
+ * Owns a child conversation so it outlives the parent's turns. A background task that finishes at once: the
4
+ * parent's Esc and idle waits stop at it, while the child keeps working and resumes with the Harness.
5
+ */
6
+ const SubagentAnchorTask = (0, require("@earendil-works/pi-durable").defineTask)({
7
+ name: "po.subagents.anchor",
8
+ version: 1,
9
+ initial: () => ({ phase: "done" }),
10
+ phases: { done: (_anchor, runtime, context) => runtime.commit(() => ({
11
+ status: "terminal",
12
+ outcome: {
13
+ status: "completed",
14
+ result: null
15
+ }
16
+ }), context) },
17
+ abort: (_anchor, runtime, context) => runtime.commit(() => ({
18
+ status: "terminal",
19
+ outcome: { status: "aborted" }
20
+ }), context)
21
+ });
22
+ //#endregion
23
+ exports.SubagentAnchorTask = SubagentAnchorTask;
24
+
25
+ //# sourceMappingURL=tasks.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.cjs","names":["defineTask"],"sources":["../../../../src/services/durableSubagents/tasks.ts"],"sourcesContent":["import { defineTask } from '@earendil-works/pi-durable';\n\n/**\n * Owns a child conversation so it outlives the parent's turns. A background task that finishes at once: the\n * parent's Esc and idle waits stop at it, while the child keeps working and resumes with the Harness.\n */\nexport const SubagentAnchorTask = defineTask<null, { phase: 'done' }, null>({\n name: 'po.subagents.anchor',\n version: 1,\n initial: () => ({ phase: 'done' }),\n phases: {\n done: (_anchor, runtime, context) =>\n runtime.commit(() => ({ status: 'terminal', outcome: { status: 'completed', result: null } }), context),\n },\n abort: (_anchor, runtime, context) =>\n runtime.commit(() => ({ status: 'terminal', outcome: { status: 'aborted' } }), context),\n});\n"],"mappings":";;;;;AAMA,MAAa,sBAAA,uCAAqBA,CAAAA,CAAAA,WAAAA,CAA0C;CAC1E,MAAM;CACN,SAAS;CACT,gBAAgB,EAAE,OAAO,OAAO;CAChC,QAAQ,EACN,OAAO,SAAS,SAAS,YACvB,QAAQ,cAAc;EAAE,QAAQ;EAAY,SAAS;GAAE,QAAQ;GAAa,QAAQ;EAAK;CAAE,IAAI,OAAO,EAC1G;CACA,QAAQ,SAAS,SAAS,YACxB,QAAQ,cAAc;EAAE,QAAQ;EAAY,SAAS,EAAE,QAAQ,UAAU;CAAE,IAAI,OAAO;AAC1F,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { defineTask } from "@earendil-works/pi-durable";
2
+ //#region src/services/durableSubagents/tasks.ts
3
+ /**
4
+ * Owns a child conversation so it outlives the parent's turns. A background task that finishes at once: the
5
+ * parent's Esc and idle waits stop at it, while the child keeps working and resumes with the Harness.
6
+ */
7
+ const SubagentAnchorTask = defineTask({
8
+ name: "po.subagents.anchor",
9
+ version: 1,
10
+ initial: () => ({ phase: "done" }),
11
+ phases: { done: (_anchor, runtime, context) => runtime.commit(() => ({
12
+ status: "terminal",
13
+ outcome: {
14
+ status: "completed",
15
+ result: null
16
+ }
17
+ }), context) },
18
+ abort: (_anchor, runtime, context) => runtime.commit(() => ({
19
+ status: "terminal",
20
+ outcome: { status: "aborted" }
21
+ }), context)
22
+ });
23
+ //#endregion
24
+ export { SubagentAnchorTask };
25
+
26
+ //# sourceMappingURL=tasks.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.mjs","names":[],"sources":["../../../../src/services/durableSubagents/tasks.ts"],"sourcesContent":["import { defineTask } from '@earendil-works/pi-durable';\n\n/**\n * Owns a child conversation so it outlives the parent's turns. A background task that finishes at once: the\n * parent's Esc and idle waits stop at it, while the child keeps working and resumes with the Harness.\n */\nexport const SubagentAnchorTask = defineTask<null, { phase: 'done' }, null>({\n name: 'po.subagents.anchor',\n version: 1,\n initial: () => ({ phase: 'done' }),\n phases: {\n done: (_anchor, runtime, context) =>\n runtime.commit(() => ({ status: 'terminal', outcome: { status: 'completed', result: null } }), context),\n },\n abort: (_anchor, runtime, context) =>\n runtime.commit(() => ({ status: 'terminal', outcome: { status: 'aborted' } }), context),\n});\n"],"mappings":";;;;;;AAMA,MAAa,qBAAqB,WAA0C;CAC1E,MAAM;CACN,SAAS;CACT,gBAAgB,EAAE,OAAO,OAAO;CAChC,QAAQ,EACN,OAAO,SAAS,SAAS,YACvB,QAAQ,cAAc;EAAE,QAAQ;EAAY,SAAS;GAAE,QAAQ;GAAa,QAAQ;EAAK;CAAE,IAAI,OAAO,EAC1G;CACA,QAAQ,SAAS,SAAS,YACxB,QAAQ,cAAc;EAAE,QAAQ;EAAY,SAAS,EAAE,QAAQ,UAAU;CAAE,IAAI,OAAO;AAC1F,CAAC"}
@@ -11,10 +11,10 @@ function createHeadlessClient(options) {
11
11
  client: {
12
12
  async notify(request) {
13
13
  if (disposed) return;
14
- const data = require_notification.createDoomNotificationEntryData(request);
14
+ const data = require_notification.createPoNotificationEntryData(request);
15
15
  if (!data) throw new Error("Invalid notification request");
16
16
  try {
17
- await options.appendCustomEntry(require_notification.DOOM_NOTIFICATION_ENTRY_TYPE, data);
17
+ await options.appendCustomEntry(require_notification.PO_NOTIFICATION_ENTRY_TYPE, data);
18
18
  } catch (error) {
19
19
  if (disposed) return;
20
20
  options.emitFrame({
@@ -25,7 +25,7 @@ function createHeadlessClient(options) {
25
25
  }
26
26
  },
27
27
  setStatus(source, text) {
28
- if (disposed) throw new Error("Headless client is closed");
28
+ if (disposed) return;
29
29
  options.emitFrame({
30
30
  type: "extension_ui_request",
31
31
  method: "setStatus",
@@ -72,21 +72,25 @@ function createHeadlessClient(options) {
72
72
  }
73
73
  };
74
74
  const abort = () => finish({ value: void 0 });
75
+ const frame = {
76
+ type: "extension_ui_request",
77
+ id,
78
+ method: request.kind === "input" && request.multiline ? "editor" : request.kind,
79
+ title: request.title,
80
+ message: request.message,
81
+ options: labels,
82
+ placeholder: request.message,
83
+ prefill: request.initialValue
84
+ };
75
85
  pending.set(id, {
86
+ replay(listener) {
87
+ if (started) listener(frame);
88
+ },
76
89
  start() {
77
90
  if (started || disposed) return;
78
91
  started = true;
79
92
  try {
80
- options.emitFrame({
81
- type: "extension_ui_request",
82
- id,
83
- method: request.kind === "input" && request.multiline ? "editor" : request.kind,
84
- title: request.title,
85
- message: request.message,
86
- options: labels,
87
- placeholder: request.message,
88
- prefill: request.initialValue
89
- });
93
+ options.emitFrame(frame);
90
94
  } catch (error) {
91
95
  finish({ error });
92
96
  }
@@ -113,6 +117,9 @@ function createHeadlessClient(options) {
113
117
  if (typeof frame.id === "string") pending.get(frame.id)?.respond(frame);
114
118
  return true;
115
119
  },
120
+ replay(listener) {
121
+ pending.values().next().value?.replay(listener);
122
+ },
116
123
  dispose() {
117
124
  if (disposed) return;
118
125
  disposed = true;
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["createDoomNotificationEntryData","DOOM_NOTIFICATION_ENTRY_TYPE","randomUUID"],"sources":["../../../../src/services/headlessClient/index.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\n\nimport { createDoomNotificationEntryData, DOOM_NOTIFICATION_ENTRY_TYPE } from '../../exports/notification';\nimport type {\n HeadlessClientBridge,\n HeadlessClientOptions,\n PendingClientRequest,\n} from '../../types/server/headlessClient';\n\n/** Explicit client interactions over the existing browser dialog protocol. */\nexport function createHeadlessClient(options: HeadlessClientOptions): HeadlessClientBridge {\n const pending = new Map<string, PendingClientRequest>();\n let disposed = false;\n const advance = (): void => pending.values().next().value?.start();\n\n return {\n client: {\n async notify(request) {\n // Detached callbacks can outlive their session. A closed client has no recipient.\n if (disposed) return;\n const data = createDoomNotificationEntryData(request);\n if (!data) throw new Error('Invalid notification request');\n try {\n await options.appendCustomEntry(DOOM_NOTIFICATION_ENTRY_TYPE, data);\n } catch (error) {\n if (disposed) return;\n // Callers fire notify without awaiting, often to report a journal failure. A rejection here\n // would crash the session server, so a refused append still reaches the browser live.\n options.emitFrame({\n type: 'error',\n code: 'notification_undelivered',\n error: `${data.body} (not saved to history: ${error instanceof Error ? error.message : String(error)})`,\n });\n }\n },\n setStatus(source, text) {\n if (disposed) throw new Error('Headless client is closed');\n options.emitFrame({ type: 'extension_ui_request', method: 'setStatus', statusKey: source, statusText: text });\n },\n appendComposerText(text) {\n if (disposed) throw new Error('Headless client is closed');\n options.emitFrame({ type: 'extension_ui_request', method: 'append_composer_text', id: randomUUID(), text });\n },\n request(request, signal) {\n if (disposed) return Promise.reject(new Error('Headless client is closed'));\n if (signal?.aborted) return Promise.resolve(undefined);\n if (!['confirm', 'select', 'input'].includes(request.kind)) {\n return Promise.reject(new Error('Unsupported headless client request'));\n }\n const labels = request.options?.map((option) => option.label);\n if (labels && new Set(labels).size !== labels.length) {\n return Promise.reject(new Error('Select option labels must be unique'));\n }\n const id = `headless-ui:${randomUUID()}`;\n return new Promise((resolve, reject) => {\n let started = false;\n const finish = (outcome: { value: unknown } | { error: unknown }): void => {\n if (!pending.delete(id)) return;\n signal?.removeEventListener('abort', abort);\n try {\n if (started) options.emitFrame({ type: 'extension_ui_answered', id });\n if ('error' in outcome) reject(outcome.error);\n else resolve(outcome.value);\n } catch (error) {\n reject(error);\n } finally {\n advance();\n }\n };\n const abort = (): void => finish({ value: undefined });\n pending.set(id, {\n start() {\n if (started || disposed) return;\n started = true;\n try {\n options.emitFrame({\n type: 'extension_ui_request',\n id,\n method: request.kind === 'input' && request.multiline ? 'editor' : request.kind,\n title: request.title,\n message: request.message,\n options: labels,\n placeholder: request.message,\n prefill: request.initialValue,\n });\n } catch (error) {\n finish({ error });\n }\n },\n respond(frame) {\n if (!started) return;\n if (frame.cancelled === true) return finish({ value: undefined });\n if (request.kind === 'confirm') {\n if (typeof frame.confirmed === 'boolean') finish({ value: frame.confirmed });\n } else if (typeof frame.value === 'string') {\n // Rich questionnaire clients return an encoded whole-answer envelope here.\n const selected = request.options?.find((option) => option.label === frame.value);\n finish({ value: selected?.value ?? frame.value });\n }\n },\n close: () => finish({ error: new Error('Headless client is closed') }),\n });\n signal?.addEventListener('abort', abort, { once: true });\n advance();\n });\n },\n },\n receive(frame) {\n if (frame.type !== 'extension_ui_response') return false;\n if (typeof frame.id === 'string') pending.get(frame.id)?.respond(frame);\n return true;\n },\n dispose() {\n if (disposed) return;\n disposed = true;\n for (const request of pending.values()) request.close();\n },\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","names":["createPoNotificationEntryData","PO_NOTIFICATION_ENTRY_TYPE","randomUUID"],"sources":["../../../../src/services/headlessClient/index.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\n\nimport { createPoNotificationEntryData, PO_NOTIFICATION_ENTRY_TYPE } from '../../exports/notification';\nimport type {\n HeadlessClientBridge,\n HeadlessClientOptions,\n PendingClientRequest,\n} from '../../types/server/headlessClient';\n\n/** Explicit client interactions over the existing browser dialog protocol. */\nexport function createHeadlessClient(options: HeadlessClientOptions): HeadlessClientBridge {\n const pending = new Map<string, PendingClientRequest>();\n let disposed = false;\n const advance = (): void => pending.values().next().value?.start();\n\n return {\n client: {\n async notify(request) {\n // Detached callbacks can outlive their session. A closed client has no recipient.\n if (disposed) return;\n const data = createPoNotificationEntryData(request);\n if (!data) throw new Error('Invalid notification request');\n try {\n await options.appendCustomEntry(PO_NOTIFICATION_ENTRY_TYPE, data);\n } catch (error) {\n if (disposed) return;\n // Callers fire notify without awaiting, often to report a journal failure. A rejection here\n // would crash the session server, so a refused append still reaches the browser live.\n options.emitFrame({\n type: 'error',\n code: 'notification_undelivered',\n error: `${data.body} (not saved to history: ${error instanceof Error ? error.message : String(error)})`,\n });\n }\n },\n setStatus(source, text) {\n // Packages clear their status while they unwind, which is after their session shut down. A\n // throw here used to abort that teardown and leak everything after it.\n if (disposed) return;\n options.emitFrame({ type: 'extension_ui_request', method: 'setStatus', statusKey: source, statusText: text });\n },\n appendComposerText(text) {\n if (disposed) throw new Error('Headless client is closed');\n options.emitFrame({ type: 'extension_ui_request', method: 'append_composer_text', id: randomUUID(), text });\n },\n request(request, signal) {\n if (disposed) return Promise.reject(new Error('Headless client is closed'));\n if (signal?.aborted) return Promise.resolve(undefined);\n if (!['confirm', 'select', 'input'].includes(request.kind)) {\n return Promise.reject(new Error('Unsupported headless client request'));\n }\n const labels = request.options?.map((option) => option.label);\n if (labels && new Set(labels).size !== labels.length) {\n return Promise.reject(new Error('Select option labels must be unique'));\n }\n const id = `headless-ui:${randomUUID()}`;\n return new Promise((resolve, reject) => {\n let started = false;\n const finish = (outcome: { value: unknown } | { error: unknown }): void => {\n if (!pending.delete(id)) return;\n signal?.removeEventListener('abort', abort);\n try {\n if (started) options.emitFrame({ type: 'extension_ui_answered', id });\n if ('error' in outcome) reject(outcome.error);\n else resolve(outcome.value);\n } catch (error) {\n reject(error);\n } finally {\n advance();\n }\n };\n const abort = (): void => finish({ value: undefined });\n const frame = {\n type: 'extension_ui_request',\n id,\n method: request.kind === 'input' && request.multiline ? 'editor' : request.kind,\n title: request.title,\n message: request.message,\n options: labels,\n placeholder: request.message,\n prefill: request.initialValue,\n };\n pending.set(id, {\n replay(listener) {\n if (started) listener(frame);\n },\n start() {\n if (started || disposed) return;\n started = true;\n try {\n options.emitFrame(frame);\n } catch (error) {\n finish({ error });\n }\n },\n respond(frame) {\n if (!started) return;\n if (frame.cancelled === true) return finish({ value: undefined });\n if (request.kind === 'confirm') {\n if (typeof frame.confirmed === 'boolean') finish({ value: frame.confirmed });\n } else if (typeof frame.value === 'string') {\n // Rich questionnaire clients return an encoded whole-answer envelope here.\n const selected = request.options?.find((option) => option.label === frame.value);\n finish({ value: selected?.value ?? frame.value });\n }\n },\n close: () => finish({ error: new Error('Headless client is closed') }),\n });\n signal?.addEventListener('abort', abort, { once: true });\n advance();\n });\n },\n },\n receive(frame) {\n if (frame.type !== 'extension_ui_response') return false;\n if (typeof frame.id === 'string') pending.get(frame.id)?.respond(frame);\n return true;\n },\n replay(listener) {\n // A focused presentation may attach after the tool has started waiting.\n // Only its current request is replayed, not answered or queued dialogs.\n pending.values().next().value?.replay(listener);\n },\n dispose() {\n if (disposed) return;\n disposed = true;\n for (const request of pending.values()) request.close();\n },\n };\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { DOOM_NOTIFICATION_ENTRY_TYPE, createDoomNotificationEntryData } from "../../schemas/notification.mjs";
1
+ import { PO_NOTIFICATION_ENTRY_TYPE, createPoNotificationEntryData } from "../../schemas/notification.mjs";
2
2
  import "../../../notification.mjs";
3
3
  import { randomUUID } from "node:crypto";
4
4
  //#region src/services/headlessClient/index.ts
@@ -11,10 +11,10 @@ function createHeadlessClient(options) {
11
11
  client: {
12
12
  async notify(request) {
13
13
  if (disposed) return;
14
- const data = createDoomNotificationEntryData(request);
14
+ const data = createPoNotificationEntryData(request);
15
15
  if (!data) throw new Error("Invalid notification request");
16
16
  try {
17
- await options.appendCustomEntry(DOOM_NOTIFICATION_ENTRY_TYPE, data);
17
+ await options.appendCustomEntry(PO_NOTIFICATION_ENTRY_TYPE, data);
18
18
  } catch (error) {
19
19
  if (disposed) return;
20
20
  options.emitFrame({
@@ -25,7 +25,7 @@ function createHeadlessClient(options) {
25
25
  }
26
26
  },
27
27
  setStatus(source, text) {
28
- if (disposed) throw new Error("Headless client is closed");
28
+ if (disposed) return;
29
29
  options.emitFrame({
30
30
  type: "extension_ui_request",
31
31
  method: "setStatus",
@@ -72,21 +72,25 @@ function createHeadlessClient(options) {
72
72
  }
73
73
  };
74
74
  const abort = () => finish({ value: void 0 });
75
+ const frame = {
76
+ type: "extension_ui_request",
77
+ id,
78
+ method: request.kind === "input" && request.multiline ? "editor" : request.kind,
79
+ title: request.title,
80
+ message: request.message,
81
+ options: labels,
82
+ placeholder: request.message,
83
+ prefill: request.initialValue
84
+ };
75
85
  pending.set(id, {
86
+ replay(listener) {
87
+ if (started) listener(frame);
88
+ },
76
89
  start() {
77
90
  if (started || disposed) return;
78
91
  started = true;
79
92
  try {
80
- options.emitFrame({
81
- type: "extension_ui_request",
82
- id,
83
- method: request.kind === "input" && request.multiline ? "editor" : request.kind,
84
- title: request.title,
85
- message: request.message,
86
- options: labels,
87
- placeholder: request.message,
88
- prefill: request.initialValue
89
- });
93
+ options.emitFrame(frame);
90
94
  } catch (error) {
91
95
  finish({ error });
92
96
  }
@@ -113,6 +117,9 @@ function createHeadlessClient(options) {
113
117
  if (typeof frame.id === "string") pending.get(frame.id)?.respond(frame);
114
118
  return true;
115
119
  },
120
+ replay(listener) {
121
+ pending.values().next().value?.replay(listener);
122
+ },
116
123
  dispose() {
117
124
  if (disposed) return;
118
125
  disposed = true;
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/headlessClient/index.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\n\nimport { createDoomNotificationEntryData, DOOM_NOTIFICATION_ENTRY_TYPE } from '../../exports/notification';\nimport type {\n HeadlessClientBridge,\n HeadlessClientOptions,\n PendingClientRequest,\n} from '../../types/server/headlessClient';\n\n/** Explicit client interactions over the existing browser dialog protocol. */\nexport function createHeadlessClient(options: HeadlessClientOptions): HeadlessClientBridge {\n const pending = new Map<string, PendingClientRequest>();\n let disposed = false;\n const advance = (): void => pending.values().next().value?.start();\n\n return {\n client: {\n async notify(request) {\n // Detached callbacks can outlive their session. A closed client has no recipient.\n if (disposed) return;\n const data = createDoomNotificationEntryData(request);\n if (!data) throw new Error('Invalid notification request');\n try {\n await options.appendCustomEntry(DOOM_NOTIFICATION_ENTRY_TYPE, data);\n } catch (error) {\n if (disposed) return;\n // Callers fire notify without awaiting, often to report a journal failure. A rejection here\n // would crash the session server, so a refused append still reaches the browser live.\n options.emitFrame({\n type: 'error',\n code: 'notification_undelivered',\n error: `${data.body} (not saved to history: ${error instanceof Error ? error.message : String(error)})`,\n });\n }\n },\n setStatus(source, text) {\n if (disposed) throw new Error('Headless client is closed');\n options.emitFrame({ type: 'extension_ui_request', method: 'setStatus', statusKey: source, statusText: text });\n },\n appendComposerText(text) {\n if (disposed) throw new Error('Headless client is closed');\n options.emitFrame({ type: 'extension_ui_request', method: 'append_composer_text', id: randomUUID(), text });\n },\n request(request, signal) {\n if (disposed) return Promise.reject(new Error('Headless client is closed'));\n if (signal?.aborted) return Promise.resolve(undefined);\n if (!['confirm', 'select', 'input'].includes(request.kind)) {\n return Promise.reject(new Error('Unsupported headless client request'));\n }\n const labels = request.options?.map((option) => option.label);\n if (labels && new Set(labels).size !== labels.length) {\n return Promise.reject(new Error('Select option labels must be unique'));\n }\n const id = `headless-ui:${randomUUID()}`;\n return new Promise((resolve, reject) => {\n let started = false;\n const finish = (outcome: { value: unknown } | { error: unknown }): void => {\n if (!pending.delete(id)) return;\n signal?.removeEventListener('abort', abort);\n try {\n if (started) options.emitFrame({ type: 'extension_ui_answered', id });\n if ('error' in outcome) reject(outcome.error);\n else resolve(outcome.value);\n } catch (error) {\n reject(error);\n } finally {\n advance();\n }\n };\n const abort = (): void => finish({ value: undefined });\n pending.set(id, {\n start() {\n if (started || disposed) return;\n started = true;\n try {\n options.emitFrame({\n type: 'extension_ui_request',\n id,\n method: request.kind === 'input' && request.multiline ? 'editor' : request.kind,\n title: request.title,\n message: request.message,\n options: labels,\n placeholder: request.message,\n prefill: request.initialValue,\n });\n } catch (error) {\n finish({ error });\n }\n },\n respond(frame) {\n if (!started) return;\n if (frame.cancelled === true) return finish({ value: undefined });\n if (request.kind === 'confirm') {\n if (typeof frame.confirmed === 'boolean') finish({ value: frame.confirmed });\n } else if (typeof frame.value === 'string') {\n // Rich questionnaire clients return an encoded whole-answer envelope here.\n const selected = request.options?.find((option) => option.label === frame.value);\n finish({ value: selected?.value ?? frame.value });\n }\n },\n close: () => finish({ error: new Error('Headless client is closed') }),\n });\n signal?.addEventListener('abort', abort, { once: true });\n advance();\n });\n },\n },\n receive(frame) {\n if (frame.type !== 'extension_ui_response') return false;\n if (typeof frame.id === 'string') pending.get(frame.id)?.respond(frame);\n return true;\n },\n dispose() {\n if (disposed) return;\n disposed = true;\n for (const request of pending.values()) request.close();\n },\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/headlessClient/index.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\n\nimport { createPoNotificationEntryData, PO_NOTIFICATION_ENTRY_TYPE } from '../../exports/notification';\nimport type {\n HeadlessClientBridge,\n HeadlessClientOptions,\n PendingClientRequest,\n} from '../../types/server/headlessClient';\n\n/** Explicit client interactions over the existing browser dialog protocol. */\nexport function createHeadlessClient(options: HeadlessClientOptions): HeadlessClientBridge {\n const pending = new Map<string, PendingClientRequest>();\n let disposed = false;\n const advance = (): void => pending.values().next().value?.start();\n\n return {\n client: {\n async notify(request) {\n // Detached callbacks can outlive their session. A closed client has no recipient.\n if (disposed) return;\n const data = createPoNotificationEntryData(request);\n if (!data) throw new Error('Invalid notification request');\n try {\n await options.appendCustomEntry(PO_NOTIFICATION_ENTRY_TYPE, data);\n } catch (error) {\n if (disposed) return;\n // Callers fire notify without awaiting, often to report a journal failure. A rejection here\n // would crash the session server, so a refused append still reaches the browser live.\n options.emitFrame({\n type: 'error',\n code: 'notification_undelivered',\n error: `${data.body} (not saved to history: ${error instanceof Error ? error.message : String(error)})`,\n });\n }\n },\n setStatus(source, text) {\n // Packages clear their status while they unwind, which is after their session shut down. A\n // throw here used to abort that teardown and leak everything after it.\n if (disposed) return;\n options.emitFrame({ type: 'extension_ui_request', method: 'setStatus', statusKey: source, statusText: text });\n },\n appendComposerText(text) {\n if (disposed) throw new Error('Headless client is closed');\n options.emitFrame({ type: 'extension_ui_request', method: 'append_composer_text', id: randomUUID(), text });\n },\n request(request, signal) {\n if (disposed) return Promise.reject(new Error('Headless client is closed'));\n if (signal?.aborted) return Promise.resolve(undefined);\n if (!['confirm', 'select', 'input'].includes(request.kind)) {\n return Promise.reject(new Error('Unsupported headless client request'));\n }\n const labels = request.options?.map((option) => option.label);\n if (labels && new Set(labels).size !== labels.length) {\n return Promise.reject(new Error('Select option labels must be unique'));\n }\n const id = `headless-ui:${randomUUID()}`;\n return new Promise((resolve, reject) => {\n let started = false;\n const finish = (outcome: { value: unknown } | { error: unknown }): void => {\n if (!pending.delete(id)) return;\n signal?.removeEventListener('abort', abort);\n try {\n if (started) options.emitFrame({ type: 'extension_ui_answered', id });\n if ('error' in outcome) reject(outcome.error);\n else resolve(outcome.value);\n } catch (error) {\n reject(error);\n } finally {\n advance();\n }\n };\n const abort = (): void => finish({ value: undefined });\n const frame = {\n type: 'extension_ui_request',\n id,\n method: request.kind === 'input' && request.multiline ? 'editor' : request.kind,\n title: request.title,\n message: request.message,\n options: labels,\n placeholder: request.message,\n prefill: request.initialValue,\n };\n pending.set(id, {\n replay(listener) {\n if (started) listener(frame);\n },\n start() {\n if (started || disposed) return;\n started = true;\n try {\n options.emitFrame(frame);\n } catch (error) {\n finish({ error });\n }\n },\n respond(frame) {\n if (!started) return;\n if (frame.cancelled === true) return finish({ value: undefined });\n if (request.kind === 'confirm') {\n if (typeof frame.confirmed === 'boolean') finish({ value: frame.confirmed });\n } else if (typeof frame.value === 'string') {\n // Rich questionnaire clients return an encoded whole-answer envelope here.\n const selected = request.options?.find((option) => option.label === frame.value);\n finish({ value: selected?.value ?? frame.value });\n }\n },\n close: () => finish({ error: new Error('Headless client is closed') }),\n });\n signal?.addEventListener('abort', abort, { once: true });\n advance();\n });\n },\n },\n receive(frame) {\n if (frame.type !== 'extension_ui_response') return false;\n if (typeof frame.id === 'string') pending.get(frame.id)?.respond(frame);\n return true;\n },\n replay(listener) {\n // A focused presentation may attach after the tool has started waiting.\n // Only its current request is replayed, not answered or queued dialogs.\n pending.values().next().value?.replay(listener);\n },\n dispose() {\n if (disposed) return;\n disposed = true;\n for (const request of pending.values()) request.close();\n },\n };\n}\n"],"mappings":"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"}