@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,165 @@
1
+ import { DEV_PROXY_PREFIX } from "../../constants/remote.mjs";
2
+ //#region src/services/devProxyPolicy/index.ts
3
+ /**
4
+ * What the dev proxy will forward, and where.
5
+ *
6
+ * Pure, with no I/O, so the whole decision surface of a feature that reaches
7
+ * loopback services can be read in one sitting and tested without a server.
8
+ *
9
+ * The upstream host is not a parameter anywhere in this module, and a target
10
+ * is a port and nothing else. Accepting a hostname would mean resolving one,
11
+ * and a resolver turns a fixed destination into an attacker-chosen one through
12
+ * DNS rebinding, decimal and octal address spellings, and IPv4-mapped IPv6
13
+ * forms. Refusing the parameter forecloses that family rather than filtering
14
+ * it. Which of the two loopback literals actually answers is settled in
15
+ * the loopbackAddress service, from the port alone.
16
+ */
17
+ const MAX_NAME_LENGTH = 32;
18
+ /**
19
+ * Lowercase, digits and dashes, opening on an alphanumeric.
20
+ *
21
+ * The name is a path segment and it is also what the developer types into
22
+ * `base: '/devproxy/<name>/'`, so it stays in the character set that needs no
23
+ * escaping in either place.
24
+ */
25
+ const TARGET_NAME = /^[a-z0-9][a-z0-9-]{0,31}$/u;
26
+ const MIN_PORT = 1;
27
+ const MAX_PORT = 65535;
28
+ function validateTargetName(raw) {
29
+ if (typeof raw !== "string") return {
30
+ ok: false,
31
+ reason: "A target name must be text."
32
+ };
33
+ const name = raw.trim().toLowerCase();
34
+ if (name === "") return {
35
+ ok: false,
36
+ reason: "A target needs a name."
37
+ };
38
+ if (name.length > MAX_NAME_LENGTH) return {
39
+ ok: false,
40
+ reason: `A target name is at most ${String(MAX_NAME_LENGTH)} characters.`
41
+ };
42
+ if (!TARGET_NAME.test(name)) return {
43
+ ok: false,
44
+ reason: "A target name uses lowercase letters, digits and dashes, starting with a letter or digit."
45
+ };
46
+ return {
47
+ ok: true,
48
+ name
49
+ };
50
+ }
51
+ /**
52
+ * Whether this port may be proxied.
53
+ *
54
+ * `reserved` is read fresh by the caller on every attempt rather than captured
55
+ * once, because the cockpit's own ports are only known after it binds and the
56
+ * tunnel port changes when remote access is toggled. A cached list would go
57
+ * stale in exactly the direction that matters, letting the proxy point at the
58
+ * cockpit itself.
59
+ */
60
+ function validateTargetPort(raw, reserved) {
61
+ const port = typeof raw === "number" ? raw : Number(raw);
62
+ if (!Number.isSafeInteger(port)) return {
63
+ ok: false,
64
+ reason: "A port must be a whole number."
65
+ };
66
+ if (port < MIN_PORT || port > MAX_PORT) return {
67
+ ok: false,
68
+ reason: `A port is between ${String(MIN_PORT)} and ${String(MAX_PORT)}.`
69
+ };
70
+ if (reserved.includes(port)) return {
71
+ ok: false,
72
+ reason: "That port belongs to the cockpit itself."
73
+ };
74
+ return {
75
+ ok: true,
76
+ port
77
+ };
78
+ }
79
+ /**
80
+ * Whether a path segment tries to climb out of the prefix.
81
+ *
82
+ * Checked before and after percent-decoding. A proxy that only checked the raw
83
+ * form would forward `%2e%2e`, and an upstream that decodes before resolving
84
+ * would then walk out of the tree the operator meant to expose.
85
+ */
86
+ function escapesPrefix(upstreamPath) {
87
+ let decoded;
88
+ try {
89
+ decoded = decodeURIComponent(upstreamPath);
90
+ } catch {
91
+ return true;
92
+ }
93
+ for (const candidate of [upstreamPath, decoded]) for (const segment of candidate.split("/")) if (segment === "." || segment === "..") return true;
94
+ return false;
95
+ }
96
+ /**
97
+ * Whether this path is one the dev proxy owns.
98
+ *
99
+ * The remote guard and the proxy handler must agree about this, and they do not
100
+ * see the same string: Hono's router hands the guard a raw slice of the request
101
+ * line, while the handler reads `new URL(...).pathname`, which resolves `..`
102
+ * before anyone looks at it. So `/devproxy/x/../../api/health` can be a proxy
103
+ * path to one and an API path to the other, and a guard that answered on the
104
+ * prefix alone would grant an `/api/` request the direct, unsealed treatment.
105
+ *
106
+ * Refusing every dot segment removes the disagreement instead of trying to
107
+ * predict it. A legitimate asset URL has no reason to carry one.
108
+ */
109
+ function isDevProxyPath(path) {
110
+ if (!path.startsWith("/devproxy/")) return false;
111
+ return !escapesPrefix(path.slice(DEV_PROXY_PREFIX.length));
112
+ }
113
+ /**
114
+ * Identifies the target a proxied request belongs to.
115
+ *
116
+ * `upstreamPath` is the request path unchanged, prefix included. That is the
117
+ * whole trick, and getting it wrong costs a redirect loop: the target is
118
+ * configured with `base: '/devproxy/<name>/'`, so it believes it is serving
119
+ * there and redirects anything at `/` back to its base. Stripping the prefix
120
+ * would hand it `/`, take its redirect, and go round again. nginx draws the
121
+ * same distinction between `proxy_pass http://host/` and `proxy_pass
122
+ * http://host`; this is the second one.
123
+ *
124
+ * Reads the raw, still-encoded pathname. Hono routes and the remote guard both
125
+ * work on the decoded value, so a request that only becomes `/devproxy/...`
126
+ * after decoding would reach this handler, and passing the encoded form
127
+ * through untouched is what makes a file named `a b.png` load.
128
+ */
129
+ function parseProxyPath(rawPathname) {
130
+ if (!rawPathname.startsWith("/devproxy/")) return {
131
+ kind: "reject",
132
+ reason: "Not a proxied path."
133
+ };
134
+ const rest = rawPathname.slice(DEV_PROXY_PREFIX.length);
135
+ const boundary = rest.indexOf("/");
136
+ if (boundary === -1) {
137
+ const verdict = validateTargetName(rest);
138
+ if (!verdict.ok) return {
139
+ kind: "reject",
140
+ reason: verdict.reason
141
+ };
142
+ return {
143
+ kind: "redirect",
144
+ location: `${DEV_PROXY_PREFIX}${verdict.name}/`
145
+ };
146
+ }
147
+ const verdict = validateTargetName(rest.slice(0, boundary));
148
+ if (!verdict.ok) return {
149
+ kind: "reject",
150
+ reason: verdict.reason
151
+ };
152
+ if (escapesPrefix(rest.slice(boundary))) return {
153
+ kind: "reject",
154
+ reason: "That path leaves the proxied target."
155
+ };
156
+ return {
157
+ kind: "match",
158
+ name: verdict.name,
159
+ upstreamPath: rawPathname
160
+ };
161
+ }
162
+ //#endregion
163
+ export { isDevProxyPath, parseProxyPath, validateTargetName, validateTargetPort };
164
+
165
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/devProxyPolicy/index.ts"],"sourcesContent":["/**\n * What the dev proxy will forward, and where.\n *\n * Pure, with no I/O, so the whole decision surface of a feature that reaches\n * loopback services can be read in one sitting and tested without a server.\n *\n * The upstream host is not a parameter anywhere in this module, and a target\n * is a port and nothing else. Accepting a hostname would mean resolving one,\n * and a resolver turns a fixed destination into an attacker-chosen one through\n * DNS rebinding, decimal and octal address spellings, and IPv4-mapped IPv6\n * forms. Refusing the parameter forecloses that family rather than filtering\n * it. Which of the two loopback literals actually answers is settled in\n * the loopbackAddress service, from the port alone.\n */\n\nimport { DEV_PROXY_PREFIX } from '../../constants/remote';\n\nconst MAX_NAME_LENGTH = 32;\n/**\n * Lowercase, digits and dashes, opening on an alphanumeric.\n *\n * The name is a path segment and it is also what the developer types into\n * `base: '/devproxy/<name>/'`, so it stays in the character set that needs no\n * escaping in either place.\n */\nconst TARGET_NAME = /^[a-z0-9][a-z0-9-]{0,31}$/u;\nconst MIN_PORT = 1;\nconst MAX_PORT = 65_535;\n\nexport type NameVerdict = { ok: true; name: string } | { ok: false; reason: string };\n\nexport type PortVerdict = { ok: true; port: number } | { ok: false; reason: string };\n\nexport type ProxyPathVerdict =\n | { kind: 'match'; name: string; /** The path unchanged, prefix included. */ upstreamPath: string }\n | { kind: 'redirect'; location: string }\n | { kind: 'reject'; reason: string };\n\nexport function validateTargetName(raw: unknown): NameVerdict {\n if (typeof raw !== 'string') return { ok: false, reason: 'A target name must be text.' };\n const name = raw.trim().toLowerCase();\n if (name === '') return { ok: false, reason: 'A target needs a name.' };\n if (name.length > MAX_NAME_LENGTH) {\n return { ok: false, reason: `A target name is at most ${String(MAX_NAME_LENGTH)} characters.` };\n }\n if (!TARGET_NAME.test(name)) {\n return {\n ok: false,\n reason: 'A target name uses lowercase letters, digits and dashes, starting with a letter or digit.',\n };\n }\n return { ok: true, name };\n}\n\n/**\n * Whether this port may be proxied.\n *\n * `reserved` is read fresh by the caller on every attempt rather than captured\n * once, because the cockpit's own ports are only known after it binds and the\n * tunnel port changes when remote access is toggled. A cached list would go\n * stale in exactly the direction that matters, letting the proxy point at the\n * cockpit itself.\n */\nexport function validateTargetPort(raw: unknown, reserved: readonly (number | undefined)[]): PortVerdict {\n const port = typeof raw === 'number' ? raw : Number(raw);\n if (!Number.isSafeInteger(port)) return { ok: false, reason: 'A port must be a whole number.' };\n if (port < MIN_PORT || port > MAX_PORT) {\n return { ok: false, reason: `A port is between ${String(MIN_PORT)} and ${String(MAX_PORT)}.` };\n }\n if (reserved.includes(port)) return { ok: false, reason: 'That port belongs to the cockpit itself.' };\n return { ok: true, port };\n}\n\n/**\n * Whether a path segment tries to climb out of the prefix.\n *\n * Checked before and after percent-decoding. A proxy that only checked the raw\n * form would forward `%2e%2e`, and an upstream that decodes before resolving\n * would then walk out of the tree the operator meant to expose.\n */\nfunction escapesPrefix(upstreamPath: string): boolean {\n let decoded: string;\n try {\n decoded = decodeURIComponent(upstreamPath);\n } catch {\n // A malformed percent sequence is not a path this proxy needs to serve.\n return true;\n }\n for (const candidate of [upstreamPath, decoded]) {\n for (const segment of candidate.split('/')) {\n if (segment === '.' || segment === '..') return true;\n }\n }\n return false;\n}\n\n/**\n * Whether this path is one the dev proxy owns.\n *\n * The remote guard and the proxy handler must agree about this, and they do not\n * see the same string: Hono's router hands the guard a raw slice of the request\n * line, while the handler reads `new URL(...).pathname`, which resolves `..`\n * before anyone looks at it. So `/devproxy/x/../../api/health` can be a proxy\n * path to one and an API path to the other, and a guard that answered on the\n * prefix alone would grant an `/api/` request the direct, unsealed treatment.\n *\n * Refusing every dot segment removes the disagreement instead of trying to\n * predict it. A legitimate asset URL has no reason to carry one.\n */\nexport function isDevProxyPath(path: string): boolean {\n if (!path.startsWith(DEV_PROXY_PREFIX)) return false;\n return !escapesPrefix(path.slice(DEV_PROXY_PREFIX.length));\n}\n/**\n * Identifies the target a proxied request belongs to.\n *\n * `upstreamPath` is the request path unchanged, prefix included. That is the\n * whole trick, and getting it wrong costs a redirect loop: the target is\n * configured with `base: '/devproxy/<name>/'`, so it believes it is serving\n * there and redirects anything at `/` back to its base. Stripping the prefix\n * would hand it `/`, take its redirect, and go round again. nginx draws the\n * same distinction between `proxy_pass http://host/` and `proxy_pass\n * http://host`; this is the second one.\n *\n * Reads the raw, still-encoded pathname. Hono routes and the remote guard both\n * work on the decoded value, so a request that only becomes `/devproxy/...`\n * after decoding would reach this handler, and passing the encoded form\n * through untouched is what makes a file named `a b.png` load.\n */\nexport function parseProxyPath(rawPathname: string): ProxyPathVerdict {\n if (!rawPathname.startsWith(DEV_PROXY_PREFIX)) return { kind: 'reject', reason: 'Not a proxied path.' };\n const rest = rawPathname.slice(DEV_PROXY_PREFIX.length);\n const boundary = rest.indexOf('/');\n\n if (boundary === -1) {\n const verdict = validateTargetName(rest);\n if (!verdict.ok) return { kind: 'reject', reason: verdict.reason };\n // A dev server serving at its own root needs the trailing slash, or every\n // relative URL on the page resolves one level too high. nginx answers the\n // same way rather than guessing.\n return { kind: 'redirect', location: `${DEV_PROXY_PREFIX}${verdict.name}/` };\n }\n\n const verdict = validateTargetName(rest.slice(0, boundary));\n if (!verdict.ok) return { kind: 'reject', reason: verdict.reason };\n if (escapesPrefix(rest.slice(boundary))) {\n return { kind: 'reject', reason: 'That path leaves the proxied target.' };\n }\n return { kind: 'match', name: verdict.name, upstreamPath: rawPathname };\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAiBA,MAAM,kBAAkB;;;;;;;;AAQxB,MAAM,cAAc;AACpB,MAAM,WAAW;AACjB,MAAM,WAAW;AAWjB,SAAgB,mBAAmB,KAA2B;CAC5D,IAAI,OAAO,QAAQ,UAAU,OAAO;EAAE,IAAI;EAAO,QAAQ;CAA8B;CACvF,MAAM,OAAO,IAAI,KAAK,CAAC,CAAC,YAAY;CACpC,IAAI,SAAS,IAAI,OAAO;EAAE,IAAI;EAAO,QAAQ;CAAyB;CACtE,IAAI,KAAK,SAAS,iBAChB,OAAO;EAAE,IAAI;EAAO,QAAQ,4BAA4B,OAAO,eAAe,EAAE;CAAc;CAEhG,IAAI,CAAC,YAAY,KAAK,IAAI,GACxB,OAAO;EACL,IAAI;EACJ,QAAQ;CACV;CAEF,OAAO;EAAE,IAAI;EAAM;CAAK;AAC1B;;;;;;;;;;AAWA,SAAgB,mBAAmB,KAAc,UAAwD;CACvG,MAAM,OAAO,OAAO,QAAQ,WAAW,MAAM,OAAO,GAAG;CACvD,IAAI,CAAC,OAAO,cAAc,IAAI,GAAG,OAAO;EAAE,IAAI;EAAO,QAAQ;CAAiC;CAC9F,IAAI,OAAO,YAAY,OAAO,UAC5B,OAAO;EAAE,IAAI;EAAO,QAAQ,qBAAqB,OAAO,QAAQ,EAAE,OAAO,OAAO,QAAQ,EAAE;CAAG;CAE/F,IAAI,SAAS,SAAS,IAAI,GAAG,OAAO;EAAE,IAAI;EAAO,QAAQ;CAA2C;CACpG,OAAO;EAAE,IAAI;EAAM;CAAK;AAC1B;;;;;;;;AASA,SAAS,cAAc,cAA+B;CACpD,IAAI;CACJ,IAAI;EACF,UAAU,mBAAmB,YAAY;CAC3C,QAAQ;EAEN,OAAO;CACT;CACA,KAAK,MAAM,aAAa,CAAC,cAAc,OAAO,GAC5C,KAAK,MAAM,WAAW,UAAU,MAAM,GAAG,GACvC,IAAI,YAAY,OAAO,YAAY,MAAM,OAAO;CAGpD,OAAO;AACT;;;;;;;;;;;;;;AAeA,SAAgB,eAAe,MAAuB;CACpD,IAAI,CAAC,KAAK,WAAA,YAA2B,GAAG,OAAO;CAC/C,OAAO,CAAC,cAAc,KAAK,MAAM,iBAAiB,MAAM,CAAC;AAC3D;;;;;;;;;;;;;;;;;AAiBA,SAAgB,eAAe,aAAuC;CACpE,IAAI,CAAC,YAAY,WAAA,YAA2B,GAAG,OAAO;EAAE,MAAM;EAAU,QAAQ;CAAsB;CACtG,MAAM,OAAO,YAAY,MAAM,iBAAiB,MAAM;CACtD,MAAM,WAAW,KAAK,QAAQ,GAAG;CAEjC,IAAI,aAAa,IAAI;EACnB,MAAM,UAAU,mBAAmB,IAAI;EACvC,IAAI,CAAC,QAAQ,IAAI,OAAO;GAAE,MAAM;GAAU,QAAQ,QAAQ;EAAO;EAIjE,OAAO;GAAE,MAAM;GAAY,UAAU,GAAG,mBAAmB,QAAQ,KAAK;EAAG;CAC7E;CAEA,MAAM,UAAU,mBAAmB,KAAK,MAAM,GAAG,QAAQ,CAAC;CAC1D,IAAI,CAAC,QAAQ,IAAI,OAAO;EAAE,MAAM;EAAU,QAAQ,QAAQ;CAAO;CACjE,IAAI,cAAc,KAAK,MAAM,QAAQ,CAAC,GACpC,OAAO;EAAE,MAAM;EAAU,QAAQ;CAAuC;CAE1E,OAAO;EAAE,MAAM;EAAS,MAAM,QAAQ;EAAM,cAAc;CAAY;AACxE"}
@@ -0,0 +1,107 @@
1
+ const require_runtime = require("../../../_virtual/_rolldown/runtime.cjs");
2
+ const require_index = require("../devProxyPolicy/index.cjs");
3
+ let node_fs = require("node:fs");
4
+ node_fs = require_runtime.__toESM(node_fs, 1);
5
+ let node_path = require("node:path");
6
+ node_path = require_runtime.__toESM(node_path, 1);
7
+ //#region src/services/devProxyStore/index.ts
8
+ /**
9
+ * Registered proxy targets on disk.
10
+ *
11
+ * Persisted, unlike a remote session, because a target is a name the developer
12
+ * typed into their own build configuration as `base: '/devproxy/<name>/'`.
13
+ * Losing it on restart would silently break that line, and the file holds no
14
+ * secret: a port number and a label the operator chose while sitting at the
15
+ * machine.
16
+ */
17
+ const TARGETS_FILE = "dev-proxy.json";
18
+ const DIRECTORY_MODE = 448;
19
+ const FILE_MODE = 384;
20
+ /** Any bit set for group or other; a state file readable by another account is worth repairing. */
21
+ const LOOSE_MODE_MASK = 63;
22
+ /** Repairs a state file another account can read. */
23
+ function tightenMode(filePath, notice) {
24
+ try {
25
+ if ((node_fs.default.statSync(filePath).mode & LOOSE_MODE_MASK) === 0) return;
26
+ node_fs.default.chmodSync(filePath, FILE_MODE);
27
+ notice(`tightened permissions on ${filePath}`);
28
+ } catch {}
29
+ }
30
+ /**
31
+ * Rebuilds one record, dropping anything the current policy would refuse.
32
+ *
33
+ * The file is revalidated on read rather than trusted, because a name that was
34
+ * legal when written is not necessarily legal now, and an edited file must not
35
+ * be able to introduce a target the API would have rejected.
36
+ */
37
+ function parseTarget(value) {
38
+ if (typeof value !== "object" || value === null) return void 0;
39
+ const record = value;
40
+ const name = require_index.validateTargetName(record.name);
41
+ if (!name.ok) return void 0;
42
+ if (typeof record.port !== "number" || !Number.isSafeInteger(record.port)) return void 0;
43
+ const createdAt = typeof record.createdAt === "number" ? record.createdAt : 0;
44
+ return {
45
+ name: name.name,
46
+ port: record.port,
47
+ createdAt
48
+ };
49
+ }
50
+ function createDevProxyStore(options) {
51
+ const notice = options.onNotice ?? (() => {});
52
+ const targetsPath = node_path.default.join(options.stateDir, TARGETS_FILE);
53
+ let held = load();
54
+ function load() {
55
+ let raw;
56
+ try {
57
+ raw = node_fs.default.readFileSync(targetsPath, "utf8");
58
+ } catch {
59
+ return [];
60
+ }
61
+ tightenMode(targetsPath, notice);
62
+ let parsed;
63
+ try {
64
+ parsed = JSON.parse(raw);
65
+ } catch {
66
+ notice(`dev proxy targets at ${targetsPath} are not valid JSON; none will load`);
67
+ return [];
68
+ }
69
+ if (!Array.isArray(parsed)) return [];
70
+ return parsed.map(parseTarget).filter((target) => target !== void 0);
71
+ }
72
+ function write() {
73
+ const temporary = `${targetsPath}.${String(process.pid)}.tmp`;
74
+ try {
75
+ node_fs.default.mkdirSync(options.stateDir, {
76
+ recursive: true,
77
+ mode: DIRECTORY_MODE
78
+ });
79
+ node_fs.default.writeFileSync(temporary, `${JSON.stringify(held, void 0, 2)}\n`, { mode: FILE_MODE });
80
+ node_fs.default.renameSync(temporary, targetsPath);
81
+ } catch (error) {
82
+ notice(`${targetsPath} could not be saved: ${error instanceof Error ? error.message : String(error)}`);
83
+ try {
84
+ node_fs.default.rmSync(temporary, { force: true });
85
+ } catch {}
86
+ }
87
+ }
88
+ return {
89
+ targets: () => held,
90
+ find: (name) => held.find((target) => target.name === name),
91
+ save(target) {
92
+ held = [...held.filter((existing) => existing.name !== target.name), target];
93
+ write();
94
+ },
95
+ remove(name) {
96
+ const next = held.filter((existing) => existing.name !== name);
97
+ if (next.length === held.length) return false;
98
+ held = next;
99
+ write();
100
+ return true;
101
+ }
102
+ };
103
+ }
104
+ //#endregion
105
+ exports.createDevProxyStore = createDevProxyStore;
106
+
107
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["fs","validateTargetName","path"],"sources":["../../../../src/services/devProxyStore/index.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nimport type { DevProxyTarget } from '../../types/remote';\nimport { validateTargetName } from '../devProxyPolicy';\n\n/**\n * Registered proxy targets on disk.\n *\n * Persisted, unlike a remote session, because a target is a name the developer\n * typed into their own build configuration as `base: '/devproxy/<name>/'`.\n * Losing it on restart would silently break that line, and the file holds no\n * secret: a port number and a label the operator chose while sitting at the\n * machine.\n */\n\nconst TARGETS_FILE = 'dev-proxy.json';\nconst DIRECTORY_MODE = 0o700;\nconst FILE_MODE = 0o600;\n/** Any bit set for group or other; a state file readable by another account is worth repairing. */\nconst LOOSE_MODE_MASK = 0o077;\n\nexport interface DevProxyStoreOptions {\n /** The same directory the remote-access store uses; defaults to ~/.doompi/web. */\n stateDir: string;\n onNotice?: (message: string) => void;\n}\n\nexport interface DevProxyStore {\n targets(): readonly DevProxyTarget[];\n find(name: string): DevProxyTarget | undefined;\n /** Replaces any target already holding this name, so re-registering a moved port is one call. */\n save(target: DevProxyTarget): void;\n remove(name: string): boolean;\n}\n\n/** Repairs a state file another account can read. */\nfunction tightenMode(filePath: string, notice: (message: string) => void): void {\n try {\n if ((fs.statSync(filePath).mode & LOOSE_MODE_MASK) === 0) return;\n fs.chmodSync(filePath, FILE_MODE);\n notice(`tightened permissions on ${filePath}`);\n } catch {\n // The file is missing or unreadable; the caller's own read reports that.\n }\n}\n\n/**\n * Rebuilds one record, dropping anything the current policy would refuse.\n *\n * The file is revalidated on read rather than trusted, because a name that was\n * legal when written is not necessarily legal now, and an edited file must not\n * be able to introduce a target the API would have rejected.\n */\nfunction parseTarget(value: unknown): DevProxyTarget | undefined {\n if (typeof value !== 'object' || value === null) return undefined;\n const record = value as Partial<DevProxyTarget>;\n const name = validateTargetName(record.name);\n if (!name.ok) return undefined;\n if (typeof record.port !== 'number' || !Number.isSafeInteger(record.port)) return undefined;\n const createdAt = typeof record.createdAt === 'number' ? record.createdAt : 0;\n return { name: name.name, port: record.port, createdAt };\n}\n\nexport function createDevProxyStore(options: DevProxyStoreOptions): DevProxyStore {\n const notice = options.onNotice ?? ((): void => {});\n const targetsPath = path.join(options.stateDir, TARGETS_FILE);\n let held = load();\n\n function load(): DevProxyTarget[] {\n let raw: string;\n try {\n raw = fs.readFileSync(targetsPath, 'utf8');\n } catch {\n // No file is the normal first run, so this is not worth a notice.\n return [];\n }\n tightenMode(targetsPath, notice);\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw);\n } catch {\n notice(`dev proxy targets at ${targetsPath} are not valid JSON; none will load`);\n return [];\n }\n if (!Array.isArray(parsed)) return [];\n return parsed.map(parseTarget).filter((target): target is DevProxyTarget => target !== undefined);\n }\n\n function write(): void {\n const temporary = `${targetsPath}.${String(process.pid)}.tmp`;\n try {\n fs.mkdirSync(options.stateDir, { recursive: true, mode: DIRECTORY_MODE });\n fs.writeFileSync(temporary, `${JSON.stringify(held, undefined, 2)}\\n`, { mode: FILE_MODE });\n // Rename rather than write in place, so a crash mid-write leaves the\n // previous contents rather than a truncated file.\n fs.renameSync(temporary, targetsPath);\n } catch (error) {\n notice(`${targetsPath} could not be saved: ${error instanceof Error ? error.message : String(error)}`);\n try {\n fs.rmSync(temporary, { force: true });\n } catch {\n // Nothing further to do; the temp file is inert either way.\n }\n }\n }\n\n return {\n targets: () => held,\n find: (name) => held.find((target) => target.name === name),\n\n save(target) {\n held = [...held.filter((existing) => existing.name !== target.name), target];\n write();\n },\n\n remove(name) {\n const next = held.filter((existing) => existing.name !== name);\n if (next.length === held.length) return false;\n held = next;\n write();\n return true;\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAgBA,MAAM,eAAe;AACrB,MAAM,iBAAiB;AACvB,MAAM,YAAY;;AAElB,MAAM,kBAAkB;;AAiBxB,SAAS,YAAY,UAAkB,QAAyC;CAC9E,IAAI;EACF,KAAKA,QAAAA,QAAG,SAAS,QAAQ,CAAC,CAAC,OAAO,qBAAqB,GAAG;EAC1D,QAAA,QAAG,UAAU,UAAU,SAAS;EAChC,OAAO,4BAA4B,UAAU;CAC/C,QAAQ,CAER;AACF;;;;;;;;AASA,SAAS,YAAY,OAA4C;CAC/D,IAAI,OAAO,UAAU,YAAY,UAAU,MAAM,OAAO,KAAA;CACxD,MAAM,SAAS;CACf,MAAM,OAAOC,cAAAA,mBAAmB,OAAO,IAAI;CAC3C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAA;CACrB,IAAI,OAAO,OAAO,SAAS,YAAY,CAAC,OAAO,cAAc,OAAO,IAAI,GAAG,OAAO,KAAA;CAClF,MAAM,YAAY,OAAO,OAAO,cAAc,WAAW,OAAO,YAAY;CAC5E,OAAO;EAAE,MAAM,KAAK;EAAM,MAAM,OAAO;EAAM;CAAU;AACzD;AAEA,SAAgB,oBAAoB,SAA8C;CAChF,MAAM,SAAS,QAAQ,mBAAyB,CAAC;CACjD,MAAM,cAAcC,UAAAA,QAAK,KAAK,QAAQ,UAAU,YAAY;CAC5D,IAAI,OAAO,KAAK;CAEhB,SAAS,OAAyB;EAChC,IAAI;EACJ,IAAI;GACF,MAAMF,QAAAA,QAAG,aAAa,aAAa,MAAM;EAC3C,QAAQ;GAEN,OAAO,CAAC;EACV;EACA,YAAY,aAAa,MAAM;EAC/B,IAAI;EACJ,IAAI;GACF,SAAS,KAAK,MAAM,GAAG;EACzB,QAAQ;GACN,OAAO,wBAAwB,YAAY,oCAAoC;GAC/E,OAAO,CAAC;EACV;EACA,IAAI,CAAC,MAAM,QAAQ,MAAM,GAAG,OAAO,CAAC;EACpC,OAAO,OAAO,IAAI,WAAW,CAAC,CAAC,QAAQ,WAAqC,WAAW,KAAA,CAAS;CAClG;CAEA,SAAS,QAAc;EACrB,MAAM,YAAY,GAAG,YAAY,GAAG,OAAO,QAAQ,GAAG,EAAE;EACxD,IAAI;GACF,QAAA,QAAG,UAAU,QAAQ,UAAU;IAAE,WAAW;IAAM,MAAM;GAAe,CAAC;GACxE,QAAA,QAAG,cAAc,WAAW,GAAG,KAAK,UAAU,MAAM,KAAA,GAAW,CAAC,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;GAG1F,QAAA,QAAG,WAAW,WAAW,WAAW;EACtC,SAAS,OAAO;GACd,OAAO,GAAG,YAAY,uBAAuB,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,GAAG;GACrG,IAAI;IACF,QAAA,QAAG,OAAO,WAAW,EAAE,OAAO,KAAK,CAAC;GACtC,QAAQ,CAER;EACF;CACF;CAEA,OAAO;EACL,eAAe;EACf,OAAO,SAAS,KAAK,MAAM,WAAW,OAAO,SAAS,IAAI;EAE1D,KAAK,QAAQ;GACX,OAAO,CAAC,GAAG,KAAK,QAAQ,aAAa,SAAS,SAAS,OAAO,IAAI,GAAG,MAAM;GAC3E,MAAM;EACR;EAEA,OAAO,MAAM;GACX,MAAM,OAAO,KAAK,QAAQ,aAAa,SAAS,SAAS,IAAI;GAC7D,IAAI,KAAK,WAAW,KAAK,QAAQ,OAAO;GACxC,OAAO;GACP,MAAM;GACN,OAAO;EACT;CACF;AACF"}
@@ -0,0 +1,104 @@
1
+ import { validateTargetName } from "../devProxyPolicy/index.mjs";
2
+ import fs from "node:fs";
3
+ import path from "node:path";
4
+ //#region src/services/devProxyStore/index.ts
5
+ /**
6
+ * Registered proxy targets on disk.
7
+ *
8
+ * Persisted, unlike a remote session, because a target is a name the developer
9
+ * typed into their own build configuration as `base: '/devproxy/<name>/'`.
10
+ * Losing it on restart would silently break that line, and the file holds no
11
+ * secret: a port number and a label the operator chose while sitting at the
12
+ * machine.
13
+ */
14
+ const TARGETS_FILE = "dev-proxy.json";
15
+ const DIRECTORY_MODE = 448;
16
+ const FILE_MODE = 384;
17
+ /** Any bit set for group or other; a state file readable by another account is worth repairing. */
18
+ const LOOSE_MODE_MASK = 63;
19
+ /** Repairs a state file another account can read. */
20
+ function tightenMode(filePath, notice) {
21
+ try {
22
+ if ((fs.statSync(filePath).mode & LOOSE_MODE_MASK) === 0) return;
23
+ fs.chmodSync(filePath, FILE_MODE);
24
+ notice(`tightened permissions on ${filePath}`);
25
+ } catch {}
26
+ }
27
+ /**
28
+ * Rebuilds one record, dropping anything the current policy would refuse.
29
+ *
30
+ * The file is revalidated on read rather than trusted, because a name that was
31
+ * legal when written is not necessarily legal now, and an edited file must not
32
+ * be able to introduce a target the API would have rejected.
33
+ */
34
+ function parseTarget(value) {
35
+ if (typeof value !== "object" || value === null) return void 0;
36
+ const record = value;
37
+ const name = validateTargetName(record.name);
38
+ if (!name.ok) return void 0;
39
+ if (typeof record.port !== "number" || !Number.isSafeInteger(record.port)) return void 0;
40
+ const createdAt = typeof record.createdAt === "number" ? record.createdAt : 0;
41
+ return {
42
+ name: name.name,
43
+ port: record.port,
44
+ createdAt
45
+ };
46
+ }
47
+ function createDevProxyStore(options) {
48
+ const notice = options.onNotice ?? (() => {});
49
+ const targetsPath = path.join(options.stateDir, TARGETS_FILE);
50
+ let held = load();
51
+ function load() {
52
+ let raw;
53
+ try {
54
+ raw = fs.readFileSync(targetsPath, "utf8");
55
+ } catch {
56
+ return [];
57
+ }
58
+ tightenMode(targetsPath, notice);
59
+ let parsed;
60
+ try {
61
+ parsed = JSON.parse(raw);
62
+ } catch {
63
+ notice(`dev proxy targets at ${targetsPath} are not valid JSON; none will load`);
64
+ return [];
65
+ }
66
+ if (!Array.isArray(parsed)) return [];
67
+ return parsed.map(parseTarget).filter((target) => target !== void 0);
68
+ }
69
+ function write() {
70
+ const temporary = `${targetsPath}.${String(process.pid)}.tmp`;
71
+ try {
72
+ fs.mkdirSync(options.stateDir, {
73
+ recursive: true,
74
+ mode: DIRECTORY_MODE
75
+ });
76
+ fs.writeFileSync(temporary, `${JSON.stringify(held, void 0, 2)}\n`, { mode: FILE_MODE });
77
+ fs.renameSync(temporary, targetsPath);
78
+ } catch (error) {
79
+ notice(`${targetsPath} could not be saved: ${error instanceof Error ? error.message : String(error)}`);
80
+ try {
81
+ fs.rmSync(temporary, { force: true });
82
+ } catch {}
83
+ }
84
+ }
85
+ return {
86
+ targets: () => held,
87
+ find: (name) => held.find((target) => target.name === name),
88
+ save(target) {
89
+ held = [...held.filter((existing) => existing.name !== target.name), target];
90
+ write();
91
+ },
92
+ remove(name) {
93
+ const next = held.filter((existing) => existing.name !== name);
94
+ if (next.length === held.length) return false;
95
+ held = next;
96
+ write();
97
+ return true;
98
+ }
99
+ };
100
+ }
101
+ //#endregion
102
+ export { createDevProxyStore };
103
+
104
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/devProxyStore/index.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nimport type { DevProxyTarget } from '../../types/remote';\nimport { validateTargetName } from '../devProxyPolicy';\n\n/**\n * Registered proxy targets on disk.\n *\n * Persisted, unlike a remote session, because a target is a name the developer\n * typed into their own build configuration as `base: '/devproxy/<name>/'`.\n * Losing it on restart would silently break that line, and the file holds no\n * secret: a port number and a label the operator chose while sitting at the\n * machine.\n */\n\nconst TARGETS_FILE = 'dev-proxy.json';\nconst DIRECTORY_MODE = 0o700;\nconst FILE_MODE = 0o600;\n/** Any bit set for group or other; a state file readable by another account is worth repairing. */\nconst LOOSE_MODE_MASK = 0o077;\n\nexport interface DevProxyStoreOptions {\n /** The same directory the remote-access store uses; defaults to ~/.doompi/web. */\n stateDir: string;\n onNotice?: (message: string) => void;\n}\n\nexport interface DevProxyStore {\n targets(): readonly DevProxyTarget[];\n find(name: string): DevProxyTarget | undefined;\n /** Replaces any target already holding this name, so re-registering a moved port is one call. */\n save(target: DevProxyTarget): void;\n remove(name: string): boolean;\n}\n\n/** Repairs a state file another account can read. */\nfunction tightenMode(filePath: string, notice: (message: string) => void): void {\n try {\n if ((fs.statSync(filePath).mode & LOOSE_MODE_MASK) === 0) return;\n fs.chmodSync(filePath, FILE_MODE);\n notice(`tightened permissions on ${filePath}`);\n } catch {\n // The file is missing or unreadable; the caller's own read reports that.\n }\n}\n\n/**\n * Rebuilds one record, dropping anything the current policy would refuse.\n *\n * The file is revalidated on read rather than trusted, because a name that was\n * legal when written is not necessarily legal now, and an edited file must not\n * be able to introduce a target the API would have rejected.\n */\nfunction parseTarget(value: unknown): DevProxyTarget | undefined {\n if (typeof value !== 'object' || value === null) return undefined;\n const record = value as Partial<DevProxyTarget>;\n const name = validateTargetName(record.name);\n if (!name.ok) return undefined;\n if (typeof record.port !== 'number' || !Number.isSafeInteger(record.port)) return undefined;\n const createdAt = typeof record.createdAt === 'number' ? record.createdAt : 0;\n return { name: name.name, port: record.port, createdAt };\n}\n\nexport function createDevProxyStore(options: DevProxyStoreOptions): DevProxyStore {\n const notice = options.onNotice ?? ((): void => {});\n const targetsPath = path.join(options.stateDir, TARGETS_FILE);\n let held = load();\n\n function load(): DevProxyTarget[] {\n let raw: string;\n try {\n raw = fs.readFileSync(targetsPath, 'utf8');\n } catch {\n // No file is the normal first run, so this is not worth a notice.\n return [];\n }\n tightenMode(targetsPath, notice);\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw);\n } catch {\n notice(`dev proxy targets at ${targetsPath} are not valid JSON; none will load`);\n return [];\n }\n if (!Array.isArray(parsed)) return [];\n return parsed.map(parseTarget).filter((target): target is DevProxyTarget => target !== undefined);\n }\n\n function write(): void {\n const temporary = `${targetsPath}.${String(process.pid)}.tmp`;\n try {\n fs.mkdirSync(options.stateDir, { recursive: true, mode: DIRECTORY_MODE });\n fs.writeFileSync(temporary, `${JSON.stringify(held, undefined, 2)}\\n`, { mode: FILE_MODE });\n // Rename rather than write in place, so a crash mid-write leaves the\n // previous contents rather than a truncated file.\n fs.renameSync(temporary, targetsPath);\n } catch (error) {\n notice(`${targetsPath} could not be saved: ${error instanceof Error ? error.message : String(error)}`);\n try {\n fs.rmSync(temporary, { force: true });\n } catch {\n // Nothing further to do; the temp file is inert either way.\n }\n }\n }\n\n return {\n targets: () => held,\n find: (name) => held.find((target) => target.name === name),\n\n save(target) {\n held = [...held.filter((existing) => existing.name !== target.name), target];\n write();\n },\n\n remove(name) {\n const next = held.filter((existing) => existing.name !== name);\n if (next.length === held.length) return false;\n held = next;\n write();\n return true;\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;AAgBA,MAAM,eAAe;AACrB,MAAM,iBAAiB;AACvB,MAAM,YAAY;;AAElB,MAAM,kBAAkB;;AAiBxB,SAAS,YAAY,UAAkB,QAAyC;CAC9E,IAAI;EACF,KAAK,GAAG,SAAS,QAAQ,CAAC,CAAC,OAAO,qBAAqB,GAAG;EAC1D,GAAG,UAAU,UAAU,SAAS;EAChC,OAAO,4BAA4B,UAAU;CAC/C,QAAQ,CAER;AACF;;;;;;;;AASA,SAAS,YAAY,OAA4C;CAC/D,IAAI,OAAO,UAAU,YAAY,UAAU,MAAM,OAAO,KAAA;CACxD,MAAM,SAAS;CACf,MAAM,OAAO,mBAAmB,OAAO,IAAI;CAC3C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAA;CACrB,IAAI,OAAO,OAAO,SAAS,YAAY,CAAC,OAAO,cAAc,OAAO,IAAI,GAAG,OAAO,KAAA;CAClF,MAAM,YAAY,OAAO,OAAO,cAAc,WAAW,OAAO,YAAY;CAC5E,OAAO;EAAE,MAAM,KAAK;EAAM,MAAM,OAAO;EAAM;CAAU;AACzD;AAEA,SAAgB,oBAAoB,SAA8C;CAChF,MAAM,SAAS,QAAQ,mBAAyB,CAAC;CACjD,MAAM,cAAc,KAAK,KAAK,QAAQ,UAAU,YAAY;CAC5D,IAAI,OAAO,KAAK;CAEhB,SAAS,OAAyB;EAChC,IAAI;EACJ,IAAI;GACF,MAAM,GAAG,aAAa,aAAa,MAAM;EAC3C,QAAQ;GAEN,OAAO,CAAC;EACV;EACA,YAAY,aAAa,MAAM;EAC/B,IAAI;EACJ,IAAI;GACF,SAAS,KAAK,MAAM,GAAG;EACzB,QAAQ;GACN,OAAO,wBAAwB,YAAY,oCAAoC;GAC/E,OAAO,CAAC;EACV;EACA,IAAI,CAAC,MAAM,QAAQ,MAAM,GAAG,OAAO,CAAC;EACpC,OAAO,OAAO,IAAI,WAAW,CAAC,CAAC,QAAQ,WAAqC,WAAW,KAAA,CAAS;CAClG;CAEA,SAAS,QAAc;EACrB,MAAM,YAAY,GAAG,YAAY,GAAG,OAAO,QAAQ,GAAG,EAAE;EACxD,IAAI;GACF,GAAG,UAAU,QAAQ,UAAU;IAAE,WAAW;IAAM,MAAM;GAAe,CAAC;GACxE,GAAG,cAAc,WAAW,GAAG,KAAK,UAAU,MAAM,KAAA,GAAW,CAAC,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;GAG1F,GAAG,WAAW,WAAW,WAAW;EACtC,SAAS,OAAO;GACd,OAAO,GAAG,YAAY,uBAAuB,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,GAAG;GACrG,IAAI;IACF,GAAG,OAAO,WAAW,EAAE,OAAO,KAAK,CAAC;GACtC,QAAQ,CAER;EACF;CACF;CAEA,OAAO;EACL,eAAe;EACf,OAAO,SAAS,KAAK,MAAM,WAAW,OAAO,SAAS,IAAI;EAE1D,KAAK,QAAQ;GACX,OAAO,CAAC,GAAG,KAAK,QAAQ,aAAa,SAAS,SAAS,OAAO,IAAI,GAAG,MAAM;GAC3E,MAAM;EACR;EAEA,OAAO,MAAM;GACX,MAAM,OAAO,KAAK,QAAQ,aAAa,SAAS,SAAS,IAAI;GAC7D,IAAI,KAAK,WAAW,KAAK,QAAQ,OAAO;GACxC,OAAO;GACP,MAAM;GACN,OAAO;EACT;CACF;AACF"}
@@ -0,0 +1,125 @@
1
+ const require_index = require("../deviceSessions/index.cjs");
2
+ let node_crypto = require("node:crypto");
3
+ //#region src/services/deviceAuth/index.ts
4
+ /** 256 bits. The token is scanned or set by the server, never typed, so there is no reason to economise. */
5
+ const TOKEN_BYTES = 32;
6
+ const ID_BYTES = 8;
7
+ function digest(token) {
8
+ return (0, node_crypto.createHash)("sha256").update(token).digest("hex");
9
+ }
10
+ /**
11
+ * Paired sessions, held in memory only.
12
+ *
13
+ * Keyed by digest rather than scanned, so verification is a map lookup and
14
+ * there is no comparison loop for a timing side channel to live in. That is why
15
+ * `timingSafeEqual` does not appear here: there is nothing to compare. If a
16
+ * future change introduces a scan, it will need one.
17
+ */
18
+ function createDeviceAuth(options) {
19
+ const now = options.now ?? (() => Date.now());
20
+ const notice = options.onNotice ?? (() => {});
21
+ /** Digest to record. The raw token exists only in flight. */
22
+ const devices = /* @__PURE__ */ new Map();
23
+ const timers = /* @__PURE__ */ new Map();
24
+ const clearDeadline = (hash) => {
25
+ const timer = timers.get(hash);
26
+ if (timer !== void 0) clearTimeout(timer);
27
+ timers.delete(hash);
28
+ };
29
+ const drop = (hash, reason) => {
30
+ const record = devices.get(hash);
31
+ if (record === void 0) return void 0;
32
+ devices.delete(hash);
33
+ clearDeadline(hash);
34
+ options.onDrop?.(record, reason);
35
+ return record;
36
+ };
37
+ const schedule = (hash, record) => {
38
+ clearDeadline(hash);
39
+ const deadline = require_index.deviceExpiryAt(record, options.settings());
40
+ if (deadline === void 0) return;
41
+ const remaining = deadline - now();
42
+ if (remaining <= 0) {
43
+ drop(hash, "expired");
44
+ return;
45
+ }
46
+ const timer = setTimeout(() => {
47
+ const current = devices.get(hash);
48
+ if (current === void 0) return;
49
+ if (require_index.evaluateDevice(current, now(), options.settings()).ok) schedule(hash, current);
50
+ else drop(hash, "expired");
51
+ }, Math.min(remaining, 2147483647));
52
+ timer.unref();
53
+ timers.set(hash, timer);
54
+ };
55
+ return {
56
+ enrol(input) {
57
+ const token = (0, node_crypto.randomBytes)(TOKEN_BYTES).toString("base64url");
58
+ const userAgent = require_index.sanitizeUserAgent(input.userAgent);
59
+ const at = now();
60
+ const record = {
61
+ id: (0, node_crypto.randomBytes)(ID_BYTES).toString("hex"),
62
+ tokenHash: digest(token),
63
+ label: require_index.deviceLabelFor(userAgent),
64
+ userAgent,
65
+ createdAt: at,
66
+ lastSeenAt: at
67
+ };
68
+ devices.set(record.tokenHash, record);
69
+ schedule(record.tokenHash, record);
70
+ notice(`paired ${record.label} (${record.id})`);
71
+ return {
72
+ token,
73
+ record
74
+ };
75
+ },
76
+ verify(token) {
77
+ if (token === void 0 || token === "") return void 0;
78
+ const hash = digest(token);
79
+ const at = now();
80
+ const verdict = require_index.evaluateDevice(devices.get(hash), at, options.settings());
81
+ if (!verdict.ok) {
82
+ if (verdict.reason !== "unknown") drop(hash, "expired");
83
+ return;
84
+ }
85
+ const seen = require_index.touchDevice(verdict.record, at);
86
+ devices.set(hash, seen);
87
+ schedule(hash, seen);
88
+ return seen;
89
+ },
90
+ revoke(id) {
91
+ for (const [hash, record] of devices) {
92
+ if (record.id !== id) continue;
93
+ drop(hash, "revoked");
94
+ notice(`revoked ${record.label} (${record.id})`);
95
+ return true;
96
+ }
97
+ return false;
98
+ },
99
+ revokeAll() {
100
+ const records = [...devices.values()];
101
+ for (const [hash] of devices) drop(hash, "revoked");
102
+ if (records.length > 0) notice(`revoked ${String(records.length)} paired device(s)`);
103
+ return records.length;
104
+ },
105
+ list: () => [...devices.values()],
106
+ reschedule() {
107
+ for (const [hash, record] of devices) schedule(hash, record);
108
+ },
109
+ sweep() {
110
+ const at = now();
111
+ const settings = options.settings();
112
+ let dropped = 0;
113
+ for (const [hash, record] of devices) {
114
+ if (require_index.evaluateDevice(record, at, settings).ok) continue;
115
+ drop(hash, "expired");
116
+ dropped += 1;
117
+ }
118
+ return dropped;
119
+ }
120
+ };
121
+ }
122
+ //#endregion
123
+ exports.createDeviceAuth = createDeviceAuth;
124
+
125
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["createHash","deviceExpiryAt","evaluateDevice","randomBytes","sanitizeUserAgent","deviceLabelFor","touchDevice"],"sources":["../../../../src/services/deviceAuth/index.ts"],"sourcesContent":["import { createHash, randomBytes } from 'node:crypto';\n\nimport type { RemoteAccessSettings } from '../../types/remote';\nimport {\n type DeviceRecord,\n deviceExpiryAt,\n deviceLabelFor,\n evaluateDevice,\n sanitizeUserAgent,\n touchDevice,\n} from '../deviceSessions';\n\n/** 256 bits. The token is scanned or set by the server, never typed, so there is no reason to economise. */\nconst TOKEN_BYTES = 32;\nconst ID_BYTES = 8;\n\nexport interface DeviceAuthOptions {\n /** Read fresh on every check, so a changed toggle takes effect on the next request. */\n settings: () => RemoteAccessSettings;\n now?: () => number;\n onNotice?: (message: string) => void;\n onDrop?: (record: DeviceRecord, reason: 'revoked' | 'expired') => void;\n}\n\nexport interface EnrolledDevice {\n /** Returned exactly once, to be sent as the cookie value. Only its digest is retained. */\n token: string;\n record: DeviceRecord;\n}\n\nexport interface DeviceAuth {\n enrol(input: { userAgent: string | undefined }): EnrolledDevice;\n /** The device this cookie names, or undefined. Bumps last-seen as a side effect. */\n verify(token: string | undefined): DeviceRecord | undefined;\n revoke(id: string): boolean;\n revokeAll(): number;\n list(): readonly DeviceRecord[];\n /** Re-arms exact deadlines after expiry settings change. */\n reschedule(): void;\n /** Drops what has expired under the current settings. Returns how many went. */\n sweep(): number;\n}\n\nfunction digest(token: string): string {\n // No salt and no KDF, deliberately. The input is 256 bits of uniform\n // randomness, so there is no dictionary to attack and a slow hash would only\n // add latency to every request. Do not \"fix\" this into bcrypt.\n return createHash('sha256').update(token).digest('hex');\n}\n\n/**\n * Paired sessions, held in memory only.\n *\n * Keyed by digest rather than scanned, so verification is a map lookup and\n * there is no comparison loop for a timing side channel to live in. That is why\n * `timingSafeEqual` does not appear here: there is nothing to compare. If a\n * future change introduces a scan, it will need one.\n */\nexport function createDeviceAuth(options: DeviceAuthOptions): DeviceAuth {\n const now = options.now ?? ((): number => Date.now());\n const notice = options.onNotice ?? ((): void => {});\n /** Digest to record. The raw token exists only in flight. */\n const devices = new Map<string, DeviceRecord>();\n const timers = new Map<string, ReturnType<typeof setTimeout>>();\n\n const clearDeadline = (hash: string): void => {\n const timer = timers.get(hash);\n if (timer !== undefined) clearTimeout(timer);\n timers.delete(hash);\n };\n\n const drop = (hash: string, reason: 'revoked' | 'expired'): DeviceRecord | undefined => {\n const record = devices.get(hash);\n if (record === undefined) return undefined;\n devices.delete(hash);\n clearDeadline(hash);\n options.onDrop?.(record, reason);\n return record;\n };\n\n const schedule = (hash: string, record: DeviceRecord): void => {\n clearDeadline(hash);\n const deadline = deviceExpiryAt(record, options.settings());\n if (deadline === undefined) return;\n const remaining = deadline - now();\n if (remaining <= 0) {\n drop(hash, 'expired');\n return;\n }\n const timer = setTimeout(\n () => {\n const current = devices.get(hash);\n if (current === undefined) return;\n if (evaluateDevice(current, now(), options.settings()).ok) schedule(hash, current);\n else drop(hash, 'expired');\n },\n Math.min(remaining, 2_147_483_647),\n );\n timer.unref();\n timers.set(hash, timer);\n };\n return {\n enrol(input) {\n const token = randomBytes(TOKEN_BYTES).toString('base64url');\n const userAgent = sanitizeUserAgent(input.userAgent);\n const at = now();\n const record: DeviceRecord = {\n id: randomBytes(ID_BYTES).toString('hex'),\n tokenHash: digest(token),\n label: deviceLabelFor(userAgent),\n userAgent,\n createdAt: at,\n lastSeenAt: at,\n };\n devices.set(record.tokenHash, record);\n schedule(record.tokenHash, record);\n notice(`paired ${record.label} (${record.id})`);\n return { token, record };\n },\n\n verify(token) {\n if (token === undefined || token === '') return undefined;\n const hash = digest(token);\n const at = now();\n const verdict = evaluateDevice(devices.get(hash), at, options.settings());\n if (!verdict.ok) {\n // An expired record is dropped on the way past rather than left to the\n // sweeper, so a revoked-by-time device stops appearing in the list.\n if (verdict.reason !== 'unknown') drop(hash, 'expired');\n return undefined;\n }\n const seen = touchDevice(verdict.record, at);\n devices.set(hash, seen);\n schedule(hash, seen);\n return seen;\n },\n\n revoke(id) {\n for (const [hash, record] of devices) {\n if (record.id !== id) continue;\n drop(hash, 'revoked');\n notice(`revoked ${record.label} (${record.id})`);\n return true;\n }\n return false;\n },\n\n revokeAll() {\n const records = [...devices.values()];\n for (const [hash] of devices) drop(hash, 'revoked');\n if (records.length > 0) notice(`revoked ${String(records.length)} paired device(s)`);\n return records.length;\n },\n\n list: () => [...devices.values()],\n\n reschedule() {\n for (const [hash, record] of devices) schedule(hash, record);\n },\n sweep() {\n const at = now();\n const settings = options.settings();\n let dropped = 0;\n for (const [hash, record] of devices) {\n if (evaluateDevice(record, at, settings).ok) continue;\n drop(hash, 'expired');\n dropped += 1;\n }\n return dropped;\n },\n };\n}\n"],"mappings":";;;;AAaA,MAAM,cAAc;AACpB,MAAM,WAAW;AA6BjB,SAAS,OAAO,OAAuB;CAIrC,QAAA,GAAOA,YAAAA,WAAAA,CAAW,QAAQ,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,KAAK;AACxD;;;;;;;;;AAUA,SAAgB,iBAAiB,SAAwC;CACvE,MAAM,MAAM,QAAQ,cAAsB,KAAK,IAAI;CACnD,MAAM,SAAS,QAAQ,mBAAyB,CAAC;;CAEjD,MAAM,0BAAU,IAAI,IAA0B;CAC9C,MAAM,yBAAS,IAAI,IAA2C;CAE9D,MAAM,iBAAiB,SAAuB;EAC5C,MAAM,QAAQ,OAAO,IAAI,IAAI;EAC7B,IAAI,UAAU,KAAA,GAAW,aAAa,KAAK;EAC3C,OAAO,OAAO,IAAI;CACpB;CAEA,MAAM,QAAQ,MAAc,WAA4D;EACtF,MAAM,SAAS,QAAQ,IAAI,IAAI;EAC/B,IAAI,WAAW,KAAA,GAAW,OAAO,KAAA;EACjC,QAAQ,OAAO,IAAI;EACnB,cAAc,IAAI;EAClB,QAAQ,SAAS,QAAQ,MAAM;EAC/B,OAAO;CACT;CAEA,MAAM,YAAY,MAAc,WAA+B;EAC7D,cAAc,IAAI;EAClB,MAAM,WAAWC,cAAAA,eAAe,QAAQ,QAAQ,SAAS,CAAC;EAC1D,IAAI,aAAa,KAAA,GAAW;EAC5B,MAAM,YAAY,WAAW,IAAI;EACjC,IAAI,aAAa,GAAG;GAClB,KAAK,MAAM,SAAS;GACpB;EACF;EACA,MAAM,QAAQ,iBACN;GACJ,MAAM,UAAU,QAAQ,IAAI,IAAI;GAChC,IAAI,YAAY,KAAA,GAAW;GAC3B,IAAIC,cAAAA,eAAe,SAAS,IAAI,GAAG,QAAQ,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,MAAM,OAAO;QAC5E,KAAK,MAAM,SAAS;EAC3B,GACA,KAAK,IAAI,WAAW,UAAa,CACnC;EACA,MAAM,MAAM;EACZ,OAAO,IAAI,MAAM,KAAK;CACxB;CACA,OAAO;EACL,MAAM,OAAO;GACX,MAAM,SAAA,GAAQC,YAAAA,YAAAA,CAAY,WAAW,CAAC,CAAC,SAAS,WAAW;GAC3D,MAAM,YAAYC,cAAAA,kBAAkB,MAAM,SAAS;GACnD,MAAM,KAAK,IAAI;GACf,MAAM,SAAuB;IAC3B,KAAA,GAAID,YAAAA,YAAAA,CAAY,QAAQ,CAAC,CAAC,SAAS,KAAK;IACxC,WAAW,OAAO,KAAK;IACvB,OAAOE,cAAAA,eAAe,SAAS;IAC/B;IACA,WAAW;IACX,YAAY;GACd;GACA,QAAQ,IAAI,OAAO,WAAW,MAAM;GACpC,SAAS,OAAO,WAAW,MAAM;GACjC,OAAO,UAAU,OAAO,MAAM,IAAI,OAAO,GAAG,EAAE;GAC9C,OAAO;IAAE;IAAO;GAAO;EACzB;EAEA,OAAO,OAAO;GACZ,IAAI,UAAU,KAAA,KAAa,UAAU,IAAI,OAAO,KAAA;GAChD,MAAM,OAAO,OAAO,KAAK;GACzB,MAAM,KAAK,IAAI;GACf,MAAM,UAAUH,cAAAA,eAAe,QAAQ,IAAI,IAAI,GAAG,IAAI,QAAQ,SAAS,CAAC;GACxE,IAAI,CAAC,QAAQ,IAAI;IAGf,IAAI,QAAQ,WAAW,WAAW,KAAK,MAAM,SAAS;IACtD;GACF;GACA,MAAM,OAAOI,cAAAA,YAAY,QAAQ,QAAQ,EAAE;GAC3C,QAAQ,IAAI,MAAM,IAAI;GACtB,SAAS,MAAM,IAAI;GACnB,OAAO;EACT;EAEA,OAAO,IAAI;GACT,KAAK,MAAM,CAAC,MAAM,WAAW,SAAS;IACpC,IAAI,OAAO,OAAO,IAAI;IACtB,KAAK,MAAM,SAAS;IACpB,OAAO,WAAW,OAAO,MAAM,IAAI,OAAO,GAAG,EAAE;IAC/C,OAAO;GACT;GACA,OAAO;EACT;EAEA,YAAY;GACV,MAAM,UAAU,CAAC,GAAG,QAAQ,OAAO,CAAC;GACpC,KAAK,MAAM,CAAC,SAAS,SAAS,KAAK,MAAM,SAAS;GAClD,IAAI,QAAQ,SAAS,GAAG,OAAO,WAAW,OAAO,QAAQ,MAAM,EAAE,kBAAkB;GACnF,OAAO,QAAQ;EACjB;EAEA,YAAY,CAAC,GAAG,QAAQ,OAAO,CAAC;EAEhC,aAAa;GACX,KAAK,MAAM,CAAC,MAAM,WAAW,SAAS,SAAS,MAAM,MAAM;EAC7D;EACA,QAAQ;GACN,MAAM,KAAK,IAAI;GACf,MAAM,WAAW,QAAQ,SAAS;GAClC,IAAI,UAAU;GACd,KAAK,MAAM,CAAC,MAAM,WAAW,SAAS;IACpC,IAAIJ,cAAAA,eAAe,QAAQ,IAAI,QAAQ,CAAC,CAAC,IAAI;IAC7C,KAAK,MAAM,SAAS;IACpB,WAAW;GACb;GACA,OAAO;EACT;CACF;AACF"}
@@ -0,0 +1,9 @@
1
+ import { DeviceRecord } from "../deviceSessions/index.mjs";
2
+ //#region src/services/deviceAuth/index.d.ts
3
+ export interface EnrolledDevice {
4
+ /** Returned exactly once, to be sent as the cookie value. Only its digest is retained. */
5
+ token: string;
6
+ record: DeviceRecord;
7
+ }
8
+ //#endregion
9
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/services/deviceAuth/index.ts"],"mappings":";;iBAwBiB;;EAEf;EACA,QAAQ"}