@agimon-ai/po-core 0.0.0-alpha.0

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 (1218) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +7 -0
  3. package/dist/_virtual/_rolldown/runtime.cjs +23 -0
  4. package/dist/agentModel.cjs +4 -0
  5. package/dist/agentModel.d.mts +2 -0
  6. package/dist/agentModel.mjs +2 -0
  7. package/dist/apiContracts.cjs +2094 -0
  8. package/dist/apiContracts.cjs.map +1 -0
  9. package/dist/apiContracts.d.mts +1086 -0
  10. package/dist/apiContracts.d.mts.map +1 -0
  11. package/dist/apiContracts.mjs +2074 -0
  12. package/dist/apiContracts.mjs.map +1 -0
  13. package/dist/askUser.cjs +8 -0
  14. package/dist/askUser.d.mts +2 -0
  15. package/dist/askUser.mjs +2 -0
  16. package/dist/authorTools.cjs +5 -0
  17. package/dist/authorTools.d.mts +2 -0
  18. package/dist/authorTools.mjs +2 -0
  19. package/dist/backgroundWork.cjs +9 -0
  20. package/dist/backgroundWork.d.mts +2 -0
  21. package/dist/backgroundWork.mjs +2 -0
  22. package/dist/bundleAssetPolicy.cjs +5 -0
  23. package/dist/bundleAssetPolicy.d.mts +2 -0
  24. package/dist/bundleAssetPolicy.mjs +2 -0
  25. package/dist/childProcess.cjs +15 -0
  26. package/dist/childProcess.d.mts +2 -0
  27. package/dist/childProcess.mjs +2 -0
  28. package/dist/childSession.cjs +9 -0
  29. package/dist/childSession.d.mts +3 -0
  30. package/dist/childSession.mjs +3 -0
  31. package/dist/cockpitContainer.cjs +4 -0
  32. package/dist/cockpitContainer.d.mts +2 -0
  33. package/dist/cockpitContainer.mjs +2 -0
  34. package/dist/config.cjs +13 -0
  35. package/dist/config.d.mts +3 -0
  36. package/dist/config.mjs +2 -0
  37. package/dist/contextApi.cjs +12 -0
  38. package/dist/contextApi.d.mts +4 -0
  39. package/dist/contextApi.mjs +3 -0
  40. package/dist/contextContributions.cjs +7 -0
  41. package/dist/contextContributions.d.mts +3 -0
  42. package/dist/contextContributions.mjs +3 -0
  43. package/dist/contextDetail.cjs +65 -0
  44. package/dist/contextDetail.cjs.map +1 -0
  45. package/dist/contextDetail.d.mts +19 -0
  46. package/dist/contextDetail.d.mts.map +1 -0
  47. package/dist/contextDetail.mjs +64 -0
  48. package/dist/contextDetail.mjs.map +1 -0
  49. package/dist/contextDetailStore.cjs +96 -0
  50. package/dist/contextDetailStore.cjs.map +1 -0
  51. package/dist/contextDetailStore.d.mts +21 -0
  52. package/dist/contextDetailStore.d.mts.map +1 -0
  53. package/dist/contextDetailStore.mjs +87 -0
  54. package/dist/contextDetailStore.mjs.map +1 -0
  55. package/dist/contextProjection.cjs +121 -0
  56. package/dist/contextProjection.cjs.map +1 -0
  57. package/dist/contextProjection.d.mts +130 -0
  58. package/dist/contextProjection.d.mts.map +1 -0
  59. package/dist/contextProjection.mjs +117 -0
  60. package/dist/contextProjection.mjs.map +1 -0
  61. package/dist/cordisHost.cjs +13 -0
  62. package/dist/cordisHost.d.mts +2 -0
  63. package/dist/cordisHost.mjs +2 -0
  64. package/dist/delegation.cjs +18 -0
  65. package/dist/delegation.d.mts +2 -0
  66. package/dist/delegation.mjs +2 -0
  67. package/dist/doomPackage.cjs +61 -0
  68. package/dist/doomPackage.cjs.map +1 -0
  69. package/dist/doomPackage.d.mts +17 -0
  70. package/dist/doomPackage.d.mts.map +1 -0
  71. package/dist/doomPackage.mjs +54 -0
  72. package/dist/doomPackage.mjs.map +1 -0
  73. package/dist/executionBudget.cjs +232 -0
  74. package/dist/executionBudget.cjs.map +1 -0
  75. package/dist/executionBudget.d.mts +11 -0
  76. package/dist/executionBudget.d.mts.map +1 -0
  77. package/dist/executionBudget.mjs +226 -0
  78. package/dist/executionBudget.mjs.map +1 -0
  79. package/dist/extensionFile.cjs +19 -0
  80. package/dist/extensionFile.d.mts +3 -0
  81. package/dist/extensionFile.mjs +2 -0
  82. package/dist/footer.cjs +6 -0
  83. package/dist/footer.d.mts +2 -0
  84. package/dist/footer.mjs +2 -0
  85. package/dist/headless.cjs +16 -0
  86. package/dist/headless.d.mts +2 -0
  87. package/dist/headless.mjs +2 -0
  88. package/dist/headlessHub.cjs +1008 -0
  89. package/dist/headlessHub.cjs.map +1 -0
  90. package/dist/headlessHub.d.mts +176 -0
  91. package/dist/headlessHub.d.mts.map +1 -0
  92. package/dist/headlessHub.mjs +1005 -0
  93. package/dist/headlessHub.mjs.map +1 -0
  94. package/dist/headlessServer.cjs +956 -0
  95. package/dist/headlessServer.cjs.map +1 -0
  96. package/dist/headlessServer.d.mts +66 -0
  97. package/dist/headlessServer.d.mts.map +1 -0
  98. package/dist/headlessServer.mjs +949 -0
  99. package/dist/headlessServer.mjs.map +1 -0
  100. package/dist/headlessSessionHost.cjs +0 -0
  101. package/dist/headlessSessionHost.d.mts +89 -0
  102. package/dist/headlessSessionHost.d.mts.map +1 -0
  103. package/dist/headlessSessionHost.mjs +1 -0
  104. package/dist/headlessSessionManager.cjs +51 -0
  105. package/dist/headlessSessionManager.cjs.map +1 -0
  106. package/dist/headlessSessionManager.d.mts +6 -0
  107. package/dist/headlessSessionManager.d.mts.map +1 -0
  108. package/dist/headlessSessionManager.mjs +50 -0
  109. package/dist/headlessSessionManager.mjs.map +1 -0
  110. package/dist/help.cjs +24 -0
  111. package/dist/help.d.mts +3 -0
  112. package/dist/help.mjs +3 -0
  113. package/dist/history.cjs +25 -0
  114. package/dist/history.d.mts +10 -0
  115. package/dist/history.mjs +10 -0
  116. package/dist/historyOwnership.cjs +253 -0
  117. package/dist/historyOwnership.cjs.map +1 -0
  118. package/dist/historyOwnership.d.mts +23 -0
  119. package/dist/historyOwnership.d.mts.map +1 -0
  120. package/dist/historyOwnership.mjs +247 -0
  121. package/dist/historyOwnership.mjs.map +1 -0
  122. package/dist/hubChannel.cjs +4 -0
  123. package/dist/hubChannel.d.mts +2 -0
  124. package/dist/hubChannel.mjs +2 -0
  125. package/dist/index.cjs +44 -0
  126. package/dist/index.d.mts +6 -0
  127. package/dist/index.mjs +6 -0
  128. package/dist/json.cjs +6 -0
  129. package/dist/json.d.mts +2 -0
  130. package/dist/json.mjs +2 -0
  131. package/dist/jsonlSessionRepo.cjs +44 -0
  132. package/dist/jsonlSessionRepo.cjs.map +1 -0
  133. package/dist/jsonlSessionRepo.d.mts +7 -0
  134. package/dist/jsonlSessionRepo.d.mts.map +1 -0
  135. package/dist/jsonlSessionRepo.mjs +42 -0
  136. package/dist/jsonlSessionRepo.mjs.map +1 -0
  137. package/dist/kernel.cjs +3 -0
  138. package/dist/kernel.d.mts +3 -0
  139. package/dist/kernel.mjs +2 -0
  140. package/dist/leader.cjs +9 -0
  141. package/dist/leader.d.mts +2 -0
  142. package/dist/leader.mjs +2 -0
  143. package/dist/logSinkTelemetry.cjs +5 -0
  144. package/dist/logSinkTelemetry.d.mts +2 -0
  145. package/dist/logSinkTelemetry.mjs +2 -0
  146. package/dist/machineApi.cjs +92 -0
  147. package/dist/machineApi.cjs.map +1 -0
  148. package/dist/machineApi.d.mts +7 -0
  149. package/dist/machineApi.d.mts.map +1 -0
  150. package/dist/machineApi.mjs +88 -0
  151. package/dist/machineApi.mjs.map +1 -0
  152. package/dist/main.cjs +11 -0
  153. package/dist/main.d.mts +5 -0
  154. package/dist/main.mjs +4 -0
  155. package/dist/mcpFacet.cjs +9 -0
  156. package/dist/mcpFacet.d.mts +4 -0
  157. package/dist/mcpFacet.mjs +3 -0
  158. package/dist/mcpProjection.cjs +16 -0
  159. package/dist/mcpProjection.d.mts +2 -0
  160. package/dist/mcpProjection.mjs +2 -0
  161. package/dist/mcpSchemaCost.cjs +195 -0
  162. package/dist/mcpSchemaCost.cjs.map +1 -0
  163. package/dist/mcpSchemaCost.d.mts +35 -0
  164. package/dist/mcpSchemaCost.d.mts.map +1 -0
  165. package/dist/mcpSchemaCost.mjs +190 -0
  166. package/dist/mcpSchemaCost.mjs.map +1 -0
  167. package/dist/mcpSession.cjs +9 -0
  168. package/dist/mcpSession.d.mts +2 -0
  169. package/dist/mcpSession.mjs +2 -0
  170. package/dist/mcpStatus.cjs +7 -0
  171. package/dist/mcpStatus.d.mts +2 -0
  172. package/dist/mcpStatus.mjs +2 -0
  173. package/dist/mcpToolResolver.cjs +5 -0
  174. package/dist/mcpToolResolver.d.mts +2 -0
  175. package/dist/mcpToolResolver.mjs +2 -0
  176. package/dist/mcpWidget.cjs +0 -0
  177. package/dist/mcpWidget.d.mts +2 -0
  178. package/dist/mcpWidget.mjs +1 -0
  179. package/dist/moduleResolution.cjs +412 -0
  180. package/dist/moduleResolution.cjs.map +1 -0
  181. package/dist/moduleResolution.d.mts +72 -0
  182. package/dist/moduleResolution.d.mts.map +1 -0
  183. package/dist/moduleResolution.mjs +396 -0
  184. package/dist/moduleResolution.mjs.map +1 -0
  185. package/dist/narration.cjs +10 -0
  186. package/dist/narration.d.mts +2 -0
  187. package/dist/narration.mjs +2 -0
  188. package/dist/native.cjs +29 -0
  189. package/dist/native.d.mts +12 -0
  190. package/dist/native.mjs +8 -0
  191. package/dist/notification.cjs +17 -0
  192. package/dist/notification.d.mts +2 -0
  193. package/dist/notification.mjs +2 -0
  194. package/dist/packageApi.cjs +17 -0
  195. package/dist/packageApi.d.mts +3 -0
  196. package/dist/packageApi.mjs +3 -0
  197. package/dist/packageApiServer.cjs +196 -0
  198. package/dist/packageApiServer.cjs.map +1 -0
  199. package/dist/packageApiServer.d.mts +62 -0
  200. package/dist/packageApiServer.d.mts.map +1 -0
  201. package/dist/packageApiServer.mjs +194 -0
  202. package/dist/packageApiServer.mjs.map +1 -0
  203. package/dist/piSettings.cjs +20 -0
  204. package/dist/piSettings.d.mts +2 -0
  205. package/dist/piSettings.mjs +2 -0
  206. package/dist/pluginProtocol.cjs +10 -0
  207. package/dist/pluginProtocol.d.mts +2 -0
  208. package/dist/pluginProtocol.mjs +2 -0
  209. package/dist/profileIdentity.cjs +6 -0
  210. package/dist/profileIdentity.d.mts +2 -0
  211. package/dist/profileIdentity.mjs +2 -0
  212. package/dist/protocol.cjs +10 -0
  213. package/dist/protocol.d.mts +2 -0
  214. package/dist/protocol.mjs +2 -0
  215. package/dist/readiness.cjs +8 -0
  216. package/dist/readiness.d.mts +2 -0
  217. package/dist/readiness.mjs +2 -0
  218. package/dist/remoteApi.cjs +45 -0
  219. package/dist/remoteApi.cjs.map +1 -0
  220. package/dist/remoteApi.d.mts +7 -0
  221. package/dist/remoteApi.d.mts.map +1 -0
  222. package/dist/remoteApi.mjs +44 -0
  223. package/dist/remoteApi.mjs.map +1 -0
  224. package/dist/remoteRuntime.cjs +498 -0
  225. package/dist/remoteRuntime.cjs.map +1 -0
  226. package/dist/remoteRuntime.d.mts +36 -0
  227. package/dist/remoteRuntime.d.mts.map +1 -0
  228. package/dist/remoteRuntime.mjs +494 -0
  229. package/dist/remoteRuntime.mjs.map +1 -0
  230. package/dist/runtimeConfig.cjs +232 -0
  231. package/dist/runtimeConfig.cjs.map +1 -0
  232. package/dist/runtimeConfig.d.mts +313 -0
  233. package/dist/runtimeConfig.d.mts.map +1 -0
  234. package/dist/runtimeConfig.mjs +221 -0
  235. package/dist/runtimeConfig.mjs.map +1 -0
  236. package/dist/runtimeContextApi.cjs +64 -0
  237. package/dist/runtimeContextApi.cjs.map +1 -0
  238. package/dist/runtimeContextApi.d.mts +16 -0
  239. package/dist/runtimeContextApi.d.mts.map +1 -0
  240. package/dist/runtimeContextApi.mjs +62 -0
  241. package/dist/runtimeContextApi.mjs.map +1 -0
  242. package/dist/runtimeCordisHost.cjs +223 -0
  243. package/dist/runtimeCordisHost.cjs.map +1 -0
  244. package/dist/runtimeCordisHost.d.mts +78 -0
  245. package/dist/runtimeCordisHost.d.mts.map +1 -0
  246. package/dist/runtimeCordisHost.mjs +212 -0
  247. package/dist/runtimeCordisHost.mjs.map +1 -0
  248. package/dist/runtimeHeadlessSessionManager.cjs +0 -0
  249. package/dist/runtimeHeadlessSessionManager.d.mts +18 -0
  250. package/dist/runtimeHeadlessSessionManager.d.mts.map +1 -0
  251. package/dist/runtimeHeadlessSessionManager.mjs +1 -0
  252. package/dist/runtimeIdentity.cjs +26 -0
  253. package/dist/runtimeIdentity.cjs.map +1 -0
  254. package/dist/runtimeIdentity.d.mts +7 -0
  255. package/dist/runtimeIdentity.d.mts.map +1 -0
  256. package/dist/runtimeIdentity.mjs +21 -0
  257. package/dist/runtimeIdentity.mjs.map +1 -0
  258. package/dist/runtimeJson.cjs +46 -0
  259. package/dist/runtimeJson.cjs.map +1 -0
  260. package/dist/runtimeJson.d.mts +22 -0
  261. package/dist/runtimeJson.d.mts.map +1 -0
  262. package/dist/runtimeJson.mjs +39 -0
  263. package/dist/runtimeJson.mjs.map +1 -0
  264. package/dist/runtimeLogSinkTelemetry.cjs +102 -0
  265. package/dist/runtimeLogSinkTelemetry.cjs.map +1 -0
  266. package/dist/runtimeLogSinkTelemetry.d.mts +49 -0
  267. package/dist/runtimeLogSinkTelemetry.d.mts.map +1 -0
  268. package/dist/runtimeLogSinkTelemetry.mjs +99 -0
  269. package/dist/runtimeLogSinkTelemetry.mjs.map +1 -0
  270. package/dist/runtimePackages.cjs +120 -0
  271. package/dist/runtimePackages.cjs.map +1 -0
  272. package/dist/runtimePackages.d.mts +57 -0
  273. package/dist/runtimePackages.d.mts.map +1 -0
  274. package/dist/runtimePackages.mjs +110 -0
  275. package/dist/runtimePackages.mjs.map +1 -0
  276. package/dist/runtimePiSettings.cjs +257 -0
  277. package/dist/runtimePiSettings.cjs.map +1 -0
  278. package/dist/runtimePiSettings.d.mts +70 -0
  279. package/dist/runtimePiSettings.d.mts.map +1 -0
  280. package/dist/runtimePiSettings.mjs +235 -0
  281. package/dist/runtimePiSettings.mjs.map +1 -0
  282. package/dist/runtimeProtocol.cjs +228 -0
  283. package/dist/runtimeProtocol.cjs.map +1 -0
  284. package/dist/runtimeProtocol.d.mts +86 -0
  285. package/dist/runtimeProtocol.d.mts.map +1 -0
  286. package/dist/runtimeProtocol.mjs +219 -0
  287. package/dist/runtimeProtocol.mjs.map +1 -0
  288. package/dist/runtimeToolNames.cjs +51 -0
  289. package/dist/runtimeToolNames.cjs.map +1 -0
  290. package/dist/runtimeToolNames.d.mts +24 -0
  291. package/dist/runtimeToolNames.d.mts.map +1 -0
  292. package/dist/runtimeToolNames.mjs +49 -0
  293. package/dist/runtimeToolNames.mjs.map +1 -0
  294. package/dist/runtimeTransition.cjs +27 -0
  295. package/dist/runtimeTransition.cjs.map +1 -0
  296. package/dist/runtimeTransition.d.mts +114 -0
  297. package/dist/runtimeTransition.d.mts.map +1 -0
  298. package/dist/runtimeTransition.mjs +24 -0
  299. package/dist/runtimeTransition.mjs.map +1 -0
  300. package/dist/sandboxHarness.cjs +6 -0
  301. package/dist/sandboxHarness.d.mts +2 -0
  302. package/dist/sandboxHarness.mjs +2 -0
  303. package/dist/server.cjs +17 -0
  304. package/dist/server.d.mts +10 -0
  305. package/dist/server.mjs +7 -0
  306. package/dist/serverFacet.cjs +34 -0
  307. package/dist/serverFacet.d.mts +10 -0
  308. package/dist/serverFacet.mjs +9 -0
  309. package/dist/serverTelemetry.cjs +25 -0
  310. package/dist/serverTelemetry.cjs.map +1 -0
  311. package/dist/serverTelemetry.d.mts +12 -0
  312. package/dist/serverTelemetry.d.mts.map +1 -0
  313. package/dist/serverTelemetry.mjs +23 -0
  314. package/dist/serverTelemetry.mjs.map +1 -0
  315. package/dist/sessionFilesApi.cjs +96 -0
  316. package/dist/sessionFilesApi.cjs.map +1 -0
  317. package/dist/sessionFilesApi.d.mts +7 -0
  318. package/dist/sessionFilesApi.d.mts.map +1 -0
  319. package/dist/sessionFilesApi.mjs +91 -0
  320. package/dist/sessionFilesApi.mjs.map +1 -0
  321. package/dist/sessionMcp.cjs +6 -0
  322. package/dist/sessionMcp.d.mts +5 -0
  323. package/dist/sessionMcp.mjs +3 -0
  324. package/dist/sessionProtocol.cjs +8 -0
  325. package/dist/sessionProtocol.d.mts +3 -0
  326. package/dist/sessionProtocol.mjs +2 -0
  327. package/dist/skills.cjs +9 -0
  328. package/dist/skills.d.mts +2 -0
  329. package/dist/skills.mjs +2 -0
  330. package/dist/sqliteSessionStorage.cjs +168 -0
  331. package/dist/sqliteSessionStorage.cjs.map +1 -0
  332. package/dist/sqliteSessionStorage.d.mts +35 -0
  333. package/dist/sqliteSessionStorage.d.mts.map +1 -0
  334. package/dist/sqliteSessionStorage.mjs +158 -0
  335. package/dist/sqliteSessionStorage.mjs.map +1 -0
  336. package/dist/src/constants/authorTools.cjs +10 -0
  337. package/dist/src/constants/authorTools.cjs.map +1 -0
  338. package/dist/src/constants/authorTools.d.mts +6 -0
  339. package/dist/src/constants/authorTools.d.mts.map +1 -0
  340. package/dist/src/constants/authorTools.mjs +8 -0
  341. package/dist/src/constants/authorTools.mjs.map +1 -0
  342. package/dist/src/constants/contextApi.cjs +31 -0
  343. package/dist/src/constants/contextApi.cjs.map +1 -0
  344. package/dist/src/constants/contextApi.d.mts +23 -0
  345. package/dist/src/constants/contextApi.d.mts.map +1 -0
  346. package/dist/src/constants/contextApi.mjs +25 -0
  347. package/dist/src/constants/contextApi.mjs.map +1 -0
  348. package/dist/src/constants/nativeHost.cjs +56 -0
  349. package/dist/src/constants/nativeHost.cjs.map +1 -0
  350. package/dist/src/constants/nativeHost.d.mts +21 -0
  351. package/dist/src/constants/nativeHost.d.mts.map +1 -0
  352. package/dist/src/constants/nativeHost.mjs +53 -0
  353. package/dist/src/constants/nativeHost.mjs.map +1 -0
  354. package/dist/src/constants/remote.cjs +132 -0
  355. package/dist/src/constants/remote.cjs.map +1 -0
  356. package/dist/src/constants/remote.mjs +99 -0
  357. package/dist/src/constants/remote.mjs.map +1 -0
  358. package/dist/src/constants/sessionFiles.cjs +27 -0
  359. package/dist/src/constants/sessionFiles.cjs.map +1 -0
  360. package/dist/src/constants/sessionFiles.mjs +25 -0
  361. package/dist/src/constants/sessionFiles.mjs.map +1 -0
  362. package/dist/src/constants/voiceReloadHandoff.cjs +12 -0
  363. package/dist/src/constants/voiceReloadHandoff.cjs.map +1 -0
  364. package/dist/src/constants/voiceReloadHandoff.d.mts +7 -0
  365. package/dist/src/constants/voiceReloadHandoff.d.mts.map +1 -0
  366. package/dist/src/constants/voiceReloadHandoff.mjs +9 -0
  367. package/dist/src/constants/voiceReloadHandoff.mjs.map +1 -0
  368. package/dist/src/constants/voiceTools.cjs +96 -0
  369. package/dist/src/constants/voiceTools.cjs.map +1 -0
  370. package/dist/src/constants/voiceTools.d.mts +58 -0
  371. package/dist/src/constants/voiceTools.d.mts.map +1 -0
  372. package/dist/src/constants/voiceTools.mjs +60 -0
  373. package/dist/src/constants/voiceTools.mjs.map +1 -0
  374. package/dist/src/extensions/extensionFile.cjs +140 -0
  375. package/dist/src/extensions/extensionFile.cjs.map +1 -0
  376. package/dist/src/extensions/extensionFile.d.mts +69 -0
  377. package/dist/src/extensions/extensionFile.d.mts.map +1 -0
  378. package/dist/src/extensions/extensionFile.mjs +124 -0
  379. package/dist/src/extensions/extensionFile.mjs.map +1 -0
  380. package/dist/src/extensions/serverPlugin.cjs +107 -0
  381. package/dist/src/extensions/serverPlugin.cjs.map +1 -0
  382. package/dist/src/extensions/serverPlugin.d.mts +5 -0
  383. package/dist/src/extensions/serverPlugin.d.mts.map +1 -0
  384. package/dist/src/extensions/serverPlugin.mjs +107 -0
  385. package/dist/src/extensions/serverPlugin.mjs.map +1 -0
  386. package/dist/src/extensions/webPlugin.cjs +136 -0
  387. package/dist/src/extensions/webPlugin.cjs.map +1 -0
  388. package/dist/src/extensions/webPlugin.d.mts +68 -0
  389. package/dist/src/extensions/webPlugin.d.mts.map +1 -0
  390. package/dist/src/extensions/webPlugin.mjs +114 -0
  391. package/dist/src/extensions/webPlugin.mjs.map +1 -0
  392. package/dist/src/pi/piSessionRuntime.cjs +625 -0
  393. package/dist/src/pi/piSessionRuntime.cjs.map +1 -0
  394. package/dist/src/pi/piSessionRuntime.d.mts +43 -0
  395. package/dist/src/pi/piSessionRuntime.d.mts.map +1 -0
  396. package/dist/src/pi/piSessionRuntime.mjs +624 -0
  397. package/dist/src/pi/piSessionRuntime.mjs.map +1 -0
  398. package/dist/src/pi/piWebSocketListener.cjs +115 -0
  399. package/dist/src/pi/piWebSocketListener.cjs.map +1 -0
  400. package/dist/src/pi/piWebSocketListener.mjs +115 -0
  401. package/dist/src/pi/piWebSocketListener.mjs.map +1 -0
  402. package/dist/src/schemas/agentModel.cjs +33 -0
  403. package/dist/src/schemas/agentModel.cjs.map +1 -0
  404. package/dist/src/schemas/agentModel.d.mts +26 -0
  405. package/dist/src/schemas/agentModel.d.mts.map +1 -0
  406. package/dist/src/schemas/agentModel.mjs +32 -0
  407. package/dist/src/schemas/agentModel.mjs.map +1 -0
  408. package/dist/src/schemas/apiContracts.d.mts +58 -0
  409. package/dist/src/schemas/apiContracts.d.mts.map +1 -0
  410. package/dist/src/schemas/askUser.cjs +42 -0
  411. package/dist/src/schemas/askUser.cjs.map +1 -0
  412. package/dist/src/schemas/askUser.d.mts +47 -0
  413. package/dist/src/schemas/askUser.d.mts.map +1 -0
  414. package/dist/src/schemas/askUser.mjs +37 -0
  415. package/dist/src/schemas/askUser.mjs.map +1 -0
  416. package/dist/src/schemas/backgroundWork.cjs +44 -0
  417. package/dist/src/schemas/backgroundWork.cjs.map +1 -0
  418. package/dist/src/schemas/backgroundWork.d.mts +76 -0
  419. package/dist/src/schemas/backgroundWork.d.mts.map +1 -0
  420. package/dist/src/schemas/backgroundWork.mjs +38 -0
  421. package/dist/src/schemas/backgroundWork.mjs.map +1 -0
  422. package/dist/src/schemas/childProcess.cjs +67 -0
  423. package/dist/src/schemas/childProcess.cjs.map +1 -0
  424. package/dist/src/schemas/childProcess.d.mts +30 -0
  425. package/dist/src/schemas/childProcess.d.mts.map +1 -0
  426. package/dist/src/schemas/childProcess.mjs +55 -0
  427. package/dist/src/schemas/childProcess.mjs.map +1 -0
  428. package/dist/src/schemas/cockpitContainer.cjs +31 -0
  429. package/dist/src/schemas/cockpitContainer.cjs.map +1 -0
  430. package/dist/src/schemas/cockpitContainer.d.mts +80 -0
  431. package/dist/src/schemas/cockpitContainer.d.mts.map +1 -0
  432. package/dist/src/schemas/cockpitContainer.mjs +30 -0
  433. package/dist/src/schemas/cockpitContainer.mjs.map +1 -0
  434. package/dist/src/schemas/contextContributions.cjs +17 -0
  435. package/dist/src/schemas/contextContributions.cjs.map +1 -0
  436. package/dist/src/schemas/contextContributions.d.mts +49 -0
  437. package/dist/src/schemas/contextContributions.d.mts.map +1 -0
  438. package/dist/src/schemas/contextContributions.mjs +15 -0
  439. package/dist/src/schemas/contextContributions.mjs.map +1 -0
  440. package/dist/src/schemas/delegation.cjs +91 -0
  441. package/dist/src/schemas/delegation.cjs.map +1 -0
  442. package/dist/src/schemas/delegation.d.mts +95 -0
  443. package/dist/src/schemas/delegation.d.mts.map +1 -0
  444. package/dist/src/schemas/delegation.mjs +76 -0
  445. package/dist/src/schemas/delegation.mjs.map +1 -0
  446. package/dist/src/schemas/extensionFile.d.mts +116 -0
  447. package/dist/src/schemas/extensionFile.d.mts.map +1 -0
  448. package/dist/src/schemas/footer.cjs +48 -0
  449. package/dist/src/schemas/footer.cjs.map +1 -0
  450. package/dist/src/schemas/footer.d.mts +48 -0
  451. package/dist/src/schemas/footer.d.mts.map +1 -0
  452. package/dist/src/schemas/footer.mjs +45 -0
  453. package/dist/src/schemas/footer.mjs.map +1 -0
  454. package/dist/src/schemas/headless.cjs +97 -0
  455. package/dist/src/schemas/headless.cjs.map +1 -0
  456. package/dist/src/schemas/headless.d.mts +472 -0
  457. package/dist/src/schemas/headless.d.mts.map +1 -0
  458. package/dist/src/schemas/headless.mjs +84 -0
  459. package/dist/src/schemas/headless.mjs.map +1 -0
  460. package/dist/src/schemas/help.cjs +281 -0
  461. package/dist/src/schemas/help.cjs.map +1 -0
  462. package/dist/src/schemas/help.d.mts +119 -0
  463. package/dist/src/schemas/help.d.mts.map +1 -0
  464. package/dist/src/schemas/help.mjs +262 -0
  465. package/dist/src/schemas/help.mjs.map +1 -0
  466. package/dist/src/schemas/hubChannel.cjs +20 -0
  467. package/dist/src/schemas/hubChannel.cjs.map +1 -0
  468. package/dist/src/schemas/hubChannel.d.mts +271 -0
  469. package/dist/src/schemas/hubChannel.d.mts.map +1 -0
  470. package/dist/src/schemas/hubChannel.mjs +19 -0
  471. package/dist/src/schemas/hubChannel.mjs.map +1 -0
  472. package/dist/src/schemas/leader.cjs +57 -0
  473. package/dist/src/schemas/leader.cjs.map +1 -0
  474. package/dist/src/schemas/leader.d.mts +107 -0
  475. package/dist/src/schemas/leader.d.mts.map +1 -0
  476. package/dist/src/schemas/leader.mjs +51 -0
  477. package/dist/src/schemas/leader.mjs.map +1 -0
  478. package/dist/src/schemas/mcpBundle.d.mts +13 -0
  479. package/dist/src/schemas/mcpBundle.d.mts.map +1 -0
  480. package/dist/src/schemas/mcpFacet.cjs +24 -0
  481. package/dist/src/schemas/mcpFacet.cjs.map +1 -0
  482. package/dist/src/schemas/mcpFacet.d.mts +91 -0
  483. package/dist/src/schemas/mcpFacet.d.mts.map +1 -0
  484. package/dist/src/schemas/mcpFacet.mjs +21 -0
  485. package/dist/src/schemas/mcpFacet.mjs.map +1 -0
  486. package/dist/src/schemas/mcpProjection.cjs +117 -0
  487. package/dist/src/schemas/mcpProjection.cjs.map +1 -0
  488. package/dist/src/schemas/mcpProjection.d.mts +124 -0
  489. package/dist/src/schemas/mcpProjection.d.mts.map +1 -0
  490. package/dist/src/schemas/mcpProjection.mjs +104 -0
  491. package/dist/src/schemas/mcpProjection.mjs.map +1 -0
  492. package/dist/src/schemas/mcpSession.cjs +57 -0
  493. package/dist/src/schemas/mcpSession.cjs.map +1 -0
  494. package/dist/src/schemas/mcpSession.d.mts +57 -0
  495. package/dist/src/schemas/mcpSession.d.mts.map +1 -0
  496. package/dist/src/schemas/mcpSession.mjs +51 -0
  497. package/dist/src/schemas/mcpSession.mjs.map +1 -0
  498. package/dist/src/schemas/mcpStatus.cjs +52 -0
  499. package/dist/src/schemas/mcpStatus.cjs.map +1 -0
  500. package/dist/src/schemas/mcpStatus.d.mts +73 -0
  501. package/dist/src/schemas/mcpStatus.d.mts.map +1 -0
  502. package/dist/src/schemas/mcpStatus.mjs +48 -0
  503. package/dist/src/schemas/mcpStatus.mjs.map +1 -0
  504. package/dist/src/schemas/mcpToolResolver.cjs +17 -0
  505. package/dist/src/schemas/mcpToolResolver.cjs.map +1 -0
  506. package/dist/src/schemas/mcpToolResolver.d.mts +24 -0
  507. package/dist/src/schemas/mcpToolResolver.d.mts.map +1 -0
  508. package/dist/src/schemas/mcpToolResolver.mjs +15 -0
  509. package/dist/src/schemas/mcpToolResolver.mjs.map +1 -0
  510. package/dist/src/schemas/narration.cjs +54 -0
  511. package/dist/src/schemas/narration.cjs.map +1 -0
  512. package/dist/src/schemas/narration.d.mts +29 -0
  513. package/dist/src/schemas/narration.d.mts.map +1 -0
  514. package/dist/src/schemas/narration.mjs +47 -0
  515. package/dist/src/schemas/narration.mjs.map +1 -0
  516. package/dist/src/schemas/notification.cjs +122 -0
  517. package/dist/src/schemas/notification.cjs.map +1 -0
  518. package/dist/src/schemas/notification.d.mts +48 -0
  519. package/dist/src/schemas/notification.d.mts.map +1 -0
  520. package/dist/src/schemas/notification.mjs +108 -0
  521. package/dist/src/schemas/notification.mjs.map +1 -0
  522. package/dist/src/schemas/packageApi.cjs +76 -0
  523. package/dist/src/schemas/packageApi.cjs.map +1 -0
  524. package/dist/src/schemas/packageApi.d.mts +302 -0
  525. package/dist/src/schemas/packageApi.d.mts.map +1 -0
  526. package/dist/src/schemas/packageApi.mjs +66 -0
  527. package/dist/src/schemas/packageApi.mjs.map +1 -0
  528. package/dist/src/schemas/pluginContributions.cjs +19 -0
  529. package/dist/src/schemas/pluginContributions.cjs.map +1 -0
  530. package/dist/src/schemas/pluginContributions.d.mts +56 -0
  531. package/dist/src/schemas/pluginContributions.d.mts.map +1 -0
  532. package/dist/src/schemas/pluginContributions.mjs +18 -0
  533. package/dist/src/schemas/pluginContributions.mjs.map +1 -0
  534. package/dist/src/schemas/pluginProtocol.cjs +103 -0
  535. package/dist/src/schemas/pluginProtocol.cjs.map +1 -0
  536. package/dist/src/schemas/pluginProtocol.d.mts +70 -0
  537. package/dist/src/schemas/pluginProtocol.d.mts.map +1 -0
  538. package/dist/src/schemas/pluginProtocol.mjs +96 -0
  539. package/dist/src/schemas/pluginProtocol.mjs.map +1 -0
  540. package/dist/src/schemas/profileIdentity.cjs +67 -0
  541. package/dist/src/schemas/profileIdentity.cjs.map +1 -0
  542. package/dist/src/schemas/profileIdentity.d.mts +50 -0
  543. package/dist/src/schemas/profileIdentity.d.mts.map +1 -0
  544. package/dist/src/schemas/profileIdentity.mjs +64 -0
  545. package/dist/src/schemas/profileIdentity.mjs.map +1 -0
  546. package/dist/src/schemas/readiness.cjs +251 -0
  547. package/dist/src/schemas/readiness.cjs.map +1 -0
  548. package/dist/src/schemas/readiness.d.mts +84 -0
  549. package/dist/src/schemas/readiness.d.mts.map +1 -0
  550. package/dist/src/schemas/readiness.mjs +246 -0
  551. package/dist/src/schemas/readiness.mjs.map +1 -0
  552. package/dist/src/schemas/sandboxHarness.cjs +29 -0
  553. package/dist/src/schemas/sandboxHarness.cjs.map +1 -0
  554. package/dist/src/schemas/sandboxHarness.d.mts +39 -0
  555. package/dist/src/schemas/sandboxHarness.d.mts.map +1 -0
  556. package/dist/src/schemas/sandboxHarness.mjs +26 -0
  557. package/dist/src/schemas/sandboxHarness.mjs.map +1 -0
  558. package/dist/src/schemas/serverBundle.d.mts +19 -0
  559. package/dist/src/schemas/serverBundle.d.mts.map +1 -0
  560. package/dist/src/schemas/serverFacet.cjs +111 -0
  561. package/dist/src/schemas/serverFacet.cjs.map +1 -0
  562. package/dist/src/schemas/serverFacet.d.mts +152 -0
  563. package/dist/src/schemas/serverFacet.d.mts.map +1 -0
  564. package/dist/src/schemas/serverFacet.mjs +101 -0
  565. package/dist/src/schemas/serverFacet.mjs.map +1 -0
  566. package/dist/src/schemas/sessionMcpActivity.d.mts +47 -0
  567. package/dist/src/schemas/sessionMcpActivity.d.mts.map +1 -0
  568. package/dist/src/schemas/sessionProtocol.cjs +17 -0
  569. package/dist/src/schemas/sessionProtocol.cjs.map +1 -0
  570. package/dist/src/schemas/sessionProtocol.d.mts +313 -0
  571. package/dist/src/schemas/sessionProtocol.d.mts.map +1 -0
  572. package/dist/src/schemas/sessionProtocol.mjs +12 -0
  573. package/dist/src/schemas/sessionProtocol.mjs.map +1 -0
  574. package/dist/src/schemas/sessionUpdates.d.mts +34 -0
  575. package/dist/src/schemas/sessionUpdates.d.mts.map +1 -0
  576. package/dist/src/schemas/skills.cjs +115 -0
  577. package/dist/src/schemas/skills.cjs.map +1 -0
  578. package/dist/src/schemas/skills.d.mts +65 -0
  579. package/dist/src/schemas/skills.d.mts.map +1 -0
  580. package/dist/src/schemas/skills.mjs +109 -0
  581. package/dist/src/schemas/skills.mjs.map +1 -0
  582. package/dist/src/schemas/toolOverrides.cjs +17 -0
  583. package/dist/src/schemas/toolOverrides.cjs.map +1 -0
  584. package/dist/src/schemas/toolOverrides.d.mts +29 -0
  585. package/dist/src/schemas/toolOverrides.d.mts.map +1 -0
  586. package/dist/src/schemas/toolOverrides.mjs +15 -0
  587. package/dist/src/schemas/toolOverrides.mjs.map +1 -0
  588. package/dist/src/schemas/toolSurface.cjs +17 -0
  589. package/dist/src/schemas/toolSurface.cjs.map +1 -0
  590. package/dist/src/schemas/toolSurface.d.mts +70 -0
  591. package/dist/src/schemas/toolSurface.d.mts.map +1 -0
  592. package/dist/src/schemas/toolSurface.mjs +15 -0
  593. package/dist/src/schemas/toolSurface.mjs.map +1 -0
  594. package/dist/src/schemas/uiHub.cjs +17 -0
  595. package/dist/src/schemas/uiHub.cjs.map +1 -0
  596. package/dist/src/schemas/uiHub.d.mts +23 -0
  597. package/dist/src/schemas/uiHub.d.mts.map +1 -0
  598. package/dist/src/schemas/uiHub.mjs +15 -0
  599. package/dist/src/schemas/uiHub.mjs.map +1 -0
  600. package/dist/src/schemas/voiceReloadHandoff.cjs +78 -0
  601. package/dist/src/schemas/voiceReloadHandoff.cjs.map +1 -0
  602. package/dist/src/schemas/voiceReloadHandoff.d.mts +31 -0
  603. package/dist/src/schemas/voiceReloadHandoff.d.mts.map +1 -0
  604. package/dist/src/schemas/voiceReloadHandoff.mjs +75 -0
  605. package/dist/src/schemas/voiceReloadHandoff.mjs.map +1 -0
  606. package/dist/src/schemas/voiceTools.cjs +205 -0
  607. package/dist/src/schemas/voiceTools.cjs.map +1 -0
  608. package/dist/src/schemas/voiceTools.d.mts +120 -0
  609. package/dist/src/schemas/voiceTools.d.mts.map +1 -0
  610. package/dist/src/schemas/voiceTools.mjs +194 -0
  611. package/dist/src/schemas/voiceTools.mjs.map +1 -0
  612. package/dist/src/server/devProxyForward.cjs +141 -0
  613. package/dist/src/server/devProxyForward.cjs.map +1 -0
  614. package/dist/src/server/devProxyForward.mjs +139 -0
  615. package/dist/src/server/devProxyForward.mjs.map +1 -0
  616. package/dist/src/server/devProxyRoutes.cjs +97 -0
  617. package/dist/src/server/devProxyRoutes.cjs.map +1 -0
  618. package/dist/src/server/devProxyRoutes.mjs +97 -0
  619. package/dist/src/server/devProxyRoutes.mjs.map +1 -0
  620. package/dist/src/server/devProxySocket.cjs +93 -0
  621. package/dist/src/server/devProxySocket.cjs.map +1 -0
  622. package/dist/src/server/devProxySocket.d.mts +25 -0
  623. package/dist/src/server/devProxySocket.d.mts.map +1 -0
  624. package/dist/src/server/devProxySocket.mjs +93 -0
  625. package/dist/src/server/devProxySocket.mjs.map +1 -0
  626. package/dist/src/server/directHarnessRuntime.cjs +2387 -0
  627. package/dist/src/server/directHarnessRuntime.cjs.map +1 -0
  628. package/dist/src/server/directHarnessRuntime.d.mts +4 -0
  629. package/dist/src/server/directHarnessRuntime.mjs +2384 -0
  630. package/dist/src/server/directHarnessRuntime.mjs.map +1 -0
  631. package/dist/src/server/harnessErrorMessage.cjs +13 -0
  632. package/dist/src/server/harnessErrorMessage.cjs.map +1 -0
  633. package/dist/src/server/harnessErrorMessage.mjs +13 -0
  634. package/dist/src/server/harnessErrorMessage.mjs.map +1 -0
  635. package/dist/src/server/headlessProtocol.cjs +382 -0
  636. package/dist/src/server/headlessProtocol.cjs.map +1 -0
  637. package/dist/src/server/headlessProtocol.mjs +382 -0
  638. package/dist/src/server/headlessProtocol.mjs.map +1 -0
  639. package/dist/src/server/liveImport.cjs +37 -0
  640. package/dist/src/server/liveImport.cjs.map +1 -0
  641. package/dist/src/server/liveImport.d.mts +27 -0
  642. package/dist/src/server/liveImport.d.mts.map +1 -0
  643. package/dist/src/server/liveImport.mjs +34 -0
  644. package/dist/src/server/liveImport.mjs.map +1 -0
  645. package/dist/src/server/mcpBundleLoader.cjs +108 -0
  646. package/dist/src/server/mcpBundleLoader.cjs.map +1 -0
  647. package/dist/src/server/mcpBundleLoader.d.mts +46 -0
  648. package/dist/src/server/mcpBundleLoader.d.mts.map +1 -0
  649. package/dist/src/server/mcpBundleLoader.mjs +107 -0
  650. package/dist/src/server/mcpBundleLoader.mjs.map +1 -0
  651. package/dist/src/server/nativeChildTranscriptReader.cjs +20 -0
  652. package/dist/src/server/nativeChildTranscriptReader.cjs.map +1 -0
  653. package/dist/src/server/nativeChildTranscriptReader.mjs +18 -0
  654. package/dist/src/server/nativeChildTranscriptReader.mjs.map +1 -0
  655. package/dist/src/server/remoteRoutes.cjs +463 -0
  656. package/dist/src/server/remoteRoutes.cjs.map +1 -0
  657. package/dist/src/server/remoteRoutes.mjs +463 -0
  658. package/dist/src/server/remoteRoutes.mjs.map +1 -0
  659. package/dist/src/server/serverFacetLoader.cjs +214 -0
  660. package/dist/src/server/serverFacetLoader.cjs.map +1 -0
  661. package/dist/src/server/serverFacetLoader.d.mts +72 -0
  662. package/dist/src/server/serverFacetLoader.d.mts.map +1 -0
  663. package/dist/src/server/serverFacetLoader.mjs +212 -0
  664. package/dist/src/server/serverFacetLoader.mjs.map +1 -0
  665. package/dist/src/server/sessionMcpHandler.cjs +585 -0
  666. package/dist/src/server/sessionMcpHandler.cjs.map +1 -0
  667. package/dist/src/server/sessionMcpHandler.d.mts +50 -0
  668. package/dist/src/server/sessionMcpHandler.d.mts.map +1 -0
  669. package/dist/src/server/sessionMcpHandler.mjs +582 -0
  670. package/dist/src/server/sessionMcpHandler.mjs.map +1 -0
  671. package/dist/src/server/sessionMcpRoutes.cjs +809 -0
  672. package/dist/src/server/sessionMcpRoutes.cjs.map +1 -0
  673. package/dist/src/server/sessionMcpRoutes.mjs +804 -0
  674. package/dist/src/server/sessionMcpRoutes.mjs.map +1 -0
  675. package/dist/src/server/threadJournals.cjs +172 -0
  676. package/dist/src/server/threadJournals.cjs.map +1 -0
  677. package/dist/src/server/threadJournals.mjs +169 -0
  678. package/dist/src/server/threadJournals.mjs.map +1 -0
  679. package/dist/src/services/acpSessionUpdates/index.cjs +129 -0
  680. package/dist/src/services/acpSessionUpdates/index.cjs.map +1 -0
  681. package/dist/src/services/acpSessionUpdates/index.mjs +129 -0
  682. package/dist/src/services/acpSessionUpdates/index.mjs.map +1 -0
  683. package/dist/src/services/apiSurfaceAssert/index.cjs +60 -0
  684. package/dist/src/services/apiSurfaceAssert/index.cjs.map +1 -0
  685. package/dist/src/services/apiSurfaceAssert/index.d.mts +24 -0
  686. package/dist/src/services/apiSurfaceAssert/index.d.mts.map +1 -0
  687. package/dist/src/services/apiSurfaceAssert/index.mjs +60 -0
  688. package/dist/src/services/apiSurfaceAssert/index.mjs.map +1 -0
  689. package/dist/src/services/bundlePublication/index.cjs +89 -0
  690. package/dist/src/services/bundlePublication/index.cjs.map +1 -0
  691. package/dist/src/services/bundlePublication/index.mjs +86 -0
  692. package/dist/src/services/bundlePublication/index.mjs.map +1 -0
  693. package/dist/src/services/contextApiUrls/index.cjs +53 -0
  694. package/dist/src/services/contextApiUrls/index.cjs.map +1 -0
  695. package/dist/src/services/contextApiUrls/index.d.mts +8 -0
  696. package/dist/src/services/contextApiUrls/index.d.mts.map +1 -0
  697. package/dist/src/services/contextApiUrls/index.mjs +52 -0
  698. package/dist/src/services/contextApiUrls/index.mjs.map +1 -0
  699. package/dist/src/services/contextContributions/index.cjs +79 -0
  700. package/dist/src/services/contextContributions/index.cjs.map +1 -0
  701. package/dist/src/services/contextContributions/index.d.mts +6 -0
  702. package/dist/src/services/contextContributions/index.d.mts.map +1 -0
  703. package/dist/src/services/contextContributions/index.mjs +79 -0
  704. package/dist/src/services/contextContributions/index.mjs.map +1 -0
  705. package/dist/src/services/contextUsage/index.cjs +27 -0
  706. package/dist/src/services/contextUsage/index.cjs.map +1 -0
  707. package/dist/src/services/contextUsage/index.mjs +25 -0
  708. package/dist/src/services/contextUsage/index.mjs.map +1 -0
  709. package/dist/src/services/devProxyPolicy/index.cjs +168 -0
  710. package/dist/src/services/devProxyPolicy/index.cjs.map +1 -0
  711. package/dist/src/services/devProxyPolicy/index.mjs +165 -0
  712. package/dist/src/services/devProxyPolicy/index.mjs.map +1 -0
  713. package/dist/src/services/devProxyStore/index.cjs +107 -0
  714. package/dist/src/services/devProxyStore/index.cjs.map +1 -0
  715. package/dist/src/services/devProxyStore/index.mjs +104 -0
  716. package/dist/src/services/devProxyStore/index.mjs.map +1 -0
  717. package/dist/src/services/deviceAuth/index.cjs +146 -0
  718. package/dist/src/services/deviceAuth/index.cjs.map +1 -0
  719. package/dist/src/services/deviceAuth/index.d.mts +9 -0
  720. package/dist/src/services/deviceAuth/index.d.mts.map +1 -0
  721. package/dist/src/services/deviceAuth/index.mjs +146 -0
  722. package/dist/src/services/deviceAuth/index.mjs.map +1 -0
  723. package/dist/src/services/deviceSessions/index.cjs +147 -0
  724. package/dist/src/services/deviceSessions/index.cjs.map +1 -0
  725. package/dist/src/services/deviceSessions/index.d.mts +18 -0
  726. package/dist/src/services/deviceSessions/index.d.mts.map +1 -0
  727. package/dist/src/services/deviceSessions/index.mjs +141 -0
  728. package/dist/src/services/deviceSessions/index.mjs.map +1 -0
  729. package/dist/src/services/deviceTrust/index.cjs +294 -0
  730. package/dist/src/services/deviceTrust/index.cjs.map +1 -0
  731. package/dist/src/services/deviceTrust/index.mjs +282 -0
  732. package/dist/src/services/deviceTrust/index.mjs.map +1 -0
  733. package/dist/src/services/durableNavigation/index.cjs +46 -0
  734. package/dist/src/services/durableNavigation/index.cjs.map +1 -0
  735. package/dist/src/services/durableNavigation/index.mjs +45 -0
  736. package/dist/src/services/durableNavigation/index.mjs.map +1 -0
  737. package/dist/src/services/headlessClient/index.cjs +126 -0
  738. package/dist/src/services/headlessClient/index.cjs.map +1 -0
  739. package/dist/src/services/headlessClient/index.mjs +126 -0
  740. package/dist/src/services/headlessClient/index.mjs.map +1 -0
  741. package/dist/src/services/historyImport/index.cjs +8 -0
  742. package/dist/src/services/historyImport/index.cjs.map +1 -0
  743. package/dist/src/services/historyImport/index.d.mts +68 -0
  744. package/dist/src/services/historyImport/index.d.mts.map +1 -0
  745. package/dist/src/services/historyImport/index.mjs +8 -0
  746. package/dist/src/services/historyImport/index.mjs.map +1 -0
  747. package/dist/src/services/hubChannelHarness/index.cjs +50 -0
  748. package/dist/src/services/hubChannelHarness/index.cjs.map +1 -0
  749. package/dist/src/services/hubChannelHarness/index.d.mts +17 -0
  750. package/dist/src/services/hubChannelHarness/index.d.mts.map +1 -0
  751. package/dist/src/services/hubChannelHarness/index.mjs +50 -0
  752. package/dist/src/services/hubChannelHarness/index.mjs.map +1 -0
  753. package/dist/src/services/kernel/index.cjs +147 -0
  754. package/dist/src/services/kernel/index.cjs.map +1 -0
  755. package/dist/src/services/kernel/index.d.mts +9 -0
  756. package/dist/src/services/kernel/index.d.mts.map +1 -0
  757. package/dist/src/services/kernel/index.mjs +147 -0
  758. package/dist/src/services/kernel/index.mjs.map +1 -0
  759. package/dist/src/services/loginFlow/index.cjs +131 -0
  760. package/dist/src/services/loginFlow/index.cjs.map +1 -0
  761. package/dist/src/services/loginFlow/index.mjs +131 -0
  762. package/dist/src/services/loginFlow/index.mjs.map +1 -0
  763. package/dist/src/services/loopbackAddress/index.cjs +58 -0
  764. package/dist/src/services/loopbackAddress/index.cjs.map +1 -0
  765. package/dist/src/services/loopbackAddress/index.mjs +56 -0
  766. package/dist/src/services/loopbackAddress/index.mjs.map +1 -0
  767. package/dist/src/services/openSessionRegistry/index.cjs +134 -0
  768. package/dist/src/services/openSessionRegistry/index.cjs.map +1 -0
  769. package/dist/src/services/openSessionRegistry/index.d.mts +36 -0
  770. package/dist/src/services/openSessionRegistry/index.d.mts.map +1 -0
  771. package/dist/src/services/openSessionRegistry/index.mjs +131 -0
  772. package/dist/src/services/openSessionRegistry/index.mjs.map +1 -0
  773. package/dist/src/services/packageApiHarness/index.cjs +36 -0
  774. package/dist/src/services/packageApiHarness/index.cjs.map +1 -0
  775. package/dist/src/services/packageApiHarness/index.d.mts +40 -0
  776. package/dist/src/services/packageApiHarness/index.d.mts.map +1 -0
  777. package/dist/src/services/packageApiHarness/index.mjs +36 -0
  778. package/dist/src/services/packageApiHarness/index.mjs.map +1 -0
  779. package/dist/src/services/packageResource/index.cjs +54 -0
  780. package/dist/src/services/packageResource/index.cjs.map +1 -0
  781. package/dist/src/services/packageResource/index.d.mts +26 -0
  782. package/dist/src/services/packageResource/index.d.mts.map +1 -0
  783. package/dist/src/services/packageResource/index.mjs +51 -0
  784. package/dist/src/services/packageResource/index.mjs.map +1 -0
  785. package/dist/src/services/pairingFlow/index.cjs +145 -0
  786. package/dist/src/services/pairingFlow/index.cjs.map +1 -0
  787. package/dist/src/services/pairingFlow/index.d.mts +44 -0
  788. package/dist/src/services/pairingFlow/index.d.mts.map +1 -0
  789. package/dist/src/services/pairingFlow/index.mjs +145 -0
  790. package/dist/src/services/pairingFlow/index.mjs.map +1 -0
  791. package/dist/src/services/pairingPage/index.cjs +450 -0
  792. package/dist/src/services/pairingPage/index.cjs.map +1 -0
  793. package/dist/src/services/pairingPage/index.mjs +447 -0
  794. package/dist/src/services/pairingPage/index.mjs.map +1 -0
  795. package/dist/src/services/piExtensionHost/index.cjs +889 -0
  796. package/dist/src/services/piExtensionHost/index.cjs.map +1 -0
  797. package/dist/src/services/piExtensionHost/index.mjs +885 -0
  798. package/dist/src/services/piExtensionHost/index.mjs.map +1 -0
  799. package/dist/src/services/piHelpTools/index.cjs +68 -0
  800. package/dist/src/services/piHelpTools/index.cjs.map +1 -0
  801. package/dist/src/services/piHelpTools/index.d.mts +10 -0
  802. package/dist/src/services/piHelpTools/index.d.mts.map +1 -0
  803. package/dist/src/services/piHelpTools/index.mjs +68 -0
  804. package/dist/src/services/piHelpTools/index.mjs.map +1 -0
  805. package/dist/src/services/piSessionEntries/index.cjs +121 -0
  806. package/dist/src/services/piSessionEntries/index.cjs.map +1 -0
  807. package/dist/src/services/piSessionEntries/index.mjs +117 -0
  808. package/dist/src/services/piSessionEntries/index.mjs.map +1 -0
  809. package/dist/src/services/pluginLifecycle/index.cjs +71 -0
  810. package/dist/src/services/pluginLifecycle/index.cjs.map +1 -0
  811. package/dist/src/services/pluginLifecycle/index.d.mts +8 -0
  812. package/dist/src/services/pluginLifecycle/index.d.mts.map +1 -0
  813. package/dist/src/services/pluginLifecycle/index.mjs +71 -0
  814. package/dist/src/services/pluginLifecycle/index.mjs.map +1 -0
  815. package/dist/src/services/providerAuth/index.cjs +156 -0
  816. package/dist/src/services/providerAuth/index.cjs.map +1 -0
  817. package/dist/src/services/providerAuth/index.mjs +154 -0
  818. package/dist/src/services/providerAuth/index.mjs.map +1 -0
  819. package/dist/src/services/publicFileShares/index.cjs +192 -0
  820. package/dist/src/services/publicFileShares/index.cjs.map +1 -0
  821. package/dist/src/services/publicFileShares/index.d.mts +16 -0
  822. package/dist/src/services/publicFileShares/index.d.mts.map +1 -0
  823. package/dist/src/services/publicFileShares/index.mjs +188 -0
  824. package/dist/src/services/publicFileShares/index.mjs.map +1 -0
  825. package/dist/src/services/remoteAccess/index.cjs +567 -0
  826. package/dist/src/services/remoteAccess/index.cjs.map +1 -0
  827. package/dist/src/services/remoteAccess/index.d.mts +121 -0
  828. package/dist/src/services/remoteAccess/index.d.mts.map +1 -0
  829. package/dist/src/services/remoteAccess/index.mjs +567 -0
  830. package/dist/src/services/remoteAccess/index.mjs.map +1 -0
  831. package/dist/src/services/remoteAccessSettings/index.cjs +151 -0
  832. package/dist/src/services/remoteAccessSettings/index.cjs.map +1 -0
  833. package/dist/src/services/remoteAccessSettings/index.mjs +149 -0
  834. package/dist/src/services/remoteAccessSettings/index.mjs.map +1 -0
  835. package/dist/src/services/remoteAccessStore/index.cjs +197 -0
  836. package/dist/src/services/remoteAccessStore/index.cjs.map +1 -0
  837. package/dist/src/services/remoteAccessStore/index.mjs +192 -0
  838. package/dist/src/services/remoteAccessStore/index.mjs.map +1 -0
  839. package/dist/src/services/remoteGuardPolicy/index.cjs +200 -0
  840. package/dist/src/services/remoteGuardPolicy/index.cjs.map +1 -0
  841. package/dist/src/services/remoteGuardPolicy/index.d.mts +7 -0
  842. package/dist/src/services/remoteGuardPolicy/index.d.mts.map +1 -0
  843. package/dist/src/services/remoteGuardPolicy/index.mjs +196 -0
  844. package/dist/src/services/remoteGuardPolicy/index.mjs.map +1 -0
  845. package/dist/src/services/requestReceipts/index.cjs +167 -0
  846. package/dist/src/services/requestReceipts/index.cjs.map +1 -0
  847. package/dist/src/services/requestReceipts/index.d.mts +11 -0
  848. package/dist/src/services/requestReceipts/index.d.mts.map +1 -0
  849. package/dist/src/services/requestReceipts/index.mjs +167 -0
  850. package/dist/src/services/requestReceipts/index.mjs.map +1 -0
  851. package/dist/src/services/rpcTranscript/index.cjs +633 -0
  852. package/dist/src/services/rpcTranscript/index.cjs.map +1 -0
  853. package/dist/src/services/rpcTranscript/index.d.mts +50 -0
  854. package/dist/src/services/rpcTranscript/index.d.mts.map +1 -0
  855. package/dist/src/services/rpcTranscript/index.mjs +632 -0
  856. package/dist/src/services/rpcTranscript/index.mjs.map +1 -0
  857. package/dist/src/services/serverFacet/index.cjs +197 -0
  858. package/dist/src/services/serverFacet/index.cjs.map +1 -0
  859. package/dist/src/services/serverFacet/index.d.mts +31 -0
  860. package/dist/src/services/serverFacet/index.d.mts.map +1 -0
  861. package/dist/src/services/serverFacet/index.mjs +197 -0
  862. package/dist/src/services/serverFacet/index.mjs.map +1 -0
  863. package/dist/src/services/sessionAttachments/index.cjs +111 -0
  864. package/dist/src/services/sessionAttachments/index.cjs.map +1 -0
  865. package/dist/src/services/sessionAttachments/index.d.mts +11 -0
  866. package/dist/src/services/sessionAttachments/index.d.mts.map +1 -0
  867. package/dist/src/services/sessionAttachments/index.mjs +107 -0
  868. package/dist/src/services/sessionAttachments/index.mjs.map +1 -0
  869. package/dist/src/services/sessionGitStatus/index.cjs +46 -0
  870. package/dist/src/services/sessionGitStatus/index.cjs.map +1 -0
  871. package/dist/src/services/sessionGitStatus/index.mjs +46 -0
  872. package/dist/src/services/sessionGitStatus/index.mjs.map +1 -0
  873. package/dist/src/services/sessionGitStatus/type.d.mts +8 -0
  874. package/dist/src/services/sessionGitStatus/type.d.mts.map +1 -0
  875. package/dist/src/services/sessionMcpActivity/index.cjs +115 -0
  876. package/dist/src/services/sessionMcpActivity/index.cjs.map +1 -0
  877. package/dist/src/services/sessionMcpActivity/index.mjs +111 -0
  878. package/dist/src/services/sessionMcpActivity/index.mjs.map +1 -0
  879. package/dist/src/services/sessionMcpAuthorization/index.cjs +473 -0
  880. package/dist/src/services/sessionMcpAuthorization/index.cjs.map +1 -0
  881. package/dist/src/services/sessionMcpAuthorization/index.d.mts +125 -0
  882. package/dist/src/services/sessionMcpAuthorization/index.d.mts.map +1 -0
  883. package/dist/src/services/sessionMcpAuthorization/index.mjs +469 -0
  884. package/dist/src/services/sessionMcpAuthorization/index.mjs.map +1 -0
  885. package/dist/src/services/sessionMcpConversations/index.cjs +217 -0
  886. package/dist/src/services/sessionMcpConversations/index.cjs.map +1 -0
  887. package/dist/src/services/sessionMcpConversations/index.mjs +212 -0
  888. package/dist/src/services/sessionMcpConversations/index.mjs.map +1 -0
  889. package/dist/src/services/sessionMcpRegistrationStore/index.cjs +86 -0
  890. package/dist/src/services/sessionMcpRegistrationStore/index.cjs.map +1 -0
  891. package/dist/src/services/sessionMcpRegistrationStore/index.mjs +83 -0
  892. package/dist/src/services/sessionMcpRegistrationStore/index.mjs.map +1 -0
  893. package/dist/src/services/sessionPresentation/index.cjs +120 -0
  894. package/dist/src/services/sessionPresentation/index.cjs.map +1 -0
  895. package/dist/src/services/sessionPresentation/index.mjs +120 -0
  896. package/dist/src/services/sessionPresentation/index.mjs.map +1 -0
  897. package/dist/src/services/sqliteSessionHistory/index.cjs +97 -0
  898. package/dist/src/services/sqliteSessionHistory/index.cjs.map +1 -0
  899. package/dist/src/services/sqliteSessionHistory/index.d.mts +28 -0
  900. package/dist/src/services/sqliteSessionHistory/index.d.mts.map +1 -0
  901. package/dist/src/services/sqliteSessionHistory/index.mjs +92 -0
  902. package/dist/src/services/sqliteSessionHistory/index.mjs.map +1 -0
  903. package/dist/src/services/sqliteTranscriptReader/index.cjs +67 -0
  904. package/dist/src/services/sqliteTranscriptReader/index.cjs.map +1 -0
  905. package/dist/src/services/sqliteTranscriptReader/index.d.mts +14 -0
  906. package/dist/src/services/sqliteTranscriptReader/index.d.mts.map +1 -0
  907. package/dist/src/services/sqliteTranscriptReader/index.mjs +65 -0
  908. package/dist/src/services/sqliteTranscriptReader/index.mjs.map +1 -0
  909. package/dist/src/services/toolCost/index.cjs +47 -0
  910. package/dist/src/services/toolCost/index.cjs.map +1 -0
  911. package/dist/src/services/toolCost/index.d.mts +38 -0
  912. package/dist/src/services/toolCost/index.d.mts.map +1 -0
  913. package/dist/src/services/toolCost/index.mjs +46 -0
  914. package/dist/src/services/toolCost/index.mjs.map +1 -0
  915. package/dist/src/services/toolOverrides/index.cjs +45 -0
  916. package/dist/src/services/toolOverrides/index.cjs.map +1 -0
  917. package/dist/src/services/toolOverrides/index.d.mts +6 -0
  918. package/dist/src/services/toolOverrides/index.d.mts.map +1 -0
  919. package/dist/src/services/toolOverrides/index.mjs +45 -0
  920. package/dist/src/services/toolOverrides/index.mjs.map +1 -0
  921. package/dist/src/services/toolPrompt/index.cjs +13 -0
  922. package/dist/src/services/toolPrompt/index.cjs.map +1 -0
  923. package/dist/src/services/toolPrompt/index.mjs +13 -0
  924. package/dist/src/services/toolPrompt/index.mjs.map +1 -0
  925. package/dist/src/services/toolSurface/index.cjs +134 -0
  926. package/dist/src/services/toolSurface/index.cjs.map +1 -0
  927. package/dist/src/services/toolSurface/index.d.mts +19 -0
  928. package/dist/src/services/toolSurface/index.d.mts.map +1 -0
  929. package/dist/src/services/toolSurface/index.mjs +134 -0
  930. package/dist/src/services/toolSurface/index.mjs.map +1 -0
  931. package/dist/src/services/traceContext/index.cjs +13 -0
  932. package/dist/src/services/traceContext/index.cjs.map +1 -0
  933. package/dist/src/services/traceContext/index.mjs +13 -0
  934. package/dist/src/services/traceContext/index.mjs.map +1 -0
  935. package/dist/src/services/transcriptPages/index.cjs +117 -0
  936. package/dist/src/services/transcriptPages/index.cjs.map +1 -0
  937. package/dist/src/services/transcriptPages/index.mjs +115 -0
  938. package/dist/src/services/transcriptPages/index.mjs.map +1 -0
  939. package/dist/src/services/tunnelOutput/index.cjs +58 -0
  940. package/dist/src/services/tunnelOutput/index.cjs.map +1 -0
  941. package/dist/src/services/tunnelOutput/index.mjs +54 -0
  942. package/dist/src/services/tunnelOutput/index.mjs.map +1 -0
  943. package/dist/src/services/tunnelProcess/index.cjs +487 -0
  944. package/dist/src/services/tunnelProcess/index.cjs.map +1 -0
  945. package/dist/src/services/tunnelProcess/index.mjs +481 -0
  946. package/dist/src/services/tunnelProcess/index.mjs.map +1 -0
  947. package/dist/src/services/voiceReloadHandoff/index.cjs +136 -0
  948. package/dist/src/services/voiceReloadHandoff/index.cjs.map +1 -0
  949. package/dist/src/services/voiceReloadHandoff/index.d.mts +34 -0
  950. package/dist/src/services/voiceReloadHandoff/index.d.mts.map +1 -0
  951. package/dist/src/services/voiceReloadHandoff/index.mjs +135 -0
  952. package/dist/src/services/voiceReloadHandoff/index.mjs.map +1 -0
  953. package/dist/src/services/voiceToolsContract/index.cjs +26 -0
  954. package/dist/src/services/voiceToolsContract/index.cjs.map +1 -0
  955. package/dist/src/services/voiceToolsContract/index.d.mts +76 -0
  956. package/dist/src/services/voiceToolsContract/index.d.mts.map +1 -0
  957. package/dist/src/services/voiceToolsContract/index.mjs +24 -0
  958. package/dist/src/services/voiceToolsContract/index.mjs.map +1 -0
  959. package/dist/src/services/webauthn/index.cjs +262 -0
  960. package/dist/src/services/webauthn/index.cjs.map +1 -0
  961. package/dist/src/services/webauthn/index.d.mts +39 -0
  962. package/dist/src/services/webauthn/index.d.mts.map +1 -0
  963. package/dist/src/services/webauthn/index.mjs +262 -0
  964. package/dist/src/services/webauthn/index.mjs.map +1 -0
  965. package/dist/src/services/webauthnPolicy/index.cjs +174 -0
  966. package/dist/src/services/webauthnPolicy/index.cjs.map +1 -0
  967. package/dist/src/services/webauthnPolicy/index.d.mts +41 -0
  968. package/dist/src/services/webauthnPolicy/index.d.mts.map +1 -0
  969. package/dist/src/services/webauthnPolicy/index.mjs +167 -0
  970. package/dist/src/services/webauthnPolicy/index.mjs.map +1 -0
  971. package/dist/src/services/workspaceRegistry/index.cjs +187 -0
  972. package/dist/src/services/workspaceRegistry/index.cjs.map +1 -0
  973. package/dist/src/services/workspaceRegistry/index.d.mts +47 -0
  974. package/dist/src/services/workspaceRegistry/index.d.mts.map +1 -0
  975. package/dist/src/services/workspaceRegistry/index.mjs +179 -0
  976. package/dist/src/services/workspaceRegistry/index.mjs.map +1 -0
  977. package/dist/src/systems/child/adapters/headlessChildSessionService.cjs +466 -0
  978. package/dist/src/systems/child/adapters/headlessChildSessionService.cjs.map +1 -0
  979. package/dist/src/systems/child/adapters/headlessChildSessionService.d.mts +36 -0
  980. package/dist/src/systems/child/adapters/headlessChildSessionService.d.mts.map +1 -0
  981. package/dist/src/systems/child/adapters/headlessChildSessionService.mjs +457 -0
  982. package/dist/src/systems/child/adapters/headlessChildSessionService.mjs.map +1 -0
  983. package/dist/src/systems/child/adapters/nativeChildRuntimes.cjs +28 -0
  984. package/dist/src/systems/child/adapters/nativeChildRuntimes.cjs.map +1 -0
  985. package/dist/src/systems/child/adapters/nativeChildRuntimes.mjs +25 -0
  986. package/dist/src/systems/child/adapters/nativeChildRuntimes.mjs.map +1 -0
  987. package/dist/src/systems/child/services/childSession/index.cjs +219 -0
  988. package/dist/src/systems/child/services/childSession/index.cjs.map +1 -0
  989. package/dist/src/systems/child/services/childSession/index.d.mts +14 -0
  990. package/dist/src/systems/child/services/childSession/index.d.mts.map +1 -0
  991. package/dist/src/systems/child/services/childSession/index.mjs +219 -0
  992. package/dist/src/systems/child/services/childSession/index.mjs.map +1 -0
  993. package/dist/src/systems/child/types/childSession.cjs +21 -0
  994. package/dist/src/systems/child/types/childSession.cjs.map +1 -0
  995. package/dist/src/systems/child/types/childSession.d.mts +182 -0
  996. package/dist/src/systems/child/types/childSession.d.mts.map +1 -0
  997. package/dist/src/systems/child/types/childSession.mjs +17 -0
  998. package/dist/src/systems/child/types/childSession.mjs.map +1 -0
  999. package/dist/src/systems/main/adapters/headlessHost.cjs +597 -0
  1000. package/dist/src/systems/main/adapters/headlessHost.cjs.map +1 -0
  1001. package/dist/src/systems/main/adapters/headlessHost.d.mts +116 -0
  1002. package/dist/src/systems/main/adapters/headlessHost.d.mts.map +1 -0
  1003. package/dist/src/systems/main/adapters/headlessHost.mjs +595 -0
  1004. package/dist/src/systems/main/adapters/headlessHost.mjs.map +1 -0
  1005. package/dist/src/systems/main/adapters/headlessSessionHost.cjs +1668 -0
  1006. package/dist/src/systems/main/adapters/headlessSessionHost.cjs.map +1 -0
  1007. package/dist/src/systems/main/adapters/headlessSessionHost.d.mts +20 -0
  1008. package/dist/src/systems/main/adapters/headlessSessionHost.d.mts.map +1 -0
  1009. package/dist/src/systems/main/adapters/headlessSessionHost.mjs +1663 -0
  1010. package/dist/src/systems/main/adapters/headlessSessionHost.mjs.map +1 -0
  1011. package/dist/src/systems/main/types/headlessHost.d.mts +37 -0
  1012. package/dist/src/systems/main/types/headlessHost.d.mts.map +1 -0
  1013. package/dist/src/testing/pi/extensionScenarios.cjs +73 -0
  1014. package/dist/src/testing/pi/extensionScenarios.cjs.map +1 -0
  1015. package/dist/src/testing/pi/extensionScenarios.d.mts +41 -0
  1016. package/dist/src/testing/pi/extensionScenarios.d.mts.map +1 -0
  1017. package/dist/src/testing/pi/extensionScenarios.mjs +73 -0
  1018. package/dist/src/testing/pi/extensionScenarios.mjs.map +1 -0
  1019. package/dist/src/testing/pi/testHost.cjs +399 -0
  1020. package/dist/src/testing/pi/testHost.cjs.map +1 -0
  1021. package/dist/src/testing/pi/testHost.d.mts +160 -0
  1022. package/dist/src/testing/pi/testHost.d.mts.map +1 -0
  1023. package/dist/src/testing/pi/testHost.mjs +399 -0
  1024. package/dist/src/testing/pi/testHost.mjs.map +1 -0
  1025. package/dist/src/types/config.d.mts +20 -0
  1026. package/dist/src/types/config.d.mts.map +1 -0
  1027. package/dist/src/types/kernel.d.mts +69 -0
  1028. package/dist/src/types/kernel.d.mts.map +1 -0
  1029. package/dist/src/types/remote.d.mts +152 -0
  1030. package/dist/src/types/remote.d.mts.map +1 -0
  1031. package/dist/src/types/server/directHarnessRuntime.d.mts +526 -0
  1032. package/dist/src/types/server/directHarnessRuntime.d.mts.map +1 -0
  1033. package/dist/src/types/server/session.d.mts +5 -0
  1034. package/dist/src/types/server/session.d.mts.map +1 -0
  1035. package/dist/src/types/server/sessionToolSurface.d.mts +44 -0
  1036. package/dist/src/types/server/sessionToolSurface.d.mts.map +1 -0
  1037. package/dist/src/web/models/globalStore.cjs +23 -0
  1038. package/dist/src/web/models/globalStore.cjs.map +1 -0
  1039. package/dist/src/web/models/globalStore.d.mts +6 -0
  1040. package/dist/src/web/models/globalStore.d.mts.map +1 -0
  1041. package/dist/src/web/models/globalStore.mjs +23 -0
  1042. package/dist/src/web/models/globalStore.mjs.map +1 -0
  1043. package/dist/src/web/models/sessionStore.cjs +56 -0
  1044. package/dist/src/web/models/sessionStore.cjs.map +1 -0
  1045. package/dist/src/web/models/sessionStore.d.mts +14 -0
  1046. package/dist/src/web/models/sessionStore.d.mts.map +1 -0
  1047. package/dist/src/web/models/sessionStore.mjs +56 -0
  1048. package/dist/src/web/models/sessionStore.mjs.map +1 -0
  1049. package/dist/src/web/models/workspaceStore.cjs +50 -0
  1050. package/dist/src/web/models/workspaceStore.cjs.map +1 -0
  1051. package/dist/src/web/models/workspaceStore.d.mts +18 -0
  1052. package/dist/src/web/models/workspaceStore.d.mts.map +1 -0
  1053. package/dist/src/web/models/workspaceStore.mjs +50 -0
  1054. package/dist/src/web/models/workspaceStore.mjs.map +1 -0
  1055. package/dist/src/web/schemas/bundleAssetPolicy.cjs +20 -0
  1056. package/dist/src/web/schemas/bundleAssetPolicy.cjs.map +1 -0
  1057. package/dist/src/web/schemas/bundleAssetPolicy.d.mts +10 -0
  1058. package/dist/src/web/schemas/bundleAssetPolicy.d.mts.map +1 -0
  1059. package/dist/src/web/schemas/bundleAssetPolicy.mjs +18 -0
  1060. package/dist/src/web/schemas/bundleAssetPolicy.mjs.map +1 -0
  1061. package/dist/src/web/schemas/template.cjs +35 -0
  1062. package/dist/src/web/schemas/template.cjs.map +1 -0
  1063. package/dist/src/web/schemas/template.d.mts +9 -0
  1064. package/dist/src/web/schemas/template.d.mts.map +1 -0
  1065. package/dist/src/web/schemas/template.mjs +34 -0
  1066. package/dist/src/web/schemas/template.mjs.map +1 -0
  1067. package/dist/src/web/services/apiClient/index.cjs +156 -0
  1068. package/dist/src/web/services/apiClient/index.cjs.map +1 -0
  1069. package/dist/src/web/services/apiClient/index.d.mts +152 -0
  1070. package/dist/src/web/services/apiClient/index.d.mts.map +1 -0
  1071. package/dist/src/web/services/apiClient/index.mjs +154 -0
  1072. package/dist/src/web/services/apiClient/index.mjs.map +1 -0
  1073. package/dist/src/web/services/apiPaths/index.cjs +83 -0
  1074. package/dist/src/web/services/apiPaths/index.cjs.map +1 -0
  1075. package/dist/src/web/services/apiPaths/index.d.mts +81 -0
  1076. package/dist/src/web/services/apiPaths/index.d.mts.map +1 -0
  1077. package/dist/src/web/services/apiPaths/index.mjs +78 -0
  1078. package/dist/src/web/services/apiPaths/index.mjs.map +1 -0
  1079. package/dist/src/web/services/apiRoutes/index.cjs +47 -0
  1080. package/dist/src/web/services/apiRoutes/index.cjs.map +1 -0
  1081. package/dist/src/web/services/apiRoutes/index.d.mts +21 -0
  1082. package/dist/src/web/services/apiRoutes/index.d.mts.map +1 -0
  1083. package/dist/src/web/services/apiRoutes/index.mjs +43 -0
  1084. package/dist/src/web/services/apiRoutes/index.mjs.map +1 -0
  1085. package/dist/src/web/services/mcpWidget.cjs +9 -0
  1086. package/dist/src/web/services/mcpWidget.cjs.map +1 -0
  1087. package/dist/src/web/services/mcpWidget.d.mts +6 -0
  1088. package/dist/src/web/services/mcpWidget.d.mts.map +1 -0
  1089. package/dist/src/web/services/mcpWidget.mjs +9 -0
  1090. package/dist/src/web/services/mcpWidget.mjs.map +1 -0
  1091. package/dist/src/web/services/sessionRegistry/index.cjs +70 -0
  1092. package/dist/src/web/services/sessionRegistry/index.cjs.map +1 -0
  1093. package/dist/src/web/services/sessionRegistry/index.d.mts +29 -0
  1094. package/dist/src/web/services/sessionRegistry/index.d.mts.map +1 -0
  1095. package/dist/src/web/services/sessionRegistry/index.mjs +66 -0
  1096. package/dist/src/web/services/sessionRegistry/index.mjs.map +1 -0
  1097. package/dist/src/web/services/testing/channels.cjs +11 -0
  1098. package/dist/src/web/services/testing/channels.cjs.map +1 -0
  1099. package/dist/src/web/services/testing/channels.d.mts +8 -0
  1100. package/dist/src/web/services/testing/channels.d.mts.map +1 -0
  1101. package/dist/src/web/services/testing/channels.mjs +11 -0
  1102. package/dist/src/web/services/testing/channels.mjs.map +1 -0
  1103. package/dist/src/web/services/testing/index.cjs +27 -0
  1104. package/dist/src/web/services/testing/index.cjs.map +1 -0
  1105. package/dist/src/web/services/testing/index.d.mts +31 -0
  1106. package/dist/src/web/services/testing/index.d.mts.map +1 -0
  1107. package/dist/src/web/services/testing/index.mjs +27 -0
  1108. package/dist/src/web/services/testing/index.mjs.map +1 -0
  1109. package/dist/src/web/services/testing/rpcStub.cjs +58 -0
  1110. package/dist/src/web/services/testing/rpcStub.cjs.map +1 -0
  1111. package/dist/src/web/services/testing/rpcStub.d.mts +37 -0
  1112. package/dist/src/web/services/testing/rpcStub.d.mts.map +1 -0
  1113. package/dist/src/web/services/testing/rpcStub.mjs +58 -0
  1114. package/dist/src/web/services/testing/rpcStub.mjs.map +1 -0
  1115. package/dist/src/web/services/testing/slotProps.cjs +97 -0
  1116. package/dist/src/web/services/testing/slotProps.cjs.map +1 -0
  1117. package/dist/src/web/services/testing/slotProps.d.mts +69 -0
  1118. package/dist/src/web/services/testing/slotProps.d.mts.map +1 -0
  1119. package/dist/src/web/services/testing/slotProps.mjs +96 -0
  1120. package/dist/src/web/services/testing/slotProps.mjs.map +1 -0
  1121. package/dist/src/web/services/testing/templateRail.cjs +156 -0
  1122. package/dist/src/web/services/testing/templateRail.cjs.map +1 -0
  1123. package/dist/src/web/services/testing/templateRail.d.mts +32 -0
  1124. package/dist/src/web/services/testing/templateRail.d.mts.map +1 -0
  1125. package/dist/src/web/services/testing/templateRail.mjs +154 -0
  1126. package/dist/src/web/services/testing/templateRail.mjs.map +1 -0
  1127. package/dist/src/web/services/toolResult/index.cjs +30 -0
  1128. package/dist/src/web/services/toolResult/index.cjs.map +1 -0
  1129. package/dist/src/web/services/toolResult/index.d.mts +14 -0
  1130. package/dist/src/web/services/toolResult/index.d.mts.map +1 -0
  1131. package/dist/src/web/services/toolResult/index.mjs +29 -0
  1132. package/dist/src/web/services/toolResult/index.mjs.map +1 -0
  1133. package/dist/src/web/types/extensionFile.d.mts +62 -0
  1134. package/dist/src/web/types/extensionFile.d.mts.map +1 -0
  1135. package/dist/src/web/types/mcpWidget.d.mts +14 -0
  1136. package/dist/src/web/types/mcpWidget.d.mts.map +1 -0
  1137. package/dist/src/web/types/modelContext.d.mts +43 -0
  1138. package/dist/src/web/types/modelContext.d.mts.map +1 -0
  1139. package/dist/src/web/types/nativeTemplate.d.mts +29 -0
  1140. package/dist/src/web/types/nativeTemplate.d.mts.map +1 -0
  1141. package/dist/src/web/types/sessionRegistry.d.mts +46 -0
  1142. package/dist/src/web/types/sessionRegistry.d.mts.map +1 -0
  1143. package/dist/src/web/types/template.d.mts +135 -0
  1144. package/dist/src/web/types/template.d.mts.map +1 -0
  1145. package/dist/src/web/types/webPlugin.d.mts +915 -0
  1146. package/dist/src/web/types/webPlugin.d.mts.map +1 -0
  1147. package/dist/terminalPiChildSessionService.cjs +324 -0
  1148. package/dist/terminalPiChildSessionService.cjs.map +1 -0
  1149. package/dist/terminalPiChildSessionService.d.mts +46 -0
  1150. package/dist/terminalPiChildSessionService.d.mts.map +1 -0
  1151. package/dist/terminalPiChildSessionService.mjs +318 -0
  1152. package/dist/terminalPiChildSessionService.mjs.map +1 -0
  1153. package/dist/testing.cjs +11 -0
  1154. package/dist/testing.d.mts +6 -0
  1155. package/dist/testing.mjs +6 -0
  1156. package/dist/toolInventory.cjs +136 -0
  1157. package/dist/toolInventory.cjs.map +1 -0
  1158. package/dist/toolInventory.d.mts +66 -0
  1159. package/dist/toolInventory.d.mts.map +1 -0
  1160. package/dist/toolInventory.mjs +133 -0
  1161. package/dist/toolInventory.mjs.map +1 -0
  1162. package/dist/toolNames.cjs +4 -0
  1163. package/dist/toolNames.d.mts +2 -0
  1164. package/dist/toolNames.mjs +2 -0
  1165. package/dist/toolOverrides.cjs +7 -0
  1166. package/dist/toolOverrides.d.mts +3 -0
  1167. package/dist/toolOverrides.mjs +3 -0
  1168. package/dist/toolSurface.cjs +7 -0
  1169. package/dist/toolSurface.d.mts +3 -0
  1170. package/dist/toolSurface.mjs +3 -0
  1171. package/dist/transition.cjs +5 -0
  1172. package/dist/transition.d.cjs +5 -0
  1173. package/dist/transition.d.mts +2 -0
  1174. package/dist/transition.mjs +2 -0
  1175. package/dist/transitionClassifier.cjs +112 -0
  1176. package/dist/transitionClassifier.cjs.map +1 -0
  1177. package/dist/transitionClassifier.d.mts +18 -0
  1178. package/dist/transitionClassifier.d.mts.map +1 -0
  1179. package/dist/transitionClassifier.mjs +111 -0
  1180. package/dist/transitionClassifier.mjs.map +1 -0
  1181. package/dist/transitionCoordinator.cjs +131 -0
  1182. package/dist/transitionCoordinator.cjs.map +1 -0
  1183. package/dist/transitionCoordinator.d.mts +16 -0
  1184. package/dist/transitionCoordinator.d.mts.map +1 -0
  1185. package/dist/transitionCoordinator.mjs +130 -0
  1186. package/dist/transitionCoordinator.mjs.map +1 -0
  1187. package/dist/typesContextApi.cjs +0 -0
  1188. package/dist/typesContextApi.d.mts +79 -0
  1189. package/dist/typesContextApi.d.mts.map +1 -0
  1190. package/dist/typesContextApi.mjs +1 -0
  1191. package/dist/uiHub.cjs +5 -0
  1192. package/dist/uiHub.d.mts +2 -0
  1193. package/dist/uiHub.mjs +2 -0
  1194. package/dist/v3Export.cjs +10 -0
  1195. package/dist/v3Export.cjs.map +1 -0
  1196. package/dist/v3Export.d.mts +35 -0
  1197. package/dist/v3Export.d.mts.map +1 -0
  1198. package/dist/v3Export.mjs +9 -0
  1199. package/dist/v3Export.mjs.map +1 -0
  1200. package/dist/voiceReloadHandoff.cjs +14 -0
  1201. package/dist/voiceReloadHandoff.d.mts +4 -0
  1202. package/dist/voiceReloadHandoff.mjs +4 -0
  1203. package/dist/voiceTools.cjs +56 -0
  1204. package/dist/voiceTools.d.mts +4 -0
  1205. package/dist/voiceTools.mjs +4 -0
  1206. package/dist/web.cjs +65 -0
  1207. package/dist/web.d.mts +20 -0
  1208. package/dist/web.mjs +13 -0
  1209. package/dist/webCompositions.cjs +181 -0
  1210. package/dist/webCompositions.cjs.map +1 -0
  1211. package/dist/webCompositions.d.mts +79 -0
  1212. package/dist/webCompositions.d.mts.map +1 -0
  1213. package/dist/webCompositions.mjs +174 -0
  1214. package/dist/webCompositions.mjs.map +1 -0
  1215. package/dist/webTesting.cjs +14 -0
  1216. package/dist/webTesting.d.mts +6 -0
  1217. package/dist/webTesting.mjs +6 -0
  1218. package/package.json +586 -0
@@ -0,0 +1,134 @@
1
+ const require_runtime = require("../../../_virtual/_rolldown/runtime.cjs");
2
+ let node_fs = require("node:fs");
3
+ node_fs = require_runtime.__toESM(node_fs, 1);
4
+ let node_path = require("node:path");
5
+ node_path = require_runtime.__toESM(node_path, 1);
6
+ //#region src/services/openSessionRegistry/index.ts
7
+ const REGISTRY_FILE = "open-sessions.json";
8
+ const DIRECTORY_MODE = 448;
9
+ const FILE_MODE = 384;
10
+ /** The id becomes a journal filename, so it is constrained exactly as SQLite storage constrains it. */
11
+ const SESSION_ID_PATTERN = /^[A-Za-z0-9_-]+$/u;
12
+ function isRecord(value) {
13
+ return typeof value === "object" && value !== null && !Array.isArray(value);
14
+ }
15
+ function optionalText(value) {
16
+ return typeof value === "string" && value !== "" ? value : void 0;
17
+ }
18
+ /**
19
+ * Reads one entry, or nothing.
20
+ *
21
+ * The file is editable by hand and its session id is joined into a journal
22
+ * path, so it is a trust boundary rather than trusted state this process wrote.
23
+ * A bad entry is dropped instead of narrowing the whole file to nothing. A legacy
24
+ * `artifact` (the worktree's pinned sync generation) is ignored: sessions compose live.
25
+ */
26
+ function parseRecord(value) {
27
+ if (!isRecord(value)) return void 0;
28
+ const { sessionId, workspaceId, cwd, name, createdAt } = value;
29
+ if (typeof sessionId !== "string" || !SESSION_ID_PATTERN.test(sessionId)) return void 0;
30
+ if (typeof workspaceId !== "string" || workspaceId === "") return void 0;
31
+ if (typeof cwd !== "string" || !node_path.default.isAbsolute(cwd)) return void 0;
32
+ if (typeof name !== "string" || typeof createdAt !== "string") return void 0;
33
+ const parentSessionId = optionalText(value.parentSessionId);
34
+ const sessionProvenance = optionalText(value.sessionProvenance);
35
+ const repoRoot = optionalText(value.repoRoot);
36
+ const groupingRoot = optionalText(value.groupingRoot);
37
+ if (value.repoRoot !== void 0 && (!repoRoot || !node_path.default.isAbsolute(repoRoot))) return void 0;
38
+ if (value.groupingRoot !== void 0 && (!groupingRoot || !node_path.default.isAbsolute(groupingRoot))) return void 0;
39
+ return {
40
+ sessionId,
41
+ workspaceId,
42
+ cwd,
43
+ ...repoRoot === void 0 ? {} : { repoRoot },
44
+ ...groupingRoot === void 0 ? {} : { groupingRoot },
45
+ name,
46
+ createdAt,
47
+ ...parentSessionId === void 0 ? {} : { parentSessionId },
48
+ ...sessionProvenance === void 0 ? {} : { sessionProvenance }
49
+ };
50
+ }
51
+ /**
52
+ * The sessions the cockpit had open, so a server restart can offer them back.
53
+ *
54
+ * Journals already survive a restart; what does not is the knowledge of which
55
+ * of them were open rather than merely finished. Without that, a restart either
56
+ * loses every session or revives every thread ever recorded.
57
+ */
58
+ function createOpenSessionRegistry(options) {
59
+ const notice = options.onNotice ?? (() => {});
60
+ const filePath = node_path.default.join(options.directory, REGISTRY_FILE);
61
+ const load = () => {
62
+ let raw;
63
+ try {
64
+ raw = node_fs.default.readFileSync(filePath, "utf8");
65
+ } catch {
66
+ return [];
67
+ }
68
+ let parsed;
69
+ try {
70
+ parsed = JSON.parse(raw);
71
+ } catch {
72
+ notice(`open sessions at ${filePath} are not valid JSON; none will be restored`);
73
+ return [];
74
+ }
75
+ if (!Array.isArray(parsed)) {
76
+ notice(`open sessions at ${filePath} are not a list; none will be restored`);
77
+ return [];
78
+ }
79
+ const records = [];
80
+ for (const entry of parsed) {
81
+ const record = parseRecord(entry);
82
+ if (record === void 0) notice(`open sessions at ${filePath} contain an unusable entry; skipping it`);
83
+ else records.push(record);
84
+ }
85
+ return records;
86
+ };
87
+ let current = load();
88
+ const persist = (next) => {
89
+ const temporary = `${filePath}.${String(process.pid)}.tmp`;
90
+ try {
91
+ node_fs.default.mkdirSync(options.directory, {
92
+ recursive: true,
93
+ mode: DIRECTORY_MODE
94
+ });
95
+ const descriptor = node_fs.default.openSync(temporary, "w", FILE_MODE);
96
+ try {
97
+ node_fs.default.writeFileSync(descriptor, `${JSON.stringify(next, void 0, 2)}\n`);
98
+ node_fs.default.fsyncSync(descriptor);
99
+ } finally {
100
+ node_fs.default.closeSync(descriptor);
101
+ }
102
+ node_fs.default.renameSync(temporary, filePath);
103
+ current = next;
104
+ return true;
105
+ } catch (error) {
106
+ notice(`${filePath} could not be saved: ${error instanceof Error ? error.message : String(error)}`);
107
+ try {
108
+ node_fs.default.rmSync(temporary, { force: true });
109
+ } catch {}
110
+ return false;
111
+ }
112
+ };
113
+ return {
114
+ list: () => current,
115
+ add(record) {
116
+ if (!SESSION_ID_PATTERN.test(record.sessionId)) throw new Error(`Invalid session id '${record.sessionId}'.`);
117
+ for (const directory of [
118
+ record.cwd,
119
+ record.repoRoot,
120
+ record.groupingRoot
121
+ ]) if (directory !== void 0 && !node_path.default.isAbsolute(directory)) throw new Error("Session directories must be absolute.");
122
+ return persist([...current.filter((held) => held.sessionId !== record.sessionId), record]);
123
+ },
124
+ remove(sessionId) {
125
+ const next = current.filter((held) => held.sessionId !== sessionId);
126
+ if (next.length === current.length) return;
127
+ persist(next);
128
+ }
129
+ };
130
+ }
131
+ //#endregion
132
+ exports.createOpenSessionRegistry = createOpenSessionRegistry;
133
+
134
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["path","fs"],"sources":["../../../../src/services/openSessionRegistry/index.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nconst REGISTRY_FILE = 'open-sessions.json';\nconst DIRECTORY_MODE = 0o700;\nconst FILE_MODE = 0o600;\n/** The id becomes a journal filename, so it is constrained exactly as SQLite storage constrains it. */\nconst SESSION_ID_PATTERN = /^[A-Za-z0-9_-]+$/u;\n\n/** One cockpit session the server had open, enough to reopen its journal by id. */\nexport interface OpenSessionRecord {\n sessionId: string;\n workspaceId: string;\n cwd: string;\n /** Child checkout root, distinct from the parent grouping root for worktrees. */\n repoRoot?: string;\n /** Parent workspace path used only to restore the workspace identity. */\n groupingRoot?: string;\n name: string;\n createdAt: string;\n parentSessionId?: string;\n sessionProvenance?: string;\n}\n\nexport interface OpenSessionRegistry {\n list(): readonly OpenSessionRecord[];\n /** True only after the record is durably published. */\n add(record: OpenSessionRecord): boolean;\n remove(sessionId: string): void;\n}\n\nexport interface OpenSessionRegistryOptions {\n /** Directory holding the `sessions` journal folder, so the registry sits beside what it points at. */\n directory: string;\n onNotice?: (message: string) => void;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction optionalText(value: unknown): string | undefined {\n return typeof value === 'string' && value !== '' ? value : undefined;\n}\n\n/**\n * Reads one entry, or nothing.\n *\n * The file is editable by hand and its session id is joined into a journal\n * path, so it is a trust boundary rather than trusted state this process wrote.\n * A bad entry is dropped instead of narrowing the whole file to nothing. A legacy\n * `artifact` (the worktree's pinned sync generation) is ignored: sessions compose live.\n */\nfunction parseRecord(value: unknown): OpenSessionRecord | undefined {\n if (!isRecord(value)) return undefined;\n const { sessionId, workspaceId, cwd, name, createdAt } = value;\n if (typeof sessionId !== 'string' || !SESSION_ID_PATTERN.test(sessionId)) return undefined;\n if (typeof workspaceId !== 'string' || workspaceId === '') return undefined;\n if (typeof cwd !== 'string' || !path.isAbsolute(cwd)) return undefined;\n if (typeof name !== 'string' || typeof createdAt !== 'string') return undefined;\n const parentSessionId = optionalText(value.parentSessionId);\n const sessionProvenance = optionalText(value.sessionProvenance);\n const repoRoot = optionalText(value.repoRoot);\n const groupingRoot = optionalText(value.groupingRoot);\n if (value.repoRoot !== undefined && (!repoRoot || !path.isAbsolute(repoRoot))) return undefined;\n if (value.groupingRoot !== undefined && (!groupingRoot || !path.isAbsolute(groupingRoot))) return undefined;\n return {\n sessionId,\n workspaceId,\n cwd,\n ...(repoRoot === undefined ? {} : { repoRoot }),\n ...(groupingRoot === undefined ? {} : { groupingRoot }),\n name,\n createdAt,\n ...(parentSessionId === undefined ? {} : { parentSessionId }),\n ...(sessionProvenance === undefined ? {} : { sessionProvenance }),\n };\n}\n\n/**\n * The sessions the cockpit had open, so a server restart can offer them back.\n *\n * Journals already survive a restart; what does not is the knowledge of which\n * of them were open rather than merely finished. Without that, a restart either\n * loses every session or revives every thread ever recorded.\n */\nexport function createOpenSessionRegistry(options: OpenSessionRegistryOptions): OpenSessionRegistry {\n const notice = options.onNotice ?? ((): void => {});\n const filePath = path.join(options.directory, REGISTRY_FILE);\n\n const load = (): OpenSessionRecord[] => {\n let raw: string;\n try {\n raw = fs.readFileSync(filePath, 'utf8');\n } catch {\n // No file is the normal first run, so this is not worth a notice.\n return [];\n }\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw);\n } catch {\n // Left in place rather than rewritten: a file somebody hand-edited is\n // worth more as evidence than as something this process silently repairs.\n notice(`open sessions at ${filePath} are not valid JSON; none will be restored`);\n return [];\n }\n if (!Array.isArray(parsed)) {\n notice(`open sessions at ${filePath} are not a list; none will be restored`);\n return [];\n }\n const records: OpenSessionRecord[] = [];\n for (const entry of parsed) {\n const record = parseRecord(entry);\n if (record === undefined) notice(`open sessions at ${filePath} contain an unusable entry; skipping it`);\n else records.push(record);\n }\n return records;\n };\n\n let current = load();\n\n const persist = (next: OpenSessionRecord[]): boolean => {\n const temporary = `${filePath}.${String(process.pid)}.tmp`;\n try {\n fs.mkdirSync(options.directory, { recursive: true, mode: DIRECTORY_MODE });\n const descriptor = fs.openSync(temporary, 'w', FILE_MODE);\n try {\n fs.writeFileSync(descriptor, `${JSON.stringify(next, undefined, 2)}\\n`);\n fs.fsyncSync(descriptor);\n } finally {\n fs.closeSync(descriptor);\n }\n // Rename rather than write in place, so a crash mid-write leaves the\n // previous contents rather than a truncated file.\n fs.renameSync(temporary, filePath);\n current = next;\n return true;\n } catch (error) {\n notice(`${filePath} could not be saved: ${error instanceof Error ? error.message : String(error)}`);\n try {\n fs.rmSync(temporary, { force: true });\n } catch {\n // Nothing further to do; the temp file is inert either way.\n }\n return false;\n }\n };\n\n return {\n list: () => current,\n add(record) {\n if (!SESSION_ID_PATTERN.test(record.sessionId)) throw new Error(`Invalid session id '${record.sessionId}'.`);\n for (const directory of [record.cwd, record.repoRoot, record.groupingRoot]) {\n if (directory !== undefined && !path.isAbsolute(directory))\n throw new Error('Session directories must be absolute.');\n }\n return persist([...current.filter((held) => held.sessionId !== record.sessionId), record]);\n },\n remove(sessionId) {\n const next = current.filter((held) => held.sessionId !== sessionId);\n if (next.length === current.length) return;\n persist(next);\n },\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ //#region src/services/openSessionRegistry/index.d.ts
2
+ /** One cockpit session the server had open, enough to reopen its journal by id. */
3
+ export interface OpenSessionRecord {
4
+ sessionId: string;
5
+ workspaceId: string;
6
+ cwd: string;
7
+ /** Child checkout root, distinct from the parent grouping root for worktrees. */
8
+ repoRoot?: string;
9
+ /** Parent workspace path used only to restore the workspace identity. */
10
+ groupingRoot?: string;
11
+ name: string;
12
+ createdAt: string;
13
+ parentSessionId?: string;
14
+ sessionProvenance?: string;
15
+ }
16
+ export interface OpenSessionRegistry {
17
+ list(): readonly OpenSessionRecord[];
18
+ /** True only after the record is durably published. */
19
+ add(record: OpenSessionRecord): boolean;
20
+ remove(sessionId: string): void;
21
+ }
22
+ export interface OpenSessionRegistryOptions {
23
+ /** Directory holding the `sessions` journal folder, so the registry sits beside what it points at. */
24
+ directory: string;
25
+ onNotice?: (message: string) => void;
26
+ }
27
+ /**
28
+ * The sessions the cockpit had open, so a server restart can offer them back.
29
+ *
30
+ * Journals already survive a restart; what does not is the knowledge of which
31
+ * of them were open rather than merely finished. Without that, a restart either
32
+ * loses every session or revives every thread ever recorded.
33
+ */
34
+ export declare function createOpenSessionRegistry(options: OpenSessionRegistryOptions): OpenSessionRegistry;
35
+ //#endregion
36
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/services/openSessionRegistry/index.ts"],"mappings":";;iBAUiB;EACf;EACA;EACA;;EAEA;;EAEA;EACA;EACA;EACA;EACA;;iBAGe;EACf,iBAAiB;;EAEjB,IAAI,QAAQ;EACZ,OAAO;;iBAGQ;;EAEf;EACA,YAAY;;;;;;;;;wBAoDE,0BAA0B,SAAS,6BAA6B"}
@@ -0,0 +1,131 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ //#region src/services/openSessionRegistry/index.ts
4
+ const REGISTRY_FILE = "open-sessions.json";
5
+ const DIRECTORY_MODE = 448;
6
+ const FILE_MODE = 384;
7
+ /** The id becomes a journal filename, so it is constrained exactly as SQLite storage constrains it. */
8
+ const SESSION_ID_PATTERN = /^[A-Za-z0-9_-]+$/u;
9
+ function isRecord(value) {
10
+ return typeof value === "object" && value !== null && !Array.isArray(value);
11
+ }
12
+ function optionalText(value) {
13
+ return typeof value === "string" && value !== "" ? value : void 0;
14
+ }
15
+ /**
16
+ * Reads one entry, or nothing.
17
+ *
18
+ * The file is editable by hand and its session id is joined into a journal
19
+ * path, so it is a trust boundary rather than trusted state this process wrote.
20
+ * A bad entry is dropped instead of narrowing the whole file to nothing. A legacy
21
+ * `artifact` (the worktree's pinned sync generation) is ignored: sessions compose live.
22
+ */
23
+ function parseRecord(value) {
24
+ if (!isRecord(value)) return void 0;
25
+ const { sessionId, workspaceId, cwd, name, createdAt } = value;
26
+ if (typeof sessionId !== "string" || !SESSION_ID_PATTERN.test(sessionId)) return void 0;
27
+ if (typeof workspaceId !== "string" || workspaceId === "") return void 0;
28
+ if (typeof cwd !== "string" || !path.isAbsolute(cwd)) return void 0;
29
+ if (typeof name !== "string" || typeof createdAt !== "string") return void 0;
30
+ const parentSessionId = optionalText(value.parentSessionId);
31
+ const sessionProvenance = optionalText(value.sessionProvenance);
32
+ const repoRoot = optionalText(value.repoRoot);
33
+ const groupingRoot = optionalText(value.groupingRoot);
34
+ if (value.repoRoot !== void 0 && (!repoRoot || !path.isAbsolute(repoRoot))) return void 0;
35
+ if (value.groupingRoot !== void 0 && (!groupingRoot || !path.isAbsolute(groupingRoot))) return void 0;
36
+ return {
37
+ sessionId,
38
+ workspaceId,
39
+ cwd,
40
+ ...repoRoot === void 0 ? {} : { repoRoot },
41
+ ...groupingRoot === void 0 ? {} : { groupingRoot },
42
+ name,
43
+ createdAt,
44
+ ...parentSessionId === void 0 ? {} : { parentSessionId },
45
+ ...sessionProvenance === void 0 ? {} : { sessionProvenance }
46
+ };
47
+ }
48
+ /**
49
+ * The sessions the cockpit had open, so a server restart can offer them back.
50
+ *
51
+ * Journals already survive a restart; what does not is the knowledge of which
52
+ * of them were open rather than merely finished. Without that, a restart either
53
+ * loses every session or revives every thread ever recorded.
54
+ */
55
+ function createOpenSessionRegistry(options) {
56
+ const notice = options.onNotice ?? (() => {});
57
+ const filePath = path.join(options.directory, REGISTRY_FILE);
58
+ const load = () => {
59
+ let raw;
60
+ try {
61
+ raw = fs.readFileSync(filePath, "utf8");
62
+ } catch {
63
+ return [];
64
+ }
65
+ let parsed;
66
+ try {
67
+ parsed = JSON.parse(raw);
68
+ } catch {
69
+ notice(`open sessions at ${filePath} are not valid JSON; none will be restored`);
70
+ return [];
71
+ }
72
+ if (!Array.isArray(parsed)) {
73
+ notice(`open sessions at ${filePath} are not a list; none will be restored`);
74
+ return [];
75
+ }
76
+ const records = [];
77
+ for (const entry of parsed) {
78
+ const record = parseRecord(entry);
79
+ if (record === void 0) notice(`open sessions at ${filePath} contain an unusable entry; skipping it`);
80
+ else records.push(record);
81
+ }
82
+ return records;
83
+ };
84
+ let current = load();
85
+ const persist = (next) => {
86
+ const temporary = `${filePath}.${String(process.pid)}.tmp`;
87
+ try {
88
+ fs.mkdirSync(options.directory, {
89
+ recursive: true,
90
+ mode: DIRECTORY_MODE
91
+ });
92
+ const descriptor = fs.openSync(temporary, "w", FILE_MODE);
93
+ try {
94
+ fs.writeFileSync(descriptor, `${JSON.stringify(next, void 0, 2)}\n`);
95
+ fs.fsyncSync(descriptor);
96
+ } finally {
97
+ fs.closeSync(descriptor);
98
+ }
99
+ fs.renameSync(temporary, filePath);
100
+ current = next;
101
+ return true;
102
+ } catch (error) {
103
+ notice(`${filePath} could not be saved: ${error instanceof Error ? error.message : String(error)}`);
104
+ try {
105
+ fs.rmSync(temporary, { force: true });
106
+ } catch {}
107
+ return false;
108
+ }
109
+ };
110
+ return {
111
+ list: () => current,
112
+ add(record) {
113
+ if (!SESSION_ID_PATTERN.test(record.sessionId)) throw new Error(`Invalid session id '${record.sessionId}'.`);
114
+ for (const directory of [
115
+ record.cwd,
116
+ record.repoRoot,
117
+ record.groupingRoot
118
+ ]) if (directory !== void 0 && !path.isAbsolute(directory)) throw new Error("Session directories must be absolute.");
119
+ return persist([...current.filter((held) => held.sessionId !== record.sessionId), record]);
120
+ },
121
+ remove(sessionId) {
122
+ const next = current.filter((held) => held.sessionId !== sessionId);
123
+ if (next.length === current.length) return;
124
+ persist(next);
125
+ }
126
+ };
127
+ }
128
+ //#endregion
129
+ export { createOpenSessionRegistry };
130
+
131
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/openSessionRegistry/index.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nconst REGISTRY_FILE = 'open-sessions.json';\nconst DIRECTORY_MODE = 0o700;\nconst FILE_MODE = 0o600;\n/** The id becomes a journal filename, so it is constrained exactly as SQLite storage constrains it. */\nconst SESSION_ID_PATTERN = /^[A-Za-z0-9_-]+$/u;\n\n/** One cockpit session the server had open, enough to reopen its journal by id. */\nexport interface OpenSessionRecord {\n sessionId: string;\n workspaceId: string;\n cwd: string;\n /** Child checkout root, distinct from the parent grouping root for worktrees. */\n repoRoot?: string;\n /** Parent workspace path used only to restore the workspace identity. */\n groupingRoot?: string;\n name: string;\n createdAt: string;\n parentSessionId?: string;\n sessionProvenance?: string;\n}\n\nexport interface OpenSessionRegistry {\n list(): readonly OpenSessionRecord[];\n /** True only after the record is durably published. */\n add(record: OpenSessionRecord): boolean;\n remove(sessionId: string): void;\n}\n\nexport interface OpenSessionRegistryOptions {\n /** Directory holding the `sessions` journal folder, so the registry sits beside what it points at. */\n directory: string;\n onNotice?: (message: string) => void;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction optionalText(value: unknown): string | undefined {\n return typeof value === 'string' && value !== '' ? value : undefined;\n}\n\n/**\n * Reads one entry, or nothing.\n *\n * The file is editable by hand and its session id is joined into a journal\n * path, so it is a trust boundary rather than trusted state this process wrote.\n * A bad entry is dropped instead of narrowing the whole file to nothing. A legacy\n * `artifact` (the worktree's pinned sync generation) is ignored: sessions compose live.\n */\nfunction parseRecord(value: unknown): OpenSessionRecord | undefined {\n if (!isRecord(value)) return undefined;\n const { sessionId, workspaceId, cwd, name, createdAt } = value;\n if (typeof sessionId !== 'string' || !SESSION_ID_PATTERN.test(sessionId)) return undefined;\n if (typeof workspaceId !== 'string' || workspaceId === '') return undefined;\n if (typeof cwd !== 'string' || !path.isAbsolute(cwd)) return undefined;\n if (typeof name !== 'string' || typeof createdAt !== 'string') return undefined;\n const parentSessionId = optionalText(value.parentSessionId);\n const sessionProvenance = optionalText(value.sessionProvenance);\n const repoRoot = optionalText(value.repoRoot);\n const groupingRoot = optionalText(value.groupingRoot);\n if (value.repoRoot !== undefined && (!repoRoot || !path.isAbsolute(repoRoot))) return undefined;\n if (value.groupingRoot !== undefined && (!groupingRoot || !path.isAbsolute(groupingRoot))) return undefined;\n return {\n sessionId,\n workspaceId,\n cwd,\n ...(repoRoot === undefined ? {} : { repoRoot }),\n ...(groupingRoot === undefined ? {} : { groupingRoot }),\n name,\n createdAt,\n ...(parentSessionId === undefined ? {} : { parentSessionId }),\n ...(sessionProvenance === undefined ? {} : { sessionProvenance }),\n };\n}\n\n/**\n * The sessions the cockpit had open, so a server restart can offer them back.\n *\n * Journals already survive a restart; what does not is the knowledge of which\n * of them were open rather than merely finished. Without that, a restart either\n * loses every session or revives every thread ever recorded.\n */\nexport function createOpenSessionRegistry(options: OpenSessionRegistryOptions): OpenSessionRegistry {\n const notice = options.onNotice ?? ((): void => {});\n const filePath = path.join(options.directory, REGISTRY_FILE);\n\n const load = (): OpenSessionRecord[] => {\n let raw: string;\n try {\n raw = fs.readFileSync(filePath, 'utf8');\n } catch {\n // No file is the normal first run, so this is not worth a notice.\n return [];\n }\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw);\n } catch {\n // Left in place rather than rewritten: a file somebody hand-edited is\n // worth more as evidence than as something this process silently repairs.\n notice(`open sessions at ${filePath} are not valid JSON; none will be restored`);\n return [];\n }\n if (!Array.isArray(parsed)) {\n notice(`open sessions at ${filePath} are not a list; none will be restored`);\n return [];\n }\n const records: OpenSessionRecord[] = [];\n for (const entry of parsed) {\n const record = parseRecord(entry);\n if (record === undefined) notice(`open sessions at ${filePath} contain an unusable entry; skipping it`);\n else records.push(record);\n }\n return records;\n };\n\n let current = load();\n\n const persist = (next: OpenSessionRecord[]): boolean => {\n const temporary = `${filePath}.${String(process.pid)}.tmp`;\n try {\n fs.mkdirSync(options.directory, { recursive: true, mode: DIRECTORY_MODE });\n const descriptor = fs.openSync(temporary, 'w', FILE_MODE);\n try {\n fs.writeFileSync(descriptor, `${JSON.stringify(next, undefined, 2)}\\n`);\n fs.fsyncSync(descriptor);\n } finally {\n fs.closeSync(descriptor);\n }\n // Rename rather than write in place, so a crash mid-write leaves the\n // previous contents rather than a truncated file.\n fs.renameSync(temporary, filePath);\n current = next;\n return true;\n } catch (error) {\n notice(`${filePath} could not be saved: ${error instanceof Error ? error.message : String(error)}`);\n try {\n fs.rmSync(temporary, { force: true });\n } catch {\n // Nothing further to do; the temp file is inert either way.\n }\n return false;\n }\n };\n\n return {\n list: () => current,\n add(record) {\n if (!SESSION_ID_PATTERN.test(record.sessionId)) throw new Error(`Invalid session id '${record.sessionId}'.`);\n for (const directory of [record.cwd, record.repoRoot, record.groupingRoot]) {\n if (directory !== undefined && !path.isAbsolute(directory))\n throw new Error('Session directories must be absolute.');\n }\n return persist([...current.filter((held) => held.sessionId !== record.sessionId), record]);\n },\n remove(sessionId) {\n const next = current.filter((held) => held.sessionId !== sessionId);\n if (next.length === current.length) return;\n persist(next);\n },\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ const require_packageApi = require("../../schemas/packageApi.cjs");
2
+ //#region src/services/packageApiHarness/index.ts
3
+ const DEFAULT_SCOPE = "global";
4
+ const DEFAULT_CWD = "/repo";
5
+ /** Any origin will do: the host routes on path, and a Request needs an absolute URL. */
6
+ const ORIGIN = "http://host";
7
+ function mountPackageApi(api, options = {}) {
8
+ const scope = options.scope ?? DEFAULT_SCOPE;
9
+ const notices = [];
10
+ const mountPath = `${require_packageApi.DOOM_API_ROUTE_PREFIX}/${api.basePath}`;
11
+ const context = {
12
+ scope,
13
+ ...scope === "session" ? {
14
+ sessionId: options.sessionId ?? "test-session",
15
+ cwd: options.cwd ?? DEFAULT_CWD
16
+ } : {},
17
+ ...options.directEvents ? { directEvents: options.directEvents } : {},
18
+ onNotice: (message) => notices.push(message)
19
+ };
20
+ const handler = api.start(context);
21
+ return {
22
+ mountPath,
23
+ notices,
24
+ async fetch(path, init) {
25
+ const url = new URL(path, ORIGIN);
26
+ if (url.pathname !== mountPath && !url.pathname.startsWith(`${mountPath}/`)) return new Response(`No package API is mounted at ${url.pathname}.`, { status: 404 });
27
+ url.pathname = url.pathname.slice(mountPath.length) || "/";
28
+ return handler.fetch(new Request(url, init));
29
+ },
30
+ close: () => handler.close()
31
+ };
32
+ }
33
+ //#endregion
34
+ exports.mountPackageApi = mountPackageApi;
35
+
36
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["DOOM_API_ROUTE_PREFIX"],"sources":["../../../../src/services/packageApiHarness/index.ts"],"sourcesContent":["import type { DoomDirectEventBus } from '../../schemas/hubChannel';\nimport {\n type DoomApi,\n type DoomApiContext,\n type DoomApiHandler,\n DOOM_API_ROUTE_PREFIX,\n type DoomApiScope,\n} from '../../schemas/packageApi';\n\n/**\n * A package's HTTP surface, mounted the way a host mounts it.\n *\n * A package tests its routes by calling its Hono app directly, which proves the\n * routes but not the mount: the host serves them under\n * `/api/plugins/<basePath>` and strips that prefix before the app sees the\n * request. A package whose routes are written absolute passes its own suite and\n * answers nothing in a running cockpit.\n *\n * This mounts the declared `DoomApi` the same way, so a test asks for the URL a\n * browser would ask for. Plain `Request` and `Response`; no HTTP framework and\n * no server.\n */\n\nexport interface MountPackageApiOptions {\n scope?: DoomApiScope;\n sessionId?: string;\n cwd?: string;\n directEvents?: DoomDirectEventBus;\n}\n\nexport interface MountedPackageApi {\n /** Where the host mounted it, for building a URL the way a client does. */\n readonly mountPath: string;\n /** What the API reported to its host; a package that notices nothing leaves this empty. */\n readonly notices: readonly string[];\n /**\n * Fetches one path.\n *\n * The path is host-absolute, so it carries the mount the client would send:\n * `/api/plugins/workflow/runs/repo/blog-4`. A path outside the mount is a 404\n * from this, exactly as it is from the host.\n */\n fetch(path: string, init?: RequestInit): Promise<Response>;\n close(): void;\n}\n\nconst DEFAULT_SCOPE: DoomApiScope = 'global';\nconst DEFAULT_CWD = '/repo';\n/** Any origin will do: the host routes on path, and a Request needs an absolute URL. */\nconst ORIGIN = 'http://host';\n\nexport function mountPackageApi(api: DoomApi, options: MountPackageApiOptions = {}): MountedPackageApi {\n const scope = options.scope ?? DEFAULT_SCOPE;\n const notices: string[] = [];\n const mountPath = `${DOOM_API_ROUTE_PREFIX}/${api.basePath}`;\n const context: DoomApiContext = {\n scope,\n // A session-scoped host knows both; a hub-scoped one knows neither, and an\n // API that reads them anyway should see the same undefined it would there.\n ...(scope === 'session' ? { sessionId: options.sessionId ?? 'test-session', cwd: options.cwd ?? DEFAULT_CWD } : {}),\n ...(options.directEvents ? { directEvents: options.directEvents } : {}),\n onNotice: (message) => notices.push(message),\n };\n const handler: DoomApiHandler = api.start(context);\n\n return {\n mountPath,\n notices,\n async fetch(path, init) {\n const url = new URL(path, ORIGIN);\n if (url.pathname !== mountPath && !url.pathname.startsWith(`${mountPath}/`)) {\n return new Response(`No package API is mounted at ${url.pathname}.`, { status: 404 });\n }\n // The host strips its own mount, so a package declares '/runs/:id' and\n // never repeats where it was mounted.\n url.pathname = url.pathname.slice(mountPath.length) || '/';\n return handler.fetch(new Request(url, init));\n },\n close: () => handler.close(),\n };\n}\n"],"mappings":";;AA8CA,MAAM,gBAA8B;AACpC,MAAM,cAAc;;AAEpB,MAAM,SAAS;AAEf,SAAgB,gBAAgB,KAAc,UAAkC,CAAC,GAAsB;CACrG,MAAM,QAAQ,QAAQ,SAAS;CAC/B,MAAM,UAAoB,CAAC;CAC3B,MAAM,YAAY,GAAGA,mBAAAA,sBAAsB,GAAG,IAAI;CAClD,MAAM,UAA0B;EAC9B;EAGA,GAAI,UAAU,YAAY;GAAE,WAAW,QAAQ,aAAa;GAAgB,KAAK,QAAQ,OAAO;EAAY,IAAI,CAAC;EACjH,GAAI,QAAQ,eAAe,EAAE,cAAc,QAAQ,aAAa,IAAI,CAAC;EACrE,WAAW,YAAY,QAAQ,KAAK,OAAO;CAC7C;CACA,MAAM,UAA0B,IAAI,MAAM,OAAO;CAEjD,OAAO;EACL;EACA;EACA,MAAM,MAAM,MAAM,MAAM;GACtB,MAAM,MAAM,IAAI,IAAI,MAAM,MAAM;GAChC,IAAI,IAAI,aAAa,aAAa,CAAC,IAAI,SAAS,WAAW,GAAG,UAAU,EAAE,GACxE,OAAO,IAAI,SAAS,gCAAgC,IAAI,SAAS,IAAI,EAAE,QAAQ,IAAI,CAAC;GAItF,IAAI,WAAW,IAAI,SAAS,MAAM,UAAU,MAAM,KAAK;GACvD,OAAO,QAAQ,MAAM,IAAI,QAAQ,KAAK,IAAI,CAAC;EAC7C;EACA,aAAa,QAAQ,MAAM;CAC7B;AACF"}
@@ -0,0 +1,40 @@
1
+ import { DoomDirectEventBus } from "../../schemas/hubChannel.mjs";
2
+ import { DoomApi, DoomApiScope } from "../../schemas/packageApi.mjs";
3
+ //#region src/services/packageApiHarness/index.d.ts
4
+ /**
5
+ * A package's HTTP surface, mounted the way a host mounts it.
6
+ *
7
+ * A package tests its routes by calling its Hono app directly, which proves the
8
+ * routes but not the mount: the host serves them under
9
+ * `/api/plugins/<basePath>` and strips that prefix before the app sees the
10
+ * request. A package whose routes are written absolute passes its own suite and
11
+ * answers nothing in a running cockpit.
12
+ *
13
+ * This mounts the declared `DoomApi` the same way, so a test asks for the URL a
14
+ * browser would ask for. Plain `Request` and `Response`; no HTTP framework and
15
+ * no server.
16
+ */
17
+ export interface MountPackageApiOptions {
18
+ scope?: DoomApiScope;
19
+ sessionId?: string;
20
+ cwd?: string;
21
+ directEvents?: DoomDirectEventBus;
22
+ }
23
+ export interface MountedPackageApi {
24
+ /** Where the host mounted it, for building a URL the way a client does. */
25
+ readonly mountPath: string;
26
+ /** What the API reported to its host; a package that notices nothing leaves this empty. */
27
+ readonly notices: readonly string[];
28
+ /**
29
+ * Fetches one path.
30
+ *
31
+ * The path is host-absolute, so it carries the mount the client would send:
32
+ * `/api/plugins/workflow/runs/repo/blog-4`. A path outside the mount is a 404
33
+ * from this, exactly as it is from the host.
34
+ */
35
+ fetch(path: string, init?: RequestInit): Promise<Response>;
36
+ close(): void;
37
+ }
38
+ export declare function mountPackageApi(api: DoomApi, options?: MountPackageApiOptions): MountedPackageApi;
39
+ //#endregion
40
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/services/packageApiHarness/index.ts"],"mappings":";;;;;;;;;;;;;;;;iBAuBiB;EACf,QAAQ;EACR;EACA;EACA,eAAe;;iBAGA;;WAEN;;WAEA;;;;;;;;EAQT,MAAM,cAAc,OAAO,cAAc,QAAQ;EACjD;;wBAQc,gBAAgB,KAAK,SAAS,UAAS,yBAA8B"}
@@ -0,0 +1,36 @@
1
+ import { DOOM_API_ROUTE_PREFIX } from "../../schemas/packageApi.mjs";
2
+ //#region src/services/packageApiHarness/index.ts
3
+ const DEFAULT_SCOPE = "global";
4
+ const DEFAULT_CWD = "/repo";
5
+ /** Any origin will do: the host routes on path, and a Request needs an absolute URL. */
6
+ const ORIGIN = "http://host";
7
+ function mountPackageApi(api, options = {}) {
8
+ const scope = options.scope ?? DEFAULT_SCOPE;
9
+ const notices = [];
10
+ const mountPath = `${DOOM_API_ROUTE_PREFIX}/${api.basePath}`;
11
+ const context = {
12
+ scope,
13
+ ...scope === "session" ? {
14
+ sessionId: options.sessionId ?? "test-session",
15
+ cwd: options.cwd ?? DEFAULT_CWD
16
+ } : {},
17
+ ...options.directEvents ? { directEvents: options.directEvents } : {},
18
+ onNotice: (message) => notices.push(message)
19
+ };
20
+ const handler = api.start(context);
21
+ return {
22
+ mountPath,
23
+ notices,
24
+ async fetch(path, init) {
25
+ const url = new URL(path, ORIGIN);
26
+ if (url.pathname !== mountPath && !url.pathname.startsWith(`${mountPath}/`)) return new Response(`No package API is mounted at ${url.pathname}.`, { status: 404 });
27
+ url.pathname = url.pathname.slice(mountPath.length) || "/";
28
+ return handler.fetch(new Request(url, init));
29
+ },
30
+ close: () => handler.close()
31
+ };
32
+ }
33
+ //#endregion
34
+ export { mountPackageApi };
35
+
36
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/packageApiHarness/index.ts"],"sourcesContent":["import type { DoomDirectEventBus } from '../../schemas/hubChannel';\nimport {\n type DoomApi,\n type DoomApiContext,\n type DoomApiHandler,\n DOOM_API_ROUTE_PREFIX,\n type DoomApiScope,\n} from '../../schemas/packageApi';\n\n/**\n * A package's HTTP surface, mounted the way a host mounts it.\n *\n * A package tests its routes by calling its Hono app directly, which proves the\n * routes but not the mount: the host serves them under\n * `/api/plugins/<basePath>` and strips that prefix before the app sees the\n * request. A package whose routes are written absolute passes its own suite and\n * answers nothing in a running cockpit.\n *\n * This mounts the declared `DoomApi` the same way, so a test asks for the URL a\n * browser would ask for. Plain `Request` and `Response`; no HTTP framework and\n * no server.\n */\n\nexport interface MountPackageApiOptions {\n scope?: DoomApiScope;\n sessionId?: string;\n cwd?: string;\n directEvents?: DoomDirectEventBus;\n}\n\nexport interface MountedPackageApi {\n /** Where the host mounted it, for building a URL the way a client does. */\n readonly mountPath: string;\n /** What the API reported to its host; a package that notices nothing leaves this empty. */\n readonly notices: readonly string[];\n /**\n * Fetches one path.\n *\n * The path is host-absolute, so it carries the mount the client would send:\n * `/api/plugins/workflow/runs/repo/blog-4`. A path outside the mount is a 404\n * from this, exactly as it is from the host.\n */\n fetch(path: string, init?: RequestInit): Promise<Response>;\n close(): void;\n}\n\nconst DEFAULT_SCOPE: DoomApiScope = 'global';\nconst DEFAULT_CWD = '/repo';\n/** Any origin will do: the host routes on path, and a Request needs an absolute URL. */\nconst ORIGIN = 'http://host';\n\nexport function mountPackageApi(api: DoomApi, options: MountPackageApiOptions = {}): MountedPackageApi {\n const scope = options.scope ?? DEFAULT_SCOPE;\n const notices: string[] = [];\n const mountPath = `${DOOM_API_ROUTE_PREFIX}/${api.basePath}`;\n const context: DoomApiContext = {\n scope,\n // A session-scoped host knows both; a hub-scoped one knows neither, and an\n // API that reads them anyway should see the same undefined it would there.\n ...(scope === 'session' ? { sessionId: options.sessionId ?? 'test-session', cwd: options.cwd ?? DEFAULT_CWD } : {}),\n ...(options.directEvents ? { directEvents: options.directEvents } : {}),\n onNotice: (message) => notices.push(message),\n };\n const handler: DoomApiHandler = api.start(context);\n\n return {\n mountPath,\n notices,\n async fetch(path, init) {\n const url = new URL(path, ORIGIN);\n if (url.pathname !== mountPath && !url.pathname.startsWith(`${mountPath}/`)) {\n return new Response(`No package API is mounted at ${url.pathname}.`, { status: 404 });\n }\n // The host strips its own mount, so a package declares '/runs/:id' and\n // never repeats where it was mounted.\n url.pathname = url.pathname.slice(mountPath.length) || '/';\n return handler.fetch(new Request(url, init));\n },\n close: () => handler.close(),\n };\n}\n"],"mappings":";;AA8CA,MAAM,gBAA8B;AACpC,MAAM,cAAc;;AAEpB,MAAM,SAAS;AAEf,SAAgB,gBAAgB,KAAc,UAAkC,CAAC,GAAsB;CACrG,MAAM,QAAQ,QAAQ,SAAS;CAC/B,MAAM,UAAoB,CAAC;CAC3B,MAAM,YAAY,GAAG,sBAAsB,GAAG,IAAI;CAClD,MAAM,UAA0B;EAC9B;EAGA,GAAI,UAAU,YAAY;GAAE,WAAW,QAAQ,aAAa;GAAgB,KAAK,QAAQ,OAAO;EAAY,IAAI,CAAC;EACjH,GAAI,QAAQ,eAAe,EAAE,cAAc,QAAQ,aAAa,IAAI,CAAC;EACrE,WAAW,YAAY,QAAQ,KAAK,OAAO;CAC7C;CACA,MAAM,UAA0B,IAAI,MAAM,OAAO;CAEjD,OAAO;EACL;EACA;EACA,MAAM,MAAM,MAAM,MAAM;GACtB,MAAM,MAAM,IAAI,IAAI,MAAM,MAAM;GAChC,IAAI,IAAI,aAAa,aAAa,CAAC,IAAI,SAAS,WAAW,GAAG,UAAU,EAAE,GACxE,OAAO,IAAI,SAAS,gCAAgC,IAAI,SAAS,IAAI,EAAE,QAAQ,IAAI,CAAC;GAItF,IAAI,WAAW,IAAI,SAAS,MAAM,UAAU,MAAM,KAAK;GACvD,OAAO,QAAQ,MAAM,IAAI,QAAQ,KAAK,IAAI,CAAC;EAC7C;EACA,aAAa,QAAQ,MAAM;CAC7B;AACF"}
@@ -0,0 +1,54 @@
1
+ const require_runtime = require("../../../_virtual/_rolldown/runtime.cjs");
2
+ let node_fs = require("node:fs");
3
+ let node_path = require("node:path");
4
+ node_path = require_runtime.__toESM(node_path, 1);
5
+ let node_fs_promises = require("node:fs/promises");
6
+ let node_url = require("node:url");
7
+ //#region src/services/packageResource/index.ts
8
+ /**
9
+ * Absolute path of a file shipped by the calling package.
10
+ *
11
+ * Anchored on the nearest ancestor holding a `package.json`, which is the only
12
+ * sentinel that is correct from `src/` and from `dist/` alike. Counting levels
13
+ * with a fixed `new URL('../../..', import.meta.url)` is not: a bundled entry
14
+ * sits at a different depth than its source, so the walk lands outside the
15
+ * package and every read misses.
16
+ *
17
+ * `moduleUrl` is required on purpose. A default of `import.meta.url` resolves to
18
+ * this package rather than the caller's, which is a silently wrong answer.
19
+ */
20
+ function packageResourcePath(moduleUrl, file) {
21
+ let directory = node_path.default.dirname((0, node_url.fileURLToPath)(moduleUrl));
22
+ for (;;) {
23
+ if ((0, node_fs.existsSync)(node_path.default.join(directory, "package.json"))) {
24
+ const candidate = node_path.default.join(directory, file);
25
+ return (0, node_fs.existsSync)(candidate) ? candidate : void 0;
26
+ }
27
+ const parent = node_path.default.dirname(directory);
28
+ if (parent === directory) return void 0;
29
+ directory = parent;
30
+ }
31
+ }
32
+ /**
33
+ * Text of a file shipped by the calling package, or `''` when it is not there.
34
+ *
35
+ * Empty rather than a placeholder, and never a throw. A context resource's text
36
+ * is pasted into the system prompt, so `'(resource unavailable: README.md)'` is
37
+ * a string the model pays for and may act on; `''` is dropped by the prompt
38
+ * composer instead. A throw is worse still: it propagates out of resource
39
+ * resolution and fails the whole prompt build.
40
+ */
41
+ async function readPackageResource(moduleUrl, file) {
42
+ const resolved = packageResourcePath(moduleUrl, file);
43
+ if (resolved === void 0) return "";
44
+ try {
45
+ return await (0, node_fs_promises.readFile)(resolved, "utf8");
46
+ } catch {
47
+ return "";
48
+ }
49
+ }
50
+ //#endregion
51
+ exports.packageResourcePath = packageResourcePath;
52
+ exports.readPackageResource = readPackageResource;
53
+
54
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["path","fileURLToPath","existsSync","readFile"],"sources":["../../../../src/services/packageResource/index.ts"],"sourcesContent":["import { existsSync } from 'node:fs';\nimport { readFile } from 'node:fs/promises';\nimport path from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\n/**\n * Absolute path of a file shipped by the calling package.\n *\n * Anchored on the nearest ancestor holding a `package.json`, which is the only\n * sentinel that is correct from `src/` and from `dist/` alike. Counting levels\n * with a fixed `new URL('../../..', import.meta.url)` is not: a bundled entry\n * sits at a different depth than its source, so the walk lands outside the\n * package and every read misses.\n *\n * `moduleUrl` is required on purpose. A default of `import.meta.url` resolves to\n * this package rather than the caller's, which is a silently wrong answer.\n */\nexport function packageResourcePath(moduleUrl: string | URL, file: string): string | undefined {\n let directory = path.dirname(fileURLToPath(moduleUrl));\n for (;;) {\n if (existsSync(path.join(directory, 'package.json'))) {\n const candidate = path.join(directory, file);\n return existsSync(candidate) ? candidate : undefined;\n }\n const parent = path.dirname(directory);\n if (parent === directory) return undefined;\n directory = parent;\n }\n}\n\n/**\n * Text of a file shipped by the calling package, or `''` when it is not there.\n *\n * Empty rather than a placeholder, and never a throw. A context resource's text\n * is pasted into the system prompt, so `'(resource unavailable: README.md)'` is\n * a string the model pays for and may act on; `''` is dropped by the prompt\n * composer instead. A throw is worse still: it propagates out of resource\n * resolution and fails the whole prompt build.\n */\nexport async function readPackageResource(moduleUrl: string | URL, file: string): Promise<string> {\n const resolved = packageResourcePath(moduleUrl, file);\n if (resolved === undefined) return '';\n try {\n return await readFile(resolved, 'utf8');\n } catch {\n return '';\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAiBA,SAAgB,oBAAoB,WAAyB,MAAkC;CAC7F,IAAI,YAAYA,UAAAA,QAAK,SAAA,GAAQC,SAAAA,cAAAA,CAAc,SAAS,CAAC;CACrD,SAAS;EACP,KAAA,GAAIC,QAAAA,WAAAA,CAAWF,UAAAA,QAAK,KAAK,WAAW,cAAc,CAAC,GAAG;GACpD,MAAM,YAAYA,UAAAA,QAAK,KAAK,WAAW,IAAI;GAC3C,QAAA,GAAOE,QAAAA,WAAAA,CAAW,SAAS,IAAI,YAAY,KAAA;EAC7C;EACA,MAAM,SAASF,UAAAA,QAAK,QAAQ,SAAS;EACrC,IAAI,WAAW,WAAW,OAAO,KAAA;EACjC,YAAY;CACd;AACF;;;;;;;;;;AAWA,eAAsB,oBAAoB,WAAyB,MAA+B;CAChG,MAAM,WAAW,oBAAoB,WAAW,IAAI;CACpD,IAAI,aAAa,KAAA,GAAW,OAAO;CACnC,IAAI;EACF,OAAO,OAAA,GAAMG,iBAAAA,SAAAA,CAAS,UAAU,MAAM;CACxC,QAAQ;EACN,OAAO;CACT;AACF"}
@@ -0,0 +1,26 @@
1
+ //#region src/services/packageResource/index.d.ts
2
+ /**
3
+ * Absolute path of a file shipped by the calling package.
4
+ *
5
+ * Anchored on the nearest ancestor holding a `package.json`, which is the only
6
+ * sentinel that is correct from `src/` and from `dist/` alike. Counting levels
7
+ * with a fixed `new URL('../../..', import.meta.url)` is not: a bundled entry
8
+ * sits at a different depth than its source, so the walk lands outside the
9
+ * package and every read misses.
10
+ *
11
+ * `moduleUrl` is required on purpose. A default of `import.meta.url` resolves to
12
+ * this package rather than the caller's, which is a silently wrong answer.
13
+ */
14
+ export declare function packageResourcePath(moduleUrl: string | URL, file: string): string | undefined;
15
+ /**
16
+ * Text of a file shipped by the calling package, or `''` when it is not there.
17
+ *
18
+ * Empty rather than a placeholder, and never a throw. A context resource's text
19
+ * is pasted into the system prompt, so `'(resource unavailable: README.md)'` is
20
+ * a string the model pays for and may act on; `''` is dropped by the prompt
21
+ * composer instead. A throw is worse still: it propagates out of resource
22
+ * resolution and fails the whole prompt build.
23
+ */
24
+ export declare function readPackageResource(moduleUrl: string | URL, file: string): Promise<string>;
25
+ //#endregion
26
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/services/packageResource/index.ts"],"mappings":";;;;;;;;;;;;;wBAiBgB,oBAAoB,oBAAoB,KAAK;;;;;;;;;;wBAsBvC,oBAAoB,oBAAoB,KAAK,eAAe"}
@@ -0,0 +1,51 @@
1
+ import { existsSync } from "node:fs";
2
+ import path from "node:path";
3
+ import { readFile } from "node:fs/promises";
4
+ import { fileURLToPath } from "node:url";
5
+ //#region src/services/packageResource/index.ts
6
+ /**
7
+ * Absolute path of a file shipped by the calling package.
8
+ *
9
+ * Anchored on the nearest ancestor holding a `package.json`, which is the only
10
+ * sentinel that is correct from `src/` and from `dist/` alike. Counting levels
11
+ * with a fixed `new URL('../../..', import.meta.url)` is not: a bundled entry
12
+ * sits at a different depth than its source, so the walk lands outside the
13
+ * package and every read misses.
14
+ *
15
+ * `moduleUrl` is required on purpose. A default of `import.meta.url` resolves to
16
+ * this package rather than the caller's, which is a silently wrong answer.
17
+ */
18
+ function packageResourcePath(moduleUrl, file) {
19
+ let directory = path.dirname(fileURLToPath(moduleUrl));
20
+ for (;;) {
21
+ if (existsSync(path.join(directory, "package.json"))) {
22
+ const candidate = path.join(directory, file);
23
+ return existsSync(candidate) ? candidate : void 0;
24
+ }
25
+ const parent = path.dirname(directory);
26
+ if (parent === directory) return void 0;
27
+ directory = parent;
28
+ }
29
+ }
30
+ /**
31
+ * Text of a file shipped by the calling package, or `''` when it is not there.
32
+ *
33
+ * Empty rather than a placeholder, and never a throw. A context resource's text
34
+ * is pasted into the system prompt, so `'(resource unavailable: README.md)'` is
35
+ * a string the model pays for and may act on; `''` is dropped by the prompt
36
+ * composer instead. A throw is worse still: it propagates out of resource
37
+ * resolution and fails the whole prompt build.
38
+ */
39
+ async function readPackageResource(moduleUrl, file) {
40
+ const resolved = packageResourcePath(moduleUrl, file);
41
+ if (resolved === void 0) return "";
42
+ try {
43
+ return await readFile(resolved, "utf8");
44
+ } catch {
45
+ return "";
46
+ }
47
+ }
48
+ //#endregion
49
+ export { packageResourcePath, readPackageResource };
50
+
51
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/packageResource/index.ts"],"sourcesContent":["import { existsSync } from 'node:fs';\nimport { readFile } from 'node:fs/promises';\nimport path from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\n/**\n * Absolute path of a file shipped by the calling package.\n *\n * Anchored on the nearest ancestor holding a `package.json`, which is the only\n * sentinel that is correct from `src/` and from `dist/` alike. Counting levels\n * with a fixed `new URL('../../..', import.meta.url)` is not: a bundled entry\n * sits at a different depth than its source, so the walk lands outside the\n * package and every read misses.\n *\n * `moduleUrl` is required on purpose. A default of `import.meta.url` resolves to\n * this package rather than the caller's, which is a silently wrong answer.\n */\nexport function packageResourcePath(moduleUrl: string | URL, file: string): string | undefined {\n let directory = path.dirname(fileURLToPath(moduleUrl));\n for (;;) {\n if (existsSync(path.join(directory, 'package.json'))) {\n const candidate = path.join(directory, file);\n return existsSync(candidate) ? candidate : undefined;\n }\n const parent = path.dirname(directory);\n if (parent === directory) return undefined;\n directory = parent;\n }\n}\n\n/**\n * Text of a file shipped by the calling package, or `''` when it is not there.\n *\n * Empty rather than a placeholder, and never a throw. A context resource's text\n * is pasted into the system prompt, so `'(resource unavailable: README.md)'` is\n * a string the model pays for and may act on; `''` is dropped by the prompt\n * composer instead. A throw is worse still: it propagates out of resource\n * resolution and fails the whole prompt build.\n */\nexport async function readPackageResource(moduleUrl: string | URL, file: string): Promise<string> {\n const resolved = packageResourcePath(moduleUrl, file);\n if (resolved === undefined) return '';\n try {\n return await readFile(resolved, 'utf8');\n } catch {\n return '';\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAiBA,SAAgB,oBAAoB,WAAyB,MAAkC;CAC7F,IAAI,YAAY,KAAK,QAAQ,cAAc,SAAS,CAAC;CACrD,SAAS;EACP,IAAI,WAAW,KAAK,KAAK,WAAW,cAAc,CAAC,GAAG;GACpD,MAAM,YAAY,KAAK,KAAK,WAAW,IAAI;GAC3C,OAAO,WAAW,SAAS,IAAI,YAAY,KAAA;EAC7C;EACA,MAAM,SAAS,KAAK,QAAQ,SAAS;EACrC,IAAI,WAAW,WAAW,OAAO,KAAA;EACjC,YAAY;CACd;AACF;;;;;;;;;;AAWA,eAAsB,oBAAoB,WAAyB,MAA+B;CAChG,MAAM,WAAW,oBAAoB,WAAW,IAAI;CACpD,IAAI,aAAa,KAAA,GAAW,OAAO;CACnC,IAAI;EACF,OAAO,MAAM,SAAS,UAAU,MAAM;CACxC,QAAQ;EACN,OAAO;CACT;AACF"}