@agimon-ai/po 0.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (560) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +755 -0
  3. package/assets/banner.png +0 -0
  4. package/assets/banner.svg +25 -0
  5. package/assets/favicon.svg +15 -0
  6. package/assets/logo-light.png +0 -0
  7. package/assets/logo-light.svg +25 -0
  8. package/assets/logo.png +0 -0
  9. package/assets/logo.svg +25 -0
  10. package/assets/mascot.png +0 -0
  11. package/assets/mascot.svg +25 -0
  12. package/dist/_virtual/_rolldown/runtime.cjs +23 -0
  13. package/dist/antigravity.cjs +5 -0
  14. package/dist/antigravity.d.mts +2 -0
  15. package/dist/antigravity.mjs +2 -0
  16. package/dist/apiContracts.cjs +11 -0
  17. package/dist/apiContracts.cjs.map +1 -0
  18. package/dist/apiContracts.d.mts +52 -0
  19. package/dist/apiContracts.d.mts.map +1 -0
  20. package/dist/apiContracts.mjs +7 -0
  21. package/dist/apiContracts.mjs.map +1 -0
  22. package/dist/baseCommand.cjs +3 -0
  23. package/dist/baseCommand.d.mts +2 -0
  24. package/dist/baseCommand.mjs +2 -0
  25. package/dist/bin/cli.cjs +24 -0
  26. package/dist/bin/cli.cjs.map +1 -0
  27. package/dist/bin/cli.d.mts +1 -0
  28. package/dist/bin/cli.mjs +25 -0
  29. package/dist/bin/cli.mjs.map +1 -0
  30. package/dist/bin/doomRunner.cjs +33 -0
  31. package/dist/bin/doomRunner.cjs.map +1 -0
  32. package/dist/bin/doomRunner.d.mts +4 -0
  33. package/dist/bin/doomRunner.d.mts.map +1 -0
  34. package/dist/bin/doomRunner.mjs +32 -0
  35. package/dist/bin/doomRunner.mjs.map +1 -0
  36. package/dist/bin/serve.cjs +30 -0
  37. package/dist/bin/serve.cjs.map +1 -0
  38. package/dist/bin/serve.d.mts +1 -0
  39. package/dist/bin/serve.mjs +31 -0
  40. package/dist/bin/serve.mjs.map +1 -0
  41. package/dist/builders/cli/extensionAssembler/index.cjs +342 -0
  42. package/dist/builders/cli/extensionAssembler/index.cjs.map +1 -0
  43. package/dist/builders/cli/extensionAssembler/index.d.mts +85 -0
  44. package/dist/builders/cli/extensionAssembler/index.d.mts.map +1 -0
  45. package/dist/builders/cli/extensionAssembler/index.mjs +335 -0
  46. package/dist/builders/cli/extensionAssembler/index.mjs.map +1 -0
  47. package/dist/catalog/index.json +430 -0
  48. package/dist/cli.cjs +28 -0
  49. package/dist/cli.d.mts +11 -0
  50. package/dist/cli.mjs +11 -0
  51. package/dist/cliApp.cjs +6 -0
  52. package/dist/cliApp.d.mts +2 -0
  53. package/dist/cliApp.mjs +2 -0
  54. package/dist/codex.cjs +8 -0
  55. package/dist/codex.d.mts +2 -0
  56. package/dist/codex.mjs +2 -0
  57. package/dist/commands.cjs +18 -0
  58. package/dist/commands.d.mts +9 -0
  59. package/dist/commands.mjs +9 -0
  60. package/dist/compatibility.cjs +27 -0
  61. package/dist/compatibility.d.mts +6 -0
  62. package/dist/compatibility.mjs +6 -0
  63. package/dist/compatibilityCommand.cjs +4 -0
  64. package/dist/compatibilityCommand.d.mts +2 -0
  65. package/dist/compatibilityCommand.mjs +2 -0
  66. package/dist/compatibilityContext.cjs +3 -0
  67. package/dist/compatibilityContext.d.mts +2 -0
  68. package/dist/compatibilityContext.mjs +2 -0
  69. package/dist/compatibilityOptions.cjs +5 -0
  70. package/dist/compatibilityOptions.d.mts +2 -0
  71. package/dist/compatibilityOptions.mjs +2 -0
  72. package/dist/config.cjs +163 -0
  73. package/dist/config.d.mts +7 -0
  74. package/dist/config.mjs +7 -0
  75. package/dist/doctorCommand.cjs +5 -0
  76. package/dist/doctorCommand.d.mts +2 -0
  77. package/dist/doctorCommand.mjs +2 -0
  78. package/dist/emitMcpCommand.cjs +4 -0
  79. package/dist/emitMcpCommand.d.mts +2 -0
  80. package/dist/emitMcpCommand.mjs +2 -0
  81. package/dist/explainCommand.cjs +5 -0
  82. package/dist/explainCommand.d.mts +2 -0
  83. package/dist/explainCommand.mjs +2 -0
  84. package/dist/extensions/server.cjs +39 -0
  85. package/dist/extensions/server.cjs.map +1 -0
  86. package/dist/extensions/server.d.mts +5 -0
  87. package/dist/extensions/server.d.mts.map +1 -0
  88. package/dist/extensions/server.mjs +34 -0
  89. package/dist/extensions/server.mjs.map +1 -0
  90. package/dist/harnessContext.cjs +5 -0
  91. package/dist/harnessContext.d.mts +2 -0
  92. package/dist/harnessContext.mjs +2 -0
  93. package/dist/harnessState.cjs +19 -0
  94. package/dist/harnessState.d.mts +2 -0
  95. package/dist/harnessState.mjs +2 -0
  96. package/dist/help.cjs +12 -0
  97. package/dist/help.d.mts +6 -0
  98. package/dist/help.mjs +6 -0
  99. package/dist/index.cjs +306 -0
  100. package/dist/index.d.mts +40 -0
  101. package/dist/index.mjs +37 -0
  102. package/dist/initCommand.cjs +4 -0
  103. package/dist/initCommand.d.mts +2 -0
  104. package/dist/initCommand.mjs +2 -0
  105. package/dist/matrixOptions.cjs +28 -0
  106. package/dist/matrixOptions.d.mts +2 -0
  107. package/dist/matrixOptions.mjs +2 -0
  108. package/dist/matrixSwitcher.cjs +11 -0
  109. package/dist/matrixSwitcher.d.mts +3 -0
  110. package/dist/matrixSwitcher.mjs +3 -0
  111. package/dist/mcpFilter.cjs +9 -0
  112. package/dist/mcpFilter.d.mts +1 -0
  113. package/dist/mcpFilter.mjs +2 -0
  114. package/dist/options.cjs +3 -0
  115. package/dist/options.d.mts +2 -0
  116. package/dist/options.mjs +2 -0
  117. package/dist/process.cjs +12 -0
  118. package/dist/process.d.mts +2 -0
  119. package/dist/process.mjs +2 -0
  120. package/dist/projectTrust.cjs +6 -0
  121. package/dist/projectTrust.d.mts +2 -0
  122. package/dist/projectTrust.mjs +2 -0
  123. package/dist/repository.cjs +5 -0
  124. package/dist/repository.d.mts +2 -0
  125. package/dist/repository.mjs +2 -0
  126. package/dist/resourceCollector.cjs +9 -0
  127. package/dist/resourceCollector.d.mts +1 -0
  128. package/dist/resourceCollector.mjs +2 -0
  129. package/dist/router.cjs +6 -0
  130. package/dist/router.d.mts +2 -0
  131. package/dist/router.mjs +2 -0
  132. package/dist/services.cjs +97 -0
  133. package/dist/services.d.mts +12 -0
  134. package/dist/services.mjs +12 -0
  135. package/dist/shared.cjs +18 -0
  136. package/dist/shared.d.mts +2 -0
  137. package/dist/shared.mjs +2 -0
  138. package/dist/src/bin/agentDirectory.cjs +27 -0
  139. package/dist/src/bin/agentDirectory.cjs.map +1 -0
  140. package/dist/src/bin/agentDirectory.mjs +26 -0
  141. package/dist/src/bin/agentDirectory.mjs.map +1 -0
  142. package/dist/src/builders/apiContractExport/index.cjs +126 -0
  143. package/dist/src/builders/apiContractExport/index.cjs.map +1 -0
  144. package/dist/src/builders/apiContractExport/index.mjs +123 -0
  145. package/dist/src/builders/apiContractExport/index.mjs.map +1 -0
  146. package/dist/src/builders/cli/entryResolution.cjs +39 -0
  147. package/dist/src/builders/cli/entryResolution.cjs.map +1 -0
  148. package/dist/src/builders/cli/entryResolution.mjs +35 -0
  149. package/dist/src/builders/cli/entryResolution.mjs.map +1 -0
  150. package/dist/src/builders/cli/harnessContext.cjs +175 -0
  151. package/dist/src/builders/cli/harnessContext.cjs.map +1 -0
  152. package/dist/src/builders/cli/harnessContext.d.mts +48 -0
  153. package/dist/src/builders/cli/harnessContext.d.mts.map +1 -0
  154. package/dist/src/builders/cli/harnessContext.mjs +167 -0
  155. package/dist/src/builders/cli/harnessContext.mjs.map +1 -0
  156. package/dist/src/builders/cli/sessionComposition.cjs +27 -0
  157. package/dist/src/builders/cli/sessionComposition.cjs.map +1 -0
  158. package/dist/src/builders/cli/sessionComposition.mjs +26 -0
  159. package/dist/src/builders/cli/sessionComposition.mjs.map +1 -0
  160. package/dist/src/builders/hooks/index.cjs +238 -0
  161. package/dist/src/builders/hooks/index.cjs.map +1 -0
  162. package/dist/src/builders/hooks/index.mjs +231 -0
  163. package/dist/src/builders/hooks/index.mjs.map +1 -0
  164. package/dist/src/builders/native/index.cjs +176 -0
  165. package/dist/src/builders/native/index.cjs.map +1 -0
  166. package/dist/src/builders/native/index.d.mts +36 -0
  167. package/dist/src/builders/native/index.d.mts.map +1 -0
  168. package/dist/src/builders/native/index.mjs +170 -0
  169. package/dist/src/builders/native/index.mjs.map +1 -0
  170. package/dist/src/builders/server/backgroundSync.cjs +333 -0
  171. package/dist/src/builders/server/backgroundSync.cjs.map +1 -0
  172. package/dist/src/builders/server/backgroundSync.mjs +320 -0
  173. package/dist/src/builders/server/backgroundSync.mjs.map +1 -0
  174. package/dist/src/builders/server/computerUseBinding.cjs +273 -0
  175. package/dist/src/builders/server/computerUseBinding.cjs.map +1 -0
  176. package/dist/src/builders/server/computerUseBinding.mjs +269 -0
  177. package/dist/src/builders/server/computerUseBinding.mjs.map +1 -0
  178. package/dist/src/builders/server/computerUseRecordings.cjs +188 -0
  179. package/dist/src/builders/server/computerUseRecordings.cjs.map +1 -0
  180. package/dist/src/builders/server/computerUseRecordings.mjs +184 -0
  181. package/dist/src/builders/server/computerUseRecordings.mjs.map +1 -0
  182. package/dist/src/builders/server/defaultWorkspace.cjs +38 -0
  183. package/dist/src/builders/server/defaultWorkspace.cjs.map +1 -0
  184. package/dist/src/builders/server/defaultWorkspace.mjs +35 -0
  185. package/dist/src/builders/server/defaultWorkspace.mjs.map +1 -0
  186. package/dist/src/builders/server/idleRestart.cjs +149 -0
  187. package/dist/src/builders/server/idleRestart.cjs.map +1 -0
  188. package/dist/src/builders/server/idleRestart.mjs +136 -0
  189. package/dist/src/builders/server/idleRestart.mjs.map +1 -0
  190. package/dist/src/builders/server/index.cjs +63 -0
  191. package/dist/src/builders/server/index.cjs.map +1 -0
  192. package/dist/src/builders/server/index.mjs +60 -0
  193. package/dist/src/builders/server/index.mjs.map +1 -0
  194. package/dist/src/builders/server/logSink.cjs +57 -0
  195. package/dist/src/builders/server/logSink.cjs.map +1 -0
  196. package/dist/src/builders/server/logSink.mjs +57 -0
  197. package/dist/src/builders/server/logSink.mjs.map +1 -0
  198. package/dist/src/builders/server/mcpApp.cjs +152 -0
  199. package/dist/src/builders/server/mcpApp.cjs.map +1 -0
  200. package/dist/src/builders/server/mcpApp.d.mts +18 -0
  201. package/dist/src/builders/server/mcpApp.d.mts.map +1 -0
  202. package/dist/src/builders/server/mcpApp.mjs +147 -0
  203. package/dist/src/builders/server/mcpApp.mjs.map +1 -0
  204. package/dist/src/builders/server/mcpAppBuild.cjs +111 -0
  205. package/dist/src/builders/server/mcpAppBuild.cjs.map +1 -0
  206. package/dist/src/builders/server/mcpAppBuild.d.mts +24 -0
  207. package/dist/src/builders/server/mcpAppBuild.d.mts.map +1 -0
  208. package/dist/src/builders/server/mcpAppBuild.mjs +105 -0
  209. package/dist/src/builders/server/mcpAppBuild.mjs.map +1 -0
  210. package/dist/src/builders/server/mcpBundle.cjs +87 -0
  211. package/dist/src/builders/server/mcpBundle.cjs.map +1 -0
  212. package/dist/src/builders/server/mcpBundle.d.mts +23 -0
  213. package/dist/src/builders/server/mcpBundle.d.mts.map +1 -0
  214. package/dist/src/builders/server/mcpBundle.mjs +84 -0
  215. package/dist/src/builders/server/mcpBundle.mjs.map +1 -0
  216. package/dist/src/builders/server/packageReloadCheck.cjs +62 -0
  217. package/dist/src/builders/server/packageReloadCheck.cjs.map +1 -0
  218. package/dist/src/builders/server/packageReloadCheck.mjs +61 -0
  219. package/dist/src/builders/server/packageReloadCheck.mjs.map +1 -0
  220. package/dist/src/builders/server/packageUrl.cjs +210 -0
  221. package/dist/src/builders/server/packageUrl.cjs.map +1 -0
  222. package/dist/src/builders/server/packageUrl.mjs +203 -0
  223. package/dist/src/builders/server/packageUrl.mjs.map +1 -0
  224. package/dist/src/builders/server/runtime.cjs +1428 -0
  225. package/dist/src/builders/server/runtime.cjs.map +1 -0
  226. package/dist/src/builders/server/runtime.mjs +1420 -0
  227. package/dist/src/builders/server/runtime.mjs.map +1 -0
  228. package/dist/src/builders/server/runtimeResources.cjs +72 -0
  229. package/dist/src/builders/server/runtimeResources.cjs.map +1 -0
  230. package/dist/src/builders/server/runtimeResources.mjs +71 -0
  231. package/dist/src/builders/server/runtimeResources.mjs.map +1 -0
  232. package/dist/src/builders/server/selectionStatus.cjs +12 -0
  233. package/dist/src/builders/server/selectionStatus.cjs.map +1 -0
  234. package/dist/src/builders/server/selectionStatus.mjs +12 -0
  235. package/dist/src/builders/server/selectionStatus.mjs.map +1 -0
  236. package/dist/src/builders/server/sessionArguments.cjs +63 -0
  237. package/dist/src/builders/server/sessionArguments.cjs.map +1 -0
  238. package/dist/src/builders/server/sessionArguments.mjs +62 -0
  239. package/dist/src/builders/server/sessionArguments.mjs.map +1 -0
  240. package/dist/src/builders/server/shutdown.cjs +16 -0
  241. package/dist/src/builders/server/shutdown.cjs.map +1 -0
  242. package/dist/src/builders/server/shutdown.mjs +16 -0
  243. package/dist/src/builders/server/shutdown.mjs.map +1 -0
  244. package/dist/src/builders/server/webTemplateDecision.cjs +34 -0
  245. package/dist/src/builders/server/webTemplateDecision.cjs.map +1 -0
  246. package/dist/src/builders/server/webTemplateDecision.mjs +32 -0
  247. package/dist/src/builders/server/webTemplateDecision.mjs.map +1 -0
  248. package/dist/src/builders/server/workspaceCheckout.cjs +31 -0
  249. package/dist/src/builders/server/workspaceCheckout.cjs.map +1 -0
  250. package/dist/src/builders/server/workspaceCheckout.mjs +29 -0
  251. package/dist/src/builders/server/workspaceCheckout.mjs.map +1 -0
  252. package/dist/src/builders/web/bundle.cjs +225 -0
  253. package/dist/src/builders/web/bundle.cjs.map +1 -0
  254. package/dist/src/builders/web/bundle.d.mts +65 -0
  255. package/dist/src/builders/web/bundle.d.mts.map +1 -0
  256. package/dist/src/builders/web/bundle.mjs +221 -0
  257. package/dist/src/builders/web/bundle.mjs.map +1 -0
  258. package/dist/src/builders/web/bundleAssetPolicy.cjs +96 -0
  259. package/dist/src/builders/web/bundleAssetPolicy.cjs.map +1 -0
  260. package/dist/src/builders/web/bundleAssetPolicy.d.mts +22 -0
  261. package/dist/src/builders/web/bundleAssetPolicy.d.mts.map +1 -0
  262. package/dist/src/builders/web/bundleAssetPolicy.mjs +95 -0
  263. package/dist/src/builders/web/bundleAssetPolicy.mjs.map +1 -0
  264. package/dist/src/builders/web/index.cjs +361 -0
  265. package/dist/src/builders/web/index.cjs.map +1 -0
  266. package/dist/src/builders/web/index.d.mts +109 -0
  267. package/dist/src/builders/web/index.d.mts.map +1 -0
  268. package/dist/src/builders/web/index.mjs +342 -0
  269. package/dist/src/builders/web/index.mjs.map +1 -0
  270. package/dist/src/builders/web/webDevRoots.cjs +27 -0
  271. package/dist/src/builders/web/webDevRoots.cjs.map +1 -0
  272. package/dist/src/builders/web/webDevRoots.d.mts +22 -0
  273. package/dist/src/builders/web/webDevRoots.d.mts.map +1 -0
  274. package/dist/src/builders/web/webDevRoots.mjs +25 -0
  275. package/dist/src/builders/web/webDevRoots.mjs.map +1 -0
  276. package/dist/src/builders/web/webPluginGenerate.cjs +188 -0
  277. package/dist/src/builders/web/webPluginGenerate.cjs.map +1 -0
  278. package/dist/src/builders/web/webPluginGenerate.d.mts +56 -0
  279. package/dist/src/builders/web/webPluginGenerate.d.mts.map +1 -0
  280. package/dist/src/builders/web/webPluginGenerate.mjs +178 -0
  281. package/dist/src/builders/web/webPluginGenerate.mjs.map +1 -0
  282. package/dist/src/builders/web/webPluginManifest.cjs +128 -0
  283. package/dist/src/builders/web/webPluginManifest.cjs.map +1 -0
  284. package/dist/src/builders/web/webPluginManifest.d.mts +64 -0
  285. package/dist/src/builders/web/webPluginManifest.d.mts.map +1 -0
  286. package/dist/src/builders/web/webPluginManifest.mjs +118 -0
  287. package/dist/src/builders/web/webPluginManifest.mjs.map +1 -0
  288. package/dist/src/builders/web/webPluginScan.cjs +57 -0
  289. package/dist/src/builders/web/webPluginScan.cjs.map +1 -0
  290. package/dist/src/builders/web/webPluginScan.d.mts +19 -0
  291. package/dist/src/builders/web/webPluginScan.d.mts.map +1 -0
  292. package/dist/src/builders/web/webPluginScan.mjs +54 -0
  293. package/dist/src/builders/web/webPluginScan.mjs.map +1 -0
  294. package/dist/src/builders/web/webPluginVite.cjs +255 -0
  295. package/dist/src/builders/web/webPluginVite.cjs.map +1 -0
  296. package/dist/src/builders/web/webPluginVite.d.mts +64 -0
  297. package/dist/src/builders/web/webPluginVite.d.mts.map +1 -0
  298. package/dist/src/builders/web/webPluginVite.mjs +242 -0
  299. package/dist/src/builders/web/webPluginVite.mjs.map +1 -0
  300. package/dist/src/cli/cliApp.cjs +187 -0
  301. package/dist/src/cli/cliApp.cjs.map +1 -0
  302. package/dist/src/cli/cliApp.d.mts +32 -0
  303. package/dist/src/cli/cliApp.d.mts.map +1 -0
  304. package/dist/src/cli/cliApp.mjs +184 -0
  305. package/dist/src/cli/cliApp.mjs.map +1 -0
  306. package/dist/src/cli/commands/api-export/index.cjs +66 -0
  307. package/dist/src/cli/commands/api-export/index.cjs.map +1 -0
  308. package/dist/src/cli/commands/api-export/index.mjs +62 -0
  309. package/dist/src/cli/commands/api-export/index.mjs.map +1 -0
  310. package/dist/src/cli/commands/baseCommand.cjs +16 -0
  311. package/dist/src/cli/commands/baseCommand.cjs.map +1 -0
  312. package/dist/src/cli/commands/baseCommand.d.mts +24 -0
  313. package/dist/src/cli/commands/baseCommand.d.mts.map +1 -0
  314. package/dist/src/cli/commands/baseCommand.mjs +16 -0
  315. package/dist/src/cli/commands/baseCommand.mjs.map +1 -0
  316. package/dist/src/cli/commands/compat/context.cjs +115 -0
  317. package/dist/src/cli/commands/compat/context.cjs.map +1 -0
  318. package/dist/src/cli/commands/compat/context.d.mts +22 -0
  319. package/dist/src/cli/commands/compat/context.d.mts.map +1 -0
  320. package/dist/src/cli/commands/compat/context.mjs +110 -0
  321. package/dist/src/cli/commands/compat/context.mjs.map +1 -0
  322. package/dist/src/cli/commands/compat/help.cjs +26 -0
  323. package/dist/src/cli/commands/compat/help.cjs.map +1 -0
  324. package/dist/src/cli/commands/compat/help.d.mts +4 -0
  325. package/dist/src/cli/commands/compat/help.d.mts.map +1 -0
  326. package/dist/src/cli/commands/compat/help.mjs +25 -0
  327. package/dist/src/cli/commands/compat/help.mjs.map +1 -0
  328. package/dist/src/cli/commands/compat/index.cjs +73 -0
  329. package/dist/src/cli/commands/compat/index.cjs.map +1 -0
  330. package/dist/src/cli/commands/compat/index.d.mts +14 -0
  331. package/dist/src/cli/commands/compat/index.d.mts.map +1 -0
  332. package/dist/src/cli/commands/compat/index.mjs +70 -0
  333. package/dist/src/cli/commands/compat/index.mjs.map +1 -0
  334. package/dist/src/cli/commands/compat/options.cjs +88 -0
  335. package/dist/src/cli/commands/compat/options.cjs.map +1 -0
  336. package/dist/src/cli/commands/compat/options.d.mts +15 -0
  337. package/dist/src/cli/commands/compat/options.d.mts.map +1 -0
  338. package/dist/src/cli/commands/compat/options.mjs +86 -0
  339. package/dist/src/cli/commands/compat/options.mjs.map +1 -0
  340. package/dist/src/cli/commands/compat/providers/antigravity.cjs +294 -0
  341. package/dist/src/cli/commands/compat/providers/antigravity.cjs.map +1 -0
  342. package/dist/src/cli/commands/compat/providers/antigravity.d.mts +9 -0
  343. package/dist/src/cli/commands/compat/providers/antigravity.d.mts.map +1 -0
  344. package/dist/src/cli/commands/compat/providers/antigravity.mjs +289 -0
  345. package/dist/src/cli/commands/compat/providers/antigravity.mjs.map +1 -0
  346. package/dist/src/cli/commands/compat/providers/codex.cjs +178 -0
  347. package/dist/src/cli/commands/compat/providers/codex.cjs.map +1 -0
  348. package/dist/src/cli/commands/compat/providers/codex.d.mts +17 -0
  349. package/dist/src/cli/commands/compat/providers/codex.d.mts.map +1 -0
  350. package/dist/src/cli/commands/compat/providers/codex.mjs +170 -0
  351. package/dist/src/cli/commands/compat/providers/codex.mjs.map +1 -0
  352. package/dist/src/cli/commands/compat/providers/index.cjs +65 -0
  353. package/dist/src/cli/commands/compat/providers/index.cjs.map +1 -0
  354. package/dist/src/cli/commands/compat/providers/index.d.mts +15 -0
  355. package/dist/src/cli/commands/compat/providers/index.d.mts.map +1 -0
  356. package/dist/src/cli/commands/compat/providers/index.mjs +45 -0
  357. package/dist/src/cli/commands/compat/providers/index.mjs.map +1 -0
  358. package/dist/src/cli/commands/compat/providers/process.cjs +172 -0
  359. package/dist/src/cli/commands/compat/providers/process.cjs.map +1 -0
  360. package/dist/src/cli/commands/compat/providers/process.d.mts +33 -0
  361. package/dist/src/cli/commands/compat/providers/process.d.mts.map +1 -0
  362. package/dist/src/cli/commands/compat/providers/process.mjs +159 -0
  363. package/dist/src/cli/commands/compat/providers/process.mjs.map +1 -0
  364. package/dist/src/cli/commands/compat/providers/shared.cjs +76 -0
  365. package/dist/src/cli/commands/compat/providers/shared.cjs.map +1 -0
  366. package/dist/src/cli/commands/compat/providers/shared.d.mts +40 -0
  367. package/dist/src/cli/commands/compat/providers/shared.d.mts.map +1 -0
  368. package/dist/src/cli/commands/compat/providers/shared.mjs +61 -0
  369. package/dist/src/cli/commands/compat/providers/shared.mjs.map +1 -0
  370. package/dist/src/cli/commands/compat/types.d.mts +31 -0
  371. package/dist/src/cli/commands/compat/types.d.mts.map +1 -0
  372. package/dist/src/cli/commands/doctor/help.cjs +19 -0
  373. package/dist/src/cli/commands/doctor/help.cjs.map +1 -0
  374. package/dist/src/cli/commands/doctor/help.d.mts +4 -0
  375. package/dist/src/cli/commands/doctor/help.d.mts.map +1 -0
  376. package/dist/src/cli/commands/doctor/help.mjs +19 -0
  377. package/dist/src/cli/commands/doctor/help.mjs.map +1 -0
  378. package/dist/src/cli/commands/doctor/index.cjs +118 -0
  379. package/dist/src/cli/commands/doctor/index.cjs.map +1 -0
  380. package/dist/src/cli/commands/doctor/index.d.mts +33 -0
  381. package/dist/src/cli/commands/doctor/index.d.mts.map +1 -0
  382. package/dist/src/cli/commands/doctor/index.mjs +113 -0
  383. package/dist/src/cli/commands/doctor/index.mjs.map +1 -0
  384. package/dist/src/cli/commands/emit-mcp/index.cjs +32 -0
  385. package/dist/src/cli/commands/emit-mcp/index.cjs.map +1 -0
  386. package/dist/src/cli/commands/emit-mcp/index.d.mts +19 -0
  387. package/dist/src/cli/commands/emit-mcp/index.d.mts.map +1 -0
  388. package/dist/src/cli/commands/emit-mcp/index.mjs +31 -0
  389. package/dist/src/cli/commands/emit-mcp/index.mjs.map +1 -0
  390. package/dist/src/cli/commands/explain/index.cjs +155 -0
  391. package/dist/src/cli/commands/explain/index.cjs.map +1 -0
  392. package/dist/src/cli/commands/explain/index.d.mts +57 -0
  393. package/dist/src/cli/commands/explain/index.d.mts.map +1 -0
  394. package/dist/src/cli/commands/explain/index.mjs +150 -0
  395. package/dist/src/cli/commands/explain/index.mjs.map +1 -0
  396. package/dist/src/cli/commands/init/constants.cjs +11 -0
  397. package/dist/src/cli/commands/init/constants.cjs.map +1 -0
  398. package/dist/src/cli/commands/init/constants.mjs +11 -0
  399. package/dist/src/cli/commands/init/constants.mjs.map +1 -0
  400. package/dist/src/cli/commands/init/help.cjs +17 -0
  401. package/dist/src/cli/commands/init/help.cjs.map +1 -0
  402. package/dist/src/cli/commands/init/help.d.mts +4 -0
  403. package/dist/src/cli/commands/init/help.d.mts.map +1 -0
  404. package/dist/src/cli/commands/init/help.mjs +17 -0
  405. package/dist/src/cli/commands/init/help.mjs.map +1 -0
  406. package/dist/src/cli/commands/init/index.cjs +67 -0
  407. package/dist/src/cli/commands/init/index.cjs.map +1 -0
  408. package/dist/src/cli/commands/init/index.d.mts +12 -0
  409. package/dist/src/cli/commands/init/index.d.mts.map +1 -0
  410. package/dist/src/cli/commands/init/index.mjs +63 -0
  411. package/dist/src/cli/commands/init/index.mjs.map +1 -0
  412. package/dist/src/cli/commands/init/presenter.cjs +140 -0
  413. package/dist/src/cli/commands/init/presenter.cjs.map +1 -0
  414. package/dist/src/cli/commands/init/presenter.d.mts +8 -0
  415. package/dist/src/cli/commands/init/presenter.d.mts.map +1 -0
  416. package/dist/src/cli/commands/init/presenter.mjs +140 -0
  417. package/dist/src/cli/commands/init/presenter.mjs.map +1 -0
  418. package/dist/src/cli/commands/sync/help.cjs +34 -0
  419. package/dist/src/cli/commands/sync/help.cjs.map +1 -0
  420. package/dist/src/cli/commands/sync/help.d.mts +4 -0
  421. package/dist/src/cli/commands/sync/help.d.mts.map +1 -0
  422. package/dist/src/cli/commands/sync/help.mjs +34 -0
  423. package/dist/src/cli/commands/sync/help.mjs.map +1 -0
  424. package/dist/src/cli/commands/sync/index.cjs +215 -0
  425. package/dist/src/cli/commands/sync/index.cjs.map +1 -0
  426. package/dist/src/cli/commands/sync/index.d.mts +20 -0
  427. package/dist/src/cli/commands/sync/index.d.mts.map +1 -0
  428. package/dist/src/cli/commands/sync/index.mjs +206 -0
  429. package/dist/src/cli/commands/sync/index.mjs.map +1 -0
  430. package/dist/src/cli/commands/sync/presenter.cjs +58 -0
  431. package/dist/src/cli/commands/sync/presenter.cjs.map +1 -0
  432. package/dist/src/cli/commands/sync/presenter.d.mts +16 -0
  433. package/dist/src/cli/commands/sync/presenter.d.mts.map +1 -0
  434. package/dist/src/cli/commands/sync/presenter.mjs +57 -0
  435. package/dist/src/cli/commands/sync/presenter.mjs.map +1 -0
  436. package/dist/src/cli/commands/sync/workflow.cjs +16 -0
  437. package/dist/src/cli/commands/sync/workflow.cjs.map +1 -0
  438. package/dist/src/cli/commands/sync/workflow.mjs +16 -0
  439. package/dist/src/cli/commands/sync/workflow.mjs.map +1 -0
  440. package/dist/src/cli/commands/web/index.cjs +88 -0
  441. package/dist/src/cli/commands/web/index.cjs.map +1 -0
  442. package/dist/src/cli/commands/web/index.mjs +85 -0
  443. package/dist/src/cli/commands/web/index.mjs.map +1 -0
  444. package/dist/src/cli/harnessOptions.cjs +70 -0
  445. package/dist/src/cli/harnessOptions.cjs.map +1 -0
  446. package/dist/src/cli/harnessOptions.d.mts +26 -0
  447. package/dist/src/cli/harnessOptions.d.mts.map +1 -0
  448. package/dist/src/cli/harnessOptions.mjs +66 -0
  449. package/dist/src/cli/harnessOptions.mjs.map +1 -0
  450. package/dist/src/cli/help.cjs +82 -0
  451. package/dist/src/cli/help.cjs.map +1 -0
  452. package/dist/src/cli/help.d.mts +10 -0
  453. package/dist/src/cli/help.d.mts.map +1 -0
  454. package/dist/src/cli/help.mjs +78 -0
  455. package/dist/src/cli/help.mjs.map +1 -0
  456. package/dist/src/cli/matrixOptions.cjs +178 -0
  457. package/dist/src/cli/matrixOptions.cjs.map +1 -0
  458. package/dist/src/cli/matrixOptions.d.mts +90 -0
  459. package/dist/src/cli/matrixOptions.d.mts.map +1 -0
  460. package/dist/src/cli/matrixOptions.mjs +151 -0
  461. package/dist/src/cli/matrixOptions.mjs.map +1 -0
  462. package/dist/src/cli/options.cjs +281 -0
  463. package/dist/src/cli/options.cjs.map +1 -0
  464. package/dist/src/cli/options.d.mts +5 -0
  465. package/dist/src/cli/options.d.mts.map +1 -0
  466. package/dist/src/cli/options.mjs +279 -0
  467. package/dist/src/cli/options.mjs.map +1 -0
  468. package/dist/src/cli/router.cjs +57 -0
  469. package/dist/src/cli/router.cjs.map +1 -0
  470. package/dist/src/cli/router.d.mts +32 -0
  471. package/dist/src/cli/router.d.mts.map +1 -0
  472. package/dist/src/cli/router.mjs +54 -0
  473. package/dist/src/cli/router.mjs.map +1 -0
  474. package/dist/src/cli/server/options.cjs +71 -0
  475. package/dist/src/cli/server/options.cjs.map +1 -0
  476. package/dist/src/cli/server/options.mjs +70 -0
  477. package/dist/src/cli/server/options.mjs.map +1 -0
  478. package/dist/src/cli/server/processGuards.cjs +83 -0
  479. package/dist/src/cli/server/processGuards.cjs.map +1 -0
  480. package/dist/src/cli/server/processGuards.mjs +79 -0
  481. package/dist/src/cli/server/processGuards.mjs.map +1 -0
  482. package/dist/src/cli/server/run.cjs +69 -0
  483. package/dist/src/cli/server/run.cjs.map +1 -0
  484. package/dist/src/cli/server/run.mjs +66 -0
  485. package/dist/src/cli/server/run.mjs.map +1 -0
  486. package/dist/src/composition/harnessState/index.cjs +48 -0
  487. package/dist/src/composition/harnessState/index.cjs.map +1 -0
  488. package/dist/src/composition/harnessState/index.d.mts +19 -0
  489. package/dist/src/composition/harnessState/index.d.mts.map +1 -0
  490. package/dist/src/composition/harnessState/index.mjs +34 -0
  491. package/dist/src/composition/harnessState/index.mjs.map +1 -0
  492. package/dist/src/composition/layerPackageInstaller/index.cjs +651 -0
  493. package/dist/src/composition/layerPackageInstaller/index.cjs.map +1 -0
  494. package/dist/src/composition/layerPackageInstaller/index.d.mts +74 -0
  495. package/dist/src/composition/layerPackageInstaller/index.d.mts.map +1 -0
  496. package/dist/src/composition/layerPackageInstaller/index.mjs +637 -0
  497. package/dist/src/composition/layerPackageInstaller/index.mjs.map +1 -0
  498. package/dist/src/composition/poHomeMigration/index.cjs +234 -0
  499. package/dist/src/composition/poHomeMigration/index.cjs.map +1 -0
  500. package/dist/src/composition/poHomeMigration/index.d.mts +12 -0
  501. package/dist/src/composition/poHomeMigration/index.d.mts.map +1 -0
  502. package/dist/src/composition/poHomeMigration/index.mjs +226 -0
  503. package/dist/src/composition/poHomeMigration/index.mjs.map +1 -0
  504. package/dist/src/composition/projectTrust/index.cjs +51 -0
  505. package/dist/src/composition/projectTrust/index.cjs.map +1 -0
  506. package/dist/src/composition/projectTrust/index.d.mts +22 -0
  507. package/dist/src/composition/projectTrust/index.d.mts.map +1 -0
  508. package/dist/src/composition/projectTrust/index.mjs +48 -0
  509. package/dist/src/composition/projectTrust/index.mjs.map +1 -0
  510. package/dist/src/composition/repository/index.cjs +68 -0
  511. package/dist/src/composition/repository/index.cjs.map +1 -0
  512. package/dist/src/composition/repository/index.d.mts +22 -0
  513. package/dist/src/composition/repository/index.d.mts.map +1 -0
  514. package/dist/src/composition/repository/index.mjs +63 -0
  515. package/dist/src/composition/repository/index.mjs.map +1 -0
  516. package/dist/src/composition/syncPrune/index.cjs +85 -0
  517. package/dist/src/composition/syncPrune/index.cjs.map +1 -0
  518. package/dist/src/composition/syncPrune/index.d.mts +33 -0
  519. package/dist/src/composition/syncPrune/index.d.mts.map +1 -0
  520. package/dist/src/composition/syncPrune/index.mjs +82 -0
  521. package/dist/src/composition/syncPrune/index.mjs.map +1 -0
  522. package/dist/src/composition/syncService/index.cjs +808 -0
  523. package/dist/src/composition/syncService/index.cjs.map +1 -0
  524. package/dist/src/composition/syncService/index.d.mts +65 -0
  525. package/dist/src/composition/syncService/index.d.mts.map +1 -0
  526. package/dist/src/composition/syncService/index.mjs +792 -0
  527. package/dist/src/composition/syncService/index.mjs.map +1 -0
  528. package/dist/src/composition/syncService/localBuilds.cjs +367 -0
  529. package/dist/src/composition/syncService/localBuilds.cjs.map +1 -0
  530. package/dist/src/composition/syncService/localBuilds.mjs +358 -0
  531. package/dist/src/composition/syncService/localBuilds.mjs.map +1 -0
  532. package/dist/src/composition/transitionLayers.cjs +17 -0
  533. package/dist/src/composition/transitionLayers.cjs.map +1 -0
  534. package/dist/src/composition/transitionLayers.d.mts +6 -0
  535. package/dist/src/composition/transitionLayers.d.mts.map +1 -0
  536. package/dist/src/composition/transitionLayers.mjs +16 -0
  537. package/dist/src/composition/transitionLayers.mjs.map +1 -0
  538. package/dist/src/composition/types/harness.d.mts +52 -0
  539. package/dist/src/composition/types/harness.d.mts.map +1 -0
  540. package/dist/src/extensions/setupDiagnostics.cjs +65 -0
  541. package/dist/src/extensions/setupDiagnostics.cjs.map +1 -0
  542. package/dist/src/extensions/setupDiagnostics.mjs +64 -0
  543. package/dist/src/extensions/setupDiagnostics.mjs.map +1 -0
  544. package/dist/utils.cjs +4 -0
  545. package/dist/utils.d.mts +2 -0
  546. package/dist/utils.mjs +2 -0
  547. package/dist/webBuilder.cjs +59 -0
  548. package/dist/webBuilder.d.mts +9 -0
  549. package/dist/webBuilder.mjs +9 -0
  550. package/docs/server/api-export.md +86 -0
  551. package/docs/server/api.md +144 -0
  552. package/docs/server/getting-started.md +114 -0
  553. package/docs/server/index.md +67 -0
  554. package/docs/server/ipc.md +97 -0
  555. package/docs/server/lifecycle.md +108 -0
  556. package/docs/server/security.md +101 -0
  557. package/llms.txt +12 -0
  558. package/package.json +295 -0
  559. package/src/prompts/po-author-extension/SKILL.md +35 -0
  560. package/src/prompts/po-author-extension/references/extension-contract.md +134 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["isLocalPackageSpecifier","fs","path","splitPackageSpecifier","poPackageRoot","consumerPackageEntry","crypto","zlib","os","poHomeDirectory","poRuntimeDirectory","createLayerResolvers","resolveNewest","installRuntimePackages"],"sources":["../../../../src/composition/layerPackageInstaller/index.ts"],"sourcesContent":["import crypto from 'node:crypto';\nimport fs from 'node:fs';\nimport os from 'node:os';\nimport path from 'node:path';\nimport zlib from 'node:zlib';\n\nimport { isLocalPackageSpecifier, type MajorModesConfig } from '@agimon-ai/po-config/majorModes';\nimport { consumerPackageEntry, splitPackageSpecifier } from '@agimon-ai/po-core/moduleResolution';\nimport { writeFileAtomic } from '@agimon-ai/po-core/runtimeJson';\nimport {\n installRuntimePackages,\n type InstallRuntimePackagesOptions,\n resolveNewest,\n} from '@agimon-ai/po-core/runtimePackages';\nimport { poHomeDirectory, poRuntimeDirectory } from '@agimon-ai/po-core/runtimePiSettings';\n\nimport { poPackageRoot } from '../../builders/cli/entryResolution';\nimport { createLayerResolvers, type ExtensionLayerResolvers } from '../../builders/cli/extensionAssembler';\n\nconst NPM_SOURCE_PREFIX = 'npm:';\nconst FILE_SPECIFIER_PREFIX = 'file:';\nconst WORKSPACE_SPECIFIER_PREFIX = 'workspace:';\n/** Root target of a staged catalogue archive: always the staged workspace, never the registry. */\nconst CATALOG_WORKSPACE_TARGET = 'workspace:*';\n/** Where catalogue archives are unpacked inside the runtime, one directory per archive hash. */\nconst CATALOG_STAGING_DIRECTORY = 'catalog';\nconst RUNTIME_PACKAGE_NAME = 'po-runtime';\nconst UNPINNED_PACKAGE_RANGE = '*';\nconst PACKAGE_MANIFEST = 'package.json';\nconst NODE_MODULES = 'node_modules';\nconst PACKAGE_CATALOG_ENV = 'PO_PACKAGE_CATALOG';\n/** The registry catalogue a release writes into the CLI package: `<package root>/dist/catalog/index.json`. */\nconst BUNDLED_CATALOG_SEGMENTS = ['dist', 'catalog', 'index.json'] as const;\n/** upm error codes that mean the registry could not be reached, so the store may still answer. */\nconst NETWORK_FAILURE_CODES = new Set(['ENETWORK', 'ETIMEDOUT', 'EREGISTRY']);\n\nfunction overridePackageName(selector: string): string {\n const separatorIndex = selector.indexOf('@', selector.startsWith('@') ? 1 : 0);\n return separatorIndex === -1 ? selector : selector.slice(0, separatorIndex);\n}\n\n/**\n * Same-major patches for transitive versions pinned by the current foundation packages.\n * Package managers only honor overrides from the install root, so published extensions\n * cannot carry these fixes in their own manifests.\n */\nexport const SAFE_TRANSITIVE_OVERRIDES = {\n '@hono/node-server@2.0.0 - 2.0.9': '^2.0.10',\n '@opentelemetry/core@2.0.0 - 2.7.999': '2.8.0',\n 'brace-expansion@1.0.0 - 1.1.20': '^1.1.21',\n 'brace-expansion@5.0.0 - 5.0.11': '^5.0.12',\n 'hono@4.0.0 - 4.13.7': '4.13.8',\n 'js-yaml@4.0.0 - 4.3.1': '^4.3.2',\n 'js-yaml@5.0.0 - 5.2.1': '^5.2.2',\n 'liquidjs@10.0.0 - 10.27.1': '^10.27.2',\n 'protobufjs@8.0.0 - 8.7.1': '^8.7.2',\n 'undici@7.0.0 - 7.29.0': '^7.29.1',\n} as const satisfies Readonly<Record<string, string>>;\n\nconst SAFE_TRANSITIVE_PACKAGE_NAMES = new Set(Object.keys(SAFE_TRANSITIVE_OVERRIDES).map(overridePackageName));\n\nexport interface EnsureLayerPackagesOptions {\n /**\n * The Po root whose layers name the packages. Its own node_modules chain is\n * resolved first; what it cannot provide is installed into the one runtime\n * every root shares, `<po home>/runtime`.\n */\n repoRoot: string;\n config: MajorModesConfig;\n layers: readonly string[];\n environment?: NodeJS.ProcessEnv;\n /**\n * Move every managed package to its newest published version.\n *\n * Launch installs what a selection needs and nothing more, so a session never\n * pays for a registry round trip. Sync is the explicit maintenance command and\n * is the only caller that asks for this.\n */\n refresh?: boolean;\n /**\n * Packages installed into the runtime whatever the root resolves itself, such as the\n * catalogue's `install` list. A `name@version` specifier pins that exact version; a\n * catalogue archive for the name still wins. Refresh never moves a pinned name.\n */\n specifiers?: readonly string[];\n /**\n * Make the runtime manifest declare exactly this run's packages (the specifiers, the\n * selected names and their catalogue dependencies), so pruning can drop anything else.\n * Without it the manifest only grows.\n */\n exactManifest?: boolean;\n /** Receives one human-readable line per package decision. */\n onProgress?: (message: string) => void;\n}\n\nexport interface LayerPackageInstallerDependencies {\n /** Install seam; the default installs `<po home>/runtime` with upm. */\n install?: (options: InstallRuntimePackagesOptions) => Promise<unknown>;\n resolvers?: ExtensionLayerResolvers;\n /** Registry lookup seam; the default resolves the newest allowed version with upm. */\n publishedVersion?: (name: string) => Promise<string>;\n}\n\n/** One managed package moving from the installed version to the newest published one. */\nexport interface LayerPackageUpdate {\n name: string;\n from: string;\n to: string;\n}\n\nexport interface LayerPackageResult {\n /** Sources installed because a configured extension could not be resolved. */\n installed: string[];\n /** Packages this run moved to a newer published version. */\n updated: LayerPackageUpdate[];\n /** Packages left at the installed version because the registry could not be read. */\n unchecked: string[];\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction recordValue(value: unknown): Record<string, unknown> {\n return isRecord(value) ? { ...value } : {};\n}\n\nfunction withoutConflictingTransitiveOverrides(value: unknown): Record<string, unknown> {\n const overrides = recordValue(value);\n for (const [selector, replacement] of Object.entries(overrides)) {\n if (SAFE_TRANSITIVE_PACKAGE_NAMES.has(overridePackageName(selector))) {\n delete overrides[selector];\n } else if (isRecord(replacement)) {\n overrides[selector] = withoutConflictingTransitiveOverrides(replacement);\n }\n }\n return overrides;\n}\n\n/** Earlier versions overrode catalog packages with relative `file:` targets; any other override is not Po's. */\nfunction withoutCatalogOverrides(overrides: Record<string, unknown>): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(overrides).filter(\n ([, replacement]) => !(typeof replacement === 'string' && replacement.startsWith(FILE_SPECIFIER_PREFIX)),\n ),\n );\n}\n\n/** The published (non-local, required) package specifiers the default and the given layers name. */\nfunction configuredPackageSpecifiers(config: MajorModesConfig, layers: readonly string[]): string[] {\n const specifiers = new Set<string>();\n const selectedDefinitions = [\n ...(config.default ? [config.default] : []),\n ...layers.map((layerName) => {\n const layer = config.layers[layerName];\n if (!layer) throw new Error(`Unknown layer: ${layerName}`);\n return layer;\n }),\n ];\n for (const layer of selectedDefinitions) {\n for (const configured of layer.packages ?? []) {\n const specifier = typeof configured === 'string' ? configured : configured.name;\n const optional = typeof configured !== 'string' && configured.optional === true;\n if (!optional && !isLocalPackageSpecifier(specifier)) specifiers.add(specifier);\n }\n }\n return [...specifiers];\n}\n\nfunction resolvePackageEntries(resolvers: ExtensionLayerResolvers, specifier: string): string[] | undefined {\n const entries = resolvers.optionalPackageEntries?.(specifier);\n if (entries !== undefined) return entries;\n const entry = resolvers.optionalPackageEntry(specifier);\n return entry ? [entry] : undefined;\n}\n\nfunction readRuntimeManifest(manifestPath: string): { current: string | undefined; manifest: Record<string, unknown> } {\n const current = fs.existsSync(manifestPath) ? fs.readFileSync(manifestPath, 'utf8') : undefined;\n if (current === undefined) return { current, manifest: { name: RUNTIME_PACKAGE_NAME, private: true } };\n const parsed: unknown = JSON.parse(current);\n if (!isRecord(parsed)) throw new Error(`Po runtime package manifest at ${manifestPath} must be a JSON object.`);\n return { current, manifest: parsed };\n}\n\n/** Names the runtime manifest already declares: what earlier runs, from any root, installed there. */\nfunction declaredRuntimePackages(runtimeDirectory: string): Set<string> {\n const manifestPath = path.join(runtimeDirectory, PACKAGE_MANIFEST);\n if (!fs.existsSync(manifestPath)) return new Set();\n return new Set(Object.keys(recordValue(readRuntimeManifest(manifestPath).manifest.dependencies)));\n}\n\n/**\n * Adds a package set and the patched transitive policy to the shared runtime manifest.\n *\n * `targets` pins names to exact versions or `workspace:*`. `catalogWorkspaces` maps each\n * staged catalogue archive's name to its directory relative to the runtime; the manifest\n * lists exactly those directories as its `workspaces`, so a catalogue package's dependency\n * on another one links the staged copy instead of reaching the registry. Both `overrides` and\n * `pnpm.overrides` are written; upm reads both.\n * With `exact`, declared names outside `sources` are dropped instead of kept.\n */\nexport function ensureManagedPackageManifest(\n runtimeDirectory: string,\n sources: readonly string[],\n targets: ReadonlyMap<string, string> = new Map(),\n catalogWorkspaces: Readonly<Record<string, string>> = {},\n exact = false,\n): boolean {\n const manifestPath = path.join(runtimeDirectory, PACKAGE_MANIFEST);\n const { current, manifest } = readRuntimeManifest(manifestPath);\n\n const declared = recordValue(manifest.dependencies);\n const sourceNames = new Set(sources.map(packageName));\n const dependencies = exact\n ? Object.fromEntries(Object.entries(declared).filter(([name]) => sourceNames.has(name)))\n : declared;\n // Every root shares this manifest, so a catalog archive another process staged (a desktop\n // build, say) may not exist for this one: without a staged copy here it falls back to the\n // registry, which keeps the whole set installable. `file:` targets are what earlier\n // versions wrote for archives.\n for (const [name, declared] of Object.entries(dependencies)) {\n if (Object.hasOwn(catalogWorkspaces, name)) {\n dependencies[name] = CATALOG_WORKSPACE_TARGET;\n } else if (\n typeof declared === 'string' &&\n (declared.startsWith(FILE_SPECIFIER_PREFIX) || declared.startsWith(WORKSPACE_SPECIFIER_PREFIX))\n ) {\n dependencies[name] = UNPINNED_PACKAGE_RANGE;\n }\n }\n for (const source of sources) {\n const name = packageName(source);\n const target = targets.get(name);\n // An exact target is what makes an update reach the store: a package manager keeps a\n // locked version whenever the recorded range still admits it.\n if (target !== undefined) dependencies[name] = target;\n else if (!Object.hasOwn(dependencies, name)) dependencies[name] = UNPINNED_PACKAGE_RANGE;\n }\n manifest.dependencies = dependencies;\n // Po owns the runtime's workspaces: exactly the staged archives, which reach only each other.\n const workspaces = Object.values(catalogWorkspaces).sort();\n if (workspaces.length > 0) manifest.workspaces = workspaces;\n else delete manifest.workspaces;\n // Nested and overlapping consumer rules can take precedence in cases that retain\n // vulnerable versions, so Po owns these package-specific selectors recursively.\n manifest.overrides = {\n ...withoutCatalogOverrides(withoutConflictingTransitiveOverrides(manifest.overrides)),\n ...SAFE_TRANSITIVE_OVERRIDES,\n };\n const pnpm = recordValue(manifest.pnpm);\n pnpm.overrides = {\n ...withoutCatalogOverrides(withoutConflictingTransitiveOverrides(pnpm.overrides)),\n ...SAFE_TRANSITIVE_OVERRIDES,\n };\n manifest.pnpm = pnpm;\n\n const serialized = `${JSON.stringify(manifest, null, 2)}\\n`;\n if (serialized === current) return false;\n fs.mkdirSync(runtimeDirectory, { recursive: true });\n writeFileAtomic(manifestPath, serialized);\n return true;\n}\n\n/** Finds required npm packages selected by defaults and active layers that Po cannot resolve. */\nexport function missingLayerPackageSpecifiers(\n config: MajorModesConfig,\n layers: readonly string[],\n resolvers: ExtensionLayerResolvers,\n): string[] {\n return configuredPackageSpecifiers(config, layers).filter(\n (specifier) => resolvePackageEntries(resolvers, specifier) === undefined,\n );\n}\n\n/** Whether `root`'s own node_modules chain holds the package, walked the way Node looks it up from `root`. */\nfunction ownsPackage(name: string, root: string): boolean {\n for (let directory = path.resolve(root); ; directory = path.dirname(directory)) {\n if (fs.existsSync(path.join(directory, NODE_MODULES, name, PACKAGE_MANIFEST))) return true;\n if (path.dirname(directory) === directory) return false;\n }\n}\n\n/**\n * The required npm packages the default and the given layers name that `root` does not get\n * from its own node_modules chain: what the shared runtime provides for it, whether it does so\n * already or not yet. Sync declares exactly these, over every root, in the runtime manifest; a\n * name the runtime already provides still counts, or the next exact manifest would drop it.\n */\nexport function runtimeLayerPackageSpecifiers(\n config: MajorModesConfig,\n layers: readonly string[],\n root: string,\n): string[] {\n return configuredPackageSpecifiers(config, layers).filter(\n (specifier) => !ownsPackage(splitPackageSpecifier(specifier).name, root),\n );\n}\n\nfunction packageName(source: string): string {\n const specifier = source.startsWith(NPM_SOURCE_PREFIX) ? source.slice(NPM_SOURCE_PREFIX.length) : source;\n if (specifier.startsWith('@')) {\n const slash = specifier.indexOf('/');\n const version = slash === -1 ? -1 : specifier.indexOf('@', slash);\n return version === -1 ? specifier : specifier.slice(0, version);\n }\n const version = specifier.indexOf('@');\n return version === -1 ? specifier : specifier.slice(0, version);\n}\n\ninterface PackageCatalogEntry {\n /** Absolute path of the bundled archive; it takes precedence over `version`. */\n archive?: string;\n /** Exact registry version, pinned when the entry has no archive. */\n version?: string;\n dependencies: readonly string[];\n}\n\ninterface PackageCatalog {\n packages: ReadonlyMap<string, PackageCatalogEntry>;\n /** Feature packages Po installs out of the box, by name. */\n install: readonly string[];\n}\n\nconst EMPTY_CATALOG: PackageCatalog = { packages: new Map(), install: [] };\n\nfunction stringList(value: unknown): string[] | undefined {\n if (!Array.isArray(value)) return undefined;\n const strings = value.filter((item): item is string => typeof item === 'string');\n return strings.length === value.length ? strings : undefined;\n}\n\nfunction defaultBundledCatalogPath(): string | undefined {\n try {\n return path.join(poPackageRoot(), ...BUNDLED_CATALOG_SEGMENTS);\n } catch {\n // A bundle with no locatable Po package root has no bundled catalogue to read.\n return undefined;\n }\n}\n\n/**\n * The first catalogue present: `PO_PACKAGE_CATALOG` (desktop's archives), then the one\n * a release bundles into the CLI. With neither, the runtime installs only what roots name.\n */\nfunction packageCatalogPath(environment: NodeJS.ProcessEnv): string | undefined {\n const configured = environment[PACKAGE_CATALOG_ENV]?.trim();\n if (configured) return configured;\n const bundledCatalogPath = defaultBundledCatalogPath();\n return bundledCatalogPath !== undefined && fs.existsSync(bundledCatalogPath) ? bundledCatalogPath : undefined;\n}\n\nfunction readPackageCatalog(manifestPath: string | undefined): PackageCatalog {\n if (!manifestPath) return EMPTY_CATALOG;\n const parsed: unknown = JSON.parse(fs.readFileSync(manifestPath, 'utf8'));\n if (!isRecord(parsed) || parsed.version !== 1 || !isRecord(parsed.packages)) {\n throw new Error(`Unsupported Po package catalog: ${manifestPath}`);\n }\n const packages = new Map<string, PackageCatalogEntry>();\n for (const [name, value] of Object.entries(parsed.packages)) {\n if (\n !isRecord(value) ||\n !Array.isArray(value.dependencies) ||\n (value.archive !== undefined && typeof value.archive !== 'string') ||\n (value.version !== undefined && typeof value.version !== 'string') ||\n (value.archive === undefined && value.version === undefined)\n ) {\n throw new Error(`Invalid package entry for ${name} in ${manifestPath}`);\n }\n const dependencies = stringList(value.dependencies);\n if (!dependencies) throw new Error(`Invalid dependencies for ${name} in ${manifestPath}`);\n const version = typeof value.version === 'string' ? value.version : undefined;\n if (typeof value.archive !== 'string') {\n packages.set(name, { version, dependencies });\n continue;\n }\n const archive = path.resolve(path.dirname(manifestPath), value.archive);\n if (!fs.existsSync(archive)) throw new Error(`Po package catalog archive is missing: ${archive}`);\n packages.set(name, { archive, version, dependencies });\n }\n const install = parsed.install === undefined ? [] : stringList(parsed.install);\n if (!install) throw new Error(`Invalid install list in ${manifestPath}`);\n const unknown = install.filter((name) => !packages.has(name));\n if (unknown.length > 0) throw new Error(`Po package catalog installs unlisted package(s): ${unknown.join(', ')}`);\n return { packages, install };\n}\n\n/**\n * The catalogue's `install` list as exact `name@version` specifiers for\n * `EnsureLayerPackagesOptions.specifiers`; empty when no catalogue is present.\n */\nexport function catalogInstallSpecifiers(environment: NodeJS.ProcessEnv = process.env): string[] {\n const catalog = readPackageCatalog(packageCatalogPath(environment));\n return catalog.install.map((name) => {\n const version = catalog.packages.get(name)?.version;\n return version ? `${name}@${version}` : name;\n });\n}\n\n/**\n * The installed package roots of the catalogue's `install` list, resolved the way a root\n * resolves a bare name (its own node_modules, then the shared runtime). The global web build\n * covers them, so every first-party plugin has a slot; a name not installed yet is left out.\n */\nexport function catalogPackageRoots(globalRoot: string, environment: NodeJS.ProcessEnv = process.env): string[] {\n const roots: string[] = [];\n for (const name of readPackageCatalog(packageCatalogPath(environment)).install) {\n const manifest = consumerPackageEntry(`${name}/${PACKAGE_MANIFEST}`, globalRoot, environment);\n if (manifest !== undefined) roots.push(path.dirname(fs.realpathSync(manifest)));\n }\n return roots;\n}\n\n/** SHA-256 of the catalogue file in use, or `none` when no catalogue is present. */\nexport function packageCatalogHash(environment: NodeJS.ProcessEnv = process.env): string {\n const catalogPath = packageCatalogPath(environment);\n if (!catalogPath) return 'none';\n return crypto.createHash('sha256').update(fs.readFileSync(catalogPath)).digest('hex');\n}\n\n/** Exact target per catalogue name: its staged workspace for an archive, else its registry version. */\nfunction catalogTargets(catalog: PackageCatalog): Map<string, string> {\n return new Map(\n [...catalog.packages].flatMap(([name, entry]) => {\n if (entry.archive !== undefined) return [[name, CATALOG_WORKSPACE_TARGET] as const];\n return entry.version !== undefined ? [[name, entry.version] as const] : [];\n }),\n );\n}\n\nconst TAR_BLOCK_SIZE = 512;\nconst TAR_EXECUTABLE_BITS = 0o111;\n\nfunction tarString(block: Buffer, start: number, length: number): string {\n const field = block.subarray(start, start + length);\n const end = field.indexOf(0);\n return field.subarray(0, end === -1 ? field.length : end).toString('utf8');\n}\n\nfunction tarNumber(block: Buffer, start: number, length: number): number {\n const field = block.subarray(start, start + length);\n // GNU base-256: the high bit of the first byte marks a big-endian binary number.\n if ((field[0]! & 0x80) !== 0) return field.subarray(1).reduce((value, byte) => value * 256 + byte, field[0]! & 0x7f);\n const text = tarString(block, start, length).trim();\n return text === '' ? 0 : Number.parseInt(text, 8);\n}\n\n/** The `path` record of a pax extended header, if it has one. */\nfunction paxPath(data: Buffer): string | undefined {\n let found: string | undefined;\n let offset = 0;\n while (offset < data.length) {\n const space = data.indexOf(0x20, offset);\n if (space === -1) break;\n const length = Number.parseInt(data.subarray(offset, space).toString('utf8'), 10);\n if (!Number.isFinite(length) || length <= 0) break;\n const record = data.subarray(space + 1, offset + length - 1).toString('utf8');\n const separator = record.indexOf('=');\n if (record.slice(0, separator) === 'path') found = record.slice(separator + 1);\n offset += length;\n }\n return found;\n}\n\n/**\n * Unpacks a gzipped npm package archive into `destination`, dropping the archive's top\n * directory (`package/`) as npm does. Only files and directories are written: npm package\n * archives carry no links, and an entry that would land outside `destination` is refused.\n */\nfunction extractPackageArchive(archive: string, destination: string): void {\n const data = zlib.gunzipSync(fs.readFileSync(archive));\n let offset = 0;\n let nextPath: string | undefined;\n while (offset + TAR_BLOCK_SIZE <= data.length) {\n const header = data.subarray(offset, offset + TAR_BLOCK_SIZE);\n if (header.every((byte) => byte === 0)) break;\n const size = tarNumber(header, 124, 12);\n const type = String.fromCharCode(header[156]!);\n const body = data.subarray(offset + TAR_BLOCK_SIZE, offset + TAR_BLOCK_SIZE + size);\n offset += TAR_BLOCK_SIZE + Math.ceil(size / TAR_BLOCK_SIZE) * TAR_BLOCK_SIZE;\n if (type === 'x' || type === 'L') {\n nextPath = type === 'x' ? (paxPath(body) ?? nextPath) : tarString(body, 0, body.length);\n continue;\n }\n if (type === 'g') continue;\n const prefix = tarString(header, 345, 155);\n const name = nextPath ?? (prefix ? `${prefix}/${tarString(header, 0, 100)}` : tarString(header, 0, 100));\n nextPath = undefined;\n if (type !== '0' && type !== '\\0' && type !== '5') continue;\n const relative = name.split('/').slice(1).join('/');\n if (relative === '') continue;\n const target = path.resolve(destination, relative);\n if (!target.startsWith(`${destination}${path.sep}`)) {\n throw new Error(`Po package catalog archive ${archive} has an entry outside the package: ${name}`);\n }\n if (type === '5') {\n fs.mkdirSync(target, { recursive: true });\n continue;\n }\n fs.mkdirSync(path.dirname(target), { recursive: true });\n const executable = (tarNumber(header, 100, 8) & TAR_EXECUTABLE_BITS) !== 0;\n fs.writeFileSync(target, body, { mode: executable ? 0o755 : 0o644 });\n }\n}\n\n/** Dependency fields of a staged manifest that may name another catalogue package. */\nconst STAGED_DEPENDENCY_FIELDS = ['dependencies', 'optionalDependencies', 'peerDependencies'] as const;\n\n/**\n * Unpacks one catalogue archive into `<runtime>/catalog/<hash>` and returns that directory\n * relative to the runtime, with the catalogue names its manifest depends on.\n *\n * upm only installs a package from a directory as a workspace: a `file:` archive takes its own\n * dependencies from the registry, so one catalogue archive could not depend on another. In the\n * staged manifest every dependency on another catalogue archive becomes `workspace:*`, so the\n * catalogue's copy wins whatever range the package declared, and `devDependencies`, which a\n * workspace would otherwise install, are dropped. The hash covers the archive bytes and the\n * catalogue's archive names, everything that rewrite reads, so a staged directory is reused.\n */\nfunction stageCatalogArchive(\n runtimeDirectory: string,\n archive: string,\n archiveNames: ReadonlySet<string>,\n): { relative: string; dependencies: string[] } {\n const hash = crypto\n .createHash('sha256')\n .update(fs.readFileSync(archive))\n .update(`\\0${[...archiveNames].sort().join('\\n')}`)\n .digest('hex');\n const relative = `${CATALOG_STAGING_DIRECTORY}/${hash}`;\n const directory = path.join(runtimeDirectory, CATALOG_STAGING_DIRECTORY, hash);\n const stagedManifest = path.join(directory, PACKAGE_MANIFEST);\n if (!fs.existsSync(stagedManifest)) {\n const temporary = `${directory}.${String(process.pid)}.${crypto.randomUUID()}.tmp`;\n try {\n extractPackageArchive(archive, temporary);\n const manifestPath = path.join(temporary, PACKAGE_MANIFEST);\n if (!fs.existsSync(manifestPath)) throw new Error(`Po package catalog archive has no package.json: ${archive}`);\n const manifest: unknown = JSON.parse(fs.readFileSync(manifestPath, 'utf8'));\n if (!isRecord(manifest)) throw new Error(`Po package catalog archive has an invalid package.json: ${archive}`);\n delete manifest.devDependencies;\n for (const field of STAGED_DEPENDENCY_FIELDS) {\n if (!isRecord(manifest[field])) continue;\n const declared = { ...manifest[field] };\n for (const name of Object.keys(declared)) {\n if (archiveNames.has(name)) declared[name] = CATALOG_WORKSPACE_TARGET;\n }\n manifest[field] = declared;\n }\n fs.writeFileSync(manifestPath, `${JSON.stringify(manifest, null, 2)}\\n`);\n try {\n fs.renameSync(temporary, directory);\n } catch (error) {\n // Another process staged the same bytes first; its copy is identical.\n if (!fs.existsSync(stagedManifest)) throw error;\n }\n } finally {\n fs.rmSync(temporary, { recursive: true, force: true });\n }\n }\n const staged = recordValue(JSON.parse(fs.readFileSync(stagedManifest, 'utf8')));\n const dependencies = STAGED_DEPENDENCY_FIELDS.flatMap((field) => Object.keys(recordValue(staged[field])));\n return { relative, dependencies: dependencies.filter((name) => archiveNames.has(name)) };\n}\n\n/**\n * Stages the archive of every named catalogue package and of every catalogue package those\n * name in turn, since a staged manifest's `workspace:*` needs that workspace present. The\n * result, name to staged directory, feeds `ensureManagedPackageManifest`.\n */\nfunction stageCatalogArchives(\n runtimeDirectory: string,\n catalog: PackageCatalog,\n names: Iterable<string>,\n): Record<string, string> {\n const archiveNames = new Set(\n [...catalog.packages].flatMap(([name, entry]) => (entry.archive === undefined ? [] : [name])),\n );\n const staged: Record<string, string> = {};\n const pending = [...names].filter((name) => archiveNames.has(name));\n while (pending.length > 0) {\n const name = pending.shift()!;\n if (Object.hasOwn(staged, name)) continue;\n const { relative, dependencies } = stageCatalogArchive(\n runtimeDirectory,\n catalog.packages.get(name)!.archive!,\n archiveNames,\n );\n staged[name] = relative;\n pending.push(...dependencies);\n }\n return staged;\n}\n\n/**\n * Removes staged archives the runtime manifest no longer lists as workspaces, and returns their\n * folder names. An install never calls this: a running server imports from these folders (its\n * `.po-snapshots` live there), so sync prunes them under the same gate as the runtime store.\n */\nexport function pruneStagedCatalogArchives(runtimeDirectory: string): string[] {\n const stagingDirectory = path.join(runtimeDirectory, CATALOG_STAGING_DIRECTORY);\n if (!fs.existsSync(stagingDirectory)) return [];\n const { manifest } = readRuntimeManifest(path.join(runtimeDirectory, PACKAGE_MANIFEST));\n const kept = new Set((stringList(manifest.workspaces) ?? []).map((relative) => path.basename(relative)));\n return fs\n .readdirSync(stagingDirectory)\n .filter((entry) => !kept.has(entry))\n .map((entry) => {\n fs.rmSync(path.join(stagingDirectory, entry), { recursive: true, force: true });\n return entry;\n });\n}\n\n/** Splits `name@version` (scoped or not); the version is absent for a bare name or subpath. */\nfunction splitVersionedSpecifier(specifier: string): { name: string; version?: string } {\n const separator = specifier.indexOf('@', specifier.startsWith('@') ? 1 : 0);\n if (separator === -1) return { name: splitPackageSpecifier(specifier).name };\n return { name: specifier.slice(0, separator), version: specifier.slice(separator + 1) };\n}\n\nfunction npmSources(\n specifiers: readonly string[],\n catalog: PackageCatalog,\n targets: ReadonlyMap<string, string>,\n includeCatalogDependencies = false,\n): string[] {\n const names = [...new Set(specifiers.map((specifier) => splitPackageSpecifier(specifier).name))];\n if (includeCatalogDependencies) {\n for (let index = 0; index < names.length; index += 1) {\n for (const dependency of catalog.packages.get(names[index]!)?.dependencies ?? []) {\n if (!names.includes(dependency)) names.push(dependency);\n }\n }\n }\n return names.map((name) => {\n const target = targets.get(name);\n return `${NPM_SOURCE_PREFIX}${name}${target ? `@${target}` : ''}`;\n });\n}\n\nfunction pluralize(count: number, noun: string): string {\n return `${count} ${noun}${count === 1 ? '' : 's'}`;\n}\n\n/** Version of a package inside the shared runtime, absent when Po did not install it there. */\nfunction managedPackageVersion(runtimeDirectory: string, name: string): string | undefined {\n const manifestPath = path.join(runtimeDirectory, NODE_MODULES, name, PACKAGE_MANIFEST);\n if (!fs.existsSync(manifestPath)) return undefined;\n try {\n const parsed: unknown = JSON.parse(fs.readFileSync(manifestPath, 'utf8'));\n return isRecord(parsed) && typeof parsed.version === 'string' ? parsed.version : undefined;\n } catch {\n // An unreadable manifest carries the same meaning as an absent one: nothing\n // usable is installed, so the caller treats the package as uninstalled.\n return undefined;\n }\n}\n\nfunction errorCode(error: unknown): unknown {\n return typeof error === 'object' && error !== null ? (error as { code?: unknown }).code : undefined;\n}\n\n/**\n * Installs the runtime, and when the registry cannot be reached installs it again offline:\n * an unchanged lockfile whose packages the store already holds needs no network.\n */\nasync function installWithOfflineRetry(\n install: NonNullable<LayerPackageInstallerDependencies['install']>,\n options: InstallRuntimePackagesOptions,\n onProgress: ((message: string) => void) | undefined,\n): Promise<void> {\n try {\n await install(options);\n } catch (error) {\n const code = errorCode(error);\n if (typeof code !== 'string' || !NETWORK_FAILURE_CODES.has(code)) throw error;\n onProgress?.(`the registry is unreachable (${code}); installing offline from the store`);\n try {\n await install({ ...options, preferOffline: false, offline: true });\n } catch {\n // The offline attempt only ever narrows the original failure: the network error\n // explains why the install could not complete, an EOFFLINE miss does not.\n throw error;\n }\n }\n}\n\ninterface CheckedPackage {\n name: string;\n from: string;\n to?: string;\n failure?: string;\n}\n\n/**\n * Compares every package sync installed against the registry.\n *\n * Only the shared runtime is consulted: a package that resolves from the\n * repository's own modules is not sync's to move, and a package that is not\n * installed yet is already covered by the missing-package path.\n */\nasync function resolveUpdates(\n runtimeDirectory: string,\n sources: readonly string[],\n publishedVersion: (name: string) => Promise<string>,\n onProgress: ((message: string) => void) | undefined,\n): Promise<Pick<LayerPackageResult, 'updated' | 'unchecked'>> {\n const managed = sources\n .map((source) => ({\n name: packageName(source),\n from: managedPackageVersion(runtimeDirectory, packageName(source)),\n }))\n .filter((entry): entry is { name: string; from: string } => entry.from !== undefined);\n const checked: CheckedPackage[] = await Promise.all(\n managed.map(async (entry) => {\n try {\n return { ...entry, to: await publishedVersion(entry.name) };\n } catch (error) {\n return { ...entry, failure: (error instanceof Error ? error.message : String(error)).split('\\n')[0] };\n }\n }),\n );\n\n const updated: LayerPackageUpdate[] = [];\n const unchecked: string[] = [];\n for (const entry of checked) {\n if (entry.to === undefined) {\n unchecked.push(entry.name);\n onProgress?.(`kept ${entry.name} ${entry.from}: ${entry.failure ?? 'no published version'}`);\n continue;\n }\n if (entry.to === entry.from) continue;\n updated.push({ name: entry.name, from: entry.from, to: entry.to });\n onProgress?.(`${entry.name} ${entry.from} -> ${entry.to}`);\n }\n return { updated, unchecked };\n}\n\n/**\n * Installs the selected layer packages a root cannot resolve into the shared runtime,\n * `<po home>/runtime`, and verifies they now resolve.\n *\n * The runtime manifest is the union of what every root asked for. A root adds the\n * packages it is missing; a package it already resolves from its own node_modules stays\n * out unless an earlier run put it there. One name has one version: an exact target\n * (a sync update, a catalog archive or registry pin) replaces the declared range, last\n * writer wins, and a plain `*` never replaces a range already declared.\n *\n * `specifiers` and `exactManifest` only add behaviour: without them, and without a\n * catalogue, a run behaves as it always has.\n */\nexport async function ensureLayerPackages(\n options: EnsureLayerPackagesOptions,\n dependencies: LayerPackageInstallerDependencies = {},\n): Promise<LayerPackageResult> {\n const environment = options.environment ?? process.env;\n const homeDirectory = environment.HOME ?? os.homedir();\n const poHome = poHomeDirectory(homeDirectory, environment);\n const runtimeDirectory = poRuntimeDirectory(homeDirectory, environment);\n const resolvers = dependencies.resolvers ?? createLayerResolvers(options.repoRoot, environment);\n const configured = configuredPackageSpecifiers(options.config, options.layers);\n const missing = configured.filter((specifier) => resolvePackageEntries(resolvers, specifier) === undefined);\n const declared = declaredRuntimePackages(runtimeDirectory);\n const managed = configured.filter(\n (specifier) => missing.includes(specifier) || declared.has(splitPackageSpecifier(specifier).name),\n );\n const requested = (options.specifiers ?? []).map(splitVersionedSpecifier);\n if (managed.length === 0 && requested.length === 0 && options.exactManifest !== true) {\n return { installed: [], updated: [], unchecked: [] };\n }\n\n const catalog = readPackageCatalog(packageCatalogPath(environment));\n const pins = catalogTargets(catalog);\n for (const { name, version } of requested) {\n if (version !== undefined && catalog.packages.get(name)?.archive === undefined) pins.set(name, version);\n }\n // A requested package is missing until the runtime holds it at the version it is pinned to.\n const requestedMissing = requested\n .filter(({ name, version }) => {\n const installed = managedPackageVersion(runtimeDirectory, name);\n const entry = catalog.packages.get(name);\n const expected = entry?.archive === undefined ? version : entry.version;\n return installed === undefined || (expected !== undefined && installed !== expected);\n })\n .map(({ name }) => name);\n const missingSources = npmSources([...missing, ...requestedMissing], catalog, pins);\n const sources = npmSources([...managed, ...requested.map(({ name }) => name)], catalog, pins, true);\n const missingCount = missing.length + requestedMissing.length;\n\n // Refresh never moves a pinned name: catalogue entries and versioned specifiers stay put.\n const fixedNames = new Set([\n ...catalog.packages.keys(),\n ...requested.filter(({ version }) => version !== undefined).map(({ name }) => name),\n ]);\n const registrySources = sources.filter((source) => !fixedNames.has(packageName(source)));\n const { updated, unchecked } = options.refresh\n ? await resolveUpdates(\n runtimeDirectory,\n registrySources,\n dependencies.publishedVersion ?? ((name) => resolveNewest(name, { dir: runtimeDirectory, poHome })),\n options.onProgress,\n )\n : { updated: [], unchecked: [] };\n const targets = new Map(\n sources.flatMap((source) => {\n const target = pins.get(packageName(source));\n return target ? [[packageName(source), target] as const] : [];\n }),\n );\n for (const update of updated) targets.set(update.name, update.to);\n // A kept manifest still declares names earlier runs added; their archives are staged too.\n const stagedNames = new Set([...sources.map(packageName), ...(options.exactManifest === true ? [] : declared)]);\n const staged = stageCatalogArchives(runtimeDirectory, catalog, stagedNames);\n const manifestChanged = ensureManagedPackageManifest(\n runtimeDirectory,\n sources,\n targets,\n staged,\n options.exactManifest === true,\n );\n if (missingCount === 0 && !manifestChanged) return { installed: [], updated: [], unchecked };\n\n options.onProgress?.(\n `installing ${\n updated.length > 0\n ? pluralize(updated.length, 'update')\n : missingCount > 0\n ? pluralize(missingCount, 'missing package')\n : 'the package manifest'\n }`,\n );\n try {\n // One install reconciles the complete dependency set written to package.json.\n await installWithOfflineRetry(\n dependencies.install ?? installRuntimePackages,\n {\n dir: runtimeDirectory,\n poHome,\n // A launch never waits on registry revalidation; sync is the command that refreshes.\n preferOffline: options.refresh !== true,\n log: (message, level) => {\n if (level === 'warn') options.onProgress?.(message);\n },\n },\n options.onProgress,\n );\n } catch (error) {\n const attempted = manifestChanged ? sources : missingSources;\n throw new Error(`Failed to reconcile Po layer package(s): ${attempted.join(', ')}`, { cause: error });\n }\n\n const unresolved = missing.filter((specifier) => !resolvePackageEntries(resolvers, specifier)?.length);\n if (unresolved.length > 0) {\n throw new Error(\n `Installed Po layer package(s) did not expose the configured Pi extension: ${unresolved.join(', ')}`,\n );\n }\n return { installed: missingSources, updated, unchecked };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAmBA,MAAM,oBAAoB;AAC1B,MAAM,wBAAwB;AAC9B,MAAM,6BAA6B;;AAEnC,MAAM,2BAA2B;;AAEjC,MAAM,4BAA4B;AAClC,MAAM,uBAAuB;AAC7B,MAAM,yBAAyB;AAC/B,MAAM,mBAAmB;AACzB,MAAM,eAAe;AACrB,MAAM,sBAAsB;;AAE5B,MAAM,2BAA2B;CAAC;CAAQ;CAAW;AAAY;;AAEjE,MAAM,wCAAwB,IAAI,IAAI;CAAC;CAAY;CAAa;AAAW,CAAC;AAE5E,SAAS,oBAAoB,UAA0B;CACrD,MAAM,iBAAiB,SAAS,QAAQ,KAAK,SAAS,WAAW,GAAG,IAAI,IAAI,CAAC;CAC7E,OAAO,mBAAmB,KAAK,WAAW,SAAS,MAAM,GAAG,cAAc;AAC5E;;;;;;AAOA,MAAa,4BAA4B;CACvC,mCAAmC;CACnC,uCAAuC;CACvC,kCAAkC;CAClC,kCAAkC;CAClC,uBAAuB;CACvB,yBAAyB;CACzB,yBAAyB;CACzB,6BAA6B;CAC7B,4BAA4B;CAC5B,yBAAyB;AAC3B;AAEA,MAAM,gCAAgC,IAAI,IAAI,OAAO,KAAK,yBAAyB,CAAC,CAAC,IAAI,mBAAmB,CAAC;AA4D7G,SAAS,SAAS,OAAkD;CAClE,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E;AAEA,SAAS,YAAY,OAAyC;CAC5D,OAAO,SAAS,KAAK,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC;AAC3C;AAEA,SAAS,sCAAsC,OAAyC;CACtF,MAAM,YAAY,YAAY,KAAK;CACnC,KAAK,MAAM,CAAC,UAAU,gBAAgB,OAAO,QAAQ,SAAS,GAC5D,IAAI,8BAA8B,IAAI,oBAAoB,QAAQ,CAAC,GACjE,OAAO,UAAU;MACZ,IAAI,SAAS,WAAW,GAC7B,UAAU,YAAY,sCAAsC,WAAW;CAG3E,OAAO;AACT;;AAGA,SAAS,wBAAwB,WAA6D;CAC5F,OAAO,OAAO,YACZ,OAAO,QAAQ,SAAS,CAAC,CAAC,QACvB,GAAG,iBAAiB,EAAE,OAAO,gBAAgB,YAAY,YAAY,WAAW,qBAAqB,EACxG,CACF;AACF;;AAGA,SAAS,4BAA4B,QAA0B,QAAqC;CAClG,MAAM,6BAAa,IAAI,IAAY;CACnC,MAAM,sBAAsB,CAC1B,GAAI,OAAO,UAAU,CAAC,OAAO,OAAO,IAAI,CAAC,GACzC,GAAG,OAAO,KAAK,cAAc;EAC3B,MAAM,QAAQ,OAAO,OAAO;EAC5B,IAAI,CAAC,OAAO,MAAM,IAAI,MAAM,kBAAkB,WAAW;EACzD,OAAO;CACT,CAAC,CACH;CACA,KAAK,MAAM,SAAS,qBAClB,KAAK,MAAM,cAAc,MAAM,YAAY,CAAC,GAAG;EAC7C,MAAM,YAAY,OAAO,eAAe,WAAW,aAAa,WAAW;EAE3E,IAAI,EADa,OAAO,eAAe,YAAY,WAAW,aAAa,SAC1D,EAAA,GAACA,gCAAAA,wBAAAA,CAAwB,SAAS,GAAG,WAAW,IAAI,SAAS;CAChF;CAEF,OAAO,CAAC,GAAG,UAAU;AACvB;AAEA,SAAS,sBAAsB,WAAoC,WAAyC;CAC1G,MAAM,UAAU,UAAU,yBAAyB,SAAS;CAC5D,IAAI,YAAY,KAAA,GAAW,OAAO;CAClC,MAAM,QAAQ,UAAU,qBAAqB,SAAS;CACtD,OAAO,QAAQ,CAAC,KAAK,IAAI,KAAA;AAC3B;AAEA,SAAS,oBAAoB,cAA0F;CACrH,MAAM,UAAUC,QAAAA,QAAG,WAAW,YAAY,IAAIA,QAAAA,QAAG,aAAa,cAAc,MAAM,IAAI,KAAA;CACtF,IAAI,YAAY,KAAA,GAAW,OAAO;EAAE;EAAS,UAAU;GAAE,MAAM;GAAsB,SAAS;EAAK;CAAE;CACrG,MAAM,SAAkB,KAAK,MAAM,OAAO;CAC1C,IAAI,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,MAAM,kCAAkC,aAAa,wBAAwB;CAC9G,OAAO;EAAE;EAAS,UAAU;CAAO;AACrC;;AAGA,SAAS,wBAAwB,kBAAuC;CACtE,MAAM,eAAeC,UAAAA,QAAK,KAAK,kBAAkB,gBAAgB;CACjE,IAAI,CAACD,QAAAA,QAAG,WAAW,YAAY,GAAG,uBAAO,IAAI,IAAI;CACjD,OAAO,IAAI,IAAI,OAAO,KAAK,YAAY,oBAAoB,YAAY,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC;AAClG;;;;;;;;;;;AAYA,SAAgB,6BACd,kBACA,SACA,0BAAuC,IAAI,IAAI,GAC/C,oBAAsD,CAAC,GACvD,QAAQ,OACC;CACT,MAAM,eAAeC,UAAAA,QAAK,KAAK,kBAAkB,gBAAgB;CACjE,MAAM,EAAE,SAAS,aAAa,oBAAoB,YAAY;CAE9D,MAAM,WAAW,YAAY,SAAS,YAAY;CAClD,MAAM,cAAc,IAAI,IAAI,QAAQ,IAAI,WAAW,CAAC;CACpD,MAAM,eAAe,QACjB,OAAO,YAAY,OAAO,QAAQ,QAAQ,CAAC,CAAC,QAAQ,CAAC,UAAU,YAAY,IAAI,IAAI,CAAC,CAAC,IACrF;CAKJ,KAAK,MAAM,CAAC,MAAM,aAAa,OAAO,QAAQ,YAAY,GACxD,IAAI,OAAO,OAAO,mBAAmB,IAAI,GACvC,aAAa,QAAQ;MAChB,IACL,OAAO,aAAa,aACnB,SAAS,WAAW,qBAAqB,KAAK,SAAS,WAAW,0BAA0B,IAE7F,aAAa,QAAQ;CAGzB,KAAK,MAAM,UAAU,SAAS;EAC5B,MAAM,OAAO,YAAY,MAAM;EAC/B,MAAM,SAAS,QAAQ,IAAI,IAAI;EAG/B,IAAI,WAAW,KAAA,GAAW,aAAa,QAAQ;OAC1C,IAAI,CAAC,OAAO,OAAO,cAAc,IAAI,GAAG,aAAa,QAAQ;CACpE;CACA,SAAS,eAAe;CAExB,MAAM,aAAa,OAAO,OAAO,iBAAiB,CAAC,CAAC,KAAK;CACzD,IAAI,WAAW,SAAS,GAAG,SAAS,aAAa;MAC5C,OAAO,SAAS;CAGrB,SAAS,YAAY;EACnB,GAAG,wBAAwB,sCAAsC,SAAS,SAAS,CAAC;EACpF,GAAG;CACL;CACA,MAAM,OAAO,YAAY,SAAS,IAAI;CACtC,KAAK,YAAY;EACf,GAAG,wBAAwB,sCAAsC,KAAK,SAAS,CAAC;EAChF,GAAG;CACL;CACA,SAAS,OAAO;CAEhB,MAAM,aAAa,GAAG,KAAK,UAAU,UAAU,MAAM,CAAC,EAAE;CACxD,IAAI,eAAe,SAAS,OAAO;CACnC,QAAA,QAAG,UAAU,kBAAkB,EAAE,WAAW,KAAK,CAAC;CAClD,CAAA,GAAA,+BAAA,gBAAA,CAAgB,cAAc,UAAU;CACxC,OAAO;AACT;;AAGA,SAAgB,8BACd,QACA,QACA,WACU;CACV,OAAO,4BAA4B,QAAQ,MAAM,CAAC,CAAC,QAChD,cAAc,sBAAsB,WAAW,SAAS,MAAM,KAAA,CACjE;AACF;;AAGA,SAAS,YAAY,MAAc,MAAuB;CACxD,KAAK,IAAI,YAAYA,UAAAA,QAAK,QAAQ,IAAI,IAAK,YAAYA,UAAAA,QAAK,QAAQ,SAAS,GAAG;EAC9E,IAAID,QAAAA,QAAG,WAAWC,UAAAA,QAAK,KAAK,WAAW,cAAc,MAAM,gBAAgB,CAAC,GAAG,OAAO;EACtF,IAAIA,UAAAA,QAAK,QAAQ,SAAS,MAAM,WAAW,OAAO;CACpD;AACF;;;;;;;AAQA,SAAgB,8BACd,QACA,QACA,MACU;CACV,OAAO,4BAA4B,QAAQ,MAAM,CAAC,CAAC,QAChD,cAAc,CAAC,aAAA,GAAYC,oCAAAA,sBAAAA,CAAsB,SAAS,CAAC,CAAC,MAAM,IAAI,CACzE;AACF;AAEA,SAAS,YAAY,QAAwB;CAC3C,MAAM,YAAY,OAAO,WAAW,iBAAiB,IAAI,OAAO,MAAM,CAAwB,IAAI;CAClG,IAAI,UAAU,WAAW,GAAG,GAAG;EAC7B,MAAM,QAAQ,UAAU,QAAQ,GAAG;EACnC,MAAM,UAAU,UAAU,KAAK,KAAK,UAAU,QAAQ,KAAK,KAAK;EAChE,OAAO,YAAY,KAAK,YAAY,UAAU,MAAM,GAAG,OAAO;CAChE;CACA,MAAM,UAAU,UAAU,QAAQ,GAAG;CACrC,OAAO,YAAY,KAAK,YAAY,UAAU,MAAM,GAAG,OAAO;AAChE;AAgBA,MAAM,gBAAgC;CAAE,0BAAU,IAAI,IAAI;CAAG,SAAS,CAAC;AAAE;AAEzE,SAAS,WAAW,OAAsC;CACxD,IAAI,CAAC,MAAM,QAAQ,KAAK,GAAG,OAAO,KAAA;CAClC,MAAM,UAAU,MAAM,QAAQ,SAAyB,OAAO,SAAS,QAAQ;CAC/E,OAAO,QAAQ,WAAW,MAAM,SAAS,UAAU,KAAA;AACrD;AAEA,SAAS,4BAAgD;CACvD,IAAI;EACF,OAAOD,UAAAA,QAAK,KAAKE,wBAAAA,cAAc,GAAG,GAAG,wBAAwB;CAC/D,QAAQ;EAEN;CACF;AACF;;;;;AAMA,SAAS,mBAAmB,aAAoD;CAC9E,MAAM,aAAa,YAAY,oBAAoB,EAAE,KAAK;CAC1D,IAAI,YAAY,OAAO;CACvB,MAAM,qBAAqB,0BAA0B;CACrD,OAAO,uBAAuB,KAAA,KAAaH,QAAAA,QAAG,WAAW,kBAAkB,IAAI,qBAAqB,KAAA;AACtG;AAEA,SAAS,mBAAmB,cAAkD;CAC5E,IAAI,CAAC,cAAc,OAAO;CAC1B,MAAM,SAAkB,KAAK,MAAMA,QAAAA,QAAG,aAAa,cAAc,MAAM,CAAC;CACxE,IAAI,CAAC,SAAS,MAAM,KAAK,OAAO,YAAY,KAAK,CAAC,SAAS,OAAO,QAAQ,GACxE,MAAM,IAAI,MAAM,mCAAmC,cAAc;CAEnE,MAAM,2BAAW,IAAI,IAAiC;CACtD,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAQ,OAAO,QAAQ,GAAG;EAC3D,IACE,CAAC,SAAS,KAAK,KACf,CAAC,MAAM,QAAQ,MAAM,YAAY,KAChC,MAAM,YAAY,KAAA,KAAa,OAAO,MAAM,YAAY,YACxD,MAAM,YAAY,KAAA,KAAa,OAAO,MAAM,YAAY,YACxD,MAAM,YAAY,KAAA,KAAa,MAAM,YAAY,KAAA,GAElD,MAAM,IAAI,MAAM,6BAA6B,KAAK,MAAM,cAAc;EAExE,MAAM,eAAe,WAAW,MAAM,YAAY;EAClD,IAAI,CAAC,cAAc,MAAM,IAAI,MAAM,4BAA4B,KAAK,MAAM,cAAc;EACxF,MAAM,UAAU,OAAO,MAAM,YAAY,WAAW,MAAM,UAAU,KAAA;EACpE,IAAI,OAAO,MAAM,YAAY,UAAU;GACrC,SAAS,IAAI,MAAM;IAAE;IAAS;GAAa,CAAC;GAC5C;EACF;EACA,MAAM,UAAUC,UAAAA,QAAK,QAAQA,UAAAA,QAAK,QAAQ,YAAY,GAAG,MAAM,OAAO;EACtE,IAAI,CAACD,QAAAA,QAAG,WAAW,OAAO,GAAG,MAAM,IAAI,MAAM,0CAA0C,SAAS;EAChG,SAAS,IAAI,MAAM;GAAE;GAAS;GAAS;EAAa,CAAC;CACvD;CACA,MAAM,UAAU,OAAO,YAAY,KAAA,IAAY,CAAC,IAAI,WAAW,OAAO,OAAO;CAC7E,IAAI,CAAC,SAAS,MAAM,IAAI,MAAM,2BAA2B,cAAc;CACvE,MAAM,UAAU,QAAQ,QAAQ,SAAS,CAAC,SAAS,IAAI,IAAI,CAAC;CAC5D,IAAI,QAAQ,SAAS,GAAG,MAAM,IAAI,MAAM,oDAAoD,QAAQ,KAAK,IAAI,GAAG;CAChH,OAAO;EAAE;EAAU;CAAQ;AAC7B;;;;;AAMA,SAAgB,yBAAyB,cAAiC,QAAQ,KAAe;CAC/F,MAAM,UAAU,mBAAmB,mBAAmB,WAAW,CAAC;CAClE,OAAO,QAAQ,QAAQ,KAAK,SAAS;EACnC,MAAM,UAAU,QAAQ,SAAS,IAAI,IAAI,CAAC,EAAE;EAC5C,OAAO,UAAU,GAAG,KAAK,GAAG,YAAY;CAC1C,CAAC;AACH;;;;;;AAOA,SAAgB,oBAAoB,YAAoB,cAAiC,QAAQ,KAAe;CAC9G,MAAM,QAAkB,CAAC;CACzB,KAAK,MAAM,QAAQ,mBAAmB,mBAAmB,WAAW,CAAC,CAAC,CAAC,SAAS;EAC9E,MAAM,YAAA,GAAWI,oCAAAA,qBAAAA,CAAqB,GAAG,KAAK,GAAG,oBAAoB,YAAY,WAAW;EAC5F,IAAI,aAAa,KAAA,GAAW,MAAM,KAAKH,UAAAA,QAAK,QAAQD,QAAAA,QAAG,aAAa,QAAQ,CAAC,CAAC;CAChF;CACA,OAAO;AACT;;AAGA,SAAgB,mBAAmB,cAAiC,QAAQ,KAAa;CACvF,MAAM,cAAc,mBAAmB,WAAW;CAClD,IAAI,CAAC,aAAa,OAAO;CACzB,OAAOK,YAAAA,QAAO,WAAW,QAAQ,CAAC,CAAC,OAAOL,QAAAA,QAAG,aAAa,WAAW,CAAC,CAAC,CAAC,OAAO,KAAK;AACtF;;AAGA,SAAS,eAAe,SAA8C;CACpE,OAAO,IAAI,IACT,CAAC,GAAG,QAAQ,QAAQ,CAAC,CAAC,SAAS,CAAC,MAAM,WAAW;EAC/C,IAAI,MAAM,YAAY,KAAA,GAAW,OAAO,CAAC,CAAC,MAAM,wBAAwB,CAAU;EAClF,OAAO,MAAM,YAAY,KAAA,IAAY,CAAC,CAAC,MAAM,MAAM,OAAO,CAAU,IAAI,CAAC;CAC3E,CAAC,CACH;AACF;AAEA,MAAM,iBAAiB;AACvB,MAAM,sBAAsB;AAE5B,SAAS,UAAU,OAAe,OAAe,QAAwB;CACvE,MAAM,QAAQ,MAAM,SAAS,OAAO,QAAQ,MAAM;CAClD,MAAM,MAAM,MAAM,QAAQ,CAAC;CAC3B,OAAO,MAAM,SAAS,GAAG,QAAQ,KAAK,MAAM,SAAS,GAAG,CAAC,CAAC,SAAS,MAAM;AAC3E;AAEA,SAAS,UAAU,OAAe,OAAe,QAAwB;CACvE,MAAM,QAAQ,MAAM,SAAS,OAAO,QAAQ,MAAM;CAElD,KAAK,MAAM,KAAM,SAAU,GAAG,OAAO,MAAM,SAAS,CAAC,CAAC,CAAC,QAAQ,OAAO,SAAS,QAAQ,MAAM,MAAM,MAAM,KAAM,GAAI;CACnH,MAAM,OAAO,UAAU,OAAO,OAAO,MAAM,CAAC,CAAC,KAAK;CAClD,OAAO,SAAS,KAAK,IAAI,OAAO,SAAS,MAAM,CAAC;AAClD;;AAGA,SAAS,QAAQ,MAAkC;CACjD,IAAI;CACJ,IAAI,SAAS;CACb,OAAO,SAAS,KAAK,QAAQ;EAC3B,MAAM,QAAQ,KAAK,QAAQ,IAAM,MAAM;EACvC,IAAI,UAAU,IAAI;EAClB,MAAM,SAAS,OAAO,SAAS,KAAK,SAAS,QAAQ,KAAK,CAAC,CAAC,SAAS,MAAM,GAAG,EAAE;EAChF,IAAI,CAAC,OAAO,SAAS,MAAM,KAAK,UAAU,GAAG;EAC7C,MAAM,SAAS,KAAK,SAAS,QAAQ,GAAG,SAAS,SAAS,CAAC,CAAC,CAAC,SAAS,MAAM;EAC5E,MAAM,YAAY,OAAO,QAAQ,GAAG;EACpC,IAAI,OAAO,MAAM,GAAG,SAAS,MAAM,QAAQ,QAAQ,OAAO,MAAM,YAAY,CAAC;EAC7E,UAAU;CACZ;CACA,OAAO;AACT;;;;;;AAOA,SAAS,sBAAsB,SAAiB,aAA2B;CACzE,MAAM,OAAOM,UAAAA,QAAK,WAAWN,QAAAA,QAAG,aAAa,OAAO,CAAC;CACrD,IAAI,SAAS;CACb,IAAI;CACJ,OAAO,SAAS,kBAAkB,KAAK,QAAQ;EAC7C,MAAM,SAAS,KAAK,SAAS,QAAQ,SAAS,cAAc;EAC5D,IAAI,OAAO,OAAO,SAAS,SAAS,CAAC,GAAG;EACxC,MAAM,OAAO,UAAU,QAAQ,KAAK,EAAE;EACtC,MAAM,OAAO,OAAO,aAAa,OAAO,IAAK;EAC7C,MAAM,OAAO,KAAK,SAAS,SAAS,gBAAgB,SAAS,iBAAiB,IAAI;EAClF,UAAU,iBAAiB,KAAK,KAAK,OAAO,cAAc,IAAI;EAC9D,IAAI,SAAS,OAAO,SAAS,KAAK;GAChC,WAAW,SAAS,MAAO,QAAQ,IAAI,KAAK,WAAY,UAAU,MAAM,GAAG,KAAK,MAAM;GACtF;EACF;EACA,IAAI,SAAS,KAAK;EAClB,MAAM,SAAS,UAAU,QAAQ,KAAK,GAAG;EACzC,MAAM,OAAO,aAAa,SAAS,GAAG,OAAO,GAAG,UAAU,QAAQ,GAAG,GAAG,MAAM,UAAU,QAAQ,GAAG,GAAG;EACtG,WAAW,KAAA;EACX,IAAI,SAAS,OAAO,SAAS,QAAQ,SAAS,KAAK;EACnD,MAAM,WAAW,KAAK,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;EAClD,IAAI,aAAa,IAAI;EACrB,MAAM,SAASC,UAAAA,QAAK,QAAQ,aAAa,QAAQ;EACjD,IAAI,CAAC,OAAO,WAAW,GAAG,cAAcA,UAAAA,QAAK,KAAK,GAChD,MAAM,IAAI,MAAM,8BAA8B,QAAQ,qCAAqC,MAAM;EAEnG,IAAI,SAAS,KAAK;GAChB,QAAA,QAAG,UAAU,QAAQ,EAAE,WAAW,KAAK,CAAC;GACxC;EACF;EACA,QAAA,QAAG,UAAUA,UAAAA,QAAK,QAAQ,MAAM,GAAG,EAAE,WAAW,KAAK,CAAC;EACtD,MAAM,cAAc,UAAU,QAAQ,KAAK,CAAC,IAAI,yBAAyB;EACzE,QAAA,QAAG,cAAc,QAAQ,MAAM,EAAE,MAAM,aAAa,MAAQ,IAAM,CAAC;CACrE;AACF;;AAGA,MAAM,2BAA2B;CAAC;CAAgB;CAAwB;AAAkB;;;;;;;;;;;;AAa5F,SAAS,oBACP,kBACA,SACA,cAC8C;CAC9C,MAAM,OAAOI,YAAAA,QACV,WAAW,QAAQ,CAAC,CACpB,OAAOL,QAAAA,QAAG,aAAa,OAAO,CAAC,CAAC,CAChC,OAAO,KAAK,CAAC,GAAG,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAClD,OAAO,KAAK;CACf,MAAM,WAAW,GAAG,0BAA0B,GAAG;CACjD,MAAM,YAAYC,UAAAA,QAAK,KAAK,kBAAkB,2BAA2B,IAAI;CAC7E,MAAM,iBAAiBA,UAAAA,QAAK,KAAK,WAAW,gBAAgB;CAC5D,IAAI,CAACD,QAAAA,QAAG,WAAW,cAAc,GAAG;EAClC,MAAM,YAAY,GAAG,UAAU,GAAG,OAAO,QAAQ,GAAG,EAAE,GAAGK,YAAAA,QAAO,WAAW,EAAE;EAC7E,IAAI;GACF,sBAAsB,SAAS,SAAS;GACxC,MAAM,eAAeJ,UAAAA,QAAK,KAAK,WAAW,gBAAgB;GAC1D,IAAI,CAACD,QAAAA,QAAG,WAAW,YAAY,GAAG,MAAM,IAAI,MAAM,mDAAmD,SAAS;GAC9G,MAAM,WAAoB,KAAK,MAAMA,QAAAA,QAAG,aAAa,cAAc,MAAM,CAAC;GAC1E,IAAI,CAAC,SAAS,QAAQ,GAAG,MAAM,IAAI,MAAM,2DAA2D,SAAS;GAC7G,OAAO,SAAS;GAChB,KAAK,MAAM,SAAS,0BAA0B;IAC5C,IAAI,CAAC,SAAS,SAAS,MAAM,GAAG;IAChC,MAAM,WAAW,EAAE,GAAG,SAAS,OAAO;IACtC,KAAK,MAAM,QAAQ,OAAO,KAAK,QAAQ,GACrC,IAAI,aAAa,IAAI,IAAI,GAAG,SAAS,QAAQ;IAE/C,SAAS,SAAS;GACpB;GACA,QAAA,QAAG,cAAc,cAAc,GAAG,KAAK,UAAU,UAAU,MAAM,CAAC,EAAE,GAAG;GACvE,IAAI;IACF,QAAA,QAAG,WAAW,WAAW,SAAS;GACpC,SAAS,OAAO;IAEd,IAAI,CAACA,QAAAA,QAAG,WAAW,cAAc,GAAG,MAAM;GAC5C;EACF,UAAU;GACR,QAAA,QAAG,OAAO,WAAW;IAAE,WAAW;IAAM,OAAO;GAAK,CAAC;EACvD;CACF;CACA,MAAM,SAAS,YAAY,KAAK,MAAMA,QAAAA,QAAG,aAAa,gBAAgB,MAAM,CAAC,CAAC;CAE9E,OAAO;EAAE;EAAU,cADE,yBAAyB,SAAS,UAAU,OAAO,KAAK,YAAY,OAAO,MAAM,CAAC,CAC3D,CAAC,CAAC,QAAQ,SAAS,aAAa,IAAI,IAAI,CAAC;CAAE;AACzF;;;;;;AAOA,SAAS,qBACP,kBACA,SACA,OACwB;CACxB,MAAM,eAAe,IAAI,IACvB,CAAC,GAAG,QAAQ,QAAQ,CAAC,CAAC,SAAS,CAAC,MAAM,WAAY,MAAM,YAAY,KAAA,IAAY,CAAC,IAAI,CAAC,IAAI,CAAE,CAC9F;CACA,MAAM,SAAiC,CAAC;CACxC,MAAM,UAAU,CAAC,GAAG,KAAK,CAAC,CAAC,QAAQ,SAAS,aAAa,IAAI,IAAI,CAAC;CAClE,OAAO,QAAQ,SAAS,GAAG;EACzB,MAAM,OAAO,QAAQ,MAAM;EAC3B,IAAI,OAAO,OAAO,QAAQ,IAAI,GAAG;EACjC,MAAM,EAAE,UAAU,iBAAiB,oBACjC,kBACA,QAAQ,SAAS,IAAI,IAAI,CAAC,CAAE,SAC5B,YACF;EACA,OAAO,QAAQ;EACf,QAAQ,KAAK,GAAG,YAAY;CAC9B;CACA,OAAO;AACT;;;;;;AAOA,SAAgB,2BAA2B,kBAAoC;CAC7E,MAAM,mBAAmBC,UAAAA,QAAK,KAAK,kBAAkB,yBAAyB;CAC9E,IAAI,CAACD,QAAAA,QAAG,WAAW,gBAAgB,GAAG,OAAO,CAAC;CAC9C,MAAM,EAAE,aAAa,oBAAoBC,UAAAA,QAAK,KAAK,kBAAkB,gBAAgB,CAAC;CACtF,MAAM,OAAO,IAAI,KAAK,WAAW,SAAS,UAAU,KAAK,CAAC,EAAA,CAAG,KAAK,aAAaA,UAAAA,QAAK,SAAS,QAAQ,CAAC,CAAC;CACvG,OAAOD,QAAAA,QACJ,YAAY,gBAAgB,CAAC,CAC7B,QAAQ,UAAU,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CACnC,KAAK,UAAU;EACd,QAAA,QAAG,OAAOC,UAAAA,QAAK,KAAK,kBAAkB,KAAK,GAAG;GAAE,WAAW;GAAM,OAAO;EAAK,CAAC;EAC9E,OAAO;CACT,CAAC;AACL;;AAGA,SAAS,wBAAwB,WAAuD;CACtF,MAAM,YAAY,UAAU,QAAQ,KAAK,UAAU,WAAW,GAAG,IAAI,IAAI,CAAC;CAC1E,IAAI,cAAc,IAAI,OAAO,EAAE,OAAA,GAAMC,oCAAAA,sBAAAA,CAAsB,SAAS,CAAC,CAAC,KAAK;CAC3E,OAAO;EAAE,MAAM,UAAU,MAAM,GAAG,SAAS;EAAG,SAAS,UAAU,MAAM,YAAY,CAAC;CAAE;AACxF;AAEA,SAAS,WACP,YACA,SACA,SACA,6BAA6B,OACnB;CACV,MAAM,QAAQ,CAAC,GAAG,IAAI,IAAI,WAAW,KAAK,eAAA,GAAcA,oCAAAA,sBAAAA,CAAsB,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC;CAC/F,IAAI,4BACG;OAAA,IAAI,QAAQ,GAAG,QAAQ,MAAM,QAAQ,SAAS,GACjD,KAAK,MAAM,cAAc,QAAQ,SAAS,IAAI,MAAM,MAAO,CAAC,EAAE,gBAAgB,CAAC,GAC7E,IAAI,CAAC,MAAM,SAAS,UAAU,GAAG,MAAM,KAAK,UAAU;CAAA;CAI5D,OAAO,MAAM,KAAK,SAAS;EACzB,MAAM,SAAS,QAAQ,IAAI,IAAI;EAC/B,OAAO,GAAG,oBAAoB,OAAO,SAAS,IAAI,WAAW;CAC/D,CAAC;AACH;AAEA,SAAS,UAAU,OAAe,MAAsB;CACtD,OAAO,GAAG,MAAM,GAAG,OAAO,UAAU,IAAI,KAAK;AAC/C;;AAGA,SAAS,sBAAsB,kBAA0B,MAAkC;CACzF,MAAM,eAAeD,UAAAA,QAAK,KAAK,kBAAkB,cAAc,MAAM,gBAAgB;CACrF,IAAI,CAACD,QAAAA,QAAG,WAAW,YAAY,GAAG,OAAO,KAAA;CACzC,IAAI;EACF,MAAM,SAAkB,KAAK,MAAMA,QAAAA,QAAG,aAAa,cAAc,MAAM,CAAC;EACxE,OAAO,SAAS,MAAM,KAAK,OAAO,OAAO,YAAY,WAAW,OAAO,UAAU,KAAA;CACnF,QAAQ;EAGN;CACF;AACF;AAEA,SAAS,UAAU,OAAyB;CAC1C,OAAO,OAAO,UAAU,YAAY,UAAU,OAAQ,MAA6B,OAAO,KAAA;AAC5F;;;;;AAMA,eAAe,wBACb,SACA,SACA,YACe;CACf,IAAI;EACF,MAAM,QAAQ,OAAO;CACvB,SAAS,OAAO;EACd,MAAM,OAAO,UAAU,KAAK;EAC5B,IAAI,OAAO,SAAS,YAAY,CAAC,sBAAsB,IAAI,IAAI,GAAG,MAAM;EACxE,aAAa,gCAAgC,KAAK,qCAAqC;EACvF,IAAI;GACF,MAAM,QAAQ;IAAE,GAAG;IAAS,eAAe;IAAO,SAAS;GAAK,CAAC;EACnE,QAAQ;GAGN,MAAM;EACR;CACF;AACF;;;;;;;;AAgBA,eAAe,eACb,kBACA,SACA,kBACA,YAC4D;CAC5D,MAAM,UAAU,QACb,KAAK,YAAY;EAChB,MAAM,YAAY,MAAM;EACxB,MAAM,sBAAsB,kBAAkB,YAAY,MAAM,CAAC;CACnE,EAAE,CAAC,CACF,QAAQ,UAAmD,MAAM,SAAS,KAAA,CAAS;CACtF,MAAM,UAA4B,MAAM,QAAQ,IAC9C,QAAQ,IAAI,OAAO,UAAU;EAC3B,IAAI;GACF,OAAO;IAAE,GAAG;IAAO,IAAI,MAAM,iBAAiB,MAAM,IAAI;GAAE;EAC5D,SAAS,OAAO;GACd,OAAO;IAAE,GAAG;IAAO,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,EAAA,CAAG,MAAM,IAAI,CAAC,CAAC;GAAG;EACtG;CACF,CAAC,CACH;CAEA,MAAM,UAAgC,CAAC;CACvC,MAAM,YAAsB,CAAC;CAC7B,KAAK,MAAM,SAAS,SAAS;EAC3B,IAAI,MAAM,OAAO,KAAA,GAAW;GAC1B,UAAU,KAAK,MAAM,IAAI;GACzB,aAAa,QAAQ,MAAM,KAAK,GAAG,MAAM,KAAK,IAAI,MAAM,WAAW,wBAAwB;GAC3F;EACF;EACA,IAAI,MAAM,OAAO,MAAM,MAAM;EAC7B,QAAQ,KAAK;GAAE,MAAM,MAAM;GAAM,MAAM,MAAM;GAAM,IAAI,MAAM;EAAG,CAAC;EACjE,aAAa,GAAG,MAAM,KAAK,GAAG,MAAM,KAAK,MAAM,MAAM,IAAI;CAC3D;CACA,OAAO;EAAE;EAAS;CAAU;AAC9B;;;;;;;;;;;;;;AAeA,eAAsB,oBACpB,SACA,eAAkD,CAAC,GACtB;CAC7B,MAAM,cAAc,QAAQ,eAAe,QAAQ;CACnD,MAAM,gBAAgB,YAAY,QAAQO,QAAAA,QAAG,QAAQ;CACrD,MAAM,UAAA,GAASC,qCAAAA,gBAAAA,CAAgB,eAAe,WAAW;CACzD,MAAM,oBAAA,GAAmBC,qCAAAA,mBAAAA,CAAmB,eAAe,WAAW;CACtE,MAAM,YAAY,aAAa,aAAaC,8CAAAA,qBAAqB,QAAQ,UAAU,WAAW;CAC9F,MAAM,aAAa,4BAA4B,QAAQ,QAAQ,QAAQ,MAAM;CAC7E,MAAM,UAAU,WAAW,QAAQ,cAAc,sBAAsB,WAAW,SAAS,MAAM,KAAA,CAAS;CAC1G,MAAM,WAAW,wBAAwB,gBAAgB;CACzD,MAAM,UAAU,WAAW,QACxB,cAAc,QAAQ,SAAS,SAAS,KAAK,SAAS,KAAA,GAAIR,oCAAAA,sBAAAA,CAAsB,SAAS,CAAC,CAAC,IAAI,CAClG;CACA,MAAM,aAAa,QAAQ,cAAc,CAAC,EAAA,CAAG,IAAI,uBAAuB;CACxE,IAAI,QAAQ,WAAW,KAAK,UAAU,WAAW,KAAK,QAAQ,kBAAkB,MAC9E,OAAO;EAAE,WAAW,CAAC;EAAG,SAAS,CAAC;EAAG,WAAW,CAAC;CAAE;CAGrD,MAAM,UAAU,mBAAmB,mBAAmB,WAAW,CAAC;CAClE,MAAM,OAAO,eAAe,OAAO;CACnC,KAAK,MAAM,EAAE,MAAM,aAAa,WAC9B,IAAI,YAAY,KAAA,KAAa,QAAQ,SAAS,IAAI,IAAI,CAAC,EAAE,YAAY,KAAA,GAAW,KAAK,IAAI,MAAM,OAAO;CAGxG,MAAM,mBAAmB,UACtB,QAAQ,EAAE,MAAM,cAAc;EAC7B,MAAM,YAAY,sBAAsB,kBAAkB,IAAI;EAC9D,MAAM,QAAQ,QAAQ,SAAS,IAAI,IAAI;EACvC,MAAM,WAAW,OAAO,YAAY,KAAA,IAAY,UAAU,MAAM;EAChE,OAAO,cAAc,KAAA,KAAc,aAAa,KAAA,KAAa,cAAc;CAC7E,CAAC,CAAC,CACD,KAAK,EAAE,WAAW,IAAI;CACzB,MAAM,iBAAiB,WAAW,CAAC,GAAG,SAAS,GAAG,gBAAgB,GAAG,SAAS,IAAI;CAClF,MAAM,UAAU,WAAW,CAAC,GAAG,SAAS,GAAG,UAAU,KAAK,EAAE,WAAW,IAAI,CAAC,GAAG,SAAS,MAAM,IAAI;CAClG,MAAM,eAAe,QAAQ,SAAS,iBAAiB;CAGvD,MAAM,6BAAa,IAAI,IAAI,CACzB,GAAG,QAAQ,SAAS,KAAK,GACzB,GAAG,UAAU,QAAQ,EAAE,cAAc,YAAY,KAAA,CAAS,CAAC,CAAC,KAAK,EAAE,WAAW,IAAI,CACpF,CAAC;CACD,MAAM,kBAAkB,QAAQ,QAAQ,WAAW,CAAC,WAAW,IAAI,YAAY,MAAM,CAAC,CAAC;CACvF,MAAM,EAAE,SAAS,cAAc,QAAQ,UACnC,MAAM,eACJ,kBACA,iBACA,aAAa,sBAAsB,UAAA,GAASS,mCAAAA,cAAAA,CAAc,MAAM;EAAE,KAAK;EAAkB;CAAO,CAAC,IACjG,QAAQ,UACV,IACA;EAAE,SAAS,CAAC;EAAG,WAAW,CAAC;CAAE;CACjC,MAAM,UAAU,IAAI,IAClB,QAAQ,SAAS,WAAW;EAC1B,MAAM,SAAS,KAAK,IAAI,YAAY,MAAM,CAAC;EAC3C,OAAO,SAAS,CAAC,CAAC,YAAY,MAAM,GAAG,MAAM,CAAU,IAAI,CAAC;CAC9D,CAAC,CACH;CACA,KAAK,MAAM,UAAU,SAAS,QAAQ,IAAI,OAAO,MAAM,OAAO,EAAE;CAIhE,MAAM,kBAAkB,6BACtB,kBACA,SACA,SAJa,qBAAqB,kBAAkB,yBAAS,IADvC,IAAI,CAAC,GAAG,QAAQ,IAAI,WAAW,GAAG,GAAI,QAAQ,kBAAkB,OAAO,CAAC,IAAI,QAAS,CACpC,CAKlE,GACL,QAAQ,kBAAkB,IAC5B;CACA,IAAI,iBAAiB,KAAK,CAAC,iBAAiB,OAAO;EAAE,WAAW,CAAC;EAAG,SAAS,CAAC;EAAG;CAAU;CAE3F,QAAQ,aACN,cACE,QAAQ,SAAS,IACb,UAAU,QAAQ,QAAQ,QAAQ,IAClC,eAAe,IACb,UAAU,cAAc,iBAAiB,IACzC,wBAEV;CACA,IAAI;EAEF,MAAM,wBACJ,aAAa,WAAWC,mCAAAA,wBACxB;GACE,KAAK;GACL;GAEA,eAAe,QAAQ,YAAY;GACnC,MAAM,SAAS,UAAU;IACvB,IAAI,UAAU,QAAQ,QAAQ,aAAa,OAAO;GACpD;EACF,GACA,QAAQ,UACV;CACF,SAAS,OAAO;EAEd,MAAM,IAAI,MAAM,6CADE,kBAAkB,UAAU,eAAA,CACwB,KAAK,IAAI,KAAK,EAAE,OAAO,MAAM,CAAC;CACtG;CAEA,MAAM,aAAa,QAAQ,QAAQ,cAAc,CAAC,sBAAsB,WAAW,SAAS,CAAC,EAAE,MAAM;CACrG,IAAI,WAAW,SAAS,GACtB,MAAM,IAAI,MACR,6EAA6E,WAAW,KAAK,IAAI,GACnG;CAEF,OAAO;EAAE,WAAW;EAAgB;EAAS;CAAU;AACzD"}
@@ -0,0 +1,74 @@
1
+ import { ExtensionLayerResolvers } from "../../../builders/cli/extensionAssembler/index.mjs";
2
+ import { MajorModesConfig } from "@agimon-ai/po-config/majorModes";
3
+ import { InstallRuntimePackagesOptions } from "@agimon-ai/po-core/runtimePackages";
4
+ //#region src/composition/layerPackageInstaller/index.d.ts
5
+ export interface EnsureLayerPackagesOptions {
6
+ /**
7
+ * The Po root whose layers name the packages. Its own node_modules chain is
8
+ * resolved first; what it cannot provide is installed into the one runtime
9
+ * every root shares, `<po home>/runtime`.
10
+ */
11
+ repoRoot: string;
12
+ config: MajorModesConfig;
13
+ layers: readonly string[];
14
+ environment?: NodeJS.ProcessEnv;
15
+ /**
16
+ * Move every managed package to its newest published version.
17
+ *
18
+ * Launch installs what a selection needs and nothing more, so a session never
19
+ * pays for a registry round trip. Sync is the explicit maintenance command and
20
+ * is the only caller that asks for this.
21
+ */
22
+ refresh?: boolean;
23
+ /**
24
+ * Packages installed into the runtime whatever the root resolves itself, such as the
25
+ * catalogue's `install` list. A `name@version` specifier pins that exact version; a
26
+ * catalogue archive for the name still wins. Refresh never moves a pinned name.
27
+ */
28
+ specifiers?: readonly string[];
29
+ /**
30
+ * Make the runtime manifest declare exactly this run's packages (the specifiers, the
31
+ * selected names and their catalogue dependencies), so pruning can drop anything else.
32
+ * Without it the manifest only grows.
33
+ */
34
+ exactManifest?: boolean;
35
+ /** Receives one human-readable line per package decision. */
36
+ onProgress?: (message: string) => void;
37
+ }
38
+ export interface LayerPackageInstallerDependencies {
39
+ /** Install seam; the default installs `<po home>/runtime` with upm. */
40
+ install?: (options: InstallRuntimePackagesOptions) => Promise<unknown>;
41
+ resolvers?: ExtensionLayerResolvers;
42
+ /** Registry lookup seam; the default resolves the newest allowed version with upm. */
43
+ publishedVersion?: (name: string) => Promise<string>;
44
+ }
45
+ /** One managed package moving from the installed version to the newest published one. */
46
+ export interface LayerPackageUpdate {
47
+ name: string;
48
+ from: string;
49
+ to: string;
50
+ }
51
+ export interface LayerPackageResult {
52
+ /** Sources installed because a configured extension could not be resolved. */
53
+ installed: string[];
54
+ /** Packages this run moved to a newer published version. */
55
+ updated: LayerPackageUpdate[];
56
+ /** Packages left at the installed version because the registry could not be read. */
57
+ unchecked: string[];
58
+ }
59
+ /**
60
+ * Installs the selected layer packages a root cannot resolve into the shared runtime,
61
+ * `<po home>/runtime`, and verifies they now resolve.
62
+ *
63
+ * The runtime manifest is the union of what every root asked for. A root adds the
64
+ * packages it is missing; a package it already resolves from its own node_modules stays
65
+ * out unless an earlier run put it there. One name has one version: an exact target
66
+ * (a sync update, a catalog archive or registry pin) replaces the declared range, last
67
+ * writer wins, and a plain `*` never replaces a range already declared.
68
+ *
69
+ * `specifiers` and `exactManifest` only add behaviour: without them, and without a
70
+ * catalogue, a run behaves as it always has.
71
+ */
72
+ export declare function ensureLayerPackages(options: EnsureLayerPackagesOptions, dependencies?: LayerPackageInstallerDependencies): Promise<LayerPackageResult>;
73
+ //#endregion
74
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../../src/composition/layerPackageInstaller/index.ts"],"mappings":";;;;iBA6DiB;;;;;;EAMf;EACA,QAAQ;EACR;EACA,cAAc,OAAO;;;;;;;;EAQrB;;;;;;EAMA;;;;;;EAMA;;EAEA,cAAc;;iBAGC;;EAEf,WAAW,SAAS,kCAAkC;EACtD,YAAY;;EAEZ,oBAAoB,iBAAiB;;;iBAItB;EACf;EACA;EACA;;iBAGe;;EAEf;;EAEA,SAAS;;EAET;;;;;;;;;;;;;;;wBA0nBoB,oBACpB,SAAS,4BACT,eAAc,oCACb,QAAQ"}