@agimon-ai/doompi-core 0.0.1-alpha.100

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 (1233) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +5 -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 +2009 -0
  8. package/dist/apiContracts.cjs.map +1 -0
  9. package/dist/apiContracts.d.mts +1018 -0
  10. package/dist/apiContracts.d.mts.map +1 -0
  11. package/dist/apiContracts.mjs +1989 -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 +7 -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 +8 -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 +10 -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 +100 -0
  50. package/dist/contextDetailStore.cjs.map +1 -0
  51. package/dist/contextDetailStore.d.mts +19 -0
  52. package/dist/contextDetailStore.d.mts.map +1 -0
  53. package/dist/contextDetailStore.mjs +91 -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 +11 -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 +231 -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 +225 -0
  78. package/dist/executionBudget.mjs.map +1 -0
  79. package/dist/extensionFile.cjs +24 -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 +9 -0
  86. package/dist/headless.d.mts +2 -0
  87. package/dist/headless.mjs +2 -0
  88. package/dist/headlessHub.cjs +914 -0
  89. package/dist/headlessHub.cjs.map +1 -0
  90. package/dist/headlessHub.d.mts +157 -0
  91. package/dist/headlessHub.d.mts.map +1 -0
  92. package/dist/headlessHub.mjs +911 -0
  93. package/dist/headlessHub.mjs.map +1 -0
  94. package/dist/headlessServer.cjs +910 -0
  95. package/dist/headlessServer.cjs.map +1 -0
  96. package/dist/headlessServer.d.mts +64 -0
  97. package/dist/headlessServer.d.mts.map +1 -0
  98. package/dist/headlessServer.mjs +904 -0
  99. package/dist/headlessServer.mjs.map +1 -0
  100. package/dist/headlessSessionHost.cjs +0 -0
  101. package/dist/headlessSessionHost.d.mts +71 -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/historyImport.cjs +553 -0
  117. package/dist/historyImport.cjs.map +1 -0
  118. package/dist/historyImport.d.mts +76 -0
  119. package/dist/historyImport.d.mts.map +1 -0
  120. package/dist/historyImport.mjs +547 -0
  121. package/dist/historyImport.mjs.map +1 -0
  122. package/dist/historyOwnership.cjs +253 -0
  123. package/dist/historyOwnership.cjs.map +1 -0
  124. package/dist/historyOwnership.d.mts +23 -0
  125. package/dist/historyOwnership.d.mts.map +1 -0
  126. package/dist/historyOwnership.mjs +247 -0
  127. package/dist/historyOwnership.mjs.map +1 -0
  128. package/dist/hubChannel.cjs +4 -0
  129. package/dist/hubChannel.d.mts +2 -0
  130. package/dist/hubChannel.mjs +2 -0
  131. package/dist/index.cjs +44 -0
  132. package/dist/index.d.mts +6 -0
  133. package/dist/index.mjs +6 -0
  134. package/dist/json.cjs +6 -0
  135. package/dist/json.d.mts +2 -0
  136. package/dist/json.mjs +2 -0
  137. package/dist/jsonlSessionRepo.cjs +217 -0
  138. package/dist/jsonlSessionRepo.cjs.map +1 -0
  139. package/dist/jsonlSessionRepo.d.mts +7 -0
  140. package/dist/jsonlSessionRepo.d.mts.map +1 -0
  141. package/dist/jsonlSessionRepo.mjs +212 -0
  142. package/dist/jsonlSessionRepo.mjs.map +1 -0
  143. package/dist/kernel.cjs +3 -0
  144. package/dist/kernel.d.mts +3 -0
  145. package/dist/kernel.mjs +2 -0
  146. package/dist/leader.cjs +9 -0
  147. package/dist/leader.d.mts +2 -0
  148. package/dist/leader.mjs +2 -0
  149. package/dist/logSinkTelemetry.cjs +5 -0
  150. package/dist/logSinkTelemetry.d.mts +2 -0
  151. package/dist/logSinkTelemetry.mjs +2 -0
  152. package/dist/machineApi.cjs +92 -0
  153. package/dist/machineApi.cjs.map +1 -0
  154. package/dist/machineApi.d.mts +7 -0
  155. package/dist/machineApi.d.mts.map +1 -0
  156. package/dist/machineApi.mjs +88 -0
  157. package/dist/machineApi.mjs.map +1 -0
  158. package/dist/main.cjs +11 -0
  159. package/dist/main.d.mts +5 -0
  160. package/dist/main.mjs +4 -0
  161. package/dist/mcpFacet.cjs +12 -0
  162. package/dist/mcpFacet.d.mts +4 -0
  163. package/dist/mcpFacet.mjs +4 -0
  164. package/dist/mcpProjection.cjs +16 -0
  165. package/dist/mcpProjection.d.mts +2 -0
  166. package/dist/mcpProjection.mjs +2 -0
  167. package/dist/mcpSchemaCost.cjs +195 -0
  168. package/dist/mcpSchemaCost.cjs.map +1 -0
  169. package/dist/mcpSchemaCost.d.mts +35 -0
  170. package/dist/mcpSchemaCost.d.mts.map +1 -0
  171. package/dist/mcpSchemaCost.mjs +190 -0
  172. package/dist/mcpSchemaCost.mjs.map +1 -0
  173. package/dist/mcpSession.cjs +9 -0
  174. package/dist/mcpSession.d.mts +2 -0
  175. package/dist/mcpSession.mjs +2 -0
  176. package/dist/mcpStatus.cjs +7 -0
  177. package/dist/mcpStatus.d.mts +2 -0
  178. package/dist/mcpStatus.mjs +2 -0
  179. package/dist/mcpToolResolver.cjs +5 -0
  180. package/dist/mcpToolResolver.d.mts +2 -0
  181. package/dist/mcpToolResolver.mjs +2 -0
  182. package/dist/mcpWidget.cjs +0 -0
  183. package/dist/mcpWidget.d.mts +2 -0
  184. package/dist/mcpWidget.mjs +1 -0
  185. package/dist/moduleResolution.cjs +405 -0
  186. package/dist/moduleResolution.cjs.map +1 -0
  187. package/dist/moduleResolution.d.mts +67 -0
  188. package/dist/moduleResolution.d.mts.map +1 -0
  189. package/dist/moduleResolution.mjs +389 -0
  190. package/dist/moduleResolution.mjs.map +1 -0
  191. package/dist/narration.cjs +10 -0
  192. package/dist/narration.d.mts +2 -0
  193. package/dist/narration.mjs +2 -0
  194. package/dist/notification.cjs +17 -0
  195. package/dist/notification.d.mts +2 -0
  196. package/dist/notification.mjs +2 -0
  197. package/dist/packageApi.cjs +16 -0
  198. package/dist/packageApi.d.mts +3 -0
  199. package/dist/packageApi.mjs +3 -0
  200. package/dist/packageApiServer.cjs +191 -0
  201. package/dist/packageApiServer.cjs.map +1 -0
  202. package/dist/packageApiServer.d.mts +57 -0
  203. package/dist/packageApiServer.d.mts.map +1 -0
  204. package/dist/packageApiServer.mjs +189 -0
  205. package/dist/packageApiServer.mjs.map +1 -0
  206. package/dist/piExtension.cjs +13 -0
  207. package/dist/piExtension.d.mts +5 -0
  208. package/dist/piExtension.mjs +4 -0
  209. package/dist/piSettings.cjs +12 -0
  210. package/dist/piSettings.d.mts +2 -0
  211. package/dist/piSettings.mjs +2 -0
  212. package/dist/pluginProtocol.cjs +10 -0
  213. package/dist/pluginProtocol.d.mts +2 -0
  214. package/dist/pluginProtocol.mjs +2 -0
  215. package/dist/profileIdentity.cjs +6 -0
  216. package/dist/profileIdentity.d.mts +2 -0
  217. package/dist/profileIdentity.mjs +2 -0
  218. package/dist/protocol.cjs +10 -0
  219. package/dist/protocol.d.mts +2 -0
  220. package/dist/protocol.mjs +2 -0
  221. package/dist/readiness.cjs +8 -0
  222. package/dist/readiness.d.mts +2 -0
  223. package/dist/readiness.mjs +2 -0
  224. package/dist/relaunchHandoff.cjs +6 -0
  225. package/dist/relaunchHandoff.d.mts +2 -0
  226. package/dist/relaunchHandoff.mjs +2 -0
  227. package/dist/remoteApi.cjs +42 -0
  228. package/dist/remoteApi.cjs.map +1 -0
  229. package/dist/remoteApi.d.mts +7 -0
  230. package/dist/remoteApi.d.mts.map +1 -0
  231. package/dist/remoteApi.mjs +41 -0
  232. package/dist/remoteApi.mjs.map +1 -0
  233. package/dist/remoteRuntime.cjs +460 -0
  234. package/dist/remoteRuntime.cjs.map +1 -0
  235. package/dist/remoteRuntime.d.mts +28 -0
  236. package/dist/remoteRuntime.d.mts.map +1 -0
  237. package/dist/remoteRuntime.mjs +456 -0
  238. package/dist/remoteRuntime.mjs.map +1 -0
  239. package/dist/runtimeConfig.cjs +232 -0
  240. package/dist/runtimeConfig.cjs.map +1 -0
  241. package/dist/runtimeConfig.d.mts +313 -0
  242. package/dist/runtimeConfig.d.mts.map +1 -0
  243. package/dist/runtimeConfig.mjs +221 -0
  244. package/dist/runtimeConfig.mjs.map +1 -0
  245. package/dist/runtimeContextApi.cjs +64 -0
  246. package/dist/runtimeContextApi.cjs.map +1 -0
  247. package/dist/runtimeContextApi.d.mts +16 -0
  248. package/dist/runtimeContextApi.d.mts.map +1 -0
  249. package/dist/runtimeContextApi.mjs +62 -0
  250. package/dist/runtimeContextApi.mjs.map +1 -0
  251. package/dist/runtimeCordisHost.cjs +193 -0
  252. package/dist/runtimeCordisHost.cjs.map +1 -0
  253. package/dist/runtimeCordisHost.d.mts +63 -0
  254. package/dist/runtimeCordisHost.d.mts.map +1 -0
  255. package/dist/runtimeCordisHost.mjs +184 -0
  256. package/dist/runtimeCordisHost.mjs.map +1 -0
  257. package/dist/runtimeHeadlessSessionManager.cjs +0 -0
  258. package/dist/runtimeHeadlessSessionManager.d.mts +18 -0
  259. package/dist/runtimeHeadlessSessionManager.d.mts.map +1 -0
  260. package/dist/runtimeHeadlessSessionManager.mjs +1 -0
  261. package/dist/runtimeIdentity.cjs +26 -0
  262. package/dist/runtimeIdentity.cjs.map +1 -0
  263. package/dist/runtimeIdentity.d.mts +7 -0
  264. package/dist/runtimeIdentity.d.mts.map +1 -0
  265. package/dist/runtimeIdentity.mjs +21 -0
  266. package/dist/runtimeIdentity.mjs.map +1 -0
  267. package/dist/runtimeJson.cjs +46 -0
  268. package/dist/runtimeJson.cjs.map +1 -0
  269. package/dist/runtimeJson.d.mts +22 -0
  270. package/dist/runtimeJson.d.mts.map +1 -0
  271. package/dist/runtimeJson.mjs +39 -0
  272. package/dist/runtimeJson.mjs.map +1 -0
  273. package/dist/runtimeLogSinkTelemetry.cjs +102 -0
  274. package/dist/runtimeLogSinkTelemetry.cjs.map +1 -0
  275. package/dist/runtimeLogSinkTelemetry.d.mts +49 -0
  276. package/dist/runtimeLogSinkTelemetry.d.mts.map +1 -0
  277. package/dist/runtimeLogSinkTelemetry.mjs +99 -0
  278. package/dist/runtimeLogSinkTelemetry.mjs.map +1 -0
  279. package/dist/runtimePiExtension.cjs +339 -0
  280. package/dist/runtimePiExtension.cjs.map +1 -0
  281. package/dist/runtimePiExtension.d.mts +160 -0
  282. package/dist/runtimePiExtension.d.mts.map +1 -0
  283. package/dist/runtimePiExtension.mjs +333 -0
  284. package/dist/runtimePiExtension.mjs.map +1 -0
  285. package/dist/runtimePiSettings.cjs +116 -0
  286. package/dist/runtimePiSettings.cjs.map +1 -0
  287. package/dist/runtimePiSettings.d.mts +29 -0
  288. package/dist/runtimePiSettings.d.mts.map +1 -0
  289. package/dist/runtimePiSettings.mjs +103 -0
  290. package/dist/runtimePiSettings.mjs.map +1 -0
  291. package/dist/runtimeProtocol.cjs +223 -0
  292. package/dist/runtimeProtocol.cjs.map +1 -0
  293. package/dist/runtimeProtocol.d.mts +84 -0
  294. package/dist/runtimeProtocol.d.mts.map +1 -0
  295. package/dist/runtimeProtocol.mjs +215 -0
  296. package/dist/runtimeProtocol.mjs.map +1 -0
  297. package/dist/runtimeToolNames.cjs +51 -0
  298. package/dist/runtimeToolNames.cjs.map +1 -0
  299. package/dist/runtimeToolNames.d.mts +24 -0
  300. package/dist/runtimeToolNames.d.mts.map +1 -0
  301. package/dist/runtimeToolNames.mjs +49 -0
  302. package/dist/runtimeToolNames.mjs.map +1 -0
  303. package/dist/runtimeTransition.cjs +27 -0
  304. package/dist/runtimeTransition.cjs.map +1 -0
  305. package/dist/runtimeTransition.d.mts +114 -0
  306. package/dist/runtimeTransition.d.mts.map +1 -0
  307. package/dist/runtimeTransition.mjs +24 -0
  308. package/dist/runtimeTransition.mjs.map +1 -0
  309. package/dist/sandboxHarness.cjs +6 -0
  310. package/dist/sandboxHarness.d.mts +2 -0
  311. package/dist/sandboxHarness.mjs +2 -0
  312. package/dist/server.cjs +17 -0
  313. package/dist/server.d.mts +10 -0
  314. package/dist/server.mjs +7 -0
  315. package/dist/serverFacet.cjs +30 -0
  316. package/dist/serverFacet.d.mts +8 -0
  317. package/dist/serverFacet.mjs +8 -0
  318. package/dist/serverTelemetry.cjs +25 -0
  319. package/dist/serverTelemetry.cjs.map +1 -0
  320. package/dist/serverTelemetry.d.mts +12 -0
  321. package/dist/serverTelemetry.d.mts.map +1 -0
  322. package/dist/serverTelemetry.mjs +23 -0
  323. package/dist/serverTelemetry.mjs.map +1 -0
  324. package/dist/sessionFilesApi.cjs +96 -0
  325. package/dist/sessionFilesApi.cjs.map +1 -0
  326. package/dist/sessionFilesApi.d.mts +7 -0
  327. package/dist/sessionFilesApi.d.mts.map +1 -0
  328. package/dist/sessionFilesApi.mjs +91 -0
  329. package/dist/sessionFilesApi.mjs.map +1 -0
  330. package/dist/sessionMcp.cjs +6 -0
  331. package/dist/sessionMcp.d.mts +5 -0
  332. package/dist/sessionMcp.mjs +3 -0
  333. package/dist/sessionProtocol.cjs +8 -0
  334. package/dist/sessionProtocol.d.mts +3 -0
  335. package/dist/sessionProtocol.mjs +2 -0
  336. package/dist/skills.cjs +9 -0
  337. package/dist/skills.d.mts +2 -0
  338. package/dist/skills.mjs +2 -0
  339. package/dist/sqliteHistoryImport.cjs +151 -0
  340. package/dist/sqliteHistoryImport.cjs.map +1 -0
  341. package/dist/sqliteHistoryImport.d.mts +8 -0
  342. package/dist/sqliteHistoryImport.d.mts.map +1 -0
  343. package/dist/sqliteHistoryImport.mjs +146 -0
  344. package/dist/sqliteHistoryImport.mjs.map +1 -0
  345. package/dist/sqliteSessionStorage.cjs +53 -0
  346. package/dist/sqliteSessionStorage.cjs.map +1 -0
  347. package/dist/sqliteSessionStorage.d.mts +7 -0
  348. package/dist/sqliteSessionStorage.d.mts.map +1 -0
  349. package/dist/sqliteSessionStorage.mjs +49 -0
  350. package/dist/sqliteSessionStorage.mjs.map +1 -0
  351. package/dist/src/constants/authorTools.cjs +10 -0
  352. package/dist/src/constants/authorTools.cjs.map +1 -0
  353. package/dist/src/constants/authorTools.d.mts +6 -0
  354. package/dist/src/constants/authorTools.d.mts.map +1 -0
  355. package/dist/src/constants/authorTools.mjs +8 -0
  356. package/dist/src/constants/authorTools.mjs.map +1 -0
  357. package/dist/src/constants/contextApi.cjs +28 -0
  358. package/dist/src/constants/contextApi.cjs.map +1 -0
  359. package/dist/src/constants/contextApi.d.mts +21 -0
  360. package/dist/src/constants/contextApi.d.mts.map +1 -0
  361. package/dist/src/constants/contextApi.mjs +23 -0
  362. package/dist/src/constants/contextApi.mjs.map +1 -0
  363. package/dist/src/constants/remote.cjs +90 -0
  364. package/dist/src/constants/remote.cjs.map +1 -0
  365. package/dist/src/constants/remote.mjs +69 -0
  366. package/dist/src/constants/remote.mjs.map +1 -0
  367. package/dist/src/constants/voiceReloadHandoff.cjs +12 -0
  368. package/dist/src/constants/voiceReloadHandoff.cjs.map +1 -0
  369. package/dist/src/constants/voiceReloadHandoff.d.mts +7 -0
  370. package/dist/src/constants/voiceReloadHandoff.d.mts.map +1 -0
  371. package/dist/src/constants/voiceReloadHandoff.mjs +9 -0
  372. package/dist/src/constants/voiceReloadHandoff.mjs.map +1 -0
  373. package/dist/src/constants/voiceTools.cjs +96 -0
  374. package/dist/src/constants/voiceTools.cjs.map +1 -0
  375. package/dist/src/constants/voiceTools.d.mts +58 -0
  376. package/dist/src/constants/voiceTools.d.mts.map +1 -0
  377. package/dist/src/constants/voiceTools.mjs +60 -0
  378. package/dist/src/constants/voiceTools.mjs.map +1 -0
  379. package/dist/src/extensions/extensionFile.cjs +165 -0
  380. package/dist/src/extensions/extensionFile.cjs.map +1 -0
  381. package/dist/src/extensions/extensionFile.d.mts +79 -0
  382. package/dist/src/extensions/extensionFile.d.mts.map +1 -0
  383. package/dist/src/extensions/extensionFile.mjs +144 -0
  384. package/dist/src/extensions/extensionFile.mjs.map +1 -0
  385. package/dist/src/extensions/serverPlugin.cjs +106 -0
  386. package/dist/src/extensions/serverPlugin.cjs.map +1 -0
  387. package/dist/src/extensions/serverPlugin.d.mts +5 -0
  388. package/dist/src/extensions/serverPlugin.d.mts.map +1 -0
  389. package/dist/src/extensions/serverPlugin.mjs +106 -0
  390. package/dist/src/extensions/serverPlugin.mjs.map +1 -0
  391. package/dist/src/extensions/webPlugin.cjs +131 -0
  392. package/dist/src/extensions/webPlugin.cjs.map +1 -0
  393. package/dist/src/extensions/webPlugin.d.mts +66 -0
  394. package/dist/src/extensions/webPlugin.d.mts.map +1 -0
  395. package/dist/src/extensions/webPlugin.mjs +110 -0
  396. package/dist/src/extensions/webPlugin.mjs.map +1 -0
  397. package/dist/src/pi/piSessionRuntime.cjs +572 -0
  398. package/dist/src/pi/piSessionRuntime.cjs.map +1 -0
  399. package/dist/src/pi/piSessionRuntime.d.mts +43 -0
  400. package/dist/src/pi/piSessionRuntime.d.mts.map +1 -0
  401. package/dist/src/pi/piSessionRuntime.mjs +571 -0
  402. package/dist/src/pi/piSessionRuntime.mjs.map +1 -0
  403. package/dist/src/pi/piWebSocketListener.cjs +115 -0
  404. package/dist/src/pi/piWebSocketListener.cjs.map +1 -0
  405. package/dist/src/pi/piWebSocketListener.mjs +115 -0
  406. package/dist/src/pi/piWebSocketListener.mjs.map +1 -0
  407. package/dist/src/schemas/agentModel.cjs +33 -0
  408. package/dist/src/schemas/agentModel.cjs.map +1 -0
  409. package/dist/src/schemas/agentModel.d.mts +26 -0
  410. package/dist/src/schemas/agentModel.d.mts.map +1 -0
  411. package/dist/src/schemas/agentModel.mjs +32 -0
  412. package/dist/src/schemas/agentModel.mjs.map +1 -0
  413. package/dist/src/schemas/apiContracts.d.mts +58 -0
  414. package/dist/src/schemas/apiContracts.d.mts.map +1 -0
  415. package/dist/src/schemas/askUser.cjs +42 -0
  416. package/dist/src/schemas/askUser.cjs.map +1 -0
  417. package/dist/src/schemas/askUser.d.mts +47 -0
  418. package/dist/src/schemas/askUser.d.mts.map +1 -0
  419. package/dist/src/schemas/askUser.mjs +37 -0
  420. package/dist/src/schemas/askUser.mjs.map +1 -0
  421. package/dist/src/schemas/backgroundWork.cjs +31 -0
  422. package/dist/src/schemas/backgroundWork.cjs.map +1 -0
  423. package/dist/src/schemas/backgroundWork.d.mts +72 -0
  424. package/dist/src/schemas/backgroundWork.d.mts.map +1 -0
  425. package/dist/src/schemas/backgroundWork.mjs +27 -0
  426. package/dist/src/schemas/backgroundWork.mjs.map +1 -0
  427. package/dist/src/schemas/childProcess.cjs +67 -0
  428. package/dist/src/schemas/childProcess.cjs.map +1 -0
  429. package/dist/src/schemas/childProcess.d.mts +30 -0
  430. package/dist/src/schemas/childProcess.d.mts.map +1 -0
  431. package/dist/src/schemas/childProcess.mjs +55 -0
  432. package/dist/src/schemas/childProcess.mjs.map +1 -0
  433. package/dist/src/schemas/cockpitContainer.cjs +31 -0
  434. package/dist/src/schemas/cockpitContainer.cjs.map +1 -0
  435. package/dist/src/schemas/cockpitContainer.d.mts +80 -0
  436. package/dist/src/schemas/cockpitContainer.d.mts.map +1 -0
  437. package/dist/src/schemas/cockpitContainer.mjs +30 -0
  438. package/dist/src/schemas/cockpitContainer.mjs.map +1 -0
  439. package/dist/src/schemas/contextContributions.cjs +17 -0
  440. package/dist/src/schemas/contextContributions.cjs.map +1 -0
  441. package/dist/src/schemas/contextContributions.d.mts +49 -0
  442. package/dist/src/schemas/contextContributions.d.mts.map +1 -0
  443. package/dist/src/schemas/contextContributions.mjs +15 -0
  444. package/dist/src/schemas/contextContributions.mjs.map +1 -0
  445. package/dist/src/schemas/delegation.cjs +91 -0
  446. package/dist/src/schemas/delegation.cjs.map +1 -0
  447. package/dist/src/schemas/delegation.d.mts +95 -0
  448. package/dist/src/schemas/delegation.d.mts.map +1 -0
  449. package/dist/src/schemas/delegation.mjs +76 -0
  450. package/dist/src/schemas/delegation.mjs.map +1 -0
  451. package/dist/src/schemas/extensionFile.d.mts +136 -0
  452. package/dist/src/schemas/extensionFile.d.mts.map +1 -0
  453. package/dist/src/schemas/footer.cjs +48 -0
  454. package/dist/src/schemas/footer.cjs.map +1 -0
  455. package/dist/src/schemas/footer.d.mts +48 -0
  456. package/dist/src/schemas/footer.d.mts.map +1 -0
  457. package/dist/src/schemas/footer.mjs +45 -0
  458. package/dist/src/schemas/footer.mjs.map +1 -0
  459. package/dist/src/schemas/headless.cjs +44 -0
  460. package/dist/src/schemas/headless.cjs.map +1 -0
  461. package/dist/src/schemas/headless.d.mts +370 -0
  462. package/dist/src/schemas/headless.d.mts.map +1 -0
  463. package/dist/src/schemas/headless.mjs +38 -0
  464. package/dist/src/schemas/headless.mjs.map +1 -0
  465. package/dist/src/schemas/help.cjs +281 -0
  466. package/dist/src/schemas/help.cjs.map +1 -0
  467. package/dist/src/schemas/help.d.mts +119 -0
  468. package/dist/src/schemas/help.d.mts.map +1 -0
  469. package/dist/src/schemas/help.mjs +262 -0
  470. package/dist/src/schemas/help.mjs.map +1 -0
  471. package/dist/src/schemas/hubChannel.cjs +20 -0
  472. package/dist/src/schemas/hubChannel.cjs.map +1 -0
  473. package/dist/src/schemas/hubChannel.d.mts +236 -0
  474. package/dist/src/schemas/hubChannel.d.mts.map +1 -0
  475. package/dist/src/schemas/hubChannel.mjs +19 -0
  476. package/dist/src/schemas/hubChannel.mjs.map +1 -0
  477. package/dist/src/schemas/leader.cjs +57 -0
  478. package/dist/src/schemas/leader.cjs.map +1 -0
  479. package/dist/src/schemas/leader.d.mts +107 -0
  480. package/dist/src/schemas/leader.d.mts.map +1 -0
  481. package/dist/src/schemas/leader.mjs +51 -0
  482. package/dist/src/schemas/leader.mjs.map +1 -0
  483. package/dist/src/schemas/mcpBundle.cjs +92 -0
  484. package/dist/src/schemas/mcpBundle.cjs.map +1 -0
  485. package/dist/src/schemas/mcpBundle.d.mts +33 -0
  486. package/dist/src/schemas/mcpBundle.d.mts.map +1 -0
  487. package/dist/src/schemas/mcpBundle.mjs +90 -0
  488. package/dist/src/schemas/mcpBundle.mjs.map +1 -0
  489. package/dist/src/schemas/mcpFacet.cjs +24 -0
  490. package/dist/src/schemas/mcpFacet.cjs.map +1 -0
  491. package/dist/src/schemas/mcpFacet.d.mts +91 -0
  492. package/dist/src/schemas/mcpFacet.d.mts.map +1 -0
  493. package/dist/src/schemas/mcpFacet.mjs +21 -0
  494. package/dist/src/schemas/mcpFacet.mjs.map +1 -0
  495. package/dist/src/schemas/mcpProjection.cjs +117 -0
  496. package/dist/src/schemas/mcpProjection.cjs.map +1 -0
  497. package/dist/src/schemas/mcpProjection.d.mts +124 -0
  498. package/dist/src/schemas/mcpProjection.d.mts.map +1 -0
  499. package/dist/src/schemas/mcpProjection.mjs +104 -0
  500. package/dist/src/schemas/mcpProjection.mjs.map +1 -0
  501. package/dist/src/schemas/mcpSession.cjs +57 -0
  502. package/dist/src/schemas/mcpSession.cjs.map +1 -0
  503. package/dist/src/schemas/mcpSession.d.mts +57 -0
  504. package/dist/src/schemas/mcpSession.d.mts.map +1 -0
  505. package/dist/src/schemas/mcpSession.mjs +51 -0
  506. package/dist/src/schemas/mcpSession.mjs.map +1 -0
  507. package/dist/src/schemas/mcpStatus.cjs +52 -0
  508. package/dist/src/schemas/mcpStatus.cjs.map +1 -0
  509. package/dist/src/schemas/mcpStatus.d.mts +73 -0
  510. package/dist/src/schemas/mcpStatus.d.mts.map +1 -0
  511. package/dist/src/schemas/mcpStatus.mjs +48 -0
  512. package/dist/src/schemas/mcpStatus.mjs.map +1 -0
  513. package/dist/src/schemas/mcpToolResolver.cjs +17 -0
  514. package/dist/src/schemas/mcpToolResolver.cjs.map +1 -0
  515. package/dist/src/schemas/mcpToolResolver.d.mts +24 -0
  516. package/dist/src/schemas/mcpToolResolver.d.mts.map +1 -0
  517. package/dist/src/schemas/mcpToolResolver.mjs +15 -0
  518. package/dist/src/schemas/mcpToolResolver.mjs.map +1 -0
  519. package/dist/src/schemas/narration.cjs +54 -0
  520. package/dist/src/schemas/narration.cjs.map +1 -0
  521. package/dist/src/schemas/narration.d.mts +29 -0
  522. package/dist/src/schemas/narration.d.mts.map +1 -0
  523. package/dist/src/schemas/narration.mjs +47 -0
  524. package/dist/src/schemas/narration.mjs.map +1 -0
  525. package/dist/src/schemas/notification.cjs +122 -0
  526. package/dist/src/schemas/notification.cjs.map +1 -0
  527. package/dist/src/schemas/notification.d.mts +48 -0
  528. package/dist/src/schemas/notification.d.mts.map +1 -0
  529. package/dist/src/schemas/notification.mjs +108 -0
  530. package/dist/src/schemas/notification.mjs.map +1 -0
  531. package/dist/src/schemas/packageApi.cjs +73 -0
  532. package/dist/src/schemas/packageApi.cjs.map +1 -0
  533. package/dist/src/schemas/packageApi.d.mts +249 -0
  534. package/dist/src/schemas/packageApi.d.mts.map +1 -0
  535. package/dist/src/schemas/packageApi.mjs +64 -0
  536. package/dist/src/schemas/packageApi.mjs.map +1 -0
  537. package/dist/src/schemas/piTool.cjs +26 -0
  538. package/dist/src/schemas/piTool.cjs.map +1 -0
  539. package/dist/src/schemas/piTool.d.mts +25 -0
  540. package/dist/src/schemas/piTool.d.mts.map +1 -0
  541. package/dist/src/schemas/piTool.mjs +26 -0
  542. package/dist/src/schemas/piTool.mjs.map +1 -0
  543. package/dist/src/schemas/pluginContributions.cjs +19 -0
  544. package/dist/src/schemas/pluginContributions.cjs.map +1 -0
  545. package/dist/src/schemas/pluginContributions.d.mts +56 -0
  546. package/dist/src/schemas/pluginContributions.d.mts.map +1 -0
  547. package/dist/src/schemas/pluginContributions.mjs +18 -0
  548. package/dist/src/schemas/pluginContributions.mjs.map +1 -0
  549. package/dist/src/schemas/pluginProtocol.cjs +103 -0
  550. package/dist/src/schemas/pluginProtocol.cjs.map +1 -0
  551. package/dist/src/schemas/pluginProtocol.d.mts +68 -0
  552. package/dist/src/schemas/pluginProtocol.d.mts.map +1 -0
  553. package/dist/src/schemas/pluginProtocol.mjs +96 -0
  554. package/dist/src/schemas/pluginProtocol.mjs.map +1 -0
  555. package/dist/src/schemas/profileIdentity.cjs +67 -0
  556. package/dist/src/schemas/profileIdentity.cjs.map +1 -0
  557. package/dist/src/schemas/profileIdentity.d.mts +50 -0
  558. package/dist/src/schemas/profileIdentity.d.mts.map +1 -0
  559. package/dist/src/schemas/profileIdentity.mjs +64 -0
  560. package/dist/src/schemas/profileIdentity.mjs.map +1 -0
  561. package/dist/src/schemas/readiness.cjs +251 -0
  562. package/dist/src/schemas/readiness.cjs.map +1 -0
  563. package/dist/src/schemas/readiness.d.mts +84 -0
  564. package/dist/src/schemas/readiness.d.mts.map +1 -0
  565. package/dist/src/schemas/readiness.mjs +246 -0
  566. package/dist/src/schemas/readiness.mjs.map +1 -0
  567. package/dist/src/schemas/relaunchHandoff.cjs +47 -0
  568. package/dist/src/schemas/relaunchHandoff.cjs.map +1 -0
  569. package/dist/src/schemas/relaunchHandoff.d.mts +25 -0
  570. package/dist/src/schemas/relaunchHandoff.d.mts.map +1 -0
  571. package/dist/src/schemas/relaunchHandoff.mjs +44 -0
  572. package/dist/src/schemas/relaunchHandoff.mjs.map +1 -0
  573. package/dist/src/schemas/sandboxHarness.cjs +29 -0
  574. package/dist/src/schemas/sandboxHarness.cjs.map +1 -0
  575. package/dist/src/schemas/sandboxHarness.d.mts +39 -0
  576. package/dist/src/schemas/sandboxHarness.d.mts.map +1 -0
  577. package/dist/src/schemas/sandboxHarness.mjs +26 -0
  578. package/dist/src/schemas/sandboxHarness.mjs.map +1 -0
  579. package/dist/src/schemas/serverBundle.cjs +79 -0
  580. package/dist/src/schemas/serverBundle.cjs.map +1 -0
  581. package/dist/src/schemas/serverBundle.d.mts +34 -0
  582. package/dist/src/schemas/serverBundle.d.mts.map +1 -0
  583. package/dist/src/schemas/serverBundle.mjs +77 -0
  584. package/dist/src/schemas/serverBundle.mjs.map +1 -0
  585. package/dist/src/schemas/serverFacet.cjs +102 -0
  586. package/dist/src/schemas/serverFacet.cjs.map +1 -0
  587. package/dist/src/schemas/serverFacet.d.mts +141 -0
  588. package/dist/src/schemas/serverFacet.d.mts.map +1 -0
  589. package/dist/src/schemas/serverFacet.mjs +93 -0
  590. package/dist/src/schemas/serverFacet.mjs.map +1 -0
  591. package/dist/src/schemas/sessionMcpActivity.d.mts +45 -0
  592. package/dist/src/schemas/sessionMcpActivity.d.mts.map +1 -0
  593. package/dist/src/schemas/sessionProtocol.cjs +17 -0
  594. package/dist/src/schemas/sessionProtocol.cjs.map +1 -0
  595. package/dist/src/schemas/sessionProtocol.d.mts +308 -0
  596. package/dist/src/schemas/sessionProtocol.d.mts.map +1 -0
  597. package/dist/src/schemas/sessionProtocol.mjs +12 -0
  598. package/dist/src/schemas/sessionProtocol.mjs.map +1 -0
  599. package/dist/src/schemas/sessionUpdates.d.mts +34 -0
  600. package/dist/src/schemas/sessionUpdates.d.mts.map +1 -0
  601. package/dist/src/schemas/skills.cjs +115 -0
  602. package/dist/src/schemas/skills.cjs.map +1 -0
  603. package/dist/src/schemas/skills.d.mts +65 -0
  604. package/dist/src/schemas/skills.d.mts.map +1 -0
  605. package/dist/src/schemas/skills.mjs +109 -0
  606. package/dist/src/schemas/skills.mjs.map +1 -0
  607. package/dist/src/schemas/toolOverrides.cjs +17 -0
  608. package/dist/src/schemas/toolOverrides.cjs.map +1 -0
  609. package/dist/src/schemas/toolOverrides.d.mts +29 -0
  610. package/dist/src/schemas/toolOverrides.d.mts.map +1 -0
  611. package/dist/src/schemas/toolOverrides.mjs +15 -0
  612. package/dist/src/schemas/toolOverrides.mjs.map +1 -0
  613. package/dist/src/schemas/toolSurface.cjs +17 -0
  614. package/dist/src/schemas/toolSurface.cjs.map +1 -0
  615. package/dist/src/schemas/toolSurface.d.mts +70 -0
  616. package/dist/src/schemas/toolSurface.d.mts.map +1 -0
  617. package/dist/src/schemas/toolSurface.mjs +15 -0
  618. package/dist/src/schemas/toolSurface.mjs.map +1 -0
  619. package/dist/src/schemas/uiHub.cjs +17 -0
  620. package/dist/src/schemas/uiHub.cjs.map +1 -0
  621. package/dist/src/schemas/uiHub.d.mts +23 -0
  622. package/dist/src/schemas/uiHub.d.mts.map +1 -0
  623. package/dist/src/schemas/uiHub.mjs +15 -0
  624. package/dist/src/schemas/uiHub.mjs.map +1 -0
  625. package/dist/src/schemas/voiceReloadHandoff.cjs +78 -0
  626. package/dist/src/schemas/voiceReloadHandoff.cjs.map +1 -0
  627. package/dist/src/schemas/voiceReloadHandoff.d.mts +31 -0
  628. package/dist/src/schemas/voiceReloadHandoff.d.mts.map +1 -0
  629. package/dist/src/schemas/voiceReloadHandoff.mjs +75 -0
  630. package/dist/src/schemas/voiceReloadHandoff.mjs.map +1 -0
  631. package/dist/src/schemas/voiceTools.cjs +205 -0
  632. package/dist/src/schemas/voiceTools.cjs.map +1 -0
  633. package/dist/src/schemas/voiceTools.d.mts +120 -0
  634. package/dist/src/schemas/voiceTools.d.mts.map +1 -0
  635. package/dist/src/schemas/voiceTools.mjs +194 -0
  636. package/dist/src/schemas/voiceTools.mjs.map +1 -0
  637. package/dist/src/server/devProxyForward.cjs +141 -0
  638. package/dist/src/server/devProxyForward.cjs.map +1 -0
  639. package/dist/src/server/devProxyForward.mjs +139 -0
  640. package/dist/src/server/devProxyForward.mjs.map +1 -0
  641. package/dist/src/server/devProxyRoutes.cjs +97 -0
  642. package/dist/src/server/devProxyRoutes.cjs.map +1 -0
  643. package/dist/src/server/devProxyRoutes.mjs +97 -0
  644. package/dist/src/server/devProxyRoutes.mjs.map +1 -0
  645. package/dist/src/server/devProxySocket.cjs +87 -0
  646. package/dist/src/server/devProxySocket.cjs.map +1 -0
  647. package/dist/src/server/devProxySocket.mjs +87 -0
  648. package/dist/src/server/devProxySocket.mjs.map +1 -0
  649. package/dist/src/server/directHarnessRuntime.cjs +1964 -0
  650. package/dist/src/server/directHarnessRuntime.cjs.map +1 -0
  651. package/dist/src/server/directHarnessRuntime.d.mts +3 -0
  652. package/dist/src/server/directHarnessRuntime.mjs +1958 -0
  653. package/dist/src/server/directHarnessRuntime.mjs.map +1 -0
  654. package/dist/src/server/harnessErrorMessage.cjs +13 -0
  655. package/dist/src/server/harnessErrorMessage.cjs.map +1 -0
  656. package/dist/src/server/harnessErrorMessage.mjs +13 -0
  657. package/dist/src/server/harnessErrorMessage.mjs.map +1 -0
  658. package/dist/src/server/headlessProtocol.cjs +366 -0
  659. package/dist/src/server/headlessProtocol.cjs.map +1 -0
  660. package/dist/src/server/headlessProtocol.mjs +366 -0
  661. package/dist/src/server/headlessProtocol.mjs.map +1 -0
  662. package/dist/src/server/jsonlTranscriptReader.cjs +85 -0
  663. package/dist/src/server/jsonlTranscriptReader.cjs.map +1 -0
  664. package/dist/src/server/jsonlTranscriptReader.mjs +83 -0
  665. package/dist/src/server/jsonlTranscriptReader.mjs.map +1 -0
  666. package/dist/src/server/mcpBundleLoader.cjs +115 -0
  667. package/dist/src/server/mcpBundleLoader.cjs.map +1 -0
  668. package/dist/src/server/mcpBundleLoader.d.mts +27 -0
  669. package/dist/src/server/mcpBundleLoader.d.mts.map +1 -0
  670. package/dist/src/server/mcpBundleLoader.mjs +111 -0
  671. package/dist/src/server/mcpBundleLoader.mjs.map +1 -0
  672. package/dist/src/server/nativeChildTranscriptReader.cjs +20 -0
  673. package/dist/src/server/nativeChildTranscriptReader.cjs.map +1 -0
  674. package/dist/src/server/nativeChildTranscriptReader.mjs +18 -0
  675. package/dist/src/server/nativeChildTranscriptReader.mjs.map +1 -0
  676. package/dist/src/server/remoteRoutes.cjs +386 -0
  677. package/dist/src/server/remoteRoutes.cjs.map +1 -0
  678. package/dist/src/server/remoteRoutes.mjs +386 -0
  679. package/dist/src/server/remoteRoutes.mjs.map +1 -0
  680. package/dist/src/server/serverFacetLoader.cjs +220 -0
  681. package/dist/src/server/serverFacetLoader.cjs.map +1 -0
  682. package/dist/src/server/serverFacetLoader.d.mts +77 -0
  683. package/dist/src/server/serverFacetLoader.d.mts.map +1 -0
  684. package/dist/src/server/serverFacetLoader.mjs +215 -0
  685. package/dist/src/server/serverFacetLoader.mjs.map +1 -0
  686. package/dist/src/server/sessionMcpHandler.cjs +494 -0
  687. package/dist/src/server/sessionMcpHandler.cjs.map +1 -0
  688. package/dist/src/server/sessionMcpHandler.d.mts +47 -0
  689. package/dist/src/server/sessionMcpHandler.d.mts.map +1 -0
  690. package/dist/src/server/sessionMcpHandler.mjs +493 -0
  691. package/dist/src/server/sessionMcpHandler.mjs.map +1 -0
  692. package/dist/src/server/sessionMcpRoutes.cjs +780 -0
  693. package/dist/src/server/sessionMcpRoutes.cjs.map +1 -0
  694. package/dist/src/server/sessionMcpRoutes.mjs +775 -0
  695. package/dist/src/server/sessionMcpRoutes.mjs.map +1 -0
  696. package/dist/src/server/threadJournals.cjs +172 -0
  697. package/dist/src/server/threadJournals.cjs.map +1 -0
  698. package/dist/src/server/threadJournals.mjs +169 -0
  699. package/dist/src/server/threadJournals.mjs.map +1 -0
  700. package/dist/src/services/acpSessionUpdates/index.cjs +129 -0
  701. package/dist/src/services/acpSessionUpdates/index.cjs.map +1 -0
  702. package/dist/src/services/acpSessionUpdates/index.mjs +129 -0
  703. package/dist/src/services/acpSessionUpdates/index.mjs.map +1 -0
  704. package/dist/src/services/apiSurfaceAssert/index.cjs +60 -0
  705. package/dist/src/services/apiSurfaceAssert/index.cjs.map +1 -0
  706. package/dist/src/services/apiSurfaceAssert/index.d.mts +24 -0
  707. package/dist/src/services/apiSurfaceAssert/index.d.mts.map +1 -0
  708. package/dist/src/services/apiSurfaceAssert/index.mjs +60 -0
  709. package/dist/src/services/apiSurfaceAssert/index.mjs.map +1 -0
  710. package/dist/src/services/bundlePublication/index.cjs +88 -0
  711. package/dist/src/services/bundlePublication/index.cjs.map +1 -0
  712. package/dist/src/services/bundlePublication/index.mjs +85 -0
  713. package/dist/src/services/bundlePublication/index.mjs.map +1 -0
  714. package/dist/src/services/contextApiUrls/index.cjs +14 -0
  715. package/dist/src/services/contextApiUrls/index.cjs.map +1 -0
  716. package/dist/src/services/contextApiUrls/index.d.mts +6 -0
  717. package/dist/src/services/contextApiUrls/index.d.mts.map +1 -0
  718. package/dist/src/services/contextApiUrls/index.mjs +14 -0
  719. package/dist/src/services/contextApiUrls/index.mjs.map +1 -0
  720. package/dist/src/services/contextContributions/index.cjs +79 -0
  721. package/dist/src/services/contextContributions/index.cjs.map +1 -0
  722. package/dist/src/services/contextContributions/index.d.mts +6 -0
  723. package/dist/src/services/contextContributions/index.d.mts.map +1 -0
  724. package/dist/src/services/contextContributions/index.mjs +79 -0
  725. package/dist/src/services/contextContributions/index.mjs.map +1 -0
  726. package/dist/src/services/contextUsage/index.cjs +27 -0
  727. package/dist/src/services/contextUsage/index.cjs.map +1 -0
  728. package/dist/src/services/contextUsage/index.mjs +25 -0
  729. package/dist/src/services/contextUsage/index.mjs.map +1 -0
  730. package/dist/src/services/devProxyPolicy/index.cjs +168 -0
  731. package/dist/src/services/devProxyPolicy/index.cjs.map +1 -0
  732. package/dist/src/services/devProxyPolicy/index.mjs +165 -0
  733. package/dist/src/services/devProxyPolicy/index.mjs.map +1 -0
  734. package/dist/src/services/devProxyStore/index.cjs +107 -0
  735. package/dist/src/services/devProxyStore/index.cjs.map +1 -0
  736. package/dist/src/services/devProxyStore/index.mjs +104 -0
  737. package/dist/src/services/devProxyStore/index.mjs.map +1 -0
  738. package/dist/src/services/deviceAuth/index.cjs +125 -0
  739. package/dist/src/services/deviceAuth/index.cjs.map +1 -0
  740. package/dist/src/services/deviceAuth/index.d.mts +9 -0
  741. package/dist/src/services/deviceAuth/index.d.mts.map +1 -0
  742. package/dist/src/services/deviceAuth/index.mjs +125 -0
  743. package/dist/src/services/deviceAuth/index.mjs.map +1 -0
  744. package/dist/src/services/deviceSessions/index.cjs +147 -0
  745. package/dist/src/services/deviceSessions/index.cjs.map +1 -0
  746. package/dist/src/services/deviceSessions/index.d.mts +15 -0
  747. package/dist/src/services/deviceSessions/index.d.mts.map +1 -0
  748. package/dist/src/services/deviceSessions/index.mjs +141 -0
  749. package/dist/src/services/deviceSessions/index.mjs.map +1 -0
  750. package/dist/src/services/headlessClient/index.cjs +125 -0
  751. package/dist/src/services/headlessClient/index.cjs.map +1 -0
  752. package/dist/src/services/headlessClient/index.mjs +125 -0
  753. package/dist/src/services/headlessClient/index.mjs.map +1 -0
  754. package/dist/src/services/historyCreationFileSystem/index.cjs +115 -0
  755. package/dist/src/services/historyCreationFileSystem/index.cjs.map +1 -0
  756. package/dist/src/services/historyCreationFileSystem/index.mjs +115 -0
  757. package/dist/src/services/historyCreationFileSystem/index.mjs.map +1 -0
  758. package/dist/src/services/hubChannelHarness/index.cjs +50 -0
  759. package/dist/src/services/hubChannelHarness/index.cjs.map +1 -0
  760. package/dist/src/services/hubChannelHarness/index.d.mts +17 -0
  761. package/dist/src/services/hubChannelHarness/index.d.mts.map +1 -0
  762. package/dist/src/services/hubChannelHarness/index.mjs +50 -0
  763. package/dist/src/services/hubChannelHarness/index.mjs.map +1 -0
  764. package/dist/src/services/kernel/index.cjs +147 -0
  765. package/dist/src/services/kernel/index.cjs.map +1 -0
  766. package/dist/src/services/kernel/index.d.mts +9 -0
  767. package/dist/src/services/kernel/index.d.mts.map +1 -0
  768. package/dist/src/services/kernel/index.mjs +147 -0
  769. package/dist/src/services/kernel/index.mjs.map +1 -0
  770. package/dist/src/services/loginFlow/index.cjs +131 -0
  771. package/dist/src/services/loginFlow/index.cjs.map +1 -0
  772. package/dist/src/services/loginFlow/index.mjs +131 -0
  773. package/dist/src/services/loginFlow/index.mjs.map +1 -0
  774. package/dist/src/services/loopbackAddress/index.cjs +58 -0
  775. package/dist/src/services/loopbackAddress/index.cjs.map +1 -0
  776. package/dist/src/services/loopbackAddress/index.mjs +56 -0
  777. package/dist/src/services/loopbackAddress/index.mjs.map +1 -0
  778. package/dist/src/services/openSessionRegistry/index.cjs +144 -0
  779. package/dist/src/services/openSessionRegistry/index.cjs.map +1 -0
  780. package/dist/src/services/openSessionRegistry/index.d.mts +40 -0
  781. package/dist/src/services/openSessionRegistry/index.d.mts.map +1 -0
  782. package/dist/src/services/openSessionRegistry/index.mjs +141 -0
  783. package/dist/src/services/openSessionRegistry/index.mjs.map +1 -0
  784. package/dist/src/services/packageApiHarness/index.cjs +36 -0
  785. package/dist/src/services/packageApiHarness/index.cjs.map +1 -0
  786. package/dist/src/services/packageApiHarness/index.d.mts +40 -0
  787. package/dist/src/services/packageApiHarness/index.d.mts.map +1 -0
  788. package/dist/src/services/packageApiHarness/index.mjs +36 -0
  789. package/dist/src/services/packageApiHarness/index.mjs.map +1 -0
  790. package/dist/src/services/packageResource/index.cjs +54 -0
  791. package/dist/src/services/packageResource/index.cjs.map +1 -0
  792. package/dist/src/services/packageResource/index.d.mts +26 -0
  793. package/dist/src/services/packageResource/index.d.mts.map +1 -0
  794. package/dist/src/services/packageResource/index.mjs +51 -0
  795. package/dist/src/services/packageResource/index.mjs.map +1 -0
  796. package/dist/src/services/pairingFlow/index.cjs +145 -0
  797. package/dist/src/services/pairingFlow/index.cjs.map +1 -0
  798. package/dist/src/services/pairingFlow/index.d.mts +44 -0
  799. package/dist/src/services/pairingFlow/index.d.mts.map +1 -0
  800. package/dist/src/services/pairingFlow/index.mjs +145 -0
  801. package/dist/src/services/pairingFlow/index.mjs.map +1 -0
  802. package/dist/src/services/pairingPage/index.cjs +450 -0
  803. package/dist/src/services/pairingPage/index.cjs.map +1 -0
  804. package/dist/src/services/pairingPage/index.mjs +447 -0
  805. package/dist/src/services/pairingPage/index.mjs.map +1 -0
  806. package/dist/src/services/piExtensionHost/index.cjs +821 -0
  807. package/dist/src/services/piExtensionHost/index.cjs.map +1 -0
  808. package/dist/src/services/piExtensionHost/index.mjs +817 -0
  809. package/dist/src/services/piExtensionHost/index.mjs.map +1 -0
  810. package/dist/src/services/piHelpTools/index.cjs +68 -0
  811. package/dist/src/services/piHelpTools/index.cjs.map +1 -0
  812. package/dist/src/services/piHelpTools/index.d.mts +10 -0
  813. package/dist/src/services/piHelpTools/index.d.mts.map +1 -0
  814. package/dist/src/services/piHelpTools/index.mjs +68 -0
  815. package/dist/src/services/piHelpTools/index.mjs.map +1 -0
  816. package/dist/src/services/piSessionEntries/index.cjs +112 -0
  817. package/dist/src/services/piSessionEntries/index.cjs.map +1 -0
  818. package/dist/src/services/piSessionEntries/index.mjs +108 -0
  819. package/dist/src/services/piSessionEntries/index.mjs.map +1 -0
  820. package/dist/src/services/pluginLifecycle/index.cjs +71 -0
  821. package/dist/src/services/pluginLifecycle/index.cjs.map +1 -0
  822. package/dist/src/services/pluginLifecycle/index.d.mts +11 -0
  823. package/dist/src/services/pluginLifecycle/index.d.mts.map +1 -0
  824. package/dist/src/services/pluginLifecycle/index.mjs +71 -0
  825. package/dist/src/services/pluginLifecycle/index.mjs.map +1 -0
  826. package/dist/src/services/providerAuth/index.cjs +156 -0
  827. package/dist/src/services/providerAuth/index.cjs.map +1 -0
  828. package/dist/src/services/providerAuth/index.mjs +154 -0
  829. package/dist/src/services/providerAuth/index.mjs.map +1 -0
  830. package/dist/src/services/remoteAccess/index.cjs +396 -0
  831. package/dist/src/services/remoteAccess/index.cjs.map +1 -0
  832. package/dist/src/services/remoteAccess/index.d.mts +81 -0
  833. package/dist/src/services/remoteAccess/index.d.mts.map +1 -0
  834. package/dist/src/services/remoteAccess/index.mjs +396 -0
  835. package/dist/src/services/remoteAccess/index.mjs.map +1 -0
  836. package/dist/src/services/remoteAccessSettings/index.cjs +151 -0
  837. package/dist/src/services/remoteAccessSettings/index.cjs.map +1 -0
  838. package/dist/src/services/remoteAccessSettings/index.mjs +149 -0
  839. package/dist/src/services/remoteAccessSettings/index.mjs.map +1 -0
  840. package/dist/src/services/remoteAccessStore/index.cjs +126 -0
  841. package/dist/src/services/remoteAccessStore/index.cjs.map +1 -0
  842. package/dist/src/services/remoteAccessStore/index.mjs +121 -0
  843. package/dist/src/services/remoteAccessStore/index.mjs.map +1 -0
  844. package/dist/src/services/remoteGuardPolicy/index.cjs +190 -0
  845. package/dist/src/services/remoteGuardPolicy/index.cjs.map +1 -0
  846. package/dist/src/services/remoteGuardPolicy/index.d.mts +7 -0
  847. package/dist/src/services/remoteGuardPolicy/index.d.mts.map +1 -0
  848. package/dist/src/services/remoteGuardPolicy/index.mjs +186 -0
  849. package/dist/src/services/remoteGuardPolicy/index.mjs.map +1 -0
  850. package/dist/src/services/requestReceipts/index.cjs +161 -0
  851. package/dist/src/services/requestReceipts/index.cjs.map +1 -0
  852. package/dist/src/services/requestReceipts/index.d.mts +11 -0
  853. package/dist/src/services/requestReceipts/index.d.mts.map +1 -0
  854. package/dist/src/services/requestReceipts/index.mjs +161 -0
  855. package/dist/src/services/requestReceipts/index.mjs.map +1 -0
  856. package/dist/src/services/rpcTranscript/index.cjs +590 -0
  857. package/dist/src/services/rpcTranscript/index.cjs.map +1 -0
  858. package/dist/src/services/rpcTranscript/index.d.mts +50 -0
  859. package/dist/src/services/rpcTranscript/index.d.mts.map +1 -0
  860. package/dist/src/services/rpcTranscript/index.mjs +589 -0
  861. package/dist/src/services/rpcTranscript/index.mjs.map +1 -0
  862. package/dist/src/services/serverFacet/index.cjs +197 -0
  863. package/dist/src/services/serverFacet/index.cjs.map +1 -0
  864. package/dist/src/services/serverFacet/index.d.mts +31 -0
  865. package/dist/src/services/serverFacet/index.d.mts.map +1 -0
  866. package/dist/src/services/serverFacet/index.mjs +197 -0
  867. package/dist/src/services/serverFacet/index.mjs.map +1 -0
  868. package/dist/src/services/sessionGitStatus/index.cjs +46 -0
  869. package/dist/src/services/sessionGitStatus/index.cjs.map +1 -0
  870. package/dist/src/services/sessionGitStatus/index.mjs +46 -0
  871. package/dist/src/services/sessionGitStatus/index.mjs.map +1 -0
  872. package/dist/src/services/sessionGitStatus/type.d.mts +8 -0
  873. package/dist/src/services/sessionGitStatus/type.d.mts.map +1 -0
  874. package/dist/src/services/sessionMcpActivity/index.cjs +115 -0
  875. package/dist/src/services/sessionMcpActivity/index.cjs.map +1 -0
  876. package/dist/src/services/sessionMcpActivity/index.mjs +111 -0
  877. package/dist/src/services/sessionMcpActivity/index.mjs.map +1 -0
  878. package/dist/src/services/sessionMcpAuthorization/index.cjs +432 -0
  879. package/dist/src/services/sessionMcpAuthorization/index.cjs.map +1 -0
  880. package/dist/src/services/sessionMcpAuthorization/index.d.mts +123 -0
  881. package/dist/src/services/sessionMcpAuthorization/index.d.mts.map +1 -0
  882. package/dist/src/services/sessionMcpAuthorization/index.mjs +430 -0
  883. package/dist/src/services/sessionMcpAuthorization/index.mjs.map +1 -0
  884. package/dist/src/services/sessionMcpConversations/index.cjs +217 -0
  885. package/dist/src/services/sessionMcpConversations/index.cjs.map +1 -0
  886. package/dist/src/services/sessionMcpConversations/index.mjs +212 -0
  887. package/dist/src/services/sessionMcpConversations/index.mjs.map +1 -0
  888. package/dist/src/services/sessionMcpRegistrationStore/index.cjs +86 -0
  889. package/dist/src/services/sessionMcpRegistrationStore/index.cjs.map +1 -0
  890. package/dist/src/services/sessionMcpRegistrationStore/index.mjs +83 -0
  891. package/dist/src/services/sessionMcpRegistrationStore/index.mjs.map +1 -0
  892. package/dist/src/services/sessionPresentation/index.cjs +119 -0
  893. package/dist/src/services/sessionPresentation/index.cjs.map +1 -0
  894. package/dist/src/services/sessionPresentation/index.mjs +119 -0
  895. package/dist/src/services/sessionPresentation/index.mjs.map +1 -0
  896. package/dist/src/services/sqliteSessionHistory/index.cjs +105 -0
  897. package/dist/src/services/sqliteSessionHistory/index.cjs.map +1 -0
  898. package/dist/src/services/sqliteSessionHistory/index.d.mts +29 -0
  899. package/dist/src/services/sqliteSessionHistory/index.d.mts.map +1 -0
  900. package/dist/src/services/sqliteSessionHistory/index.mjs +100 -0
  901. package/dist/src/services/sqliteSessionHistory/index.mjs.map +1 -0
  902. package/dist/src/services/sqliteTranscriptReader/index.cjs +70 -0
  903. package/dist/src/services/sqliteTranscriptReader/index.cjs.map +1 -0
  904. package/dist/src/services/sqliteTranscriptReader/index.d.mts +14 -0
  905. package/dist/src/services/sqliteTranscriptReader/index.d.mts.map +1 -0
  906. package/dist/src/services/sqliteTranscriptReader/index.mjs +67 -0
  907. package/dist/src/services/sqliteTranscriptReader/index.mjs.map +1 -0
  908. package/dist/src/services/toolCost/index.cjs +47 -0
  909. package/dist/src/services/toolCost/index.cjs.map +1 -0
  910. package/dist/src/services/toolCost/index.d.mts +38 -0
  911. package/dist/src/services/toolCost/index.d.mts.map +1 -0
  912. package/dist/src/services/toolCost/index.mjs +46 -0
  913. package/dist/src/services/toolCost/index.mjs.map +1 -0
  914. package/dist/src/services/toolOverrides/index.cjs +45 -0
  915. package/dist/src/services/toolOverrides/index.cjs.map +1 -0
  916. package/dist/src/services/toolOverrides/index.d.mts +6 -0
  917. package/dist/src/services/toolOverrides/index.d.mts.map +1 -0
  918. package/dist/src/services/toolOverrides/index.mjs +45 -0
  919. package/dist/src/services/toolOverrides/index.mjs.map +1 -0
  920. package/dist/src/services/toolPrompt/index.cjs +13 -0
  921. package/dist/src/services/toolPrompt/index.cjs.map +1 -0
  922. package/dist/src/services/toolPrompt/index.mjs +13 -0
  923. package/dist/src/services/toolPrompt/index.mjs.map +1 -0
  924. package/dist/src/services/toolSurface/index.cjs +134 -0
  925. package/dist/src/services/toolSurface/index.cjs.map +1 -0
  926. package/dist/src/services/toolSurface/index.d.mts +19 -0
  927. package/dist/src/services/toolSurface/index.d.mts.map +1 -0
  928. package/dist/src/services/toolSurface/index.mjs +134 -0
  929. package/dist/src/services/toolSurface/index.mjs.map +1 -0
  930. package/dist/src/services/traceContext/index.cjs +13 -0
  931. package/dist/src/services/traceContext/index.cjs.map +1 -0
  932. package/dist/src/services/traceContext/index.mjs +13 -0
  933. package/dist/src/services/traceContext/index.mjs.map +1 -0
  934. package/dist/src/services/transcriptPages/index.cjs +74 -0
  935. package/dist/src/services/transcriptPages/index.cjs.map +1 -0
  936. package/dist/src/services/transcriptPages/index.mjs +73 -0
  937. package/dist/src/services/transcriptPages/index.mjs.map +1 -0
  938. package/dist/src/services/tunnelOutput/index.cjs +58 -0
  939. package/dist/src/services/tunnelOutput/index.cjs.map +1 -0
  940. package/dist/src/services/tunnelOutput/index.mjs +54 -0
  941. package/dist/src/services/tunnelOutput/index.mjs.map +1 -0
  942. package/dist/src/services/tunnelProcess/index.cjs +487 -0
  943. package/dist/src/services/tunnelProcess/index.cjs.map +1 -0
  944. package/dist/src/services/tunnelProcess/index.mjs +481 -0
  945. package/dist/src/services/tunnelProcess/index.mjs.map +1 -0
  946. package/dist/src/services/voiceReloadHandoff/index.cjs +136 -0
  947. package/dist/src/services/voiceReloadHandoff/index.cjs.map +1 -0
  948. package/dist/src/services/voiceReloadHandoff/index.d.mts +34 -0
  949. package/dist/src/services/voiceReloadHandoff/index.d.mts.map +1 -0
  950. package/dist/src/services/voiceReloadHandoff/index.mjs +135 -0
  951. package/dist/src/services/voiceReloadHandoff/index.mjs.map +1 -0
  952. package/dist/src/services/voiceToolsContract/index.cjs +26 -0
  953. package/dist/src/services/voiceToolsContract/index.cjs.map +1 -0
  954. package/dist/src/services/voiceToolsContract/index.d.mts +76 -0
  955. package/dist/src/services/voiceToolsContract/index.d.mts.map +1 -0
  956. package/dist/src/services/voiceToolsContract/index.mjs +24 -0
  957. package/dist/src/services/voiceToolsContract/index.mjs.map +1 -0
  958. package/dist/src/services/webauthn/index.cjs +262 -0
  959. package/dist/src/services/webauthn/index.cjs.map +1 -0
  960. package/dist/src/services/webauthn/index.d.mts +39 -0
  961. package/dist/src/services/webauthn/index.d.mts.map +1 -0
  962. package/dist/src/services/webauthn/index.mjs +262 -0
  963. package/dist/src/services/webauthn/index.mjs.map +1 -0
  964. package/dist/src/services/webauthnPolicy/index.cjs +163 -0
  965. package/dist/src/services/webauthnPolicy/index.cjs.map +1 -0
  966. package/dist/src/services/webauthnPolicy/index.d.mts +41 -0
  967. package/dist/src/services/webauthnPolicy/index.d.mts.map +1 -0
  968. package/dist/src/services/webauthnPolicy/index.mjs +156 -0
  969. package/dist/src/services/webauthnPolicy/index.mjs.map +1 -0
  970. package/dist/src/services/workspaceRegistry/index.cjs +151 -0
  971. package/dist/src/services/workspaceRegistry/index.cjs.map +1 -0
  972. package/dist/src/services/workspaceRegistry/index.d.mts +47 -0
  973. package/dist/src/services/workspaceRegistry/index.d.mts.map +1 -0
  974. package/dist/src/services/workspaceRegistry/index.mjs +144 -0
  975. package/dist/src/services/workspaceRegistry/index.mjs.map +1 -0
  976. package/dist/src/systems/child/adapters/headlessChildSessionService.cjs +261 -0
  977. package/dist/src/systems/child/adapters/headlessChildSessionService.cjs.map +1 -0
  978. package/dist/src/systems/child/adapters/headlessChildSessionService.d.mts +32 -0
  979. package/dist/src/systems/child/adapters/headlessChildSessionService.d.mts.map +1 -0
  980. package/dist/src/systems/child/adapters/headlessChildSessionService.mjs +254 -0
  981. package/dist/src/systems/child/adapters/headlessChildSessionService.mjs.map +1 -0
  982. package/dist/src/systems/child/adapters/nativeChildRuntimes.cjs +28 -0
  983. package/dist/src/systems/child/adapters/nativeChildRuntimes.cjs.map +1 -0
  984. package/dist/src/systems/child/adapters/nativeChildRuntimes.mjs +25 -0
  985. package/dist/src/systems/child/adapters/nativeChildRuntimes.mjs.map +1 -0
  986. package/dist/src/systems/child/services/childSession/index.cjs +219 -0
  987. package/dist/src/systems/child/services/childSession/index.cjs.map +1 -0
  988. package/dist/src/systems/child/services/childSession/index.d.mts +14 -0
  989. package/dist/src/systems/child/services/childSession/index.d.mts.map +1 -0
  990. package/dist/src/systems/child/services/childSession/index.mjs +219 -0
  991. package/dist/src/systems/child/services/childSession/index.mjs.map +1 -0
  992. package/dist/src/systems/child/types/childSession.cjs +19 -0
  993. package/dist/src/systems/child/types/childSession.cjs.map +1 -0
  994. package/dist/src/systems/child/types/childSession.d.mts +148 -0
  995. package/dist/src/systems/child/types/childSession.d.mts.map +1 -0
  996. package/dist/src/systems/child/types/childSession.mjs +16 -0
  997. package/dist/src/systems/child/types/childSession.mjs.map +1 -0
  998. package/dist/src/systems/main/adapters/headlessHost.cjs +554 -0
  999. package/dist/src/systems/main/adapters/headlessHost.cjs.map +1 -0
  1000. package/dist/src/systems/main/adapters/headlessHost.d.mts +111 -0
  1001. package/dist/src/systems/main/adapters/headlessHost.d.mts.map +1 -0
  1002. package/dist/src/systems/main/adapters/headlessHost.mjs +552 -0
  1003. package/dist/src/systems/main/adapters/headlessHost.mjs.map +1 -0
  1004. package/dist/src/systems/main/adapters/headlessSessionHost.cjs +1293 -0
  1005. package/dist/src/systems/main/adapters/headlessSessionHost.cjs.map +1 -0
  1006. package/dist/src/systems/main/adapters/headlessSessionHost.d.mts +14 -0
  1007. package/dist/src/systems/main/adapters/headlessSessionHost.d.mts.map +1 -0
  1008. package/dist/src/systems/main/adapters/headlessSessionHost.mjs +1288 -0
  1009. package/dist/src/systems/main/adapters/headlessSessionHost.mjs.map +1 -0
  1010. package/dist/src/systems/main/types/headlessHost.d.mts +36 -0
  1011. package/dist/src/systems/main/types/headlessHost.d.mts.map +1 -0
  1012. package/dist/src/testing/pi/extensionScenarios.cjs +73 -0
  1013. package/dist/src/testing/pi/extensionScenarios.cjs.map +1 -0
  1014. package/dist/src/testing/pi/extensionScenarios.d.mts +41 -0
  1015. package/dist/src/testing/pi/extensionScenarios.d.mts.map +1 -0
  1016. package/dist/src/testing/pi/extensionScenarios.mjs +73 -0
  1017. package/dist/src/testing/pi/extensionScenarios.mjs.map +1 -0
  1018. package/dist/src/testing/pi/testHost.cjs +398 -0
  1019. package/dist/src/testing/pi/testHost.cjs.map +1 -0
  1020. package/dist/src/testing/pi/testHost.d.mts +160 -0
  1021. package/dist/src/testing/pi/testHost.d.mts.map +1 -0
  1022. package/dist/src/testing/pi/testHost.mjs +398 -0
  1023. package/dist/src/testing/pi/testHost.mjs.map +1 -0
  1024. package/dist/src/types/config.d.mts +20 -0
  1025. package/dist/src/types/config.d.mts.map +1 -0
  1026. package/dist/src/types/kernel.d.mts +69 -0
  1027. package/dist/src/types/kernel.d.mts.map +1 -0
  1028. package/dist/src/types/remote.d.mts +124 -0
  1029. package/dist/src/types/remote.d.mts.map +1 -0
  1030. package/dist/src/types/server/directHarnessRuntime.d.mts +209 -0
  1031. package/dist/src/types/server/directHarnessRuntime.d.mts.map +1 -0
  1032. package/dist/src/types/server/session.d.mts +5 -0
  1033. package/dist/src/types/server/session.d.mts.map +1 -0
  1034. package/dist/src/types/server/sessionToolSurface.d.mts +44 -0
  1035. package/dist/src/types/server/sessionToolSurface.d.mts.map +1 -0
  1036. package/dist/src/web/models/globalStore.cjs +23 -0
  1037. package/dist/src/web/models/globalStore.cjs.map +1 -0
  1038. package/dist/src/web/models/globalStore.d.mts +6 -0
  1039. package/dist/src/web/models/globalStore.d.mts.map +1 -0
  1040. package/dist/src/web/models/globalStore.mjs +23 -0
  1041. package/dist/src/web/models/globalStore.mjs.map +1 -0
  1042. package/dist/src/web/models/sessionStore.cjs +56 -0
  1043. package/dist/src/web/models/sessionStore.cjs.map +1 -0
  1044. package/dist/src/web/models/sessionStore.d.mts +14 -0
  1045. package/dist/src/web/models/sessionStore.d.mts.map +1 -0
  1046. package/dist/src/web/models/sessionStore.mjs +56 -0
  1047. package/dist/src/web/models/sessionStore.mjs.map +1 -0
  1048. package/dist/src/web/models/workspaceStore.cjs +50 -0
  1049. package/dist/src/web/models/workspaceStore.cjs.map +1 -0
  1050. package/dist/src/web/models/workspaceStore.d.mts +18 -0
  1051. package/dist/src/web/models/workspaceStore.d.mts.map +1 -0
  1052. package/dist/src/web/models/workspaceStore.mjs +50 -0
  1053. package/dist/src/web/models/workspaceStore.mjs.map +1 -0
  1054. package/dist/src/web/schemas/bundleAssetPolicy.cjs +20 -0
  1055. package/dist/src/web/schemas/bundleAssetPolicy.cjs.map +1 -0
  1056. package/dist/src/web/schemas/bundleAssetPolicy.d.mts +10 -0
  1057. package/dist/src/web/schemas/bundleAssetPolicy.d.mts.map +1 -0
  1058. package/dist/src/web/schemas/bundleAssetPolicy.mjs +18 -0
  1059. package/dist/src/web/schemas/bundleAssetPolicy.mjs.map +1 -0
  1060. package/dist/src/web/schemas/template.cjs +15 -0
  1061. package/dist/src/web/schemas/template.cjs.map +1 -0
  1062. package/dist/src/web/schemas/template.d.mts +6 -0
  1063. package/dist/src/web/schemas/template.d.mts.map +1 -0
  1064. package/dist/src/web/schemas/template.mjs +15 -0
  1065. package/dist/src/web/schemas/template.mjs.map +1 -0
  1066. package/dist/src/web/services/apiClient/index.cjs +156 -0
  1067. package/dist/src/web/services/apiClient/index.cjs.map +1 -0
  1068. package/dist/src/web/services/apiClient/index.d.mts +152 -0
  1069. package/dist/src/web/services/apiClient/index.d.mts.map +1 -0
  1070. package/dist/src/web/services/apiClient/index.mjs +154 -0
  1071. package/dist/src/web/services/apiClient/index.mjs.map +1 -0
  1072. package/dist/src/web/services/apiPaths/index.cjs +83 -0
  1073. package/dist/src/web/services/apiPaths/index.cjs.map +1 -0
  1074. package/dist/src/web/services/apiPaths/index.d.mts +81 -0
  1075. package/dist/src/web/services/apiPaths/index.d.mts.map +1 -0
  1076. package/dist/src/web/services/apiPaths/index.mjs +78 -0
  1077. package/dist/src/web/services/apiPaths/index.mjs.map +1 -0
  1078. package/dist/src/web/services/apiRoutes/index.cjs +47 -0
  1079. package/dist/src/web/services/apiRoutes/index.cjs.map +1 -0
  1080. package/dist/src/web/services/apiRoutes/index.d.mts +21 -0
  1081. package/dist/src/web/services/apiRoutes/index.d.mts.map +1 -0
  1082. package/dist/src/web/services/apiRoutes/index.mjs +43 -0
  1083. package/dist/src/web/services/apiRoutes/index.mjs.map +1 -0
  1084. package/dist/src/web/services/mcpWidget.cjs +9 -0
  1085. package/dist/src/web/services/mcpWidget.cjs.map +1 -0
  1086. package/dist/src/web/services/mcpWidget.d.mts +6 -0
  1087. package/dist/src/web/services/mcpWidget.d.mts.map +1 -0
  1088. package/dist/src/web/services/mcpWidget.mjs +9 -0
  1089. package/dist/src/web/services/mcpWidget.mjs.map +1 -0
  1090. package/dist/src/web/services/sessionRegistry/index.cjs +70 -0
  1091. package/dist/src/web/services/sessionRegistry/index.cjs.map +1 -0
  1092. package/dist/src/web/services/sessionRegistry/index.d.mts +29 -0
  1093. package/dist/src/web/services/sessionRegistry/index.d.mts.map +1 -0
  1094. package/dist/src/web/services/sessionRegistry/index.mjs +66 -0
  1095. package/dist/src/web/services/sessionRegistry/index.mjs.map +1 -0
  1096. package/dist/src/web/services/testing/channels.cjs +11 -0
  1097. package/dist/src/web/services/testing/channels.cjs.map +1 -0
  1098. package/dist/src/web/services/testing/channels.d.mts +8 -0
  1099. package/dist/src/web/services/testing/channels.d.mts.map +1 -0
  1100. package/dist/src/web/services/testing/channels.mjs +11 -0
  1101. package/dist/src/web/services/testing/channels.mjs.map +1 -0
  1102. package/dist/src/web/services/testing/index.cjs +27 -0
  1103. package/dist/src/web/services/testing/index.cjs.map +1 -0
  1104. package/dist/src/web/services/testing/index.d.mts +31 -0
  1105. package/dist/src/web/services/testing/index.d.mts.map +1 -0
  1106. package/dist/src/web/services/testing/index.mjs +27 -0
  1107. package/dist/src/web/services/testing/index.mjs.map +1 -0
  1108. package/dist/src/web/services/testing/rpcStub.cjs +58 -0
  1109. package/dist/src/web/services/testing/rpcStub.cjs.map +1 -0
  1110. package/dist/src/web/services/testing/rpcStub.d.mts +37 -0
  1111. package/dist/src/web/services/testing/rpcStub.d.mts.map +1 -0
  1112. package/dist/src/web/services/testing/rpcStub.mjs +58 -0
  1113. package/dist/src/web/services/testing/rpcStub.mjs.map +1 -0
  1114. package/dist/src/web/services/testing/slotProps.cjs +91 -0
  1115. package/dist/src/web/services/testing/slotProps.cjs.map +1 -0
  1116. package/dist/src/web/services/testing/slotProps.d.mts +69 -0
  1117. package/dist/src/web/services/testing/slotProps.d.mts.map +1 -0
  1118. package/dist/src/web/services/testing/slotProps.mjs +90 -0
  1119. package/dist/src/web/services/testing/slotProps.mjs.map +1 -0
  1120. package/dist/src/web/services/testing/templateRail.cjs +128 -0
  1121. package/dist/src/web/services/testing/templateRail.cjs.map +1 -0
  1122. package/dist/src/web/services/testing/templateRail.d.mts +31 -0
  1123. package/dist/src/web/services/testing/templateRail.d.mts.map +1 -0
  1124. package/dist/src/web/services/testing/templateRail.mjs +126 -0
  1125. package/dist/src/web/services/testing/templateRail.mjs.map +1 -0
  1126. package/dist/src/web/services/toolResult/index.cjs +30 -0
  1127. package/dist/src/web/services/toolResult/index.cjs.map +1 -0
  1128. package/dist/src/web/services/toolResult/index.d.mts +14 -0
  1129. package/dist/src/web/services/toolResult/index.d.mts.map +1 -0
  1130. package/dist/src/web/services/toolResult/index.mjs +29 -0
  1131. package/dist/src/web/services/toolResult/index.mjs.map +1 -0
  1132. package/dist/src/web/types/extensionFile.d.mts +59 -0
  1133. package/dist/src/web/types/extensionFile.d.mts.map +1 -0
  1134. package/dist/src/web/types/mcpWidget.d.mts +14 -0
  1135. package/dist/src/web/types/mcpWidget.d.mts.map +1 -0
  1136. package/dist/src/web/types/modelContext.d.mts +43 -0
  1137. package/dist/src/web/types/modelContext.d.mts.map +1 -0
  1138. package/dist/src/web/types/sessionRegistry.d.mts +43 -0
  1139. package/dist/src/web/types/sessionRegistry.d.mts.map +1 -0
  1140. package/dist/src/web/types/template.d.mts +155 -0
  1141. package/dist/src/web/types/template.d.mts.map +1 -0
  1142. package/dist/src/web/types/webPlugin.d.mts +896 -0
  1143. package/dist/src/web/types/webPlugin.d.mts.map +1 -0
  1144. package/dist/syncLocation.cjs +244 -0
  1145. package/dist/syncLocation.cjs.map +1 -0
  1146. package/dist/syncLocation.d.mts +37 -0
  1147. package/dist/syncLocation.d.mts.map +1 -0
  1148. package/dist/syncLocation.mjs +231 -0
  1149. package/dist/syncLocation.mjs.map +1 -0
  1150. package/dist/syncRegistration.cjs +171 -0
  1151. package/dist/syncRegistration.cjs.map +1 -0
  1152. package/dist/syncRegistration.d.mts +48 -0
  1153. package/dist/syncRegistration.d.mts.map +1 -0
  1154. package/dist/syncRegistration.mjs +159 -0
  1155. package/dist/syncRegistration.mjs.map +1 -0
  1156. package/dist/syncStateContract.cjs +19 -0
  1157. package/dist/syncStateContract.cjs.map +1 -0
  1158. package/dist/syncStateContract.d.mts +14 -0
  1159. package/dist/syncStateContract.d.mts.map +1 -0
  1160. package/dist/syncStateContract.mjs +16 -0
  1161. package/dist/syncStateContract.mjs.map +1 -0
  1162. package/dist/terminalPiChildSessionService.cjs +267 -0
  1163. package/dist/terminalPiChildSessionService.cjs.map +1 -0
  1164. package/dist/terminalPiChildSessionService.d.mts +42 -0
  1165. package/dist/terminalPiChildSessionService.d.mts.map +1 -0
  1166. package/dist/terminalPiChildSessionService.mjs +260 -0
  1167. package/dist/terminalPiChildSessionService.mjs.map +1 -0
  1168. package/dist/testing.cjs +11 -0
  1169. package/dist/testing.d.mts +6 -0
  1170. package/dist/testing.mjs +6 -0
  1171. package/dist/toolInventory.cjs +136 -0
  1172. package/dist/toolInventory.cjs.map +1 -0
  1173. package/dist/toolInventory.d.mts +66 -0
  1174. package/dist/toolInventory.d.mts.map +1 -0
  1175. package/dist/toolInventory.mjs +133 -0
  1176. package/dist/toolInventory.mjs.map +1 -0
  1177. package/dist/toolNames.cjs +4 -0
  1178. package/dist/toolNames.d.mts +2 -0
  1179. package/dist/toolNames.mjs +2 -0
  1180. package/dist/toolOverrides.cjs +7 -0
  1181. package/dist/toolOverrides.d.mts +3 -0
  1182. package/dist/toolOverrides.mjs +3 -0
  1183. package/dist/toolSurface.cjs +7 -0
  1184. package/dist/toolSurface.d.mts +3 -0
  1185. package/dist/toolSurface.mjs +3 -0
  1186. package/dist/transition.cjs +5 -0
  1187. package/dist/transition.d.cjs +5 -0
  1188. package/dist/transition.d.mts +2 -0
  1189. package/dist/transition.mjs +2 -0
  1190. package/dist/transitionClassifier.cjs +112 -0
  1191. package/dist/transitionClassifier.cjs.map +1 -0
  1192. package/dist/transitionClassifier.d.mts +18 -0
  1193. package/dist/transitionClassifier.d.mts.map +1 -0
  1194. package/dist/transitionClassifier.mjs +111 -0
  1195. package/dist/transitionClassifier.mjs.map +1 -0
  1196. package/dist/transitionCoordinator.cjs +131 -0
  1197. package/dist/transitionCoordinator.cjs.map +1 -0
  1198. package/dist/transitionCoordinator.d.mts +16 -0
  1199. package/dist/transitionCoordinator.d.mts.map +1 -0
  1200. package/dist/transitionCoordinator.mjs +130 -0
  1201. package/dist/transitionCoordinator.mjs.map +1 -0
  1202. package/dist/typesContextApi.cjs +0 -0
  1203. package/dist/typesContextApi.d.mts +73 -0
  1204. package/dist/typesContextApi.d.mts.map +1 -0
  1205. package/dist/typesContextApi.mjs +1 -0
  1206. package/dist/uiHub.cjs +5 -0
  1207. package/dist/uiHub.d.mts +2 -0
  1208. package/dist/uiHub.mjs +2 -0
  1209. package/dist/v3Export.cjs +1004 -0
  1210. package/dist/v3Export.cjs.map +1 -0
  1211. package/dist/v3Export.d.mts +34 -0
  1212. package/dist/v3Export.d.mts.map +1 -0
  1213. package/dist/v3Export.mjs +1000 -0
  1214. package/dist/v3Export.mjs.map +1 -0
  1215. package/dist/voiceReloadHandoff.cjs +14 -0
  1216. package/dist/voiceReloadHandoff.d.mts +4 -0
  1217. package/dist/voiceReloadHandoff.mjs +4 -0
  1218. package/dist/voiceTools.cjs +56 -0
  1219. package/dist/voiceTools.d.mts +4 -0
  1220. package/dist/voiceTools.mjs +4 -0
  1221. package/dist/web.cjs +64 -0
  1222. package/dist/web.d.mts +19 -0
  1223. package/dist/web.mjs +13 -0
  1224. package/dist/webCompositions.cjs +100 -0
  1225. package/dist/webCompositions.cjs.map +1 -0
  1226. package/dist/webCompositions.d.mts +20 -0
  1227. package/dist/webCompositions.d.mts.map +1 -0
  1228. package/dist/webCompositions.mjs +95 -0
  1229. package/dist/webCompositions.mjs.map +1 -0
  1230. package/dist/webTesting.cjs +14 -0
  1231. package/dist/webTesting.d.mts +6 -0
  1232. package/dist/webTesting.mjs +6 -0
  1233. package/package.json +616 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/packageApiHarness/index.ts"],"sourcesContent":["import type { DoomDirectEventBus } from '../../schemas/hubChannel';\nimport {\n type DoomApi,\n type DoomApiContext,\n type DoomApiHandler,\n DOOM_API_ROUTE_PREFIX,\n type DoomApiScope,\n} from '../../schemas/packageApi';\n\n/**\n * A package's HTTP surface, mounted the way a host mounts it.\n *\n * A package tests its routes by calling its Hono app directly, which proves the\n * routes but not the mount: the host serves them under\n * `/api/plugins/<basePath>` and strips that prefix before the app sees the\n * request. A package whose routes are written absolute passes its own suite and\n * answers nothing in a running cockpit.\n *\n * This mounts the declared `DoomApi` the same way, so a test asks for the URL a\n * browser would ask for. Plain `Request` and `Response`; no HTTP framework and\n * no server.\n */\n\nexport interface MountPackageApiOptions {\n scope?: DoomApiScope;\n sessionId?: string;\n cwd?: string;\n directEvents?: DoomDirectEventBus;\n}\n\nexport interface MountedPackageApi {\n /** Where the host mounted it, for building a URL the way a client does. */\n readonly mountPath: string;\n /** What the API reported to its host; a package that notices nothing leaves this empty. */\n readonly notices: readonly string[];\n /**\n * Fetches one path.\n *\n * The path is host-absolute, so it carries the mount the client would send:\n * `/api/plugins/workflow/runs/repo/blog-4`. A path outside the mount is a 404\n * from this, exactly as it is from the host.\n */\n fetch(path: string, init?: RequestInit): Promise<Response>;\n close(): void;\n}\n\nconst DEFAULT_SCOPE: DoomApiScope = 'global';\nconst DEFAULT_CWD = '/repo';\n/** Any origin will do: the host routes on path, and a Request needs an absolute URL. */\nconst ORIGIN = 'http://host';\n\nexport function mountPackageApi(api: DoomApi, options: MountPackageApiOptions = {}): MountedPackageApi {\n const scope = options.scope ?? DEFAULT_SCOPE;\n const notices: string[] = [];\n const mountPath = `${DOOM_API_ROUTE_PREFIX}/${api.basePath}`;\n const context: DoomApiContext = {\n scope,\n // A session-scoped host knows both; a hub-scoped one knows neither, and an\n // API that reads them anyway should see the same undefined it would there.\n ...(scope === 'session' ? { sessionId: options.sessionId ?? 'test-session', cwd: options.cwd ?? DEFAULT_CWD } : {}),\n ...(options.directEvents ? { directEvents: options.directEvents } : {}),\n onNotice: (message) => notices.push(message),\n };\n const handler: DoomApiHandler = api.start(context);\n\n return {\n mountPath,\n notices,\n async fetch(path, init) {\n const url = new URL(path, ORIGIN);\n if (url.pathname !== mountPath && !url.pathname.startsWith(`${mountPath}/`)) {\n return new Response(`No package API is mounted at ${url.pathname}.`, { status: 404 });\n }\n // The host strips its own mount, so a package declares '/runs/:id' and\n // never repeats where it was mounted.\n url.pathname = url.pathname.slice(mountPath.length) || '/';\n return handler.fetch(new Request(url, init));\n },\n close: () => handler.close(),\n };\n}\n"],"mappings":";;AA8CA,MAAM,gBAA8B;AACpC,MAAM,cAAc;;AAEpB,MAAM,SAAS;AAEf,SAAgB,gBAAgB,KAAc,UAAkC,CAAC,GAAsB;CACrG,MAAM,QAAQ,QAAQ,SAAS;CAC/B,MAAM,UAAoB,CAAC;CAC3B,MAAM,YAAY,GAAG,sBAAsB,GAAG,IAAI;CAClD,MAAM,UAA0B;EAC9B;EAGA,GAAI,UAAU,YAAY;GAAE,WAAW,QAAQ,aAAa;GAAgB,KAAK,QAAQ,OAAO;EAAY,IAAI,CAAC;EACjH,GAAI,QAAQ,eAAe,EAAE,cAAc,QAAQ,aAAa,IAAI,CAAC;EACrE,WAAW,YAAY,QAAQ,KAAK,OAAO;CAC7C;CACA,MAAM,UAA0B,IAAI,MAAM,OAAO;CAEjD,OAAO;EACL;EACA;EACA,MAAM,MAAM,MAAM,MAAM;GACtB,MAAM,MAAM,IAAI,IAAI,MAAM,MAAM;GAChC,IAAI,IAAI,aAAa,aAAa,CAAC,IAAI,SAAS,WAAW,GAAG,UAAU,EAAE,GACxE,OAAO,IAAI,SAAS,gCAAgC,IAAI,SAAS,IAAI,EAAE,QAAQ,IAAI,CAAC;GAItF,IAAI,WAAW,IAAI,SAAS,MAAM,UAAU,MAAM,KAAK;GACvD,OAAO,QAAQ,MAAM,IAAI,QAAQ,KAAK,IAAI,CAAC;EAC7C;EACA,aAAa,QAAQ,MAAM;CAC7B;AACF"}
@@ -0,0 +1,54 @@
1
+ const require_runtime = require("../../../_virtual/_rolldown/runtime.cjs");
2
+ let node_fs = require("node:fs");
3
+ let node_path = require("node:path");
4
+ node_path = require_runtime.__toESM(node_path, 1);
5
+ let node_fs_promises = require("node:fs/promises");
6
+ let node_url = require("node:url");
7
+ //#region src/services/packageResource/index.ts
8
+ /**
9
+ * Absolute path of a file shipped by the calling package.
10
+ *
11
+ * Anchored on the nearest ancestor holding a `package.json`, which is the only
12
+ * sentinel that is correct from `src/` and from `dist/` alike. Counting levels
13
+ * with a fixed `new URL('../../..', import.meta.url)` is not: a bundled entry
14
+ * sits at a different depth than its source, so the walk lands outside the
15
+ * package and every read misses.
16
+ *
17
+ * `moduleUrl` is required on purpose. A default of `import.meta.url` resolves to
18
+ * this package rather than the caller's, which is a silently wrong answer.
19
+ */
20
+ function packageResourcePath(moduleUrl, file) {
21
+ let directory = node_path.default.dirname((0, node_url.fileURLToPath)(moduleUrl));
22
+ for (;;) {
23
+ if ((0, node_fs.existsSync)(node_path.default.join(directory, "package.json"))) {
24
+ const candidate = node_path.default.join(directory, file);
25
+ return (0, node_fs.existsSync)(candidate) ? candidate : void 0;
26
+ }
27
+ const parent = node_path.default.dirname(directory);
28
+ if (parent === directory) return void 0;
29
+ directory = parent;
30
+ }
31
+ }
32
+ /**
33
+ * Text of a file shipped by the calling package, or `''` when it is not there.
34
+ *
35
+ * Empty rather than a placeholder, and never a throw. A context resource's text
36
+ * is pasted into the system prompt, so `'(resource unavailable: README.md)'` is
37
+ * a string the model pays for and may act on; `''` is dropped by the prompt
38
+ * composer instead. A throw is worse still: it propagates out of resource
39
+ * resolution and fails the whole prompt build.
40
+ */
41
+ async function readPackageResource(moduleUrl, file) {
42
+ const resolved = packageResourcePath(moduleUrl, file);
43
+ if (resolved === void 0) return "";
44
+ try {
45
+ return await (0, node_fs_promises.readFile)(resolved, "utf8");
46
+ } catch {
47
+ return "";
48
+ }
49
+ }
50
+ //#endregion
51
+ exports.packageResourcePath = packageResourcePath;
52
+ exports.readPackageResource = readPackageResource;
53
+
54
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["path","fileURLToPath","existsSync","readFile"],"sources":["../../../../src/services/packageResource/index.ts"],"sourcesContent":["import { existsSync } from 'node:fs';\nimport { readFile } from 'node:fs/promises';\nimport path from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\n/**\n * Absolute path of a file shipped by the calling package.\n *\n * Anchored on the nearest ancestor holding a `package.json`, which is the only\n * sentinel that is correct from `src/` and from `dist/` alike. Counting levels\n * with a fixed `new URL('../../..', import.meta.url)` is not: a bundled entry\n * sits at a different depth than its source, so the walk lands outside the\n * package and every read misses.\n *\n * `moduleUrl` is required on purpose. A default of `import.meta.url` resolves to\n * this package rather than the caller's, which is a silently wrong answer.\n */\nexport function packageResourcePath(moduleUrl: string | URL, file: string): string | undefined {\n let directory = path.dirname(fileURLToPath(moduleUrl));\n for (;;) {\n if (existsSync(path.join(directory, 'package.json'))) {\n const candidate = path.join(directory, file);\n return existsSync(candidate) ? candidate : undefined;\n }\n const parent = path.dirname(directory);\n if (parent === directory) return undefined;\n directory = parent;\n }\n}\n\n/**\n * Text of a file shipped by the calling package, or `''` when it is not there.\n *\n * Empty rather than a placeholder, and never a throw. A context resource's text\n * is pasted into the system prompt, so `'(resource unavailable: README.md)'` is\n * a string the model pays for and may act on; `''` is dropped by the prompt\n * composer instead. A throw is worse still: it propagates out of resource\n * resolution and fails the whole prompt build.\n */\nexport async function readPackageResource(moduleUrl: string | URL, file: string): Promise<string> {\n const resolved = packageResourcePath(moduleUrl, file);\n if (resolved === undefined) return '';\n try {\n return await readFile(resolved, 'utf8');\n } catch {\n return '';\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAiBA,SAAgB,oBAAoB,WAAyB,MAAkC;CAC7F,IAAI,YAAYA,UAAAA,QAAK,SAAA,GAAQC,SAAAA,cAAAA,CAAc,SAAS,CAAC;CACrD,SAAS;EACP,KAAA,GAAIC,QAAAA,WAAAA,CAAWF,UAAAA,QAAK,KAAK,WAAW,cAAc,CAAC,GAAG;GACpD,MAAM,YAAYA,UAAAA,QAAK,KAAK,WAAW,IAAI;GAC3C,QAAA,GAAOE,QAAAA,WAAAA,CAAW,SAAS,IAAI,YAAY,KAAA;EAC7C;EACA,MAAM,SAASF,UAAAA,QAAK,QAAQ,SAAS;EACrC,IAAI,WAAW,WAAW,OAAO,KAAA;EACjC,YAAY;CACd;AACF;;;;;;;;;;AAWA,eAAsB,oBAAoB,WAAyB,MAA+B;CAChG,MAAM,WAAW,oBAAoB,WAAW,IAAI;CACpD,IAAI,aAAa,KAAA,GAAW,OAAO;CACnC,IAAI;EACF,OAAO,OAAA,GAAMG,iBAAAA,SAAAA,CAAS,UAAU,MAAM;CACxC,QAAQ;EACN,OAAO;CACT;AACF"}
@@ -0,0 +1,26 @@
1
+ //#region src/services/packageResource/index.d.ts
2
+ /**
3
+ * Absolute path of a file shipped by the calling package.
4
+ *
5
+ * Anchored on the nearest ancestor holding a `package.json`, which is the only
6
+ * sentinel that is correct from `src/` and from `dist/` alike. Counting levels
7
+ * with a fixed `new URL('../../..', import.meta.url)` is not: a bundled entry
8
+ * sits at a different depth than its source, so the walk lands outside the
9
+ * package and every read misses.
10
+ *
11
+ * `moduleUrl` is required on purpose. A default of `import.meta.url` resolves to
12
+ * this package rather than the caller's, which is a silently wrong answer.
13
+ */
14
+ export declare function packageResourcePath(moduleUrl: string | URL, file: string): string | undefined;
15
+ /**
16
+ * Text of a file shipped by the calling package, or `''` when it is not there.
17
+ *
18
+ * Empty rather than a placeholder, and never a throw. A context resource's text
19
+ * is pasted into the system prompt, so `'(resource unavailable: README.md)'` is
20
+ * a string the model pays for and may act on; `''` is dropped by the prompt
21
+ * composer instead. A throw is worse still: it propagates out of resource
22
+ * resolution and fails the whole prompt build.
23
+ */
24
+ export declare function readPackageResource(moduleUrl: string | URL, file: string): Promise<string>;
25
+ //#endregion
26
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/services/packageResource/index.ts"],"mappings":";;;;;;;;;;;;;wBAiBgB,oBAAoB,oBAAoB,KAAK;;;;;;;;;;wBAsBvC,oBAAoB,oBAAoB,KAAK,eAAe"}
@@ -0,0 +1,51 @@
1
+ import { existsSync } from "node:fs";
2
+ import path from "node:path";
3
+ import { readFile } from "node:fs/promises";
4
+ import { fileURLToPath } from "node:url";
5
+ //#region src/services/packageResource/index.ts
6
+ /**
7
+ * Absolute path of a file shipped by the calling package.
8
+ *
9
+ * Anchored on the nearest ancestor holding a `package.json`, which is the only
10
+ * sentinel that is correct from `src/` and from `dist/` alike. Counting levels
11
+ * with a fixed `new URL('../../..', import.meta.url)` is not: a bundled entry
12
+ * sits at a different depth than its source, so the walk lands outside the
13
+ * package and every read misses.
14
+ *
15
+ * `moduleUrl` is required on purpose. A default of `import.meta.url` resolves to
16
+ * this package rather than the caller's, which is a silently wrong answer.
17
+ */
18
+ function packageResourcePath(moduleUrl, file) {
19
+ let directory = path.dirname(fileURLToPath(moduleUrl));
20
+ for (;;) {
21
+ if (existsSync(path.join(directory, "package.json"))) {
22
+ const candidate = path.join(directory, file);
23
+ return existsSync(candidate) ? candidate : void 0;
24
+ }
25
+ const parent = path.dirname(directory);
26
+ if (parent === directory) return void 0;
27
+ directory = parent;
28
+ }
29
+ }
30
+ /**
31
+ * Text of a file shipped by the calling package, or `''` when it is not there.
32
+ *
33
+ * Empty rather than a placeholder, and never a throw. A context resource's text
34
+ * is pasted into the system prompt, so `'(resource unavailable: README.md)'` is
35
+ * a string the model pays for and may act on; `''` is dropped by the prompt
36
+ * composer instead. A throw is worse still: it propagates out of resource
37
+ * resolution and fails the whole prompt build.
38
+ */
39
+ async function readPackageResource(moduleUrl, file) {
40
+ const resolved = packageResourcePath(moduleUrl, file);
41
+ if (resolved === void 0) return "";
42
+ try {
43
+ return await readFile(resolved, "utf8");
44
+ } catch {
45
+ return "";
46
+ }
47
+ }
48
+ //#endregion
49
+ export { packageResourcePath, readPackageResource };
50
+
51
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/packageResource/index.ts"],"sourcesContent":["import { existsSync } from 'node:fs';\nimport { readFile } from 'node:fs/promises';\nimport path from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\n/**\n * Absolute path of a file shipped by the calling package.\n *\n * Anchored on the nearest ancestor holding a `package.json`, which is the only\n * sentinel that is correct from `src/` and from `dist/` alike. Counting levels\n * with a fixed `new URL('../../..', import.meta.url)` is not: a bundled entry\n * sits at a different depth than its source, so the walk lands outside the\n * package and every read misses.\n *\n * `moduleUrl` is required on purpose. A default of `import.meta.url` resolves to\n * this package rather than the caller's, which is a silently wrong answer.\n */\nexport function packageResourcePath(moduleUrl: string | URL, file: string): string | undefined {\n let directory = path.dirname(fileURLToPath(moduleUrl));\n for (;;) {\n if (existsSync(path.join(directory, 'package.json'))) {\n const candidate = path.join(directory, file);\n return existsSync(candidate) ? candidate : undefined;\n }\n const parent = path.dirname(directory);\n if (parent === directory) return undefined;\n directory = parent;\n }\n}\n\n/**\n * Text of a file shipped by the calling package, or `''` when it is not there.\n *\n * Empty rather than a placeholder, and never a throw. A context resource's text\n * is pasted into the system prompt, so `'(resource unavailable: README.md)'` is\n * a string the model pays for and may act on; `''` is dropped by the prompt\n * composer instead. A throw is worse still: it propagates out of resource\n * resolution and fails the whole prompt build.\n */\nexport async function readPackageResource(moduleUrl: string | URL, file: string): Promise<string> {\n const resolved = packageResourcePath(moduleUrl, file);\n if (resolved === undefined) return '';\n try {\n return await readFile(resolved, 'utf8');\n } catch {\n return '';\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAiBA,SAAgB,oBAAoB,WAAyB,MAAkC;CAC7F,IAAI,YAAY,KAAK,QAAQ,cAAc,SAAS,CAAC;CACrD,SAAS;EACP,IAAI,WAAW,KAAK,KAAK,WAAW,cAAc,CAAC,GAAG;GACpD,MAAM,YAAY,KAAK,KAAK,WAAW,IAAI;GAC3C,OAAO,WAAW,SAAS,IAAI,YAAY,KAAA;EAC7C;EACA,MAAM,SAAS,KAAK,QAAQ,SAAS;EACrC,IAAI,WAAW,WAAW,OAAO,KAAA;EACjC,YAAY;CACd;AACF;;;;;;;;;;AAWA,eAAsB,oBAAoB,WAAyB,MAA+B;CAChG,MAAM,WAAW,oBAAoB,WAAW,IAAI;CACpD,IAAI,aAAa,KAAA,GAAW,OAAO;CACnC,IAAI;EACF,OAAO,MAAM,SAAS,UAAU,MAAM;CACxC,QAAQ;EACN,OAAO;CACT;AACF"}
@@ -0,0 +1,145 @@
1
+ const require_remote = require("../../constants/remote.cjs");
2
+ const require_index = require("../deviceSessions/index.cjs");
3
+ //#region src/services/pairingFlow/index.ts
4
+ /**
5
+ * Pairing a device, as a state machine over injected randomness and time.
6
+ *
7
+ * code (120s) --claim--> pending (180s) --approve--> approved --consume--> consumed
8
+ * | \
9
+ * +----- deny -------+--> denied
10
+ *
11
+ * The host approval step is the point. A scanned code proves someone is
12
+ * standing where the screen is, but a screen is visible over a shoulder and in
13
+ * a screenshare, so the code alone is a single factor for a credential that
14
+ * ends in shell access. Approving on the machine is the second.
15
+ *
16
+ * Randomness and hashing arrive as functions so this file stays free of
17
+ * node:crypto and testable with a counter.
18
+ */
19
+ /** Failed claims allowed per source inside one window before the endpoint starts refusing. */
20
+ const ATTEMPT_LIMIT = 10;
21
+ const ATTEMPT_WINDOW_MS = 6e4;
22
+ /** Caps throttle state even if many distinct peers reach the listener. */
23
+ const SOURCE_LIMIT = 1024;
24
+ /** How long a settled request stays readable, so a late approval is still collectable. */
25
+ const PAIRING_REQUEST_RETENTION_MS = require_remote.PAIRING_REQUEST_TTL_MS * 2;
26
+ function createPairingFlow(options) {
27
+ /** Only the newest code pair is live, so minting another retires both old codes. */
28
+ let liveCode;
29
+ const requests = /* @__PURE__ */ new Map();
30
+ const attemptsBySource = /* @__PURE__ */ new Map();
31
+ const notice = options.onNotice ?? (() => {});
32
+ const isExpired = (request, now) => request.status === "pending" && now - request.createdAt >= 18e4;
33
+ /** Derived rather than scheduled, so a stopped clock cannot leave a request live. */
34
+ const statusOf = (request, now) => isExpired(request, now) ? "expired" : request.status;
35
+ const countFailure = (sourceAddress, now) => {
36
+ const source = sourceAddress ?? "unknown";
37
+ let attempts = attemptsBySource.get(source);
38
+ if (attempts === void 0 || now - attempts.windowStartedAt >= ATTEMPT_WINDOW_MS) {
39
+ if (attempts === void 0 && attemptsBySource.size >= SOURCE_LIMIT) {
40
+ const oldest = attemptsBySource.keys().next().value;
41
+ if (oldest !== void 0) attemptsBySource.delete(oldest);
42
+ }
43
+ attempts = {
44
+ windowStartedAt: now,
45
+ failures: 0
46
+ };
47
+ attemptsBySource.set(source, attempts);
48
+ }
49
+ attempts.failures += 1;
50
+ if (attempts.failures === 11) notice(`pairing claim abuse detected from ${source}; throttling invalid attempts`);
51
+ return attempts.failures > ATTEMPT_LIMIT ? "rate_limited" : "ok";
52
+ };
53
+ return {
54
+ mintCode() {
55
+ const code = options.randomToken();
56
+ const manualCode = options.randomManualCode();
57
+ const expiresAt = options.now() + require_remote.PAIRING_CODE_TTL_MS;
58
+ liveCode = {
59
+ hashes: [options.digest(code), options.digest(manualCode)],
60
+ expiresAt
61
+ };
62
+ return {
63
+ code,
64
+ manualCode,
65
+ expiresAt
66
+ };
67
+ },
68
+ claim(input) {
69
+ const now = options.now();
70
+ const presented = options.digest(input.code);
71
+ if (liveCode === void 0 || now >= liveCode.expiresAt || !liveCode.hashes.includes(presented)) {
72
+ const limit = countFailure(input.sourceAddress, now);
73
+ if (limit !== "ok") return {
74
+ ok: false,
75
+ code: limit
76
+ };
77
+ return {
78
+ ok: false,
79
+ code: "unknown_code"
80
+ };
81
+ }
82
+ liveCode = void 0;
83
+ const request = {
84
+ id: options.randomToken(),
85
+ userAgent: require_index.sanitizeUserAgent(input.userAgent),
86
+ edgeIp: require_index.sanitizeEdgeIp(input.edgeIp),
87
+ createdAt: now,
88
+ status: "pending"
89
+ };
90
+ requests.set(request.id, request);
91
+ notice(`pairing requested from ${request.userAgent} via ${request.edgeIp}`);
92
+ return {
93
+ ok: true,
94
+ requestId: request.id
95
+ };
96
+ },
97
+ status(requestId) {
98
+ const request = requests.get(requestId);
99
+ return request === void 0 ? void 0 : statusOf(request, options.now());
100
+ },
101
+ approve(requestId) {
102
+ const request = requests.get(requestId);
103
+ if (request === void 0) return "unknown";
104
+ const now = options.now();
105
+ if (isExpired(request, now)) return "expired";
106
+ if (request.status !== "pending") return "settled";
107
+ request.status = "approved";
108
+ notice(`pairing approved for ${request.userAgent}`);
109
+ return "approved";
110
+ },
111
+ deny(requestId) {
112
+ const request = requests.get(requestId);
113
+ if (request === void 0) return "unknown";
114
+ if (request.status !== "pending") return "settled";
115
+ request.status = "denied";
116
+ notice(`pairing denied for ${request.userAgent}`);
117
+ return "denied";
118
+ },
119
+ consume(requestId) {
120
+ const request = requests.get(requestId);
121
+ if (request === void 0 || request.status !== "approved") return void 0;
122
+ request.status = "consumed";
123
+ return { userAgent: request.userAgent };
124
+ },
125
+ pending() {
126
+ const now = options.now();
127
+ return [...requests.values()].filter((request) => statusOf(request, now) === "pending");
128
+ },
129
+ sweep() {
130
+ const now = options.now();
131
+ for (const [id, request] of requests) if (now - request.createdAt >= PAIRING_REQUEST_RETENTION_MS) requests.delete(id);
132
+ if (liveCode !== void 0 && now >= liveCode.expiresAt) liveCode = void 0;
133
+ for (const [source, attempts] of attemptsBySource) if (now - attempts.windowStartedAt >= ATTEMPT_WINDOW_MS) attemptsBySource.delete(source);
134
+ },
135
+ clear() {
136
+ requests.clear();
137
+ liveCode = void 0;
138
+ attemptsBySource.clear();
139
+ }
140
+ };
141
+ }
142
+ //#endregion
143
+ exports.createPairingFlow = createPairingFlow;
144
+
145
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["PAIRING_REQUEST_TTL_MS","PAIRING_CODE_TTL_MS","sanitizeUserAgent","sanitizeEdgeIp"],"sources":["../../../../src/services/pairingFlow/index.ts"],"sourcesContent":["/**\n * Pairing a device, as a state machine over injected randomness and time.\n *\n * code (120s) --claim--> pending (180s) --approve--> approved --consume--> consumed\n * | \\\n * +----- deny -------+--> denied\n *\n * The host approval step is the point. A scanned code proves someone is\n * standing where the screen is, but a screen is visible over a shoulder and in\n * a screenshare, so the code alone is a single factor for a credential that\n * ends in shell access. Approving on the machine is the second.\n *\n * Randomness and hashing arrive as functions so this file stays free of\n * node:crypto and testable with a counter.\n */\n\nimport { PAIRING_CODE_TTL_MS, PAIRING_REQUEST_TTL_MS } from '../../constants/remote';\nimport { type PairingStatus } from '../../types/remote';\nimport { sanitizeEdgeIp, sanitizeUserAgent } from '../deviceSessions';\n\n/** Failed claims allowed per source inside one window before the endpoint starts refusing. */\nconst ATTEMPT_LIMIT = 10;\nconst ATTEMPT_WINDOW_MS = 60_000;\n/** Caps throttle state even if many distinct peers reach the listener. */\nconst SOURCE_LIMIT = 1024;\n/** How long a settled request stays readable, so a late approval is still collectable. */\nconst PAIRING_REQUEST_RETENTION_MS = PAIRING_REQUEST_TTL_MS * 2;\n\nexport interface PairingRequest {\n id: string;\n userAgent: string;\n edgeIp: string;\n createdAt: number;\n status: PairingStatus;\n}\n\nexport type ClaimOutcome = { ok: true; requestId: string } | { ok: false; code: 'unknown_code' | 'rate_limited' };\n\nexport interface PairingFlowOptions {\n /** Returns a fresh high-entropy token carried only by the QR fragment. */\n randomToken: () => string;\n /** Returns a short numeric code intended for manual entry. */\n randomManualCode: () => string;\n /** One-way digest of a token; only the digest is retained. */\n digest: (token: string) => string;\n now: () => number;\n onNotice?: (message: string) => void;\n}\n\nexport interface PairingFlow {\n /** Mints a QR token and a separate manual code. Replaces the previous pair. */\n mintCode(): { code: string; manualCode: string; expiresAt: number };\n claim(input: {\n code: string;\n userAgent: string | undefined;\n edgeIp: string | undefined;\n /** Source normalized by the adapter from trusted proxy metadata or the socket peer. */\n sourceAddress: string | undefined;\n }): ClaimOutcome;\n status(requestId: string): PairingStatus | undefined;\n approve(requestId: string): 'approved' | 'unknown' | 'expired' | 'settled';\n deny(requestId: string): 'denied' | 'unknown' | 'settled';\n /** Takes an approved request exactly once, returning what the device record needs. */\n consume(requestId: string): { userAgent: string } | undefined;\n pending(): readonly PairingRequest[];\n /** Drops what has aged out. Only reclaims memory; expiry is derived, not scheduled. */\n sweep(): void;\n clear(): void;\n}\n\nexport function createPairingFlow(options: PairingFlowOptions): PairingFlow {\n /** Only the newest code pair is live, so minting another retires both old codes. */\n let liveCode: { hashes: readonly [string, string]; expiresAt: number } | undefined;\n const requests = new Map<string, PairingRequest>();\n const attemptsBySource = new Map<string, { windowStartedAt: number; failures: number }>();\n\n const notice = options.onNotice ?? ((): void => {});\n\n const isExpired = (request: PairingRequest, now: number): boolean =>\n request.status === 'pending' && now - request.createdAt >= PAIRING_REQUEST_TTL_MS;\n\n /** Derived rather than scheduled, so a stopped clock cannot leave a request live. */\n const statusOf = (request: PairingRequest, now: number): PairingStatus =>\n isExpired(request, now) ? 'expired' : request.status;\n\n const countFailure = (sourceAddress: string | undefined, now: number): 'ok' | 'rate_limited' => {\n const source = sourceAddress ?? 'unknown';\n let attempts = attemptsBySource.get(source);\n if (attempts === undefined || now - attempts.windowStartedAt >= ATTEMPT_WINDOW_MS) {\n if (attempts === undefined && attemptsBySource.size >= SOURCE_LIMIT) {\n const oldest = attemptsBySource.keys().next().value as string | undefined;\n if (oldest !== undefined) attemptsBySource.delete(oldest);\n }\n attempts = { windowStartedAt: now, failures: 0 };\n attemptsBySource.set(source, attempts);\n }\n attempts.failures += 1;\n if (attempts.failures === ATTEMPT_LIMIT + 1) {\n notice(`pairing claim abuse detected from ${source}; throttling invalid attempts`);\n }\n return attempts.failures > ATTEMPT_LIMIT ? 'rate_limited' : 'ok';\n };\n\n return {\n mintCode() {\n const code = options.randomToken();\n const manualCode = options.randomManualCode();\n const expiresAt = options.now() + PAIRING_CODE_TTL_MS;\n liveCode = { hashes: [options.digest(code), options.digest(manualCode)], expiresAt };\n return { code, manualCode, expiresAt };\n },\n\n claim(input) {\n const now = options.now();\n const presented = options.digest(input.code);\n // The QR token and manual code are one logical credential. A successful\n // claim retires both so neither representation can be replayed.\n if (liveCode === undefined || now >= liveCode.expiresAt || !liveCode.hashes.includes(presented)) {\n const limit = countFailure(input.sourceAddress, now);\n if (limit !== 'ok') return { ok: false, code: limit };\n return { ok: false, code: 'unknown_code' };\n }\n liveCode = undefined;\n const request: PairingRequest = {\n id: options.randomToken(),\n userAgent: sanitizeUserAgent(input.userAgent),\n edgeIp: sanitizeEdgeIp(input.edgeIp),\n createdAt: now,\n status: 'pending',\n };\n requests.set(request.id, request);\n notice(`pairing requested from ${request.userAgent} via ${request.edgeIp}`);\n return { ok: true, requestId: request.id };\n },\n\n status(requestId) {\n const request = requests.get(requestId);\n return request === undefined ? undefined : statusOf(request, options.now());\n },\n\n approve(requestId) {\n const request = requests.get(requestId);\n if (request === undefined) return 'unknown';\n const now = options.now();\n if (isExpired(request, now)) return 'expired';\n if (request.status !== 'pending') return 'settled';\n request.status = 'approved';\n notice(`pairing approved for ${request.userAgent}`);\n return 'approved';\n },\n\n deny(requestId) {\n const request = requests.get(requestId);\n if (request === undefined) return 'unknown';\n if (request.status !== 'pending') return 'settled';\n request.status = 'denied';\n notice(`pairing denied for ${request.userAgent}`);\n return 'denied';\n },\n\n consume(requestId) {\n const request = requests.get(requestId);\n if (request === undefined || request.status !== 'approved') return undefined;\n // Single use with no grace window. If the response is lost in flight the\n // user rescans, which costs five seconds and removes any question about\n // who else might be holding this id.\n request.status = 'consumed';\n return { userAgent: request.userAgent };\n },\n\n pending() {\n const now = options.now();\n return [...requests.values()].filter((request) => statusOf(request, now) === 'pending');\n },\n\n sweep() {\n const now = options.now();\n for (const [id, request] of requests) {\n // A settled request is kept well past its window rather than dropped on\n // sight: an approval landing in the last second still has to be\n // collected by the phone's next poll, and a denied one should read as\n // denied rather than decay into \"no such request\".\n if (now - request.createdAt >= PAIRING_REQUEST_RETENTION_MS) requests.delete(id);\n }\n if (liveCode !== undefined && now >= liveCode.expiresAt) liveCode = undefined;\n for (const [source, attempts] of attemptsBySource) {\n if (now - attempts.windowStartedAt >= ATTEMPT_WINDOW_MS) attemptsBySource.delete(source);\n }\n },\n\n clear() {\n requests.clear();\n liveCode = undefined;\n attemptsBySource.clear();\n },\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import { PairingStatus } from "../../types/remote.mjs";
2
+ //#region src/services/pairingFlow/index.d.ts
3
+ export interface PairingRequest {
4
+ id: string;
5
+ userAgent: string;
6
+ edgeIp: string;
7
+ createdAt: number;
8
+ status: PairingStatus;
9
+ }
10
+ export type ClaimOutcome = {
11
+ ok: true;
12
+ requestId: string;
13
+ } | {
14
+ ok: false;
15
+ code: 'unknown_code' | 'rate_limited';
16
+ };
17
+ export interface PairingFlow {
18
+ /** Mints a QR token and a separate manual code. Replaces the previous pair. */
19
+ mintCode(): {
20
+ code: string;
21
+ manualCode: string;
22
+ expiresAt: number;
23
+ };
24
+ claim(input: {
25
+ code: string;
26
+ userAgent: string | undefined;
27
+ edgeIp: string | undefined;
28
+ /** Source normalized by the adapter from trusted proxy metadata or the socket peer. */
29
+ sourceAddress: string | undefined;
30
+ }): ClaimOutcome;
31
+ status(requestId: string): PairingStatus | undefined;
32
+ approve(requestId: string): 'approved' | 'unknown' | 'expired' | 'settled';
33
+ deny(requestId: string): 'denied' | 'unknown' | 'settled';
34
+ /** Takes an approved request exactly once, returning what the device record needs. */
35
+ consume(requestId: string): {
36
+ userAgent: string;
37
+ } | undefined;
38
+ pending(): readonly PairingRequest[];
39
+ /** Drops what has aged out. Only reclaims memory; expiry is derived, not scheduled. */
40
+ sweep(): void;
41
+ clear(): void;
42
+ }
43
+ //#endregion
44
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/services/pairingFlow/index.ts"],"mappings":";;iBA4BiB;EACf;EACA;EACA;EACA;EACA,QAAQ;;YAGE;EAAiB;EAAU;;EAAwB;EAAW;;iBAazD;;EAEf;IAAc;IAAc;IAAoB;;EAChD,MAAM;IACJ;IACA;IACA;;IAEA;MACE;EACJ,OAAO,oBAAoB;EAC3B,QAAQ;EACR,KAAK;;EAEL,QAAQ;IAAsB;;EAC9B,oBAAoB;;EAEpB;EACA"}
@@ -0,0 +1,145 @@
1
+ import { PAIRING_CODE_TTL_MS, PAIRING_REQUEST_TTL_MS } from "../../constants/remote.mjs";
2
+ import { sanitizeEdgeIp, sanitizeUserAgent } from "../deviceSessions/index.mjs";
3
+ //#region src/services/pairingFlow/index.ts
4
+ /**
5
+ * Pairing a device, as a state machine over injected randomness and time.
6
+ *
7
+ * code (120s) --claim--> pending (180s) --approve--> approved --consume--> consumed
8
+ * | \
9
+ * +----- deny -------+--> denied
10
+ *
11
+ * The host approval step is the point. A scanned code proves someone is
12
+ * standing where the screen is, but a screen is visible over a shoulder and in
13
+ * a screenshare, so the code alone is a single factor for a credential that
14
+ * ends in shell access. Approving on the machine is the second.
15
+ *
16
+ * Randomness and hashing arrive as functions so this file stays free of
17
+ * node:crypto and testable with a counter.
18
+ */
19
+ /** Failed claims allowed per source inside one window before the endpoint starts refusing. */
20
+ const ATTEMPT_LIMIT = 10;
21
+ const ATTEMPT_WINDOW_MS = 6e4;
22
+ /** Caps throttle state even if many distinct peers reach the listener. */
23
+ const SOURCE_LIMIT = 1024;
24
+ /** How long a settled request stays readable, so a late approval is still collectable. */
25
+ const PAIRING_REQUEST_RETENTION_MS = PAIRING_REQUEST_TTL_MS * 2;
26
+ function createPairingFlow(options) {
27
+ /** Only the newest code pair is live, so minting another retires both old codes. */
28
+ let liveCode;
29
+ const requests = /* @__PURE__ */ new Map();
30
+ const attemptsBySource = /* @__PURE__ */ new Map();
31
+ const notice = options.onNotice ?? (() => {});
32
+ const isExpired = (request, now) => request.status === "pending" && now - request.createdAt >= 18e4;
33
+ /** Derived rather than scheduled, so a stopped clock cannot leave a request live. */
34
+ const statusOf = (request, now) => isExpired(request, now) ? "expired" : request.status;
35
+ const countFailure = (sourceAddress, now) => {
36
+ const source = sourceAddress ?? "unknown";
37
+ let attempts = attemptsBySource.get(source);
38
+ if (attempts === void 0 || now - attempts.windowStartedAt >= ATTEMPT_WINDOW_MS) {
39
+ if (attempts === void 0 && attemptsBySource.size >= SOURCE_LIMIT) {
40
+ const oldest = attemptsBySource.keys().next().value;
41
+ if (oldest !== void 0) attemptsBySource.delete(oldest);
42
+ }
43
+ attempts = {
44
+ windowStartedAt: now,
45
+ failures: 0
46
+ };
47
+ attemptsBySource.set(source, attempts);
48
+ }
49
+ attempts.failures += 1;
50
+ if (attempts.failures === 11) notice(`pairing claim abuse detected from ${source}; throttling invalid attempts`);
51
+ return attempts.failures > ATTEMPT_LIMIT ? "rate_limited" : "ok";
52
+ };
53
+ return {
54
+ mintCode() {
55
+ const code = options.randomToken();
56
+ const manualCode = options.randomManualCode();
57
+ const expiresAt = options.now() + PAIRING_CODE_TTL_MS;
58
+ liveCode = {
59
+ hashes: [options.digest(code), options.digest(manualCode)],
60
+ expiresAt
61
+ };
62
+ return {
63
+ code,
64
+ manualCode,
65
+ expiresAt
66
+ };
67
+ },
68
+ claim(input) {
69
+ const now = options.now();
70
+ const presented = options.digest(input.code);
71
+ if (liveCode === void 0 || now >= liveCode.expiresAt || !liveCode.hashes.includes(presented)) {
72
+ const limit = countFailure(input.sourceAddress, now);
73
+ if (limit !== "ok") return {
74
+ ok: false,
75
+ code: limit
76
+ };
77
+ return {
78
+ ok: false,
79
+ code: "unknown_code"
80
+ };
81
+ }
82
+ liveCode = void 0;
83
+ const request = {
84
+ id: options.randomToken(),
85
+ userAgent: sanitizeUserAgent(input.userAgent),
86
+ edgeIp: sanitizeEdgeIp(input.edgeIp),
87
+ createdAt: now,
88
+ status: "pending"
89
+ };
90
+ requests.set(request.id, request);
91
+ notice(`pairing requested from ${request.userAgent} via ${request.edgeIp}`);
92
+ return {
93
+ ok: true,
94
+ requestId: request.id
95
+ };
96
+ },
97
+ status(requestId) {
98
+ const request = requests.get(requestId);
99
+ return request === void 0 ? void 0 : statusOf(request, options.now());
100
+ },
101
+ approve(requestId) {
102
+ const request = requests.get(requestId);
103
+ if (request === void 0) return "unknown";
104
+ const now = options.now();
105
+ if (isExpired(request, now)) return "expired";
106
+ if (request.status !== "pending") return "settled";
107
+ request.status = "approved";
108
+ notice(`pairing approved for ${request.userAgent}`);
109
+ return "approved";
110
+ },
111
+ deny(requestId) {
112
+ const request = requests.get(requestId);
113
+ if (request === void 0) return "unknown";
114
+ if (request.status !== "pending") return "settled";
115
+ request.status = "denied";
116
+ notice(`pairing denied for ${request.userAgent}`);
117
+ return "denied";
118
+ },
119
+ consume(requestId) {
120
+ const request = requests.get(requestId);
121
+ if (request === void 0 || request.status !== "approved") return void 0;
122
+ request.status = "consumed";
123
+ return { userAgent: request.userAgent };
124
+ },
125
+ pending() {
126
+ const now = options.now();
127
+ return [...requests.values()].filter((request) => statusOf(request, now) === "pending");
128
+ },
129
+ sweep() {
130
+ const now = options.now();
131
+ for (const [id, request] of requests) if (now - request.createdAt >= PAIRING_REQUEST_RETENTION_MS) requests.delete(id);
132
+ if (liveCode !== void 0 && now >= liveCode.expiresAt) liveCode = void 0;
133
+ for (const [source, attempts] of attemptsBySource) if (now - attempts.windowStartedAt >= ATTEMPT_WINDOW_MS) attemptsBySource.delete(source);
134
+ },
135
+ clear() {
136
+ requests.clear();
137
+ liveCode = void 0;
138
+ attemptsBySource.clear();
139
+ }
140
+ };
141
+ }
142
+ //#endregion
143
+ export { createPairingFlow };
144
+
145
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/pairingFlow/index.ts"],"sourcesContent":["/**\n * Pairing a device, as a state machine over injected randomness and time.\n *\n * code (120s) --claim--> pending (180s) --approve--> approved --consume--> consumed\n * | \\\n * +----- deny -------+--> denied\n *\n * The host approval step is the point. A scanned code proves someone is\n * standing where the screen is, but a screen is visible over a shoulder and in\n * a screenshare, so the code alone is a single factor for a credential that\n * ends in shell access. Approving on the machine is the second.\n *\n * Randomness and hashing arrive as functions so this file stays free of\n * node:crypto and testable with a counter.\n */\n\nimport { PAIRING_CODE_TTL_MS, PAIRING_REQUEST_TTL_MS } from '../../constants/remote';\nimport { type PairingStatus } from '../../types/remote';\nimport { sanitizeEdgeIp, sanitizeUserAgent } from '../deviceSessions';\n\n/** Failed claims allowed per source inside one window before the endpoint starts refusing. */\nconst ATTEMPT_LIMIT = 10;\nconst ATTEMPT_WINDOW_MS = 60_000;\n/** Caps throttle state even if many distinct peers reach the listener. */\nconst SOURCE_LIMIT = 1024;\n/** How long a settled request stays readable, so a late approval is still collectable. */\nconst PAIRING_REQUEST_RETENTION_MS = PAIRING_REQUEST_TTL_MS * 2;\n\nexport interface PairingRequest {\n id: string;\n userAgent: string;\n edgeIp: string;\n createdAt: number;\n status: PairingStatus;\n}\n\nexport type ClaimOutcome = { ok: true; requestId: string } | { ok: false; code: 'unknown_code' | 'rate_limited' };\n\nexport interface PairingFlowOptions {\n /** Returns a fresh high-entropy token carried only by the QR fragment. */\n randomToken: () => string;\n /** Returns a short numeric code intended for manual entry. */\n randomManualCode: () => string;\n /** One-way digest of a token; only the digest is retained. */\n digest: (token: string) => string;\n now: () => number;\n onNotice?: (message: string) => void;\n}\n\nexport interface PairingFlow {\n /** Mints a QR token and a separate manual code. Replaces the previous pair. */\n mintCode(): { code: string; manualCode: string; expiresAt: number };\n claim(input: {\n code: string;\n userAgent: string | undefined;\n edgeIp: string | undefined;\n /** Source normalized by the adapter from trusted proxy metadata or the socket peer. */\n sourceAddress: string | undefined;\n }): ClaimOutcome;\n status(requestId: string): PairingStatus | undefined;\n approve(requestId: string): 'approved' | 'unknown' | 'expired' | 'settled';\n deny(requestId: string): 'denied' | 'unknown' | 'settled';\n /** Takes an approved request exactly once, returning what the device record needs. */\n consume(requestId: string): { userAgent: string } | undefined;\n pending(): readonly PairingRequest[];\n /** Drops what has aged out. Only reclaims memory; expiry is derived, not scheduled. */\n sweep(): void;\n clear(): void;\n}\n\nexport function createPairingFlow(options: PairingFlowOptions): PairingFlow {\n /** Only the newest code pair is live, so minting another retires both old codes. */\n let liveCode: { hashes: readonly [string, string]; expiresAt: number } | undefined;\n const requests = new Map<string, PairingRequest>();\n const attemptsBySource = new Map<string, { windowStartedAt: number; failures: number }>();\n\n const notice = options.onNotice ?? ((): void => {});\n\n const isExpired = (request: PairingRequest, now: number): boolean =>\n request.status === 'pending' && now - request.createdAt >= PAIRING_REQUEST_TTL_MS;\n\n /** Derived rather than scheduled, so a stopped clock cannot leave a request live. */\n const statusOf = (request: PairingRequest, now: number): PairingStatus =>\n isExpired(request, now) ? 'expired' : request.status;\n\n const countFailure = (sourceAddress: string | undefined, now: number): 'ok' | 'rate_limited' => {\n const source = sourceAddress ?? 'unknown';\n let attempts = attemptsBySource.get(source);\n if (attempts === undefined || now - attempts.windowStartedAt >= ATTEMPT_WINDOW_MS) {\n if (attempts === undefined && attemptsBySource.size >= SOURCE_LIMIT) {\n const oldest = attemptsBySource.keys().next().value as string | undefined;\n if (oldest !== undefined) attemptsBySource.delete(oldest);\n }\n attempts = { windowStartedAt: now, failures: 0 };\n attemptsBySource.set(source, attempts);\n }\n attempts.failures += 1;\n if (attempts.failures === ATTEMPT_LIMIT + 1) {\n notice(`pairing claim abuse detected from ${source}; throttling invalid attempts`);\n }\n return attempts.failures > ATTEMPT_LIMIT ? 'rate_limited' : 'ok';\n };\n\n return {\n mintCode() {\n const code = options.randomToken();\n const manualCode = options.randomManualCode();\n const expiresAt = options.now() + PAIRING_CODE_TTL_MS;\n liveCode = { hashes: [options.digest(code), options.digest(manualCode)], expiresAt };\n return { code, manualCode, expiresAt };\n },\n\n claim(input) {\n const now = options.now();\n const presented = options.digest(input.code);\n // The QR token and manual code are one logical credential. A successful\n // claim retires both so neither representation can be replayed.\n if (liveCode === undefined || now >= liveCode.expiresAt || !liveCode.hashes.includes(presented)) {\n const limit = countFailure(input.sourceAddress, now);\n if (limit !== 'ok') return { ok: false, code: limit };\n return { ok: false, code: 'unknown_code' };\n }\n liveCode = undefined;\n const request: PairingRequest = {\n id: options.randomToken(),\n userAgent: sanitizeUserAgent(input.userAgent),\n edgeIp: sanitizeEdgeIp(input.edgeIp),\n createdAt: now,\n status: 'pending',\n };\n requests.set(request.id, request);\n notice(`pairing requested from ${request.userAgent} via ${request.edgeIp}`);\n return { ok: true, requestId: request.id };\n },\n\n status(requestId) {\n const request = requests.get(requestId);\n return request === undefined ? undefined : statusOf(request, options.now());\n },\n\n approve(requestId) {\n const request = requests.get(requestId);\n if (request === undefined) return 'unknown';\n const now = options.now();\n if (isExpired(request, now)) return 'expired';\n if (request.status !== 'pending') return 'settled';\n request.status = 'approved';\n notice(`pairing approved for ${request.userAgent}`);\n return 'approved';\n },\n\n deny(requestId) {\n const request = requests.get(requestId);\n if (request === undefined) return 'unknown';\n if (request.status !== 'pending') return 'settled';\n request.status = 'denied';\n notice(`pairing denied for ${request.userAgent}`);\n return 'denied';\n },\n\n consume(requestId) {\n const request = requests.get(requestId);\n if (request === undefined || request.status !== 'approved') return undefined;\n // Single use with no grace window. If the response is lost in flight the\n // user rescans, which costs five seconds and removes any question about\n // who else might be holding this id.\n request.status = 'consumed';\n return { userAgent: request.userAgent };\n },\n\n pending() {\n const now = options.now();\n return [...requests.values()].filter((request) => statusOf(request, now) === 'pending');\n },\n\n sweep() {\n const now = options.now();\n for (const [id, request] of requests) {\n // A settled request is kept well past its window rather than dropped on\n // sight: an approval landing in the last second still has to be\n // collected by the phone's next poll, and a denied one should read as\n // denied rather than decay into \"no such request\".\n if (now - request.createdAt >= PAIRING_REQUEST_RETENTION_MS) requests.delete(id);\n }\n if (liveCode !== undefined && now >= liveCode.expiresAt) liveCode = undefined;\n for (const [source, attempts] of attemptsBySource) {\n if (now - attempts.windowStartedAt >= ATTEMPT_WINDOW_MS) attemptsBySource.delete(source);\n }\n },\n\n clear() {\n requests.clear();\n liveCode = undefined;\n attemptsBySource.clear();\n },\n };\n}\n"],"mappings":"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"}