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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1149) hide show
  1. package/LICENSE +149 -21
  2. package/NOTICE +41 -0
  3. package/dist/agentModel.cjs +1 -1
  4. package/dist/agentModel.d.mts +2 -2
  5. package/dist/agentModel.mjs +1 -2
  6. package/dist/apiContracts.cjs +623 -802
  7. package/dist/apiContracts.cjs.map +1 -1
  8. package/dist/apiContracts.d.mts +277 -615
  9. package/dist/apiContracts.d.mts.map +1 -1
  10. package/dist/apiContracts.mjs +617 -794
  11. package/dist/apiContracts.mjs.map +1 -1
  12. package/dist/askUser.cjs +2 -2
  13. package/dist/askUser.d.mts +2 -2
  14. package/dist/askUser.mjs +1 -2
  15. package/dist/authorTools.mjs +1 -2
  16. package/dist/backgroundWork.cjs +3 -3
  17. package/dist/backgroundWork.d.mts +2 -2
  18. package/dist/backgroundWork.mjs +1 -2
  19. package/dist/bundleAssetPolicy.mjs +1 -2
  20. package/dist/chatgptAuth.cjs +3 -2
  21. package/dist/chatgptAuth.d.mts +3 -2
  22. package/dist/chatgptAuth.mjs +2 -1
  23. package/dist/childProcess.cjs +1 -1
  24. package/dist/childProcess.d.mts +2 -2
  25. package/dist/childProcess.mjs +1 -2
  26. package/dist/childSession.cjs +11 -6
  27. package/dist/childSession.d.mts +3 -3
  28. package/dist/childSession.mjs +3 -3
  29. package/dist/cockpitContainer.mjs +1 -2
  30. package/dist/config.cjs +1 -1
  31. package/dist/config.d.mts +3 -3
  32. package/dist/config.mjs +1 -2
  33. package/dist/contextApi.cjs +1 -0
  34. package/dist/contextApi.d.mts +2 -2
  35. package/dist/contextApi.mjs +2 -2
  36. package/dist/contextContributions.cjs +4 -4
  37. package/dist/contextContributions.d.mts +3 -3
  38. package/dist/contextContributions.mjs +3 -3
  39. package/dist/contextDetailStore.cjs +7 -5
  40. package/dist/contextDetailStore.cjs.map +1 -1
  41. package/dist/contextDetailStore.d.mts +2 -1
  42. package/dist/contextDetailStore.d.mts.map +1 -1
  43. package/dist/contextDetailStore.mjs +6 -4
  44. package/dist/contextDetailStore.mjs.map +1 -1
  45. package/dist/contextProjection.cjs +7 -2
  46. package/dist/contextProjection.cjs.map +1 -1
  47. package/dist/contextProjection.d.mts +4 -1
  48. package/dist/contextProjection.d.mts.map +1 -1
  49. package/dist/contextProjection.mjs +5 -2
  50. package/dist/contextProjection.mjs.map +1 -1
  51. package/dist/cordisHost.cjs +11 -11
  52. package/dist/cordisHost.d.mts +2 -2
  53. package/dist/cordisHost.mjs +1 -2
  54. package/dist/delegation.cjs +8 -8
  55. package/dist/delegation.d.mts +2 -2
  56. package/dist/delegation.mjs +1 -2
  57. package/dist/executionBudget.cjs +4 -3
  58. package/dist/executionBudget.cjs.map +1 -1
  59. package/dist/executionBudget.d.mts +2 -2
  60. package/dist/executionBudget.d.mts.map +1 -1
  61. package/dist/executionBudget.mjs +4 -3
  62. package/dist/executionBudget.mjs.map +1 -1
  63. package/dist/extensionFile.cjs +5 -0
  64. package/dist/extensionFile.d.mts +4 -2
  65. package/dist/extensionFile.mjs +4 -2
  66. package/dist/footer.d.mts +2 -2
  67. package/dist/footer.mjs +1 -2
  68. package/dist/headless.cjs +14 -14
  69. package/dist/headless.d.mts +2 -2
  70. package/dist/headless.mjs +1 -2
  71. package/dist/headlessHub.cjs +308 -109
  72. package/dist/headlessHub.cjs.map +1 -1
  73. package/dist/headlessHub.d.mts +71 -36
  74. package/dist/headlessHub.d.mts.map +1 -1
  75. package/dist/headlessHub.mjs +309 -110
  76. package/dist/headlessHub.mjs.map +1 -1
  77. package/dist/headlessProtocol.cjs +327 -0
  78. package/dist/headlessProtocol.cjs.map +1 -0
  79. package/dist/headlessProtocol.d.mts +30 -0
  80. package/dist/headlessProtocol.d.mts.map +1 -0
  81. package/dist/headlessProtocol.mjs +326 -0
  82. package/dist/headlessProtocol.mjs.map +1 -0
  83. package/dist/headlessServer.cjs +166 -151
  84. package/dist/headlessServer.cjs.map +1 -1
  85. package/dist/headlessServer.d.mts +13 -5
  86. package/dist/headlessServer.d.mts.map +1 -1
  87. package/dist/headlessServer.mjs +166 -151
  88. package/dist/headlessServer.mjs.map +1 -1
  89. package/dist/headlessSessionHost.d.mts +58 -21
  90. package/dist/headlessSessionHost.d.mts.map +1 -1
  91. package/dist/help.cjs +20 -20
  92. package/dist/help.d.mts +2 -2
  93. package/dist/help.mjs +2 -2
  94. package/dist/history.cjs +16 -20
  95. package/dist/history.d.mts +9 -7
  96. package/dist/history.mjs +6 -7
  97. package/dist/historyOwnership.cjs.map +1 -1
  98. package/dist/historyOwnership.d.mts +1 -1
  99. package/dist/historyOwnership.mjs.map +1 -1
  100. package/dist/hubChannel.cjs +9 -0
  101. package/dist/hubChannel.d.mts +3 -2
  102. package/dist/hubChannel.mjs +3 -2
  103. package/dist/index.cjs +26 -28
  104. package/dist/index.d.mts +6 -6
  105. package/dist/index.mjs +6 -6
  106. package/dist/interop/chord.mjs +1 -0
  107. package/dist/interop/chordContext.mjs +1 -0
  108. package/dist/json.cjs +11 -5
  109. package/dist/json.d.mts +4 -2
  110. package/dist/json.mjs +4 -2
  111. package/dist/kernel.cjs +1 -1
  112. package/dist/kernel.d.mts +3 -3
  113. package/dist/kernel.mjs +1 -2
  114. package/dist/leader.d.mts +2 -2
  115. package/dist/leader.mjs +1 -2
  116. package/dist/logSinkTelemetry.mjs +1 -2
  117. package/dist/machineApi.cjs +80 -74
  118. package/dist/machineApi.cjs.map +1 -1
  119. package/dist/machineApi.d.mts +5 -2
  120. package/dist/machineApi.d.mts.map +1 -1
  121. package/dist/machineApi.mjs +78 -71
  122. package/dist/machineApi.mjs.map +1 -1
  123. package/dist/main.cjs +2 -1
  124. package/dist/main.d.mts +2 -1
  125. package/dist/main.mjs +2 -1
  126. package/dist/mcpFacet.d.mts +3 -3
  127. package/dist/mcpProjection.cjs +13 -13
  128. package/dist/mcpProjection.d.mts +2 -2
  129. package/dist/mcpProjection.mjs +1 -2
  130. package/dist/mcpSchemaCost.cjs +4 -4
  131. package/dist/mcpSchemaCost.cjs.map +1 -1
  132. package/dist/mcpSchemaCost.d.mts +2 -2
  133. package/dist/mcpSchemaCost.mjs +4 -4
  134. package/dist/mcpSchemaCost.mjs.map +1 -1
  135. package/dist/mcpSession.cjs +7 -7
  136. package/dist/mcpSession.d.mts +2 -2
  137. package/dist/mcpSession.mjs +1 -2
  138. package/dist/mcpStatus.cjs +2 -2
  139. package/dist/mcpStatus.d.mts +2 -2
  140. package/dist/mcpStatus.mjs +1 -2
  141. package/dist/mcpToolResolver.cjs +3 -3
  142. package/dist/mcpToolResolver.d.mts +2 -2
  143. package/dist/mcpToolResolver.mjs +1 -2
  144. package/dist/mcpWidget.d.mts +2 -2
  145. package/dist/moduleResolution.cjs +43 -8
  146. package/dist/moduleResolution.cjs.map +1 -1
  147. package/dist/moduleResolution.d.mts +10 -1
  148. package/dist/moduleResolution.d.mts.map +1 -1
  149. package/dist/moduleResolution.mjs +40 -7
  150. package/dist/moduleResolution.mjs.map +1 -1
  151. package/dist/narration.cjs +3 -3
  152. package/dist/narration.d.mts +2 -2
  153. package/dist/narration.mjs +1 -2
  154. package/dist/native.cjs +9 -0
  155. package/dist/native.d.mts +4 -3
  156. package/dist/native.mjs +3 -2
  157. package/dist/nodePlatform.cjs +77 -0
  158. package/dist/nodePlatform.cjs.map +1 -0
  159. package/dist/nodePlatform.d.mts +17 -0
  160. package/dist/nodePlatform.d.mts.map +1 -0
  161. package/dist/nodePlatform.mjs +72 -0
  162. package/dist/nodePlatform.mjs.map +1 -0
  163. package/dist/notification.cjs +15 -15
  164. package/dist/notification.d.mts +2 -2
  165. package/dist/notification.mjs +1 -2
  166. package/dist/packageApi.cjs +11 -11
  167. package/dist/packageApi.d.mts +2 -2
  168. package/dist/packageApi.mjs +2 -2
  169. package/dist/packageApiServer.cjs +45 -27
  170. package/dist/packageApiServer.cjs.map +1 -1
  171. package/dist/packageApiServer.d.mts +36 -26
  172. package/dist/packageApiServer.d.mts.map +1 -1
  173. package/dist/packageApiServer.mjs +44 -26
  174. package/dist/packageApiServer.mjs.map +1 -1
  175. package/dist/piSettings.cjs +41 -20
  176. package/dist/piSettings.d.mts +4 -2
  177. package/dist/piSettings.mjs +4 -2
  178. package/dist/platform.cjs +62 -0
  179. package/dist/platform.d.mts +10 -0
  180. package/dist/platform.mjs +10 -0
  181. package/dist/pluginProtocol.cjs +7 -8
  182. package/dist/pluginProtocol.d.mts +2 -2
  183. package/dist/pluginProtocol.mjs +1 -2
  184. package/dist/poPackage.cjs +12 -0
  185. package/dist/poPackage.d.mts +3 -0
  186. package/dist/poPackage.mjs +3 -0
  187. package/dist/profileIdentity.cjs +1 -1
  188. package/dist/profileIdentity.d.mts +2 -2
  189. package/dist/profileIdentity.mjs +1 -2
  190. package/dist/protocol.cjs +3 -3
  191. package/dist/protocol.d.mts +2 -2
  192. package/dist/protocol.mjs +1 -2
  193. package/dist/readiness.cjs +6 -6
  194. package/dist/readiness.d.mts +2 -2
  195. package/dist/readiness.mjs +1 -2
  196. package/dist/remoteApi.cjs.map +1 -1
  197. package/dist/remoteApi.d.mts +2 -2
  198. package/dist/remoteApi.mjs.map +1 -1
  199. package/dist/remoteRuntime.cjs +42 -65
  200. package/dist/remoteRuntime.cjs.map +1 -1
  201. package/dist/remoteRuntime.d.mts +3 -2
  202. package/dist/remoteRuntime.d.mts.map +1 -1
  203. package/dist/remoteRuntime.mjs +41 -62
  204. package/dist/remoteRuntime.mjs.map +1 -1
  205. package/dist/runtimeConfig.cjs +4 -4
  206. package/dist/runtimeConfig.cjs.map +1 -1
  207. package/dist/runtimeConfig.d.mts +10 -9
  208. package/dist/runtimeConfig.d.mts.map +1 -1
  209. package/dist/runtimeConfig.mjs +4 -4
  210. package/dist/runtimeConfig.mjs.map +1 -1
  211. package/dist/runtimeContextApi.cjs +10 -3
  212. package/dist/runtimeContextApi.cjs.map +1 -1
  213. package/dist/runtimeContextApi.d.mts +3 -3
  214. package/dist/runtimeContextApi.d.mts.map +1 -1
  215. package/dist/runtimeContextApi.mjs +10 -3
  216. package/dist/runtimeContextApi.mjs.map +1 -1
  217. package/dist/runtimeCordisHost.cjs +46 -46
  218. package/dist/runtimeCordisHost.cjs.map +1 -1
  219. package/dist/runtimeCordisHost.d.mts +29 -28
  220. package/dist/runtimeCordisHost.d.mts.map +1 -1
  221. package/dist/runtimeCordisHost.mjs +42 -42
  222. package/dist/runtimeCordisHost.mjs.map +1 -1
  223. package/dist/runtimeIdentity.cjs +6 -9
  224. package/dist/runtimeIdentity.cjs.map +1 -1
  225. package/dist/runtimeIdentity.d.mts +5 -1
  226. package/dist/runtimeIdentity.d.mts.map +1 -1
  227. package/dist/runtimeIdentity.mjs +5 -8
  228. package/dist/runtimeIdentity.mjs.map +1 -1
  229. package/dist/runtimeJson.cjs +10 -45
  230. package/dist/runtimeJson.d.mts +3 -22
  231. package/dist/runtimeJson.mjs +3 -39
  232. package/dist/runtimeLogSinkTelemetry.cjs +19 -19
  233. package/dist/runtimeLogSinkTelemetry.cjs.map +1 -1
  234. package/dist/runtimeLogSinkTelemetry.d.mts +19 -19
  235. package/dist/runtimeLogSinkTelemetry.mjs +19 -19
  236. package/dist/runtimeLogSinkTelemetry.mjs.map +1 -1
  237. package/dist/runtimePackages.cjs +7 -2
  238. package/dist/runtimePackages.cjs.map +1 -1
  239. package/dist/runtimePackages.d.mts +4 -1
  240. package/dist/runtimePackages.d.mts.map +1 -1
  241. package/dist/runtimePackages.mjs +7 -2
  242. package/dist/runtimePackages.mjs.map +1 -1
  243. package/dist/runtimePiSettings.cjs +40 -263
  244. package/dist/runtimePiSettings.d.mts +3 -72
  245. package/dist/runtimePiSettings.mjs +3 -241
  246. package/dist/runtimeProtocol.cjs +19 -19
  247. package/dist/runtimeProtocol.cjs.map +1 -1
  248. package/dist/runtimeProtocol.d.mts +7 -7
  249. package/dist/runtimeProtocol.d.mts.map +1 -1
  250. package/dist/runtimeProtocol.mjs +17 -17
  251. package/dist/runtimeProtocol.mjs.map +1 -1
  252. package/dist/runtimeTransition.cjs +9 -9
  253. package/dist/runtimeTransition.cjs.map +1 -1
  254. package/dist/runtimeTransition.d.mts +10 -10
  255. package/dist/runtimeTransition.d.mts.map +1 -1
  256. package/dist/runtimeTransition.mjs +7 -7
  257. package/dist/runtimeTransition.mjs.map +1 -1
  258. package/dist/sandboxHarness.mjs +1 -2
  259. package/dist/server.cjs +3 -7
  260. package/dist/server.d.mts +6 -6
  261. package/dist/server.mjs +3 -4
  262. package/dist/serverPlugin.cjs +39 -0
  263. package/dist/serverPlugin.d.mts +12 -0
  264. package/dist/serverPlugin.mjs +11 -0
  265. package/dist/serverTelemetry.cjs +1 -1
  266. package/dist/serverTelemetry.cjs.map +1 -1
  267. package/dist/serverTelemetry.d.mts +2 -2
  268. package/dist/serverTelemetry.mjs +2 -2
  269. package/dist/serverTelemetry.mjs.map +1 -1
  270. package/dist/sessionFilesApi.cjs +41 -37
  271. package/dist/sessionFilesApi.cjs.map +1 -1
  272. package/dist/sessionFilesApi.d.mts +6 -3
  273. package/dist/sessionFilesApi.d.mts.map +1 -1
  274. package/dist/sessionFilesApi.mjs +41 -36
  275. package/dist/sessionFilesApi.mjs.map +1 -1
  276. package/dist/sessionProtocol.cjs +31 -6
  277. package/dist/sessionProtocol.d.mts +8 -3
  278. package/dist/sessionProtocol.mjs +8 -2
  279. package/dist/skills.cjs +5 -5
  280. package/dist/skills.d.mts +2 -2
  281. package/dist/skills.mjs +1 -2
  282. package/dist/sqliteSessionStorage.cjs +28 -50
  283. package/dist/sqliteSessionStorage.cjs.map +1 -1
  284. package/dist/sqliteSessionStorage.d.mts +13 -20
  285. package/dist/sqliteSessionStorage.d.mts.map +1 -1
  286. package/dist/sqliteSessionStorage.mjs +25 -48
  287. package/dist/sqliteSessionStorage.mjs.map +1 -1
  288. package/dist/src/constants/agentSettled.cjs +7 -0
  289. package/dist/src/constants/agentSettled.cjs.map +1 -0
  290. package/dist/src/constants/agentSettled.mjs +7 -0
  291. package/dist/src/constants/agentSettled.mjs.map +1 -0
  292. package/dist/src/constants/contextApi.cjs +3 -1
  293. package/dist/src/constants/contextApi.cjs.map +1 -1
  294. package/dist/src/constants/contextApi.d.mts +2 -1
  295. package/dist/src/constants/contextApi.d.mts.map +1 -1
  296. package/dist/src/constants/contextApi.mjs +3 -2
  297. package/dist/src/constants/contextApi.mjs.map +1 -1
  298. package/dist/src/constants/voiceTools.cjs +6 -6
  299. package/dist/src/constants/voiceTools.cjs.map +1 -1
  300. package/dist/src/constants/voiceTools.d.mts +3 -3
  301. package/dist/src/constants/voiceTools.mjs +4 -4
  302. package/dist/src/constants/voiceTools.mjs.map +1 -1
  303. package/dist/src/extensions/extensionFile.cjs +22 -5
  304. package/dist/src/extensions/extensionFile.cjs.map +1 -1
  305. package/dist/src/extensions/extensionFile.d.mts +17 -4
  306. package/dist/src/extensions/extensionFile.d.mts.map +1 -1
  307. package/dist/src/extensions/extensionFile.mjs +22 -6
  308. package/dist/src/extensions/extensionFile.mjs.map +1 -1
  309. package/dist/src/extensions/serverPlugin.cjs +231 -92
  310. package/dist/src/extensions/serverPlugin.cjs.map +1 -1
  311. package/dist/src/extensions/serverPlugin.d.mts +2 -2
  312. package/dist/src/extensions/serverPlugin.d.mts.map +1 -1
  313. package/dist/src/extensions/serverPlugin.mjs +232 -93
  314. package/dist/src/extensions/serverPlugin.mjs.map +1 -1
  315. package/dist/src/pi/piSessionRuntime.cjs +349 -142
  316. package/dist/src/pi/piSessionRuntime.cjs.map +1 -1
  317. package/dist/src/pi/piSessionRuntime.d.mts +18 -17
  318. package/dist/src/pi/piSessionRuntime.d.mts.map +1 -1
  319. package/dist/src/pi/piSessionRuntime.mjs +342 -135
  320. package/dist/src/pi/piSessionRuntime.mjs.map +1 -1
  321. package/dist/src/schemas/agentModel.cjs +2 -2
  322. package/dist/src/schemas/agentModel.cjs.map +1 -1
  323. package/dist/src/schemas/agentModel.d.mts +1 -1
  324. package/dist/src/schemas/agentModel.mjs +2 -2
  325. package/dist/src/schemas/agentModel.mjs.map +1 -1
  326. package/dist/src/schemas/apiContracts.d.mts +2 -2
  327. package/dist/src/schemas/apiContracts.d.mts.map +1 -1
  328. package/dist/src/schemas/askUser.cjs +4 -4
  329. package/dist/src/schemas/askUser.cjs.map +1 -1
  330. package/dist/src/schemas/askUser.d.mts +4 -4
  331. package/dist/src/schemas/askUser.d.mts.map +1 -1
  332. package/dist/src/schemas/askUser.mjs +3 -3
  333. package/dist/src/schemas/askUser.mjs.map +1 -1
  334. package/dist/src/schemas/backgroundWork.cjs +10 -10
  335. package/dist/src/schemas/backgroundWork.cjs.map +1 -1
  336. package/dist/src/schemas/backgroundWork.d.mts +9 -9
  337. package/dist/src/schemas/backgroundWork.d.mts.map +1 -1
  338. package/dist/src/schemas/backgroundWork.mjs +8 -8
  339. package/dist/src/schemas/backgroundWork.mjs.map +1 -1
  340. package/dist/src/schemas/childProcess.cjs +5 -5
  341. package/dist/src/schemas/childProcess.cjs.map +1 -1
  342. package/dist/src/schemas/childProcess.d.mts +2 -2
  343. package/dist/src/schemas/childProcess.mjs +5 -5
  344. package/dist/src/schemas/childProcess.mjs.map +1 -1
  345. package/dist/src/schemas/contextContributions.cjs +10 -10
  346. package/dist/src/schemas/contextContributions.cjs.map +1 -1
  347. package/dist/src/schemas/contextContributions.d.mts +16 -16
  348. package/dist/src/schemas/contextContributions.d.mts.map +1 -1
  349. package/dist/src/schemas/contextContributions.mjs +8 -8
  350. package/dist/src/schemas/contextContributions.mjs.map +1 -1
  351. package/dist/src/schemas/delegation.cjs +17 -17
  352. package/dist/src/schemas/delegation.cjs.map +1 -1
  353. package/dist/src/schemas/delegation.d.mts +16 -16
  354. package/dist/src/schemas/delegation.d.mts.map +1 -1
  355. package/dist/src/schemas/delegation.mjs +10 -10
  356. package/dist/src/schemas/delegation.mjs.map +1 -1
  357. package/dist/src/schemas/extensionFile.d.mts +23 -19
  358. package/dist/src/schemas/extensionFile.d.mts.map +1 -1
  359. package/dist/src/schemas/footer.cjs.map +1 -1
  360. package/dist/src/schemas/footer.d.mts +5 -5
  361. package/dist/src/schemas/footer.d.mts.map +1 -1
  362. package/dist/src/schemas/footer.mjs.map +1 -1
  363. package/dist/src/schemas/headless.cjs +37 -37
  364. package/dist/src/schemas/headless.cjs.map +1 -1
  365. package/dist/src/schemas/headless.d.mts +100 -101
  366. package/dist/src/schemas/headless.d.mts.map +1 -1
  367. package/dist/src/schemas/headless.mjs +24 -24
  368. package/dist/src/schemas/headless.mjs.map +1 -1
  369. package/dist/src/schemas/help.cjs +60 -60
  370. package/dist/src/schemas/help.cjs.map +1 -1
  371. package/dist/src/schemas/help.d.mts +43 -43
  372. package/dist/src/schemas/help.d.mts.map +1 -1
  373. package/dist/src/schemas/help.mjs +41 -41
  374. package/dist/src/schemas/help.mjs.map +1 -1
  375. package/dist/src/schemas/home.cjs +127 -0
  376. package/dist/src/schemas/home.cjs.map +1 -0
  377. package/dist/src/schemas/home.d.mts +63 -0
  378. package/dist/src/schemas/home.d.mts.map +1 -0
  379. package/dist/src/schemas/home.mjs +121 -0
  380. package/dist/src/schemas/home.mjs.map +1 -0
  381. package/dist/src/schemas/httpApiContracts.cjs +441 -0
  382. package/dist/src/schemas/httpApiContracts.cjs.map +1 -0
  383. package/dist/src/schemas/httpApiContracts.d.mts +78 -0
  384. package/dist/src/schemas/httpApiContracts.d.mts.map +1 -0
  385. package/dist/src/schemas/httpApiContracts.mjs +434 -0
  386. package/dist/src/schemas/httpApiContracts.mjs.map +1 -0
  387. package/dist/src/schemas/hubChannel.cjs +3 -0
  388. package/dist/src/schemas/hubChannel.cjs.map +1 -1
  389. package/dist/src/schemas/hubChannel.d.mts +84 -60
  390. package/dist/src/schemas/hubChannel.d.mts.map +1 -1
  391. package/dist/src/schemas/hubChannel.mjs +3 -1
  392. package/dist/src/schemas/hubChannel.mjs.map +1 -1
  393. package/dist/src/schemas/leader.cjs.map +1 -1
  394. package/dist/src/schemas/leader.d.mts +3 -3
  395. package/dist/src/schemas/leader.d.mts.map +1 -1
  396. package/dist/src/schemas/leader.mjs.map +1 -1
  397. package/dist/src/schemas/mcpBundle.d.mts +3 -3
  398. package/dist/src/schemas/mcpFacet.cjs.map +1 -1
  399. package/dist/src/schemas/mcpFacet.d.mts +22 -22
  400. package/dist/src/schemas/mcpFacet.d.mts.map +1 -1
  401. package/dist/src/schemas/mcpFacet.mjs.map +1 -1
  402. package/dist/src/schemas/mcpProjection.cjs +41 -41
  403. package/dist/src/schemas/mcpProjection.cjs.map +1 -1
  404. package/dist/src/schemas/mcpProjection.d.mts +31 -30
  405. package/dist/src/schemas/mcpProjection.d.mts.map +1 -1
  406. package/dist/src/schemas/mcpProjection.mjs +29 -29
  407. package/dist/src/schemas/mcpProjection.mjs.map +1 -1
  408. package/dist/src/schemas/mcpSession.cjs +23 -23
  409. package/dist/src/schemas/mcpSession.cjs.map +1 -1
  410. package/dist/src/schemas/mcpSession.d.mts +12 -12
  411. package/dist/src/schemas/mcpSession.d.mts.map +1 -1
  412. package/dist/src/schemas/mcpSession.mjs +18 -18
  413. package/dist/src/schemas/mcpSession.mjs.map +1 -1
  414. package/dist/src/schemas/mcpStatus.cjs +5 -5
  415. package/dist/src/schemas/mcpStatus.cjs.map +1 -1
  416. package/dist/src/schemas/mcpStatus.d.mts +4 -4
  417. package/dist/src/schemas/mcpStatus.d.mts.map +1 -1
  418. package/dist/src/schemas/mcpStatus.mjs +4 -4
  419. package/dist/src/schemas/mcpStatus.mjs.map +1 -1
  420. package/dist/src/schemas/mcpToolResolver.cjs +9 -9
  421. package/dist/src/schemas/mcpToolResolver.cjs.map +1 -1
  422. package/dist/src/schemas/mcpToolResolver.d.mts +7 -7
  423. package/dist/src/schemas/mcpToolResolver.d.mts.map +1 -1
  424. package/dist/src/schemas/mcpToolResolver.mjs +7 -7
  425. package/dist/src/schemas/mcpToolResolver.mjs.map +1 -1
  426. package/dist/src/schemas/narration.cjs +9 -9
  427. package/dist/src/schemas/narration.cjs.map +1 -1
  428. package/dist/src/schemas/narration.d.mts +5 -5
  429. package/dist/src/schemas/narration.d.mts.map +1 -1
  430. package/dist/src/schemas/narration.mjs +7 -7
  431. package/dist/src/schemas/narration.mjs.map +1 -1
  432. package/dist/src/schemas/notification.cjs +45 -45
  433. package/dist/src/schemas/notification.cjs.map +1 -1
  434. package/dist/src/schemas/notification.d.mts +22 -22
  435. package/dist/src/schemas/notification.d.mts.map +1 -1
  436. package/dist/src/schemas/notification.mjs +31 -31
  437. package/dist/src/schemas/notification.mjs.map +1 -1
  438. package/dist/src/schemas/packageApi.cjs +28 -28
  439. package/dist/src/schemas/packageApi.cjs.map +1 -1
  440. package/dist/src/schemas/packageApi.d.mts +91 -65
  441. package/dist/src/schemas/packageApi.d.mts.map +1 -1
  442. package/dist/src/schemas/packageApi.mjs +18 -18
  443. package/dist/src/schemas/packageApi.mjs.map +1 -1
  444. package/dist/src/schemas/platform.cjs +34 -0
  445. package/dist/src/schemas/platform.cjs.map +1 -0
  446. package/dist/src/schemas/platform.d.mts +75 -0
  447. package/dist/src/schemas/platform.d.mts.map +1 -0
  448. package/dist/src/schemas/platform.mjs +27 -0
  449. package/dist/src/schemas/platform.mjs.map +1 -0
  450. package/dist/src/schemas/pluginContributions.cjs.map +1 -1
  451. package/dist/src/schemas/pluginContributions.d.mts +12 -12
  452. package/dist/src/schemas/pluginContributions.d.mts.map +1 -1
  453. package/dist/src/schemas/pluginContributions.mjs.map +1 -1
  454. package/dist/src/schemas/pluginProtocol.cjs +24 -27
  455. package/dist/src/schemas/pluginProtocol.cjs.map +1 -1
  456. package/dist/src/schemas/pluginProtocol.d.mts +21 -21
  457. package/dist/src/schemas/pluginProtocol.d.mts.map +1 -1
  458. package/dist/src/schemas/pluginProtocol.mjs +18 -20
  459. package/dist/src/schemas/pluginProtocol.mjs.map +1 -1
  460. package/dist/src/schemas/profileIdentity.cjs +2 -2
  461. package/dist/src/schemas/profileIdentity.cjs.map +1 -1
  462. package/dist/src/schemas/profileIdentity.d.mts +1 -1
  463. package/dist/src/schemas/profileIdentity.mjs +2 -2
  464. package/dist/src/schemas/profileIdentity.mjs.map +1 -1
  465. package/dist/src/schemas/protocolChannelsContract.cjs +27 -0
  466. package/dist/src/schemas/protocolChannelsContract.cjs.map +1 -0
  467. package/dist/src/schemas/protocolChannelsContract.d.mts +37 -0
  468. package/dist/src/schemas/protocolChannelsContract.d.mts.map +1 -0
  469. package/dist/src/schemas/protocolChannelsContract.mjs +25 -0
  470. package/dist/src/schemas/protocolChannelsContract.mjs.map +1 -0
  471. package/dist/src/schemas/protocolContracts.cjs +168 -0
  472. package/dist/src/schemas/protocolContracts.cjs.map +1 -0
  473. package/dist/src/schemas/protocolContracts.d.mts +69 -0
  474. package/dist/src/schemas/protocolContracts.d.mts.map +1 -0
  475. package/dist/src/schemas/protocolContracts.mjs +164 -0
  476. package/dist/src/schemas/protocolContracts.mjs.map +1 -0
  477. package/dist/src/schemas/protocolHubContract.cjs +51 -0
  478. package/dist/src/schemas/protocolHubContract.cjs.map +1 -0
  479. package/dist/src/schemas/protocolHubContract.d.mts +218 -0
  480. package/dist/src/schemas/protocolHubContract.d.mts.map +1 -0
  481. package/dist/src/schemas/protocolHubContract.mjs +49 -0
  482. package/dist/src/schemas/protocolHubContract.mjs.map +1 -0
  483. package/dist/src/schemas/protocolSessionContract.cjs +22 -0
  484. package/dist/src/schemas/protocolSessionContract.cjs.map +1 -0
  485. package/dist/src/schemas/protocolSessionContract.d.mts +324 -0
  486. package/dist/src/schemas/protocolSessionContract.d.mts.map +1 -0
  487. package/dist/src/schemas/protocolSessionContract.mjs +22 -0
  488. package/dist/src/schemas/protocolSessionContract.mjs.map +1 -0
  489. package/dist/src/schemas/protocolThreadContract.cjs +21 -0
  490. package/dist/src/schemas/protocolThreadContract.cjs.map +1 -0
  491. package/dist/src/schemas/protocolThreadContract.d.mts +29 -0
  492. package/dist/src/schemas/protocolThreadContract.d.mts.map +1 -0
  493. package/dist/src/schemas/protocolThreadContract.mjs +20 -0
  494. package/dist/src/schemas/protocolThreadContract.mjs.map +1 -0
  495. package/dist/src/schemas/readiness.cjs +36 -36
  496. package/dist/src/schemas/readiness.cjs.map +1 -1
  497. package/dist/src/schemas/readiness.d.mts +37 -37
  498. package/dist/src/schemas/readiness.d.mts.map +1 -1
  499. package/dist/src/schemas/readiness.mjs +31 -31
  500. package/dist/src/schemas/readiness.mjs.map +1 -1
  501. package/dist/src/schemas/serverBundle.d.mts +5 -5
  502. package/dist/src/schemas/serverPlugin.cjs +103 -0
  503. package/dist/src/schemas/serverPlugin.cjs.map +1 -0
  504. package/dist/src/schemas/serverPlugin.d.mts +176 -0
  505. package/dist/src/schemas/serverPlugin.d.mts.map +1 -0
  506. package/dist/src/schemas/serverPlugin.mjs +95 -0
  507. package/dist/src/schemas/serverPlugin.mjs.map +1 -0
  508. package/dist/src/schemas/serverScope.cjs +37 -0
  509. package/dist/src/schemas/serverScope.cjs.map +1 -0
  510. package/dist/src/schemas/serverScope.d.mts +77 -0
  511. package/dist/src/schemas/serverScope.d.mts.map +1 -0
  512. package/dist/src/schemas/serverScope.mjs +33 -0
  513. package/dist/src/schemas/serverScope.mjs.map +1 -0
  514. package/dist/src/schemas/sessionApiContracts.cjs +320 -0
  515. package/dist/src/schemas/sessionApiContracts.cjs.map +1 -0
  516. package/dist/src/schemas/sessionApiContracts.mjs +318 -0
  517. package/dist/src/schemas/sessionApiContracts.mjs.map +1 -0
  518. package/dist/src/schemas/sessionProtocol.cjs +20 -13
  519. package/dist/src/schemas/sessionProtocol.cjs.map +1 -1
  520. package/dist/src/schemas/sessionProtocol.d.mts +37 -54
  521. package/dist/src/schemas/sessionProtocol.d.mts.map +1 -1
  522. package/dist/src/schemas/sessionProtocol.mjs +17 -8
  523. package/dist/src/schemas/sessionProtocol.mjs.map +1 -1
  524. package/dist/src/schemas/skills.cjs +16 -16
  525. package/dist/src/schemas/skills.cjs.map +1 -1
  526. package/dist/src/schemas/skills.d.mts +7 -7
  527. package/dist/src/schemas/skills.d.mts.map +1 -1
  528. package/dist/src/schemas/skills.mjs +12 -12
  529. package/dist/src/schemas/skills.mjs.map +1 -1
  530. package/dist/src/schemas/toolOverrides.cjs +9 -9
  531. package/dist/src/schemas/toolOverrides.cjs.map +1 -1
  532. package/dist/src/schemas/toolOverrides.d.mts +8 -8
  533. package/dist/src/schemas/toolOverrides.d.mts.map +1 -1
  534. package/dist/src/schemas/toolOverrides.mjs +7 -7
  535. package/dist/src/schemas/toolOverrides.mjs.map +1 -1
  536. package/dist/src/schemas/toolSurface.cjs +9 -9
  537. package/dist/src/schemas/toolSurface.cjs.map +1 -1
  538. package/dist/src/schemas/toolSurface.d.mts +13 -13
  539. package/dist/src/schemas/toolSurface.d.mts.map +1 -1
  540. package/dist/src/schemas/toolSurface.mjs +7 -7
  541. package/dist/src/schemas/toolSurface.mjs.map +1 -1
  542. package/dist/src/schemas/uiHub.cjs +9 -9
  543. package/dist/src/schemas/uiHub.cjs.map +1 -1
  544. package/dist/src/schemas/uiHub.d.mts +12 -12
  545. package/dist/src/schemas/uiHub.d.mts.map +1 -1
  546. package/dist/src/schemas/uiHub.mjs +7 -7
  547. package/dist/src/schemas/uiHub.mjs.map +1 -1
  548. package/dist/src/server/directHarnessRuntime.cjs +691 -775
  549. package/dist/src/server/directHarnessRuntime.cjs.map +1 -1
  550. package/dist/src/server/directHarnessRuntime.d.mts +5 -1
  551. package/dist/src/server/directHarnessRuntime.d.mts.map +1 -0
  552. package/dist/src/server/directHarnessRuntime.mjs +671 -754
  553. package/dist/src/server/directHarnessRuntime.mjs.map +1 -1
  554. package/dist/src/server/largeFrameLink.cjs +47 -0
  555. package/dist/src/server/largeFrameLink.cjs.map +1 -0
  556. package/dist/src/server/largeFrameLink.mjs +47 -0
  557. package/dist/src/server/largeFrameLink.mjs.map +1 -0
  558. package/dist/src/server/liveImport.cjs +1 -1
  559. package/dist/src/server/liveImport.cjs.map +1 -1
  560. package/dist/src/server/liveImport.d.mts +1 -1
  561. package/dist/src/server/liveImport.mjs +1 -1
  562. package/dist/src/server/liveImport.mjs.map +1 -1
  563. package/dist/src/server/mcpBundleLoader.cjs.map +1 -1
  564. package/dist/src/server/mcpBundleLoader.d.mts +6 -6
  565. package/dist/src/server/mcpBundleLoader.d.mts.map +1 -1
  566. package/dist/src/server/mcpBundleLoader.mjs.map +1 -1
  567. package/dist/src/server/serverPackages.cjs +60 -0
  568. package/dist/src/server/serverPackages.cjs.map +1 -0
  569. package/dist/src/server/serverPackages.d.mts +44 -0
  570. package/dist/src/server/serverPackages.d.mts.map +1 -0
  571. package/dist/src/server/serverPackages.mjs +59 -0
  572. package/dist/src/server/serverPackages.mjs.map +1 -0
  573. package/dist/src/server/serverScope.cjs +510 -0
  574. package/dist/src/server/serverScope.cjs.map +1 -0
  575. package/dist/src/server/serverScope.d.mts +123 -0
  576. package/dist/src/server/serverScope.d.mts.map +1 -0
  577. package/dist/src/server/serverScope.mjs +510 -0
  578. package/dist/src/server/serverScope.mjs.map +1 -0
  579. package/dist/src/server/sessionMcpHandler.cjs +3 -3
  580. package/dist/src/server/sessionMcpHandler.cjs.map +1 -1
  581. package/dist/src/server/sessionMcpHandler.mjs +4 -4
  582. package/dist/src/server/sessionMcpHandler.mjs.map +1 -1
  583. package/dist/src/server/sessionMcpRoutes.cjs +2 -1
  584. package/dist/src/server/sessionMcpRoutes.cjs.map +1 -1
  585. package/dist/src/server/sessionMcpRoutes.mjs +2 -1
  586. package/dist/src/server/sessionMcpRoutes.mjs.map +1 -1
  587. package/dist/src/server/threadJournals.cjs +38 -107
  588. package/dist/src/server/threadJournals.cjs.map +1 -1
  589. package/dist/src/server/threadJournals.mjs +38 -104
  590. package/dist/src/server/threadJournals.mjs.map +1 -1
  591. package/dist/src/services/apiSurfaceAssert/index.cjs +1 -1
  592. package/dist/src/services/apiSurfaceAssert/index.cjs.map +1 -1
  593. package/dist/src/services/apiSurfaceAssert/index.d.mts +6 -6
  594. package/dist/src/services/apiSurfaceAssert/index.mjs +1 -1
  595. package/dist/src/services/apiSurfaceAssert/index.mjs.map +1 -1
  596. package/dist/src/services/chatgptAuth/index.cjs +1 -220
  597. package/dist/src/services/chatgptAuth/index.cjs.map +1 -1
  598. package/dist/src/services/chatgptAuth/index.d.mts +0 -18
  599. package/dist/src/services/chatgptAuth/index.d.mts.map +1 -1
  600. package/dist/src/services/chatgptAuth/index.mjs +1 -217
  601. package/dist/src/services/chatgptAuth/index.mjs.map +1 -1
  602. package/dist/src/services/chatgptImages/index.cjs +1 -1
  603. package/dist/src/services/chatgptImages/index.cjs.map +1 -1
  604. package/dist/src/services/chatgptImages/index.mjs +1 -1
  605. package/dist/src/services/chatgptImages/index.mjs.map +1 -1
  606. package/dist/src/services/chatgptLogin/index.cjs +230 -0
  607. package/dist/src/services/chatgptLogin/index.cjs.map +1 -0
  608. package/dist/src/services/chatgptLogin/index.d.mts +21 -0
  609. package/dist/src/services/chatgptLogin/index.d.mts.map +1 -0
  610. package/dist/src/services/chatgptLogin/index.mjs +227 -0
  611. package/dist/src/services/chatgptLogin/index.mjs.map +1 -0
  612. package/dist/src/services/chatgptWebSearch/index.cjs +1 -1
  613. package/dist/src/services/chatgptWebSearch/index.cjs.map +1 -1
  614. package/dist/src/services/chatgptWebSearch/index.mjs +1 -1
  615. package/dist/src/services/chatgptWebSearch/index.mjs.map +1 -1
  616. package/dist/src/services/contextContributions/index.cjs +8 -8
  617. package/dist/src/services/contextContributions/index.cjs.map +1 -1
  618. package/dist/src/services/contextContributions/index.d.mts +3 -3
  619. package/dist/src/services/contextContributions/index.d.mts.map +1 -1
  620. package/dist/src/services/contextContributions/index.mjs +8 -8
  621. package/dist/src/services/contextContributions/index.mjs.map +1 -1
  622. package/dist/src/services/devProxyStore/devProxyRecords.cjs +59 -0
  623. package/dist/src/services/devProxyStore/devProxyRecords.cjs.map +1 -0
  624. package/dist/src/services/devProxyStore/devProxyRecords.mjs +56 -0
  625. package/dist/src/services/devProxyStore/devProxyRecords.mjs.map +1 -0
  626. package/dist/src/services/devProxyStore/index.cjs +7 -101
  627. package/dist/src/services/devProxyStore/index.cjs.map +1 -1
  628. package/dist/src/services/devProxyStore/index.mjs +7 -101
  629. package/dist/src/services/devProxyStore/index.mjs.map +1 -1
  630. package/dist/src/services/devProxyStore/sync.cjs +66 -0
  631. package/dist/src/services/devProxyStore/sync.cjs.map +1 -0
  632. package/dist/src/services/devProxyStore/sync.mjs +63 -0
  633. package/dist/src/services/devProxyStore/sync.mjs.map +1 -0
  634. package/dist/src/services/durableNavigation/docs.cjs +15 -0
  635. package/dist/src/services/durableNavigation/docs.cjs.map +1 -0
  636. package/dist/src/services/durableNavigation/docs.mjs +16 -0
  637. package/dist/src/services/durableNavigation/docs.mjs.map +1 -0
  638. package/dist/src/services/durableNavigation/index.cjs +3 -18
  639. package/dist/src/services/durableNavigation/index.cjs.map +1 -1
  640. package/dist/src/services/durableNavigation/index.mjs +2 -17
  641. package/dist/src/services/durableNavigation/index.mjs.map +1 -1
  642. package/dist/src/services/durableQueue/docs.cjs +12 -0
  643. package/dist/src/services/durableQueue/docs.cjs.map +1 -0
  644. package/dist/src/services/durableQueue/docs.mjs +13 -0
  645. package/dist/src/services/durableQueue/docs.mjs.map +1 -0
  646. package/dist/src/services/durableQueue/index.cjs +151 -0
  647. package/dist/src/services/durableQueue/index.cjs.map +1 -0
  648. package/dist/src/services/durableQueue/index.mjs +149 -0
  649. package/dist/src/services/durableQueue/index.mjs.map +1 -0
  650. package/dist/src/services/durableRequestReceipts/docs.cjs +11 -0
  651. package/dist/src/services/durableRequestReceipts/docs.cjs.map +1 -0
  652. package/dist/src/services/durableRequestReceipts/docs.mjs +12 -0
  653. package/dist/src/services/durableRequestReceipts/docs.mjs.map +1 -0
  654. package/dist/src/services/{requestReceipts → durableRequestReceipts}/index.cjs +10 -16
  655. package/dist/src/services/durableRequestReceipts/index.cjs.map +1 -0
  656. package/dist/src/services/durableRequestReceipts/index.d.mts +12 -0
  657. package/dist/src/services/durableRequestReceipts/index.d.mts.map +1 -0
  658. package/dist/src/services/{requestReceipts → durableRequestReceipts}/index.mjs +7 -13
  659. package/dist/src/services/durableRequestReceipts/index.mjs.map +1 -0
  660. package/dist/src/services/durableSession/docs.cjs +65 -0
  661. package/dist/src/services/durableSession/docs.cjs.map +1 -0
  662. package/dist/src/services/durableSession/docs.d.mts +17 -0
  663. package/dist/src/services/durableSession/docs.d.mts.map +1 -0
  664. package/dist/src/services/durableSession/docs.mjs +60 -0
  665. package/dist/src/services/durableSession/docs.mjs.map +1 -0
  666. package/dist/src/services/durableSession/index.cjs +21 -0
  667. package/dist/src/services/durableSession/index.cjs.map +1 -0
  668. package/dist/src/services/durableSession/index.d.mts +13 -0
  669. package/dist/src/services/durableSession/index.d.mts.map +1 -0
  670. package/dist/src/services/durableSession/index.mjs +20 -0
  671. package/dist/src/services/durableSession/index.mjs.map +1 -0
  672. package/dist/src/services/durableSubagents/docs.cjs +15 -0
  673. package/dist/src/services/durableSubagents/docs.cjs.map +1 -0
  674. package/dist/src/services/durableSubagents/docs.mjs +16 -0
  675. package/dist/src/services/durableSubagents/docs.mjs.map +1 -0
  676. package/dist/src/services/durableSubagents/extension.cjs +11 -0
  677. package/dist/src/services/durableSubagents/extension.cjs.map +1 -0
  678. package/dist/src/services/durableSubagents/extension.mjs +12 -0
  679. package/dist/src/services/durableSubagents/extension.mjs.map +1 -0
  680. package/dist/src/services/durableSubagents/index.cjs +95 -0
  681. package/dist/src/services/durableSubagents/index.cjs.map +1 -0
  682. package/dist/src/services/durableSubagents/index.mjs +90 -0
  683. package/dist/src/services/durableSubagents/index.mjs.map +1 -0
  684. package/dist/src/services/durableSubagents/tasks.cjs +25 -0
  685. package/dist/src/services/durableSubagents/tasks.cjs.map +1 -0
  686. package/dist/src/services/durableSubagents/tasks.mjs +26 -0
  687. package/dist/src/services/durableSubagents/tasks.mjs.map +1 -0
  688. package/dist/src/services/headlessClient/index.cjs +20 -13
  689. package/dist/src/services/headlessClient/index.cjs.map +1 -1
  690. package/dist/src/services/headlessClient/index.mjs +21 -14
  691. package/dist/src/services/headlessClient/index.mjs.map +1 -1
  692. package/dist/src/services/historyOwnership/type.d.mts +15 -0
  693. package/dist/src/services/historyOwnership/type.d.mts.map +1 -0
  694. package/dist/src/services/hubChannelHarness/index.cjs +2 -2
  695. package/dist/src/services/hubChannelHarness/index.cjs.map +1 -1
  696. package/dist/src/services/hubChannelHarness/index.d.mts +8 -8
  697. package/dist/src/services/hubChannelHarness/index.d.mts.map +1 -1
  698. package/dist/src/services/hubChannelHarness/index.mjs +2 -2
  699. package/dist/src/services/hubChannelHarness/index.mjs.map +1 -1
  700. package/dist/src/services/json/core.cjs +30 -0
  701. package/dist/src/services/json/core.cjs.map +1 -0
  702. package/dist/src/services/json/core.d.mts +21 -0
  703. package/dist/src/services/json/core.d.mts.map +1 -0
  704. package/dist/src/services/json/core.mjs +26 -0
  705. package/dist/src/services/json/core.mjs.map +1 -0
  706. package/dist/src/services/json/sync.cjs +48 -0
  707. package/dist/src/services/json/sync.cjs.map +1 -0
  708. package/dist/src/services/json/sync.d.mts +22 -0
  709. package/dist/src/services/json/sync.d.mts.map +1 -0
  710. package/dist/src/services/json/sync.mjs +43 -0
  711. package/dist/src/services/json/sync.mjs.map +1 -0
  712. package/dist/src/services/kernel/index.cjs +2 -2
  713. package/dist/src/services/kernel/index.cjs.map +1 -1
  714. package/dist/src/services/kernel/index.d.mts +3 -3
  715. package/dist/src/services/kernel/index.d.mts.map +1 -1
  716. package/dist/src/services/kernel/index.mjs +2 -2
  717. package/dist/src/services/kernel/index.mjs.map +1 -1
  718. package/dist/src/services/nativeChildTools/index.cjs +16 -0
  719. package/dist/src/services/nativeChildTools/index.cjs.map +1 -0
  720. package/dist/src/services/nativeChildTools/index.mjs +16 -0
  721. package/dist/src/services/nativeChildTools/index.mjs.map +1 -0
  722. package/dist/src/services/nodeHost/index.cjs +30 -0
  723. package/dist/src/services/nodeHost/index.cjs.map +1 -0
  724. package/dist/src/services/nodeHost/index.d.mts +16 -0
  725. package/dist/src/services/nodeHost/index.d.mts.map +1 -0
  726. package/dist/src/services/nodeHost/index.mjs +27 -0
  727. package/dist/src/services/nodeHost/index.mjs.map +1 -0
  728. package/dist/src/services/nodeModelDependencies/index.cjs +89 -0
  729. package/dist/src/services/nodeModelDependencies/index.cjs.map +1 -0
  730. package/dist/src/services/nodeModelDependencies/index.mjs +86 -0
  731. package/dist/src/services/nodeModelDependencies/index.mjs.map +1 -0
  732. package/dist/src/services/openSessionRegistry/index.cjs +6 -128
  733. package/dist/src/services/openSessionRegistry/index.cjs.map +1 -1
  734. package/dist/src/services/openSessionRegistry/index.d.mts +5 -36
  735. package/dist/src/services/openSessionRegistry/index.mjs +6 -128
  736. package/dist/src/services/openSessionRegistry/index.mjs.map +1 -1
  737. package/dist/src/services/openSessionRegistry/openSessionRecords.cjs +87 -0
  738. package/dist/src/services/openSessionRegistry/openSessionRecords.cjs.map +1 -0
  739. package/dist/src/services/openSessionRegistry/openSessionRecords.d.mts +30 -0
  740. package/dist/src/services/openSessionRegistry/openSessionRecords.d.mts.map +1 -0
  741. package/dist/src/services/openSessionRegistry/openSessionRecords.mjs +81 -0
  742. package/dist/src/services/openSessionRegistry/openSessionRecords.mjs.map +1 -0
  743. package/dist/src/services/openSessionRegistry/sync.cjs +71 -0
  744. package/dist/src/services/openSessionRegistry/sync.cjs.map +1 -0
  745. package/dist/src/services/openSessionRegistry/sync.d.mts +14 -0
  746. package/dist/src/services/openSessionRegistry/sync.d.mts.map +1 -0
  747. package/dist/src/services/openSessionRegistry/sync.mjs +68 -0
  748. package/dist/src/services/openSessionRegistry/sync.mjs.map +1 -0
  749. package/dist/src/services/packageApiHarness/index.cjs +1 -1
  750. package/dist/src/services/packageApiHarness/index.cjs.map +1 -1
  751. package/dist/src/services/packageApiHarness/index.d.mts +6 -6
  752. package/dist/src/services/packageApiHarness/index.d.mts.map +1 -1
  753. package/dist/src/services/packageApiHarness/index.mjs +2 -2
  754. package/dist/src/services/packageApiHarness/index.mjs.map +1 -1
  755. package/dist/src/services/piArgs/index.cjs +53 -0
  756. package/dist/src/services/piArgs/index.cjs.map +1 -0
  757. package/dist/src/services/piArgs/index.d.mts +6 -0
  758. package/dist/src/services/piArgs/index.d.mts.map +1 -0
  759. package/dist/src/services/piArgs/index.mjs +53 -0
  760. package/dist/src/services/piArgs/index.mjs.map +1 -0
  761. package/dist/src/services/piExtensionHost/index.cjs +47 -39
  762. package/dist/src/services/piExtensionHost/index.cjs.map +1 -1
  763. package/dist/src/services/piExtensionHost/index.d.mts +83 -0
  764. package/dist/src/services/piExtensionHost/index.d.mts.map +1 -0
  765. package/dist/src/services/piExtensionHost/index.mjs +47 -38
  766. package/dist/src/services/piExtensionHost/index.mjs.map +1 -1
  767. package/dist/src/services/piHelpTools/index.cjs +5 -5
  768. package/dist/src/services/piHelpTools/index.cjs.map +1 -1
  769. package/dist/src/services/piHelpTools/index.d.mts.map +1 -1
  770. package/dist/src/services/piHelpTools/index.mjs +7 -7
  771. package/dist/src/services/piHelpTools/index.mjs.map +1 -1
  772. package/dist/src/services/piMessages/index.cjs +106 -0
  773. package/dist/src/services/piMessages/index.cjs.map +1 -0
  774. package/dist/src/services/piMessages/index.mjs +105 -0
  775. package/dist/src/services/piMessages/index.mjs.map +1 -0
  776. package/dist/src/services/piSessionEntries/index.cjs +4 -4
  777. package/dist/src/services/piSessionEntries/index.cjs.map +1 -1
  778. package/dist/src/services/piSessionEntries/index.mjs +3 -3
  779. package/dist/src/services/piSessionEntries/index.mjs.map +1 -1
  780. package/dist/src/services/piSettings/core.cjs +308 -0
  781. package/dist/src/services/piSettings/core.cjs.map +1 -0
  782. package/dist/src/services/piSettings/core.d.mts +102 -0
  783. package/dist/src/services/piSettings/core.d.mts.map +1 -0
  784. package/dist/src/services/piSettings/core.mjs +276 -0
  785. package/dist/src/services/piSettings/core.mjs.map +1 -0
  786. package/dist/src/services/piSettings/sync.cjs +119 -0
  787. package/dist/src/services/piSettings/sync.cjs.map +1 -0
  788. package/dist/src/services/piSettings/sync.d.mts +44 -0
  789. package/dist/src/services/piSettings/sync.d.mts.map +1 -0
  790. package/dist/src/services/piSettings/sync.mjs +110 -0
  791. package/dist/src/services/piSettings/sync.mjs.map +1 -0
  792. package/dist/src/services/piSummary/index.cjs +7 -0
  793. package/dist/src/services/piSummary/index.cjs.map +1 -0
  794. package/dist/src/services/piSummary/index.mjs +7 -0
  795. package/dist/src/services/piSummary/index.mjs.map +1 -0
  796. package/dist/src/services/platformFiles/index.cjs +44 -0
  797. package/dist/src/services/platformFiles/index.cjs.map +1 -0
  798. package/dist/src/services/platformFiles/index.d.mts +16 -0
  799. package/dist/src/services/platformFiles/index.d.mts.map +1 -0
  800. package/dist/src/services/platformFiles/index.mjs +39 -0
  801. package/dist/src/services/platformFiles/index.mjs.map +1 -0
  802. package/dist/src/services/pluginLifecycle/index.cjs +19 -13
  803. package/dist/src/services/pluginLifecycle/index.cjs.map +1 -1
  804. package/dist/src/services/pluginLifecycle/index.d.mts +2 -0
  805. package/dist/src/services/pluginLifecycle/index.d.mts.map +1 -1
  806. package/dist/src/services/pluginLifecycle/index.mjs +19 -14
  807. package/dist/src/services/pluginLifecycle/index.mjs.map +1 -1
  808. package/dist/src/services/poPackage/core.cjs +73 -0
  809. package/dist/src/services/poPackage/core.cjs.map +1 -0
  810. package/dist/src/services/poPackage/core.d.mts +32 -0
  811. package/dist/src/services/poPackage/core.d.mts.map +1 -0
  812. package/dist/src/services/poPackage/core.mjs +66 -0
  813. package/dist/src/services/poPackage/core.mjs.map +1 -0
  814. package/dist/src/services/poPackage/sync.cjs +55 -0
  815. package/dist/src/services/poPackage/sync.cjs.map +1 -0
  816. package/dist/src/services/poPackage/sync.d.mts +21 -0
  817. package/dist/src/services/poPackage/sync.d.mts.map +1 -0
  818. package/dist/src/services/poPackage/sync.mjs +50 -0
  819. package/dist/src/services/poPackage/sync.mjs.map +1 -0
  820. package/dist/src/services/providerAuth/index.cjs +11 -7
  821. package/dist/src/services/providerAuth/index.cjs.map +1 -1
  822. package/dist/src/services/providerAuth/index.mjs +11 -7
  823. package/dist/src/services/providerAuth/index.mjs.map +1 -1
  824. package/dist/src/services/publicFileShares/index.cjs +1 -1
  825. package/dist/src/services/publicFileShares/index.cjs.map +1 -1
  826. package/dist/src/services/publicFileShares/index.d.mts +2 -2
  827. package/dist/src/services/publicFileShares/index.mjs +2 -2
  828. package/dist/src/services/publicFileShares/index.mjs.map +1 -1
  829. package/dist/src/services/remoteAccess/index.d.mts +1 -0
  830. package/dist/src/services/remoteAccess/index.d.mts.map +1 -1
  831. package/dist/src/services/remoteAccessStore/index.cjs +8 -190
  832. package/dist/src/services/remoteAccessStore/index.cjs.map +1 -1
  833. package/dist/src/services/remoteAccessStore/index.d.mts +2 -0
  834. package/dist/src/services/remoteAccessStore/index.mjs +7 -187
  835. package/dist/src/services/remoteAccessStore/index.mjs.map +1 -1
  836. package/dist/src/services/remoteAccessStore/remoteAccessRecords.cjs +98 -0
  837. package/dist/src/services/remoteAccessStore/remoteAccessRecords.cjs.map +1 -0
  838. package/dist/src/services/remoteAccessStore/remoteAccessRecords.mjs +88 -0
  839. package/dist/src/services/remoteAccessStore/remoteAccessRecords.mjs.map +1 -0
  840. package/dist/src/services/remoteAccessStore/sync.cjs +111 -0
  841. package/dist/src/services/remoteAccessStore/sync.cjs.map +1 -0
  842. package/dist/src/services/remoteAccessStore/sync.mjs +108 -0
  843. package/dist/src/services/remoteAccessStore/sync.mjs.map +1 -0
  844. package/dist/src/services/runtimeIdentity/sync.cjs +23 -0
  845. package/dist/src/services/runtimeIdentity/sync.cjs.map +1 -0
  846. package/dist/src/services/runtimeIdentity/sync.d.mts +9 -0
  847. package/dist/src/services/runtimeIdentity/sync.d.mts.map +1 -0
  848. package/dist/src/services/runtimeIdentity/sync.mjs +20 -0
  849. package/dist/src/services/runtimeIdentity/sync.mjs.map +1 -0
  850. package/dist/src/services/serialRunner/index.cjs +25 -0
  851. package/dist/src/services/serialRunner/index.cjs.map +1 -0
  852. package/dist/src/services/serialRunner/index.d.mts +10 -0
  853. package/dist/src/services/serialRunner/index.d.mts.map +1 -0
  854. package/dist/src/services/serialRunner/index.mjs +25 -0
  855. package/dist/src/services/serialRunner/index.mjs.map +1 -0
  856. package/dist/src/services/{serverFacet → serverHost}/index.cjs +5 -5
  857. package/dist/src/services/serverHost/index.cjs.map +1 -0
  858. package/dist/src/services/serverHost/index.d.mts +31 -0
  859. package/dist/src/services/serverHost/index.d.mts.map +1 -0
  860. package/dist/src/services/{serverFacet → serverHost}/index.mjs +5 -5
  861. package/dist/src/services/serverHost/index.mjs.map +1 -0
  862. package/dist/src/services/sessionAttachments/index.cjs +4 -3
  863. package/dist/src/services/sessionAttachments/index.cjs.map +1 -1
  864. package/dist/src/services/sessionAttachments/index.d.mts +1 -6
  865. package/dist/src/services/sessionAttachments/index.d.mts.map +1 -1
  866. package/dist/src/services/sessionAttachments/index.mjs +3 -2
  867. package/dist/src/services/sessionAttachments/index.mjs.map +1 -1
  868. package/dist/src/services/sessionAttachments/type.d.mts +9 -0
  869. package/dist/src/services/sessionAttachments/type.d.mts.map +1 -0
  870. package/dist/src/services/sessionFiles/index.cjs +96 -0
  871. package/dist/src/services/sessionFiles/index.cjs.map +1 -0
  872. package/dist/src/services/sessionFiles/index.d.mts +33 -0
  873. package/dist/src/services/sessionFiles/index.d.mts.map +1 -0
  874. package/dist/src/services/sessionFiles/index.mjs +89 -0
  875. package/dist/src/services/sessionFiles/index.mjs.map +1 -0
  876. package/dist/src/services/sessionFiles/sessionDirectory.cjs +66 -0
  877. package/dist/src/services/sessionFiles/sessionDirectory.cjs.map +1 -0
  878. package/dist/src/services/sessionFiles/sessionDirectory.mjs +62 -0
  879. package/dist/src/services/sessionFiles/sessionDirectory.mjs.map +1 -0
  880. package/dist/src/services/sessionGitStatus/index.cjs +31 -33
  881. package/dist/src/services/sessionGitStatus/index.cjs.map +1 -1
  882. package/dist/src/services/sessionGitStatus/index.mjs +31 -33
  883. package/dist/src/services/sessionGitStatus/index.mjs.map +1 -1
  884. package/dist/src/services/sessionPresentation/index.cjs +3 -27
  885. package/dist/src/services/sessionPresentation/index.cjs.map +1 -1
  886. package/dist/src/services/sessionPresentation/index.mjs +3 -27
  887. package/dist/src/services/sessionPresentation/index.mjs.map +1 -1
  888. package/dist/src/services/skillPrompt/index.cjs +11 -0
  889. package/dist/src/services/skillPrompt/index.cjs.map +1 -0
  890. package/dist/src/services/skillPrompt/index.mjs +11 -0
  891. package/dist/src/services/skillPrompt/index.mjs.map +1 -0
  892. package/dist/src/services/sqliteSessionHistory/index.cjs +44 -30
  893. package/dist/src/services/sqliteSessionHistory/index.cjs.map +1 -1
  894. package/dist/src/services/sqliteSessionHistory/index.d.mts +7 -4
  895. package/dist/src/services/sqliteSessionHistory/index.d.mts.map +1 -1
  896. package/dist/src/services/sqliteSessionHistory/index.mjs +43 -28
  897. package/dist/src/services/sqliteSessionHistory/index.mjs.map +1 -1
  898. package/dist/src/services/sqliteTranscriptReader/index.cjs +21 -45
  899. package/dist/src/services/sqliteTranscriptReader/index.cjs.map +1 -1
  900. package/dist/src/services/sqliteTranscriptReader/index.d.mts +3 -2
  901. package/dist/src/services/sqliteTranscriptReader/index.d.mts.map +1 -1
  902. package/dist/src/services/sqliteTranscriptReader/index.mjs +16 -38
  903. package/dist/src/services/sqliteTranscriptReader/index.mjs.map +1 -1
  904. package/dist/src/services/testMode/index.cjs +162 -0
  905. package/dist/src/services/testMode/index.cjs.map +1 -0
  906. package/dist/src/services/testMode/index.d.mts +17 -0
  907. package/dist/src/services/testMode/index.d.mts.map +1 -0
  908. package/dist/src/services/testMode/index.mjs +155 -0
  909. package/dist/src/services/testMode/index.mjs.map +1 -0
  910. package/dist/src/services/toolOverrides/index.cjs +6 -6
  911. package/dist/src/services/toolOverrides/index.cjs.map +1 -1
  912. package/dist/src/services/toolOverrides/index.d.mts +3 -3
  913. package/dist/src/services/toolOverrides/index.d.mts.map +1 -1
  914. package/dist/src/services/toolOverrides/index.mjs +6 -6
  915. package/dist/src/services/toolOverrides/index.mjs.map +1 -1
  916. package/dist/src/services/toolPrompt/index.d.mts +17 -0
  917. package/dist/src/services/toolPrompt/index.d.mts.map +1 -0
  918. package/dist/src/services/toolSurface/index.cjs +3 -3
  919. package/dist/src/services/toolSurface/index.cjs.map +1 -1
  920. package/dist/src/services/toolSurface/index.d.mts +3 -3
  921. package/dist/src/services/toolSurface/index.d.mts.map +1 -1
  922. package/dist/src/services/toolSurface/index.mjs +4 -4
  923. package/dist/src/services/toolSurface/index.mjs.map +1 -1
  924. package/dist/src/services/traceContext/index.cjs.map +1 -1
  925. package/dist/src/services/traceContext/index.mjs.map +1 -1
  926. package/dist/src/services/transcriptPages/index.cjs +159 -33
  927. package/dist/src/services/transcriptPages/index.cjs.map +1 -1
  928. package/dist/src/services/transcriptPages/index.mjs +158 -34
  929. package/dist/src/services/transcriptPages/index.mjs.map +1 -1
  930. package/dist/src/services/voiceToolsContract/index.cjs +7 -7
  931. package/dist/src/services/voiceToolsContract/index.cjs.map +1 -1
  932. package/dist/src/services/voiceToolsContract/index.d.mts +4 -4
  933. package/dist/src/services/voiceToolsContract/index.d.mts.map +1 -1
  934. package/dist/src/services/voiceToolsContract/index.mjs +7 -7
  935. package/dist/src/services/voiceToolsContract/index.mjs.map +1 -1
  936. package/dist/src/services/workspaceRegistry/index.cjs +9 -179
  937. package/dist/src/services/workspaceRegistry/index.cjs.map +1 -1
  938. package/dist/src/services/workspaceRegistry/index.d.mts +5 -47
  939. package/dist/src/services/workspaceRegistry/index.mjs +7 -176
  940. package/dist/src/services/workspaceRegistry/index.mjs.map +1 -1
  941. package/dist/src/services/workspaceRegistry/sync.cjs +148 -0
  942. package/dist/src/services/workspaceRegistry/sync.cjs.map +1 -0
  943. package/dist/src/services/workspaceRegistry/sync.d.mts +34 -0
  944. package/dist/src/services/workspaceRegistry/sync.d.mts.map +1 -0
  945. package/dist/src/services/workspaceRegistry/sync.mjs +140 -0
  946. package/dist/src/services/workspaceRegistry/sync.mjs.map +1 -0
  947. package/dist/src/services/workspaceRegistry/workspaceRecords.cjs +114 -0
  948. package/dist/src/services/workspaceRegistry/workspaceRecords.cjs.map +1 -0
  949. package/dist/src/services/workspaceRegistry/workspaceRecords.d.mts +31 -0
  950. package/dist/src/services/workspaceRegistry/workspaceRecords.d.mts.map +1 -0
  951. package/dist/src/services/workspaceRegistry/workspaceRecords.mjs +101 -0
  952. package/dist/src/services/workspaceRegistry/workspaceRecords.mjs.map +1 -0
  953. package/dist/src/systems/child/adapters/headlessChildSessionService.cjs +339 -202
  954. package/dist/src/systems/child/adapters/headlessChildSessionService.cjs.map +1 -1
  955. package/dist/src/systems/child/adapters/headlessChildSessionService.d.mts +16 -21
  956. package/dist/src/systems/child/adapters/headlessChildSessionService.d.mts.map +1 -1
  957. package/dist/src/systems/child/adapters/headlessChildSessionService.mjs +329 -191
  958. package/dist/src/systems/child/adapters/headlessChildSessionService.mjs.map +1 -1
  959. package/dist/src/systems/child/services/childSession/index.cjs +94 -20
  960. package/dist/src/systems/child/services/childSession/index.cjs.map +1 -1
  961. package/dist/src/systems/child/services/childSession/index.d.mts +12 -3
  962. package/dist/src/systems/child/services/childSession/index.d.mts.map +1 -1
  963. package/dist/src/systems/child/services/childSession/index.mjs +94 -20
  964. package/dist/src/systems/child/services/childSession/index.mjs.map +1 -1
  965. package/dist/src/systems/child/types/childSession.cjs +33 -13
  966. package/dist/src/systems/child/types/childSession.cjs.map +1 -1
  967. package/dist/src/systems/child/types/childSession.d.mts +143 -80
  968. package/dist/src/systems/child/types/childSession.d.mts.map +1 -1
  969. package/dist/src/systems/child/types/childSession.mjs +24 -9
  970. package/dist/src/systems/child/types/childSession.mjs.map +1 -1
  971. package/dist/src/systems/main/adapters/headlessHost.cjs +30 -27
  972. package/dist/src/systems/main/adapters/headlessHost.cjs.map +1 -1
  973. package/dist/src/systems/main/adapters/headlessHost.d.mts +22 -22
  974. package/dist/src/systems/main/adapters/headlessHost.d.mts.map +1 -1
  975. package/dist/src/systems/main/adapters/headlessHost.mjs +33 -30
  976. package/dist/src/systems/main/adapters/headlessHost.mjs.map +1 -1
  977. package/dist/src/systems/main/adapters/headlessSessionHost.cjs +248 -229
  978. package/dist/src/systems/main/adapters/headlessSessionHost.cjs.map +1 -1
  979. package/dist/src/systems/main/adapters/headlessSessionHost.d.mts +4 -5
  980. package/dist/src/systems/main/adapters/headlessSessionHost.d.mts.map +1 -1
  981. package/dist/src/systems/main/adapters/headlessSessionHost.mjs +239 -219
  982. package/dist/src/systems/main/adapters/headlessSessionHost.mjs.map +1 -1
  983. package/dist/src/systems/main/types/headlessHost.d.mts +16 -14
  984. package/dist/src/systems/main/types/headlessHost.d.mts.map +1 -1
  985. package/dist/src/testing/pi/testHost.cjs +2 -2
  986. package/dist/src/testing/pi/testHost.cjs.map +1 -1
  987. package/dist/src/testing/pi/testHost.d.mts +3 -2
  988. package/dist/src/testing/pi/testHost.mjs +3 -3
  989. package/dist/src/testing/pi/testHost.mjs.map +1 -1
  990. package/dist/src/types/config.d.mts +1 -1
  991. package/dist/src/types/config.d.mts.map +1 -1
  992. package/dist/src/types/kernel.d.mts +3 -3
  993. package/dist/src/types/server/directHarnessRuntime.d.mts +54 -25
  994. package/dist/src/types/server/directHarnessRuntime.d.mts.map +1 -1
  995. package/dist/src/types/server/sessionToolSurface.d.mts +9 -9
  996. package/dist/src/web/services/apiClient/index.d.mts +1 -0
  997. package/dist/src/web/services/apiPaths/index.cjs.map +1 -1
  998. package/dist/src/web/services/apiPaths/index.d.mts +1 -1
  999. package/dist/src/web/services/apiPaths/index.mjs.map +1 -1
  1000. package/dist/src/web/services/mcpWidget.cjs.map +1 -1
  1001. package/dist/src/web/services/mcpWidget.d.mts +2 -2
  1002. package/dist/src/web/services/mcpWidget.d.mts.map +1 -1
  1003. package/dist/src/web/services/mcpWidget.mjs.map +1 -1
  1004. package/dist/src/web/services/testing/templateRail.cjs +3 -0
  1005. package/dist/src/web/services/testing/templateRail.cjs.map +1 -1
  1006. package/dist/src/web/services/testing/templateRail.mjs +3 -0
  1007. package/dist/src/web/services/testing/templateRail.mjs.map +1 -1
  1008. package/dist/src/web/types/mcpWidget.d.mts +1 -1
  1009. package/dist/src/web/types/nativeTemplate.d.mts +1 -1
  1010. package/dist/src/web/types/nativeTemplate.d.mts.map +1 -1
  1011. package/dist/src/web/types/template.d.mts +8 -0
  1012. package/dist/src/web/types/template.d.mts.map +1 -1
  1013. package/dist/src/web/types/webPlugin.d.mts +17 -5
  1014. package/dist/src/web/types/webPlugin.d.mts.map +1 -1
  1015. package/dist/testMode.cjs +4 -0
  1016. package/dist/testMode.d.mts +2 -0
  1017. package/dist/testMode.mjs +1 -0
  1018. package/dist/testing.cjs +1 -1
  1019. package/dist/testing.d.mts +2 -2
  1020. package/dist/testing.mjs +2 -2
  1021. package/dist/toolInventory.cjs.map +1 -1
  1022. package/dist/toolInventory.mjs.map +1 -1
  1023. package/dist/toolNames.mjs +1 -2
  1024. package/dist/toolOverrides.cjs +4 -4
  1025. package/dist/toolOverrides.d.mts +3 -3
  1026. package/dist/toolOverrides.mjs +3 -3
  1027. package/dist/toolSurface.cjs +4 -4
  1028. package/dist/toolSurface.d.mts +3 -3
  1029. package/dist/toolSurface.mjs +3 -3
  1030. package/dist/transition.cjs +3 -3
  1031. package/dist/transition.d.cjs +3 -3
  1032. package/dist/transition.d.mts +2 -2
  1033. package/dist/transition.mjs +1 -2
  1034. package/dist/transitionClassifier.cjs.map +1 -1
  1035. package/dist/transitionClassifier.d.mts +2 -2
  1036. package/dist/transitionClassifier.d.mts.map +1 -1
  1037. package/dist/transitionClassifier.mjs.map +1 -1
  1038. package/dist/transitionCoordinator.cjs +3 -3
  1039. package/dist/transitionCoordinator.cjs.map +1 -1
  1040. package/dist/transitionCoordinator.d.mts +4 -4
  1041. package/dist/transitionCoordinator.d.mts.map +1 -1
  1042. package/dist/transitionCoordinator.mjs +3 -3
  1043. package/dist/transitionCoordinator.mjs.map +1 -1
  1044. package/dist/typesContextApi.d.mts +2 -1
  1045. package/dist/typesContextApi.d.mts.map +1 -1
  1046. package/dist/uiHub.cjs +3 -3
  1047. package/dist/uiHub.d.mts +2 -2
  1048. package/dist/uiHub.mjs +1 -2
  1049. package/dist/voiceTools.cjs +5 -5
  1050. package/dist/voiceTools.d.mts +3 -3
  1051. package/dist/voiceTools.mjs +3 -3
  1052. package/dist/web.cjs +8 -0
  1053. package/dist/web.d.mts +3 -2
  1054. package/dist/web.mjs +2 -1
  1055. package/dist/webCompositions.cjs.map +1 -1
  1056. package/dist/webCompositions.d.mts +7 -7
  1057. package/dist/webCompositions.d.mts.map +1 -1
  1058. package/dist/webCompositions.mjs.map +1 -1
  1059. package/licenses/Codex-Apache-2.0.txt +201 -0
  1060. package/package.json +58 -53
  1061. package/dist/doomPackage.cjs +0 -61
  1062. package/dist/doomPackage.cjs.map +0 -1
  1063. package/dist/doomPackage.d.mts +0 -17
  1064. package/dist/doomPackage.d.mts.map +0 -1
  1065. package/dist/doomPackage.mjs +0 -54
  1066. package/dist/doomPackage.mjs.map +0 -1
  1067. package/dist/jsonlSessionRepo.cjs +0 -44
  1068. package/dist/jsonlSessionRepo.cjs.map +0 -1
  1069. package/dist/jsonlSessionRepo.d.mts +0 -7
  1070. package/dist/jsonlSessionRepo.d.mts.map +0 -1
  1071. package/dist/jsonlSessionRepo.mjs +0 -42
  1072. package/dist/jsonlSessionRepo.mjs.map +0 -1
  1073. package/dist/runtimeJson.cjs.map +0 -1
  1074. package/dist/runtimeJson.d.mts.map +0 -1
  1075. package/dist/runtimeJson.mjs.map +0 -1
  1076. package/dist/runtimePiSettings.cjs.map +0 -1
  1077. package/dist/runtimePiSettings.d.mts.map +0 -1
  1078. package/dist/runtimePiSettings.mjs.map +0 -1
  1079. package/dist/serverFacet.cjs +0 -34
  1080. package/dist/serverFacet.d.mts +0 -10
  1081. package/dist/serverFacet.mjs +0 -9
  1082. package/dist/src/pi/piWebSocketListener.cjs +0 -115
  1083. package/dist/src/pi/piWebSocketListener.cjs.map +0 -1
  1084. package/dist/src/pi/piWebSocketListener.mjs +0 -115
  1085. package/dist/src/pi/piWebSocketListener.mjs.map +0 -1
  1086. package/dist/src/schemas/serverFacet.cjs +0 -111
  1087. package/dist/src/schemas/serverFacet.cjs.map +0 -1
  1088. package/dist/src/schemas/serverFacet.d.mts +0 -152
  1089. package/dist/src/schemas/serverFacet.d.mts.map +0 -1
  1090. package/dist/src/schemas/serverFacet.mjs +0 -101
  1091. package/dist/src/schemas/serverFacet.mjs.map +0 -1
  1092. package/dist/src/schemas/sessionUpdates.d.mts +0 -34
  1093. package/dist/src/schemas/sessionUpdates.d.mts.map +0 -1
  1094. package/dist/src/server/headlessProtocol.cjs +0 -382
  1095. package/dist/src/server/headlessProtocol.cjs.map +0 -1
  1096. package/dist/src/server/headlessProtocol.mjs +0 -382
  1097. package/dist/src/server/headlessProtocol.mjs.map +0 -1
  1098. package/dist/src/server/nativeChildTranscriptReader.cjs +0 -20
  1099. package/dist/src/server/nativeChildTranscriptReader.cjs.map +0 -1
  1100. package/dist/src/server/nativeChildTranscriptReader.mjs +0 -18
  1101. package/dist/src/server/nativeChildTranscriptReader.mjs.map +0 -1
  1102. package/dist/src/server/serverFacetLoader.cjs +0 -214
  1103. package/dist/src/server/serverFacetLoader.cjs.map +0 -1
  1104. package/dist/src/server/serverFacetLoader.d.mts +0 -72
  1105. package/dist/src/server/serverFacetLoader.d.mts.map +0 -1
  1106. package/dist/src/server/serverFacetLoader.mjs +0 -212
  1107. package/dist/src/server/serverFacetLoader.mjs.map +0 -1
  1108. package/dist/src/services/acpSessionUpdates/index.cjs +0 -129
  1109. package/dist/src/services/acpSessionUpdates/index.cjs.map +0 -1
  1110. package/dist/src/services/acpSessionUpdates/index.mjs +0 -129
  1111. package/dist/src/services/acpSessionUpdates/index.mjs.map +0 -1
  1112. package/dist/src/services/historyImport/index.cjs +0 -8
  1113. package/dist/src/services/historyImport/index.cjs.map +0 -1
  1114. package/dist/src/services/historyImport/index.d.mts +0 -68
  1115. package/dist/src/services/historyImport/index.d.mts.map +0 -1
  1116. package/dist/src/services/historyImport/index.mjs +0 -8
  1117. package/dist/src/services/historyImport/index.mjs.map +0 -1
  1118. package/dist/src/services/openSessionRegistry/index.d.mts.map +0 -1
  1119. package/dist/src/services/requestReceipts/index.cjs.map +0 -1
  1120. package/dist/src/services/requestReceipts/index.d.mts +0 -11
  1121. package/dist/src/services/requestReceipts/index.d.mts.map +0 -1
  1122. package/dist/src/services/requestReceipts/index.mjs.map +0 -1
  1123. package/dist/src/services/rpcTranscript/index.cjs +0 -633
  1124. package/dist/src/services/rpcTranscript/index.cjs.map +0 -1
  1125. package/dist/src/services/rpcTranscript/index.d.mts +0 -50
  1126. package/dist/src/services/rpcTranscript/index.d.mts.map +0 -1
  1127. package/dist/src/services/rpcTranscript/index.mjs +0 -632
  1128. package/dist/src/services/rpcTranscript/index.mjs.map +0 -1
  1129. package/dist/src/services/serverFacet/index.cjs.map +0 -1
  1130. package/dist/src/services/serverFacet/index.d.mts +0 -31
  1131. package/dist/src/services/serverFacet/index.d.mts.map +0 -1
  1132. package/dist/src/services/serverFacet/index.mjs.map +0 -1
  1133. package/dist/src/services/workspaceRegistry/index.d.mts.map +0 -1
  1134. package/dist/src/systems/child/adapters/nativeChildRuntimes.cjs +0 -28
  1135. package/dist/src/systems/child/adapters/nativeChildRuntimes.cjs.map +0 -1
  1136. package/dist/src/systems/child/adapters/nativeChildRuntimes.mjs +0 -25
  1137. package/dist/src/systems/child/adapters/nativeChildRuntimes.mjs.map +0 -1
  1138. package/dist/terminalPiChildSessionService.cjs +0 -324
  1139. package/dist/terminalPiChildSessionService.cjs.map +0 -1
  1140. package/dist/terminalPiChildSessionService.d.mts +0 -46
  1141. package/dist/terminalPiChildSessionService.d.mts.map +0 -1
  1142. package/dist/terminalPiChildSessionService.mjs +0 -318
  1143. package/dist/terminalPiChildSessionService.mjs.map +0 -1
  1144. package/dist/v3Export.cjs +0 -10
  1145. package/dist/v3Export.cjs.map +0 -1
  1146. package/dist/v3Export.d.mts +0 -35
  1147. package/dist/v3Export.d.mts.map +0 -1
  1148. package/dist/v3Export.mjs +0 -9
  1149. package/dist/v3Export.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/rpcTranscript/index.ts"],"sourcesContent":["import type {\n AssistantTranscriptItem,\n JsonValue,\n SessionPhase,\n SessionSnapshot,\n ThinkingLevel,\n ToolTranscriptItem,\n TranscriptItem,\n TranscriptProgress,\n UserTranscriptItem,\n} from '../../exports/sessionProtocol';\nimport type { SessionFrame } from '../../types/server/session';\n\nconst THINKING_LEVELS = new Set<string>(['off', 'minimal', 'low', 'medium', 'high']);\nconst STOP_REASONS = new Set<string>(['stop', 'length', 'toolUse']);\nconst UNKNOWN_MODEL = { provider: 'unknown', id: 'unknown' };\n\n/**\n * What one agent frame changed.\n *\n * A frame can do both: finishing a message publishes the completed item as\n * progress and appends it to the authoritative transcript.\n */\nexport interface TranscriptReduction {\n /** Present when the frame changed authoritative state. */\n snapshot?: SessionSnapshot;\n /** Present when the frame produced transient activity. */\n /** Coarse assistant usage totals. Never includes message or tool content. */\n aggregate?: Record<string, number>;\n progress?: TranscriptProgress;\n}\n\nexport interface RpcTranscript {\n snapshot(): SessionSnapshot;\n phase(): SessionPhase;\n apply(frame: SessionFrame): TranscriptReduction;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction text(value: unknown, fallback = ''): string {\n return typeof value === 'string' ? value : fallback;\n}\n\nfunction finiteNumber(value: unknown): number | undefined {\n return typeof value === 'number' && Number.isFinite(value) ? value : undefined;\n}\n\nfunction assistantAggregate(message: Record<string, unknown>): Record<string, number> {\n const aggregate: Record<string, number> = { assistant_messages: 1 };\n const usage = isRecord(message.usage) ? message.usage : {};\n const cost = isRecord(usage.cost) ? usage.cost : {};\n const fields: Array<[string, unknown]> = [\n ['input_tokens', usage.input ?? usage.inputTokens],\n ['output_tokens', usage.output ?? usage.outputTokens],\n ['cache_read_tokens', usage.cacheRead ?? usage.cacheReadTokens],\n ['cache_write_tokens', usage.cacheWrite ?? usage.cacheWriteTokens],\n ['total_tokens', usage.totalTokens],\n ['cost_usd', cost.total ?? message.cost],\n ];\n for (const [name, value] of fields) {\n const numeric = finiteNumber(value);\n if (numeric !== undefined) aggregate[name] = numeric;\n }\n return aggregate;\n}\n\n/** Coerces to the protocol's JSON subset, which rejects undefined and non-plain objects. */\nfunction normalizeJson(value: unknown): JsonValue {\n if (value === null || typeof value === 'boolean' || typeof value === 'string') return value;\n if (typeof value === 'number') return Number.isFinite(value) ? value : null;\n if (Array.isArray(value)) return value.map((entry) => normalizeJson(entry));\n if (!isRecord(value)) return null;\n return Object.fromEntries(\n Object.entries(value)\n .filter(([, entry]) => entry !== undefined)\n .map(([key, entry]) => [key, normalizeJson(entry)]),\n );\n}\n\nfunction thinkingLevel(value: unknown, fallback: ThinkingLevel): ThinkingLevel {\n return typeof value === 'string' && THINKING_LEVELS.has(value) ? (value as ThinkingLevel) : fallback;\n}\n\nfunction modelRef(value: unknown): { provider: string; id: string } {\n if (!isRecord(value)) return UNKNOWN_MODEL;\n const provider = text(value.provider);\n const id = text(value.id);\n return provider && id ? { provider, id } : UNKNOWN_MODEL;\n}\n\n/** Maps pi-ai assistant content onto the protocol's closed part union. */\nfunction assistantContent(value: unknown): AssistantTranscriptItem['content'] {\n if (!Array.isArray(value)) return [];\n const parts: AssistantTranscriptItem['content'] = [];\n for (const part of value) {\n if (!isRecord(part)) continue;\n if (part.type === 'text') parts.push({ type: 'text', text: text(part.text) });\n else if (part.type === 'thinking') {\n parts.push({\n type: 'thinking',\n thinking: text(part.thinking),\n ...(part.redacted === true ? { redacted: true } : {}),\n });\n } else if (part.type === 'toolCall') {\n const toolCallId = text(part.id, text(part.toolCallId));\n const toolName = text(part.name, text(part.toolName));\n if (!toolCallId || !toolName) continue;\n parts.push({ type: 'toolCall', toolCallId, toolName, input: normalizeJson(part.arguments ?? part.input) });\n }\n }\n return parts;\n}\n\ntype AssistantContentPart = AssistantTranscriptItem['content'][number];\n\n/** Applies Pi RPC's delta-only assistant event to the live protocol item. */\nfunction applyAssistantEvent(\n content: AssistantTranscriptItem['content'],\n value: unknown,\n): AssistantTranscriptItem['content'] {\n if (!isRecord(value) || !Number.isInteger(value.contentIndex) || (value.contentIndex as number) < 0) return content;\n const index = value.contentIndex as number;\n const parts: Array<AssistantContentPart | undefined> = [...content];\n const existing = parts[index];\n switch (value.type) {\n case 'text_start':\n parts[index] = existing?.type === 'text' ? existing : { type: 'text', text: '' };\n break;\n case 'text_delta':\n parts[index] = { type: 'text', text: (existing?.type === 'text' ? existing.text : '') + text(value.delta) };\n break;\n case 'text_end':\n parts[index] = { type: 'text', text: text(value.content, existing?.type === 'text' ? existing.text : '') };\n break;\n case 'thinking_start':\n parts[index] = existing?.type === 'thinking' ? existing : { type: 'thinking', thinking: '' };\n break;\n case 'thinking_delta':\n parts[index] = {\n type: 'thinking',\n thinking: (existing?.type === 'thinking' ? existing.thinking : '') + text(value.delta),\n };\n break;\n case 'thinking_end':\n parts[index] = {\n type: 'thinking',\n thinking: text(value.content, existing?.type === 'thinking' ? existing.thinking : ''),\n };\n break;\n case 'toolcall_start': {\n const toolCallId = text(value.id);\n const toolName = text(value.toolName);\n if (toolCallId && toolName) parts[index] = { type: 'toolCall', toolCallId, toolName, input: {} };\n break;\n }\n case 'toolcall_end': {\n const completed = assistantContent([value.toolCall])[0];\n if (completed) parts[index] = completed;\n break;\n }\n }\n return parts.filter((part): part is AssistantContentPart => part !== undefined);\n}\n\n/** Maps a user or tool payload onto the protocol's text-and-image union. */\nfunction plainContent(value: unknown): UserTranscriptItem['content'] {\n if (typeof value === 'string') return [{ type: 'text', text: value }];\n if (!Array.isArray(value)) return [];\n const parts: UserTranscriptItem['content'] = [];\n for (const part of value) {\n if (!isRecord(part)) continue;\n if (part.type === 'text') parts.push({ type: 'text', text: text(part.text) });\n else if (part.type === 'image') {\n const data = text(part.data);\n const mimeType = text(part.mimeType);\n if (data && mimeType) parts.push({ type: 'image', data, mimeType });\n }\n }\n return parts;\n}\n\ninterface JournalToolCall {\n name: string;\n input: JsonValue;\n}\n\nfunction timestampFrom(entry: Record<string, unknown>, message: Record<string, unknown>, now: () => number): number {\n const messageTimestamp = finiteNumber(message.timestamp);\n if (messageTimestamp !== undefined) return messageTimestamp;\n const entryTimestamp = finiteNumber(entry.timestamp);\n if (entryTimestamp !== undefined) return entryTimestamp;\n const parsed = typeof entry.timestamp === 'string' ? Date.parse(entry.timestamp) : Number.NaN;\n return Number.isFinite(parsed) ? parsed : now();\n}\n\n/** Selects the active branch from a complete get_entries response. */\nexport function activeBranch(data: Record<string, unknown>): Record<string, unknown>[] | undefined {\n if (!Array.isArray(data.entries)) return undefined;\n if (data.leafId === null) return [];\n if (typeof data.leafId !== 'string') return undefined;\n const entries = new Map(data.entries.filter(isRecord).map((entry) => [entry.id, entry]));\n const branch: Record<string, unknown>[] = [];\n const visited = new Set<string>();\n let id: unknown = data.leafId;\n while (id !== null) {\n if (typeof id !== 'string' || visited.has(id)) return undefined;\n const entry = entries.get(id);\n // Incremental answers cannot replace the complete transcript.\n if (!entry) return undefined;\n visited.add(id);\n branch.push(entry);\n id = entry.parentId;\n }\n return branch.reverse();\n}\n\n/** Rebuilds the active protocol transcript from journal messages. */\nfunction transcriptFromBranch(\n value: unknown,\n fallbackModel: { provider: string; id: string },\n now: () => number,\n): TranscriptItem[] | undefined {\n if (!Array.isArray(value)) return undefined;\n const items: TranscriptItem[] = [];\n const toolCalls = new Map<string, JournalToolCall>();\n\n for (const candidate of value) {\n if (!isRecord(candidate) || candidate.type !== 'message' || !isRecord(candidate.message)) continue;\n const message = candidate.message;\n const role = text(message.role);\n const timestamp = timestampFrom(candidate, message, now);\n\n if (role === 'user') {\n const content = plainContent(message.content);\n if (content.length === 0) continue;\n const stamp = finiteNumber(message.timestamp);\n items.push({\n id: stamp === undefined ? text(candidate.id, `user-${String(timestamp)}`) : `user-${String(stamp)}`,\n role: 'user',\n content,\n timestamp,\n });\n continue;\n }\n\n if (role === 'assistant') {\n const content = assistantContent(message.content);\n for (const part of content) {\n if (part.type === 'toolCall') {\n toolCalls.set(part.toolCallId, { name: part.toolName, input: part.input });\n }\n }\n const stopReason = text(message.stopReason);\n const errorMessage = text(message.errorMessage);\n const base = {\n id: text(message.id, text(candidate.id, `assistant-${String(timestamp)}`)),\n role: 'assistant' as const,\n content,\n model: modelRef(message.model ?? fallbackModel),\n timestamp,\n };\n items.push(\n stopReason === 'aborted'\n ? { ...base, status: 'aborted', stopReason: 'aborted', ...(errorMessage ? { errorMessage } : {}) }\n : stopReason === 'error'\n ? { ...base, status: 'error', stopReason: 'error', ...(errorMessage ? { errorMessage } : {}) }\n : {\n ...base,\n status: 'complete',\n stopReason: STOP_REASONS.has(stopReason) ? (stopReason as 'stop' | 'length' | 'toolUse') : 'stop',\n },\n );\n continue;\n }\n\n if (role === 'toolResult') {\n const toolCallId = text(message.toolCallId);\n const call = toolCalls.get(toolCallId);\n if (!call) continue;\n const isError = message.isError === true;\n const base = {\n id: toolCallId,\n role: 'tool' as const,\n toolCallId,\n toolName: call.name,\n input: call.input,\n content: plainContent(message.content),\n ...(message.details === undefined ? {} : { details: normalizeJson(message.details) }),\n timestamp,\n };\n items.push(\n isError ? { ...base, status: 'error', isError: true } : { ...base, status: 'complete', isError: false },\n );\n }\n }\n\n return items;\n}\n\nexport interface RpcTranscriptOptions {\n id: string;\n cwd: string;\n name?: string;\n /** Server streaming projections do not retain committed history. */\n retainEntries?: number;\n /**\n * Supplies every timestamp this projection stamps.\n *\n * Required rather than defaulted: a service that reaches for the clock is\n * one a test cannot pin, and the snapshot's timestamps are compared.\n */\n now: () => number;\n}\n\n/**\n * Projects Pi's rpc event stream onto the protocol's session model.\n *\n * The protocol is snapshot-authoritative: the snapshot is the truth and\n * progress is a transient hint that must never be reduced into it. That split\n * is the reason this exists at all, because Pi's rpc stream makes no such\n * distinction and reports a running message the same way it reports a settled\n * one. Frames with no protocol meaning reduce to nothing rather than being\n * forced into a shape the schema would reject.\n */\nexport function createRpcTranscript(options: RpcTranscriptOptions): RpcTranscript {\n const now = options.now;\n const created = now();\n let snapshot: SessionSnapshot = {\n id: options.id,\n cwd: options.cwd,\n createdAt: created,\n updatedAt: created,\n phase: 'idle',\n model: UNKNOWN_MODEL,\n thinkingLevel: 'medium',\n fastMode: false,\n attached: false,\n locked: false,\n revision: 0,\n transcript: [],\n queuedSteer: [],\n queuedSteerCount: 0,\n ...(options.name === undefined ? {} : { name: options.name }),\n };\n /** Assistant messages still streaming, by message id. */\n const streaming = new Map<string, AssistantTranscriptItem>();\n let activeAssistantId: string | undefined;\n // Completion identity must survive server projections that retain no history.\n let lastCompletedAssistant: Pick<AssistantTranscriptItem, 'id' | 'role' | 'timestamp' | 'model'> | undefined;\n const rememberCompletion = (item: AssistantTranscriptItem | undefined): void => {\n lastCompletedAssistant = item\n ? { id: item.id, role: item.role, timestamp: item.timestamp, model: item.model }\n : undefined;\n };\n /** Tool calls still running, by tool call id. */\n const running = new Map<string, ToolTranscriptItem>();\n\n const commit = (updates: Partial<SessionSnapshot>): SessionSnapshot => {\n snapshot = { ...snapshot, ...updates, revision: snapshot.revision + 1, updatedAt: now() };\n if (options.retainEntries !== undefined)\n snapshot.transcript = options.retainEntries === 0 ? [] : snapshot.transcript.slice(-options.retainEntries);\n return snapshot;\n };\n\n const append = (item: TranscriptItem): SessionSnapshot => commit({ transcript: [...snapshot.transcript, item] });\n\n /**\n * Appends unless the transcript already holds that id.\n *\n * A user message reaches this twice: once as the message the agent started,\n * and again when the session journals it. Only one belongs in the\n * transcript, and the id is what decides which arrival was first.\n */\n const appendUnique = (item: TranscriptItem): SessionSnapshot | undefined =>\n snapshot.transcript.some((existing) => existing.id === item.id) ? undefined : append(item);\n\n /**\n * A user message keyed by when it was written.\n *\n * pi-ai gives a user message no id of its own, so the timestamp is the only\n * thing both arrivals of the same message agree on.\n */\n const userFrom = (\n message: Record<string, unknown>,\n fallbackId: string,\n fallbackTimestamp?: number,\n ): UserTranscriptItem | undefined => {\n const content = plainContent(message.content);\n if (content.length === 0) return undefined;\n const stamp = typeof message.timestamp === 'number' ? message.timestamp : fallbackTimestamp;\n return {\n id: stamp === undefined ? fallbackId : `user-${stamp}`,\n role: 'user',\n content,\n timestamp: stamp ?? now(),\n };\n };\n\n const assistantFrom = (value: unknown, id?: string): AssistantTranscriptItem => {\n const message = isRecord(value) ? value : {};\n const model =\n typeof message.model === 'string'\n ? { provider: text(message.provider, snapshot.model.provider), id: message.model }\n : modelRef(message.model ?? snapshot.model);\n const timestamp = finiteNumber(message.timestamp) ?? now();\n return {\n id: id ?? `assistant-${timestamp}-${model.provider}-${model.id}`,\n role: 'assistant',\n content: assistantContent(message.content),\n model,\n status: 'streaming',\n timestamp,\n };\n };\n\n return {\n snapshot: () => structuredClone(snapshot),\n phase: () => snapshot.phase,\n apply(frame) {\n const type = text(frame.type);\n switch (type) {\n case 'agent_start':\n return { snapshot: commit({ phase: 'turn' }) };\n case 'agent_settled':\n return { snapshot: commit({ phase: 'idle' }) };\n case 'compaction_start':\n return { snapshot: commit({ phase: 'compaction' }) };\n case 'compaction_end':\n return { snapshot: commit({ phase: 'idle' }) };\n case 'auto_retry_start':\n return { snapshot: commit({ phase: 'retry' }) };\n case 'auto_retry_end':\n return { snapshot: commit({ phase: 'turn' }) };\n case 'thinking_level_changed':\n return { snapshot: commit({ thinkingLevel: thinkingLevel(frame.level, snapshot.thinkingLevel) }) };\n case 'session_info_changed': {\n const name = text(frame.name);\n return { snapshot: commit(name ? { name } : {}) };\n }\n case 'queue_update': {\n const steering = Array.isArray(frame.steering) ? frame.steering : [];\n const followUp = Array.isArray(frame.followUp) ? frame.followUp : [];\n const queuedSteer: UserTranscriptItem[] = [...steering, ...followUp].map((entry, index) => ({\n id: `steer-${snapshot.revision}-${index}`,\n role: 'user',\n content: [{ type: 'text', text: text(entry) }],\n timestamp: now(),\n }));\n return { snapshot: commit({ queuedSteer, queuedSteerCount: queuedSteer.length }) };\n }\n case 'message_start': {\n const message = isRecord(frame.message) ? frame.message : {};\n // These frames carry whichever message the agent started, and that\n // includes the one the user just sent. Treating every message as the\n // assistant's is what puts a prompt in the agent's voice.\n if (message.role === 'user') {\n const item = userFrom(message, `user-${snapshot.revision}`);\n if (!item) return {};\n const committed = appendUnique(item);\n return committed ? { snapshot: committed } : {};\n }\n if (message.role !== 'assistant') return {};\n const item = assistantFrom(message, text(message.id) || undefined);\n const id = item.id;\n const previous =\n streaming.get(activeAssistantId ?? '') ??\n lastCompletedAssistant ??\n snapshot.transcript.findLast((entry) => entry.role === 'assistant');\n const timestamp = finiteNumber(message.timestamp);\n if (\n previous?.role === 'assistant' &&\n ((timestamp === undefined && previous.id === id) ||\n (timestamp !== undefined &&\n (previous.timestamp > timestamp ||\n (previous.timestamp === timestamp &&\n (!message.model || previous.model.id === 'unknown' || previous.model.id === item.model.id)))))\n )\n return {};\n streaming.set(id, item);\n activeAssistantId = id;\n return { progress: { type: 'item_started', item } };\n }\n case 'message_update': {\n const event = isRecord(frame.assistantMessageEvent) ? frame.assistantMessageEvent : undefined;\n const message = isRecord(frame.message)\n ? frame.message\n : isRecord(event?.partial)\n ? event.partial\n : undefined;\n if (message?.role !== undefined && message.role !== 'assistant') return {};\n const incoming = message\n ? assistantFrom(message, text(message.id, activeAssistantId) || undefined)\n : undefined;\n const id = incoming?.id ?? activeAssistantId ?? '';\n const existing = streaming.get(id);\n if (\n !existing &&\n (message?.role !== 'assistant' ||\n !Array.isArray(message.content) ||\n (message.content.length === 0 && event?.type !== 'start'))\n )\n return {};\n const completed = lastCompletedAssistant ?? snapshot.transcript.findLast((item) => item.role === 'assistant');\n const timestamp = finiteNumber(message?.timestamp);\n if (\n !existing &&\n completed?.role === 'assistant' &&\n (completed.id === id ||\n (timestamp !== undefined &&\n (completed.timestamp > timestamp ||\n (completed.timestamp === timestamp &&\n (!message?.model || completed.model.id === incoming?.model.id)))))\n )\n return {};\n const item: AssistantTranscriptItem = {\n ...(existing ?? incoming!),\n ...(timestamp === undefined ? {} : { timestamp }),\n ...(message?.model === undefined\n ? {}\n : {\n model:\n typeof message.model === 'string' && message.provider === undefined && existing\n ? { provider: existing.model.provider, id: message.model }\n : incoming!.model,\n }),\n content: Array.isArray(message?.content)\n ? assistantContent(message.content)\n : applyAssistantEvent(existing?.content ?? incoming!.content, event),\n };\n streaming.set(id, item);\n activeAssistantId = id;\n return { progress: { type: existing ? 'item_updated' : 'item_started', item } };\n }\n case 'message_end': {\n const ended = isRecord(frame.message) ? frame.message : {};\n if (ended.role === 'user') {\n const item = userFrom(ended, `user-${snapshot.revision}`);\n if (!item) return {};\n const committed = appendUnique(item);\n return committed ? { snapshot: committed } : {};\n }\n // A tool result closes here too, but the transcript builds tool items\n // from the execution frames, which carry the call as well as its result.\n if (ended.role !== 'assistant') return {};\n const timestamp = finiteNumber(ended.timestamp);\n const completed =\n lastCompletedAssistant?.timestamp === timestamp\n ? lastCompletedAssistant\n : snapshot.transcript.findLast((item) => item.role === 'assistant' && item.timestamp === timestamp);\n const id = text(\n ended.id,\n activeAssistantId ?? completed?.id ?? `assistant-${finiteNumber(ended.timestamp) ?? snapshot.revision}`,\n );\n if (\n !streaming.has(id) &&\n (lastCompletedAssistant?.id === id || snapshot.transcript.some((item) => item.id === id))\n )\n return {};\n const started = streaming.get(id) ?? assistantFrom(frame.message, id);\n streaming.delete(started.id);\n if (activeAssistantId === started.id) activeAssistantId = undefined;\n const message = ended;\n const stopReason = text(message.stopReason);\n const errorMessage = text(message.errorMessage);\n const base = {\n ...started,\n content: assistantContent(message.content ?? started.content),\n };\n const item: AssistantTranscriptItem =\n stopReason === 'aborted'\n ? { ...base, status: 'aborted', stopReason: 'aborted', ...(errorMessage ? { errorMessage } : {}) }\n : stopReason === 'error'\n ? { ...base, status: 'error', stopReason: 'error', ...(errorMessage ? { errorMessage } : {}) }\n : {\n ...base,\n status: 'complete',\n stopReason: STOP_REASONS.has(stopReason) ? (stopReason as 'stop' | 'length' | 'toolUse') : 'stop',\n };\n rememberCompletion(item);\n return {\n snapshot: append(item),\n progress: { type: 'item_finished', item },\n aggregate: assistantAggregate(message),\n };\n }\n case 'tool_execution_start': {\n const toolCallId = text(frame.toolCallId);\n const toolName = text(frame.toolName);\n if (!toolCallId || !toolName) return {};\n const item: ToolTranscriptItem = {\n id: toolCallId,\n role: 'tool',\n toolCallId,\n toolName,\n input: normalizeJson(frame.args),\n content: [],\n status: 'running',\n isError: false,\n timestamp: now(),\n };\n running.set(toolCallId, item);\n return { progress: { type: 'item_started', item } };\n }\n case 'tool_execution_update': {\n const existing = running.get(text(frame.toolCallId));\n if (!existing) return {};\n const result = isRecord(frame.partialResult) ? frame.partialResult : {};\n const item: ToolTranscriptItem = {\n ...existing,\n ...(result.content === undefined && result.output === undefined\n ? {}\n : { content: plainContent(result.content ?? result.output) }),\n details: normalizeJson(result.details ?? frame.partialResult),\n };\n running.set(existing.toolCallId, item);\n return { progress: { type: 'item_updated', item } };\n }\n case 'tool_execution_end': {\n const toolCallId = text(frame.toolCallId);\n const existing = running.get(toolCallId);\n if (!existing) return {};\n running.delete(toolCallId);\n const result = isRecord(frame.result) ? frame.result : {};\n const isError = frame.isError === true;\n const item: ToolTranscriptItem = {\n ...existing,\n content: plainContent(result.content ?? result.output),\n details: normalizeJson(result.details),\n ...(isError ? { status: 'error', isError: true } : { status: 'complete', isError: false }),\n };\n return { snapshot: append(item), progress: { type: 'item_finished', item } };\n }\n case 'entry_appended': {\n const entry = isRecord(frame.entry) ? frame.entry : undefined;\n // Only a journalled user message has a protocol shape. Everything\n // else Po journals travels on its own channel, where it keeps\n // the vocabulary the schema has no room for.\n if (!entry || entry.type !== 'message') return {};\n const message = isRecord(entry.message) ? entry.message : undefined;\n if (!message || message.role !== 'user') return {};\n // Keyed the same way the started message was, so whichever arrival\n // came first is the one the transcript keeps.\n const item = userFrom(\n message,\n text(entry.id, `user-${snapshot.revision}`),\n typeof entry.timestamp === 'number' ? entry.timestamp : undefined,\n );\n if (!item) return {};\n const committed = appendUnique(item);\n return committed ? { snapshot: committed } : {};\n }\n case 'response': {\n if (frame.command === 'get_state') return applyState(frame.data);\n if (frame.command === 'get_entries' && frame.success === true && isRecord(frame.data)) {\n const branch = activeBranch(frame.data);\n const rebuilt = transcriptFromBranch(branch, snapshot.model, now);\n if (!rebuilt) return {};\n rememberCompletion(rebuilt.findLast((item) => item.role === 'assistant'));\n return { snapshot: commit({ transcript: rebuilt }) };\n }\n if (frame.command !== 'navigate_tree' || frame.success !== true || !isRecord(frame.data)) return {};\n if (frame.data.cancelled === true) return {};\n const rebuilt = transcriptFromBranch(frame.data.entries, snapshot.model, now);\n if (!rebuilt) return {};\n streaming.clear();\n running.clear();\n activeAssistantId = undefined;\n rememberCompletion(rebuilt.findLast((item) => item.role === 'assistant'));\n return {\n snapshot: commit({ transcript: rebuilt, queuedSteer: [], queuedSteerCount: 0, phase: 'idle' }),\n };\n }\n default:\n return {};\n }\n },\n };\n\n function applyState(data: unknown): TranscriptReduction {\n if (!isRecord(data)) return {};\n const streamingNow = data.isStreaming === true;\n const compacting = data.isCompacting === true;\n const name = text(data.sessionName);\n return {\n snapshot: commit({\n model: modelRef(data.model),\n thinkingLevel: thinkingLevel(data.thinkingLevel, snapshot.thinkingLevel),\n phase: compacting ? 'compaction' : streamingNow ? 'turn' : 'idle',\n ...(name ? { name } : {}),\n }),\n };\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.cjs","names":[],"sources":["../../../../src/services/serverFacet/index.ts"],"sourcesContent":["/**\n * The server host a facet contributes to.\n *\n * DESIGN PATTERNS:\n * - One mount table. Every facet registers through this service, so the host\n * process has a single ordered record of what is mounted and under what.\n * - Base paths are first-come. A collision is reported and skipped, so one\n * misdeclared package cannot take a server down.\n * - Handlers are started lazily on first mount and closed on dispose, so a\n * facet that registers and immediately unwinds leaves nothing running.\n *\n * AVOID:\n * - Letting a throwing `start` escape. A package whose API cannot start is\n * reported and skipped; the remaining facets still mount.\n * - Reaching for node:*. The host owns the listener; this only owns the table.\n */\n\nimport type { DoomHubChannel, DoomHubChannelHost, DoomHubChannelSource } from '../../schemas/hubChannel';\nimport type { DoomApi, DoomApiContext, DoomApiHandler, DoomApiScope } from '../../schemas/packageApi';\nimport type { DoomPluginRegistry } from '../../schemas/pluginProtocol';\nimport type { DoomServerHostService, DoomServerRegistration } from '../../schemas/serverFacet';\n\ninterface MountedApi {\n readonly basePath: string;\n readonly handler: DoomApiHandler;\n}\n\ninterface MountedChannel {\n readonly channel: DoomHubChannel;\n readonly source?: DoomHubChannelSource;\n readonly registration?: DoomServerRegistration;\n}\n\nexport interface CreateDoomServerHostOptions {\n scope: DoomApiScope;\n context: DoomApiContext;\n /** Required when facets may register live channels. */\n channelHost?: DoomHubChannelHost;\n /** Supplies a channel-specific host when one host serves multiple channels. */\n channelHostFor?: (channel: DoomHubChannel) => DoomHubChannelHost;\n /** Delegates channel mounting to an owner of the canonical channel table. */\n mountChannel?: (channel: DoomHubChannel) => DoomServerRegistration;\n /** Shared exact-scope dispatch table, owned by the server composition. */\n pluginRegistry?: DoomPluginRegistry;\n /** Called when an API mount table entry appears or disappears. */\n onChange?: (mounted: readonly string[]) => void;\n /** Called when a channel mount table entry appears or disappears. */\n onChannelsChange?: (mounted: readonly string[]) => void;\n}\n\n/** The mount table a server host exposes to its facets, plus the router's read side. */\nexport interface DoomServerHost extends DoomServerHostService {\n /** The handler owning a base path, for the router that dispatches to it. */\n handlerFor(basePath: string): DoomApiHandler | undefined;\n /** Close every mounted handler and empty the table. */\n dispose(): void;\n}\n\nexport function createDoomServerHost(options: CreateDoomServerHostOptions): DoomServerHost {\n const { scope, context } = options;\n const notice = (message: string): void => context.onNotice(message);\n const mounts: MountedApi[] = [];\n const channels: MountedChannel[] = [];\n const methods = new Set<() => void>();\n let disposed = false;\n\n const changed = (): void => options.onChange?.(mounts.map((mount) => mount.basePath));\n const channelsChanged = (): void => options.onChannelsChange?.(channels.map((mount) => mount.channel.frameType));\n\n const noop: DoomServerRegistration = { mounted: false, dispose: () => undefined };\n\n const registerApi = (api: DoomApi): DoomServerRegistration => {\n if (disposed) {\n notice(`package API '${api.basePath}' is skipped: the server host is already disposed.`);\n return noop;\n }\n const holder = mounts.find((mount) => mount.basePath === api.basePath);\n if (holder !== undefined) {\n notice(`package API '${api.basePath}' is skipped: another facet already claims it.`);\n return noop;\n }\n let handler: DoomApiHandler;\n try {\n handler = api.start(context);\n } catch (error) {\n notice(`package API '${api.basePath}' did not start (${String(error)}); it is skipped.`);\n return noop;\n }\n const mount: MountedApi = { basePath: api.basePath, handler };\n mounts.push(mount);\n changed();\n let released = false;\n return {\n mounted: true,\n dispose: () => {\n if (released) return;\n released = true;\n const index = mounts.indexOf(mount);\n if (index >= 0) mounts.splice(index, 1);\n try {\n handler.close();\n } catch (error) {\n notice(`package API '${mount.basePath}' did not close cleanly (${String(error)}).`);\n }\n changed();\n },\n };\n };\n\n const registerChannel = (channel: DoomHubChannel): DoomServerRegistration => {\n if (disposed) {\n notice(`hub channel '${channel.frameType}' is skipped: the server host is already disposed.`);\n return noop;\n }\n if (options.mountChannel !== undefined) {\n let registration: DoomServerRegistration;\n try {\n registration = options.mountChannel(channel);\n } catch (error) {\n notice(`hub channel '${channel.frameType}' did not mount (${String(error)}); it is skipped.`);\n return noop;\n }\n if (registration.mounted !== true) return registration;\n const mount: MountedChannel = { channel, registration };\n channels.push(mount);\n channelsChanged();\n let released = false;\n return {\n mounted: true,\n dispose: () => {\n if (released) return;\n released = true;\n const index = channels.indexOf(mount);\n if (index >= 0) channels.splice(index, 1);\n try {\n registration.dispose();\n } catch (error) {\n notice(`hub channel '${channel.frameType}' did not close cleanly (${String(error)}).`);\n }\n channelsChanged();\n },\n };\n }\n const channelHost = options.channelHostFor?.(channel) ?? options.channelHost;\n if (!channelHost) {\n notice(`hub channel '${channel.frameType}' is skipped: this server host has no channel capability.`);\n return noop;\n }\n if (channels.some((mount) => mount.channel.frameType === channel.frameType)) {\n notice(`hub channel '${channel.frameType}' is skipped: another facet already claims it.`);\n return noop;\n }\n let source: DoomHubChannelSource;\n try {\n source = channel.start(channelHost);\n } catch (error) {\n notice(`hub channel '${channel.frameType}' did not start (${String(error)}); it is skipped.`);\n return noop;\n }\n const mount: MountedChannel = { channel, source };\n channels.push(mount);\n channelsChanged();\n let released = false;\n return {\n mounted: true,\n dispose: () => {\n if (released) return;\n released = true;\n const index = channels.indexOf(mount);\n if (index >= 0) channels.splice(index, 1);\n try {\n source.close();\n } catch (error) {\n notice(`hub channel '${channel.frameType}' did not close cleanly (${String(error)}).`);\n }\n channelsChanged();\n },\n };\n };\n\n const registerMethod: DoomServerHostService['registerMethod'] = (definition, handler) => {\n if (disposed || !options.pluginRegistry) {\n notice(\n `plugin method '${definition.service}.${definition.method}' is skipped: this host has no plugin dispatcher.`,\n );\n return noop;\n }\n const mount =\n scope === 'global'\n ? { scope: 'global' as const }\n : scope === 'workspace' && context.workspaceId\n ? { scope: 'workspace' as const, workspaceId: context.workspaceId }\n : scope === 'session' && context.sessionId\n ? { scope: 'session' as const, sessionId: context.sessionId }\n : undefined;\n if (!mount) {\n notice(`plugin method '${definition.service}.${definition.method}' is skipped: this host has no mount identity.`);\n return noop;\n }\n try {\n const release = options.pluginRegistry.register(mount, definition, handler);\n let released = false;\n const dispose = () => {\n if (released) return;\n released = true;\n methods.delete(dispose);\n release();\n };\n methods.add(dispose);\n return { mounted: true, dispose };\n } catch (error) {\n notice(`plugin method '${definition.service}.${definition.method}' did not mount (${String(error)}).`);\n return noop;\n }\n };\n\n return {\n scope,\n context,\n registerApi,\n registerChannel,\n registerMethod,\n mounted: () => mounts.map((mount) => mount.basePath),\n mountedChannels: () => channels.map((mount) => mount.channel.frameType),\n handlerFor: (basePath) => mounts.find((mount) => mount.basePath === basePath)?.handler,\n dispose: () => {\n if (disposed) return;\n disposed = true;\n for (const release of [...methods].reverse()) release();\n for (const mount of channels.splice(0).reverse()) {\n try {\n if (mount.registration !== undefined) mount.registration.dispose();\n else mount.source?.close();\n } catch (error) {\n notice(`hub channel '${mount.channel.frameType}' did not close cleanly (${String(error)}).`);\n }\n }\n for (const mount of mounts.splice(0).reverse()) {\n try {\n mount.handler.close();\n } catch (error) {\n notice(`package API '${mount.basePath}' did not close cleanly (${String(error)}).`);\n }\n }\n channelsChanged();\n changed();\n },\n };\n}\n"],"mappings":"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"}
@@ -1,31 +0,0 @@
1
- import { DoomHubChannel, DoomHubChannelHost } from "../../schemas/hubChannel.mjs";
2
- import { DoomApiContext, DoomApiHandler, DoomApiScope } from "../../schemas/packageApi.mjs";
3
- import { DoomPluginRegistry } from "../../schemas/pluginProtocol.mjs";
4
- import { DoomServerHostService, DoomServerRegistration } from "../../schemas/serverFacet.mjs";
5
- //#region src/services/serverFacet/index.d.ts
6
- export interface CreateDoomServerHostOptions {
7
- scope: DoomApiScope;
8
- context: DoomApiContext;
9
- /** Required when facets may register live channels. */
10
- channelHost?: DoomHubChannelHost;
11
- /** Supplies a channel-specific host when one host serves multiple channels. */
12
- channelHostFor?: (channel: DoomHubChannel) => DoomHubChannelHost;
13
- /** Delegates channel mounting to an owner of the canonical channel table. */
14
- mountChannel?: (channel: DoomHubChannel) => DoomServerRegistration;
15
- /** Shared exact-scope dispatch table, owned by the server composition. */
16
- pluginRegistry?: DoomPluginRegistry;
17
- /** Called when an API mount table entry appears or disappears. */
18
- onChange?: (mounted: readonly string[]) => void;
19
- /** Called when a channel mount table entry appears or disappears. */
20
- onChannelsChange?: (mounted: readonly string[]) => void;
21
- }
22
- /** The mount table a server host exposes to its facets, plus the router's read side. */
23
- export interface DoomServerHost extends DoomServerHostService {
24
- /** The handler owning a base path, for the router that dispatches to it. */
25
- handlerFor(basePath: string): DoomApiHandler | undefined;
26
- /** Close every mounted handler and empty the table. */
27
- dispose(): void;
28
- }
29
- export declare function createDoomServerHost(options: CreateDoomServerHostOptions): DoomServerHost;
30
- //#endregion
31
- //# sourceMappingURL=index.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/services/serverFacet/index.ts"],"mappings":";;;;;iBAiCiB;EACf,OAAO;EACP,SAAS;;EAET,cAAc;;EAEd,kBAAkB,SAAS,mBAAmB;;EAE9C,gBAAgB,SAAS,mBAAmB;;EAE5C,iBAAiB;;EAEjB,YAAY;;EAEZ,oBAAoB;;;iBAIL,uBAAuB;;EAEtC,WAAW,mBAAmB;;EAE9B;;wBAGc,qBAAqB,SAAS,8BAA8B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/serverFacet/index.ts"],"sourcesContent":["/**\n * The server host a facet contributes to.\n *\n * DESIGN PATTERNS:\n * - One mount table. Every facet registers through this service, so the host\n * process has a single ordered record of what is mounted and under what.\n * - Base paths are first-come. A collision is reported and skipped, so one\n * misdeclared package cannot take a server down.\n * - Handlers are started lazily on first mount and closed on dispose, so a\n * facet that registers and immediately unwinds leaves nothing running.\n *\n * AVOID:\n * - Letting a throwing `start` escape. A package whose API cannot start is\n * reported and skipped; the remaining facets still mount.\n * - Reaching for node:*. The host owns the listener; this only owns the table.\n */\n\nimport type { DoomHubChannel, DoomHubChannelHost, DoomHubChannelSource } from '../../schemas/hubChannel';\nimport type { DoomApi, DoomApiContext, DoomApiHandler, DoomApiScope } from '../../schemas/packageApi';\nimport type { DoomPluginRegistry } from '../../schemas/pluginProtocol';\nimport type { DoomServerHostService, DoomServerRegistration } from '../../schemas/serverFacet';\n\ninterface MountedApi {\n readonly basePath: string;\n readonly handler: DoomApiHandler;\n}\n\ninterface MountedChannel {\n readonly channel: DoomHubChannel;\n readonly source?: DoomHubChannelSource;\n readonly registration?: DoomServerRegistration;\n}\n\nexport interface CreateDoomServerHostOptions {\n scope: DoomApiScope;\n context: DoomApiContext;\n /** Required when facets may register live channels. */\n channelHost?: DoomHubChannelHost;\n /** Supplies a channel-specific host when one host serves multiple channels. */\n channelHostFor?: (channel: DoomHubChannel) => DoomHubChannelHost;\n /** Delegates channel mounting to an owner of the canonical channel table. */\n mountChannel?: (channel: DoomHubChannel) => DoomServerRegistration;\n /** Shared exact-scope dispatch table, owned by the server composition. */\n pluginRegistry?: DoomPluginRegistry;\n /** Called when an API mount table entry appears or disappears. */\n onChange?: (mounted: readonly string[]) => void;\n /** Called when a channel mount table entry appears or disappears. */\n onChannelsChange?: (mounted: readonly string[]) => void;\n}\n\n/** The mount table a server host exposes to its facets, plus the router's read side. */\nexport interface DoomServerHost extends DoomServerHostService {\n /** The handler owning a base path, for the router that dispatches to it. */\n handlerFor(basePath: string): DoomApiHandler | undefined;\n /** Close every mounted handler and empty the table. */\n dispose(): void;\n}\n\nexport function createDoomServerHost(options: CreateDoomServerHostOptions): DoomServerHost {\n const { scope, context } = options;\n const notice = (message: string): void => context.onNotice(message);\n const mounts: MountedApi[] = [];\n const channels: MountedChannel[] = [];\n const methods = new Set<() => void>();\n let disposed = false;\n\n const changed = (): void => options.onChange?.(mounts.map((mount) => mount.basePath));\n const channelsChanged = (): void => options.onChannelsChange?.(channels.map((mount) => mount.channel.frameType));\n\n const noop: DoomServerRegistration = { mounted: false, dispose: () => undefined };\n\n const registerApi = (api: DoomApi): DoomServerRegistration => {\n if (disposed) {\n notice(`package API '${api.basePath}' is skipped: the server host is already disposed.`);\n return noop;\n }\n const holder = mounts.find((mount) => mount.basePath === api.basePath);\n if (holder !== undefined) {\n notice(`package API '${api.basePath}' is skipped: another facet already claims it.`);\n return noop;\n }\n let handler: DoomApiHandler;\n try {\n handler = api.start(context);\n } catch (error) {\n notice(`package API '${api.basePath}' did not start (${String(error)}); it is skipped.`);\n return noop;\n }\n const mount: MountedApi = { basePath: api.basePath, handler };\n mounts.push(mount);\n changed();\n let released = false;\n return {\n mounted: true,\n dispose: () => {\n if (released) return;\n released = true;\n const index = mounts.indexOf(mount);\n if (index >= 0) mounts.splice(index, 1);\n try {\n handler.close();\n } catch (error) {\n notice(`package API '${mount.basePath}' did not close cleanly (${String(error)}).`);\n }\n changed();\n },\n };\n };\n\n const registerChannel = (channel: DoomHubChannel): DoomServerRegistration => {\n if (disposed) {\n notice(`hub channel '${channel.frameType}' is skipped: the server host is already disposed.`);\n return noop;\n }\n if (options.mountChannel !== undefined) {\n let registration: DoomServerRegistration;\n try {\n registration = options.mountChannel(channel);\n } catch (error) {\n notice(`hub channel '${channel.frameType}' did not mount (${String(error)}); it is skipped.`);\n return noop;\n }\n if (registration.mounted !== true) return registration;\n const mount: MountedChannel = { channel, registration };\n channels.push(mount);\n channelsChanged();\n let released = false;\n return {\n mounted: true,\n dispose: () => {\n if (released) return;\n released = true;\n const index = channels.indexOf(mount);\n if (index >= 0) channels.splice(index, 1);\n try {\n registration.dispose();\n } catch (error) {\n notice(`hub channel '${channel.frameType}' did not close cleanly (${String(error)}).`);\n }\n channelsChanged();\n },\n };\n }\n const channelHost = options.channelHostFor?.(channel) ?? options.channelHost;\n if (!channelHost) {\n notice(`hub channel '${channel.frameType}' is skipped: this server host has no channel capability.`);\n return noop;\n }\n if (channels.some((mount) => mount.channel.frameType === channel.frameType)) {\n notice(`hub channel '${channel.frameType}' is skipped: another facet already claims it.`);\n return noop;\n }\n let source: DoomHubChannelSource;\n try {\n source = channel.start(channelHost);\n } catch (error) {\n notice(`hub channel '${channel.frameType}' did not start (${String(error)}); it is skipped.`);\n return noop;\n }\n const mount: MountedChannel = { channel, source };\n channels.push(mount);\n channelsChanged();\n let released = false;\n return {\n mounted: true,\n dispose: () => {\n if (released) return;\n released = true;\n const index = channels.indexOf(mount);\n if (index >= 0) channels.splice(index, 1);\n try {\n source.close();\n } catch (error) {\n notice(`hub channel '${channel.frameType}' did not close cleanly (${String(error)}).`);\n }\n channelsChanged();\n },\n };\n };\n\n const registerMethod: DoomServerHostService['registerMethod'] = (definition, handler) => {\n if (disposed || !options.pluginRegistry) {\n notice(\n `plugin method '${definition.service}.${definition.method}' is skipped: this host has no plugin dispatcher.`,\n );\n return noop;\n }\n const mount =\n scope === 'global'\n ? { scope: 'global' as const }\n : scope === 'workspace' && context.workspaceId\n ? { scope: 'workspace' as const, workspaceId: context.workspaceId }\n : scope === 'session' && context.sessionId\n ? { scope: 'session' as const, sessionId: context.sessionId }\n : undefined;\n if (!mount) {\n notice(`plugin method '${definition.service}.${definition.method}' is skipped: this host has no mount identity.`);\n return noop;\n }\n try {\n const release = options.pluginRegistry.register(mount, definition, handler);\n let released = false;\n const dispose = () => {\n if (released) return;\n released = true;\n methods.delete(dispose);\n release();\n };\n methods.add(dispose);\n return { mounted: true, dispose };\n } catch (error) {\n notice(`plugin method '${definition.service}.${definition.method}' did not mount (${String(error)}).`);\n return noop;\n }\n };\n\n return {\n scope,\n context,\n registerApi,\n registerChannel,\n registerMethod,\n mounted: () => mounts.map((mount) => mount.basePath),\n mountedChannels: () => channels.map((mount) => mount.channel.frameType),\n handlerFor: (basePath) => mounts.find((mount) => mount.basePath === basePath)?.handler,\n dispose: () => {\n if (disposed) return;\n disposed = true;\n for (const release of [...methods].reverse()) release();\n for (const mount of channels.splice(0).reverse()) {\n try {\n if (mount.registration !== undefined) mount.registration.dispose();\n else mount.source?.close();\n } catch (error) {\n notice(`hub channel '${mount.channel.frameType}' did not close cleanly (${String(error)}).`);\n }\n }\n for (const mount of mounts.splice(0).reverse()) {\n try {\n mount.handler.close();\n } catch (error) {\n notice(`package API '${mount.basePath}' did not close cleanly (${String(error)}).`);\n }\n }\n channelsChanged();\n changed();\n },\n };\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/services/workspaceRegistry/index.ts"],"mappings":";iBAkDiB;EACf;EACA;;EAEA;;iBAGe;EACf,iBAAiB;EACjB,IAAI,QAAQ;EACZ,OAAO;;iBAGQ;EACf;EACA,YAAY;;;wBAaE,wBAAwB,SAAS,2BAA2B;;wBA6E5D,oBAAoB;;;;;wBAgBpB,qBAAqB,sBAAsB;iBAO1C;WACN;;WAEA;;WAEA;;;;;;;;wBASK,kBAAkB;WACvB,kBAAkB;WAClB;WACA;WACA,UAAU;WACV;IACP"}
@@ -1,28 +0,0 @@
1
- const require_runtime = require("../../../../_virtual/_rolldown/runtime.cjs");
2
- const require_piSessionRuntime = require("../../../pi/piSessionRuntime.cjs");
3
- let node_path = require("node:path");
4
- node_path = require_runtime.__toESM(node_path, 1);
5
- //#region src/systems/child/adapters/nativeChildRuntimes.ts
6
- const runtimes = /* @__PURE__ */ new Map();
7
- function registerNativeChild(file, runtime) {
8
- const key = node_path.default.resolve(file);
9
- const service = require_piSessionRuntime.createAgentSessionRuntime({
10
- runtime,
11
- sessionId: runtime.sessionId,
12
- sessionName: runtime.sessionId,
13
- cwd: ""
14
- });
15
- runtimes.set(key, service);
16
- return () => {
17
- if (runtimes.get(key) === service) runtimes.delete(key);
18
- service.dispose();
19
- };
20
- }
21
- function nativeChildRuntime(file) {
22
- return runtimes.get(node_path.default.resolve(file));
23
- }
24
- //#endregion
25
- exports.nativeChildRuntime = nativeChildRuntime;
26
- exports.registerNativeChild = registerNativeChild;
27
-
28
- //# sourceMappingURL=nativeChildRuntimes.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nativeChildRuntimes.cjs","names":["path","createAgentSessionRuntime"],"sources":["../../../../../src/systems/child/adapters/nativeChildRuntimes.ts"],"sourcesContent":["import path from 'node:path';\n\nimport { createAgentSessionRuntime, type AgentSessionRuntime } from '../../../pi/piSessionRuntime';\nimport type { DirectHarnessRuntime } from '../../../types/server/directHarnessRuntime';\n\n// Discovery is process-local. Callers must first resolve the child through its owning hub session.\nconst runtimes = new Map<string, AgentSessionRuntime>();\n\nexport function registerNativeChild(file: string, runtime: DirectHarnessRuntime): () => void {\n const key = path.resolve(file);\n const service = createAgentSessionRuntime({\n runtime,\n sessionId: runtime.sessionId,\n sessionName: runtime.sessionId,\n cwd: '',\n });\n runtimes.set(key, service);\n return () => {\n if (runtimes.get(key) === service) runtimes.delete(key);\n void service.dispose();\n };\n}\n\nexport function nativeChildRuntime(file: string): AgentSessionRuntime | undefined {\n return runtimes.get(path.resolve(file));\n}\n"],"mappings":";;;;;AAMA,MAAM,2BAAW,IAAI,IAAiC;AAEtD,SAAgB,oBAAoB,MAAc,SAA2C;CAC3F,MAAM,MAAMA,UAAAA,QAAK,QAAQ,IAAI;CAC7B,MAAM,UAAUC,yBAAAA,0BAA0B;EACxC;EACA,WAAW,QAAQ;EACnB,aAAa,QAAQ;EACrB,KAAK;CACP,CAAC;CACD,SAAS,IAAI,KAAK,OAAO;CACzB,aAAa;EACX,IAAI,SAAS,IAAI,GAAG,MAAM,SAAS,SAAS,OAAO,GAAG;EACtD,QAAa,QAAQ;CACvB;AACF;AAEA,SAAgB,mBAAmB,MAA+C;CAChF,OAAO,SAAS,IAAID,UAAAA,QAAK,QAAQ,IAAI,CAAC;AACxC"}
@@ -1,25 +0,0 @@
1
- import { createAgentSessionRuntime } from "../../../pi/piSessionRuntime.mjs";
2
- import path from "node:path";
3
- //#region src/systems/child/adapters/nativeChildRuntimes.ts
4
- const runtimes = /* @__PURE__ */ new Map();
5
- function registerNativeChild(file, runtime) {
6
- const key = path.resolve(file);
7
- const service = createAgentSessionRuntime({
8
- runtime,
9
- sessionId: runtime.sessionId,
10
- sessionName: runtime.sessionId,
11
- cwd: ""
12
- });
13
- runtimes.set(key, service);
14
- return () => {
15
- if (runtimes.get(key) === service) runtimes.delete(key);
16
- service.dispose();
17
- };
18
- }
19
- function nativeChildRuntime(file) {
20
- return runtimes.get(path.resolve(file));
21
- }
22
- //#endregion
23
- export { nativeChildRuntime, registerNativeChild };
24
-
25
- //# sourceMappingURL=nativeChildRuntimes.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nativeChildRuntimes.mjs","names":[],"sources":["../../../../../src/systems/child/adapters/nativeChildRuntimes.ts"],"sourcesContent":["import path from 'node:path';\n\nimport { createAgentSessionRuntime, type AgentSessionRuntime } from '../../../pi/piSessionRuntime';\nimport type { DirectHarnessRuntime } from '../../../types/server/directHarnessRuntime';\n\n// Discovery is process-local. Callers must first resolve the child through its owning hub session.\nconst runtimes = new Map<string, AgentSessionRuntime>();\n\nexport function registerNativeChild(file: string, runtime: DirectHarnessRuntime): () => void {\n const key = path.resolve(file);\n const service = createAgentSessionRuntime({\n runtime,\n sessionId: runtime.sessionId,\n sessionName: runtime.sessionId,\n cwd: '',\n });\n runtimes.set(key, service);\n return () => {\n if (runtimes.get(key) === service) runtimes.delete(key);\n void service.dispose();\n };\n}\n\nexport function nativeChildRuntime(file: string): AgentSessionRuntime | undefined {\n return runtimes.get(path.resolve(file));\n}\n"],"mappings":";;;AAMA,MAAM,2BAAW,IAAI,IAAiC;AAEtD,SAAgB,oBAAoB,MAAc,SAA2C;CAC3F,MAAM,MAAM,KAAK,QAAQ,IAAI;CAC7B,MAAM,UAAU,0BAA0B;EACxC;EACA,WAAW,QAAQ;EACnB,aAAa,QAAQ;EACrB,KAAK;CACP,CAAC;CACD,SAAS,IAAI,KAAK,OAAO;CACzB,aAAa;EACX,IAAI,SAAS,IAAI,GAAG,MAAM,SAAS,SAAS,OAAO,GAAG;EACtD,QAAa,QAAQ;CACvB;AACF;AAEA,SAAgB,mBAAmB,MAA+C;CAChF,OAAO,SAAS,IAAI,KAAK,QAAQ,IAAI,CAAC;AACxC"}
@@ -1,324 +0,0 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_runtime = require("./_virtual/_rolldown/runtime.cjs");
3
- const require_index = require("./src/systems/child/services/childSession/index.cjs");
4
- const require_historyOwnership = require("./historyOwnership.cjs");
5
- const require_sqliteSessionStorage = require("./sqliteSessionStorage.cjs");
6
- const require_index$1 = require("./src/services/durableNavigation/index.cjs");
7
- const require_index$2 = require("./src/services/piSessionEntries/index.cjs");
8
- const require_directHarnessRuntime = require("./src/server/directHarnessRuntime.cjs");
9
- const require_nativeChildRuntimes = require("./src/systems/child/adapters/nativeChildRuntimes.cjs");
10
- const require_nativeChildTranscriptReader = require("./src/server/nativeChildTranscriptReader.cjs");
11
- const require_headlessChildSessionService = require("./src/systems/child/adapters/headlessChildSessionService.cjs");
12
- let node_crypto = require("node:crypto");
13
- let node_fs = require("node:fs");
14
- node_fs = require_runtime.__toESM(node_fs, 1);
15
- let node_path = require("node:path");
16
- node_path = require_runtime.__toESM(node_path, 1);
17
- let _earendil_works_pi_coding_agent = require("@earendil-works/pi-coding-agent");
18
- let _earendil_works_pi_durable = require("@earendil-works/pi-durable");
19
- let _earendil_works_chord_context = require("@earendil-works/chord/context");
20
- //#region src/systems/child/adapters/terminalPiChildSessionService.ts
21
- function childRuntime(runtime, intercom, release) {
22
- const file = runtime.sessionFile;
23
- return {
24
- sessionId: runtime.sessionId,
25
- ...typeof file === "string" ? { sessionFile: file } : {},
26
- ...typeof file === "string" ? { readTranscriptPage: (request, signal) => require_nativeChildTranscriptReader.readNativeChildTranscript(file, request, signal) } : {},
27
- prompt: (task) => require_directHarnessRuntime.promptForAssistantText(runtime, task),
28
- async steer(message) {
29
- await runtime.submitInternalMessage(message, "steer");
30
- },
31
- async followUp(message) {
32
- await runtime.submitInternalMessage(message, "followUp");
33
- },
34
- onUsage(listener) {
35
- return runtime.onEvent((event) => {
36
- if (event.type !== "usage") return;
37
- listener({
38
- rowId: event.row.id,
39
- cost: event.row.usage.cost.total
40
- });
41
- });
42
- },
43
- abort: () => runtime.abort(),
44
- dispose: async () => {
45
- try {
46
- await release?.();
47
- } finally {
48
- try {
49
- await runtime.dispose();
50
- } finally {
51
- intercom?.dispose?.();
52
- }
53
- }
54
- }
55
- };
56
- }
57
- async function installIntercom(runtime, intercom, tools) {
58
- if (!intercom) return;
59
- const tool = intercom.bindRuntime(childRuntime(runtime));
60
- const adapted = {
61
- ...tool,
62
- parameters: tool.parameters,
63
- execute: async (operationId, params, onUpdate, _toolContext, _invocation, context) => tool.execute(operationId, params, context.abortSignal ?? new AbortController().signal, onUpdate)
64
- };
65
- tools.push(adapted);
66
- await runtime.replaceTools(tools);
67
- }
68
- function asRecord(value) {
69
- return typeof value === "object" && value !== null && !Array.isArray(value) ? value : void 0;
70
- }
71
- function requireString(value, field) {
72
- if (typeof value !== "string" || value.length === 0) throw new Error(`Invalid terminal Pi snapshot ${field}`);
73
- return value;
74
- }
75
- function parseSnapshot(snapshotJsonl) {
76
- if (!snapshotJsonl.endsWith("\n")) throw new Error("Terminal Pi snapshot is truncated.");
77
- const lines = snapshotJsonl.slice(0, -1).split("\n");
78
- let headerValue;
79
- try {
80
- headerValue = JSON.parse(lines[0] ?? "");
81
- } catch (error) {
82
- throw new Error("Malformed terminal Pi snapshot header.", { cause: error });
83
- }
84
- const header = asRecord(headerValue);
85
- if (header?.type !== "session" || header.version !== 3) throw new Error("Terminal Pi child source must be a v3 JSONL snapshot.");
86
- return {
87
- header,
88
- records: lines.slice(1).map((line, index) => {
89
- let value;
90
- try {
91
- value = JSON.parse(line);
92
- } catch (error) {
93
- throw new Error(`Malformed terminal Pi snapshot record at line ${index + 2}.`, { cause: error });
94
- }
95
- const record = asRecord(value);
96
- if (record === void 0) throw new Error(`Invalid terminal Pi snapshot record at line ${index + 2}`);
97
- requireString(record.id, `record ${index + 2} id`);
98
- if (record.parentId !== null && typeof record.parentId !== "string") throw new Error(`Invalid terminal Pi snapshot record ${index + 2} parentId`);
99
- return record;
100
- })
101
- };
102
- }
103
- /** Capture data from Pi memory, not its writable v3 path. The JSONL string is immutable after return. */
104
- function captureTerminalPiForkSource(manager, selectedLeafId = manager.getLeafId()) {
105
- const sourceSessionId = manager.getSessionId();
106
- const sourceLeafId = selectedLeafId;
107
- const header = manager.getHeader();
108
- if (!sourceSessionId.trim() || !sourceLeafId || header?.type !== "session" || header.version !== 3) return void 0;
109
- const branch = manager.getBranch(sourceLeafId);
110
- if (branch.at(-1)?.id !== sourceLeafId) return void 0;
111
- const snapshotJsonl = `${[header, ...branch].map((record) => JSON.stringify(record)).join("\n")}\n`;
112
- return Object.freeze({
113
- kind: "terminal-pi-fork",
114
- sourceSessionId,
115
- sourceLeafId,
116
- snapshotJsonl
117
- });
118
- }
119
- async function createChildJournal(request, source, options, ownership) {
120
- const parsed = parseSnapshot(source.snapshotJsonl);
121
- if (requireString(parsed.header.id, "header id") !== source.sourceSessionId) throw new Error("Terminal Pi snapshot session identity does not match its sourceSessionId.");
122
- if (parsed.records.at(-1)?.id !== source.sourceLeafId) throw new Error("Terminal Pi snapshot leaf does not match its sourceLeafId.");
123
- const records = (0, _earendil_works_pi_coding_agent.parseSessionEntries)(source.snapshotJsonl).filter((entry) => entry.type !== "session");
124
- if (records.length !== parsed.records.length) throw new Error("Terminal Pi snapshot contains invalid entries");
125
- const ids = /* @__PURE__ */ new Set();
126
- let parent = null;
127
- for (const record of records) {
128
- if (record.parentId !== parent || ids.has(record.id)) throw new Error("Terminal Pi snapshot is not a selected branch");
129
- ids.add(record.id);
130
- parent = record.id;
131
- }
132
- const destination = await require_sqliteSessionStorage.openSqliteSessionStorage({
133
- sessionsRoot: node_path.default.resolve(options.sessionsRoot ?? node_path.default.join((0, _earendil_works_pi_coding_agent.getAgentDir)(), "server", "sessions")),
134
- sessionId: (0, node_crypto.randomUUID)(),
135
- parentSessionId: request.parentSessionId || source.sourceSessionId,
136
- historyOwnership: ownership
137
- }, _earendil_works_chord_context.BACKGROUND_CONTEXT);
138
- try {
139
- await destination.session.commit(async (tx) => {
140
- const conversation = await tx.createConversation({ ownership: { kind: "ownerless" } });
141
- const mapped = /* @__PURE__ */ new Map();
142
- for (const [index, record] of records.entries()) {
143
- const tail = record.type === "compaction" ? records.slice(records.findIndex((entry) => entry.id === record.firstKeptEntryId), index).flatMap((entry) => (0, _earendil_works_pi_coding_agent.sessionEntryToContextMessages)(entry)) : [];
144
- const model = (0, _earendil_works_pi_coding_agent.convertToLlm)([...(0, _earendil_works_pi_coding_agent.sessionEntryToContextMessages)(record), ...tail]);
145
- const head = record.type === "compaction" ? mapped.get(record.firstKeptEntryId) : void 0;
146
- if (record.type === "compaction" && head === void 0) throw new Error("Terminal Pi snapshot compaction boundary is absent");
147
- const projected = record.type === "message" ? {
148
- type: "message",
149
- message: record.message,
150
- timestamp: Date.parse(record.timestamp)
151
- } : record.type === "compaction" ? {
152
- type: "compaction",
153
- summary: record.summary,
154
- tokensBefore: record.tokensBefore,
155
- retainedTail: tail,
156
- fromHook: record.fromHook ?? false
157
- } : record.type === "branch_summary" ? {
158
- type: "branch_summary",
159
- summary: record.summary,
160
- fromId: record.fromId,
161
- fromHook: record.fromHook ?? false
162
- } : {
163
- type: "custom",
164
- ...require_index$2.fromPiSessionEntry(record)
165
- };
166
- const draft = {
167
- kind: "po.entry",
168
- data: JSON.parse(JSON.stringify(projected)),
169
- ...model.length ? { model } : {},
170
- ...record.type === "compaction" ? { head: "self" } : {}
171
- };
172
- const entry = await tx.appendEntry(conversation.id, draft);
173
- mapped.set(record.id, entry.id);
174
- if (record.type === "model_change") (await tx.doc(_earendil_works_pi_durable.AgentDoc, conversation.id)).model = {
175
- provider: record.provider,
176
- modelId: record.modelId
177
- };
178
- if (record.type === "thinking_level_change") {
179
- if (![
180
- "off",
181
- "minimal",
182
- "low",
183
- "medium",
184
- "high",
185
- "xhigh",
186
- "max"
187
- ].includes(record.thinkingLevel)) throw new Error("Invalid terminal Pi thinking level");
188
- (await tx.doc(_earendil_works_pi_durable.AgentDoc, conversation.id)).thinkingLevel = record.thinkingLevel;
189
- }
190
- }
191
- (await tx.doc(require_index$1.DurableNavigationDoc)).activeConversationId = conversation.id;
192
- }, _earendil_works_chord_context.BACKGROUND_CONTEXT);
193
- return destination.sessionFile;
194
- } catch (error) {
195
- node_fs.default.rmSync(destination.sessionFile, { force: true });
196
- throw error;
197
- } finally {
198
- await destination.session.close(_earendil_works_chord_context.BACKGROUND_CONTEXT);
199
- await destination.repository.close(_earendil_works_chord_context.BACKGROUND_CONTEXT);
200
- await destination.historyLease.release();
201
- }
202
- }
203
- function createTerminalPiChildSessionService(options) {
204
- const runtimeFactory = options.runtimeFactory ?? require_directHarnessRuntime.createDirectHarnessRuntime;
205
- const ownership = options.historyOwnership ?? require_historyOwnership.createHistoryOwnership({ sourceFormat: "sqlite" });
206
- const headlessOptions = {
207
- parentSessionId: "",
208
- cwd: options.cwd,
209
- ...options.sessionsRoot === void 0 ? {} : { sessionsRoot: options.sessionsRoot },
210
- ...options.models === void 0 ? {} : { models: options.models },
211
- ...options.providers === void 0 ? {} : { providers: options.providers },
212
- ...options.defaultModel === void 0 ? {} : { defaultModel: options.defaultModel },
213
- ...options.parentFastMode === void 0 ? {} : { parentFastMode: options.parentFastMode },
214
- ...options.mcpTool === void 0 ? {} : { mcpTool: options.mcpTool },
215
- ...options.subscribeMcpTool === void 0 ? {} : { subscribeMcpTool: options.subscribeMcpTool },
216
- ...options.hooks === void 0 ? {} : { hooks: options.hooks },
217
- historyOwnership: ownership,
218
- ...options.now === void 0 ? {} : { now: options.now },
219
- runtimeFactory
220
- };
221
- const headless = require_headlessChildSessionService.createHeadlessChildSessionService(headlessOptions);
222
- const terminal = require_index.createDoomChildSessionService(async (request, signal) => {
223
- signal?.throwIfAborted();
224
- if (request.source.kind !== "terminal-pi-fork") throw new Error("Terminal Pi child sessions require terminal Pi fork sources.");
225
- const directRequestOptions = require_headlessChildSessionService.composeDirectHarnessRequestOptions(request, options.mcpTool);
226
- const fastMode = await options.parentFastMode?.();
227
- if (fastMode !== void 0 && typeof fastMode !== "boolean") throw new Error("Parent Fast mode must be a boolean.");
228
- const requestedModel = require_headlessChildSessionService.parseChildModelReference(request.model);
229
- const model = requestedModel?.model ?? options.defaultModel?.();
230
- const thinking = request.thinking ?? requestedModel?.thinking;
231
- const providers = require_headlessChildSessionService.resolveChildProviders(options.providers);
232
- const sessionPath = await createChildJournal(request, request.source, options, ownership);
233
- const runtimeOptions = {
234
- cwd: request.cwd || options.cwd,
235
- parentSessionId: request.parentSessionId,
236
- sessionPath,
237
- ...options.sessionsRoot === void 0 ? {} : { sessionsRoot: options.sessionsRoot },
238
- ...options.models === void 0 ? {} : { models: options.models },
239
- ...providers === void 0 ? {} : { providers },
240
- ...model === void 0 ? {} : { model },
241
- ...thinking === void 0 ? {} : { thinkingLevel: thinking },
242
- ...directRequestOptions,
243
- ...fastMode === void 0 ? {} : { initialFastMode: fastMode },
244
- historyOwnership: ownership
245
- };
246
- let runtime;
247
- let hooks;
248
- try {
249
- hooks = require_headlessChildSessionService.bindChildHooks(request, options.hooks?.(), () => runtime, signal);
250
- if (hooks.binding) {
251
- runtimeOptions.beforeTool = hooks.binding.beforeTool;
252
- runtimeOptions.afterTool = hooks.binding.afterTool;
253
- }
254
- runtime = await runtimeFactory(runtimeOptions);
255
- if (requestedModel && model) await runtime.setModel(model);
256
- if (thinking !== void 0) await runtime.setThinkingLevel(thinking);
257
- await installIntercom(runtime, request.intercom, runtimeOptions.tools ?? []);
258
- const releaseMcp = require_headlessChildSessionService.bindChildMcpCatalog(runtime, request, options, runtimeOptions.tools ?? []);
259
- const file = runtime.sessionFile;
260
- const releaseNative = typeof file === "string" ? require_nativeChildRuntimes.registerNativeChild(file, runtime) : void 0;
261
- return childRuntime(runtime, request.intercom, async () => {
262
- try {
263
- releaseMcp();
264
- } finally {
265
- try {
266
- releaseNative?.();
267
- } finally {
268
- await hooks?.dispose();
269
- }
270
- }
271
- });
272
- } catch (error) {
273
- let failure = error;
274
- try {
275
- await hooks?.dispose();
276
- } catch (cleanupError) {
277
- failure = new AggregateError([failure, cleanupError], "Terminal Pi child hook cleanup failed");
278
- }
279
- try {
280
- await runtime?.dispose();
281
- } catch (cleanupError) {
282
- failure = new AggregateError([failure, cleanupError], "Terminal Pi child startup cleanup failed");
283
- } finally {
284
- request.intercom?.dispose?.();
285
- node_fs.default.rmSync(sessionPath, { force: true });
286
- }
287
- throw failure;
288
- }
289
- }, { now: options.now ?? Date.now });
290
- const owners = /* @__PURE__ */ new Map();
291
- return {
292
- async start(request, signal) {
293
- const owner = request.source.kind === "terminal-pi-fork" ? terminal : headless;
294
- const handle = await owner.start(request, signal);
295
- owners.set(request.runId, owner);
296
- return handle;
297
- },
298
- get: (runId) => owners.get(runId)?.get(runId) ?? terminal.get(runId) ?? headless.get(runId),
299
- readTranscriptPage(runId, request, signal) {
300
- const owner = owners.get(runId);
301
- if (!owner?.readTranscriptPage) return Promise.reject(/* @__PURE__ */ new Error(`Child run '${runId}' has no readable transcript.`));
302
- return owner.readTranscriptPage(runId, request, signal);
303
- },
304
- close: async () => {
305
- const failures = await Promise.allSettled([terminal.close(), headless.close()]);
306
- owners.clear();
307
- const rejected = failures.flatMap((result) => result.status === "rejected" ? [result.reason] : []);
308
- if (rejected.length) throw new AggregateError(rejected, "Terminal Pi child-session shutdown failed.");
309
- }
310
- };
311
- }
312
- function createTerminalPiChildSessionServiceProvider(options) {
313
- const service = createTerminalPiChildSessionService(options);
314
- return {
315
- get: () => service,
316
- close: () => service.close()
317
- };
318
- }
319
- //#endregion
320
- exports.captureTerminalPiForkSource = captureTerminalPiForkSource;
321
- exports.createTerminalPiChildSessionService = createTerminalPiChildSessionService;
322
- exports.createTerminalPiChildSessionServiceProvider = createTerminalPiChildSessionServiceProvider;
323
-
324
- //# sourceMappingURL=terminalPiChildSessionService.cjs.map