@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,140 @@
1
+ const require_constants = require("./constants.cjs");
2
+ let _agimon_ai_po_config = require("@agimon-ai/po-config");
3
+ let _agimon_ai_po_ui_theme = require("@agimon-ai/po-ui/theme");
4
+ //#region src/cli/commands/init/presenter.ts
5
+ const FORCE_COLOR_ENV = "FORCE_COLOR";
6
+ const NO_COLOR_ENV = "NO_COLOR";
7
+ const DUMB_TERMINAL = "dumb";
8
+ const ANSI_PREFIX = "\x1B[";
9
+ const ANSI_RESET = `${ANSI_PREFIX}0m`;
10
+ const SECTION_RULE = "─".repeat(72);
11
+ const READY_RULE = "━━━━━━━━";
12
+ function colorEnabled(output, environment) {
13
+ const forced = environment[FORCE_COLOR_ENV];
14
+ if (forced === "0") return false;
15
+ if (forced !== void 0) return true;
16
+ if (environment[NO_COLOR_ENV] !== void 0) return false;
17
+ return output.isTTY === true && environment.TERM !== DUMB_TERMINAL;
18
+ }
19
+ function rgbCode(prefix, hex) {
20
+ const value = Number.parseInt(hex.slice(1), 16);
21
+ const red = value >> 16 & 255;
22
+ const green = value >> 8 & 255;
23
+ const blue = value & 255;
24
+ return `${String(prefix)};2;${String(red)};${String(green)};${String(blue)}`;
25
+ }
26
+ function painter(enabled, foreground, options = {}) {
27
+ if (!enabled) return (text) => text;
28
+ const codes = [rgbCode(38, foreground)];
29
+ if (options.background) codes.push(rgbCode(48, options.background));
30
+ if (options.bold) codes.unshift("1");
31
+ const opening = `${ANSI_PREFIX}${codes.join(";")}m`;
32
+ return (text) => `${opening}${text}${ANSI_RESET}`;
33
+ }
34
+ function createPalette(enabled) {
35
+ const { vars } = _agimon_ai_po_ui_theme.DEFAULT_THEME;
36
+ const accent = painter(enabled, vars.green);
37
+ const badgePaint = painter(enabled, vars.bg, {
38
+ background: vars.green,
39
+ bold: true
40
+ });
41
+ return {
42
+ accent,
43
+ badge: enabled ? (text) => badgePaint(` ${text} `) : (text) => text,
44
+ error: painter(enabled, vars.red, { bold: true }),
45
+ heading: painter(enabled, vars.green, { bold: true }),
46
+ key: painter(enabled, vars.cyan),
47
+ kept: painter(enabled, vars.violet),
48
+ muted: painter(enabled, vars.comment),
49
+ path: painter(enabled, vars.cyan),
50
+ strong: painter(enabled, vars.fg, { bold: true }),
51
+ success: painter(enabled, vars.green, { bold: true }),
52
+ warning: painter(enabled, vars.yellow)
53
+ };
54
+ }
55
+ function seedFileStatus(result, fileName) {
56
+ if (result.created.includes(fileName)) return "CREATED";
57
+ if (result.replaced.includes(fileName)) return "REPLACED";
58
+ if (result.preserved.includes(fileName)) return "KEPT";
59
+ throw new Error(`po init did not classify generated file: ${fileName}`);
60
+ }
61
+ /** Streams the init command using the same Po Jade semantic palette as the Pi TUI. */
62
+ var InitPresenter = class {
63
+ output;
64
+ palette;
65
+ constructor(output, environment) {
66
+ this.output = output;
67
+ this.palette = createPalette(colorEnabled(output, environment));
68
+ }
69
+ brand() {
70
+ const color = this.palette;
71
+ this.write([
72
+ color.muted("BOOT / INIT"),
73
+ `${color.accent("Po")} ${color.heading("INITIALIZE")}`,
74
+ color.muted("Po handles it."),
75
+ `${color.accent(READY_RULE)} ${color.heading("SETUP")}`,
76
+ ""
77
+ ]);
78
+ }
79
+ stage(step, total, label, target) {
80
+ const color = this.palette;
81
+ this.write([`${color.accent(`[${String(step)}/${String(total)}]`)} ${color.strong(label)}`, ` ${color.muted("TARGET")} ${color.path(target)}`]);
82
+ }
83
+ stageReady(message) {
84
+ this.write([` ${this.palette.success("● READY")} ${message}`]);
85
+ }
86
+ stageFailed(message, detail) {
87
+ this.write([` ${this.palette.error("● FAILED")} ${message}`, ...detail.map((line) => ` ${this.palette.warning(line)}`)]);
88
+ }
89
+ complete(config, removedPiEntries) {
90
+ this.write(["", ...this.formatPiCleanup(removedPiEntries)]);
91
+ this.write(["", ...this.formatConfigResult(config)]);
92
+ this.write([
93
+ "",
94
+ this.sectionHeading("NEXT"),
95
+ ` ${this.palette.accent("01")} Open ${this.palette.path(config.directory)}.`,
96
+ ` ${this.palette.accent("02")} Edit the YAML files to match how you want Po to work.`,
97
+ ` ${this.palette.accent("03")} From the repository you want to configure, run:`,
98
+ "",
99
+ ` ${this.palette.badge("po sync")}`,
100
+ "",
101
+ `${this.palette.success(READY_RULE)} ${this.palette.success("READY")} Edit your config, then sync it.`
102
+ ]);
103
+ }
104
+ formatPiCleanup(removed) {
105
+ return [
106
+ this.sectionHeading("PI CLEANUP"),
107
+ removed.length === 0 ? ` ${this.palette.success("Pi settings carry no Po entries.")}` : ` ${this.palette.warning(`Removed ${String(removed.length)} Po entr${removed.length === 1 ? "y" : "ies"}.`)} ${this.palette.muted("Unrelated settings were preserved.")}`,
108
+ ...removed.map((entry) => ` ${this.palette.path(entry)}`)
109
+ ];
110
+ }
111
+ formatConfigResult(result) {
112
+ const lines = [
113
+ this.sectionHeading("PO CONFIGURATION"),
114
+ ` ${this.palette.path(result.directory)}`,
115
+ ..._agimon_ai_po_config.GLOBAL_DOOM_SEED_FILES.map((fileName) => {
116
+ const status = seedFileStatus(result, fileName);
117
+ return ` ${this.fileStatus(status)} ${this.palette.key(fileName.padEnd(13))} ${this.palette.muted("—")} ${require_constants.SEED_FILE_GUIDANCE[fileName]}`;
118
+ })
119
+ ];
120
+ if (result.preserved.length > 0) lines.push(` ${this.palette.kept("KEPT")} ${this.palette.muted("files retain your existing edits.")}`);
121
+ if (result.replaced.length > 0) lines.push(` ${this.palette.warning("REPLACED")} ${this.palette.muted("files were restored from the templates because --force was used.")}`);
122
+ return lines;
123
+ }
124
+ fileStatus(status) {
125
+ const padded = status.padEnd(8);
126
+ if (status === "CREATED") return this.palette.accent(padded);
127
+ if (status === "REPLACED") return this.palette.warning(padded);
128
+ return this.palette.kept(padded);
129
+ }
130
+ sectionHeading(title) {
131
+ return `${this.palette.muted(SECTION_RULE)}\n${this.palette.heading(title)}`;
132
+ }
133
+ write(lines) {
134
+ this.output.write(`${lines.join("\n")}\n`);
135
+ }
136
+ };
137
+ //#endregion
138
+ exports.InitPresenter = InitPresenter;
139
+
140
+ //# sourceMappingURL=presenter.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presenter.cjs","names":["DEFAULT_THEME","GLOBAL_DOOM_SEED_FILES","SEED_FILE_GUIDANCE"],"sources":["../../../../../src/cli/commands/init/presenter.ts"],"sourcesContent":["import { GLOBAL_DOOM_SEED_FILES, type GlobalDoomInitResult } from '@agimon-ai/po-config';\nimport { DEFAULT_THEME } from '@agimon-ai/po-ui/theme';\n\nimport { SEED_FILE_GUIDANCE } from './constants';\n\nconst FORCE_COLOR_ENV = 'FORCE_COLOR';\nconst NO_COLOR_ENV = 'NO_COLOR';\nconst DUMB_TERMINAL = 'dumb';\nconst ANSI_PREFIX = '\\u001B[';\nconst ANSI_RESET = `${ANSI_PREFIX}0m`;\nconst SECTION_RULE = '─'.repeat(72);\nconst READY_RULE = '━━━━━━━━';\n\nexport interface InitOutput {\n write: NodeJS.WritableStream['write'];\n isTTY?: boolean;\n}\n\ntype SeedFile = (typeof GLOBAL_DOOM_SEED_FILES)[number];\ntype SeedFileStatus = 'CREATED' | 'KEPT' | 'REPLACED';\ntype Paint = (text: string) => string;\n\ninterface InitPalette {\n accent: Paint;\n badge: Paint;\n error: Paint;\n heading: Paint;\n key: Paint;\n kept: Paint;\n muted: Paint;\n path: Paint;\n strong: Paint;\n success: Paint;\n warning: Paint;\n}\n\ninterface PaintOptions {\n background?: string;\n bold?: boolean;\n}\n\nfunction colorEnabled(output: InitOutput, environment: NodeJS.ProcessEnv): boolean {\n const forced = environment[FORCE_COLOR_ENV];\n if (forced === '0') return false;\n if (forced !== undefined) return true;\n if (environment[NO_COLOR_ENV] !== undefined) return false;\n return output.isTTY === true && environment.TERM !== DUMB_TERMINAL;\n}\n\nfunction rgbCode(prefix: 38 | 48, hex: string): string {\n const value = Number.parseInt(hex.slice(1), 16);\n const red = (value >> 16) & 0xff;\n const green = (value >> 8) & 0xff;\n const blue = value & 0xff;\n return `${String(prefix)};2;${String(red)};${String(green)};${String(blue)}`;\n}\n\nfunction painter(enabled: boolean, foreground: string, options: PaintOptions = {}): Paint {\n if (!enabled) return (text) => text;\n const codes = [rgbCode(38, foreground)];\n if (options.background) codes.push(rgbCode(48, options.background));\n if (options.bold) codes.unshift('1');\n const opening = `${ANSI_PREFIX}${codes.join(';')}m`;\n return (text) => `${opening}${text}${ANSI_RESET}`;\n}\n\nfunction createPalette(enabled: boolean): InitPalette {\n const { vars } = DEFAULT_THEME;\n const accent = painter(enabled, vars.green);\n const badgePaint = painter(enabled, vars.bg, { background: vars.green, bold: true });\n return {\n accent,\n badge: enabled ? (text) => badgePaint(` ${text} `) : (text) => text,\n error: painter(enabled, vars.red, { bold: true }),\n heading: painter(enabled, vars.green, { bold: true }),\n key: painter(enabled, vars.cyan),\n kept: painter(enabled, vars.violet),\n muted: painter(enabled, vars.comment),\n path: painter(enabled, vars.cyan),\n strong: painter(enabled, vars.fg, { bold: true }),\n success: painter(enabled, vars.green, { bold: true }),\n warning: painter(enabled, vars.yellow),\n };\n}\n\nfunction seedFileStatus(result: GlobalDoomInitResult, fileName: SeedFile): SeedFileStatus {\n if (result.created.includes(fileName)) return 'CREATED';\n if (result.replaced.includes(fileName)) return 'REPLACED';\n if (result.preserved.includes(fileName)) return 'KEPT';\n throw new Error(`po init did not classify generated file: ${fileName}`);\n}\n\n/** Streams the init command using the same Po Jade semantic palette as the Pi TUI. */\nexport class InitPresenter {\n private readonly output: InitOutput;\n private readonly palette: InitPalette;\n\n constructor(output: InitOutput, environment: NodeJS.ProcessEnv) {\n this.output = output;\n this.palette = createPalette(colorEnabled(output, environment));\n }\n\n brand(): void {\n const color = this.palette;\n this.write([\n color.muted('BOOT / INIT'),\n `${color.accent('Po')} ${color.heading('INITIALIZE')}`,\n color.muted('Po handles it.'),\n `${color.accent(READY_RULE)} ${color.heading('SETUP')}`,\n '',\n ]);\n }\n\n stage(step: number, total: number, label: string, target: string): void {\n const color = this.palette;\n this.write([\n `${color.accent(`[${String(step)}/${String(total)}]`)} ${color.strong(label)}`,\n ` ${color.muted('TARGET')} ${color.path(target)}`,\n ]);\n }\n\n stageReady(message: string): void {\n this.write([` ${this.palette.success('● READY')} ${message}`]);\n }\n\n stageFailed(message: string, detail: readonly string[]): void {\n this.write([\n ` ${this.palette.error('● FAILED')} ${message}`,\n ...detail.map((line) => ` ${this.palette.warning(line)}`),\n ]);\n }\n\n complete(config: GlobalDoomInitResult, removedPiEntries: readonly string[]): void {\n this.write(['', ...this.formatPiCleanup(removedPiEntries)]);\n this.write(['', ...this.formatConfigResult(config)]);\n this.write([\n '',\n this.sectionHeading('NEXT'),\n ` ${this.palette.accent('01')} Open ${this.palette.path(config.directory)}.`,\n ` ${this.palette.accent('02')} Edit the YAML files to match how you want Po to work.`,\n ` ${this.palette.accent('03')} From the repository you want to configure, run:`,\n '',\n ` ${this.palette.badge('po sync')}`,\n '',\n `${this.palette.success(READY_RULE)} ${this.palette.success('READY')} Edit your config, then sync it.`,\n ]);\n }\n\n private formatPiCleanup(removed: readonly string[]): string[] {\n return [\n this.sectionHeading('PI CLEANUP'),\n removed.length === 0\n ? ` ${this.palette.success('Pi settings carry no Po entries.')}`\n : ` ${this.palette.warning(`Removed ${String(removed.length)} Po entr${removed.length === 1 ? 'y' : 'ies'}.`)} ${this.palette.muted('Unrelated settings were preserved.')}`,\n ...removed.map((entry) => ` ${this.palette.path(entry)}`),\n ];\n }\n\n private formatConfigResult(result: GlobalDoomInitResult): string[] {\n const lines = [\n this.sectionHeading('PO CONFIGURATION'),\n ` ${this.palette.path(result.directory)}`,\n ...GLOBAL_DOOM_SEED_FILES.map((fileName) => {\n const status = seedFileStatus(result, fileName);\n return ` ${this.fileStatus(status)} ${this.palette.key(fileName.padEnd(13))} ${this.palette.muted('—')} ${SEED_FILE_GUIDANCE[fileName]}`;\n }),\n ];\n if (result.preserved.length > 0) {\n lines.push(` ${this.palette.kept('KEPT')} ${this.palette.muted('files retain your existing edits.')}`);\n }\n if (result.replaced.length > 0) {\n lines.push(\n ` ${this.palette.warning('REPLACED')} ${this.palette.muted(\n 'files were restored from the templates because --force was used.',\n )}`,\n );\n }\n return lines;\n }\n\n private fileStatus(status: SeedFileStatus): string {\n const padded = status.padEnd(8);\n if (status === 'CREATED') return this.palette.accent(padded);\n if (status === 'REPLACED') return this.palette.warning(padded);\n return this.palette.kept(padded);\n }\n\n private sectionHeading(title: string): string {\n return `${this.palette.muted(SECTION_RULE)}\\n${this.palette.heading(title)}`;\n }\n\n private write(lines: readonly string[]): void {\n this.output.write(`${lines.join('\\n')}\\n`);\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import "@agimon-ai/po-config";
2
+ //#region src/cli/commands/init/presenter.d.ts
3
+ export interface InitOutput {
4
+ write: NodeJS.WritableStream['write'];
5
+ isTTY?: boolean;
6
+ }
7
+ //#endregion
8
+ //# sourceMappingURL=presenter.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presenter.d.mts","names":[],"sources":["../../../../../src/cli/commands/init/presenter.ts"],"mappings":";;iBAaiB;EACf,OAAO,OAAO;EACd"}
@@ -0,0 +1,140 @@
1
+ import { SEED_FILE_GUIDANCE } from "./constants.mjs";
2
+ import { GLOBAL_DOOM_SEED_FILES } from "@agimon-ai/po-config";
3
+ import { DEFAULT_THEME } from "@agimon-ai/po-ui/theme";
4
+ //#region src/cli/commands/init/presenter.ts
5
+ const FORCE_COLOR_ENV = "FORCE_COLOR";
6
+ const NO_COLOR_ENV = "NO_COLOR";
7
+ const DUMB_TERMINAL = "dumb";
8
+ const ANSI_PREFIX = "\x1B[";
9
+ const ANSI_RESET = `${ANSI_PREFIX}0m`;
10
+ const SECTION_RULE = "─".repeat(72);
11
+ const READY_RULE = "━━━━━━━━";
12
+ function colorEnabled(output, environment) {
13
+ const forced = environment[FORCE_COLOR_ENV];
14
+ if (forced === "0") return false;
15
+ if (forced !== void 0) return true;
16
+ if (environment[NO_COLOR_ENV] !== void 0) return false;
17
+ return output.isTTY === true && environment.TERM !== DUMB_TERMINAL;
18
+ }
19
+ function rgbCode(prefix, hex) {
20
+ const value = Number.parseInt(hex.slice(1), 16);
21
+ const red = value >> 16 & 255;
22
+ const green = value >> 8 & 255;
23
+ const blue = value & 255;
24
+ return `${String(prefix)};2;${String(red)};${String(green)};${String(blue)}`;
25
+ }
26
+ function painter(enabled, foreground, options = {}) {
27
+ if (!enabled) return (text) => text;
28
+ const codes = [rgbCode(38, foreground)];
29
+ if (options.background) codes.push(rgbCode(48, options.background));
30
+ if (options.bold) codes.unshift("1");
31
+ const opening = `${ANSI_PREFIX}${codes.join(";")}m`;
32
+ return (text) => `${opening}${text}${ANSI_RESET}`;
33
+ }
34
+ function createPalette(enabled) {
35
+ const { vars } = DEFAULT_THEME;
36
+ const accent = painter(enabled, vars.green);
37
+ const badgePaint = painter(enabled, vars.bg, {
38
+ background: vars.green,
39
+ bold: true
40
+ });
41
+ return {
42
+ accent,
43
+ badge: enabled ? (text) => badgePaint(` ${text} `) : (text) => text,
44
+ error: painter(enabled, vars.red, { bold: true }),
45
+ heading: painter(enabled, vars.green, { bold: true }),
46
+ key: painter(enabled, vars.cyan),
47
+ kept: painter(enabled, vars.violet),
48
+ muted: painter(enabled, vars.comment),
49
+ path: painter(enabled, vars.cyan),
50
+ strong: painter(enabled, vars.fg, { bold: true }),
51
+ success: painter(enabled, vars.green, { bold: true }),
52
+ warning: painter(enabled, vars.yellow)
53
+ };
54
+ }
55
+ function seedFileStatus(result, fileName) {
56
+ if (result.created.includes(fileName)) return "CREATED";
57
+ if (result.replaced.includes(fileName)) return "REPLACED";
58
+ if (result.preserved.includes(fileName)) return "KEPT";
59
+ throw new Error(`po init did not classify generated file: ${fileName}`);
60
+ }
61
+ /** Streams the init command using the same Po Jade semantic palette as the Pi TUI. */
62
+ var InitPresenter = class {
63
+ output;
64
+ palette;
65
+ constructor(output, environment) {
66
+ this.output = output;
67
+ this.palette = createPalette(colorEnabled(output, environment));
68
+ }
69
+ brand() {
70
+ const color = this.palette;
71
+ this.write([
72
+ color.muted("BOOT / INIT"),
73
+ `${color.accent("Po")} ${color.heading("INITIALIZE")}`,
74
+ color.muted("Po handles it."),
75
+ `${color.accent(READY_RULE)} ${color.heading("SETUP")}`,
76
+ ""
77
+ ]);
78
+ }
79
+ stage(step, total, label, target) {
80
+ const color = this.palette;
81
+ this.write([`${color.accent(`[${String(step)}/${String(total)}]`)} ${color.strong(label)}`, ` ${color.muted("TARGET")} ${color.path(target)}`]);
82
+ }
83
+ stageReady(message) {
84
+ this.write([` ${this.palette.success("● READY")} ${message}`]);
85
+ }
86
+ stageFailed(message, detail) {
87
+ this.write([` ${this.palette.error("● FAILED")} ${message}`, ...detail.map((line) => ` ${this.palette.warning(line)}`)]);
88
+ }
89
+ complete(config, removedPiEntries) {
90
+ this.write(["", ...this.formatPiCleanup(removedPiEntries)]);
91
+ this.write(["", ...this.formatConfigResult(config)]);
92
+ this.write([
93
+ "",
94
+ this.sectionHeading("NEXT"),
95
+ ` ${this.palette.accent("01")} Open ${this.palette.path(config.directory)}.`,
96
+ ` ${this.palette.accent("02")} Edit the YAML files to match how you want Po to work.`,
97
+ ` ${this.palette.accent("03")} From the repository you want to configure, run:`,
98
+ "",
99
+ ` ${this.palette.badge("po sync")}`,
100
+ "",
101
+ `${this.palette.success(READY_RULE)} ${this.palette.success("READY")} Edit your config, then sync it.`
102
+ ]);
103
+ }
104
+ formatPiCleanup(removed) {
105
+ return [
106
+ this.sectionHeading("PI CLEANUP"),
107
+ removed.length === 0 ? ` ${this.palette.success("Pi settings carry no Po entries.")}` : ` ${this.palette.warning(`Removed ${String(removed.length)} Po entr${removed.length === 1 ? "y" : "ies"}.`)} ${this.palette.muted("Unrelated settings were preserved.")}`,
108
+ ...removed.map((entry) => ` ${this.palette.path(entry)}`)
109
+ ];
110
+ }
111
+ formatConfigResult(result) {
112
+ const lines = [
113
+ this.sectionHeading("PO CONFIGURATION"),
114
+ ` ${this.palette.path(result.directory)}`,
115
+ ...GLOBAL_DOOM_SEED_FILES.map((fileName) => {
116
+ const status = seedFileStatus(result, fileName);
117
+ return ` ${this.fileStatus(status)} ${this.palette.key(fileName.padEnd(13))} ${this.palette.muted("—")} ${SEED_FILE_GUIDANCE[fileName]}`;
118
+ })
119
+ ];
120
+ if (result.preserved.length > 0) lines.push(` ${this.palette.kept("KEPT")} ${this.palette.muted("files retain your existing edits.")}`);
121
+ if (result.replaced.length > 0) lines.push(` ${this.palette.warning("REPLACED")} ${this.palette.muted("files were restored from the templates because --force was used.")}`);
122
+ return lines;
123
+ }
124
+ fileStatus(status) {
125
+ const padded = status.padEnd(8);
126
+ if (status === "CREATED") return this.palette.accent(padded);
127
+ if (status === "REPLACED") return this.palette.warning(padded);
128
+ return this.palette.kept(padded);
129
+ }
130
+ sectionHeading(title) {
131
+ return `${this.palette.muted(SECTION_RULE)}\n${this.palette.heading(title)}`;
132
+ }
133
+ write(lines) {
134
+ this.output.write(`${lines.join("\n")}\n`);
135
+ }
136
+ };
137
+ //#endregion
138
+ export { InitPresenter };
139
+
140
+ //# sourceMappingURL=presenter.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presenter.mjs","names":[],"sources":["../../../../../src/cli/commands/init/presenter.ts"],"sourcesContent":["import { GLOBAL_DOOM_SEED_FILES, type GlobalDoomInitResult } from '@agimon-ai/po-config';\nimport { DEFAULT_THEME } from '@agimon-ai/po-ui/theme';\n\nimport { SEED_FILE_GUIDANCE } from './constants';\n\nconst FORCE_COLOR_ENV = 'FORCE_COLOR';\nconst NO_COLOR_ENV = 'NO_COLOR';\nconst DUMB_TERMINAL = 'dumb';\nconst ANSI_PREFIX = '\\u001B[';\nconst ANSI_RESET = `${ANSI_PREFIX}0m`;\nconst SECTION_RULE = '─'.repeat(72);\nconst READY_RULE = '━━━━━━━━';\n\nexport interface InitOutput {\n write: NodeJS.WritableStream['write'];\n isTTY?: boolean;\n}\n\ntype SeedFile = (typeof GLOBAL_DOOM_SEED_FILES)[number];\ntype SeedFileStatus = 'CREATED' | 'KEPT' | 'REPLACED';\ntype Paint = (text: string) => string;\n\ninterface InitPalette {\n accent: Paint;\n badge: Paint;\n error: Paint;\n heading: Paint;\n key: Paint;\n kept: Paint;\n muted: Paint;\n path: Paint;\n strong: Paint;\n success: Paint;\n warning: Paint;\n}\n\ninterface PaintOptions {\n background?: string;\n bold?: boolean;\n}\n\nfunction colorEnabled(output: InitOutput, environment: NodeJS.ProcessEnv): boolean {\n const forced = environment[FORCE_COLOR_ENV];\n if (forced === '0') return false;\n if (forced !== undefined) return true;\n if (environment[NO_COLOR_ENV] !== undefined) return false;\n return output.isTTY === true && environment.TERM !== DUMB_TERMINAL;\n}\n\nfunction rgbCode(prefix: 38 | 48, hex: string): string {\n const value = Number.parseInt(hex.slice(1), 16);\n const red = (value >> 16) & 0xff;\n const green = (value >> 8) & 0xff;\n const blue = value & 0xff;\n return `${String(prefix)};2;${String(red)};${String(green)};${String(blue)}`;\n}\n\nfunction painter(enabled: boolean, foreground: string, options: PaintOptions = {}): Paint {\n if (!enabled) return (text) => text;\n const codes = [rgbCode(38, foreground)];\n if (options.background) codes.push(rgbCode(48, options.background));\n if (options.bold) codes.unshift('1');\n const opening = `${ANSI_PREFIX}${codes.join(';')}m`;\n return (text) => `${opening}${text}${ANSI_RESET}`;\n}\n\nfunction createPalette(enabled: boolean): InitPalette {\n const { vars } = DEFAULT_THEME;\n const accent = painter(enabled, vars.green);\n const badgePaint = painter(enabled, vars.bg, { background: vars.green, bold: true });\n return {\n accent,\n badge: enabled ? (text) => badgePaint(` ${text} `) : (text) => text,\n error: painter(enabled, vars.red, { bold: true }),\n heading: painter(enabled, vars.green, { bold: true }),\n key: painter(enabled, vars.cyan),\n kept: painter(enabled, vars.violet),\n muted: painter(enabled, vars.comment),\n path: painter(enabled, vars.cyan),\n strong: painter(enabled, vars.fg, { bold: true }),\n success: painter(enabled, vars.green, { bold: true }),\n warning: painter(enabled, vars.yellow),\n };\n}\n\nfunction seedFileStatus(result: GlobalDoomInitResult, fileName: SeedFile): SeedFileStatus {\n if (result.created.includes(fileName)) return 'CREATED';\n if (result.replaced.includes(fileName)) return 'REPLACED';\n if (result.preserved.includes(fileName)) return 'KEPT';\n throw new Error(`po init did not classify generated file: ${fileName}`);\n}\n\n/** Streams the init command using the same Po Jade semantic palette as the Pi TUI. */\nexport class InitPresenter {\n private readonly output: InitOutput;\n private readonly palette: InitPalette;\n\n constructor(output: InitOutput, environment: NodeJS.ProcessEnv) {\n this.output = output;\n this.palette = createPalette(colorEnabled(output, environment));\n }\n\n brand(): void {\n const color = this.palette;\n this.write([\n color.muted('BOOT / INIT'),\n `${color.accent('Po')} ${color.heading('INITIALIZE')}`,\n color.muted('Po handles it.'),\n `${color.accent(READY_RULE)} ${color.heading('SETUP')}`,\n '',\n ]);\n }\n\n stage(step: number, total: number, label: string, target: string): void {\n const color = this.palette;\n this.write([\n `${color.accent(`[${String(step)}/${String(total)}]`)} ${color.strong(label)}`,\n ` ${color.muted('TARGET')} ${color.path(target)}`,\n ]);\n }\n\n stageReady(message: string): void {\n this.write([` ${this.palette.success('● READY')} ${message}`]);\n }\n\n stageFailed(message: string, detail: readonly string[]): void {\n this.write([\n ` ${this.palette.error('● FAILED')} ${message}`,\n ...detail.map((line) => ` ${this.palette.warning(line)}`),\n ]);\n }\n\n complete(config: GlobalDoomInitResult, removedPiEntries: readonly string[]): void {\n this.write(['', ...this.formatPiCleanup(removedPiEntries)]);\n this.write(['', ...this.formatConfigResult(config)]);\n this.write([\n '',\n this.sectionHeading('NEXT'),\n ` ${this.palette.accent('01')} Open ${this.palette.path(config.directory)}.`,\n ` ${this.palette.accent('02')} Edit the YAML files to match how you want Po to work.`,\n ` ${this.palette.accent('03')} From the repository you want to configure, run:`,\n '',\n ` ${this.palette.badge('po sync')}`,\n '',\n `${this.palette.success(READY_RULE)} ${this.palette.success('READY')} Edit your config, then sync it.`,\n ]);\n }\n\n private formatPiCleanup(removed: readonly string[]): string[] {\n return [\n this.sectionHeading('PI CLEANUP'),\n removed.length === 0\n ? ` ${this.palette.success('Pi settings carry no Po entries.')}`\n : ` ${this.palette.warning(`Removed ${String(removed.length)} Po entr${removed.length === 1 ? 'y' : 'ies'}.`)} ${this.palette.muted('Unrelated settings were preserved.')}`,\n ...removed.map((entry) => ` ${this.palette.path(entry)}`),\n ];\n }\n\n private formatConfigResult(result: GlobalDoomInitResult): string[] {\n const lines = [\n this.sectionHeading('PO CONFIGURATION'),\n ` ${this.palette.path(result.directory)}`,\n ...GLOBAL_DOOM_SEED_FILES.map((fileName) => {\n const status = seedFileStatus(result, fileName);\n return ` ${this.fileStatus(status)} ${this.palette.key(fileName.padEnd(13))} ${this.palette.muted('—')} ${SEED_FILE_GUIDANCE[fileName]}`;\n }),\n ];\n if (result.preserved.length > 0) {\n lines.push(` ${this.palette.kept('KEPT')} ${this.palette.muted('files retain your existing edits.')}`);\n }\n if (result.replaced.length > 0) {\n lines.push(\n ` ${this.palette.warning('REPLACED')} ${this.palette.muted(\n 'files were restored from the templates because --force was used.',\n )}`,\n );\n }\n return lines;\n }\n\n private fileStatus(status: SeedFileStatus): string {\n const padded = status.padEnd(8);\n if (status === 'CREATED') return this.palette.accent(padded);\n if (status === 'REPLACED') return this.palette.warning(padded);\n return this.palette.kept(padded);\n }\n\n private sectionHeading(title: string): string {\n return `${this.palette.muted(SECTION_RULE)}\\n${this.palette.heading(title)}`;\n }\n\n private write(lines: readonly string[]): void {\n this.output.write(`${lines.join('\\n')}\\n`);\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ //#region src/cli/commands/sync/help.ts
2
+ function syncHelp() {
3
+ return `Usage: po sync [--check] [--global] [--json]
4
+
5
+ Installs the packages every root's layers name, then ensures the global web
6
+ build and the MCP app build exist. The roots are ~/.po, every registered
7
+ workspace whose folder still exists (entries whose folder is gone are removed
8
+ with a warning), and the current repository, which sync registers as a
9
+ workspace. With --global, the current repository is not registered. When
10
+ nothing changed since the last sync and its builds exist, sync does nothing.
11
+ It records the result in ~/.po/build/current.json and every attempt in
12
+ ~/.po/build/last-attempt.json. It then removes old web, native and MCP app builds
13
+ (keeping the current ones and the one before them) and, when no other Po
14
+ server runs, package store content nothing references.
15
+
16
+ Unsupported keys in .po/config.yaml and .po/modes.yaml are reported and
17
+ ignored rather than treated as errors, so a config written for a different
18
+ version cannot break a build. Run po doctor for the strict check.
19
+
20
+ Only one sync runs at a time. Exit codes: 0 when the sync is ok or had nothing
21
+ to do, 1 when it failed or only partly succeeded, 75 when another sync holds the
22
+ lock (its pid is printed).
23
+
24
+ Options:
25
+ --check Report missing packages or a missing web build, without writing
26
+ --global Sync every root without registering the current repository
27
+ --json Print one JSON line per progress event, then the final report
28
+ -h, --help Show this help
29
+ `;
30
+ }
31
+ //#endregion
32
+ exports.syncHelp = syncHelp;
33
+
34
+ //# sourceMappingURL=help.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.cjs","names":[],"sources":["../../../../../src/cli/commands/sync/help.ts"],"sourcesContent":["export function syncHelp(): string {\n return `Usage: po sync [--check] [--global] [--json]\n\nInstalls the packages every root's layers name, then ensures the global web\nbuild and the MCP app build exist. The roots are ~/.po, every registered\nworkspace whose folder still exists (entries whose folder is gone are removed\nwith a warning), and the current repository, which sync registers as a\nworkspace. With --global, the current repository is not registered. When\nnothing changed since the last sync and its builds exist, sync does nothing.\nIt records the result in ~/.po/build/current.json and every attempt in\n~/.po/build/last-attempt.json. It then removes old web, native and MCP app builds\n(keeping the current ones and the one before them) and, when no other Po\nserver runs, package store content nothing references.\n\nUnsupported keys in .po/config.yaml and .po/modes.yaml are reported and\nignored rather than treated as errors, so a config written for a different\nversion cannot break a build. Run po doctor for the strict check.\n\nOnly one sync runs at a time. Exit codes: 0 when the sync is ok or had nothing\nto do, 1 when it failed or only partly succeeded, 75 when another sync holds the\nlock (its pid is printed).\n\nOptions:\n --check Report missing packages or a missing web build, without writing\n --global Sync every root without registering the current repository\n --json Print one JSON line per progress event, then the final report\n -h, --help Show this help\n`;\n}\n"],"mappings":";AAAA,SAAgB,WAAmB;CACjC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BT"}
@@ -0,0 +1,4 @@
1
+ //#region src/cli/commands/sync/help.d.ts
2
+ export declare function syncHelp(): string;
3
+ //#endregion
4
+ //# sourceMappingURL=help.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.d.mts","names":[],"sources":["../../../../../src/cli/commands/sync/help.ts"],"mappings":";wBAAgB"}
@@ -0,0 +1,34 @@
1
+ //#region src/cli/commands/sync/help.ts
2
+ function syncHelp() {
3
+ return `Usage: po sync [--check] [--global] [--json]
4
+
5
+ Installs the packages every root's layers name, then ensures the global web
6
+ build and the MCP app build exist. The roots are ~/.po, every registered
7
+ workspace whose folder still exists (entries whose folder is gone are removed
8
+ with a warning), and the current repository, which sync registers as a
9
+ workspace. With --global, the current repository is not registered. When
10
+ nothing changed since the last sync and its builds exist, sync does nothing.
11
+ It records the result in ~/.po/build/current.json and every attempt in
12
+ ~/.po/build/last-attempt.json. It then removes old web, native and MCP app builds
13
+ (keeping the current ones and the one before them) and, when no other Po
14
+ server runs, package store content nothing references.
15
+
16
+ Unsupported keys in .po/config.yaml and .po/modes.yaml are reported and
17
+ ignored rather than treated as errors, so a config written for a different
18
+ version cannot break a build. Run po doctor for the strict check.
19
+
20
+ Only one sync runs at a time. Exit codes: 0 when the sync is ok or had nothing
21
+ to do, 1 when it failed or only partly succeeded, 75 when another sync holds the
22
+ lock (its pid is printed).
23
+
24
+ Options:
25
+ --check Report missing packages or a missing web build, without writing
26
+ --global Sync every root without registering the current repository
27
+ --json Print one JSON line per progress event, then the final report
28
+ -h, --help Show this help
29
+ `;
30
+ }
31
+ //#endregion
32
+ export { syncHelp };
33
+
34
+ //# sourceMappingURL=help.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.mjs","names":[],"sources":["../../../../../src/cli/commands/sync/help.ts"],"sourcesContent":["export function syncHelp(): string {\n return `Usage: po sync [--check] [--global] [--json]\n\nInstalls the packages every root's layers name, then ensures the global web\nbuild and the MCP app build exist. The roots are ~/.po, every registered\nworkspace whose folder still exists (entries whose folder is gone are removed\nwith a warning), and the current repository, which sync registers as a\nworkspace. With --global, the current repository is not registered. When\nnothing changed since the last sync and its builds exist, sync does nothing.\nIt records the result in ~/.po/build/current.json and every attempt in\n~/.po/build/last-attempt.json. It then removes old web, native and MCP app builds\n(keeping the current ones and the one before them) and, when no other Po\nserver runs, package store content nothing references.\n\nUnsupported keys in .po/config.yaml and .po/modes.yaml are reported and\nignored rather than treated as errors, so a config written for a different\nversion cannot break a build. Run po doctor for the strict check.\n\nOnly one sync runs at a time. Exit codes: 0 when the sync is ok or had nothing\nto do, 1 when it failed or only partly succeeded, 75 when another sync holds the\nlock (its pid is printed).\n\nOptions:\n --check Report missing packages or a missing web build, without writing\n --global Sync every root without registering the current repository\n --json Print one JSON line per progress event, then the final report\n -h, --help Show this help\n`;\n}\n"],"mappings":";AAAA,SAAgB,WAAmB;CACjC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BT"}
@@ -0,0 +1,215 @@
1
+ const require_runtime = require("../../../../_virtual/_rolldown/runtime.cjs");
2
+ const require_matrixOptions = require("../../matrixOptions.cjs");
3
+ require("../../../composition/harnessState/index.cjs");
4
+ const require_index$1 = require("../../../composition/repository/index.cjs");
5
+ const require_builders_cli_extensionAssembler_index = require("../../../../builders/cli/extensionAssembler/index.cjs");
6
+ const require_index$2 = require("../../../builders/web/index.cjs");
7
+ const require_index$3 = require("../../../builders/native/index.cjs");
8
+ const require_index$4 = require("../../../composition/layerPackageInstaller/index.cjs");
9
+ const require_index$5 = require("../../../composition/syncService/index.cjs");
10
+ const require_backgroundSync = require("../../../builders/server/backgroundSync.cjs");
11
+ const require_index$6 = require("../../../composition/projectTrust/index.cjs");
12
+ const require_presenter = require("./presenter.cjs");
13
+ let node_fs = require("node:fs");
14
+ node_fs = require_runtime.__toESM(node_fs, 1);
15
+ let node_path = require("node:path");
16
+ node_path = require_runtime.__toESM(node_path, 1);
17
+ let node_os = require("node:os");
18
+ node_os = require_runtime.__toESM(node_os, 1);
19
+ let _agimon_ai_po_config_config = require("@agimon-ai/po-config/config");
20
+ let _agimon_ai_po_config_majorModes = require("@agimon-ai/po-config/majorModes");
21
+ let _agimon_ai_po_config_harnessStore = require("@agimon-ai/po-config/harnessStore");
22
+ //#region src/cli/commands/sync/index.ts
23
+ /**
24
+ * `po sync`: install what every root's configuration names and ensure the global builds.
25
+ *
26
+ * The roots are the Po home, every registered workspace and the current repository, which
27
+ * sync registers unless `--global` is given. The server composes every session live from
28
+ * configuration and installed packages, so sync only makes sure the packages are there
29
+ * and the one global web build (and the MCP app build) for the current plugin set exists.
30
+ * Then, when no other Po host runs, it prunes old builds and the package store.
31
+ */
32
+ const SYNC_COMMAND = "sync";
33
+ const CHECK_OPTION = "--check";
34
+ const GLOBAL_OPTION = "--global";
35
+ const JSON_OPTION = "--json";
36
+ const SYNC_OPTIONS = /* @__PURE__ */ new Set([
37
+ CHECK_OPTION,
38
+ GLOBAL_OPTION,
39
+ JSON_OPTION
40
+ ]);
41
+ const HARNESS_ROOT_ENV = "PO_ROOT";
42
+ const PRIVATE_DIRECTORY_MODE = 448;
43
+ /** Resolves the configuration source and the root whose packages are installed. */
44
+ function resolveSyncRoots(args, environment = process.env, currentDirectory = process.cwd(), homeDirectory = environment.HOME ?? node_os.default.homedir()) {
45
+ const globalRoot = (0, _agimon_ai_po_config_config.globalDoomConfigDirectory)(homeDirectory);
46
+ const inheritedRoot = environment[HARNESS_ROOT_ENV];
47
+ const sourceRoot = inheritedRoot ? node_path.default.resolve(inheritedRoot) : require_index$1.resolveDoomConfigurationRoot(currentDirectory, homeDirectory);
48
+ const globalOnly = args.includes(GLOBAL_OPTION);
49
+ return {
50
+ globalOnly,
51
+ globalRoot,
52
+ sourceRoot,
53
+ targetRoot: globalOnly ? globalRoot : sourceRoot
54
+ };
55
+ }
56
+ const GLOBAL_SCOPE_INHERITED_KEYS = [
57
+ HARNESS_ROOT_ENV,
58
+ _agimon_ai_po_config_harnessStore.HARNESS_STATE_POINTER,
59
+ require_matrixOptions.PO_MAJOR_MODE_ENV,
60
+ require_matrixOptions.PO_DOMAINS_ENV,
61
+ require_matrixOptions.PO_PROFILE_ENV
62
+ ];
63
+ /** Removes workspace-only state before a global root is resolved. */
64
+ function environmentForSyncScope(environment, globalOnly) {
65
+ if (!globalOnly) return environment;
66
+ const scoped = { ...environment };
67
+ for (const key of GLOBAL_SCOPE_INHERITED_KEYS) delete scoped[key];
68
+ return scoped;
69
+ }
70
+ /**
71
+ * Reports the config keys sync chose to ignore.
72
+ *
73
+ * Never fatal. A key nobody recognises is usually a config written for another
74
+ * version of a layer, and refusing to build over it is worse than proceeding
75
+ * without it. The strict check lives in `po doctor`.
76
+ */
77
+ function writeConfigDiagnostics(diagnostics, output) {
78
+ if (diagnostics.length === 0) return;
79
+ const lines = diagnostics.map((entry) => ` ${entry.filePath}: ${entry.path}`).join("\n");
80
+ output.write(`config: ignored ${String(diagnostics.length)} unsupported key(s); run po doctor for the strict check\n${lines}\n`);
81
+ }
82
+ /** Renders service events through the step presenter, as text for a terminal or a pipe. */
83
+ function textRenderer(output) {
84
+ const progress = new require_presenter.SyncProgress(output);
85
+ const open = /* @__PURE__ */ new Map();
86
+ return (event) => {
87
+ if (event.type === "start") open.set(event.label, progress.start(event.label, event.message));
88
+ else if (event.type === "done") {
89
+ open.get(event.label)?.(event.summary);
90
+ open.delete(event.label);
91
+ } else if (event.type === "line") progress.line(event.label, event.message);
92
+ else output.write(require_index$5.formatSyncResult(event.result));
93
+ };
94
+ }
95
+ function jsonLine(output, value) {
96
+ output.write(`${JSON.stringify(value)}\n`);
97
+ }
98
+ /**
99
+ * What `--check` and `po doctor` report.
100
+ *
101
+ * Problems are missing packages, in this root and in the global configuration every session
102
+ * also loads, and a missing global web or native build. Warnings are roots the web build leaves out
103
+ * (another admitted workspace whose configuration cannot be composed): worth saying, but
104
+ * not something this sync can fix, so they never make the check fail.
105
+ */
106
+ function syncReadiness(targetRoot, homeDirectory, environment) {
107
+ const missingIn = (root) => {
108
+ const config = (0, _agimon_ai_po_config_majorModes.loadMajorModesConfigLenient)(root, homeDirectory, environment).config;
109
+ return require_index$4.missingLayerPackageSpecifiers(config, Object.keys(config.layers), require_builders_cli_extensionAssembler_index.createLayerResolvers(root, environment));
110
+ };
111
+ const globalRoot = (0, _agimon_ai_po_config_config.globalDoomConfigDirectory)(homeDirectory);
112
+ const packages = [...missingIn(targetRoot).map((specifier) => `configured package is not installed: ${specifier}`), ...node_path.default.resolve(targetRoot) === node_path.default.resolve(globalRoot) ? [] : missingIn(globalRoot).map((specifier) => `global package is not installed: ${specifier} (run po sync --global)`)];
113
+ if (packages.length > 0) return {
114
+ packages,
115
+ web: [],
116
+ native: [],
117
+ warnings: []
118
+ };
119
+ const warnings = [];
120
+ const pluginRoots = require_index$5.globalWebPluginRoots(targetRoot, homeDirectory, environment, (message) => warnings.push(message));
121
+ const status = require_index$2.readGlobalWebBuildStatus({
122
+ poHome: globalRoot,
123
+ pluginRoots,
124
+ environment
125
+ });
126
+ const web = status.status === "missing" ? [`global web build ${status.key} is missing`] : status.status === "failed" ? [`global web build cannot be resolved: ${status.reason}`] : [];
127
+ const nativeStatus = require_index$3.readGlobalNativeBuildStatus({
128
+ poHome: globalRoot,
129
+ pluginRoots
130
+ });
131
+ return {
132
+ packages,
133
+ web,
134
+ native: nativeStatus.status === "missing" ? [`global native build ${nativeStatus.key} is missing`] : nativeStatus.status === "failed" ? [`global native build cannot be resolved: ${nativeStatus.reason}`] : [],
135
+ warnings
136
+ };
137
+ }
138
+ /**
139
+ * Installs every root's configured packages, then ensures the global web build and the MCP app build.
140
+ *
141
+ * Exit codes: 0 when the sync is ok or had nothing to do, 1 when it failed or only partly
142
+ * succeeded, 75 when another sync holds the lock. With `--json`, each progress event is one
143
+ * JSON line and the final line is the `SyncReport`.
144
+ */
145
+ async function synchronize(args, environment = process.env, currentDirectory = process.cwd(), output = process.stdout, commandOptions = {}) {
146
+ const unknown = args.slice(1).filter((argument) => !SYNC_OPTIONS.has(argument));
147
+ if (unknown.length > 0) throw new Error(`Unknown po sync option(s): ${unknown.join(" ")}`);
148
+ const check = args.includes(CHECK_OPTION);
149
+ const json = args.includes(JSON_OPTION);
150
+ const homeDirectory = commandOptions.homeDirectory ?? environment.HOME ?? node_os.default.homedir();
151
+ const { globalOnly, globalRoot, sourceRoot, targetRoot } = resolveSyncRoots(args, environment, currentDirectory, homeDirectory);
152
+ const scopedEnvironment = environmentForSyncScope(environment, globalOnly);
153
+ if (globalOnly && !check) node_fs.default.mkdirSync(globalRoot, {
154
+ recursive: true,
155
+ mode: PRIVATE_DIRECTORY_MODE
156
+ });
157
+ const modes = (0, _agimon_ai_po_config_majorModes.loadMajorModesConfigLenient)(sourceRoot, homeDirectory, scopedEnvironment);
158
+ const diagnostics = [...require_index$6.loadDoomConfigLenient(sourceRoot, homeDirectory).diagnostics, ...modes.diagnostics];
159
+ if (json && diagnostics.length > 0) jsonLine(output, {
160
+ type: "config",
161
+ diagnostics
162
+ });
163
+ else if (!json) writeConfigDiagnostics(diagnostics, output);
164
+ if (check) {
165
+ const readiness = syncReadiness(targetRoot, homeDirectory, scopedEnvironment);
166
+ for (const warning of readiness.warnings) output.write(`warning: ${warning}\n`);
167
+ const problems = [
168
+ ...readiness.packages,
169
+ ...readiness.web,
170
+ ...readiness.native
171
+ ];
172
+ if (problems.length === 0) {
173
+ output.write("po sync is up to date\n");
174
+ return 0;
175
+ }
176
+ output.write(`po sync is out of date:\n${problems.map((entry) => ` ${entry}`).join("\n")}\n`);
177
+ return 1;
178
+ }
179
+ const report = await require_index$5.runSync({
180
+ homeDirectory,
181
+ environment: scopedEnvironment,
182
+ globalRoot,
183
+ ...globalOnly ? {} : { repoRoot: sourceRoot },
184
+ origin: require_backgroundSync.syncParentPid(environment) === void 0 ? "cli" : "background",
185
+ onEvent: json ? (event) => jsonLine(output, event) : textRenderer(output)
186
+ }, commandOptions.deps);
187
+ if (json) jsonLine(output, {
188
+ type: "report",
189
+ report
190
+ });
191
+ else for (const error of report.errors) output.write(`error: ${error}\n`);
192
+ return require_index$5.syncExitCode(report.status);
193
+ }
194
+ /** Compatibility API. Executables call the command function directly. */
195
+ var SyncCommand = class {
196
+ name = SYNC_COMMAND;
197
+ homeDirectory;
198
+ constructor(options = {}) {
199
+ this.homeDirectory = options.homeDirectory;
200
+ }
201
+ matches(args) {
202
+ return args[0] === this.name;
203
+ }
204
+ async execute(args, environment = process.env, currentDirectory = process.cwd(), output = process.stdout) {
205
+ return synchronize(args, environment, currentDirectory, output, { homeDirectory: this.homeDirectory });
206
+ }
207
+ };
208
+ //#endregion
209
+ exports.SyncCommand = SyncCommand;
210
+ exports.environmentForSyncScope = environmentForSyncScope;
211
+ exports.resolveSyncRoots = resolveSyncRoots;
212
+ exports.syncReadiness = syncReadiness;
213
+ exports.synchronize = synchronize;
214
+
215
+ //# sourceMappingURL=index.cjs.map