@agimon-ai/po-core 0.0.0-alpha.2 → 0.0.0-alpha.21

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 (1149) hide show
  1. package/LICENSE +149 -21
  2. package/NOTICE +41 -0
  3. package/dist/agentModel.cjs +1 -1
  4. package/dist/agentModel.d.mts +2 -2
  5. package/dist/agentModel.mjs +1 -2
  6. package/dist/apiContracts.cjs +623 -802
  7. package/dist/apiContracts.cjs.map +1 -1
  8. package/dist/apiContracts.d.mts +277 -615
  9. package/dist/apiContracts.d.mts.map +1 -1
  10. package/dist/apiContracts.mjs +617 -794
  11. package/dist/apiContracts.mjs.map +1 -1
  12. package/dist/askUser.cjs +2 -2
  13. package/dist/askUser.d.mts +2 -2
  14. package/dist/askUser.mjs +1 -2
  15. package/dist/authorTools.mjs +1 -2
  16. package/dist/backgroundWork.cjs +3 -3
  17. package/dist/backgroundWork.d.mts +2 -2
  18. package/dist/backgroundWork.mjs +1 -2
  19. package/dist/bundleAssetPolicy.mjs +1 -2
  20. package/dist/chatgptAuth.cjs +3 -2
  21. package/dist/chatgptAuth.d.mts +3 -2
  22. package/dist/chatgptAuth.mjs +2 -1
  23. package/dist/childProcess.cjs +1 -1
  24. package/dist/childProcess.d.mts +2 -2
  25. package/dist/childProcess.mjs +1 -2
  26. package/dist/childSession.cjs +11 -6
  27. package/dist/childSession.d.mts +3 -3
  28. package/dist/childSession.mjs +3 -3
  29. package/dist/cockpitContainer.mjs +1 -2
  30. package/dist/config.cjs +1 -1
  31. package/dist/config.d.mts +3 -3
  32. package/dist/config.mjs +1 -2
  33. package/dist/contextApi.cjs +1 -0
  34. package/dist/contextApi.d.mts +2 -2
  35. package/dist/contextApi.mjs +2 -2
  36. package/dist/contextContributions.cjs +4 -4
  37. package/dist/contextContributions.d.mts +3 -3
  38. package/dist/contextContributions.mjs +3 -3
  39. package/dist/contextDetailStore.cjs +7 -5
  40. package/dist/contextDetailStore.cjs.map +1 -1
  41. package/dist/contextDetailStore.d.mts +2 -1
  42. package/dist/contextDetailStore.d.mts.map +1 -1
  43. package/dist/contextDetailStore.mjs +6 -4
  44. package/dist/contextDetailStore.mjs.map +1 -1
  45. package/dist/contextProjection.cjs +7 -2
  46. package/dist/contextProjection.cjs.map +1 -1
  47. package/dist/contextProjection.d.mts +4 -1
  48. package/dist/contextProjection.d.mts.map +1 -1
  49. package/dist/contextProjection.mjs +5 -2
  50. package/dist/contextProjection.mjs.map +1 -1
  51. package/dist/cordisHost.cjs +11 -11
  52. package/dist/cordisHost.d.mts +2 -2
  53. package/dist/cordisHost.mjs +1 -2
  54. package/dist/delegation.cjs +8 -8
  55. package/dist/delegation.d.mts +2 -2
  56. package/dist/delegation.mjs +1 -2
  57. package/dist/executionBudget.cjs +4 -3
  58. package/dist/executionBudget.cjs.map +1 -1
  59. package/dist/executionBudget.d.mts +2 -2
  60. package/dist/executionBudget.d.mts.map +1 -1
  61. package/dist/executionBudget.mjs +4 -3
  62. package/dist/executionBudget.mjs.map +1 -1
  63. package/dist/extensionFile.cjs +5 -0
  64. package/dist/extensionFile.d.mts +4 -2
  65. package/dist/extensionFile.mjs +4 -2
  66. package/dist/footer.d.mts +2 -2
  67. package/dist/footer.mjs +1 -2
  68. package/dist/headless.cjs +14 -14
  69. package/dist/headless.d.mts +2 -2
  70. package/dist/headless.mjs +1 -2
  71. package/dist/headlessHub.cjs +308 -109
  72. package/dist/headlessHub.cjs.map +1 -1
  73. package/dist/headlessHub.d.mts +71 -36
  74. package/dist/headlessHub.d.mts.map +1 -1
  75. package/dist/headlessHub.mjs +309 -110
  76. package/dist/headlessHub.mjs.map +1 -1
  77. package/dist/headlessProtocol.cjs +327 -0
  78. package/dist/headlessProtocol.cjs.map +1 -0
  79. package/dist/headlessProtocol.d.mts +30 -0
  80. package/dist/headlessProtocol.d.mts.map +1 -0
  81. package/dist/headlessProtocol.mjs +326 -0
  82. package/dist/headlessProtocol.mjs.map +1 -0
  83. package/dist/headlessServer.cjs +166 -151
  84. package/dist/headlessServer.cjs.map +1 -1
  85. package/dist/headlessServer.d.mts +13 -5
  86. package/dist/headlessServer.d.mts.map +1 -1
  87. package/dist/headlessServer.mjs +166 -151
  88. package/dist/headlessServer.mjs.map +1 -1
  89. package/dist/headlessSessionHost.d.mts +58 -21
  90. package/dist/headlessSessionHost.d.mts.map +1 -1
  91. package/dist/help.cjs +20 -20
  92. package/dist/help.d.mts +2 -2
  93. package/dist/help.mjs +2 -2
  94. package/dist/history.cjs +16 -20
  95. package/dist/history.d.mts +9 -7
  96. package/dist/history.mjs +6 -7
  97. package/dist/historyOwnership.cjs.map +1 -1
  98. package/dist/historyOwnership.d.mts +1 -1
  99. package/dist/historyOwnership.mjs.map +1 -1
  100. package/dist/hubChannel.cjs +9 -0
  101. package/dist/hubChannel.d.mts +3 -2
  102. package/dist/hubChannel.mjs +3 -2
  103. package/dist/index.cjs +26 -28
  104. package/dist/index.d.mts +6 -6
  105. package/dist/index.mjs +6 -6
  106. package/dist/interop/chord.mjs +1 -0
  107. package/dist/interop/chordContext.mjs +1 -0
  108. package/dist/json.cjs +11 -5
  109. package/dist/json.d.mts +4 -2
  110. package/dist/json.mjs +4 -2
  111. package/dist/kernel.cjs +1 -1
  112. package/dist/kernel.d.mts +3 -3
  113. package/dist/kernel.mjs +1 -2
  114. package/dist/leader.d.mts +2 -2
  115. package/dist/leader.mjs +1 -2
  116. package/dist/logSinkTelemetry.mjs +1 -2
  117. package/dist/machineApi.cjs +80 -74
  118. package/dist/machineApi.cjs.map +1 -1
  119. package/dist/machineApi.d.mts +5 -2
  120. package/dist/machineApi.d.mts.map +1 -1
  121. package/dist/machineApi.mjs +78 -71
  122. package/dist/machineApi.mjs.map +1 -1
  123. package/dist/main.cjs +2 -1
  124. package/dist/main.d.mts +2 -1
  125. package/dist/main.mjs +2 -1
  126. package/dist/mcpFacet.d.mts +3 -3
  127. package/dist/mcpProjection.cjs +13 -13
  128. package/dist/mcpProjection.d.mts +2 -2
  129. package/dist/mcpProjection.mjs +1 -2
  130. package/dist/mcpSchemaCost.cjs +4 -4
  131. package/dist/mcpSchemaCost.cjs.map +1 -1
  132. package/dist/mcpSchemaCost.d.mts +2 -2
  133. package/dist/mcpSchemaCost.mjs +4 -4
  134. package/dist/mcpSchemaCost.mjs.map +1 -1
  135. package/dist/mcpSession.cjs +7 -7
  136. package/dist/mcpSession.d.mts +2 -2
  137. package/dist/mcpSession.mjs +1 -2
  138. package/dist/mcpStatus.cjs +2 -2
  139. package/dist/mcpStatus.d.mts +2 -2
  140. package/dist/mcpStatus.mjs +1 -2
  141. package/dist/mcpToolResolver.cjs +3 -3
  142. package/dist/mcpToolResolver.d.mts +2 -2
  143. package/dist/mcpToolResolver.mjs +1 -2
  144. package/dist/mcpWidget.d.mts +2 -2
  145. package/dist/moduleResolution.cjs +43 -8
  146. package/dist/moduleResolution.cjs.map +1 -1
  147. package/dist/moduleResolution.d.mts +10 -1
  148. package/dist/moduleResolution.d.mts.map +1 -1
  149. package/dist/moduleResolution.mjs +40 -7
  150. package/dist/moduleResolution.mjs.map +1 -1
  151. package/dist/narration.cjs +3 -3
  152. package/dist/narration.d.mts +2 -2
  153. package/dist/narration.mjs +1 -2
  154. package/dist/native.cjs +9 -0
  155. package/dist/native.d.mts +4 -3
  156. package/dist/native.mjs +3 -2
  157. package/dist/nodePlatform.cjs +77 -0
  158. package/dist/nodePlatform.cjs.map +1 -0
  159. package/dist/nodePlatform.d.mts +17 -0
  160. package/dist/nodePlatform.d.mts.map +1 -0
  161. package/dist/nodePlatform.mjs +72 -0
  162. package/dist/nodePlatform.mjs.map +1 -0
  163. package/dist/notification.cjs +15 -15
  164. package/dist/notification.d.mts +2 -2
  165. package/dist/notification.mjs +1 -2
  166. package/dist/packageApi.cjs +11 -11
  167. package/dist/packageApi.d.mts +2 -2
  168. package/dist/packageApi.mjs +2 -2
  169. package/dist/packageApiServer.cjs +45 -27
  170. package/dist/packageApiServer.cjs.map +1 -1
  171. package/dist/packageApiServer.d.mts +36 -26
  172. package/dist/packageApiServer.d.mts.map +1 -1
  173. package/dist/packageApiServer.mjs +44 -26
  174. package/dist/packageApiServer.mjs.map +1 -1
  175. package/dist/piSettings.cjs +41 -20
  176. package/dist/piSettings.d.mts +4 -2
  177. package/dist/piSettings.mjs +4 -2
  178. package/dist/platform.cjs +62 -0
  179. package/dist/platform.d.mts +10 -0
  180. package/dist/platform.mjs +10 -0
  181. package/dist/pluginProtocol.cjs +7 -8
  182. package/dist/pluginProtocol.d.mts +2 -2
  183. package/dist/pluginProtocol.mjs +1 -2
  184. package/dist/poPackage.cjs +12 -0
  185. package/dist/poPackage.d.mts +3 -0
  186. package/dist/poPackage.mjs +3 -0
  187. package/dist/profileIdentity.cjs +1 -1
  188. package/dist/profileIdentity.d.mts +2 -2
  189. package/dist/profileIdentity.mjs +1 -2
  190. package/dist/protocol.cjs +3 -3
  191. package/dist/protocol.d.mts +2 -2
  192. package/dist/protocol.mjs +1 -2
  193. package/dist/readiness.cjs +6 -6
  194. package/dist/readiness.d.mts +2 -2
  195. package/dist/readiness.mjs +1 -2
  196. package/dist/remoteApi.cjs.map +1 -1
  197. package/dist/remoteApi.d.mts +2 -2
  198. package/dist/remoteApi.mjs.map +1 -1
  199. package/dist/remoteRuntime.cjs +42 -65
  200. package/dist/remoteRuntime.cjs.map +1 -1
  201. package/dist/remoteRuntime.d.mts +3 -2
  202. package/dist/remoteRuntime.d.mts.map +1 -1
  203. package/dist/remoteRuntime.mjs +41 -62
  204. package/dist/remoteRuntime.mjs.map +1 -1
  205. package/dist/runtimeConfig.cjs +4 -4
  206. package/dist/runtimeConfig.cjs.map +1 -1
  207. package/dist/runtimeConfig.d.mts +10 -9
  208. package/dist/runtimeConfig.d.mts.map +1 -1
  209. package/dist/runtimeConfig.mjs +4 -4
  210. package/dist/runtimeConfig.mjs.map +1 -1
  211. package/dist/runtimeContextApi.cjs +10 -3
  212. package/dist/runtimeContextApi.cjs.map +1 -1
  213. package/dist/runtimeContextApi.d.mts +3 -3
  214. package/dist/runtimeContextApi.d.mts.map +1 -1
  215. package/dist/runtimeContextApi.mjs +10 -3
  216. package/dist/runtimeContextApi.mjs.map +1 -1
  217. package/dist/runtimeCordisHost.cjs +46 -46
  218. package/dist/runtimeCordisHost.cjs.map +1 -1
  219. package/dist/runtimeCordisHost.d.mts +29 -28
  220. package/dist/runtimeCordisHost.d.mts.map +1 -1
  221. package/dist/runtimeCordisHost.mjs +42 -42
  222. package/dist/runtimeCordisHost.mjs.map +1 -1
  223. package/dist/runtimeIdentity.cjs +6 -9
  224. package/dist/runtimeIdentity.cjs.map +1 -1
  225. package/dist/runtimeIdentity.d.mts +5 -1
  226. package/dist/runtimeIdentity.d.mts.map +1 -1
  227. package/dist/runtimeIdentity.mjs +5 -8
  228. package/dist/runtimeIdentity.mjs.map +1 -1
  229. package/dist/runtimeJson.cjs +10 -45
  230. package/dist/runtimeJson.d.mts +3 -22
  231. package/dist/runtimeJson.mjs +3 -39
  232. package/dist/runtimeLogSinkTelemetry.cjs +19 -19
  233. package/dist/runtimeLogSinkTelemetry.cjs.map +1 -1
  234. package/dist/runtimeLogSinkTelemetry.d.mts +19 -19
  235. package/dist/runtimeLogSinkTelemetry.mjs +19 -19
  236. package/dist/runtimeLogSinkTelemetry.mjs.map +1 -1
  237. package/dist/runtimePackages.cjs +7 -2
  238. package/dist/runtimePackages.cjs.map +1 -1
  239. package/dist/runtimePackages.d.mts +4 -1
  240. package/dist/runtimePackages.d.mts.map +1 -1
  241. package/dist/runtimePackages.mjs +7 -2
  242. package/dist/runtimePackages.mjs.map +1 -1
  243. package/dist/runtimePiSettings.cjs +40 -263
  244. package/dist/runtimePiSettings.d.mts +3 -72
  245. package/dist/runtimePiSettings.mjs +3 -241
  246. package/dist/runtimeProtocol.cjs +19 -19
  247. package/dist/runtimeProtocol.cjs.map +1 -1
  248. package/dist/runtimeProtocol.d.mts +7 -7
  249. package/dist/runtimeProtocol.d.mts.map +1 -1
  250. package/dist/runtimeProtocol.mjs +17 -17
  251. package/dist/runtimeProtocol.mjs.map +1 -1
  252. package/dist/runtimeTransition.cjs +9 -9
  253. package/dist/runtimeTransition.cjs.map +1 -1
  254. package/dist/runtimeTransition.d.mts +10 -10
  255. package/dist/runtimeTransition.d.mts.map +1 -1
  256. package/dist/runtimeTransition.mjs +7 -7
  257. package/dist/runtimeTransition.mjs.map +1 -1
  258. package/dist/sandboxHarness.mjs +1 -2
  259. package/dist/server.cjs +3 -7
  260. package/dist/server.d.mts +6 -6
  261. package/dist/server.mjs +3 -4
  262. package/dist/serverPlugin.cjs +39 -0
  263. package/dist/serverPlugin.d.mts +12 -0
  264. package/dist/serverPlugin.mjs +11 -0
  265. package/dist/serverTelemetry.cjs +1 -1
  266. package/dist/serverTelemetry.cjs.map +1 -1
  267. package/dist/serverTelemetry.d.mts +2 -2
  268. package/dist/serverTelemetry.mjs +2 -2
  269. package/dist/serverTelemetry.mjs.map +1 -1
  270. package/dist/sessionFilesApi.cjs +41 -37
  271. package/dist/sessionFilesApi.cjs.map +1 -1
  272. package/dist/sessionFilesApi.d.mts +6 -3
  273. package/dist/sessionFilesApi.d.mts.map +1 -1
  274. package/dist/sessionFilesApi.mjs +41 -36
  275. package/dist/sessionFilesApi.mjs.map +1 -1
  276. package/dist/sessionProtocol.cjs +31 -6
  277. package/dist/sessionProtocol.d.mts +8 -3
  278. package/dist/sessionProtocol.mjs +8 -2
  279. package/dist/skills.cjs +5 -5
  280. package/dist/skills.d.mts +2 -2
  281. package/dist/skills.mjs +1 -2
  282. package/dist/sqliteSessionStorage.cjs +28 -50
  283. package/dist/sqliteSessionStorage.cjs.map +1 -1
  284. package/dist/sqliteSessionStorage.d.mts +13 -20
  285. package/dist/sqliteSessionStorage.d.mts.map +1 -1
  286. package/dist/sqliteSessionStorage.mjs +25 -48
  287. package/dist/sqliteSessionStorage.mjs.map +1 -1
  288. package/dist/src/constants/agentSettled.cjs +7 -0
  289. package/dist/src/constants/agentSettled.cjs.map +1 -0
  290. package/dist/src/constants/agentSettled.mjs +7 -0
  291. package/dist/src/constants/agentSettled.mjs.map +1 -0
  292. package/dist/src/constants/contextApi.cjs +3 -1
  293. package/dist/src/constants/contextApi.cjs.map +1 -1
  294. package/dist/src/constants/contextApi.d.mts +2 -1
  295. package/dist/src/constants/contextApi.d.mts.map +1 -1
  296. package/dist/src/constants/contextApi.mjs +3 -2
  297. package/dist/src/constants/contextApi.mjs.map +1 -1
  298. package/dist/src/constants/voiceTools.cjs +6 -6
  299. package/dist/src/constants/voiceTools.cjs.map +1 -1
  300. package/dist/src/constants/voiceTools.d.mts +3 -3
  301. package/dist/src/constants/voiceTools.mjs +4 -4
  302. package/dist/src/constants/voiceTools.mjs.map +1 -1
  303. package/dist/src/extensions/extensionFile.cjs +22 -5
  304. package/dist/src/extensions/extensionFile.cjs.map +1 -1
  305. package/dist/src/extensions/extensionFile.d.mts +17 -4
  306. package/dist/src/extensions/extensionFile.d.mts.map +1 -1
  307. package/dist/src/extensions/extensionFile.mjs +22 -6
  308. package/dist/src/extensions/extensionFile.mjs.map +1 -1
  309. package/dist/src/extensions/serverPlugin.cjs +231 -92
  310. package/dist/src/extensions/serverPlugin.cjs.map +1 -1
  311. package/dist/src/extensions/serverPlugin.d.mts +2 -2
  312. package/dist/src/extensions/serverPlugin.d.mts.map +1 -1
  313. package/dist/src/extensions/serverPlugin.mjs +232 -93
  314. package/dist/src/extensions/serverPlugin.mjs.map +1 -1
  315. package/dist/src/pi/piSessionRuntime.cjs +349 -142
  316. package/dist/src/pi/piSessionRuntime.cjs.map +1 -1
  317. package/dist/src/pi/piSessionRuntime.d.mts +18 -17
  318. package/dist/src/pi/piSessionRuntime.d.mts.map +1 -1
  319. package/dist/src/pi/piSessionRuntime.mjs +342 -135
  320. package/dist/src/pi/piSessionRuntime.mjs.map +1 -1
  321. package/dist/src/schemas/agentModel.cjs +2 -2
  322. package/dist/src/schemas/agentModel.cjs.map +1 -1
  323. package/dist/src/schemas/agentModel.d.mts +1 -1
  324. package/dist/src/schemas/agentModel.mjs +2 -2
  325. package/dist/src/schemas/agentModel.mjs.map +1 -1
  326. package/dist/src/schemas/apiContracts.d.mts +2 -2
  327. package/dist/src/schemas/apiContracts.d.mts.map +1 -1
  328. package/dist/src/schemas/askUser.cjs +4 -4
  329. package/dist/src/schemas/askUser.cjs.map +1 -1
  330. package/dist/src/schemas/askUser.d.mts +4 -4
  331. package/dist/src/schemas/askUser.d.mts.map +1 -1
  332. package/dist/src/schemas/askUser.mjs +3 -3
  333. package/dist/src/schemas/askUser.mjs.map +1 -1
  334. package/dist/src/schemas/backgroundWork.cjs +10 -10
  335. package/dist/src/schemas/backgroundWork.cjs.map +1 -1
  336. package/dist/src/schemas/backgroundWork.d.mts +9 -9
  337. package/dist/src/schemas/backgroundWork.d.mts.map +1 -1
  338. package/dist/src/schemas/backgroundWork.mjs +8 -8
  339. package/dist/src/schemas/backgroundWork.mjs.map +1 -1
  340. package/dist/src/schemas/childProcess.cjs +5 -5
  341. package/dist/src/schemas/childProcess.cjs.map +1 -1
  342. package/dist/src/schemas/childProcess.d.mts +2 -2
  343. package/dist/src/schemas/childProcess.mjs +5 -5
  344. package/dist/src/schemas/childProcess.mjs.map +1 -1
  345. package/dist/src/schemas/contextContributions.cjs +10 -10
  346. package/dist/src/schemas/contextContributions.cjs.map +1 -1
  347. package/dist/src/schemas/contextContributions.d.mts +16 -16
  348. package/dist/src/schemas/contextContributions.d.mts.map +1 -1
  349. package/dist/src/schemas/contextContributions.mjs +8 -8
  350. package/dist/src/schemas/contextContributions.mjs.map +1 -1
  351. package/dist/src/schemas/delegation.cjs +17 -17
  352. package/dist/src/schemas/delegation.cjs.map +1 -1
  353. package/dist/src/schemas/delegation.d.mts +16 -16
  354. package/dist/src/schemas/delegation.d.mts.map +1 -1
  355. package/dist/src/schemas/delegation.mjs +10 -10
  356. package/dist/src/schemas/delegation.mjs.map +1 -1
  357. package/dist/src/schemas/extensionFile.d.mts +23 -19
  358. package/dist/src/schemas/extensionFile.d.mts.map +1 -1
  359. package/dist/src/schemas/footer.cjs.map +1 -1
  360. package/dist/src/schemas/footer.d.mts +5 -5
  361. package/dist/src/schemas/footer.d.mts.map +1 -1
  362. package/dist/src/schemas/footer.mjs.map +1 -1
  363. package/dist/src/schemas/headless.cjs +37 -37
  364. package/dist/src/schemas/headless.cjs.map +1 -1
  365. package/dist/src/schemas/headless.d.mts +100 -101
  366. package/dist/src/schemas/headless.d.mts.map +1 -1
  367. package/dist/src/schemas/headless.mjs +24 -24
  368. package/dist/src/schemas/headless.mjs.map +1 -1
  369. package/dist/src/schemas/help.cjs +60 -60
  370. package/dist/src/schemas/help.cjs.map +1 -1
  371. package/dist/src/schemas/help.d.mts +43 -43
  372. package/dist/src/schemas/help.d.mts.map +1 -1
  373. package/dist/src/schemas/help.mjs +41 -41
  374. package/dist/src/schemas/help.mjs.map +1 -1
  375. package/dist/src/schemas/home.cjs +127 -0
  376. package/dist/src/schemas/home.cjs.map +1 -0
  377. package/dist/src/schemas/home.d.mts +63 -0
  378. package/dist/src/schemas/home.d.mts.map +1 -0
  379. package/dist/src/schemas/home.mjs +121 -0
  380. package/dist/src/schemas/home.mjs.map +1 -0
  381. package/dist/src/schemas/httpApiContracts.cjs +441 -0
  382. package/dist/src/schemas/httpApiContracts.cjs.map +1 -0
  383. package/dist/src/schemas/httpApiContracts.d.mts +78 -0
  384. package/dist/src/schemas/httpApiContracts.d.mts.map +1 -0
  385. package/dist/src/schemas/httpApiContracts.mjs +434 -0
  386. package/dist/src/schemas/httpApiContracts.mjs.map +1 -0
  387. package/dist/src/schemas/hubChannel.cjs +3 -0
  388. package/dist/src/schemas/hubChannel.cjs.map +1 -1
  389. package/dist/src/schemas/hubChannel.d.mts +84 -60
  390. package/dist/src/schemas/hubChannel.d.mts.map +1 -1
  391. package/dist/src/schemas/hubChannel.mjs +3 -1
  392. package/dist/src/schemas/hubChannel.mjs.map +1 -1
  393. package/dist/src/schemas/leader.cjs.map +1 -1
  394. package/dist/src/schemas/leader.d.mts +3 -3
  395. package/dist/src/schemas/leader.d.mts.map +1 -1
  396. package/dist/src/schemas/leader.mjs.map +1 -1
  397. package/dist/src/schemas/mcpBundle.d.mts +3 -3
  398. package/dist/src/schemas/mcpFacet.cjs.map +1 -1
  399. package/dist/src/schemas/mcpFacet.d.mts +22 -22
  400. package/dist/src/schemas/mcpFacet.d.mts.map +1 -1
  401. package/dist/src/schemas/mcpFacet.mjs.map +1 -1
  402. package/dist/src/schemas/mcpProjection.cjs +41 -41
  403. package/dist/src/schemas/mcpProjection.cjs.map +1 -1
  404. package/dist/src/schemas/mcpProjection.d.mts +31 -30
  405. package/dist/src/schemas/mcpProjection.d.mts.map +1 -1
  406. package/dist/src/schemas/mcpProjection.mjs +29 -29
  407. package/dist/src/schemas/mcpProjection.mjs.map +1 -1
  408. package/dist/src/schemas/mcpSession.cjs +23 -23
  409. package/dist/src/schemas/mcpSession.cjs.map +1 -1
  410. package/dist/src/schemas/mcpSession.d.mts +12 -12
  411. package/dist/src/schemas/mcpSession.d.mts.map +1 -1
  412. package/dist/src/schemas/mcpSession.mjs +18 -18
  413. package/dist/src/schemas/mcpSession.mjs.map +1 -1
  414. package/dist/src/schemas/mcpStatus.cjs +5 -5
  415. package/dist/src/schemas/mcpStatus.cjs.map +1 -1
  416. package/dist/src/schemas/mcpStatus.d.mts +4 -4
  417. package/dist/src/schemas/mcpStatus.d.mts.map +1 -1
  418. package/dist/src/schemas/mcpStatus.mjs +4 -4
  419. package/dist/src/schemas/mcpStatus.mjs.map +1 -1
  420. package/dist/src/schemas/mcpToolResolver.cjs +9 -9
  421. package/dist/src/schemas/mcpToolResolver.cjs.map +1 -1
  422. package/dist/src/schemas/mcpToolResolver.d.mts +7 -7
  423. package/dist/src/schemas/mcpToolResolver.d.mts.map +1 -1
  424. package/dist/src/schemas/mcpToolResolver.mjs +7 -7
  425. package/dist/src/schemas/mcpToolResolver.mjs.map +1 -1
  426. package/dist/src/schemas/narration.cjs +9 -9
  427. package/dist/src/schemas/narration.cjs.map +1 -1
  428. package/dist/src/schemas/narration.d.mts +5 -5
  429. package/dist/src/schemas/narration.d.mts.map +1 -1
  430. package/dist/src/schemas/narration.mjs +7 -7
  431. package/dist/src/schemas/narration.mjs.map +1 -1
  432. package/dist/src/schemas/notification.cjs +45 -45
  433. package/dist/src/schemas/notification.cjs.map +1 -1
  434. package/dist/src/schemas/notification.d.mts +22 -22
  435. package/dist/src/schemas/notification.d.mts.map +1 -1
  436. package/dist/src/schemas/notification.mjs +31 -31
  437. package/dist/src/schemas/notification.mjs.map +1 -1
  438. package/dist/src/schemas/packageApi.cjs +28 -28
  439. package/dist/src/schemas/packageApi.cjs.map +1 -1
  440. package/dist/src/schemas/packageApi.d.mts +91 -65
  441. package/dist/src/schemas/packageApi.d.mts.map +1 -1
  442. package/dist/src/schemas/packageApi.mjs +18 -18
  443. package/dist/src/schemas/packageApi.mjs.map +1 -1
  444. package/dist/src/schemas/platform.cjs +34 -0
  445. package/dist/src/schemas/platform.cjs.map +1 -0
  446. package/dist/src/schemas/platform.d.mts +75 -0
  447. package/dist/src/schemas/platform.d.mts.map +1 -0
  448. package/dist/src/schemas/platform.mjs +27 -0
  449. package/dist/src/schemas/platform.mjs.map +1 -0
  450. package/dist/src/schemas/pluginContributions.cjs.map +1 -1
  451. package/dist/src/schemas/pluginContributions.d.mts +12 -12
  452. package/dist/src/schemas/pluginContributions.d.mts.map +1 -1
  453. package/dist/src/schemas/pluginContributions.mjs.map +1 -1
  454. package/dist/src/schemas/pluginProtocol.cjs +24 -27
  455. package/dist/src/schemas/pluginProtocol.cjs.map +1 -1
  456. package/dist/src/schemas/pluginProtocol.d.mts +21 -21
  457. package/dist/src/schemas/pluginProtocol.d.mts.map +1 -1
  458. package/dist/src/schemas/pluginProtocol.mjs +18 -20
  459. package/dist/src/schemas/pluginProtocol.mjs.map +1 -1
  460. package/dist/src/schemas/profileIdentity.cjs +2 -2
  461. package/dist/src/schemas/profileIdentity.cjs.map +1 -1
  462. package/dist/src/schemas/profileIdentity.d.mts +1 -1
  463. package/dist/src/schemas/profileIdentity.mjs +2 -2
  464. package/dist/src/schemas/profileIdentity.mjs.map +1 -1
  465. package/dist/src/schemas/protocolChannelsContract.cjs +27 -0
  466. package/dist/src/schemas/protocolChannelsContract.cjs.map +1 -0
  467. package/dist/src/schemas/protocolChannelsContract.d.mts +37 -0
  468. package/dist/src/schemas/protocolChannelsContract.d.mts.map +1 -0
  469. package/dist/src/schemas/protocolChannelsContract.mjs +25 -0
  470. package/dist/src/schemas/protocolChannelsContract.mjs.map +1 -0
  471. package/dist/src/schemas/protocolContracts.cjs +168 -0
  472. package/dist/src/schemas/protocolContracts.cjs.map +1 -0
  473. package/dist/src/schemas/protocolContracts.d.mts +69 -0
  474. package/dist/src/schemas/protocolContracts.d.mts.map +1 -0
  475. package/dist/src/schemas/protocolContracts.mjs +164 -0
  476. package/dist/src/schemas/protocolContracts.mjs.map +1 -0
  477. package/dist/src/schemas/protocolHubContract.cjs +51 -0
  478. package/dist/src/schemas/protocolHubContract.cjs.map +1 -0
  479. package/dist/src/schemas/protocolHubContract.d.mts +218 -0
  480. package/dist/src/schemas/protocolHubContract.d.mts.map +1 -0
  481. package/dist/src/schemas/protocolHubContract.mjs +49 -0
  482. package/dist/src/schemas/protocolHubContract.mjs.map +1 -0
  483. package/dist/src/schemas/protocolSessionContract.cjs +22 -0
  484. package/dist/src/schemas/protocolSessionContract.cjs.map +1 -0
  485. package/dist/src/schemas/protocolSessionContract.d.mts +324 -0
  486. package/dist/src/schemas/protocolSessionContract.d.mts.map +1 -0
  487. package/dist/src/schemas/protocolSessionContract.mjs +22 -0
  488. package/dist/src/schemas/protocolSessionContract.mjs.map +1 -0
  489. package/dist/src/schemas/protocolThreadContract.cjs +21 -0
  490. package/dist/src/schemas/protocolThreadContract.cjs.map +1 -0
  491. package/dist/src/schemas/protocolThreadContract.d.mts +29 -0
  492. package/dist/src/schemas/protocolThreadContract.d.mts.map +1 -0
  493. package/dist/src/schemas/protocolThreadContract.mjs +20 -0
  494. package/dist/src/schemas/protocolThreadContract.mjs.map +1 -0
  495. package/dist/src/schemas/readiness.cjs +36 -36
  496. package/dist/src/schemas/readiness.cjs.map +1 -1
  497. package/dist/src/schemas/readiness.d.mts +37 -37
  498. package/dist/src/schemas/readiness.d.mts.map +1 -1
  499. package/dist/src/schemas/readiness.mjs +31 -31
  500. package/dist/src/schemas/readiness.mjs.map +1 -1
  501. package/dist/src/schemas/serverBundle.d.mts +5 -5
  502. package/dist/src/schemas/serverPlugin.cjs +103 -0
  503. package/dist/src/schemas/serverPlugin.cjs.map +1 -0
  504. package/dist/src/schemas/serverPlugin.d.mts +176 -0
  505. package/dist/src/schemas/serverPlugin.d.mts.map +1 -0
  506. package/dist/src/schemas/serverPlugin.mjs +95 -0
  507. package/dist/src/schemas/serverPlugin.mjs.map +1 -0
  508. package/dist/src/schemas/serverScope.cjs +37 -0
  509. package/dist/src/schemas/serverScope.cjs.map +1 -0
  510. package/dist/src/schemas/serverScope.d.mts +77 -0
  511. package/dist/src/schemas/serverScope.d.mts.map +1 -0
  512. package/dist/src/schemas/serverScope.mjs +33 -0
  513. package/dist/src/schemas/serverScope.mjs.map +1 -0
  514. package/dist/src/schemas/sessionApiContracts.cjs +320 -0
  515. package/dist/src/schemas/sessionApiContracts.cjs.map +1 -0
  516. package/dist/src/schemas/sessionApiContracts.mjs +318 -0
  517. package/dist/src/schemas/sessionApiContracts.mjs.map +1 -0
  518. package/dist/src/schemas/sessionProtocol.cjs +20 -13
  519. package/dist/src/schemas/sessionProtocol.cjs.map +1 -1
  520. package/dist/src/schemas/sessionProtocol.d.mts +37 -54
  521. package/dist/src/schemas/sessionProtocol.d.mts.map +1 -1
  522. package/dist/src/schemas/sessionProtocol.mjs +17 -8
  523. package/dist/src/schemas/sessionProtocol.mjs.map +1 -1
  524. package/dist/src/schemas/skills.cjs +16 -16
  525. package/dist/src/schemas/skills.cjs.map +1 -1
  526. package/dist/src/schemas/skills.d.mts +7 -7
  527. package/dist/src/schemas/skills.d.mts.map +1 -1
  528. package/dist/src/schemas/skills.mjs +12 -12
  529. package/dist/src/schemas/skills.mjs.map +1 -1
  530. package/dist/src/schemas/toolOverrides.cjs +9 -9
  531. package/dist/src/schemas/toolOverrides.cjs.map +1 -1
  532. package/dist/src/schemas/toolOverrides.d.mts +8 -8
  533. package/dist/src/schemas/toolOverrides.d.mts.map +1 -1
  534. package/dist/src/schemas/toolOverrides.mjs +7 -7
  535. package/dist/src/schemas/toolOverrides.mjs.map +1 -1
  536. package/dist/src/schemas/toolSurface.cjs +9 -9
  537. package/dist/src/schemas/toolSurface.cjs.map +1 -1
  538. package/dist/src/schemas/toolSurface.d.mts +13 -13
  539. package/dist/src/schemas/toolSurface.d.mts.map +1 -1
  540. package/dist/src/schemas/toolSurface.mjs +7 -7
  541. package/dist/src/schemas/toolSurface.mjs.map +1 -1
  542. package/dist/src/schemas/uiHub.cjs +9 -9
  543. package/dist/src/schemas/uiHub.cjs.map +1 -1
  544. package/dist/src/schemas/uiHub.d.mts +12 -12
  545. package/dist/src/schemas/uiHub.d.mts.map +1 -1
  546. package/dist/src/schemas/uiHub.mjs +7 -7
  547. package/dist/src/schemas/uiHub.mjs.map +1 -1
  548. package/dist/src/server/directHarnessRuntime.cjs +691 -775
  549. package/dist/src/server/directHarnessRuntime.cjs.map +1 -1
  550. package/dist/src/server/directHarnessRuntime.d.mts +5 -1
  551. package/dist/src/server/directHarnessRuntime.d.mts.map +1 -0
  552. package/dist/src/server/directHarnessRuntime.mjs +671 -754
  553. package/dist/src/server/directHarnessRuntime.mjs.map +1 -1
  554. package/dist/src/server/largeFrameLink.cjs +47 -0
  555. package/dist/src/server/largeFrameLink.cjs.map +1 -0
  556. package/dist/src/server/largeFrameLink.mjs +47 -0
  557. package/dist/src/server/largeFrameLink.mjs.map +1 -0
  558. package/dist/src/server/liveImport.cjs +1 -1
  559. package/dist/src/server/liveImport.cjs.map +1 -1
  560. package/dist/src/server/liveImport.d.mts +1 -1
  561. package/dist/src/server/liveImport.mjs +1 -1
  562. package/dist/src/server/liveImport.mjs.map +1 -1
  563. package/dist/src/server/mcpBundleLoader.cjs.map +1 -1
  564. package/dist/src/server/mcpBundleLoader.d.mts +6 -6
  565. package/dist/src/server/mcpBundleLoader.d.mts.map +1 -1
  566. package/dist/src/server/mcpBundleLoader.mjs.map +1 -1
  567. package/dist/src/server/serverPackages.cjs +60 -0
  568. package/dist/src/server/serverPackages.cjs.map +1 -0
  569. package/dist/src/server/serverPackages.d.mts +44 -0
  570. package/dist/src/server/serverPackages.d.mts.map +1 -0
  571. package/dist/src/server/serverPackages.mjs +59 -0
  572. package/dist/src/server/serverPackages.mjs.map +1 -0
  573. package/dist/src/server/serverScope.cjs +510 -0
  574. package/dist/src/server/serverScope.cjs.map +1 -0
  575. package/dist/src/server/serverScope.d.mts +123 -0
  576. package/dist/src/server/serverScope.d.mts.map +1 -0
  577. package/dist/src/server/serverScope.mjs +510 -0
  578. package/dist/src/server/serverScope.mjs.map +1 -0
  579. package/dist/src/server/sessionMcpHandler.cjs +3 -3
  580. package/dist/src/server/sessionMcpHandler.cjs.map +1 -1
  581. package/dist/src/server/sessionMcpHandler.mjs +4 -4
  582. package/dist/src/server/sessionMcpHandler.mjs.map +1 -1
  583. package/dist/src/server/sessionMcpRoutes.cjs +2 -1
  584. package/dist/src/server/sessionMcpRoutes.cjs.map +1 -1
  585. package/dist/src/server/sessionMcpRoutes.mjs +2 -1
  586. package/dist/src/server/sessionMcpRoutes.mjs.map +1 -1
  587. package/dist/src/server/threadJournals.cjs +38 -107
  588. package/dist/src/server/threadJournals.cjs.map +1 -1
  589. package/dist/src/server/threadJournals.mjs +38 -104
  590. package/dist/src/server/threadJournals.mjs.map +1 -1
  591. package/dist/src/services/apiSurfaceAssert/index.cjs +1 -1
  592. package/dist/src/services/apiSurfaceAssert/index.cjs.map +1 -1
  593. package/dist/src/services/apiSurfaceAssert/index.d.mts +6 -6
  594. package/dist/src/services/apiSurfaceAssert/index.mjs +1 -1
  595. package/dist/src/services/apiSurfaceAssert/index.mjs.map +1 -1
  596. package/dist/src/services/chatgptAuth/index.cjs +1 -220
  597. package/dist/src/services/chatgptAuth/index.cjs.map +1 -1
  598. package/dist/src/services/chatgptAuth/index.d.mts +0 -18
  599. package/dist/src/services/chatgptAuth/index.d.mts.map +1 -1
  600. package/dist/src/services/chatgptAuth/index.mjs +1 -217
  601. package/dist/src/services/chatgptAuth/index.mjs.map +1 -1
  602. package/dist/src/services/chatgptImages/index.cjs +1 -1
  603. package/dist/src/services/chatgptImages/index.cjs.map +1 -1
  604. package/dist/src/services/chatgptImages/index.mjs +1 -1
  605. package/dist/src/services/chatgptImages/index.mjs.map +1 -1
  606. package/dist/src/services/chatgptLogin/index.cjs +230 -0
  607. package/dist/src/services/chatgptLogin/index.cjs.map +1 -0
  608. package/dist/src/services/chatgptLogin/index.d.mts +21 -0
  609. package/dist/src/services/chatgptLogin/index.d.mts.map +1 -0
  610. package/dist/src/services/chatgptLogin/index.mjs +227 -0
  611. package/dist/src/services/chatgptLogin/index.mjs.map +1 -0
  612. package/dist/src/services/chatgptWebSearch/index.cjs +1 -1
  613. package/dist/src/services/chatgptWebSearch/index.cjs.map +1 -1
  614. package/dist/src/services/chatgptWebSearch/index.mjs +1 -1
  615. package/dist/src/services/chatgptWebSearch/index.mjs.map +1 -1
  616. package/dist/src/services/contextContributions/index.cjs +8 -8
  617. package/dist/src/services/contextContributions/index.cjs.map +1 -1
  618. package/dist/src/services/contextContributions/index.d.mts +3 -3
  619. package/dist/src/services/contextContributions/index.d.mts.map +1 -1
  620. package/dist/src/services/contextContributions/index.mjs +8 -8
  621. package/dist/src/services/contextContributions/index.mjs.map +1 -1
  622. package/dist/src/services/devProxyStore/devProxyRecords.cjs +59 -0
  623. package/dist/src/services/devProxyStore/devProxyRecords.cjs.map +1 -0
  624. package/dist/src/services/devProxyStore/devProxyRecords.mjs +56 -0
  625. package/dist/src/services/devProxyStore/devProxyRecords.mjs.map +1 -0
  626. package/dist/src/services/devProxyStore/index.cjs +7 -101
  627. package/dist/src/services/devProxyStore/index.cjs.map +1 -1
  628. package/dist/src/services/devProxyStore/index.mjs +7 -101
  629. package/dist/src/services/devProxyStore/index.mjs.map +1 -1
  630. package/dist/src/services/devProxyStore/sync.cjs +66 -0
  631. package/dist/src/services/devProxyStore/sync.cjs.map +1 -0
  632. package/dist/src/services/devProxyStore/sync.mjs +63 -0
  633. package/dist/src/services/devProxyStore/sync.mjs.map +1 -0
  634. package/dist/src/services/durableNavigation/docs.cjs +15 -0
  635. package/dist/src/services/durableNavigation/docs.cjs.map +1 -0
  636. package/dist/src/services/durableNavigation/docs.mjs +16 -0
  637. package/dist/src/services/durableNavigation/docs.mjs.map +1 -0
  638. package/dist/src/services/durableNavigation/index.cjs +3 -18
  639. package/dist/src/services/durableNavigation/index.cjs.map +1 -1
  640. package/dist/src/services/durableNavigation/index.mjs +2 -17
  641. package/dist/src/services/durableNavigation/index.mjs.map +1 -1
  642. package/dist/src/services/durableQueue/docs.cjs +12 -0
  643. package/dist/src/services/durableQueue/docs.cjs.map +1 -0
  644. package/dist/src/services/durableQueue/docs.mjs +13 -0
  645. package/dist/src/services/durableQueue/docs.mjs.map +1 -0
  646. package/dist/src/services/durableQueue/index.cjs +151 -0
  647. package/dist/src/services/durableQueue/index.cjs.map +1 -0
  648. package/dist/src/services/durableQueue/index.mjs +149 -0
  649. package/dist/src/services/durableQueue/index.mjs.map +1 -0
  650. package/dist/src/services/durableRequestReceipts/docs.cjs +11 -0
  651. package/dist/src/services/durableRequestReceipts/docs.cjs.map +1 -0
  652. package/dist/src/services/durableRequestReceipts/docs.mjs +12 -0
  653. package/dist/src/services/durableRequestReceipts/docs.mjs.map +1 -0
  654. package/dist/src/services/{requestReceipts → durableRequestReceipts}/index.cjs +10 -16
  655. package/dist/src/services/durableRequestReceipts/index.cjs.map +1 -0
  656. package/dist/src/services/durableRequestReceipts/index.d.mts +12 -0
  657. package/dist/src/services/durableRequestReceipts/index.d.mts.map +1 -0
  658. package/dist/src/services/{requestReceipts → durableRequestReceipts}/index.mjs +7 -13
  659. package/dist/src/services/durableRequestReceipts/index.mjs.map +1 -0
  660. package/dist/src/services/durableSession/docs.cjs +65 -0
  661. package/dist/src/services/durableSession/docs.cjs.map +1 -0
  662. package/dist/src/services/durableSession/docs.d.mts +17 -0
  663. package/dist/src/services/durableSession/docs.d.mts.map +1 -0
  664. package/dist/src/services/durableSession/docs.mjs +60 -0
  665. package/dist/src/services/durableSession/docs.mjs.map +1 -0
  666. package/dist/src/services/durableSession/index.cjs +21 -0
  667. package/dist/src/services/durableSession/index.cjs.map +1 -0
  668. package/dist/src/services/durableSession/index.d.mts +13 -0
  669. package/dist/src/services/durableSession/index.d.mts.map +1 -0
  670. package/dist/src/services/durableSession/index.mjs +20 -0
  671. package/dist/src/services/durableSession/index.mjs.map +1 -0
  672. package/dist/src/services/durableSubagents/docs.cjs +15 -0
  673. package/dist/src/services/durableSubagents/docs.cjs.map +1 -0
  674. package/dist/src/services/durableSubagents/docs.mjs +16 -0
  675. package/dist/src/services/durableSubagents/docs.mjs.map +1 -0
  676. package/dist/src/services/durableSubagents/extension.cjs +11 -0
  677. package/dist/src/services/durableSubagents/extension.cjs.map +1 -0
  678. package/dist/src/services/durableSubagents/extension.mjs +12 -0
  679. package/dist/src/services/durableSubagents/extension.mjs.map +1 -0
  680. package/dist/src/services/durableSubagents/index.cjs +95 -0
  681. package/dist/src/services/durableSubagents/index.cjs.map +1 -0
  682. package/dist/src/services/durableSubagents/index.mjs +90 -0
  683. package/dist/src/services/durableSubagents/index.mjs.map +1 -0
  684. package/dist/src/services/durableSubagents/tasks.cjs +25 -0
  685. package/dist/src/services/durableSubagents/tasks.cjs.map +1 -0
  686. package/dist/src/services/durableSubagents/tasks.mjs +26 -0
  687. package/dist/src/services/durableSubagents/tasks.mjs.map +1 -0
  688. package/dist/src/services/headlessClient/index.cjs +20 -13
  689. package/dist/src/services/headlessClient/index.cjs.map +1 -1
  690. package/dist/src/services/headlessClient/index.mjs +21 -14
  691. package/dist/src/services/headlessClient/index.mjs.map +1 -1
  692. package/dist/src/services/historyOwnership/type.d.mts +15 -0
  693. package/dist/src/services/historyOwnership/type.d.mts.map +1 -0
  694. package/dist/src/services/hubChannelHarness/index.cjs +2 -2
  695. package/dist/src/services/hubChannelHarness/index.cjs.map +1 -1
  696. package/dist/src/services/hubChannelHarness/index.d.mts +8 -8
  697. package/dist/src/services/hubChannelHarness/index.d.mts.map +1 -1
  698. package/dist/src/services/hubChannelHarness/index.mjs +2 -2
  699. package/dist/src/services/hubChannelHarness/index.mjs.map +1 -1
  700. package/dist/src/services/json/core.cjs +30 -0
  701. package/dist/src/services/json/core.cjs.map +1 -0
  702. package/dist/src/services/json/core.d.mts +21 -0
  703. package/dist/src/services/json/core.d.mts.map +1 -0
  704. package/dist/src/services/json/core.mjs +26 -0
  705. package/dist/src/services/json/core.mjs.map +1 -0
  706. package/dist/src/services/json/sync.cjs +48 -0
  707. package/dist/src/services/json/sync.cjs.map +1 -0
  708. package/dist/src/services/json/sync.d.mts +22 -0
  709. package/dist/src/services/json/sync.d.mts.map +1 -0
  710. package/dist/src/services/json/sync.mjs +43 -0
  711. package/dist/src/services/json/sync.mjs.map +1 -0
  712. package/dist/src/services/kernel/index.cjs +2 -2
  713. package/dist/src/services/kernel/index.cjs.map +1 -1
  714. package/dist/src/services/kernel/index.d.mts +3 -3
  715. package/dist/src/services/kernel/index.d.mts.map +1 -1
  716. package/dist/src/services/kernel/index.mjs +2 -2
  717. package/dist/src/services/kernel/index.mjs.map +1 -1
  718. package/dist/src/services/nativeChildTools/index.cjs +16 -0
  719. package/dist/src/services/nativeChildTools/index.cjs.map +1 -0
  720. package/dist/src/services/nativeChildTools/index.mjs +16 -0
  721. package/dist/src/services/nativeChildTools/index.mjs.map +1 -0
  722. package/dist/src/services/nodeHost/index.cjs +30 -0
  723. package/dist/src/services/nodeHost/index.cjs.map +1 -0
  724. package/dist/src/services/nodeHost/index.d.mts +16 -0
  725. package/dist/src/services/nodeHost/index.d.mts.map +1 -0
  726. package/dist/src/services/nodeHost/index.mjs +27 -0
  727. package/dist/src/services/nodeHost/index.mjs.map +1 -0
  728. package/dist/src/services/nodeModelDependencies/index.cjs +89 -0
  729. package/dist/src/services/nodeModelDependencies/index.cjs.map +1 -0
  730. package/dist/src/services/nodeModelDependencies/index.mjs +86 -0
  731. package/dist/src/services/nodeModelDependencies/index.mjs.map +1 -0
  732. package/dist/src/services/openSessionRegistry/index.cjs +6 -128
  733. package/dist/src/services/openSessionRegistry/index.cjs.map +1 -1
  734. package/dist/src/services/openSessionRegistry/index.d.mts +5 -36
  735. package/dist/src/services/openSessionRegistry/index.mjs +6 -128
  736. package/dist/src/services/openSessionRegistry/index.mjs.map +1 -1
  737. package/dist/src/services/openSessionRegistry/openSessionRecords.cjs +87 -0
  738. package/dist/src/services/openSessionRegistry/openSessionRecords.cjs.map +1 -0
  739. package/dist/src/services/openSessionRegistry/openSessionRecords.d.mts +30 -0
  740. package/dist/src/services/openSessionRegistry/openSessionRecords.d.mts.map +1 -0
  741. package/dist/src/services/openSessionRegistry/openSessionRecords.mjs +81 -0
  742. package/dist/src/services/openSessionRegistry/openSessionRecords.mjs.map +1 -0
  743. package/dist/src/services/openSessionRegistry/sync.cjs +71 -0
  744. package/dist/src/services/openSessionRegistry/sync.cjs.map +1 -0
  745. package/dist/src/services/openSessionRegistry/sync.d.mts +14 -0
  746. package/dist/src/services/openSessionRegistry/sync.d.mts.map +1 -0
  747. package/dist/src/services/openSessionRegistry/sync.mjs +68 -0
  748. package/dist/src/services/openSessionRegistry/sync.mjs.map +1 -0
  749. package/dist/src/services/packageApiHarness/index.cjs +1 -1
  750. package/dist/src/services/packageApiHarness/index.cjs.map +1 -1
  751. package/dist/src/services/packageApiHarness/index.d.mts +6 -6
  752. package/dist/src/services/packageApiHarness/index.d.mts.map +1 -1
  753. package/dist/src/services/packageApiHarness/index.mjs +2 -2
  754. package/dist/src/services/packageApiHarness/index.mjs.map +1 -1
  755. package/dist/src/services/piArgs/index.cjs +53 -0
  756. package/dist/src/services/piArgs/index.cjs.map +1 -0
  757. package/dist/src/services/piArgs/index.d.mts +6 -0
  758. package/dist/src/services/piArgs/index.d.mts.map +1 -0
  759. package/dist/src/services/piArgs/index.mjs +53 -0
  760. package/dist/src/services/piArgs/index.mjs.map +1 -0
  761. package/dist/src/services/piExtensionHost/index.cjs +47 -39
  762. package/dist/src/services/piExtensionHost/index.cjs.map +1 -1
  763. package/dist/src/services/piExtensionHost/index.d.mts +83 -0
  764. package/dist/src/services/piExtensionHost/index.d.mts.map +1 -0
  765. package/dist/src/services/piExtensionHost/index.mjs +47 -38
  766. package/dist/src/services/piExtensionHost/index.mjs.map +1 -1
  767. package/dist/src/services/piHelpTools/index.cjs +5 -5
  768. package/dist/src/services/piHelpTools/index.cjs.map +1 -1
  769. package/dist/src/services/piHelpTools/index.d.mts.map +1 -1
  770. package/dist/src/services/piHelpTools/index.mjs +7 -7
  771. package/dist/src/services/piHelpTools/index.mjs.map +1 -1
  772. package/dist/src/services/piMessages/index.cjs +106 -0
  773. package/dist/src/services/piMessages/index.cjs.map +1 -0
  774. package/dist/src/services/piMessages/index.mjs +105 -0
  775. package/dist/src/services/piMessages/index.mjs.map +1 -0
  776. package/dist/src/services/piSessionEntries/index.cjs +4 -4
  777. package/dist/src/services/piSessionEntries/index.cjs.map +1 -1
  778. package/dist/src/services/piSessionEntries/index.mjs +3 -3
  779. package/dist/src/services/piSessionEntries/index.mjs.map +1 -1
  780. package/dist/src/services/piSettings/core.cjs +308 -0
  781. package/dist/src/services/piSettings/core.cjs.map +1 -0
  782. package/dist/src/services/piSettings/core.d.mts +102 -0
  783. package/dist/src/services/piSettings/core.d.mts.map +1 -0
  784. package/dist/src/services/piSettings/core.mjs +276 -0
  785. package/dist/src/services/piSettings/core.mjs.map +1 -0
  786. package/dist/src/services/piSettings/sync.cjs +119 -0
  787. package/dist/src/services/piSettings/sync.cjs.map +1 -0
  788. package/dist/src/services/piSettings/sync.d.mts +44 -0
  789. package/dist/src/services/piSettings/sync.d.mts.map +1 -0
  790. package/dist/src/services/piSettings/sync.mjs +110 -0
  791. package/dist/src/services/piSettings/sync.mjs.map +1 -0
  792. package/dist/src/services/piSummary/index.cjs +7 -0
  793. package/dist/src/services/piSummary/index.cjs.map +1 -0
  794. package/dist/src/services/piSummary/index.mjs +7 -0
  795. package/dist/src/services/piSummary/index.mjs.map +1 -0
  796. package/dist/src/services/platformFiles/index.cjs +44 -0
  797. package/dist/src/services/platformFiles/index.cjs.map +1 -0
  798. package/dist/src/services/platformFiles/index.d.mts +16 -0
  799. package/dist/src/services/platformFiles/index.d.mts.map +1 -0
  800. package/dist/src/services/platformFiles/index.mjs +39 -0
  801. package/dist/src/services/platformFiles/index.mjs.map +1 -0
  802. package/dist/src/services/pluginLifecycle/index.cjs +19 -13
  803. package/dist/src/services/pluginLifecycle/index.cjs.map +1 -1
  804. package/dist/src/services/pluginLifecycle/index.d.mts +2 -0
  805. package/dist/src/services/pluginLifecycle/index.d.mts.map +1 -1
  806. package/dist/src/services/pluginLifecycle/index.mjs +19 -14
  807. package/dist/src/services/pluginLifecycle/index.mjs.map +1 -1
  808. package/dist/src/services/poPackage/core.cjs +73 -0
  809. package/dist/src/services/poPackage/core.cjs.map +1 -0
  810. package/dist/src/services/poPackage/core.d.mts +32 -0
  811. package/dist/src/services/poPackage/core.d.mts.map +1 -0
  812. package/dist/src/services/poPackage/core.mjs +66 -0
  813. package/dist/src/services/poPackage/core.mjs.map +1 -0
  814. package/dist/src/services/poPackage/sync.cjs +55 -0
  815. package/dist/src/services/poPackage/sync.cjs.map +1 -0
  816. package/dist/src/services/poPackage/sync.d.mts +21 -0
  817. package/dist/src/services/poPackage/sync.d.mts.map +1 -0
  818. package/dist/src/services/poPackage/sync.mjs +50 -0
  819. package/dist/src/services/poPackage/sync.mjs.map +1 -0
  820. package/dist/src/services/providerAuth/index.cjs +11 -7
  821. package/dist/src/services/providerAuth/index.cjs.map +1 -1
  822. package/dist/src/services/providerAuth/index.mjs +11 -7
  823. package/dist/src/services/providerAuth/index.mjs.map +1 -1
  824. package/dist/src/services/publicFileShares/index.cjs +1 -1
  825. package/dist/src/services/publicFileShares/index.cjs.map +1 -1
  826. package/dist/src/services/publicFileShares/index.d.mts +2 -2
  827. package/dist/src/services/publicFileShares/index.mjs +2 -2
  828. package/dist/src/services/publicFileShares/index.mjs.map +1 -1
  829. package/dist/src/services/remoteAccess/index.d.mts +1 -0
  830. package/dist/src/services/remoteAccess/index.d.mts.map +1 -1
  831. package/dist/src/services/remoteAccessStore/index.cjs +8 -190
  832. package/dist/src/services/remoteAccessStore/index.cjs.map +1 -1
  833. package/dist/src/services/remoteAccessStore/index.d.mts +2 -0
  834. package/dist/src/services/remoteAccessStore/index.mjs +7 -187
  835. package/dist/src/services/remoteAccessStore/index.mjs.map +1 -1
  836. package/dist/src/services/remoteAccessStore/remoteAccessRecords.cjs +98 -0
  837. package/dist/src/services/remoteAccessStore/remoteAccessRecords.cjs.map +1 -0
  838. package/dist/src/services/remoteAccessStore/remoteAccessRecords.mjs +88 -0
  839. package/dist/src/services/remoteAccessStore/remoteAccessRecords.mjs.map +1 -0
  840. package/dist/src/services/remoteAccessStore/sync.cjs +111 -0
  841. package/dist/src/services/remoteAccessStore/sync.cjs.map +1 -0
  842. package/dist/src/services/remoteAccessStore/sync.mjs +108 -0
  843. package/dist/src/services/remoteAccessStore/sync.mjs.map +1 -0
  844. package/dist/src/services/runtimeIdentity/sync.cjs +23 -0
  845. package/dist/src/services/runtimeIdentity/sync.cjs.map +1 -0
  846. package/dist/src/services/runtimeIdentity/sync.d.mts +9 -0
  847. package/dist/src/services/runtimeIdentity/sync.d.mts.map +1 -0
  848. package/dist/src/services/runtimeIdentity/sync.mjs +20 -0
  849. package/dist/src/services/runtimeIdentity/sync.mjs.map +1 -0
  850. package/dist/src/services/serialRunner/index.cjs +25 -0
  851. package/dist/src/services/serialRunner/index.cjs.map +1 -0
  852. package/dist/src/services/serialRunner/index.d.mts +10 -0
  853. package/dist/src/services/serialRunner/index.d.mts.map +1 -0
  854. package/dist/src/services/serialRunner/index.mjs +25 -0
  855. package/dist/src/services/serialRunner/index.mjs.map +1 -0
  856. package/dist/src/services/{serverFacet → serverHost}/index.cjs +5 -5
  857. package/dist/src/services/serverHost/index.cjs.map +1 -0
  858. package/dist/src/services/serverHost/index.d.mts +31 -0
  859. package/dist/src/services/serverHost/index.d.mts.map +1 -0
  860. package/dist/src/services/{serverFacet → serverHost}/index.mjs +5 -5
  861. package/dist/src/services/serverHost/index.mjs.map +1 -0
  862. package/dist/src/services/sessionAttachments/index.cjs +4 -3
  863. package/dist/src/services/sessionAttachments/index.cjs.map +1 -1
  864. package/dist/src/services/sessionAttachments/index.d.mts +1 -6
  865. package/dist/src/services/sessionAttachments/index.d.mts.map +1 -1
  866. package/dist/src/services/sessionAttachments/index.mjs +3 -2
  867. package/dist/src/services/sessionAttachments/index.mjs.map +1 -1
  868. package/dist/src/services/sessionAttachments/type.d.mts +9 -0
  869. package/dist/src/services/sessionAttachments/type.d.mts.map +1 -0
  870. package/dist/src/services/sessionFiles/index.cjs +96 -0
  871. package/dist/src/services/sessionFiles/index.cjs.map +1 -0
  872. package/dist/src/services/sessionFiles/index.d.mts +33 -0
  873. package/dist/src/services/sessionFiles/index.d.mts.map +1 -0
  874. package/dist/src/services/sessionFiles/index.mjs +89 -0
  875. package/dist/src/services/sessionFiles/index.mjs.map +1 -0
  876. package/dist/src/services/sessionFiles/sessionDirectory.cjs +66 -0
  877. package/dist/src/services/sessionFiles/sessionDirectory.cjs.map +1 -0
  878. package/dist/src/services/sessionFiles/sessionDirectory.mjs +62 -0
  879. package/dist/src/services/sessionFiles/sessionDirectory.mjs.map +1 -0
  880. package/dist/src/services/sessionGitStatus/index.cjs +31 -33
  881. package/dist/src/services/sessionGitStatus/index.cjs.map +1 -1
  882. package/dist/src/services/sessionGitStatus/index.mjs +31 -33
  883. package/dist/src/services/sessionGitStatus/index.mjs.map +1 -1
  884. package/dist/src/services/sessionPresentation/index.cjs +3 -27
  885. package/dist/src/services/sessionPresentation/index.cjs.map +1 -1
  886. package/dist/src/services/sessionPresentation/index.mjs +3 -27
  887. package/dist/src/services/sessionPresentation/index.mjs.map +1 -1
  888. package/dist/src/services/skillPrompt/index.cjs +11 -0
  889. package/dist/src/services/skillPrompt/index.cjs.map +1 -0
  890. package/dist/src/services/skillPrompt/index.mjs +11 -0
  891. package/dist/src/services/skillPrompt/index.mjs.map +1 -0
  892. package/dist/src/services/sqliteSessionHistory/index.cjs +44 -30
  893. package/dist/src/services/sqliteSessionHistory/index.cjs.map +1 -1
  894. package/dist/src/services/sqliteSessionHistory/index.d.mts +7 -4
  895. package/dist/src/services/sqliteSessionHistory/index.d.mts.map +1 -1
  896. package/dist/src/services/sqliteSessionHistory/index.mjs +43 -28
  897. package/dist/src/services/sqliteSessionHistory/index.mjs.map +1 -1
  898. package/dist/src/services/sqliteTranscriptReader/index.cjs +21 -45
  899. package/dist/src/services/sqliteTranscriptReader/index.cjs.map +1 -1
  900. package/dist/src/services/sqliteTranscriptReader/index.d.mts +3 -2
  901. package/dist/src/services/sqliteTranscriptReader/index.d.mts.map +1 -1
  902. package/dist/src/services/sqliteTranscriptReader/index.mjs +16 -38
  903. package/dist/src/services/sqliteTranscriptReader/index.mjs.map +1 -1
  904. package/dist/src/services/testMode/index.cjs +162 -0
  905. package/dist/src/services/testMode/index.cjs.map +1 -0
  906. package/dist/src/services/testMode/index.d.mts +17 -0
  907. package/dist/src/services/testMode/index.d.mts.map +1 -0
  908. package/dist/src/services/testMode/index.mjs +155 -0
  909. package/dist/src/services/testMode/index.mjs.map +1 -0
  910. package/dist/src/services/toolOverrides/index.cjs +6 -6
  911. package/dist/src/services/toolOverrides/index.cjs.map +1 -1
  912. package/dist/src/services/toolOverrides/index.d.mts +3 -3
  913. package/dist/src/services/toolOverrides/index.d.mts.map +1 -1
  914. package/dist/src/services/toolOverrides/index.mjs +6 -6
  915. package/dist/src/services/toolOverrides/index.mjs.map +1 -1
  916. package/dist/src/services/toolPrompt/index.d.mts +17 -0
  917. package/dist/src/services/toolPrompt/index.d.mts.map +1 -0
  918. package/dist/src/services/toolSurface/index.cjs +3 -3
  919. package/dist/src/services/toolSurface/index.cjs.map +1 -1
  920. package/dist/src/services/toolSurface/index.d.mts +3 -3
  921. package/dist/src/services/toolSurface/index.d.mts.map +1 -1
  922. package/dist/src/services/toolSurface/index.mjs +4 -4
  923. package/dist/src/services/toolSurface/index.mjs.map +1 -1
  924. package/dist/src/services/traceContext/index.cjs.map +1 -1
  925. package/dist/src/services/traceContext/index.mjs.map +1 -1
  926. package/dist/src/services/transcriptPages/index.cjs +159 -33
  927. package/dist/src/services/transcriptPages/index.cjs.map +1 -1
  928. package/dist/src/services/transcriptPages/index.mjs +158 -34
  929. package/dist/src/services/transcriptPages/index.mjs.map +1 -1
  930. package/dist/src/services/voiceToolsContract/index.cjs +7 -7
  931. package/dist/src/services/voiceToolsContract/index.cjs.map +1 -1
  932. package/dist/src/services/voiceToolsContract/index.d.mts +4 -4
  933. package/dist/src/services/voiceToolsContract/index.d.mts.map +1 -1
  934. package/dist/src/services/voiceToolsContract/index.mjs +7 -7
  935. package/dist/src/services/voiceToolsContract/index.mjs.map +1 -1
  936. package/dist/src/services/workspaceRegistry/index.cjs +9 -179
  937. package/dist/src/services/workspaceRegistry/index.cjs.map +1 -1
  938. package/dist/src/services/workspaceRegistry/index.d.mts +5 -47
  939. package/dist/src/services/workspaceRegistry/index.mjs +7 -176
  940. package/dist/src/services/workspaceRegistry/index.mjs.map +1 -1
  941. package/dist/src/services/workspaceRegistry/sync.cjs +148 -0
  942. package/dist/src/services/workspaceRegistry/sync.cjs.map +1 -0
  943. package/dist/src/services/workspaceRegistry/sync.d.mts +34 -0
  944. package/dist/src/services/workspaceRegistry/sync.d.mts.map +1 -0
  945. package/dist/src/services/workspaceRegistry/sync.mjs +140 -0
  946. package/dist/src/services/workspaceRegistry/sync.mjs.map +1 -0
  947. package/dist/src/services/workspaceRegistry/workspaceRecords.cjs +114 -0
  948. package/dist/src/services/workspaceRegistry/workspaceRecords.cjs.map +1 -0
  949. package/dist/src/services/workspaceRegistry/workspaceRecords.d.mts +31 -0
  950. package/dist/src/services/workspaceRegistry/workspaceRecords.d.mts.map +1 -0
  951. package/dist/src/services/workspaceRegistry/workspaceRecords.mjs +101 -0
  952. package/dist/src/services/workspaceRegistry/workspaceRecords.mjs.map +1 -0
  953. package/dist/src/systems/child/adapters/headlessChildSessionService.cjs +339 -202
  954. package/dist/src/systems/child/adapters/headlessChildSessionService.cjs.map +1 -1
  955. package/dist/src/systems/child/adapters/headlessChildSessionService.d.mts +16 -21
  956. package/dist/src/systems/child/adapters/headlessChildSessionService.d.mts.map +1 -1
  957. package/dist/src/systems/child/adapters/headlessChildSessionService.mjs +329 -191
  958. package/dist/src/systems/child/adapters/headlessChildSessionService.mjs.map +1 -1
  959. package/dist/src/systems/child/services/childSession/index.cjs +94 -20
  960. package/dist/src/systems/child/services/childSession/index.cjs.map +1 -1
  961. package/dist/src/systems/child/services/childSession/index.d.mts +12 -3
  962. package/dist/src/systems/child/services/childSession/index.d.mts.map +1 -1
  963. package/dist/src/systems/child/services/childSession/index.mjs +94 -20
  964. package/dist/src/systems/child/services/childSession/index.mjs.map +1 -1
  965. package/dist/src/systems/child/types/childSession.cjs +33 -13
  966. package/dist/src/systems/child/types/childSession.cjs.map +1 -1
  967. package/dist/src/systems/child/types/childSession.d.mts +143 -80
  968. package/dist/src/systems/child/types/childSession.d.mts.map +1 -1
  969. package/dist/src/systems/child/types/childSession.mjs +24 -9
  970. package/dist/src/systems/child/types/childSession.mjs.map +1 -1
  971. package/dist/src/systems/main/adapters/headlessHost.cjs +30 -27
  972. package/dist/src/systems/main/adapters/headlessHost.cjs.map +1 -1
  973. package/dist/src/systems/main/adapters/headlessHost.d.mts +22 -22
  974. package/dist/src/systems/main/adapters/headlessHost.d.mts.map +1 -1
  975. package/dist/src/systems/main/adapters/headlessHost.mjs +33 -30
  976. package/dist/src/systems/main/adapters/headlessHost.mjs.map +1 -1
  977. package/dist/src/systems/main/adapters/headlessSessionHost.cjs +248 -229
  978. package/dist/src/systems/main/adapters/headlessSessionHost.cjs.map +1 -1
  979. package/dist/src/systems/main/adapters/headlessSessionHost.d.mts +4 -5
  980. package/dist/src/systems/main/adapters/headlessSessionHost.d.mts.map +1 -1
  981. package/dist/src/systems/main/adapters/headlessSessionHost.mjs +239 -219
  982. package/dist/src/systems/main/adapters/headlessSessionHost.mjs.map +1 -1
  983. package/dist/src/systems/main/types/headlessHost.d.mts +16 -14
  984. package/dist/src/systems/main/types/headlessHost.d.mts.map +1 -1
  985. package/dist/src/testing/pi/testHost.cjs +2 -2
  986. package/dist/src/testing/pi/testHost.cjs.map +1 -1
  987. package/dist/src/testing/pi/testHost.d.mts +3 -2
  988. package/dist/src/testing/pi/testHost.mjs +3 -3
  989. package/dist/src/testing/pi/testHost.mjs.map +1 -1
  990. package/dist/src/types/config.d.mts +1 -1
  991. package/dist/src/types/config.d.mts.map +1 -1
  992. package/dist/src/types/kernel.d.mts +3 -3
  993. package/dist/src/types/server/directHarnessRuntime.d.mts +54 -25
  994. package/dist/src/types/server/directHarnessRuntime.d.mts.map +1 -1
  995. package/dist/src/types/server/sessionToolSurface.d.mts +9 -9
  996. package/dist/src/web/services/apiClient/index.d.mts +1 -0
  997. package/dist/src/web/services/apiPaths/index.cjs.map +1 -1
  998. package/dist/src/web/services/apiPaths/index.d.mts +1 -1
  999. package/dist/src/web/services/apiPaths/index.mjs.map +1 -1
  1000. package/dist/src/web/services/mcpWidget.cjs.map +1 -1
  1001. package/dist/src/web/services/mcpWidget.d.mts +2 -2
  1002. package/dist/src/web/services/mcpWidget.d.mts.map +1 -1
  1003. package/dist/src/web/services/mcpWidget.mjs.map +1 -1
  1004. package/dist/src/web/services/testing/templateRail.cjs +3 -0
  1005. package/dist/src/web/services/testing/templateRail.cjs.map +1 -1
  1006. package/dist/src/web/services/testing/templateRail.mjs +3 -0
  1007. package/dist/src/web/services/testing/templateRail.mjs.map +1 -1
  1008. package/dist/src/web/types/mcpWidget.d.mts +1 -1
  1009. package/dist/src/web/types/nativeTemplate.d.mts +1 -1
  1010. package/dist/src/web/types/nativeTemplate.d.mts.map +1 -1
  1011. package/dist/src/web/types/template.d.mts +8 -0
  1012. package/dist/src/web/types/template.d.mts.map +1 -1
  1013. package/dist/src/web/types/webPlugin.d.mts +17 -5
  1014. package/dist/src/web/types/webPlugin.d.mts.map +1 -1
  1015. package/dist/testMode.cjs +4 -0
  1016. package/dist/testMode.d.mts +2 -0
  1017. package/dist/testMode.mjs +1 -0
  1018. package/dist/testing.cjs +1 -1
  1019. package/dist/testing.d.mts +2 -2
  1020. package/dist/testing.mjs +2 -2
  1021. package/dist/toolInventory.cjs.map +1 -1
  1022. package/dist/toolInventory.mjs.map +1 -1
  1023. package/dist/toolNames.mjs +1 -2
  1024. package/dist/toolOverrides.cjs +4 -4
  1025. package/dist/toolOverrides.d.mts +3 -3
  1026. package/dist/toolOverrides.mjs +3 -3
  1027. package/dist/toolSurface.cjs +4 -4
  1028. package/dist/toolSurface.d.mts +3 -3
  1029. package/dist/toolSurface.mjs +3 -3
  1030. package/dist/transition.cjs +3 -3
  1031. package/dist/transition.d.cjs +3 -3
  1032. package/dist/transition.d.mts +2 -2
  1033. package/dist/transition.mjs +1 -2
  1034. package/dist/transitionClassifier.cjs.map +1 -1
  1035. package/dist/transitionClassifier.d.mts +2 -2
  1036. package/dist/transitionClassifier.d.mts.map +1 -1
  1037. package/dist/transitionClassifier.mjs.map +1 -1
  1038. package/dist/transitionCoordinator.cjs +3 -3
  1039. package/dist/transitionCoordinator.cjs.map +1 -1
  1040. package/dist/transitionCoordinator.d.mts +4 -4
  1041. package/dist/transitionCoordinator.d.mts.map +1 -1
  1042. package/dist/transitionCoordinator.mjs +3 -3
  1043. package/dist/transitionCoordinator.mjs.map +1 -1
  1044. package/dist/typesContextApi.d.mts +2 -1
  1045. package/dist/typesContextApi.d.mts.map +1 -1
  1046. package/dist/uiHub.cjs +3 -3
  1047. package/dist/uiHub.d.mts +2 -2
  1048. package/dist/uiHub.mjs +1 -2
  1049. package/dist/voiceTools.cjs +5 -5
  1050. package/dist/voiceTools.d.mts +3 -3
  1051. package/dist/voiceTools.mjs +3 -3
  1052. package/dist/web.cjs +8 -0
  1053. package/dist/web.d.mts +3 -2
  1054. package/dist/web.mjs +2 -1
  1055. package/dist/webCompositions.cjs.map +1 -1
  1056. package/dist/webCompositions.d.mts +7 -7
  1057. package/dist/webCompositions.d.mts.map +1 -1
  1058. package/dist/webCompositions.mjs.map +1 -1
  1059. package/licenses/Codex-Apache-2.0.txt +201 -0
  1060. package/package.json +58 -53
  1061. package/dist/doomPackage.cjs +0 -61
  1062. package/dist/doomPackage.cjs.map +0 -1
  1063. package/dist/doomPackage.d.mts +0 -17
  1064. package/dist/doomPackage.d.mts.map +0 -1
  1065. package/dist/doomPackage.mjs +0 -54
  1066. package/dist/doomPackage.mjs.map +0 -1
  1067. package/dist/jsonlSessionRepo.cjs +0 -44
  1068. package/dist/jsonlSessionRepo.cjs.map +0 -1
  1069. package/dist/jsonlSessionRepo.d.mts +0 -7
  1070. package/dist/jsonlSessionRepo.d.mts.map +0 -1
  1071. package/dist/jsonlSessionRepo.mjs +0 -42
  1072. package/dist/jsonlSessionRepo.mjs.map +0 -1
  1073. package/dist/runtimeJson.cjs.map +0 -1
  1074. package/dist/runtimeJson.d.mts.map +0 -1
  1075. package/dist/runtimeJson.mjs.map +0 -1
  1076. package/dist/runtimePiSettings.cjs.map +0 -1
  1077. package/dist/runtimePiSettings.d.mts.map +0 -1
  1078. package/dist/runtimePiSettings.mjs.map +0 -1
  1079. package/dist/serverFacet.cjs +0 -34
  1080. package/dist/serverFacet.d.mts +0 -10
  1081. package/dist/serverFacet.mjs +0 -9
  1082. package/dist/src/pi/piWebSocketListener.cjs +0 -115
  1083. package/dist/src/pi/piWebSocketListener.cjs.map +0 -1
  1084. package/dist/src/pi/piWebSocketListener.mjs +0 -115
  1085. package/dist/src/pi/piWebSocketListener.mjs.map +0 -1
  1086. package/dist/src/schemas/serverFacet.cjs +0 -111
  1087. package/dist/src/schemas/serverFacet.cjs.map +0 -1
  1088. package/dist/src/schemas/serverFacet.d.mts +0 -152
  1089. package/dist/src/schemas/serverFacet.d.mts.map +0 -1
  1090. package/dist/src/schemas/serverFacet.mjs +0 -101
  1091. package/dist/src/schemas/serverFacet.mjs.map +0 -1
  1092. package/dist/src/schemas/sessionUpdates.d.mts +0 -34
  1093. package/dist/src/schemas/sessionUpdates.d.mts.map +0 -1
  1094. package/dist/src/server/headlessProtocol.cjs +0 -382
  1095. package/dist/src/server/headlessProtocol.cjs.map +0 -1
  1096. package/dist/src/server/headlessProtocol.mjs +0 -382
  1097. package/dist/src/server/headlessProtocol.mjs.map +0 -1
  1098. package/dist/src/server/nativeChildTranscriptReader.cjs +0 -20
  1099. package/dist/src/server/nativeChildTranscriptReader.cjs.map +0 -1
  1100. package/dist/src/server/nativeChildTranscriptReader.mjs +0 -18
  1101. package/dist/src/server/nativeChildTranscriptReader.mjs.map +0 -1
  1102. package/dist/src/server/serverFacetLoader.cjs +0 -214
  1103. package/dist/src/server/serverFacetLoader.cjs.map +0 -1
  1104. package/dist/src/server/serverFacetLoader.d.mts +0 -72
  1105. package/dist/src/server/serverFacetLoader.d.mts.map +0 -1
  1106. package/dist/src/server/serverFacetLoader.mjs +0 -212
  1107. package/dist/src/server/serverFacetLoader.mjs.map +0 -1
  1108. package/dist/src/services/acpSessionUpdates/index.cjs +0 -129
  1109. package/dist/src/services/acpSessionUpdates/index.cjs.map +0 -1
  1110. package/dist/src/services/acpSessionUpdates/index.mjs +0 -129
  1111. package/dist/src/services/acpSessionUpdates/index.mjs.map +0 -1
  1112. package/dist/src/services/historyImport/index.cjs +0 -8
  1113. package/dist/src/services/historyImport/index.cjs.map +0 -1
  1114. package/dist/src/services/historyImport/index.d.mts +0 -68
  1115. package/dist/src/services/historyImport/index.d.mts.map +0 -1
  1116. package/dist/src/services/historyImport/index.mjs +0 -8
  1117. package/dist/src/services/historyImport/index.mjs.map +0 -1
  1118. package/dist/src/services/openSessionRegistry/index.d.mts.map +0 -1
  1119. package/dist/src/services/requestReceipts/index.cjs.map +0 -1
  1120. package/dist/src/services/requestReceipts/index.d.mts +0 -11
  1121. package/dist/src/services/requestReceipts/index.d.mts.map +0 -1
  1122. package/dist/src/services/requestReceipts/index.mjs.map +0 -1
  1123. package/dist/src/services/rpcTranscript/index.cjs +0 -633
  1124. package/dist/src/services/rpcTranscript/index.cjs.map +0 -1
  1125. package/dist/src/services/rpcTranscript/index.d.mts +0 -50
  1126. package/dist/src/services/rpcTranscript/index.d.mts.map +0 -1
  1127. package/dist/src/services/rpcTranscript/index.mjs +0 -632
  1128. package/dist/src/services/rpcTranscript/index.mjs.map +0 -1
  1129. package/dist/src/services/serverFacet/index.cjs.map +0 -1
  1130. package/dist/src/services/serverFacet/index.d.mts +0 -31
  1131. package/dist/src/services/serverFacet/index.d.mts.map +0 -1
  1132. package/dist/src/services/serverFacet/index.mjs.map +0 -1
  1133. package/dist/src/services/workspaceRegistry/index.d.mts.map +0 -1
  1134. package/dist/src/systems/child/adapters/nativeChildRuntimes.cjs +0 -28
  1135. package/dist/src/systems/child/adapters/nativeChildRuntimes.cjs.map +0 -1
  1136. package/dist/src/systems/child/adapters/nativeChildRuntimes.mjs +0 -25
  1137. package/dist/src/systems/child/adapters/nativeChildRuntimes.mjs.map +0 -1
  1138. package/dist/terminalPiChildSessionService.cjs +0 -324
  1139. package/dist/terminalPiChildSessionService.cjs.map +0 -1
  1140. package/dist/terminalPiChildSessionService.d.mts +0 -46
  1141. package/dist/terminalPiChildSessionService.d.mts.map +0 -1
  1142. package/dist/terminalPiChildSessionService.mjs +0 -318
  1143. package/dist/terminalPiChildSessionService.mjs.map +0 -1
  1144. package/dist/v3Export.cjs +0 -10
  1145. package/dist/v3Export.cjs.map +0 -1
  1146. package/dist/v3Export.d.mts +0 -35
  1147. package/dist/v3Export.d.mts.map +0 -1
  1148. package/dist/v3Export.mjs +0 -9
  1149. package/dist/v3Export.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/chatgptWebSearch/index.ts"],"sourcesContent":["import type { DoomHeadlessExecutionContext } from '../../schemas/headless';\nimport { CHATGPT_SIGN_IN_HINT, chatgptCredentials, readBoundedJson } from '../chatgptAuth';\nimport type { ChatgptBackendDependencies } from '../chatgptImages/type';\n\nconst ENDPOINT = 'https://chatgpt.com/backend-api/codex/alpha/search';\nconst MAX_OUTPUT_TOKENS = 10_000; // Codex models.json tool truncation budget.\nconst MAX_COMMANDS_BYTES = 64 * 1024;\n// Fits the layer's ~20k-character excerpt even when every character needs a six-byte JSON escape.\nconst MAX_CONVERSATION_BYTES = 256 * 1024;\nconst MAX_CONVERSATION_ITEMS = 16;\nconst MAX_RESPONSE_BYTES = 4 * 1024 * 1024;\nconst MAX_RESULTS = 100;\nconst LOGIN_MESSAGE = `Web search needs a ChatGPT sign-in. ${CHATGPT_SIGN_IN_HINT}`;\nconst INVALID_RESPONSE = 'Web search returned an invalid response.';\nconst FAILED = 'Web search request failed.';\nconst ACCESS = { cached: false, indexed: 'indexed', live: true } as const;\n// ponytail: copy of Pi's defaultModelPerProvider['openai-codex'] (model-resolver.js), which Pi does not export.\n// Used when the chat model is not a ChatGPT model; goes stale when Pi's catalog moves.\nconst DEFAULT_MODEL = 'gpt-6.1-sol';\n\nexport type WebSearchRequest = Parameters<NonNullable<DoomHeadlessExecutionContext['webSearch']>['search']>[0] & {\n sessionId: string;\n /** The active ChatGPT model id; omitted when the chat model belongs to another provider. */\n model?: string;\n};\n\nfunction record(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\n/** Detaches caller data into plain JSON so the wire body is exactly what was validated. */\nfunction boundedJson(value: unknown, limit: number, message: string): unknown {\n let json: string | undefined;\n try {\n json = JSON.stringify(value);\n } catch {\n throw new Error(message);\n }\n if (json === undefined || Buffer.byteLength(json) > limit) throw new Error(message);\n return JSON.parse(json) as unknown;\n}\n\nfunction conversationInput(conversation: unknown) {\n if (conversation === undefined) return undefined;\n const message = 'Invalid web search conversation.';\n if (!Array.isArray(conversation) || conversation.length > MAX_CONVERSATION_ITEMS) throw new Error(message);\n const items = boundedJson(conversation, MAX_CONVERSATION_BYTES, message) as unknown[];\n if (items.length === 0) return undefined;\n return items.map((item) => {\n if (\n !record(item) ||\n (item.role !== 'user' && item.role !== 'assistant') ||\n typeof item.text !== 'string' ||\n !item.text\n )\n throw new Error(message);\n return {\n type: 'message',\n role: item.role,\n content: [{ type: item.role === 'user' ? 'input_text' : 'output_text', text: item.text }],\n };\n });\n}\n\n/** Host-only transport: authentication never crosses the facet boundary. */\nexport function createChatgptWebSearchClient(dependencies: ChatgptBackendDependencies) {\n return {\n async search(request: WebSearchRequest): Promise<{ output: string; results?: Record<string, unknown>[] }> {\n const { signal } = request;\n signal?.throwIfAborted();\n if (!record(request.commands) || Object.keys(request.commands).length === 0)\n throw new Error('Invalid web search commands.');\n const commands = boundedJson(request.commands, MAX_COMMANDS_BYTES, 'Invalid web search commands.');\n const input = conversationInput(request.conversation);\n if (!Object.hasOwn(ACCESS, request.access)) throw new Error('Invalid web search access mode.');\n const model = request.model ?? DEFAULT_MODEL;\n if (typeof model !== 'string' || !/^[A-Za-z0-9._:-]{1,128}$/.test(model))\n throw new Error('Invalid web search model.');\n if (typeof request.sessionId !== 'string' || !/^[\\x21-\\x7e]{1,256}$/.test(request.sessionId))\n throw new Error('Invalid web search session.');\n const { token, accountId } = await chatgptCredentials(dependencies, LOGIN_MESSAGE, signal);\n let response: Response;\n try {\n response = await (dependencies.fetch ?? globalThis.fetch)(ENDPOINT, {\n method: 'POST',\n redirect: 'error',\n signal,\n headers: {\n Authorization: `Bearer ${token}`,\n 'chatgpt-account-id': accountId,\n originator: 'po_web_search',\n 'User-Agent': '@agimon-ai/po-web-search',\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n },\n body: JSON.stringify({\n id: request.sessionId,\n model,\n ...(input ? { input } : {}),\n commands,\n settings: { allowed_callers: ['direct'], external_web_access: ACCESS[request.access] },\n max_output_tokens: MAX_OUTPUT_TOKENS,\n }),\n });\n } catch {\n signal?.throwIfAborted();\n throw new Error(FAILED);\n }\n if (!response.ok) {\n await response.body?.cancel().catch(() => undefined);\n if (response.status === 401) throw new Error(LOGIN_MESSAGE);\n if (response.status === 403) throw new Error('Web search is not available for this ChatGPT account.');\n if (response.status === 429) {\n const retry = response.headers.get('retry-after');\n throw new Error(\n `Web search quota reached.${retry && /^\\d{1,6}$/.test(retry) ? ` Try again in ${retry} seconds.` : ''}`,\n );\n }\n throw new Error(`Web search request failed (HTTP ${response.status}).`);\n }\n let body: unknown;\n try {\n body = await readBoundedJson(response, MAX_RESPONSE_BYTES, signal);\n } catch {\n signal?.throwIfAborted();\n throw new Error(INVALID_RESPONSE);\n }\n if (!record(body) || typeof body.output !== 'string') throw new Error(INVALID_RESPONSE);\n const output = body.output.trim() ? body.output : 'Web search returned no results.';\n // `results` is display-only, so a malformed list is dropped rather than failing the search.\n const results =\n Array.isArray(body.results) && body.results.length <= MAX_RESULTS && body.results.every(record)\n ? body.results\n : undefined;\n return results ? { output, results } : { output };\n },\n };\n}\n"],"mappings":";;AAIA,MAAM,WAAW;AACjB,MAAM,oBAAoB;AAC1B,MAAM,qBAAqB;AAE3B,MAAM,yBAAyB;AAC/B,MAAM,yBAAyB;AAC/B,MAAM,qBAAqB;AAC3B,MAAM,cAAc;AACpB,MAAM,gBAAgB,uCAAuC;AAC7D,MAAM,mBAAmB;AACzB,MAAM,SAAS;AACf,MAAM,SAAS;CAAE,QAAQ;CAAO,SAAS;CAAW,MAAM;AAAK;AAG/D,MAAM,gBAAgB;AAQtB,SAAS,OAAO,OAAkD;CAChE,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E;;AAGA,SAAS,YAAY,OAAgB,OAAe,SAA0B;CAC5E,IAAI;CACJ,IAAI;EACF,OAAO,KAAK,UAAU,KAAK;CAC7B,QAAQ;EACN,MAAM,IAAI,MAAM,OAAO;CACzB;CACA,IAAI,SAAS,KAAA,KAAa,OAAO,WAAW,IAAI,IAAI,OAAO,MAAM,IAAI,MAAM,OAAO;CAClF,OAAO,KAAK,MAAM,IAAI;AACxB;AAEA,SAAS,kBAAkB,cAAuB;CAChD,IAAI,iBAAiB,KAAA,GAAW,OAAO,KAAA;CACvC,MAAM,UAAU;CAChB,IAAI,CAAC,MAAM,QAAQ,YAAY,KAAK,aAAa,SAAS,wBAAwB,MAAM,IAAI,MAAM,OAAO;CACzG,MAAM,QAAQ,YAAY,cAAc,wBAAwB,OAAO;CACvE,IAAI,MAAM,WAAW,GAAG,OAAO,KAAA;CAC/B,OAAO,MAAM,KAAK,SAAS;EACzB,IACE,CAAC,OAAO,IAAI,KACX,KAAK,SAAS,UAAU,KAAK,SAAS,eACvC,OAAO,KAAK,SAAS,YACrB,CAAC,KAAK,MAEN,MAAM,IAAI,MAAM,OAAO;EACzB,OAAO;GACL,MAAM;GACN,MAAM,KAAK;GACX,SAAS,CAAC;IAAE,MAAM,KAAK,SAAS,SAAS,eAAe;IAAe,MAAM,KAAK;GAAK,CAAC;EAC1F;CACF,CAAC;AACH;;AAGA,SAAgB,6BAA6B,cAA0C;CACrF,OAAO,EACL,MAAM,OAAO,SAA6F;EACxG,MAAM,EAAE,WAAW;EACnB,QAAQ,eAAe;EACvB,IAAI,CAAC,OAAO,QAAQ,QAAQ,KAAK,OAAO,KAAK,QAAQ,QAAQ,CAAC,CAAC,WAAW,GACxE,MAAM,IAAI,MAAM,8BAA8B;EAChD,MAAM,WAAW,YAAY,QAAQ,UAAU,oBAAoB,8BAA8B;EACjG,MAAM,QAAQ,kBAAkB,QAAQ,YAAY;EACpD,IAAI,CAAC,OAAO,OAAO,QAAQ,QAAQ,MAAM,GAAG,MAAM,IAAI,MAAM,iCAAiC;EAC7F,MAAM,QAAQ,QAAQ,SAAS;EAC/B,IAAI,OAAO,UAAU,YAAY,CAAC,2BAA2B,KAAK,KAAK,GACrE,MAAM,IAAI,MAAM,2BAA2B;EAC7C,IAAI,OAAO,QAAQ,cAAc,YAAY,CAAC,uBAAuB,KAAK,QAAQ,SAAS,GACzF,MAAM,IAAI,MAAM,6BAA6B;EAC/C,MAAM,EAAE,OAAO,cAAc,MAAM,mBAAmB,cAAc,eAAe,MAAM;EACzF,IAAI;EACJ,IAAI;GACF,WAAW,OAAO,aAAa,SAAS,WAAW,MAAA,CAAO,UAAU;IAClE,QAAQ;IACR,UAAU;IACV;IACA,SAAS;KACP,eAAe,UAAU;KACzB,sBAAsB;KACtB,YAAY;KACZ,cAAc;KACd,gBAAgB;KAChB,QAAQ;IACV;IACA,MAAM,KAAK,UAAU;KACnB,IAAI,QAAQ;KACZ;KACA,GAAI,QAAQ,EAAE,MAAM,IAAI,CAAC;KACzB;KACA,UAAU;MAAE,iBAAiB,CAAC,QAAQ;MAAG,qBAAqB,OAAO,QAAQ;KAAQ;KACrF,mBAAmB;IACrB,CAAC;GACH,CAAC;EACH,QAAQ;GACN,QAAQ,eAAe;GACvB,MAAM,IAAI,MAAM,MAAM;EACxB;EACA,IAAI,CAAC,SAAS,IAAI;GAChB,MAAM,SAAS,MAAM,OAAO,CAAC,CAAC,YAAY,KAAA,CAAS;GACnD,IAAI,SAAS,WAAW,KAAK,MAAM,IAAI,MAAM,aAAa;GAC1D,IAAI,SAAS,WAAW,KAAK,MAAM,IAAI,MAAM,uDAAuD;GACpG,IAAI,SAAS,WAAW,KAAK;IAC3B,MAAM,QAAQ,SAAS,QAAQ,IAAI,aAAa;IAChD,MAAM,IAAI,MACR,4BAA4B,SAAS,YAAY,KAAK,KAAK,IAAI,iBAAiB,MAAM,aAAa,IACrG;GACF;GACA,MAAM,IAAI,MAAM,mCAAmC,SAAS,OAAO,GAAG;EACxE;EACA,IAAI;EACJ,IAAI;GACF,OAAO,MAAM,gBAAgB,UAAU,oBAAoB,MAAM;EACnE,QAAQ;GACN,QAAQ,eAAe;GACvB,MAAM,IAAI,MAAM,gBAAgB;EAClC;EACA,IAAI,CAAC,OAAO,IAAI,KAAK,OAAO,KAAK,WAAW,UAAU,MAAM,IAAI,MAAM,gBAAgB;EACtF,MAAM,SAAS,KAAK,OAAO,KAAK,IAAI,KAAK,SAAS;EAElD,MAAM,UACJ,MAAM,QAAQ,KAAK,OAAO,KAAK,KAAK,QAAQ,UAAU,eAAe,KAAK,QAAQ,MAAM,MAAM,IAC1F,KAAK,UACL,KAAA;EACN,OAAO,UAAU;GAAE;GAAQ;EAAQ,IAAI,EAAE,OAAO;CAClD,EACF;AACF"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/chatgptWebSearch/index.ts"],"sourcesContent":["import type { PoHeadlessExecutionContext } from '../../schemas/headless';\nimport { CHATGPT_SIGN_IN_HINT, chatgptCredentials, readBoundedJson } from '../chatgptAuth';\nimport type { ChatgptBackendDependencies } from '../chatgptImages/type';\n\nconst ENDPOINT = 'https://chatgpt.com/backend-api/codex/alpha/search';\nconst MAX_OUTPUT_TOKENS = 10_000; // Codex models.json tool truncation budget.\nconst MAX_COMMANDS_BYTES = 64 * 1024;\n// Fits the layer's ~20k-character excerpt even when every character needs a six-byte JSON escape.\nconst MAX_CONVERSATION_BYTES = 256 * 1024;\nconst MAX_CONVERSATION_ITEMS = 16;\nconst MAX_RESPONSE_BYTES = 4 * 1024 * 1024;\nconst MAX_RESULTS = 100;\nconst LOGIN_MESSAGE = `Web search needs a ChatGPT sign-in. ${CHATGPT_SIGN_IN_HINT}`;\nconst INVALID_RESPONSE = 'Web search returned an invalid response.';\nconst FAILED = 'Web search request failed.';\nconst ACCESS = { cached: false, indexed: 'indexed', live: true } as const;\n// ponytail: copy of Pi's defaultModelPerProvider['openai-codex'] (model-resolver.js), which Pi does not export.\n// Used when the chat model is not a ChatGPT model; goes stale when Pi's catalog moves.\nconst DEFAULT_MODEL = 'gpt-6.1-sol';\n\nexport type WebSearchRequest = Parameters<NonNullable<PoHeadlessExecutionContext['webSearch']>['search']>[0] & {\n sessionId: string;\n /** The active ChatGPT model id; omitted when the chat model belongs to another provider. */\n model?: string;\n};\n\nfunction record(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\n/** Detaches caller data into plain JSON so the wire body is exactly what was validated. */\nfunction boundedJson(value: unknown, limit: number, message: string): unknown {\n let json: string | undefined;\n try {\n json = JSON.stringify(value);\n } catch {\n throw new Error(message);\n }\n if (json === undefined || Buffer.byteLength(json) > limit) throw new Error(message);\n return JSON.parse(json) as unknown;\n}\n\nfunction conversationInput(conversation: unknown) {\n if (conversation === undefined) return undefined;\n const message = 'Invalid web search conversation.';\n if (!Array.isArray(conversation) || conversation.length > MAX_CONVERSATION_ITEMS) throw new Error(message);\n const items = boundedJson(conversation, MAX_CONVERSATION_BYTES, message) as unknown[];\n if (items.length === 0) return undefined;\n return items.map((item) => {\n if (\n !record(item) ||\n (item.role !== 'user' && item.role !== 'assistant') ||\n typeof item.text !== 'string' ||\n !item.text\n )\n throw new Error(message);\n return {\n type: 'message',\n role: item.role,\n content: [{ type: item.role === 'user' ? 'input_text' : 'output_text', text: item.text }],\n };\n });\n}\n\n/** Host-only transport: authentication never crosses the package boundary. */\nexport function createChatgptWebSearchClient(dependencies: ChatgptBackendDependencies) {\n return {\n async search(request: WebSearchRequest): Promise<{ output: string; results?: Record<string, unknown>[] }> {\n const { signal } = request;\n signal?.throwIfAborted();\n if (!record(request.commands) || Object.keys(request.commands).length === 0)\n throw new Error('Invalid web search commands.');\n const commands = boundedJson(request.commands, MAX_COMMANDS_BYTES, 'Invalid web search commands.');\n const input = conversationInput(request.conversation);\n if (!Object.hasOwn(ACCESS, request.access)) throw new Error('Invalid web search access mode.');\n const model = request.model ?? DEFAULT_MODEL;\n if (typeof model !== 'string' || !/^[A-Za-z0-9._:-]{1,128}$/.test(model))\n throw new Error('Invalid web search model.');\n if (typeof request.sessionId !== 'string' || !/^[\\x21-\\x7e]{1,256}$/.test(request.sessionId))\n throw new Error('Invalid web search session.');\n const { token, accountId } = await chatgptCredentials(dependencies, LOGIN_MESSAGE, signal);\n let response: Response;\n try {\n response = await (dependencies.fetch ?? globalThis.fetch)(ENDPOINT, {\n method: 'POST',\n redirect: 'error',\n signal,\n headers: {\n Authorization: `Bearer ${token}`,\n 'chatgpt-account-id': accountId,\n originator: 'po_web_search',\n 'User-Agent': '@agimon-ai/po-web-search',\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n },\n body: JSON.stringify({\n id: request.sessionId,\n model,\n ...(input ? { input } : {}),\n commands,\n settings: { allowed_callers: ['direct'], external_web_access: ACCESS[request.access] },\n max_output_tokens: MAX_OUTPUT_TOKENS,\n }),\n });\n } catch {\n signal?.throwIfAborted();\n throw new Error(FAILED);\n }\n if (!response.ok) {\n await response.body?.cancel().catch(() => undefined);\n if (response.status === 401) throw new Error(LOGIN_MESSAGE);\n if (response.status === 403) throw new Error('Web search is not available for this ChatGPT account.');\n if (response.status === 429) {\n const retry = response.headers.get('retry-after');\n throw new Error(\n `Web search quota reached.${retry && /^\\d{1,6}$/.test(retry) ? ` Try again in ${retry} seconds.` : ''}`,\n );\n }\n throw new Error(`Web search request failed (HTTP ${response.status}).`);\n }\n let body: unknown;\n try {\n body = await readBoundedJson(response, MAX_RESPONSE_BYTES, signal);\n } catch {\n signal?.throwIfAborted();\n throw new Error(INVALID_RESPONSE);\n }\n if (!record(body) || typeof body.output !== 'string') throw new Error(INVALID_RESPONSE);\n const output = body.output.trim() ? body.output : 'Web search returned no results.';\n // `results` is display-only, so a malformed list is dropped rather than failing the search.\n const results =\n Array.isArray(body.results) && body.results.length <= MAX_RESULTS && body.results.every(record)\n ? body.results\n : undefined;\n return results ? { output, results } : { output };\n },\n };\n}\n"],"mappings":";;AAIA,MAAM,WAAW;AACjB,MAAM,oBAAoB;AAC1B,MAAM,qBAAqB;AAE3B,MAAM,yBAAyB;AAC/B,MAAM,yBAAyB;AAC/B,MAAM,qBAAqB;AAC3B,MAAM,cAAc;AACpB,MAAM,gBAAgB,uCAAuC;AAC7D,MAAM,mBAAmB;AACzB,MAAM,SAAS;AACf,MAAM,SAAS;CAAE,QAAQ;CAAO,SAAS;CAAW,MAAM;AAAK;AAG/D,MAAM,gBAAgB;AAQtB,SAAS,OAAO,OAAkD;CAChE,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E;;AAGA,SAAS,YAAY,OAAgB,OAAe,SAA0B;CAC5E,IAAI;CACJ,IAAI;EACF,OAAO,KAAK,UAAU,KAAK;CAC7B,QAAQ;EACN,MAAM,IAAI,MAAM,OAAO;CACzB;CACA,IAAI,SAAS,KAAA,KAAa,OAAO,WAAW,IAAI,IAAI,OAAO,MAAM,IAAI,MAAM,OAAO;CAClF,OAAO,KAAK,MAAM,IAAI;AACxB;AAEA,SAAS,kBAAkB,cAAuB;CAChD,IAAI,iBAAiB,KAAA,GAAW,OAAO,KAAA;CACvC,MAAM,UAAU;CAChB,IAAI,CAAC,MAAM,QAAQ,YAAY,KAAK,aAAa,SAAS,wBAAwB,MAAM,IAAI,MAAM,OAAO;CACzG,MAAM,QAAQ,YAAY,cAAc,wBAAwB,OAAO;CACvE,IAAI,MAAM,WAAW,GAAG,OAAO,KAAA;CAC/B,OAAO,MAAM,KAAK,SAAS;EACzB,IACE,CAAC,OAAO,IAAI,KACX,KAAK,SAAS,UAAU,KAAK,SAAS,eACvC,OAAO,KAAK,SAAS,YACrB,CAAC,KAAK,MAEN,MAAM,IAAI,MAAM,OAAO;EACzB,OAAO;GACL,MAAM;GACN,MAAM,KAAK;GACX,SAAS,CAAC;IAAE,MAAM,KAAK,SAAS,SAAS,eAAe;IAAe,MAAM,KAAK;GAAK,CAAC;EAC1F;CACF,CAAC;AACH;;AAGA,SAAgB,6BAA6B,cAA0C;CACrF,OAAO,EACL,MAAM,OAAO,SAA6F;EACxG,MAAM,EAAE,WAAW;EACnB,QAAQ,eAAe;EACvB,IAAI,CAAC,OAAO,QAAQ,QAAQ,KAAK,OAAO,KAAK,QAAQ,QAAQ,CAAC,CAAC,WAAW,GACxE,MAAM,IAAI,MAAM,8BAA8B;EAChD,MAAM,WAAW,YAAY,QAAQ,UAAU,oBAAoB,8BAA8B;EACjG,MAAM,QAAQ,kBAAkB,QAAQ,YAAY;EACpD,IAAI,CAAC,OAAO,OAAO,QAAQ,QAAQ,MAAM,GAAG,MAAM,IAAI,MAAM,iCAAiC;EAC7F,MAAM,QAAQ,QAAQ,SAAS;EAC/B,IAAI,OAAO,UAAU,YAAY,CAAC,2BAA2B,KAAK,KAAK,GACrE,MAAM,IAAI,MAAM,2BAA2B;EAC7C,IAAI,OAAO,QAAQ,cAAc,YAAY,CAAC,uBAAuB,KAAK,QAAQ,SAAS,GACzF,MAAM,IAAI,MAAM,6BAA6B;EAC/C,MAAM,EAAE,OAAO,cAAc,MAAM,mBAAmB,cAAc,eAAe,MAAM;EACzF,IAAI;EACJ,IAAI;GACF,WAAW,OAAO,aAAa,SAAS,WAAW,MAAA,CAAO,UAAU;IAClE,QAAQ;IACR,UAAU;IACV;IACA,SAAS;KACP,eAAe,UAAU;KACzB,sBAAsB;KACtB,YAAY;KACZ,cAAc;KACd,gBAAgB;KAChB,QAAQ;IACV;IACA,MAAM,KAAK,UAAU;KACnB,IAAI,QAAQ;KACZ;KACA,GAAI,QAAQ,EAAE,MAAM,IAAI,CAAC;KACzB;KACA,UAAU;MAAE,iBAAiB,CAAC,QAAQ;MAAG,qBAAqB,OAAO,QAAQ;KAAQ;KACrF,mBAAmB;IACrB,CAAC;GACH,CAAC;EACH,QAAQ;GACN,QAAQ,eAAe;GACvB,MAAM,IAAI,MAAM,MAAM;EACxB;EACA,IAAI,CAAC,SAAS,IAAI;GAChB,MAAM,SAAS,MAAM,OAAO,CAAC,CAAC,YAAY,KAAA,CAAS;GACnD,IAAI,SAAS,WAAW,KAAK,MAAM,IAAI,MAAM,aAAa;GAC1D,IAAI,SAAS,WAAW,KAAK,MAAM,IAAI,MAAM,uDAAuD;GACpG,IAAI,SAAS,WAAW,KAAK;IAC3B,MAAM,QAAQ,SAAS,QAAQ,IAAI,aAAa;IAChD,MAAM,IAAI,MACR,4BAA4B,SAAS,YAAY,KAAK,KAAK,IAAI,iBAAiB,MAAM,aAAa,IACrG;GACF;GACA,MAAM,IAAI,MAAM,mCAAmC,SAAS,OAAO,GAAG;EACxE;EACA,IAAI;EACJ,IAAI;GACF,OAAO,MAAM,gBAAgB,UAAU,oBAAoB,MAAM;EACnE,QAAQ;GACN,QAAQ,eAAe;GACvB,MAAM,IAAI,MAAM,gBAAgB;EAClC;EACA,IAAI,CAAC,OAAO,IAAI,KAAK,OAAO,KAAK,WAAW,UAAU,MAAM,IAAI,MAAM,gBAAgB;EACtF,MAAM,SAAS,KAAK,OAAO,KAAK,IAAI,KAAK,SAAS;EAElD,MAAM,UACJ,MAAM,QAAQ,KAAK,OAAO,KAAK,KAAK,QAAQ,UAAU,eAAe,KAAK,QAAQ,MAAM,MAAM,IAC1F,KAAK,UACL,KAAA;EACN,OAAO,UAAU;GAAE;GAAQ;EAAQ,IAAI,EAAE,OAAO;CAClD,EACF;AACF"}
@@ -5,14 +5,14 @@ function compareContributions(left, right) {
5
5
  return left.order - right.order || sourceOrder || idOrder;
6
6
  }
7
7
  function assertNonEmpty(value, field) {
8
- if (value.trim().length === 0) throw new Error(`Doom context contribution ${field} must not be empty.`);
8
+ if (value.trim().length === 0) throw new Error(`Po context contribution ${field} must not be empty.`);
9
9
  }
10
10
  function contributionErrorMessage(error) {
11
11
  return error instanceof Error ? error.message : String(error);
12
12
  }
13
- /** Creates the host-owned aggregation service for one Doom session generation. */
14
- function createDoomContextContributionsService(generation) {
15
- if (!generation) throw new Error("Doom context contributions require a session generation.");
13
+ /** Creates the host-owned aggregation service for one Po session generation. */
14
+ function createPoContextContributionsService(generation) {
15
+ if (!generation) throw new Error("Po context contributions require a session generation.");
16
16
  const contributions = /* @__PURE__ */ new Map();
17
17
  return Object.freeze({
18
18
  generation,
@@ -20,10 +20,10 @@ function createDoomContextContributionsService(generation) {
20
20
  assertNonEmpty(contribution.source, "source");
21
21
  assertNonEmpty(contribution.id, "id");
22
22
  assertNonEmpty(contribution.label, "label");
23
- if (!Number.isFinite(contribution.order)) throw new Error("Doom context contribution order must be a finite number.");
24
- if (typeof contribution.snapshot !== "function") throw new Error("Doom context contribution snapshot must be a function.");
23
+ if (!Number.isFinite(contribution.order)) throw new Error("Po context contribution order must be a finite number.");
24
+ if (typeof contribution.snapshot !== "function") throw new Error("Po context contribution snapshot must be a function.");
25
25
  const key = JSON.stringify([contribution.source, contribution.id]);
26
- if (contributions.has(key)) throw new Error(`Doom context contribution is already registered: ${contribution.source}/${contribution.id}.`);
26
+ if (contributions.has(key)) throw new Error(`Po context contribution is already registered: ${contribution.source}/${contribution.id}.`);
27
27
  const stored = Object.freeze({
28
28
  key,
29
29
  source: contribution.source,
@@ -74,6 +74,6 @@ function createDoomContextContributionsService(generation) {
74
74
  });
75
75
  }
76
76
  //#endregion
77
- exports.createDoomContextContributionsService = createDoomContextContributionsService;
77
+ exports.createPoContextContributionsService = createPoContextContributionsService;
78
78
 
79
79
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":[],"sources":["../../../../src/services/contextContributions/index.ts"],"sourcesContent":["import type {\n DoomContextContribution,\n DoomContextContributionEntry,\n DoomContextContributionError,\n DoomContextContributionRegistration,\n DoomContextContributionsService,\n DoomContextContributionsSnapshot,\n} from '../../schemas/contextContributions';\n\ninterface StoredContribution extends DoomContextContribution {\n readonly key: string;\n}\n\nfunction compareContributions(left: DoomContextContribution, right: DoomContextContribution): number {\n const sourceOrder = left.source < right.source ? -1 : left.source > right.source ? 1 : 0;\n const idOrder = left.id < right.id ? -1 : left.id > right.id ? 1 : 0;\n return left.order - right.order || sourceOrder || idOrder;\n}\n\nfunction assertNonEmpty(value: string, field: string): void {\n if (value.trim().length === 0) throw new Error(`Doom context contribution ${field} must not be empty.`);\n}\n\nfunction contributionErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\n/** Creates the host-owned aggregation service for one Doom session generation. */\nexport function createDoomContextContributionsService(generation: string): DoomContextContributionsService {\n if (!generation) throw new Error('Doom context contributions require a session generation.');\n\n const contributions = new Map<string, StoredContribution>();\n return Object.freeze({\n generation,\n register(contribution: DoomContextContribution): DoomContextContributionRegistration {\n assertNonEmpty(contribution.source, 'source');\n assertNonEmpty(contribution.id, 'id');\n assertNonEmpty(contribution.label, 'label');\n if (!Number.isFinite(contribution.order)) {\n throw new Error('Doom context contribution order must be a finite number.');\n }\n if (typeof contribution.snapshot !== 'function') {\n throw new Error('Doom context contribution snapshot must be a function.');\n }\n\n const key = JSON.stringify([contribution.source, contribution.id]);\n if (contributions.has(key)) {\n throw new Error(`Doom context contribution is already registered: ${contribution.source}/${contribution.id}.`);\n }\n const stored: StoredContribution = Object.freeze({\n key,\n source: contribution.source,\n id: contribution.id,\n label: contribution.label,\n order: contribution.order,\n snapshot: () => contribution.snapshot(),\n });\n contributions.set(key, stored);\n\n let disposed = false;\n return Object.freeze({\n dispose(): void {\n if (disposed) return;\n disposed = true;\n if (contributions.get(key) === stored) contributions.delete(key);\n },\n });\n },\n snapshot(): DoomContextContributionsSnapshot {\n const entries: DoomContextContributionEntry[] = [];\n const errors: DoomContextContributionError[] = [];\n const ordered = [...contributions.values()].sort(compareContributions);\n\n for (const contribution of ordered) {\n const identity = {\n source: contribution.source,\n id: contribution.id,\n label: contribution.label,\n order: contribution.order,\n };\n try {\n const text = contribution.snapshot();\n if (text === undefined) continue;\n if (typeof text !== 'string') throw new Error('Snapshot returned a non-string value.');\n entries.push(Object.freeze({ ...identity, text }));\n } catch (error) {\n errors.push(Object.freeze({ ...identity, message: contributionErrorMessage(error) }));\n }\n }\n\n return Object.freeze({ entries: Object.freeze(entries), errors: Object.freeze(errors) });\n },\n });\n}\n"],"mappings":";AAaA,SAAS,qBAAqB,MAA+B,OAAwC;CACnG,MAAM,cAAc,KAAK,SAAS,MAAM,SAAS,KAAK,KAAK,SAAS,MAAM,SAAS,IAAI;CACvF,MAAM,UAAU,KAAK,KAAK,MAAM,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,IAAI;CACnE,OAAO,KAAK,QAAQ,MAAM,SAAS,eAAe;AACpD;AAEA,SAAS,eAAe,OAAe,OAAqB;CAC1D,IAAI,MAAM,KAAK,CAAC,CAAC,WAAW,GAAG,MAAM,IAAI,MAAM,6BAA6B,MAAM,oBAAoB;AACxG;AAEA,SAAS,yBAAyB,OAAwB;CACxD,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAC9D;;AAGA,SAAgB,sCAAsC,YAAqD;CACzG,IAAI,CAAC,YAAY,MAAM,IAAI,MAAM,0DAA0D;CAE3F,MAAM,gCAAgB,IAAI,IAAgC;CAC1D,OAAO,OAAO,OAAO;EACnB;EACA,SAAS,cAA4E;GACnF,eAAe,aAAa,QAAQ,QAAQ;GAC5C,eAAe,aAAa,IAAI,IAAI;GACpC,eAAe,aAAa,OAAO,OAAO;GAC1C,IAAI,CAAC,OAAO,SAAS,aAAa,KAAK,GACrC,MAAM,IAAI,MAAM,0DAA0D;GAE5E,IAAI,OAAO,aAAa,aAAa,YACnC,MAAM,IAAI,MAAM,wDAAwD;GAG1E,MAAM,MAAM,KAAK,UAAU,CAAC,aAAa,QAAQ,aAAa,EAAE,CAAC;GACjE,IAAI,cAAc,IAAI,GAAG,GACvB,MAAM,IAAI,MAAM,oDAAoD,aAAa,OAAO,GAAG,aAAa,GAAG,EAAE;GAE/G,MAAM,SAA6B,OAAO,OAAO;IAC/C;IACA,QAAQ,aAAa;IACrB,IAAI,aAAa;IACjB,OAAO,aAAa;IACpB,OAAO,aAAa;IACpB,gBAAgB,aAAa,SAAS;GACxC,CAAC;GACD,cAAc,IAAI,KAAK,MAAM;GAE7B,IAAI,WAAW;GACf,OAAO,OAAO,OAAO,EACnB,UAAgB;IACd,IAAI,UAAU;IACd,WAAW;IACX,IAAI,cAAc,IAAI,GAAG,MAAM,QAAQ,cAAc,OAAO,GAAG;GACjE,EACF,CAAC;EACH;EACA,WAA6C;GAC3C,MAAM,UAA0C,CAAC;GACjD,MAAM,SAAyC,CAAC;GAChD,MAAM,UAAU,CAAC,GAAG,cAAc,OAAO,CAAC,CAAC,CAAC,KAAK,oBAAoB;GAErE,KAAK,MAAM,gBAAgB,SAAS;IAClC,MAAM,WAAW;KACf,QAAQ,aAAa;KACrB,IAAI,aAAa;KACjB,OAAO,aAAa;KACpB,OAAO,aAAa;IACtB;IACA,IAAI;KACF,MAAM,OAAO,aAAa,SAAS;KACnC,IAAI,SAAS,KAAA,GAAW;KACxB,IAAI,OAAO,SAAS,UAAU,MAAM,IAAI,MAAM,uCAAuC;KACrF,QAAQ,KAAK,OAAO,OAAO;MAAE,GAAG;MAAU;KAAK,CAAC,CAAC;IACnD,SAAS,OAAO;KACd,OAAO,KAAK,OAAO,OAAO;MAAE,GAAG;MAAU,SAAS,yBAAyB,KAAK;KAAE,CAAC,CAAC;IACtF;GACF;GAEA,OAAO,OAAO,OAAO;IAAE,SAAS,OAAO,OAAO,OAAO;IAAG,QAAQ,OAAO,OAAO,MAAM;GAAE,CAAC;EACzF;CACF,CAAC;AACH"}
1
+ {"version":3,"file":"index.cjs","names":[],"sources":["../../../../src/services/contextContributions/index.ts"],"sourcesContent":["import type {\n PoContextContribution,\n PoContextContributionEntry,\n PoContextContributionError,\n PoContextContributionRegistration,\n PoContextContributionsService,\n PoContextContributionsSnapshot,\n} from '../../schemas/contextContributions';\n\ninterface StoredContribution extends PoContextContribution {\n readonly key: string;\n}\n\nfunction compareContributions(left: PoContextContribution, right: PoContextContribution): number {\n const sourceOrder = left.source < right.source ? -1 : left.source > right.source ? 1 : 0;\n const idOrder = left.id < right.id ? -1 : left.id > right.id ? 1 : 0;\n return left.order - right.order || sourceOrder || idOrder;\n}\n\nfunction assertNonEmpty(value: string, field: string): void {\n if (value.trim().length === 0) throw new Error(`Po context contribution ${field} must not be empty.`);\n}\n\nfunction contributionErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\n/** Creates the host-owned aggregation service for one Po session generation. */\nexport function createPoContextContributionsService(generation: string): PoContextContributionsService {\n if (!generation) throw new Error('Po context contributions require a session generation.');\n\n const contributions = new Map<string, StoredContribution>();\n return Object.freeze({\n generation,\n register(contribution: PoContextContribution): PoContextContributionRegistration {\n assertNonEmpty(contribution.source, 'source');\n assertNonEmpty(contribution.id, 'id');\n assertNonEmpty(contribution.label, 'label');\n if (!Number.isFinite(contribution.order)) {\n throw new Error('Po context contribution order must be a finite number.');\n }\n if (typeof contribution.snapshot !== 'function') {\n throw new Error('Po context contribution snapshot must be a function.');\n }\n\n const key = JSON.stringify([contribution.source, contribution.id]);\n if (contributions.has(key)) {\n throw new Error(`Po context contribution is already registered: ${contribution.source}/${contribution.id}.`);\n }\n const stored: StoredContribution = Object.freeze({\n key,\n source: contribution.source,\n id: contribution.id,\n label: contribution.label,\n order: contribution.order,\n snapshot: () => contribution.snapshot(),\n });\n contributions.set(key, stored);\n\n let disposed = false;\n return Object.freeze({\n dispose(): void {\n if (disposed) return;\n disposed = true;\n if (contributions.get(key) === stored) contributions.delete(key);\n },\n });\n },\n snapshot(): PoContextContributionsSnapshot {\n const entries: PoContextContributionEntry[] = [];\n const errors: PoContextContributionError[] = [];\n const ordered = [...contributions.values()].sort(compareContributions);\n\n for (const contribution of ordered) {\n const identity = {\n source: contribution.source,\n id: contribution.id,\n label: contribution.label,\n order: contribution.order,\n };\n try {\n const text = contribution.snapshot();\n if (text === undefined) continue;\n if (typeof text !== 'string') throw new Error('Snapshot returned a non-string value.');\n entries.push(Object.freeze({ ...identity, text }));\n } catch (error) {\n errors.push(Object.freeze({ ...identity, message: contributionErrorMessage(error) }));\n }\n }\n\n return Object.freeze({ entries: Object.freeze(entries), errors: Object.freeze(errors) });\n },\n });\n}\n"],"mappings":";AAaA,SAAS,qBAAqB,MAA6B,OAAsC;CAC/F,MAAM,cAAc,KAAK,SAAS,MAAM,SAAS,KAAK,KAAK,SAAS,MAAM,SAAS,IAAI;CACvF,MAAM,UAAU,KAAK,KAAK,MAAM,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,IAAI;CACnE,OAAO,KAAK,QAAQ,MAAM,SAAS,eAAe;AACpD;AAEA,SAAS,eAAe,OAAe,OAAqB;CAC1D,IAAI,MAAM,KAAK,CAAC,CAAC,WAAW,GAAG,MAAM,IAAI,MAAM,2BAA2B,MAAM,oBAAoB;AACtG;AAEA,SAAS,yBAAyB,OAAwB;CACxD,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAC9D;;AAGA,SAAgB,oCAAoC,YAAmD;CACrG,IAAI,CAAC,YAAY,MAAM,IAAI,MAAM,wDAAwD;CAEzF,MAAM,gCAAgB,IAAI,IAAgC;CAC1D,OAAO,OAAO,OAAO;EACnB;EACA,SAAS,cAAwE;GAC/E,eAAe,aAAa,QAAQ,QAAQ;GAC5C,eAAe,aAAa,IAAI,IAAI;GACpC,eAAe,aAAa,OAAO,OAAO;GAC1C,IAAI,CAAC,OAAO,SAAS,aAAa,KAAK,GACrC,MAAM,IAAI,MAAM,wDAAwD;GAE1E,IAAI,OAAO,aAAa,aAAa,YACnC,MAAM,IAAI,MAAM,sDAAsD;GAGxE,MAAM,MAAM,KAAK,UAAU,CAAC,aAAa,QAAQ,aAAa,EAAE,CAAC;GACjE,IAAI,cAAc,IAAI,GAAG,GACvB,MAAM,IAAI,MAAM,kDAAkD,aAAa,OAAO,GAAG,aAAa,GAAG,EAAE;GAE7G,MAAM,SAA6B,OAAO,OAAO;IAC/C;IACA,QAAQ,aAAa;IACrB,IAAI,aAAa;IACjB,OAAO,aAAa;IACpB,OAAO,aAAa;IACpB,gBAAgB,aAAa,SAAS;GACxC,CAAC;GACD,cAAc,IAAI,KAAK,MAAM;GAE7B,IAAI,WAAW;GACf,OAAO,OAAO,OAAO,EACnB,UAAgB;IACd,IAAI,UAAU;IACd,WAAW;IACX,IAAI,cAAc,IAAI,GAAG,MAAM,QAAQ,cAAc,OAAO,GAAG;GACjE,EACF,CAAC;EACH;EACA,WAA2C;GACzC,MAAM,UAAwC,CAAC;GAC/C,MAAM,SAAuC,CAAC;GAC9C,MAAM,UAAU,CAAC,GAAG,cAAc,OAAO,CAAC,CAAC,CAAC,KAAK,oBAAoB;GAErE,KAAK,MAAM,gBAAgB,SAAS;IAClC,MAAM,WAAW;KACf,QAAQ,aAAa;KACrB,IAAI,aAAa;KACjB,OAAO,aAAa;KACpB,OAAO,aAAa;IACtB;IACA,IAAI;KACF,MAAM,OAAO,aAAa,SAAS;KACnC,IAAI,SAAS,KAAA,GAAW;KACxB,IAAI,OAAO,SAAS,UAAU,MAAM,IAAI,MAAM,uCAAuC;KACrF,QAAQ,KAAK,OAAO,OAAO;MAAE,GAAG;MAAU;KAAK,CAAC,CAAC;IACnD,SAAS,OAAO;KACd,OAAO,KAAK,OAAO,OAAO;MAAE,GAAG;MAAU,SAAS,yBAAyB,KAAK;KAAE,CAAC,CAAC;IACtF;GACF;GAEA,OAAO,OAAO,OAAO;IAAE,SAAS,OAAO,OAAO,OAAO;IAAG,QAAQ,OAAO,OAAO,MAAM;GAAE,CAAC;EACzF;CACF,CAAC;AACH"}
@@ -1,6 +1,6 @@
1
- import { DoomContextContributionsService } from "../../schemas/contextContributions.mjs";
1
+ import { PoContextContributionsService } from "../../schemas/contextContributions.mjs";
2
2
  //#region src/services/contextContributions/index.d.ts
3
- /** Creates the host-owned aggregation service for one Doom session generation. */
4
- export declare function createDoomContextContributionsService(generation: string): DoomContextContributionsService;
3
+ /** Creates the host-owned aggregation service for one Po session generation. */
4
+ export declare function createPoContextContributionsService(generation: string): PoContextContributionsService;
5
5
  //#endregion
6
6
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/services/contextContributions/index.ts"],"mappings":";;;wBA4BgB,sCAAsC,qBAAqB"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/services/contextContributions/index.ts"],"mappings":";;;wBA4BgB,oCAAoC,qBAAqB"}
@@ -5,14 +5,14 @@ function compareContributions(left, right) {
5
5
  return left.order - right.order || sourceOrder || idOrder;
6
6
  }
7
7
  function assertNonEmpty(value, field) {
8
- if (value.trim().length === 0) throw new Error(`Doom context contribution ${field} must not be empty.`);
8
+ if (value.trim().length === 0) throw new Error(`Po context contribution ${field} must not be empty.`);
9
9
  }
10
10
  function contributionErrorMessage(error) {
11
11
  return error instanceof Error ? error.message : String(error);
12
12
  }
13
- /** Creates the host-owned aggregation service for one Doom session generation. */
14
- function createDoomContextContributionsService(generation) {
15
- if (!generation) throw new Error("Doom context contributions require a session generation.");
13
+ /** Creates the host-owned aggregation service for one Po session generation. */
14
+ function createPoContextContributionsService(generation) {
15
+ if (!generation) throw new Error("Po context contributions require a session generation.");
16
16
  const contributions = /* @__PURE__ */ new Map();
17
17
  return Object.freeze({
18
18
  generation,
@@ -20,10 +20,10 @@ function createDoomContextContributionsService(generation) {
20
20
  assertNonEmpty(contribution.source, "source");
21
21
  assertNonEmpty(contribution.id, "id");
22
22
  assertNonEmpty(contribution.label, "label");
23
- if (!Number.isFinite(contribution.order)) throw new Error("Doom context contribution order must be a finite number.");
24
- if (typeof contribution.snapshot !== "function") throw new Error("Doom context contribution snapshot must be a function.");
23
+ if (!Number.isFinite(contribution.order)) throw new Error("Po context contribution order must be a finite number.");
24
+ if (typeof contribution.snapshot !== "function") throw new Error("Po context contribution snapshot must be a function.");
25
25
  const key = JSON.stringify([contribution.source, contribution.id]);
26
- if (contributions.has(key)) throw new Error(`Doom context contribution is already registered: ${contribution.source}/${contribution.id}.`);
26
+ if (contributions.has(key)) throw new Error(`Po context contribution is already registered: ${contribution.source}/${contribution.id}.`);
27
27
  const stored = Object.freeze({
28
28
  key,
29
29
  source: contribution.source,
@@ -74,6 +74,6 @@ function createDoomContextContributionsService(generation) {
74
74
  });
75
75
  }
76
76
  //#endregion
77
- export { createDoomContextContributionsService };
77
+ export { createPoContextContributionsService };
78
78
 
79
79
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/contextContributions/index.ts"],"sourcesContent":["import type {\n DoomContextContribution,\n DoomContextContributionEntry,\n DoomContextContributionError,\n DoomContextContributionRegistration,\n DoomContextContributionsService,\n DoomContextContributionsSnapshot,\n} from '../../schemas/contextContributions';\n\ninterface StoredContribution extends DoomContextContribution {\n readonly key: string;\n}\n\nfunction compareContributions(left: DoomContextContribution, right: DoomContextContribution): number {\n const sourceOrder = left.source < right.source ? -1 : left.source > right.source ? 1 : 0;\n const idOrder = left.id < right.id ? -1 : left.id > right.id ? 1 : 0;\n return left.order - right.order || sourceOrder || idOrder;\n}\n\nfunction assertNonEmpty(value: string, field: string): void {\n if (value.trim().length === 0) throw new Error(`Doom context contribution ${field} must not be empty.`);\n}\n\nfunction contributionErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\n/** Creates the host-owned aggregation service for one Doom session generation. */\nexport function createDoomContextContributionsService(generation: string): DoomContextContributionsService {\n if (!generation) throw new Error('Doom context contributions require a session generation.');\n\n const contributions = new Map<string, StoredContribution>();\n return Object.freeze({\n generation,\n register(contribution: DoomContextContribution): DoomContextContributionRegistration {\n assertNonEmpty(contribution.source, 'source');\n assertNonEmpty(contribution.id, 'id');\n assertNonEmpty(contribution.label, 'label');\n if (!Number.isFinite(contribution.order)) {\n throw new Error('Doom context contribution order must be a finite number.');\n }\n if (typeof contribution.snapshot !== 'function') {\n throw new Error('Doom context contribution snapshot must be a function.');\n }\n\n const key = JSON.stringify([contribution.source, contribution.id]);\n if (contributions.has(key)) {\n throw new Error(`Doom context contribution is already registered: ${contribution.source}/${contribution.id}.`);\n }\n const stored: StoredContribution = Object.freeze({\n key,\n source: contribution.source,\n id: contribution.id,\n label: contribution.label,\n order: contribution.order,\n snapshot: () => contribution.snapshot(),\n });\n contributions.set(key, stored);\n\n let disposed = false;\n return Object.freeze({\n dispose(): void {\n if (disposed) return;\n disposed = true;\n if (contributions.get(key) === stored) contributions.delete(key);\n },\n });\n },\n snapshot(): DoomContextContributionsSnapshot {\n const entries: DoomContextContributionEntry[] = [];\n const errors: DoomContextContributionError[] = [];\n const ordered = [...contributions.values()].sort(compareContributions);\n\n for (const contribution of ordered) {\n const identity = {\n source: contribution.source,\n id: contribution.id,\n label: contribution.label,\n order: contribution.order,\n };\n try {\n const text = contribution.snapshot();\n if (text === undefined) continue;\n if (typeof text !== 'string') throw new Error('Snapshot returned a non-string value.');\n entries.push(Object.freeze({ ...identity, text }));\n } catch (error) {\n errors.push(Object.freeze({ ...identity, message: contributionErrorMessage(error) }));\n }\n }\n\n return Object.freeze({ entries: Object.freeze(entries), errors: Object.freeze(errors) });\n },\n });\n}\n"],"mappings":";AAaA,SAAS,qBAAqB,MAA+B,OAAwC;CACnG,MAAM,cAAc,KAAK,SAAS,MAAM,SAAS,KAAK,KAAK,SAAS,MAAM,SAAS,IAAI;CACvF,MAAM,UAAU,KAAK,KAAK,MAAM,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,IAAI;CACnE,OAAO,KAAK,QAAQ,MAAM,SAAS,eAAe;AACpD;AAEA,SAAS,eAAe,OAAe,OAAqB;CAC1D,IAAI,MAAM,KAAK,CAAC,CAAC,WAAW,GAAG,MAAM,IAAI,MAAM,6BAA6B,MAAM,oBAAoB;AACxG;AAEA,SAAS,yBAAyB,OAAwB;CACxD,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAC9D;;AAGA,SAAgB,sCAAsC,YAAqD;CACzG,IAAI,CAAC,YAAY,MAAM,IAAI,MAAM,0DAA0D;CAE3F,MAAM,gCAAgB,IAAI,IAAgC;CAC1D,OAAO,OAAO,OAAO;EACnB;EACA,SAAS,cAA4E;GACnF,eAAe,aAAa,QAAQ,QAAQ;GAC5C,eAAe,aAAa,IAAI,IAAI;GACpC,eAAe,aAAa,OAAO,OAAO;GAC1C,IAAI,CAAC,OAAO,SAAS,aAAa,KAAK,GACrC,MAAM,IAAI,MAAM,0DAA0D;GAE5E,IAAI,OAAO,aAAa,aAAa,YACnC,MAAM,IAAI,MAAM,wDAAwD;GAG1E,MAAM,MAAM,KAAK,UAAU,CAAC,aAAa,QAAQ,aAAa,EAAE,CAAC;GACjE,IAAI,cAAc,IAAI,GAAG,GACvB,MAAM,IAAI,MAAM,oDAAoD,aAAa,OAAO,GAAG,aAAa,GAAG,EAAE;GAE/G,MAAM,SAA6B,OAAO,OAAO;IAC/C;IACA,QAAQ,aAAa;IACrB,IAAI,aAAa;IACjB,OAAO,aAAa;IACpB,OAAO,aAAa;IACpB,gBAAgB,aAAa,SAAS;GACxC,CAAC;GACD,cAAc,IAAI,KAAK,MAAM;GAE7B,IAAI,WAAW;GACf,OAAO,OAAO,OAAO,EACnB,UAAgB;IACd,IAAI,UAAU;IACd,WAAW;IACX,IAAI,cAAc,IAAI,GAAG,MAAM,QAAQ,cAAc,OAAO,GAAG;GACjE,EACF,CAAC;EACH;EACA,WAA6C;GAC3C,MAAM,UAA0C,CAAC;GACjD,MAAM,SAAyC,CAAC;GAChD,MAAM,UAAU,CAAC,GAAG,cAAc,OAAO,CAAC,CAAC,CAAC,KAAK,oBAAoB;GAErE,KAAK,MAAM,gBAAgB,SAAS;IAClC,MAAM,WAAW;KACf,QAAQ,aAAa;KACrB,IAAI,aAAa;KACjB,OAAO,aAAa;KACpB,OAAO,aAAa;IACtB;IACA,IAAI;KACF,MAAM,OAAO,aAAa,SAAS;KACnC,IAAI,SAAS,KAAA,GAAW;KACxB,IAAI,OAAO,SAAS,UAAU,MAAM,IAAI,MAAM,uCAAuC;KACrF,QAAQ,KAAK,OAAO,OAAO;MAAE,GAAG;MAAU;KAAK,CAAC,CAAC;IACnD,SAAS,OAAO;KACd,OAAO,KAAK,OAAO,OAAO;MAAE,GAAG;MAAU,SAAS,yBAAyB,KAAK;KAAE,CAAC,CAAC;IACtF;GACF;GAEA,OAAO,OAAO,OAAO;IAAE,SAAS,OAAO,OAAO,OAAO;IAAG,QAAQ,OAAO,OAAO,MAAM;GAAE,CAAC;EACzF;CACF,CAAC;AACH"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/contextContributions/index.ts"],"sourcesContent":["import type {\n PoContextContribution,\n PoContextContributionEntry,\n PoContextContributionError,\n PoContextContributionRegistration,\n PoContextContributionsService,\n PoContextContributionsSnapshot,\n} from '../../schemas/contextContributions';\n\ninterface StoredContribution extends PoContextContribution {\n readonly key: string;\n}\n\nfunction compareContributions(left: PoContextContribution, right: PoContextContribution): number {\n const sourceOrder = left.source < right.source ? -1 : left.source > right.source ? 1 : 0;\n const idOrder = left.id < right.id ? -1 : left.id > right.id ? 1 : 0;\n return left.order - right.order || sourceOrder || idOrder;\n}\n\nfunction assertNonEmpty(value: string, field: string): void {\n if (value.trim().length === 0) throw new Error(`Po context contribution ${field} must not be empty.`);\n}\n\nfunction contributionErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\n/** Creates the host-owned aggregation service for one Po session generation. */\nexport function createPoContextContributionsService(generation: string): PoContextContributionsService {\n if (!generation) throw new Error('Po context contributions require a session generation.');\n\n const contributions = new Map<string, StoredContribution>();\n return Object.freeze({\n generation,\n register(contribution: PoContextContribution): PoContextContributionRegistration {\n assertNonEmpty(contribution.source, 'source');\n assertNonEmpty(contribution.id, 'id');\n assertNonEmpty(contribution.label, 'label');\n if (!Number.isFinite(contribution.order)) {\n throw new Error('Po context contribution order must be a finite number.');\n }\n if (typeof contribution.snapshot !== 'function') {\n throw new Error('Po context contribution snapshot must be a function.');\n }\n\n const key = JSON.stringify([contribution.source, contribution.id]);\n if (contributions.has(key)) {\n throw new Error(`Po context contribution is already registered: ${contribution.source}/${contribution.id}.`);\n }\n const stored: StoredContribution = Object.freeze({\n key,\n source: contribution.source,\n id: contribution.id,\n label: contribution.label,\n order: contribution.order,\n snapshot: () => contribution.snapshot(),\n });\n contributions.set(key, stored);\n\n let disposed = false;\n return Object.freeze({\n dispose(): void {\n if (disposed) return;\n disposed = true;\n if (contributions.get(key) === stored) contributions.delete(key);\n },\n });\n },\n snapshot(): PoContextContributionsSnapshot {\n const entries: PoContextContributionEntry[] = [];\n const errors: PoContextContributionError[] = [];\n const ordered = [...contributions.values()].sort(compareContributions);\n\n for (const contribution of ordered) {\n const identity = {\n source: contribution.source,\n id: contribution.id,\n label: contribution.label,\n order: contribution.order,\n };\n try {\n const text = contribution.snapshot();\n if (text === undefined) continue;\n if (typeof text !== 'string') throw new Error('Snapshot returned a non-string value.');\n entries.push(Object.freeze({ ...identity, text }));\n } catch (error) {\n errors.push(Object.freeze({ ...identity, message: contributionErrorMessage(error) }));\n }\n }\n\n return Object.freeze({ entries: Object.freeze(entries), errors: Object.freeze(errors) });\n },\n });\n}\n"],"mappings":";AAaA,SAAS,qBAAqB,MAA6B,OAAsC;CAC/F,MAAM,cAAc,KAAK,SAAS,MAAM,SAAS,KAAK,KAAK,SAAS,MAAM,SAAS,IAAI;CACvF,MAAM,UAAU,KAAK,KAAK,MAAM,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,IAAI;CACnE,OAAO,KAAK,QAAQ,MAAM,SAAS,eAAe;AACpD;AAEA,SAAS,eAAe,OAAe,OAAqB;CAC1D,IAAI,MAAM,KAAK,CAAC,CAAC,WAAW,GAAG,MAAM,IAAI,MAAM,2BAA2B,MAAM,oBAAoB;AACtG;AAEA,SAAS,yBAAyB,OAAwB;CACxD,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAC9D;;AAGA,SAAgB,oCAAoC,YAAmD;CACrG,IAAI,CAAC,YAAY,MAAM,IAAI,MAAM,wDAAwD;CAEzF,MAAM,gCAAgB,IAAI,IAAgC;CAC1D,OAAO,OAAO,OAAO;EACnB;EACA,SAAS,cAAwE;GAC/E,eAAe,aAAa,QAAQ,QAAQ;GAC5C,eAAe,aAAa,IAAI,IAAI;GACpC,eAAe,aAAa,OAAO,OAAO;GAC1C,IAAI,CAAC,OAAO,SAAS,aAAa,KAAK,GACrC,MAAM,IAAI,MAAM,wDAAwD;GAE1E,IAAI,OAAO,aAAa,aAAa,YACnC,MAAM,IAAI,MAAM,sDAAsD;GAGxE,MAAM,MAAM,KAAK,UAAU,CAAC,aAAa,QAAQ,aAAa,EAAE,CAAC;GACjE,IAAI,cAAc,IAAI,GAAG,GACvB,MAAM,IAAI,MAAM,kDAAkD,aAAa,OAAO,GAAG,aAAa,GAAG,EAAE;GAE7G,MAAM,SAA6B,OAAO,OAAO;IAC/C;IACA,QAAQ,aAAa;IACrB,IAAI,aAAa;IACjB,OAAO,aAAa;IACpB,OAAO,aAAa;IACpB,gBAAgB,aAAa,SAAS;GACxC,CAAC;GACD,cAAc,IAAI,KAAK,MAAM;GAE7B,IAAI,WAAW;GACf,OAAO,OAAO,OAAO,EACnB,UAAgB;IACd,IAAI,UAAU;IACd,WAAW;IACX,IAAI,cAAc,IAAI,GAAG,MAAM,QAAQ,cAAc,OAAO,GAAG;GACjE,EACF,CAAC;EACH;EACA,WAA2C;GACzC,MAAM,UAAwC,CAAC;GAC/C,MAAM,SAAuC,CAAC;GAC9C,MAAM,UAAU,CAAC,GAAG,cAAc,OAAO,CAAC,CAAC,CAAC,KAAK,oBAAoB;GAErE,KAAK,MAAM,gBAAgB,SAAS;IAClC,MAAM,WAAW;KACf,QAAQ,aAAa;KACrB,IAAI,aAAa;KACjB,OAAO,aAAa;KACpB,OAAO,aAAa;IACtB;IACA,IAAI;KACF,MAAM,OAAO,aAAa,SAAS;KACnC,IAAI,SAAS,KAAA,GAAW;KACxB,IAAI,OAAO,SAAS,UAAU,MAAM,IAAI,MAAM,uCAAuC;KACrF,QAAQ,KAAK,OAAO,OAAO;MAAE,GAAG;MAAU;KAAK,CAAC,CAAC;IACnD,SAAS,OAAO;KACd,OAAO,KAAK,OAAO,OAAO;MAAE,GAAG;MAAU,SAAS,yBAAyB,KAAK;KAAE,CAAC,CAAC;IACtF;GACF;GAEA,OAAO,OAAO,OAAO;IAAE,SAAS,OAAO,OAAO,OAAO;IAAG,QAAQ,OAAO,OAAO,MAAM;GAAE,CAAC;EACzF;CACF,CAAC;AACH"}
@@ -0,0 +1,59 @@
1
+ const require_index = require("../devProxyPolicy/index.cjs");
2
+ //#region src/services/devProxyStore/devProxyRecords.ts
3
+ /**
4
+ * Registered proxy targets on disk.
5
+ *
6
+ * Persisted, unlike a remote session, because a target is a name the developer
7
+ * typed into their own build configuration as `base: '/devproxy/<name>/'`.
8
+ * Losing it on restart would silently break that line, and the file holds no
9
+ * secret: a port number and a label the operator chose while sitting at the
10
+ * machine.
11
+ */
12
+ const TARGETS_FILE = "dev-proxy.json";
13
+ /** Any bit set for group or other; a state file readable by another account is worth repairing. */
14
+ const LOOSE_MODE_MASK = 63;
15
+ /** Whether a file mode lets another account read the file. */
16
+ function isLooseMode(mode) {
17
+ return (mode & LOOSE_MODE_MASK) !== 0;
18
+ }
19
+ /**
20
+ * Rebuilds one record, dropping anything the current policy would refuse.
21
+ *
22
+ * The file is revalidated on read rather than trusted, because a name that was
23
+ * legal when written is not necessarily legal now, and an edited file must not
24
+ * be able to introduce a target the API would have rejected.
25
+ */
26
+ function parseTarget(value) {
27
+ if (typeof value !== "object" || value === null) return void 0;
28
+ const record = value;
29
+ const name = require_index.validateTargetName(record.name);
30
+ if (!name.ok) return void 0;
31
+ if (typeof record.port !== "number" || !Number.isSafeInteger(record.port)) return void 0;
32
+ const createdAt = typeof record.createdAt === "number" ? record.createdAt : 0;
33
+ return {
34
+ name: name.name,
35
+ port: record.port,
36
+ createdAt
37
+ };
38
+ }
39
+ function parseDevProxyTargets(raw, targetsPath, notice) {
40
+ let parsed;
41
+ try {
42
+ parsed = JSON.parse(raw);
43
+ } catch {
44
+ notice(`dev proxy targets at ${targetsPath} are not valid JSON; none will load`);
45
+ return [];
46
+ }
47
+ if (!Array.isArray(parsed)) return [];
48
+ return parsed.map(parseTarget).filter((target) => target !== void 0);
49
+ }
50
+ function serializeDevProxyTargets(targets) {
51
+ return `${JSON.stringify(targets, void 0, 2)}\n`;
52
+ }
53
+ //#endregion
54
+ exports.TARGETS_FILE = TARGETS_FILE;
55
+ exports.isLooseMode = isLooseMode;
56
+ exports.parseDevProxyTargets = parseDevProxyTargets;
57
+ exports.serializeDevProxyTargets = serializeDevProxyTargets;
58
+
59
+ //# sourceMappingURL=devProxyRecords.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devProxyRecords.cjs","names":["validateTargetName"],"sources":["../../../../src/services/devProxyStore/devProxyRecords.ts"],"sourcesContent":["import type { DevProxyTarget } from '../../types/remote';\nimport { validateTargetName } from '../devProxyPolicy';\n\n/**\n * Registered proxy targets on disk.\n *\n * Persisted, unlike a remote session, because a target is a name the developer\n * typed into their own build configuration as `base: '/devproxy/<name>/'`.\n * Losing it on restart would silently break that line, and the file holds no\n * secret: a port number and a label the operator chose while sitting at the\n * machine.\n */\n\nexport const TARGETS_FILE = 'dev-proxy.json';\nexport const DIRECTORY_MODE = 0o700;\nexport const FILE_MODE = 0o600;\n/** Any bit set for group or other; a state file readable by another account is worth repairing. */\nconst LOOSE_MODE_MASK = 0o077;\n\n/** Whether a file mode lets another account read the file. */\nexport function isLooseMode(mode: number): boolean {\n return (mode & LOOSE_MODE_MASK) !== 0;\n}\n\nexport interface DevProxyStoreOptions {\n /** The same directory the remote-access store uses; defaults to ~/.po/web. */\n stateDir: string;\n onNotice?: (message: string) => void;\n}\n\nexport interface DevProxyStore {\n targets(): readonly DevProxyTarget[];\n find(name: string): DevProxyTarget | undefined;\n /** Replaces any target already holding this name, so re-registering a moved port is one call. */\n save(target: DevProxyTarget): void;\n remove(name: string): boolean;\n}\n\n/**\n * Rebuilds one record, dropping anything the current policy would refuse.\n *\n * The file is revalidated on read rather than trusted, because a name that was\n * legal when written is not necessarily legal now, and an edited file must not\n * be able to introduce a target the API would have rejected.\n */\nfunction parseTarget(value: unknown): DevProxyTarget | undefined {\n if (typeof value !== 'object' || value === null) return undefined;\n const record = value as Partial<DevProxyTarget>;\n const name = validateTargetName(record.name);\n if (!name.ok) return undefined;\n if (typeof record.port !== 'number' || !Number.isSafeInteger(record.port)) return undefined;\n const createdAt = typeof record.createdAt === 'number' ? record.createdAt : 0;\n return { name: name.name, port: record.port, createdAt };\n}\n\nexport function parseDevProxyTargets(\n raw: string,\n targetsPath: string,\n notice: (message: string) => void,\n): DevProxyTarget[] {\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw);\n } catch {\n notice(`dev proxy targets at ${targetsPath} are not valid JSON; none will load`);\n return [];\n }\n if (!Array.isArray(parsed)) return [];\n return parsed.map(parseTarget).filter((target): target is DevProxyTarget => target !== undefined);\n}\n\nexport function serializeDevProxyTargets(targets: readonly DevProxyTarget[]): string {\n return `${JSON.stringify(targets, undefined, 2)}\\n`;\n}\n"],"mappings":";;;;;;;;;;;AAaA,MAAa,eAAe;;AAI5B,MAAM,kBAAkB;;AAGxB,SAAgB,YAAY,MAAuB;CACjD,QAAQ,OAAO,qBAAqB;AACtC;;;;;;;;AAuBA,SAAS,YAAY,OAA4C;CAC/D,IAAI,OAAO,UAAU,YAAY,UAAU,MAAM,OAAO,KAAA;CACxD,MAAM,SAAS;CACf,MAAM,OAAOA,cAAAA,mBAAmB,OAAO,IAAI;CAC3C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAA;CACrB,IAAI,OAAO,OAAO,SAAS,YAAY,CAAC,OAAO,cAAc,OAAO,IAAI,GAAG,OAAO,KAAA;CAClF,MAAM,YAAY,OAAO,OAAO,cAAc,WAAW,OAAO,YAAY;CAC5E,OAAO;EAAE,MAAM,KAAK;EAAM,MAAM,OAAO;EAAM;CAAU;AACzD;AAEA,SAAgB,qBACd,KACA,aACA,QACkB;CAClB,IAAI;CACJ,IAAI;EACF,SAAS,KAAK,MAAM,GAAG;CACzB,QAAQ;EACN,OAAO,wBAAwB,YAAY,oCAAoC;EAC/E,OAAO,CAAC;CACV;CACA,IAAI,CAAC,MAAM,QAAQ,MAAM,GAAG,OAAO,CAAC;CACpC,OAAO,OAAO,IAAI,WAAW,CAAC,CAAC,QAAQ,WAAqC,WAAW,KAAA,CAAS;AAClG;AAEA,SAAgB,yBAAyB,SAA4C;CACnF,OAAO,GAAG,KAAK,UAAU,SAAS,KAAA,GAAW,CAAC,EAAE;AAClD"}
@@ -0,0 +1,56 @@
1
+ import { validateTargetName } from "../devProxyPolicy/index.mjs";
2
+ //#region src/services/devProxyStore/devProxyRecords.ts
3
+ /**
4
+ * Registered proxy targets on disk.
5
+ *
6
+ * Persisted, unlike a remote session, because a target is a name the developer
7
+ * typed into their own build configuration as `base: '/devproxy/<name>/'`.
8
+ * Losing it on restart would silently break that line, and the file holds no
9
+ * secret: a port number and a label the operator chose while sitting at the
10
+ * machine.
11
+ */
12
+ const TARGETS_FILE = "dev-proxy.json";
13
+ /** Any bit set for group or other; a state file readable by another account is worth repairing. */
14
+ const LOOSE_MODE_MASK = 63;
15
+ /** Whether a file mode lets another account read the file. */
16
+ function isLooseMode(mode) {
17
+ return (mode & LOOSE_MODE_MASK) !== 0;
18
+ }
19
+ /**
20
+ * Rebuilds one record, dropping anything the current policy would refuse.
21
+ *
22
+ * The file is revalidated on read rather than trusted, because a name that was
23
+ * legal when written is not necessarily legal now, and an edited file must not
24
+ * be able to introduce a target the API would have rejected.
25
+ */
26
+ function parseTarget(value) {
27
+ if (typeof value !== "object" || value === null) return void 0;
28
+ const record = value;
29
+ const name = validateTargetName(record.name);
30
+ if (!name.ok) return void 0;
31
+ if (typeof record.port !== "number" || !Number.isSafeInteger(record.port)) return void 0;
32
+ const createdAt = typeof record.createdAt === "number" ? record.createdAt : 0;
33
+ return {
34
+ name: name.name,
35
+ port: record.port,
36
+ createdAt
37
+ };
38
+ }
39
+ function parseDevProxyTargets(raw, targetsPath, notice) {
40
+ let parsed;
41
+ try {
42
+ parsed = JSON.parse(raw);
43
+ } catch {
44
+ notice(`dev proxy targets at ${targetsPath} are not valid JSON; none will load`);
45
+ return [];
46
+ }
47
+ if (!Array.isArray(parsed)) return [];
48
+ return parsed.map(parseTarget).filter((target) => target !== void 0);
49
+ }
50
+ function serializeDevProxyTargets(targets) {
51
+ return `${JSON.stringify(targets, void 0, 2)}\n`;
52
+ }
53
+ //#endregion
54
+ export { TARGETS_FILE, isLooseMode, parseDevProxyTargets, serializeDevProxyTargets };
55
+
56
+ //# sourceMappingURL=devProxyRecords.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devProxyRecords.mjs","names":[],"sources":["../../../../src/services/devProxyStore/devProxyRecords.ts"],"sourcesContent":["import type { DevProxyTarget } from '../../types/remote';\nimport { validateTargetName } from '../devProxyPolicy';\n\n/**\n * Registered proxy targets on disk.\n *\n * Persisted, unlike a remote session, because a target is a name the developer\n * typed into their own build configuration as `base: '/devproxy/<name>/'`.\n * Losing it on restart would silently break that line, and the file holds no\n * secret: a port number and a label the operator chose while sitting at the\n * machine.\n */\n\nexport const TARGETS_FILE = 'dev-proxy.json';\nexport const DIRECTORY_MODE = 0o700;\nexport const FILE_MODE = 0o600;\n/** Any bit set for group or other; a state file readable by another account is worth repairing. */\nconst LOOSE_MODE_MASK = 0o077;\n\n/** Whether a file mode lets another account read the file. */\nexport function isLooseMode(mode: number): boolean {\n return (mode & LOOSE_MODE_MASK) !== 0;\n}\n\nexport interface DevProxyStoreOptions {\n /** The same directory the remote-access store uses; defaults to ~/.po/web. */\n stateDir: string;\n onNotice?: (message: string) => void;\n}\n\nexport interface DevProxyStore {\n targets(): readonly DevProxyTarget[];\n find(name: string): DevProxyTarget | undefined;\n /** Replaces any target already holding this name, so re-registering a moved port is one call. */\n save(target: DevProxyTarget): void;\n remove(name: string): boolean;\n}\n\n/**\n * Rebuilds one record, dropping anything the current policy would refuse.\n *\n * The file is revalidated on read rather than trusted, because a name that was\n * legal when written is not necessarily legal now, and an edited file must not\n * be able to introduce a target the API would have rejected.\n */\nfunction parseTarget(value: unknown): DevProxyTarget | undefined {\n if (typeof value !== 'object' || value === null) return undefined;\n const record = value as Partial<DevProxyTarget>;\n const name = validateTargetName(record.name);\n if (!name.ok) return undefined;\n if (typeof record.port !== 'number' || !Number.isSafeInteger(record.port)) return undefined;\n const createdAt = typeof record.createdAt === 'number' ? record.createdAt : 0;\n return { name: name.name, port: record.port, createdAt };\n}\n\nexport function parseDevProxyTargets(\n raw: string,\n targetsPath: string,\n notice: (message: string) => void,\n): DevProxyTarget[] {\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw);\n } catch {\n notice(`dev proxy targets at ${targetsPath} are not valid JSON; none will load`);\n return [];\n }\n if (!Array.isArray(parsed)) return [];\n return parsed.map(parseTarget).filter((target): target is DevProxyTarget => target !== undefined);\n}\n\nexport function serializeDevProxyTargets(targets: readonly DevProxyTarget[]): string {\n return `${JSON.stringify(targets, undefined, 2)}\\n`;\n}\n"],"mappings":";;;;;;;;;;;AAaA,MAAa,eAAe;;AAI5B,MAAM,kBAAkB;;AAGxB,SAAgB,YAAY,MAAuB;CACjD,QAAQ,OAAO,qBAAqB;AACtC;;;;;;;;AAuBA,SAAS,YAAY,OAA4C;CAC/D,IAAI,OAAO,UAAU,YAAY,UAAU,MAAM,OAAO,KAAA;CACxD,MAAM,SAAS;CACf,MAAM,OAAO,mBAAmB,OAAO,IAAI;CAC3C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAA;CACrB,IAAI,OAAO,OAAO,SAAS,YAAY,CAAC,OAAO,cAAc,OAAO,IAAI,GAAG,OAAO,KAAA;CAClF,MAAM,YAAY,OAAO,OAAO,cAAc,WAAW,OAAO,YAAY;CAC5E,OAAO;EAAE,MAAM,KAAK;EAAM,MAAM,OAAO;EAAM;CAAU;AACzD;AAEA,SAAgB,qBACd,KACA,aACA,QACkB;CAClB,IAAI;CACJ,IAAI;EACF,SAAS,KAAK,MAAM,GAAG;CACzB,QAAQ;EACN,OAAO,wBAAwB,YAAY,oCAAoC;EAC/E,OAAO,CAAC;CACV;CACA,IAAI,CAAC,MAAM,QAAQ,MAAM,GAAG,OAAO,CAAC;CACpC,OAAO,OAAO,IAAI,WAAW,CAAC,CAAC,QAAQ,WAAqC,WAAW,KAAA,CAAS;AAClG;AAEA,SAAgB,yBAAyB,SAA4C;CACnF,OAAO,GAAG,KAAK,UAAU,SAAS,KAAA,GAAW,CAAC,EAAE;AAClD"}
@@ -1,107 +1,13 @@
1
1
  const require_runtime = require("../../../_virtual/_rolldown/runtime.cjs");
2
- const require_index = require("../devProxyPolicy/index.cjs");
3
- let node_fs = require("node:fs");
4
- node_fs = require_runtime.__toESM(node_fs, 1);
2
+ require("../platformFiles/index.cjs");
3
+ const require_index$1 = require("../serialRunner/index.cjs");
4
+ require("./devProxyRecords.cjs");
5
+ const require_sync = require("./sync.cjs");
5
6
  let node_path = require("node:path");
6
7
  node_path = require_runtime.__toESM(node_path, 1);
7
- //#region src/services/devProxyStore/index.ts
8
- /**
9
- * Registered proxy targets on disk.
10
- *
11
- * Persisted, unlike a remote session, because a target is a name the developer
12
- * typed into their own build configuration as `base: '/devproxy/<name>/'`.
13
- * Losing it on restart would silently break that line, and the file holds no
14
- * secret: a port number and a label the operator chose while sitting at the
15
- * machine.
16
- */
17
- const TARGETS_FILE = "dev-proxy.json";
18
- const DIRECTORY_MODE = 448;
19
- const FILE_MODE = 384;
20
- /** Any bit set for group or other; a state file readable by another account is worth repairing. */
21
- const LOOSE_MODE_MASK = 63;
22
- /** Repairs a state file another account can read. */
23
- function tightenMode(filePath, notice) {
24
- try {
25
- if ((node_fs.default.statSync(filePath).mode & LOOSE_MODE_MASK) === 0) return;
26
- node_fs.default.chmodSync(filePath, FILE_MODE);
27
- notice(`tightened permissions on ${filePath}`);
28
- } catch {}
29
- }
30
- /**
31
- * Rebuilds one record, dropping anything the current policy would refuse.
32
- *
33
- * The file is revalidated on read rather than trusted, because a name that was
34
- * legal when written is not necessarily legal now, and an edited file must not
35
- * be able to introduce a target the API would have rejected.
36
- */
37
- function parseTarget(value) {
38
- if (typeof value !== "object" || value === null) return void 0;
39
- const record = value;
40
- const name = require_index.validateTargetName(record.name);
41
- if (!name.ok) return void 0;
42
- if (typeof record.port !== "number" || !Number.isSafeInteger(record.port)) return void 0;
43
- const createdAt = typeof record.createdAt === "number" ? record.createdAt : 0;
44
- return {
45
- name: name.name,
46
- port: record.port,
47
- createdAt
48
- };
49
- }
50
- function createDevProxyStore(options) {
51
- const notice = options.onNotice ?? (() => {});
52
- const targetsPath = node_path.default.join(options.stateDir, TARGETS_FILE);
53
- let held = load();
54
- function load() {
55
- let raw;
56
- try {
57
- raw = node_fs.default.readFileSync(targetsPath, "utf8");
58
- } catch {
59
- return [];
60
- }
61
- tightenMode(targetsPath, notice);
62
- let parsed;
63
- try {
64
- parsed = JSON.parse(raw);
65
- } catch {
66
- notice(`dev proxy targets at ${targetsPath} are not valid JSON; none will load`);
67
- return [];
68
- }
69
- if (!Array.isArray(parsed)) return [];
70
- return parsed.map(parseTarget).filter((target) => target !== void 0);
71
- }
72
- function write() {
73
- const temporary = `${targetsPath}.${String(process.pid)}.tmp`;
74
- try {
75
- node_fs.default.mkdirSync(options.stateDir, {
76
- recursive: true,
77
- mode: DIRECTORY_MODE
78
- });
79
- node_fs.default.writeFileSync(temporary, `${JSON.stringify(held, void 0, 2)}\n`, { mode: FILE_MODE });
80
- node_fs.default.renameSync(temporary, targetsPath);
81
- } catch (error) {
82
- notice(`${targetsPath} could not be saved: ${error instanceof Error ? error.message : String(error)}`);
83
- try {
84
- node_fs.default.rmSync(temporary, { force: true });
85
- } catch {}
86
- }
87
- }
88
- return {
89
- targets: () => held,
90
- find: (name) => held.find((target) => target.name === name),
91
- save(target) {
92
- held = [...held.filter((existing) => existing.name !== target.name), target];
93
- write();
94
- },
95
- remove(name) {
96
- const next = held.filter((existing) => existing.name !== name);
97
- if (next.length === held.length) return false;
98
- held = next;
99
- write();
100
- return true;
101
- }
102
- };
103
- }
8
+ require("@earendil-works/pi-durable/env");
9
+ require_index$1.createSerialRunner();
104
10
  //#endregion
105
- exports.createDevProxyStore = createDevProxyStore;
11
+ exports.createDevProxyStore = require_sync.createDevProxyStore;
106
12
 
107
13
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["fs","validateTargetName","path"],"sources":["../../../../src/services/devProxyStore/index.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nimport type { DevProxyTarget } from '../../types/remote';\nimport { validateTargetName } from '../devProxyPolicy';\n\n/**\n * Registered proxy targets on disk.\n *\n * Persisted, unlike a remote session, because a target is a name the developer\n * typed into their own build configuration as `base: '/devproxy/<name>/'`.\n * Losing it on restart would silently break that line, and the file holds no\n * secret: a port number and a label the operator chose while sitting at the\n * machine.\n */\n\nconst TARGETS_FILE = 'dev-proxy.json';\nconst DIRECTORY_MODE = 0o700;\nconst FILE_MODE = 0o600;\n/** Any bit set for group or other; a state file readable by another account is worth repairing. */\nconst LOOSE_MODE_MASK = 0o077;\n\nexport interface DevProxyStoreOptions {\n /** The same directory the remote-access store uses; defaults to ~/.po/web. */\n stateDir: string;\n onNotice?: (message: string) => void;\n}\n\nexport interface DevProxyStore {\n targets(): readonly DevProxyTarget[];\n find(name: string): DevProxyTarget | undefined;\n /** Replaces any target already holding this name, so re-registering a moved port is one call. */\n save(target: DevProxyTarget): void;\n remove(name: string): boolean;\n}\n\n/** Repairs a state file another account can read. */\nfunction tightenMode(filePath: string, notice: (message: string) => void): void {\n try {\n if ((fs.statSync(filePath).mode & LOOSE_MODE_MASK) === 0) return;\n fs.chmodSync(filePath, FILE_MODE);\n notice(`tightened permissions on ${filePath}`);\n } catch {\n // The file is missing or unreadable; the caller's own read reports that.\n }\n}\n\n/**\n * Rebuilds one record, dropping anything the current policy would refuse.\n *\n * The file is revalidated on read rather than trusted, because a name that was\n * legal when written is not necessarily legal now, and an edited file must not\n * be able to introduce a target the API would have rejected.\n */\nfunction parseTarget(value: unknown): DevProxyTarget | undefined {\n if (typeof value !== 'object' || value === null) return undefined;\n const record = value as Partial<DevProxyTarget>;\n const name = validateTargetName(record.name);\n if (!name.ok) return undefined;\n if (typeof record.port !== 'number' || !Number.isSafeInteger(record.port)) return undefined;\n const createdAt = typeof record.createdAt === 'number' ? record.createdAt : 0;\n return { name: name.name, port: record.port, createdAt };\n}\n\nexport function createDevProxyStore(options: DevProxyStoreOptions): DevProxyStore {\n const notice = options.onNotice ?? ((): void => {});\n const targetsPath = path.join(options.stateDir, TARGETS_FILE);\n let held = load();\n\n function load(): DevProxyTarget[] {\n let raw: string;\n try {\n raw = fs.readFileSync(targetsPath, 'utf8');\n } catch {\n // No file is the normal first run, so this is not worth a notice.\n return [];\n }\n tightenMode(targetsPath, notice);\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw);\n } catch {\n notice(`dev proxy targets at ${targetsPath} are not valid JSON; none will load`);\n return [];\n }\n if (!Array.isArray(parsed)) return [];\n return parsed.map(parseTarget).filter((target): target is DevProxyTarget => target !== undefined);\n }\n\n function write(): void {\n const temporary = `${targetsPath}.${String(process.pid)}.tmp`;\n try {\n fs.mkdirSync(options.stateDir, { recursive: true, mode: DIRECTORY_MODE });\n fs.writeFileSync(temporary, `${JSON.stringify(held, undefined, 2)}\\n`, { mode: FILE_MODE });\n // Rename rather than write in place, so a crash mid-write leaves the\n // previous contents rather than a truncated file.\n fs.renameSync(temporary, targetsPath);\n } catch (error) {\n notice(`${targetsPath} could not be saved: ${error instanceof Error ? error.message : String(error)}`);\n try {\n fs.rmSync(temporary, { force: true });\n } catch {\n // Nothing further to do; the temp file is inert either way.\n }\n }\n }\n\n return {\n targets: () => held,\n find: (name) => held.find((target) => target.name === name),\n\n save(target) {\n held = [...held.filter((existing) => existing.name !== target.name), target];\n write();\n },\n\n remove(name) {\n const next = held.filter((existing) => existing.name !== name);\n if (next.length === held.length) return false;\n held = next;\n write();\n return true;\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAgBA,MAAM,eAAe;AACrB,MAAM,iBAAiB;AACvB,MAAM,YAAY;;AAElB,MAAM,kBAAkB;;AAiBxB,SAAS,YAAY,UAAkB,QAAyC;CAC9E,IAAI;EACF,KAAKA,QAAAA,QAAG,SAAS,QAAQ,CAAC,CAAC,OAAO,qBAAqB,GAAG;EAC1D,QAAA,QAAG,UAAU,UAAU,SAAS;EAChC,OAAO,4BAA4B,UAAU;CAC/C,QAAQ,CAER;AACF;;;;;;;;AASA,SAAS,YAAY,OAA4C;CAC/D,IAAI,OAAO,UAAU,YAAY,UAAU,MAAM,OAAO,KAAA;CACxD,MAAM,SAAS;CACf,MAAM,OAAOC,cAAAA,mBAAmB,OAAO,IAAI;CAC3C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAA;CACrB,IAAI,OAAO,OAAO,SAAS,YAAY,CAAC,OAAO,cAAc,OAAO,IAAI,GAAG,OAAO,KAAA;CAClF,MAAM,YAAY,OAAO,OAAO,cAAc,WAAW,OAAO,YAAY;CAC5E,OAAO;EAAE,MAAM,KAAK;EAAM,MAAM,OAAO;EAAM;CAAU;AACzD;AAEA,SAAgB,oBAAoB,SAA8C;CAChF,MAAM,SAAS,QAAQ,mBAAyB,CAAC;CACjD,MAAM,cAAcC,UAAAA,QAAK,KAAK,QAAQ,UAAU,YAAY;CAC5D,IAAI,OAAO,KAAK;CAEhB,SAAS,OAAyB;EAChC,IAAI;EACJ,IAAI;GACF,MAAMF,QAAAA,QAAG,aAAa,aAAa,MAAM;EAC3C,QAAQ;GAEN,OAAO,CAAC;EACV;EACA,YAAY,aAAa,MAAM;EAC/B,IAAI;EACJ,IAAI;GACF,SAAS,KAAK,MAAM,GAAG;EACzB,QAAQ;GACN,OAAO,wBAAwB,YAAY,oCAAoC;GAC/E,OAAO,CAAC;EACV;EACA,IAAI,CAAC,MAAM,QAAQ,MAAM,GAAG,OAAO,CAAC;EACpC,OAAO,OAAO,IAAI,WAAW,CAAC,CAAC,QAAQ,WAAqC,WAAW,KAAA,CAAS;CAClG;CAEA,SAAS,QAAc;EACrB,MAAM,YAAY,GAAG,YAAY,GAAG,OAAO,QAAQ,GAAG,EAAE;EACxD,IAAI;GACF,QAAA,QAAG,UAAU,QAAQ,UAAU;IAAE,WAAW;IAAM,MAAM;GAAe,CAAC;GACxE,QAAA,QAAG,cAAc,WAAW,GAAG,KAAK,UAAU,MAAM,KAAA,GAAW,CAAC,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;GAG1F,QAAA,QAAG,WAAW,WAAW,WAAW;EACtC,SAAS,OAAO;GACd,OAAO,GAAG,YAAY,uBAAuB,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,GAAG;GACrG,IAAI;IACF,QAAA,QAAG,OAAO,WAAW,EAAE,OAAO,KAAK,CAAC;GACtC,QAAQ,CAER;EACF;CACF;CAEA,OAAO;EACL,eAAe;EACf,OAAO,SAAS,KAAK,MAAM,WAAW,OAAO,SAAS,IAAI;EAE1D,KAAK,QAAQ;GACX,OAAO,CAAC,GAAG,KAAK,QAAQ,aAAa,SAAS,SAAS,OAAO,IAAI,GAAG,MAAM;GAC3E,MAAM;EACR;EAEA,OAAO,MAAM;GACX,MAAM,OAAO,KAAK,QAAQ,aAAa,SAAS,SAAS,IAAI;GAC7D,IAAI,KAAK,WAAW,KAAK,QAAQ,OAAO;GACxC,OAAO;GACP,MAAM;GACN,OAAO;EACT;CACF;AACF"}
1
+ {"version":3,"file":"index.cjs","names":["createSerialRunner"],"sources":["../../../../src/services/devProxyStore/index.ts"],"sourcesContent":["import path from 'node:path';\n\nimport type { Context } from '@earendil-works/chord';\nimport { getOrThrow, type FileSystem } from '@earendil-works/pi-durable/env';\n\nimport type { DevProxyTarget } from '../../types/remote';\nimport { nodeHost } from '../nodeHost';\nimport { writeFileAtomic } from '../platformFiles';\nimport { createSerialRunner } from '../serialRunner';\nimport {\n DIRECTORY_MODE,\n FILE_MODE,\n isLooseMode,\n parseDevProxyTargets,\n serializeDevProxyTargets,\n TARGETS_FILE,\n type DevProxyStoreOptions,\n} from './devProxyRecords';\n\nexport type { DevProxyStore, DevProxyStoreOptions } from './devProxyRecords';\nexport { createDevProxyStore } from './sync';\n\n/** One queue per targets file, so concurrent writes in this process never interleave. */\nconst targetWrites = createSerialRunner();\n\n/** The async twin of `DevProxyStore`: reads stay in memory, every write resolves once it is on disk. */\nexport interface DevProxyStoreAsync {\n targets(): readonly DevProxyTarget[];\n find(name: string): DevProxyTarget | undefined;\n /** Replaces any target already holding this name, so re-registering a moved port is one call. */\n save(target: DevProxyTarget): Promise<void>;\n remove(name: string): Promise<boolean>;\n}\n\n/** Registered proxy targets on disk; a failed write is reported and never thrown, as in the sync store. */\nexport async function createDevProxyStoreAsync(\n fs: FileSystem,\n options: DevProxyStoreOptions,\n context: Context,\n): Promise<DevProxyStoreAsync> {\n const notice = options.onNotice ?? ((): void => {});\n const targetsPath = path.join(options.stateDir, TARGETS_FILE);\n const serial = targetWrites.forKey(targetsPath);\n\n const load = async (): Promise<DevProxyTarget[]> => {\n const raw = await fs.readTextFile(targetsPath, context);\n // No file is the normal first run, so this is not worth a notice.\n if (!raw.ok) return [];\n // Repairs a state file another account can read.\n try {\n const mode = await nodeHost.fileMode(targetsPath);\n if (mode !== undefined && isLooseMode(mode)) {\n await nodeHost.setMode(targetsPath, FILE_MODE);\n notice(`tightened permissions on ${targetsPath}`);\n }\n } catch {\n // The file vanished or is unreadable between the read and the check; the read above already won.\n }\n return parseDevProxyTargets(raw.value, targetsPath, notice);\n };\n\n let held = await load();\n\n const write = async (): Promise<void> => {\n try {\n if (!getOrThrow(await fs.exists(options.stateDir, context))) {\n getOrThrow(await fs.createDir(options.stateDir, { recursive: true }, context));\n await nodeHost.setMode(options.stateDir, DIRECTORY_MODE);\n }\n await writeFileAtomic(fs, targetsPath, serializeDevProxyTargets(held), context);\n await nodeHost.setMode(targetsPath, FILE_MODE);\n } catch (error) {\n notice(`${targetsPath} could not be saved: ${error instanceof Error ? error.message : String(error)}`);\n }\n };\n\n return {\n targets: () => held,\n find: (name) => held.find((target) => target.name === name),\n save: (target) =>\n serial(async () => {\n held = [...held.filter((existing) => existing.name !== target.name), target];\n await write();\n }),\n remove: (name) =>\n serial(async () => {\n const next = held.filter((existing) => existing.name !== name);\n if (next.length === held.length) return false;\n held = next;\n await write();\n return true;\n }),\n };\n}\n"],"mappings":";;;;;;;;AAuBqBA,gBAAAA,mBAAmB"}
@@ -1,104 +1,10 @@
1
- import { validateTargetName } from "../devProxyPolicy/index.mjs";
2
- import fs from "node:fs";
3
- import path from "node:path";
4
- //#region src/services/devProxyStore/index.ts
5
- /**
6
- * Registered proxy targets on disk.
7
- *
8
- * Persisted, unlike a remote session, because a target is a name the developer
9
- * typed into their own build configuration as `base: '/devproxy/<name>/'`.
10
- * Losing it on restart would silently break that line, and the file holds no
11
- * secret: a port number and a label the operator chose while sitting at the
12
- * machine.
13
- */
14
- const TARGETS_FILE = "dev-proxy.json";
15
- const DIRECTORY_MODE = 448;
16
- const FILE_MODE = 384;
17
- /** Any bit set for group or other; a state file readable by another account is worth repairing. */
18
- const LOOSE_MODE_MASK = 63;
19
- /** Repairs a state file another account can read. */
20
- function tightenMode(filePath, notice) {
21
- try {
22
- if ((fs.statSync(filePath).mode & LOOSE_MODE_MASK) === 0) return;
23
- fs.chmodSync(filePath, FILE_MODE);
24
- notice(`tightened permissions on ${filePath}`);
25
- } catch {}
26
- }
27
- /**
28
- * Rebuilds one record, dropping anything the current policy would refuse.
29
- *
30
- * The file is revalidated on read rather than trusted, because a name that was
31
- * legal when written is not necessarily legal now, and an edited file must not
32
- * be able to introduce a target the API would have rejected.
33
- */
34
- function parseTarget(value) {
35
- if (typeof value !== "object" || value === null) return void 0;
36
- const record = value;
37
- const name = validateTargetName(record.name);
38
- if (!name.ok) return void 0;
39
- if (typeof record.port !== "number" || !Number.isSafeInteger(record.port)) return void 0;
40
- const createdAt = typeof record.createdAt === "number" ? record.createdAt : 0;
41
- return {
42
- name: name.name,
43
- port: record.port,
44
- createdAt
45
- };
46
- }
47
- function createDevProxyStore(options) {
48
- const notice = options.onNotice ?? (() => {});
49
- const targetsPath = path.join(options.stateDir, TARGETS_FILE);
50
- let held = load();
51
- function load() {
52
- let raw;
53
- try {
54
- raw = fs.readFileSync(targetsPath, "utf8");
55
- } catch {
56
- return [];
57
- }
58
- tightenMode(targetsPath, notice);
59
- let parsed;
60
- try {
61
- parsed = JSON.parse(raw);
62
- } catch {
63
- notice(`dev proxy targets at ${targetsPath} are not valid JSON; none will load`);
64
- return [];
65
- }
66
- if (!Array.isArray(parsed)) return [];
67
- return parsed.map(parseTarget).filter((target) => target !== void 0);
68
- }
69
- function write() {
70
- const temporary = `${targetsPath}.${String(process.pid)}.tmp`;
71
- try {
72
- fs.mkdirSync(options.stateDir, {
73
- recursive: true,
74
- mode: DIRECTORY_MODE
75
- });
76
- fs.writeFileSync(temporary, `${JSON.stringify(held, void 0, 2)}\n`, { mode: FILE_MODE });
77
- fs.renameSync(temporary, targetsPath);
78
- } catch (error) {
79
- notice(`${targetsPath} could not be saved: ${error instanceof Error ? error.message : String(error)}`);
80
- try {
81
- fs.rmSync(temporary, { force: true });
82
- } catch {}
83
- }
84
- }
85
- return {
86
- targets: () => held,
87
- find: (name) => held.find((target) => target.name === name),
88
- save(target) {
89
- held = [...held.filter((existing) => existing.name !== target.name), target];
90
- write();
91
- },
92
- remove(name) {
93
- const next = held.filter((existing) => existing.name !== name);
94
- if (next.length === held.length) return false;
95
- held = next;
96
- write();
97
- return true;
98
- }
99
- };
100
- }
1
+ import "../platformFiles/index.mjs";
2
+ import { createSerialRunner } from "../serialRunner/index.mjs";
3
+ import "./devProxyRecords.mjs";
101
4
  //#endregion
102
- export { createDevProxyStore };
5
+ export { createDevProxyStore } from "./sync.mjs";
6
+ import "node:path";
7
+ import "@earendil-works/pi-durable/env";
8
+ createSerialRunner();
103
9
 
104
10
  //# sourceMappingURL=index.mjs.map