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

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 (1372) 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/agent-model.cjs +4 -0
  5. package/dist/agent-model.d.cts +2 -0
  6. package/dist/agent-model.d.mts +2 -0
  7. package/dist/agent-model.mjs +2 -0
  8. package/dist/api-contracts.cjs +27 -0
  9. package/dist/api-contracts.d.cts +7 -0
  10. package/dist/api-contracts.d.mts +7 -0
  11. package/dist/api-contracts.mjs +7 -0
  12. package/dist/ask-user.cjs +8 -0
  13. package/dist/ask-user.d.cts +2 -0
  14. package/dist/ask-user.d.mts +2 -0
  15. package/dist/ask-user.mjs +2 -0
  16. package/dist/author-tools.cjs +5 -0
  17. package/dist/author-tools.d.cts +2 -0
  18. package/dist/author-tools.d.mts +2 -0
  19. package/dist/author-tools.mjs +2 -0
  20. package/dist/background-work.cjs +7 -0
  21. package/dist/background-work.d.cts +2 -0
  22. package/dist/background-work.d.mts +2 -0
  23. package/dist/background-work.mjs +2 -0
  24. package/dist/child-process.cjs +15 -0
  25. package/dist/child-process.d.cts +2 -0
  26. package/dist/child-process.d.mts +2 -0
  27. package/dist/child-process.mjs +2 -0
  28. package/dist/child.cjs +7 -0
  29. package/dist/child.d.cts +3 -0
  30. package/dist/child.d.mts +3 -0
  31. package/dist/child.mjs +3 -0
  32. package/dist/cockpit-container.cjs +4 -0
  33. package/dist/cockpit-container.d.cts +2 -0
  34. package/dist/cockpit-container.d.mts +2 -0
  35. package/dist/cockpit-container.mjs +2 -0
  36. package/dist/config.cjs +13 -0
  37. package/dist/config.d.cts +3 -0
  38. package/dist/config.d.mts +3 -0
  39. package/dist/config.mjs +2 -0
  40. package/dist/constants/authorTools.cjs +10 -0
  41. package/dist/constants/authorTools.cjs.map +1 -0
  42. package/dist/constants/authorTools.d.cts +6 -0
  43. package/dist/constants/authorTools.d.cts.map +1 -0
  44. package/dist/constants/authorTools.d.mts +6 -0
  45. package/dist/constants/authorTools.d.mts.map +1 -0
  46. package/dist/constants/authorTools.mjs +8 -0
  47. package/dist/constants/authorTools.mjs.map +1 -0
  48. package/dist/constants/contextApi.cjs +28 -0
  49. package/dist/constants/contextApi.cjs.map +1 -0
  50. package/dist/constants/contextApi.d.cts +21 -0
  51. package/dist/constants/contextApi.d.cts.map +1 -0
  52. package/dist/constants/contextApi.d.mts +21 -0
  53. package/dist/constants/contextApi.d.mts.map +1 -0
  54. package/dist/constants/contextApi.mjs +23 -0
  55. package/dist/constants/contextApi.mjs.map +1 -0
  56. package/dist/constants/remote.cjs +81 -0
  57. package/dist/constants/remote.cjs.map +1 -0
  58. package/dist/constants/remote.mjs +62 -0
  59. package/dist/constants/remote.mjs.map +1 -0
  60. package/dist/constants/voiceReloadHandoff.cjs +12 -0
  61. package/dist/constants/voiceReloadHandoff.cjs.map +1 -0
  62. package/dist/constants/voiceReloadHandoff.d.cts +7 -0
  63. package/dist/constants/voiceReloadHandoff.d.cts.map +1 -0
  64. package/dist/constants/voiceReloadHandoff.d.mts +7 -0
  65. package/dist/constants/voiceReloadHandoff.d.mts.map +1 -0
  66. package/dist/constants/voiceReloadHandoff.mjs +9 -0
  67. package/dist/constants/voiceReloadHandoff.mjs.map +1 -0
  68. package/dist/constants/voiceTools.cjs +96 -0
  69. package/dist/constants/voiceTools.cjs.map +1 -0
  70. package/dist/constants/voiceTools.d.cts +58 -0
  71. package/dist/constants/voiceTools.d.cts.map +1 -0
  72. package/dist/constants/voiceTools.d.mts +58 -0
  73. package/dist/constants/voiceTools.d.mts.map +1 -0
  74. package/dist/constants/voiceTools.mjs +60 -0
  75. package/dist/constants/voiceTools.mjs.map +1 -0
  76. package/dist/context-api.cjs +10 -0
  77. package/dist/context-api.d.cts +4 -0
  78. package/dist/context-api.d.mts +4 -0
  79. package/dist/context-api.mjs +3 -0
  80. package/dist/context-contributions.cjs +7 -0
  81. package/dist/context-contributions.d.cts +3 -0
  82. package/dist/context-contributions.d.mts +3 -0
  83. package/dist/context-contributions.mjs +3 -0
  84. package/dist/context-detail-store.cjs +100 -0
  85. package/dist/context-detail-store.cjs.map +1 -0
  86. package/dist/context-detail-store.d.cts +19 -0
  87. package/dist/context-detail-store.d.cts.map +1 -0
  88. package/dist/context-detail-store.d.mts +19 -0
  89. package/dist/context-detail-store.d.mts.map +1 -0
  90. package/dist/context-detail-store.mjs +91 -0
  91. package/dist/context-detail-store.mjs.map +1 -0
  92. package/dist/context-detail.cjs +57 -0
  93. package/dist/context-detail.cjs.map +1 -0
  94. package/dist/context-detail.d.cts +13 -0
  95. package/dist/context-detail.d.cts.map +1 -0
  96. package/dist/context-detail.d.mts +13 -0
  97. package/dist/context-detail.d.mts.map +1 -0
  98. package/dist/context-detail.mjs +56 -0
  99. package/dist/context-detail.mjs.map +1 -0
  100. package/dist/context-projection.cjs +120 -0
  101. package/dist/context-projection.cjs.map +1 -0
  102. package/dist/context-projection.d.cts +113 -0
  103. package/dist/context-projection.d.cts.map +1 -0
  104. package/dist/context-projection.d.mts +113 -0
  105. package/dist/context-projection.d.mts.map +1 -0
  106. package/dist/context-projection.mjs +116 -0
  107. package/dist/context-projection.mjs.map +1 -0
  108. package/dist/cordis-host.cjs +10 -0
  109. package/dist/cordis-host.d.cts +2 -0
  110. package/dist/cordis-host.d.mts +2 -0
  111. package/dist/cordis-host.mjs +2 -0
  112. package/dist/delegation.cjs +18 -0
  113. package/dist/delegation.d.cts +2 -0
  114. package/dist/delegation.d.mts +2 -0
  115. package/dist/delegation.mjs +2 -0
  116. package/dist/doom-package.cjs +61 -0
  117. package/dist/doom-package.cjs.map +1 -0
  118. package/dist/doom-package.d.cts +17 -0
  119. package/dist/doom-package.d.cts.map +1 -0
  120. package/dist/doom-package.d.mts +17 -0
  121. package/dist/doom-package.d.mts.map +1 -0
  122. package/dist/doom-package.mjs +54 -0
  123. package/dist/doom-package.mjs.map +1 -0
  124. package/dist/extensions/serverPlugin.cjs +106 -0
  125. package/dist/extensions/serverPlugin.cjs.map +1 -0
  126. package/dist/extensions/serverPlugin.d.cts +5 -0
  127. package/dist/extensions/serverPlugin.d.cts.map +1 -0
  128. package/dist/extensions/serverPlugin.d.mts +5 -0
  129. package/dist/extensions/serverPlugin.d.mts.map +1 -0
  130. package/dist/extensions/serverPlugin.mjs +106 -0
  131. package/dist/extensions/serverPlugin.mjs.map +1 -0
  132. package/dist/extensions/webPlugin.cjs +28 -0
  133. package/dist/extensions/webPlugin.cjs.map +1 -0
  134. package/dist/extensions/webPlugin.d.cts +19 -0
  135. package/dist/extensions/webPlugin.d.cts.map +1 -0
  136. package/dist/extensions/webPlugin.d.mts +19 -0
  137. package/dist/extensions/webPlugin.d.mts.map +1 -0
  138. package/dist/extensions/webPlugin.mjs +26 -0
  139. package/dist/extensions/webPlugin.mjs.map +1 -0
  140. package/dist/footer.cjs +6 -0
  141. package/dist/footer.d.cts +2 -0
  142. package/dist/footer.d.mts +2 -0
  143. package/dist/footer.mjs +2 -0
  144. package/dist/headless-hub.cjs +499 -0
  145. package/dist/headless-hub.cjs.map +1 -0
  146. package/dist/headless-hub.d.cts +96 -0
  147. package/dist/headless-hub.d.cts.map +1 -0
  148. package/dist/headless-hub.d.mts +96 -0
  149. package/dist/headless-hub.d.mts.map +1 -0
  150. package/dist/headless-hub.mjs +498 -0
  151. package/dist/headless-hub.mjs.map +1 -0
  152. package/dist/headless-server.cjs +492 -0
  153. package/dist/headless-server.cjs.map +1 -0
  154. package/dist/headless-server.d.cts +30 -0
  155. package/dist/headless-server.d.cts.map +1 -0
  156. package/dist/headless-server.d.mts +30 -0
  157. package/dist/headless-server.d.mts.map +1 -0
  158. package/dist/headless-server.mjs +488 -0
  159. package/dist/headless-server.mjs.map +1 -0
  160. package/dist/headless-session-host.cjs +0 -0
  161. package/dist/headless-session-host.d.cts +45 -0
  162. package/dist/headless-session-host.d.cts.map +1 -0
  163. package/dist/headless-session-host.d.mts +45 -0
  164. package/dist/headless-session-host.d.mts.map +1 -0
  165. package/dist/headless-session-host.mjs +1 -0
  166. package/dist/headless-session-manager.cjs +51 -0
  167. package/dist/headless-session-manager.cjs.map +1 -0
  168. package/dist/headless-session-manager.d.cts +6 -0
  169. package/dist/headless-session-manager.d.cts.map +1 -0
  170. package/dist/headless-session-manager.d.mts +6 -0
  171. package/dist/headless-session-manager.d.mts.map +1 -0
  172. package/dist/headless-session-manager.mjs +50 -0
  173. package/dist/headless-session-manager.mjs.map +1 -0
  174. package/dist/headless.cjs +7 -0
  175. package/dist/headless.d.cts +2 -0
  176. package/dist/headless.d.mts +2 -0
  177. package/dist/headless.mjs +2 -0
  178. package/dist/help.cjs +21 -0
  179. package/dist/help.d.cts +2 -0
  180. package/dist/help.d.mts +2 -0
  181. package/dist/help.mjs +2 -0
  182. package/dist/history-import.cjs +553 -0
  183. package/dist/history-import.cjs.map +1 -0
  184. package/dist/history-import.d.cts +76 -0
  185. package/dist/history-import.d.cts.map +1 -0
  186. package/dist/history-import.d.mts +76 -0
  187. package/dist/history-import.d.mts.map +1 -0
  188. package/dist/history-import.mjs +547 -0
  189. package/dist/history-import.mjs.map +1 -0
  190. package/dist/history-ownership.cjs +169 -0
  191. package/dist/history-ownership.cjs.map +1 -0
  192. package/dist/history-ownership.d.cts +23 -0
  193. package/dist/history-ownership.d.cts.map +1 -0
  194. package/dist/history-ownership.d.mts +23 -0
  195. package/dist/history-ownership.d.mts.map +1 -0
  196. package/dist/history-ownership.mjs +163 -0
  197. package/dist/history-ownership.mjs.map +1 -0
  198. package/dist/history.cjs +13 -0
  199. package/dist/history.d.cts +6 -0
  200. package/dist/history.d.mts +6 -0
  201. package/dist/history.mjs +6 -0
  202. package/dist/hub-channel.cjs +0 -0
  203. package/dist/hub-channel.d.cts +2 -0
  204. package/dist/hub-channel.d.mts +2 -0
  205. package/dist/hub-channel.mjs +1 -0
  206. package/dist/index.cjs +44 -0
  207. package/dist/index.d.cts +6 -0
  208. package/dist/index.d.mts +6 -0
  209. package/dist/index.mjs +6 -0
  210. package/dist/json.cjs +6 -0
  211. package/dist/json.d.cts +2 -0
  212. package/dist/json.d.mts +2 -0
  213. package/dist/json.mjs +2 -0
  214. package/dist/jsonl-session-repo.cjs +217 -0
  215. package/dist/jsonl-session-repo.cjs.map +1 -0
  216. package/dist/jsonl-session-repo.d.cts +7 -0
  217. package/dist/jsonl-session-repo.d.cts.map +1 -0
  218. package/dist/jsonl-session-repo.d.mts +7 -0
  219. package/dist/jsonl-session-repo.d.mts.map +1 -0
  220. package/dist/jsonl-session-repo.mjs +212 -0
  221. package/dist/jsonl-session-repo.mjs.map +1 -0
  222. package/dist/kernel.cjs +3 -0
  223. package/dist/kernel.d.cts +3 -0
  224. package/dist/kernel.d.mts +3 -0
  225. package/dist/kernel.mjs +2 -0
  226. package/dist/leader.cjs +9 -0
  227. package/dist/leader.d.cts +2 -0
  228. package/dist/leader.d.mts +2 -0
  229. package/dist/leader.mjs +2 -0
  230. package/dist/log-sink-telemetry.cjs +5 -0
  231. package/dist/log-sink-telemetry.d.cts +2 -0
  232. package/dist/log-sink-telemetry.d.mts +2 -0
  233. package/dist/log-sink-telemetry.mjs +2 -0
  234. package/dist/machine-api.cjs +73 -0
  235. package/dist/machine-api.cjs.map +1 -0
  236. package/dist/machine-api.d.cts +7 -0
  237. package/dist/machine-api.d.cts.map +1 -0
  238. package/dist/machine-api.d.mts +7 -0
  239. package/dist/machine-api.d.mts.map +1 -0
  240. package/dist/machine-api.mjs +70 -0
  241. package/dist/machine-api.mjs.map +1 -0
  242. package/dist/main.cjs +10 -0
  243. package/dist/main.d.cts +5 -0
  244. package/dist/main.d.mts +5 -0
  245. package/dist/main.mjs +4 -0
  246. package/dist/mcp-projection.cjs +15 -0
  247. package/dist/mcp-projection.d.cts +2 -0
  248. package/dist/mcp-projection.d.mts +2 -0
  249. package/dist/mcp-projection.mjs +2 -0
  250. package/dist/mcp-schema-cost.cjs +195 -0
  251. package/dist/mcp-schema-cost.cjs.map +1 -0
  252. package/dist/mcp-schema-cost.d.cts +35 -0
  253. package/dist/mcp-schema-cost.d.cts.map +1 -0
  254. package/dist/mcp-schema-cost.d.mts +35 -0
  255. package/dist/mcp-schema-cost.d.mts.map +1 -0
  256. package/dist/mcp-schema-cost.mjs +190 -0
  257. package/dist/mcp-schema-cost.mjs.map +1 -0
  258. package/dist/mcp-session.cjs +9 -0
  259. package/dist/mcp-session.d.cts +2 -0
  260. package/dist/mcp-session.d.mts +2 -0
  261. package/dist/mcp-session.mjs +2 -0
  262. package/dist/mcp-status.cjs +7 -0
  263. package/dist/mcp-status.d.cts +2 -0
  264. package/dist/mcp-status.d.mts +2 -0
  265. package/dist/mcp-status.mjs +2 -0
  266. package/dist/mcp-tool-resolver.cjs +5 -0
  267. package/dist/mcp-tool-resolver.d.cts +2 -0
  268. package/dist/mcp-tool-resolver.d.mts +2 -0
  269. package/dist/mcp-tool-resolver.mjs +2 -0
  270. package/dist/module-resolution.cjs +405 -0
  271. package/dist/module-resolution.cjs.map +1 -0
  272. package/dist/module-resolution.d.cts +67 -0
  273. package/dist/module-resolution.d.cts.map +1 -0
  274. package/dist/module-resolution.d.mts +67 -0
  275. package/dist/module-resolution.d.mts.map +1 -0
  276. package/dist/module-resolution.mjs +389 -0
  277. package/dist/module-resolution.mjs.map +1 -0
  278. package/dist/narration.cjs +10 -0
  279. package/dist/narration.d.cts +2 -0
  280. package/dist/narration.d.mts +2 -0
  281. package/dist/narration.mjs +2 -0
  282. package/dist/notification.cjs +17 -0
  283. package/dist/notification.d.cts +2 -0
  284. package/dist/notification.d.mts +2 -0
  285. package/dist/notification.mjs +2 -0
  286. package/dist/package-api-server.cjs +161 -0
  287. package/dist/package-api-server.cjs.map +1 -0
  288. package/dist/package-api-server.d.cts +47 -0
  289. package/dist/package-api-server.d.cts.map +1 -0
  290. package/dist/package-api-server.d.mts +47 -0
  291. package/dist/package-api-server.d.mts.map +1 -0
  292. package/dist/package-api-server.mjs +159 -0
  293. package/dist/package-api-server.mjs.map +1 -0
  294. package/dist/package-api.cjs +11 -0
  295. package/dist/package-api.d.cts +2 -0
  296. package/dist/package-api.d.mts +2 -0
  297. package/dist/package-api.mjs +2 -0
  298. package/dist/pi/piSessionRuntime.cjs +520 -0
  299. package/dist/pi/piSessionRuntime.cjs.map +1 -0
  300. package/dist/pi/piSessionRuntime.d.cts +43 -0
  301. package/dist/pi/piSessionRuntime.d.cts.map +1 -0
  302. package/dist/pi/piSessionRuntime.d.mts +43 -0
  303. package/dist/pi/piSessionRuntime.d.mts.map +1 -0
  304. package/dist/pi/piSessionRuntime.mjs +519 -0
  305. package/dist/pi/piSessionRuntime.mjs.map +1 -0
  306. package/dist/pi/piWebSocketListener.cjs +115 -0
  307. package/dist/pi/piWebSocketListener.cjs.map +1 -0
  308. package/dist/pi/piWebSocketListener.mjs +115 -0
  309. package/dist/pi/piWebSocketListener.mjs.map +1 -0
  310. package/dist/pi-extension.cjs +8 -0
  311. package/dist/pi-extension.d.cts +5 -0
  312. package/dist/pi-extension.d.mts +5 -0
  313. package/dist/pi-extension.mjs +4 -0
  314. package/dist/pi-settings.cjs +11 -0
  315. package/dist/pi-settings.d.cts +2 -0
  316. package/dist/pi-settings.d.mts +2 -0
  317. package/dist/pi-settings.mjs +2 -0
  318. package/dist/plugin-protocol.cjs +10 -0
  319. package/dist/plugin-protocol.d.cts +2 -0
  320. package/dist/plugin-protocol.d.mts +2 -0
  321. package/dist/plugin-protocol.mjs +2 -0
  322. package/dist/profile-identity.cjs +6 -0
  323. package/dist/profile-identity.d.cts +2 -0
  324. package/dist/profile-identity.d.mts +2 -0
  325. package/dist/profile-identity.mjs +2 -0
  326. package/dist/protocol.cjs +10 -0
  327. package/dist/protocol.d.cts +2 -0
  328. package/dist/protocol.d.mts +2 -0
  329. package/dist/protocol.mjs +2 -0
  330. package/dist/readiness.cjs +8 -0
  331. package/dist/readiness.d.cts +2 -0
  332. package/dist/readiness.d.mts +2 -0
  333. package/dist/readiness.mjs +2 -0
  334. package/dist/relaunch-handoff.cjs +6 -0
  335. package/dist/relaunch-handoff.d.cts +2 -0
  336. package/dist/relaunch-handoff.d.mts +2 -0
  337. package/dist/relaunch-handoff.mjs +2 -0
  338. package/dist/remote-api.cjs +42 -0
  339. package/dist/remote-api.cjs.map +1 -0
  340. package/dist/remote-api.d.cts +7 -0
  341. package/dist/remote-api.d.cts.map +1 -0
  342. package/dist/remote-api.d.mts +7 -0
  343. package/dist/remote-api.d.mts.map +1 -0
  344. package/dist/remote-api.mjs +41 -0
  345. package/dist/remote-api.mjs.map +1 -0
  346. package/dist/remote-runtime.cjs +394 -0
  347. package/dist/remote-runtime.cjs.map +1 -0
  348. package/dist/remote-runtime.d.cts +26 -0
  349. package/dist/remote-runtime.d.cts.map +1 -0
  350. package/dist/remote-runtime.d.mts +26 -0
  351. package/dist/remote-runtime.d.mts.map +1 -0
  352. package/dist/remote-runtime.mjs +390 -0
  353. package/dist/remote-runtime.mjs.map +1 -0
  354. package/dist/runtime-config.cjs +232 -0
  355. package/dist/runtime-config.cjs.map +1 -0
  356. package/dist/runtime-config.d.cts +313 -0
  357. package/dist/runtime-config.d.cts.map +1 -0
  358. package/dist/runtime-config.d.mts +313 -0
  359. package/dist/runtime-config.d.mts.map +1 -0
  360. package/dist/runtime-config.mjs +221 -0
  361. package/dist/runtime-config.mjs.map +1 -0
  362. package/dist/runtime-context-api.cjs +64 -0
  363. package/dist/runtime-context-api.cjs.map +1 -0
  364. package/dist/runtime-context-api.d.cts +16 -0
  365. package/dist/runtime-context-api.d.cts.map +1 -0
  366. package/dist/runtime-context-api.d.mts +16 -0
  367. package/dist/runtime-context-api.d.mts.map +1 -0
  368. package/dist/runtime-context-api.mjs +62 -0
  369. package/dist/runtime-context-api.mjs.map +1 -0
  370. package/dist/runtime-cordis-host.cjs +191 -0
  371. package/dist/runtime-cordis-host.cjs.map +1 -0
  372. package/dist/runtime-cordis-host.d.cts +57 -0
  373. package/dist/runtime-cordis-host.d.cts.map +1 -0
  374. package/dist/runtime-cordis-host.d.mts +57 -0
  375. package/dist/runtime-cordis-host.d.mts.map +1 -0
  376. package/dist/runtime-cordis-host.mjs +183 -0
  377. package/dist/runtime-cordis-host.mjs.map +1 -0
  378. package/dist/runtime-headless-session-manager.cjs +0 -0
  379. package/dist/runtime-headless-session-manager.d.cts +14 -0
  380. package/dist/runtime-headless-session-manager.d.cts.map +1 -0
  381. package/dist/runtime-headless-session-manager.d.mts +14 -0
  382. package/dist/runtime-headless-session-manager.d.mts.map +1 -0
  383. package/dist/runtime-headless-session-manager.mjs +1 -0
  384. package/dist/runtime-identity.cjs +26 -0
  385. package/dist/runtime-identity.cjs.map +1 -0
  386. package/dist/runtime-identity.d.cts +7 -0
  387. package/dist/runtime-identity.d.cts.map +1 -0
  388. package/dist/runtime-identity.d.mts +7 -0
  389. package/dist/runtime-identity.d.mts.map +1 -0
  390. package/dist/runtime-identity.mjs +21 -0
  391. package/dist/runtime-identity.mjs.map +1 -0
  392. package/dist/runtime-json.cjs +46 -0
  393. package/dist/runtime-json.cjs.map +1 -0
  394. package/dist/runtime-json.d.cts +22 -0
  395. package/dist/runtime-json.d.cts.map +1 -0
  396. package/dist/runtime-json.d.mts +22 -0
  397. package/dist/runtime-json.d.mts.map +1 -0
  398. package/dist/runtime-json.mjs +39 -0
  399. package/dist/runtime-json.mjs.map +1 -0
  400. package/dist/runtime-log-sink-telemetry.cjs +102 -0
  401. package/dist/runtime-log-sink-telemetry.cjs.map +1 -0
  402. package/dist/runtime-log-sink-telemetry.d.cts +49 -0
  403. package/dist/runtime-log-sink-telemetry.d.cts.map +1 -0
  404. package/dist/runtime-log-sink-telemetry.d.mts +49 -0
  405. package/dist/runtime-log-sink-telemetry.d.mts.map +1 -0
  406. package/dist/runtime-log-sink-telemetry.mjs +99 -0
  407. package/dist/runtime-log-sink-telemetry.mjs.map +1 -0
  408. package/dist/runtime-pi-extension.cjs +243 -0
  409. package/dist/runtime-pi-extension.cjs.map +1 -0
  410. package/dist/runtime-pi-extension.d.cts +102 -0
  411. package/dist/runtime-pi-extension.d.cts.map +1 -0
  412. package/dist/runtime-pi-extension.d.mts +102 -0
  413. package/dist/runtime-pi-extension.d.mts.map +1 -0
  414. package/dist/runtime-pi-extension.mjs +242 -0
  415. package/dist/runtime-pi-extension.mjs.map +1 -0
  416. package/dist/runtime-pi-settings.cjs +104 -0
  417. package/dist/runtime-pi-settings.cjs.map +1 -0
  418. package/dist/runtime-pi-settings.d.cts +23 -0
  419. package/dist/runtime-pi-settings.d.cts.map +1 -0
  420. package/dist/runtime-pi-settings.d.mts +23 -0
  421. package/dist/runtime-pi-settings.d.mts.map +1 -0
  422. package/dist/runtime-pi-settings.mjs +92 -0
  423. package/dist/runtime-pi-settings.mjs.map +1 -0
  424. package/dist/runtime-protocol.cjs +223 -0
  425. package/dist/runtime-protocol.cjs.map +1 -0
  426. package/dist/runtime-protocol.d.cts +84 -0
  427. package/dist/runtime-protocol.d.cts.map +1 -0
  428. package/dist/runtime-protocol.d.mts +84 -0
  429. package/dist/runtime-protocol.d.mts.map +1 -0
  430. package/dist/runtime-protocol.mjs +215 -0
  431. package/dist/runtime-protocol.mjs.map +1 -0
  432. package/dist/runtime-tool-names.cjs +51 -0
  433. package/dist/runtime-tool-names.cjs.map +1 -0
  434. package/dist/runtime-tool-names.d.cts +24 -0
  435. package/dist/runtime-tool-names.d.cts.map +1 -0
  436. package/dist/runtime-tool-names.d.mts +24 -0
  437. package/dist/runtime-tool-names.d.mts.map +1 -0
  438. package/dist/runtime-tool-names.mjs +49 -0
  439. package/dist/runtime-tool-names.mjs.map +1 -0
  440. package/dist/runtime-transition.cjs +27 -0
  441. package/dist/runtime-transition.cjs.map +1 -0
  442. package/dist/runtime-transition.d.cts +114 -0
  443. package/dist/runtime-transition.d.cts.map +1 -0
  444. package/dist/runtime-transition.d.mts +114 -0
  445. package/dist/runtime-transition.d.mts.map +1 -0
  446. package/dist/runtime-transition.mjs +24 -0
  447. package/dist/runtime-transition.mjs.map +1 -0
  448. package/dist/sandbox-harness.cjs +6 -0
  449. package/dist/sandbox-harness.d.cts +2 -0
  450. package/dist/sandbox-harness.d.mts +2 -0
  451. package/dist/sandbox-harness.mjs +2 -0
  452. package/dist/schemas/agentModel.cjs +33 -0
  453. package/dist/schemas/agentModel.cjs.map +1 -0
  454. package/dist/schemas/agentModel.d.cts +26 -0
  455. package/dist/schemas/agentModel.d.cts.map +1 -0
  456. package/dist/schemas/agentModel.d.mts +26 -0
  457. package/dist/schemas/agentModel.d.mts.map +1 -0
  458. package/dist/schemas/agentModel.mjs +32 -0
  459. package/dist/schemas/agentModel.mjs.map +1 -0
  460. package/dist/schemas/apiContracts.cjs +145 -0
  461. package/dist/schemas/apiContracts.cjs.map +1 -0
  462. package/dist/schemas/apiContracts.d.cts +81 -0
  463. package/dist/schemas/apiContracts.d.cts.map +1 -0
  464. package/dist/schemas/apiContracts.d.mts +81 -0
  465. package/dist/schemas/apiContracts.d.mts.map +1 -0
  466. package/dist/schemas/apiContracts.mjs +140 -0
  467. package/dist/schemas/apiContracts.mjs.map +1 -0
  468. package/dist/schemas/askUser.cjs +42 -0
  469. package/dist/schemas/askUser.cjs.map +1 -0
  470. package/dist/schemas/askUser.d.cts +47 -0
  471. package/dist/schemas/askUser.d.cts.map +1 -0
  472. package/dist/schemas/askUser.d.mts +47 -0
  473. package/dist/schemas/askUser.d.mts.map +1 -0
  474. package/dist/schemas/askUser.mjs +37 -0
  475. package/dist/schemas/askUser.mjs.map +1 -0
  476. package/dist/schemas/backgroundWork.cjs +31 -0
  477. package/dist/schemas/backgroundWork.cjs.map +1 -0
  478. package/dist/schemas/backgroundWork.d.cts +72 -0
  479. package/dist/schemas/backgroundWork.d.cts.map +1 -0
  480. package/dist/schemas/backgroundWork.d.mts +72 -0
  481. package/dist/schemas/backgroundWork.d.mts.map +1 -0
  482. package/dist/schemas/backgroundWork.mjs +27 -0
  483. package/dist/schemas/backgroundWork.mjs.map +1 -0
  484. package/dist/schemas/builtinApiContracts.cjs +37 -0
  485. package/dist/schemas/builtinApiContracts.cjs.map +1 -0
  486. package/dist/schemas/builtinApiContracts.d.cts +51 -0
  487. package/dist/schemas/builtinApiContracts.d.cts.map +1 -0
  488. package/dist/schemas/builtinApiContracts.d.mts +51 -0
  489. package/dist/schemas/builtinApiContracts.d.mts.map +1 -0
  490. package/dist/schemas/builtinApiContracts.mjs +37 -0
  491. package/dist/schemas/builtinApiContracts.mjs.map +1 -0
  492. package/dist/schemas/childProcess.cjs +67 -0
  493. package/dist/schemas/childProcess.cjs.map +1 -0
  494. package/dist/schemas/childProcess.d.cts +30 -0
  495. package/dist/schemas/childProcess.d.cts.map +1 -0
  496. package/dist/schemas/childProcess.d.mts +30 -0
  497. package/dist/schemas/childProcess.d.mts.map +1 -0
  498. package/dist/schemas/childProcess.mjs +55 -0
  499. package/dist/schemas/childProcess.mjs.map +1 -0
  500. package/dist/schemas/cockpitContainer.cjs +31 -0
  501. package/dist/schemas/cockpitContainer.cjs.map +1 -0
  502. package/dist/schemas/cockpitContainer.d.cts +80 -0
  503. package/dist/schemas/cockpitContainer.d.cts.map +1 -0
  504. package/dist/schemas/cockpitContainer.d.mts +80 -0
  505. package/dist/schemas/cockpitContainer.d.mts.map +1 -0
  506. package/dist/schemas/cockpitContainer.mjs +30 -0
  507. package/dist/schemas/cockpitContainer.mjs.map +1 -0
  508. package/dist/schemas/contextContributions.cjs +17 -0
  509. package/dist/schemas/contextContributions.cjs.map +1 -0
  510. package/dist/schemas/contextContributions.d.cts +49 -0
  511. package/dist/schemas/contextContributions.d.cts.map +1 -0
  512. package/dist/schemas/contextContributions.d.mts +49 -0
  513. package/dist/schemas/contextContributions.d.mts.map +1 -0
  514. package/dist/schemas/contextContributions.mjs +15 -0
  515. package/dist/schemas/contextContributions.mjs.map +1 -0
  516. package/dist/schemas/delegation.cjs +91 -0
  517. package/dist/schemas/delegation.cjs.map +1 -0
  518. package/dist/schemas/delegation.d.cts +95 -0
  519. package/dist/schemas/delegation.d.cts.map +1 -0
  520. package/dist/schemas/delegation.d.mts +95 -0
  521. package/dist/schemas/delegation.d.mts.map +1 -0
  522. package/dist/schemas/delegation.mjs +76 -0
  523. package/dist/schemas/delegation.mjs.map +1 -0
  524. package/dist/schemas/footer.cjs +48 -0
  525. package/dist/schemas/footer.cjs.map +1 -0
  526. package/dist/schemas/footer.d.cts +48 -0
  527. package/dist/schemas/footer.d.cts.map +1 -0
  528. package/dist/schemas/footer.d.mts +48 -0
  529. package/dist/schemas/footer.d.mts.map +1 -0
  530. package/dist/schemas/footer.mjs +45 -0
  531. package/dist/schemas/footer.mjs.map +1 -0
  532. package/dist/schemas/headless.cjs +23 -0
  533. package/dist/schemas/headless.cjs.map +1 -0
  534. package/dist/schemas/headless.d.cts +238 -0
  535. package/dist/schemas/headless.d.cts.map +1 -0
  536. package/dist/schemas/headless.d.mts +238 -0
  537. package/dist/schemas/headless.d.mts.map +1 -0
  538. package/dist/schemas/headless.mjs +19 -0
  539. package/dist/schemas/headless.mjs.map +1 -0
  540. package/dist/schemas/help.cjs +249 -0
  541. package/dist/schemas/help.cjs.map +1 -0
  542. package/dist/schemas/help.d.cts +106 -0
  543. package/dist/schemas/help.d.cts.map +1 -0
  544. package/dist/schemas/help.d.mts +106 -0
  545. package/dist/schemas/help.d.mts.map +1 -0
  546. package/dist/schemas/help.mjs +231 -0
  547. package/dist/schemas/help.mjs.map +1 -0
  548. package/dist/schemas/httpApiContracts.cjs +388 -0
  549. package/dist/schemas/httpApiContracts.cjs.map +1 -0
  550. package/dist/schemas/httpApiContracts.d.cts +14 -0
  551. package/dist/schemas/httpApiContracts.d.cts.map +1 -0
  552. package/dist/schemas/httpApiContracts.d.mts +14 -0
  553. package/dist/schemas/httpApiContracts.d.mts.map +1 -0
  554. package/dist/schemas/httpApiContracts.mjs +377 -0
  555. package/dist/schemas/httpApiContracts.mjs.map +1 -0
  556. package/dist/schemas/hubChannel.d.cts +91 -0
  557. package/dist/schemas/hubChannel.d.cts.map +1 -0
  558. package/dist/schemas/hubChannel.d.mts +91 -0
  559. package/dist/schemas/hubChannel.d.mts.map +1 -0
  560. package/dist/schemas/leader.cjs +57 -0
  561. package/dist/schemas/leader.cjs.map +1 -0
  562. package/dist/schemas/leader.d.cts +107 -0
  563. package/dist/schemas/leader.d.cts.map +1 -0
  564. package/dist/schemas/leader.d.mts +107 -0
  565. package/dist/schemas/leader.d.mts.map +1 -0
  566. package/dist/schemas/leader.mjs +51 -0
  567. package/dist/schemas/leader.mjs.map +1 -0
  568. package/dist/schemas/mcpProjection.cjs +114 -0
  569. package/dist/schemas/mcpProjection.cjs.map +1 -0
  570. package/dist/schemas/mcpProjection.d.cts +116 -0
  571. package/dist/schemas/mcpProjection.d.cts.map +1 -0
  572. package/dist/schemas/mcpProjection.d.mts +116 -0
  573. package/dist/schemas/mcpProjection.d.mts.map +1 -0
  574. package/dist/schemas/mcpProjection.mjs +102 -0
  575. package/dist/schemas/mcpProjection.mjs.map +1 -0
  576. package/dist/schemas/mcpSession.cjs +57 -0
  577. package/dist/schemas/mcpSession.cjs.map +1 -0
  578. package/dist/schemas/mcpSession.d.cts +57 -0
  579. package/dist/schemas/mcpSession.d.cts.map +1 -0
  580. package/dist/schemas/mcpSession.d.mts +57 -0
  581. package/dist/schemas/mcpSession.d.mts.map +1 -0
  582. package/dist/schemas/mcpSession.mjs +51 -0
  583. package/dist/schemas/mcpSession.mjs.map +1 -0
  584. package/dist/schemas/mcpStatus.cjs +52 -0
  585. package/dist/schemas/mcpStatus.cjs.map +1 -0
  586. package/dist/schemas/mcpStatus.d.cts +73 -0
  587. package/dist/schemas/mcpStatus.d.cts.map +1 -0
  588. package/dist/schemas/mcpStatus.d.mts +73 -0
  589. package/dist/schemas/mcpStatus.d.mts.map +1 -0
  590. package/dist/schemas/mcpStatus.mjs +48 -0
  591. package/dist/schemas/mcpStatus.mjs.map +1 -0
  592. package/dist/schemas/mcpToolResolver.cjs +17 -0
  593. package/dist/schemas/mcpToolResolver.cjs.map +1 -0
  594. package/dist/schemas/mcpToolResolver.d.cts +24 -0
  595. package/dist/schemas/mcpToolResolver.d.cts.map +1 -0
  596. package/dist/schemas/mcpToolResolver.d.mts +24 -0
  597. package/dist/schemas/mcpToolResolver.d.mts.map +1 -0
  598. package/dist/schemas/mcpToolResolver.mjs +15 -0
  599. package/dist/schemas/mcpToolResolver.mjs.map +1 -0
  600. package/dist/schemas/narration.cjs +54 -0
  601. package/dist/schemas/narration.cjs.map +1 -0
  602. package/dist/schemas/narration.d.cts +29 -0
  603. package/dist/schemas/narration.d.cts.map +1 -0
  604. package/dist/schemas/narration.d.mts +29 -0
  605. package/dist/schemas/narration.d.mts.map +1 -0
  606. package/dist/schemas/narration.mjs +47 -0
  607. package/dist/schemas/narration.mjs.map +1 -0
  608. package/dist/schemas/notification.cjs +122 -0
  609. package/dist/schemas/notification.cjs.map +1 -0
  610. package/dist/schemas/notification.d.cts +48 -0
  611. package/dist/schemas/notification.d.cts.map +1 -0
  612. package/dist/schemas/notification.d.mts +48 -0
  613. package/dist/schemas/notification.d.mts.map +1 -0
  614. package/dist/schemas/notification.mjs +108 -0
  615. package/dist/schemas/notification.mjs.map +1 -0
  616. package/dist/schemas/packageApi.cjs +52 -0
  617. package/dist/schemas/packageApi.cjs.map +1 -0
  618. package/dist/schemas/packageApi.d.cts +149 -0
  619. package/dist/schemas/packageApi.d.cts.map +1 -0
  620. package/dist/schemas/packageApi.d.mts +149 -0
  621. package/dist/schemas/packageApi.d.mts.map +1 -0
  622. package/dist/schemas/packageApi.mjs +44 -0
  623. package/dist/schemas/packageApi.mjs.map +1 -0
  624. package/dist/schemas/piTool.cjs +25 -0
  625. package/dist/schemas/piTool.cjs.map +1 -0
  626. package/dist/schemas/piTool.d.cts +12 -0
  627. package/dist/schemas/piTool.d.cts.map +1 -0
  628. package/dist/schemas/piTool.d.mts +12 -0
  629. package/dist/schemas/piTool.d.mts.map +1 -0
  630. package/dist/schemas/piTool.mjs +25 -0
  631. package/dist/schemas/piTool.mjs.map +1 -0
  632. package/dist/schemas/pluginContributions.cjs +19 -0
  633. package/dist/schemas/pluginContributions.cjs.map +1 -0
  634. package/dist/schemas/pluginContributions.d.cts +56 -0
  635. package/dist/schemas/pluginContributions.d.cts.map +1 -0
  636. package/dist/schemas/pluginContributions.d.mts +56 -0
  637. package/dist/schemas/pluginContributions.d.mts.map +1 -0
  638. package/dist/schemas/pluginContributions.mjs +18 -0
  639. package/dist/schemas/pluginContributions.mjs.map +1 -0
  640. package/dist/schemas/pluginProtocol.cjs +103 -0
  641. package/dist/schemas/pluginProtocol.cjs.map +1 -0
  642. package/dist/schemas/pluginProtocol.d.cts +68 -0
  643. package/dist/schemas/pluginProtocol.d.cts.map +1 -0
  644. package/dist/schemas/pluginProtocol.d.mts +68 -0
  645. package/dist/schemas/pluginProtocol.d.mts.map +1 -0
  646. package/dist/schemas/pluginProtocol.mjs +96 -0
  647. package/dist/schemas/pluginProtocol.mjs.map +1 -0
  648. package/dist/schemas/profileIdentity.cjs +67 -0
  649. package/dist/schemas/profileIdentity.cjs.map +1 -0
  650. package/dist/schemas/profileIdentity.d.cts +50 -0
  651. package/dist/schemas/profileIdentity.d.cts.map +1 -0
  652. package/dist/schemas/profileIdentity.d.mts +50 -0
  653. package/dist/schemas/profileIdentity.d.mts.map +1 -0
  654. package/dist/schemas/profileIdentity.mjs +64 -0
  655. package/dist/schemas/profileIdentity.mjs.map +1 -0
  656. package/dist/schemas/readiness.cjs +251 -0
  657. package/dist/schemas/readiness.cjs.map +1 -0
  658. package/dist/schemas/readiness.d.cts +84 -0
  659. package/dist/schemas/readiness.d.cts.map +1 -0
  660. package/dist/schemas/readiness.d.mts +84 -0
  661. package/dist/schemas/readiness.d.mts.map +1 -0
  662. package/dist/schemas/readiness.mjs +246 -0
  663. package/dist/schemas/readiness.mjs.map +1 -0
  664. package/dist/schemas/relaunchHandoff.cjs +47 -0
  665. package/dist/schemas/relaunchHandoff.cjs.map +1 -0
  666. package/dist/schemas/relaunchHandoff.d.cts +25 -0
  667. package/dist/schemas/relaunchHandoff.d.cts.map +1 -0
  668. package/dist/schemas/relaunchHandoff.d.mts +25 -0
  669. package/dist/schemas/relaunchHandoff.d.mts.map +1 -0
  670. package/dist/schemas/relaunchHandoff.mjs +44 -0
  671. package/dist/schemas/relaunchHandoff.mjs.map +1 -0
  672. package/dist/schemas/remoteApiContracts.cjs +307 -0
  673. package/dist/schemas/remoteApiContracts.cjs.map +1 -0
  674. package/dist/schemas/remoteApiContracts.mjs +303 -0
  675. package/dist/schemas/remoteApiContracts.mjs.map +1 -0
  676. package/dist/schemas/sandboxHarness.cjs +29 -0
  677. package/dist/schemas/sandboxHarness.cjs.map +1 -0
  678. package/dist/schemas/sandboxHarness.d.cts +39 -0
  679. package/dist/schemas/sandboxHarness.d.cts.map +1 -0
  680. package/dist/schemas/sandboxHarness.d.mts +39 -0
  681. package/dist/schemas/sandboxHarness.d.mts.map +1 -0
  682. package/dist/schemas/sandboxHarness.mjs +26 -0
  683. package/dist/schemas/sandboxHarness.mjs.map +1 -0
  684. package/dist/schemas/serverBundle.cjs +79 -0
  685. package/dist/schemas/serverBundle.cjs.map +1 -0
  686. package/dist/schemas/serverBundle.d.cts +34 -0
  687. package/dist/schemas/serverBundle.d.cts.map +1 -0
  688. package/dist/schemas/serverBundle.d.mts +34 -0
  689. package/dist/schemas/serverBundle.d.mts.map +1 -0
  690. package/dist/schemas/serverBundle.mjs +77 -0
  691. package/dist/schemas/serverBundle.mjs.map +1 -0
  692. package/dist/schemas/serverFacet.cjs +102 -0
  693. package/dist/schemas/serverFacet.cjs.map +1 -0
  694. package/dist/schemas/serverFacet.d.cts +141 -0
  695. package/dist/schemas/serverFacet.d.cts.map +1 -0
  696. package/dist/schemas/serverFacet.d.mts +141 -0
  697. package/dist/schemas/serverFacet.d.mts.map +1 -0
  698. package/dist/schemas/serverFacet.mjs +93 -0
  699. package/dist/schemas/serverFacet.mjs.map +1 -0
  700. package/dist/schemas/sessionApiContracts.cjs +474 -0
  701. package/dist/schemas/sessionApiContracts.cjs.map +1 -0
  702. package/dist/schemas/sessionApiContracts.d.cts +563 -0
  703. package/dist/schemas/sessionApiContracts.d.cts.map +1 -0
  704. package/dist/schemas/sessionApiContracts.d.mts +563 -0
  705. package/dist/schemas/sessionApiContracts.d.mts.map +1 -0
  706. package/dist/schemas/sessionApiContracts.mjs +472 -0
  707. package/dist/schemas/sessionApiContracts.mjs.map +1 -0
  708. package/dist/schemas/sessionProtocol.cjs +17 -0
  709. package/dist/schemas/sessionProtocol.cjs.map +1 -0
  710. package/dist/schemas/sessionProtocol.d.cts +269 -0
  711. package/dist/schemas/sessionProtocol.d.cts.map +1 -0
  712. package/dist/schemas/sessionProtocol.d.mts +269 -0
  713. package/dist/schemas/sessionProtocol.d.mts.map +1 -0
  714. package/dist/schemas/sessionProtocol.mjs +12 -0
  715. package/dist/schemas/sessionProtocol.mjs.map +1 -0
  716. package/dist/schemas/sessionUpdates.d.cts +34 -0
  717. package/dist/schemas/sessionUpdates.d.cts.map +1 -0
  718. package/dist/schemas/sessionUpdates.d.mts +34 -0
  719. package/dist/schemas/sessionUpdates.d.mts.map +1 -0
  720. package/dist/schemas/skills.cjs +115 -0
  721. package/dist/schemas/skills.cjs.map +1 -0
  722. package/dist/schemas/skills.d.cts +65 -0
  723. package/dist/schemas/skills.d.cts.map +1 -0
  724. package/dist/schemas/skills.d.mts +65 -0
  725. package/dist/schemas/skills.d.mts.map +1 -0
  726. package/dist/schemas/skills.mjs +109 -0
  727. package/dist/schemas/skills.mjs.map +1 -0
  728. package/dist/schemas/toolOverrides.cjs +17 -0
  729. package/dist/schemas/toolOverrides.cjs.map +1 -0
  730. package/dist/schemas/toolOverrides.d.cts +29 -0
  731. package/dist/schemas/toolOverrides.d.cts.map +1 -0
  732. package/dist/schemas/toolOverrides.d.mts +29 -0
  733. package/dist/schemas/toolOverrides.d.mts.map +1 -0
  734. package/dist/schemas/toolOverrides.mjs +15 -0
  735. package/dist/schemas/toolOverrides.mjs.map +1 -0
  736. package/dist/schemas/toolSurface.cjs +17 -0
  737. package/dist/schemas/toolSurface.cjs.map +1 -0
  738. package/dist/schemas/toolSurface.d.cts +54 -0
  739. package/dist/schemas/toolSurface.d.cts.map +1 -0
  740. package/dist/schemas/toolSurface.d.mts +54 -0
  741. package/dist/schemas/toolSurface.d.mts.map +1 -0
  742. package/dist/schemas/toolSurface.mjs +15 -0
  743. package/dist/schemas/toolSurface.mjs.map +1 -0
  744. package/dist/schemas/transportApiContracts.cjs +248 -0
  745. package/dist/schemas/transportApiContracts.cjs.map +1 -0
  746. package/dist/schemas/transportApiContracts.d.cts +205 -0
  747. package/dist/schemas/transportApiContracts.d.cts.map +1 -0
  748. package/dist/schemas/transportApiContracts.d.mts +205 -0
  749. package/dist/schemas/transportApiContracts.d.mts.map +1 -0
  750. package/dist/schemas/transportApiContracts.mjs +242 -0
  751. package/dist/schemas/transportApiContracts.mjs.map +1 -0
  752. package/dist/schemas/uiHub.cjs +17 -0
  753. package/dist/schemas/uiHub.cjs.map +1 -0
  754. package/dist/schemas/uiHub.d.cts +23 -0
  755. package/dist/schemas/uiHub.d.cts.map +1 -0
  756. package/dist/schemas/uiHub.d.mts +23 -0
  757. package/dist/schemas/uiHub.d.mts.map +1 -0
  758. package/dist/schemas/uiHub.mjs +15 -0
  759. package/dist/schemas/uiHub.mjs.map +1 -0
  760. package/dist/schemas/voiceReloadHandoff.cjs +78 -0
  761. package/dist/schemas/voiceReloadHandoff.cjs.map +1 -0
  762. package/dist/schemas/voiceReloadHandoff.d.cts +31 -0
  763. package/dist/schemas/voiceReloadHandoff.d.cts.map +1 -0
  764. package/dist/schemas/voiceReloadHandoff.d.mts +31 -0
  765. package/dist/schemas/voiceReloadHandoff.d.mts.map +1 -0
  766. package/dist/schemas/voiceReloadHandoff.mjs +75 -0
  767. package/dist/schemas/voiceReloadHandoff.mjs.map +1 -0
  768. package/dist/schemas/voiceTools.cjs +205 -0
  769. package/dist/schemas/voiceTools.cjs.map +1 -0
  770. package/dist/schemas/voiceTools.d.cts +120 -0
  771. package/dist/schemas/voiceTools.d.cts.map +1 -0
  772. package/dist/schemas/voiceTools.d.mts +120 -0
  773. package/dist/schemas/voiceTools.d.mts.map +1 -0
  774. package/dist/schemas/voiceTools.mjs +194 -0
  775. package/dist/schemas/voiceTools.mjs.map +1 -0
  776. package/dist/server/directHarnessRuntime.cjs +981 -0
  777. package/dist/server/directHarnessRuntime.cjs.map +1 -0
  778. package/dist/server/directHarnessRuntime.d.cts +3 -0
  779. package/dist/server/directHarnessRuntime.d.mts +3 -0
  780. package/dist/server/directHarnessRuntime.mjs +976 -0
  781. package/dist/server/directHarnessRuntime.mjs.map +1 -0
  782. package/dist/server/headlessProtocol.cjs +233 -0
  783. package/dist/server/headlessProtocol.cjs.map +1 -0
  784. package/dist/server/headlessProtocol.mjs +233 -0
  785. package/dist/server/headlessProtocol.mjs.map +1 -0
  786. package/dist/server/jsonlTranscriptReader.cjs +85 -0
  787. package/dist/server/jsonlTranscriptReader.cjs.map +1 -0
  788. package/dist/server/jsonlTranscriptReader.mjs +83 -0
  789. package/dist/server/jsonlTranscriptReader.mjs.map +1 -0
  790. package/dist/server/nativeChildTranscriptReader.cjs +20 -0
  791. package/dist/server/nativeChildTranscriptReader.cjs.map +1 -0
  792. package/dist/server/nativeChildTranscriptReader.mjs +18 -0
  793. package/dist/server/nativeChildTranscriptReader.mjs.map +1 -0
  794. package/dist/server/remoteRoutes.cjs +386 -0
  795. package/dist/server/remoteRoutes.cjs.map +1 -0
  796. package/dist/server/remoteRoutes.mjs +386 -0
  797. package/dist/server/remoteRoutes.mjs.map +1 -0
  798. package/dist/server/serverFacetLoader.cjs +220 -0
  799. package/dist/server/serverFacetLoader.cjs.map +1 -0
  800. package/dist/server/serverFacetLoader.d.cts +77 -0
  801. package/dist/server/serverFacetLoader.d.cts.map +1 -0
  802. package/dist/server/serverFacetLoader.d.mts +77 -0
  803. package/dist/server/serverFacetLoader.d.mts.map +1 -0
  804. package/dist/server/serverFacetLoader.mjs +215 -0
  805. package/dist/server/serverFacetLoader.mjs.map +1 -0
  806. package/dist/server/threadJournals.cjs +172 -0
  807. package/dist/server/threadJournals.cjs.map +1 -0
  808. package/dist/server/threadJournals.mjs +169 -0
  809. package/dist/server/threadJournals.mjs.map +1 -0
  810. package/dist/server-facet.cjs +27 -0
  811. package/dist/server-facet.d.cts +7 -0
  812. package/dist/server-facet.d.mts +7 -0
  813. package/dist/server-facet.mjs +7 -0
  814. package/dist/server-telemetry.cjs +25 -0
  815. package/dist/server-telemetry.cjs.map +1 -0
  816. package/dist/server-telemetry.d.cts +12 -0
  817. package/dist/server-telemetry.d.cts.map +1 -0
  818. package/dist/server-telemetry.d.mts +12 -0
  819. package/dist/server-telemetry.d.mts.map +1 -0
  820. package/dist/server-telemetry.mjs +23 -0
  821. package/dist/server-telemetry.mjs.map +1 -0
  822. package/dist/server.cjs +17 -0
  823. package/dist/server.d.cts +10 -0
  824. package/dist/server.d.mts +10 -0
  825. package/dist/server.mjs +7 -0
  826. package/dist/services/acpSessionUpdates/index.cjs +129 -0
  827. package/dist/services/acpSessionUpdates/index.cjs.map +1 -0
  828. package/dist/services/acpSessionUpdates/index.mjs +129 -0
  829. package/dist/services/acpSessionUpdates/index.mjs.map +1 -0
  830. package/dist/services/apiContracts/index.cjs +267 -0
  831. package/dist/services/apiContracts/index.cjs.map +1 -0
  832. package/dist/services/apiContracts/index.d.cts +42 -0
  833. package/dist/services/apiContracts/index.d.cts.map +1 -0
  834. package/dist/services/apiContracts/index.d.mts +42 -0
  835. package/dist/services/apiContracts/index.d.mts.map +1 -0
  836. package/dist/services/apiContracts/index.mjs +266 -0
  837. package/dist/services/apiContracts/index.mjs.map +1 -0
  838. package/dist/services/bundlePublication/index.cjs +88 -0
  839. package/dist/services/bundlePublication/index.cjs.map +1 -0
  840. package/dist/services/bundlePublication/index.mjs +85 -0
  841. package/dist/services/bundlePublication/index.mjs.map +1 -0
  842. package/dist/services/contextApiUrls/index.cjs +15 -0
  843. package/dist/services/contextApiUrls/index.cjs.map +1 -0
  844. package/dist/services/contextApiUrls/index.d.cts +6 -0
  845. package/dist/services/contextApiUrls/index.d.cts.map +1 -0
  846. package/dist/services/contextApiUrls/index.d.mts +6 -0
  847. package/dist/services/contextApiUrls/index.d.mts.map +1 -0
  848. package/dist/services/contextApiUrls/index.mjs +15 -0
  849. package/dist/services/contextApiUrls/index.mjs.map +1 -0
  850. package/dist/services/contextContributions/index.cjs +79 -0
  851. package/dist/services/contextContributions/index.cjs.map +1 -0
  852. package/dist/services/contextContributions/index.d.cts +6 -0
  853. package/dist/services/contextContributions/index.d.cts.map +1 -0
  854. package/dist/services/contextContributions/index.d.mts +6 -0
  855. package/dist/services/contextContributions/index.d.mts.map +1 -0
  856. package/dist/services/contextContributions/index.mjs +79 -0
  857. package/dist/services/contextContributions/index.mjs.map +1 -0
  858. package/dist/services/deviceAuth/index.cjs +125 -0
  859. package/dist/services/deviceAuth/index.cjs.map +1 -0
  860. package/dist/services/deviceAuth/index.d.cts +9 -0
  861. package/dist/services/deviceAuth/index.d.cts.map +1 -0
  862. package/dist/services/deviceAuth/index.d.mts +9 -0
  863. package/dist/services/deviceAuth/index.d.mts.map +1 -0
  864. package/dist/services/deviceAuth/index.mjs +125 -0
  865. package/dist/services/deviceAuth/index.mjs.map +1 -0
  866. package/dist/services/deviceSessions/index.cjs +147 -0
  867. package/dist/services/deviceSessions/index.cjs.map +1 -0
  868. package/dist/services/deviceSessions/index.d.cts +15 -0
  869. package/dist/services/deviceSessions/index.d.cts.map +1 -0
  870. package/dist/services/deviceSessions/index.d.mts +15 -0
  871. package/dist/services/deviceSessions/index.d.mts.map +1 -0
  872. package/dist/services/deviceSessions/index.mjs +141 -0
  873. package/dist/services/deviceSessions/index.mjs.map +1 -0
  874. package/dist/services/headlessClient/index.cjs +117 -0
  875. package/dist/services/headlessClient/index.cjs.map +1 -0
  876. package/dist/services/headlessClient/index.mjs +117 -0
  877. package/dist/services/headlessClient/index.mjs.map +1 -0
  878. package/dist/services/historyCreationFileSystem/index.cjs +114 -0
  879. package/dist/services/historyCreationFileSystem/index.cjs.map +1 -0
  880. package/dist/services/historyCreationFileSystem/index.mjs +114 -0
  881. package/dist/services/historyCreationFileSystem/index.mjs.map +1 -0
  882. package/dist/services/hubChannelHarness/index.cjs +50 -0
  883. package/dist/services/hubChannelHarness/index.cjs.map +1 -0
  884. package/dist/services/hubChannelHarness/index.d.cts +17 -0
  885. package/dist/services/hubChannelHarness/index.d.cts.map +1 -0
  886. package/dist/services/hubChannelHarness/index.d.mts +17 -0
  887. package/dist/services/hubChannelHarness/index.d.mts.map +1 -0
  888. package/dist/services/hubChannelHarness/index.mjs +50 -0
  889. package/dist/services/hubChannelHarness/index.mjs.map +1 -0
  890. package/dist/services/kernel/index.cjs +147 -0
  891. package/dist/services/kernel/index.cjs.map +1 -0
  892. package/dist/services/kernel/index.d.cts +9 -0
  893. package/dist/services/kernel/index.d.cts.map +1 -0
  894. package/dist/services/kernel/index.d.mts +9 -0
  895. package/dist/services/kernel/index.d.mts.map +1 -0
  896. package/dist/services/kernel/index.mjs +147 -0
  897. package/dist/services/kernel/index.mjs.map +1 -0
  898. package/dist/services/loginFlow/index.cjs +131 -0
  899. package/dist/services/loginFlow/index.cjs.map +1 -0
  900. package/dist/services/loginFlow/index.mjs +131 -0
  901. package/dist/services/loginFlow/index.mjs.map +1 -0
  902. package/dist/services/packageApiHarness/index.cjs +36 -0
  903. package/dist/services/packageApiHarness/index.cjs.map +1 -0
  904. package/dist/services/packageApiHarness/index.d.cts +40 -0
  905. package/dist/services/packageApiHarness/index.d.cts.map +1 -0
  906. package/dist/services/packageApiHarness/index.d.mts +40 -0
  907. package/dist/services/packageApiHarness/index.d.mts.map +1 -0
  908. package/dist/services/packageApiHarness/index.mjs +36 -0
  909. package/dist/services/packageApiHarness/index.mjs.map +1 -0
  910. package/dist/services/pairingFlow/index.cjs +145 -0
  911. package/dist/services/pairingFlow/index.cjs.map +1 -0
  912. package/dist/services/pairingFlow/index.d.cts +44 -0
  913. package/dist/services/pairingFlow/index.d.cts.map +1 -0
  914. package/dist/services/pairingFlow/index.d.mts +44 -0
  915. package/dist/services/pairingFlow/index.d.mts.map +1 -0
  916. package/dist/services/pairingFlow/index.mjs +145 -0
  917. package/dist/services/pairingFlow/index.mjs.map +1 -0
  918. package/dist/services/pairingPage/index.cjs +450 -0
  919. package/dist/services/pairingPage/index.cjs.map +1 -0
  920. package/dist/services/pairingPage/index.mjs +447 -0
  921. package/dist/services/pairingPage/index.mjs.map +1 -0
  922. package/dist/services/pluginLifecycle/index.cjs +71 -0
  923. package/dist/services/pluginLifecycle/index.cjs.map +1 -0
  924. package/dist/services/pluginLifecycle/index.d.cts +11 -0
  925. package/dist/services/pluginLifecycle/index.d.cts.map +1 -0
  926. package/dist/services/pluginLifecycle/index.d.mts +11 -0
  927. package/dist/services/pluginLifecycle/index.d.mts.map +1 -0
  928. package/dist/services/pluginLifecycle/index.mjs +71 -0
  929. package/dist/services/pluginLifecycle/index.mjs.map +1 -0
  930. package/dist/services/providerAuth/index.cjs +156 -0
  931. package/dist/services/providerAuth/index.cjs.map +1 -0
  932. package/dist/services/providerAuth/index.mjs +154 -0
  933. package/dist/services/providerAuth/index.mjs.map +1 -0
  934. package/dist/services/remoteAccess/index.cjs +393 -0
  935. package/dist/services/remoteAccess/index.cjs.map +1 -0
  936. package/dist/services/remoteAccess/index.d.cts +79 -0
  937. package/dist/services/remoteAccess/index.d.cts.map +1 -0
  938. package/dist/services/remoteAccess/index.d.mts +79 -0
  939. package/dist/services/remoteAccess/index.d.mts.map +1 -0
  940. package/dist/services/remoteAccess/index.mjs +393 -0
  941. package/dist/services/remoteAccess/index.mjs.map +1 -0
  942. package/dist/services/remoteAccessSettings/index.cjs +151 -0
  943. package/dist/services/remoteAccessSettings/index.cjs.map +1 -0
  944. package/dist/services/remoteAccessSettings/index.mjs +149 -0
  945. package/dist/services/remoteAccessSettings/index.mjs.map +1 -0
  946. package/dist/services/remoteAccessStore/index.cjs +126 -0
  947. package/dist/services/remoteAccessStore/index.cjs.map +1 -0
  948. package/dist/services/remoteAccessStore/index.mjs +121 -0
  949. package/dist/services/remoteAccessStore/index.mjs.map +1 -0
  950. package/dist/services/remoteGuardPolicy/index.cjs +190 -0
  951. package/dist/services/remoteGuardPolicy/index.cjs.map +1 -0
  952. package/dist/services/remoteGuardPolicy/index.d.cts +7 -0
  953. package/dist/services/remoteGuardPolicy/index.d.cts.map +1 -0
  954. package/dist/services/remoteGuardPolicy/index.d.mts +7 -0
  955. package/dist/services/remoteGuardPolicy/index.d.mts.map +1 -0
  956. package/dist/services/remoteGuardPolicy/index.mjs +186 -0
  957. package/dist/services/remoteGuardPolicy/index.mjs.map +1 -0
  958. package/dist/services/rpcTranscript/index.cjs +590 -0
  959. package/dist/services/rpcTranscript/index.cjs.map +1 -0
  960. package/dist/services/rpcTranscript/index.d.cts +50 -0
  961. package/dist/services/rpcTranscript/index.d.cts.map +1 -0
  962. package/dist/services/rpcTranscript/index.d.mts +50 -0
  963. package/dist/services/rpcTranscript/index.d.mts.map +1 -0
  964. package/dist/services/rpcTranscript/index.mjs +589 -0
  965. package/dist/services/rpcTranscript/index.mjs.map +1 -0
  966. package/dist/services/serverFacet/index.cjs +197 -0
  967. package/dist/services/serverFacet/index.cjs.map +1 -0
  968. package/dist/services/serverFacet/index.d.cts +31 -0
  969. package/dist/services/serverFacet/index.d.cts.map +1 -0
  970. package/dist/services/serverFacet/index.d.mts +31 -0
  971. package/dist/services/serverFacet/index.d.mts.map +1 -0
  972. package/dist/services/serverFacet/index.mjs +197 -0
  973. package/dist/services/serverFacet/index.mjs.map +1 -0
  974. package/dist/services/sessionPresentation/index.cjs +117 -0
  975. package/dist/services/sessionPresentation/index.cjs.map +1 -0
  976. package/dist/services/sessionPresentation/index.mjs +117 -0
  977. package/dist/services/sessionPresentation/index.mjs.map +1 -0
  978. package/dist/services/sqliteSessionHistory/index.cjs +59 -0
  979. package/dist/services/sqliteSessionHistory/index.cjs.map +1 -0
  980. package/dist/services/sqliteSessionHistory/index.d.cts +13 -0
  981. package/dist/services/sqliteSessionHistory/index.d.cts.map +1 -0
  982. package/dist/services/sqliteSessionHistory/index.d.mts +13 -0
  983. package/dist/services/sqliteSessionHistory/index.d.mts.map +1 -0
  984. package/dist/services/sqliteSessionHistory/index.mjs +57 -0
  985. package/dist/services/sqliteSessionHistory/index.mjs.map +1 -0
  986. package/dist/services/sqliteTranscriptReader/index.cjs +49 -0
  987. package/dist/services/sqliteTranscriptReader/index.cjs.map +1 -0
  988. package/dist/services/sqliteTranscriptReader/index.mjs +47 -0
  989. package/dist/services/sqliteTranscriptReader/index.mjs.map +1 -0
  990. package/dist/services/toolCost/index.cjs +47 -0
  991. package/dist/services/toolCost/index.cjs.map +1 -0
  992. package/dist/services/toolCost/index.d.cts +38 -0
  993. package/dist/services/toolCost/index.d.cts.map +1 -0
  994. package/dist/services/toolCost/index.d.mts +38 -0
  995. package/dist/services/toolCost/index.d.mts.map +1 -0
  996. package/dist/services/toolCost/index.mjs +46 -0
  997. package/dist/services/toolCost/index.mjs.map +1 -0
  998. package/dist/services/toolOverrides/index.cjs +45 -0
  999. package/dist/services/toolOverrides/index.cjs.map +1 -0
  1000. package/dist/services/toolOverrides/index.d.cts +6 -0
  1001. package/dist/services/toolOverrides/index.d.cts.map +1 -0
  1002. package/dist/services/toolOverrides/index.d.mts +6 -0
  1003. package/dist/services/toolOverrides/index.d.mts.map +1 -0
  1004. package/dist/services/toolOverrides/index.mjs +45 -0
  1005. package/dist/services/toolOverrides/index.mjs.map +1 -0
  1006. package/dist/services/toolSurface/index.cjs +105 -0
  1007. package/dist/services/toolSurface/index.cjs.map +1 -0
  1008. package/dist/services/toolSurface/index.d.cts +19 -0
  1009. package/dist/services/toolSurface/index.d.cts.map +1 -0
  1010. package/dist/services/toolSurface/index.d.mts +19 -0
  1011. package/dist/services/toolSurface/index.d.mts.map +1 -0
  1012. package/dist/services/toolSurface/index.mjs +105 -0
  1013. package/dist/services/toolSurface/index.mjs.map +1 -0
  1014. package/dist/services/traceContext/index.cjs +13 -0
  1015. package/dist/services/traceContext/index.cjs.map +1 -0
  1016. package/dist/services/traceContext/index.mjs +13 -0
  1017. package/dist/services/traceContext/index.mjs.map +1 -0
  1018. package/dist/services/transcriptPages/index.cjs +74 -0
  1019. package/dist/services/transcriptPages/index.cjs.map +1 -0
  1020. package/dist/services/transcriptPages/index.mjs +73 -0
  1021. package/dist/services/transcriptPages/index.mjs.map +1 -0
  1022. package/dist/services/tunnelOutput/index.cjs +58 -0
  1023. package/dist/services/tunnelOutput/index.cjs.map +1 -0
  1024. package/dist/services/tunnelOutput/index.mjs +54 -0
  1025. package/dist/services/tunnelOutput/index.mjs.map +1 -0
  1026. package/dist/services/tunnelProcess/index.cjs +486 -0
  1027. package/dist/services/tunnelProcess/index.cjs.map +1 -0
  1028. package/dist/services/tunnelProcess/index.mjs +480 -0
  1029. package/dist/services/tunnelProcess/index.mjs.map +1 -0
  1030. package/dist/services/voiceReloadHandoff/index.cjs +136 -0
  1031. package/dist/services/voiceReloadHandoff/index.cjs.map +1 -0
  1032. package/dist/services/voiceReloadHandoff/index.d.cts +34 -0
  1033. package/dist/services/voiceReloadHandoff/index.d.cts.map +1 -0
  1034. package/dist/services/voiceReloadHandoff/index.d.mts +34 -0
  1035. package/dist/services/voiceReloadHandoff/index.d.mts.map +1 -0
  1036. package/dist/services/voiceReloadHandoff/index.mjs +135 -0
  1037. package/dist/services/voiceReloadHandoff/index.mjs.map +1 -0
  1038. package/dist/services/voiceToolsContract/index.cjs +26 -0
  1039. package/dist/services/voiceToolsContract/index.cjs.map +1 -0
  1040. package/dist/services/voiceToolsContract/index.d.cts +76 -0
  1041. package/dist/services/voiceToolsContract/index.d.cts.map +1 -0
  1042. package/dist/services/voiceToolsContract/index.d.mts +76 -0
  1043. package/dist/services/voiceToolsContract/index.d.mts.map +1 -0
  1044. package/dist/services/voiceToolsContract/index.mjs +24 -0
  1045. package/dist/services/voiceToolsContract/index.mjs.map +1 -0
  1046. package/dist/services/webauthn/index.cjs +262 -0
  1047. package/dist/services/webauthn/index.cjs.map +1 -0
  1048. package/dist/services/webauthn/index.d.cts +39 -0
  1049. package/dist/services/webauthn/index.d.cts.map +1 -0
  1050. package/dist/services/webauthn/index.d.mts +39 -0
  1051. package/dist/services/webauthn/index.d.mts.map +1 -0
  1052. package/dist/services/webauthn/index.mjs +262 -0
  1053. package/dist/services/webauthn/index.mjs.map +1 -0
  1054. package/dist/services/webauthnPolicy/index.cjs +178 -0
  1055. package/dist/services/webauthnPolicy/index.cjs.map +1 -0
  1056. package/dist/services/webauthnPolicy/index.d.cts +41 -0
  1057. package/dist/services/webauthnPolicy/index.d.cts.map +1 -0
  1058. package/dist/services/webauthnPolicy/index.d.mts +41 -0
  1059. package/dist/services/webauthnPolicy/index.d.mts.map +1 -0
  1060. package/dist/services/webauthnPolicy/index.mjs +171 -0
  1061. package/dist/services/webauthnPolicy/index.mjs.map +1 -0
  1062. package/dist/session-files-api.cjs +61 -0
  1063. package/dist/session-files-api.cjs.map +1 -0
  1064. package/dist/session-files-api.d.cts +7 -0
  1065. package/dist/session-files-api.d.cts.map +1 -0
  1066. package/dist/session-files-api.d.mts +7 -0
  1067. package/dist/session-files-api.d.mts.map +1 -0
  1068. package/dist/session-files-api.mjs +57 -0
  1069. package/dist/session-files-api.mjs.map +1 -0
  1070. package/dist/session-protocol.cjs +8 -0
  1071. package/dist/session-protocol.d.cts +3 -0
  1072. package/dist/session-protocol.d.mts +3 -0
  1073. package/dist/session-protocol.mjs +2 -0
  1074. package/dist/skills.cjs +9 -0
  1075. package/dist/skills.d.cts +2 -0
  1076. package/dist/skills.d.mts +2 -0
  1077. package/dist/skills.mjs +2 -0
  1078. package/dist/sqlite-history-import.cjs +151 -0
  1079. package/dist/sqlite-history-import.cjs.map +1 -0
  1080. package/dist/sqlite-history-import.d.cts +8 -0
  1081. package/dist/sqlite-history-import.d.cts.map +1 -0
  1082. package/dist/sqlite-history-import.d.mts +8 -0
  1083. package/dist/sqlite-history-import.d.mts.map +1 -0
  1084. package/dist/sqlite-history-import.mjs +146 -0
  1085. package/dist/sqlite-history-import.mjs.map +1 -0
  1086. package/dist/sqlite-session-storage.cjs +53 -0
  1087. package/dist/sqlite-session-storage.cjs.map +1 -0
  1088. package/dist/sqlite-session-storage.d.cts +7 -0
  1089. package/dist/sqlite-session-storage.d.cts.map +1 -0
  1090. package/dist/sqlite-session-storage.d.mts +7 -0
  1091. package/dist/sqlite-session-storage.d.mts.map +1 -0
  1092. package/dist/sqlite-session-storage.mjs +49 -0
  1093. package/dist/sqlite-session-storage.mjs.map +1 -0
  1094. package/dist/sync-location.cjs +209 -0
  1095. package/dist/sync-location.cjs.map +1 -0
  1096. package/dist/sync-location.d.cts +31 -0
  1097. package/dist/sync-location.d.cts.map +1 -0
  1098. package/dist/sync-location.d.mts +31 -0
  1099. package/dist/sync-location.d.mts.map +1 -0
  1100. package/dist/sync-location.mjs +199 -0
  1101. package/dist/sync-location.mjs.map +1 -0
  1102. package/dist/sync-registration.cjs +140 -0
  1103. package/dist/sync-registration.cjs.map +1 -0
  1104. package/dist/sync-registration.d.cts +38 -0
  1105. package/dist/sync-registration.d.cts.map +1 -0
  1106. package/dist/sync-registration.d.mts +38 -0
  1107. package/dist/sync-registration.d.mts.map +1 -0
  1108. package/dist/sync-registration.mjs +131 -0
  1109. package/dist/sync-registration.mjs.map +1 -0
  1110. package/dist/sync-state-contract.cjs +19 -0
  1111. package/dist/sync-state-contract.cjs.map +1 -0
  1112. package/dist/sync-state-contract.d.cts +14 -0
  1113. package/dist/sync-state-contract.d.cts.map +1 -0
  1114. package/dist/sync-state-contract.d.mts +14 -0
  1115. package/dist/sync-state-contract.d.mts.map +1 -0
  1116. package/dist/sync-state-contract.mjs +16 -0
  1117. package/dist/sync-state-contract.mjs.map +1 -0
  1118. package/dist/systems/child/adapters/headlessChildSessionService.cjs +210 -0
  1119. package/dist/systems/child/adapters/headlessChildSessionService.cjs.map +1 -0
  1120. package/dist/systems/child/adapters/headlessChildSessionService.d.cts +24 -0
  1121. package/dist/systems/child/adapters/headlessChildSessionService.d.cts.map +1 -0
  1122. package/dist/systems/child/adapters/headlessChildSessionService.d.mts +24 -0
  1123. package/dist/systems/child/adapters/headlessChildSessionService.d.mts.map +1 -0
  1124. package/dist/systems/child/adapters/headlessChildSessionService.mjs +205 -0
  1125. package/dist/systems/child/adapters/headlessChildSessionService.mjs.map +1 -0
  1126. package/dist/systems/child/adapters/nativeChildRuntimes.cjs +28 -0
  1127. package/dist/systems/child/adapters/nativeChildRuntimes.cjs.map +1 -0
  1128. package/dist/systems/child/adapters/nativeChildRuntimes.mjs +25 -0
  1129. package/dist/systems/child/adapters/nativeChildRuntimes.mjs.map +1 -0
  1130. package/dist/systems/child/services/childSession/index.cjs +206 -0
  1131. package/dist/systems/child/services/childSession/index.cjs.map +1 -0
  1132. package/dist/systems/child/services/childSession/index.d.cts +14 -0
  1133. package/dist/systems/child/services/childSession/index.d.cts.map +1 -0
  1134. package/dist/systems/child/services/childSession/index.d.mts +14 -0
  1135. package/dist/systems/child/services/childSession/index.d.mts.map +1 -0
  1136. package/dist/systems/child/services/childSession/index.mjs +206 -0
  1137. package/dist/systems/child/services/childSession/index.mjs.map +1 -0
  1138. package/dist/systems/child/types/childSession.cjs +16 -0
  1139. package/dist/systems/child/types/childSession.cjs.map +1 -0
  1140. package/dist/systems/child/types/childSession.d.cts +135 -0
  1141. package/dist/systems/child/types/childSession.d.cts.map +1 -0
  1142. package/dist/systems/child/types/childSession.d.mts +135 -0
  1143. package/dist/systems/child/types/childSession.d.mts.map +1 -0
  1144. package/dist/systems/child/types/childSession.mjs +14 -0
  1145. package/dist/systems/child/types/childSession.mjs.map +1 -0
  1146. package/dist/systems/main/adapters/headlessHost.cjs +436 -0
  1147. package/dist/systems/main/adapters/headlessHost.cjs.map +1 -0
  1148. package/dist/systems/main/adapters/headlessHost.d.cts +72 -0
  1149. package/dist/systems/main/adapters/headlessHost.d.cts.map +1 -0
  1150. package/dist/systems/main/adapters/headlessHost.d.mts +72 -0
  1151. package/dist/systems/main/adapters/headlessHost.d.mts.map +1 -0
  1152. package/dist/systems/main/adapters/headlessHost.mjs +435 -0
  1153. package/dist/systems/main/adapters/headlessHost.mjs.map +1 -0
  1154. package/dist/systems/main/adapters/headlessSessionHost.cjs +653 -0
  1155. package/dist/systems/main/adapters/headlessSessionHost.cjs.map +1 -0
  1156. package/dist/systems/main/adapters/headlessSessionHost.d.cts +14 -0
  1157. package/dist/systems/main/adapters/headlessSessionHost.d.cts.map +1 -0
  1158. package/dist/systems/main/adapters/headlessSessionHost.d.mts +14 -0
  1159. package/dist/systems/main/adapters/headlessSessionHost.d.mts.map +1 -0
  1160. package/dist/systems/main/adapters/headlessSessionHost.mjs +649 -0
  1161. package/dist/systems/main/adapters/headlessSessionHost.mjs.map +1 -0
  1162. package/dist/systems/main/types/headlessHost.d.cts +36 -0
  1163. package/dist/systems/main/types/headlessHost.d.cts.map +1 -0
  1164. package/dist/systems/main/types/headlessHost.d.mts +36 -0
  1165. package/dist/systems/main/types/headlessHost.d.mts.map +1 -0
  1166. package/dist/terminal-pi-child-session-service.cjs +263 -0
  1167. package/dist/terminal-pi-child-session-service.cjs.map +1 -0
  1168. package/dist/terminal-pi-child-session-service.d.cts +36 -0
  1169. package/dist/terminal-pi-child-session-service.d.cts.map +1 -0
  1170. package/dist/terminal-pi-child-session-service.d.mts +36 -0
  1171. package/dist/terminal-pi-child-session-service.d.mts.map +1 -0
  1172. package/dist/terminal-pi-child-session-service.mjs +256 -0
  1173. package/dist/terminal-pi-child-session-service.mjs.map +1 -0
  1174. package/dist/testing/pi/extensionScenarios.cjs +73 -0
  1175. package/dist/testing/pi/extensionScenarios.cjs.map +1 -0
  1176. package/dist/testing/pi/extensionScenarios.d.cts +41 -0
  1177. package/dist/testing/pi/extensionScenarios.d.cts.map +1 -0
  1178. package/dist/testing/pi/extensionScenarios.d.mts +41 -0
  1179. package/dist/testing/pi/extensionScenarios.d.mts.map +1 -0
  1180. package/dist/testing/pi/extensionScenarios.mjs +73 -0
  1181. package/dist/testing/pi/extensionScenarios.mjs.map +1 -0
  1182. package/dist/testing/pi/testHost.cjs +365 -0
  1183. package/dist/testing/pi/testHost.cjs.map +1 -0
  1184. package/dist/testing/pi/testHost.d.cts +160 -0
  1185. package/dist/testing/pi/testHost.d.cts.map +1 -0
  1186. package/dist/testing/pi/testHost.d.mts +160 -0
  1187. package/dist/testing/pi/testHost.d.mts.map +1 -0
  1188. package/dist/testing/pi/testHost.mjs +365 -0
  1189. package/dist/testing/pi/testHost.mjs.map +1 -0
  1190. package/dist/testing.cjs +9 -0
  1191. package/dist/testing.d.cts +5 -0
  1192. package/dist/testing.d.mts +5 -0
  1193. package/dist/testing.mjs +5 -0
  1194. package/dist/tool-inventory.cjs +136 -0
  1195. package/dist/tool-inventory.cjs.map +1 -0
  1196. package/dist/tool-inventory.d.cts +66 -0
  1197. package/dist/tool-inventory.d.cts.map +1 -0
  1198. package/dist/tool-inventory.d.mts +66 -0
  1199. package/dist/tool-inventory.d.mts.map +1 -0
  1200. package/dist/tool-inventory.mjs +133 -0
  1201. package/dist/tool-inventory.mjs.map +1 -0
  1202. package/dist/tool-names.cjs +4 -0
  1203. package/dist/tool-names.d.cts +2 -0
  1204. package/dist/tool-names.d.mts +2 -0
  1205. package/dist/tool-names.mjs +2 -0
  1206. package/dist/tool-overrides.cjs +7 -0
  1207. package/dist/tool-overrides.d.cts +3 -0
  1208. package/dist/tool-overrides.d.mts +3 -0
  1209. package/dist/tool-overrides.mjs +3 -0
  1210. package/dist/tool-surface.cjs +7 -0
  1211. package/dist/tool-surface.d.cts +3 -0
  1212. package/dist/tool-surface.d.mts +3 -0
  1213. package/dist/tool-surface.mjs +3 -0
  1214. package/dist/transition-classifier.cjs +112 -0
  1215. package/dist/transition-classifier.cjs.map +1 -0
  1216. package/dist/transition-classifier.d.cts +18 -0
  1217. package/dist/transition-classifier.d.cts.map +1 -0
  1218. package/dist/transition-classifier.d.mts +18 -0
  1219. package/dist/transition-classifier.d.mts.map +1 -0
  1220. package/dist/transition-classifier.mjs +111 -0
  1221. package/dist/transition-classifier.mjs.map +1 -0
  1222. package/dist/transition-coordinator.cjs +131 -0
  1223. package/dist/transition-coordinator.cjs.map +1 -0
  1224. package/dist/transition-coordinator.d.cts +16 -0
  1225. package/dist/transition-coordinator.d.cts.map +1 -0
  1226. package/dist/transition-coordinator.d.mts +16 -0
  1227. package/dist/transition-coordinator.d.mts.map +1 -0
  1228. package/dist/transition-coordinator.mjs +130 -0
  1229. package/dist/transition-coordinator.mjs.map +1 -0
  1230. package/dist/transition.cjs +5 -0
  1231. package/dist/transition.d.cts +2 -0
  1232. package/dist/transition.d.mts +2 -0
  1233. package/dist/transition.mjs +2 -0
  1234. package/dist/types/config.d.cts +20 -0
  1235. package/dist/types/config.d.cts.map +1 -0
  1236. package/dist/types/config.d.mts +20 -0
  1237. package/dist/types/config.d.mts.map +1 -0
  1238. package/dist/types/kernel.d.cts +69 -0
  1239. package/dist/types/kernel.d.cts.map +1 -0
  1240. package/dist/types/kernel.d.mts +69 -0
  1241. package/dist/types/kernel.d.mts.map +1 -0
  1242. package/dist/types/remote.d.cts +124 -0
  1243. package/dist/types/remote.d.cts.map +1 -0
  1244. package/dist/types/remote.d.mts +124 -0
  1245. package/dist/types/remote.d.mts.map +1 -0
  1246. package/dist/types/server/directHarnessRuntime.d.cts +156 -0
  1247. package/dist/types/server/directHarnessRuntime.d.cts.map +1 -0
  1248. package/dist/types/server/directHarnessRuntime.d.mts +156 -0
  1249. package/dist/types/server/directHarnessRuntime.d.mts.map +1 -0
  1250. package/dist/types/server/session.d.cts +5 -0
  1251. package/dist/types/server/session.d.cts.map +1 -0
  1252. package/dist/types/server/session.d.mts +5 -0
  1253. package/dist/types/server/session.d.mts.map +1 -0
  1254. package/dist/types-context-api.cjs +0 -0
  1255. package/dist/types-context-api.d.cts +48 -0
  1256. package/dist/types-context-api.d.cts.map +1 -0
  1257. package/dist/types-context-api.d.mts +48 -0
  1258. package/dist/types-context-api.d.mts.map +1 -0
  1259. package/dist/types-context-api.mjs +1 -0
  1260. package/dist/ui-hub.cjs +5 -0
  1261. package/dist/ui-hub.d.cts +2 -0
  1262. package/dist/ui-hub.d.mts +2 -0
  1263. package/dist/ui-hub.mjs +2 -0
  1264. package/dist/v3-export.cjs +1004 -0
  1265. package/dist/v3-export.cjs.map +1 -0
  1266. package/dist/v3-export.d.cts +34 -0
  1267. package/dist/v3-export.d.cts.map +1 -0
  1268. package/dist/v3-export.d.mts +34 -0
  1269. package/dist/v3-export.d.mts.map +1 -0
  1270. package/dist/v3-export.mjs +1000 -0
  1271. package/dist/v3-export.mjs.map +1 -0
  1272. package/dist/voice-reload-handoff.cjs +14 -0
  1273. package/dist/voice-reload-handoff.d.cts +4 -0
  1274. package/dist/voice-reload-handoff.d.mts +4 -0
  1275. package/dist/voice-reload-handoff.mjs +4 -0
  1276. package/dist/voice-tools.cjs +56 -0
  1277. package/dist/voice-tools.d.cts +4 -0
  1278. package/dist/voice-tools.d.mts +4 -0
  1279. package/dist/voice-tools.mjs +4 -0
  1280. package/dist/web/models/globalStore.cjs +23 -0
  1281. package/dist/web/models/globalStore.cjs.map +1 -0
  1282. package/dist/web/models/globalStore.d.cts +6 -0
  1283. package/dist/web/models/globalStore.d.cts.map +1 -0
  1284. package/dist/web/models/globalStore.d.mts +6 -0
  1285. package/dist/web/models/globalStore.d.mts.map +1 -0
  1286. package/dist/web/models/globalStore.mjs +23 -0
  1287. package/dist/web/models/globalStore.mjs.map +1 -0
  1288. package/dist/web/models/sessionStore.cjs +56 -0
  1289. package/dist/web/models/sessionStore.cjs.map +1 -0
  1290. package/dist/web/models/sessionStore.d.cts +14 -0
  1291. package/dist/web/models/sessionStore.d.cts.map +1 -0
  1292. package/dist/web/models/sessionStore.d.mts +14 -0
  1293. package/dist/web/models/sessionStore.d.mts.map +1 -0
  1294. package/dist/web/models/sessionStore.mjs +56 -0
  1295. package/dist/web/models/sessionStore.mjs.map +1 -0
  1296. package/dist/web/schemas/bundleAssetPolicy.cjs +20 -0
  1297. package/dist/web/schemas/bundleAssetPolicy.cjs.map +1 -0
  1298. package/dist/web/schemas/bundleAssetPolicy.d.cts +10 -0
  1299. package/dist/web/schemas/bundleAssetPolicy.d.cts.map +1 -0
  1300. package/dist/web/schemas/bundleAssetPolicy.d.mts +10 -0
  1301. package/dist/web/schemas/bundleAssetPolicy.d.mts.map +1 -0
  1302. package/dist/web/schemas/bundleAssetPolicy.mjs +18 -0
  1303. package/dist/web/schemas/bundleAssetPolicy.mjs.map +1 -0
  1304. package/dist/web/services/sessionRegistry/index.cjs +107 -0
  1305. package/dist/web/services/sessionRegistry/index.cjs.map +1 -0
  1306. package/dist/web/services/sessionRegistry/index.d.cts +42 -0
  1307. package/dist/web/services/sessionRegistry/index.d.cts.map +1 -0
  1308. package/dist/web/services/sessionRegistry/index.d.mts +42 -0
  1309. package/dist/web/services/sessionRegistry/index.d.mts.map +1 -0
  1310. package/dist/web/services/sessionRegistry/index.mjs +100 -0
  1311. package/dist/web/services/sessionRegistry/index.mjs.map +1 -0
  1312. package/dist/web/services/testing/channels.cjs +11 -0
  1313. package/dist/web/services/testing/channels.cjs.map +1 -0
  1314. package/dist/web/services/testing/channels.d.cts +8 -0
  1315. package/dist/web/services/testing/channels.d.cts.map +1 -0
  1316. package/dist/web/services/testing/channels.d.mts +8 -0
  1317. package/dist/web/services/testing/channels.d.mts.map +1 -0
  1318. package/dist/web/services/testing/channels.mjs +11 -0
  1319. package/dist/web/services/testing/channels.mjs.map +1 -0
  1320. package/dist/web/services/testing/index.cjs +27 -0
  1321. package/dist/web/services/testing/index.cjs.map +1 -0
  1322. package/dist/web/services/testing/index.d.cts +31 -0
  1323. package/dist/web/services/testing/index.d.cts.map +1 -0
  1324. package/dist/web/services/testing/index.d.mts +31 -0
  1325. package/dist/web/services/testing/index.d.mts.map +1 -0
  1326. package/dist/web/services/testing/index.mjs +27 -0
  1327. package/dist/web/services/testing/index.mjs.map +1 -0
  1328. package/dist/web/services/testing/slotProps.cjs +90 -0
  1329. package/dist/web/services/testing/slotProps.cjs.map +1 -0
  1330. package/dist/web/services/testing/slotProps.d.cts +67 -0
  1331. package/dist/web/services/testing/slotProps.d.cts.map +1 -0
  1332. package/dist/web/services/testing/slotProps.d.mts +67 -0
  1333. package/dist/web/services/testing/slotProps.d.mts.map +1 -0
  1334. package/dist/web/services/testing/slotProps.mjs +89 -0
  1335. package/dist/web/services/testing/slotProps.mjs.map +1 -0
  1336. package/dist/web/services/toolResult/index.cjs +30 -0
  1337. package/dist/web/services/toolResult/index.cjs.map +1 -0
  1338. package/dist/web/services/toolResult/index.d.cts +14 -0
  1339. package/dist/web/services/toolResult/index.d.cts.map +1 -0
  1340. package/dist/web/services/toolResult/index.d.mts +14 -0
  1341. package/dist/web/services/toolResult/index.d.mts.map +1 -0
  1342. package/dist/web/services/toolResult/index.mjs +29 -0
  1343. package/dist/web/services/toolResult/index.mjs.map +1 -0
  1344. package/dist/web/testing.cjs +8 -0
  1345. package/dist/web/testing.d.cts +4 -0
  1346. package/dist/web/testing.d.mts +4 -0
  1347. package/dist/web/testing.mjs +4 -0
  1348. package/dist/web/types/modelContext.d.cts +43 -0
  1349. package/dist/web/types/modelContext.d.cts.map +1 -0
  1350. package/dist/web/types/modelContext.d.mts +43 -0
  1351. package/dist/web/types/modelContext.d.mts.map +1 -0
  1352. package/dist/web/types/sessionRegistry.d.cts +59 -0
  1353. package/dist/web/types/sessionRegistry.d.cts.map +1 -0
  1354. package/dist/web/types/sessionRegistry.d.mts +59 -0
  1355. package/dist/web/types/sessionRegistry.d.mts.map +1 -0
  1356. package/dist/web/types/webPlugin.d.cts +809 -0
  1357. package/dist/web/types/webPlugin.d.cts.map +1 -0
  1358. package/dist/web/types/webPlugin.d.mts +809 -0
  1359. package/dist/web/types/webPlugin.d.mts.map +1 -0
  1360. package/dist/web-compositions.cjs +100 -0
  1361. package/dist/web-compositions.cjs.map +1 -0
  1362. package/dist/web-compositions.d.cts +20 -0
  1363. package/dist/web-compositions.d.cts.map +1 -0
  1364. package/dist/web-compositions.d.mts +20 -0
  1365. package/dist/web-compositions.d.mts.map +1 -0
  1366. package/dist/web-compositions.mjs +95 -0
  1367. package/dist/web-compositions.mjs.map +1 -0
  1368. package/dist/web.cjs +25 -0
  1369. package/dist/web.d.cts +10 -0
  1370. package/dist/web.d.mts +10 -0
  1371. package/dist/web.mjs +7 -0
  1372. package/package.json +587 -0
@@ -0,0 +1,149 @@
1
+ const MIN_MINUTES = 1;
2
+ const MAX_MINUTES = 1440;
3
+ const MIN_HOURS = 1;
4
+ const MAX_HOURS = 720;
5
+ /**
6
+ * Both time limits start off.
7
+ *
8
+ * The durations are still here so switching one on lands on a sensible number
9
+ * rather than an empty field. What being off actually means: a tunnel stays up
10
+ * until it is closed or the hub restarts, and a paired session lasts until it
11
+ * is revoked or remote access is switched off. Those two events are the only
12
+ * expiry there is by default.
13
+ */
14
+ const DEFAULT_REMOTE_SETTINGS = {
15
+ autoCloseEnabled: false,
16
+ autoCloseMinutes: 60,
17
+ sessionExpiryEnabled: false,
18
+ idleMinutes: 30,
19
+ absoluteHours: 12,
20
+ tunnel: { kind: "quick" },
21
+ sandbox: {
22
+ enabled: false,
23
+ workspaces: []
24
+ }
25
+ };
26
+ function isRecord(value) {
27
+ return typeof value === "object" && value !== null && !Array.isArray(value);
28
+ }
29
+ function readBoolean(raw, fallback, field, warnings) {
30
+ if (raw === void 0) return fallback;
31
+ if (typeof raw !== "boolean") {
32
+ warnings.push(`${field} must be true or false; using ${String(fallback)}.`);
33
+ return fallback;
34
+ }
35
+ return raw;
36
+ }
37
+ function readClamped(raw, fallback, bounds, field, warnings) {
38
+ if (raw === void 0) return fallback;
39
+ if (typeof raw !== "number" || !Number.isFinite(raw)) {
40
+ warnings.push(`${field} must be a number; using ${String(fallback)}.`);
41
+ return fallback;
42
+ }
43
+ const clamped = Math.min(bounds.max, Math.max(bounds.min, Math.round(raw)));
44
+ if (clamped !== raw) warnings.push(`${field} must be between ${String(bounds.min)} and ${String(bounds.max)}; using ${String(clamped)}.`);
45
+ return clamped;
46
+ }
47
+ /**
48
+ * A tunnel configuration is only accepted whole.
49
+ *
50
+ * A named tunnel missing its hostname is not a named tunnel with a default, it
51
+ * is a misconfiguration, and quietly falling back to a quick tunnel would swap
52
+ * a stable origin for a rotating one without telling anybody.
53
+ */
54
+ function readTunnel(raw, warnings) {
55
+ if (raw === void 0) return DEFAULT_REMOTE_SETTINGS.tunnel;
56
+ if (!isRecord(raw)) {
57
+ warnings.push("tunnel must be an object; using a quick tunnel.");
58
+ return { kind: "quick" };
59
+ }
60
+ if (raw.kind === "quick") return { kind: "quick" };
61
+ if (raw.kind !== "named") {
62
+ warnings.push(`tunnel.kind must be "quick" or "named"; using a quick tunnel.`);
63
+ return { kind: "quick" };
64
+ }
65
+ if (typeof raw.hostname !== "string" || raw.hostname === "") {
66
+ warnings.push("A named tunnel needs a hostname; using a quick tunnel.");
67
+ return { kind: "quick" };
68
+ }
69
+ return {
70
+ kind: "named",
71
+ hostname: raw.hostname,
72
+ ...typeof raw.name === "string" && raw.name !== "" ? { name: raw.name } : {},
73
+ ...typeof raw.tokenFile === "string" && raw.tokenFile !== "" ? { tokenFile: raw.tokenFile } : {},
74
+ ...typeof raw.configFile === "string" && raw.configFile !== "" ? { configFile: raw.configFile } : {}
75
+ };
76
+ }
77
+ /**
78
+ * Reads the container settings, keeping only absolute workspace paths.
79
+ *
80
+ * A relative path would resolve against the container's working directory
81
+ * rather than the host's, which is a mount that silently points somewhere else.
82
+ * Refusing one is better than mounting the wrong directory.
83
+ */
84
+ function readSandbox(raw, warnings) {
85
+ const fallback = DEFAULT_REMOTE_SETTINGS.sandbox;
86
+ if (raw === void 0) return fallback;
87
+ if (!isRecord(raw)) {
88
+ warnings.push("sandbox must be an object; the cockpit will not be contained.");
89
+ return fallback;
90
+ }
91
+ const workspaces = [];
92
+ for (const entry of Array.isArray(raw.workspaces) ? raw.workspaces : []) {
93
+ if (typeof entry !== "string" || !entry.startsWith("/")) {
94
+ warnings.push(`A workspace must be an absolute path; ignoring ${String(entry)}.`);
95
+ continue;
96
+ }
97
+ if (!workspaces.includes(entry)) workspaces.push(entry);
98
+ }
99
+ return {
100
+ enabled: readBoolean(raw.enabled, fallback.enabled, "sandbox.enabled", warnings),
101
+ workspaces
102
+ };
103
+ }
104
+ function parseRemoteAccessSettings(raw) {
105
+ const warnings = [];
106
+ if (!isRecord(raw)) return {
107
+ settings: DEFAULT_REMOTE_SETTINGS,
108
+ warnings
109
+ };
110
+ if (raw.version !== 1) {
111
+ warnings.push(`Settings version ${String(raw.version)} is not version ${String(1)}; using defaults.`);
112
+ return {
113
+ settings: DEFAULT_REMOTE_SETTINGS,
114
+ warnings
115
+ };
116
+ }
117
+ const defaults = DEFAULT_REMOTE_SETTINGS;
118
+ return {
119
+ settings: {
120
+ autoCloseEnabled: readBoolean(raw.autoCloseEnabled, defaults.autoCloseEnabled, "autoCloseEnabled", warnings),
121
+ autoCloseMinutes: readClamped(raw.autoCloseMinutes, defaults.autoCloseMinutes, {
122
+ min: MIN_MINUTES,
123
+ max: MAX_MINUTES
124
+ }, "autoCloseMinutes", warnings),
125
+ sessionExpiryEnabled: readBoolean(raw.sessionExpiryEnabled, defaults.sessionExpiryEnabled, "sessionExpiryEnabled", warnings),
126
+ idleMinutes: readClamped(raw.idleMinutes, defaults.idleMinutes, {
127
+ min: MIN_MINUTES,
128
+ max: MAX_MINUTES
129
+ }, "idleMinutes", warnings),
130
+ absoluteHours: readClamped(raw.absoluteHours, defaults.absoluteHours, {
131
+ min: MIN_HOURS,
132
+ max: MAX_HOURS
133
+ }, "absoluteHours", warnings),
134
+ tunnel: readTunnel(raw.tunnel, warnings),
135
+ sandbox: readSandbox(raw.sandbox, warnings)
136
+ },
137
+ warnings
138
+ };
139
+ }
140
+ function serializeRemoteAccessSettings(settings) {
141
+ return {
142
+ version: 1,
143
+ ...settings
144
+ };
145
+ }
146
+ //#endregion
147
+ export { DEFAULT_REMOTE_SETTINGS, parseRemoteAccessSettings, serializeRemoteAccessSettings };
148
+
149
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/services/remoteAccessSettings/index.ts"],"sourcesContent":["/**\n * The persisted remote-access settings, and how a bad file becomes a good one.\n *\n * Every failure here is recoverable by falling back, never by throwing: a\n * corrupt settings file must not stop the cockpit from starting, because the\n * cockpit is how you would fix it.\n */\n\nimport type { RemoteAccessSettings, SandboxSettings, TunnelConfig } from '../../types/remote';\n\n/** Bumped when a field changes meaning; an unrecognised version falls back to defaults. */\nexport const REMOTE_SETTINGS_VERSION = 1;\n\nconst MIN_MINUTES = 1;\nconst MAX_MINUTES = 1440;\nconst MIN_HOURS = 1;\nconst MAX_HOURS = 720;\n\n/**\n * Both time limits start off.\n *\n * The durations are still here so switching one on lands on a sensible number\n * rather than an empty field. What being off actually means: a tunnel stays up\n * until it is closed or the hub restarts, and a paired session lasts until it\n * is revoked or remote access is switched off. Those two events are the only\n * expiry there is by default.\n */\nexport const DEFAULT_REMOTE_SETTINGS: RemoteAccessSettings = {\n autoCloseEnabled: false,\n autoCloseMinutes: 60,\n sessionExpiryEnabled: false,\n idleMinutes: 30,\n absoluteHours: 12,\n tunnel: { kind: 'quick' },\n sandbox: { enabled: false, workspaces: [] },\n};\n\nexport interface ParsedRemoteSettings {\n settings: RemoteAccessSettings;\n /** Everything that had to be corrected, so the host can say so once rather than silently differ. */\n warnings: string[];\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction readBoolean(raw: unknown, fallback: boolean, field: string, warnings: string[]): boolean {\n if (raw === undefined) return fallback;\n if (typeof raw !== 'boolean') {\n warnings.push(`${field} must be true or false; using ${String(fallback)}.`);\n return fallback;\n }\n return raw;\n}\n\nfunction readClamped(\n raw: unknown,\n fallback: number,\n bounds: { min: number; max: number },\n field: string,\n warnings: string[],\n): number {\n if (raw === undefined) return fallback;\n if (typeof raw !== 'number' || !Number.isFinite(raw)) {\n warnings.push(`${field} must be a number; using ${String(fallback)}.`);\n return fallback;\n }\n const clamped = Math.min(bounds.max, Math.max(bounds.min, Math.round(raw)));\n if (clamped !== raw) {\n warnings.push(\n `${field} must be between ${String(bounds.min)} and ${String(bounds.max)}; using ${String(clamped)}.`,\n );\n }\n return clamped;\n}\n\n/**\n * A tunnel configuration is only accepted whole.\n *\n * A named tunnel missing its hostname is not a named tunnel with a default, it\n * is a misconfiguration, and quietly falling back to a quick tunnel would swap\n * a stable origin for a rotating one without telling anybody.\n */\nfunction readTunnel(raw: unknown, warnings: string[]): TunnelConfig {\n if (raw === undefined) return DEFAULT_REMOTE_SETTINGS.tunnel;\n if (!isRecord(raw)) {\n warnings.push('tunnel must be an object; using a quick tunnel.');\n return { kind: 'quick' };\n }\n if (raw.kind === 'quick') return { kind: 'quick' };\n if (raw.kind !== 'named') {\n warnings.push(`tunnel.kind must be \"quick\" or \"named\"; using a quick tunnel.`);\n return { kind: 'quick' };\n }\n if (typeof raw.hostname !== 'string' || raw.hostname === '') {\n warnings.push('A named tunnel needs a hostname; using a quick tunnel.');\n return { kind: 'quick' };\n }\n return {\n kind: 'named',\n hostname: raw.hostname,\n ...(typeof raw.name === 'string' && raw.name !== '' ? { name: raw.name } : {}),\n ...(typeof raw.tokenFile === 'string' && raw.tokenFile !== '' ? { tokenFile: raw.tokenFile } : {}),\n ...(typeof raw.configFile === 'string' && raw.configFile !== '' ? { configFile: raw.configFile } : {}),\n };\n}\n\n/**\n * Reads the container settings, keeping only absolute workspace paths.\n *\n * A relative path would resolve against the container's working directory\n * rather than the host's, which is a mount that silently points somewhere else.\n * Refusing one is better than mounting the wrong directory.\n */\nfunction readSandbox(raw: unknown, warnings: string[]): SandboxSettings {\n const fallback = DEFAULT_REMOTE_SETTINGS.sandbox;\n if (raw === undefined) return fallback;\n if (!isRecord(raw)) {\n warnings.push('sandbox must be an object; the cockpit will not be contained.');\n return fallback;\n }\n const workspaces: string[] = [];\n for (const entry of Array.isArray(raw.workspaces) ? raw.workspaces : []) {\n if (typeof entry !== 'string' || !entry.startsWith('/')) {\n warnings.push(`A workspace must be an absolute path; ignoring ${String(entry)}.`);\n continue;\n }\n if (!workspaces.includes(entry)) workspaces.push(entry);\n }\n return { enabled: readBoolean(raw.enabled, fallback.enabled, 'sandbox.enabled', warnings), workspaces };\n}\n\nexport function parseRemoteAccessSettings(raw: unknown): ParsedRemoteSettings {\n const warnings: string[] = [];\n if (!isRecord(raw)) {\n return { settings: DEFAULT_REMOTE_SETTINGS, warnings };\n }\n if (raw.version !== REMOTE_SETTINGS_VERSION) {\n warnings.push(\n `Settings version ${String(raw.version)} is not version ${String(REMOTE_SETTINGS_VERSION)}; using defaults.`,\n );\n return { settings: DEFAULT_REMOTE_SETTINGS, warnings };\n }\n const defaults = DEFAULT_REMOTE_SETTINGS;\n return {\n settings: {\n autoCloseEnabled: readBoolean(raw.autoCloseEnabled, defaults.autoCloseEnabled, 'autoCloseEnabled', warnings),\n autoCloseMinutes: readClamped(\n raw.autoCloseMinutes,\n defaults.autoCloseMinutes,\n { min: MIN_MINUTES, max: MAX_MINUTES },\n 'autoCloseMinutes',\n warnings,\n ),\n sessionExpiryEnabled: readBoolean(\n raw.sessionExpiryEnabled,\n defaults.sessionExpiryEnabled,\n 'sessionExpiryEnabled',\n warnings,\n ),\n idleMinutes: readClamped(\n raw.idleMinutes,\n defaults.idleMinutes,\n { min: MIN_MINUTES, max: MAX_MINUTES },\n 'idleMinutes',\n warnings,\n ),\n absoluteHours: readClamped(\n raw.absoluteHours,\n defaults.absoluteHours,\n { min: MIN_HOURS, max: MAX_HOURS },\n 'absoluteHours',\n warnings,\n ),\n tunnel: readTunnel(raw.tunnel, warnings),\n sandbox: readSandbox(raw.sandbox, warnings),\n },\n warnings,\n };\n}\n\nexport function serializeRemoteAccessSettings(settings: RemoteAccessSettings): unknown {\n return { version: REMOTE_SETTINGS_VERSION, ...settings };\n}\n"],"mappings":"AAaA,MAAM,cAAc;AACpB,MAAM,cAAc;AACpB,MAAM,YAAY;AAClB,MAAM,YAAY;;;;;;;;;;AAWlB,MAAa,0BAAgD;CAC3D,kBAAkB;CAClB,kBAAkB;CAClB,sBAAsB;CACtB,aAAa;CACb,eAAe;CACf,QAAQ,EAAE,MAAM,QAAQ;CACxB,SAAS;EAAE,SAAS;EAAO,YAAY,CAAC;CAAE;AAC5C;AAQA,SAAS,SAAS,OAAkD;CAClE,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E;AAEA,SAAS,YAAY,KAAc,UAAmB,OAAe,UAA6B;CAChG,IAAI,QAAQ,KAAA,GAAW,OAAO;CAC9B,IAAI,OAAO,QAAQ,WAAW;EAC5B,SAAS,KAAK,GAAG,MAAM,gCAAgC,OAAO,QAAQ,EAAE,EAAE;EAC1E,OAAO;CACT;CACA,OAAO;AACT;AAEA,SAAS,YACP,KACA,UACA,QACA,OACA,UACQ;CACR,IAAI,QAAQ,KAAA,GAAW,OAAO;CAC9B,IAAI,OAAO,QAAQ,YAAY,CAAC,OAAO,SAAS,GAAG,GAAG;EACpD,SAAS,KAAK,GAAG,MAAM,2BAA2B,OAAO,QAAQ,EAAE,EAAE;EACrE,OAAO;CACT;CACA,MAAM,UAAU,KAAK,IAAI,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,KAAK,MAAM,GAAG,CAAC,CAAC;CAC1E,IAAI,YAAY,KACd,SAAS,KACP,GAAG,MAAM,mBAAmB,OAAO,OAAO,GAAG,EAAE,OAAO,OAAO,OAAO,GAAG,EAAE,UAAU,OAAO,OAAO,EAAE,EACrG;CAEF,OAAO;AACT;;;;;;;;AASA,SAAS,WAAW,KAAc,UAAkC;CAClE,IAAI,QAAQ,KAAA,GAAW,OAAO,wBAAwB;CACtD,IAAI,CAAC,SAAS,GAAG,GAAG;EAClB,SAAS,KAAK,iDAAiD;EAC/D,OAAO,EAAE,MAAM,QAAQ;CACzB;CACA,IAAI,IAAI,SAAS,SAAS,OAAO,EAAE,MAAM,QAAQ;CACjD,IAAI,IAAI,SAAS,SAAS;EACxB,SAAS,KAAK,+DAA+D;EAC7E,OAAO,EAAE,MAAM,QAAQ;CACzB;CACA,IAAI,OAAO,IAAI,aAAa,YAAY,IAAI,aAAa,IAAI;EAC3D,SAAS,KAAK,wDAAwD;EACtE,OAAO,EAAE,MAAM,QAAQ;CACzB;CACA,OAAO;EACL,MAAM;EACN,UAAU,IAAI;EACd,GAAI,OAAO,IAAI,SAAS,YAAY,IAAI,SAAS,KAAK,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;EAC5E,GAAI,OAAO,IAAI,cAAc,YAAY,IAAI,cAAc,KAAK,EAAE,WAAW,IAAI,UAAU,IAAI,CAAC;EAChG,GAAI,OAAO,IAAI,eAAe,YAAY,IAAI,eAAe,KAAK,EAAE,YAAY,IAAI,WAAW,IAAI,CAAC;CACtG;AACF;;;;;;;;AASA,SAAS,YAAY,KAAc,UAAqC;CACtE,MAAM,WAAW,wBAAwB;CACzC,IAAI,QAAQ,KAAA,GAAW,OAAO;CAC9B,IAAI,CAAC,SAAS,GAAG,GAAG;EAClB,SAAS,KAAK,+DAA+D;EAC7E,OAAO;CACT;CACA,MAAM,aAAuB,CAAC;CAC9B,KAAK,MAAM,SAAS,MAAM,QAAQ,IAAI,UAAU,IAAI,IAAI,aAAa,CAAC,GAAG;EACvE,IAAI,OAAO,UAAU,YAAY,CAAC,MAAM,WAAW,GAAG,GAAG;GACvD,SAAS,KAAK,kDAAkD,OAAO,KAAK,EAAE,EAAE;GAChF;EACF;EACA,IAAI,CAAC,WAAW,SAAS,KAAK,GAAG,WAAW,KAAK,KAAK;CACxD;CACA,OAAO;EAAE,SAAS,YAAY,IAAI,SAAS,SAAS,SAAS,mBAAmB,QAAQ;EAAG;CAAW;AACxG;AAEA,SAAgB,0BAA0B,KAAoC;CAC5E,MAAM,WAAqB,CAAC;CAC5B,IAAI,CAAC,SAAS,GAAG,GACf,OAAO;EAAE,UAAU;EAAyB;CAAS;CAEvD,IAAI,IAAI,YAAA,GAAqC;EAC3C,SAAS,KACP,oBAAoB,OAAO,IAAI,OAAO,EAAE,kBAAkB,OAAA,CAA8B,EAAE,kBAC5F;EACA,OAAO;GAAE,UAAU;GAAyB;EAAS;CACvD;CACA,MAAM,WAAW;CACjB,OAAO;EACL,UAAU;GACR,kBAAkB,YAAY,IAAI,kBAAkB,SAAS,kBAAkB,oBAAoB,QAAQ;GAC3G,kBAAkB,YAChB,IAAI,kBACJ,SAAS,kBACT;IAAE,KAAK;IAAa,KAAK;GAAY,GACrC,oBACA,QACF;GACA,sBAAsB,YACpB,IAAI,sBACJ,SAAS,sBACT,wBACA,QACF;GACA,aAAa,YACX,IAAI,aACJ,SAAS,aACT;IAAE,KAAK;IAAa,KAAK;GAAY,GACrC,eACA,QACF;GACA,eAAe,YACb,IAAI,eACJ,SAAS,eACT;IAAE,KAAK;IAAW,KAAK;GAAU,GACjC,iBACA,QACF;GACA,QAAQ,WAAW,IAAI,QAAQ,QAAQ;GACvC,SAAS,YAAY,IAAI,SAAS,QAAQ;EAC5C;EACA;CACF;AACF;AAEA,SAAgB,8BAA8B,UAAyC;CACrF,OAAO;EAAE,SAAA;EAAkC,GAAG;CAAS;AACzD"}
@@ -0,0 +1,126 @@
1
+ const require_runtime = require("../../_virtual/_rolldown/runtime.cjs");
2
+ const require_index = require("../remoteAccessSettings/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
+ let node_os = require("node:os");
8
+ node_os = require_runtime.__toESM(node_os, 1);
9
+ //#region src/services/remoteAccessStore/index.ts
10
+ /** Where the cockpit keeps machine-local state; `doompi sync` already writes its bundle here. */
11
+ const STATE_SEGMENTS = [".doompi", "web"];
12
+ const SETTINGS_FILE = "remote-access.json";
13
+ const CREDENTIALS_FILE = "credentials.json";
14
+ const DIRECTORY_MODE = 448;
15
+ const FILE_MODE = 384;
16
+ /** Any bit set for group or other; a state file readable by another account is worth repairing. */
17
+ const LOOSE_MODE_MASK = 63;
18
+ function defaultRemoteStateDir(homeDir = node_os.default.homedir()) {
19
+ return node_path.default.join(homeDir, ...STATE_SEGMENTS);
20
+ }
21
+ /**
22
+ * Repairs a state file another account can read.
23
+ *
24
+ * Cheap, and it catches the cases a fresh write never would: a file restored
25
+ * from a backup, copied with a permissive umask, or checked out of somewhere it
26
+ * should not have been.
27
+ */
28
+ function tightenMode(filePath, notice) {
29
+ try {
30
+ if ((node_fs.default.statSync(filePath).mode & LOOSE_MODE_MASK) === 0) return;
31
+ node_fs.default.chmodSync(filePath, FILE_MODE);
32
+ notice(`tightened permissions on ${filePath}`);
33
+ } catch {}
34
+ }
35
+ /**
36
+ * Settings and passkeys on disk. Sessions deliberately not.
37
+ *
38
+ * A session is revoked when remote access is switched off, and a hub restart is
39
+ * a switch-off, so persisting one would buy nothing while creating a bearer
40
+ * secret worth stealing. A passkey is the opposite: surviving is its whole
41
+ * point, and what is stored is a public key.
42
+ */
43
+ function createRemoteAccessStore(options = {}) {
44
+ const directory = options.stateDir ?? defaultRemoteStateDir();
45
+ const notice = options.onNotice ?? (() => {});
46
+ const settingsPath = node_path.default.join(directory, SETTINGS_FILE);
47
+ const credentialsPath = node_path.default.join(directory, CREDENTIALS_FILE);
48
+ let current = load();
49
+ let registered = loadCredentials();
50
+ function load() {
51
+ let raw;
52
+ try {
53
+ raw = node_fs.default.readFileSync(settingsPath, "utf8");
54
+ } catch {
55
+ return require_index.DEFAULT_REMOTE_SETTINGS;
56
+ }
57
+ tightenMode(settingsPath, notice);
58
+ let parsed;
59
+ try {
60
+ parsed = JSON.parse(raw);
61
+ } catch {
62
+ notice(`remote access settings at ${settingsPath} are not valid JSON; using defaults`);
63
+ return require_index.DEFAULT_REMOTE_SETTINGS;
64
+ }
65
+ const outcome = require_index.parseRemoteAccessSettings(parsed);
66
+ for (const warning of outcome.warnings) notice(`remote access settings: ${warning}`);
67
+ return outcome.settings;
68
+ }
69
+ function loadCredentials() {
70
+ let raw;
71
+ try {
72
+ raw = node_fs.default.readFileSync(credentialsPath, "utf8");
73
+ } catch {
74
+ return [];
75
+ }
76
+ tightenMode(credentialsPath, notice);
77
+ try {
78
+ const parsed = JSON.parse(raw);
79
+ return Array.isArray(parsed) ? parsed : [];
80
+ } catch {
81
+ notice(`registered passkeys at ${credentialsPath} are not valid JSON; none will load`);
82
+ return [];
83
+ }
84
+ }
85
+ function writeJson(target, body) {
86
+ const temporary = `${target}.${String(process.pid)}.tmp`;
87
+ try {
88
+ node_fs.default.mkdirSync(directory, {
89
+ recursive: true,
90
+ mode: DIRECTORY_MODE
91
+ });
92
+ node_fs.default.writeFileSync(temporary, `${JSON.stringify(body, void 0, 2)}\n`, { mode: FILE_MODE });
93
+ node_fs.default.renameSync(temporary, target);
94
+ } catch (error) {
95
+ notice(`${target} could not be saved: ${error instanceof Error ? error.message : String(error)}`);
96
+ try {
97
+ node_fs.default.rmSync(temporary, { force: true });
98
+ } catch {}
99
+ }
100
+ }
101
+ return {
102
+ directory,
103
+ settings: () => current,
104
+ credentials: () => registered,
105
+ saveCredential(credential) {
106
+ registered = [...registered.filter((held) => held.id !== credential.id), credential];
107
+ writeJson(credentialsPath, registered);
108
+ },
109
+ removeCredential(id) {
110
+ const next = registered.filter((held) => held.id !== id);
111
+ if (next.length === registered.length) return false;
112
+ registered = next;
113
+ writeJson(credentialsPath, registered);
114
+ return true;
115
+ },
116
+ save(settings) {
117
+ current = settings;
118
+ writeJson(settingsPath, require_index.serializeRemoteAccessSettings(settings));
119
+ }
120
+ };
121
+ }
122
+ //#endregion
123
+ exports.createRemoteAccessStore = createRemoteAccessStore;
124
+ exports.defaultRemoteStateDir = defaultRemoteStateDir;
125
+
126
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["os","path","fs","DEFAULT_REMOTE_SETTINGS","parseRemoteAccessSettings","serializeRemoteAccessSettings"],"sources":["../../../src/services/remoteAccessStore/index.ts"],"sourcesContent":["import fs from 'node:fs';\nimport os from 'node:os';\nimport path from 'node:path';\n\nimport type { RemoteAccessSettings } from '../../types/remote';\nimport {\n DEFAULT_REMOTE_SETTINGS,\n parseRemoteAccessSettings,\n serializeRemoteAccessSettings,\n} from '../remoteAccessSettings';\nimport type { StoredCredential } from '../webauthnPolicy';\n\n/** Where the cockpit keeps machine-local state; `doompi sync` already writes its bundle here. */\nconst STATE_SEGMENTS = ['.doompi', 'web'];\nconst SETTINGS_FILE = 'remote-access.json';\nconst CREDENTIALS_FILE = 'credentials.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 RemoteAccessStoreOptions {\n /** Overridden by --state-dir and by tests; the default is ~/.doompi/web. */\n stateDir?: string;\n onNotice?: (message: string) => void;\n}\n\nexport interface RemoteAccessStore {\n readonly directory: string;\n settings(): RemoteAccessSettings;\n save(settings: RemoteAccessSettings): void;\n /**\n * Registered passkeys. Public keys only, so the file is not a bearer secret\n * and losing it costs a re-enrolment rather than an account.\n */\n credentials(): readonly StoredCredential[];\n saveCredential(credential: StoredCredential): void;\n removeCredential(id: string): boolean;\n}\n\nexport function defaultRemoteStateDir(homeDir: string = os.homedir()): string {\n return path.join(homeDir, ...STATE_SEGMENTS);\n}\n\n/**\n * Repairs a state file another account can read.\n *\n * Cheap, and it catches the cases a fresh write never would: a file restored\n * from a backup, copied with a permissive umask, or checked out of somewhere it\n * should not have been.\n */\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 * Settings and passkeys on disk. Sessions deliberately not.\n *\n * A session is revoked when remote access is switched off, and a hub restart is\n * a switch-off, so persisting one would buy nothing while creating a bearer\n * secret worth stealing. A passkey is the opposite: surviving is its whole\n * point, and what is stored is a public key.\n */\nexport function createRemoteAccessStore(options: RemoteAccessStoreOptions = {}): RemoteAccessStore {\n const directory = options.stateDir ?? defaultRemoteStateDir();\n const notice = options.onNotice ?? ((): void => {});\n const settingsPath = path.join(directory, SETTINGS_FILE);\n const credentialsPath = path.join(directory, CREDENTIALS_FILE);\n\n let current = load();\n let registered = loadCredentials();\n\n function load(): RemoteAccessSettings {\n let raw: string;\n try {\n raw = fs.readFileSync(settingsPath, 'utf8');\n } catch {\n // No file is the normal first run, so this is not worth a notice.\n return DEFAULT_REMOTE_SETTINGS;\n }\n tightenMode(settingsPath, notice);\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw);\n } catch {\n // Left in place rather than rewritten: silently overwriting a file\n // somebody hand-edited is worse than ignoring it for this run.\n notice(`remote access settings at ${settingsPath} are not valid JSON; using defaults`);\n return DEFAULT_REMOTE_SETTINGS;\n }\n const outcome = parseRemoteAccessSettings(parsed);\n for (const warning of outcome.warnings) notice(`remote access settings: ${warning}`);\n return outcome.settings;\n }\n\n function loadCredentials(): StoredCredential[] {\n let raw: string;\n try {\n raw = fs.readFileSync(credentialsPath, 'utf8');\n } catch {\n return [];\n }\n tightenMode(credentialsPath, notice);\n try {\n const parsed: unknown = JSON.parse(raw);\n return Array.isArray(parsed) ? (parsed as StoredCredential[]) : [];\n } catch {\n // Fails closed: a half-readable credential file means enrolling again,\n // not guessing which entries survived.\n notice(`registered passkeys at ${credentialsPath} are not valid JSON; none will load`);\n return [];\n }\n }\n\n function writeJson(target: string, body: unknown): void {\n const temporary = `${target}.${String(process.pid)}.tmp`;\n try {\n fs.mkdirSync(directory, { recursive: true, mode: DIRECTORY_MODE });\n fs.writeFileSync(temporary, `${JSON.stringify(body, 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, target);\n } catch (error) {\n notice(`${target} 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 directory,\n settings: () => current,\n credentials: () => registered,\n\n saveCredential(credential) {\n registered = [...registered.filter((held) => held.id !== credential.id), credential];\n writeJson(credentialsPath, registered);\n },\n\n removeCredential(id) {\n const next = registered.filter((held) => held.id !== id);\n if (next.length === registered.length) return false;\n registered = next;\n writeJson(credentialsPath, registered);\n return true;\n },\n\n save(settings) {\n current = settings;\n writeJson(settingsPath, serializeRemoteAccessSettings(settings));\n },\n };\n}\n"],"mappings":";;;;;;;;;;AAaA,MAAM,iBAAiB,CAAC,WAAW,KAAK;AACxC,MAAM,gBAAgB;AACtB,MAAM,mBAAmB;AACzB,MAAM,iBAAiB;AACvB,MAAM,YAAY;;AAElB,MAAM,kBAAkB;AAqBxB,SAAgB,sBAAsB,UAAkBA,QAAAA,QAAG,QAAQ,GAAW;CAC5E,OAAOC,UAAAA,QAAK,KAAK,SAAS,GAAG,cAAc;AAC7C;;;;;;;;AASA,SAAS,YAAY,UAAkB,QAAyC;CAC9E,IAAI;EACF,KAAKC,QAAAA,QAAG,SAAS,QAAQ,CAAC,CAAC,OAAO,qBAAqB,GAAG;EAC1D,QAAA,QAAG,UAAU,UAAU,SAAS;EAChC,OAAO,4BAA4B,UAAU;CAC/C,QAAQ,CAER;AACF;;;;;;;;;AAUA,SAAgB,wBAAwB,UAAoC,CAAC,GAAsB;CACjG,MAAM,YAAY,QAAQ,YAAY,sBAAsB;CAC5D,MAAM,SAAS,QAAQ,mBAAyB,CAAC;CACjD,MAAM,eAAeD,UAAAA,QAAK,KAAK,WAAW,aAAa;CACvD,MAAM,kBAAkBA,UAAAA,QAAK,KAAK,WAAW,gBAAgB;CAE7D,IAAI,UAAU,KAAK;CACnB,IAAI,aAAa,gBAAgB;CAEjC,SAAS,OAA6B;EACpC,IAAI;EACJ,IAAI;GACF,MAAMC,QAAAA,QAAG,aAAa,cAAc,MAAM;EAC5C,QAAQ;GAEN,OAAOC,cAAAA;EACT;EACA,YAAY,cAAc,MAAM;EAChC,IAAI;EACJ,IAAI;GACF,SAAS,KAAK,MAAM,GAAG;EACzB,QAAQ;GAGN,OAAO,6BAA6B,aAAa,oCAAoC;GACrF,OAAOA,cAAAA;EACT;EACA,MAAM,UAAUC,cAAAA,0BAA0B,MAAM;EAChD,KAAK,MAAM,WAAW,QAAQ,UAAU,OAAO,2BAA2B,SAAS;EACnF,OAAO,QAAQ;CACjB;CAEA,SAAS,kBAAsC;EAC7C,IAAI;EACJ,IAAI;GACF,MAAMF,QAAAA,QAAG,aAAa,iBAAiB,MAAM;EAC/C,QAAQ;GACN,OAAO,CAAC;EACV;EACA,YAAY,iBAAiB,MAAM;EACnC,IAAI;GACF,MAAM,SAAkB,KAAK,MAAM,GAAG;GACtC,OAAO,MAAM,QAAQ,MAAM,IAAK,SAAgC,CAAC;EACnE,QAAQ;GAGN,OAAO,0BAA0B,gBAAgB,oCAAoC;GACrF,OAAO,CAAC;EACV;CACF;CAEA,SAAS,UAAU,QAAgB,MAAqB;EACtD,MAAM,YAAY,GAAG,OAAO,GAAG,OAAO,QAAQ,GAAG,EAAE;EACnD,IAAI;GACF,QAAA,QAAG,UAAU,WAAW;IAAE,WAAW;IAAM,MAAM;GAAe,CAAC;GACjE,QAAA,QAAG,cAAc,WAAW,GAAG,KAAK,UAAU,MAAM,KAAA,GAAW,CAAC,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;GAG1F,QAAA,QAAG,WAAW,WAAW,MAAM;EACjC,SAAS,OAAO;GACd,OAAO,GAAG,OAAO,uBAAuB,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,GAAG;GAChG,IAAI;IACF,QAAA,QAAG,OAAO,WAAW,EAAE,OAAO,KAAK,CAAC;GACtC,QAAQ,CAER;EACF;CACF;CAEA,OAAO;EACL;EACA,gBAAgB;EAChB,mBAAmB;EAEnB,eAAe,YAAY;GACzB,aAAa,CAAC,GAAG,WAAW,QAAQ,SAAS,KAAK,OAAO,WAAW,EAAE,GAAG,UAAU;GACnF,UAAU,iBAAiB,UAAU;EACvC;EAEA,iBAAiB,IAAI;GACnB,MAAM,OAAO,WAAW,QAAQ,SAAS,KAAK,OAAO,EAAE;GACvD,IAAI,KAAK,WAAW,WAAW,QAAQ,OAAO;GAC9C,aAAa;GACb,UAAU,iBAAiB,UAAU;GACrC,OAAO;EACT;EAEA,KAAK,UAAU;GACb,UAAU;GACV,UAAU,cAAcG,cAAAA,8BAA8B,QAAQ,CAAC;EACjE;CACF;AACF"}
@@ -0,0 +1,121 @@
1
+ import { DEFAULT_REMOTE_SETTINGS, parseRemoteAccessSettings, serializeRemoteAccessSettings } from "../remoteAccessSettings/index.mjs";
2
+ import fs from "node:fs";
3
+ import path from "node:path";
4
+ import os from "node:os";
5
+ //#region src/services/remoteAccessStore/index.ts
6
+ /** Where the cockpit keeps machine-local state; `doompi sync` already writes its bundle here. */
7
+ const STATE_SEGMENTS = [".doompi", "web"];
8
+ const SETTINGS_FILE = "remote-access.json";
9
+ const CREDENTIALS_FILE = "credentials.json";
10
+ const DIRECTORY_MODE = 448;
11
+ const FILE_MODE = 384;
12
+ /** Any bit set for group or other; a state file readable by another account is worth repairing. */
13
+ const LOOSE_MODE_MASK = 63;
14
+ function defaultRemoteStateDir(homeDir = os.homedir()) {
15
+ return path.join(homeDir, ...STATE_SEGMENTS);
16
+ }
17
+ /**
18
+ * Repairs a state file another account can read.
19
+ *
20
+ * Cheap, and it catches the cases a fresh write never would: a file restored
21
+ * from a backup, copied with a permissive umask, or checked out of somewhere it
22
+ * should not have been.
23
+ */
24
+ function tightenMode(filePath, notice) {
25
+ try {
26
+ if ((fs.statSync(filePath).mode & LOOSE_MODE_MASK) === 0) return;
27
+ fs.chmodSync(filePath, FILE_MODE);
28
+ notice(`tightened permissions on ${filePath}`);
29
+ } catch {}
30
+ }
31
+ /**
32
+ * Settings and passkeys on disk. Sessions deliberately not.
33
+ *
34
+ * A session is revoked when remote access is switched off, and a hub restart is
35
+ * a switch-off, so persisting one would buy nothing while creating a bearer
36
+ * secret worth stealing. A passkey is the opposite: surviving is its whole
37
+ * point, and what is stored is a public key.
38
+ */
39
+ function createRemoteAccessStore(options = {}) {
40
+ const directory = options.stateDir ?? defaultRemoteStateDir();
41
+ const notice = options.onNotice ?? (() => {});
42
+ const settingsPath = path.join(directory, SETTINGS_FILE);
43
+ const credentialsPath = path.join(directory, CREDENTIALS_FILE);
44
+ let current = load();
45
+ let registered = loadCredentials();
46
+ function load() {
47
+ let raw;
48
+ try {
49
+ raw = fs.readFileSync(settingsPath, "utf8");
50
+ } catch {
51
+ return DEFAULT_REMOTE_SETTINGS;
52
+ }
53
+ tightenMode(settingsPath, notice);
54
+ let parsed;
55
+ try {
56
+ parsed = JSON.parse(raw);
57
+ } catch {
58
+ notice(`remote access settings at ${settingsPath} are not valid JSON; using defaults`);
59
+ return DEFAULT_REMOTE_SETTINGS;
60
+ }
61
+ const outcome = parseRemoteAccessSettings(parsed);
62
+ for (const warning of outcome.warnings) notice(`remote access settings: ${warning}`);
63
+ return outcome.settings;
64
+ }
65
+ function loadCredentials() {
66
+ let raw;
67
+ try {
68
+ raw = fs.readFileSync(credentialsPath, "utf8");
69
+ } catch {
70
+ return [];
71
+ }
72
+ tightenMode(credentialsPath, notice);
73
+ try {
74
+ const parsed = JSON.parse(raw);
75
+ return Array.isArray(parsed) ? parsed : [];
76
+ } catch {
77
+ notice(`registered passkeys at ${credentialsPath} are not valid JSON; none will load`);
78
+ return [];
79
+ }
80
+ }
81
+ function writeJson(target, body) {
82
+ const temporary = `${target}.${String(process.pid)}.tmp`;
83
+ try {
84
+ fs.mkdirSync(directory, {
85
+ recursive: true,
86
+ mode: DIRECTORY_MODE
87
+ });
88
+ fs.writeFileSync(temporary, `${JSON.stringify(body, void 0, 2)}\n`, { mode: FILE_MODE });
89
+ fs.renameSync(temporary, target);
90
+ } catch (error) {
91
+ notice(`${target} could not be saved: ${error instanceof Error ? error.message : String(error)}`);
92
+ try {
93
+ fs.rmSync(temporary, { force: true });
94
+ } catch {}
95
+ }
96
+ }
97
+ return {
98
+ directory,
99
+ settings: () => current,
100
+ credentials: () => registered,
101
+ saveCredential(credential) {
102
+ registered = [...registered.filter((held) => held.id !== credential.id), credential];
103
+ writeJson(credentialsPath, registered);
104
+ },
105
+ removeCredential(id) {
106
+ const next = registered.filter((held) => held.id !== id);
107
+ if (next.length === registered.length) return false;
108
+ registered = next;
109
+ writeJson(credentialsPath, registered);
110
+ return true;
111
+ },
112
+ save(settings) {
113
+ current = settings;
114
+ writeJson(settingsPath, serializeRemoteAccessSettings(settings));
115
+ }
116
+ };
117
+ }
118
+ //#endregion
119
+ export { createRemoteAccessStore, defaultRemoteStateDir };
120
+
121
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../src/services/remoteAccessStore/index.ts"],"sourcesContent":["import fs from 'node:fs';\nimport os from 'node:os';\nimport path from 'node:path';\n\nimport type { RemoteAccessSettings } from '../../types/remote';\nimport {\n DEFAULT_REMOTE_SETTINGS,\n parseRemoteAccessSettings,\n serializeRemoteAccessSettings,\n} from '../remoteAccessSettings';\nimport type { StoredCredential } from '../webauthnPolicy';\n\n/** Where the cockpit keeps machine-local state; `doompi sync` already writes its bundle here. */\nconst STATE_SEGMENTS = ['.doompi', 'web'];\nconst SETTINGS_FILE = 'remote-access.json';\nconst CREDENTIALS_FILE = 'credentials.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 RemoteAccessStoreOptions {\n /** Overridden by --state-dir and by tests; the default is ~/.doompi/web. */\n stateDir?: string;\n onNotice?: (message: string) => void;\n}\n\nexport interface RemoteAccessStore {\n readonly directory: string;\n settings(): RemoteAccessSettings;\n save(settings: RemoteAccessSettings): void;\n /**\n * Registered passkeys. Public keys only, so the file is not a bearer secret\n * and losing it costs a re-enrolment rather than an account.\n */\n credentials(): readonly StoredCredential[];\n saveCredential(credential: StoredCredential): void;\n removeCredential(id: string): boolean;\n}\n\nexport function defaultRemoteStateDir(homeDir: string = os.homedir()): string {\n return path.join(homeDir, ...STATE_SEGMENTS);\n}\n\n/**\n * Repairs a state file another account can read.\n *\n * Cheap, and it catches the cases a fresh write never would: a file restored\n * from a backup, copied with a permissive umask, or checked out of somewhere it\n * should not have been.\n */\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 * Settings and passkeys on disk. Sessions deliberately not.\n *\n * A session is revoked when remote access is switched off, and a hub restart is\n * a switch-off, so persisting one would buy nothing while creating a bearer\n * secret worth stealing. A passkey is the opposite: surviving is its whole\n * point, and what is stored is a public key.\n */\nexport function createRemoteAccessStore(options: RemoteAccessStoreOptions = {}): RemoteAccessStore {\n const directory = options.stateDir ?? defaultRemoteStateDir();\n const notice = options.onNotice ?? ((): void => {});\n const settingsPath = path.join(directory, SETTINGS_FILE);\n const credentialsPath = path.join(directory, CREDENTIALS_FILE);\n\n let current = load();\n let registered = loadCredentials();\n\n function load(): RemoteAccessSettings {\n let raw: string;\n try {\n raw = fs.readFileSync(settingsPath, 'utf8');\n } catch {\n // No file is the normal first run, so this is not worth a notice.\n return DEFAULT_REMOTE_SETTINGS;\n }\n tightenMode(settingsPath, notice);\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw);\n } catch {\n // Left in place rather than rewritten: silently overwriting a file\n // somebody hand-edited is worse than ignoring it for this run.\n notice(`remote access settings at ${settingsPath} are not valid JSON; using defaults`);\n return DEFAULT_REMOTE_SETTINGS;\n }\n const outcome = parseRemoteAccessSettings(parsed);\n for (const warning of outcome.warnings) notice(`remote access settings: ${warning}`);\n return outcome.settings;\n }\n\n function loadCredentials(): StoredCredential[] {\n let raw: string;\n try {\n raw = fs.readFileSync(credentialsPath, 'utf8');\n } catch {\n return [];\n }\n tightenMode(credentialsPath, notice);\n try {\n const parsed: unknown = JSON.parse(raw);\n return Array.isArray(parsed) ? (parsed as StoredCredential[]) : [];\n } catch {\n // Fails closed: a half-readable credential file means enrolling again,\n // not guessing which entries survived.\n notice(`registered passkeys at ${credentialsPath} are not valid JSON; none will load`);\n return [];\n }\n }\n\n function writeJson(target: string, body: unknown): void {\n const temporary = `${target}.${String(process.pid)}.tmp`;\n try {\n fs.mkdirSync(directory, { recursive: true, mode: DIRECTORY_MODE });\n fs.writeFileSync(temporary, `${JSON.stringify(body, 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, target);\n } catch (error) {\n notice(`${target} 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 directory,\n settings: () => current,\n credentials: () => registered,\n\n saveCredential(credential) {\n registered = [...registered.filter((held) => held.id !== credential.id), credential];\n writeJson(credentialsPath, registered);\n },\n\n removeCredential(id) {\n const next = registered.filter((held) => held.id !== id);\n if (next.length === registered.length) return false;\n registered = next;\n writeJson(credentialsPath, registered);\n return true;\n },\n\n save(settings) {\n current = settings;\n writeJson(settingsPath, serializeRemoteAccessSettings(settings));\n },\n };\n}\n"],"mappings":";;;;;;AAaA,MAAM,iBAAiB,CAAC,WAAW,KAAK;AACxC,MAAM,gBAAgB;AACtB,MAAM,mBAAmB;AACzB,MAAM,iBAAiB;AACvB,MAAM,YAAY;;AAElB,MAAM,kBAAkB;AAqBxB,SAAgB,sBAAsB,UAAkB,GAAG,QAAQ,GAAW;CAC5E,OAAO,KAAK,KAAK,SAAS,GAAG,cAAc;AAC7C;;;;;;;;AASA,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;;;;;;;;;AAUA,SAAgB,wBAAwB,UAAoC,CAAC,GAAsB;CACjG,MAAM,YAAY,QAAQ,YAAY,sBAAsB;CAC5D,MAAM,SAAS,QAAQ,mBAAyB,CAAC;CACjD,MAAM,eAAe,KAAK,KAAK,WAAW,aAAa;CACvD,MAAM,kBAAkB,KAAK,KAAK,WAAW,gBAAgB;CAE7D,IAAI,UAAU,KAAK;CACnB,IAAI,aAAa,gBAAgB;CAEjC,SAAS,OAA6B;EACpC,IAAI;EACJ,IAAI;GACF,MAAM,GAAG,aAAa,cAAc,MAAM;EAC5C,QAAQ;GAEN,OAAO;EACT;EACA,YAAY,cAAc,MAAM;EAChC,IAAI;EACJ,IAAI;GACF,SAAS,KAAK,MAAM,GAAG;EACzB,QAAQ;GAGN,OAAO,6BAA6B,aAAa,oCAAoC;GACrF,OAAO;EACT;EACA,MAAM,UAAU,0BAA0B,MAAM;EAChD,KAAK,MAAM,WAAW,QAAQ,UAAU,OAAO,2BAA2B,SAAS;EACnF,OAAO,QAAQ;CACjB;CAEA,SAAS,kBAAsC;EAC7C,IAAI;EACJ,IAAI;GACF,MAAM,GAAG,aAAa,iBAAiB,MAAM;EAC/C,QAAQ;GACN,OAAO,CAAC;EACV;EACA,YAAY,iBAAiB,MAAM;EACnC,IAAI;GACF,MAAM,SAAkB,KAAK,MAAM,GAAG;GACtC,OAAO,MAAM,QAAQ,MAAM,IAAK,SAAgC,CAAC;EACnE,QAAQ;GAGN,OAAO,0BAA0B,gBAAgB,oCAAoC;GACrF,OAAO,CAAC;EACV;CACF;CAEA,SAAS,UAAU,QAAgB,MAAqB;EACtD,MAAM,YAAY,GAAG,OAAO,GAAG,OAAO,QAAQ,GAAG,EAAE;EACnD,IAAI;GACF,GAAG,UAAU,WAAW;IAAE,WAAW;IAAM,MAAM;GAAe,CAAC;GACjE,GAAG,cAAc,WAAW,GAAG,KAAK,UAAU,MAAM,KAAA,GAAW,CAAC,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;GAG1F,GAAG,WAAW,WAAW,MAAM;EACjC,SAAS,OAAO;GACd,OAAO,GAAG,OAAO,uBAAuB,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,GAAG;GAChG,IAAI;IACF,GAAG,OAAO,WAAW,EAAE,OAAO,KAAK,CAAC;GACtC,QAAQ,CAER;EACF;CACF;CAEA,OAAO;EACL;EACA,gBAAgB;EAChB,mBAAmB;EAEnB,eAAe,YAAY;GACzB,aAAa,CAAC,GAAG,WAAW,QAAQ,SAAS,KAAK,OAAO,WAAW,EAAE,GAAG,UAAU;GACnF,UAAU,iBAAiB,UAAU;EACvC;EAEA,iBAAiB,IAAI;GACnB,MAAM,OAAO,WAAW,QAAQ,SAAS,KAAK,OAAO,EAAE;GACvD,IAAI,KAAK,WAAW,WAAW,QAAQ,OAAO;GAC9C,aAAa;GACb,UAAU,iBAAiB,UAAU;GACrC,OAAO;EACT;EAEA,KAAK,UAAU;GACb,UAAU;GACV,UAAU,cAAc,8BAA8B,QAAQ,CAAC;EACjE;CACF;AACF"}
@@ -0,0 +1,190 @@
1
+ const require_remote = require("../../constants/remote.cjs");
2
+ //#region src/services/remoteGuardPolicy/index.ts
3
+ /**
4
+ * Who may do what, on which listener.
5
+ *
6
+ * The cockpit runs one Hono app behind two sockets: a loopback listener that is
7
+ * open to whoever already has an account on the machine, and a tunnel listener
8
+ * that faces the public internet. Every decision here answers one question
9
+ * about one request, with no I/O, so the whole trust boundary is readable in a
10
+ * single sitting and testable without a server.
11
+ */
12
+ const METHOD_GET = "GET";
13
+ const METHOD_HEAD = "HEAD";
14
+ const METHOD_POST = "POST";
15
+ /** Cloudflare's edge speaks to us on 443, so the Host it forwards may or may not carry the port. */
16
+ const HTTPS_DEFAULT_PORT = "443";
17
+ /**
18
+ * The exact package-owned pairing and PWA bootstrap routes the tunnel listener
19
+ * answers directly. They are matched by string equality, never prefixes or
20
+ * wildcards. A contract test pins the list so additions require review.
21
+ *
22
+ * Passkey sign-in is public because it creates a session by proving a credential.
23
+ * Registration is also direct so the self-contained pairing page can run it, but
24
+ * its handlers require the paired device cookie issued only after host approval.
25
+ */
26
+ const PUBLIC_PAIRING_ROUTES = [
27
+ {
28
+ method: METHOD_GET,
29
+ path: "/"
30
+ },
31
+ {
32
+ method: METHOD_GET,
33
+ path: require_remote.PAIRING_PAGE_ROUTE
34
+ },
35
+ {
36
+ method: METHOD_GET,
37
+ path: "/manifest.webmanifest"
38
+ },
39
+ {
40
+ method: METHOD_GET,
41
+ path: "/sw.js"
42
+ },
43
+ {
44
+ method: METHOD_GET,
45
+ path: "/pwa/pwa.js"
46
+ },
47
+ {
48
+ method: METHOD_GET,
49
+ path: "/pwa/icon-192.png"
50
+ },
51
+ {
52
+ method: METHOD_GET,
53
+ path: "/pwa/icon-512.png"
54
+ },
55
+ {
56
+ method: METHOD_POST,
57
+ path: require_remote.PAIRING_CLAIM_ROUTE
58
+ },
59
+ {
60
+ method: METHOD_GET,
61
+ path: require_remote.PAIRING_STATUS_ROUTE
62
+ },
63
+ {
64
+ method: METHOD_POST,
65
+ path: require_remote.PASSKEY_AUTH_BEGIN_ROUTE
66
+ },
67
+ {
68
+ method: METHOD_POST,
69
+ path: require_remote.PASSKEY_AUTH_FINISH_ROUTE
70
+ },
71
+ {
72
+ method: METHOD_POST,
73
+ path: require_remote.PASSKEY_REGISTER_BEGIN_ROUTE
74
+ },
75
+ {
76
+ method: METHOD_POST,
77
+ path: require_remote.PASSKEY_REGISTER_FINISH_ROUTE
78
+ }
79
+ ];
80
+ /**
81
+ * Whether the tunnel listener may answer this request directly.
82
+ *
83
+ * Session requirements for direct routes are enforced by their exact handlers.
84
+ * `path` must be the value the router matched on, which for Hono is
85
+ * `c.req.path`. That value is percent-decoded, so `/%70air` reaches the `/pair`
86
+ * handler; comparing against a separately parsed pathname would let the guard
87
+ * and the router disagree about the same request, which is how an allowlist
88
+ * turns into a bypass.
89
+ */
90
+ function isPublicPairingRoute(method, path) {
91
+ const wanted = method.toUpperCase();
92
+ return PUBLIC_PAIRING_ROUTES.some((route) => route.method === wanted && route.path === path);
93
+ }
94
+ /** Normalizes to scheme://host[:port], lowercased. Undefined for anything unparseable, `null` included. */
95
+ function normalizeOrigin(raw) {
96
+ try {
97
+ return new URL(raw).origin.toLowerCase();
98
+ } catch {
99
+ return;
100
+ }
101
+ }
102
+ function normalizeHost(raw) {
103
+ return raw.trim().toLowerCase();
104
+ }
105
+ /**
106
+ * What the loopback listener accepts.
107
+ *
108
+ * The port is the one the socket actually bound, not a constant, because the
109
+ * hub takes `--port` and the e2e fixture reserves a random free one. The vite
110
+ * dev server is allowed unconditionally so the documented two-terminal plugin
111
+ * loop keeps working; anything that can bind that port already runs as this
112
+ * user, so the marginal risk is close to nothing.
113
+ */
114
+ function localOriginPolicy(port, extraOrigins = []) {
115
+ const hosts = /* @__PURE__ */ new Set();
116
+ const origins = /* @__PURE__ */ new Set();
117
+ for (const listenPort of [port, require_remote.WEB_DEV_SERVER_PORT]) for (const name of [
118
+ "127.0.0.1",
119
+ "localhost",
120
+ "[::1]"
121
+ ]) {
122
+ const host = `${name}:${String(listenPort)}`;
123
+ hosts.add(host);
124
+ origins.add(`http://${host}`);
125
+ }
126
+ for (const extra of extraOrigins) {
127
+ const normalized = normalizeOrigin(extra);
128
+ if (normalized !== void 0) origins.add(normalized);
129
+ }
130
+ return {
131
+ origins,
132
+ hosts
133
+ };
134
+ }
135
+ /** What the tunnel listener accepts: its own origin and nothing else. */
136
+ function tunnelOriginPolicy(publicOrigin, extraHosts = []) {
137
+ const normalized = normalizeOrigin(publicOrigin);
138
+ if (normalized === void 0) throw new Error(`The tunnel origin "${publicOrigin}" is not a URL.`);
139
+ const host = new URL(normalized).host;
140
+ const hosts = /* @__PURE__ */ new Set([host, `${host}:${HTTPS_DEFAULT_PORT}`]);
141
+ for (const extra of extraHosts) hosts.add(normalizeHost(extra));
142
+ return {
143
+ origins: /* @__PURE__ */ new Set([normalized]),
144
+ hosts
145
+ };
146
+ }
147
+ /** A request with a side effect: anything that is not a plain read, plus every socket upgrade. */
148
+ function isMutating(method, isUpgrade) {
149
+ if (isUpgrade) return true;
150
+ const wanted = method.toUpperCase();
151
+ return wanted !== METHOD_GET && wanted !== METHOD_HEAD;
152
+ }
153
+ /**
154
+ * Whether the request's Origin and Host are ones this listener answers to.
155
+ *
156
+ * The loopback listener is lenient about a missing Origin and strict about one
157
+ * that is present. That asymmetry is deliberate: a browser always sends Origin
158
+ * on a socket handshake and on a cross-origin mutation, which is the attack
159
+ * this closes, while curl, the health probe, and the test harness send none and
160
+ * would break for no security gain. It buys nothing against a local program,
161
+ * which can send whatever it likes, and is not meant to.
162
+ *
163
+ * The tunnel listener requires Origin on anything with a side effect and
164
+ * tolerates its absence only on a plain read, because a top-level navigation
165
+ * (following the scanned link) legitimately sends none.
166
+ *
167
+ * Host is checked on both. On the loopback listener that is the DNS-rebinding
168
+ * defence for a well-known port, and it is the only check a socket upgrade gets
169
+ * at all, since the upgrade path never reaches the node-server host parsing.
170
+ */
171
+ function originVerdict(input) {
172
+ const policy = input.listener === "local" ? input.local : input.tunnel;
173
+ if (policy === void 0) return "not-ready";
174
+ if (input.host === void 0 || !policy.hosts.has(normalizeHost(input.host))) return "bad-host";
175
+ if (input.origin === void 0) {
176
+ if (input.listener === "local") return "allow";
177
+ return isMutating(input.method, input.isUpgrade) ? "bad-origin" : "allow";
178
+ }
179
+ const origin = normalizeOrigin(input.origin);
180
+ if (origin === void 0 || !policy.origins.has(origin)) return "bad-origin";
181
+ return "allow";
182
+ }
183
+ //#endregion
184
+ exports.PUBLIC_PAIRING_ROUTES = PUBLIC_PAIRING_ROUTES;
185
+ exports.isPublicPairingRoute = isPublicPairingRoute;
186
+ exports.localOriginPolicy = localOriginPolicy;
187
+ exports.originVerdict = originVerdict;
188
+ exports.tunnelOriginPolicy = tunnelOriginPolicy;
189
+
190
+ //# sourceMappingURL=index.cjs.map