@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.
- package/LICENSE +21 -0
- package/README.md +755 -0
- package/assets/banner.png +0 -0
- package/assets/banner.svg +25 -0
- package/assets/favicon.svg +15 -0
- package/assets/logo-light.png +0 -0
- package/assets/logo-light.svg +25 -0
- package/assets/logo.png +0 -0
- package/assets/logo.svg +25 -0
- package/assets/mascot.png +0 -0
- package/assets/mascot.svg +25 -0
- package/dist/_virtual/_rolldown/runtime.cjs +23 -0
- package/dist/antigravity.cjs +5 -0
- package/dist/antigravity.d.mts +2 -0
- package/dist/antigravity.mjs +2 -0
- package/dist/apiContracts.cjs +11 -0
- package/dist/apiContracts.cjs.map +1 -0
- package/dist/apiContracts.d.mts +52 -0
- package/dist/apiContracts.d.mts.map +1 -0
- package/dist/apiContracts.mjs +7 -0
- package/dist/apiContracts.mjs.map +1 -0
- package/dist/baseCommand.cjs +3 -0
- package/dist/baseCommand.d.mts +2 -0
- package/dist/baseCommand.mjs +2 -0
- package/dist/bin/cli.cjs +24 -0
- package/dist/bin/cli.cjs.map +1 -0
- package/dist/bin/cli.d.mts +1 -0
- package/dist/bin/cli.mjs +25 -0
- package/dist/bin/cli.mjs.map +1 -0
- package/dist/bin/doomRunner.cjs +33 -0
- package/dist/bin/doomRunner.cjs.map +1 -0
- package/dist/bin/doomRunner.d.mts +4 -0
- package/dist/bin/doomRunner.d.mts.map +1 -0
- package/dist/bin/doomRunner.mjs +32 -0
- package/dist/bin/doomRunner.mjs.map +1 -0
- package/dist/bin/serve.cjs +30 -0
- package/dist/bin/serve.cjs.map +1 -0
- package/dist/bin/serve.d.mts +1 -0
- package/dist/bin/serve.mjs +31 -0
- package/dist/bin/serve.mjs.map +1 -0
- package/dist/builders/cli/extensionAssembler/index.cjs +342 -0
- package/dist/builders/cli/extensionAssembler/index.cjs.map +1 -0
- package/dist/builders/cli/extensionAssembler/index.d.mts +85 -0
- package/dist/builders/cli/extensionAssembler/index.d.mts.map +1 -0
- package/dist/builders/cli/extensionAssembler/index.mjs +335 -0
- package/dist/builders/cli/extensionAssembler/index.mjs.map +1 -0
- package/dist/catalog/index.json +430 -0
- package/dist/cli.cjs +28 -0
- package/dist/cli.d.mts +11 -0
- package/dist/cli.mjs +11 -0
- package/dist/cliApp.cjs +6 -0
- package/dist/cliApp.d.mts +2 -0
- package/dist/cliApp.mjs +2 -0
- package/dist/codex.cjs +8 -0
- package/dist/codex.d.mts +2 -0
- package/dist/codex.mjs +2 -0
- package/dist/commands.cjs +18 -0
- package/dist/commands.d.mts +9 -0
- package/dist/commands.mjs +9 -0
- package/dist/compatibility.cjs +27 -0
- package/dist/compatibility.d.mts +6 -0
- package/dist/compatibility.mjs +6 -0
- package/dist/compatibilityCommand.cjs +4 -0
- package/dist/compatibilityCommand.d.mts +2 -0
- package/dist/compatibilityCommand.mjs +2 -0
- package/dist/compatibilityContext.cjs +3 -0
- package/dist/compatibilityContext.d.mts +2 -0
- package/dist/compatibilityContext.mjs +2 -0
- package/dist/compatibilityOptions.cjs +5 -0
- package/dist/compatibilityOptions.d.mts +2 -0
- package/dist/compatibilityOptions.mjs +2 -0
- package/dist/config.cjs +163 -0
- package/dist/config.d.mts +7 -0
- package/dist/config.mjs +7 -0
- package/dist/doctorCommand.cjs +5 -0
- package/dist/doctorCommand.d.mts +2 -0
- package/dist/doctorCommand.mjs +2 -0
- package/dist/emitMcpCommand.cjs +4 -0
- package/dist/emitMcpCommand.d.mts +2 -0
- package/dist/emitMcpCommand.mjs +2 -0
- package/dist/explainCommand.cjs +5 -0
- package/dist/explainCommand.d.mts +2 -0
- package/dist/explainCommand.mjs +2 -0
- package/dist/extensions/server.cjs +39 -0
- package/dist/extensions/server.cjs.map +1 -0
- package/dist/extensions/server.d.mts +5 -0
- package/dist/extensions/server.d.mts.map +1 -0
- package/dist/extensions/server.mjs +34 -0
- package/dist/extensions/server.mjs.map +1 -0
- package/dist/harnessContext.cjs +5 -0
- package/dist/harnessContext.d.mts +2 -0
- package/dist/harnessContext.mjs +2 -0
- package/dist/harnessState.cjs +19 -0
- package/dist/harnessState.d.mts +2 -0
- package/dist/harnessState.mjs +2 -0
- package/dist/help.cjs +12 -0
- package/dist/help.d.mts +6 -0
- package/dist/help.mjs +6 -0
- package/dist/index.cjs +306 -0
- package/dist/index.d.mts +40 -0
- package/dist/index.mjs +37 -0
- package/dist/initCommand.cjs +4 -0
- package/dist/initCommand.d.mts +2 -0
- package/dist/initCommand.mjs +2 -0
- package/dist/matrixOptions.cjs +28 -0
- package/dist/matrixOptions.d.mts +2 -0
- package/dist/matrixOptions.mjs +2 -0
- package/dist/matrixSwitcher.cjs +11 -0
- package/dist/matrixSwitcher.d.mts +3 -0
- package/dist/matrixSwitcher.mjs +3 -0
- package/dist/mcpFilter.cjs +9 -0
- package/dist/mcpFilter.d.mts +1 -0
- package/dist/mcpFilter.mjs +2 -0
- package/dist/options.cjs +3 -0
- package/dist/options.d.mts +2 -0
- package/dist/options.mjs +2 -0
- package/dist/process.cjs +12 -0
- package/dist/process.d.mts +2 -0
- package/dist/process.mjs +2 -0
- package/dist/projectTrust.cjs +6 -0
- package/dist/projectTrust.d.mts +2 -0
- package/dist/projectTrust.mjs +2 -0
- package/dist/repository.cjs +5 -0
- package/dist/repository.d.mts +2 -0
- package/dist/repository.mjs +2 -0
- package/dist/resourceCollector.cjs +9 -0
- package/dist/resourceCollector.d.mts +1 -0
- package/dist/resourceCollector.mjs +2 -0
- package/dist/router.cjs +6 -0
- package/dist/router.d.mts +2 -0
- package/dist/router.mjs +2 -0
- package/dist/services.cjs +97 -0
- package/dist/services.d.mts +12 -0
- package/dist/services.mjs +12 -0
- package/dist/shared.cjs +18 -0
- package/dist/shared.d.mts +2 -0
- package/dist/shared.mjs +2 -0
- package/dist/src/bin/agentDirectory.cjs +27 -0
- package/dist/src/bin/agentDirectory.cjs.map +1 -0
- package/dist/src/bin/agentDirectory.mjs +26 -0
- package/dist/src/bin/agentDirectory.mjs.map +1 -0
- package/dist/src/builders/apiContractExport/index.cjs +126 -0
- package/dist/src/builders/apiContractExport/index.cjs.map +1 -0
- package/dist/src/builders/apiContractExport/index.mjs +123 -0
- package/dist/src/builders/apiContractExport/index.mjs.map +1 -0
- package/dist/src/builders/cli/entryResolution.cjs +39 -0
- package/dist/src/builders/cli/entryResolution.cjs.map +1 -0
- package/dist/src/builders/cli/entryResolution.mjs +35 -0
- package/dist/src/builders/cli/entryResolution.mjs.map +1 -0
- package/dist/src/builders/cli/harnessContext.cjs +175 -0
- package/dist/src/builders/cli/harnessContext.cjs.map +1 -0
- package/dist/src/builders/cli/harnessContext.d.mts +48 -0
- package/dist/src/builders/cli/harnessContext.d.mts.map +1 -0
- package/dist/src/builders/cli/harnessContext.mjs +167 -0
- package/dist/src/builders/cli/harnessContext.mjs.map +1 -0
- package/dist/src/builders/cli/sessionComposition.cjs +27 -0
- package/dist/src/builders/cli/sessionComposition.cjs.map +1 -0
- package/dist/src/builders/cli/sessionComposition.mjs +26 -0
- package/dist/src/builders/cli/sessionComposition.mjs.map +1 -0
- package/dist/src/builders/hooks/index.cjs +238 -0
- package/dist/src/builders/hooks/index.cjs.map +1 -0
- package/dist/src/builders/hooks/index.mjs +231 -0
- package/dist/src/builders/hooks/index.mjs.map +1 -0
- package/dist/src/builders/native/index.cjs +176 -0
- package/dist/src/builders/native/index.cjs.map +1 -0
- package/dist/src/builders/native/index.d.mts +36 -0
- package/dist/src/builders/native/index.d.mts.map +1 -0
- package/dist/src/builders/native/index.mjs +170 -0
- package/dist/src/builders/native/index.mjs.map +1 -0
- package/dist/src/builders/server/backgroundSync.cjs +333 -0
- package/dist/src/builders/server/backgroundSync.cjs.map +1 -0
- package/dist/src/builders/server/backgroundSync.mjs +320 -0
- package/dist/src/builders/server/backgroundSync.mjs.map +1 -0
- package/dist/src/builders/server/computerUseBinding.cjs +273 -0
- package/dist/src/builders/server/computerUseBinding.cjs.map +1 -0
- package/dist/src/builders/server/computerUseBinding.mjs +269 -0
- package/dist/src/builders/server/computerUseBinding.mjs.map +1 -0
- package/dist/src/builders/server/computerUseRecordings.cjs +188 -0
- package/dist/src/builders/server/computerUseRecordings.cjs.map +1 -0
- package/dist/src/builders/server/computerUseRecordings.mjs +184 -0
- package/dist/src/builders/server/computerUseRecordings.mjs.map +1 -0
- package/dist/src/builders/server/defaultWorkspace.cjs +38 -0
- package/dist/src/builders/server/defaultWorkspace.cjs.map +1 -0
- package/dist/src/builders/server/defaultWorkspace.mjs +35 -0
- package/dist/src/builders/server/defaultWorkspace.mjs.map +1 -0
- package/dist/src/builders/server/idleRestart.cjs +149 -0
- package/dist/src/builders/server/idleRestart.cjs.map +1 -0
- package/dist/src/builders/server/idleRestart.mjs +136 -0
- package/dist/src/builders/server/idleRestart.mjs.map +1 -0
- package/dist/src/builders/server/index.cjs +63 -0
- package/dist/src/builders/server/index.cjs.map +1 -0
- package/dist/src/builders/server/index.mjs +60 -0
- package/dist/src/builders/server/index.mjs.map +1 -0
- package/dist/src/builders/server/logSink.cjs +57 -0
- package/dist/src/builders/server/logSink.cjs.map +1 -0
- package/dist/src/builders/server/logSink.mjs +57 -0
- package/dist/src/builders/server/logSink.mjs.map +1 -0
- package/dist/src/builders/server/mcpApp.cjs +152 -0
- package/dist/src/builders/server/mcpApp.cjs.map +1 -0
- package/dist/src/builders/server/mcpApp.d.mts +18 -0
- package/dist/src/builders/server/mcpApp.d.mts.map +1 -0
- package/dist/src/builders/server/mcpApp.mjs +147 -0
- package/dist/src/builders/server/mcpApp.mjs.map +1 -0
- package/dist/src/builders/server/mcpAppBuild.cjs +111 -0
- package/dist/src/builders/server/mcpAppBuild.cjs.map +1 -0
- package/dist/src/builders/server/mcpAppBuild.d.mts +24 -0
- package/dist/src/builders/server/mcpAppBuild.d.mts.map +1 -0
- package/dist/src/builders/server/mcpAppBuild.mjs +105 -0
- package/dist/src/builders/server/mcpAppBuild.mjs.map +1 -0
- package/dist/src/builders/server/mcpBundle.cjs +87 -0
- package/dist/src/builders/server/mcpBundle.cjs.map +1 -0
- package/dist/src/builders/server/mcpBundle.d.mts +23 -0
- package/dist/src/builders/server/mcpBundle.d.mts.map +1 -0
- package/dist/src/builders/server/mcpBundle.mjs +84 -0
- package/dist/src/builders/server/mcpBundle.mjs.map +1 -0
- package/dist/src/builders/server/packageReloadCheck.cjs +62 -0
- package/dist/src/builders/server/packageReloadCheck.cjs.map +1 -0
- package/dist/src/builders/server/packageReloadCheck.mjs +61 -0
- package/dist/src/builders/server/packageReloadCheck.mjs.map +1 -0
- package/dist/src/builders/server/packageUrl.cjs +210 -0
- package/dist/src/builders/server/packageUrl.cjs.map +1 -0
- package/dist/src/builders/server/packageUrl.mjs +203 -0
- package/dist/src/builders/server/packageUrl.mjs.map +1 -0
- package/dist/src/builders/server/runtime.cjs +1428 -0
- package/dist/src/builders/server/runtime.cjs.map +1 -0
- package/dist/src/builders/server/runtime.mjs +1420 -0
- package/dist/src/builders/server/runtime.mjs.map +1 -0
- package/dist/src/builders/server/runtimeResources.cjs +72 -0
- package/dist/src/builders/server/runtimeResources.cjs.map +1 -0
- package/dist/src/builders/server/runtimeResources.mjs +71 -0
- package/dist/src/builders/server/runtimeResources.mjs.map +1 -0
- package/dist/src/builders/server/selectionStatus.cjs +12 -0
- package/dist/src/builders/server/selectionStatus.cjs.map +1 -0
- package/dist/src/builders/server/selectionStatus.mjs +12 -0
- package/dist/src/builders/server/selectionStatus.mjs.map +1 -0
- package/dist/src/builders/server/sessionArguments.cjs +63 -0
- package/dist/src/builders/server/sessionArguments.cjs.map +1 -0
- package/dist/src/builders/server/sessionArguments.mjs +62 -0
- package/dist/src/builders/server/sessionArguments.mjs.map +1 -0
- package/dist/src/builders/server/shutdown.cjs +16 -0
- package/dist/src/builders/server/shutdown.cjs.map +1 -0
- package/dist/src/builders/server/shutdown.mjs +16 -0
- package/dist/src/builders/server/shutdown.mjs.map +1 -0
- package/dist/src/builders/server/webTemplateDecision.cjs +34 -0
- package/dist/src/builders/server/webTemplateDecision.cjs.map +1 -0
- package/dist/src/builders/server/webTemplateDecision.mjs +32 -0
- package/dist/src/builders/server/webTemplateDecision.mjs.map +1 -0
- package/dist/src/builders/server/workspaceCheckout.cjs +31 -0
- package/dist/src/builders/server/workspaceCheckout.cjs.map +1 -0
- package/dist/src/builders/server/workspaceCheckout.mjs +29 -0
- package/dist/src/builders/server/workspaceCheckout.mjs.map +1 -0
- package/dist/src/builders/web/bundle.cjs +225 -0
- package/dist/src/builders/web/bundle.cjs.map +1 -0
- package/dist/src/builders/web/bundle.d.mts +65 -0
- package/dist/src/builders/web/bundle.d.mts.map +1 -0
- package/dist/src/builders/web/bundle.mjs +221 -0
- package/dist/src/builders/web/bundle.mjs.map +1 -0
- package/dist/src/builders/web/bundleAssetPolicy.cjs +96 -0
- package/dist/src/builders/web/bundleAssetPolicy.cjs.map +1 -0
- package/dist/src/builders/web/bundleAssetPolicy.d.mts +22 -0
- package/dist/src/builders/web/bundleAssetPolicy.d.mts.map +1 -0
- package/dist/src/builders/web/bundleAssetPolicy.mjs +95 -0
- package/dist/src/builders/web/bundleAssetPolicy.mjs.map +1 -0
- package/dist/src/builders/web/index.cjs +361 -0
- package/dist/src/builders/web/index.cjs.map +1 -0
- package/dist/src/builders/web/index.d.mts +109 -0
- package/dist/src/builders/web/index.d.mts.map +1 -0
- package/dist/src/builders/web/index.mjs +342 -0
- package/dist/src/builders/web/index.mjs.map +1 -0
- package/dist/src/builders/web/webDevRoots.cjs +27 -0
- package/dist/src/builders/web/webDevRoots.cjs.map +1 -0
- package/dist/src/builders/web/webDevRoots.d.mts +22 -0
- package/dist/src/builders/web/webDevRoots.d.mts.map +1 -0
- package/dist/src/builders/web/webDevRoots.mjs +25 -0
- package/dist/src/builders/web/webDevRoots.mjs.map +1 -0
- package/dist/src/builders/web/webPluginGenerate.cjs +188 -0
- package/dist/src/builders/web/webPluginGenerate.cjs.map +1 -0
- package/dist/src/builders/web/webPluginGenerate.d.mts +56 -0
- package/dist/src/builders/web/webPluginGenerate.d.mts.map +1 -0
- package/dist/src/builders/web/webPluginGenerate.mjs +178 -0
- package/dist/src/builders/web/webPluginGenerate.mjs.map +1 -0
- package/dist/src/builders/web/webPluginManifest.cjs +128 -0
- package/dist/src/builders/web/webPluginManifest.cjs.map +1 -0
- package/dist/src/builders/web/webPluginManifest.d.mts +64 -0
- package/dist/src/builders/web/webPluginManifest.d.mts.map +1 -0
- package/dist/src/builders/web/webPluginManifest.mjs +118 -0
- package/dist/src/builders/web/webPluginManifest.mjs.map +1 -0
- package/dist/src/builders/web/webPluginScan.cjs +57 -0
- package/dist/src/builders/web/webPluginScan.cjs.map +1 -0
- package/dist/src/builders/web/webPluginScan.d.mts +19 -0
- package/dist/src/builders/web/webPluginScan.d.mts.map +1 -0
- package/dist/src/builders/web/webPluginScan.mjs +54 -0
- package/dist/src/builders/web/webPluginScan.mjs.map +1 -0
- package/dist/src/builders/web/webPluginVite.cjs +255 -0
- package/dist/src/builders/web/webPluginVite.cjs.map +1 -0
- package/dist/src/builders/web/webPluginVite.d.mts +64 -0
- package/dist/src/builders/web/webPluginVite.d.mts.map +1 -0
- package/dist/src/builders/web/webPluginVite.mjs +242 -0
- package/dist/src/builders/web/webPluginVite.mjs.map +1 -0
- package/dist/src/cli/cliApp.cjs +187 -0
- package/dist/src/cli/cliApp.cjs.map +1 -0
- package/dist/src/cli/cliApp.d.mts +32 -0
- package/dist/src/cli/cliApp.d.mts.map +1 -0
- package/dist/src/cli/cliApp.mjs +184 -0
- package/dist/src/cli/cliApp.mjs.map +1 -0
- package/dist/src/cli/commands/api-export/index.cjs +66 -0
- package/dist/src/cli/commands/api-export/index.cjs.map +1 -0
- package/dist/src/cli/commands/api-export/index.mjs +62 -0
- package/dist/src/cli/commands/api-export/index.mjs.map +1 -0
- package/dist/src/cli/commands/baseCommand.cjs +16 -0
- package/dist/src/cli/commands/baseCommand.cjs.map +1 -0
- package/dist/src/cli/commands/baseCommand.d.mts +24 -0
- package/dist/src/cli/commands/baseCommand.d.mts.map +1 -0
- package/dist/src/cli/commands/baseCommand.mjs +16 -0
- package/dist/src/cli/commands/baseCommand.mjs.map +1 -0
- package/dist/src/cli/commands/compat/context.cjs +115 -0
- package/dist/src/cli/commands/compat/context.cjs.map +1 -0
- package/dist/src/cli/commands/compat/context.d.mts +22 -0
- package/dist/src/cli/commands/compat/context.d.mts.map +1 -0
- package/dist/src/cli/commands/compat/context.mjs +110 -0
- package/dist/src/cli/commands/compat/context.mjs.map +1 -0
- package/dist/src/cli/commands/compat/help.cjs +26 -0
- package/dist/src/cli/commands/compat/help.cjs.map +1 -0
- package/dist/src/cli/commands/compat/help.d.mts +4 -0
- package/dist/src/cli/commands/compat/help.d.mts.map +1 -0
- package/dist/src/cli/commands/compat/help.mjs +25 -0
- package/dist/src/cli/commands/compat/help.mjs.map +1 -0
- package/dist/src/cli/commands/compat/index.cjs +73 -0
- package/dist/src/cli/commands/compat/index.cjs.map +1 -0
- package/dist/src/cli/commands/compat/index.d.mts +14 -0
- package/dist/src/cli/commands/compat/index.d.mts.map +1 -0
- package/dist/src/cli/commands/compat/index.mjs +70 -0
- package/dist/src/cli/commands/compat/index.mjs.map +1 -0
- package/dist/src/cli/commands/compat/options.cjs +88 -0
- package/dist/src/cli/commands/compat/options.cjs.map +1 -0
- package/dist/src/cli/commands/compat/options.d.mts +15 -0
- package/dist/src/cli/commands/compat/options.d.mts.map +1 -0
- package/dist/src/cli/commands/compat/options.mjs +86 -0
- package/dist/src/cli/commands/compat/options.mjs.map +1 -0
- package/dist/src/cli/commands/compat/providers/antigravity.cjs +294 -0
- package/dist/src/cli/commands/compat/providers/antigravity.cjs.map +1 -0
- package/dist/src/cli/commands/compat/providers/antigravity.d.mts +9 -0
- package/dist/src/cli/commands/compat/providers/antigravity.d.mts.map +1 -0
- package/dist/src/cli/commands/compat/providers/antigravity.mjs +289 -0
- package/dist/src/cli/commands/compat/providers/antigravity.mjs.map +1 -0
- package/dist/src/cli/commands/compat/providers/codex.cjs +178 -0
- package/dist/src/cli/commands/compat/providers/codex.cjs.map +1 -0
- package/dist/src/cli/commands/compat/providers/codex.d.mts +17 -0
- package/dist/src/cli/commands/compat/providers/codex.d.mts.map +1 -0
- package/dist/src/cli/commands/compat/providers/codex.mjs +170 -0
- package/dist/src/cli/commands/compat/providers/codex.mjs.map +1 -0
- package/dist/src/cli/commands/compat/providers/index.cjs +65 -0
- package/dist/src/cli/commands/compat/providers/index.cjs.map +1 -0
- package/dist/src/cli/commands/compat/providers/index.d.mts +15 -0
- package/dist/src/cli/commands/compat/providers/index.d.mts.map +1 -0
- package/dist/src/cli/commands/compat/providers/index.mjs +45 -0
- package/dist/src/cli/commands/compat/providers/index.mjs.map +1 -0
- package/dist/src/cli/commands/compat/providers/process.cjs +172 -0
- package/dist/src/cli/commands/compat/providers/process.cjs.map +1 -0
- package/dist/src/cli/commands/compat/providers/process.d.mts +33 -0
- package/dist/src/cli/commands/compat/providers/process.d.mts.map +1 -0
- package/dist/src/cli/commands/compat/providers/process.mjs +159 -0
- package/dist/src/cli/commands/compat/providers/process.mjs.map +1 -0
- package/dist/src/cli/commands/compat/providers/shared.cjs +76 -0
- package/dist/src/cli/commands/compat/providers/shared.cjs.map +1 -0
- package/dist/src/cli/commands/compat/providers/shared.d.mts +40 -0
- package/dist/src/cli/commands/compat/providers/shared.d.mts.map +1 -0
- package/dist/src/cli/commands/compat/providers/shared.mjs +61 -0
- package/dist/src/cli/commands/compat/providers/shared.mjs.map +1 -0
- package/dist/src/cli/commands/compat/types.d.mts +31 -0
- package/dist/src/cli/commands/compat/types.d.mts.map +1 -0
- package/dist/src/cli/commands/doctor/help.cjs +19 -0
- package/dist/src/cli/commands/doctor/help.cjs.map +1 -0
- package/dist/src/cli/commands/doctor/help.d.mts +4 -0
- package/dist/src/cli/commands/doctor/help.d.mts.map +1 -0
- package/dist/src/cli/commands/doctor/help.mjs +19 -0
- package/dist/src/cli/commands/doctor/help.mjs.map +1 -0
- package/dist/src/cli/commands/doctor/index.cjs +118 -0
- package/dist/src/cli/commands/doctor/index.cjs.map +1 -0
- package/dist/src/cli/commands/doctor/index.d.mts +33 -0
- package/dist/src/cli/commands/doctor/index.d.mts.map +1 -0
- package/dist/src/cli/commands/doctor/index.mjs +113 -0
- package/dist/src/cli/commands/doctor/index.mjs.map +1 -0
- package/dist/src/cli/commands/emit-mcp/index.cjs +32 -0
- package/dist/src/cli/commands/emit-mcp/index.cjs.map +1 -0
- package/dist/src/cli/commands/emit-mcp/index.d.mts +19 -0
- package/dist/src/cli/commands/emit-mcp/index.d.mts.map +1 -0
- package/dist/src/cli/commands/emit-mcp/index.mjs +31 -0
- package/dist/src/cli/commands/emit-mcp/index.mjs.map +1 -0
- package/dist/src/cli/commands/explain/index.cjs +155 -0
- package/dist/src/cli/commands/explain/index.cjs.map +1 -0
- package/dist/src/cli/commands/explain/index.d.mts +57 -0
- package/dist/src/cli/commands/explain/index.d.mts.map +1 -0
- package/dist/src/cli/commands/explain/index.mjs +150 -0
- package/dist/src/cli/commands/explain/index.mjs.map +1 -0
- package/dist/src/cli/commands/init/constants.cjs +11 -0
- package/dist/src/cli/commands/init/constants.cjs.map +1 -0
- package/dist/src/cli/commands/init/constants.mjs +11 -0
- package/dist/src/cli/commands/init/constants.mjs.map +1 -0
- package/dist/src/cli/commands/init/help.cjs +17 -0
- package/dist/src/cli/commands/init/help.cjs.map +1 -0
- package/dist/src/cli/commands/init/help.d.mts +4 -0
- package/dist/src/cli/commands/init/help.d.mts.map +1 -0
- package/dist/src/cli/commands/init/help.mjs +17 -0
- package/dist/src/cli/commands/init/help.mjs.map +1 -0
- package/dist/src/cli/commands/init/index.cjs +67 -0
- package/dist/src/cli/commands/init/index.cjs.map +1 -0
- package/dist/src/cli/commands/init/index.d.mts +12 -0
- package/dist/src/cli/commands/init/index.d.mts.map +1 -0
- package/dist/src/cli/commands/init/index.mjs +63 -0
- package/dist/src/cli/commands/init/index.mjs.map +1 -0
- package/dist/src/cli/commands/init/presenter.cjs +140 -0
- package/dist/src/cli/commands/init/presenter.cjs.map +1 -0
- package/dist/src/cli/commands/init/presenter.d.mts +8 -0
- package/dist/src/cli/commands/init/presenter.d.mts.map +1 -0
- package/dist/src/cli/commands/init/presenter.mjs +140 -0
- package/dist/src/cli/commands/init/presenter.mjs.map +1 -0
- package/dist/src/cli/commands/sync/help.cjs +34 -0
- package/dist/src/cli/commands/sync/help.cjs.map +1 -0
- package/dist/src/cli/commands/sync/help.d.mts +4 -0
- package/dist/src/cli/commands/sync/help.d.mts.map +1 -0
- package/dist/src/cli/commands/sync/help.mjs +34 -0
- package/dist/src/cli/commands/sync/help.mjs.map +1 -0
- package/dist/src/cli/commands/sync/index.cjs +215 -0
- package/dist/src/cli/commands/sync/index.cjs.map +1 -0
- package/dist/src/cli/commands/sync/index.d.mts +20 -0
- package/dist/src/cli/commands/sync/index.d.mts.map +1 -0
- package/dist/src/cli/commands/sync/index.mjs +206 -0
- package/dist/src/cli/commands/sync/index.mjs.map +1 -0
- package/dist/src/cli/commands/sync/presenter.cjs +58 -0
- package/dist/src/cli/commands/sync/presenter.cjs.map +1 -0
- package/dist/src/cli/commands/sync/presenter.d.mts +16 -0
- package/dist/src/cli/commands/sync/presenter.d.mts.map +1 -0
- package/dist/src/cli/commands/sync/presenter.mjs +57 -0
- package/dist/src/cli/commands/sync/presenter.mjs.map +1 -0
- package/dist/src/cli/commands/sync/workflow.cjs +16 -0
- package/dist/src/cli/commands/sync/workflow.cjs.map +1 -0
- package/dist/src/cli/commands/sync/workflow.mjs +16 -0
- package/dist/src/cli/commands/sync/workflow.mjs.map +1 -0
- package/dist/src/cli/commands/web/index.cjs +88 -0
- package/dist/src/cli/commands/web/index.cjs.map +1 -0
- package/dist/src/cli/commands/web/index.mjs +85 -0
- package/dist/src/cli/commands/web/index.mjs.map +1 -0
- package/dist/src/cli/harnessOptions.cjs +70 -0
- package/dist/src/cli/harnessOptions.cjs.map +1 -0
- package/dist/src/cli/harnessOptions.d.mts +26 -0
- package/dist/src/cli/harnessOptions.d.mts.map +1 -0
- package/dist/src/cli/harnessOptions.mjs +66 -0
- package/dist/src/cli/harnessOptions.mjs.map +1 -0
- package/dist/src/cli/help.cjs +82 -0
- package/dist/src/cli/help.cjs.map +1 -0
- package/dist/src/cli/help.d.mts +10 -0
- package/dist/src/cli/help.d.mts.map +1 -0
- package/dist/src/cli/help.mjs +78 -0
- package/dist/src/cli/help.mjs.map +1 -0
- package/dist/src/cli/matrixOptions.cjs +178 -0
- package/dist/src/cli/matrixOptions.cjs.map +1 -0
- package/dist/src/cli/matrixOptions.d.mts +90 -0
- package/dist/src/cli/matrixOptions.d.mts.map +1 -0
- package/dist/src/cli/matrixOptions.mjs +151 -0
- package/dist/src/cli/matrixOptions.mjs.map +1 -0
- package/dist/src/cli/options.cjs +281 -0
- package/dist/src/cli/options.cjs.map +1 -0
- package/dist/src/cli/options.d.mts +5 -0
- package/dist/src/cli/options.d.mts.map +1 -0
- package/dist/src/cli/options.mjs +279 -0
- package/dist/src/cli/options.mjs.map +1 -0
- package/dist/src/cli/router.cjs +57 -0
- package/dist/src/cli/router.cjs.map +1 -0
- package/dist/src/cli/router.d.mts +32 -0
- package/dist/src/cli/router.d.mts.map +1 -0
- package/dist/src/cli/router.mjs +54 -0
- package/dist/src/cli/router.mjs.map +1 -0
- package/dist/src/cli/server/options.cjs +71 -0
- package/dist/src/cli/server/options.cjs.map +1 -0
- package/dist/src/cli/server/options.mjs +70 -0
- package/dist/src/cli/server/options.mjs.map +1 -0
- package/dist/src/cli/server/processGuards.cjs +83 -0
- package/dist/src/cli/server/processGuards.cjs.map +1 -0
- package/dist/src/cli/server/processGuards.mjs +79 -0
- package/dist/src/cli/server/processGuards.mjs.map +1 -0
- package/dist/src/cli/server/run.cjs +69 -0
- package/dist/src/cli/server/run.cjs.map +1 -0
- package/dist/src/cli/server/run.mjs +66 -0
- package/dist/src/cli/server/run.mjs.map +1 -0
- package/dist/src/composition/harnessState/index.cjs +48 -0
- package/dist/src/composition/harnessState/index.cjs.map +1 -0
- package/dist/src/composition/harnessState/index.d.mts +19 -0
- package/dist/src/composition/harnessState/index.d.mts.map +1 -0
- package/dist/src/composition/harnessState/index.mjs +34 -0
- package/dist/src/composition/harnessState/index.mjs.map +1 -0
- package/dist/src/composition/layerPackageInstaller/index.cjs +651 -0
- package/dist/src/composition/layerPackageInstaller/index.cjs.map +1 -0
- package/dist/src/composition/layerPackageInstaller/index.d.mts +74 -0
- package/dist/src/composition/layerPackageInstaller/index.d.mts.map +1 -0
- package/dist/src/composition/layerPackageInstaller/index.mjs +637 -0
- package/dist/src/composition/layerPackageInstaller/index.mjs.map +1 -0
- package/dist/src/composition/poHomeMigration/index.cjs +234 -0
- package/dist/src/composition/poHomeMigration/index.cjs.map +1 -0
- package/dist/src/composition/poHomeMigration/index.d.mts +12 -0
- package/dist/src/composition/poHomeMigration/index.d.mts.map +1 -0
- package/dist/src/composition/poHomeMigration/index.mjs +226 -0
- package/dist/src/composition/poHomeMigration/index.mjs.map +1 -0
- package/dist/src/composition/projectTrust/index.cjs +51 -0
- package/dist/src/composition/projectTrust/index.cjs.map +1 -0
- package/dist/src/composition/projectTrust/index.d.mts +22 -0
- package/dist/src/composition/projectTrust/index.d.mts.map +1 -0
- package/dist/src/composition/projectTrust/index.mjs +48 -0
- package/dist/src/composition/projectTrust/index.mjs.map +1 -0
- package/dist/src/composition/repository/index.cjs +68 -0
- package/dist/src/composition/repository/index.cjs.map +1 -0
- package/dist/src/composition/repository/index.d.mts +22 -0
- package/dist/src/composition/repository/index.d.mts.map +1 -0
- package/dist/src/composition/repository/index.mjs +63 -0
- package/dist/src/composition/repository/index.mjs.map +1 -0
- package/dist/src/composition/syncPrune/index.cjs +85 -0
- package/dist/src/composition/syncPrune/index.cjs.map +1 -0
- package/dist/src/composition/syncPrune/index.d.mts +33 -0
- package/dist/src/composition/syncPrune/index.d.mts.map +1 -0
- package/dist/src/composition/syncPrune/index.mjs +82 -0
- package/dist/src/composition/syncPrune/index.mjs.map +1 -0
- package/dist/src/composition/syncService/index.cjs +808 -0
- package/dist/src/composition/syncService/index.cjs.map +1 -0
- package/dist/src/composition/syncService/index.d.mts +65 -0
- package/dist/src/composition/syncService/index.d.mts.map +1 -0
- package/dist/src/composition/syncService/index.mjs +792 -0
- package/dist/src/composition/syncService/index.mjs.map +1 -0
- package/dist/src/composition/syncService/localBuilds.cjs +367 -0
- package/dist/src/composition/syncService/localBuilds.cjs.map +1 -0
- package/dist/src/composition/syncService/localBuilds.mjs +358 -0
- package/dist/src/composition/syncService/localBuilds.mjs.map +1 -0
- package/dist/src/composition/transitionLayers.cjs +17 -0
- package/dist/src/composition/transitionLayers.cjs.map +1 -0
- package/dist/src/composition/transitionLayers.d.mts +6 -0
- package/dist/src/composition/transitionLayers.d.mts.map +1 -0
- package/dist/src/composition/transitionLayers.mjs +16 -0
- package/dist/src/composition/transitionLayers.mjs.map +1 -0
- package/dist/src/composition/types/harness.d.mts +52 -0
- package/dist/src/composition/types/harness.d.mts.map +1 -0
- package/dist/src/extensions/setupDiagnostics.cjs +65 -0
- package/dist/src/extensions/setupDiagnostics.cjs.map +1 -0
- package/dist/src/extensions/setupDiagnostics.mjs +64 -0
- package/dist/src/extensions/setupDiagnostics.mjs.map +1 -0
- package/dist/utils.cjs +4 -0
- package/dist/utils.d.mts +2 -0
- package/dist/utils.mjs +2 -0
- package/dist/webBuilder.cjs +59 -0
- package/dist/webBuilder.d.mts +9 -0
- package/dist/webBuilder.mjs +9 -0
- package/docs/server/api-export.md +86 -0
- package/docs/server/api.md +144 -0
- package/docs/server/getting-started.md +114 -0
- package/docs/server/index.md +67 -0
- package/docs/server/ipc.md +97 -0
- package/docs/server/lifecycle.md +108 -0
- package/docs/server/security.md +101 -0
- package/llms.txt +12 -0
- package/package.json +295 -0
- package/src/prompts/po-author-extension/SKILL.md +35 -0
- package/src/prompts/po-author-extension/references/extension-contract.md +134 -0
package/README.md
ADDED
|
@@ -0,0 +1,755 @@
|
|
|
1
|
+
# Po
|
|
2
|
+
|
|
3
|
+
**An agent harness that loads only the skills and tools you name.**
|
|
4
|
+
|
|
5
|
+
> It begins with one useful MCP server. Then another. Soon the agent fixing a heading
|
|
6
|
+
> wakes up with database tools, browser controls, and their small novel of schemas. This
|
|
7
|
+
> is our config.
|
|
8
|
+
|
|
9
|
+
Po is an opinionated, composable agent harness built on
|
|
10
|
+
[Pi](https://github.com/earendil-works/pi). It is tailored for people whose agent has one MCP
|
|
11
|
+
server too many. It turns extensions, skills, MCP servers, and system prompts into explicit
|
|
12
|
+
session configuration instead of background noise.
|
|
13
|
+
|
|
14
|
+

|
|
15
|
+
|
|
16
|
+
Plugin systems scope what an agent knows. They do less to scope which configured plugins and MCP
|
|
17
|
+
servers a particular session can load. Claude Code's `enableAllProjectMcpServers` and static
|
|
18
|
+
denylist are repository-wide. Po draws that loading boundary around the session. Pick a major
|
|
19
|
+
mode and some domains; add a profile if you want one. Four YAML files decide what loads;
|
|
20
|
+
`po --explain` tells you what got in, why, and what it costs before launch.
|
|
21
|
+
|
|
22
|
+
It borrows its shape from [Doom Emacs Core](https://github.com/doomemacs/core): quick to
|
|
23
|
+
start, close to Pi, opinionated where defaults help, and easy to pull apart when they do
|
|
24
|
+
not. Use it as-is, build your own config on top, or raid it for parts.
|
|
25
|
+
|
|
26
|
+
## Contents
|
|
27
|
+
|
|
28
|
+
[Install](#install) · [Try Po](#try-po-without-replacing-your-pi-setup) ·
|
|
29
|
+
[Philosophy](#philosophy) · [What this buys you](#what-this-buys-you) · [Features](#features) ·
|
|
30
|
+
[Configuration](#configuration) · [Trust and data boundaries](#trust-and-data-boundaries) ·
|
|
31
|
+
[CLI reference](#cli-reference) · [Troubleshooting](#troubleshooting-and-direct-use) ·
|
|
32
|
+
[Architecture](#architecture) · [Development](#development)
|
|
33
|
+
|
|
34
|
+
## Install
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
npm install -g @agimon-ai/po @agimon-ai/po-web
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
The package owns the CLI and the [`po-server` executable and server API](docs/server/index.md) used
|
|
41
|
+
by the web and desktop clients. Bare `po` starts the `po-web` console from `@agimon-ai/po-web`, which
|
|
42
|
+
depends on `po`, so `po` finds it at run time and prints install guidance when it is missing.
|
|
43
|
+
|
|
44
|
+
The root package contains the fixed host foundation only. Feature packages are selected by
|
|
45
|
+
`.po/modes.yaml` and installed into the consumer repository when they are first needed.
|
|
46
|
+
|
|
47
|
+
## Status and requirements
|
|
48
|
+
|
|
49
|
+
Po is alpha software. Configuration and package boundaries may still change between alpha
|
|
50
|
+
releases.
|
|
51
|
+
|
|
52
|
+
- Node.js 24 or newer
|
|
53
|
+
- Release targets: macOS arm64, Linux x64, and Linux arm64
|
|
54
|
+
- Pi 1.0.0 for packages that declare it as a peer requirement
|
|
55
|
+
|
|
56
|
+
## Pi 1.0 sessions and Codex Fast
|
|
57
|
+
|
|
58
|
+
Headless sessions use fresh `durable-v1` storage. Earlier headless sessions cannot be resumed or
|
|
59
|
+
converted. Their files remain untouched, without migration or backups.
|
|
60
|
+
|
|
61
|
+
Use `/fast on|off` in CLI or server sessions, or the **Fast** switch in the web model picker.
|
|
62
|
+
Fast requests Codex priority service, which may increase cost, independently of thinking effort.
|
|
63
|
+
Fresh top-level sessions default to off. New subagents and child sessions inherit the parent's
|
|
64
|
+
current setting, then persist their own setting across resumes. Other providers never receive
|
|
65
|
+
Po's priority flag.
|
|
66
|
+
|
|
67
|
+
## Quick start
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
po init # seed ~/.po
|
|
71
|
+
po sync # install configured packages and ensure the global builds
|
|
72
|
+
po # start po-web and po-server, then open the printed URL
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
`po init` creates `config.yaml`, `modes.yaml`, `domains.yaml`, and `profiles.yaml` under
|
|
76
|
+
`~/.po`. It preserves existing files unless you pass `--force`, and it removes the Po entries
|
|
77
|
+
and theme that earlier versions wrote to Pi user settings.
|
|
78
|
+
|
|
79
|
+
`po sync` installs the packages every declared layer names, so switching modes does not depend on the
|
|
80
|
+
root package's dependency closure. It then ensures the one global web build and the MCP app build exist.
|
|
81
|
+
It does not change either normal Pi settings file.
|
|
82
|
+
|
|
83
|
+
### No generated per-repository state
|
|
84
|
+
|
|
85
|
+
Po writes nothing per repository or worktree. po-server composes every session live from configuration
|
|
86
|
+
and installed packages, importing each package's built `dist` directly, so a rebuilt or added package
|
|
87
|
+
reaches the next session without a sync or a restart. The cockpit web build is shared: it lives under
|
|
88
|
+
`~/.po/build/web/<key>`, where the key covers every web plugin package the global root and the
|
|
89
|
+
admitted workspaces use, so two repositories with the same plugins share one build.
|
|
90
|
+
|
|
91
|
+
Export the HTTP and socket contracts with `po api-export --out ./api-schema --strict`. It reads each
|
|
92
|
+
installed server package's built contract. See [API export](docs/server/api-export.md) for artifact
|
|
93
|
+
formats, CI checks, and package declarations.
|
|
94
|
+
|
|
95
|
+
Run `po sync --check` to report missing packages or a missing global web build without writing anything.
|
|
96
|
+
Inside a repository, `po sync` installs for that repository. Outside every repository, it installs for the
|
|
97
|
+
global configuration in `~/.po`.
|
|
98
|
+
|
|
99
|
+
Bare `po` passes every argument to `po-web`. Use `--explain` to resolve a selection without
|
|
100
|
+
starting a session:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
po --major-mode copilot --no-domains --explain
|
|
104
|
+
po --major-mode minimal --no-domains --explain
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Philosophy
|
|
108
|
+
|
|
109
|
+
An agent does not need every tool for every job. Po separates the base session from
|
|
110
|
+
the things you switch on for a while: modes choose behavior, domains choose subject
|
|
111
|
+
matter, and profiles choose a point of view.
|
|
112
|
+
|
|
113
|
+
### Major and minor modes
|
|
114
|
+
|
|
115
|
+
A major mode is the base config. It names the extension layers for development, marketing,
|
|
116
|
+
or whatever else you do. Define as many as you like; only one is active at a time. Synchronized
|
|
117
|
+
sessions can reload compatible changes; launcher-owned composition changes require a relaunch.
|
|
118
|
+
|
|
119
|
+
Minor modes are batteries-included switches inside that base. They start off, stack freely,
|
|
120
|
+
and keep their model tools and skills out of context until turned on. Po ships six:
|
|
121
|
+
|
|
122
|
+
- **Help mode:** expose package-owned guidance only while you need it.
|
|
123
|
+
- **Plan mode:** remove Pi's file-editing tools while you agree on an approach.
|
|
124
|
+
- **Loop mode:** run a prompt now, then run it again on a schedule.
|
|
125
|
+
- **Goal mode:** keep one objective in view until it is done or dismissed.
|
|
126
|
+
- **Workflow mode:** run jobs with dependencies, timeouts, and artifacts.
|
|
127
|
+
- **Voice mode:** replace typing with local speech.
|
|
128
|
+
|
|
129
|
+
### Domains
|
|
130
|
+
|
|
131
|
+
A domain is a named group of agent plugins. It carries the skills and MCP servers for one
|
|
132
|
+
kind of work, and `/domains` switches it while the session is running.
|
|
133
|
+
|
|
134
|
+
Plugins are cataloged once and domains refer to their names. A configured root may be a
|
|
135
|
+
Codex-compatible marketplace or a folder whose direct children are plugins, so a repository
|
|
136
|
+
with many plugins does not need one entry per directory:
|
|
137
|
+
|
|
138
|
+
```yaml
|
|
139
|
+
plugins:
|
|
140
|
+
roots: [plugins]
|
|
141
|
+
entries:
|
|
142
|
+
remote-review:
|
|
143
|
+
source: url
|
|
144
|
+
url: '<REVIEW_PLUGIN_GIT_URL>'
|
|
145
|
+
ref: v1.2.0
|
|
146
|
+
|
|
147
|
+
domains:
|
|
148
|
+
development:
|
|
149
|
+
description: Implementation and code-review tools.
|
|
150
|
+
plugins: [pi-development, remote-review]
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Po also checks personal and repository Codex marketplace layouts. Marketplace IDs use
|
|
154
|
+
`plugin@marketplace`. Remote Git and npm sources are downloaded once into the persistent
|
|
155
|
+
`~/.po/plugin-cache` directory. Cache entries are reused until their source descriptor
|
|
156
|
+
changes; use a Git SHA or exact npm version for reproducible installs. Home and repository
|
|
157
|
+
catalogs merge, and repository names replace matching home names.
|
|
158
|
+
|
|
159
|
+
A blog is not one task. Research it, draft it, make the assets, then review it. Turn on the
|
|
160
|
+
`visual` domain while making assets; the other three steps have no reason to carry it.
|
|
161
|
+
|
|
162
|
+
### Profile
|
|
163
|
+
|
|
164
|
+
An LLM has no house style until you give it one. A profile can supply a narrative, brand
|
|
165
|
+
rules, or a different voice. It is optional; no profile is a perfectly good profile.
|
|
166
|
+
|
|
167
|
+
Profile roots remove the need to list every persona folder. A root may itself contain the
|
|
168
|
+
persona files, or its direct-child folders become profiles named after those folders. Po
|
|
169
|
+
recognizes `profile.md`, `SOUL.md`, and `AGENTS.md` and never searches deeper directories.
|
|
170
|
+
|
|
171
|
+
```yaml
|
|
172
|
+
profiles:
|
|
173
|
+
roots: [agents/acme]
|
|
174
|
+
entries:
|
|
175
|
+
editor:
|
|
176
|
+
persona: agents/special/editor
|
|
177
|
+
env:
|
|
178
|
+
EDITOR_MODE: strict
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
Roots from the home and repository files accumulate relative to their declaring config.
|
|
182
|
+
Repository discoveries replace same-named home discoveries. Explicit entries override
|
|
183
|
+
discovery and can add string environment defaults; repository entries replace matching home
|
|
184
|
+
entries. Select one at launch with `--profile editor` or switch with `/profile`.
|
|
185
|
+
|
|
186
|
+
## What this buys you
|
|
187
|
+
|
|
188
|
+
Every tool schema and skill name competes for the same context. Loading less has two
|
|
189
|
+
immediate effects:
|
|
190
|
+
|
|
191
|
+
1. You spend fewer tokens before the work begins.
|
|
192
|
+
2. The model has fewer plausible-but-wrong tools and skills to choose from.
|
|
193
|
+
|
|
194
|
+
The savings get larger when each workflow job starts with its own config instead of
|
|
195
|
+
inheriting the last job's toolbox.
|
|
196
|
+
|
|
197
|
+
### Copilot
|
|
198
|
+
|
|
199
|
+
Po's web console exposes package-owned tools, commands, settings, and panels.
|
|
200
|
+
Po no longer ships terminal leader menus, shortcuts, overlays, or widgets.
|
|
201
|
+
|
|
202
|
+
When the keyboard is the wrong tool, autonomous Voice mode keeps the conversation going.
|
|
203
|
+
You can talk to the agent while doing the chores instead of carrying a laptop around the
|
|
204
|
+
house, and the primary agent can speak its own opening, milestone, and final updates.
|
|
205
|
+
|
|
206
|
+
### Autopilot
|
|
207
|
+
|
|
208
|
+
Copilot helps while you are present. Loop and Workflow keep work moving when you are not.
|
|
209
|
+
Together they can dispatch structured jobs from one live session.
|
|
210
|
+
|
|
211
|
+
#### Workflows
|
|
212
|
+
|
|
213
|
+
Po's native Workflow runtime starts each step as a configured child session.
|
|
214
|
+
Jobs select their major mode, domains, and system prompt through `runConfig`.
|
|
215
|
+
The tracked examples below contain complete definitions.
|
|
216
|
+
|
|
217
|
+
#### Native plugin and workflow examples
|
|
218
|
+
|
|
219
|
+
This source repository includes a complete, deliberately small example stack:
|
|
220
|
+
|
|
221
|
+
```text
|
|
222
|
+
plugins/
|
|
223
|
+
development/ implementation skill and developer agent
|
|
224
|
+
testing/ testing and review skills, tester and reviewer agents
|
|
225
|
+
blog-writing/ research, outline, drafting, and editorial skills and agents
|
|
226
|
+
automations/workflows/
|
|
227
|
+
dev-feature.workflow.yml
|
|
228
|
+
dev-fix.workflow.yml
|
|
229
|
+
blog-writing.workflow.yml
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
Each plugin has both `.codex-plugin/plugin.json` and `.claude-plugin/plugin.json`, while its
|
|
233
|
+
`skills/` and `agents/` content is shared. `.po/domains.yaml` exposes the `development`,
|
|
234
|
+
`testing`, and `blog` domains plus the `engineering` alias. `.po/modes.yaml` mirrors the
|
|
235
|
+
standalone package set with workspace-local paths, keeps its canonical modes, and adds a layer-free
|
|
236
|
+
`examples` base mode for the tracked workflows. Inspect the exact session before launch:
|
|
237
|
+
|
|
238
|
+
```bash
|
|
239
|
+
po --major-mode examples --domains engineering --explain
|
|
240
|
+
po --major-mode examples --domains blog --explain
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
The same bundles can be installed directly through either native marketplace:
|
|
244
|
+
|
|
245
|
+
```bash
|
|
246
|
+
# Codex
|
|
247
|
+
codex plugin marketplace add .
|
|
248
|
+
codex plugin add development@po-examples
|
|
249
|
+
|
|
250
|
+
# Claude Code
|
|
251
|
+
claude plugin marketplace add ./ --scope user
|
|
252
|
+
claude plugin install development@po-examples --scope user
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
Substitute `testing` or `blog-writing` to install another bundle. No Po-specific plugin
|
|
256
|
+
schema is involved.
|
|
257
|
+
|
|
258
|
+
List and dry-run the tracked workflows before spending a model call:
|
|
259
|
+
|
|
260
|
+
```bash
|
|
261
|
+
pnpm exec workflow-mcp list-workflows automations/workflows
|
|
262
|
+
pnpm exec workflow-mcp run-workflow automations/workflows/dev-feature.workflow.yml \
|
|
263
|
+
--dry-run --skip-launch --prompt "Add a health check"
|
|
264
|
+
pnpm exec workflow-mcp run-workflow automations/workflows/blog-writing.workflow.yml \
|
|
265
|
+
--dry-run --skip-launch --prompt "Write a practical guide to scoped agent tooling"
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
Real runs delegate to tmux by default and accept `WORKFLOW_LAUNCHER=cmux`. Development runs do
|
|
269
|
+
not create branches, commits, or pushes. Blog runs leave review-ready Markdown, sources, and a
|
|
270
|
+
publication checklist in the workflow run directory without writing into a site or calling a CMS.
|
|
271
|
+
These examples live in the source repository and are not part of the published npm tarball.
|
|
272
|
+
|
|
273
|
+
#### Loop
|
|
274
|
+
|
|
275
|
+
Workflow definitions are exposed like skills, so the agent can choose one for the job. A
|
|
276
|
+
loop can send a subagent to fetch the next task, then dispatch the workflow that matches
|
|
277
|
+
it. One session becomes the dispatcher instead of the place every job has to fit.
|
|
278
|
+
|
|
279
|
+
## Features
|
|
280
|
+
|
|
281
|
+
Po is a modular agent harness, not one giant extension. Each package owns one job; shared UI,
|
|
282
|
+
Cordis services, and session contracts make them behave like one. Use the generated
|
|
283
|
+
`default.packages` list together, remove packages you do not want, or replace its entries one
|
|
284
|
+
at a time. Selectable packages are not runtime dependencies of the root package or of one another.
|
|
285
|
+
|
|
286
|
+
### Foundation and interface
|
|
287
|
+
|
|
288
|
+
#### Configuration and composition
|
|
289
|
+
|
|
290
|
+
[`@agimon-ai/po`][pkg-po] is the command-line config compiler and the `po-server` runtime.
|
|
291
|
+
`po init` creates the personal config, and bare `po` starts the `po-web` console. Sync resolves every major
|
|
292
|
+
mode and domain into native server, web, MCP, and resource contributions.
|
|
293
|
+
|
|
294
|
+
#### Supporting packages
|
|
295
|
+
|
|
296
|
+
[`@agimon-ai/po-config`][pkg-po-config] resolves the four YAML files and exposes the
|
|
297
|
+
configuration API. [`@agimon-ai/po-domain`][pkg-po-domain] owns domain selection, plugin
|
|
298
|
+
materialization, resource staging, and MCP scoping.
|
|
299
|
+
[`@agimon-ai/po-core`][pkg-po-core] contains the shared
|
|
300
|
+
Cordis service and event contracts used by extension authors.
|
|
301
|
+
[`@agimon-ai/po-hashline`][pkg-po-hashline] provides the shared snapshot tags and line-anchor
|
|
302
|
+
protocol. [`@agimon-ai/po-read`][pkg-po-read] and [`@agimon-ai/po-grep`][pkg-po-grep]
|
|
303
|
+
produce editable anchors for writable files while preserving native output for non-writable files.
|
|
304
|
+
[`@agimon-ai/po-edit`][pkg-po-edit] replaces Pi's search-and-replace `edit` tool with
|
|
305
|
+
stale-safe ranges anchored to the file content the model read or searched.
|
|
306
|
+
[`@agimon-ai/po-file-edit`][pkg-po-file-edit] keeps the edit timeline and file snapshots.
|
|
307
|
+
[`@agimon-ai/po-log`][pkg-po-log] collects session events, while
|
|
308
|
+
[`@agimon-ai/po-telemetry`][pkg-po-telemetry] is the library-level telemetry adapter.
|
|
309
|
+
|
|
310
|
+
Runner selects matching RMUX and RTK native artifacts automatically. Do not install them directly.
|
|
311
|
+
The packages cover macOS and Linux on arm64 and x64 for both [RMUX][pkg-rmux-darwin-arm64] and
|
|
312
|
+
[RTK][pkg-rtk-darwin-arm64].
|
|
313
|
+
|
|
314
|
+
#### Shared UI
|
|
315
|
+
|
|
316
|
+
[`@agimon-ai/po-ui`][pkg-po-ui] supplies shared web presentation and theme utilities.
|
|
317
|
+
Terminal leader bindings and overlays have been retired.
|
|
318
|
+
|
|
319
|
+
### Coordinated work
|
|
320
|
+
|
|
321
|
+
#### Agent team
|
|
322
|
+
|
|
323
|
+
[`@agimon-ai/po-team`][pkg-po-team] runs named subagents asynchronously. It owns agents,
|
|
324
|
+
runs, membership, intercom, and model policy; Task owns the persistent task graph used for
|
|
325
|
+
delegation. Agents can work in parallel and message one another through native Team tools.
|
|
326
|
+
|
|
327
|
+
#### Tasks
|
|
328
|
+
|
|
329
|
+
[`@agimon-ai/po-task`][pkg-po-task] keeps a task graph on disk, not a disposable checklist in the
|
|
330
|
+
transcript. Dependencies persist independently of transcript compaction, and work can be handed to
|
|
331
|
+
a subagent, including a smaller model when the job does not need the expensive one. Seeded
|
|
332
|
+
`minimal` and `copilot` modes select its `task` layer; omit that layer when a major mode
|
|
333
|
+
should not expose the task tool.
|
|
334
|
+
|
|
335
|
+
#### Runner
|
|
336
|
+
|
|
337
|
+
[`@agimon-ai/po-runner`][pkg-po-runner] replaces Pi's blocking `bash` tool with
|
|
338
|
+
supervised command execution. `po init` includes Runner in `default.packages`, so every
|
|
339
|
+
generated mode gets it. Short commands still return inline; commands that pass the configurable
|
|
340
|
+
threshold of 60 seconds by default move into the background with durable logs. Use
|
|
341
|
+
`background: true` for an immediate detached run or `interactive: true` when the command needs
|
|
342
|
+
terminal input. Runner IDs and complete raw logs remain available to the current session through
|
|
343
|
+
the `doom-runner` CLI. Runner tries bundled RMUX, then `rmux` on PATH,
|
|
344
|
+
then `tmux` on PATH. If no pane backend accepts the run, non-interactive commands use a supervised
|
|
345
|
+
subprocess; interactive commands require RMUX or tmux. Conservatively recognized single commands
|
|
346
|
+
use the matching RTK stdin filter after completion. Compound commands, pipelines, incompatible
|
|
347
|
+
formats, and unsupported commands keep bounded raw output. Remove Runner from `default.packages` to keep Pi's
|
|
348
|
+
`bash`, or add it to a named layer when only selected modes should replace `bash`.
|
|
349
|
+
|
|
350
|
+
#### Auto-compact
|
|
351
|
+
|
|
352
|
+
Ordinary compaction waits for one summary to save an overgrown session.
|
|
353
|
+
[`@agimon-ai/po-autocompact`][pkg-po-autocompact] leaves checkpoints instead:
|
|
354
|
+
|
|
355
|
+
1. At 50%, it writes the first compact summary.
|
|
356
|
+
2. Later, it combines that summary with the messages since; the model decides whether the
|
|
357
|
+
result is ready to use.
|
|
358
|
+
3. On the third pass, it combines them again and forces compaction.
|
|
359
|
+
|
|
360
|
+
The work runs off-thread and can make up to three additional summarization calls. The standard
|
|
361
|
+
adapter preserves staged conversation checkpoints; Task and Team keep their own state rather than
|
|
362
|
+
being embedded as special snapshots in the compact summary.
|
|
363
|
+
|
|
364
|
+
### Context and access
|
|
365
|
+
|
|
366
|
+
#### Help mode
|
|
367
|
+
|
|
368
|
+
[`@agimon-ai/po-help`][pkg-po-help] keeps package guidance out of the default prompt. A
|
|
369
|
+
fresh parent session performs no Help retrieval and exposes no Help skills. Activate Help with the
|
|
370
|
+
native `minor_mode` tool, then deactivate it before the next interaction.
|
|
371
|
+
Help names state their intent: authoring
|
|
372
|
+
guides use `po-author-*`, while operational guides use `po-use-*`. Core authoring guidance
|
|
373
|
+
covers extensions, runtime config, major modes, domains, profiles, hooks, workflows, and skills.
|
|
374
|
+
Parent and detached-child sessions both include the Help runtime, while root and axis authoring
|
|
375
|
+
guides remain parent-owned and all guidance stays withdrawn until Help mode is activated.
|
|
376
|
+
|
|
377
|
+
#### MCP
|
|
378
|
+
|
|
379
|
+
[`@agimon-ai/po-mcp`][pkg-po-mcp] is the gate between a session and its servers. It reads
|
|
380
|
+
repository and legacy plugin `.mcp.json` plus Agent Plugins v1 `mcp.json`, then exposes only the
|
|
381
|
+
servers and proxy upstreams allowed by the selected domains. A domain switch persists an immutable
|
|
382
|
+
projection; Config publishes it through the native session Cordis registry and MCP starts a fresh
|
|
383
|
+
in-memory `mcp-proxy` container. No Hono server or localhost proxy sits in this path.
|
|
384
|
+
|
|
385
|
+
#### Ask user question
|
|
386
|
+
|
|
387
|
+
[`@agimon-ai/po-user-feedback`][pkg-po-user-feedback] gives the agent a structured question
|
|
388
|
+
that actually waits for an answer. In autonomous Voice mode it skips the modal, narrates the
|
|
389
|
+
choices, and accepts the next spoken response as an ordinary user message.
|
|
390
|
+
|
|
391
|
+
#### Logging and telemetry
|
|
392
|
+
|
|
393
|
+
Po logging records operational metadata such as counters, spans, session IDs, tool names, and
|
|
394
|
+
errors. Callers remain responsible for values they attach to telemetry. Native diagnostics expose
|
|
395
|
+
current-session metrics, and [`@agimon-ai/log-sink-mcp`][pkg-log-sink-mcp] provides historical lookup
|
|
396
|
+
when a sink is configured.
|
|
397
|
+
|
|
398
|
+
### Modes and automation
|
|
399
|
+
|
|
400
|
+
#### Plan mode
|
|
401
|
+
|
|
402
|
+
A promise to "only plan" is not a permission boundary. [`@agimon-ai/po-plan`][pkg-po-plan]
|
|
403
|
+
removes `edit` and `write` tools while the agent explores, persists the plan, and hands it back
|
|
404
|
+
for approval. It does not sandbox Bash, external tools, or the operating system. Use the native
|
|
405
|
+
planning tools and web review surface; terminal planning menus are no longer available.
|
|
406
|
+
Turn it on when the approach should be settled before the files move.
|
|
407
|
+
|
|
408
|
+
#### Loop mode
|
|
409
|
+
|
|
410
|
+
[`@agimon-ai/po-loop`][pkg-po-loop] is an in-session scheduler. It runs a prompt immediately
|
|
411
|
+
and then repeats it on an interval; several loops can coexist. Native `loop_start`, `loop_list`,
|
|
412
|
+
and `loop_stop` tools control recurring checks and prompts in the current session.
|
|
413
|
+
|
|
414
|
+
#### Goal mode
|
|
415
|
+
|
|
416
|
+
[`@agimon-ai/po-goal`][pkg-po-goal] pins one objective to the session until it completes or
|
|
417
|
+
you end it. Native goal tools manage the active objective and repository history. Finished goals
|
|
418
|
+
stop contributing active instructions and tools but remain in history when you want to restart one.
|
|
419
|
+
|
|
420
|
+
#### Workflow mode
|
|
421
|
+
|
|
422
|
+
[`@agimon-ai/po-workflow`][pkg-po-workflow] runs GitHub Actions-style job graphs with
|
|
423
|
+
dependencies, timeouts, artifacts, and a separate Po session for each step. Native workflow tools
|
|
424
|
+
and the web workflow dock expose launch, status, and recovery. It is for work that needs hard job
|
|
425
|
+
boundaries and explicit handoffs rather than one long conversation.
|
|
426
|
+
|
|
427
|
+
#### Voice mode
|
|
428
|
+
|
|
429
|
+
[`@agimon-ai/po-voice`][pkg-po-voice] captures PCM audio through the local platform helper
|
|
430
|
+
and can transcribe it locally. Transcript text, session state, and model requests may still cross
|
|
431
|
+
process or provider boundaries according to the configured engines. Native `voice` controls manual
|
|
432
|
+
dictation, while `voice-auto` controls autonomous capture. The active native session receives the
|
|
433
|
+
Voice capabilities and `narrate` tool.
|
|
434
|
+
|
|
435
|
+
While `narrate` is available, the primary agent calls it before every user-facing final
|
|
436
|
+
response. Final narration contains the complete answer, including every user-relevant
|
|
437
|
+
conclusion, question, warning, result, and next action in the written response, rather than
|
|
438
|
+
leaving essential information only in text. Short turns need one complete spoken answer;
|
|
439
|
+
longer work also gets an opening and meaningful milestone calls. Each ready-to-speak
|
|
440
|
+
utterance is limited to 4,096 characters, waits for physical playback, and returns
|
|
441
|
+
`completed`, `interrupted`, `superseded`, or `failed`.
|
|
442
|
+
|
|
443
|
+
If the agent never attempts `narrate` during a run, active Voice speaks one sanitized
|
|
444
|
+
turn-end fallback rather than leaving the final response silent. Finals of at most 320
|
|
445
|
+
characters use deterministic speech; longer finals use the configured
|
|
446
|
+
`voice.autoCapture.model` for one bounded summary, with deterministic degradation on
|
|
447
|
+
failure or timeout. Any `narrate` attempt suppresses this safety net, so it cannot duplicate
|
|
448
|
+
or retry direct speech. Voice does not generate automatic intent, plan, milestone, or tool
|
|
449
|
+
progress narration. Native workflow and user-feedback narration remain available, and the same
|
|
450
|
+
model continues to provide bounded command correction.
|
|
451
|
+
|
|
452
|
+
## Configuration
|
|
453
|
+
|
|
454
|
+
Po reads four configuration files:
|
|
455
|
+
|
|
456
|
+
- `config.yaml` defines runtime settings such as trust, editor, planning, and voice behavior.
|
|
457
|
+
- `modes.yaml` defines default packages, extension layers, and major modes.
|
|
458
|
+
- `domains.yaml` catalogs plugins and sets session access.
|
|
459
|
+
- `profiles.yaml` supplies persona files and environment defaults.
|
|
460
|
+
|
|
461
|
+
Each matrix file has two optional layers: personal defaults in `~/.po/` and repository
|
|
462
|
+
overrides in `<repository>/.po/`. Po loads both. Unique named entries from either layer
|
|
463
|
+
remain available; a same-named repository entry replaces the complete personal entry. Plugin
|
|
464
|
+
and profile roots from both layers are retained. Relative paths in personal config resolve
|
|
465
|
+
from `~/.po/`; relative paths in repository config resolve from the repository root.
|
|
466
|
+
|
|
467
|
+
### `modes.yaml`: choose behavior
|
|
468
|
+
|
|
469
|
+
A layer is an ordered bundle of extension packages and hook groups. A major mode names the
|
|
470
|
+
layers that should run together. The top-level `default.packages` list is the ordered package
|
|
471
|
+
baseline for every major mode. `po init` writes the distribution's current
|
|
472
|
+
feature packages there so the baseline is visible and replaceable. If `default` is absent,
|
|
473
|
+
Po adds no default feature packages. Use `default.packages: []` for an explicit empty
|
|
474
|
+
baseline. The fixed host core remains active independently of this setting, and named layers
|
|
475
|
+
keep their existing behavior.
|
|
476
|
+
|
|
477
|
+
Launch installs missing required packages from the defaults and selected layers. `po sync`
|
|
478
|
+
installs missing required packages from the defaults and every declared layer, moves every
|
|
479
|
+
package in Po's shared `~/.po/runtime` to its newest published version, then builds the
|
|
480
|
+
synchronized matrix. A package whose published version cannot be read, because the machine is
|
|
481
|
+
offline or the registry refuses the request, keeps its installed version and is named in the
|
|
482
|
+
sync output. `po sync --check` reports missing packages without modifying the repository. Optional packages and local paths are not installed automatically. Removing an
|
|
483
|
+
entry stops activating it but leaves Pi's package cache available for later reuse.
|
|
484
|
+
|
|
485
|
+
Packages in `default` and named layers may be bare strings, or mappings when the package accepts
|
|
486
|
+
configuration:
|
|
487
|
+
|
|
488
|
+
```yaml
|
|
489
|
+
default:
|
|
490
|
+
packages:
|
|
491
|
+
- '@agimon-ai/po-help'
|
|
492
|
+
- '@agimon-ai/po-hook'
|
|
493
|
+
- '@agimon-ai/po-goal'
|
|
494
|
+
- '@agimon-ai/po-voice'
|
|
495
|
+
- '@agimon-ai/po-runner'
|
|
496
|
+
- '@agimon-ai/po-read'
|
|
497
|
+
- '@agimon-ai/po-grep'
|
|
498
|
+
- '@agimon-ai/po-edit'
|
|
499
|
+
- '@agimon-ai/po-file-edit'
|
|
500
|
+
- '@agimon-ai/po-autocompact'
|
|
501
|
+
- '@agimon-ai/po-loop'
|
|
502
|
+
- '@agimon-ai/po-plan'
|
|
503
|
+
- '@agimon-ai/po-workflow'
|
|
504
|
+
- '@agimon-ai/po-log'
|
|
505
|
+
- '@agimon-ai/po-mcp'
|
|
506
|
+
|
|
507
|
+
layers:
|
|
508
|
+
team:
|
|
509
|
+
packages:
|
|
510
|
+
- name: '@agimon-ai/po-team'
|
|
511
|
+
config:
|
|
512
|
+
models:
|
|
513
|
+
- model: provider/model-id
|
|
514
|
+
thinking: high
|
|
515
|
+
review:
|
|
516
|
+
packages:
|
|
517
|
+
- '@scope/review-extension'
|
|
518
|
+
|
|
519
|
+
defaultMajorMode: copilot
|
|
520
|
+
majorMode:
|
|
521
|
+
minimal:
|
|
522
|
+
description: Lean sessions with delegation and little else.
|
|
523
|
+
layers: [team]
|
|
524
|
+
copilot:
|
|
525
|
+
description: General coding with delegation and review tools.
|
|
526
|
+
layers: [team, review]
|
|
527
|
+
```
|
|
528
|
+
|
|
529
|
+
Order matters: Po assembles `default.packages` first, then the selected layers and their
|
|
530
|
+
packages from left to right. Put settings under the package that consumes them; a layer is
|
|
531
|
+
composition, not a mystery bag of shared configuration. Home and repository `layers` and
|
|
532
|
+
`majorMode` records merge by name, with the repository definition winning a collision. If both
|
|
533
|
+
sources declare `default`, the repository block replaces the personal block as one whole package
|
|
534
|
+
list.
|
|
535
|
+
|
|
536
|
+
Configurations created before the hashline tools were split may contain only `po-edit`.
|
|
537
|
+
Replace that entry with the ordered `po-read`, `po-grep`, and `po-edit` trio. Init
|
|
538
|
+
preserves existing configuration unless it is run with `--force`.
|
|
539
|
+
|
|
540
|
+
Choose a mode with `--major-mode copilot`, switch it with `/mode`, or change
|
|
541
|
+
`defaultMajorMode` when one mode should be the ordinary starting point.
|
|
542
|
+
|
|
543
|
+
### `domains.yaml`: choose content and access
|
|
544
|
+
|
|
545
|
+
Plugins are cataloged once, then domains refer to their names. A root can be a marketplace,
|
|
546
|
+
a single plugin, or a container whose direct-child folders are plugins. Discovery is
|
|
547
|
+
intentionally nonrecursive: a tool buried five directories down should not load by accident.
|
|
548
|
+
|
|
549
|
+
```yaml
|
|
550
|
+
defaultDomains: [development]
|
|
551
|
+
|
|
552
|
+
plugins:
|
|
553
|
+
roots: [plugins]
|
|
554
|
+
entries:
|
|
555
|
+
remote-review:
|
|
556
|
+
source: url
|
|
557
|
+
url: '<REVIEW_PLUGIN_GIT_URL>'
|
|
558
|
+
ref: v1.2.0
|
|
559
|
+
published-research:
|
|
560
|
+
source: npm
|
|
561
|
+
package: '@acme/research-plugin'
|
|
562
|
+
version: 1.4.0
|
|
563
|
+
|
|
564
|
+
domains:
|
|
565
|
+
development:
|
|
566
|
+
description: Repository implementation tools.
|
|
567
|
+
plugins: [coding-tools]
|
|
568
|
+
review:
|
|
569
|
+
description: Focused review skills with a narrow MCP boundary.
|
|
570
|
+
plugins:
|
|
571
|
+
- name: remote-review
|
|
572
|
+
skills: [typescript]
|
|
573
|
+
agents: [reviewer]
|
|
574
|
+
hooks: false
|
|
575
|
+
mcp: true
|
|
576
|
+
mcp:
|
|
577
|
+
servers: [filesystem]
|
|
578
|
+
proxy: [github]
|
|
579
|
+
|
|
580
|
+
aliases:
|
|
581
|
+
work: [development, review]
|
|
582
|
+
```
|
|
583
|
+
|
|
584
|
+
Here, `coding-tools` is discovered from `plugins/coding-tools`; its manifest name, or its
|
|
585
|
+
folder name when no manifest name exists, becomes the catalog ID. Local roots and entries
|
|
586
|
+
resolve beside the declaring file. Git and npm entries are cached in
|
|
587
|
+
`~/.po/plugin-cache`; pin a Git SHA or exact package version when reproducibility
|
|
588
|
+
matters. Domains may load an entire plugin or select only its skills, agents, hooks, and MCP
|
|
589
|
+
configuration. The optional `mcp` mapping is an allowlist, not a request to start every server
|
|
590
|
+
in the repository.
|
|
591
|
+
|
|
592
|
+
Select one or more domains with `--domains development,review`, use an alias such as
|
|
593
|
+
`--domains work`, or switch them with `/domains`. `--no-domains` is useful when the right
|
|
594
|
+
amount of repository context is none.
|
|
595
|
+
|
|
596
|
+
### `profiles.yaml`: choose a point of view
|
|
597
|
+
|
|
598
|
+
A profile directory becomes discoverable when it directly contains `profile.md`, `SOUL.md`,
|
|
599
|
+
or `AGENTS.md`. A root may be one profile or a container of direct-child profiles. The folder
|
|
600
|
+
name becomes the profile name; Po concatenates those three files in that order.
|
|
601
|
+
|
|
602
|
+
```yaml
|
|
603
|
+
profiles:
|
|
604
|
+
roots: [personas]
|
|
605
|
+
entries:
|
|
606
|
+
release-writer:
|
|
607
|
+
persona: personas/release-writer
|
|
608
|
+
env:
|
|
609
|
+
BRAND: acme
|
|
610
|
+
TONE: concise
|
|
611
|
+
```
|
|
612
|
+
|
|
613
|
+
With that config, `personas/release-writer/profile.md` is enough to discover
|
|
614
|
+
`release-writer`. The explicit entry is optional; use one when the profile needs another name,
|
|
615
|
+
an exact persona path, or string environment defaults. Explicit entries override discovered
|
|
616
|
+
folders. Already exported environment values win, so selecting a profile never quietly
|
|
617
|
+
replaces a value supplied by the caller.
|
|
618
|
+
|
|
619
|
+
Discovery never recurses. Persona paths must remain under `agents/` or a root declared in the
|
|
620
|
+
same file, and symlinks may not escape the persona boundary. Legacy profiles written directly
|
|
621
|
+
under `profiles` still load, but new configuration should use `roots` and `entries`.
|
|
622
|
+
|
|
623
|
+
Select a profile with `--profile release-writer` or switch it with `/profile`. Leaving the
|
|
624
|
+
catalog empty is valid; no profile remains a first-class choice.
|
|
625
|
+
|
|
626
|
+
### Check the matrix before launch
|
|
627
|
+
|
|
628
|
+
The fastest configuration debugger is the one that does not start a model:
|
|
629
|
+
|
|
630
|
+
```bash
|
|
631
|
+
po --major-mode copilot --domains work --profile release-writer --explain
|
|
632
|
+
po sync
|
|
633
|
+
po sync --check
|
|
634
|
+
```
|
|
635
|
+
|
|
636
|
+
`--explain` prints the resolved mode, domains, profile, plugins, skills, agents, MCP boundary,
|
|
637
|
+
and estimated prompt cost. `po sync` resolves the repository configuration and publishes
|
|
638
|
+
synchronized state. `po sync --check` turns drift into a
|
|
639
|
+
non-zero exit code for CI. If the explanation is surprising, fix the YAML before paying a model
|
|
640
|
+
to be surprised with you.
|
|
641
|
+
|
|
642
|
+
## Trust and data boundaries
|
|
643
|
+
|
|
644
|
+
Po executes the extensions, remote Git/npm plugins, hooks, MCP stdio commands, workflows, and
|
|
645
|
+
shell commands you configure. Treat them as trusted executable code. Runner commands inherit the
|
|
646
|
+
process environment and operating-system privileges; their logs may contain command output and
|
|
647
|
+
secrets. MCP credentials may live in the system keyring or private configuration files.
|
|
648
|
+
|
|
649
|
+
Voice can keep PCM capture and transcription local when local engines are selected, but transcript
|
|
650
|
+
text and model requests follow the configured providers. Loop, Workflow, Plan, Autocompact, Team,
|
|
651
|
+
and autonomous Voice can make additional model calls. Telemetry is disabled or redirected through
|
|
652
|
+
its owning package's controls; values supplied by callers are not automatically scrubbed.
|
|
653
|
+
|
|
654
|
+
## CLI reference
|
|
655
|
+
|
|
656
|
+
| Command or option | What it does |
|
|
657
|
+
| ---------------------------------------- | ---------------------------------------------------------------------------------- |
|
|
658
|
+
| `po` | Starts the `po-web` console and its headless `po-server`; arguments go to po-web |
|
|
659
|
+
| `po init` | Seeds personal config and removes Po entries earlier versions wrote to Pi settings |
|
|
660
|
+
| `po sync` | Publishes the current repository, or the global composition outside repositories |
|
|
661
|
+
| `po sync --check` | Exits non-zero when the applicable registered generation is missing or stale |
|
|
662
|
+
| `po compat <codex\|claude\|antigravity>` | Resolves the selected matrix and launches the compatibility adapter |
|
|
663
|
+
| `doom-runner` | Inspects and controls supervised Runner processes and logs |
|
|
664
|
+
| `--explain` | Prints the resolved matrix and estimated prompt cost without launching Pi |
|
|
665
|
+
| `--emit-mcp <dir>`, `--no-mcp` | Writes the resolved MCP config or disables MCP for one run |
|
|
666
|
+
| `--` and remaining arguments | Forwards provider or Pi arguments unchanged where the selected command allows it |
|
|
667
|
+
|
|
668
|
+
## Troubleshooting and direct use
|
|
669
|
+
|
|
670
|
+
- Run `po sync --check` to detect drift or missing configured packages, and `po sync`
|
|
671
|
+
to install them and rebuild synchronized state.
|
|
672
|
+
- If neither RMUX nor tmux is available, non-interactive Runner calls report the supervised subprocess
|
|
673
|
+
fallback. Interactive calls require RMUX or tmux. Linux native artifacts require a compatible loader and libc.
|
|
674
|
+
- Po-owned packages expose native server, web, and MCP facets, not Pi entry points. Install them with
|
|
675
|
+
`npm install` or select them in `modes.yaml`. Third-party Pi settings packages still load through
|
|
676
|
+
the upstream SDK extension host, including provider registration before model selection.
|
|
677
|
+
- Terminal leader menus, shortcuts, overlays, and widgets are no longer shipped. Native commands,
|
|
678
|
+
tools, and web panels remain where the owning package provides them. RMUX and RTK artifacts are
|
|
679
|
+
selected by Runner and should not be installed directly.
|
|
680
|
+
- The root `doom-runner` command delegates to Runner from the active repository and asks you to add
|
|
681
|
+
Runner to `modes.yaml` when it is absent. The distribution remains the supported way to get the
|
|
682
|
+
coordinated defaults.
|
|
683
|
+
- The Ollama preset and launcher `--mute` and `--auto-stop` flags are retired. They do not have
|
|
684
|
+
replacement terminal extensions.
|
|
685
|
+
|
|
686
|
+
## Architecture
|
|
687
|
+
|
|
688
|
+
See [Architecture](https://github.com/AgiFlow/po/blob/main/docs/architecture.md) for native
|
|
689
|
+
server/web/MCP facets, canonical fingerprints, transition classification, shared-host Cordis
|
|
690
|
+
lifecycle ownership, and parent/child isolation. Po no longer composes its own Pi factories;
|
|
691
|
+
third-party Pi packages remain supported through the SDK host.
|
|
692
|
+
|
|
693
|
+
## Development
|
|
694
|
+
|
|
695
|
+
```bash
|
|
696
|
+
pnpm install
|
|
697
|
+
pnpm build
|
|
698
|
+
pnpm examples:check
|
|
699
|
+
pnpm nx build @agimon-ai/po
|
|
700
|
+
pnpm nx test @agimon-ai/po
|
|
701
|
+
pnpm nx typecheck @agimon-ai/po
|
|
702
|
+
pnpm nx lint @agimon-ai/po
|
|
703
|
+
```
|
|
704
|
+
|
|
705
|
+
Po is maintained by [Agimon](https://agimon.ai/about).
|
|
706
|
+
|
|
707
|
+
## License
|
|
708
|
+
|
|
709
|
+
MIT
|
|
710
|
+
|
|
711
|
+
## Maintainer release order
|
|
712
|
+
|
|
713
|
+
Publish [`@agimon-ai/po-core`][pkg-po-core] and
|
|
714
|
+
[`@agimon-ai/po-hashline`][pkg-po-hashline] first, then
|
|
715
|
+
[`@agimon-ai/po-help`][pkg-po-help], and only then the
|
|
716
|
+
[`@agimon-ai/po`][pkg-po] runtime that consumes them. Generated changelogs remain owned
|
|
717
|
+
by the release tooling.
|
|
718
|
+
|
|
719
|
+
The deploy workflow blocks publishing unless the deterministic Po architecture sweep and the
|
|
720
|
+
packed-install system tests both pass. This keeps the shared Cordis host contract and independently
|
|
721
|
+
loaded extension graph inside the same release boundary as the packages that consume them.
|
|
722
|
+
|
|
723
|
+
[pkg-po]: https://www.npmjs.com/package/@agimon-ai/po
|
|
724
|
+
[pkg-po-ui]: https://www.npmjs.com/package/@agimon-ai/po-ui
|
|
725
|
+
[pkg-po-config]: https://www.npmjs.com/package/@agimon-ai/po-config
|
|
726
|
+
[pkg-po-domain]: https://www.npmjs.com/package/@agimon-ai/po-domain
|
|
727
|
+
[pkg-po-hashline]: https://www.npmjs.com/package/@agimon-ai/po-hashline
|
|
728
|
+
[pkg-po-read]: https://www.npmjs.com/package/@agimon-ai/po-read
|
|
729
|
+
[pkg-po-grep]: https://www.npmjs.com/package/@agimon-ai/po-grep
|
|
730
|
+
[pkg-po-edit]: https://www.npmjs.com/package/@agimon-ai/po-edit
|
|
731
|
+
[pkg-po-file-edit]: https://www.npmjs.com/package/@agimon-ai/po-file-edit
|
|
732
|
+
[pkg-po-log]: https://www.npmjs.com/package/@agimon-ai/po-log
|
|
733
|
+
[pkg-po-telemetry]: https://www.npmjs.com/package/@agimon-ai/po-telemetry
|
|
734
|
+
[pkg-rmux-darwin-arm64]: https://www.npmjs.com/package/@agimon-ai/po-runner-rmux-darwin-arm64
|
|
735
|
+
[pkg-rmux-darwin-x64]: https://www.npmjs.com/package/@agimon-ai/po-runner-rmux-darwin-x64
|
|
736
|
+
[pkg-rmux-linux-arm64]: https://www.npmjs.com/package/@agimon-ai/po-runner-rmux-linux-arm64
|
|
737
|
+
[pkg-rmux-linux-x64]: https://www.npmjs.com/package/@agimon-ai/po-runner-rmux-linux-x64
|
|
738
|
+
[pkg-rtk-darwin-arm64]: https://www.npmjs.com/package/@agimon-ai/po-runner-rtk-darwin-arm64
|
|
739
|
+
[pkg-rtk-darwin-x64]: https://www.npmjs.com/package/@agimon-ai/po-runner-rtk-darwin-x64
|
|
740
|
+
[pkg-rtk-linux-arm64]: https://www.npmjs.com/package/@agimon-ai/po-runner-rtk-linux-arm64
|
|
741
|
+
[pkg-rtk-linux-x64]: https://www.npmjs.com/package/@agimon-ai/po-runner-rtk-linux-x64
|
|
742
|
+
[pkg-po-team]: https://www.npmjs.com/package/@agimon-ai/po-team
|
|
743
|
+
[pkg-po-task]: https://www.npmjs.com/package/@agimon-ai/po-task
|
|
744
|
+
[pkg-po-runner]: https://www.npmjs.com/package/@agimon-ai/po-runner
|
|
745
|
+
[pkg-po-autocompact]: https://www.npmjs.com/package/@agimon-ai/po-autocompact
|
|
746
|
+
[pkg-po-help]: https://www.npmjs.com/package/@agimon-ai/po-help
|
|
747
|
+
[pkg-po-mcp]: https://www.npmjs.com/package/@agimon-ai/po-mcp
|
|
748
|
+
[pkg-po-user-feedback]: https://www.npmjs.com/package/@agimon-ai/po-user-feedback
|
|
749
|
+
[pkg-log-sink-mcp]: https://www.npmjs.com/package/@agimon-ai/log-sink-mcp
|
|
750
|
+
[pkg-po-plan]: https://www.npmjs.com/package/@agimon-ai/po-plan
|
|
751
|
+
[pkg-po-loop]: https://www.npmjs.com/package/@agimon-ai/po-loop
|
|
752
|
+
[pkg-po-goal]: https://www.npmjs.com/package/@agimon-ai/po-goal
|
|
753
|
+
[pkg-po-workflow]: https://www.npmjs.com/package/@agimon-ai/po-workflow
|
|
754
|
+
[pkg-po-voice]: https://www.npmjs.com/package/@agimon-ai/po-voice
|
|
755
|
+
[pkg-po-core]: https://www.npmjs.com/package/@agimon-ai/po-core
|