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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1218) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +7 -0
  3. package/dist/_virtual/_rolldown/runtime.cjs +23 -0
  4. package/dist/agentModel.cjs +4 -0
  5. package/dist/agentModel.d.mts +2 -0
  6. package/dist/agentModel.mjs +2 -0
  7. package/dist/apiContracts.cjs +2094 -0
  8. package/dist/apiContracts.cjs.map +1 -0
  9. package/dist/apiContracts.d.mts +1086 -0
  10. package/dist/apiContracts.d.mts.map +1 -0
  11. package/dist/apiContracts.mjs +2074 -0
  12. package/dist/apiContracts.mjs.map +1 -0
  13. package/dist/askUser.cjs +8 -0
  14. package/dist/askUser.d.mts +2 -0
  15. package/dist/askUser.mjs +2 -0
  16. package/dist/authorTools.cjs +5 -0
  17. package/dist/authorTools.d.mts +2 -0
  18. package/dist/authorTools.mjs +2 -0
  19. package/dist/backgroundWork.cjs +9 -0
  20. package/dist/backgroundWork.d.mts +2 -0
  21. package/dist/backgroundWork.mjs +2 -0
  22. package/dist/bundleAssetPolicy.cjs +5 -0
  23. package/dist/bundleAssetPolicy.d.mts +2 -0
  24. package/dist/bundleAssetPolicy.mjs +2 -0
  25. package/dist/childProcess.cjs +15 -0
  26. package/dist/childProcess.d.mts +2 -0
  27. package/dist/childProcess.mjs +2 -0
  28. package/dist/childSession.cjs +9 -0
  29. package/dist/childSession.d.mts +3 -0
  30. package/dist/childSession.mjs +3 -0
  31. package/dist/cockpitContainer.cjs +4 -0
  32. package/dist/cockpitContainer.d.mts +2 -0
  33. package/dist/cockpitContainer.mjs +2 -0
  34. package/dist/config.cjs +13 -0
  35. package/dist/config.d.mts +3 -0
  36. package/dist/config.mjs +2 -0
  37. package/dist/contextApi.cjs +12 -0
  38. package/dist/contextApi.d.mts +4 -0
  39. package/dist/contextApi.mjs +3 -0
  40. package/dist/contextContributions.cjs +7 -0
  41. package/dist/contextContributions.d.mts +3 -0
  42. package/dist/contextContributions.mjs +3 -0
  43. package/dist/contextDetail.cjs +65 -0
  44. package/dist/contextDetail.cjs.map +1 -0
  45. package/dist/contextDetail.d.mts +19 -0
  46. package/dist/contextDetail.d.mts.map +1 -0
  47. package/dist/contextDetail.mjs +64 -0
  48. package/dist/contextDetail.mjs.map +1 -0
  49. package/dist/contextDetailStore.cjs +96 -0
  50. package/dist/contextDetailStore.cjs.map +1 -0
  51. package/dist/contextDetailStore.d.mts +21 -0
  52. package/dist/contextDetailStore.d.mts.map +1 -0
  53. package/dist/contextDetailStore.mjs +87 -0
  54. package/dist/contextDetailStore.mjs.map +1 -0
  55. package/dist/contextProjection.cjs +121 -0
  56. package/dist/contextProjection.cjs.map +1 -0
  57. package/dist/contextProjection.d.mts +130 -0
  58. package/dist/contextProjection.d.mts.map +1 -0
  59. package/dist/contextProjection.mjs +117 -0
  60. package/dist/contextProjection.mjs.map +1 -0
  61. package/dist/cordisHost.cjs +13 -0
  62. package/dist/cordisHost.d.mts +2 -0
  63. package/dist/cordisHost.mjs +2 -0
  64. package/dist/delegation.cjs +18 -0
  65. package/dist/delegation.d.mts +2 -0
  66. package/dist/delegation.mjs +2 -0
  67. package/dist/doomPackage.cjs +61 -0
  68. package/dist/doomPackage.cjs.map +1 -0
  69. package/dist/doomPackage.d.mts +17 -0
  70. package/dist/doomPackage.d.mts.map +1 -0
  71. package/dist/doomPackage.mjs +54 -0
  72. package/dist/doomPackage.mjs.map +1 -0
  73. package/dist/executionBudget.cjs +232 -0
  74. package/dist/executionBudget.cjs.map +1 -0
  75. package/dist/executionBudget.d.mts +11 -0
  76. package/dist/executionBudget.d.mts.map +1 -0
  77. package/dist/executionBudget.mjs +226 -0
  78. package/dist/executionBudget.mjs.map +1 -0
  79. package/dist/extensionFile.cjs +19 -0
  80. package/dist/extensionFile.d.mts +3 -0
  81. package/dist/extensionFile.mjs +2 -0
  82. package/dist/footer.cjs +6 -0
  83. package/dist/footer.d.mts +2 -0
  84. package/dist/footer.mjs +2 -0
  85. package/dist/headless.cjs +16 -0
  86. package/dist/headless.d.mts +2 -0
  87. package/dist/headless.mjs +2 -0
  88. package/dist/headlessHub.cjs +1008 -0
  89. package/dist/headlessHub.cjs.map +1 -0
  90. package/dist/headlessHub.d.mts +176 -0
  91. package/dist/headlessHub.d.mts.map +1 -0
  92. package/dist/headlessHub.mjs +1005 -0
  93. package/dist/headlessHub.mjs.map +1 -0
  94. package/dist/headlessServer.cjs +956 -0
  95. package/dist/headlessServer.cjs.map +1 -0
  96. package/dist/headlessServer.d.mts +66 -0
  97. package/dist/headlessServer.d.mts.map +1 -0
  98. package/dist/headlessServer.mjs +949 -0
  99. package/dist/headlessServer.mjs.map +1 -0
  100. package/dist/headlessSessionHost.cjs +0 -0
  101. package/dist/headlessSessionHost.d.mts +89 -0
  102. package/dist/headlessSessionHost.d.mts.map +1 -0
  103. package/dist/headlessSessionHost.mjs +1 -0
  104. package/dist/headlessSessionManager.cjs +51 -0
  105. package/dist/headlessSessionManager.cjs.map +1 -0
  106. package/dist/headlessSessionManager.d.mts +6 -0
  107. package/dist/headlessSessionManager.d.mts.map +1 -0
  108. package/dist/headlessSessionManager.mjs +50 -0
  109. package/dist/headlessSessionManager.mjs.map +1 -0
  110. package/dist/help.cjs +24 -0
  111. package/dist/help.d.mts +3 -0
  112. package/dist/help.mjs +3 -0
  113. package/dist/history.cjs +25 -0
  114. package/dist/history.d.mts +10 -0
  115. package/dist/history.mjs +10 -0
  116. package/dist/historyOwnership.cjs +253 -0
  117. package/dist/historyOwnership.cjs.map +1 -0
  118. package/dist/historyOwnership.d.mts +23 -0
  119. package/dist/historyOwnership.d.mts.map +1 -0
  120. package/dist/historyOwnership.mjs +247 -0
  121. package/dist/historyOwnership.mjs.map +1 -0
  122. package/dist/hubChannel.cjs +4 -0
  123. package/dist/hubChannel.d.mts +2 -0
  124. package/dist/hubChannel.mjs +2 -0
  125. package/dist/index.cjs +44 -0
  126. package/dist/index.d.mts +6 -0
  127. package/dist/index.mjs +6 -0
  128. package/dist/json.cjs +6 -0
  129. package/dist/json.d.mts +2 -0
  130. package/dist/json.mjs +2 -0
  131. package/dist/jsonlSessionRepo.cjs +44 -0
  132. package/dist/jsonlSessionRepo.cjs.map +1 -0
  133. package/dist/jsonlSessionRepo.d.mts +7 -0
  134. package/dist/jsonlSessionRepo.d.mts.map +1 -0
  135. package/dist/jsonlSessionRepo.mjs +42 -0
  136. package/dist/jsonlSessionRepo.mjs.map +1 -0
  137. package/dist/kernel.cjs +3 -0
  138. package/dist/kernel.d.mts +3 -0
  139. package/dist/kernel.mjs +2 -0
  140. package/dist/leader.cjs +9 -0
  141. package/dist/leader.d.mts +2 -0
  142. package/dist/leader.mjs +2 -0
  143. package/dist/logSinkTelemetry.cjs +5 -0
  144. package/dist/logSinkTelemetry.d.mts +2 -0
  145. package/dist/logSinkTelemetry.mjs +2 -0
  146. package/dist/machineApi.cjs +92 -0
  147. package/dist/machineApi.cjs.map +1 -0
  148. package/dist/machineApi.d.mts +7 -0
  149. package/dist/machineApi.d.mts.map +1 -0
  150. package/dist/machineApi.mjs +88 -0
  151. package/dist/machineApi.mjs.map +1 -0
  152. package/dist/main.cjs +11 -0
  153. package/dist/main.d.mts +5 -0
  154. package/dist/main.mjs +4 -0
  155. package/dist/mcpFacet.cjs +9 -0
  156. package/dist/mcpFacet.d.mts +4 -0
  157. package/dist/mcpFacet.mjs +3 -0
  158. package/dist/mcpProjection.cjs +16 -0
  159. package/dist/mcpProjection.d.mts +2 -0
  160. package/dist/mcpProjection.mjs +2 -0
  161. package/dist/mcpSchemaCost.cjs +195 -0
  162. package/dist/mcpSchemaCost.cjs.map +1 -0
  163. package/dist/mcpSchemaCost.d.mts +35 -0
  164. package/dist/mcpSchemaCost.d.mts.map +1 -0
  165. package/dist/mcpSchemaCost.mjs +190 -0
  166. package/dist/mcpSchemaCost.mjs.map +1 -0
  167. package/dist/mcpSession.cjs +9 -0
  168. package/dist/mcpSession.d.mts +2 -0
  169. package/dist/mcpSession.mjs +2 -0
  170. package/dist/mcpStatus.cjs +7 -0
  171. package/dist/mcpStatus.d.mts +2 -0
  172. package/dist/mcpStatus.mjs +2 -0
  173. package/dist/mcpToolResolver.cjs +5 -0
  174. package/dist/mcpToolResolver.d.mts +2 -0
  175. package/dist/mcpToolResolver.mjs +2 -0
  176. package/dist/mcpWidget.cjs +0 -0
  177. package/dist/mcpWidget.d.mts +2 -0
  178. package/dist/mcpWidget.mjs +1 -0
  179. package/dist/moduleResolution.cjs +412 -0
  180. package/dist/moduleResolution.cjs.map +1 -0
  181. package/dist/moduleResolution.d.mts +72 -0
  182. package/dist/moduleResolution.d.mts.map +1 -0
  183. package/dist/moduleResolution.mjs +396 -0
  184. package/dist/moduleResolution.mjs.map +1 -0
  185. package/dist/narration.cjs +10 -0
  186. package/dist/narration.d.mts +2 -0
  187. package/dist/narration.mjs +2 -0
  188. package/dist/native.cjs +29 -0
  189. package/dist/native.d.mts +12 -0
  190. package/dist/native.mjs +8 -0
  191. package/dist/notification.cjs +17 -0
  192. package/dist/notification.d.mts +2 -0
  193. package/dist/notification.mjs +2 -0
  194. package/dist/packageApi.cjs +17 -0
  195. package/dist/packageApi.d.mts +3 -0
  196. package/dist/packageApi.mjs +3 -0
  197. package/dist/packageApiServer.cjs +196 -0
  198. package/dist/packageApiServer.cjs.map +1 -0
  199. package/dist/packageApiServer.d.mts +62 -0
  200. package/dist/packageApiServer.d.mts.map +1 -0
  201. package/dist/packageApiServer.mjs +194 -0
  202. package/dist/packageApiServer.mjs.map +1 -0
  203. package/dist/piSettings.cjs +20 -0
  204. package/dist/piSettings.d.mts +2 -0
  205. package/dist/piSettings.mjs +2 -0
  206. package/dist/pluginProtocol.cjs +10 -0
  207. package/dist/pluginProtocol.d.mts +2 -0
  208. package/dist/pluginProtocol.mjs +2 -0
  209. package/dist/profileIdentity.cjs +6 -0
  210. package/dist/profileIdentity.d.mts +2 -0
  211. package/dist/profileIdentity.mjs +2 -0
  212. package/dist/protocol.cjs +10 -0
  213. package/dist/protocol.d.mts +2 -0
  214. package/dist/protocol.mjs +2 -0
  215. package/dist/readiness.cjs +8 -0
  216. package/dist/readiness.d.mts +2 -0
  217. package/dist/readiness.mjs +2 -0
  218. package/dist/remoteApi.cjs +45 -0
  219. package/dist/remoteApi.cjs.map +1 -0
  220. package/dist/remoteApi.d.mts +7 -0
  221. package/dist/remoteApi.d.mts.map +1 -0
  222. package/dist/remoteApi.mjs +44 -0
  223. package/dist/remoteApi.mjs.map +1 -0
  224. package/dist/remoteRuntime.cjs +498 -0
  225. package/dist/remoteRuntime.cjs.map +1 -0
  226. package/dist/remoteRuntime.d.mts +36 -0
  227. package/dist/remoteRuntime.d.mts.map +1 -0
  228. package/dist/remoteRuntime.mjs +494 -0
  229. package/dist/remoteRuntime.mjs.map +1 -0
  230. package/dist/runtimeConfig.cjs +232 -0
  231. package/dist/runtimeConfig.cjs.map +1 -0
  232. package/dist/runtimeConfig.d.mts +313 -0
  233. package/dist/runtimeConfig.d.mts.map +1 -0
  234. package/dist/runtimeConfig.mjs +221 -0
  235. package/dist/runtimeConfig.mjs.map +1 -0
  236. package/dist/runtimeContextApi.cjs +64 -0
  237. package/dist/runtimeContextApi.cjs.map +1 -0
  238. package/dist/runtimeContextApi.d.mts +16 -0
  239. package/dist/runtimeContextApi.d.mts.map +1 -0
  240. package/dist/runtimeContextApi.mjs +62 -0
  241. package/dist/runtimeContextApi.mjs.map +1 -0
  242. package/dist/runtimeCordisHost.cjs +223 -0
  243. package/dist/runtimeCordisHost.cjs.map +1 -0
  244. package/dist/runtimeCordisHost.d.mts +78 -0
  245. package/dist/runtimeCordisHost.d.mts.map +1 -0
  246. package/dist/runtimeCordisHost.mjs +212 -0
  247. package/dist/runtimeCordisHost.mjs.map +1 -0
  248. package/dist/runtimeHeadlessSessionManager.cjs +0 -0
  249. package/dist/runtimeHeadlessSessionManager.d.mts +18 -0
  250. package/dist/runtimeHeadlessSessionManager.d.mts.map +1 -0
  251. package/dist/runtimeHeadlessSessionManager.mjs +1 -0
  252. package/dist/runtimeIdentity.cjs +26 -0
  253. package/dist/runtimeIdentity.cjs.map +1 -0
  254. package/dist/runtimeIdentity.d.mts +7 -0
  255. package/dist/runtimeIdentity.d.mts.map +1 -0
  256. package/dist/runtimeIdentity.mjs +21 -0
  257. package/dist/runtimeIdentity.mjs.map +1 -0
  258. package/dist/runtimeJson.cjs +46 -0
  259. package/dist/runtimeJson.cjs.map +1 -0
  260. package/dist/runtimeJson.d.mts +22 -0
  261. package/dist/runtimeJson.d.mts.map +1 -0
  262. package/dist/runtimeJson.mjs +39 -0
  263. package/dist/runtimeJson.mjs.map +1 -0
  264. package/dist/runtimeLogSinkTelemetry.cjs +102 -0
  265. package/dist/runtimeLogSinkTelemetry.cjs.map +1 -0
  266. package/dist/runtimeLogSinkTelemetry.d.mts +49 -0
  267. package/dist/runtimeLogSinkTelemetry.d.mts.map +1 -0
  268. package/dist/runtimeLogSinkTelemetry.mjs +99 -0
  269. package/dist/runtimeLogSinkTelemetry.mjs.map +1 -0
  270. package/dist/runtimePackages.cjs +120 -0
  271. package/dist/runtimePackages.cjs.map +1 -0
  272. package/dist/runtimePackages.d.mts +57 -0
  273. package/dist/runtimePackages.d.mts.map +1 -0
  274. package/dist/runtimePackages.mjs +110 -0
  275. package/dist/runtimePackages.mjs.map +1 -0
  276. package/dist/runtimePiSettings.cjs +257 -0
  277. package/dist/runtimePiSettings.cjs.map +1 -0
  278. package/dist/runtimePiSettings.d.mts +70 -0
  279. package/dist/runtimePiSettings.d.mts.map +1 -0
  280. package/dist/runtimePiSettings.mjs +235 -0
  281. package/dist/runtimePiSettings.mjs.map +1 -0
  282. package/dist/runtimeProtocol.cjs +228 -0
  283. package/dist/runtimeProtocol.cjs.map +1 -0
  284. package/dist/runtimeProtocol.d.mts +86 -0
  285. package/dist/runtimeProtocol.d.mts.map +1 -0
  286. package/dist/runtimeProtocol.mjs +219 -0
  287. package/dist/runtimeProtocol.mjs.map +1 -0
  288. package/dist/runtimeToolNames.cjs +51 -0
  289. package/dist/runtimeToolNames.cjs.map +1 -0
  290. package/dist/runtimeToolNames.d.mts +24 -0
  291. package/dist/runtimeToolNames.d.mts.map +1 -0
  292. package/dist/runtimeToolNames.mjs +49 -0
  293. package/dist/runtimeToolNames.mjs.map +1 -0
  294. package/dist/runtimeTransition.cjs +27 -0
  295. package/dist/runtimeTransition.cjs.map +1 -0
  296. package/dist/runtimeTransition.d.mts +114 -0
  297. package/dist/runtimeTransition.d.mts.map +1 -0
  298. package/dist/runtimeTransition.mjs +24 -0
  299. package/dist/runtimeTransition.mjs.map +1 -0
  300. package/dist/sandboxHarness.cjs +6 -0
  301. package/dist/sandboxHarness.d.mts +2 -0
  302. package/dist/sandboxHarness.mjs +2 -0
  303. package/dist/server.cjs +17 -0
  304. package/dist/server.d.mts +10 -0
  305. package/dist/server.mjs +7 -0
  306. package/dist/serverFacet.cjs +34 -0
  307. package/dist/serverFacet.d.mts +10 -0
  308. package/dist/serverFacet.mjs +9 -0
  309. package/dist/serverTelemetry.cjs +25 -0
  310. package/dist/serverTelemetry.cjs.map +1 -0
  311. package/dist/serverTelemetry.d.mts +12 -0
  312. package/dist/serverTelemetry.d.mts.map +1 -0
  313. package/dist/serverTelemetry.mjs +23 -0
  314. package/dist/serverTelemetry.mjs.map +1 -0
  315. package/dist/sessionFilesApi.cjs +96 -0
  316. package/dist/sessionFilesApi.cjs.map +1 -0
  317. package/dist/sessionFilesApi.d.mts +7 -0
  318. package/dist/sessionFilesApi.d.mts.map +1 -0
  319. package/dist/sessionFilesApi.mjs +91 -0
  320. package/dist/sessionFilesApi.mjs.map +1 -0
  321. package/dist/sessionMcp.cjs +6 -0
  322. package/dist/sessionMcp.d.mts +5 -0
  323. package/dist/sessionMcp.mjs +3 -0
  324. package/dist/sessionProtocol.cjs +8 -0
  325. package/dist/sessionProtocol.d.mts +3 -0
  326. package/dist/sessionProtocol.mjs +2 -0
  327. package/dist/skills.cjs +9 -0
  328. package/dist/skills.d.mts +2 -0
  329. package/dist/skills.mjs +2 -0
  330. package/dist/sqliteSessionStorage.cjs +168 -0
  331. package/dist/sqliteSessionStorage.cjs.map +1 -0
  332. package/dist/sqliteSessionStorage.d.mts +35 -0
  333. package/dist/sqliteSessionStorage.d.mts.map +1 -0
  334. package/dist/sqliteSessionStorage.mjs +158 -0
  335. package/dist/sqliteSessionStorage.mjs.map +1 -0
  336. package/dist/src/constants/authorTools.cjs +10 -0
  337. package/dist/src/constants/authorTools.cjs.map +1 -0
  338. package/dist/src/constants/authorTools.d.mts +6 -0
  339. package/dist/src/constants/authorTools.d.mts.map +1 -0
  340. package/dist/src/constants/authorTools.mjs +8 -0
  341. package/dist/src/constants/authorTools.mjs.map +1 -0
  342. package/dist/src/constants/contextApi.cjs +31 -0
  343. package/dist/src/constants/contextApi.cjs.map +1 -0
  344. package/dist/src/constants/contextApi.d.mts +23 -0
  345. package/dist/src/constants/contextApi.d.mts.map +1 -0
  346. package/dist/src/constants/contextApi.mjs +25 -0
  347. package/dist/src/constants/contextApi.mjs.map +1 -0
  348. package/dist/src/constants/nativeHost.cjs +56 -0
  349. package/dist/src/constants/nativeHost.cjs.map +1 -0
  350. package/dist/src/constants/nativeHost.d.mts +21 -0
  351. package/dist/src/constants/nativeHost.d.mts.map +1 -0
  352. package/dist/src/constants/nativeHost.mjs +53 -0
  353. package/dist/src/constants/nativeHost.mjs.map +1 -0
  354. package/dist/src/constants/remote.cjs +132 -0
  355. package/dist/src/constants/remote.cjs.map +1 -0
  356. package/dist/src/constants/remote.mjs +99 -0
  357. package/dist/src/constants/remote.mjs.map +1 -0
  358. package/dist/src/constants/sessionFiles.cjs +27 -0
  359. package/dist/src/constants/sessionFiles.cjs.map +1 -0
  360. package/dist/src/constants/sessionFiles.mjs +25 -0
  361. package/dist/src/constants/sessionFiles.mjs.map +1 -0
  362. package/dist/src/constants/voiceReloadHandoff.cjs +12 -0
  363. package/dist/src/constants/voiceReloadHandoff.cjs.map +1 -0
  364. package/dist/src/constants/voiceReloadHandoff.d.mts +7 -0
  365. package/dist/src/constants/voiceReloadHandoff.d.mts.map +1 -0
  366. package/dist/src/constants/voiceReloadHandoff.mjs +9 -0
  367. package/dist/src/constants/voiceReloadHandoff.mjs.map +1 -0
  368. package/dist/src/constants/voiceTools.cjs +96 -0
  369. package/dist/src/constants/voiceTools.cjs.map +1 -0
  370. package/dist/src/constants/voiceTools.d.mts +58 -0
  371. package/dist/src/constants/voiceTools.d.mts.map +1 -0
  372. package/dist/src/constants/voiceTools.mjs +60 -0
  373. package/dist/src/constants/voiceTools.mjs.map +1 -0
  374. package/dist/src/extensions/extensionFile.cjs +140 -0
  375. package/dist/src/extensions/extensionFile.cjs.map +1 -0
  376. package/dist/src/extensions/extensionFile.d.mts +69 -0
  377. package/dist/src/extensions/extensionFile.d.mts.map +1 -0
  378. package/dist/src/extensions/extensionFile.mjs +124 -0
  379. package/dist/src/extensions/extensionFile.mjs.map +1 -0
  380. package/dist/src/extensions/serverPlugin.cjs +107 -0
  381. package/dist/src/extensions/serverPlugin.cjs.map +1 -0
  382. package/dist/src/extensions/serverPlugin.d.mts +5 -0
  383. package/dist/src/extensions/serverPlugin.d.mts.map +1 -0
  384. package/dist/src/extensions/serverPlugin.mjs +107 -0
  385. package/dist/src/extensions/serverPlugin.mjs.map +1 -0
  386. package/dist/src/extensions/webPlugin.cjs +136 -0
  387. package/dist/src/extensions/webPlugin.cjs.map +1 -0
  388. package/dist/src/extensions/webPlugin.d.mts +68 -0
  389. package/dist/src/extensions/webPlugin.d.mts.map +1 -0
  390. package/dist/src/extensions/webPlugin.mjs +114 -0
  391. package/dist/src/extensions/webPlugin.mjs.map +1 -0
  392. package/dist/src/pi/piSessionRuntime.cjs +625 -0
  393. package/dist/src/pi/piSessionRuntime.cjs.map +1 -0
  394. package/dist/src/pi/piSessionRuntime.d.mts +43 -0
  395. package/dist/src/pi/piSessionRuntime.d.mts.map +1 -0
  396. package/dist/src/pi/piSessionRuntime.mjs +624 -0
  397. package/dist/src/pi/piSessionRuntime.mjs.map +1 -0
  398. package/dist/src/pi/piWebSocketListener.cjs +115 -0
  399. package/dist/src/pi/piWebSocketListener.cjs.map +1 -0
  400. package/dist/src/pi/piWebSocketListener.mjs +115 -0
  401. package/dist/src/pi/piWebSocketListener.mjs.map +1 -0
  402. package/dist/src/schemas/agentModel.cjs +33 -0
  403. package/dist/src/schemas/agentModel.cjs.map +1 -0
  404. package/dist/src/schemas/agentModel.d.mts +26 -0
  405. package/dist/src/schemas/agentModel.d.mts.map +1 -0
  406. package/dist/src/schemas/agentModel.mjs +32 -0
  407. package/dist/src/schemas/agentModel.mjs.map +1 -0
  408. package/dist/src/schemas/apiContracts.d.mts +58 -0
  409. package/dist/src/schemas/apiContracts.d.mts.map +1 -0
  410. package/dist/src/schemas/askUser.cjs +42 -0
  411. package/dist/src/schemas/askUser.cjs.map +1 -0
  412. package/dist/src/schemas/askUser.d.mts +47 -0
  413. package/dist/src/schemas/askUser.d.mts.map +1 -0
  414. package/dist/src/schemas/askUser.mjs +37 -0
  415. package/dist/src/schemas/askUser.mjs.map +1 -0
  416. package/dist/src/schemas/backgroundWork.cjs +44 -0
  417. package/dist/src/schemas/backgroundWork.cjs.map +1 -0
  418. package/dist/src/schemas/backgroundWork.d.mts +76 -0
  419. package/dist/src/schemas/backgroundWork.d.mts.map +1 -0
  420. package/dist/src/schemas/backgroundWork.mjs +38 -0
  421. package/dist/src/schemas/backgroundWork.mjs.map +1 -0
  422. package/dist/src/schemas/childProcess.cjs +67 -0
  423. package/dist/src/schemas/childProcess.cjs.map +1 -0
  424. package/dist/src/schemas/childProcess.d.mts +30 -0
  425. package/dist/src/schemas/childProcess.d.mts.map +1 -0
  426. package/dist/src/schemas/childProcess.mjs +55 -0
  427. package/dist/src/schemas/childProcess.mjs.map +1 -0
  428. package/dist/src/schemas/cockpitContainer.cjs +31 -0
  429. package/dist/src/schemas/cockpitContainer.cjs.map +1 -0
  430. package/dist/src/schemas/cockpitContainer.d.mts +80 -0
  431. package/dist/src/schemas/cockpitContainer.d.mts.map +1 -0
  432. package/dist/src/schemas/cockpitContainer.mjs +30 -0
  433. package/dist/src/schemas/cockpitContainer.mjs.map +1 -0
  434. package/dist/src/schemas/contextContributions.cjs +17 -0
  435. package/dist/src/schemas/contextContributions.cjs.map +1 -0
  436. package/dist/src/schemas/contextContributions.d.mts +49 -0
  437. package/dist/src/schemas/contextContributions.d.mts.map +1 -0
  438. package/dist/src/schemas/contextContributions.mjs +15 -0
  439. package/dist/src/schemas/contextContributions.mjs.map +1 -0
  440. package/dist/src/schemas/delegation.cjs +91 -0
  441. package/dist/src/schemas/delegation.cjs.map +1 -0
  442. package/dist/src/schemas/delegation.d.mts +95 -0
  443. package/dist/src/schemas/delegation.d.mts.map +1 -0
  444. package/dist/src/schemas/delegation.mjs +76 -0
  445. package/dist/src/schemas/delegation.mjs.map +1 -0
  446. package/dist/src/schemas/extensionFile.d.mts +116 -0
  447. package/dist/src/schemas/extensionFile.d.mts.map +1 -0
  448. package/dist/src/schemas/footer.cjs +48 -0
  449. package/dist/src/schemas/footer.cjs.map +1 -0
  450. package/dist/src/schemas/footer.d.mts +48 -0
  451. package/dist/src/schemas/footer.d.mts.map +1 -0
  452. package/dist/src/schemas/footer.mjs +45 -0
  453. package/dist/src/schemas/footer.mjs.map +1 -0
  454. package/dist/src/schemas/headless.cjs +97 -0
  455. package/dist/src/schemas/headless.cjs.map +1 -0
  456. package/dist/src/schemas/headless.d.mts +472 -0
  457. package/dist/src/schemas/headless.d.mts.map +1 -0
  458. package/dist/src/schemas/headless.mjs +84 -0
  459. package/dist/src/schemas/headless.mjs.map +1 -0
  460. package/dist/src/schemas/help.cjs +281 -0
  461. package/dist/src/schemas/help.cjs.map +1 -0
  462. package/dist/src/schemas/help.d.mts +119 -0
  463. package/dist/src/schemas/help.d.mts.map +1 -0
  464. package/dist/src/schemas/help.mjs +262 -0
  465. package/dist/src/schemas/help.mjs.map +1 -0
  466. package/dist/src/schemas/hubChannel.cjs +20 -0
  467. package/dist/src/schemas/hubChannel.cjs.map +1 -0
  468. package/dist/src/schemas/hubChannel.d.mts +271 -0
  469. package/dist/src/schemas/hubChannel.d.mts.map +1 -0
  470. package/dist/src/schemas/hubChannel.mjs +19 -0
  471. package/dist/src/schemas/hubChannel.mjs.map +1 -0
  472. package/dist/src/schemas/leader.cjs +57 -0
  473. package/dist/src/schemas/leader.cjs.map +1 -0
  474. package/dist/src/schemas/leader.d.mts +107 -0
  475. package/dist/src/schemas/leader.d.mts.map +1 -0
  476. package/dist/src/schemas/leader.mjs +51 -0
  477. package/dist/src/schemas/leader.mjs.map +1 -0
  478. package/dist/src/schemas/mcpBundle.d.mts +13 -0
  479. package/dist/src/schemas/mcpBundle.d.mts.map +1 -0
  480. package/dist/src/schemas/mcpFacet.cjs +24 -0
  481. package/dist/src/schemas/mcpFacet.cjs.map +1 -0
  482. package/dist/src/schemas/mcpFacet.d.mts +91 -0
  483. package/dist/src/schemas/mcpFacet.d.mts.map +1 -0
  484. package/dist/src/schemas/mcpFacet.mjs +21 -0
  485. package/dist/src/schemas/mcpFacet.mjs.map +1 -0
  486. package/dist/src/schemas/mcpProjection.cjs +117 -0
  487. package/dist/src/schemas/mcpProjection.cjs.map +1 -0
  488. package/dist/src/schemas/mcpProjection.d.mts +124 -0
  489. package/dist/src/schemas/mcpProjection.d.mts.map +1 -0
  490. package/dist/src/schemas/mcpProjection.mjs +104 -0
  491. package/dist/src/schemas/mcpProjection.mjs.map +1 -0
  492. package/dist/src/schemas/mcpSession.cjs +57 -0
  493. package/dist/src/schemas/mcpSession.cjs.map +1 -0
  494. package/dist/src/schemas/mcpSession.d.mts +57 -0
  495. package/dist/src/schemas/mcpSession.d.mts.map +1 -0
  496. package/dist/src/schemas/mcpSession.mjs +51 -0
  497. package/dist/src/schemas/mcpSession.mjs.map +1 -0
  498. package/dist/src/schemas/mcpStatus.cjs +52 -0
  499. package/dist/src/schemas/mcpStatus.cjs.map +1 -0
  500. package/dist/src/schemas/mcpStatus.d.mts +73 -0
  501. package/dist/src/schemas/mcpStatus.d.mts.map +1 -0
  502. package/dist/src/schemas/mcpStatus.mjs +48 -0
  503. package/dist/src/schemas/mcpStatus.mjs.map +1 -0
  504. package/dist/src/schemas/mcpToolResolver.cjs +17 -0
  505. package/dist/src/schemas/mcpToolResolver.cjs.map +1 -0
  506. package/dist/src/schemas/mcpToolResolver.d.mts +24 -0
  507. package/dist/src/schemas/mcpToolResolver.d.mts.map +1 -0
  508. package/dist/src/schemas/mcpToolResolver.mjs +15 -0
  509. package/dist/src/schemas/mcpToolResolver.mjs.map +1 -0
  510. package/dist/src/schemas/narration.cjs +54 -0
  511. package/dist/src/schemas/narration.cjs.map +1 -0
  512. package/dist/src/schemas/narration.d.mts +29 -0
  513. package/dist/src/schemas/narration.d.mts.map +1 -0
  514. package/dist/src/schemas/narration.mjs +47 -0
  515. package/dist/src/schemas/narration.mjs.map +1 -0
  516. package/dist/src/schemas/notification.cjs +122 -0
  517. package/dist/src/schemas/notification.cjs.map +1 -0
  518. package/dist/src/schemas/notification.d.mts +48 -0
  519. package/dist/src/schemas/notification.d.mts.map +1 -0
  520. package/dist/src/schemas/notification.mjs +108 -0
  521. package/dist/src/schemas/notification.mjs.map +1 -0
  522. package/dist/src/schemas/packageApi.cjs +76 -0
  523. package/dist/src/schemas/packageApi.cjs.map +1 -0
  524. package/dist/src/schemas/packageApi.d.mts +302 -0
  525. package/dist/src/schemas/packageApi.d.mts.map +1 -0
  526. package/dist/src/schemas/packageApi.mjs +66 -0
  527. package/dist/src/schemas/packageApi.mjs.map +1 -0
  528. package/dist/src/schemas/pluginContributions.cjs +19 -0
  529. package/dist/src/schemas/pluginContributions.cjs.map +1 -0
  530. package/dist/src/schemas/pluginContributions.d.mts +56 -0
  531. package/dist/src/schemas/pluginContributions.d.mts.map +1 -0
  532. package/dist/src/schemas/pluginContributions.mjs +18 -0
  533. package/dist/src/schemas/pluginContributions.mjs.map +1 -0
  534. package/dist/src/schemas/pluginProtocol.cjs +103 -0
  535. package/dist/src/schemas/pluginProtocol.cjs.map +1 -0
  536. package/dist/src/schemas/pluginProtocol.d.mts +70 -0
  537. package/dist/src/schemas/pluginProtocol.d.mts.map +1 -0
  538. package/dist/src/schemas/pluginProtocol.mjs +96 -0
  539. package/dist/src/schemas/pluginProtocol.mjs.map +1 -0
  540. package/dist/src/schemas/profileIdentity.cjs +67 -0
  541. package/dist/src/schemas/profileIdentity.cjs.map +1 -0
  542. package/dist/src/schemas/profileIdentity.d.mts +50 -0
  543. package/dist/src/schemas/profileIdentity.d.mts.map +1 -0
  544. package/dist/src/schemas/profileIdentity.mjs +64 -0
  545. package/dist/src/schemas/profileIdentity.mjs.map +1 -0
  546. package/dist/src/schemas/readiness.cjs +251 -0
  547. package/dist/src/schemas/readiness.cjs.map +1 -0
  548. package/dist/src/schemas/readiness.d.mts +84 -0
  549. package/dist/src/schemas/readiness.d.mts.map +1 -0
  550. package/dist/src/schemas/readiness.mjs +246 -0
  551. package/dist/src/schemas/readiness.mjs.map +1 -0
  552. package/dist/src/schemas/sandboxHarness.cjs +29 -0
  553. package/dist/src/schemas/sandboxHarness.cjs.map +1 -0
  554. package/dist/src/schemas/sandboxHarness.d.mts +39 -0
  555. package/dist/src/schemas/sandboxHarness.d.mts.map +1 -0
  556. package/dist/src/schemas/sandboxHarness.mjs +26 -0
  557. package/dist/src/schemas/sandboxHarness.mjs.map +1 -0
  558. package/dist/src/schemas/serverBundle.d.mts +19 -0
  559. package/dist/src/schemas/serverBundle.d.mts.map +1 -0
  560. package/dist/src/schemas/serverFacet.cjs +111 -0
  561. package/dist/src/schemas/serverFacet.cjs.map +1 -0
  562. package/dist/src/schemas/serverFacet.d.mts +152 -0
  563. package/dist/src/schemas/serverFacet.d.mts.map +1 -0
  564. package/dist/src/schemas/serverFacet.mjs +101 -0
  565. package/dist/src/schemas/serverFacet.mjs.map +1 -0
  566. package/dist/src/schemas/sessionMcpActivity.d.mts +47 -0
  567. package/dist/src/schemas/sessionMcpActivity.d.mts.map +1 -0
  568. package/dist/src/schemas/sessionProtocol.cjs +17 -0
  569. package/dist/src/schemas/sessionProtocol.cjs.map +1 -0
  570. package/dist/src/schemas/sessionProtocol.d.mts +313 -0
  571. package/dist/src/schemas/sessionProtocol.d.mts.map +1 -0
  572. package/dist/src/schemas/sessionProtocol.mjs +12 -0
  573. package/dist/src/schemas/sessionProtocol.mjs.map +1 -0
  574. package/dist/src/schemas/sessionUpdates.d.mts +34 -0
  575. package/dist/src/schemas/sessionUpdates.d.mts.map +1 -0
  576. package/dist/src/schemas/skills.cjs +115 -0
  577. package/dist/src/schemas/skills.cjs.map +1 -0
  578. package/dist/src/schemas/skills.d.mts +65 -0
  579. package/dist/src/schemas/skills.d.mts.map +1 -0
  580. package/dist/src/schemas/skills.mjs +109 -0
  581. package/dist/src/schemas/skills.mjs.map +1 -0
  582. package/dist/src/schemas/toolOverrides.cjs +17 -0
  583. package/dist/src/schemas/toolOverrides.cjs.map +1 -0
  584. package/dist/src/schemas/toolOverrides.d.mts +29 -0
  585. package/dist/src/schemas/toolOverrides.d.mts.map +1 -0
  586. package/dist/src/schemas/toolOverrides.mjs +15 -0
  587. package/dist/src/schemas/toolOverrides.mjs.map +1 -0
  588. package/dist/src/schemas/toolSurface.cjs +17 -0
  589. package/dist/src/schemas/toolSurface.cjs.map +1 -0
  590. package/dist/src/schemas/toolSurface.d.mts +70 -0
  591. package/dist/src/schemas/toolSurface.d.mts.map +1 -0
  592. package/dist/src/schemas/toolSurface.mjs +15 -0
  593. package/dist/src/schemas/toolSurface.mjs.map +1 -0
  594. package/dist/src/schemas/uiHub.cjs +17 -0
  595. package/dist/src/schemas/uiHub.cjs.map +1 -0
  596. package/dist/src/schemas/uiHub.d.mts +23 -0
  597. package/dist/src/schemas/uiHub.d.mts.map +1 -0
  598. package/dist/src/schemas/uiHub.mjs +15 -0
  599. package/dist/src/schemas/uiHub.mjs.map +1 -0
  600. package/dist/src/schemas/voiceReloadHandoff.cjs +78 -0
  601. package/dist/src/schemas/voiceReloadHandoff.cjs.map +1 -0
  602. package/dist/src/schemas/voiceReloadHandoff.d.mts +31 -0
  603. package/dist/src/schemas/voiceReloadHandoff.d.mts.map +1 -0
  604. package/dist/src/schemas/voiceReloadHandoff.mjs +75 -0
  605. package/dist/src/schemas/voiceReloadHandoff.mjs.map +1 -0
  606. package/dist/src/schemas/voiceTools.cjs +205 -0
  607. package/dist/src/schemas/voiceTools.cjs.map +1 -0
  608. package/dist/src/schemas/voiceTools.d.mts +120 -0
  609. package/dist/src/schemas/voiceTools.d.mts.map +1 -0
  610. package/dist/src/schemas/voiceTools.mjs +194 -0
  611. package/dist/src/schemas/voiceTools.mjs.map +1 -0
  612. package/dist/src/server/devProxyForward.cjs +141 -0
  613. package/dist/src/server/devProxyForward.cjs.map +1 -0
  614. package/dist/src/server/devProxyForward.mjs +139 -0
  615. package/dist/src/server/devProxyForward.mjs.map +1 -0
  616. package/dist/src/server/devProxyRoutes.cjs +97 -0
  617. package/dist/src/server/devProxyRoutes.cjs.map +1 -0
  618. package/dist/src/server/devProxyRoutes.mjs +97 -0
  619. package/dist/src/server/devProxyRoutes.mjs.map +1 -0
  620. package/dist/src/server/devProxySocket.cjs +93 -0
  621. package/dist/src/server/devProxySocket.cjs.map +1 -0
  622. package/dist/src/server/devProxySocket.d.mts +25 -0
  623. package/dist/src/server/devProxySocket.d.mts.map +1 -0
  624. package/dist/src/server/devProxySocket.mjs +93 -0
  625. package/dist/src/server/devProxySocket.mjs.map +1 -0
  626. package/dist/src/server/directHarnessRuntime.cjs +2387 -0
  627. package/dist/src/server/directHarnessRuntime.cjs.map +1 -0
  628. package/dist/src/server/directHarnessRuntime.d.mts +4 -0
  629. package/dist/src/server/directHarnessRuntime.mjs +2384 -0
  630. package/dist/src/server/directHarnessRuntime.mjs.map +1 -0
  631. package/dist/src/server/harnessErrorMessage.cjs +13 -0
  632. package/dist/src/server/harnessErrorMessage.cjs.map +1 -0
  633. package/dist/src/server/harnessErrorMessage.mjs +13 -0
  634. package/dist/src/server/harnessErrorMessage.mjs.map +1 -0
  635. package/dist/src/server/headlessProtocol.cjs +382 -0
  636. package/dist/src/server/headlessProtocol.cjs.map +1 -0
  637. package/dist/src/server/headlessProtocol.mjs +382 -0
  638. package/dist/src/server/headlessProtocol.mjs.map +1 -0
  639. package/dist/src/server/liveImport.cjs +37 -0
  640. package/dist/src/server/liveImport.cjs.map +1 -0
  641. package/dist/src/server/liveImport.d.mts +27 -0
  642. package/dist/src/server/liveImport.d.mts.map +1 -0
  643. package/dist/src/server/liveImport.mjs +34 -0
  644. package/dist/src/server/liveImport.mjs.map +1 -0
  645. package/dist/src/server/mcpBundleLoader.cjs +108 -0
  646. package/dist/src/server/mcpBundleLoader.cjs.map +1 -0
  647. package/dist/src/server/mcpBundleLoader.d.mts +46 -0
  648. package/dist/src/server/mcpBundleLoader.d.mts.map +1 -0
  649. package/dist/src/server/mcpBundleLoader.mjs +107 -0
  650. package/dist/src/server/mcpBundleLoader.mjs.map +1 -0
  651. package/dist/src/server/nativeChildTranscriptReader.cjs +20 -0
  652. package/dist/src/server/nativeChildTranscriptReader.cjs.map +1 -0
  653. package/dist/src/server/nativeChildTranscriptReader.mjs +18 -0
  654. package/dist/src/server/nativeChildTranscriptReader.mjs.map +1 -0
  655. package/dist/src/server/remoteRoutes.cjs +463 -0
  656. package/dist/src/server/remoteRoutes.cjs.map +1 -0
  657. package/dist/src/server/remoteRoutes.mjs +463 -0
  658. package/dist/src/server/remoteRoutes.mjs.map +1 -0
  659. package/dist/src/server/serverFacetLoader.cjs +214 -0
  660. package/dist/src/server/serverFacetLoader.cjs.map +1 -0
  661. package/dist/src/server/serverFacetLoader.d.mts +72 -0
  662. package/dist/src/server/serverFacetLoader.d.mts.map +1 -0
  663. package/dist/src/server/serverFacetLoader.mjs +212 -0
  664. package/dist/src/server/serverFacetLoader.mjs.map +1 -0
  665. package/dist/src/server/sessionMcpHandler.cjs +585 -0
  666. package/dist/src/server/sessionMcpHandler.cjs.map +1 -0
  667. package/dist/src/server/sessionMcpHandler.d.mts +50 -0
  668. package/dist/src/server/sessionMcpHandler.d.mts.map +1 -0
  669. package/dist/src/server/sessionMcpHandler.mjs +582 -0
  670. package/dist/src/server/sessionMcpHandler.mjs.map +1 -0
  671. package/dist/src/server/sessionMcpRoutes.cjs +809 -0
  672. package/dist/src/server/sessionMcpRoutes.cjs.map +1 -0
  673. package/dist/src/server/sessionMcpRoutes.mjs +804 -0
  674. package/dist/src/server/sessionMcpRoutes.mjs.map +1 -0
  675. package/dist/src/server/threadJournals.cjs +172 -0
  676. package/dist/src/server/threadJournals.cjs.map +1 -0
  677. package/dist/src/server/threadJournals.mjs +169 -0
  678. package/dist/src/server/threadJournals.mjs.map +1 -0
  679. package/dist/src/services/acpSessionUpdates/index.cjs +129 -0
  680. package/dist/src/services/acpSessionUpdates/index.cjs.map +1 -0
  681. package/dist/src/services/acpSessionUpdates/index.mjs +129 -0
  682. package/dist/src/services/acpSessionUpdates/index.mjs.map +1 -0
  683. package/dist/src/services/apiSurfaceAssert/index.cjs +60 -0
  684. package/dist/src/services/apiSurfaceAssert/index.cjs.map +1 -0
  685. package/dist/src/services/apiSurfaceAssert/index.d.mts +24 -0
  686. package/dist/src/services/apiSurfaceAssert/index.d.mts.map +1 -0
  687. package/dist/src/services/apiSurfaceAssert/index.mjs +60 -0
  688. package/dist/src/services/apiSurfaceAssert/index.mjs.map +1 -0
  689. package/dist/src/services/bundlePublication/index.cjs +89 -0
  690. package/dist/src/services/bundlePublication/index.cjs.map +1 -0
  691. package/dist/src/services/bundlePublication/index.mjs +86 -0
  692. package/dist/src/services/bundlePublication/index.mjs.map +1 -0
  693. package/dist/src/services/contextApiUrls/index.cjs +53 -0
  694. package/dist/src/services/contextApiUrls/index.cjs.map +1 -0
  695. package/dist/src/services/contextApiUrls/index.d.mts +8 -0
  696. package/dist/src/services/contextApiUrls/index.d.mts.map +1 -0
  697. package/dist/src/services/contextApiUrls/index.mjs +52 -0
  698. package/dist/src/services/contextApiUrls/index.mjs.map +1 -0
  699. package/dist/src/services/contextContributions/index.cjs +79 -0
  700. package/dist/src/services/contextContributions/index.cjs.map +1 -0
  701. package/dist/src/services/contextContributions/index.d.mts +6 -0
  702. package/dist/src/services/contextContributions/index.d.mts.map +1 -0
  703. package/dist/src/services/contextContributions/index.mjs +79 -0
  704. package/dist/src/services/contextContributions/index.mjs.map +1 -0
  705. package/dist/src/services/contextUsage/index.cjs +27 -0
  706. package/dist/src/services/contextUsage/index.cjs.map +1 -0
  707. package/dist/src/services/contextUsage/index.mjs +25 -0
  708. package/dist/src/services/contextUsage/index.mjs.map +1 -0
  709. package/dist/src/services/devProxyPolicy/index.cjs +168 -0
  710. package/dist/src/services/devProxyPolicy/index.cjs.map +1 -0
  711. package/dist/src/services/devProxyPolicy/index.mjs +165 -0
  712. package/dist/src/services/devProxyPolicy/index.mjs.map +1 -0
  713. package/dist/src/services/devProxyStore/index.cjs +107 -0
  714. package/dist/src/services/devProxyStore/index.cjs.map +1 -0
  715. package/dist/src/services/devProxyStore/index.mjs +104 -0
  716. package/dist/src/services/devProxyStore/index.mjs.map +1 -0
  717. package/dist/src/services/deviceAuth/index.cjs +146 -0
  718. package/dist/src/services/deviceAuth/index.cjs.map +1 -0
  719. package/dist/src/services/deviceAuth/index.d.mts +9 -0
  720. package/dist/src/services/deviceAuth/index.d.mts.map +1 -0
  721. package/dist/src/services/deviceAuth/index.mjs +146 -0
  722. package/dist/src/services/deviceAuth/index.mjs.map +1 -0
  723. package/dist/src/services/deviceSessions/index.cjs +147 -0
  724. package/dist/src/services/deviceSessions/index.cjs.map +1 -0
  725. package/dist/src/services/deviceSessions/index.d.mts +18 -0
  726. package/dist/src/services/deviceSessions/index.d.mts.map +1 -0
  727. package/dist/src/services/deviceSessions/index.mjs +141 -0
  728. package/dist/src/services/deviceSessions/index.mjs.map +1 -0
  729. package/dist/src/services/deviceTrust/index.cjs +294 -0
  730. package/dist/src/services/deviceTrust/index.cjs.map +1 -0
  731. package/dist/src/services/deviceTrust/index.mjs +282 -0
  732. package/dist/src/services/deviceTrust/index.mjs.map +1 -0
  733. package/dist/src/services/durableNavigation/index.cjs +46 -0
  734. package/dist/src/services/durableNavigation/index.cjs.map +1 -0
  735. package/dist/src/services/durableNavigation/index.mjs +45 -0
  736. package/dist/src/services/durableNavigation/index.mjs.map +1 -0
  737. package/dist/src/services/headlessClient/index.cjs +126 -0
  738. package/dist/src/services/headlessClient/index.cjs.map +1 -0
  739. package/dist/src/services/headlessClient/index.mjs +126 -0
  740. package/dist/src/services/headlessClient/index.mjs.map +1 -0
  741. package/dist/src/services/historyImport/index.cjs +8 -0
  742. package/dist/src/services/historyImport/index.cjs.map +1 -0
  743. package/dist/src/services/historyImport/index.d.mts +68 -0
  744. package/dist/src/services/historyImport/index.d.mts.map +1 -0
  745. package/dist/src/services/historyImport/index.mjs +8 -0
  746. package/dist/src/services/historyImport/index.mjs.map +1 -0
  747. package/dist/src/services/hubChannelHarness/index.cjs +50 -0
  748. package/dist/src/services/hubChannelHarness/index.cjs.map +1 -0
  749. package/dist/src/services/hubChannelHarness/index.d.mts +17 -0
  750. package/dist/src/services/hubChannelHarness/index.d.mts.map +1 -0
  751. package/dist/src/services/hubChannelHarness/index.mjs +50 -0
  752. package/dist/src/services/hubChannelHarness/index.mjs.map +1 -0
  753. package/dist/src/services/kernel/index.cjs +147 -0
  754. package/dist/src/services/kernel/index.cjs.map +1 -0
  755. package/dist/src/services/kernel/index.d.mts +9 -0
  756. package/dist/src/services/kernel/index.d.mts.map +1 -0
  757. package/dist/src/services/kernel/index.mjs +147 -0
  758. package/dist/src/services/kernel/index.mjs.map +1 -0
  759. package/dist/src/services/loginFlow/index.cjs +131 -0
  760. package/dist/src/services/loginFlow/index.cjs.map +1 -0
  761. package/dist/src/services/loginFlow/index.mjs +131 -0
  762. package/dist/src/services/loginFlow/index.mjs.map +1 -0
  763. package/dist/src/services/loopbackAddress/index.cjs +58 -0
  764. package/dist/src/services/loopbackAddress/index.cjs.map +1 -0
  765. package/dist/src/services/loopbackAddress/index.mjs +56 -0
  766. package/dist/src/services/loopbackAddress/index.mjs.map +1 -0
  767. package/dist/src/services/openSessionRegistry/index.cjs +134 -0
  768. package/dist/src/services/openSessionRegistry/index.cjs.map +1 -0
  769. package/dist/src/services/openSessionRegistry/index.d.mts +36 -0
  770. package/dist/src/services/openSessionRegistry/index.d.mts.map +1 -0
  771. package/dist/src/services/openSessionRegistry/index.mjs +131 -0
  772. package/dist/src/services/openSessionRegistry/index.mjs.map +1 -0
  773. package/dist/src/services/packageApiHarness/index.cjs +36 -0
  774. package/dist/src/services/packageApiHarness/index.cjs.map +1 -0
  775. package/dist/src/services/packageApiHarness/index.d.mts +40 -0
  776. package/dist/src/services/packageApiHarness/index.d.mts.map +1 -0
  777. package/dist/src/services/packageApiHarness/index.mjs +36 -0
  778. package/dist/src/services/packageApiHarness/index.mjs.map +1 -0
  779. package/dist/src/services/packageResource/index.cjs +54 -0
  780. package/dist/src/services/packageResource/index.cjs.map +1 -0
  781. package/dist/src/services/packageResource/index.d.mts +26 -0
  782. package/dist/src/services/packageResource/index.d.mts.map +1 -0
  783. package/dist/src/services/packageResource/index.mjs +51 -0
  784. package/dist/src/services/packageResource/index.mjs.map +1 -0
  785. package/dist/src/services/pairingFlow/index.cjs +145 -0
  786. package/dist/src/services/pairingFlow/index.cjs.map +1 -0
  787. package/dist/src/services/pairingFlow/index.d.mts +44 -0
  788. package/dist/src/services/pairingFlow/index.d.mts.map +1 -0
  789. package/dist/src/services/pairingFlow/index.mjs +145 -0
  790. package/dist/src/services/pairingFlow/index.mjs.map +1 -0
  791. package/dist/src/services/pairingPage/index.cjs +450 -0
  792. package/dist/src/services/pairingPage/index.cjs.map +1 -0
  793. package/dist/src/services/pairingPage/index.mjs +447 -0
  794. package/dist/src/services/pairingPage/index.mjs.map +1 -0
  795. package/dist/src/services/piExtensionHost/index.cjs +889 -0
  796. package/dist/src/services/piExtensionHost/index.cjs.map +1 -0
  797. package/dist/src/services/piExtensionHost/index.mjs +885 -0
  798. package/dist/src/services/piExtensionHost/index.mjs.map +1 -0
  799. package/dist/src/services/piHelpTools/index.cjs +68 -0
  800. package/dist/src/services/piHelpTools/index.cjs.map +1 -0
  801. package/dist/src/services/piHelpTools/index.d.mts +10 -0
  802. package/dist/src/services/piHelpTools/index.d.mts.map +1 -0
  803. package/dist/src/services/piHelpTools/index.mjs +68 -0
  804. package/dist/src/services/piHelpTools/index.mjs.map +1 -0
  805. package/dist/src/services/piSessionEntries/index.cjs +121 -0
  806. package/dist/src/services/piSessionEntries/index.cjs.map +1 -0
  807. package/dist/src/services/piSessionEntries/index.mjs +117 -0
  808. package/dist/src/services/piSessionEntries/index.mjs.map +1 -0
  809. package/dist/src/services/pluginLifecycle/index.cjs +71 -0
  810. package/dist/src/services/pluginLifecycle/index.cjs.map +1 -0
  811. package/dist/src/services/pluginLifecycle/index.d.mts +8 -0
  812. package/dist/src/services/pluginLifecycle/index.d.mts.map +1 -0
  813. package/dist/src/services/pluginLifecycle/index.mjs +71 -0
  814. package/dist/src/services/pluginLifecycle/index.mjs.map +1 -0
  815. package/dist/src/services/providerAuth/index.cjs +156 -0
  816. package/dist/src/services/providerAuth/index.cjs.map +1 -0
  817. package/dist/src/services/providerAuth/index.mjs +154 -0
  818. package/dist/src/services/providerAuth/index.mjs.map +1 -0
  819. package/dist/src/services/publicFileShares/index.cjs +192 -0
  820. package/dist/src/services/publicFileShares/index.cjs.map +1 -0
  821. package/dist/src/services/publicFileShares/index.d.mts +16 -0
  822. package/dist/src/services/publicFileShares/index.d.mts.map +1 -0
  823. package/dist/src/services/publicFileShares/index.mjs +188 -0
  824. package/dist/src/services/publicFileShares/index.mjs.map +1 -0
  825. package/dist/src/services/remoteAccess/index.cjs +567 -0
  826. package/dist/src/services/remoteAccess/index.cjs.map +1 -0
  827. package/dist/src/services/remoteAccess/index.d.mts +121 -0
  828. package/dist/src/services/remoteAccess/index.d.mts.map +1 -0
  829. package/dist/src/services/remoteAccess/index.mjs +567 -0
  830. package/dist/src/services/remoteAccess/index.mjs.map +1 -0
  831. package/dist/src/services/remoteAccessSettings/index.cjs +151 -0
  832. package/dist/src/services/remoteAccessSettings/index.cjs.map +1 -0
  833. package/dist/src/services/remoteAccessSettings/index.mjs +149 -0
  834. package/dist/src/services/remoteAccessSettings/index.mjs.map +1 -0
  835. package/dist/src/services/remoteAccessStore/index.cjs +197 -0
  836. package/dist/src/services/remoteAccessStore/index.cjs.map +1 -0
  837. package/dist/src/services/remoteAccessStore/index.mjs +192 -0
  838. package/dist/src/services/remoteAccessStore/index.mjs.map +1 -0
  839. package/dist/src/services/remoteGuardPolicy/index.cjs +200 -0
  840. package/dist/src/services/remoteGuardPolicy/index.cjs.map +1 -0
  841. package/dist/src/services/remoteGuardPolicy/index.d.mts +7 -0
  842. package/dist/src/services/remoteGuardPolicy/index.d.mts.map +1 -0
  843. package/dist/src/services/remoteGuardPolicy/index.mjs +196 -0
  844. package/dist/src/services/remoteGuardPolicy/index.mjs.map +1 -0
  845. package/dist/src/services/requestReceipts/index.cjs +167 -0
  846. package/dist/src/services/requestReceipts/index.cjs.map +1 -0
  847. package/dist/src/services/requestReceipts/index.d.mts +11 -0
  848. package/dist/src/services/requestReceipts/index.d.mts.map +1 -0
  849. package/dist/src/services/requestReceipts/index.mjs +167 -0
  850. package/dist/src/services/requestReceipts/index.mjs.map +1 -0
  851. package/dist/src/services/rpcTranscript/index.cjs +633 -0
  852. package/dist/src/services/rpcTranscript/index.cjs.map +1 -0
  853. package/dist/src/services/rpcTranscript/index.d.mts +50 -0
  854. package/dist/src/services/rpcTranscript/index.d.mts.map +1 -0
  855. package/dist/src/services/rpcTranscript/index.mjs +632 -0
  856. package/dist/src/services/rpcTranscript/index.mjs.map +1 -0
  857. package/dist/src/services/serverFacet/index.cjs +197 -0
  858. package/dist/src/services/serverFacet/index.cjs.map +1 -0
  859. package/dist/src/services/serverFacet/index.d.mts +31 -0
  860. package/dist/src/services/serverFacet/index.d.mts.map +1 -0
  861. package/dist/src/services/serverFacet/index.mjs +197 -0
  862. package/dist/src/services/serverFacet/index.mjs.map +1 -0
  863. package/dist/src/services/sessionAttachments/index.cjs +111 -0
  864. package/dist/src/services/sessionAttachments/index.cjs.map +1 -0
  865. package/dist/src/services/sessionAttachments/index.d.mts +11 -0
  866. package/dist/src/services/sessionAttachments/index.d.mts.map +1 -0
  867. package/dist/src/services/sessionAttachments/index.mjs +107 -0
  868. package/dist/src/services/sessionAttachments/index.mjs.map +1 -0
  869. package/dist/src/services/sessionGitStatus/index.cjs +46 -0
  870. package/dist/src/services/sessionGitStatus/index.cjs.map +1 -0
  871. package/dist/src/services/sessionGitStatus/index.mjs +46 -0
  872. package/dist/src/services/sessionGitStatus/index.mjs.map +1 -0
  873. package/dist/src/services/sessionGitStatus/type.d.mts +8 -0
  874. package/dist/src/services/sessionGitStatus/type.d.mts.map +1 -0
  875. package/dist/src/services/sessionMcpActivity/index.cjs +115 -0
  876. package/dist/src/services/sessionMcpActivity/index.cjs.map +1 -0
  877. package/dist/src/services/sessionMcpActivity/index.mjs +111 -0
  878. package/dist/src/services/sessionMcpActivity/index.mjs.map +1 -0
  879. package/dist/src/services/sessionMcpAuthorization/index.cjs +473 -0
  880. package/dist/src/services/sessionMcpAuthorization/index.cjs.map +1 -0
  881. package/dist/src/services/sessionMcpAuthorization/index.d.mts +125 -0
  882. package/dist/src/services/sessionMcpAuthorization/index.d.mts.map +1 -0
  883. package/dist/src/services/sessionMcpAuthorization/index.mjs +469 -0
  884. package/dist/src/services/sessionMcpAuthorization/index.mjs.map +1 -0
  885. package/dist/src/services/sessionMcpConversations/index.cjs +217 -0
  886. package/dist/src/services/sessionMcpConversations/index.cjs.map +1 -0
  887. package/dist/src/services/sessionMcpConversations/index.mjs +212 -0
  888. package/dist/src/services/sessionMcpConversations/index.mjs.map +1 -0
  889. package/dist/src/services/sessionMcpRegistrationStore/index.cjs +86 -0
  890. package/dist/src/services/sessionMcpRegistrationStore/index.cjs.map +1 -0
  891. package/dist/src/services/sessionMcpRegistrationStore/index.mjs +83 -0
  892. package/dist/src/services/sessionMcpRegistrationStore/index.mjs.map +1 -0
  893. package/dist/src/services/sessionPresentation/index.cjs +120 -0
  894. package/dist/src/services/sessionPresentation/index.cjs.map +1 -0
  895. package/dist/src/services/sessionPresentation/index.mjs +120 -0
  896. package/dist/src/services/sessionPresentation/index.mjs.map +1 -0
  897. package/dist/src/services/sqliteSessionHistory/index.cjs +97 -0
  898. package/dist/src/services/sqliteSessionHistory/index.cjs.map +1 -0
  899. package/dist/src/services/sqliteSessionHistory/index.d.mts +28 -0
  900. package/dist/src/services/sqliteSessionHistory/index.d.mts.map +1 -0
  901. package/dist/src/services/sqliteSessionHistory/index.mjs +92 -0
  902. package/dist/src/services/sqliteSessionHistory/index.mjs.map +1 -0
  903. package/dist/src/services/sqliteTranscriptReader/index.cjs +67 -0
  904. package/dist/src/services/sqliteTranscriptReader/index.cjs.map +1 -0
  905. package/dist/src/services/sqliteTranscriptReader/index.d.mts +14 -0
  906. package/dist/src/services/sqliteTranscriptReader/index.d.mts.map +1 -0
  907. package/dist/src/services/sqliteTranscriptReader/index.mjs +65 -0
  908. package/dist/src/services/sqliteTranscriptReader/index.mjs.map +1 -0
  909. package/dist/src/services/toolCost/index.cjs +47 -0
  910. package/dist/src/services/toolCost/index.cjs.map +1 -0
  911. package/dist/src/services/toolCost/index.d.mts +38 -0
  912. package/dist/src/services/toolCost/index.d.mts.map +1 -0
  913. package/dist/src/services/toolCost/index.mjs +46 -0
  914. package/dist/src/services/toolCost/index.mjs.map +1 -0
  915. package/dist/src/services/toolOverrides/index.cjs +45 -0
  916. package/dist/src/services/toolOverrides/index.cjs.map +1 -0
  917. package/dist/src/services/toolOverrides/index.d.mts +6 -0
  918. package/dist/src/services/toolOverrides/index.d.mts.map +1 -0
  919. package/dist/src/services/toolOverrides/index.mjs +45 -0
  920. package/dist/src/services/toolOverrides/index.mjs.map +1 -0
  921. package/dist/src/services/toolPrompt/index.cjs +13 -0
  922. package/dist/src/services/toolPrompt/index.cjs.map +1 -0
  923. package/dist/src/services/toolPrompt/index.mjs +13 -0
  924. package/dist/src/services/toolPrompt/index.mjs.map +1 -0
  925. package/dist/src/services/toolSurface/index.cjs +134 -0
  926. package/dist/src/services/toolSurface/index.cjs.map +1 -0
  927. package/dist/src/services/toolSurface/index.d.mts +19 -0
  928. package/dist/src/services/toolSurface/index.d.mts.map +1 -0
  929. package/dist/src/services/toolSurface/index.mjs +134 -0
  930. package/dist/src/services/toolSurface/index.mjs.map +1 -0
  931. package/dist/src/services/traceContext/index.cjs +13 -0
  932. package/dist/src/services/traceContext/index.cjs.map +1 -0
  933. package/dist/src/services/traceContext/index.mjs +13 -0
  934. package/dist/src/services/traceContext/index.mjs.map +1 -0
  935. package/dist/src/services/transcriptPages/index.cjs +117 -0
  936. package/dist/src/services/transcriptPages/index.cjs.map +1 -0
  937. package/dist/src/services/transcriptPages/index.mjs +115 -0
  938. package/dist/src/services/transcriptPages/index.mjs.map +1 -0
  939. package/dist/src/services/tunnelOutput/index.cjs +58 -0
  940. package/dist/src/services/tunnelOutput/index.cjs.map +1 -0
  941. package/dist/src/services/tunnelOutput/index.mjs +54 -0
  942. package/dist/src/services/tunnelOutput/index.mjs.map +1 -0
  943. package/dist/src/services/tunnelProcess/index.cjs +487 -0
  944. package/dist/src/services/tunnelProcess/index.cjs.map +1 -0
  945. package/dist/src/services/tunnelProcess/index.mjs +481 -0
  946. package/dist/src/services/tunnelProcess/index.mjs.map +1 -0
  947. package/dist/src/services/voiceReloadHandoff/index.cjs +136 -0
  948. package/dist/src/services/voiceReloadHandoff/index.cjs.map +1 -0
  949. package/dist/src/services/voiceReloadHandoff/index.d.mts +34 -0
  950. package/dist/src/services/voiceReloadHandoff/index.d.mts.map +1 -0
  951. package/dist/src/services/voiceReloadHandoff/index.mjs +135 -0
  952. package/dist/src/services/voiceReloadHandoff/index.mjs.map +1 -0
  953. package/dist/src/services/voiceToolsContract/index.cjs +26 -0
  954. package/dist/src/services/voiceToolsContract/index.cjs.map +1 -0
  955. package/dist/src/services/voiceToolsContract/index.d.mts +76 -0
  956. package/dist/src/services/voiceToolsContract/index.d.mts.map +1 -0
  957. package/dist/src/services/voiceToolsContract/index.mjs +24 -0
  958. package/dist/src/services/voiceToolsContract/index.mjs.map +1 -0
  959. package/dist/src/services/webauthn/index.cjs +262 -0
  960. package/dist/src/services/webauthn/index.cjs.map +1 -0
  961. package/dist/src/services/webauthn/index.d.mts +39 -0
  962. package/dist/src/services/webauthn/index.d.mts.map +1 -0
  963. package/dist/src/services/webauthn/index.mjs +262 -0
  964. package/dist/src/services/webauthn/index.mjs.map +1 -0
  965. package/dist/src/services/webauthnPolicy/index.cjs +174 -0
  966. package/dist/src/services/webauthnPolicy/index.cjs.map +1 -0
  967. package/dist/src/services/webauthnPolicy/index.d.mts +41 -0
  968. package/dist/src/services/webauthnPolicy/index.d.mts.map +1 -0
  969. package/dist/src/services/webauthnPolicy/index.mjs +167 -0
  970. package/dist/src/services/webauthnPolicy/index.mjs.map +1 -0
  971. package/dist/src/services/workspaceRegistry/index.cjs +187 -0
  972. package/dist/src/services/workspaceRegistry/index.cjs.map +1 -0
  973. package/dist/src/services/workspaceRegistry/index.d.mts +47 -0
  974. package/dist/src/services/workspaceRegistry/index.d.mts.map +1 -0
  975. package/dist/src/services/workspaceRegistry/index.mjs +179 -0
  976. package/dist/src/services/workspaceRegistry/index.mjs.map +1 -0
  977. package/dist/src/systems/child/adapters/headlessChildSessionService.cjs +466 -0
  978. package/dist/src/systems/child/adapters/headlessChildSessionService.cjs.map +1 -0
  979. package/dist/src/systems/child/adapters/headlessChildSessionService.d.mts +36 -0
  980. package/dist/src/systems/child/adapters/headlessChildSessionService.d.mts.map +1 -0
  981. package/dist/src/systems/child/adapters/headlessChildSessionService.mjs +457 -0
  982. package/dist/src/systems/child/adapters/headlessChildSessionService.mjs.map +1 -0
  983. package/dist/src/systems/child/adapters/nativeChildRuntimes.cjs +28 -0
  984. package/dist/src/systems/child/adapters/nativeChildRuntimes.cjs.map +1 -0
  985. package/dist/src/systems/child/adapters/nativeChildRuntimes.mjs +25 -0
  986. package/dist/src/systems/child/adapters/nativeChildRuntimes.mjs.map +1 -0
  987. package/dist/src/systems/child/services/childSession/index.cjs +219 -0
  988. package/dist/src/systems/child/services/childSession/index.cjs.map +1 -0
  989. package/dist/src/systems/child/services/childSession/index.d.mts +14 -0
  990. package/dist/src/systems/child/services/childSession/index.d.mts.map +1 -0
  991. package/dist/src/systems/child/services/childSession/index.mjs +219 -0
  992. package/dist/src/systems/child/services/childSession/index.mjs.map +1 -0
  993. package/dist/src/systems/child/types/childSession.cjs +21 -0
  994. package/dist/src/systems/child/types/childSession.cjs.map +1 -0
  995. package/dist/src/systems/child/types/childSession.d.mts +182 -0
  996. package/dist/src/systems/child/types/childSession.d.mts.map +1 -0
  997. package/dist/src/systems/child/types/childSession.mjs +17 -0
  998. package/dist/src/systems/child/types/childSession.mjs.map +1 -0
  999. package/dist/src/systems/main/adapters/headlessHost.cjs +597 -0
  1000. package/dist/src/systems/main/adapters/headlessHost.cjs.map +1 -0
  1001. package/dist/src/systems/main/adapters/headlessHost.d.mts +116 -0
  1002. package/dist/src/systems/main/adapters/headlessHost.d.mts.map +1 -0
  1003. package/dist/src/systems/main/adapters/headlessHost.mjs +595 -0
  1004. package/dist/src/systems/main/adapters/headlessHost.mjs.map +1 -0
  1005. package/dist/src/systems/main/adapters/headlessSessionHost.cjs +1668 -0
  1006. package/dist/src/systems/main/adapters/headlessSessionHost.cjs.map +1 -0
  1007. package/dist/src/systems/main/adapters/headlessSessionHost.d.mts +20 -0
  1008. package/dist/src/systems/main/adapters/headlessSessionHost.d.mts.map +1 -0
  1009. package/dist/src/systems/main/adapters/headlessSessionHost.mjs +1663 -0
  1010. package/dist/src/systems/main/adapters/headlessSessionHost.mjs.map +1 -0
  1011. package/dist/src/systems/main/types/headlessHost.d.mts +37 -0
  1012. package/dist/src/systems/main/types/headlessHost.d.mts.map +1 -0
  1013. package/dist/src/testing/pi/extensionScenarios.cjs +73 -0
  1014. package/dist/src/testing/pi/extensionScenarios.cjs.map +1 -0
  1015. package/dist/src/testing/pi/extensionScenarios.d.mts +41 -0
  1016. package/dist/src/testing/pi/extensionScenarios.d.mts.map +1 -0
  1017. package/dist/src/testing/pi/extensionScenarios.mjs +73 -0
  1018. package/dist/src/testing/pi/extensionScenarios.mjs.map +1 -0
  1019. package/dist/src/testing/pi/testHost.cjs +399 -0
  1020. package/dist/src/testing/pi/testHost.cjs.map +1 -0
  1021. package/dist/src/testing/pi/testHost.d.mts +160 -0
  1022. package/dist/src/testing/pi/testHost.d.mts.map +1 -0
  1023. package/dist/src/testing/pi/testHost.mjs +399 -0
  1024. package/dist/src/testing/pi/testHost.mjs.map +1 -0
  1025. package/dist/src/types/config.d.mts +20 -0
  1026. package/dist/src/types/config.d.mts.map +1 -0
  1027. package/dist/src/types/kernel.d.mts +69 -0
  1028. package/dist/src/types/kernel.d.mts.map +1 -0
  1029. package/dist/src/types/remote.d.mts +152 -0
  1030. package/dist/src/types/remote.d.mts.map +1 -0
  1031. package/dist/src/types/server/directHarnessRuntime.d.mts +526 -0
  1032. package/dist/src/types/server/directHarnessRuntime.d.mts.map +1 -0
  1033. package/dist/src/types/server/session.d.mts +5 -0
  1034. package/dist/src/types/server/session.d.mts.map +1 -0
  1035. package/dist/src/types/server/sessionToolSurface.d.mts +44 -0
  1036. package/dist/src/types/server/sessionToolSurface.d.mts.map +1 -0
  1037. package/dist/src/web/models/globalStore.cjs +23 -0
  1038. package/dist/src/web/models/globalStore.cjs.map +1 -0
  1039. package/dist/src/web/models/globalStore.d.mts +6 -0
  1040. package/dist/src/web/models/globalStore.d.mts.map +1 -0
  1041. package/dist/src/web/models/globalStore.mjs +23 -0
  1042. package/dist/src/web/models/globalStore.mjs.map +1 -0
  1043. package/dist/src/web/models/sessionStore.cjs +56 -0
  1044. package/dist/src/web/models/sessionStore.cjs.map +1 -0
  1045. package/dist/src/web/models/sessionStore.d.mts +14 -0
  1046. package/dist/src/web/models/sessionStore.d.mts.map +1 -0
  1047. package/dist/src/web/models/sessionStore.mjs +56 -0
  1048. package/dist/src/web/models/sessionStore.mjs.map +1 -0
  1049. package/dist/src/web/models/workspaceStore.cjs +50 -0
  1050. package/dist/src/web/models/workspaceStore.cjs.map +1 -0
  1051. package/dist/src/web/models/workspaceStore.d.mts +18 -0
  1052. package/dist/src/web/models/workspaceStore.d.mts.map +1 -0
  1053. package/dist/src/web/models/workspaceStore.mjs +50 -0
  1054. package/dist/src/web/models/workspaceStore.mjs.map +1 -0
  1055. package/dist/src/web/schemas/bundleAssetPolicy.cjs +20 -0
  1056. package/dist/src/web/schemas/bundleAssetPolicy.cjs.map +1 -0
  1057. package/dist/src/web/schemas/bundleAssetPolicy.d.mts +10 -0
  1058. package/dist/src/web/schemas/bundleAssetPolicy.d.mts.map +1 -0
  1059. package/dist/src/web/schemas/bundleAssetPolicy.mjs +18 -0
  1060. package/dist/src/web/schemas/bundleAssetPolicy.mjs.map +1 -0
  1061. package/dist/src/web/schemas/template.cjs +35 -0
  1062. package/dist/src/web/schemas/template.cjs.map +1 -0
  1063. package/dist/src/web/schemas/template.d.mts +9 -0
  1064. package/dist/src/web/schemas/template.d.mts.map +1 -0
  1065. package/dist/src/web/schemas/template.mjs +34 -0
  1066. package/dist/src/web/schemas/template.mjs.map +1 -0
  1067. package/dist/src/web/services/apiClient/index.cjs +156 -0
  1068. package/dist/src/web/services/apiClient/index.cjs.map +1 -0
  1069. package/dist/src/web/services/apiClient/index.d.mts +152 -0
  1070. package/dist/src/web/services/apiClient/index.d.mts.map +1 -0
  1071. package/dist/src/web/services/apiClient/index.mjs +154 -0
  1072. package/dist/src/web/services/apiClient/index.mjs.map +1 -0
  1073. package/dist/src/web/services/apiPaths/index.cjs +83 -0
  1074. package/dist/src/web/services/apiPaths/index.cjs.map +1 -0
  1075. package/dist/src/web/services/apiPaths/index.d.mts +81 -0
  1076. package/dist/src/web/services/apiPaths/index.d.mts.map +1 -0
  1077. package/dist/src/web/services/apiPaths/index.mjs +78 -0
  1078. package/dist/src/web/services/apiPaths/index.mjs.map +1 -0
  1079. package/dist/src/web/services/apiRoutes/index.cjs +47 -0
  1080. package/dist/src/web/services/apiRoutes/index.cjs.map +1 -0
  1081. package/dist/src/web/services/apiRoutes/index.d.mts +21 -0
  1082. package/dist/src/web/services/apiRoutes/index.d.mts.map +1 -0
  1083. package/dist/src/web/services/apiRoutes/index.mjs +43 -0
  1084. package/dist/src/web/services/apiRoutes/index.mjs.map +1 -0
  1085. package/dist/src/web/services/mcpWidget.cjs +9 -0
  1086. package/dist/src/web/services/mcpWidget.cjs.map +1 -0
  1087. package/dist/src/web/services/mcpWidget.d.mts +6 -0
  1088. package/dist/src/web/services/mcpWidget.d.mts.map +1 -0
  1089. package/dist/src/web/services/mcpWidget.mjs +9 -0
  1090. package/dist/src/web/services/mcpWidget.mjs.map +1 -0
  1091. package/dist/src/web/services/sessionRegistry/index.cjs +70 -0
  1092. package/dist/src/web/services/sessionRegistry/index.cjs.map +1 -0
  1093. package/dist/src/web/services/sessionRegistry/index.d.mts +29 -0
  1094. package/dist/src/web/services/sessionRegistry/index.d.mts.map +1 -0
  1095. package/dist/src/web/services/sessionRegistry/index.mjs +66 -0
  1096. package/dist/src/web/services/sessionRegistry/index.mjs.map +1 -0
  1097. package/dist/src/web/services/testing/channels.cjs +11 -0
  1098. package/dist/src/web/services/testing/channels.cjs.map +1 -0
  1099. package/dist/src/web/services/testing/channels.d.mts +8 -0
  1100. package/dist/src/web/services/testing/channels.d.mts.map +1 -0
  1101. package/dist/src/web/services/testing/channels.mjs +11 -0
  1102. package/dist/src/web/services/testing/channels.mjs.map +1 -0
  1103. package/dist/src/web/services/testing/index.cjs +27 -0
  1104. package/dist/src/web/services/testing/index.cjs.map +1 -0
  1105. package/dist/src/web/services/testing/index.d.mts +31 -0
  1106. package/dist/src/web/services/testing/index.d.mts.map +1 -0
  1107. package/dist/src/web/services/testing/index.mjs +27 -0
  1108. package/dist/src/web/services/testing/index.mjs.map +1 -0
  1109. package/dist/src/web/services/testing/rpcStub.cjs +58 -0
  1110. package/dist/src/web/services/testing/rpcStub.cjs.map +1 -0
  1111. package/dist/src/web/services/testing/rpcStub.d.mts +37 -0
  1112. package/dist/src/web/services/testing/rpcStub.d.mts.map +1 -0
  1113. package/dist/src/web/services/testing/rpcStub.mjs +58 -0
  1114. package/dist/src/web/services/testing/rpcStub.mjs.map +1 -0
  1115. package/dist/src/web/services/testing/slotProps.cjs +97 -0
  1116. package/dist/src/web/services/testing/slotProps.cjs.map +1 -0
  1117. package/dist/src/web/services/testing/slotProps.d.mts +69 -0
  1118. package/dist/src/web/services/testing/slotProps.d.mts.map +1 -0
  1119. package/dist/src/web/services/testing/slotProps.mjs +96 -0
  1120. package/dist/src/web/services/testing/slotProps.mjs.map +1 -0
  1121. package/dist/src/web/services/testing/templateRail.cjs +156 -0
  1122. package/dist/src/web/services/testing/templateRail.cjs.map +1 -0
  1123. package/dist/src/web/services/testing/templateRail.d.mts +32 -0
  1124. package/dist/src/web/services/testing/templateRail.d.mts.map +1 -0
  1125. package/dist/src/web/services/testing/templateRail.mjs +154 -0
  1126. package/dist/src/web/services/testing/templateRail.mjs.map +1 -0
  1127. package/dist/src/web/services/toolResult/index.cjs +30 -0
  1128. package/dist/src/web/services/toolResult/index.cjs.map +1 -0
  1129. package/dist/src/web/services/toolResult/index.d.mts +14 -0
  1130. package/dist/src/web/services/toolResult/index.d.mts.map +1 -0
  1131. package/dist/src/web/services/toolResult/index.mjs +29 -0
  1132. package/dist/src/web/services/toolResult/index.mjs.map +1 -0
  1133. package/dist/src/web/types/extensionFile.d.mts +62 -0
  1134. package/dist/src/web/types/extensionFile.d.mts.map +1 -0
  1135. package/dist/src/web/types/mcpWidget.d.mts +14 -0
  1136. package/dist/src/web/types/mcpWidget.d.mts.map +1 -0
  1137. package/dist/src/web/types/modelContext.d.mts +43 -0
  1138. package/dist/src/web/types/modelContext.d.mts.map +1 -0
  1139. package/dist/src/web/types/nativeTemplate.d.mts +29 -0
  1140. package/dist/src/web/types/nativeTemplate.d.mts.map +1 -0
  1141. package/dist/src/web/types/sessionRegistry.d.mts +46 -0
  1142. package/dist/src/web/types/sessionRegistry.d.mts.map +1 -0
  1143. package/dist/src/web/types/template.d.mts +135 -0
  1144. package/dist/src/web/types/template.d.mts.map +1 -0
  1145. package/dist/src/web/types/webPlugin.d.mts +915 -0
  1146. package/dist/src/web/types/webPlugin.d.mts.map +1 -0
  1147. package/dist/terminalPiChildSessionService.cjs +324 -0
  1148. package/dist/terminalPiChildSessionService.cjs.map +1 -0
  1149. package/dist/terminalPiChildSessionService.d.mts +46 -0
  1150. package/dist/terminalPiChildSessionService.d.mts.map +1 -0
  1151. package/dist/terminalPiChildSessionService.mjs +318 -0
  1152. package/dist/terminalPiChildSessionService.mjs.map +1 -0
  1153. package/dist/testing.cjs +11 -0
  1154. package/dist/testing.d.mts +6 -0
  1155. package/dist/testing.mjs +6 -0
  1156. package/dist/toolInventory.cjs +136 -0
  1157. package/dist/toolInventory.cjs.map +1 -0
  1158. package/dist/toolInventory.d.mts +66 -0
  1159. package/dist/toolInventory.d.mts.map +1 -0
  1160. package/dist/toolInventory.mjs +133 -0
  1161. package/dist/toolInventory.mjs.map +1 -0
  1162. package/dist/toolNames.cjs +4 -0
  1163. package/dist/toolNames.d.mts +2 -0
  1164. package/dist/toolNames.mjs +2 -0
  1165. package/dist/toolOverrides.cjs +7 -0
  1166. package/dist/toolOverrides.d.mts +3 -0
  1167. package/dist/toolOverrides.mjs +3 -0
  1168. package/dist/toolSurface.cjs +7 -0
  1169. package/dist/toolSurface.d.mts +3 -0
  1170. package/dist/toolSurface.mjs +3 -0
  1171. package/dist/transition.cjs +5 -0
  1172. package/dist/transition.d.cjs +5 -0
  1173. package/dist/transition.d.mts +2 -0
  1174. package/dist/transition.mjs +2 -0
  1175. package/dist/transitionClassifier.cjs +112 -0
  1176. package/dist/transitionClassifier.cjs.map +1 -0
  1177. package/dist/transitionClassifier.d.mts +18 -0
  1178. package/dist/transitionClassifier.d.mts.map +1 -0
  1179. package/dist/transitionClassifier.mjs +111 -0
  1180. package/dist/transitionClassifier.mjs.map +1 -0
  1181. package/dist/transitionCoordinator.cjs +131 -0
  1182. package/dist/transitionCoordinator.cjs.map +1 -0
  1183. package/dist/transitionCoordinator.d.mts +16 -0
  1184. package/dist/transitionCoordinator.d.mts.map +1 -0
  1185. package/dist/transitionCoordinator.mjs +130 -0
  1186. package/dist/transitionCoordinator.mjs.map +1 -0
  1187. package/dist/typesContextApi.cjs +0 -0
  1188. package/dist/typesContextApi.d.mts +79 -0
  1189. package/dist/typesContextApi.d.mts.map +1 -0
  1190. package/dist/typesContextApi.mjs +1 -0
  1191. package/dist/uiHub.cjs +5 -0
  1192. package/dist/uiHub.d.mts +2 -0
  1193. package/dist/uiHub.mjs +2 -0
  1194. package/dist/v3Export.cjs +10 -0
  1195. package/dist/v3Export.cjs.map +1 -0
  1196. package/dist/v3Export.d.mts +35 -0
  1197. package/dist/v3Export.d.mts.map +1 -0
  1198. package/dist/v3Export.mjs +9 -0
  1199. package/dist/v3Export.mjs.map +1 -0
  1200. package/dist/voiceReloadHandoff.cjs +14 -0
  1201. package/dist/voiceReloadHandoff.d.mts +4 -0
  1202. package/dist/voiceReloadHandoff.mjs +4 -0
  1203. package/dist/voiceTools.cjs +56 -0
  1204. package/dist/voiceTools.d.mts +4 -0
  1205. package/dist/voiceTools.mjs +4 -0
  1206. package/dist/web.cjs +65 -0
  1207. package/dist/web.d.mts +20 -0
  1208. package/dist/web.mjs +13 -0
  1209. package/dist/webCompositions.cjs +181 -0
  1210. package/dist/webCompositions.cjs.map +1 -0
  1211. package/dist/webCompositions.d.mts +79 -0
  1212. package/dist/webCompositions.d.mts.map +1 -0
  1213. package/dist/webCompositions.mjs +174 -0
  1214. package/dist/webCompositions.mjs.map +1 -0
  1215. package/dist/webTesting.cjs +14 -0
  1216. package/dist/webTesting.d.mts +6 -0
  1217. package/dist/webTesting.mjs +6 -0
  1218. package/package.json +586 -0
@@ -0,0 +1,141 @@
1
+ //#region src/services/deviceSessions/index.ts
2
+ const MS_PER_MINUTE = 6e4;
3
+ const MS_PER_HOUR = 36e5;
4
+ const MS_PER_SECOND = 1e3;
5
+ /** Long enough to tell an iPhone from a laptop, short enough not to be a fingerprint in a log. */
6
+ const MAX_USER_AGENT = 200;
7
+ /** Upper bound of the C0 block, and the bounds of C1. Codepoints rather than a character class:
8
+ * a regex over control characters is unreadable, hard to review, and trips no-control-regex. */
9
+ const C0_END = 31;
10
+ const C1_START = 127;
11
+ const C1_END = 159;
12
+ const UNKNOWN_DEVICE = "unknown device";
13
+ /** Whether this record still authorizes a request, under the settings in force right now. */
14
+ function evaluateDevice(record, now, settings) {
15
+ if (record === void 0) return {
16
+ ok: false,
17
+ reason: "unknown"
18
+ };
19
+ if (!settings.sessionExpiryEnabled) return {
20
+ ok: true,
21
+ record
22
+ };
23
+ if (now - record.lastSeenAt >= settings.idleMinutes * MS_PER_MINUTE) return {
24
+ ok: false,
25
+ reason: "idle"
26
+ };
27
+ if (now - record.createdAt >= settings.absoluteHours * MS_PER_HOUR) return {
28
+ ok: false,
29
+ reason: "absolute"
30
+ };
31
+ return {
32
+ ok: true,
33
+ record
34
+ };
35
+ }
36
+ /** Exact deadline at which this device stops authorizing, or undefined while expiry is disabled. */
37
+ function deviceExpiryAt(record, settings) {
38
+ if (!settings.sessionExpiryEnabled) return void 0;
39
+ return Math.min(record.lastSeenAt + settings.idleMinutes * MS_PER_MINUTE, record.createdAt + settings.absoluteHours * MS_PER_HOUR);
40
+ }
41
+ function touchDevice(record, now) {
42
+ return {
43
+ ...record,
44
+ lastSeenAt: now
45
+ };
46
+ }
47
+ /** How long the cookie should live, so the browser forgets roughly when the server does. */
48
+ function cookieMaxAgeSeconds(settings, ceilingSeconds) {
49
+ if (!settings.sessionExpiryEnabled) return ceilingSeconds;
50
+ return Math.min(ceilingSeconds, Math.round(settings.absoluteHours * MS_PER_HOUR / MS_PER_SECOND));
51
+ }
52
+ /** Replaces every C0 and C1 control character with a space; those are what could forge a log line. */
53
+ function withoutControlCharacters(value) {
54
+ let out = "";
55
+ for (const character of value) {
56
+ const code = character.codePointAt(0) ?? 0;
57
+ out += code <= C0_END || code >= C1_START && code <= C1_END ? " " : character;
58
+ }
59
+ return out;
60
+ }
61
+ /**
62
+ * Strips anything that could forge a second line in a log or a second element
63
+ * in the approval dialog, then truncates.
64
+ *
65
+ * The user agent is attacker-supplied and lands in both `notice()` output and
66
+ * the host's approval prompt, so control characters are the concern rather than
67
+ * length.
68
+ */
69
+ function sanitizeUserAgent(raw) {
70
+ if (raw === void 0) return UNKNOWN_DEVICE;
71
+ const stripped = withoutControlCharacters(raw).replaceAll(/\s+/gu, " ").trim();
72
+ if (stripped === "") return UNKNOWN_DEVICE;
73
+ return stripped.slice(0, MAX_USER_AGENT);
74
+ }
75
+ /**
76
+ * The address Cloudflare's edge reported, reduced to a safe display and key value.
77
+ *
78
+ * It never authorizes a request. The tunnel route may use it only for abuse
79
+ * throttling when Cloudflare is the trusted proxy. A local process can forge it,
80
+ * but local processes are outside that public-internet boundary.
81
+ */
82
+ function sanitizeEdgeIp(raw) {
83
+ if (raw === void 0) return "unknown";
84
+ const candidate = raw.split(",")[0]?.trim() ?? "";
85
+ return /^[0-9a-f:.]{1,45}$/iu.test(candidate) ? candidate : "unknown";
86
+ }
87
+ const DEVICE_HINTS = [
88
+ {
89
+ pattern: /iphone/iu,
90
+ label: "iPhone"
91
+ },
92
+ {
93
+ pattern: /ipad/iu,
94
+ label: "iPad"
95
+ },
96
+ {
97
+ pattern: /android/iu,
98
+ label: "Android"
99
+ },
100
+ {
101
+ pattern: /macintosh|mac os x/iu,
102
+ label: "Mac"
103
+ },
104
+ {
105
+ pattern: /windows/iu,
106
+ label: "Windows"
107
+ },
108
+ {
109
+ pattern: /linux/iu,
110
+ label: "Linux"
111
+ }
112
+ ];
113
+ const BROWSER_HINTS = [
114
+ {
115
+ pattern: /edg\//iu,
116
+ label: "Edge"
117
+ },
118
+ {
119
+ pattern: /firefox\//iu,
120
+ label: "Firefox"
121
+ },
122
+ {
123
+ pattern: /chrome\/|crios\//iu,
124
+ label: "Chrome"
125
+ },
126
+ {
127
+ pattern: /safari\//iu,
128
+ label: "Safari"
129
+ }
130
+ ];
131
+ /** A human label for the device list, best effort; the full user agent is shown alongside. */
132
+ function deviceLabelFor(userAgent) {
133
+ const device = DEVICE_HINTS.find((hint) => hint.pattern.test(userAgent))?.label;
134
+ const browser = BROWSER_HINTS.find((hint) => hint.pattern.test(userAgent))?.label;
135
+ if (device !== void 0 && browser !== void 0) return `${device} · ${browser}`;
136
+ return device ?? browser ?? "paired device";
137
+ }
138
+ //#endregion
139
+ export { cookieMaxAgeSeconds, deviceExpiryAt, deviceLabelFor, evaluateDevice, sanitizeEdgeIp, sanitizeUserAgent, touchDevice };
140
+
141
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/deviceSessions/index.ts"],"sourcesContent":["/**\n * What makes a paired device's session still valid.\n *\n * Expiry is derived from the settings in force at the moment of the check,\n * never stamped onto the record when it was minted. That is what makes the\n * setting honest in both directions: switching expiry on has to invalidate a\n * session that is already idle, and switching it off has to bring it back. A\n * stored `expiresAt` would do neither.\n */\n\nimport type { DeviceTrust, RemoteAccessSettings } from '../../types/remote';\n\nconst MS_PER_MINUTE = 60_000;\nconst MS_PER_HOUR = 3_600_000;\nconst MS_PER_SECOND = 1000;\n/** Long enough to tell an iPhone from a laptop, short enough not to be a fingerprint in a log. */\nconst MAX_USER_AGENT = 200;\n/** Upper bound of the C0 block, and the bounds of C1. Codepoints rather than a character class:\n * a regex over control characters is unreadable, hard to review, and trips no-control-regex. */\nconst C0_END = 0x1f;\nconst C1_START = 0x7f;\nconst C1_END = 0x9f;\nconst UNKNOWN_DEVICE = 'unknown device';\n\nexport interface DeviceRecord {\n /** Opaque, safe to display and to name in a revoke call. Never the secret. */\n id: string;\n /** SHA-256 of the session token. The token itself is never retained. */\n tokenHash: string;\n label: string;\n userAgent: string;\n /** Epoch milliseconds. */\n createdAt: number;\n /** Epoch milliseconds, bumped on every authenticated request. */\n lastSeenAt: number;\n /** How this session was earned; decides registration rights and step-up. */\n trust: DeviceTrust;\n}\n\nexport type DeviceRejection = 'unknown' | 'idle' | 'absolute';\n\nexport type DeviceVerdict = { ok: true; record: DeviceRecord } | { ok: false; reason: DeviceRejection };\n\n/** Whether this record still authorizes a request, under the settings in force right now. */\nexport function evaluateDevice(\n record: DeviceRecord | undefined,\n now: number,\n settings: RemoteAccessSettings,\n): DeviceVerdict {\n if (record === undefined) return { ok: false, reason: 'unknown' };\n if (!settings.sessionExpiryEnabled) return { ok: true, record };\n if (now - record.lastSeenAt >= settings.idleMinutes * MS_PER_MINUTE) return { ok: false, reason: 'idle' };\n if (now - record.createdAt >= settings.absoluteHours * MS_PER_HOUR) return { ok: false, reason: 'absolute' };\n return { ok: true, record };\n}\n\n/** Exact deadline at which this device stops authorizing, or undefined while expiry is disabled. */\nexport function deviceExpiryAt(record: DeviceRecord, settings: RemoteAccessSettings): number | undefined {\n if (!settings.sessionExpiryEnabled) return undefined;\n return Math.min(\n record.lastSeenAt + settings.idleMinutes * MS_PER_MINUTE,\n record.createdAt + settings.absoluteHours * MS_PER_HOUR,\n );\n}\n\nexport function touchDevice(record: DeviceRecord, now: number): DeviceRecord {\n return { ...record, lastSeenAt: now };\n}\n\n/** How long the cookie should live, so the browser forgets roughly when the server does. */\nexport function cookieMaxAgeSeconds(settings: RemoteAccessSettings, ceilingSeconds: number): number {\n if (!settings.sessionExpiryEnabled) return ceilingSeconds;\n return Math.min(ceilingSeconds, Math.round((settings.absoluteHours * MS_PER_HOUR) / MS_PER_SECOND));\n}\n\n/** Replaces every C0 and C1 control character with a space; those are what could forge a log line. */\nfunction withoutControlCharacters(value: string): string {\n let out = '';\n for (const character of value) {\n const code = character.codePointAt(0) ?? 0;\n out += code <= C0_END || (code >= C1_START && code <= C1_END) ? ' ' : character;\n }\n return out;\n}\n\n/**\n * Strips anything that could forge a second line in a log or a second element\n * in the approval dialog, then truncates.\n *\n * The user agent is attacker-supplied and lands in both `notice()` output and\n * the host's approval prompt, so control characters are the concern rather than\n * length.\n */\nexport function sanitizeUserAgent(raw: string | undefined): string {\n if (raw === undefined) return UNKNOWN_DEVICE;\n const stripped = withoutControlCharacters(raw).replaceAll(/\\s+/gu, ' ').trim();\n if (stripped === '') return UNKNOWN_DEVICE;\n return stripped.slice(0, MAX_USER_AGENT);\n}\n\n/**\n * The address Cloudflare's edge reported, reduced to a safe display and key value.\n *\n * It never authorizes a request. The tunnel route may use it only for abuse\n * throttling when Cloudflare is the trusted proxy. A local process can forge it,\n * but local processes are outside that public-internet boundary.\n */\nexport function sanitizeEdgeIp(raw: string | undefined): string {\n if (raw === undefined) return 'unknown';\n const candidate = raw.split(',')[0]?.trim() ?? '';\n return /^[0-9a-f:.]{1,45}$/iu.test(candidate) ? candidate : 'unknown';\n}\n\nconst DEVICE_HINTS: readonly { pattern: RegExp; label: string }[] = [\n { pattern: /iphone/iu, label: 'iPhone' },\n { pattern: /ipad/iu, label: 'iPad' },\n { pattern: /android/iu, label: 'Android' },\n { pattern: /macintosh|mac os x/iu, label: 'Mac' },\n { pattern: /windows/iu, label: 'Windows' },\n { pattern: /linux/iu, label: 'Linux' },\n];\n\nconst BROWSER_HINTS: readonly { pattern: RegExp; label: string }[] = [\n // Order matters: every Chromium user agent also says Safari, and Edge says both.\n { pattern: /edg\\//iu, label: 'Edge' },\n { pattern: /firefox\\//iu, label: 'Firefox' },\n { pattern: /chrome\\/|crios\\//iu, label: 'Chrome' },\n { pattern: /safari\\//iu, label: 'Safari' },\n];\n\n/** A human label for the device list, best effort; the full user agent is shown alongside. */\nexport function deviceLabelFor(userAgent: string): string {\n const device = DEVICE_HINTS.find((hint) => hint.pattern.test(userAgent))?.label;\n const browser = BROWSER_HINTS.find((hint) => hint.pattern.test(userAgent))?.label;\n if (device !== undefined && browser !== undefined) return `${device} · ${browser}`;\n return device ?? browser ?? 'paired device';\n}\n"],"mappings":";AAYA,MAAM,gBAAgB;AACtB,MAAM,cAAc;AACpB,MAAM,gBAAgB;;AAEtB,MAAM,iBAAiB;;;AAGvB,MAAM,SAAS;AACf,MAAM,WAAW;AACjB,MAAM,SAAS;AACf,MAAM,iBAAiB;;AAsBvB,SAAgB,eACd,QACA,KACA,UACe;CACf,IAAI,WAAW,KAAA,GAAW,OAAO;EAAE,IAAI;EAAO,QAAQ;CAAU;CAChE,IAAI,CAAC,SAAS,sBAAsB,OAAO;EAAE,IAAI;EAAM;CAAO;CAC9D,IAAI,MAAM,OAAO,cAAc,SAAS,cAAc,eAAe,OAAO;EAAE,IAAI;EAAO,QAAQ;CAAO;CACxG,IAAI,MAAM,OAAO,aAAa,SAAS,gBAAgB,aAAa,OAAO;EAAE,IAAI;EAAO,QAAQ;CAAW;CAC3G,OAAO;EAAE,IAAI;EAAM;CAAO;AAC5B;;AAGA,SAAgB,eAAe,QAAsB,UAAoD;CACvG,IAAI,CAAC,SAAS,sBAAsB,OAAO,KAAA;CAC3C,OAAO,KAAK,IACV,OAAO,aAAa,SAAS,cAAc,eAC3C,OAAO,YAAY,SAAS,gBAAgB,WAC9C;AACF;AAEA,SAAgB,YAAY,QAAsB,KAA2B;CAC3E,OAAO;EAAE,GAAG;EAAQ,YAAY;CAAI;AACtC;;AAGA,SAAgB,oBAAoB,UAAgC,gBAAgC;CAClG,IAAI,CAAC,SAAS,sBAAsB,OAAO;CAC3C,OAAO,KAAK,IAAI,gBAAgB,KAAK,MAAO,SAAS,gBAAgB,cAAe,aAAa,CAAC;AACpG;;AAGA,SAAS,yBAAyB,OAAuB;CACvD,IAAI,MAAM;CACV,KAAK,MAAM,aAAa,OAAO;EAC7B,MAAM,OAAO,UAAU,YAAY,CAAC,KAAK;EACzC,OAAO,QAAQ,UAAW,QAAQ,YAAY,QAAQ,SAAU,MAAM;CACxE;CACA,OAAO;AACT;;;;;;;;;AAUA,SAAgB,kBAAkB,KAAiC;CACjE,IAAI,QAAQ,KAAA,GAAW,OAAO;CAC9B,MAAM,WAAW,yBAAyB,GAAG,CAAC,CAAC,WAAW,SAAS,GAAG,CAAC,CAAC,KAAK;CAC7E,IAAI,aAAa,IAAI,OAAO;CAC5B,OAAO,SAAS,MAAM,GAAG,cAAc;AACzC;;;;;;;;AASA,SAAgB,eAAe,KAAiC;CAC9D,IAAI,QAAQ,KAAA,GAAW,OAAO;CAC9B,MAAM,YAAY,IAAI,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,KAAK;CAC/C,OAAO,uBAAuB,KAAK,SAAS,IAAI,YAAY;AAC9D;AAEA,MAAM,eAA8D;CAClE;EAAE,SAAS;EAAY,OAAO;CAAS;CACvC;EAAE,SAAS;EAAU,OAAO;CAAO;CACnC;EAAE,SAAS;EAAa,OAAO;CAAU;CACzC;EAAE,SAAS;EAAwB,OAAO;CAAM;CAChD;EAAE,SAAS;EAAa,OAAO;CAAU;CACzC;EAAE,SAAS;EAAW,OAAO;CAAQ;AACvC;AAEA,MAAM,gBAA+D;CAEnE;EAAE,SAAS;EAAW,OAAO;CAAO;CACpC;EAAE,SAAS;EAAe,OAAO;CAAU;CAC3C;EAAE,SAAS;EAAsB,OAAO;CAAS;CACjD;EAAE,SAAS;EAAc,OAAO;CAAS;AAC3C;;AAGA,SAAgB,eAAe,WAA2B;CACxD,MAAM,SAAS,aAAa,MAAM,SAAS,KAAK,QAAQ,KAAK,SAAS,CAAC,CAAC,EAAE;CAC1E,MAAM,UAAU,cAAc,MAAM,SAAS,KAAK,QAAQ,KAAK,SAAS,CAAC,CAAC,EAAE;CAC5E,IAAI,WAAW,KAAA,KAAa,YAAY,KAAA,GAAW,OAAO,GAAG,OAAO,KAAK;CACzE,OAAO,UAAU,WAAW;AAC9B"}
@@ -0,0 +1,294 @@
1
+ const require_remote = require("../../constants/remote.cjs");
2
+ const require_index = require("../deviceSessions/index.cjs");
3
+ const require_index$1 = require("../webauthnPolicy/index.cjs");
4
+ let node_crypto = require("node:crypto");
5
+ let _agimon_ai_po_web_security_node = require("@agimon-ai/po-web-security/node");
6
+ //#region src/services/deviceTrust/index.ts
7
+ /**
8
+ * Native device trust: message layout, key checks, and single-use challenges.
9
+ *
10
+ * A phone paired by QR registers two P-256 keys over the sealed gateway: an
11
+ * identity key that signs silent reconnects, and a step-up key that only
12
+ * biometrics unlock. Every signed message is `tag + "\n" + JSON.stringify(fields)`
13
+ * with the fields in the fixed order below, so the phone and the host build the
14
+ * same bytes and no message can be passed off as another or as a manifest.
15
+ *
16
+ * No I/O and no hidden clock: the caller passes the clock, the challenge store,
17
+ * and the record lookup, so every rule here is testable without a server.
18
+ */
19
+ /** Challenges and nonces are 32 random bytes, which is 43 base64url characters. */
20
+ const RANDOM_BYTES = 32;
21
+ const RANDOM_VALUE = /^[A-Za-z0-9_-]{43}$/u;
22
+ const CHALLENGE_ID_BYTES = 16;
23
+ /** Opaque ids: trusted device ids, session device ids, and challenge ids. */
24
+ const OPAQUE_ID = /^[A-Za-z0-9_-]{1,64}$/u;
25
+ const MAX_SPKI_LENGTH = 512;
26
+ const MAX_CHANNEL_KEY_LENGTH = 128;
27
+ const MAX_SIGNATURE_LENGTH = 128;
28
+ const BASE64URL = /^[A-Za-z0-9_-]+$/u;
29
+ const P256_CURVE = "prime256v1";
30
+ const PLATFORMS = /* @__PURE__ */ new Set(["ios", "android"]);
31
+ function isRecord(value) {
32
+ return typeof value === "object" && value !== null && !Array.isArray(value);
33
+ }
34
+ function isBase64Url(value, maximum) {
35
+ return typeof value === "string" && value.length > 0 && value.length <= maximum && BASE64URL.test(value);
36
+ }
37
+ function ttlOf(purpose) {
38
+ return purpose.kind === "auth" ? require_remote.DEVICE_AUTH_CHALLENGE_TTL_MS : require_remote.DEVICE_STEP_UP_CHALLENGE_TTL_MS;
39
+ }
40
+ /** `po/host-channel-key/v1`, signed by the host bundle signer. */
41
+ function hostChannelKeyFields(origin, hostPublicKey, deviceNonce) {
42
+ return [
43
+ origin,
44
+ hostPublicKey,
45
+ deviceNonce
46
+ ];
47
+ }
48
+ /** `po/device-register/v1`, signed by the identity key and separately by the step-up key. */
49
+ function deviceRegisterFields(input) {
50
+ return [
51
+ input.origin,
52
+ input.hostPublicKey,
53
+ input.sessionDeviceId,
54
+ input.identityPublicKey,
55
+ input.stepUpPublicKey,
56
+ input.platform
57
+ ];
58
+ }
59
+ /** `po/device-auth/v1`, signed by the identity key. All three channel keys are covered. */
60
+ function deviceAuthFields(input) {
61
+ return [
62
+ input.origin,
63
+ input.challenge,
64
+ input.hostPublicKey,
65
+ input.trustedDeviceId,
66
+ input.channels.session,
67
+ input.channels.protocol,
68
+ input.channels.http
69
+ ];
70
+ }
71
+ /** `po/device-step-up/v1`, signed by the biometric step-up key. */
72
+ function deviceStepUpFields(input) {
73
+ return [
74
+ input.origin,
75
+ input.action,
76
+ input.sessionDeviceId,
77
+ input.challengeId,
78
+ input.challenge
79
+ ];
80
+ }
81
+ /** Whether a value is a base64url DER SPKI for an EC P-256 public key, the only kind a device may register. */
82
+ function isP256PublicKey(value) {
83
+ if (!isBase64Url(value, MAX_SPKI_LENGTH)) return false;
84
+ try {
85
+ const key = (0, node_crypto.createPublicKey)({
86
+ key: Buffer.from(value, "base64url"),
87
+ format: "der",
88
+ type: "spki"
89
+ });
90
+ return key.asymmetricKeyType === "ec" && key.asymmetricKeyDetails?.namedCurve === P256_CURVE;
91
+ } catch {
92
+ return false;
93
+ }
94
+ }
95
+ /** Whether a value is a fresh-looking 32-byte base64url nonce. */
96
+ function isDeviceNonce(value) {
97
+ return typeof value === "string" && RANDOM_VALUE.test(value);
98
+ }
99
+ function isOpaqueId(value) {
100
+ return typeof value === "string" && OPAQUE_ID.test(value);
101
+ }
102
+ /**
103
+ * Single-use challenges, bounded in count and lifetime.
104
+ *
105
+ * Deleted on first `take`, whatever the outcome of the check that follows, so a
106
+ * challenge cannot be retried. Expired entries are swept on every issue, and the
107
+ * oldest entry goes when the store is full.
108
+ */
109
+ function createDeviceChallenges(options) {
110
+ const random = options.random ?? ((bytes) => (0, node_crypto.randomBytes)(bytes).toString("base64url"));
111
+ const pending = /* @__PURE__ */ new Map();
112
+ const live = (entry, at) => at - entry.issuedAt < ttlOf(entry.purpose);
113
+ return {
114
+ issue(hostPublicKey, purpose) {
115
+ const at = options.now();
116
+ for (const [id, entry] of pending) if (!live(entry, at)) pending.delete(id);
117
+ while (pending.size >= require_remote.DEVICE_CHALLENGE_LIMIT) {
118
+ const oldest = pending.keys().next().value;
119
+ if (oldest === void 0) break;
120
+ pending.delete(oldest);
121
+ }
122
+ const entry = {
123
+ id: random(CHALLENGE_ID_BYTES),
124
+ challenge: random(RANDOM_BYTES),
125
+ hostPublicKey,
126
+ issuedAt: at,
127
+ purpose
128
+ };
129
+ pending.set(entry.id, entry);
130
+ return entry;
131
+ },
132
+ take(id) {
133
+ const entry = pending.get(id);
134
+ if (entry === void 0) return void 0;
135
+ pending.delete(id);
136
+ return live(entry, options.now()) ? entry : void 0;
137
+ },
138
+ dropWhere(predicate) {
139
+ for (const [id, entry] of pending) if (predicate(entry)) pending.delete(id);
140
+ },
141
+ clear: () => pending.clear(),
142
+ size: () => pending.size
143
+ };
144
+ }
145
+ /**
146
+ * The public reconnect challenge.
147
+ *
148
+ * It never consults the trusted-device list, so a known id and an unknown one
149
+ * produce the same shape and the route cannot be used to enumerate devices.
150
+ * The attestation proves the fresh tunnel key with the signer the phone pinned
151
+ * at pairing, over the phone's own nonce. Undefined while the host cannot attest.
152
+ */
153
+ function deviceAuthChallenge(input) {
154
+ const attestation = input.attest(hostChannelKeyFields(input.origin, input.hostPublicKey, input.nonce));
155
+ if (attestation === void 0) return void 0;
156
+ const issued = input.challenges.issue(input.hostPublicKey, {
157
+ kind: "auth",
158
+ trustedDeviceId: input.trustedDeviceId
159
+ });
160
+ return {
161
+ challengeId: issued.id,
162
+ challenge: issued.challenge,
163
+ hostPublicKey: input.hostPublicKey,
164
+ attestation
165
+ };
166
+ }
167
+ /** A step-up challenge bound to one action and one session, answered by the biometric key. */
168
+ function deviceStepUpChallenge(input) {
169
+ const issued = input.challenges.issue(input.hostPublicKey, {
170
+ kind: "step-up",
171
+ sessionDeviceId: input.sessionDeviceId,
172
+ action: input.action
173
+ });
174
+ return {
175
+ ceremonyId: issued.id,
176
+ challenge: issued.challenge,
177
+ kind: "device-key"
178
+ };
179
+ }
180
+ /**
181
+ * Checks a registration from a sealed `pairing` session.
182
+ *
183
+ * Both keys must be distinct P-256 SPKIs and both must sign the same
184
+ * `po/device-register/v1` message, which binds them to this origin, this
185
+ * tunnel key, and this exact session.
186
+ */
187
+ function verifyRegistration(input) {
188
+ if (input.trust?.kind !== "pairing") return {
189
+ ok: false,
190
+ reason: "not-pairing"
191
+ };
192
+ const body = input.body;
193
+ if (!isRecord(body)) return {
194
+ ok: false,
195
+ reason: "invalid"
196
+ };
197
+ const { identityPublicKey, stepUpPublicKey, label, platform, identityProof, stepUpProof } = body;
198
+ if (!isP256PublicKey(identityPublicKey) || !isP256PublicKey(stepUpPublicKey) || identityPublicKey === stepUpPublicKey || typeof label !== "string" || typeof platform !== "string" || !PLATFORMS.has(platform) || !isBase64Url(identityProof, MAX_SIGNATURE_LENGTH) || !isBase64Url(stepUpProof, MAX_SIGNATURE_LENGTH)) return {
199
+ ok: false,
200
+ reason: "invalid"
201
+ };
202
+ const fields = deviceRegisterFields({
203
+ origin: input.origin,
204
+ hostPublicKey: input.hostPublicKey,
205
+ sessionDeviceId: input.sessionDeviceId,
206
+ identityPublicKey,
207
+ stepUpPublicKey,
208
+ platform
209
+ });
210
+ if (!(0, _agimon_ai_po_web_security_node.verifyDeviceSignature)(identityPublicKey, "po/device-register/v1", fields, identityProof) || !(0, _agimon_ai_po_web_security_node.verifyDeviceSignature)(stepUpPublicKey, "po/device-register/v1", fields, stepUpProof)) return {
211
+ ok: false,
212
+ reason: "invalid"
213
+ };
214
+ return {
215
+ ok: true,
216
+ identityPublicKey,
217
+ stepUpPublicKey,
218
+ label: require_index.sanitizeUserAgent(label),
219
+ platform
220
+ };
221
+ }
222
+ function channelKeysOf(value) {
223
+ if (!isRecord(value)) return void 0;
224
+ const { session, protocol, http } = value;
225
+ if (!isBase64Url(session, MAX_CHANNEL_KEY_LENGTH) || !isBase64Url(protocol, MAX_CHANNEL_KEY_LENGTH) || !isBase64Url(http, MAX_CHANNEL_KEY_LENGTH)) return void 0;
226
+ if (session === protocol || session === http || protocol === http) return void 0;
227
+ return {
228
+ session,
229
+ protocol,
230
+ http
231
+ };
232
+ }
233
+ /**
234
+ * Checks a device sign-in. The challenge is consumed before anything else is
235
+ * looked at, so every attempt, good or bad, burns it.
236
+ */
237
+ function verifyAuthentication(input) {
238
+ const body = input.body;
239
+ if (!isRecord(body) || !isOpaqueId(body.challengeId)) return { ok: false };
240
+ const issued = input.challenges.take(body.challengeId);
241
+ if (issued === void 0 || issued.purpose.kind !== "auth") return { ok: false };
242
+ if (input.hostPublicKey === void 0 || issued.hostPublicKey !== input.hostPublicKey) return { ok: false };
243
+ if (!isOpaqueId(body.trustedDeviceId) || body.trustedDeviceId !== issued.purpose.trustedDeviceId) return { ok: false };
244
+ if (!isBase64Url(body.signature, MAX_SIGNATURE_LENGTH)) return { ok: false };
245
+ const channels = channelKeysOf(body.channels);
246
+ if (channels === void 0) return { ok: false };
247
+ const record = input.find(body.trustedDeviceId);
248
+ if (record === void 0) return { ok: false };
249
+ const fields = deviceAuthFields({
250
+ origin: input.origin,
251
+ challenge: issued.challenge,
252
+ hostPublicKey: issued.hostPublicKey,
253
+ trustedDeviceId: record.id,
254
+ channels
255
+ });
256
+ if (!(0, _agimon_ai_po_web_security_node.verifyDeviceSignature)(record.identityPublicKey, "po/device-auth/v1", fields, body.signature)) return { ok: false };
257
+ return {
258
+ ok: true,
259
+ record,
260
+ channels
261
+ };
262
+ }
263
+ /** Checks a biometric step-up signature for one action from one device-key session. */
264
+ function verifyStepUp(input) {
265
+ if (!isOpaqueId(input.ceremonyId) || !require_index$1.isStepUpAction(input.action)) return false;
266
+ const issued = input.challenges.take(input.ceremonyId);
267
+ if (issued === void 0 || issued.purpose.kind !== "step-up") return false;
268
+ if (input.hostPublicKey === void 0 || issued.hostPublicKey !== input.hostPublicKey) return false;
269
+ if (issued.purpose.sessionDeviceId !== input.sessionDeviceId || issued.purpose.action !== input.action) return false;
270
+ if (!isBase64Url(input.signature, MAX_SIGNATURE_LENGTH)) return false;
271
+ return (0, _agimon_ai_po_web_security_node.verifyDeviceSignature)(input.stepUpPublicKey, require_remote.DEVICE_STEP_UP_TAG, deviceStepUpFields({
272
+ origin: input.origin,
273
+ action: input.action,
274
+ sessionDeviceId: input.sessionDeviceId,
275
+ challengeId: issued.id,
276
+ challenge: issued.challenge
277
+ }), input.signature);
278
+ }
279
+ //#endregion
280
+ exports.createDeviceChallenges = createDeviceChallenges;
281
+ exports.deviceAuthChallenge = deviceAuthChallenge;
282
+ exports.deviceAuthFields = deviceAuthFields;
283
+ exports.deviceRegisterFields = deviceRegisterFields;
284
+ exports.deviceStepUpChallenge = deviceStepUpChallenge;
285
+ exports.deviceStepUpFields = deviceStepUpFields;
286
+ exports.hostChannelKeyFields = hostChannelKeyFields;
287
+ exports.isDeviceNonce = isDeviceNonce;
288
+ exports.isOpaqueId = isOpaqueId;
289
+ exports.isP256PublicKey = isP256PublicKey;
290
+ exports.verifyAuthentication = verifyAuthentication;
291
+ exports.verifyRegistration = verifyRegistration;
292
+ exports.verifyStepUp = verifyStepUp;
293
+
294
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["DEVICE_AUTH_CHALLENGE_TTL_MS","DEVICE_STEP_UP_CHALLENGE_TTL_MS","createPublicKey","randomBytes","DEVICE_CHALLENGE_LIMIT","verifyDeviceSignature","sanitizeUserAgent","isStepUpAction","DEVICE_STEP_UP_TAG"],"sources":["../../../../src/services/deviceTrust/index.ts"],"sourcesContent":["/**\n * Native device trust: message layout, key checks, and single-use challenges.\n *\n * A phone paired by QR registers two P-256 keys over the sealed gateway: an\n * identity key that signs silent reconnects, and a step-up key that only\n * biometrics unlock. Every signed message is `tag + \"\\n\" + JSON.stringify(fields)`\n * with the fields in the fixed order below, so the phone and the host build the\n * same bytes and no message can be passed off as another or as a manifest.\n *\n * No I/O and no hidden clock: the caller passes the clock, the challenge store,\n * and the record lookup, so every rule here is testable without a server.\n */\n\nimport { createPublicKey, randomBytes } from 'node:crypto';\n\nimport { verifyDeviceSignature } from '@agimon-ai/po-web-security/node';\n\nimport {\n DEVICE_AUTH_CHALLENGE_TTL_MS,\n DEVICE_AUTH_TAG,\n DEVICE_CHALLENGE_LIMIT,\n DEVICE_REGISTER_TAG,\n DEVICE_STEP_UP_CHALLENGE_TTL_MS,\n DEVICE_STEP_UP_TAG,\n} from '../../constants/remote';\nimport type { DeviceTrust, TrustedDevicePlatform, TrustedDeviceRecord } from '../../types/remote';\nimport { sanitizeUserAgent } from '../deviceSessions';\nimport { isStepUpAction, type StepUpAction } from '../webauthnPolicy';\n\n/** Challenges and nonces are 32 random bytes, which is 43 base64url characters. */\nconst RANDOM_BYTES = 32;\nconst RANDOM_VALUE = /^[A-Za-z0-9_-]{43}$/u;\nconst CHALLENGE_ID_BYTES = 16;\n/** Opaque ids: trusted device ids, session device ids, and challenge ids. */\nconst OPAQUE_ID = /^[A-Za-z0-9_-]{1,64}$/u;\nconst MAX_SPKI_LENGTH = 512;\nconst MAX_CHANNEL_KEY_LENGTH = 128;\nconst MAX_SIGNATURE_LENGTH = 128;\nconst BASE64URL = /^[A-Za-z0-9_-]+$/u;\nconst P256_CURVE = 'prime256v1';\nconst PLATFORMS: ReadonlySet<string> = new Set<TrustedDevicePlatform>(['ios', 'android']);\n\nexport type DeviceChallengePurpose =\n | { kind: 'auth'; trustedDeviceId: string }\n | { kind: 'step-up'; sessionDeviceId: string; action: StepUpAction };\n\nexport interface DeviceChallenge {\n id: string;\n challenge: string;\n /** The tunnel key in force when the challenge was issued; it must still be the current one. */\n hostPublicKey: string;\n issuedAt: number;\n purpose: DeviceChallengePurpose;\n}\n\nexport interface DeviceChallenges {\n issue(hostPublicKey: string, purpose: DeviceChallengePurpose): DeviceChallenge;\n /** Removes and returns a live challenge. Undefined when unknown, already used, or expired. */\n take(id: string): DeviceChallenge | undefined;\n /** Drops every challenge the predicate selects, such as those of a revoked device. */\n dropWhere(predicate: (challenge: DeviceChallenge) => boolean): void;\n clear(): void;\n size(): number;\n}\n\nexport interface DeviceChallengesOptions {\n now: () => number;\n /** Base64url random value of the given byte length; injectable for tests. */\n random?: (bytes: number) => string;\n}\n\nexport interface DeviceChannelKeys {\n session: string;\n protocol: string;\n http: string;\n}\n\nexport type RegistrationVerdict =\n | {\n ok: true;\n identityPublicKey: string;\n stepUpPublicKey: string;\n label: string;\n platform: TrustedDevicePlatform;\n }\n | { ok: false; reason: 'not-pairing' | 'invalid' };\n\nexport type AuthenticationVerdict =\n | { ok: true; record: TrustedDeviceRecord; channels: DeviceChannelKeys }\n | { ok: false };\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction isBase64Url(value: unknown, maximum: number): value is string {\n return typeof value === 'string' && value.length > 0 && value.length <= maximum && BASE64URL.test(value);\n}\n\nfunction ttlOf(purpose: DeviceChallengePurpose): number {\n return purpose.kind === 'auth' ? DEVICE_AUTH_CHALLENGE_TTL_MS : DEVICE_STEP_UP_CHALLENGE_TTL_MS;\n}\n\n/** `po/host-channel-key/v1`, signed by the host bundle signer. */\nexport function hostChannelKeyFields(origin: string, hostPublicKey: string, deviceNonce: string): string[] {\n return [origin, hostPublicKey, deviceNonce];\n}\n\n/** `po/device-register/v1`, signed by the identity key and separately by the step-up key. */\nexport function deviceRegisterFields(input: {\n origin: string;\n hostPublicKey: string;\n sessionDeviceId: string;\n identityPublicKey: string;\n stepUpPublicKey: string;\n platform: string;\n}): string[] {\n return [\n input.origin,\n input.hostPublicKey,\n input.sessionDeviceId,\n input.identityPublicKey,\n input.stepUpPublicKey,\n input.platform,\n ];\n}\n\n/** `po/device-auth/v1`, signed by the identity key. All three channel keys are covered. */\nexport function deviceAuthFields(input: {\n origin: string;\n challenge: string;\n hostPublicKey: string;\n trustedDeviceId: string;\n channels: DeviceChannelKeys;\n}): string[] {\n return [\n input.origin,\n input.challenge,\n input.hostPublicKey,\n input.trustedDeviceId,\n input.channels.session,\n input.channels.protocol,\n input.channels.http,\n ];\n}\n\n/** `po/device-step-up/v1`, signed by the biometric step-up key. */\nexport function deviceStepUpFields(input: {\n origin: string;\n action: string;\n sessionDeviceId: string;\n challengeId: string;\n challenge: string;\n}): string[] {\n return [input.origin, input.action, input.sessionDeviceId, input.challengeId, input.challenge];\n}\n\n/** Whether a value is a base64url DER SPKI for an EC P-256 public key, the only kind a device may register. */\nexport function isP256PublicKey(value: unknown): value is string {\n if (!isBase64Url(value, MAX_SPKI_LENGTH)) return false;\n try {\n const key = createPublicKey({ key: Buffer.from(value, 'base64url'), format: 'der', type: 'spki' });\n return key.asymmetricKeyType === 'ec' && key.asymmetricKeyDetails?.namedCurve === P256_CURVE;\n } catch {\n // Not a parseable SPKI, which is the answer: refuse it.\n return false;\n }\n}\n\n/** Whether a value is a fresh-looking 32-byte base64url nonce. */\nexport function isDeviceNonce(value: unknown): value is string {\n return typeof value === 'string' && RANDOM_VALUE.test(value);\n}\n\nexport function isOpaqueId(value: unknown): value is string {\n return typeof value === 'string' && OPAQUE_ID.test(value);\n}\n\n/**\n * Single-use challenges, bounded in count and lifetime.\n *\n * Deleted on first `take`, whatever the outcome of the check that follows, so a\n * challenge cannot be retried. Expired entries are swept on every issue, and the\n * oldest entry goes when the store is full.\n */\nexport function createDeviceChallenges(options: DeviceChallengesOptions): DeviceChallenges {\n const random = options.random ?? ((bytes: number): string => randomBytes(bytes).toString('base64url'));\n const pending = new Map<string, DeviceChallenge>();\n const live = (entry: DeviceChallenge, at: number): boolean => at - entry.issuedAt < ttlOf(entry.purpose);\n\n return {\n issue(hostPublicKey, purpose) {\n const at = options.now();\n for (const [id, entry] of pending) if (!live(entry, at)) pending.delete(id);\n while (pending.size >= DEVICE_CHALLENGE_LIMIT) {\n const oldest = pending.keys().next().value;\n if (oldest === undefined) break;\n pending.delete(oldest);\n }\n const entry: DeviceChallenge = {\n id: random(CHALLENGE_ID_BYTES),\n challenge: random(RANDOM_BYTES),\n hostPublicKey,\n issuedAt: at,\n purpose,\n };\n pending.set(entry.id, entry);\n return entry;\n },\n\n take(id) {\n const entry = pending.get(id);\n if (entry === undefined) return undefined;\n pending.delete(id);\n return live(entry, options.now()) ? entry : undefined;\n },\n\n dropWhere(predicate) {\n for (const [id, entry] of pending) if (predicate(entry)) pending.delete(id);\n },\n\n clear: () => pending.clear(),\n size: () => pending.size,\n };\n}\n\n/**\n * The public reconnect challenge.\n *\n * It never consults the trusted-device list, so a known id and an unknown one\n * produce the same shape and the route cannot be used to enumerate devices.\n * The attestation proves the fresh tunnel key with the signer the phone pinned\n * at pairing, over the phone's own nonce. Undefined while the host cannot attest.\n */\nexport function deviceAuthChallenge(input: {\n challenges: DeviceChallenges;\n trustedDeviceId: string;\n nonce: string;\n origin: string;\n hostPublicKey: string;\n attest: (fields: readonly string[]) => string | undefined;\n}): { challengeId: string; challenge: string; hostPublicKey: string; attestation: string } | undefined {\n const attestation = input.attest(hostChannelKeyFields(input.origin, input.hostPublicKey, input.nonce));\n if (attestation === undefined) return undefined;\n const issued = input.challenges.issue(input.hostPublicKey, { kind: 'auth', trustedDeviceId: input.trustedDeviceId });\n return { challengeId: issued.id, challenge: issued.challenge, hostPublicKey: input.hostPublicKey, attestation };\n}\n\n/** A step-up challenge bound to one action and one session, answered by the biometric key. */\nexport function deviceStepUpChallenge(input: {\n challenges: DeviceChallenges;\n sessionDeviceId: string;\n action: StepUpAction;\n hostPublicKey: string;\n}): { ceremonyId: string; challenge: string; kind: 'device-key' } {\n const issued = input.challenges.issue(input.hostPublicKey, {\n kind: 'step-up',\n sessionDeviceId: input.sessionDeviceId,\n action: input.action,\n });\n return { ceremonyId: issued.id, challenge: issued.challenge, kind: 'device-key' };\n}\n\n/**\n * Checks a registration from a sealed `pairing` session.\n *\n * Both keys must be distinct P-256 SPKIs and both must sign the same\n * `po/device-register/v1` message, which binds them to this origin, this\n * tunnel key, and this exact session.\n */\nexport function verifyRegistration(input: {\n origin: string;\n hostPublicKey: string;\n sessionDeviceId: string;\n trust: DeviceTrust | undefined;\n body: unknown;\n}): RegistrationVerdict {\n if (input.trust?.kind !== 'pairing') return { ok: false, reason: 'not-pairing' };\n const body = input.body;\n if (!isRecord(body)) return { ok: false, reason: 'invalid' };\n const { identityPublicKey, stepUpPublicKey, label, platform, identityProof, stepUpProof } = body;\n if (\n !isP256PublicKey(identityPublicKey) ||\n !isP256PublicKey(stepUpPublicKey) ||\n identityPublicKey === stepUpPublicKey ||\n typeof label !== 'string' ||\n typeof platform !== 'string' ||\n !PLATFORMS.has(platform) ||\n !isBase64Url(identityProof, MAX_SIGNATURE_LENGTH) ||\n !isBase64Url(stepUpProof, MAX_SIGNATURE_LENGTH)\n )\n return { ok: false, reason: 'invalid' };\n const fields = deviceRegisterFields({\n origin: input.origin,\n hostPublicKey: input.hostPublicKey,\n sessionDeviceId: input.sessionDeviceId,\n identityPublicKey,\n stepUpPublicKey,\n platform,\n });\n if (\n !verifyDeviceSignature(identityPublicKey, DEVICE_REGISTER_TAG, fields, identityProof) ||\n !verifyDeviceSignature(stepUpPublicKey, DEVICE_REGISTER_TAG, fields, stepUpProof)\n )\n return { ok: false, reason: 'invalid' };\n return {\n ok: true,\n identityPublicKey,\n stepUpPublicKey,\n // Attacker-supplied and shown in the host UI, so it is cleaned like a user agent.\n label: sanitizeUserAgent(label),\n platform: platform as TrustedDevicePlatform,\n };\n}\n\nfunction channelKeysOf(value: unknown): DeviceChannelKeys | undefined {\n if (!isRecord(value)) return undefined;\n const { session, protocol, http } = value;\n if (\n !isBase64Url(session, MAX_CHANNEL_KEY_LENGTH) ||\n !isBase64Url(protocol, MAX_CHANNEL_KEY_LENGTH) ||\n !isBase64Url(http, MAX_CHANNEL_KEY_LENGTH)\n )\n return undefined;\n if (session === protocol || session === http || protocol === http) return undefined;\n return { session, protocol, http };\n}\n\n/**\n * Checks a device sign-in. The challenge is consumed before anything else is\n * looked at, so every attempt, good or bad, burns it.\n */\nexport function verifyAuthentication(input: {\n challenges: DeviceChallenges;\n origin: string;\n /** The tunnel key in force now; a challenge issued under another one is refused. */\n hostPublicKey: string | undefined;\n find: (trustedDeviceId: string) => TrustedDeviceRecord | undefined;\n body: unknown;\n}): AuthenticationVerdict {\n const body = input.body;\n if (!isRecord(body) || !isOpaqueId(body.challengeId)) return { ok: false };\n const issued = input.challenges.take(body.challengeId);\n if (issued === undefined || issued.purpose.kind !== 'auth') return { ok: false };\n if (input.hostPublicKey === undefined || issued.hostPublicKey !== input.hostPublicKey) return { ok: false };\n if (!isOpaqueId(body.trustedDeviceId) || body.trustedDeviceId !== issued.purpose.trustedDeviceId)\n return { ok: false };\n if (!isBase64Url(body.signature, MAX_SIGNATURE_LENGTH)) return { ok: false };\n const channels = channelKeysOf(body.channels);\n if (channels === undefined) return { ok: false };\n const record = input.find(body.trustedDeviceId);\n if (record === undefined) return { ok: false };\n const fields = deviceAuthFields({\n origin: input.origin,\n challenge: issued.challenge,\n hostPublicKey: issued.hostPublicKey,\n trustedDeviceId: record.id,\n channels,\n });\n if (!verifyDeviceSignature(record.identityPublicKey, DEVICE_AUTH_TAG, fields, body.signature)) return { ok: false };\n return { ok: true, record, channels };\n}\n\n/** Checks a biometric step-up signature for one action from one device-key session. */\nexport function verifyStepUp(input: {\n challenges: DeviceChallenges;\n origin: string;\n hostPublicKey: string | undefined;\n sessionDeviceId: string;\n action: string;\n ceremonyId: unknown;\n signature: unknown;\n stepUpPublicKey: string;\n}): boolean {\n if (!isOpaqueId(input.ceremonyId) || !isStepUpAction(input.action)) return false;\n const issued = input.challenges.take(input.ceremonyId);\n if (issued === undefined || issued.purpose.kind !== 'step-up') return false;\n if (input.hostPublicKey === undefined || issued.hostPublicKey !== input.hostPublicKey) return false;\n if (issued.purpose.sessionDeviceId !== input.sessionDeviceId || issued.purpose.action !== input.action) return false;\n if (!isBase64Url(input.signature, MAX_SIGNATURE_LENGTH)) return false;\n return verifyDeviceSignature(\n input.stepUpPublicKey,\n DEVICE_STEP_UP_TAG,\n deviceStepUpFields({\n origin: input.origin,\n action: input.action,\n sessionDeviceId: input.sessionDeviceId,\n challengeId: issued.id,\n challenge: issued.challenge,\n }),\n input.signature,\n );\n}\n"],"mappings":"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"}