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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1149) hide show
  1. package/LICENSE +149 -21
  2. package/NOTICE +41 -0
  3. package/dist/agentModel.cjs +1 -1
  4. package/dist/agentModel.d.mts +2 -2
  5. package/dist/agentModel.mjs +1 -2
  6. package/dist/apiContracts.cjs +623 -802
  7. package/dist/apiContracts.cjs.map +1 -1
  8. package/dist/apiContracts.d.mts +277 -615
  9. package/dist/apiContracts.d.mts.map +1 -1
  10. package/dist/apiContracts.mjs +617 -794
  11. package/dist/apiContracts.mjs.map +1 -1
  12. package/dist/askUser.cjs +2 -2
  13. package/dist/askUser.d.mts +2 -2
  14. package/dist/askUser.mjs +1 -2
  15. package/dist/authorTools.mjs +1 -2
  16. package/dist/backgroundWork.cjs +3 -3
  17. package/dist/backgroundWork.d.mts +2 -2
  18. package/dist/backgroundWork.mjs +1 -2
  19. package/dist/bundleAssetPolicy.mjs +1 -2
  20. package/dist/chatgptAuth.cjs +3 -2
  21. package/dist/chatgptAuth.d.mts +3 -2
  22. package/dist/chatgptAuth.mjs +2 -1
  23. package/dist/childProcess.cjs +1 -1
  24. package/dist/childProcess.d.mts +2 -2
  25. package/dist/childProcess.mjs +1 -2
  26. package/dist/childSession.cjs +11 -6
  27. package/dist/childSession.d.mts +3 -3
  28. package/dist/childSession.mjs +3 -3
  29. package/dist/cockpitContainer.mjs +1 -2
  30. package/dist/config.cjs +1 -1
  31. package/dist/config.d.mts +3 -3
  32. package/dist/config.mjs +1 -2
  33. package/dist/contextApi.cjs +1 -0
  34. package/dist/contextApi.d.mts +2 -2
  35. package/dist/contextApi.mjs +2 -2
  36. package/dist/contextContributions.cjs +4 -4
  37. package/dist/contextContributions.d.mts +3 -3
  38. package/dist/contextContributions.mjs +3 -3
  39. package/dist/contextDetailStore.cjs +7 -5
  40. package/dist/contextDetailStore.cjs.map +1 -1
  41. package/dist/contextDetailStore.d.mts +2 -1
  42. package/dist/contextDetailStore.d.mts.map +1 -1
  43. package/dist/contextDetailStore.mjs +6 -4
  44. package/dist/contextDetailStore.mjs.map +1 -1
  45. package/dist/contextProjection.cjs +7 -2
  46. package/dist/contextProjection.cjs.map +1 -1
  47. package/dist/contextProjection.d.mts +4 -1
  48. package/dist/contextProjection.d.mts.map +1 -1
  49. package/dist/contextProjection.mjs +5 -2
  50. package/dist/contextProjection.mjs.map +1 -1
  51. package/dist/cordisHost.cjs +11 -11
  52. package/dist/cordisHost.d.mts +2 -2
  53. package/dist/cordisHost.mjs +1 -2
  54. package/dist/delegation.cjs +8 -8
  55. package/dist/delegation.d.mts +2 -2
  56. package/dist/delegation.mjs +1 -2
  57. package/dist/executionBudget.cjs +4 -3
  58. package/dist/executionBudget.cjs.map +1 -1
  59. package/dist/executionBudget.d.mts +2 -2
  60. package/dist/executionBudget.d.mts.map +1 -1
  61. package/dist/executionBudget.mjs +4 -3
  62. package/dist/executionBudget.mjs.map +1 -1
  63. package/dist/extensionFile.cjs +5 -0
  64. package/dist/extensionFile.d.mts +4 -2
  65. package/dist/extensionFile.mjs +4 -2
  66. package/dist/footer.d.mts +2 -2
  67. package/dist/footer.mjs +1 -2
  68. package/dist/headless.cjs +14 -14
  69. package/dist/headless.d.mts +2 -2
  70. package/dist/headless.mjs +1 -2
  71. package/dist/headlessHub.cjs +308 -109
  72. package/dist/headlessHub.cjs.map +1 -1
  73. package/dist/headlessHub.d.mts +71 -36
  74. package/dist/headlessHub.d.mts.map +1 -1
  75. package/dist/headlessHub.mjs +309 -110
  76. package/dist/headlessHub.mjs.map +1 -1
  77. package/dist/headlessProtocol.cjs +327 -0
  78. package/dist/headlessProtocol.cjs.map +1 -0
  79. package/dist/headlessProtocol.d.mts +30 -0
  80. package/dist/headlessProtocol.d.mts.map +1 -0
  81. package/dist/headlessProtocol.mjs +326 -0
  82. package/dist/headlessProtocol.mjs.map +1 -0
  83. package/dist/headlessServer.cjs +166 -151
  84. package/dist/headlessServer.cjs.map +1 -1
  85. package/dist/headlessServer.d.mts +13 -5
  86. package/dist/headlessServer.d.mts.map +1 -1
  87. package/dist/headlessServer.mjs +166 -151
  88. package/dist/headlessServer.mjs.map +1 -1
  89. package/dist/headlessSessionHost.d.mts +58 -21
  90. package/dist/headlessSessionHost.d.mts.map +1 -1
  91. package/dist/help.cjs +20 -20
  92. package/dist/help.d.mts +2 -2
  93. package/dist/help.mjs +2 -2
  94. package/dist/history.cjs +16 -20
  95. package/dist/history.d.mts +9 -7
  96. package/dist/history.mjs +6 -7
  97. package/dist/historyOwnership.cjs.map +1 -1
  98. package/dist/historyOwnership.d.mts +1 -1
  99. package/dist/historyOwnership.mjs.map +1 -1
  100. package/dist/hubChannel.cjs +9 -0
  101. package/dist/hubChannel.d.mts +3 -2
  102. package/dist/hubChannel.mjs +3 -2
  103. package/dist/index.cjs +26 -28
  104. package/dist/index.d.mts +6 -6
  105. package/dist/index.mjs +6 -6
  106. package/dist/interop/chord.mjs +1 -0
  107. package/dist/interop/chordContext.mjs +1 -0
  108. package/dist/json.cjs +11 -5
  109. package/dist/json.d.mts +4 -2
  110. package/dist/json.mjs +4 -2
  111. package/dist/kernel.cjs +1 -1
  112. package/dist/kernel.d.mts +3 -3
  113. package/dist/kernel.mjs +1 -2
  114. package/dist/leader.d.mts +2 -2
  115. package/dist/leader.mjs +1 -2
  116. package/dist/logSinkTelemetry.mjs +1 -2
  117. package/dist/machineApi.cjs +80 -74
  118. package/dist/machineApi.cjs.map +1 -1
  119. package/dist/machineApi.d.mts +5 -2
  120. package/dist/machineApi.d.mts.map +1 -1
  121. package/dist/machineApi.mjs +78 -71
  122. package/dist/machineApi.mjs.map +1 -1
  123. package/dist/main.cjs +2 -1
  124. package/dist/main.d.mts +2 -1
  125. package/dist/main.mjs +2 -1
  126. package/dist/mcpFacet.d.mts +3 -3
  127. package/dist/mcpProjection.cjs +13 -13
  128. package/dist/mcpProjection.d.mts +2 -2
  129. package/dist/mcpProjection.mjs +1 -2
  130. package/dist/mcpSchemaCost.cjs +4 -4
  131. package/dist/mcpSchemaCost.cjs.map +1 -1
  132. package/dist/mcpSchemaCost.d.mts +2 -2
  133. package/dist/mcpSchemaCost.mjs +4 -4
  134. package/dist/mcpSchemaCost.mjs.map +1 -1
  135. package/dist/mcpSession.cjs +7 -7
  136. package/dist/mcpSession.d.mts +2 -2
  137. package/dist/mcpSession.mjs +1 -2
  138. package/dist/mcpStatus.cjs +2 -2
  139. package/dist/mcpStatus.d.mts +2 -2
  140. package/dist/mcpStatus.mjs +1 -2
  141. package/dist/mcpToolResolver.cjs +3 -3
  142. package/dist/mcpToolResolver.d.mts +2 -2
  143. package/dist/mcpToolResolver.mjs +1 -2
  144. package/dist/mcpWidget.d.mts +2 -2
  145. package/dist/moduleResolution.cjs +43 -8
  146. package/dist/moduleResolution.cjs.map +1 -1
  147. package/dist/moduleResolution.d.mts +10 -1
  148. package/dist/moduleResolution.d.mts.map +1 -1
  149. package/dist/moduleResolution.mjs +40 -7
  150. package/dist/moduleResolution.mjs.map +1 -1
  151. package/dist/narration.cjs +3 -3
  152. package/dist/narration.d.mts +2 -2
  153. package/dist/narration.mjs +1 -2
  154. package/dist/native.cjs +9 -0
  155. package/dist/native.d.mts +4 -3
  156. package/dist/native.mjs +3 -2
  157. package/dist/nodePlatform.cjs +77 -0
  158. package/dist/nodePlatform.cjs.map +1 -0
  159. package/dist/nodePlatform.d.mts +17 -0
  160. package/dist/nodePlatform.d.mts.map +1 -0
  161. package/dist/nodePlatform.mjs +72 -0
  162. package/dist/nodePlatform.mjs.map +1 -0
  163. package/dist/notification.cjs +15 -15
  164. package/dist/notification.d.mts +2 -2
  165. package/dist/notification.mjs +1 -2
  166. package/dist/packageApi.cjs +11 -11
  167. package/dist/packageApi.d.mts +2 -2
  168. package/dist/packageApi.mjs +2 -2
  169. package/dist/packageApiServer.cjs +45 -27
  170. package/dist/packageApiServer.cjs.map +1 -1
  171. package/dist/packageApiServer.d.mts +36 -26
  172. package/dist/packageApiServer.d.mts.map +1 -1
  173. package/dist/packageApiServer.mjs +44 -26
  174. package/dist/packageApiServer.mjs.map +1 -1
  175. package/dist/piSettings.cjs +41 -20
  176. package/dist/piSettings.d.mts +4 -2
  177. package/dist/piSettings.mjs +4 -2
  178. package/dist/platform.cjs +62 -0
  179. package/dist/platform.d.mts +10 -0
  180. package/dist/platform.mjs +10 -0
  181. package/dist/pluginProtocol.cjs +7 -8
  182. package/dist/pluginProtocol.d.mts +2 -2
  183. package/dist/pluginProtocol.mjs +1 -2
  184. package/dist/poPackage.cjs +12 -0
  185. package/dist/poPackage.d.mts +3 -0
  186. package/dist/poPackage.mjs +3 -0
  187. package/dist/profileIdentity.cjs +1 -1
  188. package/dist/profileIdentity.d.mts +2 -2
  189. package/dist/profileIdentity.mjs +1 -2
  190. package/dist/protocol.cjs +3 -3
  191. package/dist/protocol.d.mts +2 -2
  192. package/dist/protocol.mjs +1 -2
  193. package/dist/readiness.cjs +6 -6
  194. package/dist/readiness.d.mts +2 -2
  195. package/dist/readiness.mjs +1 -2
  196. package/dist/remoteApi.cjs.map +1 -1
  197. package/dist/remoteApi.d.mts +2 -2
  198. package/dist/remoteApi.mjs.map +1 -1
  199. package/dist/remoteRuntime.cjs +42 -65
  200. package/dist/remoteRuntime.cjs.map +1 -1
  201. package/dist/remoteRuntime.d.mts +3 -2
  202. package/dist/remoteRuntime.d.mts.map +1 -1
  203. package/dist/remoteRuntime.mjs +41 -62
  204. package/dist/remoteRuntime.mjs.map +1 -1
  205. package/dist/runtimeConfig.cjs +4 -4
  206. package/dist/runtimeConfig.cjs.map +1 -1
  207. package/dist/runtimeConfig.d.mts +10 -9
  208. package/dist/runtimeConfig.d.mts.map +1 -1
  209. package/dist/runtimeConfig.mjs +4 -4
  210. package/dist/runtimeConfig.mjs.map +1 -1
  211. package/dist/runtimeContextApi.cjs +10 -3
  212. package/dist/runtimeContextApi.cjs.map +1 -1
  213. package/dist/runtimeContextApi.d.mts +3 -3
  214. package/dist/runtimeContextApi.d.mts.map +1 -1
  215. package/dist/runtimeContextApi.mjs +10 -3
  216. package/dist/runtimeContextApi.mjs.map +1 -1
  217. package/dist/runtimeCordisHost.cjs +46 -46
  218. package/dist/runtimeCordisHost.cjs.map +1 -1
  219. package/dist/runtimeCordisHost.d.mts +29 -28
  220. package/dist/runtimeCordisHost.d.mts.map +1 -1
  221. package/dist/runtimeCordisHost.mjs +42 -42
  222. package/dist/runtimeCordisHost.mjs.map +1 -1
  223. package/dist/runtimeIdentity.cjs +6 -9
  224. package/dist/runtimeIdentity.cjs.map +1 -1
  225. package/dist/runtimeIdentity.d.mts +5 -1
  226. package/dist/runtimeIdentity.d.mts.map +1 -1
  227. package/dist/runtimeIdentity.mjs +5 -8
  228. package/dist/runtimeIdentity.mjs.map +1 -1
  229. package/dist/runtimeJson.cjs +10 -45
  230. package/dist/runtimeJson.d.mts +3 -22
  231. package/dist/runtimeJson.mjs +3 -39
  232. package/dist/runtimeLogSinkTelemetry.cjs +19 -19
  233. package/dist/runtimeLogSinkTelemetry.cjs.map +1 -1
  234. package/dist/runtimeLogSinkTelemetry.d.mts +19 -19
  235. package/dist/runtimeLogSinkTelemetry.mjs +19 -19
  236. package/dist/runtimeLogSinkTelemetry.mjs.map +1 -1
  237. package/dist/runtimePackages.cjs +7 -2
  238. package/dist/runtimePackages.cjs.map +1 -1
  239. package/dist/runtimePackages.d.mts +4 -1
  240. package/dist/runtimePackages.d.mts.map +1 -1
  241. package/dist/runtimePackages.mjs +7 -2
  242. package/dist/runtimePackages.mjs.map +1 -1
  243. package/dist/runtimePiSettings.cjs +40 -263
  244. package/dist/runtimePiSettings.d.mts +3 -72
  245. package/dist/runtimePiSettings.mjs +3 -241
  246. package/dist/runtimeProtocol.cjs +19 -19
  247. package/dist/runtimeProtocol.cjs.map +1 -1
  248. package/dist/runtimeProtocol.d.mts +7 -7
  249. package/dist/runtimeProtocol.d.mts.map +1 -1
  250. package/dist/runtimeProtocol.mjs +17 -17
  251. package/dist/runtimeProtocol.mjs.map +1 -1
  252. package/dist/runtimeTransition.cjs +9 -9
  253. package/dist/runtimeTransition.cjs.map +1 -1
  254. package/dist/runtimeTransition.d.mts +10 -10
  255. package/dist/runtimeTransition.d.mts.map +1 -1
  256. package/dist/runtimeTransition.mjs +7 -7
  257. package/dist/runtimeTransition.mjs.map +1 -1
  258. package/dist/sandboxHarness.mjs +1 -2
  259. package/dist/server.cjs +3 -7
  260. package/dist/server.d.mts +6 -6
  261. package/dist/server.mjs +3 -4
  262. package/dist/serverPlugin.cjs +39 -0
  263. package/dist/serverPlugin.d.mts +12 -0
  264. package/dist/serverPlugin.mjs +11 -0
  265. package/dist/serverTelemetry.cjs +1 -1
  266. package/dist/serverTelemetry.cjs.map +1 -1
  267. package/dist/serverTelemetry.d.mts +2 -2
  268. package/dist/serverTelemetry.mjs +2 -2
  269. package/dist/serverTelemetry.mjs.map +1 -1
  270. package/dist/sessionFilesApi.cjs +41 -37
  271. package/dist/sessionFilesApi.cjs.map +1 -1
  272. package/dist/sessionFilesApi.d.mts +6 -3
  273. package/dist/sessionFilesApi.d.mts.map +1 -1
  274. package/dist/sessionFilesApi.mjs +41 -36
  275. package/dist/sessionFilesApi.mjs.map +1 -1
  276. package/dist/sessionProtocol.cjs +31 -6
  277. package/dist/sessionProtocol.d.mts +8 -3
  278. package/dist/sessionProtocol.mjs +8 -2
  279. package/dist/skills.cjs +5 -5
  280. package/dist/skills.d.mts +2 -2
  281. package/dist/skills.mjs +1 -2
  282. package/dist/sqliteSessionStorage.cjs +28 -50
  283. package/dist/sqliteSessionStorage.cjs.map +1 -1
  284. package/dist/sqliteSessionStorage.d.mts +13 -20
  285. package/dist/sqliteSessionStorage.d.mts.map +1 -1
  286. package/dist/sqliteSessionStorage.mjs +25 -48
  287. package/dist/sqliteSessionStorage.mjs.map +1 -1
  288. package/dist/src/constants/agentSettled.cjs +7 -0
  289. package/dist/src/constants/agentSettled.cjs.map +1 -0
  290. package/dist/src/constants/agentSettled.mjs +7 -0
  291. package/dist/src/constants/agentSettled.mjs.map +1 -0
  292. package/dist/src/constants/contextApi.cjs +3 -1
  293. package/dist/src/constants/contextApi.cjs.map +1 -1
  294. package/dist/src/constants/contextApi.d.mts +2 -1
  295. package/dist/src/constants/contextApi.d.mts.map +1 -1
  296. package/dist/src/constants/contextApi.mjs +3 -2
  297. package/dist/src/constants/contextApi.mjs.map +1 -1
  298. package/dist/src/constants/voiceTools.cjs +6 -6
  299. package/dist/src/constants/voiceTools.cjs.map +1 -1
  300. package/dist/src/constants/voiceTools.d.mts +3 -3
  301. package/dist/src/constants/voiceTools.mjs +4 -4
  302. package/dist/src/constants/voiceTools.mjs.map +1 -1
  303. package/dist/src/extensions/extensionFile.cjs +22 -5
  304. package/dist/src/extensions/extensionFile.cjs.map +1 -1
  305. package/dist/src/extensions/extensionFile.d.mts +17 -4
  306. package/dist/src/extensions/extensionFile.d.mts.map +1 -1
  307. package/dist/src/extensions/extensionFile.mjs +22 -6
  308. package/dist/src/extensions/extensionFile.mjs.map +1 -1
  309. package/dist/src/extensions/serverPlugin.cjs +231 -92
  310. package/dist/src/extensions/serverPlugin.cjs.map +1 -1
  311. package/dist/src/extensions/serverPlugin.d.mts +2 -2
  312. package/dist/src/extensions/serverPlugin.d.mts.map +1 -1
  313. package/dist/src/extensions/serverPlugin.mjs +232 -93
  314. package/dist/src/extensions/serverPlugin.mjs.map +1 -1
  315. package/dist/src/pi/piSessionRuntime.cjs +349 -142
  316. package/dist/src/pi/piSessionRuntime.cjs.map +1 -1
  317. package/dist/src/pi/piSessionRuntime.d.mts +18 -17
  318. package/dist/src/pi/piSessionRuntime.d.mts.map +1 -1
  319. package/dist/src/pi/piSessionRuntime.mjs +342 -135
  320. package/dist/src/pi/piSessionRuntime.mjs.map +1 -1
  321. package/dist/src/schemas/agentModel.cjs +2 -2
  322. package/dist/src/schemas/agentModel.cjs.map +1 -1
  323. package/dist/src/schemas/agentModel.d.mts +1 -1
  324. package/dist/src/schemas/agentModel.mjs +2 -2
  325. package/dist/src/schemas/agentModel.mjs.map +1 -1
  326. package/dist/src/schemas/apiContracts.d.mts +2 -2
  327. package/dist/src/schemas/apiContracts.d.mts.map +1 -1
  328. package/dist/src/schemas/askUser.cjs +4 -4
  329. package/dist/src/schemas/askUser.cjs.map +1 -1
  330. package/dist/src/schemas/askUser.d.mts +4 -4
  331. package/dist/src/schemas/askUser.d.mts.map +1 -1
  332. package/dist/src/schemas/askUser.mjs +3 -3
  333. package/dist/src/schemas/askUser.mjs.map +1 -1
  334. package/dist/src/schemas/backgroundWork.cjs +10 -10
  335. package/dist/src/schemas/backgroundWork.cjs.map +1 -1
  336. package/dist/src/schemas/backgroundWork.d.mts +9 -9
  337. package/dist/src/schemas/backgroundWork.d.mts.map +1 -1
  338. package/dist/src/schemas/backgroundWork.mjs +8 -8
  339. package/dist/src/schemas/backgroundWork.mjs.map +1 -1
  340. package/dist/src/schemas/childProcess.cjs +5 -5
  341. package/dist/src/schemas/childProcess.cjs.map +1 -1
  342. package/dist/src/schemas/childProcess.d.mts +2 -2
  343. package/dist/src/schemas/childProcess.mjs +5 -5
  344. package/dist/src/schemas/childProcess.mjs.map +1 -1
  345. package/dist/src/schemas/contextContributions.cjs +10 -10
  346. package/dist/src/schemas/contextContributions.cjs.map +1 -1
  347. package/dist/src/schemas/contextContributions.d.mts +16 -16
  348. package/dist/src/schemas/contextContributions.d.mts.map +1 -1
  349. package/dist/src/schemas/contextContributions.mjs +8 -8
  350. package/dist/src/schemas/contextContributions.mjs.map +1 -1
  351. package/dist/src/schemas/delegation.cjs +17 -17
  352. package/dist/src/schemas/delegation.cjs.map +1 -1
  353. package/dist/src/schemas/delegation.d.mts +16 -16
  354. package/dist/src/schemas/delegation.d.mts.map +1 -1
  355. package/dist/src/schemas/delegation.mjs +10 -10
  356. package/dist/src/schemas/delegation.mjs.map +1 -1
  357. package/dist/src/schemas/extensionFile.d.mts +23 -19
  358. package/dist/src/schemas/extensionFile.d.mts.map +1 -1
  359. package/dist/src/schemas/footer.cjs.map +1 -1
  360. package/dist/src/schemas/footer.d.mts +5 -5
  361. package/dist/src/schemas/footer.d.mts.map +1 -1
  362. package/dist/src/schemas/footer.mjs.map +1 -1
  363. package/dist/src/schemas/headless.cjs +37 -37
  364. package/dist/src/schemas/headless.cjs.map +1 -1
  365. package/dist/src/schemas/headless.d.mts +100 -101
  366. package/dist/src/schemas/headless.d.mts.map +1 -1
  367. package/dist/src/schemas/headless.mjs +24 -24
  368. package/dist/src/schemas/headless.mjs.map +1 -1
  369. package/dist/src/schemas/help.cjs +60 -60
  370. package/dist/src/schemas/help.cjs.map +1 -1
  371. package/dist/src/schemas/help.d.mts +43 -43
  372. package/dist/src/schemas/help.d.mts.map +1 -1
  373. package/dist/src/schemas/help.mjs +41 -41
  374. package/dist/src/schemas/help.mjs.map +1 -1
  375. package/dist/src/schemas/home.cjs +127 -0
  376. package/dist/src/schemas/home.cjs.map +1 -0
  377. package/dist/src/schemas/home.d.mts +63 -0
  378. package/dist/src/schemas/home.d.mts.map +1 -0
  379. package/dist/src/schemas/home.mjs +121 -0
  380. package/dist/src/schemas/home.mjs.map +1 -0
  381. package/dist/src/schemas/httpApiContracts.cjs +441 -0
  382. package/dist/src/schemas/httpApiContracts.cjs.map +1 -0
  383. package/dist/src/schemas/httpApiContracts.d.mts +78 -0
  384. package/dist/src/schemas/httpApiContracts.d.mts.map +1 -0
  385. package/dist/src/schemas/httpApiContracts.mjs +434 -0
  386. package/dist/src/schemas/httpApiContracts.mjs.map +1 -0
  387. package/dist/src/schemas/hubChannel.cjs +3 -0
  388. package/dist/src/schemas/hubChannel.cjs.map +1 -1
  389. package/dist/src/schemas/hubChannel.d.mts +84 -60
  390. package/dist/src/schemas/hubChannel.d.mts.map +1 -1
  391. package/dist/src/schemas/hubChannel.mjs +3 -1
  392. package/dist/src/schemas/hubChannel.mjs.map +1 -1
  393. package/dist/src/schemas/leader.cjs.map +1 -1
  394. package/dist/src/schemas/leader.d.mts +3 -3
  395. package/dist/src/schemas/leader.d.mts.map +1 -1
  396. package/dist/src/schemas/leader.mjs.map +1 -1
  397. package/dist/src/schemas/mcpBundle.d.mts +3 -3
  398. package/dist/src/schemas/mcpFacet.cjs.map +1 -1
  399. package/dist/src/schemas/mcpFacet.d.mts +22 -22
  400. package/dist/src/schemas/mcpFacet.d.mts.map +1 -1
  401. package/dist/src/schemas/mcpFacet.mjs.map +1 -1
  402. package/dist/src/schemas/mcpProjection.cjs +41 -41
  403. package/dist/src/schemas/mcpProjection.cjs.map +1 -1
  404. package/dist/src/schemas/mcpProjection.d.mts +31 -30
  405. package/dist/src/schemas/mcpProjection.d.mts.map +1 -1
  406. package/dist/src/schemas/mcpProjection.mjs +29 -29
  407. package/dist/src/schemas/mcpProjection.mjs.map +1 -1
  408. package/dist/src/schemas/mcpSession.cjs +23 -23
  409. package/dist/src/schemas/mcpSession.cjs.map +1 -1
  410. package/dist/src/schemas/mcpSession.d.mts +12 -12
  411. package/dist/src/schemas/mcpSession.d.mts.map +1 -1
  412. package/dist/src/schemas/mcpSession.mjs +18 -18
  413. package/dist/src/schemas/mcpSession.mjs.map +1 -1
  414. package/dist/src/schemas/mcpStatus.cjs +5 -5
  415. package/dist/src/schemas/mcpStatus.cjs.map +1 -1
  416. package/dist/src/schemas/mcpStatus.d.mts +4 -4
  417. package/dist/src/schemas/mcpStatus.d.mts.map +1 -1
  418. package/dist/src/schemas/mcpStatus.mjs +4 -4
  419. package/dist/src/schemas/mcpStatus.mjs.map +1 -1
  420. package/dist/src/schemas/mcpToolResolver.cjs +9 -9
  421. package/dist/src/schemas/mcpToolResolver.cjs.map +1 -1
  422. package/dist/src/schemas/mcpToolResolver.d.mts +7 -7
  423. package/dist/src/schemas/mcpToolResolver.d.mts.map +1 -1
  424. package/dist/src/schemas/mcpToolResolver.mjs +7 -7
  425. package/dist/src/schemas/mcpToolResolver.mjs.map +1 -1
  426. package/dist/src/schemas/narration.cjs +9 -9
  427. package/dist/src/schemas/narration.cjs.map +1 -1
  428. package/dist/src/schemas/narration.d.mts +5 -5
  429. package/dist/src/schemas/narration.d.mts.map +1 -1
  430. package/dist/src/schemas/narration.mjs +7 -7
  431. package/dist/src/schemas/narration.mjs.map +1 -1
  432. package/dist/src/schemas/notification.cjs +45 -45
  433. package/dist/src/schemas/notification.cjs.map +1 -1
  434. package/dist/src/schemas/notification.d.mts +22 -22
  435. package/dist/src/schemas/notification.d.mts.map +1 -1
  436. package/dist/src/schemas/notification.mjs +31 -31
  437. package/dist/src/schemas/notification.mjs.map +1 -1
  438. package/dist/src/schemas/packageApi.cjs +28 -28
  439. package/dist/src/schemas/packageApi.cjs.map +1 -1
  440. package/dist/src/schemas/packageApi.d.mts +91 -65
  441. package/dist/src/schemas/packageApi.d.mts.map +1 -1
  442. package/dist/src/schemas/packageApi.mjs +18 -18
  443. package/dist/src/schemas/packageApi.mjs.map +1 -1
  444. package/dist/src/schemas/platform.cjs +34 -0
  445. package/dist/src/schemas/platform.cjs.map +1 -0
  446. package/dist/src/schemas/platform.d.mts +75 -0
  447. package/dist/src/schemas/platform.d.mts.map +1 -0
  448. package/dist/src/schemas/platform.mjs +27 -0
  449. package/dist/src/schemas/platform.mjs.map +1 -0
  450. package/dist/src/schemas/pluginContributions.cjs.map +1 -1
  451. package/dist/src/schemas/pluginContributions.d.mts +12 -12
  452. package/dist/src/schemas/pluginContributions.d.mts.map +1 -1
  453. package/dist/src/schemas/pluginContributions.mjs.map +1 -1
  454. package/dist/src/schemas/pluginProtocol.cjs +24 -27
  455. package/dist/src/schemas/pluginProtocol.cjs.map +1 -1
  456. package/dist/src/schemas/pluginProtocol.d.mts +21 -21
  457. package/dist/src/schemas/pluginProtocol.d.mts.map +1 -1
  458. package/dist/src/schemas/pluginProtocol.mjs +18 -20
  459. package/dist/src/schemas/pluginProtocol.mjs.map +1 -1
  460. package/dist/src/schemas/profileIdentity.cjs +2 -2
  461. package/dist/src/schemas/profileIdentity.cjs.map +1 -1
  462. package/dist/src/schemas/profileIdentity.d.mts +1 -1
  463. package/dist/src/schemas/profileIdentity.mjs +2 -2
  464. package/dist/src/schemas/profileIdentity.mjs.map +1 -1
  465. package/dist/src/schemas/protocolChannelsContract.cjs +27 -0
  466. package/dist/src/schemas/protocolChannelsContract.cjs.map +1 -0
  467. package/dist/src/schemas/protocolChannelsContract.d.mts +37 -0
  468. package/dist/src/schemas/protocolChannelsContract.d.mts.map +1 -0
  469. package/dist/src/schemas/protocolChannelsContract.mjs +25 -0
  470. package/dist/src/schemas/protocolChannelsContract.mjs.map +1 -0
  471. package/dist/src/schemas/protocolContracts.cjs +168 -0
  472. package/dist/src/schemas/protocolContracts.cjs.map +1 -0
  473. package/dist/src/schemas/protocolContracts.d.mts +69 -0
  474. package/dist/src/schemas/protocolContracts.d.mts.map +1 -0
  475. package/dist/src/schemas/protocolContracts.mjs +164 -0
  476. package/dist/src/schemas/protocolContracts.mjs.map +1 -0
  477. package/dist/src/schemas/protocolHubContract.cjs +51 -0
  478. package/dist/src/schemas/protocolHubContract.cjs.map +1 -0
  479. package/dist/src/schemas/protocolHubContract.d.mts +218 -0
  480. package/dist/src/schemas/protocolHubContract.d.mts.map +1 -0
  481. package/dist/src/schemas/protocolHubContract.mjs +49 -0
  482. package/dist/src/schemas/protocolHubContract.mjs.map +1 -0
  483. package/dist/src/schemas/protocolSessionContract.cjs +22 -0
  484. package/dist/src/schemas/protocolSessionContract.cjs.map +1 -0
  485. package/dist/src/schemas/protocolSessionContract.d.mts +324 -0
  486. package/dist/src/schemas/protocolSessionContract.d.mts.map +1 -0
  487. package/dist/src/schemas/protocolSessionContract.mjs +22 -0
  488. package/dist/src/schemas/protocolSessionContract.mjs.map +1 -0
  489. package/dist/src/schemas/protocolThreadContract.cjs +21 -0
  490. package/dist/src/schemas/protocolThreadContract.cjs.map +1 -0
  491. package/dist/src/schemas/protocolThreadContract.d.mts +29 -0
  492. package/dist/src/schemas/protocolThreadContract.d.mts.map +1 -0
  493. package/dist/src/schemas/protocolThreadContract.mjs +20 -0
  494. package/dist/src/schemas/protocolThreadContract.mjs.map +1 -0
  495. package/dist/src/schemas/readiness.cjs +36 -36
  496. package/dist/src/schemas/readiness.cjs.map +1 -1
  497. package/dist/src/schemas/readiness.d.mts +37 -37
  498. package/dist/src/schemas/readiness.d.mts.map +1 -1
  499. package/dist/src/schemas/readiness.mjs +31 -31
  500. package/dist/src/schemas/readiness.mjs.map +1 -1
  501. package/dist/src/schemas/serverBundle.d.mts +5 -5
  502. package/dist/src/schemas/serverPlugin.cjs +103 -0
  503. package/dist/src/schemas/serverPlugin.cjs.map +1 -0
  504. package/dist/src/schemas/serverPlugin.d.mts +176 -0
  505. package/dist/src/schemas/serverPlugin.d.mts.map +1 -0
  506. package/dist/src/schemas/serverPlugin.mjs +95 -0
  507. package/dist/src/schemas/serverPlugin.mjs.map +1 -0
  508. package/dist/src/schemas/serverScope.cjs +37 -0
  509. package/dist/src/schemas/serverScope.cjs.map +1 -0
  510. package/dist/src/schemas/serverScope.d.mts +77 -0
  511. package/dist/src/schemas/serverScope.d.mts.map +1 -0
  512. package/dist/src/schemas/serverScope.mjs +33 -0
  513. package/dist/src/schemas/serverScope.mjs.map +1 -0
  514. package/dist/src/schemas/sessionApiContracts.cjs +320 -0
  515. package/dist/src/schemas/sessionApiContracts.cjs.map +1 -0
  516. package/dist/src/schemas/sessionApiContracts.mjs +318 -0
  517. package/dist/src/schemas/sessionApiContracts.mjs.map +1 -0
  518. package/dist/src/schemas/sessionProtocol.cjs +20 -13
  519. package/dist/src/schemas/sessionProtocol.cjs.map +1 -1
  520. package/dist/src/schemas/sessionProtocol.d.mts +37 -54
  521. package/dist/src/schemas/sessionProtocol.d.mts.map +1 -1
  522. package/dist/src/schemas/sessionProtocol.mjs +17 -8
  523. package/dist/src/schemas/sessionProtocol.mjs.map +1 -1
  524. package/dist/src/schemas/skills.cjs +16 -16
  525. package/dist/src/schemas/skills.cjs.map +1 -1
  526. package/dist/src/schemas/skills.d.mts +7 -7
  527. package/dist/src/schemas/skills.d.mts.map +1 -1
  528. package/dist/src/schemas/skills.mjs +12 -12
  529. package/dist/src/schemas/skills.mjs.map +1 -1
  530. package/dist/src/schemas/toolOverrides.cjs +9 -9
  531. package/dist/src/schemas/toolOverrides.cjs.map +1 -1
  532. package/dist/src/schemas/toolOverrides.d.mts +8 -8
  533. package/dist/src/schemas/toolOverrides.d.mts.map +1 -1
  534. package/dist/src/schemas/toolOverrides.mjs +7 -7
  535. package/dist/src/schemas/toolOverrides.mjs.map +1 -1
  536. package/dist/src/schemas/toolSurface.cjs +9 -9
  537. package/dist/src/schemas/toolSurface.cjs.map +1 -1
  538. package/dist/src/schemas/toolSurface.d.mts +13 -13
  539. package/dist/src/schemas/toolSurface.d.mts.map +1 -1
  540. package/dist/src/schemas/toolSurface.mjs +7 -7
  541. package/dist/src/schemas/toolSurface.mjs.map +1 -1
  542. package/dist/src/schemas/uiHub.cjs +9 -9
  543. package/dist/src/schemas/uiHub.cjs.map +1 -1
  544. package/dist/src/schemas/uiHub.d.mts +12 -12
  545. package/dist/src/schemas/uiHub.d.mts.map +1 -1
  546. package/dist/src/schemas/uiHub.mjs +7 -7
  547. package/dist/src/schemas/uiHub.mjs.map +1 -1
  548. package/dist/src/server/directHarnessRuntime.cjs +691 -775
  549. package/dist/src/server/directHarnessRuntime.cjs.map +1 -1
  550. package/dist/src/server/directHarnessRuntime.d.mts +5 -1
  551. package/dist/src/server/directHarnessRuntime.d.mts.map +1 -0
  552. package/dist/src/server/directHarnessRuntime.mjs +671 -754
  553. package/dist/src/server/directHarnessRuntime.mjs.map +1 -1
  554. package/dist/src/server/largeFrameLink.cjs +47 -0
  555. package/dist/src/server/largeFrameLink.cjs.map +1 -0
  556. package/dist/src/server/largeFrameLink.mjs +47 -0
  557. package/dist/src/server/largeFrameLink.mjs.map +1 -0
  558. package/dist/src/server/liveImport.cjs +1 -1
  559. package/dist/src/server/liveImport.cjs.map +1 -1
  560. package/dist/src/server/liveImport.d.mts +1 -1
  561. package/dist/src/server/liveImport.mjs +1 -1
  562. package/dist/src/server/liveImport.mjs.map +1 -1
  563. package/dist/src/server/mcpBundleLoader.cjs.map +1 -1
  564. package/dist/src/server/mcpBundleLoader.d.mts +6 -6
  565. package/dist/src/server/mcpBundleLoader.d.mts.map +1 -1
  566. package/dist/src/server/mcpBundleLoader.mjs.map +1 -1
  567. package/dist/src/server/serverPackages.cjs +60 -0
  568. package/dist/src/server/serverPackages.cjs.map +1 -0
  569. package/dist/src/server/serverPackages.d.mts +44 -0
  570. package/dist/src/server/serverPackages.d.mts.map +1 -0
  571. package/dist/src/server/serverPackages.mjs +59 -0
  572. package/dist/src/server/serverPackages.mjs.map +1 -0
  573. package/dist/src/server/serverScope.cjs +510 -0
  574. package/dist/src/server/serverScope.cjs.map +1 -0
  575. package/dist/src/server/serverScope.d.mts +123 -0
  576. package/dist/src/server/serverScope.d.mts.map +1 -0
  577. package/dist/src/server/serverScope.mjs +510 -0
  578. package/dist/src/server/serverScope.mjs.map +1 -0
  579. package/dist/src/server/sessionMcpHandler.cjs +3 -3
  580. package/dist/src/server/sessionMcpHandler.cjs.map +1 -1
  581. package/dist/src/server/sessionMcpHandler.mjs +4 -4
  582. package/dist/src/server/sessionMcpHandler.mjs.map +1 -1
  583. package/dist/src/server/sessionMcpRoutes.cjs +2 -1
  584. package/dist/src/server/sessionMcpRoutes.cjs.map +1 -1
  585. package/dist/src/server/sessionMcpRoutes.mjs +2 -1
  586. package/dist/src/server/sessionMcpRoutes.mjs.map +1 -1
  587. package/dist/src/server/threadJournals.cjs +38 -107
  588. package/dist/src/server/threadJournals.cjs.map +1 -1
  589. package/dist/src/server/threadJournals.mjs +38 -104
  590. package/dist/src/server/threadJournals.mjs.map +1 -1
  591. package/dist/src/services/apiSurfaceAssert/index.cjs +1 -1
  592. package/dist/src/services/apiSurfaceAssert/index.cjs.map +1 -1
  593. package/dist/src/services/apiSurfaceAssert/index.d.mts +6 -6
  594. package/dist/src/services/apiSurfaceAssert/index.mjs +1 -1
  595. package/dist/src/services/apiSurfaceAssert/index.mjs.map +1 -1
  596. package/dist/src/services/chatgptAuth/index.cjs +1 -220
  597. package/dist/src/services/chatgptAuth/index.cjs.map +1 -1
  598. package/dist/src/services/chatgptAuth/index.d.mts +0 -18
  599. package/dist/src/services/chatgptAuth/index.d.mts.map +1 -1
  600. package/dist/src/services/chatgptAuth/index.mjs +1 -217
  601. package/dist/src/services/chatgptAuth/index.mjs.map +1 -1
  602. package/dist/src/services/chatgptImages/index.cjs +1 -1
  603. package/dist/src/services/chatgptImages/index.cjs.map +1 -1
  604. package/dist/src/services/chatgptImages/index.mjs +1 -1
  605. package/dist/src/services/chatgptImages/index.mjs.map +1 -1
  606. package/dist/src/services/chatgptLogin/index.cjs +230 -0
  607. package/dist/src/services/chatgptLogin/index.cjs.map +1 -0
  608. package/dist/src/services/chatgptLogin/index.d.mts +21 -0
  609. package/dist/src/services/chatgptLogin/index.d.mts.map +1 -0
  610. package/dist/src/services/chatgptLogin/index.mjs +227 -0
  611. package/dist/src/services/chatgptLogin/index.mjs.map +1 -0
  612. package/dist/src/services/chatgptWebSearch/index.cjs +1 -1
  613. package/dist/src/services/chatgptWebSearch/index.cjs.map +1 -1
  614. package/dist/src/services/chatgptWebSearch/index.mjs +1 -1
  615. package/dist/src/services/chatgptWebSearch/index.mjs.map +1 -1
  616. package/dist/src/services/contextContributions/index.cjs +8 -8
  617. package/dist/src/services/contextContributions/index.cjs.map +1 -1
  618. package/dist/src/services/contextContributions/index.d.mts +3 -3
  619. package/dist/src/services/contextContributions/index.d.mts.map +1 -1
  620. package/dist/src/services/contextContributions/index.mjs +8 -8
  621. package/dist/src/services/contextContributions/index.mjs.map +1 -1
  622. package/dist/src/services/devProxyStore/devProxyRecords.cjs +59 -0
  623. package/dist/src/services/devProxyStore/devProxyRecords.cjs.map +1 -0
  624. package/dist/src/services/devProxyStore/devProxyRecords.mjs +56 -0
  625. package/dist/src/services/devProxyStore/devProxyRecords.mjs.map +1 -0
  626. package/dist/src/services/devProxyStore/index.cjs +7 -101
  627. package/dist/src/services/devProxyStore/index.cjs.map +1 -1
  628. package/dist/src/services/devProxyStore/index.mjs +7 -101
  629. package/dist/src/services/devProxyStore/index.mjs.map +1 -1
  630. package/dist/src/services/devProxyStore/sync.cjs +66 -0
  631. package/dist/src/services/devProxyStore/sync.cjs.map +1 -0
  632. package/dist/src/services/devProxyStore/sync.mjs +63 -0
  633. package/dist/src/services/devProxyStore/sync.mjs.map +1 -0
  634. package/dist/src/services/durableNavigation/docs.cjs +15 -0
  635. package/dist/src/services/durableNavigation/docs.cjs.map +1 -0
  636. package/dist/src/services/durableNavigation/docs.mjs +16 -0
  637. package/dist/src/services/durableNavigation/docs.mjs.map +1 -0
  638. package/dist/src/services/durableNavigation/index.cjs +3 -18
  639. package/dist/src/services/durableNavigation/index.cjs.map +1 -1
  640. package/dist/src/services/durableNavigation/index.mjs +2 -17
  641. package/dist/src/services/durableNavigation/index.mjs.map +1 -1
  642. package/dist/src/services/durableQueue/docs.cjs +12 -0
  643. package/dist/src/services/durableQueue/docs.cjs.map +1 -0
  644. package/dist/src/services/durableQueue/docs.mjs +13 -0
  645. package/dist/src/services/durableQueue/docs.mjs.map +1 -0
  646. package/dist/src/services/durableQueue/index.cjs +151 -0
  647. package/dist/src/services/durableQueue/index.cjs.map +1 -0
  648. package/dist/src/services/durableQueue/index.mjs +149 -0
  649. package/dist/src/services/durableQueue/index.mjs.map +1 -0
  650. package/dist/src/services/durableRequestReceipts/docs.cjs +11 -0
  651. package/dist/src/services/durableRequestReceipts/docs.cjs.map +1 -0
  652. package/dist/src/services/durableRequestReceipts/docs.mjs +12 -0
  653. package/dist/src/services/durableRequestReceipts/docs.mjs.map +1 -0
  654. package/dist/src/services/{requestReceipts → durableRequestReceipts}/index.cjs +10 -16
  655. package/dist/src/services/durableRequestReceipts/index.cjs.map +1 -0
  656. package/dist/src/services/durableRequestReceipts/index.d.mts +12 -0
  657. package/dist/src/services/durableRequestReceipts/index.d.mts.map +1 -0
  658. package/dist/src/services/{requestReceipts → durableRequestReceipts}/index.mjs +7 -13
  659. package/dist/src/services/durableRequestReceipts/index.mjs.map +1 -0
  660. package/dist/src/services/durableSession/docs.cjs +65 -0
  661. package/dist/src/services/durableSession/docs.cjs.map +1 -0
  662. package/dist/src/services/durableSession/docs.d.mts +17 -0
  663. package/dist/src/services/durableSession/docs.d.mts.map +1 -0
  664. package/dist/src/services/durableSession/docs.mjs +60 -0
  665. package/dist/src/services/durableSession/docs.mjs.map +1 -0
  666. package/dist/src/services/durableSession/index.cjs +21 -0
  667. package/dist/src/services/durableSession/index.cjs.map +1 -0
  668. package/dist/src/services/durableSession/index.d.mts +13 -0
  669. package/dist/src/services/durableSession/index.d.mts.map +1 -0
  670. package/dist/src/services/durableSession/index.mjs +20 -0
  671. package/dist/src/services/durableSession/index.mjs.map +1 -0
  672. package/dist/src/services/durableSubagents/docs.cjs +15 -0
  673. package/dist/src/services/durableSubagents/docs.cjs.map +1 -0
  674. package/dist/src/services/durableSubagents/docs.mjs +16 -0
  675. package/dist/src/services/durableSubagents/docs.mjs.map +1 -0
  676. package/dist/src/services/durableSubagents/extension.cjs +11 -0
  677. package/dist/src/services/durableSubagents/extension.cjs.map +1 -0
  678. package/dist/src/services/durableSubagents/extension.mjs +12 -0
  679. package/dist/src/services/durableSubagents/extension.mjs.map +1 -0
  680. package/dist/src/services/durableSubagents/index.cjs +95 -0
  681. package/dist/src/services/durableSubagents/index.cjs.map +1 -0
  682. package/dist/src/services/durableSubagents/index.mjs +90 -0
  683. package/dist/src/services/durableSubagents/index.mjs.map +1 -0
  684. package/dist/src/services/durableSubagents/tasks.cjs +25 -0
  685. package/dist/src/services/durableSubagents/tasks.cjs.map +1 -0
  686. package/dist/src/services/durableSubagents/tasks.mjs +26 -0
  687. package/dist/src/services/durableSubagents/tasks.mjs.map +1 -0
  688. package/dist/src/services/headlessClient/index.cjs +20 -13
  689. package/dist/src/services/headlessClient/index.cjs.map +1 -1
  690. package/dist/src/services/headlessClient/index.mjs +21 -14
  691. package/dist/src/services/headlessClient/index.mjs.map +1 -1
  692. package/dist/src/services/historyOwnership/type.d.mts +15 -0
  693. package/dist/src/services/historyOwnership/type.d.mts.map +1 -0
  694. package/dist/src/services/hubChannelHarness/index.cjs +2 -2
  695. package/dist/src/services/hubChannelHarness/index.cjs.map +1 -1
  696. package/dist/src/services/hubChannelHarness/index.d.mts +8 -8
  697. package/dist/src/services/hubChannelHarness/index.d.mts.map +1 -1
  698. package/dist/src/services/hubChannelHarness/index.mjs +2 -2
  699. package/dist/src/services/hubChannelHarness/index.mjs.map +1 -1
  700. package/dist/src/services/json/core.cjs +30 -0
  701. package/dist/src/services/json/core.cjs.map +1 -0
  702. package/dist/src/services/json/core.d.mts +21 -0
  703. package/dist/src/services/json/core.d.mts.map +1 -0
  704. package/dist/src/services/json/core.mjs +26 -0
  705. package/dist/src/services/json/core.mjs.map +1 -0
  706. package/dist/src/services/json/sync.cjs +48 -0
  707. package/dist/src/services/json/sync.cjs.map +1 -0
  708. package/dist/src/services/json/sync.d.mts +22 -0
  709. package/dist/src/services/json/sync.d.mts.map +1 -0
  710. package/dist/src/services/json/sync.mjs +43 -0
  711. package/dist/src/services/json/sync.mjs.map +1 -0
  712. package/dist/src/services/kernel/index.cjs +2 -2
  713. package/dist/src/services/kernel/index.cjs.map +1 -1
  714. package/dist/src/services/kernel/index.d.mts +3 -3
  715. package/dist/src/services/kernel/index.d.mts.map +1 -1
  716. package/dist/src/services/kernel/index.mjs +2 -2
  717. package/dist/src/services/kernel/index.mjs.map +1 -1
  718. package/dist/src/services/nativeChildTools/index.cjs +16 -0
  719. package/dist/src/services/nativeChildTools/index.cjs.map +1 -0
  720. package/dist/src/services/nativeChildTools/index.mjs +16 -0
  721. package/dist/src/services/nativeChildTools/index.mjs.map +1 -0
  722. package/dist/src/services/nodeHost/index.cjs +30 -0
  723. package/dist/src/services/nodeHost/index.cjs.map +1 -0
  724. package/dist/src/services/nodeHost/index.d.mts +16 -0
  725. package/dist/src/services/nodeHost/index.d.mts.map +1 -0
  726. package/dist/src/services/nodeHost/index.mjs +27 -0
  727. package/dist/src/services/nodeHost/index.mjs.map +1 -0
  728. package/dist/src/services/nodeModelDependencies/index.cjs +89 -0
  729. package/dist/src/services/nodeModelDependencies/index.cjs.map +1 -0
  730. package/dist/src/services/nodeModelDependencies/index.mjs +86 -0
  731. package/dist/src/services/nodeModelDependencies/index.mjs.map +1 -0
  732. package/dist/src/services/openSessionRegistry/index.cjs +6 -128
  733. package/dist/src/services/openSessionRegistry/index.cjs.map +1 -1
  734. package/dist/src/services/openSessionRegistry/index.d.mts +5 -36
  735. package/dist/src/services/openSessionRegistry/index.mjs +6 -128
  736. package/dist/src/services/openSessionRegistry/index.mjs.map +1 -1
  737. package/dist/src/services/openSessionRegistry/openSessionRecords.cjs +87 -0
  738. package/dist/src/services/openSessionRegistry/openSessionRecords.cjs.map +1 -0
  739. package/dist/src/services/openSessionRegistry/openSessionRecords.d.mts +30 -0
  740. package/dist/src/services/openSessionRegistry/openSessionRecords.d.mts.map +1 -0
  741. package/dist/src/services/openSessionRegistry/openSessionRecords.mjs +81 -0
  742. package/dist/src/services/openSessionRegistry/openSessionRecords.mjs.map +1 -0
  743. package/dist/src/services/openSessionRegistry/sync.cjs +71 -0
  744. package/dist/src/services/openSessionRegistry/sync.cjs.map +1 -0
  745. package/dist/src/services/openSessionRegistry/sync.d.mts +14 -0
  746. package/dist/src/services/openSessionRegistry/sync.d.mts.map +1 -0
  747. package/dist/src/services/openSessionRegistry/sync.mjs +68 -0
  748. package/dist/src/services/openSessionRegistry/sync.mjs.map +1 -0
  749. package/dist/src/services/packageApiHarness/index.cjs +1 -1
  750. package/dist/src/services/packageApiHarness/index.cjs.map +1 -1
  751. package/dist/src/services/packageApiHarness/index.d.mts +6 -6
  752. package/dist/src/services/packageApiHarness/index.d.mts.map +1 -1
  753. package/dist/src/services/packageApiHarness/index.mjs +2 -2
  754. package/dist/src/services/packageApiHarness/index.mjs.map +1 -1
  755. package/dist/src/services/piArgs/index.cjs +53 -0
  756. package/dist/src/services/piArgs/index.cjs.map +1 -0
  757. package/dist/src/services/piArgs/index.d.mts +6 -0
  758. package/dist/src/services/piArgs/index.d.mts.map +1 -0
  759. package/dist/src/services/piArgs/index.mjs +53 -0
  760. package/dist/src/services/piArgs/index.mjs.map +1 -0
  761. package/dist/src/services/piExtensionHost/index.cjs +47 -39
  762. package/dist/src/services/piExtensionHost/index.cjs.map +1 -1
  763. package/dist/src/services/piExtensionHost/index.d.mts +83 -0
  764. package/dist/src/services/piExtensionHost/index.d.mts.map +1 -0
  765. package/dist/src/services/piExtensionHost/index.mjs +47 -38
  766. package/dist/src/services/piExtensionHost/index.mjs.map +1 -1
  767. package/dist/src/services/piHelpTools/index.cjs +5 -5
  768. package/dist/src/services/piHelpTools/index.cjs.map +1 -1
  769. package/dist/src/services/piHelpTools/index.d.mts.map +1 -1
  770. package/dist/src/services/piHelpTools/index.mjs +7 -7
  771. package/dist/src/services/piHelpTools/index.mjs.map +1 -1
  772. package/dist/src/services/piMessages/index.cjs +106 -0
  773. package/dist/src/services/piMessages/index.cjs.map +1 -0
  774. package/dist/src/services/piMessages/index.mjs +105 -0
  775. package/dist/src/services/piMessages/index.mjs.map +1 -0
  776. package/dist/src/services/piSessionEntries/index.cjs +4 -4
  777. package/dist/src/services/piSessionEntries/index.cjs.map +1 -1
  778. package/dist/src/services/piSessionEntries/index.mjs +3 -3
  779. package/dist/src/services/piSessionEntries/index.mjs.map +1 -1
  780. package/dist/src/services/piSettings/core.cjs +308 -0
  781. package/dist/src/services/piSettings/core.cjs.map +1 -0
  782. package/dist/src/services/piSettings/core.d.mts +102 -0
  783. package/dist/src/services/piSettings/core.d.mts.map +1 -0
  784. package/dist/src/services/piSettings/core.mjs +276 -0
  785. package/dist/src/services/piSettings/core.mjs.map +1 -0
  786. package/dist/src/services/piSettings/sync.cjs +119 -0
  787. package/dist/src/services/piSettings/sync.cjs.map +1 -0
  788. package/dist/src/services/piSettings/sync.d.mts +44 -0
  789. package/dist/src/services/piSettings/sync.d.mts.map +1 -0
  790. package/dist/src/services/piSettings/sync.mjs +110 -0
  791. package/dist/src/services/piSettings/sync.mjs.map +1 -0
  792. package/dist/src/services/piSummary/index.cjs +7 -0
  793. package/dist/src/services/piSummary/index.cjs.map +1 -0
  794. package/dist/src/services/piSummary/index.mjs +7 -0
  795. package/dist/src/services/piSummary/index.mjs.map +1 -0
  796. package/dist/src/services/platformFiles/index.cjs +44 -0
  797. package/dist/src/services/platformFiles/index.cjs.map +1 -0
  798. package/dist/src/services/platformFiles/index.d.mts +16 -0
  799. package/dist/src/services/platformFiles/index.d.mts.map +1 -0
  800. package/dist/src/services/platformFiles/index.mjs +39 -0
  801. package/dist/src/services/platformFiles/index.mjs.map +1 -0
  802. package/dist/src/services/pluginLifecycle/index.cjs +19 -13
  803. package/dist/src/services/pluginLifecycle/index.cjs.map +1 -1
  804. package/dist/src/services/pluginLifecycle/index.d.mts +2 -0
  805. package/dist/src/services/pluginLifecycle/index.d.mts.map +1 -1
  806. package/dist/src/services/pluginLifecycle/index.mjs +19 -14
  807. package/dist/src/services/pluginLifecycle/index.mjs.map +1 -1
  808. package/dist/src/services/poPackage/core.cjs +73 -0
  809. package/dist/src/services/poPackage/core.cjs.map +1 -0
  810. package/dist/src/services/poPackage/core.d.mts +32 -0
  811. package/dist/src/services/poPackage/core.d.mts.map +1 -0
  812. package/dist/src/services/poPackage/core.mjs +66 -0
  813. package/dist/src/services/poPackage/core.mjs.map +1 -0
  814. package/dist/src/services/poPackage/sync.cjs +55 -0
  815. package/dist/src/services/poPackage/sync.cjs.map +1 -0
  816. package/dist/src/services/poPackage/sync.d.mts +21 -0
  817. package/dist/src/services/poPackage/sync.d.mts.map +1 -0
  818. package/dist/src/services/poPackage/sync.mjs +50 -0
  819. package/dist/src/services/poPackage/sync.mjs.map +1 -0
  820. package/dist/src/services/providerAuth/index.cjs +11 -7
  821. package/dist/src/services/providerAuth/index.cjs.map +1 -1
  822. package/dist/src/services/providerAuth/index.mjs +11 -7
  823. package/dist/src/services/providerAuth/index.mjs.map +1 -1
  824. package/dist/src/services/publicFileShares/index.cjs +1 -1
  825. package/dist/src/services/publicFileShares/index.cjs.map +1 -1
  826. package/dist/src/services/publicFileShares/index.d.mts +2 -2
  827. package/dist/src/services/publicFileShares/index.mjs +2 -2
  828. package/dist/src/services/publicFileShares/index.mjs.map +1 -1
  829. package/dist/src/services/remoteAccess/index.d.mts +1 -0
  830. package/dist/src/services/remoteAccess/index.d.mts.map +1 -1
  831. package/dist/src/services/remoteAccessStore/index.cjs +8 -190
  832. package/dist/src/services/remoteAccessStore/index.cjs.map +1 -1
  833. package/dist/src/services/remoteAccessStore/index.d.mts +2 -0
  834. package/dist/src/services/remoteAccessStore/index.mjs +7 -187
  835. package/dist/src/services/remoteAccessStore/index.mjs.map +1 -1
  836. package/dist/src/services/remoteAccessStore/remoteAccessRecords.cjs +98 -0
  837. package/dist/src/services/remoteAccessStore/remoteAccessRecords.cjs.map +1 -0
  838. package/dist/src/services/remoteAccessStore/remoteAccessRecords.mjs +88 -0
  839. package/dist/src/services/remoteAccessStore/remoteAccessRecords.mjs.map +1 -0
  840. package/dist/src/services/remoteAccessStore/sync.cjs +111 -0
  841. package/dist/src/services/remoteAccessStore/sync.cjs.map +1 -0
  842. package/dist/src/services/remoteAccessStore/sync.mjs +108 -0
  843. package/dist/src/services/remoteAccessStore/sync.mjs.map +1 -0
  844. package/dist/src/services/runtimeIdentity/sync.cjs +23 -0
  845. package/dist/src/services/runtimeIdentity/sync.cjs.map +1 -0
  846. package/dist/src/services/runtimeIdentity/sync.d.mts +9 -0
  847. package/dist/src/services/runtimeIdentity/sync.d.mts.map +1 -0
  848. package/dist/src/services/runtimeIdentity/sync.mjs +20 -0
  849. package/dist/src/services/runtimeIdentity/sync.mjs.map +1 -0
  850. package/dist/src/services/serialRunner/index.cjs +25 -0
  851. package/dist/src/services/serialRunner/index.cjs.map +1 -0
  852. package/dist/src/services/serialRunner/index.d.mts +10 -0
  853. package/dist/src/services/serialRunner/index.d.mts.map +1 -0
  854. package/dist/src/services/serialRunner/index.mjs +25 -0
  855. package/dist/src/services/serialRunner/index.mjs.map +1 -0
  856. package/dist/src/services/{serverFacet → serverHost}/index.cjs +5 -5
  857. package/dist/src/services/serverHost/index.cjs.map +1 -0
  858. package/dist/src/services/serverHost/index.d.mts +31 -0
  859. package/dist/src/services/serverHost/index.d.mts.map +1 -0
  860. package/dist/src/services/{serverFacet → serverHost}/index.mjs +5 -5
  861. package/dist/src/services/serverHost/index.mjs.map +1 -0
  862. package/dist/src/services/sessionAttachments/index.cjs +4 -3
  863. package/dist/src/services/sessionAttachments/index.cjs.map +1 -1
  864. package/dist/src/services/sessionAttachments/index.d.mts +1 -6
  865. package/dist/src/services/sessionAttachments/index.d.mts.map +1 -1
  866. package/dist/src/services/sessionAttachments/index.mjs +3 -2
  867. package/dist/src/services/sessionAttachments/index.mjs.map +1 -1
  868. package/dist/src/services/sessionAttachments/type.d.mts +9 -0
  869. package/dist/src/services/sessionAttachments/type.d.mts.map +1 -0
  870. package/dist/src/services/sessionFiles/index.cjs +96 -0
  871. package/dist/src/services/sessionFiles/index.cjs.map +1 -0
  872. package/dist/src/services/sessionFiles/index.d.mts +33 -0
  873. package/dist/src/services/sessionFiles/index.d.mts.map +1 -0
  874. package/dist/src/services/sessionFiles/index.mjs +89 -0
  875. package/dist/src/services/sessionFiles/index.mjs.map +1 -0
  876. package/dist/src/services/sessionFiles/sessionDirectory.cjs +66 -0
  877. package/dist/src/services/sessionFiles/sessionDirectory.cjs.map +1 -0
  878. package/dist/src/services/sessionFiles/sessionDirectory.mjs +62 -0
  879. package/dist/src/services/sessionFiles/sessionDirectory.mjs.map +1 -0
  880. package/dist/src/services/sessionGitStatus/index.cjs +31 -33
  881. package/dist/src/services/sessionGitStatus/index.cjs.map +1 -1
  882. package/dist/src/services/sessionGitStatus/index.mjs +31 -33
  883. package/dist/src/services/sessionGitStatus/index.mjs.map +1 -1
  884. package/dist/src/services/sessionPresentation/index.cjs +3 -27
  885. package/dist/src/services/sessionPresentation/index.cjs.map +1 -1
  886. package/dist/src/services/sessionPresentation/index.mjs +3 -27
  887. package/dist/src/services/sessionPresentation/index.mjs.map +1 -1
  888. package/dist/src/services/skillPrompt/index.cjs +11 -0
  889. package/dist/src/services/skillPrompt/index.cjs.map +1 -0
  890. package/dist/src/services/skillPrompt/index.mjs +11 -0
  891. package/dist/src/services/skillPrompt/index.mjs.map +1 -0
  892. package/dist/src/services/sqliteSessionHistory/index.cjs +44 -30
  893. package/dist/src/services/sqliteSessionHistory/index.cjs.map +1 -1
  894. package/dist/src/services/sqliteSessionHistory/index.d.mts +7 -4
  895. package/dist/src/services/sqliteSessionHistory/index.d.mts.map +1 -1
  896. package/dist/src/services/sqliteSessionHistory/index.mjs +43 -28
  897. package/dist/src/services/sqliteSessionHistory/index.mjs.map +1 -1
  898. package/dist/src/services/sqliteTranscriptReader/index.cjs +21 -45
  899. package/dist/src/services/sqliteTranscriptReader/index.cjs.map +1 -1
  900. package/dist/src/services/sqliteTranscriptReader/index.d.mts +3 -2
  901. package/dist/src/services/sqliteTranscriptReader/index.d.mts.map +1 -1
  902. package/dist/src/services/sqliteTranscriptReader/index.mjs +16 -38
  903. package/dist/src/services/sqliteTranscriptReader/index.mjs.map +1 -1
  904. package/dist/src/services/testMode/index.cjs +162 -0
  905. package/dist/src/services/testMode/index.cjs.map +1 -0
  906. package/dist/src/services/testMode/index.d.mts +17 -0
  907. package/dist/src/services/testMode/index.d.mts.map +1 -0
  908. package/dist/src/services/testMode/index.mjs +155 -0
  909. package/dist/src/services/testMode/index.mjs.map +1 -0
  910. package/dist/src/services/toolOverrides/index.cjs +6 -6
  911. package/dist/src/services/toolOverrides/index.cjs.map +1 -1
  912. package/dist/src/services/toolOverrides/index.d.mts +3 -3
  913. package/dist/src/services/toolOverrides/index.d.mts.map +1 -1
  914. package/dist/src/services/toolOverrides/index.mjs +6 -6
  915. package/dist/src/services/toolOverrides/index.mjs.map +1 -1
  916. package/dist/src/services/toolPrompt/index.d.mts +17 -0
  917. package/dist/src/services/toolPrompt/index.d.mts.map +1 -0
  918. package/dist/src/services/toolSurface/index.cjs +3 -3
  919. package/dist/src/services/toolSurface/index.cjs.map +1 -1
  920. package/dist/src/services/toolSurface/index.d.mts +3 -3
  921. package/dist/src/services/toolSurface/index.d.mts.map +1 -1
  922. package/dist/src/services/toolSurface/index.mjs +4 -4
  923. package/dist/src/services/toolSurface/index.mjs.map +1 -1
  924. package/dist/src/services/traceContext/index.cjs.map +1 -1
  925. package/dist/src/services/traceContext/index.mjs.map +1 -1
  926. package/dist/src/services/transcriptPages/index.cjs +159 -33
  927. package/dist/src/services/transcriptPages/index.cjs.map +1 -1
  928. package/dist/src/services/transcriptPages/index.mjs +158 -34
  929. package/dist/src/services/transcriptPages/index.mjs.map +1 -1
  930. package/dist/src/services/voiceToolsContract/index.cjs +7 -7
  931. package/dist/src/services/voiceToolsContract/index.cjs.map +1 -1
  932. package/dist/src/services/voiceToolsContract/index.d.mts +4 -4
  933. package/dist/src/services/voiceToolsContract/index.d.mts.map +1 -1
  934. package/dist/src/services/voiceToolsContract/index.mjs +7 -7
  935. package/dist/src/services/voiceToolsContract/index.mjs.map +1 -1
  936. package/dist/src/services/workspaceRegistry/index.cjs +9 -179
  937. package/dist/src/services/workspaceRegistry/index.cjs.map +1 -1
  938. package/dist/src/services/workspaceRegistry/index.d.mts +5 -47
  939. package/dist/src/services/workspaceRegistry/index.mjs +7 -176
  940. package/dist/src/services/workspaceRegistry/index.mjs.map +1 -1
  941. package/dist/src/services/workspaceRegistry/sync.cjs +148 -0
  942. package/dist/src/services/workspaceRegistry/sync.cjs.map +1 -0
  943. package/dist/src/services/workspaceRegistry/sync.d.mts +34 -0
  944. package/dist/src/services/workspaceRegistry/sync.d.mts.map +1 -0
  945. package/dist/src/services/workspaceRegistry/sync.mjs +140 -0
  946. package/dist/src/services/workspaceRegistry/sync.mjs.map +1 -0
  947. package/dist/src/services/workspaceRegistry/workspaceRecords.cjs +114 -0
  948. package/dist/src/services/workspaceRegistry/workspaceRecords.cjs.map +1 -0
  949. package/dist/src/services/workspaceRegistry/workspaceRecords.d.mts +31 -0
  950. package/dist/src/services/workspaceRegistry/workspaceRecords.d.mts.map +1 -0
  951. package/dist/src/services/workspaceRegistry/workspaceRecords.mjs +101 -0
  952. package/dist/src/services/workspaceRegistry/workspaceRecords.mjs.map +1 -0
  953. package/dist/src/systems/child/adapters/headlessChildSessionService.cjs +339 -202
  954. package/dist/src/systems/child/adapters/headlessChildSessionService.cjs.map +1 -1
  955. package/dist/src/systems/child/adapters/headlessChildSessionService.d.mts +16 -21
  956. package/dist/src/systems/child/adapters/headlessChildSessionService.d.mts.map +1 -1
  957. package/dist/src/systems/child/adapters/headlessChildSessionService.mjs +329 -191
  958. package/dist/src/systems/child/adapters/headlessChildSessionService.mjs.map +1 -1
  959. package/dist/src/systems/child/services/childSession/index.cjs +94 -20
  960. package/dist/src/systems/child/services/childSession/index.cjs.map +1 -1
  961. package/dist/src/systems/child/services/childSession/index.d.mts +12 -3
  962. package/dist/src/systems/child/services/childSession/index.d.mts.map +1 -1
  963. package/dist/src/systems/child/services/childSession/index.mjs +94 -20
  964. package/dist/src/systems/child/services/childSession/index.mjs.map +1 -1
  965. package/dist/src/systems/child/types/childSession.cjs +33 -13
  966. package/dist/src/systems/child/types/childSession.cjs.map +1 -1
  967. package/dist/src/systems/child/types/childSession.d.mts +143 -80
  968. package/dist/src/systems/child/types/childSession.d.mts.map +1 -1
  969. package/dist/src/systems/child/types/childSession.mjs +24 -9
  970. package/dist/src/systems/child/types/childSession.mjs.map +1 -1
  971. package/dist/src/systems/main/adapters/headlessHost.cjs +30 -27
  972. package/dist/src/systems/main/adapters/headlessHost.cjs.map +1 -1
  973. package/dist/src/systems/main/adapters/headlessHost.d.mts +22 -22
  974. package/dist/src/systems/main/adapters/headlessHost.d.mts.map +1 -1
  975. package/dist/src/systems/main/adapters/headlessHost.mjs +33 -30
  976. package/dist/src/systems/main/adapters/headlessHost.mjs.map +1 -1
  977. package/dist/src/systems/main/adapters/headlessSessionHost.cjs +248 -229
  978. package/dist/src/systems/main/adapters/headlessSessionHost.cjs.map +1 -1
  979. package/dist/src/systems/main/adapters/headlessSessionHost.d.mts +4 -5
  980. package/dist/src/systems/main/adapters/headlessSessionHost.d.mts.map +1 -1
  981. package/dist/src/systems/main/adapters/headlessSessionHost.mjs +239 -219
  982. package/dist/src/systems/main/adapters/headlessSessionHost.mjs.map +1 -1
  983. package/dist/src/systems/main/types/headlessHost.d.mts +16 -14
  984. package/dist/src/systems/main/types/headlessHost.d.mts.map +1 -1
  985. package/dist/src/testing/pi/testHost.cjs +2 -2
  986. package/dist/src/testing/pi/testHost.cjs.map +1 -1
  987. package/dist/src/testing/pi/testHost.d.mts +3 -2
  988. package/dist/src/testing/pi/testHost.mjs +3 -3
  989. package/dist/src/testing/pi/testHost.mjs.map +1 -1
  990. package/dist/src/types/config.d.mts +1 -1
  991. package/dist/src/types/config.d.mts.map +1 -1
  992. package/dist/src/types/kernel.d.mts +3 -3
  993. package/dist/src/types/server/directHarnessRuntime.d.mts +54 -25
  994. package/dist/src/types/server/directHarnessRuntime.d.mts.map +1 -1
  995. package/dist/src/types/server/sessionToolSurface.d.mts +9 -9
  996. package/dist/src/web/services/apiClient/index.d.mts +1 -0
  997. package/dist/src/web/services/apiPaths/index.cjs.map +1 -1
  998. package/dist/src/web/services/apiPaths/index.d.mts +1 -1
  999. package/dist/src/web/services/apiPaths/index.mjs.map +1 -1
  1000. package/dist/src/web/services/mcpWidget.cjs.map +1 -1
  1001. package/dist/src/web/services/mcpWidget.d.mts +2 -2
  1002. package/dist/src/web/services/mcpWidget.d.mts.map +1 -1
  1003. package/dist/src/web/services/mcpWidget.mjs.map +1 -1
  1004. package/dist/src/web/services/testing/templateRail.cjs +3 -0
  1005. package/dist/src/web/services/testing/templateRail.cjs.map +1 -1
  1006. package/dist/src/web/services/testing/templateRail.mjs +3 -0
  1007. package/dist/src/web/services/testing/templateRail.mjs.map +1 -1
  1008. package/dist/src/web/types/mcpWidget.d.mts +1 -1
  1009. package/dist/src/web/types/nativeTemplate.d.mts +1 -1
  1010. package/dist/src/web/types/nativeTemplate.d.mts.map +1 -1
  1011. package/dist/src/web/types/template.d.mts +8 -0
  1012. package/dist/src/web/types/template.d.mts.map +1 -1
  1013. package/dist/src/web/types/webPlugin.d.mts +17 -5
  1014. package/dist/src/web/types/webPlugin.d.mts.map +1 -1
  1015. package/dist/testMode.cjs +4 -0
  1016. package/dist/testMode.d.mts +2 -0
  1017. package/dist/testMode.mjs +1 -0
  1018. package/dist/testing.cjs +1 -1
  1019. package/dist/testing.d.mts +2 -2
  1020. package/dist/testing.mjs +2 -2
  1021. package/dist/toolInventory.cjs.map +1 -1
  1022. package/dist/toolInventory.mjs.map +1 -1
  1023. package/dist/toolNames.mjs +1 -2
  1024. package/dist/toolOverrides.cjs +4 -4
  1025. package/dist/toolOverrides.d.mts +3 -3
  1026. package/dist/toolOverrides.mjs +3 -3
  1027. package/dist/toolSurface.cjs +4 -4
  1028. package/dist/toolSurface.d.mts +3 -3
  1029. package/dist/toolSurface.mjs +3 -3
  1030. package/dist/transition.cjs +3 -3
  1031. package/dist/transition.d.cjs +3 -3
  1032. package/dist/transition.d.mts +2 -2
  1033. package/dist/transition.mjs +1 -2
  1034. package/dist/transitionClassifier.cjs.map +1 -1
  1035. package/dist/transitionClassifier.d.mts +2 -2
  1036. package/dist/transitionClassifier.d.mts.map +1 -1
  1037. package/dist/transitionClassifier.mjs.map +1 -1
  1038. package/dist/transitionCoordinator.cjs +3 -3
  1039. package/dist/transitionCoordinator.cjs.map +1 -1
  1040. package/dist/transitionCoordinator.d.mts +4 -4
  1041. package/dist/transitionCoordinator.d.mts.map +1 -1
  1042. package/dist/transitionCoordinator.mjs +3 -3
  1043. package/dist/transitionCoordinator.mjs.map +1 -1
  1044. package/dist/typesContextApi.d.mts +2 -1
  1045. package/dist/typesContextApi.d.mts.map +1 -1
  1046. package/dist/uiHub.cjs +3 -3
  1047. package/dist/uiHub.d.mts +2 -2
  1048. package/dist/uiHub.mjs +1 -2
  1049. package/dist/voiceTools.cjs +5 -5
  1050. package/dist/voiceTools.d.mts +3 -3
  1051. package/dist/voiceTools.mjs +3 -3
  1052. package/dist/web.cjs +8 -0
  1053. package/dist/web.d.mts +3 -2
  1054. package/dist/web.mjs +2 -1
  1055. package/dist/webCompositions.cjs.map +1 -1
  1056. package/dist/webCompositions.d.mts +7 -7
  1057. package/dist/webCompositions.d.mts.map +1 -1
  1058. package/dist/webCompositions.mjs.map +1 -1
  1059. package/licenses/Codex-Apache-2.0.txt +201 -0
  1060. package/package.json +58 -53
  1061. package/dist/doomPackage.cjs +0 -61
  1062. package/dist/doomPackage.cjs.map +0 -1
  1063. package/dist/doomPackage.d.mts +0 -17
  1064. package/dist/doomPackage.d.mts.map +0 -1
  1065. package/dist/doomPackage.mjs +0 -54
  1066. package/dist/doomPackage.mjs.map +0 -1
  1067. package/dist/jsonlSessionRepo.cjs +0 -44
  1068. package/dist/jsonlSessionRepo.cjs.map +0 -1
  1069. package/dist/jsonlSessionRepo.d.mts +0 -7
  1070. package/dist/jsonlSessionRepo.d.mts.map +0 -1
  1071. package/dist/jsonlSessionRepo.mjs +0 -42
  1072. package/dist/jsonlSessionRepo.mjs.map +0 -1
  1073. package/dist/runtimeJson.cjs.map +0 -1
  1074. package/dist/runtimeJson.d.mts.map +0 -1
  1075. package/dist/runtimeJson.mjs.map +0 -1
  1076. package/dist/runtimePiSettings.cjs.map +0 -1
  1077. package/dist/runtimePiSettings.d.mts.map +0 -1
  1078. package/dist/runtimePiSettings.mjs.map +0 -1
  1079. package/dist/serverFacet.cjs +0 -34
  1080. package/dist/serverFacet.d.mts +0 -10
  1081. package/dist/serverFacet.mjs +0 -9
  1082. package/dist/src/pi/piWebSocketListener.cjs +0 -115
  1083. package/dist/src/pi/piWebSocketListener.cjs.map +0 -1
  1084. package/dist/src/pi/piWebSocketListener.mjs +0 -115
  1085. package/dist/src/pi/piWebSocketListener.mjs.map +0 -1
  1086. package/dist/src/schemas/serverFacet.cjs +0 -111
  1087. package/dist/src/schemas/serverFacet.cjs.map +0 -1
  1088. package/dist/src/schemas/serverFacet.d.mts +0 -152
  1089. package/dist/src/schemas/serverFacet.d.mts.map +0 -1
  1090. package/dist/src/schemas/serverFacet.mjs +0 -101
  1091. package/dist/src/schemas/serverFacet.mjs.map +0 -1
  1092. package/dist/src/schemas/sessionUpdates.d.mts +0 -34
  1093. package/dist/src/schemas/sessionUpdates.d.mts.map +0 -1
  1094. package/dist/src/server/headlessProtocol.cjs +0 -382
  1095. package/dist/src/server/headlessProtocol.cjs.map +0 -1
  1096. package/dist/src/server/headlessProtocol.mjs +0 -382
  1097. package/dist/src/server/headlessProtocol.mjs.map +0 -1
  1098. package/dist/src/server/nativeChildTranscriptReader.cjs +0 -20
  1099. package/dist/src/server/nativeChildTranscriptReader.cjs.map +0 -1
  1100. package/dist/src/server/nativeChildTranscriptReader.mjs +0 -18
  1101. package/dist/src/server/nativeChildTranscriptReader.mjs.map +0 -1
  1102. package/dist/src/server/serverFacetLoader.cjs +0 -214
  1103. package/dist/src/server/serverFacetLoader.cjs.map +0 -1
  1104. package/dist/src/server/serverFacetLoader.d.mts +0 -72
  1105. package/dist/src/server/serverFacetLoader.d.mts.map +0 -1
  1106. package/dist/src/server/serverFacetLoader.mjs +0 -212
  1107. package/dist/src/server/serverFacetLoader.mjs.map +0 -1
  1108. package/dist/src/services/acpSessionUpdates/index.cjs +0 -129
  1109. package/dist/src/services/acpSessionUpdates/index.cjs.map +0 -1
  1110. package/dist/src/services/acpSessionUpdates/index.mjs +0 -129
  1111. package/dist/src/services/acpSessionUpdates/index.mjs.map +0 -1
  1112. package/dist/src/services/historyImport/index.cjs +0 -8
  1113. package/dist/src/services/historyImport/index.cjs.map +0 -1
  1114. package/dist/src/services/historyImport/index.d.mts +0 -68
  1115. package/dist/src/services/historyImport/index.d.mts.map +0 -1
  1116. package/dist/src/services/historyImport/index.mjs +0 -8
  1117. package/dist/src/services/historyImport/index.mjs.map +0 -1
  1118. package/dist/src/services/openSessionRegistry/index.d.mts.map +0 -1
  1119. package/dist/src/services/requestReceipts/index.cjs.map +0 -1
  1120. package/dist/src/services/requestReceipts/index.d.mts +0 -11
  1121. package/dist/src/services/requestReceipts/index.d.mts.map +0 -1
  1122. package/dist/src/services/requestReceipts/index.mjs.map +0 -1
  1123. package/dist/src/services/rpcTranscript/index.cjs +0 -633
  1124. package/dist/src/services/rpcTranscript/index.cjs.map +0 -1
  1125. package/dist/src/services/rpcTranscript/index.d.mts +0 -50
  1126. package/dist/src/services/rpcTranscript/index.d.mts.map +0 -1
  1127. package/dist/src/services/rpcTranscript/index.mjs +0 -632
  1128. package/dist/src/services/rpcTranscript/index.mjs.map +0 -1
  1129. package/dist/src/services/serverFacet/index.cjs.map +0 -1
  1130. package/dist/src/services/serverFacet/index.d.mts +0 -31
  1131. package/dist/src/services/serverFacet/index.d.mts.map +0 -1
  1132. package/dist/src/services/serverFacet/index.mjs.map +0 -1
  1133. package/dist/src/services/workspaceRegistry/index.d.mts.map +0 -1
  1134. package/dist/src/systems/child/adapters/nativeChildRuntimes.cjs +0 -28
  1135. package/dist/src/systems/child/adapters/nativeChildRuntimes.cjs.map +0 -1
  1136. package/dist/src/systems/child/adapters/nativeChildRuntimes.mjs +0 -25
  1137. package/dist/src/systems/child/adapters/nativeChildRuntimes.mjs.map +0 -1
  1138. package/dist/terminalPiChildSessionService.cjs +0 -324
  1139. package/dist/terminalPiChildSessionService.cjs.map +0 -1
  1140. package/dist/terminalPiChildSessionService.d.mts +0 -46
  1141. package/dist/terminalPiChildSessionService.d.mts.map +0 -1
  1142. package/dist/terminalPiChildSessionService.mjs +0 -318
  1143. package/dist/terminalPiChildSessionService.mjs.map +0 -1
  1144. package/dist/v3Export.cjs +0 -10
  1145. package/dist/v3Export.cjs.map +0 -1
  1146. package/dist/v3Export.d.mts +0 -35
  1147. package/dist/v3Export.d.mts.map +0 -1
  1148. package/dist/v3Export.mjs +0 -9
  1149. package/dist/v3Export.mjs.map +0 -1
@@ -0,0 +1,47 @@
1
+ //#region src/server/largeFrameLink.ts
2
+ const LARGE_FRAME_SIZE = 33554432;
3
+ /** Report encoded sizes without serializing or retaining frame payloads a second time. */
4
+ function reportingLargeFrames(link, notice) {
5
+ const provided = /* @__PURE__ */ new Map();
6
+ const consumed = /* @__PURE__ */ new Map();
7
+ const calls = /* @__PURE__ */ new Map();
8
+ link.onClose(() => {
9
+ provided.clear();
10
+ consumed.clear();
11
+ calls.clear();
12
+ });
13
+ return {
14
+ get closed() {
15
+ return link.closed;
16
+ },
17
+ send(frame) {
18
+ if (frame.t === "shape") provided.set(frame.id, frame.contract);
19
+ let member = "";
20
+ if (frame.t === "state") member = `${provided.get(frame.hold) ?? frame.hold}.${frame.m}`;
21
+ if (frame.t === "call") member = `${consumed.get(frame.hold) ?? frame.hold}.${frame.member}`;
22
+ if (frame.t === "result") member = calls.get(frame.id) ?? String(frame.id);
23
+ const size = link.send(frame);
24
+ if (frame.t === "result") calls.delete(frame.id);
25
+ if (frame.t === "gone") provided.delete(frame.id);
26
+ if (frame.t === "release") consumed.delete(frame.id);
27
+ if (size !== void 0 && size > LARGE_FRAME_SIZE) notice(`large Chord frame: ${frame.t}${member ? ` ${member}` : ""}, encoded size ${size} (limit ${LARGE_FRAME_SIZE})`);
28
+ return size;
29
+ },
30
+ receive(handler) {
31
+ link.receive((frame) => {
32
+ if (frame.t === "shape") consumed.set(frame.id, frame.contract);
33
+ if (frame.t === "call") calls.set(frame.id, `${provided.get(frame.hold) ?? frame.hold}.${frame.member}`);
34
+ if (frame.t === "cancel") calls.delete(frame.id);
35
+ if (frame.t === "release") provided.delete(frame.id);
36
+ if (frame.t === "gone") consumed.delete(frame.id);
37
+ handler(frame);
38
+ });
39
+ },
40
+ onClose: (handler) => link.onClose(handler),
41
+ close: (reason) => link.close(reason)
42
+ };
43
+ }
44
+ //#endregion
45
+ exports.reportingLargeFrames = reportingLargeFrames;
46
+
47
+ //# sourceMappingURL=largeFrameLink.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"largeFrameLink.cjs","names":[],"sources":["../../../src/server/largeFrameLink.ts"],"sourcesContent":["import type { Link } from '@earendil-works/chord';\n\nconst LARGE_FRAME_SIZE = 32 * 1024 * 1024;\n\n/** Report encoded sizes without serializing or retaining frame payloads a second time. */\nexport function reportingLargeFrames(link: Link, notice: (message: string) => void): Link {\n const provided = new Map<number, string>();\n const consumed = new Map<number, string>();\n const calls = new Map<number, string>();\n link.onClose(() => {\n provided.clear();\n consumed.clear();\n calls.clear();\n });\n return {\n get closed() {\n return link.closed;\n },\n send(frame) {\n if (frame.t === 'shape') provided.set(frame.id, frame.contract);\n let member = '';\n if (frame.t === 'state') member = `${provided.get(frame.hold) ?? frame.hold}.${frame.m}`;\n if (frame.t === 'call') member = `${consumed.get(frame.hold) ?? frame.hold}.${frame.member}`;\n if (frame.t === 'result') member = calls.get(frame.id) ?? String(frame.id);\n const size = link.send(frame);\n if (frame.t === 'result') calls.delete(frame.id);\n if (frame.t === 'gone') provided.delete(frame.id);\n if (frame.t === 'release') consumed.delete(frame.id);\n if (size !== undefined && size > LARGE_FRAME_SIZE)\n notice(\n `large Chord frame: ${frame.t}${member ? ` ${member}` : ''}, encoded size ${size} (limit ${LARGE_FRAME_SIZE})`,\n );\n return size;\n },\n receive(handler) {\n link.receive((frame) => {\n if (frame.t === 'shape') consumed.set(frame.id, frame.contract);\n if (frame.t === 'call') calls.set(frame.id, `${provided.get(frame.hold) ?? frame.hold}.${frame.member}`);\n if (frame.t === 'cancel') calls.delete(frame.id);\n if (frame.t === 'release') provided.delete(frame.id);\n if (frame.t === 'gone') consumed.delete(frame.id);\n handler(frame);\n });\n },\n onClose: (handler) => link.onClose(handler),\n close: (reason) => link.close(reason),\n };\n}\n"],"mappings":";AAEA,MAAM,mBAAmB;;AAGzB,SAAgB,qBAAqB,MAAY,QAAyC;CACxF,MAAM,2BAAW,IAAI,IAAoB;CACzC,MAAM,2BAAW,IAAI,IAAoB;CACzC,MAAM,wBAAQ,IAAI,IAAoB;CACtC,KAAK,cAAc;EACjB,SAAS,MAAM;EACf,SAAS,MAAM;EACf,MAAM,MAAM;CACd,CAAC;CACD,OAAO;EACL,IAAI,SAAS;GACX,OAAO,KAAK;EACd;EACA,KAAK,OAAO;GACV,IAAI,MAAM,MAAM,SAAS,SAAS,IAAI,MAAM,IAAI,MAAM,QAAQ;GAC9D,IAAI,SAAS;GACb,IAAI,MAAM,MAAM,SAAS,SAAS,GAAG,SAAS,IAAI,MAAM,IAAI,KAAK,MAAM,KAAK,GAAG,MAAM;GACrF,IAAI,MAAM,MAAM,QAAQ,SAAS,GAAG,SAAS,IAAI,MAAM,IAAI,KAAK,MAAM,KAAK,GAAG,MAAM;GACpF,IAAI,MAAM,MAAM,UAAU,SAAS,MAAM,IAAI,MAAM,EAAE,KAAK,OAAO,MAAM,EAAE;GACzE,MAAM,OAAO,KAAK,KAAK,KAAK;GAC5B,IAAI,MAAM,MAAM,UAAU,MAAM,OAAO,MAAM,EAAE;GAC/C,IAAI,MAAM,MAAM,QAAQ,SAAS,OAAO,MAAM,EAAE;GAChD,IAAI,MAAM,MAAM,WAAW,SAAS,OAAO,MAAM,EAAE;GACnD,IAAI,SAAS,KAAA,KAAa,OAAO,kBAC/B,OACE,sBAAsB,MAAM,IAAI,SAAS,IAAI,WAAW,GAAG,iBAAiB,KAAK,UAAU,iBAAiB,EAC9G;GACF,OAAO;EACT;EACA,QAAQ,SAAS;GACf,KAAK,SAAS,UAAU;IACtB,IAAI,MAAM,MAAM,SAAS,SAAS,IAAI,MAAM,IAAI,MAAM,QAAQ;IAC9D,IAAI,MAAM,MAAM,QAAQ,MAAM,IAAI,MAAM,IAAI,GAAG,SAAS,IAAI,MAAM,IAAI,KAAK,MAAM,KAAK,GAAG,MAAM,QAAQ;IACvG,IAAI,MAAM,MAAM,UAAU,MAAM,OAAO,MAAM,EAAE;IAC/C,IAAI,MAAM,MAAM,WAAW,SAAS,OAAO,MAAM,EAAE;IACnD,IAAI,MAAM,MAAM,QAAQ,SAAS,OAAO,MAAM,EAAE;IAChD,QAAQ,KAAK;GACf,CAAC;EACH;EACA,UAAU,YAAY,KAAK,QAAQ,OAAO;EAC1C,QAAQ,WAAW,KAAK,MAAM,MAAM;CACtC;AACF"}
@@ -0,0 +1,47 @@
1
+ //#region src/server/largeFrameLink.ts
2
+ const LARGE_FRAME_SIZE = 33554432;
3
+ /** Report encoded sizes without serializing or retaining frame payloads a second time. */
4
+ function reportingLargeFrames(link, notice) {
5
+ const provided = /* @__PURE__ */ new Map();
6
+ const consumed = /* @__PURE__ */ new Map();
7
+ const calls = /* @__PURE__ */ new Map();
8
+ link.onClose(() => {
9
+ provided.clear();
10
+ consumed.clear();
11
+ calls.clear();
12
+ });
13
+ return {
14
+ get closed() {
15
+ return link.closed;
16
+ },
17
+ send(frame) {
18
+ if (frame.t === "shape") provided.set(frame.id, frame.contract);
19
+ let member = "";
20
+ if (frame.t === "state") member = `${provided.get(frame.hold) ?? frame.hold}.${frame.m}`;
21
+ if (frame.t === "call") member = `${consumed.get(frame.hold) ?? frame.hold}.${frame.member}`;
22
+ if (frame.t === "result") member = calls.get(frame.id) ?? String(frame.id);
23
+ const size = link.send(frame);
24
+ if (frame.t === "result") calls.delete(frame.id);
25
+ if (frame.t === "gone") provided.delete(frame.id);
26
+ if (frame.t === "release") consumed.delete(frame.id);
27
+ if (size !== void 0 && size > LARGE_FRAME_SIZE) notice(`large Chord frame: ${frame.t}${member ? ` ${member}` : ""}, encoded size ${size} (limit ${LARGE_FRAME_SIZE})`);
28
+ return size;
29
+ },
30
+ receive(handler) {
31
+ link.receive((frame) => {
32
+ if (frame.t === "shape") consumed.set(frame.id, frame.contract);
33
+ if (frame.t === "call") calls.set(frame.id, `${provided.get(frame.hold) ?? frame.hold}.${frame.member}`);
34
+ if (frame.t === "cancel") calls.delete(frame.id);
35
+ if (frame.t === "release") provided.delete(frame.id);
36
+ if (frame.t === "gone") consumed.delete(frame.id);
37
+ handler(frame);
38
+ });
39
+ },
40
+ onClose: (handler) => link.onClose(handler),
41
+ close: (reason) => link.close(reason)
42
+ };
43
+ }
44
+ //#endregion
45
+ export { reportingLargeFrames };
46
+
47
+ //# sourceMappingURL=largeFrameLink.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"largeFrameLink.mjs","names":[],"sources":["../../../src/server/largeFrameLink.ts"],"sourcesContent":["import type { Link } from '@earendil-works/chord';\n\nconst LARGE_FRAME_SIZE = 32 * 1024 * 1024;\n\n/** Report encoded sizes without serializing or retaining frame payloads a second time. */\nexport function reportingLargeFrames(link: Link, notice: (message: string) => void): Link {\n const provided = new Map<number, string>();\n const consumed = new Map<number, string>();\n const calls = new Map<number, string>();\n link.onClose(() => {\n provided.clear();\n consumed.clear();\n calls.clear();\n });\n return {\n get closed() {\n return link.closed;\n },\n send(frame) {\n if (frame.t === 'shape') provided.set(frame.id, frame.contract);\n let member = '';\n if (frame.t === 'state') member = `${provided.get(frame.hold) ?? frame.hold}.${frame.m}`;\n if (frame.t === 'call') member = `${consumed.get(frame.hold) ?? frame.hold}.${frame.member}`;\n if (frame.t === 'result') member = calls.get(frame.id) ?? String(frame.id);\n const size = link.send(frame);\n if (frame.t === 'result') calls.delete(frame.id);\n if (frame.t === 'gone') provided.delete(frame.id);\n if (frame.t === 'release') consumed.delete(frame.id);\n if (size !== undefined && size > LARGE_FRAME_SIZE)\n notice(\n `large Chord frame: ${frame.t}${member ? ` ${member}` : ''}, encoded size ${size} (limit ${LARGE_FRAME_SIZE})`,\n );\n return size;\n },\n receive(handler) {\n link.receive((frame) => {\n if (frame.t === 'shape') consumed.set(frame.id, frame.contract);\n if (frame.t === 'call') calls.set(frame.id, `${provided.get(frame.hold) ?? frame.hold}.${frame.member}`);\n if (frame.t === 'cancel') calls.delete(frame.id);\n if (frame.t === 'release') provided.delete(frame.id);\n if (frame.t === 'gone') consumed.delete(frame.id);\n handler(frame);\n });\n },\n onClose: (handler) => link.onClose(handler),\n close: (reason) => link.close(reason),\n };\n}\n"],"mappings":";AAEA,MAAM,mBAAmB;;AAGzB,SAAgB,qBAAqB,MAAY,QAAyC;CACxF,MAAM,2BAAW,IAAI,IAAoB;CACzC,MAAM,2BAAW,IAAI,IAAoB;CACzC,MAAM,wBAAQ,IAAI,IAAoB;CACtC,KAAK,cAAc;EACjB,SAAS,MAAM;EACf,SAAS,MAAM;EACf,MAAM,MAAM;CACd,CAAC;CACD,OAAO;EACL,IAAI,SAAS;GACX,OAAO,KAAK;EACd;EACA,KAAK,OAAO;GACV,IAAI,MAAM,MAAM,SAAS,SAAS,IAAI,MAAM,IAAI,MAAM,QAAQ;GAC9D,IAAI,SAAS;GACb,IAAI,MAAM,MAAM,SAAS,SAAS,GAAG,SAAS,IAAI,MAAM,IAAI,KAAK,MAAM,KAAK,GAAG,MAAM;GACrF,IAAI,MAAM,MAAM,QAAQ,SAAS,GAAG,SAAS,IAAI,MAAM,IAAI,KAAK,MAAM,KAAK,GAAG,MAAM;GACpF,IAAI,MAAM,MAAM,UAAU,SAAS,MAAM,IAAI,MAAM,EAAE,KAAK,OAAO,MAAM,EAAE;GACzE,MAAM,OAAO,KAAK,KAAK,KAAK;GAC5B,IAAI,MAAM,MAAM,UAAU,MAAM,OAAO,MAAM,EAAE;GAC/C,IAAI,MAAM,MAAM,QAAQ,SAAS,OAAO,MAAM,EAAE;GAChD,IAAI,MAAM,MAAM,WAAW,SAAS,OAAO,MAAM,EAAE;GACnD,IAAI,SAAS,KAAA,KAAa,OAAO,kBAC/B,OACE,sBAAsB,MAAM,IAAI,SAAS,IAAI,WAAW,GAAG,iBAAiB,KAAK,UAAU,iBAAiB,EAC9G;GACF,OAAO;EACT;EACA,QAAQ,SAAS;GACf,KAAK,SAAS,UAAU;IACtB,IAAI,MAAM,MAAM,SAAS,SAAS,IAAI,MAAM,IAAI,MAAM,QAAQ;IAC9D,IAAI,MAAM,MAAM,QAAQ,MAAM,IAAI,MAAM,IAAI,GAAG,SAAS,IAAI,MAAM,IAAI,KAAK,MAAM,KAAK,GAAG,MAAM,QAAQ;IACvG,IAAI,MAAM,MAAM,UAAU,MAAM,OAAO,MAAM,EAAE;IAC/C,IAAI,MAAM,MAAM,WAAW,SAAS,OAAO,MAAM,EAAE;IACnD,IAAI,MAAM,MAAM,QAAQ,SAAS,OAAO,MAAM,EAAE;IAChD,QAAQ,KAAK;GACf,CAAC;EACH;EACA,UAAU,YAAY,KAAK,QAAQ,OAAO;EAC1C,QAAQ,WAAW,KAAK,MAAM,MAAM;CACtC;AACF"}
@@ -1,7 +1,7 @@
1
1
  //#region src/server/liveImport.ts
2
2
  /** Longest a live package `import()` may take before it is abandoned and poisoned. */
3
3
  const LIVE_IMPORT_TIMEOUT_MS = 15e3;
4
- /** Longest a package factory (facet apply, MCP session, Pi factory) may take. */
4
+ /** Longest a package factory (server plugin apply, MCP session, Pi factory) may take. */
5
5
  const LIVE_FACTORY_TIMEOUT_MS = 1e4;
6
6
  /**
7
7
  * Bounds one host-awaited step of package code.
@@ -1 +1 @@
1
- {"version":3,"file":"liveImport.cjs","names":[],"sources":["../../../src/server/liveImport.ts"],"sourcesContent":["/** Longest a live package `import()` may take before it is abandoned and poisoned. */\nexport const LIVE_IMPORT_TIMEOUT_MS = 15_000;\n/** Longest a package factory (facet apply, MCP session, Pi factory) may take. */\nexport const LIVE_FACTORY_TIMEOUT_MS = 10_000;\n\n/**\n * Bounds one host-awaited step of package code.\n *\n * The abandoned promise keeps running, because a module cannot be cancelled; its late\n * rejection is observed here so it never surfaces as an unhandled rejection.\n */\nexport function withTimeout<T>(work: Promise<T>, ms: number, label: string): Promise<T> {\n let timer: ReturnType<typeof setTimeout> | undefined;\n const timeout = new Promise<never>((_, reject) => {\n timer = setTimeout(() => reject(new Error(`${label} timed out after ${String(ms)} ms`)), ms);\n timer.unref?.();\n });\n work.catch(() => undefined);\n return Promise.race([work, timeout]).finally(() => clearTimeout(timer));\n}\n\nexport interface LiveImportGuard {\n /** Defaults to `LIVE_IMPORT_TIMEOUT_MS`. */\n readonly importTimeoutMs?: number;\n /** Defaults to `LIVE_FACTORY_TIMEOUT_MS`. */\n readonly factoryTimeoutMs?: number;\n /**\n * URLs whose import timed out or threw in this process. Shared across loaders so a bad\n * package is skipped everywhere until its content, and so its URL, changes.\n */\n readonly poisoned?: Set<string>;\n}\n\n/** Imports a live package URL under a timeout, skipping and recording poisoned URLs. */\nexport async function guardedImport(\n url: string,\n importer: (url: string) => Promise<unknown>,\n guard: LiveImportGuard,\n): Promise<unknown> {\n if (guard.poisoned?.has(url))\n throw new Error('skipped: this package content failed to load earlier and retries only after it changes');\n try {\n return await withTimeout(\n Promise.resolve().then(() => importer(url)),\n guard.importTimeoutMs ?? LIVE_IMPORT_TIMEOUT_MS,\n 'import',\n );\n } catch (error) {\n guard.poisoned?.add(url);\n throw error;\n }\n}\n"],"mappings":";;AACA,MAAa,yBAAyB;;AAEtC,MAAa,0BAA0B;;;;;;;AAQvC,SAAgB,YAAe,MAAkB,IAAY,OAA2B;CACtF,IAAI;CACJ,MAAM,UAAU,IAAI,SAAgB,GAAG,WAAW;EAChD,QAAQ,iBAAiB,uBAAO,IAAI,MAAM,GAAG,MAAM,mBAAmB,OAAO,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;EAC3F,MAAM,QAAQ;CAChB,CAAC;CACD,KAAK,YAAY,KAAA,CAAS;CAC1B,OAAO,QAAQ,KAAK,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,cAAc,aAAa,KAAK,CAAC;AACxE;;AAeA,eAAsB,cACpB,KACA,UACA,OACkB;CAClB,IAAI,MAAM,UAAU,IAAI,GAAG,GACzB,MAAM,IAAI,MAAM,wFAAwF;CAC1G,IAAI;EACF,OAAO,MAAM,YACX,QAAQ,QAAQ,CAAC,CAAC,WAAW,SAAS,GAAG,CAAC,GAC1C,MAAM,mBAAA,MACN,QACF;CACF,SAAS,OAAO;EACd,MAAM,UAAU,IAAI,GAAG;EACvB,MAAM;CACR;AACF"}
1
+ {"version":3,"file":"liveImport.cjs","names":[],"sources":["../../../src/server/liveImport.ts"],"sourcesContent":["/** Longest a live package `import()` may take before it is abandoned and poisoned. */\nexport const LIVE_IMPORT_TIMEOUT_MS = 15_000;\n/** Longest a package factory (server plugin apply, MCP session, Pi factory) may take. */\nexport const LIVE_FACTORY_TIMEOUT_MS = 10_000;\n\n/**\n * Bounds one host-awaited step of package code.\n *\n * The abandoned promise keeps running, because a module cannot be cancelled; its late\n * rejection is observed here so it never surfaces as an unhandled rejection.\n */\nexport function withTimeout<T>(work: Promise<T>, ms: number, label: string): Promise<T> {\n let timer: ReturnType<typeof setTimeout> | undefined;\n const timeout = new Promise<never>((_, reject) => {\n timer = setTimeout(() => reject(new Error(`${label} timed out after ${String(ms)} ms`)), ms);\n timer.unref?.();\n });\n work.catch(() => undefined);\n return Promise.race([work, timeout]).finally(() => clearTimeout(timer));\n}\n\nexport interface LiveImportGuard {\n /** Defaults to `LIVE_IMPORT_TIMEOUT_MS`. */\n readonly importTimeoutMs?: number;\n /** Defaults to `LIVE_FACTORY_TIMEOUT_MS`. */\n readonly factoryTimeoutMs?: number;\n /**\n * URLs whose import timed out or threw in this process. Shared across loaders so a bad\n * package is skipped everywhere until its content, and so its URL, changes.\n */\n readonly poisoned?: Set<string>;\n}\n\n/** Imports a live package URL under a timeout, skipping and recording poisoned URLs. */\nexport async function guardedImport(\n url: string,\n importer: (url: string) => Promise<unknown>,\n guard: LiveImportGuard,\n): Promise<unknown> {\n if (guard.poisoned?.has(url))\n throw new Error('skipped: this package content failed to load earlier and retries only after it changes');\n try {\n return await withTimeout(\n Promise.resolve().then(() => importer(url)),\n guard.importTimeoutMs ?? LIVE_IMPORT_TIMEOUT_MS,\n 'import',\n );\n } catch (error) {\n guard.poisoned?.add(url);\n throw error;\n }\n}\n"],"mappings":";;AACA,MAAa,yBAAyB;;AAEtC,MAAa,0BAA0B;;;;;;;AAQvC,SAAgB,YAAe,MAAkB,IAAY,OAA2B;CACtF,IAAI;CACJ,MAAM,UAAU,IAAI,SAAgB,GAAG,WAAW;EAChD,QAAQ,iBAAiB,uBAAO,IAAI,MAAM,GAAG,MAAM,mBAAmB,OAAO,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;EAC3F,MAAM,QAAQ;CAChB,CAAC;CACD,KAAK,YAAY,KAAA,CAAS;CAC1B,OAAO,QAAQ,KAAK,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,cAAc,aAAa,KAAK,CAAC;AACxE;;AAeA,eAAsB,cACpB,KACA,UACA,OACkB;CAClB,IAAI,MAAM,UAAU,IAAI,GAAG,GACzB,MAAM,IAAI,MAAM,wFAAwF;CAC1G,IAAI;EACF,OAAO,MAAM,YACX,QAAQ,QAAQ,CAAC,CAAC,WAAW,SAAS,GAAG,CAAC,GAC1C,MAAM,mBAAA,MACN,QACF;CACF,SAAS,OAAO;EACd,MAAM,UAAU,IAAI,GAAG;EACvB,MAAM;CACR;AACF"}
@@ -1,7 +1,7 @@
1
1
  //#region src/server/liveImport.d.ts
2
2
  /** Longest a live package `import()` may take before it is abandoned and poisoned. */
3
3
  export declare const LIVE_IMPORT_TIMEOUT_MS = 15000;
4
- /** Longest a package factory (facet apply, MCP session, Pi factory) may take. */
4
+ /** Longest a package factory (server plugin apply, MCP session, Pi factory) may take. */
5
5
  export declare const LIVE_FACTORY_TIMEOUT_MS = 10000;
6
6
  /**
7
7
  * Bounds one host-awaited step of package code.
@@ -1,7 +1,7 @@
1
1
  //#region src/server/liveImport.ts
2
2
  /** Longest a live package `import()` may take before it is abandoned and poisoned. */
3
3
  const LIVE_IMPORT_TIMEOUT_MS = 15e3;
4
- /** Longest a package factory (facet apply, MCP session, Pi factory) may take. */
4
+ /** Longest a package factory (server plugin apply, MCP session, Pi factory) may take. */
5
5
  const LIVE_FACTORY_TIMEOUT_MS = 1e4;
6
6
  /**
7
7
  * Bounds one host-awaited step of package code.
@@ -1 +1 @@
1
- {"version":3,"file":"liveImport.mjs","names":[],"sources":["../../../src/server/liveImport.ts"],"sourcesContent":["/** Longest a live package `import()` may take before it is abandoned and poisoned. */\nexport const LIVE_IMPORT_TIMEOUT_MS = 15_000;\n/** Longest a package factory (facet apply, MCP session, Pi factory) may take. */\nexport const LIVE_FACTORY_TIMEOUT_MS = 10_000;\n\n/**\n * Bounds one host-awaited step of package code.\n *\n * The abandoned promise keeps running, because a module cannot be cancelled; its late\n * rejection is observed here so it never surfaces as an unhandled rejection.\n */\nexport function withTimeout<T>(work: Promise<T>, ms: number, label: string): Promise<T> {\n let timer: ReturnType<typeof setTimeout> | undefined;\n const timeout = new Promise<never>((_, reject) => {\n timer = setTimeout(() => reject(new Error(`${label} timed out after ${String(ms)} ms`)), ms);\n timer.unref?.();\n });\n work.catch(() => undefined);\n return Promise.race([work, timeout]).finally(() => clearTimeout(timer));\n}\n\nexport interface LiveImportGuard {\n /** Defaults to `LIVE_IMPORT_TIMEOUT_MS`. */\n readonly importTimeoutMs?: number;\n /** Defaults to `LIVE_FACTORY_TIMEOUT_MS`. */\n readonly factoryTimeoutMs?: number;\n /**\n * URLs whose import timed out or threw in this process. Shared across loaders so a bad\n * package is skipped everywhere until its content, and so its URL, changes.\n */\n readonly poisoned?: Set<string>;\n}\n\n/** Imports a live package URL under a timeout, skipping and recording poisoned URLs. */\nexport async function guardedImport(\n url: string,\n importer: (url: string) => Promise<unknown>,\n guard: LiveImportGuard,\n): Promise<unknown> {\n if (guard.poisoned?.has(url))\n throw new Error('skipped: this package content failed to load earlier and retries only after it changes');\n try {\n return await withTimeout(\n Promise.resolve().then(() => importer(url)),\n guard.importTimeoutMs ?? LIVE_IMPORT_TIMEOUT_MS,\n 'import',\n );\n } catch (error) {\n guard.poisoned?.add(url);\n throw error;\n }\n}\n"],"mappings":";;AACA,MAAa,yBAAyB;;AAEtC,MAAa,0BAA0B;;;;;;;AAQvC,SAAgB,YAAe,MAAkB,IAAY,OAA2B;CACtF,IAAI;CACJ,MAAM,UAAU,IAAI,SAAgB,GAAG,WAAW;EAChD,QAAQ,iBAAiB,uBAAO,IAAI,MAAM,GAAG,MAAM,mBAAmB,OAAO,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;EAC3F,MAAM,QAAQ;CAChB,CAAC;CACD,KAAK,YAAY,KAAA,CAAS;CAC1B,OAAO,QAAQ,KAAK,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,cAAc,aAAa,KAAK,CAAC;AACxE;;AAeA,eAAsB,cACpB,KACA,UACA,OACkB;CAClB,IAAI,MAAM,UAAU,IAAI,GAAG,GACzB,MAAM,IAAI,MAAM,wFAAwF;CAC1G,IAAI;EACF,OAAO,MAAM,YACX,QAAQ,QAAQ,CAAC,CAAC,WAAW,SAAS,GAAG,CAAC,GAC1C,MAAM,mBAAA,MACN,QACF;CACF,SAAS,OAAO;EACd,MAAM,UAAU,IAAI,GAAG;EACvB,MAAM;CACR;AACF"}
1
+ {"version":3,"file":"liveImport.mjs","names":[],"sources":["../../../src/server/liveImport.ts"],"sourcesContent":["/** Longest a live package `import()` may take before it is abandoned and poisoned. */\nexport const LIVE_IMPORT_TIMEOUT_MS = 15_000;\n/** Longest a package factory (server plugin apply, MCP session, Pi factory) may take. */\nexport const LIVE_FACTORY_TIMEOUT_MS = 10_000;\n\n/**\n * Bounds one host-awaited step of package code.\n *\n * The abandoned promise keeps running, because a module cannot be cancelled; its late\n * rejection is observed here so it never surfaces as an unhandled rejection.\n */\nexport function withTimeout<T>(work: Promise<T>, ms: number, label: string): Promise<T> {\n let timer: ReturnType<typeof setTimeout> | undefined;\n const timeout = new Promise<never>((_, reject) => {\n timer = setTimeout(() => reject(new Error(`${label} timed out after ${String(ms)} ms`)), ms);\n timer.unref?.();\n });\n work.catch(() => undefined);\n return Promise.race([work, timeout]).finally(() => clearTimeout(timer));\n}\n\nexport interface LiveImportGuard {\n /** Defaults to `LIVE_IMPORT_TIMEOUT_MS`. */\n readonly importTimeoutMs?: number;\n /** Defaults to `LIVE_FACTORY_TIMEOUT_MS`. */\n readonly factoryTimeoutMs?: number;\n /**\n * URLs whose import timed out or threw in this process. Shared across loaders so a bad\n * package is skipped everywhere until its content, and so its URL, changes.\n */\n readonly poisoned?: Set<string>;\n}\n\n/** Imports a live package URL under a timeout, skipping and recording poisoned URLs. */\nexport async function guardedImport(\n url: string,\n importer: (url: string) => Promise<unknown>,\n guard: LiveImportGuard,\n): Promise<unknown> {\n if (guard.poisoned?.has(url))\n throw new Error('skipped: this package content failed to load earlier and retries only after it changes');\n try {\n return await withTimeout(\n Promise.resolve().then(() => importer(url)),\n guard.importTimeoutMs ?? LIVE_IMPORT_TIMEOUT_MS,\n 'import',\n );\n } catch (error) {\n guard.poisoned?.add(url);\n throw error;\n }\n}\n"],"mappings":";;AACA,MAAa,yBAAyB;;AAEtC,MAAa,0BAA0B;;;;;;;AAQvC,SAAgB,YAAe,MAAkB,IAAY,OAA2B;CACtF,IAAI;CACJ,MAAM,UAAU,IAAI,SAAgB,GAAG,WAAW;EAChD,QAAQ,iBAAiB,uBAAO,IAAI,MAAM,GAAG,MAAM,mBAAmB,OAAO,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;EAC3F,MAAM,QAAQ;CAChB,CAAC;CACD,KAAK,YAAY,KAAA,CAAS;CAC1B,OAAO,QAAQ,KAAK,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,cAAc,aAAa,KAAK,CAAC;AACxE;;AAeA,eAAsB,cACpB,KACA,UACA,OACkB;CAClB,IAAI,MAAM,UAAU,IAAI,GAAG,GACzB,MAAM,IAAI,MAAM,wFAAwF;CAC1G,IAAI;EACF,OAAO,MAAM,YACX,QAAQ,QAAQ,CAAC,CAAC,WAAW,SAAS,GAAG,CAAC,GAC1C,MAAM,mBAAA,MACN,QACF;CACF,SAAS,OAAO;EACd,MAAM,UAAU,IAAI,GAAG;EACvB,MAAM;CACR;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"mcpBundleLoader.cjs","names":["guardedImport","withTimeout"],"sources":["../../../src/server/mcpBundleLoader.ts"],"sourcesContent":["import type { DoomMcpBundleEntry } from '../schemas/mcpBundle';\nimport type { DoomMcpPluginDefinition, DoomMcpUiResource } from '../schemas/mcpFacet';\nimport { guardedImport, LIVE_FACTORY_TIMEOUT_MS, type LiveImportGuard, withTimeout } from './liveImport';\n/** The parts of an MCP declaration a live session host reads. */\nexport type McpPluginDeclaration = Omit<DoomMcpBundleEntry, 'sha256'> & { readonly sha256?: string };\n\nexport interface LoadedMcpPlugin {\n readonly declaration: McpPluginDeclaration;\n readonly plugin: DoomMcpPluginDefinition;\n}\n\nfunction isMcpPlugin(value: unknown): value is DoomMcpPluginDefinition {\n if (typeof value !== 'object' || value === null) return false;\n const candidate = value as Partial<DoomMcpPluginDefinition>;\n return (\n typeof candidate.name === 'string' &&\n (typeof candidate.session === 'function' || typeof candidate.session === 'object')\n );\n}\n\n/** Points a package's widget-tagged tools at the composed UI resource and serves it with them. */\nfunction withPackageWidgets(\n original: DoomMcpPluginDefinition,\n widgets: readonly string[] | undefined,\n ui: DoomMcpUiResource | undefined,\n): DoomMcpPluginDefinition {\n const allowedWidgets = new Set(widgets ?? []);\n if (ui === undefined || allowedWidgets.size === 0) return original;\n return {\n ...original,\n async session(context) {\n const scope = typeof original.session === 'function' ? await original.session(context) : original.session;\n const { tools: contributedTools, uiResources: contributedResources, ...rest } = scope;\n let usesWidget = false;\n const tools = contributedTools?.map((tool) => {\n const widget = tool._meta?.['po/widget'];\n if (widget === undefined) return tool;\n if (typeof widget !== 'string' || !allowedWidgets.has(widget))\n throw new Error(`MCP tool '${tool.name}' references a widget not owned by its package`);\n usesWidget = true;\n return {\n ...tool,\n _meta: {\n ...tool._meta,\n ui: { ...tool._meta?.ui, resourceUri: ui.uri, visibility: tool._meta?.ui?.visibility ?? ['model'] },\n 'openai/outputTemplate': ui.uri,\n },\n };\n });\n return {\n ...rest,\n ...(tools === undefined ? {} : { tools }),\n uiResources: [...(contributedResources ?? []), ...(usesWidget ? [ui] : [])],\n };\n },\n };\n}\n\n/** The served MCP App resource for composed package widget HTML. */\nexport function mcpUiResource(html: string, sha256: string): DoomMcpUiResource {\n return {\n uri: `ui://po/tools/${sha256}/index.html`,\n name: 'po-tool-widgets',\n description: 'Package-owned tool widgets composed by po.',\n mimeType: 'text/html;profile=mcp-app',\n _meta: {\n ui: { csp: { connectDomains: [], resourceDomains: [] }, prefersBorder: true },\n 'openai/widgetPrefersBorder': true,\n 'openai/widgetCSP': { connect_domains: [], resource_domains: [] },\n },\n read: () => html,\n };\n}\n\n/** One live MCP plugin: its declaration plus the URL its package module imports from. */\nexport interface LiveMcpPluginEntry extends McpPluginDeclaration {\n /** Content-addressed import URL for `module`, see the po server's `packageUrl`. */\n readonly url: string;\n}\n\nexport interface LoadMcpPluginsOptions extends LiveImportGuard {\n readonly entries: readonly LiveMcpPluginEntry[];\n readonly majorMode: string;\n readonly activeLayers: readonly string[];\n readonly onNotice?: (message: string) => void;\n /** Retain admitted candidates so a live session can follow selection changes. */\n readonly retainCandidates?: boolean;\n /** Composed package widget UI, served by tools whose package owns the widget. */\n readonly uiResource?: DoomMcpUiResource;\n /** Test seam; defaults to native `import()`. */\n readonly importer?: (url: string) => Promise<unknown>;\n}\n\nexport interface LoadedMcpPlugins {\n readonly plugins: readonly LoadedMcpPlugin[];\n}\n\n/**\n * Live reader: imports each package's built MCP entry from its content-addressed URL.\n *\n * Same eligibility rules as `loadMcpBundle`: an ineligible candidate is kept only with\n * `retainCandidates`, and a failure is fatal only for an eligible plugin. Package widgets\n * resolve to `uiResource`, which the po server builds per content key. Each import\n * is bounded and poisoned on failure (see `guardedImport`), and each `session` factory call\n * is bounded by `factoryTimeoutMs`.\n */\nexport async function loadMcpPlugins(options: LoadMcpPluginsOptions): Promise<LoadedMcpPlugins> {\n const importer = options.importer ?? ((url: string) => import(url));\n const factoryTimeoutMs = options.factoryTimeoutMs ?? LIVE_FACTORY_TIMEOUT_MS;\n const plugins: LoadedMcpPlugin[] = [];\n for (const { url, ...declaration } of options.entries) {\n const eligible = declaration.owners.some(\n (owner) =>\n owner.majorMode === options.majorMode &&\n (owner.layer === 'default' || options.activeLayers.includes(owner.layer)),\n );\n if (!eligible && options.retainCandidates !== true) continue;\n try {\n const imported = (await guardedImport(url, importer, options)) as { default?: unknown } | undefined;\n if (!isMcpPlugin(imported?.default)) throw new Error('default export is not an MCP plugin');\n const original = withPackageWidgets(imported.default, declaration.widgets, options.uiResource);\n const session = original.session;\n const label = `MCP plugin '${declaration.packageName}' session`;\n plugins.push({\n declaration,\n plugin:\n typeof session === 'function'\n ? {\n ...original,\n session: (context) =>\n withTimeout(\n Promise.resolve().then(() => session.call(original, context)),\n factoryTimeoutMs,\n label,\n ),\n }\n : original,\n });\n } catch (error) {\n const message = `MCP plugin '${declaration.packageName}' could not load (${error instanceof Error ? error.message : String(error)})`;\n if (eligible) throw new Error(message, { cause: error });\n options.onNotice?.(message);\n }\n }\n return { plugins };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"mcpBundleLoader.cjs","names":["guardedImport","withTimeout"],"sources":["../../../src/server/mcpBundleLoader.ts"],"sourcesContent":["import type { PoMcpBundleEntry } from '../schemas/mcpBundle';\nimport type { PoMcpPluginDefinition, PoMcpUiResource } from '../schemas/mcpFacet';\nimport { guardedImport, LIVE_FACTORY_TIMEOUT_MS, type LiveImportGuard, withTimeout } from './liveImport';\n/** The parts of an MCP declaration a live session host reads. */\nexport type McpPluginDeclaration = Omit<PoMcpBundleEntry, 'sha256'> & { readonly sha256?: string };\n\nexport interface LoadedMcpPlugin {\n readonly declaration: McpPluginDeclaration;\n readonly plugin: PoMcpPluginDefinition;\n}\n\nfunction isMcpPlugin(value: unknown): value is PoMcpPluginDefinition {\n if (typeof value !== 'object' || value === null) return false;\n const candidate = value as Partial<PoMcpPluginDefinition>;\n return (\n typeof candidate.name === 'string' &&\n (typeof candidate.session === 'function' || typeof candidate.session === 'object')\n );\n}\n\n/** Points a package's widget-tagged tools at the composed UI resource and serves it with them. */\nfunction withPackageWidgets(\n original: PoMcpPluginDefinition,\n widgets: readonly string[] | undefined,\n ui: PoMcpUiResource | undefined,\n): PoMcpPluginDefinition {\n const allowedWidgets = new Set(widgets ?? []);\n if (ui === undefined || allowedWidgets.size === 0) return original;\n return {\n ...original,\n async session(context) {\n const scope = typeof original.session === 'function' ? await original.session(context) : original.session;\n const { tools: contributedTools, uiResources: contributedResources, ...rest } = scope;\n let usesWidget = false;\n const tools = contributedTools?.map((tool) => {\n const widget = tool._meta?.['po/widget'];\n if (widget === undefined) return tool;\n if (typeof widget !== 'string' || !allowedWidgets.has(widget))\n throw new Error(`MCP tool '${tool.name}' references a widget not owned by its package`);\n usesWidget = true;\n return {\n ...tool,\n _meta: {\n ...tool._meta,\n ui: { ...tool._meta?.ui, resourceUri: ui.uri, visibility: tool._meta?.ui?.visibility ?? ['model'] },\n 'openai/outputTemplate': ui.uri,\n },\n };\n });\n return {\n ...rest,\n ...(tools === undefined ? {} : { tools }),\n uiResources: [...(contributedResources ?? []), ...(usesWidget ? [ui] : [])],\n };\n },\n };\n}\n\n/** The served MCP App resource for composed package widget HTML. */\nexport function mcpUiResource(html: string, sha256: string): PoMcpUiResource {\n return {\n uri: `ui://po/tools/${sha256}/index.html`,\n name: 'po-tool-widgets',\n description: 'Package-owned tool widgets composed by po.',\n mimeType: 'text/html;profile=mcp-app',\n _meta: {\n ui: { csp: { connectDomains: [], resourceDomains: [] }, prefersBorder: true },\n 'openai/widgetPrefersBorder': true,\n 'openai/widgetCSP': { connect_domains: [], resource_domains: [] },\n },\n read: () => html,\n };\n}\n\n/** One live MCP plugin: its declaration plus the URL its package module imports from. */\nexport interface LiveMcpPluginEntry extends McpPluginDeclaration {\n /** Content-addressed import URL for `module`, see the po server's `packageUrl`. */\n readonly url: string;\n}\n\nexport interface LoadMcpPluginsOptions extends LiveImportGuard {\n readonly entries: readonly LiveMcpPluginEntry[];\n readonly majorMode: string;\n readonly activeLayers: readonly string[];\n readonly onNotice?: (message: string) => void;\n /** Retain admitted candidates so a live session can follow selection changes. */\n readonly retainCandidates?: boolean;\n /** Composed package widget UI, served by tools whose package owns the widget. */\n readonly uiResource?: PoMcpUiResource;\n /** Test seam; defaults to native `import()`. */\n readonly importer?: (url: string) => Promise<unknown>;\n}\n\nexport interface LoadedMcpPlugins {\n readonly plugins: readonly LoadedMcpPlugin[];\n}\n\n/**\n * Live reader: imports each package's built MCP entry from its content-addressed URL.\n *\n * Same eligibility rules as `loadMcpBundle`: an ineligible candidate is kept only with\n * `retainCandidates`, and a failure is fatal only for an eligible plugin. Package widgets\n * resolve to `uiResource`, which the po server builds per content key. Each import\n * is bounded and poisoned on failure (see `guardedImport`), and each `session` factory call\n * is bounded by `factoryTimeoutMs`.\n */\nexport async function loadMcpPlugins(options: LoadMcpPluginsOptions): Promise<LoadedMcpPlugins> {\n const importer = options.importer ?? ((url: string) => import(url));\n const factoryTimeoutMs = options.factoryTimeoutMs ?? LIVE_FACTORY_TIMEOUT_MS;\n const plugins: LoadedMcpPlugin[] = [];\n for (const { url, ...declaration } of options.entries) {\n const eligible = declaration.owners.some(\n (owner) =>\n owner.majorMode === options.majorMode &&\n (owner.layer === 'default' || options.activeLayers.includes(owner.layer)),\n );\n if (!eligible && options.retainCandidates !== true) continue;\n try {\n const imported = (await guardedImport(url, importer, options)) as { default?: unknown } | undefined;\n if (!isMcpPlugin(imported?.default)) throw new Error('default export is not an MCP plugin');\n const original = withPackageWidgets(imported.default, declaration.widgets, options.uiResource);\n const session = original.session;\n const label = `MCP plugin '${declaration.packageName}' session`;\n plugins.push({\n declaration,\n plugin:\n typeof session === 'function'\n ? {\n ...original,\n session: (context) =>\n withTimeout(\n Promise.resolve().then(() => session.call(original, context)),\n factoryTimeoutMs,\n label,\n ),\n }\n : original,\n });\n } catch (error) {\n const message = `MCP plugin '${declaration.packageName}' could not load (${error instanceof Error ? error.message : String(error)})`;\n if (eligible) throw new Error(message, { cause: error });\n options.onNotice?.(message);\n }\n }\n return { plugins };\n}\n"],"mappings":";;AAWA,SAAS,YAAY,OAAgD;CACnE,IAAI,OAAO,UAAU,YAAY,UAAU,MAAM,OAAO;CACxD,MAAM,YAAY;CAClB,OACE,OAAO,UAAU,SAAS,aACzB,OAAO,UAAU,YAAY,cAAc,OAAO,UAAU,YAAY;AAE7E;;AAGA,SAAS,mBACP,UACA,SACA,IACuB;CACvB,MAAM,iBAAiB,IAAI,IAAI,WAAW,CAAC,CAAC;CAC5C,IAAI,OAAO,KAAA,KAAa,eAAe,SAAS,GAAG,OAAO;CAC1D,OAAO;EACL,GAAG;EACH,MAAM,QAAQ,SAAS;GAErB,MAAM,EAAE,OAAO,kBAAkB,aAAa,sBAAsB,GAAG,SADzD,OAAO,SAAS,YAAY,aAAa,MAAM,SAAS,QAAQ,OAAO,IAAI,SAAS;GAElG,IAAI,aAAa;GACjB,MAAM,QAAQ,kBAAkB,KAAK,SAAS;IAC5C,MAAM,SAAS,KAAK,QAAQ;IAC5B,IAAI,WAAW,KAAA,GAAW,OAAO;IACjC,IAAI,OAAO,WAAW,YAAY,CAAC,eAAe,IAAI,MAAM,GAC1D,MAAM,IAAI,MAAM,aAAa,KAAK,KAAK,+CAA+C;IACxF,aAAa;IACb,OAAO;KACL,GAAG;KACH,OAAO;MACL,GAAG,KAAK;MACR,IAAI;OAAE,GAAG,KAAK,OAAO;OAAI,aAAa,GAAG;OAAK,YAAY,KAAK,OAAO,IAAI,cAAc,CAAC,OAAO;MAAE;MAClG,yBAAyB,GAAG;KAC9B;IACF;GACF,CAAC;GACD,OAAO;IACL,GAAG;IACH,GAAI,UAAU,KAAA,IAAY,CAAC,IAAI,EAAE,MAAM;IACvC,aAAa,CAAC,GAAI,wBAAwB,CAAC,GAAI,GAAI,aAAa,CAAC,EAAE,IAAI,CAAC,CAAE;GAC5E;EACF;CACF;AACF;;AAGA,SAAgB,cAAc,MAAc,QAAiC;CAC3E,OAAO;EACL,KAAK,iBAAiB,OAAO;EAC7B,MAAM;EACN,aAAa;EACb,UAAU;EACV,OAAO;GACL,IAAI;IAAE,KAAK;KAAE,gBAAgB,CAAC;KAAG,iBAAiB,CAAC;IAAE;IAAG,eAAe;GAAK;GAC5E,8BAA8B;GAC9B,oBAAoB;IAAE,iBAAiB,CAAC;IAAG,kBAAkB,CAAC;GAAE;EAClE;EACA,YAAY;CACd;AACF;;;;;;;;;;AAkCA,eAAsB,eAAe,SAA2D;CAC9F,MAAM,WAAW,QAAQ,cAAc,QAAgB,OAAO;CAC9D,MAAM,mBAAmB,QAAQ,oBAAA;CACjC,MAAM,UAA6B,CAAC;CACpC,KAAK,MAAM,EAAE,KAAK,GAAG,iBAAiB,QAAQ,SAAS;EACrD,MAAM,WAAW,YAAY,OAAO,MACjC,UACC,MAAM,cAAc,QAAQ,cAC3B,MAAM,UAAU,aAAa,QAAQ,aAAa,SAAS,MAAM,KAAK,EAC3E;EACA,IAAI,CAAC,YAAY,QAAQ,qBAAqB,MAAM;EACpD,IAAI;GACF,MAAM,WAAY,MAAMA,mBAAAA,cAAc,KAAK,UAAU,OAAO;GAC5D,IAAI,CAAC,YAAY,UAAU,OAAO,GAAG,MAAM,IAAI,MAAM,qCAAqC;GAC1F,MAAM,WAAW,mBAAmB,SAAS,SAAS,YAAY,SAAS,QAAQ,UAAU;GAC7F,MAAM,UAAU,SAAS;GACzB,MAAM,QAAQ,eAAe,YAAY,YAAY;GACrD,QAAQ,KAAK;IACX;IACA,QACE,OAAO,YAAY,aACf;KACE,GAAG;KACH,UAAU,YACRC,mBAAAA,YACE,QAAQ,QAAQ,CAAC,CAAC,WAAW,QAAQ,KAAK,UAAU,OAAO,CAAC,GAC5D,kBACA,KACF;IACJ,IACA;GACR,CAAC;EACH,SAAS,OAAO;GACd,MAAM,UAAU,eAAe,YAAY,YAAY,oBAAoB,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,EAAE;GAClI,IAAI,UAAU,MAAM,IAAI,MAAM,SAAS,EAAE,OAAO,MAAM,CAAC;GACvD,QAAQ,WAAW,OAAO;EAC5B;CACF;CACA,OAAO,EAAE,QAAQ;AACnB"}
@@ -1,17 +1,17 @@
1
- import { DoomMcpPluginDefinition, DoomMcpUiResource } from "../schemas/mcpFacet.mjs";
1
+ import { PoMcpPluginDefinition, PoMcpUiResource } from "../schemas/mcpFacet.mjs";
2
2
  import { LiveImportGuard } from "./liveImport.mjs";
3
- import { DoomMcpBundleEntry } from "../schemas/mcpBundle.mjs";
3
+ import { PoMcpBundleEntry } from "../schemas/mcpBundle.mjs";
4
4
  //#region src/server/mcpBundleLoader.d.ts
5
5
  /** The parts of an MCP declaration a live session host reads. */
6
- export type McpPluginDeclaration = Omit<DoomMcpBundleEntry, 'sha256'> & {
6
+ export type McpPluginDeclaration = Omit<PoMcpBundleEntry, 'sha256'> & {
7
7
  readonly sha256?: string;
8
8
  };
9
9
  export interface LoadedMcpPlugin {
10
10
  readonly declaration: McpPluginDeclaration;
11
- readonly plugin: DoomMcpPluginDefinition;
11
+ readonly plugin: PoMcpPluginDefinition;
12
12
  }
13
13
  /** The served MCP App resource for composed package widget HTML. */
14
- export declare function mcpUiResource(html: string, sha256: string): DoomMcpUiResource;
14
+ export declare function mcpUiResource(html: string, sha256: string): PoMcpUiResource;
15
15
  /** One live MCP plugin: its declaration plus the URL its package module imports from. */
16
16
  export interface LiveMcpPluginEntry extends McpPluginDeclaration {
17
17
  /** Content-addressed import URL for `module`, see the po server's `packageUrl`. */
@@ -25,7 +25,7 @@ export interface LoadMcpPluginsOptions extends LiveImportGuard {
25
25
  /** Retain admitted candidates so a live session can follow selection changes. */
26
26
  readonly retainCandidates?: boolean;
27
27
  /** Composed package widget UI, served by tools whose package owns the widget. */
28
- readonly uiResource?: DoomMcpUiResource;
28
+ readonly uiResource?: PoMcpUiResource;
29
29
  /** Test seam; defaults to native `import()`. */
30
30
  readonly importer?: (url: string) => Promise<unknown>;
31
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mcpBundleLoader.d.mts","names":[],"sources":["../../../src/server/mcpBundleLoader.ts"],"mappings":";;;;;YAIY,uBAAuB,KAAK;WAA2C;;iBAElE;WACN,aAAa;WACb,QAAQ;;;wBAmDH,cAAc,cAAc,iBAAiB;;iBAgB5C,2BAA2B;;WAEjC;;iBAGM,8BAA8B;WACpC,kBAAkB;WAClB;WACA;WACA,YAAY;;WAEZ;;WAEA,aAAa;;WAEb,YAAY,gBAAgB;;iBAGtB;WACN,kBAAkB;;;;;;;;;;;wBAYP,eAAe,SAAS,wBAAwB,QAAQ"}
1
+ {"version":3,"file":"mcpBundleLoader.d.mts","names":[],"sources":["../../../src/server/mcpBundleLoader.ts"],"mappings":";;;;;YAIY,uBAAuB,KAAK;WAAyC;;iBAEhE;WACN,aAAa;WACb,QAAQ;;;wBAmDH,cAAc,cAAc,iBAAiB;;iBAgB5C,2BAA2B;;WAEjC;;iBAGM,8BAA8B;WACpC,kBAAkB;WAClB;WACA;WACA,YAAY;;WAEZ;;WAEA,aAAa;;WAEb,YAAY,gBAAgB;;iBAGtB;WACN,kBAAkB;;;;;;;;;;;wBAYP,eAAe,SAAS,wBAAwB,QAAQ"}
@@ -1 +1 @@
1
- {"version":3,"file":"mcpBundleLoader.mjs","names":[],"sources":["../../../src/server/mcpBundleLoader.ts"],"sourcesContent":["import type { DoomMcpBundleEntry } from '../schemas/mcpBundle';\nimport type { DoomMcpPluginDefinition, DoomMcpUiResource } from '../schemas/mcpFacet';\nimport { guardedImport, LIVE_FACTORY_TIMEOUT_MS, type LiveImportGuard, withTimeout } from './liveImport';\n/** The parts of an MCP declaration a live session host reads. */\nexport type McpPluginDeclaration = Omit<DoomMcpBundleEntry, 'sha256'> & { readonly sha256?: string };\n\nexport interface LoadedMcpPlugin {\n readonly declaration: McpPluginDeclaration;\n readonly plugin: DoomMcpPluginDefinition;\n}\n\nfunction isMcpPlugin(value: unknown): value is DoomMcpPluginDefinition {\n if (typeof value !== 'object' || value === null) return false;\n const candidate = value as Partial<DoomMcpPluginDefinition>;\n return (\n typeof candidate.name === 'string' &&\n (typeof candidate.session === 'function' || typeof candidate.session === 'object')\n );\n}\n\n/** Points a package's widget-tagged tools at the composed UI resource and serves it with them. */\nfunction withPackageWidgets(\n original: DoomMcpPluginDefinition,\n widgets: readonly string[] | undefined,\n ui: DoomMcpUiResource | undefined,\n): DoomMcpPluginDefinition {\n const allowedWidgets = new Set(widgets ?? []);\n if (ui === undefined || allowedWidgets.size === 0) return original;\n return {\n ...original,\n async session(context) {\n const scope = typeof original.session === 'function' ? await original.session(context) : original.session;\n const { tools: contributedTools, uiResources: contributedResources, ...rest } = scope;\n let usesWidget = false;\n const tools = contributedTools?.map((tool) => {\n const widget = tool._meta?.['po/widget'];\n if (widget === undefined) return tool;\n if (typeof widget !== 'string' || !allowedWidgets.has(widget))\n throw new Error(`MCP tool '${tool.name}' references a widget not owned by its package`);\n usesWidget = true;\n return {\n ...tool,\n _meta: {\n ...tool._meta,\n ui: { ...tool._meta?.ui, resourceUri: ui.uri, visibility: tool._meta?.ui?.visibility ?? ['model'] },\n 'openai/outputTemplate': ui.uri,\n },\n };\n });\n return {\n ...rest,\n ...(tools === undefined ? {} : { tools }),\n uiResources: [...(contributedResources ?? []), ...(usesWidget ? [ui] : [])],\n };\n },\n };\n}\n\n/** The served MCP App resource for composed package widget HTML. */\nexport function mcpUiResource(html: string, sha256: string): DoomMcpUiResource {\n return {\n uri: `ui://po/tools/${sha256}/index.html`,\n name: 'po-tool-widgets',\n description: 'Package-owned tool widgets composed by po.',\n mimeType: 'text/html;profile=mcp-app',\n _meta: {\n ui: { csp: { connectDomains: [], resourceDomains: [] }, prefersBorder: true },\n 'openai/widgetPrefersBorder': true,\n 'openai/widgetCSP': { connect_domains: [], resource_domains: [] },\n },\n read: () => html,\n };\n}\n\n/** One live MCP plugin: its declaration plus the URL its package module imports from. */\nexport interface LiveMcpPluginEntry extends McpPluginDeclaration {\n /** Content-addressed import URL for `module`, see the po server's `packageUrl`. */\n readonly url: string;\n}\n\nexport interface LoadMcpPluginsOptions extends LiveImportGuard {\n readonly entries: readonly LiveMcpPluginEntry[];\n readonly majorMode: string;\n readonly activeLayers: readonly string[];\n readonly onNotice?: (message: string) => void;\n /** Retain admitted candidates so a live session can follow selection changes. */\n readonly retainCandidates?: boolean;\n /** Composed package widget UI, served by tools whose package owns the widget. */\n readonly uiResource?: DoomMcpUiResource;\n /** Test seam; defaults to native `import()`. */\n readonly importer?: (url: string) => Promise<unknown>;\n}\n\nexport interface LoadedMcpPlugins {\n readonly plugins: readonly LoadedMcpPlugin[];\n}\n\n/**\n * Live reader: imports each package's built MCP entry from its content-addressed URL.\n *\n * Same eligibility rules as `loadMcpBundle`: an ineligible candidate is kept only with\n * `retainCandidates`, and a failure is fatal only for an eligible plugin. Package widgets\n * resolve to `uiResource`, which the po server builds per content key. Each import\n * is bounded and poisoned on failure (see `guardedImport`), and each `session` factory call\n * is bounded by `factoryTimeoutMs`.\n */\nexport async function loadMcpPlugins(options: LoadMcpPluginsOptions): Promise<LoadedMcpPlugins> {\n const importer = options.importer ?? ((url: string) => import(url));\n const factoryTimeoutMs = options.factoryTimeoutMs ?? LIVE_FACTORY_TIMEOUT_MS;\n const plugins: LoadedMcpPlugin[] = [];\n for (const { url, ...declaration } of options.entries) {\n const eligible = declaration.owners.some(\n (owner) =>\n owner.majorMode === options.majorMode &&\n (owner.layer === 'default' || options.activeLayers.includes(owner.layer)),\n );\n if (!eligible && options.retainCandidates !== true) continue;\n try {\n const imported = (await guardedImport(url, importer, options)) as { default?: unknown } | undefined;\n if (!isMcpPlugin(imported?.default)) throw new Error('default export is not an MCP plugin');\n const original = withPackageWidgets(imported.default, declaration.widgets, options.uiResource);\n const session = original.session;\n const label = `MCP plugin '${declaration.packageName}' session`;\n plugins.push({\n declaration,\n plugin:\n typeof session === 'function'\n ? {\n ...original,\n session: (context) =>\n withTimeout(\n Promise.resolve().then(() => session.call(original, context)),\n factoryTimeoutMs,\n label,\n ),\n }\n : original,\n });\n } catch (error) {\n const message = `MCP plugin '${declaration.packageName}' could not load (${error instanceof Error ? error.message : String(error)})`;\n if (eligible) throw new Error(message, { cause: error });\n options.onNotice?.(message);\n }\n }\n return { plugins };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"mcpBundleLoader.mjs","names":[],"sources":["../../../src/server/mcpBundleLoader.ts"],"sourcesContent":["import type { PoMcpBundleEntry } from '../schemas/mcpBundle';\nimport type { PoMcpPluginDefinition, PoMcpUiResource } from '../schemas/mcpFacet';\nimport { guardedImport, LIVE_FACTORY_TIMEOUT_MS, type LiveImportGuard, withTimeout } from './liveImport';\n/** The parts of an MCP declaration a live session host reads. */\nexport type McpPluginDeclaration = Omit<PoMcpBundleEntry, 'sha256'> & { readonly sha256?: string };\n\nexport interface LoadedMcpPlugin {\n readonly declaration: McpPluginDeclaration;\n readonly plugin: PoMcpPluginDefinition;\n}\n\nfunction isMcpPlugin(value: unknown): value is PoMcpPluginDefinition {\n if (typeof value !== 'object' || value === null) return false;\n const candidate = value as Partial<PoMcpPluginDefinition>;\n return (\n typeof candidate.name === 'string' &&\n (typeof candidate.session === 'function' || typeof candidate.session === 'object')\n );\n}\n\n/** Points a package's widget-tagged tools at the composed UI resource and serves it with them. */\nfunction withPackageWidgets(\n original: PoMcpPluginDefinition,\n widgets: readonly string[] | undefined,\n ui: PoMcpUiResource | undefined,\n): PoMcpPluginDefinition {\n const allowedWidgets = new Set(widgets ?? []);\n if (ui === undefined || allowedWidgets.size === 0) return original;\n return {\n ...original,\n async session(context) {\n const scope = typeof original.session === 'function' ? await original.session(context) : original.session;\n const { tools: contributedTools, uiResources: contributedResources, ...rest } = scope;\n let usesWidget = false;\n const tools = contributedTools?.map((tool) => {\n const widget = tool._meta?.['po/widget'];\n if (widget === undefined) return tool;\n if (typeof widget !== 'string' || !allowedWidgets.has(widget))\n throw new Error(`MCP tool '${tool.name}' references a widget not owned by its package`);\n usesWidget = true;\n return {\n ...tool,\n _meta: {\n ...tool._meta,\n ui: { ...tool._meta?.ui, resourceUri: ui.uri, visibility: tool._meta?.ui?.visibility ?? ['model'] },\n 'openai/outputTemplate': ui.uri,\n },\n };\n });\n return {\n ...rest,\n ...(tools === undefined ? {} : { tools }),\n uiResources: [...(contributedResources ?? []), ...(usesWidget ? [ui] : [])],\n };\n },\n };\n}\n\n/** The served MCP App resource for composed package widget HTML. */\nexport function mcpUiResource(html: string, sha256: string): PoMcpUiResource {\n return {\n uri: `ui://po/tools/${sha256}/index.html`,\n name: 'po-tool-widgets',\n description: 'Package-owned tool widgets composed by po.',\n mimeType: 'text/html;profile=mcp-app',\n _meta: {\n ui: { csp: { connectDomains: [], resourceDomains: [] }, prefersBorder: true },\n 'openai/widgetPrefersBorder': true,\n 'openai/widgetCSP': { connect_domains: [], resource_domains: [] },\n },\n read: () => html,\n };\n}\n\n/** One live MCP plugin: its declaration plus the URL its package module imports from. */\nexport interface LiveMcpPluginEntry extends McpPluginDeclaration {\n /** Content-addressed import URL for `module`, see the po server's `packageUrl`. */\n readonly url: string;\n}\n\nexport interface LoadMcpPluginsOptions extends LiveImportGuard {\n readonly entries: readonly LiveMcpPluginEntry[];\n readonly majorMode: string;\n readonly activeLayers: readonly string[];\n readonly onNotice?: (message: string) => void;\n /** Retain admitted candidates so a live session can follow selection changes. */\n readonly retainCandidates?: boolean;\n /** Composed package widget UI, served by tools whose package owns the widget. */\n readonly uiResource?: PoMcpUiResource;\n /** Test seam; defaults to native `import()`. */\n readonly importer?: (url: string) => Promise<unknown>;\n}\n\nexport interface LoadedMcpPlugins {\n readonly plugins: readonly LoadedMcpPlugin[];\n}\n\n/**\n * Live reader: imports each package's built MCP entry from its content-addressed URL.\n *\n * Same eligibility rules as `loadMcpBundle`: an ineligible candidate is kept only with\n * `retainCandidates`, and a failure is fatal only for an eligible plugin. Package widgets\n * resolve to `uiResource`, which the po server builds per content key. Each import\n * is bounded and poisoned on failure (see `guardedImport`), and each `session` factory call\n * is bounded by `factoryTimeoutMs`.\n */\nexport async function loadMcpPlugins(options: LoadMcpPluginsOptions): Promise<LoadedMcpPlugins> {\n const importer = options.importer ?? ((url: string) => import(url));\n const factoryTimeoutMs = options.factoryTimeoutMs ?? LIVE_FACTORY_TIMEOUT_MS;\n const plugins: LoadedMcpPlugin[] = [];\n for (const { url, ...declaration } of options.entries) {\n const eligible = declaration.owners.some(\n (owner) =>\n owner.majorMode === options.majorMode &&\n (owner.layer === 'default' || options.activeLayers.includes(owner.layer)),\n );\n if (!eligible && options.retainCandidates !== true) continue;\n try {\n const imported = (await guardedImport(url, importer, options)) as { default?: unknown } | undefined;\n if (!isMcpPlugin(imported?.default)) throw new Error('default export is not an MCP plugin');\n const original = withPackageWidgets(imported.default, declaration.widgets, options.uiResource);\n const session = original.session;\n const label = `MCP plugin '${declaration.packageName}' session`;\n plugins.push({\n declaration,\n plugin:\n typeof session === 'function'\n ? {\n ...original,\n session: (context) =>\n withTimeout(\n Promise.resolve().then(() => session.call(original, context)),\n factoryTimeoutMs,\n label,\n ),\n }\n : original,\n });\n } catch (error) {\n const message = `MCP plugin '${declaration.packageName}' could not load (${error instanceof Error ? error.message : String(error)})`;\n if (eligible) throw new Error(message, { cause: error });\n options.onNotice?.(message);\n }\n }\n return { plugins };\n}\n"],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ const require_liveImport = require("./liveImport.cjs");
2
+ //#region src/server/serverPackages.ts
3
+ /** Pure pre-model metadata from initially admitted session packages, never from retained candidates. */
4
+ function selectedServerProviderOverrides(packages, environment) {
5
+ return packages.flatMap(({ declaration, plugin, initiallyEligible }) => initiallyEligible === false || !declaration.scopes.includes("session") ? [] : plugin.providerOverrides?.({ environment }) ?? []);
6
+ }
7
+ function ownedBy(owners, majorMode, activeLayers) {
8
+ return owners.some((owner) => owner.majorMode === majorMode && (owner.layer === "default" || activeLayers.includes(owner.layer)));
9
+ }
10
+ /** A module's default export is a server plugin when it is a named cordis object plugin. */
11
+ function isServerPlugin(value) {
12
+ return typeof value === "object" && value !== null && typeof value.apply === "function" && typeof value.name === "string";
13
+ }
14
+ async function loadPackageEntries(scope, entries, options, importUrl) {
15
+ const packages = [];
16
+ for (const declaration of entries) {
17
+ if (!declaration.scopes.includes(scope)) continue;
18
+ const eligible = ownedBy(declaration.owners, options.majorMode, options.activeLayers);
19
+ if (!(scope === "session" && options.retainCandidates === true) && !eligible) continue;
20
+ try {
21
+ const imported = await importUrl(declaration);
22
+ if (!isServerPlugin(imported?.default)) throw new Error("default export is not a server plugin");
23
+ packages.push({
24
+ declaration,
25
+ plugin: imported.default,
26
+ ...scope === "session" && options.retainCandidates ? {
27
+ retained: true,
28
+ initiallyEligible: eligible
29
+ } : {}
30
+ });
31
+ } catch (error) {
32
+ const message = `Server package '${declaration.packageName}' could not load (${error instanceof Error ? error.message : String(error)})`;
33
+ if (declaration.required && eligible) throw new Error(message, { cause: error });
34
+ options.onNotice?.(message);
35
+ }
36
+ }
37
+ return packages;
38
+ }
39
+ /**
40
+ * Live reader: imports each package's built entry from its content-addressed URL.
41
+ *
42
+ * Applies the scope, ownership and `required` rules of each entry. Each import is bounded and a URL that
43
+ * timed out or threw is poisoned (see `guardedImport`); a poisoned required package fails
44
+ * exactly as a load failure does. A URL is imported once per process, so the same content is the
45
+ * same plugin object, which is how a scope tells an unchanged package from a changed one.
46
+ */
47
+ async function loadServerPackages(scope, options) {
48
+ const importer = options.importer ?? ((url) => import(url));
49
+ const urls = new Map(options.entries.map((entry) => [entry, entry.url]));
50
+ const packages = await loadPackageEntries(scope, options.entries, options, (declaration) => require_liveImport.guardedImport(urls.get(declaration), importer, options));
51
+ return {
52
+ entries: options.entries,
53
+ packages
54
+ };
55
+ }
56
+ //#endregion
57
+ exports.loadServerPackages = loadServerPackages;
58
+ exports.selectedServerProviderOverrides = selectedServerProviderOverrides;
59
+
60
+ //# sourceMappingURL=serverPackages.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverPackages.cjs","names":["guardedImport"],"sources":["../../../src/server/serverPackages.ts"],"sourcesContent":["import type { PoApiScope } from '../schemas/packageApi';\nimport type { PoServerBundleEntry } from '../schemas/serverBundle';\nimport type { PoServerPlugin, PoServerProviderOverride } from '../schemas/serverPlugin';\nimport { guardedImport, type LiveImportGuard } from './liveImport';\n\n/** One imported package: its bundle entry and the server plugin its module exports. */\nexport interface LoadedServerPackage {\n readonly declaration: PoServerBundleEntry;\n readonly plugin: PoServerPlugin;\n readonly retained?: true;\n readonly initiallyEligible?: boolean;\n}\n\n/** One live server package: the bundle entry shape plus the URL its package module imports from. */\nexport interface LiveServerPackageEntry extends PoServerBundleEntry {\n /** Content-addressed import URL for `module`, see the po server's `packageUrl`. */\n readonly url: string;\n}\n\nexport interface LoadServerPackagesOptions extends LiveImportGuard {\n readonly entries: readonly LiveServerPackageEntry[];\n readonly majorMode: string;\n readonly activeLayers: readonly string[];\n readonly onNotice?: (message: string) => void;\n /** Only a session host with declarative contribution gating may retain all candidates. */\n readonly retainCandidates?: boolean;\n /** Test seam; defaults to native `import()`. */\n readonly importer?: (url: string) => Promise<unknown>;\n}\n\nexport interface LoadedServerPackages {\n readonly entries: readonly LiveServerPackageEntry[];\n readonly packages: readonly LoadedServerPackage[];\n}\n\n/** Pure pre-model metadata from initially admitted session packages, never from retained candidates. */\nexport function selectedServerProviderOverrides(\n packages: readonly LoadedServerPackage[],\n environment: Readonly<Record<string, string | undefined>>,\n): readonly PoServerProviderOverride[] {\n return packages.flatMap(({ declaration, plugin, initiallyEligible }) =>\n initiallyEligible === false || !declaration.scopes.includes('session')\n ? []\n : (plugin.providerOverrides?.({ environment }) ?? []),\n );\n}\n\nfunction ownedBy(\n owners: readonly { readonly majorMode: string; readonly layer: string }[],\n majorMode: string,\n activeLayers: readonly string[],\n): boolean {\n return owners.some(\n (owner) => owner.majorMode === majorMode && (owner.layer === 'default' || activeLayers.includes(owner.layer)),\n );\n}\n\n/** A module's default export is a server plugin when it is a named cordis object plugin. */\nfunction isServerPlugin(value: unknown): value is PoServerPlugin {\n return (\n typeof value === 'object' &&\n value !== null &&\n typeof (value as { apply?: unknown }).apply === 'function' &&\n typeof (value as { name?: unknown }).name === 'string'\n );\n}\n\nasync function loadPackageEntries(\n scope: PoApiScope,\n entries: readonly PoServerBundleEntry[],\n options: Pick<LoadServerPackagesOptions, 'majorMode' | 'activeLayers' | 'onNotice' | 'retainCandidates'>,\n importUrl: (declaration: PoServerBundleEntry) => Promise<unknown>,\n): Promise<LoadedServerPackage[]> {\n const packages: LoadedServerPackage[] = [];\n for (const declaration of entries) {\n if (!declaration.scopes.includes(scope)) continue;\n const eligible = ownedBy(declaration.owners, options.majorMode, options.activeLayers);\n if (!(scope === 'session' && options.retainCandidates === true) && !eligible) continue;\n try {\n const imported = (await importUrl(declaration)) as { default?: unknown } | undefined;\n if (!isServerPlugin(imported?.default)) throw new Error('default export is not a server plugin');\n packages.push({\n declaration,\n plugin: imported.default,\n ...(scope === 'session' && options.retainCandidates\n ? { retained: true as const, initiallyEligible: eligible }\n : {}),\n });\n } catch (error) {\n const message = `Server package '${declaration.packageName}' could not load (${error instanceof Error ? error.message : String(error)})`;\n if (declaration.required && eligible) throw new Error(message, { cause: error });\n options.onNotice?.(message);\n }\n }\n return packages;\n}\n\n/**\n * Live reader: imports each package's built entry from its content-addressed URL.\n *\n * Applies the scope, ownership and `required` rules of each entry. Each import is bounded and a URL that\n * timed out or threw is poisoned (see `guardedImport`); a poisoned required package fails\n * exactly as a load failure does. A URL is imported once per process, so the same content is the\n * same plugin object, which is how a scope tells an unchanged package from a changed one.\n */\nexport async function loadServerPackages(\n scope: PoApiScope,\n options: LoadServerPackagesOptions,\n): Promise<LoadedServerPackages> {\n const importer = options.importer ?? ((url: string) => import(url));\n const urls = new Map(options.entries.map((entry) => [entry as PoServerBundleEntry, entry.url]));\n const packages = await loadPackageEntries(scope, options.entries, options, (declaration) =>\n guardedImport(urls.get(declaration)!, importer, options),\n );\n return { entries: options.entries, packages };\n}\n"],"mappings":";;;AAoCA,SAAgB,gCACd,UACA,aACqC;CACrC,OAAO,SAAS,SAAS,EAAE,aAAa,QAAQ,wBAC9C,sBAAsB,SAAS,CAAC,YAAY,OAAO,SAAS,SAAS,IACjE,CAAC,IACA,OAAO,oBAAoB,EAAE,YAAY,CAAC,KAAK,CAAC,CACvD;AACF;AAEA,SAAS,QACP,QACA,WACA,cACS;CACT,OAAO,OAAO,MACX,UAAU,MAAM,cAAc,cAAc,MAAM,UAAU,aAAa,aAAa,SAAS,MAAM,KAAK,EAC7G;AACF;;AAGA,SAAS,eAAe,OAAyC;CAC/D,OACE,OAAO,UAAU,YACjB,UAAU,QACV,OAAQ,MAA8B,UAAU,cAChD,OAAQ,MAA6B,SAAS;AAElD;AAEA,eAAe,mBACb,OACA,SACA,SACA,WACgC;CAChC,MAAM,WAAkC,CAAC;CACzC,KAAK,MAAM,eAAe,SAAS;EACjC,IAAI,CAAC,YAAY,OAAO,SAAS,KAAK,GAAG;EACzC,MAAM,WAAW,QAAQ,YAAY,QAAQ,QAAQ,WAAW,QAAQ,YAAY;EACpF,IAAI,EAAE,UAAU,aAAa,QAAQ,qBAAqB,SAAS,CAAC,UAAU;EAC9E,IAAI;GACF,MAAM,WAAY,MAAM,UAAU,WAAW;GAC7C,IAAI,CAAC,eAAe,UAAU,OAAO,GAAG,MAAM,IAAI,MAAM,uCAAuC;GAC/F,SAAS,KAAK;IACZ;IACA,QAAQ,SAAS;IACjB,GAAI,UAAU,aAAa,QAAQ,mBAC/B;KAAE,UAAU;KAAe,mBAAmB;IAAS,IACvD,CAAC;GACP,CAAC;EACH,SAAS,OAAO;GACd,MAAM,UAAU,mBAAmB,YAAY,YAAY,oBAAoB,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,EAAE;GACtI,IAAI,YAAY,YAAY,UAAU,MAAM,IAAI,MAAM,SAAS,EAAE,OAAO,MAAM,CAAC;GAC/E,QAAQ,WAAW,OAAO;EAC5B;CACF;CACA,OAAO;AACT;;;;;;;;;AAUA,eAAsB,mBACpB,OACA,SAC+B;CAC/B,MAAM,WAAW,QAAQ,cAAc,QAAgB,OAAO;CAC9D,MAAM,OAAO,IAAI,IAAI,QAAQ,QAAQ,KAAK,UAAU,CAAC,OAA8B,MAAM,GAAG,CAAC,CAAC;CAC9F,MAAM,WAAW,MAAM,mBAAmB,OAAO,QAAQ,SAAS,UAAU,gBAC1EA,mBAAAA,cAAc,KAAK,IAAI,WAAW,GAAI,UAAU,OAAO,CACzD;CACA,OAAO;EAAE,SAAS,QAAQ;EAAS;CAAS;AAC9C"}
@@ -0,0 +1,44 @@
1
+ import { PoApiScope } from "../schemas/packageApi.mjs";
2
+ import { PoServerBundleEntry } from "../schemas/serverBundle.mjs";
3
+ import { PoServerPlugin, PoServerProviderOverride } from "../schemas/serverPlugin.mjs";
4
+ import { LiveImportGuard } from "./liveImport.mjs";
5
+ //#region src/server/serverPackages.d.ts
6
+ /** One imported package: its bundle entry and the server plugin its module exports. */
7
+ export interface LoadedServerPackage {
8
+ readonly declaration: PoServerBundleEntry;
9
+ readonly plugin: PoServerPlugin;
10
+ readonly retained?: true;
11
+ readonly initiallyEligible?: boolean;
12
+ }
13
+ /** One live server package: the bundle entry shape plus the URL its package module imports from. */
14
+ export interface LiveServerPackageEntry extends PoServerBundleEntry {
15
+ /** Content-addressed import URL for `module`, see the po server's `packageUrl`. */
16
+ readonly url: string;
17
+ }
18
+ export interface LoadServerPackagesOptions extends LiveImportGuard {
19
+ readonly entries: readonly LiveServerPackageEntry[];
20
+ readonly majorMode: string;
21
+ readonly activeLayers: readonly string[];
22
+ readonly onNotice?: (message: string) => void;
23
+ /** Only a session host with declarative contribution gating may retain all candidates. */
24
+ readonly retainCandidates?: boolean;
25
+ /** Test seam; defaults to native `import()`. */
26
+ readonly importer?: (url: string) => Promise<unknown>;
27
+ }
28
+ export interface LoadedServerPackages {
29
+ readonly entries: readonly LiveServerPackageEntry[];
30
+ readonly packages: readonly LoadedServerPackage[];
31
+ }
32
+ /** Pure pre-model metadata from initially admitted session packages, never from retained candidates. */
33
+ export declare function selectedServerProviderOverrides(packages: readonly LoadedServerPackage[], environment: Readonly<Record<string, string | undefined>>): readonly PoServerProviderOverride[];
34
+ /**
35
+ * Live reader: imports each package's built entry from its content-addressed URL.
36
+ *
37
+ * Applies the scope, ownership and `required` rules of each entry. Each import is bounded and a URL that
38
+ * timed out or threw is poisoned (see `guardedImport`); a poisoned required package fails
39
+ * exactly as a load failure does. A URL is imported once per process, so the same content is the
40
+ * same plugin object, which is how a scope tells an unchanged package from a changed one.
41
+ */
42
+ export declare function loadServerPackages(scope: PoApiScope, options: LoadServerPackagesOptions): Promise<LoadedServerPackages>;
43
+ //#endregion
44
+ //# sourceMappingURL=serverPackages.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverPackages.d.mts","names":[],"sources":["../../../src/server/serverPackages.ts"],"mappings":";;;;;;iBAMiB;WACN,aAAa;WACb,QAAQ;WACR;WACA;;;iBAIM,+BAA+B;;WAErC;;iBAGM,kCAAkC;WACxC,kBAAkB;WAClB;WACA;WACA,YAAY;;WAEZ;;WAEA,YAAY,gBAAgB;;iBAGtB;WACN,kBAAkB;WAClB,mBAAmB;;;wBAId,gCACd,mBAAmB,uBACnB,aAAa,SAAS,+CACZ;;;;;;;;;wBAkEU,mBACpB,OAAO,YACP,SAAS,4BACR,QAAQ"}
@@ -0,0 +1,59 @@
1
+ import { guardedImport } from "./liveImport.mjs";
2
+ //#region src/server/serverPackages.ts
3
+ /** Pure pre-model metadata from initially admitted session packages, never from retained candidates. */
4
+ function selectedServerProviderOverrides(packages, environment) {
5
+ return packages.flatMap(({ declaration, plugin, initiallyEligible }) => initiallyEligible === false || !declaration.scopes.includes("session") ? [] : plugin.providerOverrides?.({ environment }) ?? []);
6
+ }
7
+ function ownedBy(owners, majorMode, activeLayers) {
8
+ return owners.some((owner) => owner.majorMode === majorMode && (owner.layer === "default" || activeLayers.includes(owner.layer)));
9
+ }
10
+ /** A module's default export is a server plugin when it is a named cordis object plugin. */
11
+ function isServerPlugin(value) {
12
+ return typeof value === "object" && value !== null && typeof value.apply === "function" && typeof value.name === "string";
13
+ }
14
+ async function loadPackageEntries(scope, entries, options, importUrl) {
15
+ const packages = [];
16
+ for (const declaration of entries) {
17
+ if (!declaration.scopes.includes(scope)) continue;
18
+ const eligible = ownedBy(declaration.owners, options.majorMode, options.activeLayers);
19
+ if (!(scope === "session" && options.retainCandidates === true) && !eligible) continue;
20
+ try {
21
+ const imported = await importUrl(declaration);
22
+ if (!isServerPlugin(imported?.default)) throw new Error("default export is not a server plugin");
23
+ packages.push({
24
+ declaration,
25
+ plugin: imported.default,
26
+ ...scope === "session" && options.retainCandidates ? {
27
+ retained: true,
28
+ initiallyEligible: eligible
29
+ } : {}
30
+ });
31
+ } catch (error) {
32
+ const message = `Server package '${declaration.packageName}' could not load (${error instanceof Error ? error.message : String(error)})`;
33
+ if (declaration.required && eligible) throw new Error(message, { cause: error });
34
+ options.onNotice?.(message);
35
+ }
36
+ }
37
+ return packages;
38
+ }
39
+ /**
40
+ * Live reader: imports each package's built entry from its content-addressed URL.
41
+ *
42
+ * Applies the scope, ownership and `required` rules of each entry. Each import is bounded and a URL that
43
+ * timed out or threw is poisoned (see `guardedImport`); a poisoned required package fails
44
+ * exactly as a load failure does. A URL is imported once per process, so the same content is the
45
+ * same plugin object, which is how a scope tells an unchanged package from a changed one.
46
+ */
47
+ async function loadServerPackages(scope, options) {
48
+ const importer = options.importer ?? ((url) => import(url));
49
+ const urls = new Map(options.entries.map((entry) => [entry, entry.url]));
50
+ const packages = await loadPackageEntries(scope, options.entries, options, (declaration) => guardedImport(urls.get(declaration), importer, options));
51
+ return {
52
+ entries: options.entries,
53
+ packages
54
+ };
55
+ }
56
+ //#endregion
57
+ export { loadServerPackages, selectedServerProviderOverrides };
58
+
59
+ //# sourceMappingURL=serverPackages.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverPackages.mjs","names":[],"sources":["../../../src/server/serverPackages.ts"],"sourcesContent":["import type { PoApiScope } from '../schemas/packageApi';\nimport type { PoServerBundleEntry } from '../schemas/serverBundle';\nimport type { PoServerPlugin, PoServerProviderOverride } from '../schemas/serverPlugin';\nimport { guardedImport, type LiveImportGuard } from './liveImport';\n\n/** One imported package: its bundle entry and the server plugin its module exports. */\nexport interface LoadedServerPackage {\n readonly declaration: PoServerBundleEntry;\n readonly plugin: PoServerPlugin;\n readonly retained?: true;\n readonly initiallyEligible?: boolean;\n}\n\n/** One live server package: the bundle entry shape plus the URL its package module imports from. */\nexport interface LiveServerPackageEntry extends PoServerBundleEntry {\n /** Content-addressed import URL for `module`, see the po server's `packageUrl`. */\n readonly url: string;\n}\n\nexport interface LoadServerPackagesOptions extends LiveImportGuard {\n readonly entries: readonly LiveServerPackageEntry[];\n readonly majorMode: string;\n readonly activeLayers: readonly string[];\n readonly onNotice?: (message: string) => void;\n /** Only a session host with declarative contribution gating may retain all candidates. */\n readonly retainCandidates?: boolean;\n /** Test seam; defaults to native `import()`. */\n readonly importer?: (url: string) => Promise<unknown>;\n}\n\nexport interface LoadedServerPackages {\n readonly entries: readonly LiveServerPackageEntry[];\n readonly packages: readonly LoadedServerPackage[];\n}\n\n/** Pure pre-model metadata from initially admitted session packages, never from retained candidates. */\nexport function selectedServerProviderOverrides(\n packages: readonly LoadedServerPackage[],\n environment: Readonly<Record<string, string | undefined>>,\n): readonly PoServerProviderOverride[] {\n return packages.flatMap(({ declaration, plugin, initiallyEligible }) =>\n initiallyEligible === false || !declaration.scopes.includes('session')\n ? []\n : (plugin.providerOverrides?.({ environment }) ?? []),\n );\n}\n\nfunction ownedBy(\n owners: readonly { readonly majorMode: string; readonly layer: string }[],\n majorMode: string,\n activeLayers: readonly string[],\n): boolean {\n return owners.some(\n (owner) => owner.majorMode === majorMode && (owner.layer === 'default' || activeLayers.includes(owner.layer)),\n );\n}\n\n/** A module's default export is a server plugin when it is a named cordis object plugin. */\nfunction isServerPlugin(value: unknown): value is PoServerPlugin {\n return (\n typeof value === 'object' &&\n value !== null &&\n typeof (value as { apply?: unknown }).apply === 'function' &&\n typeof (value as { name?: unknown }).name === 'string'\n );\n}\n\nasync function loadPackageEntries(\n scope: PoApiScope,\n entries: readonly PoServerBundleEntry[],\n options: Pick<LoadServerPackagesOptions, 'majorMode' | 'activeLayers' | 'onNotice' | 'retainCandidates'>,\n importUrl: (declaration: PoServerBundleEntry) => Promise<unknown>,\n): Promise<LoadedServerPackage[]> {\n const packages: LoadedServerPackage[] = [];\n for (const declaration of entries) {\n if (!declaration.scopes.includes(scope)) continue;\n const eligible = ownedBy(declaration.owners, options.majorMode, options.activeLayers);\n if (!(scope === 'session' && options.retainCandidates === true) && !eligible) continue;\n try {\n const imported = (await importUrl(declaration)) as { default?: unknown } | undefined;\n if (!isServerPlugin(imported?.default)) throw new Error('default export is not a server plugin');\n packages.push({\n declaration,\n plugin: imported.default,\n ...(scope === 'session' && options.retainCandidates\n ? { retained: true as const, initiallyEligible: eligible }\n : {}),\n });\n } catch (error) {\n const message = `Server package '${declaration.packageName}' could not load (${error instanceof Error ? error.message : String(error)})`;\n if (declaration.required && eligible) throw new Error(message, { cause: error });\n options.onNotice?.(message);\n }\n }\n return packages;\n}\n\n/**\n * Live reader: imports each package's built entry from its content-addressed URL.\n *\n * Applies the scope, ownership and `required` rules of each entry. Each import is bounded and a URL that\n * timed out or threw is poisoned (see `guardedImport`); a poisoned required package fails\n * exactly as a load failure does. A URL is imported once per process, so the same content is the\n * same plugin object, which is how a scope tells an unchanged package from a changed one.\n */\nexport async function loadServerPackages(\n scope: PoApiScope,\n options: LoadServerPackagesOptions,\n): Promise<LoadedServerPackages> {\n const importer = options.importer ?? ((url: string) => import(url));\n const urls = new Map(options.entries.map((entry) => [entry as PoServerBundleEntry, entry.url]));\n const packages = await loadPackageEntries(scope, options.entries, options, (declaration) =>\n guardedImport(urls.get(declaration)!, importer, options),\n );\n return { entries: options.entries, packages };\n}\n"],"mappings":";;;AAoCA,SAAgB,gCACd,UACA,aACqC;CACrC,OAAO,SAAS,SAAS,EAAE,aAAa,QAAQ,wBAC9C,sBAAsB,SAAS,CAAC,YAAY,OAAO,SAAS,SAAS,IACjE,CAAC,IACA,OAAO,oBAAoB,EAAE,YAAY,CAAC,KAAK,CAAC,CACvD;AACF;AAEA,SAAS,QACP,QACA,WACA,cACS;CACT,OAAO,OAAO,MACX,UAAU,MAAM,cAAc,cAAc,MAAM,UAAU,aAAa,aAAa,SAAS,MAAM,KAAK,EAC7G;AACF;;AAGA,SAAS,eAAe,OAAyC;CAC/D,OACE,OAAO,UAAU,YACjB,UAAU,QACV,OAAQ,MAA8B,UAAU,cAChD,OAAQ,MAA6B,SAAS;AAElD;AAEA,eAAe,mBACb,OACA,SACA,SACA,WACgC;CAChC,MAAM,WAAkC,CAAC;CACzC,KAAK,MAAM,eAAe,SAAS;EACjC,IAAI,CAAC,YAAY,OAAO,SAAS,KAAK,GAAG;EACzC,MAAM,WAAW,QAAQ,YAAY,QAAQ,QAAQ,WAAW,QAAQ,YAAY;EACpF,IAAI,EAAE,UAAU,aAAa,QAAQ,qBAAqB,SAAS,CAAC,UAAU;EAC9E,IAAI;GACF,MAAM,WAAY,MAAM,UAAU,WAAW;GAC7C,IAAI,CAAC,eAAe,UAAU,OAAO,GAAG,MAAM,IAAI,MAAM,uCAAuC;GAC/F,SAAS,KAAK;IACZ;IACA,QAAQ,SAAS;IACjB,GAAI,UAAU,aAAa,QAAQ,mBAC/B;KAAE,UAAU;KAAe,mBAAmB;IAAS,IACvD,CAAC;GACP,CAAC;EACH,SAAS,OAAO;GACd,MAAM,UAAU,mBAAmB,YAAY,YAAY,oBAAoB,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,EAAE;GACtI,IAAI,YAAY,YAAY,UAAU,MAAM,IAAI,MAAM,SAAS,EAAE,OAAO,MAAM,CAAC;GAC/E,QAAQ,WAAW,OAAO;EAC5B;CACF;CACA,OAAO;AACT;;;;;;;;;AAUA,eAAsB,mBACpB,OACA,SAC+B;CAC/B,MAAM,WAAW,QAAQ,cAAc,QAAgB,OAAO;CAC9D,MAAM,OAAO,IAAI,IAAI,QAAQ,QAAQ,KAAK,UAAU,CAAC,OAA8B,MAAM,GAAG,CAAC,CAAC;CAC9F,MAAM,WAAW,MAAM,mBAAmB,OAAO,QAAQ,SAAS,UAAU,gBAC1E,cAAc,KAAK,IAAI,WAAW,GAAI,UAAU,OAAO,CACzD;CACA,OAAO;EAAE,SAAS,QAAQ;EAAS;CAAS;AAC9C"}