@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,333 @@
1
+ const require_runtime = require("../../../_virtual/_rolldown/runtime.cjs");
2
+ require("../../composition/harnessState/index.cjs");
3
+ const require_entryResolution = require("../cli/entryResolution.cjs");
4
+ const require_index$1 = require("../../composition/layerPackageInstaller/index.cjs");
5
+ const require_index$2 = require("../../composition/syncService/index.cjs");
6
+ let node_fs = require("node:fs");
7
+ node_fs = require_runtime.__toESM(node_fs, 1);
8
+ let node_path = require("node:path");
9
+ node_path = require_runtime.__toESM(node_path, 1);
10
+ let node_child_process = require("node:child_process");
11
+ let _agimon_ai_po_config_harnessStore = require("@agimon-ai/po-config/harnessStore");
12
+ let _agimon_ai_po_config_harnessState = require("@agimon-ai/po-config/harnessState");
13
+ //#region src/builders/server/backgroundSync.ts
14
+ /**
15
+ * Background sync: hosts that only read what sync prepared start `po sync --json --global` as
16
+ * a child process when a root is out of date, and pick its artifacts up when it exits. The
17
+ * terminal app instead syncs from its repository without `--global`, which registers it.
18
+ *
19
+ * At most one job runs per host. Requests that arrive while it runs merge into one rerun, and
20
+ * nothing waits on a job, so admission and session open never block on sync.
21
+ *
22
+ * ponytail: there is no fs.watch on `.po`, so a config edit syncs at the next checkpoint
23
+ * (server start, admission, session open). Add a watcher if edits must apply sooner.
24
+ */
25
+ /** Set on every background sync child to the pid of the host that started it. */
26
+ const SYNC_PARENT_PID_ENV = "PO_SYNC_PARENT_PID";
27
+ /** `PO_AUTO_SYNC=0` turns background sync off, for CI and the system test. */
28
+ const AUTO_SYNC_ENV = "PO_AUTO_SYNC";
29
+ const AUTO_SYNC_OFF = "0";
30
+ const ROOT_ENV = "PO_ROOT";
31
+ const SYNC_ARGS = ["sync", "--json"];
32
+ const GLOBAL_OPTION = "--global";
33
+ const CLI_ENTRY_SEGMENTS = [
34
+ "dist",
35
+ "bin",
36
+ "cli.mjs"
37
+ ];
38
+ /** The host pid a sync child was started by, or undefined when this process is not one. */
39
+ function syncParentPid(environment) {
40
+ const pid = Number(environment[SYNC_PARENT_PID_ENV]);
41
+ return Number.isInteger(pid) && pid > 0 ? pid : void 0;
42
+ }
43
+ /**
44
+ * The environment a sync child runs under, and the one a host compares root fingerprints
45
+ * with: no harness state and no root of the host's own, so both resolve every root alike.
46
+ */
47
+ function syncEnvironment(environment) {
48
+ const scoped = { ...environment };
49
+ for (const key of [
50
+ ROOT_ENV,
51
+ _agimon_ai_po_config_harnessStore.HARNESS_STATE_POINTER,
52
+ ...Object.values(_agimon_ai_po_config_harnessState.HARNESS_STATE_KEYS)
53
+ ]) delete scoped[key];
54
+ return scoped;
55
+ }
56
+ function errorMessage(error) {
57
+ return error instanceof Error ? error.message : String(error);
58
+ }
59
+ /** Whether this host may start background sync: on unless `PO_AUTO_SYNC=0`, and never inside a sync child. */
60
+ function autoSyncEnabled(environment) {
61
+ return environment["PO_AUTO_SYNC"] !== AUTO_SYNC_OFF && syncParentPid(environment) === void 0;
62
+ }
63
+ function createBackgroundSync(options) {
64
+ const enabled = autoSyncEnabled(options.environment);
65
+ let running = false;
66
+ let rerun = false;
67
+ const waiters = [];
68
+ const settle = () => {
69
+ if (!running) for (const resolve of waiters.splice(0)) resolve();
70
+ };
71
+ const start = () => {
72
+ const entry = options.cliEntry ?? node_path.default.join(require_entryResolution.poPackageRoot(), ...CLI_ENTRY_SEGMENTS);
73
+ if (!node_fs.default.existsSync(entry)) {
74
+ options.onNotice(`Background sync is unavailable because '${entry}' is missing; run po sync.`);
75
+ return false;
76
+ }
77
+ let child;
78
+ try {
79
+ const scope = options.repoRoot === void 0 ? [GLOBAL_OPTION] : [];
80
+ child = (options.spawn ?? node_child_process.spawn)(process.execPath, [
81
+ ...process.execArgv,
82
+ entry,
83
+ ...SYNC_ARGS,
84
+ ...scope
85
+ ], {
86
+ ...options.repoRoot === void 0 ? {} : { cwd: options.repoRoot },
87
+ env: {
88
+ ...syncEnvironment(options.environment),
89
+ [SYNC_PARENT_PID_ENV]: String(options.parentPid ?? process.pid)
90
+ },
91
+ stdio: "ignore",
92
+ detached: options.detached === true,
93
+ windowsHide: true
94
+ });
95
+ } catch (error) {
96
+ options.onNotice(`Background sync could not start: ${errorMessage(error)}`);
97
+ return false;
98
+ }
99
+ running = true;
100
+ if (options.detached === true) child.unref();
101
+ let finished = false;
102
+ const finish = (code) => {
103
+ if (finished) return;
104
+ finished = true;
105
+ if (code !== null && code !== 0 && code !== 75) options.onNotice(`Background sync exited with code ${String(code)}.`);
106
+ Promise.resolve().then(() => options.onExit?.(code)).catch((error) => options.onNotice(`Picking up background sync failed: ${errorMessage(error)}`)).finally(() => {
107
+ running = false;
108
+ if (rerun) {
109
+ rerun = false;
110
+ start();
111
+ }
112
+ settle();
113
+ });
114
+ };
115
+ child.once("error", (error) => {
116
+ options.onNotice(`Background sync could not start: ${error.message}`);
117
+ finish(null);
118
+ });
119
+ child.once("exit", (code) => finish(code));
120
+ return true;
121
+ };
122
+ return {
123
+ request() {
124
+ if (!enabled) return false;
125
+ if (running) {
126
+ rerun = true;
127
+ return true;
128
+ }
129
+ return start();
130
+ },
131
+ get syncing() {
132
+ return running || rerun;
133
+ },
134
+ idle() {
135
+ return new Promise((resolve) => {
136
+ waiters.push(resolve);
137
+ settle();
138
+ });
139
+ }
140
+ };
141
+ }
142
+ /**
143
+ * Publishes a build only when the key it is given differs from the last one published, so a
144
+ * sync that changed nothing republishes nothing. A key whose build cannot be read is skipped.
145
+ */
146
+ function createKeyedPickup(read, publish) {
147
+ let current;
148
+ return (key) => {
149
+ if (key === null || key === void 0 || key === current) return "unchanged";
150
+ const build = read(key);
151
+ if (build === void 0) return "missing";
152
+ current = key;
153
+ publish(build, key);
154
+ return "published";
155
+ };
156
+ }
157
+ /**
158
+ * The build keys a host publishes. Its own pointer names them. Before sync ever wrote one (the
159
+ * first start after an upgrade), this install's derived keys, else the newest web build. A
160
+ * pointer another Po install wrote is refused: what the host already publishes stays (an
161
+ * undefined key changes nothing), and a kind it has not published yet takes only this
162
+ * install's own build while its own sync runs, never the other install's.
163
+ */
164
+ function syncedBuildKeys(input) {
165
+ const { pointer, published } = input;
166
+ if (input.ownsPointer && pointer !== void 0) return {
167
+ webKey: pointer.webKey,
168
+ nativeKey: pointer.nativeKey
169
+ };
170
+ if (pointer === void 0) {
171
+ const own = input.ownKeys();
172
+ return {
173
+ webKey: own.webKey ?? input.newestWebKey(),
174
+ nativeKey: own.nativeKey
175
+ };
176
+ }
177
+ if (published.web && published.native) return {
178
+ webKey: void 0,
179
+ nativeKey: void 0
180
+ };
181
+ const own = input.ownKeys();
182
+ return {
183
+ webKey: published.web ? void 0 : own.webKey,
184
+ nativeKey: published.native ? void 0 : own.nativeKey
185
+ };
186
+ }
187
+ /**
188
+ * The checkpoints a host runs when it admits a root or opens a session: request a background
189
+ * job when the root changed since the last sync, and warn about what it opened without. Each
190
+ * root's warning is emitted once until it changes.
191
+ */
192
+ function createSyncCheckpoints(input) {
193
+ const fingerprintEnvironment = syncEnvironment(input.environment);
194
+ const warned = /* @__PURE__ */ new Map();
195
+ /** The state each root last requested a sync for: pointer generation, catalogue and selection. */
196
+ const requested = /* @__PURE__ */ new Map();
197
+ /** This host's install, compared with the one that wrote the pointer. */
198
+ const host = () => require_index$2.syncHostIdentity(input.globalRoot, fingerprintEnvironment);
199
+ /** The last foreign pointer (install and generation) this host warned about. */
200
+ let warnedTakeover;
201
+ /**
202
+ * The root's state when it is stale (no pointer, a pointer another Po install wrote, a changed
203
+ * catalogue, or a selection that differs from the pointer's), else undefined.
204
+ *
205
+ * A foreign pointer's state includes its generation, which every sync moves, so each takeover
206
+ * of the shared runtime is one new stale state and gets one resync. That settles: the resync
207
+ * writes this host's own pointer, which is never stale for being foreign.
208
+ */
209
+ const staleState = (root) => {
210
+ const pointer = require_index$2.readSyncPointer(input.globalRoot);
211
+ const catalogueHash = require_index$1.packageCatalogHash(input.environment);
212
+ const fingerprint = require_index$2.rootSelectionFingerprint(root, input.homeDirectory, fingerprintEnvironment);
213
+ if (pointer !== void 0 && pointer.host !== host()) return JSON.stringify([
214
+ "host",
215
+ pointer.host ?? null,
216
+ pointer.generation,
217
+ catalogueHash,
218
+ fingerprint
219
+ ]);
220
+ if (pointer?.catalogueHash === catalogueHash && pointer.fingerprints?.[root] === fingerprint) return void 0;
221
+ return JSON.stringify([
222
+ pointer?.generation ?? null,
223
+ catalogueHash,
224
+ fingerprint
225
+ ]);
226
+ };
227
+ const stale = (root) => staleState(root) !== void 0;
228
+ /**
229
+ * Requests one sync per stale state of a root. A sync that ran and could not change the
230
+ * pointer (it failed) is not requested again until the root, the catalogue or the pointer
231
+ * moves, so a broken root never makes every checkpoint start another full sync.
232
+ */
233
+ const requestIfStale = (check) => {
234
+ const state = staleState(check.root);
235
+ if (state === void 0) return false;
236
+ if (requested.get(check.root) === state) return true;
237
+ if (!input.background.request(`${check.label} changed since the last sync`)) return false;
238
+ requested.set(check.root, state);
239
+ return true;
240
+ };
241
+ /** The missing artifacts a sync was requested for, each with the pointer state it was missing under. */
242
+ const requestedMissing = /* @__PURE__ */ new Set();
243
+ /** Why the last attempt, or failing that the pointer, could not prepare each selector. */
244
+ const failures = (root) => {
245
+ const reports = [require_index$2.readSyncLastAttempt(input.globalRoot), require_index$2.readSyncPointer(input.globalRoot)];
246
+ const reasons = /* @__PURE__ */ new Map();
247
+ for (const report of reports) for (const entry of report?.roots.find((candidate) => candidate.root === root)?.unsynced ?? []) if (!reasons.has(entry.selector)) reasons.set(entry.selector, entry.reason);
248
+ return reasons;
249
+ };
250
+ return {
251
+ stale,
252
+ /**
253
+ * Whether this host may publish the builds `pointer` names: only when its own Po install wrote
254
+ * it. Every pointer another install writes (each sync moves its generation) is refused, and
255
+ * gets one background sync of the global root and one warning, so this host keeps its previous
256
+ * publication until its own sync replaces the pointer.
257
+ */
258
+ ownsPointer(pointer) {
259
+ if (pointer === void 0) return false;
260
+ const own = host();
261
+ if (pointer.host === own) return true;
262
+ const foreign = pointer.host ?? "an older Po";
263
+ const resyncing = requestIfStale({
264
+ root: input.globalRoot,
265
+ label: "The global scope",
266
+ unsynced: []
267
+ });
268
+ const takeover = JSON.stringify([foreign, pointer.generation]);
269
+ if (warnedTakeover !== takeover) {
270
+ warnedTakeover = takeover;
271
+ input.onNotice(`Another Po install (${foreign}) replaced the shared packages; ${resyncing ? `resyncing with this install (${own})` : "run po sync from this install to resync"}. Use one Po install so they stop replacing each other.`);
272
+ }
273
+ return false;
274
+ },
275
+ /**
276
+ * Requests one sync per missing artifact (such as an MCP app build key) and pointer state,
277
+ * the same limit stale roots get: a sync that ran and still did not produce it is not
278
+ * requested again until the pointer or the catalogue moves.
279
+ */
280
+ requestMissing(artifact, reason) {
281
+ const pointer = require_index$2.readSyncPointer(input.globalRoot);
282
+ const state = JSON.stringify([
283
+ artifact,
284
+ pointer?.generation ?? null,
285
+ require_index$1.packageCatalogHash(input.environment)
286
+ ]);
287
+ if (requestedMissing.has(state) || !input.background.request(reason)) return false;
288
+ requestedMissing.add(state);
289
+ return true;
290
+ },
291
+ /** Requests a job when `request` allows and the root is stale, then warns about `unsynced`. */
292
+ check(check, request = true) {
293
+ if (request) requestIfStale(check);
294
+ const syncing = input.background.syncing;
295
+ if (check.unsynced.length === 0) {
296
+ warned.delete(check.root);
297
+ return {
298
+ syncing,
299
+ reasons: []
300
+ };
301
+ }
302
+ const known = failures(check.root);
303
+ const count = check.unsynced.length;
304
+ const noun = count === 1 ? "extension" : "extensions";
305
+ const reasons = check.unsynced.map((selector) => {
306
+ const reason = known.get(selector);
307
+ if (syncing || reason === void 0) return `${selector} is not synced yet`;
308
+ return `Sync could not prepare ${selector}: ${reason}.`;
309
+ });
310
+ const message = syncing ? `${check.label} opened without ${String(count)} ${noun} that ${count === 1 ? "is" : "are"} still syncing: ${check.unsynced.join(", ")}. ${count === 1 ? "It loads" : "They load"} when sync finishes.` : check.unsynced.every((selector) => known.has(selector)) ? reasons.join(" ") : `${check.label} opened without ${String(count)} ${noun} that ${count === 1 ? "is" : "are"} not synced: ${check.unsynced.join(", ")}. Run po sync to prepare them.`;
311
+ if (warned.get(check.root) !== message) {
312
+ warned.set(check.root, message);
313
+ input.onNotice(message);
314
+ }
315
+ return {
316
+ syncing,
317
+ reasons
318
+ };
319
+ }
320
+ };
321
+ }
322
+ //#endregion
323
+ exports.AUTO_SYNC_ENV = AUTO_SYNC_ENV;
324
+ exports.SYNC_PARENT_PID_ENV = SYNC_PARENT_PID_ENV;
325
+ exports.autoSyncEnabled = autoSyncEnabled;
326
+ exports.createBackgroundSync = createBackgroundSync;
327
+ exports.createKeyedPickup = createKeyedPickup;
328
+ exports.createSyncCheckpoints = createSyncCheckpoints;
329
+ exports.syncEnvironment = syncEnvironment;
330
+ exports.syncParentPid = syncParentPid;
331
+ exports.syncedBuildKeys = syncedBuildKeys;
332
+
333
+ //# sourceMappingURL=backgroundSync.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backgroundSync.cjs","names":["HARNESS_STATE_POINTER","HARNESS_STATE_KEYS","path","poPackageRoot","fs","spawnProcess","syncHostIdentity","readSyncPointer","packageCatalogHash","rootSelectionFingerprint","readSyncLastAttempt"],"sources":["../../../../src/builders/server/backgroundSync.ts"],"sourcesContent":["import { type ChildProcess, spawn as spawnProcess, type SpawnOptions } from 'node:child_process';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nimport { HARNESS_STATE_KEYS, HARNESS_STATE_POINTER } from '../../composition/harnessState';\nimport { packageCatalogHash } from '../../composition/layerPackageInstaller';\nimport {\n readSyncLastAttempt,\n readSyncPointer,\n rootSelectionFingerprint,\n SYNC_EXIT_BUSY,\n SYNC_EXIT_OK,\n type SyncPointer,\n syncHostIdentity,\n} from '../../composition/syncService';\nimport { poPackageRoot } from '../cli/entryResolution';\n\n/**\n * Background sync: hosts that only read what sync prepared start `po sync --json --global` as\n * a child process when a root is out of date, and pick its artifacts up when it exits. The\n * terminal app instead syncs from its repository without `--global`, which registers it.\n *\n * At most one job runs per host. Requests that arrive while it runs merge into one rerun, and\n * nothing waits on a job, so admission and session open never block on sync.\n *\n * ponytail: there is no fs.watch on `.po`, so a config edit syncs at the next checkpoint\n * (server start, admission, session open). Add a watcher if edits must apply sooner.\n */\n\n/** Set on every background sync child to the pid of the host that started it. */\nexport const SYNC_PARENT_PID_ENV = 'PO_SYNC_PARENT_PID';\n/** `PO_AUTO_SYNC=0` turns background sync off, for CI and the system test. */\nexport const AUTO_SYNC_ENV = 'PO_AUTO_SYNC';\nconst AUTO_SYNC_OFF = '0';\nconst ROOT_ENV = 'PO_ROOT';\nconst SYNC_ARGS = ['sync', '--json'] as const;\nconst GLOBAL_OPTION = '--global';\nconst CLI_ENTRY_SEGMENTS = ['dist', 'bin', 'cli.mjs'] as const;\n\n/** The host pid a sync child was started by, or undefined when this process is not one. */\nexport function syncParentPid(environment: NodeJS.ProcessEnv): number | undefined {\n const pid = Number(environment[SYNC_PARENT_PID_ENV]);\n return Number.isInteger(pid) && pid > 0 ? pid : undefined;\n}\n\n/**\n * The environment a sync child runs under, and the one a host compares root fingerprints\n * with: no harness state and no root of the host's own, so both resolve every root alike.\n */\nexport function syncEnvironment(environment: NodeJS.ProcessEnv): NodeJS.ProcessEnv {\n const scoped = { ...environment };\n for (const key of [ROOT_ENV, HARNESS_STATE_POINTER, ...Object.values(HARNESS_STATE_KEYS)]) delete scoped[key];\n return scoped;\n}\n\nfunction errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nexport interface BackgroundSyncOptions {\n environment: NodeJS.ProcessEnv;\n onNotice: (message: string) => void;\n /** Runs after each job's child exits, before a merged rerun starts. */\n onExit?: (code: number | null) => void | Promise<void>;\n /** Lets the child outlive this process, for a terminal app that exits before sync finishes. */\n detached?: boolean;\n /**\n * The repository the child syncs from, without `--global`, so sync registers it as a workspace.\n * Without one the child runs with `--global` and registers nothing.\n */\n repoRoot?: string;\n /** Test seams. */\n spawn?: (command: string, args: readonly string[], options: SpawnOptions) => ChildProcess;\n cliEntry?: string;\n parentPid?: number;\n}\n\nexport interface BackgroundSync {\n /** Starts a job, or merges into the rerun of the running one. False when background sync is off. */\n request(reason: string): boolean;\n /** Whether a job runs or a rerun is queued. */\n readonly syncing: boolean;\n /** Resolves once no job runs and none is queued. */\n idle(): Promise<void>;\n}\n\n/** Whether this host may start background sync: on unless `PO_AUTO_SYNC=0`, and never inside a sync child. */\nexport function autoSyncEnabled(environment: NodeJS.ProcessEnv): boolean {\n return environment[AUTO_SYNC_ENV] !== AUTO_SYNC_OFF && syncParentPid(environment) === undefined;\n}\n\nexport function createBackgroundSync(options: BackgroundSyncOptions): BackgroundSync {\n const enabled = autoSyncEnabled(options.environment);\n let running = false;\n let rerun = false;\n const waiters: (() => void)[] = [];\n const settle = (): void => {\n if (!running) for (const resolve of waiters.splice(0)) resolve();\n };\n const start = (): boolean => {\n const entry = options.cliEntry ?? path.join(poPackageRoot(), ...CLI_ENTRY_SEGMENTS);\n if (!fs.existsSync(entry)) {\n options.onNotice(`Background sync is unavailable because '${entry}' is missing; run po sync.`);\n return false;\n }\n let child: ChildProcess;\n try {\n // On desktop the child inherits ELECTRON_RUN_AS_NODE, so the app binary runs it as node.\n const scope = options.repoRoot === undefined ? [GLOBAL_OPTION] : [];\n child = (options.spawn ?? spawnProcess)(process.execPath, [...process.execArgv, entry, ...SYNC_ARGS, ...scope], {\n ...(options.repoRoot === undefined ? {} : { cwd: options.repoRoot }),\n env: {\n ...syncEnvironment(options.environment),\n [SYNC_PARENT_PID_ENV]: String(options.parentPid ?? process.pid),\n },\n stdio: 'ignore',\n detached: options.detached === true,\n windowsHide: true,\n });\n } catch (error) {\n options.onNotice(`Background sync could not start: ${errorMessage(error)}`);\n return false;\n }\n running = true;\n if (options.detached === true) child.unref();\n let finished = false;\n const finish = (code: number | null): void => {\n if (finished) return;\n finished = true;\n if (code !== null && code !== SYNC_EXIT_OK && code !== SYNC_EXIT_BUSY)\n options.onNotice(`Background sync exited with code ${String(code)}.`);\n void Promise.resolve()\n .then(() => options.onExit?.(code))\n .catch((error: unknown) => options.onNotice(`Picking up background sync failed: ${errorMessage(error)}`))\n .finally(() => {\n running = false;\n if (rerun) {\n rerun = false;\n start();\n }\n settle();\n });\n };\n child.once('error', (error) => {\n options.onNotice(`Background sync could not start: ${error.message}`);\n finish(null);\n });\n child.once('exit', (code) => finish(code));\n return true;\n };\n return {\n request(): boolean {\n if (!enabled) return false;\n if (running) {\n rerun = true;\n return true;\n }\n return start();\n },\n get syncing() {\n return running || rerun;\n },\n idle() {\n return new Promise<void>((resolve) => {\n waiters.push(resolve);\n settle();\n });\n },\n };\n}\n\n/**\n * Publishes a build only when the key it is given differs from the last one published, so a\n * sync that changed nothing republishes nothing. A key whose build cannot be read is skipped.\n */\nexport function createKeyedPickup<T>(\n read: (key: string) => T | undefined,\n publish: (build: T, key: string) => void,\n): (key: string | null | undefined) => 'published' | 'unchanged' | 'missing' {\n let current: string | undefined;\n return (key) => {\n if (key === null || key === undefined || key === current) return 'unchanged';\n const build = read(key);\n if (build === undefined) return 'missing';\n current = key;\n publish(build, key);\n return 'published';\n };\n}\n\nexport interface SyncedBuildKeys {\n webKey: string | null | undefined;\n nativeKey: string | null | undefined;\n}\n\nexport interface SyncedBuildKeysInput {\n pointer: SyncPointer | undefined;\n /** Whether this host's own Po install wrote `pointer`. */\n ownsPointer: boolean;\n /** The kinds this host already publishes. */\n published: { web: boolean; native: boolean };\n /** The keys this install derives the way sync does, each only when its build exists. */\n ownKeys: () => { webKey?: string; nativeKey?: string };\n /** The newest web build in the Po home, whichever install made it. */\n newestWebKey: () => string | undefined;\n}\n\n/**\n * The build keys a host publishes. Its own pointer names them. Before sync ever wrote one (the\n * first start after an upgrade), this install's derived keys, else the newest web build. A\n * pointer another Po install wrote is refused: what the host already publishes stays (an\n * undefined key changes nothing), and a kind it has not published yet takes only this\n * install's own build while its own sync runs, never the other install's.\n */\nexport function syncedBuildKeys(input: SyncedBuildKeysInput): SyncedBuildKeys {\n const { pointer, published } = input;\n if (input.ownsPointer && pointer !== undefined) return { webKey: pointer.webKey, nativeKey: pointer.nativeKey };\n if (pointer === undefined) {\n const own = input.ownKeys();\n return { webKey: own.webKey ?? input.newestWebKey(), nativeKey: own.nativeKey };\n }\n if (published.web && published.native) return { webKey: undefined, nativeKey: undefined };\n const own = input.ownKeys();\n return {\n webKey: published.web ? undefined : own.webKey,\n nativeKey: published.native ? undefined : own.nativeKey,\n };\n}\n\nexport interface SyncCheckpointsInput {\n globalRoot: string;\n homeDirectory: string;\n environment: NodeJS.ProcessEnv;\n background: BackgroundSync;\n onNotice: (message: string) => void;\n}\n\nexport interface RootSyncCheck {\n root: string;\n /** How the root is named in a warning, such as `Workspace 'po'`. */\n label: string;\n /** The selectors this host left out because they are not synced. */\n unsynced: readonly string[];\n}\n\nexport interface RootSyncStatus {\n syncing: boolean;\n /** One line per unsynced selector: why sync could not prepare it, or that it is still syncing. */\n reasons: string[];\n}\n\n/**\n * The checkpoints a host runs when it admits a root or opens a session: request a background\n * job when the root changed since the last sync, and warn about what it opened without. Each\n * root's warning is emitted once until it changes.\n */\nexport function createSyncCheckpoints(input: SyncCheckpointsInput) {\n const fingerprintEnvironment = syncEnvironment(input.environment);\n const warned = new Map<string, string>();\n /** The state each root last requested a sync for: pointer generation, catalogue and selection. */\n const requested = new Map<string, string>();\n /** This host's install, compared with the one that wrote the pointer. */\n const host = (): string => syncHostIdentity(input.globalRoot, fingerprintEnvironment);\n /** The last foreign pointer (install and generation) this host warned about. */\n let warnedTakeover: string | undefined;\n /**\n * The root's state when it is stale (no pointer, a pointer another Po install wrote, a changed\n * catalogue, or a selection that differs from the pointer's), else undefined.\n *\n * A foreign pointer's state includes its generation, which every sync moves, so each takeover\n * of the shared runtime is one new stale state and gets one resync. That settles: the resync\n * writes this host's own pointer, which is never stale for being foreign.\n */\n const staleState = (root: string): string | undefined => {\n const pointer = readSyncPointer(input.globalRoot);\n const catalogueHash = packageCatalogHash(input.environment);\n const fingerprint = rootSelectionFingerprint(root, input.homeDirectory, fingerprintEnvironment);\n if (pointer !== undefined && pointer.host !== host())\n return JSON.stringify(['host', pointer.host ?? null, pointer.generation, catalogueHash, fingerprint]);\n if (pointer?.catalogueHash === catalogueHash && pointer.fingerprints?.[root] === fingerprint) return undefined;\n return JSON.stringify([pointer?.generation ?? null, catalogueHash, fingerprint]);\n };\n const stale = (root: string): boolean => staleState(root) !== undefined;\n /**\n * Requests one sync per stale state of a root. A sync that ran and could not change the\n * pointer (it failed) is not requested again until the root, the catalogue or the pointer\n * moves, so a broken root never makes every checkpoint start another full sync.\n */\n const requestIfStale = (check: RootSyncCheck): boolean => {\n const state = staleState(check.root);\n if (state === undefined) return false;\n if (requested.get(check.root) === state) return true;\n if (!input.background.request(`${check.label} changed since the last sync`)) return false;\n requested.set(check.root, state);\n return true;\n };\n /** The missing artifacts a sync was requested for, each with the pointer state it was missing under. */\n const requestedMissing = new Set<string>();\n /** Why the last attempt, or failing that the pointer, could not prepare each selector. */\n const failures = (root: string): Map<string, string> => {\n const reports = [readSyncLastAttempt(input.globalRoot), readSyncPointer(input.globalRoot)];\n const reasons = new Map<string, string>();\n for (const report of reports)\n for (const entry of report?.roots.find((candidate) => candidate.root === root)?.unsynced ?? [])\n if (!reasons.has(entry.selector)) reasons.set(entry.selector, entry.reason);\n return reasons;\n };\n return {\n stale,\n /**\n * Whether this host may publish the builds `pointer` names: only when its own Po install wrote\n * it. Every pointer another install writes (each sync moves its generation) is refused, and\n * gets one background sync of the global root and one warning, so this host keeps its previous\n * publication until its own sync replaces the pointer.\n */\n ownsPointer(pointer: SyncPointer | undefined): pointer is SyncPointer {\n if (pointer === undefined) return false;\n const own = host();\n if (pointer.host === own) return true;\n const foreign = pointer.host ?? 'an older Po';\n const resyncing = requestIfStale({ root: input.globalRoot, label: 'The global scope', unsynced: [] });\n const takeover = JSON.stringify([foreign, pointer.generation]);\n if (warnedTakeover !== takeover) {\n warnedTakeover = takeover;\n input.onNotice(\n `Another Po install (${foreign}) replaced the shared packages; ${resyncing ? `resyncing with this install (${own})` : 'run po sync from this install to resync'}. Use one Po install so they stop replacing each other.`,\n );\n }\n return false;\n },\n /**\n * Requests one sync per missing artifact (such as an MCP app build key) and pointer state,\n * the same limit stale roots get: a sync that ran and still did not produce it is not\n * requested again until the pointer or the catalogue moves.\n */\n requestMissing(artifact: string, reason: string): boolean {\n const pointer = readSyncPointer(input.globalRoot);\n const state = JSON.stringify([artifact, pointer?.generation ?? null, packageCatalogHash(input.environment)]);\n if (requestedMissing.has(state) || !input.background.request(reason)) return false;\n requestedMissing.add(state);\n return true;\n },\n /** Requests a job when `request` allows and the root is stale, then warns about `unsynced`. */\n check(check: RootSyncCheck, request = true): RootSyncStatus {\n if (request) requestIfStale(check);\n const syncing = input.background.syncing;\n if (check.unsynced.length === 0) {\n warned.delete(check.root);\n return { syncing, reasons: [] };\n }\n const known = failures(check.root);\n const count = check.unsynced.length;\n const noun = count === 1 ? 'extension' : 'extensions';\n const reasons = check.unsynced.map((selector) => {\n const reason = known.get(selector);\n if (syncing || reason === undefined) return `${selector} is not synced yet`;\n return `Sync could not prepare ${selector}: ${reason}.`;\n });\n const message = syncing\n ? `${check.label} opened without ${String(count)} ${noun} that ${count === 1 ? 'is' : 'are'} still syncing: ${check.unsynced.join(', ')}. ${count === 1 ? 'It loads' : 'They load'} when sync finishes.`\n : check.unsynced.every((selector) => known.has(selector))\n ? reasons.join(' ')\n : `${check.label} opened without ${String(count)} ${noun} that ${count === 1 ? 'is' : 'are'} not synced: ${check.unsynced.join(', ')}. Run po sync to prepare them.`;\n if (warned.get(check.root) !== message) {\n warned.set(check.root, message);\n input.onNotice(message);\n }\n return { syncing, reasons };\n },\n };\n}\n"],"mappings":"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"}