@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,1663 @@
1
+ import { modelConfigDirectory } from "../../../../runtimePiSettings.mjs";
2
+ import { DOOM_AGENT_MODEL_ENTRY_TYPE } from "../../../schemas/agentModel.mjs";
3
+ import { readDoomBackgroundWorkService } from "../../../schemas/backgroundWork.mjs";
4
+ import "../../../../backgroundWork.mjs";
5
+ import { DOOM_CHILD_SESSION_HOOKS_SERVICE, DOOM_CHILD_SESSION_MCP_TOOL_SERVICE, DOOM_CHILD_SESSION_SERVICE } from "../../child/types/childSession.mjs";
6
+ import { registerDoomSessionEnvironment } from "../../../../runtimeCordisHost.mjs";
7
+ import "../../../../cordisHost.mjs";
8
+ import { DoomHeadlessPromptAdmissionError, DoomSessionSetupError, isDoomHeadlessToolModelVisible } from "../../../schemas/headless.mjs";
9
+ import { createHistoryOwnership } from "../../../../historyOwnership.mjs";
10
+ import { SessionMetadataDoc } from "../../../../sqliteSessionStorage.mjs";
11
+ import { validationDetails } from "../../../../runtimeProtocol.mjs";
12
+ import { createPiExtensionHost, formatSkillsForSystemPrompt, preloadPiExtensions, resolvePiSettingsPackageEntries } from "../../../services/piExtensionHost/index.mjs";
13
+ import { HeadlessHost, describeLoadSkillTool, headlessHarnessSkill } from "./headlessHost.mjs";
14
+ import { createDirectHarnessRuntime } from "../../../server/directHarnessRuntime.mjs";
15
+ import { harnessErrorMessage } from "../../../server/harnessErrorMessage.mjs";
16
+ import { buildContextDetail } from "../../../../contextDetail.mjs";
17
+ import { writeContextDetail } from "../../../../contextDetailStore.mjs";
18
+ import { DOOM_CONTEXT_ENTRY_TYPE, projectContext } from "../../../../contextProjection.mjs";
19
+ import { createHeadlessClient } from "../../../services/headlessClient/index.mjs";
20
+ import { observe } from "../../../../serverTelemetry.mjs";
21
+ import { formatToolPrompt } from "../../../services/toolPrompt/index.mjs";
22
+ import { createHeadlessChildSessionServiceProvider } from "../../child/adapters/headlessChildSessionService.mjs";
23
+ import { randomUUID } from "node:crypto";
24
+ import fs from "node:fs";
25
+ import path from "node:path";
26
+ import { Value } from "typebox/value";
27
+ import { BACKGROUND_CONTEXT, withAbortSignal } from "@earendil-works/chord/context";
28
+ import { DEFAULT_COMPACTION_SETTINGS, ModelRuntime, SettingsManager, generateSummary, getAgentDir, loadProjectContextFiles, parseArgs, resolveCliModel, resolveModelScopeWithDiagnostics } from "@earendil-works/pi-coding-agent";
29
+ import { createAssistantMessageEventStream } from "@earendil-works/pi-ai";
30
+ //#region src/systems/main/adapters/headlessSessionHost.ts
31
+ const EXTERNAL_OPERATION = "external";
32
+ const REMOTE_TOOL_WAIT_MS = 3e4;
33
+ const PROMPT_PREPARATION_FAILED_EVENT = "po_server.system_prompt_preparation_failed";
34
+ function isRecord(value) {
35
+ return typeof value === "object" && value !== null && !Array.isArray(value);
36
+ }
37
+ function stringArray(value) {
38
+ return Array.isArray(value) && value.every((entry) => typeof entry === "string") ? value : void 0;
39
+ }
40
+ /** Restores the last accepted live selection from journal projections, falling back on launch configuration. */
41
+ function restoreHeadlessSelection(entries, fallback) {
42
+ let projected;
43
+ for (let index = entries.length - 1; index >= 0 && projected === void 0; index -= 1) {
44
+ const entry = entries[index];
45
+ if (!isRecord(entry) || entry.type !== "custom" || !isRecord(entry.data)) continue;
46
+ if (projected === void 0 && entry.customType === "doom-context") {
47
+ const selection = entry.data.selection;
48
+ if (!isRecord(selection) || typeof selection.majorMode !== "string") continue;
49
+ const domains = stringArray(selection.domains);
50
+ if (domains === void 0 || selection.profile !== void 0 && typeof selection.profile !== "string") continue;
51
+ projected = {
52
+ majorMode: selection.majorMode,
53
+ domains,
54
+ ...typeof selection.profile === "string" ? { profile: selection.profile } : {}
55
+ };
56
+ }
57
+ }
58
+ return {
59
+ ...fallback,
60
+ ...projected
61
+ };
62
+ }
63
+ function isJsonValue(value) {
64
+ if (value === null || typeof value === "string" || typeof value === "boolean") return true;
65
+ if (typeof value === "number") return Number.isFinite(value);
66
+ if (Array.isArray(value)) return value.every(isJsonValue);
67
+ return isRecord(value) && Object.values(value).every(isJsonValue);
68
+ }
69
+ function boundedJsonCopy(value) {
70
+ const seen = /* @__PURE__ */ new Set();
71
+ const visit = (item, depth) => {
72
+ if (depth > 128) throw new TypeError("Message data is too deeply nested.");
73
+ if (item === null || typeof item === "string" || typeof item === "boolean") return;
74
+ if (typeof item === "number" && Number.isFinite(item)) return;
75
+ if (typeof item !== "object" || seen.has(item)) throw new TypeError("Message data must be JSON serializable.");
76
+ seen.add(item);
77
+ for (const child of Object.values(item)) if (child !== void 0) visit(child, depth + 1);
78
+ seen.delete(item);
79
+ };
80
+ visit(value, 0);
81
+ const encoded = JSON.stringify(value);
82
+ if (encoded.length > 16777216) throw new TypeError("Message data exceeds the serialization limit.");
83
+ return JSON.parse(encoded);
84
+ }
85
+ function isSummaryMessage(value) {
86
+ if (!isRecord(value) || typeof value.timestamp !== "number" || !Number.isFinite(value.timestamp)) return false;
87
+ if (value.role === "user") return typeof value.content === "string" || isToolContent(value.content);
88
+ if (value.role === "custom") return typeof value.customType === "string" && typeof value.display === "boolean" && (typeof value.content === "string" || isToolContent(value.content));
89
+ if (value.role === "compactionSummary") return typeof value.summary === "string" && typeof value.tokensBefore === "number";
90
+ if (value.role === "branchSummary") return typeof value.summary === "string" && (value.fromId === null || typeof value.fromId === "string");
91
+ if (value.role === "bashExecution") return typeof value.command === "string" && typeof value.output === "string" && typeof value.cancelled === "boolean" && typeof value.truncated === "boolean" && (value.exitCode === void 0 || typeof value.exitCode === "number");
92
+ if (value.role === "toolResult") return isToolContent(value.content) && isAgentMessage(value);
93
+ return value.role === "assistant" && Array.isArray(value.content) && value.content.every((part) => {
94
+ if (!isRecord(part)) return false;
95
+ if (part.type === "text") return typeof part.text === "string";
96
+ if (part.type === "thinking") return typeof part.thinking === "string";
97
+ return part.type === "toolCall" && typeof part.id === "string" && typeof part.name === "string" && isJsonObject(part.arguments);
98
+ }) && isAgentMessage(value);
99
+ }
100
+ function isJsonObject(value) {
101
+ return isRecord(value) && Object.values(value).every(isJsonValue);
102
+ }
103
+ function isToolContent(value) {
104
+ return Array.isArray(value) && value.every((part) => {
105
+ if (!isRecord(part)) return false;
106
+ if (part.type === "text") return typeof part.text === "string";
107
+ return part.type === "image" && typeof part.data === "string" && typeof part.mimeType === "string";
108
+ });
109
+ }
110
+ function isUsage(value) {
111
+ if (!isRecord(value) || !isRecord(value.cost)) return false;
112
+ const cost = value.cost;
113
+ return [
114
+ "input",
115
+ "output",
116
+ "cacheRead",
117
+ "cacheWrite",
118
+ "totalTokens"
119
+ ].every((key) => typeof value[key] === "number" && Number.isFinite(value[key])) && [
120
+ "input",
121
+ "output",
122
+ "cacheRead",
123
+ "cacheWrite",
124
+ "total"
125
+ ].every((key) => typeof cost[key] === "number" && Number.isFinite(cost[key]));
126
+ }
127
+ function isAgentMessage(value) {
128
+ if (!isRecord(value) || typeof value.timestamp !== "number" || !Number.isFinite(value.timestamp)) return false;
129
+ if (value.role === "user") return typeof value.content === "string" || Array.isArray(value.content);
130
+ if (!Array.isArray(value.content)) return false;
131
+ if (value.role === "assistant") return typeof value.api === "string" && typeof value.provider === "string" && typeof value.model === "string" && typeof value.stopReason === "string" && isUsage(value.usage);
132
+ return value.role === "toolResult" && typeof value.toolCallId === "string" && typeof value.toolName === "string" && typeof value.isError === "boolean";
133
+ }
134
+ function isCompactResult(value) {
135
+ return isRecord(value) && typeof value.summary === "string" && typeof value.tokensBefore === "number" && Number.isFinite(value.tokensBefore) && Array.isArray(value.retainedTail) && value.retainedTail.every(isAgentMessage) && (value.usage === void 0 || isUsage(value.usage)) && (value.details === void 0 || isJsonValue(value.details));
136
+ }
137
+ const unsupported = (parsed) => {
138
+ const match = [
139
+ ["--help", parsed.help],
140
+ ["--version", parsed.version],
141
+ ["--mode", parsed.mode],
142
+ ["--print", parsed.print],
143
+ ["--export", parsed.export],
144
+ ["--no-session", parsed.noSession],
145
+ ["--continue", parsed.continue],
146
+ ["--resume", parsed.resume],
147
+ ["--fork", parsed.fork],
148
+ ["--list-models", parsed.listModels],
149
+ ["--offline", parsed.offline],
150
+ ["--tui-mode", parsed.tuiMode],
151
+ ["--extensions", parsed.extensions],
152
+ ["--no-extensions", parsed.noExtensions],
153
+ ["--skills", parsed.skills],
154
+ ["--no-skills", parsed.noSkills],
155
+ ["--prompt-templates", parsed.promptTemplates],
156
+ ["--no-prompt-templates", parsed.noPromptTemplates],
157
+ ["--themes", parsed.themes],
158
+ ["--no-themes", parsed.noThemes],
159
+ ["--no-context-files", parsed.noContextFiles],
160
+ ["--tools", parsed.tools],
161
+ ["--exclude-tools", parsed.excludeTools],
162
+ ["--no-tools", parsed.noTools],
163
+ ["--no-builtin-tools", parsed.noBuiltinTools],
164
+ ["--project-trust-override", parsed.projectTrustOverride],
165
+ ["--verbose", parsed.verbose]
166
+ ].find(([, value]) => value !== void 0 && value !== false);
167
+ if (match) return `Direct headless mode does not support ${match[0]}.`;
168
+ if (parsed.messages.length > 0 || parsed.fileArgs.length > 0) return "Direct headless mode does not support positional prompts or files.";
169
+ const unknown = parsed.unknownFlags.keys().next().value;
170
+ return typeof unknown === "string" ? `Direct headless mode does not support --${unknown}.` : void 0;
171
+ };
172
+ /** Validate the Pi flags that remain after Doom's harness flags are removed. */
173
+ function validateDirectHeadlessArgs(agentArgs) {
174
+ if (agentArgs.includes("--mode")) throw new Error("Direct headless mode does not support --mode.");
175
+ const parsed = parseArgs([...agentArgs]);
176
+ const diagnostics = parsed.diagnostics.filter((diagnostic) => diagnostic.type === "error");
177
+ if (diagnostics.length) throw new Error(diagnostics.map((diagnostic) => diagnostic.message).join("\n"));
178
+ const error = unsupported(parsed);
179
+ if (error) throw new Error(error);
180
+ return parsed;
181
+ }
182
+ function modelIdentity(model) {
183
+ return {
184
+ provider: model.provider,
185
+ id: model.id
186
+ };
187
+ }
188
+ function modelMetadata(model) {
189
+ const compat = {};
190
+ const source = model.compat;
191
+ for (const key of [
192
+ "supportsStore",
193
+ "supportsDeveloperRole",
194
+ "supportsReasoningEffort",
195
+ "supportsUsageInStreaming",
196
+ "supportsStrictMode",
197
+ "maxTokensField",
198
+ "sendSessionAffinityHeaders",
199
+ "sessionAffinityFormat",
200
+ "supportsLongCacheRetention",
201
+ "thinkingFormat",
202
+ "requiresReasoningContentOnAssistantMessages",
203
+ "cacheControlFormat",
204
+ "forceAdaptiveThinking",
205
+ "allowEmptySignature"
206
+ ]) {
207
+ const value = source?.[key];
208
+ if (typeof value === "boolean" || typeof value === "string") compat[key] = value;
209
+ }
210
+ let baseUrl;
211
+ try {
212
+ const url = new URL(model.baseUrl);
213
+ url.username = "";
214
+ url.password = "";
215
+ url.search = "";
216
+ url.hash = "";
217
+ baseUrl = url.toString();
218
+ } catch {
219
+ baseUrl = void 0;
220
+ }
221
+ return Object.freeze({
222
+ provider: model.provider,
223
+ id: model.id,
224
+ api: model.api,
225
+ name: model.name,
226
+ ...baseUrl ? { baseUrl } : {},
227
+ compat: Object.freeze(compat)
228
+ });
229
+ }
230
+ async function resolveModel(parsed, modelRuntime, settings) {
231
+ const cli = resolveCliModel({
232
+ cliProvider: parsed.provider,
233
+ cliModel: parsed.model,
234
+ cliThinking: parsed.thinking,
235
+ modelRuntime
236
+ });
237
+ if (cli.error) throw new Error(cli.error);
238
+ let scoped;
239
+ if (parsed.models !== void 0 && parsed.models.length > 0) {
240
+ scoped = (await resolveModelScopeWithDiagnostics(parsed.models, modelRuntime)).scopedModels[0]?.model;
241
+ if (scoped === void 0) throw new DoomSessionSetupError(`No configured model matched --models ${parsed.models.join(", ")}.`);
242
+ }
243
+ const configured = cli.model ?? scoped ?? (settings.getDefaultProvider() && settings.getDefaultModel() ? modelRuntime.getModel(settings.getDefaultProvider(), settings.getDefaultModel()) : void 0) ?? (await modelRuntime.getAvailable())[0];
244
+ if (configured === void 0) {
245
+ const agentDir = getAgentDir();
246
+ throw new DoomSessionSetupError(`No model is configured, so the session cannot start. Add a provider and its credentials in ${agentDir} (auth.json, or models.json for a custom provider), then set defaultProvider and defaultModel in ${path.join(agentDir, "settings.json")}.`);
247
+ }
248
+ return {
249
+ model: configured,
250
+ thinkingLevel: cli.thinkingLevel ?? parsed.thinking ?? settings.getModelThinkingLevel(configured.provider, configured.id) ?? settings.getDefaultThinkingLevel()
251
+ };
252
+ }
253
+ function mapResources(resources) {
254
+ const skills = [];
255
+ const advertised = [];
256
+ const promptTemplates = [];
257
+ const context = [];
258
+ for (const resource of resources) if (resource.kind === "skill") {
259
+ const skill = headlessHarnessSkill(resource);
260
+ skills.push(skill);
261
+ if (resource.path !== void 0 && !advertised.some((entry) => entry.name === skill.name)) advertised.push(skill);
262
+ } else if (resource.kind === "prompt") promptTemplates.push({
263
+ name: resource.name,
264
+ content: resource.text
265
+ });
266
+ else context.push(resource.text);
267
+ return {
268
+ harness: {
269
+ skills,
270
+ promptTemplates
271
+ },
272
+ context,
273
+ advertised
274
+ };
275
+ }
276
+ function toolAdapter(tool, executionContext, reportedErrors) {
277
+ return {
278
+ name: tool.name,
279
+ label: tool.label ?? tool.name,
280
+ description: tool.description,
281
+ parameters: tool.parameters,
282
+ ...tool.promptSnippet === void 0 ? {} : { promptSnippet: tool.promptSnippet },
283
+ ...tool.promptGuidelines === void 0 ? {} : { promptGuidelines: tool.promptGuidelines },
284
+ ...tool.executionMode === void 0 ? {} : { executionMode: tool.executionMode === "parallel" ? "parallel" : "sequential" },
285
+ async execute(toolCallId, parameters, onUpdate, _toolContext, _invocation, context) {
286
+ const result = await tool.execute(toolCallId, parameters, context.abortSignal, (partial) => onUpdate({
287
+ content: partial.content,
288
+ details: partial.details
289
+ }), executionContext());
290
+ if (result.isError === true) reportedErrors.add(toolCallId);
291
+ return {
292
+ content: result.content,
293
+ details: result.details
294
+ };
295
+ }
296
+ };
297
+ }
298
+ function eventHook(event) {
299
+ return {
300
+ run_start: "agent_start",
301
+ run_resume: "agent_start",
302
+ run_end: "agent_settled",
303
+ turn_start: "turn_start",
304
+ turn_end: "turn_end",
305
+ message_start: "message_start",
306
+ message_update: "message_update",
307
+ message_end: "message_end",
308
+ tool_start: "tool_execution_start",
309
+ tool_update: "tool_execution_update",
310
+ tool_end: "tool_execution_end",
311
+ compaction_end: "session_compact",
312
+ navigation_start: "session_tree",
313
+ navigation_end: "session_tree"
314
+ }[event];
315
+ }
316
+ function emitTo(listeners, frame) {
317
+ const snapshot = [...listeners];
318
+ for (const listener of snapshot) try {
319
+ listener(frame);
320
+ } catch {}
321
+ }
322
+ function createHeadlessCompositionPublisher(runtime, host, environment, groups, readSystemPrompt) {
323
+ let countTokens;
324
+ let contextRevision = 0;
325
+ let publishedContext;
326
+ let tail = Promise.resolve();
327
+ const publish = async (selection) => {
328
+ countTokens ??= (await import("gpt-tokenizer")).countTokens;
329
+ const inventory = host.getContextInventory(selection, countTokens);
330
+ const prompt = readSystemPrompt();
331
+ const promptCost = prompt === void 0 ? void 0 : {
332
+ tokens: countTokens(prompt.text),
333
+ stage: prompt.stage
334
+ };
335
+ const context = projectContext({
336
+ revision: contextRevision + 1,
337
+ majorMode: selection.majorMode,
338
+ ...selection.profile === void 0 ? {} : { profile: selection.profile },
339
+ groups: groups(selection),
340
+ domains: selection.domains,
341
+ sources: inventory.sources,
342
+ skills: inventory.skills,
343
+ attribution: inventory.attribution,
344
+ countTokens,
345
+ ...promptCost === void 0 ? {} : { systemPrompt: promptCost }
346
+ });
347
+ const contextKey = JSON.stringify({
348
+ ...context,
349
+ revision: 0,
350
+ promptText: prompt?.text
351
+ });
352
+ if (contextKey === publishedContext) return;
353
+ const revision = contextRevision + 1;
354
+ const details = buildContextDetail({
355
+ sources: inventory.sources,
356
+ skills: inventory.skills,
357
+ countTokens,
358
+ ...prompt === void 0 || promptCost === void 0 ? {} : { systemPrompt: {
359
+ text: prompt.text,
360
+ tokens: promptCost.tokens,
361
+ stage: prompt.stage
362
+ } }
363
+ });
364
+ await runtime.appendCustomEntry(DOOM_CONTEXT_ENTRY_TYPE, {
365
+ ...context,
366
+ revision
367
+ });
368
+ writeContextDetail(runtime.sessionId, revision, details, environment);
369
+ contextRevision = revision;
370
+ publishedContext = contextKey;
371
+ };
372
+ return (selection = host.context.selection) => {
373
+ tail = tail.then(() => publish(selection), () => publish(selection));
374
+ return tail;
375
+ };
376
+ }
377
+ /** Create the gated, same-process host used by direct-headless startup tests. */
378
+ /**
379
+ * Composes one server session's host.
380
+ *
381
+ * Its Pi extensions run in the server's process, so the session's admitted environment is
382
+ * registered under its id for them to read instead of `process.env`, and released with it.
383
+ */
384
+ async function createHeadlessSessionHost(options) {
385
+ const releaseEnvironment = registerDoomSessionEnvironment(options.sessionId, options.environment);
386
+ try {
387
+ return await composeHeadlessSessionHost(options, releaseEnvironment);
388
+ } catch (error) {
389
+ releaseEnvironment();
390
+ throw error;
391
+ }
392
+ }
393
+ async function composeHeadlessSessionHost(options, releaseEnvironment) {
394
+ const parsed = validateDirectHeadlessArgs(options.agentArgs);
395
+ const agentDir = getAgentDir();
396
+ const settings = SettingsManager.create(options.cwd, agentDir);
397
+ const modelDir = modelConfigDirectory(agentDir);
398
+ const modelSettings = modelDir === agentDir ? settings : SettingsManager.create(options.cwd, modelDir);
399
+ const modelRuntime = await ModelRuntime.create({
400
+ authPath: path.join(modelDir, "auth.json"),
401
+ modelsPath: path.join(modelDir, "models.json"),
402
+ refreshOnCreate: false
403
+ });
404
+ const piExtensionPaths = options.piExtensions === false ? [] : [
405
+ ...options.piExtensionFactories !== void 0 ? [] : options.piExtensionPaths ?? [],
406
+ ...await resolvePiSettingsPackageEntries({
407
+ cwd: options.cwd,
408
+ agentDir,
409
+ settings,
410
+ ...options.onNotice === void 0 ? {} : { onNotice: options.onNotice }
411
+ }),
412
+ ...modelDir !== agentDir && fs.existsSync(path.join(modelDir, "extensions")) ? [path.join(modelDir, "extensions")] : []
413
+ ];
414
+ const piPreload = await preloadPiExtensions({
415
+ cwd: options.cwd,
416
+ agentDir,
417
+ models: modelRuntime,
418
+ extensionPaths: [...new Set(piExtensionPaths)],
419
+ ...options.piExtensions === false || options.piExtensionFactories === void 0 ? {} : { extensionFactories: await options.piExtensionFactories() },
420
+ ...options.onNotice === void 0 ? {} : { onNotice: options.onNotice }
421
+ });
422
+ for (const override of options.providerOverrides?.() ?? []) {
423
+ if (!override.name.trim() || override.name !== override.name.trim()) throw new Error("Invalid native provider identity.");
424
+ const url = new URL(override.baseUrl);
425
+ if (!["http:", "https:"].includes(url.protocol) || url.username || url.password) throw new Error("Invalid native provider base URL.");
426
+ if (modelRuntime.getRegisteredNativeProvider(override.name)) continue;
427
+ modelRuntime.registerProvider(override.name, { baseUrl: override.baseUrl });
428
+ }
429
+ const resolved = await resolveModel(parsed, modelRuntime, modelSettings);
430
+ if (parsed.apiKey !== void 0) await modelRuntime.setRuntimeApiKey(resolved.model.provider, parsed.apiKey);
431
+ const reportedToolErrors = /* @__PURE__ */ new Set();
432
+ let promptPreparationFailed = false;
433
+ let promptPreparationError;
434
+ let headlessReady = false;
435
+ let toolGuidance = [];
436
+ const initialSystemPrompt = [parsed.systemPrompt, ...parsed.appendSystemPrompt ?? []].filter(Boolean).join("\n\n");
437
+ /**
438
+ * AGENTS.md and friends, in Pi's own framing.
439
+ *
440
+ * The server had none of this: its prompt began at the --system-prompt flag, so a
441
+ * repository's own instructions reached a terminal session and never a cockpit one.
442
+ * Mirrors @earendil-works/pi-coding-agent@0.86.0 dist/core/system-prompt.js:21-27
443
+ * (the customPrompt branch, which is the shape this host matches). `buildSystemPrompt`
444
+ * is not exported and the package exports map has no wildcard, so the four literals
445
+ * below are copied; re-diff them against that file on upgrade.
446
+ *
447
+ * Not trust-gated, deliberately: TRUST_REQUIRING_PROJECT_CONFIG_RESOURCES in Pi's
448
+ * trust-manager covers settings.json, extensions, skills, prompts, themes, SYSTEM.md
449
+ * and APPEND_SYSTEM.md, all of which execute or replace instructions. AGENTS.md is
450
+ * advisory prose and Pi appends it unconditionally; gating it here would be a
451
+ * divergence from Pi rather than parity with it.
452
+ *
453
+ * Resolved once: cwd is fixed for the host's lifetime, and composeSystemPrompt runs
454
+ * on every generation.
455
+ */
456
+ const projectContextFiles = loadProjectContextFiles({
457
+ cwd: options.cwd,
458
+ agentDir
459
+ });
460
+ const projectContextBlock = (() => {
461
+ if (projectContextFiles.length === 0) return "";
462
+ return `<project_context>\n\nProject-specific instructions and guidelines:\n\n${projectContextFiles.map(({ path: filePath, content }) => `<project_instructions path="${filePath}">\n${content}\n</project_instructions>\n`).join("\n")}\n</project_context>`;
463
+ })();
464
+ const workingDirectoryLine = `Current working directory: ${options.cwd.replace(/\\/g, "/")}`;
465
+ /**
466
+ * Everything the prompt is made of before a package has had a say.
467
+ *
468
+ * Shared with the runtime callback below rather than copied. Assembling it is
469
+ * pure; the hook pass that follows it there is not, which is why the context
470
+ * panel is shown this rather than a prompt built for the panel's sake.
471
+ */
472
+ const composeSystemPrompt = (resources) => {
473
+ const mapped = mapResources(resources);
474
+ const skills = toolGuidance.some((entry) => entry.name === "load_skill") ? "" : formatSkillsForSystemPrompt(mapped.advertised).trim();
475
+ return [
476
+ initialSystemPrompt,
477
+ projectContextBlock,
478
+ formatToolPrompt(toolGuidance),
479
+ skills,
480
+ ...mapped.context,
481
+ workingDirectoryLine
482
+ ].filter(Boolean).join("\n\n");
483
+ };
484
+ /** The last prompt a turn actually built, once one has. */
485
+ let builtSystemPrompt;
486
+ /**
487
+ * What the context panel is shown: the prompt a turn sent, or the hook-free
488
+ * base until one has.
489
+ *
490
+ * The base is composed from the applied snapshot rather than a fresh read, so
491
+ * it answers at exactly the moments the tool inventory beside it answers.
492
+ * Re-reading refuses while a selection is mid-apply, and the panel would then
493
+ * spend a published revision saying there is no prompt before the next one
494
+ * said there is.
495
+ */
496
+ const readSystemPrompt = () => {
497
+ if (!headlessHost) return void 0;
498
+ if (builtSystemPrompt !== void 0) return {
499
+ text: builtSystemPrompt,
500
+ stage: "effective"
501
+ };
502
+ return {
503
+ text: composeSystemPrompt(headlessHost.appliedResources),
504
+ stage: "base"
505
+ };
506
+ };
507
+ const beforeTool = async (event, context) => {
508
+ if (!headlessReady || !headlessHost) throw new Error("Headless capabilities are not installed.");
509
+ const patches = await headlessHost.dispatchHook("tool_call", event, context.abortSignal);
510
+ let args = event.args;
511
+ let block;
512
+ for (const patch of patches) {
513
+ if (!isRecord(patch)) continue;
514
+ if (patch.args !== void 0) {
515
+ if (!isJsonObject(patch.args)) throw new Error("Invalid headless tool arguments");
516
+ args = patch.args;
517
+ }
518
+ if (patch.block === void 0) continue;
519
+ if (!isRecord(patch.block) || typeof patch.block.reason !== "string" || patch.block.terminate !== void 0 && typeof patch.block.terminate !== "boolean") throw new Error("Invalid headless tool denial");
520
+ block = {
521
+ reason: patch.block.reason,
522
+ ...typeof patch.block.terminate === "boolean" ? { terminate: patch.block.terminate } : {}
523
+ };
524
+ break;
525
+ }
526
+ return {
527
+ ...args === event.args ? {} : { args },
528
+ ...block === void 0 ? {} : { block }
529
+ };
530
+ };
531
+ const afterTool = async (event, context) => {
532
+ if (!headlessReady || !headlessHost) throw new Error("Headless capabilities are not installed.");
533
+ const original = reportedToolErrors.delete(event.toolCallId) ? {
534
+ ...event,
535
+ isError: true
536
+ } : event;
537
+ const patches = await headlessHost.dispatchHook("tool_result", original, context.abortSignal);
538
+ let content = original.content;
539
+ let details = original.details;
540
+ let isError = original.isError;
541
+ let usage = original.usage;
542
+ let terminate;
543
+ let resultRewritten = false;
544
+ for (const patch of patches) {
545
+ if (!isRecord(patch)) continue;
546
+ if (isToolContent(patch.content)) {
547
+ content = patch.content;
548
+ resultRewritten = true;
549
+ }
550
+ if ("details" in patch && isJsonValue(patch.details)) {
551
+ details = patch.details;
552
+ resultRewritten = true;
553
+ }
554
+ if (typeof patch.isError === "boolean") {
555
+ isError = patch.isError;
556
+ resultRewritten = true;
557
+ }
558
+ if (isUsage(patch.usage)) usage = patch.usage;
559
+ if (typeof patch.terminate === "boolean") terminate = patch.terminate;
560
+ }
561
+ if (resultRewritten && isRecord(details) && "app" in details) {
562
+ const { app: _app, ...redactedDetails } = details;
563
+ details = redactedDetails;
564
+ }
565
+ return {
566
+ ...content === event.content ? {} : { content },
567
+ ...details === event.details ? {} : { details },
568
+ ...isError === event.isError ? {} : { isError },
569
+ ...usage === event.usage ? {} : { usage },
570
+ ...terminate === void 0 ? {} : { terminate }
571
+ };
572
+ };
573
+ const runtime = await createDirectHarnessRuntime({
574
+ cwd: options.cwd,
575
+ sessionId: options.sessionId,
576
+ ...options.initialFastMode === void 0 ? {} : { initialFastMode: options.initialFastMode },
577
+ ...options.initialAgentLocked === void 0 ? {} : { initialAgentLocked: options.initialAgentLocked },
578
+ ...options.parentSessionId === void 0 ? {} : { parentSessionId: options.parentSessionId },
579
+ storage: "sqlite",
580
+ historyOwnership: createHistoryOwnership({ sourceFormat: "sqlite" }),
581
+ sessionName: parsed.name ?? options.sessionName,
582
+ ...parsed.session === void 0 ? {} : { sessionPath: parsed.session },
583
+ sessionsRoot: parsed.sessionDir ?? path.join(agentDir, "server", "sessions"),
584
+ models: modelRuntime,
585
+ model: resolved.model,
586
+ ...resolved.thinkingLevel === void 0 ? {} : { thinkingLevel: resolved.thinkingLevel },
587
+ beforeModelRequest: async ({ phase }) => {
588
+ if (!headlessReady || !headlessHost) throw new Error("Headless capabilities are not installed.");
589
+ if (phase === "turn" && options.inheritedSelection) await headlessHost.inheritSelection(await options.inheritedSelection());
590
+ await headlessHost.settled();
591
+ },
592
+ transformContext: async (event) => {
593
+ if (!headlessReady || !headlessHost) throw new Error("Headless capabilities are not installed.");
594
+ const patches = await headlessHost.dispatchHook("context", event);
595
+ let messages = event.messages;
596
+ let systemPrompt = event.systemPrompt;
597
+ for (const patch of patches) {
598
+ if (!isRecord(patch)) continue;
599
+ if (patch.messages !== void 0) {
600
+ if (!Array.isArray(patch.messages)) throw new Error("Invalid headless context messages");
601
+ messages = patch.messages;
602
+ }
603
+ if (patch.systemPrompt !== void 0) {
604
+ if (typeof patch.systemPrompt !== "string") throw new Error("Invalid headless context system prompt");
605
+ systemPrompt = patch.systemPrompt;
606
+ }
607
+ }
608
+ return {
609
+ messages: await (piHost?.transformContext(messages) ?? messages),
610
+ systemPrompt
611
+ };
612
+ },
613
+ beforeTool,
614
+ afterTool,
615
+ beforePayload: async (event) => {
616
+ if (!headlessReady || !headlessHost) throw new Error("Headless capabilities are not installed.");
617
+ const patches = await headlessHost.dispatchHook("before_provider_request", event);
618
+ let payload = event.payload;
619
+ for (const patch of patches) {
620
+ if (patch === void 0 || patch === null) continue;
621
+ if (!isRecord(patch) || !("payload" in patch)) throw new Error("Invalid headless provider payload patch");
622
+ payload = patch.payload;
623
+ }
624
+ return { payload };
625
+ },
626
+ beforeCompaction: async (event) => {
627
+ if (!headlessReady || !headlessHost) throw new Error("Headless capabilities are not installed.");
628
+ const patches = await headlessHost.dispatchHook("session_before_compact", {
629
+ reason: event.reason,
630
+ preparation: event.preparation,
631
+ ...event.customInstructions === void 0 ? {} : {
632
+ instructions: event.customInstructions,
633
+ customInstructions: event.customInstructions
634
+ }
635
+ });
636
+ try {
637
+ for (const patch of patches) {
638
+ if (patch === void 0 || patch === null) continue;
639
+ if (!isRecord(patch)) throw new Error("Invalid headless compaction patch");
640
+ if (patch.cancel !== void 0 && typeof patch.cancel !== "boolean") throw new Error("Invalid headless compaction cancellation");
641
+ if (patch.decline !== void 0 && typeof patch.decline !== "boolean") throw new Error("Invalid headless compaction decline");
642
+ const decline = patch.cancel === true || patch.decline === true;
643
+ if (decline && patch.compaction !== void 0) throw new Error("Conflicting headless compaction patch");
644
+ if (decline) return { decline: true };
645
+ if (patch.compaction !== void 0) {
646
+ if (!isCompactResult(patch.compaction)) throw new Error("Invalid headless compaction result");
647
+ return { compaction: patch.compaction };
648
+ }
649
+ }
650
+ } catch (error) {
651
+ options.onNotice?.(`Headless compaction hook rejected: ${error instanceof Error ? error.message : String(error)}`);
652
+ return { decline: true };
653
+ }
654
+ return piHost?.beforeCompaction(event);
655
+ },
656
+ systemPrompt: async () => {
657
+ let stage = "resources";
658
+ try {
659
+ if (!headlessHost) throw new Error("Headless capabilities are not installed.");
660
+ await headlessHost.settled();
661
+ let prompt = composeSystemPrompt(await headlessHost.readResources());
662
+ stage = "before_agent_start hooks";
663
+ const patches = await headlessHost.dispatchHook("before_agent_start", { systemPrompt: prompt });
664
+ for (const patch of patches) if (patch && typeof patch === "object" && "systemPrompt" in patch && typeof patch.systemPrompt === "string") prompt = patch.systemPrompt;
665
+ promptPreparationFailed = false;
666
+ promptPreparationError = void 0;
667
+ if (prompt !== builtSystemPrompt) {
668
+ builtSystemPrompt = prompt;
669
+ try {
670
+ await publishComposition();
671
+ } catch {}
672
+ }
673
+ return prompt;
674
+ } catch (error) {
675
+ promptPreparationFailed = true;
676
+ promptPreparationError = error;
677
+ observe(Promise.resolve().then(() => options.telemetry?.recordError(PROMPT_PREPARATION_FAILED_EVENT, error, {
678
+ session_id: options.sessionId,
679
+ stage
680
+ }, { includeException: true })));
681
+ return "";
682
+ }
683
+ },
684
+ listCommands: () => {
685
+ if (!headlessReady || !headlessHost) throw new Error("Headless capabilities are not installed.");
686
+ return headlessHost.listCommands();
687
+ },
688
+ dispatchCommand: async (text) => {
689
+ if (!headlessReady || !headlessHost) throw new Error("Headless capabilities are not installed.");
690
+ const match = /^\/(\S+)(?:\s+([\s\S]*))?$/.exec(text);
691
+ if (!match) {
692
+ await headlessHost.settled();
693
+ headlessHost.assertActive();
694
+ return false;
695
+ }
696
+ const name = match[1];
697
+ const args = match[2] ?? "";
698
+ if (!headlessHost.listCommands().some((entry) => entry.name === name)) {
699
+ headlessHost.assertActive();
700
+ return false;
701
+ }
702
+ await headlessHost.dispatchCommand(name, args);
703
+ return true;
704
+ },
705
+ guardModelRequest: () => {
706
+ if (promptPreparationFailed) throw new Error(`Headless capability preparation is not ready: ${harnessErrorMessage(promptPreparationError)}`, { cause: promptPreparationError });
707
+ if (!headlessReady || !headlessHost?.status.ready) throw new Error("Headless capability preparation is not ready.");
708
+ }
709
+ });
710
+ const opened = await (async () => {
711
+ await runtime.session.commit(async (tx) => {
712
+ const metadata = await tx.doc(SessionMetadataDoc);
713
+ metadata.workspaceRoot = options.repoRoot;
714
+ metadata.execution = JSON.stringify({
715
+ cwd: options.cwd,
716
+ repoRoot: options.repoRoot,
717
+ workspaceId: options.workspaceId,
718
+ groupingRoot: options.groupingRoot ?? options.repoRoot,
719
+ parentSessionId: options.parentSessionId,
720
+ sessionProvenance: options.sessionProvenance
721
+ });
722
+ }, BACKGROUND_CONTEXT);
723
+ const agent = await runtime.lane.agent(BACKGROUND_CONTEXT);
724
+ return {
725
+ model: agent.model ? modelRuntime.getModel(agent.model.provider, agent.model.modelId) : void 0,
726
+ entries: (await runtime.readEntries()).entries.filter((entry) => entry.type === "custom" && entry.customType === "doom-context").slice(-1)
727
+ };
728
+ })().catch(async (error) => {
729
+ await runtime.dispose().catch((disposeError) => options.onNotice?.(`Session runtime failed to close: ${String(disposeError)}`));
730
+ throw error;
731
+ });
732
+ let currentModel = opened.model;
733
+ let publishedAgentModel;
734
+ const sessionContext = options.workspaceId === void 0 ? void 0 : Object.freeze({
735
+ sessionId: runtime.sessionId,
736
+ workspaceId: options.workspaceId,
737
+ workspaceRoot: options.groupingRoot ?? options.repoRoot,
738
+ checkoutRoot: options.repoRoot,
739
+ cwd: options.cwd,
740
+ ...options.parentSessionId === void 0 ? {} : { parentSessionId: options.parentSessionId },
741
+ ...options.sessionProvenance === void 0 ? {} : { provenance: options.sessionProvenance }
742
+ });
743
+ const entries = opened.entries;
744
+ const listeners = /* @__PURE__ */ new Set();
745
+ const selectionListeners = /* @__PURE__ */ new Set();
746
+ let latestSelection = options.selection;
747
+ const initialSelection = restoreHeadlessSelection(entries, options.selection);
748
+ let headlessHost;
749
+ let mcpServiceRoot;
750
+ let mcpLifecycle = new AbortController();
751
+ let piHost;
752
+ let client;
753
+ let disposed = false;
754
+ let disposePromise;
755
+ let publishComposition = async () => {
756
+ throw new Error("Direct headless composition publisher is not installed.");
757
+ };
758
+ const readMcpContext = (signal) => {
759
+ signal.throwIfAborted();
760
+ const host = headlessHost;
761
+ if (!host || disposed) throw new Error("Session context is unavailable.");
762
+ const status = host.status;
763
+ if (!status.ready || status.requestedRevision !== status.appliedRevision) throw new Error("Session context is unavailable.");
764
+ const root = fs.realpathSync(options.repoRoot);
765
+ const globalInstruction = path.join(fs.realpathSync(agentDir), "AGENTS.md");
766
+ const instructions = projectContextFiles.flatMap(({ path: filePath, content }) => {
767
+ const relative = path.relative(options.repoRoot, filePath);
768
+ if (relative === "" || relative.startsWith("..") || path.isAbsolute(relative)) return [];
769
+ try {
770
+ const canonicalPath = fs.realpathSync(filePath);
771
+ if (canonicalPath === globalInstruction) return [];
772
+ const canonicalRelative = path.relative(root, canonicalPath);
773
+ if (canonicalRelative === "" || canonicalRelative.startsWith("..") || path.isAbsolute(canonicalRelative)) return [];
774
+ } catch {
775
+ return [];
776
+ }
777
+ return [{
778
+ path: relative.replaceAll(path.sep, "/"),
779
+ content
780
+ }];
781
+ });
782
+ const selection = host.context.selection;
783
+ const persona = host.appliedResources.find(({ name, kind }) => name === "po/profile-config" && kind === "context")?.text;
784
+ signal.throwIfAborted();
785
+ const current = host.status;
786
+ if (!current.ready || current.appliedRevision !== status.appliedRevision || current.requestedRevision !== current.appliedRevision) throw new Error("Session context changed. Call load_context again.");
787
+ return {
788
+ session: {
789
+ id: runtime.sessionId,
790
+ revision: status.appliedRevision
791
+ },
792
+ repository: {
793
+ root: options.repoRoot,
794
+ cwd: options.cwd
795
+ },
796
+ selection: {
797
+ profile: selection.profile ?? null,
798
+ domains: [...selection.domains],
799
+ majorMode: selection.majorMode,
800
+ activeLayers: [...selection.activeLayers],
801
+ minorModes: [...selection.state?.["minor-mode"] ?? []]
802
+ },
803
+ instructions,
804
+ persona: persona ?? null
805
+ };
806
+ };
807
+ const childSessionProvider = createHeadlessChildSessionServiceProvider({
808
+ parentSessionId: runtime.sessionId,
809
+ cwd: options.cwd,
810
+ sessionsRoot: parsed.sessionDir ?? path.join(agentDir, "server", "sessions"),
811
+ models: modelRuntime,
812
+ defaultModel: () => currentModel,
813
+ parentFastMode: async () => {
814
+ const state = await runtime.readState();
815
+ if (typeof state.fastMode !== "boolean") throw new Error("Parent Fast mode must be a boolean.");
816
+ return state.fastMode;
817
+ },
818
+ subscribeMcpTool: (listener) => {
819
+ return mcpServiceRoot?.on("internal/service", (name) => {
820
+ if (name === "doom/child-session-mcp-tool") listener();
821
+ }) ?? (() => void 0);
822
+ },
823
+ hooks: () => {
824
+ if (disposed || !headlessReady || !headlessHost?.status.ready) throw new Error("Headless capabilities are not installed.");
825
+ return mcpServiceRoot?.get(DOOM_CHILD_SESSION_HOOKS_SERVICE);
826
+ },
827
+ mcpTool: () => {
828
+ if (disposed || !headlessReady || !headlessHost?.status.ready) return void 0;
829
+ return mcpServiceRoot?.get(DOOM_CHILD_SESSION_MCP_TOOL_SERVICE);
830
+ }
831
+ });
832
+ const completeAuxiliaryModel = async (reference, request) => {
833
+ if (disposed || !headlessReady || promptPreparationFailed || !headlessHost?.status.ready) throw new Error("Headless capability preparation is not ready.");
834
+ request.signal?.throwIfAborted();
835
+ const separator = reference.indexOf("/");
836
+ const model = separator > 0 ? modelRuntime.getModel(reference.slice(0, separator), reference.slice(separator + 1)) : void 0;
837
+ if (!model || !modelRuntime.hasConfiguredAuth(model.provider)) throw new Error(`Model is not configured: ${reference}`);
838
+ if (!runtime.completeModel) throw new Error("The runtime does not support auxiliary model requests.");
839
+ const response = await runtime.completeModel(model, {
840
+ systemPrompt: request.systemPrompt,
841
+ messages: [{
842
+ role: "user",
843
+ content: request.input,
844
+ timestamp: Date.now()
845
+ }],
846
+ ...request.tools ? { tools: [...request.tools] } : {}
847
+ }, {
848
+ signal: request.signal,
849
+ maxTokens: request.maxTokens,
850
+ cacheRetention: request.cacheRetention,
851
+ reasoningEffort: "none",
852
+ maxRetries: 0
853
+ });
854
+ request.signal?.throwIfAborted();
855
+ if (response.stopReason === "error" || response.stopReason === "aborted") throw new Error(response.errorMessage ?? `Model stopped: ${response.stopReason}`);
856
+ return response;
857
+ };
858
+ const informationalMessage = (message) => {
859
+ if (!message || typeof message.type !== "string" || !message.type.trim() || typeof message.text !== "string") throw new TypeError("Informational messages require a non-empty type and string text.");
860
+ if (message.display !== void 0 && typeof message.display !== "boolean") throw new TypeError("Informational message display must be a boolean.");
861
+ const details = message.details === void 0 ? void 0 : boundedJsonCopy(message.details);
862
+ return {
863
+ role: "custom",
864
+ customType: message.type,
865
+ content: message.text,
866
+ display: message.display ?? true,
867
+ ...details === void 0 ? {} : { details },
868
+ timestamp: Date.now()
869
+ };
870
+ };
871
+ const executionContext = (selection) => ({
872
+ cwd: options.cwd,
873
+ repoRoot: options.repoRoot,
874
+ sessionId: runtime.sessionId,
875
+ ...sessionContext === void 0 ? {} : { sessionContext },
876
+ environment: options.environment,
877
+ client: client.client,
878
+ model: currentModel === void 0 ? void 0 : modelMetadata(currentModel),
879
+ getModel(provider, id) {
880
+ const model = modelRuntime.getModel(provider, id);
881
+ return model ? modelMetadata(model) : void 0;
882
+ },
883
+ getAvailableModels() {
884
+ if (disposed) throw new Error("The session is closed.");
885
+ return modelRuntime.getAvailableSnapshot().filter((model) => modelRuntime.hasConfiguredAuth(model.provider)).map(({ provider, id }) => ({
886
+ provider,
887
+ id
888
+ }));
889
+ },
890
+ selection,
891
+ textCompletion: {
892
+ available(reference) {
893
+ const separator = reference.indexOf("/");
894
+ return separator > 0 && !!modelRuntime.getModel(reference.slice(0, separator), reference.slice(separator + 1)) && modelRuntime.hasConfiguredAuth(reference.slice(0, separator));
895
+ },
896
+ async summarize(reference, request) {
897
+ if (disposed || !headlessReady || promptPreparationFailed || !headlessHost?.status.ready) throw new Error("Headless capability preparation is not ready.");
898
+ request.signal?.throwIfAborted();
899
+ const separator = reference.indexOf("/");
900
+ const model = separator > 0 ? modelRuntime.getModel(reference.slice(0, separator), reference.slice(separator + 1)) : void 0;
901
+ if (!model || !modelRuntime.hasConfiguredAuth(model.provider)) throw new Error(`Model is not configured: ${reference}`);
902
+ if (!runtime.completeModel) throw new Error("The runtime does not support auxiliary model requests.");
903
+ const messages = boundedJsonCopy(request.messages);
904
+ if (!Array.isArray(messages) || !messages.every(isSummaryMessage)) throw new TypeError("Summary requests require supported native messages.");
905
+ if (typeof request.instructions !== "string" || request.previousSummary !== void 0 && typeof request.previousSummary !== "string") throw new TypeError("Summary instructions and previous summary must be strings.");
906
+ if (request.thinkingLevel !== void 0 && ![
907
+ "off",
908
+ "minimal",
909
+ "low",
910
+ "medium",
911
+ "high",
912
+ "xhigh",
913
+ "max"
914
+ ].includes(request.thinkingLevel)) throw new TypeError("Unsupported summary thinking level.");
915
+ let summaryFailure;
916
+ const summary = await generateSummary(messages, model, DEFAULT_COMPACTION_SETTINGS.reserveTokens, void 0, void 0, request.signal, request.instructions, request.previousSummary, request.thinkingLevel, (_model, context, options) => {
917
+ const stream = createAssistantMessageEventStream();
918
+ runtime.completeModel(model, context, {
919
+ signal: options?.signal,
920
+ maxTokens: options?.maxTokens,
921
+ cacheRetention: "none",
922
+ reasoningEffort: !model.reasoning || request.thinkingLevel === "off" ? "none" : request.thinkingLevel,
923
+ maxRetries: 0
924
+ }).then((response) => {
925
+ if (response.stopReason === "aborted") summaryFailure = new Error(response.errorMessage ?? "Summary was aborted.");
926
+ stream.end(response);
927
+ }, (error) => {
928
+ summaryFailure = error instanceof Error ? error : new Error(String(error));
929
+ stream.end({
930
+ role: "assistant",
931
+ api: model.api,
932
+ provider: model.provider,
933
+ model: model.id,
934
+ content: [],
935
+ stopReason: request.signal?.aborted ? "aborted" : "error",
936
+ errorMessage: error instanceof Error ? error.message : String(error),
937
+ timestamp: Date.now(),
938
+ usage: {
939
+ input: 0,
940
+ output: 0,
941
+ cacheRead: 0,
942
+ cacheWrite: 0,
943
+ totalTokens: 0,
944
+ cost: {
945
+ input: 0,
946
+ output: 0,
947
+ cacheRead: 0,
948
+ cacheWrite: 0,
949
+ total: 0
950
+ }
951
+ }
952
+ });
953
+ });
954
+ return stream;
955
+ });
956
+ request.signal?.throwIfAborted();
957
+ if (summaryFailure) throw summaryFailure;
958
+ if (!summary.trim()) throw new Error("Summarization returned an empty checkpoint.");
959
+ return summary;
960
+ },
961
+ async complete(reference, request) {
962
+ return (await completeAuxiliaryModel(reference, {
963
+ ...request,
964
+ tools: void 0
965
+ })).content.filter((part) => part.type === "text").map((part) => part.text).join("").trim();
966
+ }
967
+ },
968
+ toolCompletion: { async complete(reference, request) {
969
+ const response = await completeAuxiliaryModel(reference, request);
970
+ if (response.stopReason === "length") throw new Error("Auxiliary tool request exceeded its output limit.");
971
+ return {
972
+ toolCalls: response.content.filter((part) => part.type === "toolCall"),
973
+ usage: response.usage
974
+ };
975
+ } },
976
+ session: {
977
+ setFastMode: (enabled) => runtime.setFastMode(enabled),
978
+ async readModelSettings() {
979
+ const selected = (await runtime.lane.agent(BACKGROUND_CONTEXT)).model;
980
+ const model = selected ? modelRuntime.getModel(selected.provider, selected.modelId) : void 0;
981
+ const thinkingLevel = (await runtime.lane.agent(BACKGROUND_CONTEXT)).thinkingLevel;
982
+ return {
983
+ ...model ? { model: modelIdentity(model) } : {},
984
+ thinkingLevel
985
+ };
986
+ },
987
+ async setModelSettings(settings) {
988
+ if (settings.model) await runtime.setModel(settings.model);
989
+ if (settings.thinkingLevel !== void 0) await runtime.setThinkingLevel(settings.thinkingLevel);
990
+ },
991
+ async forkSource() {
992
+ const sessionFile = runtime.sessionFile;
993
+ if (typeof sessionFile !== "string") throw new Error("The parent session has no persisted journal.");
994
+ const { leafId } = await runtime.readEntries();
995
+ return {
996
+ kind: "v4-fork",
997
+ sessionFile,
998
+ branch: runtime.laneName,
999
+ ...leafId === null ? {} : { entryId: leafId }
1000
+ };
1001
+ },
1002
+ entries: async (query) => {
1003
+ let entries = (await runtime.readEntries()).entries.filter((entry) => (!query?.type || entry.type === query.type) && (!query?.customType || entry.type === "custom" && entry.customType === query.customType));
1004
+ if (query?.limit !== void 0) entries = entries.toReversed().slice(0, query.limit);
1005
+ return entries;
1006
+ },
1007
+ async appendMessage(message) {
1008
+ return runtime.appendMessage(informationalMessage(message));
1009
+ },
1010
+ async admitMessage(message, delivery = "followUp", requestId) {
1011
+ try {
1012
+ if (disposed || !headlessReady || promptPreparationFailed || !headlessHost?.status.ready) throw new Error("Headless capability preparation is not ready.");
1013
+ if (delivery !== "steer" && delivery !== "followUp") throw new TypeError("Custom message delivery must be steer or followUp.");
1014
+ if (requestId !== void 0 && (typeof requestId !== "string" || !requestId.trim())) throw new TypeError("Custom message requestId must be a non-empty string.");
1015
+ (await runtime.submitInternalMessage(informationalMessage(message), delivery, requestId)).settled.catch((error) => client.client.notify({
1016
+ body: error instanceof Error ? error.message : String(error),
1017
+ level: "error"
1018
+ }));
1019
+ } catch (error) {
1020
+ throw new DoomHeadlessPromptAdmissionError(error);
1021
+ }
1022
+ },
1023
+ registerCheckpointBoundary(callback) {
1024
+ if (!runtime.registerCheckpointBoundary) throw new Error("Native checkpoint boundaries are unavailable.");
1025
+ const registration = runtime.registerCheckpointBoundary(async (boundary) => {
1026
+ if (disposed || !headlessReady || !headlessHost?.status.ready) return;
1027
+ await callback({
1028
+ signal: boundary.signal,
1029
+ appendMessage: (message) => boundary.appendMessage(informationalMessage(message))
1030
+ });
1031
+ });
1032
+ return {
1033
+ appendMessage: (message) => disposed || !headlessReady || !headlessHost?.status.ready ? Promise.resolve(void 0) : registration.appendMessage(informationalMessage(message)),
1034
+ dispose: () => registration.dispose()
1035
+ };
1036
+ },
1037
+ async contextMessages() {
1038
+ const assertReadable = () => {
1039
+ if (disposed || !headlessReady || promptPreparationFailed || !headlessHost?.status.ready) throw new Error("Headless capability preparation is not ready.");
1040
+ };
1041
+ assertReadable();
1042
+ const messages = boundedJsonCopy(await runtime.getContextMessages());
1043
+ assertReadable();
1044
+ return messages;
1045
+ },
1046
+ async contextUsage() {
1047
+ const usage = (await runtime.getSessionStats()).contextUsage;
1048
+ return usage ? {
1049
+ tokens: usage.tokens,
1050
+ contextWindow: usage.contextWindow
1051
+ } : void 0;
1052
+ },
1053
+ setLabel: (entryId, label) => runtime.setLabel(entryId, label),
1054
+ async appendCustomEntry(type, data) {
1055
+ await runtime.appendCustomEntry(type, data);
1056
+ },
1057
+ async prompt(text, delivery) {
1058
+ await (await runtime.submitPrompt(text, void 0, delivery === "steer" || delivery === "followUp" ? delivery : void 0)).settled;
1059
+ },
1060
+ async admitPrompt(text, delivery, origin, requestId) {
1061
+ try {
1062
+ if (origin === "operator" && delivery === "followUp") return await runtime.followUp(text);
1063
+ (delivery === "interrupt" ? await runtime.submitUserPrompt(text) : origin === "operator" ? await runtime.submitPrompt(text, void 0, delivery === "steer" ? "steer" : void 0) : await runtime.submitInternalMessage(text, delivery === "steer" ? "steer" : "followUp", requestId)).settled.catch((error) => client.client.notify({
1064
+ body: error instanceof Error ? error.message : String(error),
1065
+ level: "error"
1066
+ }));
1067
+ } catch (error) {
1068
+ throw new DoomHeadlessPromptAdmissionError(error);
1069
+ }
1070
+ },
1071
+ abort: () => runtime.abort(),
1072
+ compact: (instructions) => runtime.compact(instructions),
1073
+ async activity() {
1074
+ const state = await runtime.readState();
1075
+ return {
1076
+ hasPendingMessages: Number(state.pendingMessageCount) > 0,
1077
+ isIdle: (!state.isStreaming || state.operationId === "settling") && !state.isCompacting
1078
+ };
1079
+ },
1080
+ setName: (name) => runtime.setName(name)
1081
+ },
1082
+ shutdown: () => stop()
1083
+ });
1084
+ client = createHeadlessClient({
1085
+ appendCustomEntry: async (type, data) => {
1086
+ await runtime.appendCustomEntry(type, data);
1087
+ },
1088
+ emitFrame: (frame) => emitTo(listeners, frame)
1089
+ });
1090
+ const unsubscribePresentation = runtime.onPresentationFrame((frame) => emitTo(listeners, frame));
1091
+ let logicalRunActive = false;
1092
+ let runMessages = [];
1093
+ let requiredServerPackages = [];
1094
+ let installedServerPackages = [];
1095
+ const unsubscribeEvents = runtime.onEvent(async (event, _context) => {
1096
+ if ((event.type === "run_start" || event.type === "run_resume") && !logicalRunActive) {
1097
+ logicalRunActive = true;
1098
+ runMessages = [];
1099
+ }
1100
+ if (event.type === "message_end" && event.runId !== void 0) runMessages.push(event.message);
1101
+ if (event.type === "run_end" && !event.successorActive) {
1102
+ const messages = runMessages;
1103
+ runMessages = [];
1104
+ const ended = logicalRunActive;
1105
+ logicalRunActive = false;
1106
+ if (ended && headlessHost?.status.ready) await headlessHost.dispatchHook("agent_end", { messages });
1107
+ }
1108
+ if (event.type === "config_update" && event.property === "model") {
1109
+ const selected = (await runtime.lane.agent(BACKGROUND_CONTEXT)).model;
1110
+ currentModel = selected ? modelRuntime.getModel(selected.provider, selected.modelId) : void 0;
1111
+ if (headlessHost !== void 0 && currentModel !== void 0 && headlessHost.status.ready) {
1112
+ await headlessHost.dispatchHook("model_select", { model: currentModel });
1113
+ const projection = {
1114
+ provider: currentModel.provider,
1115
+ id: currentModel.id
1116
+ };
1117
+ const serialized = JSON.stringify(projection);
1118
+ if (serialized !== publishedAgentModel) {
1119
+ publishedAgentModel = serialized;
1120
+ await runtime.appendCustomEntry(DOOM_AGENT_MODEL_ENTRY_TYPE, projection);
1121
+ }
1122
+ }
1123
+ }
1124
+ const hook = event.type === "run_end" && event.successorActive ? void 0 : eventHook(event.type);
1125
+ if (headlessHost !== void 0 && hook !== void 0 && headlessHost.status.ready) await headlessHost.dispatchHook(hook, event.type === "navigation_start" ? {
1126
+ ...event,
1127
+ status: "started"
1128
+ } : event);
1129
+ });
1130
+ let appliedFacetTools = [];
1131
+ let appliedSessionTools = /* @__PURE__ */ new Map();
1132
+ let appliedSkills = /* @__PURE__ */ new Map();
1133
+ let surfaceRevision = 0;
1134
+ let toolSurfaceReady = false;
1135
+ let toolReapplyQueued = false;
1136
+ let mcpSurfaceRevision = 0;
1137
+ let mcpSurfaceReady = false;
1138
+ let appliedMcpTools = /* @__PURE__ */ new Map();
1139
+ let appliedMcpSkills = /* @__PURE__ */ new Map();
1140
+ let appliedMcpUiResources = /* @__PURE__ */ new Map();
1141
+ let mcpRefreshQueued = false;
1142
+ const scheduleMcpRefresh = () => {
1143
+ if (mcpRefreshQueued || disposed || !headlessReady) return;
1144
+ mcpRefreshQueued = true;
1145
+ queueMicrotask(() => {
1146
+ mcpRefreshQueued = false;
1147
+ if (disposed || !headlessReady || !headlessHost?.status.ready) return;
1148
+ prepareMcpSurface().catch((error) => options.onNotice?.(`MCP tool refresh failed: ${error instanceof Error ? error.message : String(error)}`));
1149
+ });
1150
+ };
1151
+ const prepareMcpSurface = async () => {
1152
+ if (!headlessHost?.status.ready) throw new Error("Headless capabilities are not installed.");
1153
+ if (mcpServiceRoot === void 0) throw new Error("MCP session services are not installed.");
1154
+ mcpSurfaceReady = false;
1155
+ mcpLifecycle.abort();
1156
+ const lifecycle = new AbortController();
1157
+ mcpLifecycle = lifecycle;
1158
+ const pluginContext = {
1159
+ execution: headlessHost.context,
1160
+ services: { get: (name) => mcpServiceRoot?.get(name) ?? piHost?.getService(name) },
1161
+ selection: {
1162
+ read: () => headlessHost.context.selection,
1163
+ change: (change) => headlessHost.changeSelection(change)
1164
+ },
1165
+ loadContext: () => readMcpContext(lifecycle.signal),
1166
+ signal: lifecycle.signal,
1167
+ refresh: scheduleMcpRefresh
1168
+ };
1169
+ const nextTools = /* @__PURE__ */ new Map();
1170
+ const nextSkills = /* @__PURE__ */ new Map();
1171
+ const nextUiResources = /* @__PURE__ */ new Map();
1172
+ for (const loaded of options.mcpPlugins ?? []) {
1173
+ const selection = headlessHost.context.selection;
1174
+ if (!loaded.declaration.owners.some((owner) => owner.majorMode === selection.majorMode && (owner.layer === "default" || selection.activeLayers.includes(owner.layer)))) continue;
1175
+ const scope = typeof loaded.plugin.session === "function" ? await loaded.plugin.session(pluginContext) : loaded.plugin.session;
1176
+ lifecycle.signal.throwIfAborted();
1177
+ const resources = scope.uiResources ?? [];
1178
+ for (const resource of resources) {
1179
+ const uri = new URL(resource.uri);
1180
+ if (uri.protocol !== "ui:" || !uri.hostname || uri.username || uri.password || uri.search || uri.hash || uri.href !== resource.uri || resource.mimeType !== "text/html;profile=mcp-app") throw new Error(`Invalid MCP UI resource '${resource.uri}'`);
1181
+ if (nextUiResources.has(resource.uri) && nextUiResources.get(resource.uri).resource !== resource) throw new Error(`Duplicate MCP UI resource '${resource.uri}'`);
1182
+ const descriptor = {
1183
+ uri: resource.uri,
1184
+ name: resource.name,
1185
+ mimeType: resource.mimeType,
1186
+ ...resource.description === void 0 ? {} : { description: resource.description },
1187
+ ...resource._meta === void 0 ? {} : { _meta: resource._meta }
1188
+ };
1189
+ nextUiResources.set(resource.uri, {
1190
+ descriptor,
1191
+ resource
1192
+ });
1193
+ }
1194
+ for (const tool of scope.tools ?? []) {
1195
+ if (nextTools.has(tool.name)) throw new Error(`Duplicate MCP tool '${tool.name}'`);
1196
+ const resourceUri = tool._meta?.ui?.resourceUri;
1197
+ if (resourceUri !== void 0 && !resources.some((resource) => resource.uri === resourceUri)) throw new Error(`MCP tool '${tool.name}' references a UI resource not owned by its plugin`);
1198
+ if (!headlessHost.allowsTool(tool.name)) continue;
1199
+ nextTools.set(tool.name, {
1200
+ descriptor: {
1201
+ name: tool.name,
1202
+ label: tool.label ?? tool.name,
1203
+ description: tool.description,
1204
+ parameters: tool.parameters,
1205
+ ...tool.annotations === void 0 ? {} : { annotations: tool.annotations },
1206
+ ...tool.outputSchema === void 0 ? {} : { outputSchema: tool.outputSchema },
1207
+ ...tool._meta === void 0 ? {} : { _meta: tool._meta }
1208
+ },
1209
+ execute: (toolCallId, parameters, signal, onUpdate, execution) => tool.execute(toolCallId, parameters, signal, onUpdate, execution ?? headlessHost.context)
1210
+ });
1211
+ }
1212
+ for (const skill of scope.skills ?? []) {
1213
+ if ([...nextSkills.values()].some((candidate) => candidate.descriptor.name === skill.name)) throw new Error(`Duplicate MCP skill '${skill.name}'`);
1214
+ const uri = `po://session/${encodeURIComponent(runtime.sessionId)}/mcp/skills/${encodeURIComponent(skill.name)}`;
1215
+ nextSkills.set(uri, {
1216
+ descriptor: {
1217
+ name: skill.name,
1218
+ description: skill.description,
1219
+ uri
1220
+ },
1221
+ skill
1222
+ });
1223
+ }
1224
+ }
1225
+ appliedMcpTools = nextTools;
1226
+ appliedMcpSkills = nextSkills;
1227
+ appliedMcpUiResources = nextUiResources;
1228
+ mcpSurfaceRevision += 1;
1229
+ mcpSurfaceReady = true;
1230
+ };
1231
+ const applyToolSurface = async (tools) => {
1232
+ toolSurfaceReady = false;
1233
+ const modelTools = tools.filter(isDoomHeadlessToolModelVisible);
1234
+ const facetTools = modelTools.map((tool) => toolAdapter(tool.name === "load_skill" ? {
1235
+ ...tool,
1236
+ description: describeLoadSkillTool(tool.description, headlessHost?.appliedResources ?? [])
1237
+ } : tool, () => headlessHost.context, reportedToolErrors));
1238
+ const facetNames = headlessHost?.declaredToolNames ?? new Set(facetTools.map((tool) => tool.name));
1239
+ const piTools = (piHost?.tools ?? []).filter((tool) => !facetNames.has(tool.name) && headlessHost?.allowsTool(tool.name) !== false).map((tool) => ({
1240
+ ...tool,
1241
+ async execute(...args) {
1242
+ headlessHost.assertActive();
1243
+ if (!toolSurfaceReady || !headlessHost.allowsTool(tool.name)) throw new Error(`Tool '${tool.name}' is no longer active`);
1244
+ return tool.execute(...args);
1245
+ }
1246
+ }));
1247
+ const piNames = new Set(piTools.map((tool) => tool.name));
1248
+ const nextToolGuidance = [...(piHost?.toolGuidance ?? []).filter((entry) => piNames.has(entry.name)), ...modelTools.map((tool) => ({
1249
+ name: tool.name,
1250
+ ...tool.promptSnippet === void 0 ? {} : { promptSnippet: tool.promptSnippet },
1251
+ ...tool.promptGuidelines === void 0 ? {} : { promptGuidelines: tool.promptGuidelines }
1252
+ }))];
1253
+ await runtime.replaceTools([...piTools, ...facetTools]);
1254
+ const next = /* @__PURE__ */ new Map();
1255
+ for (const tool of piTools) next.set(tool.name, {
1256
+ descriptor: {
1257
+ name: tool.name,
1258
+ label: tool.label ?? tool.name,
1259
+ description: tool.description,
1260
+ parameters: tool.parameters
1261
+ },
1262
+ execute: (toolCallId, parameters, signal, onUpdate) => piHost.executeTool(tool.name, toolCallId, parameters, signal, onUpdate)
1263
+ });
1264
+ for (const tool of tools) next.set(tool.name, {
1265
+ descriptor: {
1266
+ name: tool.name,
1267
+ label: tool.label ?? tool.name,
1268
+ description: tool.description,
1269
+ parameters: tool.parameters,
1270
+ ...tool.annotations === void 0 ? {} : { annotations: tool.annotations },
1271
+ ...tool.outputSchema === void 0 ? {} : { outputSchema: tool.outputSchema },
1272
+ ...tool._meta === void 0 ? {} : { _meta: tool._meta }
1273
+ },
1274
+ execute: (toolCallId, parameters, signal, onUpdate) => tool.execute(toolCallId, parameters, signal, onUpdate, headlessHost.context)
1275
+ });
1276
+ toolGuidance = nextToolGuidance;
1277
+ appliedSessionTools = next;
1278
+ surfaceRevision += 1;
1279
+ toolSurfaceReady = true;
1280
+ };
1281
+ /**
1282
+ * Rebuilds the merged tool surface after a Pi extension narrowed its own tools.
1283
+ *
1284
+ * Deferred because the tool surface arbiter calls `setActiveTools` synchronously from inside
1285
+ * `register`, and coalesced because several extensions register their restrictions in the same
1286
+ * tick. The facet set is unchanged, so this never re-enters the kernel.
1287
+ */
1288
+ let toolLine = Promise.resolve();
1289
+ const applyLatestTools = () => {
1290
+ toolLine = toolLine.catch(() => void 0).then(() => applyToolSurface(appliedFacetTools));
1291
+ return toolLine;
1292
+ };
1293
+ const scheduleToolReapply = () => {
1294
+ if (toolReapplyQueued) return;
1295
+ toolReapplyQueued = true;
1296
+ queueMicrotask(() => {
1297
+ toolReapplyQueued = false;
1298
+ if (disposed) return;
1299
+ applyLatestTools().catch((error) => options.onNotice?.(`Pi extension tool refresh failed: ${error instanceof Error ? error.message : String(error)}`));
1300
+ });
1301
+ };
1302
+ let admittedToolSurface;
1303
+ const prepareFacets = (root) => {
1304
+ mcpServiceRoot = root;
1305
+ root.plugin((context) => {
1306
+ context.provide(DOOM_CHILD_SESSION_SERVICE, childSessionProvider.get());
1307
+ context.effect(() => () => childSessionProvider.close(), "headless child session service lifetime");
1308
+ });
1309
+ if (headlessHost !== void 0) throw new Error("Direct headless facets were prepared more than once.");
1310
+ if (piPreload !== void 0) piHost = createPiExtensionHost({
1311
+ cwd: options.cwd,
1312
+ agentDir,
1313
+ models: modelRuntime,
1314
+ settings,
1315
+ runtime,
1316
+ preload: piPreload,
1317
+ getModel: () => currentModel,
1318
+ getThinkingLevel: () => resolved.thinkingLevel ?? "off",
1319
+ client: () => client?.client,
1320
+ onActiveToolsChanged: scheduleToolReapply,
1321
+ serverServices: {
1322
+ sessionId: options.sessionId,
1323
+ get: (name) => root.get(name)
1324
+ },
1325
+ ...options.onNotice === void 0 ? {} : { onNotice: options.onNotice }
1326
+ });
1327
+ headlessHost = new HeadlessHost(root, {
1328
+ candidates: options.candidates,
1329
+ toolSurface: () => admittedToolSurface,
1330
+ selection: initialSelection,
1331
+ selectionOverrides: [.../* @__PURE__ */ new Set([...options.selectionOverrides ?? [], ...[
1332
+ "majorMode",
1333
+ "domains",
1334
+ "profile"
1335
+ ].filter((axis) => JSON.stringify(initialSelection[axis]) !== JSON.stringify(options.selection[axis]))])],
1336
+ context: executionContext,
1337
+ resolveSelection: options.resolveSelection,
1338
+ validateSelection: (selection) => {
1339
+ for (const packageName of requiredServerPackages) if (!options.candidates.some((entry) => entry.packageName === packageName && entry.scopes.includes("session") && entry.owners.some((owner) => owner.majorMode === selection.majorMode && (owner.layer === "default" || selection.activeLayers.includes(owner.layer)))) || !installedServerPackages.includes(packageName)) throw new Error(`Required headless package '${packageName}' is unavailable. Run po sync, then reopen this session.`);
1340
+ },
1341
+ ...options.allowedTools === void 0 ? {} : { allowedTools: () => options.allowedTools },
1342
+ applyTools: async (tools) => {
1343
+ appliedFacetTools = tools;
1344
+ await applyLatestTools();
1345
+ },
1346
+ applyResources: async (next) => {
1347
+ const mapped = mapResources(next);
1348
+ const facetNames = new Set((mapped.harness.skills ?? []).map((skill) => skill.name));
1349
+ const piSkills = (piHost?.skills ?? []).filter((skill) => !facetNames.has(skill.name));
1350
+ const mergedSkills = [...piSkills, ...mapped.harness.skills ?? []];
1351
+ await runtime.replaceResources(piSkills.length === 0 ? mapped.harness : {
1352
+ ...mapped.harness,
1353
+ skills: mergedSkills
1354
+ });
1355
+ appliedSkills = new Map(mergedSkills.map((skill) => {
1356
+ const uri = `po://session/${encodeURIComponent(runtime.sessionId)}/skills/${encodeURIComponent(skill.name)}`;
1357
+ return [uri, {
1358
+ descriptor: {
1359
+ name: skill.name,
1360
+ description: skill.description,
1361
+ uri
1362
+ },
1363
+ content: skill.content
1364
+ }];
1365
+ }));
1366
+ surfaceRevision += 1;
1367
+ if (appliedFacetTools.some((tool) => tool.name === "load_skill")) await applyLatestTools();
1368
+ },
1369
+ onApplied: async (selection) => {
1370
+ options.publishSelectionStatus?.((source, text) => client.client.setStatus(source, text), selection);
1371
+ latestSelection = selection;
1372
+ for (const listener of selectionListeners) listener(selection);
1373
+ },
1374
+ onError: (error) => options.onNotice?.(`Headless selection failed: ${harnessErrorMessage(error)}`)
1375
+ });
1376
+ publishComposition = createHeadlessCompositionPublisher(runtime, headlessHost, options.environment, (selection) => options.contextGroups?.(root, selection) ?? [], readSystemPrompt);
1377
+ headlessHost.subscribeSelection(async (selection) => {
1378
+ if (!headlessReady || !headlessHost?.status.ready) return;
1379
+ try {
1380
+ await prepareMcpSurface();
1381
+ } catch (error) {
1382
+ if (!(error instanceof Error && error.name === "AbortError")) options.onNotice?.(`MCP tool refresh failed: ${error instanceof Error ? error.message : String(error)}`);
1383
+ }
1384
+ await publishComposition(selection);
1385
+ });
1386
+ };
1387
+ const activateFacets = async (installed) => {
1388
+ if (headlessHost === void 0) throw new Error("Direct headless host was not prepared.");
1389
+ const host = headlessHost;
1390
+ const assertLive = () => {
1391
+ if (disposed) throw new Error("The session was closed while it was starting.");
1392
+ };
1393
+ requiredServerPackages = await options.requiredServerPackages?.() ?? [];
1394
+ installedServerPackages = installed.installedPackages;
1395
+ assertLive();
1396
+ host.setAvailableSources(installed.installedPackages);
1397
+ if (piHost !== void 0) try {
1398
+ await piHost.load();
1399
+ } catch (error) {
1400
+ options.onNotice?.(`Pi extensions failed to load: ${error instanceof Error ? error.message : String(error)}`);
1401
+ }
1402
+ assertLive();
1403
+ await host.select(initialSelection);
1404
+ assertLive();
1405
+ if (!host.status.ready) throw new Error(`Session capabilities failed to start: ${host.status.error ?? "selection is not ready"}`);
1406
+ headlessReady = true;
1407
+ await prepareMcpSurface();
1408
+ assertLive();
1409
+ await runtime.recover();
1410
+ assertLive();
1411
+ await host.dispatchHook("session_start", {});
1412
+ await publishComposition();
1413
+ (await runtime.admitResume()).settled.catch((error) => options.onNotice?.(`Session resume failed: ${harnessErrorMessage(error)}`));
1414
+ assertLive();
1415
+ };
1416
+ const dispose = () => {
1417
+ disposePromise ??= (async () => {
1418
+ if (disposed) return;
1419
+ const wasReady = headlessReady;
1420
+ disposed = true;
1421
+ headlessReady = false;
1422
+ mcpSurfaceReady = false;
1423
+ mcpLifecycle.abort();
1424
+ const failures = [];
1425
+ try {
1426
+ await runtime.interrupt();
1427
+ } catch (error) {
1428
+ failures.push(error);
1429
+ }
1430
+ try {
1431
+ if (wasReady && headlessHost?.status.ready) await headlessHost.dispatchHook("session_shutdown", {});
1432
+ } catch (error) {
1433
+ failures.push(error);
1434
+ }
1435
+ try {
1436
+ await runtime.dispose();
1437
+ } catch (error) {
1438
+ failures.push(error);
1439
+ }
1440
+ try {
1441
+ await piHost?.shutdown();
1442
+ } catch (error) {
1443
+ failures.push(error);
1444
+ }
1445
+ try {
1446
+ await headlessHost?.close();
1447
+ } catch (error) {
1448
+ failures.push(error);
1449
+ }
1450
+ client?.dispose();
1451
+ unsubscribePresentation();
1452
+ unsubscribeEvents();
1453
+ try {
1454
+ await childSessionProvider.close();
1455
+ } catch (error) {
1456
+ failures.push(error);
1457
+ }
1458
+ releaseEnvironment();
1459
+ if (failures.length) throw new AggregateError(failures, "Headless session shutdown failed");
1460
+ })();
1461
+ return disposePromise;
1462
+ };
1463
+ const stop = () => {
1464
+ dispose().catch((error) => options.onNotice?.(harnessErrorMessage(error)));
1465
+ };
1466
+ const invokeSurfaceTool = async (invocation, readRevision, readTools, ready, lifecycleSignal, waitMs) => {
1467
+ if (disposed || !headlessReady || !ready() || !headlessHost?.status.ready) throw new Error("Headless capability preparation is not ready. Retry in a few seconds.");
1468
+ if (invocation.revision !== readRevision()) throw new Error("The session tool surface has changed");
1469
+ if (!isJsonObject(invocation.arguments)) throw new Error("Tool arguments must be a JSON object");
1470
+ const applied = readTools().get(invocation.name);
1471
+ if (applied === void 0) throw new Error(`Tool '${invocation.name}' is not active`);
1472
+ if (!Value.Check(applied.descriptor.parameters, invocation.arguments)) throw new Error(`Invalid arguments for tool '${invocation.name}': ${validationDetails(applied.descriptor.parameters, invocation.arguments)}`);
1473
+ const signals = [invocation.signal, lifecycleSignal].filter((signal) => signal !== void 0);
1474
+ const signal = signals.length === 0 ? void 0 : AbortSignal.any(signals);
1475
+ signal?.throwIfAborted();
1476
+ return runtime.runExternalOperation(async () => {
1477
+ signal?.throwIfAborted();
1478
+ await invocation.authorize?.();
1479
+ signal?.throwIfAborted();
1480
+ if (disposed || !headlessReady || !ready() || !headlessHost?.status.ready) throw new Error("Headless capability preparation is not ready. Retry in a few seconds.");
1481
+ if (invocation.revision !== readRevision() || readTools().get(invocation.name) !== applied) throw new Error(`Tool '${invocation.name}' is no longer active`);
1482
+ const toolCallId = `external-${randomUUID()}`;
1483
+ const before = await beforeTool({
1484
+ toolCallId,
1485
+ toolName: invocation.name,
1486
+ args: invocation.arguments
1487
+ }, signal ? withAbortSignal(signal, BACKGROUND_CONTEXT) : BACKGROUND_CONTEXT);
1488
+ if (before?.block !== void 0) return {
1489
+ content: [{
1490
+ type: "text",
1491
+ text: before.block.reason
1492
+ }],
1493
+ isError: true
1494
+ };
1495
+ const args = before?.args ?? invocation.arguments;
1496
+ if (!Value.Check(applied.descriptor.parameters, args)) throw new Error(`A tool hook produced invalid arguments for '${invocation.name}': ${validationDetails(applied.descriptor.parameters, args)}`);
1497
+ await invocation.authorize?.();
1498
+ signal?.throwIfAborted();
1499
+ if (disposed || !headlessReady || !ready() || !headlessHost?.status.ready) throw new Error("Headless capability preparation is not ready. Retry in a few seconds.");
1500
+ if (invocation.revision !== readRevision() || readTools().get(invocation.name) !== applied) throw new Error(`Tool '${invocation.name}' is no longer active`);
1501
+ const startEvent = {
1502
+ type: "tool_execution_start",
1503
+ runId: EXTERNAL_OPERATION,
1504
+ turnId: EXTERNAL_OPERATION,
1505
+ toolCallId,
1506
+ toolName: invocation.name,
1507
+ args
1508
+ };
1509
+ emitTo(listeners, startEvent);
1510
+ await headlessHost.dispatchHook("tool_execution_start", startEvent);
1511
+ let result;
1512
+ try {
1513
+ result = await applied.execute(toolCallId, args, signal, (partial) => {
1514
+ emitTo(listeners, {
1515
+ type: "tool_execution_update",
1516
+ runId: EXTERNAL_OPERATION,
1517
+ turnId: EXTERNAL_OPERATION,
1518
+ toolCallId,
1519
+ toolName: invocation.name,
1520
+ partialResult: partial
1521
+ });
1522
+ invocation.onUpdate?.(partial);
1523
+ }, invocation.mcpSkills === void 0 ? void 0 : {
1524
+ ...headlessHost.context,
1525
+ mcpSkills: invocation.mcpSkills
1526
+ });
1527
+ } catch (error) {
1528
+ result = {
1529
+ content: [{
1530
+ type: "text",
1531
+ text: error instanceof Error ? error.message : String(error)
1532
+ }],
1533
+ isError: true
1534
+ };
1535
+ }
1536
+ const patch = signal?.aborted ? void 0 : await afterTool({
1537
+ toolCallId,
1538
+ toolName: invocation.name,
1539
+ args,
1540
+ content: result.content,
1541
+ ...isJsonValue(result.details) ? { details: result.details } : {},
1542
+ isError: result.isError === true
1543
+ }, signal ? withAbortSignal(signal, BACKGROUND_CONTEXT) : BACKGROUND_CONTEXT);
1544
+ const patched = {
1545
+ content: patch?.content ?? result.content,
1546
+ ...patch?.content !== void 0 || patch?.isError !== void 0 || result.structuredContent === void 0 ? {} : { structuredContent: result.structuredContent },
1547
+ ...patch?.content !== void 0 || patch?.isError !== void 0 || patch?.details !== void 0 || result._meta === void 0 ? {} : { _meta: result._meta },
1548
+ ...patch?.details !== void 0 ? { details: patch.details } : result.details === void 0 ? {} : { details: result.details },
1549
+ isError: patch?.isError ?? result.isError ?? false
1550
+ };
1551
+ const endEvent = {
1552
+ type: "tool_execution_end",
1553
+ runId: EXTERNAL_OPERATION,
1554
+ turnId: EXTERNAL_OPERATION,
1555
+ toolCallId,
1556
+ toolName: invocation.name,
1557
+ result: patched,
1558
+ isError: patched.isError,
1559
+ terminate: patch?.terminate ?? false
1560
+ };
1561
+ emitTo(listeners, endEvent);
1562
+ await headlessHost.dispatchHook("tool_execution_end", endEvent);
1563
+ return patched;
1564
+ }, {
1565
+ signal,
1566
+ waitMs
1567
+ });
1568
+ };
1569
+ const toolSurface = {
1570
+ readSurface() {
1571
+ if (disposed || !headlessReady || !toolSurfaceReady || !headlessHost?.status.ready) throw new Error("Headless capability preparation is not ready.");
1572
+ return {
1573
+ revision: surfaceRevision,
1574
+ tools: [...appliedSessionTools.values()].map((tool) => tool.descriptor),
1575
+ skills: [...appliedSkills.values()].map((skill) => skill.descriptor)
1576
+ };
1577
+ },
1578
+ invokeTool: (invocation) => invokeSurfaceTool(invocation, () => surfaceRevision, () => appliedSessionTools, () => toolSurfaceReady),
1579
+ readSkill(revision, uri) {
1580
+ if (disposed || !headlessReady || !toolSurfaceReady || !headlessHost?.status.ready) throw new Error("Headless capability preparation is not ready.");
1581
+ if (revision !== surfaceRevision) throw new Error("The session skill surface has changed");
1582
+ const skill = appliedSkills.get(uri);
1583
+ if (skill === void 0) throw new Error("The session skill is not active");
1584
+ return skill.content;
1585
+ }
1586
+ };
1587
+ admittedToolSurface = {
1588
+ readSurface: () => toolSurface.readSurface(),
1589
+ invokeTool: (invocation) => toolSurface.invokeTool(invocation)
1590
+ };
1591
+ const mcpSurface = {
1592
+ readSurface() {
1593
+ if (disposed || !headlessReady || !mcpSurfaceReady || !headlessHost?.status.ready) throw new Error("MCP capability preparation is not ready.");
1594
+ return {
1595
+ revision: mcpSurfaceRevision,
1596
+ tools: [...appliedMcpTools.values()].map((tool) => tool.descriptor),
1597
+ skills: [...appliedMcpSkills.values()].map((skill) => skill.descriptor),
1598
+ uiResources: [...appliedMcpUiResources.values()].map((resource) => resource.descriptor)
1599
+ };
1600
+ },
1601
+ invokeTool: (invocation) => invokeSurfaceTool(invocation, () => mcpSurfaceRevision, () => appliedMcpTools, () => mcpSurfaceReady, mcpLifecycle.signal, REMOTE_TOOL_WAIT_MS),
1602
+ async readUiResource(revision, uri) {
1603
+ if (disposed || !headlessReady || !mcpSurfaceReady || !headlessHost?.status.ready) throw new Error("MCP capability preparation is not ready.");
1604
+ if (revision !== mcpSurfaceRevision) throw new Error("The session MCP surface has changed");
1605
+ const resource = appliedMcpUiResources.get(uri)?.resource;
1606
+ if (resource === void 0) throw new Error("The session MCP UI resource is not active");
1607
+ const text = await resource.read();
1608
+ if (disposed || !headlessReady || !mcpSurfaceReady || !headlessHost?.status.ready) throw new Error("MCP capability preparation is not ready.");
1609
+ if (revision !== mcpSurfaceRevision || appliedMcpUiResources.get(uri)?.resource !== resource) throw new Error("The session MCP surface has changed");
1610
+ return text;
1611
+ },
1612
+ async readSkill(revision, uri) {
1613
+ if (disposed || !headlessReady || !mcpSurfaceReady || !headlessHost?.status.ready) throw new Error("MCP capability preparation is not ready.");
1614
+ if (revision !== mcpSurfaceRevision) throw new Error("The session MCP surface has changed");
1615
+ const skill = appliedMcpSkills.get(uri)?.skill;
1616
+ if (skill === void 0) throw new Error("The session MCP skill is not active");
1617
+ const text = await skill.read(headlessHost.context);
1618
+ if (disposed || !headlessReady || !mcpSurfaceReady || !headlessHost?.status.ready) throw new Error("MCP capability preparation is not ready.");
1619
+ if (revision !== mcpSurfaceRevision || appliedMcpSkills.get(uri)?.skill !== skill) throw new Error("The session MCP surface has changed");
1620
+ return text;
1621
+ }
1622
+ };
1623
+ return {
1624
+ runtime,
1625
+ async readExecutionState() {
1626
+ const state = await runtime.readState();
1627
+ const backgroundWork = mcpServiceRoot === void 0 ? void 0 : readDoomBackgroundWorkService(mcpServiceRoot)?.snapshot(options.sessionId);
1628
+ return {
1629
+ isIdle: state.isIdle === true,
1630
+ hasPendingMessages: Number(state.pendingMessageCount) > 0,
1631
+ ...backgroundWork === void 0 ? {} : { backgroundWork }
1632
+ };
1633
+ },
1634
+ ...sessionContext === void 0 ? {} : { sessionContext },
1635
+ get host() {
1636
+ return headlessHost;
1637
+ },
1638
+ toolSurface,
1639
+ mcpSurface,
1640
+ prepareFacets,
1641
+ activateFacets,
1642
+ canDispatch: () => !disposed && headlessReady && !promptPreparationFailed && headlessHost?.status.ready === true,
1643
+ onPresentationFrame(listener) {
1644
+ listeners.add(listener);
1645
+ return () => listeners.delete(listener);
1646
+ },
1647
+ onSelection(listener) {
1648
+ selectionListeners.add(listener);
1649
+ listener(latestSelection);
1650
+ return () => {
1651
+ selectionListeners.delete(listener);
1652
+ };
1653
+ },
1654
+ respondToExtensionUi(frame) {
1655
+ return client?.receive(frame) ?? false;
1656
+ },
1657
+ dispose
1658
+ };
1659
+ }
1660
+ //#endregion
1661
+ export { createHeadlessSessionHost, restoreHeadlessSelection, validateDirectHeadlessArgs };
1662
+
1663
+ //# sourceMappingURL=headlessSessionHost.mjs.map