@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":["os","globalDoomConfigDirectory","path","resolveDoomConfigurationRoot","HARNESS_STATE_POINTER","PO_MAJOR_MODE_ENV","PO_DOMAINS_ENV","PO_PROFILE_ENV","SyncProgress","formatSyncResult","loadMajorModesConfigLenient","missingLayerPackageSpecifiers","createLayerResolvers","globalWebPluginRoots","readGlobalWebBuildStatus","readGlobalNativeBuildStatus","loadDoomConfigLenient","runSyncService","syncParentPid","syncExitCode"],"sources":["../../../../../src/cli/commands/sync/index.ts"],"sourcesContent":["import fs from 'node:fs';\nimport os from 'node:os';\nimport path from 'node:path';\n\nimport { globalDoomConfigDirectory } from '@agimon-ai/po-config/config';\nimport { loadMajorModesConfigLenient } from '@agimon-ai/po-config/majorModes';\nimport type { ConfigDiagnostic } from '@agimon-ai/po-config/types';\n\nimport { createLayerResolvers } from '../../../builders/cli/extensionAssembler';\nimport { readGlobalNativeBuildStatus } from '../../../builders/native';\nimport { syncParentPid } from '../../../builders/server/backgroundSync';\nimport { readGlobalWebBuildStatus } from '../../../builders/web';\nimport { HARNESS_STATE_POINTER } from '../../../composition/harnessState';\nimport { missingLayerPackageSpecifiers } from '../../../composition/layerPackageInstaller';\nimport { loadDoomConfigLenient } from '../../../composition/projectTrust';\nimport { resolveDoomConfigurationRoot } from '../../../composition/repository';\nimport {\n formatSyncResult,\n globalWebPluginRoots,\n runSync as runSyncService,\n type SyncDeps,\n type SyncEvent,\n syncExitCode,\n} from '../../../composition/syncService';\nimport { PO_DOMAINS_ENV, PO_MAJOR_MODE_ENV, PO_PROFILE_ENV } from '../../matrixOptions';\nimport { SyncProgress, type SyncProgressOutput, type SyncStepDone } from './presenter';\n\n/**\n * `po sync`: install what every root's configuration names and ensure the global builds.\n *\n * The roots are the Po home, every registered workspace and the current repository, which\n * sync registers unless `--global` is given. The server composes every session live from\n * configuration and installed packages, so sync only makes sure the packages are there\n * and the one global web build (and the MCP app build) for the current plugin set exists.\n * Then, when no other Po host runs, it prunes old builds and the package store.\n */\n\nconst SYNC_COMMAND = 'sync';\nconst CHECK_OPTION = '--check';\nconst GLOBAL_OPTION = '--global';\nconst JSON_OPTION = '--json';\nconst SYNC_OPTIONS = new Set([CHECK_OPTION, GLOBAL_OPTION, JSON_OPTION]);\nconst HARNESS_ROOT_ENV = 'PO_ROOT';\nconst PRIVATE_DIRECTORY_MODE = 0o700;\n\nexport interface SyncRoots {\n globalOnly: boolean;\n globalRoot: string;\n sourceRoot: string;\n targetRoot: string;\n}\n\n/** Resolves the configuration source and the root whose packages are installed. */\nexport function resolveSyncRoots(\n args: readonly string[],\n environment: NodeJS.ProcessEnv = process.env,\n currentDirectory = process.cwd(),\n homeDirectory = environment.HOME ?? os.homedir(),\n): SyncRoots {\n const globalRoot = globalDoomConfigDirectory(homeDirectory);\n const inheritedRoot = environment[HARNESS_ROOT_ENV];\n const sourceRoot = inheritedRoot\n ? path.resolve(inheritedRoot)\n : resolveDoomConfigurationRoot(currentDirectory, homeDirectory);\n const globalOnly = args.includes(GLOBAL_OPTION);\n return { globalOnly, globalRoot, sourceRoot, targetRoot: globalOnly ? globalRoot : sourceRoot };\n}\n\nconst GLOBAL_SCOPE_INHERITED_KEYS = [\n HARNESS_ROOT_ENV,\n HARNESS_STATE_POINTER,\n PO_MAJOR_MODE_ENV,\n PO_DOMAINS_ENV,\n PO_PROFILE_ENV,\n] as const;\n\n/** Removes workspace-only state before a global root is resolved. */\nexport function environmentForSyncScope(environment: NodeJS.ProcessEnv, globalOnly: boolean): NodeJS.ProcessEnv {\n if (!globalOnly) return environment;\n const scoped = { ...environment };\n for (const key of GLOBAL_SCOPE_INHERITED_KEYS) delete scoped[key];\n return scoped;\n}\n\ntype SyncOutput = SyncProgressOutput;\n\nexport interface SyncCommandOptions {\n /** Test/embedding override; normal CLI execution uses the process home. */\n homeDirectory?: string;\n /** Test seams for the install, build and bundle steps and the lock. */\n deps?: Partial<SyncDeps>;\n}\n\n/**\n * Reports the config keys sync chose to ignore.\n *\n * Never fatal. A key nobody recognises is usually a config written for another\n * version of a layer, and refusing to build over it is worse than proceeding\n * without it. The strict check lives in `po doctor`.\n */\nfunction writeConfigDiagnostics(diagnostics: readonly ConfigDiagnostic[], output: SyncOutput): void {\n if (diagnostics.length === 0) return;\n const lines = diagnostics.map((entry) => ` ${entry.filePath}: ${entry.path}`).join('\\n');\n output.write(\n `config: ignored ${String(diagnostics.length)} unsupported key(s); run po doctor for the strict check\\n${lines}\\n`,\n );\n}\n\n/** Renders service events through the step presenter, as text for a terminal or a pipe. */\nfunction textRenderer(output: SyncOutput): (event: SyncEvent) => void {\n const progress = new SyncProgress(output);\n const open = new Map<string, SyncStepDone>();\n return (event) => {\n if (event.type === 'start') open.set(event.label, progress.start(event.label, event.message));\n else if (event.type === 'done') {\n open.get(event.label)?.(event.summary);\n open.delete(event.label);\n } else if (event.type === 'line') progress.line(event.label, event.message);\n else output.write(formatSyncResult(event.result));\n };\n}\n\nfunction jsonLine(output: SyncOutput, value: unknown): void {\n output.write(`${JSON.stringify(value)}\\n`);\n}\n\n/**\n * What `--check` and `po doctor` report.\n *\n * Problems are missing packages, in this root and in the global configuration every session\n * also loads, and a missing global web or native build. Warnings are roots the web build leaves out\n * (another admitted workspace whose configuration cannot be composed): worth saying, but\n * not something this sync can fix, so they never make the check fail.\n */\nexport function syncReadiness(\n targetRoot: string,\n homeDirectory: string,\n environment: NodeJS.ProcessEnv,\n): { packages: string[]; web: string[]; native: string[]; warnings: string[] } {\n const missingIn = (root: string): string[] => {\n const config = loadMajorModesConfigLenient(root, homeDirectory, environment).config;\n return missingLayerPackageSpecifiers(config, Object.keys(config.layers), createLayerResolvers(root, environment));\n };\n const globalRoot = globalDoomConfigDirectory(homeDirectory);\n const packages = [\n ...missingIn(targetRoot).map((specifier) => `configured package is not installed: ${specifier}`),\n ...(path.resolve(targetRoot) === path.resolve(globalRoot)\n ? []\n : missingIn(globalRoot).map(\n (specifier) => `global package is not installed: ${specifier} (run po sync --global)`,\n )),\n ];\n // Plugin roots resolve from installed packages, so the build key means nothing until they are.\n if (packages.length > 0) return { packages, web: [], native: [], warnings: [] };\n const warnings: string[] = [];\n const pluginRoots = globalWebPluginRoots(targetRoot, homeDirectory, environment, (message) => warnings.push(message));\n const status = readGlobalWebBuildStatus({ poHome: globalRoot, pluginRoots, environment });\n const web =\n status.status === 'missing'\n ? [`global web build ${status.key} is missing`]\n : status.status === 'failed'\n ? [`global web build cannot be resolved: ${status.reason}`]\n : [];\n const nativeStatus = readGlobalNativeBuildStatus({ poHome: globalRoot, pluginRoots });\n const native =\n nativeStatus.status === 'missing'\n ? [`global native build ${nativeStatus.key} is missing`]\n : nativeStatus.status === 'failed'\n ? [`global native build cannot be resolved: ${nativeStatus.reason}`]\n : [];\n return { packages, web, native, warnings };\n}\n\n/**\n * Installs every root's configured packages, then ensures the global web build and the MCP app build.\n *\n * Exit codes: 0 when the sync is ok or had nothing to do, 1 when it failed or only partly\n * succeeded, 75 when another sync holds the lock. With `--json`, each progress event is one\n * JSON line and the final line is the `SyncReport`.\n */\nexport async function synchronize(\n args: string[],\n environment: NodeJS.ProcessEnv = process.env,\n currentDirectory = process.cwd(),\n output: SyncOutput = process.stdout,\n commandOptions: SyncCommandOptions = {},\n): Promise<number> {\n const unknown = args.slice(1).filter((argument) => !SYNC_OPTIONS.has(argument));\n if (unknown.length > 0) throw new Error(`Unknown po sync option(s): ${unknown.join(' ')}`);\n const check = args.includes(CHECK_OPTION);\n const json = args.includes(JSON_OPTION);\n const homeDirectory = commandOptions.homeDirectory ?? environment.HOME ?? os.homedir();\n const { globalOnly, globalRoot, sourceRoot, targetRoot } = resolveSyncRoots(\n args,\n environment,\n currentDirectory,\n homeDirectory,\n );\n const scopedEnvironment = environmentForSyncScope(environment, globalOnly);\n if (globalOnly && !check) fs.mkdirSync(globalRoot, { recursive: true, mode: PRIVATE_DIRECTORY_MODE });\n // Sync tolerates keys it does not recognise so a config written against a\n // different version cannot break a build. `po doctor` reports them.\n const modes = loadMajorModesConfigLenient(sourceRoot, homeDirectory, scopedEnvironment);\n const diagnostics = [...loadDoomConfigLenient(sourceRoot, homeDirectory).diagnostics, ...modes.diagnostics];\n if (json && diagnostics.length > 0) jsonLine(output, { type: 'config', diagnostics });\n else if (!json) writeConfigDiagnostics(diagnostics, output);\n\n if (check) {\n const readiness = syncReadiness(targetRoot, homeDirectory, scopedEnvironment);\n for (const warning of readiness.warnings) output.write(`warning: ${warning}\\n`);\n const problems = [...readiness.packages, ...readiness.web, ...readiness.native];\n if (problems.length === 0) {\n output.write('po sync is up to date\\n');\n return 0;\n }\n output.write(`po sync is out of date:\\n${problems.map((entry) => ` ${entry}`).join('\\n')}\\n`);\n return 1;\n }\n\n const report = await runSyncService(\n {\n homeDirectory,\n environment: scopedEnvironment,\n globalRoot,\n // --global covers every root but registers no repository.\n ...(globalOnly ? {} : { repoRoot: sourceRoot }),\n // A host's background job leaves a rerun marker when the lock is held instead of failing.\n origin: syncParentPid(environment) === undefined ? 'cli' : 'background',\n onEvent: json ? (event) => jsonLine(output, event) : textRenderer(output),\n },\n commandOptions.deps,\n );\n if (json) jsonLine(output, { type: 'report', report });\n else for (const error of report.errors) output.write(`error: ${error}\\n`);\n return syncExitCode(report.status);\n}\n\n/** Compatibility API. Executables call the command function directly. */\nexport class SyncCommand {\n readonly name = SYNC_COMMAND;\n private readonly homeDirectory: string | undefined;\n\n constructor(options: SyncCommandOptions = {}) {\n this.homeDirectory = options.homeDirectory;\n }\n\n matches(args: string[]): boolean {\n return args[0] === this.name;\n }\n\n async execute(\n args: string[],\n environment: NodeJS.ProcessEnv = process.env,\n currentDirectory = process.cwd(),\n output: SyncOutput = process.stdout,\n ): Promise<number> {\n return synchronize(args, environment, currentDirectory, output, { homeDirectory: this.homeDirectory });\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { SyncDeps } from "../../../composition/syncService/index.mjs";
2
+ import { SyncProgressOutput } from "./presenter.mjs";
3
+ //#region src/cli/commands/sync/index.d.ts
4
+ type SyncOutput = SyncProgressOutput;
5
+ export interface SyncCommandOptions {
6
+ /** Test/embedding override; normal CLI execution uses the process home. */
7
+ homeDirectory?: string;
8
+ /** Test seams for the install, build and bundle steps and the lock. */
9
+ deps?: Partial<SyncDeps>;
10
+ }
11
+ /** Compatibility API. Executables call the command function directly. */
12
+ export declare class SyncCommand {
13
+ readonly name = "sync";
14
+ private readonly homeDirectory;
15
+ constructor(options?: SyncCommandOptions);
16
+ matches(args: string[]): boolean;
17
+ execute(args: string[], environment?: NodeJS.ProcessEnv, currentDirectory?: string, output?: SyncOutput): Promise<number>;
18
+ }
19
+ //#endregion
20
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../../../../src/cli/commands/sync/index.ts"],"mappings":";;;KAoFK,aAAa;iBAED;;EAEf;;EAEA,OAAO,QAAQ;;;qBAoJJ;WACF;mBACQ;EAEjB,YAAY,UAAS;EAIrB,QAAQ;EAIF,QACJ,gBACA,cAAa,OAAO,YACpB,2BACA,SAAQ,aACP"}
@@ -0,0 +1,206 @@
1
+ import { PO_DOMAINS_ENV, PO_MAJOR_MODE_ENV, PO_PROFILE_ENV } from "../../matrixOptions.mjs";
2
+ import { HARNESS_STATE_POINTER } from "../../../composition/harnessState/index.mjs";
3
+ import { resolveDoomConfigurationRoot } from "../../../composition/repository/index.mjs";
4
+ import { createLayerResolvers } from "../../../../builders/cli/extensionAssembler/index.mjs";
5
+ import { readGlobalWebBuildStatus } from "../../../builders/web/index.mjs";
6
+ import { readGlobalNativeBuildStatus } from "../../../builders/native/index.mjs";
7
+ import { missingLayerPackageSpecifiers } from "../../../composition/layerPackageInstaller/index.mjs";
8
+ import { formatSyncResult, globalWebPluginRoots, runSync, syncExitCode } from "../../../composition/syncService/index.mjs";
9
+ import { syncParentPid } from "../../../builders/server/backgroundSync.mjs";
10
+ import { loadDoomConfigLenient as loadDoomConfigLenient$1 } from "../../../composition/projectTrust/index.mjs";
11
+ import { SyncProgress } from "./presenter.mjs";
12
+ import fs from "node:fs";
13
+ import path from "node:path";
14
+ import os from "node:os";
15
+ import { globalDoomConfigDirectory } from "@agimon-ai/po-config/config";
16
+ import { loadMajorModesConfigLenient } from "@agimon-ai/po-config/majorModes";
17
+ //#region src/cli/commands/sync/index.ts
18
+ /**
19
+ * `po sync`: install what every root's configuration names and ensure the global builds.
20
+ *
21
+ * The roots are the Po home, every registered workspace and the current repository, which
22
+ * sync registers unless `--global` is given. The server composes every session live from
23
+ * configuration and installed packages, so sync only makes sure the packages are there
24
+ * and the one global web build (and the MCP app build) for the current plugin set exists.
25
+ * Then, when no other Po host runs, it prunes old builds and the package store.
26
+ */
27
+ const SYNC_COMMAND = "sync";
28
+ const CHECK_OPTION = "--check";
29
+ const GLOBAL_OPTION = "--global";
30
+ const JSON_OPTION = "--json";
31
+ const SYNC_OPTIONS = /* @__PURE__ */ new Set([
32
+ CHECK_OPTION,
33
+ GLOBAL_OPTION,
34
+ JSON_OPTION
35
+ ]);
36
+ const HARNESS_ROOT_ENV = "PO_ROOT";
37
+ const PRIVATE_DIRECTORY_MODE = 448;
38
+ /** Resolves the configuration source and the root whose packages are installed. */
39
+ function resolveSyncRoots(args, environment = process.env, currentDirectory = process.cwd(), homeDirectory = environment.HOME ?? os.homedir()) {
40
+ const globalRoot = globalDoomConfigDirectory(homeDirectory);
41
+ const inheritedRoot = environment[HARNESS_ROOT_ENV];
42
+ const sourceRoot = inheritedRoot ? path.resolve(inheritedRoot) : resolveDoomConfigurationRoot(currentDirectory, homeDirectory);
43
+ const globalOnly = args.includes(GLOBAL_OPTION);
44
+ return {
45
+ globalOnly,
46
+ globalRoot,
47
+ sourceRoot,
48
+ targetRoot: globalOnly ? globalRoot : sourceRoot
49
+ };
50
+ }
51
+ const GLOBAL_SCOPE_INHERITED_KEYS = [
52
+ HARNESS_ROOT_ENV,
53
+ HARNESS_STATE_POINTER,
54
+ PO_MAJOR_MODE_ENV,
55
+ PO_DOMAINS_ENV,
56
+ PO_PROFILE_ENV
57
+ ];
58
+ /** Removes workspace-only state before a global root is resolved. */
59
+ function environmentForSyncScope(environment, globalOnly) {
60
+ if (!globalOnly) return environment;
61
+ const scoped = { ...environment };
62
+ for (const key of GLOBAL_SCOPE_INHERITED_KEYS) delete scoped[key];
63
+ return scoped;
64
+ }
65
+ /**
66
+ * Reports the config keys sync chose to ignore.
67
+ *
68
+ * Never fatal. A key nobody recognises is usually a config written for another
69
+ * version of a layer, and refusing to build over it is worse than proceeding
70
+ * without it. The strict check lives in `po doctor`.
71
+ */
72
+ function writeConfigDiagnostics(diagnostics, output) {
73
+ if (diagnostics.length === 0) return;
74
+ const lines = diagnostics.map((entry) => ` ${entry.filePath}: ${entry.path}`).join("\n");
75
+ output.write(`config: ignored ${String(diagnostics.length)} unsupported key(s); run po doctor for the strict check\n${lines}\n`);
76
+ }
77
+ /** Renders service events through the step presenter, as text for a terminal or a pipe. */
78
+ function textRenderer(output) {
79
+ const progress = new SyncProgress(output);
80
+ const open = /* @__PURE__ */ new Map();
81
+ return (event) => {
82
+ if (event.type === "start") open.set(event.label, progress.start(event.label, event.message));
83
+ else if (event.type === "done") {
84
+ open.get(event.label)?.(event.summary);
85
+ open.delete(event.label);
86
+ } else if (event.type === "line") progress.line(event.label, event.message);
87
+ else output.write(formatSyncResult(event.result));
88
+ };
89
+ }
90
+ function jsonLine(output, value) {
91
+ output.write(`${JSON.stringify(value)}\n`);
92
+ }
93
+ /**
94
+ * What `--check` and `po doctor` report.
95
+ *
96
+ * Problems are missing packages, in this root and in the global configuration every session
97
+ * also loads, and a missing global web or native build. Warnings are roots the web build leaves out
98
+ * (another admitted workspace whose configuration cannot be composed): worth saying, but
99
+ * not something this sync can fix, so they never make the check fail.
100
+ */
101
+ function syncReadiness(targetRoot, homeDirectory, environment) {
102
+ const missingIn = (root) => {
103
+ const config = loadMajorModesConfigLenient(root, homeDirectory, environment).config;
104
+ return missingLayerPackageSpecifiers(config, Object.keys(config.layers), createLayerResolvers(root, environment));
105
+ };
106
+ const globalRoot = globalDoomConfigDirectory(homeDirectory);
107
+ const packages = [...missingIn(targetRoot).map((specifier) => `configured package is not installed: ${specifier}`), ...path.resolve(targetRoot) === path.resolve(globalRoot) ? [] : missingIn(globalRoot).map((specifier) => `global package is not installed: ${specifier} (run po sync --global)`)];
108
+ if (packages.length > 0) return {
109
+ packages,
110
+ web: [],
111
+ native: [],
112
+ warnings: []
113
+ };
114
+ const warnings = [];
115
+ const pluginRoots = globalWebPluginRoots(targetRoot, homeDirectory, environment, (message) => warnings.push(message));
116
+ const status = readGlobalWebBuildStatus({
117
+ poHome: globalRoot,
118
+ pluginRoots,
119
+ environment
120
+ });
121
+ const web = status.status === "missing" ? [`global web build ${status.key} is missing`] : status.status === "failed" ? [`global web build cannot be resolved: ${status.reason}`] : [];
122
+ const nativeStatus = readGlobalNativeBuildStatus({
123
+ poHome: globalRoot,
124
+ pluginRoots
125
+ });
126
+ return {
127
+ packages,
128
+ web,
129
+ native: nativeStatus.status === "missing" ? [`global native build ${nativeStatus.key} is missing`] : nativeStatus.status === "failed" ? [`global native build cannot be resolved: ${nativeStatus.reason}`] : [],
130
+ warnings
131
+ };
132
+ }
133
+ /**
134
+ * Installs every root's configured packages, then ensures the global web build and the MCP app build.
135
+ *
136
+ * Exit codes: 0 when the sync is ok or had nothing to do, 1 when it failed or only partly
137
+ * succeeded, 75 when another sync holds the lock. With `--json`, each progress event is one
138
+ * JSON line and the final line is the `SyncReport`.
139
+ */
140
+ async function synchronize(args, environment = process.env, currentDirectory = process.cwd(), output = process.stdout, commandOptions = {}) {
141
+ const unknown = args.slice(1).filter((argument) => !SYNC_OPTIONS.has(argument));
142
+ if (unknown.length > 0) throw new Error(`Unknown po sync option(s): ${unknown.join(" ")}`);
143
+ const check = args.includes(CHECK_OPTION);
144
+ const json = args.includes(JSON_OPTION);
145
+ const homeDirectory = commandOptions.homeDirectory ?? environment.HOME ?? os.homedir();
146
+ const { globalOnly, globalRoot, sourceRoot, targetRoot } = resolveSyncRoots(args, environment, currentDirectory, homeDirectory);
147
+ const scopedEnvironment = environmentForSyncScope(environment, globalOnly);
148
+ if (globalOnly && !check) fs.mkdirSync(globalRoot, {
149
+ recursive: true,
150
+ mode: PRIVATE_DIRECTORY_MODE
151
+ });
152
+ const modes = loadMajorModesConfigLenient(sourceRoot, homeDirectory, scopedEnvironment);
153
+ const diagnostics = [...loadDoomConfigLenient$1(sourceRoot, homeDirectory).diagnostics, ...modes.diagnostics];
154
+ if (json && diagnostics.length > 0) jsonLine(output, {
155
+ type: "config",
156
+ diagnostics
157
+ });
158
+ else if (!json) writeConfigDiagnostics(diagnostics, output);
159
+ if (check) {
160
+ const readiness = syncReadiness(targetRoot, homeDirectory, scopedEnvironment);
161
+ for (const warning of readiness.warnings) output.write(`warning: ${warning}\n`);
162
+ const problems = [
163
+ ...readiness.packages,
164
+ ...readiness.web,
165
+ ...readiness.native
166
+ ];
167
+ if (problems.length === 0) {
168
+ output.write("po sync is up to date\n");
169
+ return 0;
170
+ }
171
+ output.write(`po sync is out of date:\n${problems.map((entry) => ` ${entry}`).join("\n")}\n`);
172
+ return 1;
173
+ }
174
+ const report = await runSync({
175
+ homeDirectory,
176
+ environment: scopedEnvironment,
177
+ globalRoot,
178
+ ...globalOnly ? {} : { repoRoot: sourceRoot },
179
+ origin: syncParentPid(environment) === void 0 ? "cli" : "background",
180
+ onEvent: json ? (event) => jsonLine(output, event) : textRenderer(output)
181
+ }, commandOptions.deps);
182
+ if (json) jsonLine(output, {
183
+ type: "report",
184
+ report
185
+ });
186
+ else for (const error of report.errors) output.write(`error: ${error}\n`);
187
+ return syncExitCode(report.status);
188
+ }
189
+ /** Compatibility API. Executables call the command function directly. */
190
+ var SyncCommand = class {
191
+ name = SYNC_COMMAND;
192
+ homeDirectory;
193
+ constructor(options = {}) {
194
+ this.homeDirectory = options.homeDirectory;
195
+ }
196
+ matches(args) {
197
+ return args[0] === this.name;
198
+ }
199
+ async execute(args, environment = process.env, currentDirectory = process.cwd(), output = process.stdout) {
200
+ return synchronize(args, environment, currentDirectory, output, { homeDirectory: this.homeDirectory });
201
+ }
202
+ };
203
+ //#endregion
204
+ export { SyncCommand, environmentForSyncScope, resolveSyncRoots, syncReadiness, synchronize };
205
+
206
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":["loadDoomConfigLenient","runSyncService"],"sources":["../../../../../src/cli/commands/sync/index.ts"],"sourcesContent":["import fs from 'node:fs';\nimport os from 'node:os';\nimport path from 'node:path';\n\nimport { globalDoomConfigDirectory } from '@agimon-ai/po-config/config';\nimport { loadMajorModesConfigLenient } from '@agimon-ai/po-config/majorModes';\nimport type { ConfigDiagnostic } from '@agimon-ai/po-config/types';\n\nimport { createLayerResolvers } from '../../../builders/cli/extensionAssembler';\nimport { readGlobalNativeBuildStatus } from '../../../builders/native';\nimport { syncParentPid } from '../../../builders/server/backgroundSync';\nimport { readGlobalWebBuildStatus } from '../../../builders/web';\nimport { HARNESS_STATE_POINTER } from '../../../composition/harnessState';\nimport { missingLayerPackageSpecifiers } from '../../../composition/layerPackageInstaller';\nimport { loadDoomConfigLenient } from '../../../composition/projectTrust';\nimport { resolveDoomConfigurationRoot } from '../../../composition/repository';\nimport {\n formatSyncResult,\n globalWebPluginRoots,\n runSync as runSyncService,\n type SyncDeps,\n type SyncEvent,\n syncExitCode,\n} from '../../../composition/syncService';\nimport { PO_DOMAINS_ENV, PO_MAJOR_MODE_ENV, PO_PROFILE_ENV } from '../../matrixOptions';\nimport { SyncProgress, type SyncProgressOutput, type SyncStepDone } from './presenter';\n\n/**\n * `po sync`: install what every root's configuration names and ensure the global builds.\n *\n * The roots are the Po home, every registered workspace and the current repository, which\n * sync registers unless `--global` is given. The server composes every session live from\n * configuration and installed packages, so sync only makes sure the packages are there\n * and the one global web build (and the MCP app build) for the current plugin set exists.\n * Then, when no other Po host runs, it prunes old builds and the package store.\n */\n\nconst SYNC_COMMAND = 'sync';\nconst CHECK_OPTION = '--check';\nconst GLOBAL_OPTION = '--global';\nconst JSON_OPTION = '--json';\nconst SYNC_OPTIONS = new Set([CHECK_OPTION, GLOBAL_OPTION, JSON_OPTION]);\nconst HARNESS_ROOT_ENV = 'PO_ROOT';\nconst PRIVATE_DIRECTORY_MODE = 0o700;\n\nexport interface SyncRoots {\n globalOnly: boolean;\n globalRoot: string;\n sourceRoot: string;\n targetRoot: string;\n}\n\n/** Resolves the configuration source and the root whose packages are installed. */\nexport function resolveSyncRoots(\n args: readonly string[],\n environment: NodeJS.ProcessEnv = process.env,\n currentDirectory = process.cwd(),\n homeDirectory = environment.HOME ?? os.homedir(),\n): SyncRoots {\n const globalRoot = globalDoomConfigDirectory(homeDirectory);\n const inheritedRoot = environment[HARNESS_ROOT_ENV];\n const sourceRoot = inheritedRoot\n ? path.resolve(inheritedRoot)\n : resolveDoomConfigurationRoot(currentDirectory, homeDirectory);\n const globalOnly = args.includes(GLOBAL_OPTION);\n return { globalOnly, globalRoot, sourceRoot, targetRoot: globalOnly ? globalRoot : sourceRoot };\n}\n\nconst GLOBAL_SCOPE_INHERITED_KEYS = [\n HARNESS_ROOT_ENV,\n HARNESS_STATE_POINTER,\n PO_MAJOR_MODE_ENV,\n PO_DOMAINS_ENV,\n PO_PROFILE_ENV,\n] as const;\n\n/** Removes workspace-only state before a global root is resolved. */\nexport function environmentForSyncScope(environment: NodeJS.ProcessEnv, globalOnly: boolean): NodeJS.ProcessEnv {\n if (!globalOnly) return environment;\n const scoped = { ...environment };\n for (const key of GLOBAL_SCOPE_INHERITED_KEYS) delete scoped[key];\n return scoped;\n}\n\ntype SyncOutput = SyncProgressOutput;\n\nexport interface SyncCommandOptions {\n /** Test/embedding override; normal CLI execution uses the process home. */\n homeDirectory?: string;\n /** Test seams for the install, build and bundle steps and the lock. */\n deps?: Partial<SyncDeps>;\n}\n\n/**\n * Reports the config keys sync chose to ignore.\n *\n * Never fatal. A key nobody recognises is usually a config written for another\n * version of a layer, and refusing to build over it is worse than proceeding\n * without it. The strict check lives in `po doctor`.\n */\nfunction writeConfigDiagnostics(diagnostics: readonly ConfigDiagnostic[], output: SyncOutput): void {\n if (diagnostics.length === 0) return;\n const lines = diagnostics.map((entry) => ` ${entry.filePath}: ${entry.path}`).join('\\n');\n output.write(\n `config: ignored ${String(diagnostics.length)} unsupported key(s); run po doctor for the strict check\\n${lines}\\n`,\n );\n}\n\n/** Renders service events through the step presenter, as text for a terminal or a pipe. */\nfunction textRenderer(output: SyncOutput): (event: SyncEvent) => void {\n const progress = new SyncProgress(output);\n const open = new Map<string, SyncStepDone>();\n return (event) => {\n if (event.type === 'start') open.set(event.label, progress.start(event.label, event.message));\n else if (event.type === 'done') {\n open.get(event.label)?.(event.summary);\n open.delete(event.label);\n } else if (event.type === 'line') progress.line(event.label, event.message);\n else output.write(formatSyncResult(event.result));\n };\n}\n\nfunction jsonLine(output: SyncOutput, value: unknown): void {\n output.write(`${JSON.stringify(value)}\\n`);\n}\n\n/**\n * What `--check` and `po doctor` report.\n *\n * Problems are missing packages, in this root and in the global configuration every session\n * also loads, and a missing global web or native build. Warnings are roots the web build leaves out\n * (another admitted workspace whose configuration cannot be composed): worth saying, but\n * not something this sync can fix, so they never make the check fail.\n */\nexport function syncReadiness(\n targetRoot: string,\n homeDirectory: string,\n environment: NodeJS.ProcessEnv,\n): { packages: string[]; web: string[]; native: string[]; warnings: string[] } {\n const missingIn = (root: string): string[] => {\n const config = loadMajorModesConfigLenient(root, homeDirectory, environment).config;\n return missingLayerPackageSpecifiers(config, Object.keys(config.layers), createLayerResolvers(root, environment));\n };\n const globalRoot = globalDoomConfigDirectory(homeDirectory);\n const packages = [\n ...missingIn(targetRoot).map((specifier) => `configured package is not installed: ${specifier}`),\n ...(path.resolve(targetRoot) === path.resolve(globalRoot)\n ? []\n : missingIn(globalRoot).map(\n (specifier) => `global package is not installed: ${specifier} (run po sync --global)`,\n )),\n ];\n // Plugin roots resolve from installed packages, so the build key means nothing until they are.\n if (packages.length > 0) return { packages, web: [], native: [], warnings: [] };\n const warnings: string[] = [];\n const pluginRoots = globalWebPluginRoots(targetRoot, homeDirectory, environment, (message) => warnings.push(message));\n const status = readGlobalWebBuildStatus({ poHome: globalRoot, pluginRoots, environment });\n const web =\n status.status === 'missing'\n ? [`global web build ${status.key} is missing`]\n : status.status === 'failed'\n ? [`global web build cannot be resolved: ${status.reason}`]\n : [];\n const nativeStatus = readGlobalNativeBuildStatus({ poHome: globalRoot, pluginRoots });\n const native =\n nativeStatus.status === 'missing'\n ? [`global native build ${nativeStatus.key} is missing`]\n : nativeStatus.status === 'failed'\n ? [`global native build cannot be resolved: ${nativeStatus.reason}`]\n : [];\n return { packages, web, native, warnings };\n}\n\n/**\n * Installs every root's configured packages, then ensures the global web build and the MCP app build.\n *\n * Exit codes: 0 when the sync is ok or had nothing to do, 1 when it failed or only partly\n * succeeded, 75 when another sync holds the lock. With `--json`, each progress event is one\n * JSON line and the final line is the `SyncReport`.\n */\nexport async function synchronize(\n args: string[],\n environment: NodeJS.ProcessEnv = process.env,\n currentDirectory = process.cwd(),\n output: SyncOutput = process.stdout,\n commandOptions: SyncCommandOptions = {},\n): Promise<number> {\n const unknown = args.slice(1).filter((argument) => !SYNC_OPTIONS.has(argument));\n if (unknown.length > 0) throw new Error(`Unknown po sync option(s): ${unknown.join(' ')}`);\n const check = args.includes(CHECK_OPTION);\n const json = args.includes(JSON_OPTION);\n const homeDirectory = commandOptions.homeDirectory ?? environment.HOME ?? os.homedir();\n const { globalOnly, globalRoot, sourceRoot, targetRoot } = resolveSyncRoots(\n args,\n environment,\n currentDirectory,\n homeDirectory,\n );\n const scopedEnvironment = environmentForSyncScope(environment, globalOnly);\n if (globalOnly && !check) fs.mkdirSync(globalRoot, { recursive: true, mode: PRIVATE_DIRECTORY_MODE });\n // Sync tolerates keys it does not recognise so a config written against a\n // different version cannot break a build. `po doctor` reports them.\n const modes = loadMajorModesConfigLenient(sourceRoot, homeDirectory, scopedEnvironment);\n const diagnostics = [...loadDoomConfigLenient(sourceRoot, homeDirectory).diagnostics, ...modes.diagnostics];\n if (json && diagnostics.length > 0) jsonLine(output, { type: 'config', diagnostics });\n else if (!json) writeConfigDiagnostics(diagnostics, output);\n\n if (check) {\n const readiness = syncReadiness(targetRoot, homeDirectory, scopedEnvironment);\n for (const warning of readiness.warnings) output.write(`warning: ${warning}\\n`);\n const problems = [...readiness.packages, ...readiness.web, ...readiness.native];\n if (problems.length === 0) {\n output.write('po sync is up to date\\n');\n return 0;\n }\n output.write(`po sync is out of date:\\n${problems.map((entry) => ` ${entry}`).join('\\n')}\\n`);\n return 1;\n }\n\n const report = await runSyncService(\n {\n homeDirectory,\n environment: scopedEnvironment,\n globalRoot,\n // --global covers every root but registers no repository.\n ...(globalOnly ? {} : { repoRoot: sourceRoot }),\n // A host's background job leaves a rerun marker when the lock is held instead of failing.\n origin: syncParentPid(environment) === undefined ? 'cli' : 'background',\n onEvent: json ? (event) => jsonLine(output, event) : textRenderer(output),\n },\n commandOptions.deps,\n );\n if (json) jsonLine(output, { type: 'report', report });\n else for (const error of report.errors) output.write(`error: ${error}\\n`);\n return syncExitCode(report.status);\n}\n\n/** Compatibility API. Executables call the command function directly. */\nexport class SyncCommand {\n readonly name = SYNC_COMMAND;\n private readonly homeDirectory: string | undefined;\n\n constructor(options: SyncCommandOptions = {}) {\n this.homeDirectory = options.homeDirectory;\n }\n\n matches(args: string[]): boolean {\n return args[0] === this.name;\n }\n\n async execute(\n args: string[],\n environment: NodeJS.ProcessEnv = process.env,\n currentDirectory = process.cwd(),\n output: SyncOutput = process.stdout,\n ): Promise<number> {\n return synchronize(args, environment, currentDirectory, output, { homeDirectory: this.homeDirectory });\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ //#region src/cli/commands/sync/presenter.ts
2
+ /**
3
+ * Step-by-step progress for `po sync`.
4
+ *
5
+ * Sync spends almost all of its wall clock in three places a user cannot see:
6
+ * the registry check, the mode build, and the runtime precompile. A terminal
7
+ * gets a live line that the finished step overwrites, so the transcript stays
8
+ * as short as the existing summary. Anything else (a pipe, CI, the embedded
9
+ * dpi runner) gets one line per completed step and no escape sequences.
10
+ */
11
+ const LABEL_WIDTH = 10;
12
+ const CLEAR_LINE = `${String.fromCharCode(27)}[2K\r`;
13
+ const MILLISECONDS_PER_SECOND = 1e3;
14
+ function formatProgressLine(label, message) {
15
+ return `${`${label}:`.padEnd(LABEL_WIDTH)}${message}`;
16
+ }
17
+ function formatElapsed(milliseconds) {
18
+ return `${(milliseconds / MILLISECONDS_PER_SECOND).toFixed(1)}s`;
19
+ }
20
+ /** Reports sync phases as they run rather than only after everything is done. */
21
+ var SyncProgress = class {
22
+ output;
23
+ now;
24
+ live = false;
25
+ constructor(output, now = Date.now) {
26
+ this.output = output;
27
+ this.now = now;
28
+ }
29
+ /** Opens a timed step and returns the call that closes it. */
30
+ start(label, message) {
31
+ const startedAt = this.now();
32
+ this.drawLive(formatProgressLine(label, `${message}...`));
33
+ return (summary) => {
34
+ this.clearLive();
35
+ this.output.write(`${formatProgressLine(label, `${summary} (${formatElapsed(this.now() - startedAt)})`)}\n`);
36
+ };
37
+ }
38
+ /** Writes a standalone line, such as one package moving to a new version. */
39
+ line(label, message) {
40
+ this.clearLive();
41
+ this.output.write(`${formatProgressLine(label, message)}\n`);
42
+ }
43
+ drawLive(text) {
44
+ if (!this.output.isTTY) return;
45
+ this.output.write(`${CLEAR_LINE}${text}`);
46
+ this.live = true;
47
+ }
48
+ clearLive() {
49
+ if (!this.live) return;
50
+ this.output.write(CLEAR_LINE);
51
+ this.live = false;
52
+ }
53
+ };
54
+ //#endregion
55
+ exports.SyncProgress = SyncProgress;
56
+ exports.formatProgressLine = formatProgressLine;
57
+
58
+ //# sourceMappingURL=presenter.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presenter.cjs","names":[],"sources":["../../../../../src/cli/commands/sync/presenter.ts"],"sourcesContent":["/**\n * Step-by-step progress for `po sync`.\n *\n * Sync spends almost all of its wall clock in three places a user cannot see:\n * the registry check, the mode build, and the runtime precompile. A terminal\n * gets a live line that the finished step overwrites, so the transcript stays\n * as short as the existing summary. Anything else (a pipe, CI, the embedded\n * dpi runner) gets one line per completed step and no escape sequences.\n */\n\nconst LABEL_WIDTH = 10;\nconst ANSI_ESCAPE = String.fromCharCode(0x1b);\nconst CLEAR_LINE = `${ANSI_ESCAPE}[2K\\r`;\nconst MILLISECONDS_PER_SECOND = 1000;\n\nexport interface SyncProgressOutput {\n write: NodeJS.WritableStream['write'];\n isTTY?: boolean;\n}\n\n/** Closes the step a `start` call opened, recording how long it took. */\nexport type SyncStepDone = (summary: string) => void;\n\nexport function formatProgressLine(label: string, message: string): string {\n return `${`${label}:`.padEnd(LABEL_WIDTH)}${message}`;\n}\n\nfunction formatElapsed(milliseconds: number): string {\n return `${(milliseconds / MILLISECONDS_PER_SECOND).toFixed(1)}s`;\n}\n\n/** Reports sync phases as they run rather than only after everything is done. */\nexport class SyncProgress {\n private readonly output: SyncProgressOutput;\n private readonly now: () => number;\n private live = false;\n\n constructor(output: SyncProgressOutput, now: () => number = Date.now) {\n this.output = output;\n this.now = now;\n }\n\n /** Opens a timed step and returns the call that closes it. */\n start(label: string, message: string): SyncStepDone {\n const startedAt = this.now();\n this.drawLive(formatProgressLine(label, `${message}...`));\n return (summary) => {\n this.clearLive();\n this.output.write(`${formatProgressLine(label, `${summary} (${formatElapsed(this.now() - startedAt)})`)}\\n`);\n };\n }\n\n /** Writes a standalone line, such as one package moving to a new version. */\n line(label: string, message: string): void {\n this.clearLive();\n this.output.write(`${formatProgressLine(label, message)}\\n`);\n }\n\n private drawLive(text: string): void {\n if (!this.output.isTTY) return;\n this.output.write(`${CLEAR_LINE}${text}`);\n this.live = true;\n }\n\n private clearLive(): void {\n if (!this.live) return;\n this.output.write(CLEAR_LINE);\n this.live = false;\n }\n}\n"],"mappings":";;;;;;;;;;AAUA,MAAM,cAAc;AAEpB,MAAM,aAAa,GADC,OAAO,aAAa,EACR,EAAE;AAClC,MAAM,0BAA0B;AAUhC,SAAgB,mBAAmB,OAAe,SAAyB;CACzE,OAAO,GAAG,GAAG,MAAM,GAAG,OAAO,WAAW,IAAI;AAC9C;AAEA,SAAS,cAAc,cAA8B;CACnD,OAAO,IAAI,eAAe,wBAAA,CAAyB,QAAQ,CAAC,EAAE;AAChE;;AAGA,IAAa,eAAb,MAA0B;CACxB;CACA;CACA,OAAe;CAEf,YAAY,QAA4B,MAAoB,KAAK,KAAK;EACpE,KAAK,SAAS;EACd,KAAK,MAAM;CACb;;CAGA,MAAM,OAAe,SAA+B;EAClD,MAAM,YAAY,KAAK,IAAI;EAC3B,KAAK,SAAS,mBAAmB,OAAO,GAAG,QAAQ,IAAI,CAAC;EACxD,QAAQ,YAAY;GAClB,KAAK,UAAU;GACf,KAAK,OAAO,MAAM,GAAG,mBAAmB,OAAO,GAAG,QAAQ,IAAI,cAAc,KAAK,IAAI,IAAI,SAAS,EAAE,EAAE,EAAE,GAAG;EAC7G;CACF;;CAGA,KAAK,OAAe,SAAuB;EACzC,KAAK,UAAU;EACf,KAAK,OAAO,MAAM,GAAG,mBAAmB,OAAO,OAAO,EAAE,GAAG;CAC7D;CAEA,SAAiB,MAAoB;EACnC,IAAI,CAAC,KAAK,OAAO,OAAO;EACxB,KAAK,OAAO,MAAM,GAAG,aAAa,MAAM;EACxC,KAAK,OAAO;CACd;CAEA,YAA0B;EACxB,IAAI,CAAC,KAAK,MAAM;EAChB,KAAK,OAAO,MAAM,UAAU;EAC5B,KAAK,OAAO;CACd;AACF"}
@@ -0,0 +1,16 @@
1
+ //#region src/cli/commands/sync/presenter.d.ts
2
+ /**
3
+ * Step-by-step progress for `po sync`.
4
+ *
5
+ * Sync spends almost all of its wall clock in three places a user cannot see:
6
+ * the registry check, the mode build, and the runtime precompile. A terminal
7
+ * gets a live line that the finished step overwrites, so the transcript stays
8
+ * as short as the existing summary. Anything else (a pipe, CI, the embedded
9
+ * dpi runner) gets one line per completed step and no escape sequences.
10
+ */
11
+ export interface SyncProgressOutput {
12
+ write: NodeJS.WritableStream['write'];
13
+ isTTY?: boolean;
14
+ }
15
+ //#endregion
16
+ //# sourceMappingURL=presenter.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presenter.d.mts","names":[],"sources":["../../../../../src/cli/commands/sync/presenter.ts"],"mappings":";;;;;;;;;;iBAeiB;EACf,OAAO,OAAO;EACd"}
@@ -0,0 +1,57 @@
1
+ //#region src/cli/commands/sync/presenter.ts
2
+ /**
3
+ * Step-by-step progress for `po sync`.
4
+ *
5
+ * Sync spends almost all of its wall clock in three places a user cannot see:
6
+ * the registry check, the mode build, and the runtime precompile. A terminal
7
+ * gets a live line that the finished step overwrites, so the transcript stays
8
+ * as short as the existing summary. Anything else (a pipe, CI, the embedded
9
+ * dpi runner) gets one line per completed step and no escape sequences.
10
+ */
11
+ const LABEL_WIDTH = 10;
12
+ const CLEAR_LINE = `${String.fromCharCode(27)}[2K\r`;
13
+ const MILLISECONDS_PER_SECOND = 1e3;
14
+ function formatProgressLine(label, message) {
15
+ return `${`${label}:`.padEnd(LABEL_WIDTH)}${message}`;
16
+ }
17
+ function formatElapsed(milliseconds) {
18
+ return `${(milliseconds / MILLISECONDS_PER_SECOND).toFixed(1)}s`;
19
+ }
20
+ /** Reports sync phases as they run rather than only after everything is done. */
21
+ var SyncProgress = class {
22
+ output;
23
+ now;
24
+ live = false;
25
+ constructor(output, now = Date.now) {
26
+ this.output = output;
27
+ this.now = now;
28
+ }
29
+ /** Opens a timed step and returns the call that closes it. */
30
+ start(label, message) {
31
+ const startedAt = this.now();
32
+ this.drawLive(formatProgressLine(label, `${message}...`));
33
+ return (summary) => {
34
+ this.clearLive();
35
+ this.output.write(`${formatProgressLine(label, `${summary} (${formatElapsed(this.now() - startedAt)})`)}\n`);
36
+ };
37
+ }
38
+ /** Writes a standalone line, such as one package moving to a new version. */
39
+ line(label, message) {
40
+ this.clearLive();
41
+ this.output.write(`${formatProgressLine(label, message)}\n`);
42
+ }
43
+ drawLive(text) {
44
+ if (!this.output.isTTY) return;
45
+ this.output.write(`${CLEAR_LINE}${text}`);
46
+ this.live = true;
47
+ }
48
+ clearLive() {
49
+ if (!this.live) return;
50
+ this.output.write(CLEAR_LINE);
51
+ this.live = false;
52
+ }
53
+ };
54
+ //#endregion
55
+ export { SyncProgress, formatProgressLine };
56
+
57
+ //# sourceMappingURL=presenter.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presenter.mjs","names":[],"sources":["../../../../../src/cli/commands/sync/presenter.ts"],"sourcesContent":["/**\n * Step-by-step progress for `po sync`.\n *\n * Sync spends almost all of its wall clock in three places a user cannot see:\n * the registry check, the mode build, and the runtime precompile. A terminal\n * gets a live line that the finished step overwrites, so the transcript stays\n * as short as the existing summary. Anything else (a pipe, CI, the embedded\n * dpi runner) gets one line per completed step and no escape sequences.\n */\n\nconst LABEL_WIDTH = 10;\nconst ANSI_ESCAPE = String.fromCharCode(0x1b);\nconst CLEAR_LINE = `${ANSI_ESCAPE}[2K\\r`;\nconst MILLISECONDS_PER_SECOND = 1000;\n\nexport interface SyncProgressOutput {\n write: NodeJS.WritableStream['write'];\n isTTY?: boolean;\n}\n\n/** Closes the step a `start` call opened, recording how long it took. */\nexport type SyncStepDone = (summary: string) => void;\n\nexport function formatProgressLine(label: string, message: string): string {\n return `${`${label}:`.padEnd(LABEL_WIDTH)}${message}`;\n}\n\nfunction formatElapsed(milliseconds: number): string {\n return `${(milliseconds / MILLISECONDS_PER_SECOND).toFixed(1)}s`;\n}\n\n/** Reports sync phases as they run rather than only after everything is done. */\nexport class SyncProgress {\n private readonly output: SyncProgressOutput;\n private readonly now: () => number;\n private live = false;\n\n constructor(output: SyncProgressOutput, now: () => number = Date.now) {\n this.output = output;\n this.now = now;\n }\n\n /** Opens a timed step and returns the call that closes it. */\n start(label: string, message: string): SyncStepDone {\n const startedAt = this.now();\n this.drawLive(formatProgressLine(label, `${message}...`));\n return (summary) => {\n this.clearLive();\n this.output.write(`${formatProgressLine(label, `${summary} (${formatElapsed(this.now() - startedAt)})`)}\\n`);\n };\n }\n\n /** Writes a standalone line, such as one package moving to a new version. */\n line(label: string, message: string): void {\n this.clearLive();\n this.output.write(`${formatProgressLine(label, message)}\\n`);\n }\n\n private drawLive(text: string): void {\n if (!this.output.isTTY) return;\n this.output.write(`${CLEAR_LINE}${text}`);\n this.live = true;\n }\n\n private clearLive(): void {\n if (!this.live) return;\n this.output.write(CLEAR_LINE);\n this.live = false;\n }\n}\n"],"mappings":";;;;;;;;;;AAUA,MAAM,cAAc;AAEpB,MAAM,aAAa,GADC,OAAO,aAAa,EACR,EAAE;AAClC,MAAM,0BAA0B;AAUhC,SAAgB,mBAAmB,OAAe,SAAyB;CACzE,OAAO,GAAG,GAAG,MAAM,GAAG,OAAO,WAAW,IAAI;AAC9C;AAEA,SAAS,cAAc,cAA8B;CACnD,OAAO,IAAI,eAAe,wBAAA,CAAyB,QAAQ,CAAC,EAAE;AAChE;;AAGA,IAAa,eAAb,MAA0B;CACxB;CACA;CACA,OAAe;CAEf,YAAY,QAA4B,MAAoB,KAAK,KAAK;EACpE,KAAK,SAAS;EACd,KAAK,MAAM;CACb;;CAGA,MAAM,OAAe,SAA+B;EAClD,MAAM,YAAY,KAAK,IAAI;EAC3B,KAAK,SAAS,mBAAmB,OAAO,GAAG,QAAQ,IAAI,CAAC;EACxD,QAAQ,YAAY;GAClB,KAAK,UAAU;GACf,KAAK,OAAO,MAAM,GAAG,mBAAmB,OAAO,GAAG,QAAQ,IAAI,cAAc,KAAK,IAAI,IAAI,SAAS,EAAE,EAAE,EAAE,GAAG;EAC7G;CACF;;CAGA,KAAK,OAAe,SAAuB;EACzC,KAAK,UAAU;EACf,KAAK,OAAO,MAAM,GAAG,mBAAmB,OAAO,OAAO,EAAE,GAAG;CAC7D;CAEA,SAAiB,MAAoB;EACnC,IAAI,CAAC,KAAK,OAAO,OAAO;EACxB,KAAK,OAAO,MAAM,GAAG,aAAa,MAAM;EACxC,KAAK,OAAO;CACd;CAEA,YAA0B;EACxB,IAAI,CAAC,KAAK,MAAM;EAChB,KAAK,OAAO,MAAM,UAAU;EAC5B,KAAK,OAAO;CACd;AACF"}
@@ -0,0 +1,16 @@
1
+ const require_help = require("./help.cjs");
2
+ const require_router = require("../../router.cjs");
3
+ const require_index = require("./index.cjs");
4
+ //#region src/cli/commands/sync/workflow.ts
5
+ /** The `po sync` entry: help, or installs plus the global builds. */
6
+ async function runSync(args, environment = process.env, currentDirectory = process.cwd(), output = process.stdout) {
7
+ if (require_router.wantsHelp(args)) {
8
+ output.write(require_help.syncHelp());
9
+ return 0;
10
+ }
11
+ return require_index.synchronize(args, environment, currentDirectory, output);
12
+ }
13
+ //#endregion
14
+ exports.runSync = runSync;
15
+
16
+ //# sourceMappingURL=workflow.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.cjs","names":["wantsHelp","syncHelp","synchronize"],"sources":["../../../../../src/cli/commands/sync/workflow.ts"],"sourcesContent":["import { wantsHelp } from '../../router';\nimport { syncHelp } from './help';\nimport { synchronize } from './index';\nimport type { SyncProgressOutput } from './presenter';\n\n/** The `po sync` entry: help, or installs plus the global builds. */\nexport async function runSync(\n args: string[],\n environment: NodeJS.ProcessEnv = process.env,\n currentDirectory = process.cwd(),\n output: SyncProgressOutput = process.stdout,\n): Promise<number> {\n // Before anything else, so both `sync --help` and `sync --check --help` print\n // instead of running a sync nobody asked for.\n if (wantsHelp(args)) {\n output.write(syncHelp());\n return 0;\n }\n return synchronize(args, environment, currentDirectory, output);\n}\n"],"mappings":";;;;;AAMA,eAAsB,QACpB,MACA,cAAiC,QAAQ,KACzC,mBAAmB,QAAQ,IAAI,GAC/B,SAA6B,QAAQ,QACpB;CAGjB,IAAIA,eAAAA,UAAU,IAAI,GAAG;EACnB,OAAO,MAAMC,aAAAA,SAAS,CAAC;EACvB,OAAO;CACT;CACA,OAAOC,cAAAA,YAAY,MAAM,aAAa,kBAAkB,MAAM;AAChE"}
@@ -0,0 +1,16 @@
1
+ import { syncHelp } from "./help.mjs";
2
+ import { wantsHelp } from "../../router.mjs";
3
+ import { synchronize } from "./index.mjs";
4
+ //#region src/cli/commands/sync/workflow.ts
5
+ /** The `po sync` entry: help, or installs plus the global builds. */
6
+ async function runSync(args, environment = process.env, currentDirectory = process.cwd(), output = process.stdout) {
7
+ if (wantsHelp(args)) {
8
+ output.write(syncHelp());
9
+ return 0;
10
+ }
11
+ return synchronize(args, environment, currentDirectory, output);
12
+ }
13
+ //#endregion
14
+ export { runSync };
15
+
16
+ //# sourceMappingURL=workflow.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.mjs","names":[],"sources":["../../../../../src/cli/commands/sync/workflow.ts"],"sourcesContent":["import { wantsHelp } from '../../router';\nimport { syncHelp } from './help';\nimport { synchronize } from './index';\nimport type { SyncProgressOutput } from './presenter';\n\n/** The `po sync` entry: help, or installs plus the global builds. */\nexport async function runSync(\n args: string[],\n environment: NodeJS.ProcessEnv = process.env,\n currentDirectory = process.cwd(),\n output: SyncProgressOutput = process.stdout,\n): Promise<number> {\n // Before anything else, so both `sync --help` and `sync --check --help` print\n // instead of running a sync nobody asked for.\n if (wantsHelp(args)) {\n output.write(syncHelp());\n return 0;\n }\n return synchronize(args, environment, currentDirectory, output);\n}\n"],"mappings":";;;;;AAMA,eAAsB,QACpB,MACA,cAAiC,QAAQ,KACzC,mBAAmB,QAAQ,IAAI,GAC/B,SAA6B,QAAQ,QACpB;CAGjB,IAAI,UAAU,IAAI,GAAG;EACnB,OAAO,MAAM,SAAS,CAAC;EACvB,OAAO;CACT;CACA,OAAO,YAAY,MAAM,aAAa,kBAAkB,MAAM;AAChE"}
@@ -0,0 +1,88 @@
1
+ const require_runtime = require("../../../../_virtual/_rolldown/runtime.cjs");
2
+ let node_path = require("node:path");
3
+ node_path = require_runtime.__toESM(node_path, 1);
4
+ let node_child_process = require("node:child_process");
5
+ let node_module = require("node:module");
6
+ //#region src/cli/commands/web/index.ts
7
+ const PO_WEB_PACKAGE = "@agimon-ai/po-web";
8
+ const PO_WEB_MANIFEST = `${PO_WEB_PACKAGE}/package.json`;
9
+ const PO_WEB_BIN = "po-web";
10
+ const FORWARDED_SIGNALS = ["SIGINT", "SIGTERM"];
11
+ const SIGNAL_EXIT_BASE = 128;
12
+ const SIGNAL_NUMBERS = {
13
+ SIGINT: 2,
14
+ SIGTERM: 15
15
+ };
16
+ function defaultDependencies() {
17
+ const require$1 = (0, node_module.createRequire)(require("url").pathToFileURL(__filename).href);
18
+ return {
19
+ resolve: (specifier) => require$1.resolve(specifier),
20
+ readManifest: (manifestPath) => require$1(manifestPath),
21
+ spawn: (command, args) => (0, node_child_process.spawn)(command, args, { stdio: "inherit" }),
22
+ signals: process,
23
+ error: process.stderr
24
+ };
25
+ }
26
+ function binEntry(manifest) {
27
+ if (typeof manifest !== "object" || manifest === null) return void 0;
28
+ const bin = manifest.bin;
29
+ if (typeof bin === "string") return bin;
30
+ if (typeof bin !== "object" || bin === null) return void 0;
31
+ const entry = bin[PO_WEB_BIN];
32
+ return typeof entry === "string" ? entry : void 0;
33
+ }
34
+ /** Absolute path of the installed po-web bin, or undefined when po-web is not installed. */
35
+ function resolvePoWebBin(dependencies) {
36
+ let manifestPath;
37
+ try {
38
+ manifestPath = dependencies.resolve(PO_WEB_MANIFEST);
39
+ } catch {
40
+ return;
41
+ }
42
+ const entry = binEntry(dependencies.readManifest(manifestPath));
43
+ return entry ? node_path.default.resolve(node_path.default.dirname(manifestPath), entry) : void 0;
44
+ }
45
+ function installGuidance() {
46
+ return `po could not find ${PO_WEB_PACKAGE}, which serves the Po web console.
47
+ Install it next to po, for example:
48
+ npm install -g ${PO_WEB_PACKAGE}
49
+ `;
50
+ }
51
+ /**
52
+ * Bare `po`: runs the po-web console with the caller's arguments.
53
+ *
54
+ * po-web depends on po, so po locates it at runtime instead of declaring it.
55
+ * The child inherits stdio, receives SIGINT and SIGTERM, and its exit code
56
+ * becomes po's.
57
+ */
58
+ async function runPoWeb(args, dependencies = defaultDependencies()) {
59
+ const bin = resolvePoWebBin(dependencies);
60
+ if (!bin) {
61
+ dependencies.error.write(installGuidance());
62
+ return 1;
63
+ }
64
+ const child = dependencies.spawn(process.execPath, [bin, ...args]);
65
+ const forwarders = FORWARDED_SIGNALS.map((signal) => {
66
+ const forward = () => {
67
+ child.kill(signal);
68
+ };
69
+ dependencies.signals.on(signal, forward);
70
+ return [signal, forward];
71
+ });
72
+ try {
73
+ return await new Promise((resolve, reject) => {
74
+ child.once("error", reject);
75
+ child.once("exit", (code, signal) => {
76
+ if (code !== null) resolve(code);
77
+ else resolve(SIGNAL_EXIT_BASE + (signal ? SIGNAL_NUMBERS[signal] ?? 0 : 0));
78
+ });
79
+ });
80
+ } finally {
81
+ for (const [signal, forward] of forwarders) dependencies.signals.off(signal, forward);
82
+ }
83
+ }
84
+ //#endregion
85
+ exports.resolvePoWebBin = resolvePoWebBin;
86
+ exports.runPoWeb = runPoWeb;
87
+
88
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["require","createRequire","spawn","path"],"sources":["../../../../../src/cli/commands/web/index.ts"],"sourcesContent":["import { type ChildProcess, spawn } from 'node:child_process';\nimport { createRequire } from 'node:module';\nimport path from 'node:path';\n\nconst PO_WEB_PACKAGE = '@agimon-ai/po-web';\nconst PO_WEB_MANIFEST = `${PO_WEB_PACKAGE}/package.json`;\nconst PO_WEB_BIN = 'po-web';\nconst FORWARDED_SIGNALS = ['SIGINT', 'SIGTERM'] as const;\nconst SIGNAL_EXIT_BASE = 128;\nconst SIGNAL_NUMBERS: Record<string, number> = { SIGINT: 2, SIGTERM: 15 };\n\nexport interface PoWebOutput {\n write(chunk: string): void;\n}\n\nexport interface PoWebDependencies {\n /** Resolves a module specifier to an absolute path, throwing when it is not installed. */\n resolve: (specifier: string) => string;\n /** Reads a resolved package manifest. */\n readManifest: (manifestPath: string) => unknown;\n spawn: (command: string, args: string[]) => ChildProcess;\n signals: Pick<NodeJS.Process, 'on' | 'off'>;\n error: PoWebOutput;\n}\n\nfunction defaultDependencies(): PoWebDependencies {\n const require = createRequire(import.meta.url);\n return {\n resolve: (specifier) => require.resolve(specifier),\n readManifest: (manifestPath) => require(manifestPath) as unknown,\n spawn: (command, args) => spawn(command, args, { stdio: 'inherit' }),\n signals: process,\n error: process.stderr,\n };\n}\n\nfunction binEntry(manifest: unknown): string | undefined {\n if (typeof manifest !== 'object' || manifest === null) return undefined;\n const bin = (manifest as { bin?: unknown }).bin;\n if (typeof bin === 'string') return bin;\n if (typeof bin !== 'object' || bin === null) return undefined;\n const entry = (bin as Record<string, unknown>)[PO_WEB_BIN];\n return typeof entry === 'string' ? entry : undefined;\n}\n\n/** Absolute path of the installed po-web bin, or undefined when po-web is not installed. */\nexport function resolvePoWebBin(dependencies: Pick<PoWebDependencies, 'resolve' | 'readManifest'>): string | undefined {\n let manifestPath: string;\n try {\n manifestPath = dependencies.resolve(PO_WEB_MANIFEST);\n } catch {\n return undefined;\n }\n const entry = binEntry(dependencies.readManifest(manifestPath));\n return entry ? path.resolve(path.dirname(manifestPath), entry) : undefined;\n}\n\nfunction installGuidance(): string {\n return `po could not find ${PO_WEB_PACKAGE}, which serves the Po web console.\nInstall it next to po, for example:\n npm install -g ${PO_WEB_PACKAGE}\n`;\n}\n\n/**\n * Bare `po`: runs the po-web console with the caller's arguments.\n *\n * po-web depends on po, so po locates it at runtime instead of declaring it.\n * The child inherits stdio, receives SIGINT and SIGTERM, and its exit code\n * becomes po's.\n */\nexport async function runPoWeb(\n args: string[],\n dependencies: PoWebDependencies = defaultDependencies(),\n): Promise<number> {\n const bin = resolvePoWebBin(dependencies);\n if (!bin) {\n dependencies.error.write(installGuidance());\n return 1;\n }\n const child = dependencies.spawn(process.execPath, [bin, ...args]);\n const forwarders = FORWARDED_SIGNALS.map((signal) => {\n const forward = (): void => {\n child.kill(signal);\n };\n dependencies.signals.on(signal, forward);\n return [signal, forward] as const;\n });\n try {\n return await new Promise<number>((resolve, reject) => {\n child.once('error', reject);\n child.once('exit', (code, signal) => {\n if (code !== null) resolve(code);\n else resolve(SIGNAL_EXIT_BASE + (signal ? (SIGNAL_NUMBERS[signal] ?? 0) : 0));\n });\n });\n } finally {\n for (const [signal, forward] of forwarders) dependencies.signals.off(signal, forward);\n }\n}\n"],"mappings":";;;;;;AAIA,MAAM,iBAAiB;AACvB,MAAM,kBAAkB,GAAG,eAAe;AAC1C,MAAM,aAAa;AACnB,MAAM,oBAAoB,CAAC,UAAU,SAAS;AAC9C,MAAM,mBAAmB;AACzB,MAAM,iBAAyC;CAAE,QAAQ;CAAG,SAAS;AAAG;AAgBxE,SAAS,sBAAyC;CAChD,MAAMA,aAAAA,GAAUC,YAAAA,cAAAA,CAAAA,QAAAA,KAAAA,CAAAA,CAAAA,cAAAA,UAAAA,CAAAA,CAAAA,IAA6B;CAC7C,OAAO;EACL,UAAU,cAAcD,UAAQ,QAAQ,SAAS;EACjD,eAAe,iBAAiBA,UAAQ,YAAY;EACpD,QAAQ,SAAS,UAAA,GAASE,mBAAAA,MAAAA,CAAM,SAAS,MAAM,EAAE,OAAO,UAAU,CAAC;EACnE,SAAS;EACT,OAAO,QAAQ;CACjB;AACF;AAEA,SAAS,SAAS,UAAuC;CACvD,IAAI,OAAO,aAAa,YAAY,aAAa,MAAM,OAAO,KAAA;CAC9D,MAAM,MAAO,SAA+B;CAC5C,IAAI,OAAO,QAAQ,UAAU,OAAO;CACpC,IAAI,OAAO,QAAQ,YAAY,QAAQ,MAAM,OAAO,KAAA;CACpD,MAAM,QAAS,IAAgC;CAC/C,OAAO,OAAO,UAAU,WAAW,QAAQ,KAAA;AAC7C;;AAGA,SAAgB,gBAAgB,cAAuF;CACrH,IAAI;CACJ,IAAI;EACF,eAAe,aAAa,QAAQ,eAAe;CACrD,QAAQ;EACN;CACF;CACA,MAAM,QAAQ,SAAS,aAAa,aAAa,YAAY,CAAC;CAC9D,OAAO,QAAQC,UAAAA,QAAK,QAAQA,UAAAA,QAAK,QAAQ,YAAY,GAAG,KAAK,IAAI,KAAA;AACnE;AAEA,SAAS,kBAA0B;CACjC,OAAO,qBAAqB,eAAe;;mBAE1B,eAAe;;AAElC;;;;;;;;AASA,eAAsB,SACpB,MACA,eAAkC,oBAAoB,GACrC;CACjB,MAAM,MAAM,gBAAgB,YAAY;CACxC,IAAI,CAAC,KAAK;EACR,aAAa,MAAM,MAAM,gBAAgB,CAAC;EAC1C,OAAO;CACT;CACA,MAAM,QAAQ,aAAa,MAAM,QAAQ,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC;CACjE,MAAM,aAAa,kBAAkB,KAAK,WAAW;EACnD,MAAM,gBAAsB;GAC1B,MAAM,KAAK,MAAM;EACnB;EACA,aAAa,QAAQ,GAAG,QAAQ,OAAO;EACvC,OAAO,CAAC,QAAQ,OAAO;CACzB,CAAC;CACD,IAAI;EACF,OAAO,MAAM,IAAI,SAAiB,SAAS,WAAW;GACpD,MAAM,KAAK,SAAS,MAAM;GAC1B,MAAM,KAAK,SAAS,MAAM,WAAW;IACnC,IAAI,SAAS,MAAM,QAAQ,IAAI;SAC1B,QAAQ,oBAAoB,SAAU,eAAe,WAAW,IAAK,EAAE;GAC9E,CAAC;EACH,CAAC;CACH,UAAU;EACR,KAAK,MAAM,CAAC,QAAQ,YAAY,YAAY,aAAa,QAAQ,IAAI,QAAQ,OAAO;CACtF;AACF"}