@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 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/devProxyStore/index.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nimport type { DevProxyTarget } from '../../types/remote';\nimport { validateTargetName } from '../devProxyPolicy';\n\n/**\n * Registered proxy targets on disk.\n *\n * Persisted, unlike a remote session, because a target is a name the developer\n * typed into their own build configuration as `base: '/devproxy/<name>/'`.\n * Losing it on restart would silently break that line, and the file holds no\n * secret: a port number and a label the operator chose while sitting at the\n * machine.\n */\n\nconst TARGETS_FILE = 'dev-proxy.json';\nconst DIRECTORY_MODE = 0o700;\nconst FILE_MODE = 0o600;\n/** Any bit set for group or other; a state file readable by another account is worth repairing. */\nconst LOOSE_MODE_MASK = 0o077;\n\nexport interface DevProxyStoreOptions {\n /** The same directory the remote-access store uses; defaults to ~/.po/web. */\n stateDir: string;\n onNotice?: (message: string) => void;\n}\n\nexport interface DevProxyStore {\n targets(): readonly DevProxyTarget[];\n find(name: string): DevProxyTarget | undefined;\n /** Replaces any target already holding this name, so re-registering a moved port is one call. */\n save(target: DevProxyTarget): void;\n remove(name: string): boolean;\n}\n\n/** Repairs a state file another account can read. */\nfunction tightenMode(filePath: string, notice: (message: string) => void): void {\n try {\n if ((fs.statSync(filePath).mode & LOOSE_MODE_MASK) === 0) return;\n fs.chmodSync(filePath, FILE_MODE);\n notice(`tightened permissions on ${filePath}`);\n } catch {\n // The file is missing or unreadable; the caller's own read reports that.\n }\n}\n\n/**\n * Rebuilds one record, dropping anything the current policy would refuse.\n *\n * The file is revalidated on read rather than trusted, because a name that was\n * legal when written is not necessarily legal now, and an edited file must not\n * be able to introduce a target the API would have rejected.\n */\nfunction parseTarget(value: unknown): DevProxyTarget | undefined {\n if (typeof value !== 'object' || value === null) return undefined;\n const record = value as Partial<DevProxyTarget>;\n const name = validateTargetName(record.name);\n if (!name.ok) return undefined;\n if (typeof record.port !== 'number' || !Number.isSafeInteger(record.port)) return undefined;\n const createdAt = typeof record.createdAt === 'number' ? record.createdAt : 0;\n return { name: name.name, port: record.port, createdAt };\n}\n\nexport function createDevProxyStore(options: DevProxyStoreOptions): DevProxyStore {\n const notice = options.onNotice ?? ((): void => {});\n const targetsPath = path.join(options.stateDir, TARGETS_FILE);\n let held = load();\n\n function load(): DevProxyTarget[] {\n let raw: string;\n try {\n raw = fs.readFileSync(targetsPath, 'utf8');\n } catch {\n // No file is the normal first run, so this is not worth a notice.\n return [];\n }\n tightenMode(targetsPath, notice);\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw);\n } catch {\n notice(`dev proxy targets at ${targetsPath} are not valid JSON; none will load`);\n return [];\n }\n if (!Array.isArray(parsed)) return [];\n return parsed.map(parseTarget).filter((target): target is DevProxyTarget => target !== undefined);\n }\n\n function write(): void {\n const temporary = `${targetsPath}.${String(process.pid)}.tmp`;\n try {\n fs.mkdirSync(options.stateDir, { recursive: true, mode: DIRECTORY_MODE });\n fs.writeFileSync(temporary, `${JSON.stringify(held, undefined, 2)}\\n`, { mode: FILE_MODE });\n // Rename rather than write in place, so a crash mid-write leaves the\n // previous contents rather than a truncated file.\n fs.renameSync(temporary, targetsPath);\n } catch (error) {\n notice(`${targetsPath} could not be saved: ${error instanceof Error ? error.message : String(error)}`);\n try {\n fs.rmSync(temporary, { force: true });\n } catch {\n // Nothing further to do; the temp file is inert either way.\n }\n }\n }\n\n return {\n targets: () => held,\n find: (name) => held.find((target) => target.name === name),\n\n save(target) {\n held = [...held.filter((existing) => existing.name !== target.name), target];\n write();\n },\n\n remove(name) {\n const next = held.filter((existing) => existing.name !== name);\n if (next.length === held.length) return false;\n held = next;\n write();\n return true;\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;AAgBA,MAAM,eAAe;AACrB,MAAM,iBAAiB;AACvB,MAAM,YAAY;;AAElB,MAAM,kBAAkB;;AAiBxB,SAAS,YAAY,UAAkB,QAAyC;CAC9E,IAAI;EACF,KAAK,GAAG,SAAS,QAAQ,CAAC,CAAC,OAAO,qBAAqB,GAAG;EAC1D,GAAG,UAAU,UAAU,SAAS;EAChC,OAAO,4BAA4B,UAAU;CAC/C,QAAQ,CAER;AACF;;;;;;;;AASA,SAAS,YAAY,OAA4C;CAC/D,IAAI,OAAO,UAAU,YAAY,UAAU,MAAM,OAAO,KAAA;CACxD,MAAM,SAAS;CACf,MAAM,OAAO,mBAAmB,OAAO,IAAI;CAC3C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAA;CACrB,IAAI,OAAO,OAAO,SAAS,YAAY,CAAC,OAAO,cAAc,OAAO,IAAI,GAAG,OAAO,KAAA;CAClF,MAAM,YAAY,OAAO,OAAO,cAAc,WAAW,OAAO,YAAY;CAC5E,OAAO;EAAE,MAAM,KAAK;EAAM,MAAM,OAAO;EAAM;CAAU;AACzD;AAEA,SAAgB,oBAAoB,SAA8C;CAChF,MAAM,SAAS,QAAQ,mBAAyB,CAAC;CACjD,MAAM,cAAc,KAAK,KAAK,QAAQ,UAAU,YAAY;CAC5D,IAAI,OAAO,KAAK;CAEhB,SAAS,OAAyB;EAChC,IAAI;EACJ,IAAI;GACF,MAAM,GAAG,aAAa,aAAa,MAAM;EAC3C,QAAQ;GAEN,OAAO,CAAC;EACV;EACA,YAAY,aAAa,MAAM;EAC/B,IAAI;EACJ,IAAI;GACF,SAAS,KAAK,MAAM,GAAG;EACzB,QAAQ;GACN,OAAO,wBAAwB,YAAY,oCAAoC;GAC/E,OAAO,CAAC;EACV;EACA,IAAI,CAAC,MAAM,QAAQ,MAAM,GAAG,OAAO,CAAC;EACpC,OAAO,OAAO,IAAI,WAAW,CAAC,CAAC,QAAQ,WAAqC,WAAW,KAAA,CAAS;CAClG;CAEA,SAAS,QAAc;EACrB,MAAM,YAAY,GAAG,YAAY,GAAG,OAAO,QAAQ,GAAG,EAAE;EACxD,IAAI;GACF,GAAG,UAAU,QAAQ,UAAU;IAAE,WAAW;IAAM,MAAM;GAAe,CAAC;GACxE,GAAG,cAAc,WAAW,GAAG,KAAK,UAAU,MAAM,KAAA,GAAW,CAAC,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;GAG1F,GAAG,WAAW,WAAW,WAAW;EACtC,SAAS,OAAO;GACd,OAAO,GAAG,YAAY,uBAAuB,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,GAAG;GACrG,IAAI;IACF,GAAG,OAAO,WAAW,EAAE,OAAO,KAAK,CAAC;GACtC,QAAQ,CAER;EACF;CACF;CAEA,OAAO;EACL,eAAe;EACf,OAAO,SAAS,KAAK,MAAM,WAAW,OAAO,SAAS,IAAI;EAE1D,KAAK,QAAQ;GACX,OAAO,CAAC,GAAG,KAAK,QAAQ,aAAa,SAAS,SAAS,OAAO,IAAI,GAAG,MAAM;GAC3E,MAAM;EACR;EAEA,OAAO,MAAM;GACX,MAAM,OAAO,KAAK,QAAQ,aAAa,SAAS,SAAS,IAAI;GAC7D,IAAI,KAAK,WAAW,KAAK,QAAQ,OAAO;GACxC,OAAO;GACP,MAAM;GACN,OAAO;EACT;CACF;AACF"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/devProxyStore/index.ts"],"sourcesContent":["import path from 'node:path';\n\nimport type { Context } from '@earendil-works/chord';\nimport { getOrThrow, type FileSystem } from '@earendil-works/pi-durable/env';\n\nimport type { DevProxyTarget } from '../../types/remote';\nimport { nodeHost } from '../nodeHost';\nimport { writeFileAtomic } from '../platformFiles';\nimport { createSerialRunner } from '../serialRunner';\nimport {\n DIRECTORY_MODE,\n FILE_MODE,\n isLooseMode,\n parseDevProxyTargets,\n serializeDevProxyTargets,\n TARGETS_FILE,\n type DevProxyStoreOptions,\n} from './devProxyRecords';\n\nexport type { DevProxyStore, DevProxyStoreOptions } from './devProxyRecords';\nexport { createDevProxyStore } from './sync';\n\n/** One queue per targets file, so concurrent writes in this process never interleave. */\nconst targetWrites = createSerialRunner();\n\n/** The async twin of `DevProxyStore`: reads stay in memory, every write resolves once it is on disk. */\nexport interface DevProxyStoreAsync {\n targets(): readonly DevProxyTarget[];\n find(name: string): DevProxyTarget | undefined;\n /** Replaces any target already holding this name, so re-registering a moved port is one call. */\n save(target: DevProxyTarget): Promise<void>;\n remove(name: string): Promise<boolean>;\n}\n\n/** Registered proxy targets on disk; a failed write is reported and never thrown, as in the sync store. */\nexport async function createDevProxyStoreAsync(\n fs: FileSystem,\n options: DevProxyStoreOptions,\n context: Context,\n): Promise<DevProxyStoreAsync> {\n const notice = options.onNotice ?? ((): void => {});\n const targetsPath = path.join(options.stateDir, TARGETS_FILE);\n const serial = targetWrites.forKey(targetsPath);\n\n const load = async (): Promise<DevProxyTarget[]> => {\n const raw = await fs.readTextFile(targetsPath, context);\n // No file is the normal first run, so this is not worth a notice.\n if (!raw.ok) return [];\n // Repairs a state file another account can read.\n try {\n const mode = await nodeHost.fileMode(targetsPath);\n if (mode !== undefined && isLooseMode(mode)) {\n await nodeHost.setMode(targetsPath, FILE_MODE);\n notice(`tightened permissions on ${targetsPath}`);\n }\n } catch {\n // The file vanished or is unreadable between the read and the check; the read above already won.\n }\n return parseDevProxyTargets(raw.value, targetsPath, notice);\n };\n\n let held = await load();\n\n const write = async (): Promise<void> => {\n try {\n if (!getOrThrow(await fs.exists(options.stateDir, context))) {\n getOrThrow(await fs.createDir(options.stateDir, { recursive: true }, context));\n await nodeHost.setMode(options.stateDir, DIRECTORY_MODE);\n }\n await writeFileAtomic(fs, targetsPath, serializeDevProxyTargets(held), context);\n await nodeHost.setMode(targetsPath, FILE_MODE);\n } catch (error) {\n notice(`${targetsPath} could not be saved: ${error instanceof Error ? error.message : String(error)}`);\n }\n };\n\n return {\n targets: () => held,\n find: (name) => held.find((target) => target.name === name),\n save: (target) =>\n serial(async () => {\n held = [...held.filter((existing) => existing.name !== target.name), target];\n await write();\n }),\n remove: (name) =>\n serial(async () => {\n const next = held.filter((existing) => existing.name !== name);\n if (next.length === held.length) return false;\n held = next;\n await write();\n return true;\n }),\n };\n}\n"],"mappings":";;;;;;;AAuBqB,mBAAmB"}
@@ -0,0 +1,66 @@
1
+ const require_runtime = require("../../../_virtual/_rolldown/runtime.cjs");
2
+ const require_devProxyRecords = require("./devProxyRecords.cjs");
3
+ let node_fs = require("node:fs");
4
+ node_fs = require_runtime.__toESM(node_fs, 1);
5
+ let node_path = require("node:path");
6
+ node_path = require_runtime.__toESM(node_path, 1);
7
+ //#region src/services/devProxyStore/sync.ts
8
+ /** Repairs a state file another account can read. */
9
+ function tightenMode(filePath, notice) {
10
+ try {
11
+ if (!require_devProxyRecords.isLooseMode(node_fs.default.statSync(filePath).mode)) return;
12
+ node_fs.default.chmodSync(filePath, 384);
13
+ notice(`tightened permissions on ${filePath}`);
14
+ } catch {}
15
+ }
16
+ /** @deprecated Node-only sync shim; use createDevProxyStoreAsync. Removed in M2. */
17
+ function createDevProxyStore(options) {
18
+ const notice = options.onNotice ?? (() => {});
19
+ const targetsPath = node_path.default.join(options.stateDir, require_devProxyRecords.TARGETS_FILE);
20
+ let held = load();
21
+ function load() {
22
+ let raw;
23
+ try {
24
+ raw = node_fs.default.readFileSync(targetsPath, "utf8");
25
+ } catch {
26
+ return [];
27
+ }
28
+ tightenMode(targetsPath, notice);
29
+ return require_devProxyRecords.parseDevProxyTargets(raw, targetsPath, notice);
30
+ }
31
+ function write() {
32
+ const temporary = `${targetsPath}.${String(process.pid)}.tmp`;
33
+ try {
34
+ node_fs.default.mkdirSync(options.stateDir, {
35
+ recursive: true,
36
+ mode: 448
37
+ });
38
+ node_fs.default.writeFileSync(temporary, require_devProxyRecords.serializeDevProxyTargets(held), { mode: 384 });
39
+ node_fs.default.renameSync(temporary, targetsPath);
40
+ } catch (error) {
41
+ notice(`${targetsPath} could not be saved: ${error instanceof Error ? error.message : String(error)}`);
42
+ try {
43
+ node_fs.default.rmSync(temporary, { force: true });
44
+ } catch {}
45
+ }
46
+ }
47
+ return {
48
+ targets: () => held,
49
+ find: (name) => held.find((target) => target.name === name),
50
+ save(target) {
51
+ held = [...held.filter((existing) => existing.name !== target.name), target];
52
+ write();
53
+ },
54
+ remove(name) {
55
+ const next = held.filter((existing) => existing.name !== name);
56
+ if (next.length === held.length) return false;
57
+ held = next;
58
+ write();
59
+ return true;
60
+ }
61
+ };
62
+ }
63
+ //#endregion
64
+ exports.createDevProxyStore = createDevProxyStore;
65
+
66
+ //# sourceMappingURL=sync.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.cjs","names":["isLooseMode","fs","path","TARGETS_FILE","parseDevProxyTargets","serializeDevProxyTargets"],"sources":["../../../../src/services/devProxyStore/sync.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nimport type { DevProxyTarget } from '../../types/remote';\nimport {\n DIRECTORY_MODE,\n FILE_MODE,\n isLooseMode,\n parseDevProxyTargets,\n serializeDevProxyTargets,\n TARGETS_FILE,\n type DevProxyStore,\n type DevProxyStoreOptions,\n} from './devProxyRecords';\n\n/** Repairs a state file another account can read. */\nfunction tightenMode(filePath: string, notice: (message: string) => void): void {\n try {\n if (!isLooseMode(fs.statSync(filePath).mode)) return;\n fs.chmodSync(filePath, FILE_MODE);\n notice(`tightened permissions on ${filePath}`);\n } catch {\n // The file is missing or unreadable; the caller's own read reports that.\n }\n}\n\n/** @deprecated Node-only sync shim; use createDevProxyStoreAsync. Removed in M2. */\nexport function createDevProxyStore(options: DevProxyStoreOptions): DevProxyStore {\n const notice = options.onNotice ?? ((): void => {});\n const targetsPath = path.join(options.stateDir, TARGETS_FILE);\n let held = load();\n\n function load(): DevProxyTarget[] {\n let raw: string;\n try {\n raw = fs.readFileSync(targetsPath, 'utf8');\n } catch {\n // No file is the normal first run, so this is not worth a notice.\n return [];\n }\n tightenMode(targetsPath, notice);\n return parseDevProxyTargets(raw, targetsPath, notice);\n }\n\n function write(): void {\n const temporary = `${targetsPath}.${String(process.pid)}.tmp`;\n try {\n fs.mkdirSync(options.stateDir, { recursive: true, mode: DIRECTORY_MODE });\n fs.writeFileSync(temporary, serializeDevProxyTargets(held), { mode: FILE_MODE });\n // Rename rather than write in place, so a crash mid-write leaves the\n // previous contents rather than a truncated file.\n fs.renameSync(temporary, targetsPath);\n } catch (error) {\n notice(`${targetsPath} could not be saved: ${error instanceof Error ? error.message : String(error)}`);\n try {\n fs.rmSync(temporary, { force: true });\n } catch {\n // Nothing further to do; the temp file is inert either way.\n }\n }\n }\n\n return {\n targets: () => held,\n find: (name) => held.find((target) => target.name === name),\n\n save(target) {\n held = [...held.filter((existing) => existing.name !== target.name), target];\n write();\n },\n\n remove(name) {\n const next = held.filter((existing) => existing.name !== name);\n if (next.length === held.length) return false;\n held = next;\n write();\n return true;\n },\n };\n}\n"],"mappings":";;;;;;;;AAgBA,SAAS,YAAY,UAAkB,QAAyC;CAC9E,IAAI;EACF,IAAI,CAACA,wBAAAA,YAAYC,QAAAA,QAAG,SAAS,QAAQ,CAAC,CAAC,IAAI,GAAG;EAC9C,QAAA,QAAG,UAAU,UAAA,GAAmB;EAChC,OAAO,4BAA4B,UAAU;CAC/C,QAAQ,CAER;AACF;;AAGA,SAAgB,oBAAoB,SAA8C;CAChF,MAAM,SAAS,QAAQ,mBAAyB,CAAC;CACjD,MAAM,cAAcC,UAAAA,QAAK,KAAK,QAAQ,UAAUC,wBAAAA,YAAY;CAC5D,IAAI,OAAO,KAAK;CAEhB,SAAS,OAAyB;EAChC,IAAI;EACJ,IAAI;GACF,MAAMF,QAAAA,QAAG,aAAa,aAAa,MAAM;EAC3C,QAAQ;GAEN,OAAO,CAAC;EACV;EACA,YAAY,aAAa,MAAM;EAC/B,OAAOG,wBAAAA,qBAAqB,KAAK,aAAa,MAAM;CACtD;CAEA,SAAS,QAAc;EACrB,MAAM,YAAY,GAAG,YAAY,GAAG,OAAO,QAAQ,GAAG,EAAE;EACxD,IAAI;GACF,QAAA,QAAG,UAAU,QAAQ,UAAU;IAAE,WAAW;IAAM,MAAA;GAAqB,CAAC;GACxE,QAAA,QAAG,cAAc,WAAWC,wBAAAA,yBAAyB,IAAI,GAAG,EAAE,MAAA,IAAgB,CAAC;GAG/E,QAAA,QAAG,WAAW,WAAW,WAAW;EACtC,SAAS,OAAO;GACd,OAAO,GAAG,YAAY,uBAAuB,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,GAAG;GACrG,IAAI;IACF,QAAA,QAAG,OAAO,WAAW,EAAE,OAAO,KAAK,CAAC;GACtC,QAAQ,CAER;EACF;CACF;CAEA,OAAO;EACL,eAAe;EACf,OAAO,SAAS,KAAK,MAAM,WAAW,OAAO,SAAS,IAAI;EAE1D,KAAK,QAAQ;GACX,OAAO,CAAC,GAAG,KAAK,QAAQ,aAAa,SAAS,SAAS,OAAO,IAAI,GAAG,MAAM;GAC3E,MAAM;EACR;EAEA,OAAO,MAAM;GACX,MAAM,OAAO,KAAK,QAAQ,aAAa,SAAS,SAAS,IAAI;GAC7D,IAAI,KAAK,WAAW,KAAK,QAAQ,OAAO;GACxC,OAAO;GACP,MAAM;GACN,OAAO;EACT;CACF;AACF"}
@@ -0,0 +1,63 @@
1
+ import { TARGETS_FILE, isLooseMode, parseDevProxyTargets, serializeDevProxyTargets } from "./devProxyRecords.mjs";
2
+ import fs from "node:fs";
3
+ import path from "node:path";
4
+ //#region src/services/devProxyStore/sync.ts
5
+ /** Repairs a state file another account can read. */
6
+ function tightenMode(filePath, notice) {
7
+ try {
8
+ if (!isLooseMode(fs.statSync(filePath).mode)) return;
9
+ fs.chmodSync(filePath, 384);
10
+ notice(`tightened permissions on ${filePath}`);
11
+ } catch {}
12
+ }
13
+ /** @deprecated Node-only sync shim; use createDevProxyStoreAsync. Removed in M2. */
14
+ function createDevProxyStore(options) {
15
+ const notice = options.onNotice ?? (() => {});
16
+ const targetsPath = path.join(options.stateDir, TARGETS_FILE);
17
+ let held = load();
18
+ function load() {
19
+ let raw;
20
+ try {
21
+ raw = fs.readFileSync(targetsPath, "utf8");
22
+ } catch {
23
+ return [];
24
+ }
25
+ tightenMode(targetsPath, notice);
26
+ return parseDevProxyTargets(raw, targetsPath, notice);
27
+ }
28
+ function write() {
29
+ const temporary = `${targetsPath}.${String(process.pid)}.tmp`;
30
+ try {
31
+ fs.mkdirSync(options.stateDir, {
32
+ recursive: true,
33
+ mode: 448
34
+ });
35
+ fs.writeFileSync(temporary, serializeDevProxyTargets(held), { mode: 384 });
36
+ fs.renameSync(temporary, targetsPath);
37
+ } catch (error) {
38
+ notice(`${targetsPath} could not be saved: ${error instanceof Error ? error.message : String(error)}`);
39
+ try {
40
+ fs.rmSync(temporary, { force: true });
41
+ } catch {}
42
+ }
43
+ }
44
+ return {
45
+ targets: () => held,
46
+ find: (name) => held.find((target) => target.name === name),
47
+ save(target) {
48
+ held = [...held.filter((existing) => existing.name !== target.name), target];
49
+ write();
50
+ },
51
+ remove(name) {
52
+ const next = held.filter((existing) => existing.name !== name);
53
+ if (next.length === held.length) return false;
54
+ held = next;
55
+ write();
56
+ return true;
57
+ }
58
+ };
59
+ }
60
+ //#endregion
61
+ export { createDevProxyStore };
62
+
63
+ //# sourceMappingURL=sync.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.mjs","names":[],"sources":["../../../../src/services/devProxyStore/sync.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nimport type { DevProxyTarget } from '../../types/remote';\nimport {\n DIRECTORY_MODE,\n FILE_MODE,\n isLooseMode,\n parseDevProxyTargets,\n serializeDevProxyTargets,\n TARGETS_FILE,\n type DevProxyStore,\n type DevProxyStoreOptions,\n} from './devProxyRecords';\n\n/** Repairs a state file another account can read. */\nfunction tightenMode(filePath: string, notice: (message: string) => void): void {\n try {\n if (!isLooseMode(fs.statSync(filePath).mode)) return;\n fs.chmodSync(filePath, FILE_MODE);\n notice(`tightened permissions on ${filePath}`);\n } catch {\n // The file is missing or unreadable; the caller's own read reports that.\n }\n}\n\n/** @deprecated Node-only sync shim; use createDevProxyStoreAsync. Removed in M2. */\nexport function createDevProxyStore(options: DevProxyStoreOptions): DevProxyStore {\n const notice = options.onNotice ?? ((): void => {});\n const targetsPath = path.join(options.stateDir, TARGETS_FILE);\n let held = load();\n\n function load(): DevProxyTarget[] {\n let raw: string;\n try {\n raw = fs.readFileSync(targetsPath, 'utf8');\n } catch {\n // No file is the normal first run, so this is not worth a notice.\n return [];\n }\n tightenMode(targetsPath, notice);\n return parseDevProxyTargets(raw, targetsPath, notice);\n }\n\n function write(): void {\n const temporary = `${targetsPath}.${String(process.pid)}.tmp`;\n try {\n fs.mkdirSync(options.stateDir, { recursive: true, mode: DIRECTORY_MODE });\n fs.writeFileSync(temporary, serializeDevProxyTargets(held), { mode: FILE_MODE });\n // Rename rather than write in place, so a crash mid-write leaves the\n // previous contents rather than a truncated file.\n fs.renameSync(temporary, targetsPath);\n } catch (error) {\n notice(`${targetsPath} could not be saved: ${error instanceof Error ? error.message : String(error)}`);\n try {\n fs.rmSync(temporary, { force: true });\n } catch {\n // Nothing further to do; the temp file is inert either way.\n }\n }\n }\n\n return {\n targets: () => held,\n find: (name) => held.find((target) => target.name === name),\n\n save(target) {\n held = [...held.filter((existing) => existing.name !== target.name), target];\n write();\n },\n\n remove(name) {\n const next = held.filter((existing) => existing.name !== name);\n if (next.length === held.length) return false;\n held = next;\n write();\n return true;\n },\n };\n}\n"],"mappings":";;;;;AAgBA,SAAS,YAAY,UAAkB,QAAyC;CAC9E,IAAI;EACF,IAAI,CAAC,YAAY,GAAG,SAAS,QAAQ,CAAC,CAAC,IAAI,GAAG;EAC9C,GAAG,UAAU,UAAA,GAAmB;EAChC,OAAO,4BAA4B,UAAU;CAC/C,QAAQ,CAER;AACF;;AAGA,SAAgB,oBAAoB,SAA8C;CAChF,MAAM,SAAS,QAAQ,mBAAyB,CAAC;CACjD,MAAM,cAAc,KAAK,KAAK,QAAQ,UAAU,YAAY;CAC5D,IAAI,OAAO,KAAK;CAEhB,SAAS,OAAyB;EAChC,IAAI;EACJ,IAAI;GACF,MAAM,GAAG,aAAa,aAAa,MAAM;EAC3C,QAAQ;GAEN,OAAO,CAAC;EACV;EACA,YAAY,aAAa,MAAM;EAC/B,OAAO,qBAAqB,KAAK,aAAa,MAAM;CACtD;CAEA,SAAS,QAAc;EACrB,MAAM,YAAY,GAAG,YAAY,GAAG,OAAO,QAAQ,GAAG,EAAE;EACxD,IAAI;GACF,GAAG,UAAU,QAAQ,UAAU;IAAE,WAAW;IAAM,MAAA;GAAqB,CAAC;GACxE,GAAG,cAAc,WAAW,yBAAyB,IAAI,GAAG,EAAE,MAAA,IAAgB,CAAC;GAG/E,GAAG,WAAW,WAAW,WAAW;EACtC,SAAS,OAAO;GACd,OAAO,GAAG,YAAY,uBAAuB,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,GAAG;GACrG,IAAI;IACF,GAAG,OAAO,WAAW,EAAE,OAAO,KAAK,CAAC;GACtC,QAAQ,CAER;EACF;CACF;CAEA,OAAO;EACL,eAAe;EACf,OAAO,SAAS,KAAK,MAAM,WAAW,OAAO,SAAS,IAAI;EAE1D,KAAK,QAAQ;GACX,OAAO,CAAC,GAAG,KAAK,QAAQ,aAAa,SAAS,SAAS,OAAO,IAAI,GAAG,MAAM;GAC3E,MAAM;EACR;EAEA,OAAO,MAAM;GACX,MAAM,OAAO,KAAK,QAAQ,aAAa,SAAS,SAAS,IAAI;GAC7D,IAAI,KAAK,WAAW,KAAK,QAAQ,OAAO;GACxC,OAAO;GACP,MAAM;GACN,OAAO;EACT;CACF;AACF"}
@@ -0,0 +1,15 @@
1
+ //#region src/services/durableNavigation/docs.ts
2
+ /**
3
+ * External session identity is independent of the currently selected conversation. A fork's source is its
4
+ * `ConversationRecord.parent`; stores written before that remain readable with an ignored `branches` field.
5
+ */
6
+ const DurableNavigationDoc = (0, require("@earendil-works/pi-durable").defineDoc)({
7
+ kind: "po.navigation",
8
+ version: 1,
9
+ scope: "session",
10
+ initial: () => ({ activeConversationId: null })
11
+ });
12
+ //#endregion
13
+ exports.DurableNavigationDoc = DurableNavigationDoc;
14
+
15
+ //# sourceMappingURL=docs.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.cjs","names":["defineDoc"],"sources":["../../../../src/services/durableNavigation/docs.ts"],"sourcesContent":["import { defineDoc, type ConversationId } from '@earendil-works/pi-durable';\n\n/**\n * External session identity is independent of the currently selected conversation. A fork's source is its\n * `ConversationRecord.parent`; stores written before that remain readable with an ignored `branches` field.\n */\nexport const DurableNavigationDoc = defineDoc<{ activeConversationId: ConversationId | null }>({\n kind: 'po.navigation',\n version: 1,\n scope: 'session',\n initial: () => ({ activeConversationId: null }),\n});\n"],"mappings":";;;;;AAMA,MAAa,wBAAA,uCAAuBA,CAAAA,CAAAA,UAAAA,CAA2D;CAC7F,MAAM;CACN,SAAS;CACT,OAAO;CACP,gBAAgB,EAAE,sBAAsB,KAAK;AAC/C,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { defineDoc } from "@earendil-works/pi-durable";
2
+ //#region src/services/durableNavigation/docs.ts
3
+ /**
4
+ * External session identity is independent of the currently selected conversation. A fork's source is its
5
+ * `ConversationRecord.parent`; stores written before that remain readable with an ignored `branches` field.
6
+ */
7
+ const DurableNavigationDoc = defineDoc({
8
+ kind: "po.navigation",
9
+ version: 1,
10
+ scope: "session",
11
+ initial: () => ({ activeConversationId: null })
12
+ });
13
+ //#endregion
14
+ export { DurableNavigationDoc };
15
+
16
+ //# sourceMappingURL=docs.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.mjs","names":[],"sources":["../../../../src/services/durableNavigation/docs.ts"],"sourcesContent":["import { defineDoc, type ConversationId } from '@earendil-works/pi-durable';\n\n/**\n * External session identity is independent of the currently selected conversation. A fork's source is its\n * `ConversationRecord.parent`; stores written before that remain readable with an ignored `branches` field.\n */\nexport const DurableNavigationDoc = defineDoc<{ activeConversationId: ConversationId | null }>({\n kind: 'po.navigation',\n version: 1,\n scope: 'session',\n initial: () => ({ activeConversationId: null }),\n});\n"],"mappings":";;;;;;AAMA,MAAa,uBAAuB,UAA2D;CAC7F,MAAM;CACN,SAAS;CACT,OAAO;CACP,gBAAgB,EAAE,sBAAsB,KAAK;AAC/C,CAAC"}
@@ -1,19 +1,10 @@
1
+ const require_docs = require("./docs.cjs");
1
2
  //#region src/services/durableNavigation/index.ts
2
- /** External session identity is independent of the currently selected conversation. */
3
- const DurableNavigationDoc = (0, require("@earendil-works/pi-durable").defineDoc)({
4
- kind: "po.navigation",
5
- version: 1,
6
- scope: "session",
7
- initial: () => ({
8
- activeConversationId: null,
9
- branches: []
10
- })
11
- });
12
3
  /** Select the initial conversation without overwriting a previously persisted selection. */
13
4
  async function initializeDurableNavigation(session, conversationId, context) {
14
5
  return session.commit(async (tx) => {
15
6
  if (!await tx.conversation(conversationId)) throw new Error("Initial conversation does not exist");
16
- const navigation = await tx.doc(DurableNavigationDoc);
7
+ const navigation = await tx.doc(require_docs.DurableNavigationDoc);
17
8
  navigation.activeConversationId ??= conversationId;
18
9
  return navigation.activeConversationId;
19
10
  }, context);
@@ -25,21 +16,15 @@ async function initializeDurableNavigation(session, conversationId, context) {
25
16
  */
26
17
  async function navigateDurableConversation(session, expectedConversationId, targetId, context, options) {
27
18
  return session.commit(async (tx) => {
28
- const navigation = await tx.doc(DurableNavigationDoc);
19
+ const navigation = await tx.doc(require_docs.DurableNavigationDoc);
29
20
  if (navigation.activeConversationId !== expectedConversationId) throw new Error("The active conversation changed during navigation");
30
21
  const next = targetId === null ? await tx.createConversation({ ownership: { kind: "ownerless" } }) : await tx.forkConversation(expectedConversationId, targetId, { ownership: { kind: "ownerless" } });
31
22
  if (options?.summary) await tx.appendEntry(next.id, options.summary);
32
- navigation.branches.push({
33
- conversationId: next.id,
34
- sourceConversationId: expectedConversationId,
35
- targetId
36
- });
37
23
  navigation.activeConversationId = next.id;
38
24
  return next.id;
39
25
  }, context);
40
26
  }
41
27
  //#endregion
42
- exports.DurableNavigationDoc = DurableNavigationDoc;
43
28
  exports.initializeDurableNavigation = initializeDurableNavigation;
44
29
  exports.navigateDurableConversation = navigateDurableConversation;
45
30
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["defineDoc"],"sources":["../../../../src/services/durableNavigation/index.ts"],"sourcesContent":["import type { Context } from '@earendil-works/chord';\nimport {\n defineDoc,\n type ConversationId,\n type EntryDraft,\n type EntryId,\n type Session,\n} from '@earendil-works/pi-durable';\n\n/** External session identity is independent of the currently selected conversation. */\nexport const DurableNavigationDoc = defineDoc<{\n activeConversationId: ConversationId | null;\n branches: { conversationId: ConversationId; sourceConversationId: ConversationId; targetId: EntryId | null }[];\n}>({\n kind: 'po.navigation',\n version: 1,\n scope: 'session',\n initial: () => ({ activeConversationId: null, branches: [] }),\n});\n\n/** Select the initial conversation without overwriting a previously persisted selection. */\nexport async function initializeDurableNavigation(\n session: Session,\n conversationId: ConversationId,\n context: Context,\n): Promise<ConversationId> {\n return session.commit(async (tx) => {\n if (!(await tx.conversation(conversationId))) throw new Error('Initial conversation does not exist');\n const navigation = await tx.doc(DurableNavigationDoc);\n navigation.activeConversationId ??= conversationId;\n return navigation.activeConversationId;\n }, context);\n}\n\n/**\n * Fork the selected history, retaining its abandoned tail. A head marker alone cannot rewind.\n * The caller must settle active work and prepare any summary before entering this transaction.\n * Expected selection guards against a stale asynchronous summary switching a newer selection.\n */\nexport async function navigateDurableConversation(\n session: Session,\n expectedConversationId: ConversationId,\n targetId: EntryId | null,\n context: Context,\n options?: { summary?: EntryDraft },\n): Promise<ConversationId> {\n return session.commit(async (tx) => {\n const navigation = await tx.doc(DurableNavigationDoc);\n if (navigation.activeConversationId !== expectedConversationId)\n throw new Error('The active conversation changed during navigation');\n const next =\n targetId === null\n ? await tx.createConversation({ ownership: { kind: 'ownerless' } })\n : await tx.forkConversation(expectedConversationId, targetId, { ownership: { kind: 'ownerless' } });\n if (options?.summary) await tx.appendEntry(next.id, options.summary);\n navigation.branches.push({\n conversationId: next.id,\n sourceConversationId: expectedConversationId,\n targetId,\n });\n navigation.activeConversationId = next.id;\n return next.id;\n }, context);\n}\n"],"mappings":";;AAUA,MAAa,wBAAA,uCAAuBA,CAAAA,CAAAA,UAAAA,CAGjC;CACD,MAAM;CACN,SAAS;CACT,OAAO;CACP,gBAAgB;EAAE,sBAAsB;EAAM,UAAU,CAAC;CAAE;AAC7D,CAAC;;AAGD,eAAsB,4BACpB,SACA,gBACA,SACyB;CACzB,OAAO,QAAQ,OAAO,OAAO,OAAO;EAClC,IAAI,CAAE,MAAM,GAAG,aAAa,cAAc,GAAI,MAAM,IAAI,MAAM,qCAAqC;EACnG,MAAM,aAAa,MAAM,GAAG,IAAI,oBAAoB;EACpD,WAAW,yBAAyB;EACpC,OAAO,WAAW;CACpB,GAAG,OAAO;AACZ;;;;;;AAOA,eAAsB,4BACpB,SACA,wBACA,UACA,SACA,SACyB;CACzB,OAAO,QAAQ,OAAO,OAAO,OAAO;EAClC,MAAM,aAAa,MAAM,GAAG,IAAI,oBAAoB;EACpD,IAAI,WAAW,yBAAyB,wBACtC,MAAM,IAAI,MAAM,mDAAmD;EACrE,MAAM,OACJ,aAAa,OACT,MAAM,GAAG,mBAAmB,EAAE,WAAW,EAAE,MAAM,YAAY,EAAE,CAAC,IAChE,MAAM,GAAG,iBAAiB,wBAAwB,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,EAAE,CAAC;EACtG,IAAI,SAAS,SAAS,MAAM,GAAG,YAAY,KAAK,IAAI,QAAQ,OAAO;EACnE,WAAW,SAAS,KAAK;GACvB,gBAAgB,KAAK;GACrB,sBAAsB;GACtB;EACF,CAAC;EACD,WAAW,uBAAuB,KAAK;EACvC,OAAO,KAAK;CACd,GAAG,OAAO;AACZ"}
1
+ {"version":3,"file":"index.cjs","names":["DurableNavigationDoc"],"sources":["../../../../src/services/durableNavigation/index.ts"],"sourcesContent":["import type { Context } from '@earendil-works/chord';\nimport type { ConversationId, EntryDraft, EntryId, Session } from '@earendil-works/pi-durable';\n\nimport { DurableNavigationDoc } from './docs';\n/** Select the initial conversation without overwriting a previously persisted selection. */\nexport async function initializeDurableNavigation(\n session: Session,\n conversationId: ConversationId,\n context: Context,\n): Promise<ConversationId> {\n return session.commit(async (tx) => {\n if (!(await tx.conversation(conversationId))) throw new Error('Initial conversation does not exist');\n const navigation = await tx.doc(DurableNavigationDoc);\n navigation.activeConversationId ??= conversationId;\n return navigation.activeConversationId;\n }, context);\n}\n\n/**\n * Fork the selected history, retaining its abandoned tail. A head marker alone cannot rewind.\n * The caller must settle active work and prepare any summary before entering this transaction.\n * Expected selection guards against a stale asynchronous summary switching a newer selection.\n */\nexport async function navigateDurableConversation(\n session: Session,\n expectedConversationId: ConversationId,\n targetId: EntryId | null,\n context: Context,\n options?: { summary?: EntryDraft },\n): Promise<ConversationId> {\n return session.commit(async (tx) => {\n const navigation = await tx.doc(DurableNavigationDoc);\n if (navigation.activeConversationId !== expectedConversationId)\n throw new Error('The active conversation changed during navigation');\n const next =\n targetId === null\n ? await tx.createConversation({ ownership: { kind: 'ownerless' } })\n : await tx.forkConversation(expectedConversationId, targetId, { ownership: { kind: 'ownerless' } });\n if (options?.summary) await tx.appendEntry(next.id, options.summary);\n navigation.activeConversationId = next.id;\n return next.id;\n }, context);\n}\n"],"mappings":";;;AAKA,eAAsB,4BACpB,SACA,gBACA,SACyB;CACzB,OAAO,QAAQ,OAAO,OAAO,OAAO;EAClC,IAAI,CAAE,MAAM,GAAG,aAAa,cAAc,GAAI,MAAM,IAAI,MAAM,qCAAqC;EACnG,MAAM,aAAa,MAAM,GAAG,IAAIA,aAAAA,oBAAoB;EACpD,WAAW,yBAAyB;EACpC,OAAO,WAAW;CACpB,GAAG,OAAO;AACZ;;;;;;AAOA,eAAsB,4BACpB,SACA,wBACA,UACA,SACA,SACyB;CACzB,OAAO,QAAQ,OAAO,OAAO,OAAO;EAClC,MAAM,aAAa,MAAM,GAAG,IAAIA,aAAAA,oBAAoB;EACpD,IAAI,WAAW,yBAAyB,wBACtC,MAAM,IAAI,MAAM,mDAAmD;EACrE,MAAM,OACJ,aAAa,OACT,MAAM,GAAG,mBAAmB,EAAE,WAAW,EAAE,MAAM,YAAY,EAAE,CAAC,IAChE,MAAM,GAAG,iBAAiB,wBAAwB,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,EAAE,CAAC;EACtG,IAAI,SAAS,SAAS,MAAM,GAAG,YAAY,KAAK,IAAI,QAAQ,OAAO;EACnE,WAAW,uBAAuB,KAAK;EACvC,OAAO,KAAK;CACd,GAAG,OAAO;AACZ"}
@@ -1,15 +1,5 @@
1
- import { defineDoc } from "@earendil-works/pi-durable";
1
+ import { DurableNavigationDoc } from "./docs.mjs";
2
2
  //#region src/services/durableNavigation/index.ts
3
- /** External session identity is independent of the currently selected conversation. */
4
- const DurableNavigationDoc = defineDoc({
5
- kind: "po.navigation",
6
- version: 1,
7
- scope: "session",
8
- initial: () => ({
9
- activeConversationId: null,
10
- branches: []
11
- })
12
- });
13
3
  /** Select the initial conversation without overwriting a previously persisted selection. */
14
4
  async function initializeDurableNavigation(session, conversationId, context) {
15
5
  return session.commit(async (tx) => {
@@ -30,16 +20,11 @@ async function navigateDurableConversation(session, expectedConversationId, targ
30
20
  if (navigation.activeConversationId !== expectedConversationId) throw new Error("The active conversation changed during navigation");
31
21
  const next = targetId === null ? await tx.createConversation({ ownership: { kind: "ownerless" } }) : await tx.forkConversation(expectedConversationId, targetId, { ownership: { kind: "ownerless" } });
32
22
  if (options?.summary) await tx.appendEntry(next.id, options.summary);
33
- navigation.branches.push({
34
- conversationId: next.id,
35
- sourceConversationId: expectedConversationId,
36
- targetId
37
- });
38
23
  navigation.activeConversationId = next.id;
39
24
  return next.id;
40
25
  }, context);
41
26
  }
42
27
  //#endregion
43
- export { DurableNavigationDoc, initializeDurableNavigation, navigateDurableConversation };
28
+ export { initializeDurableNavigation, navigateDurableConversation };
44
29
 
45
30
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/durableNavigation/index.ts"],"sourcesContent":["import type { Context } from '@earendil-works/chord';\nimport {\n defineDoc,\n type ConversationId,\n type EntryDraft,\n type EntryId,\n type Session,\n} from '@earendil-works/pi-durable';\n\n/** External session identity is independent of the currently selected conversation. */\nexport const DurableNavigationDoc = defineDoc<{\n activeConversationId: ConversationId | null;\n branches: { conversationId: ConversationId; sourceConversationId: ConversationId; targetId: EntryId | null }[];\n}>({\n kind: 'po.navigation',\n version: 1,\n scope: 'session',\n initial: () => ({ activeConversationId: null, branches: [] }),\n});\n\n/** Select the initial conversation without overwriting a previously persisted selection. */\nexport async function initializeDurableNavigation(\n session: Session,\n conversationId: ConversationId,\n context: Context,\n): Promise<ConversationId> {\n return session.commit(async (tx) => {\n if (!(await tx.conversation(conversationId))) throw new Error('Initial conversation does not exist');\n const navigation = await tx.doc(DurableNavigationDoc);\n navigation.activeConversationId ??= conversationId;\n return navigation.activeConversationId;\n }, context);\n}\n\n/**\n * Fork the selected history, retaining its abandoned tail. A head marker alone cannot rewind.\n * The caller must settle active work and prepare any summary before entering this transaction.\n * Expected selection guards against a stale asynchronous summary switching a newer selection.\n */\nexport async function navigateDurableConversation(\n session: Session,\n expectedConversationId: ConversationId,\n targetId: EntryId | null,\n context: Context,\n options?: { summary?: EntryDraft },\n): Promise<ConversationId> {\n return session.commit(async (tx) => {\n const navigation = await tx.doc(DurableNavigationDoc);\n if (navigation.activeConversationId !== expectedConversationId)\n throw new Error('The active conversation changed during navigation');\n const next =\n targetId === null\n ? await tx.createConversation({ ownership: { kind: 'ownerless' } })\n : await tx.forkConversation(expectedConversationId, targetId, { ownership: { kind: 'ownerless' } });\n if (options?.summary) await tx.appendEntry(next.id, options.summary);\n navigation.branches.push({\n conversationId: next.id,\n sourceConversationId: expectedConversationId,\n targetId,\n });\n navigation.activeConversationId = next.id;\n return next.id;\n }, context);\n}\n"],"mappings":";;;AAUA,MAAa,uBAAuB,UAGjC;CACD,MAAM;CACN,SAAS;CACT,OAAO;CACP,gBAAgB;EAAE,sBAAsB;EAAM,UAAU,CAAC;CAAE;AAC7D,CAAC;;AAGD,eAAsB,4BACpB,SACA,gBACA,SACyB;CACzB,OAAO,QAAQ,OAAO,OAAO,OAAO;EAClC,IAAI,CAAE,MAAM,GAAG,aAAa,cAAc,GAAI,MAAM,IAAI,MAAM,qCAAqC;EACnG,MAAM,aAAa,MAAM,GAAG,IAAI,oBAAoB;EACpD,WAAW,yBAAyB;EACpC,OAAO,WAAW;CACpB,GAAG,OAAO;AACZ;;;;;;AAOA,eAAsB,4BACpB,SACA,wBACA,UACA,SACA,SACyB;CACzB,OAAO,QAAQ,OAAO,OAAO,OAAO;EAClC,MAAM,aAAa,MAAM,GAAG,IAAI,oBAAoB;EACpD,IAAI,WAAW,yBAAyB,wBACtC,MAAM,IAAI,MAAM,mDAAmD;EACrE,MAAM,OACJ,aAAa,OACT,MAAM,GAAG,mBAAmB,EAAE,WAAW,EAAE,MAAM,YAAY,EAAE,CAAC,IAChE,MAAM,GAAG,iBAAiB,wBAAwB,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,EAAE,CAAC;EACtG,IAAI,SAAS,SAAS,MAAM,GAAG,YAAY,KAAK,IAAI,QAAQ,OAAO;EACnE,WAAW,SAAS,KAAK;GACvB,gBAAgB,KAAK;GACrB,sBAAsB;GACtB;EACF,CAAC;EACD,WAAW,uBAAuB,KAAK;EACvC,OAAO,KAAK;CACd,GAAG,OAAO;AACZ"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/durableNavigation/index.ts"],"sourcesContent":["import type { Context } from '@earendil-works/chord';\nimport type { ConversationId, EntryDraft, EntryId, Session } from '@earendil-works/pi-durable';\n\nimport { DurableNavigationDoc } from './docs';\n/** Select the initial conversation without overwriting a previously persisted selection. */\nexport async function initializeDurableNavigation(\n session: Session,\n conversationId: ConversationId,\n context: Context,\n): Promise<ConversationId> {\n return session.commit(async (tx) => {\n if (!(await tx.conversation(conversationId))) throw new Error('Initial conversation does not exist');\n const navigation = await tx.doc(DurableNavigationDoc);\n navigation.activeConversationId ??= conversationId;\n return navigation.activeConversationId;\n }, context);\n}\n\n/**\n * Fork the selected history, retaining its abandoned tail. A head marker alone cannot rewind.\n * The caller must settle active work and prepare any summary before entering this transaction.\n * Expected selection guards against a stale asynchronous summary switching a newer selection.\n */\nexport async function navigateDurableConversation(\n session: Session,\n expectedConversationId: ConversationId,\n targetId: EntryId | null,\n context: Context,\n options?: { summary?: EntryDraft },\n): Promise<ConversationId> {\n return session.commit(async (tx) => {\n const navigation = await tx.doc(DurableNavigationDoc);\n if (navigation.activeConversationId !== expectedConversationId)\n throw new Error('The active conversation changed during navigation');\n const next =\n targetId === null\n ? await tx.createConversation({ ownership: { kind: 'ownerless' } })\n : await tx.forkConversation(expectedConversationId, targetId, { ownership: { kind: 'ownerless' } });\n if (options?.summary) await tx.appendEntry(next.id, options.summary);\n navigation.activeConversationId = next.id;\n return next.id;\n }, context);\n}\n"],"mappings":";;;AAKA,eAAsB,4BACpB,SACA,gBACA,SACyB;CACzB,OAAO,QAAQ,OAAO,OAAO,OAAO;EAClC,IAAI,CAAE,MAAM,GAAG,aAAa,cAAc,GAAI,MAAM,IAAI,MAAM,qCAAqC;EACnG,MAAM,aAAa,MAAM,GAAG,IAAI,oBAAoB;EACpD,WAAW,yBAAyB;EACpC,OAAO,WAAW;CACpB,GAAG,OAAO;AACZ;;;;;;AAOA,eAAsB,4BACpB,SACA,wBACA,UACA,SACA,SACyB;CACzB,OAAO,QAAQ,OAAO,OAAO,OAAO;EAClC,MAAM,aAAa,MAAM,GAAG,IAAI,oBAAoB;EACpD,IAAI,WAAW,yBAAyB,wBACtC,MAAM,IAAI,MAAM,mDAAmD;EACrE,MAAM,OACJ,aAAa,OACT,MAAM,GAAG,mBAAmB,EAAE,WAAW,EAAE,MAAM,YAAY,EAAE,CAAC,IAChE,MAAM,GAAG,iBAAiB,wBAAwB,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,EAAE,CAAC;EACtG,IAAI,SAAS,SAAS,MAAM,GAAG,YAAY,KAAK,IAAI,QAAQ,OAAO;EACnE,WAAW,uBAAuB,KAAK;EACvC,OAAO,KAAK;CACd,GAAG,OAAO;AACZ"}
@@ -0,0 +1,12 @@
1
+ //#region src/services/durableQueue/docs.ts
2
+ /** Po's inputs held outside pi.inbox: paused inputs, explicitly queued inputs, and abort intent. */
3
+ const HeldQueueDoc = (0, require("@earendil-works/pi-durable").defineDoc)({
4
+ kind: "po.queue.held",
5
+ version: 1,
6
+ scope: "session",
7
+ initial: () => ({ json: "{\"revision\":0,\"paused\":false,\"held\":[]}" })
8
+ });
9
+ //#endregion
10
+ exports.HeldQueueDoc = HeldQueueDoc;
11
+
12
+ //# sourceMappingURL=docs.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.cjs","names":["defineDoc"],"sources":["../../../../src/services/durableQueue/docs.ts"],"sourcesContent":["import { defineDoc } from '@earendil-works/pi-durable';\n\n/** Po's inputs held outside pi.inbox: paused inputs, explicitly queued inputs, and abort intent. */\nexport const HeldQueueDoc = defineDoc({\n kind: 'po.queue.held',\n version: 1,\n scope: 'session',\n initial: () => ({ json: '{\"revision\":0,\"paused\":false,\"held\":[]}' }),\n});\n"],"mappings":";;AAGA,MAAa,gBAAA,uCAAeA,CAAAA,CAAAA,UAAAA,CAAU;CACpC,MAAM;CACN,SAAS;CACT,OAAO;CACP,gBAAgB,EAAE,MAAM,gDAA0C;AACpE,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { defineDoc } from "@earendil-works/pi-durable";
2
+ //#region src/services/durableQueue/docs.ts
3
+ /** Po's inputs held outside pi.inbox: paused inputs, explicitly queued inputs, and abort intent. */
4
+ const HeldQueueDoc = defineDoc({
5
+ kind: "po.queue.held",
6
+ version: 1,
7
+ scope: "session",
8
+ initial: () => ({ json: "{\"revision\":0,\"paused\":false,\"held\":[]}" })
9
+ });
10
+ //#endregion
11
+ export { HeldQueueDoc };
12
+
13
+ //# sourceMappingURL=docs.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.mjs","names":[],"sources":["../../../../src/services/durableQueue/docs.ts"],"sourcesContent":["import { defineDoc } from '@earendil-works/pi-durable';\n\n/** Po's inputs held outside pi.inbox: paused inputs, explicitly queued inputs, and abort intent. */\nexport const HeldQueueDoc = defineDoc({\n kind: 'po.queue.held',\n version: 1,\n scope: 'session',\n initial: () => ({ json: '{\"revision\":0,\"paused\":false,\"held\":[]}' }),\n});\n"],"mappings":";;;AAGA,MAAa,eAAe,UAAU;CACpC,MAAM;CACN,SAAS;CACT,OAAO;CACP,gBAAgB,EAAE,MAAM,gDAA0C;AACpE,CAAC"}
@@ -0,0 +1,151 @@
1
+ const require_docs = require("./docs.cjs");
2
+ let _earendil_works_pi_durable = require("@earendil-works/pi-durable");
3
+ //#region src/services/durableQueue/index.ts
4
+ /** pi-durable deduplicates by request ID, so a held input can be handed over again after a crash. */
5
+ const heldRequestId = (id) => `po.queue:${id}`;
6
+ /** The pi.inbox content of a held or freshly submitted input. */
7
+ function heldContent(message, images) {
8
+ if (typeof message !== "string") {
9
+ if (message.role !== "user") throw new Error("Only user messages can admit an agent run");
10
+ return message.content;
11
+ }
12
+ return images?.length ? [{
13
+ type: "text",
14
+ text: message
15
+ }, ...images] : message;
16
+ }
17
+ /** Appends the entry an input is placed as: `entry`'s kind and data, or `pi.user`, as pi-durable's own boundary does. */
18
+ function appendInput(tx, conversationId, content, entry, now) {
19
+ const model = [{
20
+ role: "user",
21
+ content,
22
+ timestamp: now
23
+ }];
24
+ return entry ? tx.appendEntry(conversationId, {
25
+ kind: entry.kind,
26
+ ...entry.data === void 0 ? {} : { data: entry.data },
27
+ model
28
+ }) : tx.appendEntry(_earendil_works_pi_durable.UserEntry, conversationId, { model });
29
+ }
30
+ /**
31
+ * Promotes one explicitly queued input to steer its operation, or starts it from idle, in one commit with only public
32
+ * Tx operations: target validation and the move from held to pi.inbox happen on the same Session mutation line.
33
+ *
34
+ * Mirrors pi-durable `harness/inbox.d.ts:42-52` (`prepareBoundary`/`applyBoundary` at `final`) and `admitSubmission`
35
+ * in `harness/submissions.js`, which pi-durable does not export. Re-run the promote tests on every pi-durable upgrade.
36
+ */
37
+ async function admitSelected(tx, conversationId, selection, modes, replay) {
38
+ const doc = await tx.doc(require_docs.HeldQueueDoc);
39
+ const record = JSON.parse(doc.json);
40
+ const requestId = heldRequestId(selection.id);
41
+ const accepted = await tx.submissionByRequest(conversationId, requestId);
42
+ if (accepted && accepted.type !== "input") throw new Error(`Request ${requestId} already identifies a submission of type ${accepted.type}`);
43
+ if (accepted && replay) return accepted.id;
44
+ if (accepted) return accepted.status === "queued" ? "in_flight" : "not_found";
45
+ const index = record.held.findIndex((q) => q.id === selection.id && q.explicitQueue);
46
+ if (index === -1) return "not_found";
47
+ const q = record.held[index];
48
+ const live = await tx.doc(_earendil_works_pi_durable.LiveDoc, conversationId);
49
+ const task = live.run ? await tx.task(live.run.taskId) : void 0;
50
+ if ((live.run ? String(live.run.inputs[0]) : void 0) !== selection.operationId || task?.abortRequested || live.run && record.abortOperationId === selection.operationId) return "target_changed";
51
+ if (!live.run) {
52
+ let page = await tx.scanTasks({
53
+ conversationId,
54
+ kind: _earendil_works_pi_durable.CompactionTask.definition.name,
55
+ background: false
56
+ }, 128);
57
+ while (true) {
58
+ if (page.items.some((task) => task.state.status !== "terminal")) return "target_changed";
59
+ if (!page.next) break;
60
+ page = await tx.scanTasks({
61
+ conversationId,
62
+ kind: _earendil_works_pi_durable.CompactionTask.definition.name,
63
+ background: false
64
+ }, 128, page.next);
65
+ }
66
+ }
67
+ const content = heldContent(q.message ?? q.text, q.images);
68
+ const inbox = await tx.doc(_earendil_works_pi_durable.InboxDoc, conversationId);
69
+ let head = live.run ? void 0 : (await tx.latestHeadMarker(conversationId))?.head;
70
+ const now = Date.now();
71
+ let id;
72
+ if (!live.run && inbox.items.length === 0) {
73
+ const entry = await appendInput(tx, conversationId, content, q.entry, now);
74
+ id = (await tx.createSubmission({
75
+ conversationId,
76
+ requestId,
77
+ type: "input",
78
+ status: "placed",
79
+ entry: entry.id
80
+ })).id;
81
+ live.run = {
82
+ taskId: await tx.createTask(_earendil_works_pi_durable.GenerationTask, {}, {
83
+ ownership: { kind: "conversation" },
84
+ conversationId
85
+ }),
86
+ inputs: [id]
87
+ };
88
+ } else {
89
+ id = (await tx.createSubmission({
90
+ conversationId,
91
+ requestId,
92
+ type: "input",
93
+ status: "queued"
94
+ })).id;
95
+ inbox.items.push({
96
+ id,
97
+ mode: "steer",
98
+ content: JSON.parse(JSON.stringify(content)),
99
+ ...q.entry ? { entry: JSON.parse(JSON.stringify(q.entry)) } : {}
100
+ });
101
+ if (!live.run) {
102
+ const writes = inbox.items.flatMap((item, index) => item.mode === "write" ? [index] : []);
103
+ const pick = (mode) => {
104
+ const indexes = inbox.items.flatMap((item, index) => item.mode === mode ? [index] : []);
105
+ return (mode === "steer" ? modes.steeringMode : modes.followUpMode) === "all" ? indexes : indexes.slice(0, 1);
106
+ };
107
+ const users = [...pick("steer"), ...pick("followUp")].sort((a, b) => a - b);
108
+ for (const index of writes) {
109
+ const item = inbox.items[index];
110
+ if (item.mode !== "write") continue;
111
+ const draft = item.entry;
112
+ if (typeof draft.head === "number" && head !== void 0 && draft.head < head) {
113
+ tx.settleSubmission(item.id, {
114
+ status: "unanswered",
115
+ reason: "stale"
116
+ });
117
+ continue;
118
+ }
119
+ const entry = await tx.appendEntry(conversationId, draft);
120
+ if (draft.head !== void 0) head = draft.head === "self" ? entry.id : draft.head;
121
+ tx.placeSubmission(item.id, entry.id);
122
+ }
123
+ const inputs = [];
124
+ for (const index of users) {
125
+ const item = inbox.items[index];
126
+ if (item.mode === "write") continue;
127
+ const entry = await appendInput(tx, conversationId, item.content, item.entry, now);
128
+ tx.placeSubmission(item.id, entry.id);
129
+ inputs.push(item.id);
130
+ }
131
+ for (const index of [...writes, ...users].sort((a, b) => b - a)) inbox.items.splice(index, 1);
132
+ if (inputs.length) live.run = {
133
+ taskId: await tx.createTask(_earendil_works_pi_durable.GenerationTask, {}, {
134
+ ownership: { kind: "conversation" },
135
+ conversationId
136
+ }),
137
+ inputs
138
+ };
139
+ }
140
+ }
141
+ record.held.splice(index, 1);
142
+ record.revision++;
143
+ doc.json = JSON.stringify(record);
144
+ return id;
145
+ }
146
+ //#endregion
147
+ exports.admitSelected = admitSelected;
148
+ exports.heldContent = heldContent;
149
+ exports.heldRequestId = heldRequestId;
150
+
151
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["UserEntry","HeldQueueDoc","LiveDoc","CompactionTask","InboxDoc","GenerationTask"],"sources":["../../../../src/services/durableQueue/index.ts"],"sourcesContent":["/**\n * Po's queue around pi.inbox. Follow-ups that are not paused go straight to pi.inbox; only paused and explicitly\n * queued inputs stay in `po.queue.held`, and a held input enters pi.inbox under its stable request ID.\n */\nimport type { ImageContent } from '@earendil-works/pi-ai';\nimport {\n CompactionTask,\n GenerationTask,\n InboxDoc,\n LiveDoc,\n UserEntry,\n type Conversation,\n type ConversationId,\n type HarnessSettings,\n type InputEntry,\n type SubmissionId,\n type Tx,\n} from '@earendil-works/pi-durable';\n\nimport type { AgentMessage, DirectHarnessQueuedInput } from '../../types/server/directHarnessRuntime';\nimport { HeldQueueDoc } from './docs';\n\nexport type HeldInput = Omit<DirectHarnessQueuedInput, 'disposition'> & {\n message?: AgentMessage;\n // The entry the input is placed as instead of `pi.user`, kept when an abort moves a queued input here.\n entry?: InputEntry;\n // Only explicitly queued inputs are visible to, and removable or promotable by, the operator.\n explicitQueue: boolean;\n};\nexport type HeldQueue = { revision: number; paused: boolean; abortOperationId?: string; held: HeldInput[] };\n\n/** pi-durable deduplicates by request ID, so a held input can be handed over again after a crash. */\nexport const heldRequestId = (id: string) => `po.queue:${id}`;\n\n/** The pi.inbox content of a held or freshly submitted input. */\nexport function heldContent(message: string | AgentMessage, images?: ImageContent[]) {\n if (typeof message !== 'string') {\n if (message.role !== 'user') throw new Error('Only user messages can admit an agent run');\n return message.content;\n }\n return images?.length ? [{ type: 'text' as const, text: message }, ...images] : message;\n}\n\n/** Appends the entry an input is placed as: `entry`'s kind and data, or `pi.user`, as pi-durable's own boundary does. */\nfunction appendInput(\n tx: Tx,\n conversationId: ConversationId,\n content: ReturnType<typeof heldContent>,\n entry: InputEntry | undefined,\n now: number,\n) {\n const model = [{ role: 'user' as const, content, timestamp: now }];\n return entry\n ? tx.appendEntry(conversationId, {\n kind: entry.kind,\n ...(entry.data === undefined ? {} : { data: entry.data }),\n model,\n })\n : tx.appendEntry(UserEntry, conversationId, { model });\n}\n\n/**\n * Promotes one explicitly queued input to steer its operation, or starts it from idle, in one commit with only public\n * Tx operations: target validation and the move from held to pi.inbox happen on the same Session mutation line.\n *\n * Mirrors pi-durable `harness/inbox.d.ts:42-52` (`prepareBoundary`/`applyBoundary` at `final`) and `admitSubmission`\n * in `harness/submissions.js`, which pi-durable does not export. Re-run the promote tests on every pi-durable upgrade.\n */\nexport async function admitSelected(\n tx: Tx,\n conversationId: ConversationId,\n selection: { id: string; operationId?: string },\n modes: Pick<HarnessSettings, 'steeringMode' | 'followUpMode'>,\n replay: boolean,\n): Promise<SubmissionId | 'not_found' | 'in_flight' | 'target_changed'> {\n const doc = await tx.doc(HeldQueueDoc);\n const record = JSON.parse(doc.json) as HeldQueue;\n const requestId = heldRequestId(selection.id);\n // An accepted request survives completion/replacement and a lost acknowledgement.\n const accepted = await tx.submissionByRequest(conversationId, requestId);\n if (accepted && accepted.type !== 'input')\n throw new Error(`Request ${requestId} already identifies a submission of type ${accepted.type}`);\n if (accepted && replay) return accepted.id;\n if (accepted) return accepted.status === 'queued' ? 'in_flight' : 'not_found';\n const index = record.held.findIndex((q) => q.id === selection.id && q.explicitQueue);\n if (index === -1) return 'not_found';\n const q = record.held[index]!;\n const live = await tx.doc(LiveDoc, conversationId);\n const task = live.run ? await tx.task(live.run.taskId) : undefined;\n if (\n (live.run ? String(live.run.inputs[0]) : undefined) !== selection.operationId ||\n task?.abortRequested ||\n (live.run && record.abortOperationId === selection.operationId)\n )\n return 'target_changed';\n if (!live.run) {\n let page = await tx.scanTasks({ conversationId, kind: CompactionTask.definition.name, background: false }, 128);\n while (true) {\n if (page.items.some((task) => task.state.status !== 'terminal')) return 'target_changed';\n if (!page.next) break;\n page = await tx.scanTasks(\n { conversationId, kind: CompactionTask.definition.name, background: false },\n 128,\n page.next,\n );\n }\n }\n const content = heldContent(q.message ?? q.text, q.images);\n const inbox = await tx.doc(InboxDoc, conversationId);\n // Native final boundaries read the active head before any table writes.\n let head = live.run ? undefined : (await tx.latestHeadMarker(conversationId))?.head;\n const now = Date.now();\n let id: SubmissionId;\n if (!live.run && inbox.items.length === 0) {\n const entry = await appendInput(tx, conversationId, content, q.entry, now);\n id = (await tx.createSubmission({ conversationId, requestId, type: 'input', status: 'placed', entry: entry.id }))\n .id;\n live.run = {\n taskId: await tx.createTask(GenerationTask, {}, { ownership: { kind: 'conversation' }, conversationId }),\n inputs: [id],\n };\n } else {\n id = (await tx.createSubmission({ conversationId, requestId, type: 'input', status: 'queued' })).id;\n inbox.items.push({\n id,\n mode: 'steer',\n content: JSON.parse(JSON.stringify(content)) as typeof content,\n ...(q.entry ? { entry: JSON.parse(JSON.stringify(q.entry)) as InputEntry } : {}),\n });\n if (!live.run) {\n // Preserve native write-first placement, stale heads, queue modes and\n // positional input order rather than restarting just the selected input.\n const writes = inbox.items.flatMap((item, index) => (item.mode === 'write' ? [index] : []));\n const pick = (mode: 'steer' | 'followUp') => {\n const indexes = inbox.items.flatMap((item, index) => (item.mode === mode ? [index] : []));\n const queueMode = mode === 'steer' ? modes.steeringMode : modes.followUpMode;\n return queueMode === 'all' ? indexes : indexes.slice(0, 1);\n };\n const users = [...pick('steer'), ...pick('followUp')].sort((a, b) => a - b);\n for (const index of writes) {\n const item = inbox.items[index]!;\n if (item.mode !== 'write') continue;\n // Public InboxDoc represents native write drafts as JsonObject.\n const draft = item.entry as unknown as Extract<\n Parameters<Conversation['submit']>[0],\n { type: 'write' }\n >['entry'];\n if (typeof draft.head === 'number' && head !== undefined && draft.head < head) {\n tx.settleSubmission(item.id, { status: 'unanswered', reason: 'stale' });\n continue;\n }\n const entry = await tx.appendEntry(conversationId, draft);\n if (draft.head !== undefined) head = draft.head === 'self' ? entry.id : draft.head;\n tx.placeSubmission(item.id, entry.id);\n }\n const inputs: SubmissionId[] = [];\n for (const index of users) {\n const item = inbox.items[index]!;\n if (item.mode === 'write') continue;\n const entry = await appendInput(tx, conversationId, item.content, item.entry, now);\n tx.placeSubmission(item.id, entry.id);\n inputs.push(item.id);\n }\n for (const index of [...writes, ...users].sort((a, b) => b - a)) inbox.items.splice(index, 1);\n if (inputs.length)\n live.run = {\n taskId: await tx.createTask(GenerationTask, {}, { ownership: { kind: 'conversation' }, conversationId }),\n inputs,\n };\n }\n }\n record.held.splice(index, 1);\n record.revision++;\n doc.json = JSON.stringify(record);\n return id;\n}\n"],"mappings":";;;;AAgCA,MAAa,iBAAiB,OAAe,YAAY;;AAGzD,SAAgB,YAAY,SAAgC,QAAyB;CACnF,IAAI,OAAO,YAAY,UAAU;EAC/B,IAAI,QAAQ,SAAS,QAAQ,MAAM,IAAI,MAAM,2CAA2C;EACxF,OAAO,QAAQ;CACjB;CACA,OAAO,QAAQ,SAAS,CAAC;EAAE,MAAM;EAAiB,MAAM;CAAQ,GAAG,GAAG,MAAM,IAAI;AAClF;;AAGA,SAAS,YACP,IACA,gBACA,SACA,OACA,KACA;CACA,MAAM,QAAQ,CAAC;EAAE,MAAM;EAAiB;EAAS,WAAW;CAAI,CAAC;CACjE,OAAO,QACH,GAAG,YAAY,gBAAgB;EAC7B,MAAM,MAAM;EACZ,GAAI,MAAM,SAAS,KAAA,IAAY,CAAC,IAAI,EAAE,MAAM,MAAM,KAAK;EACvD;CACF,CAAC,IACD,GAAG,YAAYA,2BAAAA,WAAW,gBAAgB,EAAE,MAAM,CAAC;AACzD;;;;;;;;AASA,eAAsB,cACpB,IACA,gBACA,WACA,OACA,QACsE;CACtE,MAAM,MAAM,MAAM,GAAG,IAAIC,aAAAA,YAAY;CACrC,MAAM,SAAS,KAAK,MAAM,IAAI,IAAI;CAClC,MAAM,YAAY,cAAc,UAAU,EAAE;CAE5C,MAAM,WAAW,MAAM,GAAG,oBAAoB,gBAAgB,SAAS;CACvE,IAAI,YAAY,SAAS,SAAS,SAChC,MAAM,IAAI,MAAM,WAAW,UAAU,2CAA2C,SAAS,MAAM;CACjG,IAAI,YAAY,QAAQ,OAAO,SAAS;CACxC,IAAI,UAAU,OAAO,SAAS,WAAW,WAAW,cAAc;CAClE,MAAM,QAAQ,OAAO,KAAK,WAAW,MAAM,EAAE,OAAO,UAAU,MAAM,EAAE,aAAa;CACnF,IAAI,UAAU,IAAI,OAAO;CACzB,MAAM,IAAI,OAAO,KAAK;CACtB,MAAM,OAAO,MAAM,GAAG,IAAIC,2BAAAA,SAAS,cAAc;CACjD,MAAM,OAAO,KAAK,MAAM,MAAM,GAAG,KAAK,KAAK,IAAI,MAAM,IAAI,KAAA;CACzD,KACG,KAAK,MAAM,OAAO,KAAK,IAAI,OAAO,EAAE,IAAI,KAAA,OAAe,UAAU,eAClE,MAAM,kBACL,KAAK,OAAO,OAAO,qBAAqB,UAAU,aAEnD,OAAO;CACT,IAAI,CAAC,KAAK,KAAK;EACb,IAAI,OAAO,MAAM,GAAG,UAAU;GAAE;GAAgB,MAAMC,2BAAAA,eAAe,WAAW;GAAM,YAAY;EAAM,GAAG,GAAG;EAC9G,OAAO,MAAM;GACX,IAAI,KAAK,MAAM,MAAM,SAAS,KAAK,MAAM,WAAW,UAAU,GAAG,OAAO;GACxE,IAAI,CAAC,KAAK,MAAM;GAChB,OAAO,MAAM,GAAG,UACd;IAAE;IAAgB,MAAMA,2BAAAA,eAAe,WAAW;IAAM,YAAY;GAAM,GAC1E,KACA,KAAK,IACP;EACF;CACF;CACA,MAAM,UAAU,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM;CACzD,MAAM,QAAQ,MAAM,GAAG,IAAIC,2BAAAA,UAAU,cAAc;CAEnD,IAAI,OAAO,KAAK,MAAM,KAAA,KAAa,MAAM,GAAG,iBAAiB,cAAc,EAAA,EAAI;CAC/E,MAAM,MAAM,KAAK,IAAI;CACrB,IAAI;CACJ,IAAI,CAAC,KAAK,OAAO,MAAM,MAAM,WAAW,GAAG;EACzC,MAAM,QAAQ,MAAM,YAAY,IAAI,gBAAgB,SAAS,EAAE,OAAO,GAAG;EACzE,MAAM,MAAM,GAAG,iBAAiB;GAAE;GAAgB;GAAW,MAAM;GAAS,QAAQ;GAAU,OAAO,MAAM;EAAG,CAAC,EAAA,CAC5G;EACH,KAAK,MAAM;GACT,QAAQ,MAAM,GAAG,WAAWC,2BAAAA,gBAAgB,CAAC,GAAG;IAAE,WAAW,EAAE,MAAM,eAAe;IAAG;GAAe,CAAC;GACvG,QAAQ,CAAC,EAAE;EACb;CACF,OAAO;EACL,MAAM,MAAM,GAAG,iBAAiB;GAAE;GAAgB;GAAW,MAAM;GAAS,QAAQ;EAAS,CAAC,EAAA,CAAG;EACjG,MAAM,MAAM,KAAK;GACf;GACA,MAAM;GACN,SAAS,KAAK,MAAM,KAAK,UAAU,OAAO,CAAC;GAC3C,GAAI,EAAE,QAAQ,EAAE,OAAO,KAAK,MAAM,KAAK,UAAU,EAAE,KAAK,CAAC,EAAgB,IAAI,CAAC;EAChF,CAAC;EACD,IAAI,CAAC,KAAK,KAAK;GAGb,MAAM,SAAS,MAAM,MAAM,SAAS,MAAM,UAAW,KAAK,SAAS,UAAU,CAAC,KAAK,IAAI,CAAC,CAAE;GAC1F,MAAM,QAAQ,SAA+B;IAC3C,MAAM,UAAU,MAAM,MAAM,SAAS,MAAM,UAAW,KAAK,SAAS,OAAO,CAAC,KAAK,IAAI,CAAC,CAAE;IAExF,QADkB,SAAS,UAAU,MAAM,eAAe,MAAM,kBAC3C,QAAQ,UAAU,QAAQ,MAAM,GAAG,CAAC;GAC3D;GACA,MAAM,QAAQ,CAAC,GAAG,KAAK,OAAO,GAAG,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC;GAC1E,KAAK,MAAM,SAAS,QAAQ;IAC1B,MAAM,OAAO,MAAM,MAAM;IACzB,IAAI,KAAK,SAAS,SAAS;IAE3B,MAAM,QAAQ,KAAK;IAInB,IAAI,OAAO,MAAM,SAAS,YAAY,SAAS,KAAA,KAAa,MAAM,OAAO,MAAM;KAC7E,GAAG,iBAAiB,KAAK,IAAI;MAAE,QAAQ;MAAc,QAAQ;KAAQ,CAAC;KACtE;IACF;IACA,MAAM,QAAQ,MAAM,GAAG,YAAY,gBAAgB,KAAK;IACxD,IAAI,MAAM,SAAS,KAAA,GAAW,OAAO,MAAM,SAAS,SAAS,MAAM,KAAK,MAAM;IAC9E,GAAG,gBAAgB,KAAK,IAAI,MAAM,EAAE;GACtC;GACA,MAAM,SAAyB,CAAC;GAChC,KAAK,MAAM,SAAS,OAAO;IACzB,MAAM,OAAO,MAAM,MAAM;IACzB,IAAI,KAAK,SAAS,SAAS;IAC3B,MAAM,QAAQ,MAAM,YAAY,IAAI,gBAAgB,KAAK,SAAS,KAAK,OAAO,GAAG;IACjF,GAAG,gBAAgB,KAAK,IAAI,MAAM,EAAE;IACpC,OAAO,KAAK,KAAK,EAAE;GACrB;GACA,KAAK,MAAM,SAAS,CAAC,GAAG,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,MAAM,MAAM,OAAO,OAAO,CAAC;GAC5F,IAAI,OAAO,QACT,KAAK,MAAM;IACT,QAAQ,MAAM,GAAG,WAAWA,2BAAAA,gBAAgB,CAAC,GAAG;KAAE,WAAW,EAAE,MAAM,eAAe;KAAG;IAAe,CAAC;IACvG;GACF;EACJ;CACF;CACA,OAAO,KAAK,OAAO,OAAO,CAAC;CAC3B,OAAO;CACP,IAAI,OAAO,KAAK,UAAU,MAAM;CAChC,OAAO;AACT"}