@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
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
const require_runtime = require("../../../../../_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
const require_process = require("./process.cjs");
|
|
3
|
+
const require_shared = require("./shared.cjs");
|
|
4
|
+
let node_fs = require("node:fs");
|
|
5
|
+
node_fs = require_runtime.__toESM(node_fs, 1);
|
|
6
|
+
let node_path = require("node:path");
|
|
7
|
+
node_path = require_runtime.__toESM(node_path, 1);
|
|
8
|
+
let _agimon_ai_po_core_runtimeJson = require("@agimon-ai/po-core/runtimeJson");
|
|
9
|
+
//#region src/cli/commands/compat/providers/antigravity.ts
|
|
10
|
+
/**
|
|
11
|
+
* Antigravity state synchronisation.
|
|
12
|
+
*
|
|
13
|
+
* Antigravity reads its configuration from the workspace and from the user's
|
|
14
|
+
* home directory rather than from arguments, so every selection has to be
|
|
15
|
+
* written to disk before launch and reverted when it is no longer selected.
|
|
16
|
+
* Everything the harness writes is tracked in a managed-state file so a file
|
|
17
|
+
* the user created by hand is never silently replaced.
|
|
18
|
+
*/
|
|
19
|
+
const ANTIGRAVITY_PROVIDER = "agy";
|
|
20
|
+
const AGY_MANAGED_STATE = ".po-managed.json";
|
|
21
|
+
const ANTIGRAVITY_PROXY_SERVER_NAME = "mcp-proxy";
|
|
22
|
+
const PROJECT_MCP_SERVER_NAME = "project-mcp";
|
|
23
|
+
const PENCIL_SERVER_NAME = "pencil";
|
|
24
|
+
const ANTIGRAVITY_SYNC_LOCK = ".po-sync.lock";
|
|
25
|
+
const AGENTS_DIRECTORY = ".agents";
|
|
26
|
+
const GENERATED_AGENTS_DIRECTORY = "_agents";
|
|
27
|
+
const CODEX_PLUGIN_DIRECTORY = ".codex-plugin";
|
|
28
|
+
const MCP_CONFIG_FILENAME = "mcp_config.json";
|
|
29
|
+
const HOOKS_CONFIG_FILENAME = "hooks.json";
|
|
30
|
+
const MANAGED_PLUGINS_KEY = "plugins";
|
|
31
|
+
const MCP_PROXY_TIMEOUT_MS = 12e5;
|
|
32
|
+
const GEMINI_DIRECTORY = ".gemini";
|
|
33
|
+
const ANTIGRAVITY_CLI_DIRECTORY = "antigravity-cli";
|
|
34
|
+
const ANTIGRAVITY_SETTINGS_FILENAME = "settings.json";
|
|
35
|
+
const ANTIGRAVITY_LOCAL_DIRECTORY = ".antigravity-local";
|
|
36
|
+
const CLAUDE_DIRECTORY = ".claude";
|
|
37
|
+
const DEFAULT_ANTIGRAVITY_MODEL = "Gemini 3.5 Flash";
|
|
38
|
+
const REPO_ROOT_PLACEHOLDER = "$AGY_REPO_ROOT";
|
|
39
|
+
/** Rewrites one MCP server definition into the shape Antigravity expects. */
|
|
40
|
+
function adaptAntigravityMcpDefinition(definition, repoRoot) {
|
|
41
|
+
if (typeof definition.command === "string") {
|
|
42
|
+
const adapted = {
|
|
43
|
+
...definition,
|
|
44
|
+
command: definition.command,
|
|
45
|
+
args: Array.isArray(definition.args) ? definition.args.map(String) : [],
|
|
46
|
+
cwd: typeof definition.cwd === "string" ? definition.cwd : repoRoot
|
|
47
|
+
};
|
|
48
|
+
delete adapted.type;
|
|
49
|
+
return adapted;
|
|
50
|
+
}
|
|
51
|
+
const url = typeof definition.url === "string" ? definition.url : void 0;
|
|
52
|
+
if (!url) return void 0;
|
|
53
|
+
const adapted = {
|
|
54
|
+
...definition,
|
|
55
|
+
serverUrl: url
|
|
56
|
+
};
|
|
57
|
+
delete adapted.type;
|
|
58
|
+
delete adapted.url;
|
|
59
|
+
return adapted;
|
|
60
|
+
}
|
|
61
|
+
function syncAntigravityMcp(context) {
|
|
62
|
+
const repoRoot = context.options.repoRoot;
|
|
63
|
+
const workspacePath = node_path.default.join(repoRoot, AGENTS_DIRECTORY, MCP_CONFIG_FILENAME);
|
|
64
|
+
const managedPath = node_path.default.join(repoRoot, AGENTS_DIRECTORY, AGY_MANAGED_STATE);
|
|
65
|
+
const workspace = (0, _agimon_ai_po_core_runtimeJson.readJson)(workspacePath);
|
|
66
|
+
const workspaceMcpServers = workspace[require_shared.MCP_SERVERS_KEY];
|
|
67
|
+
const workspaceServers = (0, _agimon_ai_po_core_runtimeJson.isRecord)(workspaceMcpServers) ? { ...workspaceMcpServers } : {};
|
|
68
|
+
const previousManaged = (0, _agimon_ai_po_core_runtimeJson.readJson)(managedPath);
|
|
69
|
+
const previousMcpServers = previousManaged[require_shared.MCP_SERVERS_KEY];
|
|
70
|
+
const previousNames = Array.isArray(previousMcpServers) ? previousMcpServers.map(String) : [];
|
|
71
|
+
for (const name of /* @__PURE__ */ new Set([
|
|
72
|
+
...previousNames,
|
|
73
|
+
ANTIGRAVITY_PROXY_SERVER_NAME,
|
|
74
|
+
PROJECT_MCP_SERVER_NAME,
|
|
75
|
+
PENCIL_SERVER_NAME
|
|
76
|
+
])) delete workspaceServers[name];
|
|
77
|
+
const selectedMcpServers = (0, _agimon_ai_po_core_runtimeJson.readJson)(context.mcpConfigPath)[require_shared.MCP_SERVERS_KEY];
|
|
78
|
+
const selectedServers = (0, _agimon_ai_po_core_runtimeJson.isRecord)(selectedMcpServers) ? selectedMcpServers : {};
|
|
79
|
+
const allowed = context.mcpAllowlist?.servers;
|
|
80
|
+
const keeps = (name) => !allowed || allowed.length === 0 || allowed.includes(name);
|
|
81
|
+
const managedNames = [];
|
|
82
|
+
if (keeps("agiflow-proxy")) {
|
|
83
|
+
workspaceServers[ANTIGRAVITY_PROXY_SERVER_NAME] = {
|
|
84
|
+
command: "npx",
|
|
85
|
+
args: require_shared.mcpProxyArguments(require_shared.ANTIGRAVITY_MCP_PROXY_PACKAGE, context.proxyConfigPath, true),
|
|
86
|
+
cwd: repoRoot,
|
|
87
|
+
timeout: MCP_PROXY_TIMEOUT_MS
|
|
88
|
+
};
|
|
89
|
+
managedNames.push(ANTIGRAVITY_PROXY_SERVER_NAME);
|
|
90
|
+
}
|
|
91
|
+
const directNames = context.mcpAllowlist ? allowed ?? [] : [PROJECT_MCP_SERVER_NAME, PENCIL_SERVER_NAME];
|
|
92
|
+
for (const name of directNames) {
|
|
93
|
+
if (name === "agiflow-proxy") continue;
|
|
94
|
+
const definition = selectedServers[name];
|
|
95
|
+
if (!(0, _agimon_ai_po_core_runtimeJson.isRecord)(definition)) continue;
|
|
96
|
+
const adapted = adaptAntigravityMcpDefinition(definition, repoRoot);
|
|
97
|
+
if (!adapted) continue;
|
|
98
|
+
workspaceServers[name] = adapted;
|
|
99
|
+
managedNames.push(name);
|
|
100
|
+
}
|
|
101
|
+
(0, _agimon_ai_po_core_runtimeJson.writeJson)(workspacePath, {
|
|
102
|
+
...workspace,
|
|
103
|
+
[require_shared.MCP_SERVERS_KEY]: workspaceServers
|
|
104
|
+
});
|
|
105
|
+
(0, _agimon_ai_po_core_runtimeJson.writeJson)(managedPath, {
|
|
106
|
+
...previousManaged,
|
|
107
|
+
[require_shared.MCP_SERVERS_KEY]: managedNames
|
|
108
|
+
});
|
|
109
|
+
const home = context.environment.HOME;
|
|
110
|
+
if (!home) return;
|
|
111
|
+
for (const legacyPath of [node_path.default.join(home, GEMINI_DIRECTORY, "config", MCP_CONFIG_FILENAME), node_path.default.join(home, GEMINI_DIRECTORY, "config", require_shared.PLUGINS_DIRECTORY, "shared", MCP_CONFIG_FILENAME)]) {
|
|
112
|
+
if (!node_fs.default.existsSync(legacyPath)) continue;
|
|
113
|
+
const legacy = (0, _agimon_ai_po_core_runtimeJson.readJson)(legacyPath);
|
|
114
|
+
const legacyMcpServers = legacy[require_shared.MCP_SERVERS_KEY];
|
|
115
|
+
const servers = (0, _agimon_ai_po_core_runtimeJson.isRecord)(legacyMcpServers) ? { ...legacyMcpServers } : {};
|
|
116
|
+
for (const name of [
|
|
117
|
+
ANTIGRAVITY_PROXY_SERVER_NAME,
|
|
118
|
+
require_shared.AGIFLOW_PROXY_SERVER_NAME,
|
|
119
|
+
PROJECT_MCP_SERVER_NAME,
|
|
120
|
+
PENCIL_SERVER_NAME
|
|
121
|
+
]) delete servers[name];
|
|
122
|
+
(0, _agimon_ai_po_core_runtimeJson.writeJson)(legacyPath, {
|
|
123
|
+
...legacy,
|
|
124
|
+
[require_shared.MCP_SERVERS_KEY]: servers
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
function antigravitySettingsPath(home) {
|
|
129
|
+
return node_path.default.join(home, GEMINI_DIRECTORY, ANTIGRAVITY_CLI_DIRECTORY, ANTIGRAVITY_SETTINGS_FILENAME);
|
|
130
|
+
}
|
|
131
|
+
function syncAntigravityModel(context) {
|
|
132
|
+
const home = context.environment.HOME;
|
|
133
|
+
if (!home) throw new Error("HOME is required for Antigravity compatibility");
|
|
134
|
+
const settingsPath = antigravitySettingsPath(home);
|
|
135
|
+
const settings = (0, _agimon_ai_po_core_runtimeJson.readJson)(settingsPath);
|
|
136
|
+
if (!settings.model) settings.model = context.environment.AGY_MODEL ?? DEFAULT_ANTIGRAVITY_MODEL;
|
|
137
|
+
const trusted = Array.isArray(settings.trustedWorkspaces) ? settings.trustedWorkspaces.map(String) : [];
|
|
138
|
+
if (!trusted.includes(context.options.repoRoot)) {
|
|
139
|
+
trusted.push(context.options.repoRoot);
|
|
140
|
+
process.stderr.write(`[po] trusting ${context.options.repoRoot} in ${settingsPath}\n`);
|
|
141
|
+
}
|
|
142
|
+
settings.trustedWorkspaces = trusted;
|
|
143
|
+
(0, _agimon_ai_po_core_runtimeJson.writeJson)(settingsPath, settings);
|
|
144
|
+
}
|
|
145
|
+
function ensureManagedDirectory(directory) {
|
|
146
|
+
const stat = node_fs.default.lstatSync(directory, { throwIfNoEntry: false });
|
|
147
|
+
if (stat && !stat.isDirectory()) throw new Error(`Refusing to use unmanaged Antigravity path: ${directory}`);
|
|
148
|
+
if (!stat) node_fs.default.mkdirSync(directory, { recursive: true });
|
|
149
|
+
}
|
|
150
|
+
function replaceManagedSkillLink(linkPath, sourcePath) {
|
|
151
|
+
if (node_fs.default.existsSync(linkPath) || node_fs.default.lstatSync(linkPath, { throwIfNoEntry: false })) {
|
|
152
|
+
if (!node_fs.default.lstatSync(linkPath).isSymbolicLink()) throw new Error(`Refusing to replace unmanaged Antigravity path: ${linkPath}`);
|
|
153
|
+
node_fs.default.rmSync(linkPath, { force: true });
|
|
154
|
+
}
|
|
155
|
+
node_fs.default.symlinkSync(sourcePath, linkPath, "dir");
|
|
156
|
+
}
|
|
157
|
+
function syncAntigravityPlugins(context) {
|
|
158
|
+
const repoRoot = context.options.repoRoot;
|
|
159
|
+
const pluginsRoot = node_path.default.join(repoRoot, require_shared.PLUGINS_DIRECTORY);
|
|
160
|
+
const agentsRoot = node_path.default.join(repoRoot, GENERATED_AGENTS_DIRECTORY);
|
|
161
|
+
const targetRoot = node_path.default.join(agentsRoot, require_shared.PLUGINS_DIRECTORY);
|
|
162
|
+
const managedPath = node_path.default.join(repoRoot, AGENTS_DIRECTORY, AGY_MANAGED_STATE);
|
|
163
|
+
const managed = (0, _agimon_ai_po_core_runtimeJson.readJson)(managedPath);
|
|
164
|
+
const previousPlugins = managed[MANAGED_PLUGINS_KEY];
|
|
165
|
+
const previousNames = new Set(Array.isArray(previousPlugins) ? previousPlugins.map(String) : []);
|
|
166
|
+
ensureManagedDirectory(agentsRoot);
|
|
167
|
+
ensureManagedDirectory(targetRoot);
|
|
168
|
+
const selectedNames = /* @__PURE__ */ new Set();
|
|
169
|
+
for (const plugin of context.plugins) {
|
|
170
|
+
const manifestPath = node_path.default.join(plugin.directory, CODEX_PLUGIN_DIRECTORY, require_shared.PLUGIN_MANIFEST_FILENAME);
|
|
171
|
+
if (!node_fs.default.existsSync(manifestPath)) continue;
|
|
172
|
+
const manifest = (0, _agimon_ai_po_core_runtimeJson.readJson)(manifestPath);
|
|
173
|
+
const pluginName = typeof manifest.name === "string" && manifest.name ? manifest.name : node_path.default.basename(plugin.directory);
|
|
174
|
+
if (pluginName === "./index" || pluginName === ".." || pluginName.toLowerCase() === "core" || pluginName.includes("/") || pluginName.includes("\\")) throw new Error(`Invalid Antigravity plugin name: ${pluginName}`);
|
|
175
|
+
const target = node_path.default.join(targetRoot, pluginName);
|
|
176
|
+
selectedNames.add(pluginName);
|
|
177
|
+
ensureManagedDirectory(target);
|
|
178
|
+
(0, _agimon_ai_po_core_runtimeJson.writeJson)(node_path.default.join(target, require_shared.PLUGIN_MANIFEST_FILENAME), { name: pluginName });
|
|
179
|
+
const skills = node_path.default.join(plugin.directory, require_shared.SKILLS_DIRECTORY);
|
|
180
|
+
const skillsLink = node_path.default.join(target, require_shared.SKILLS_DIRECTORY);
|
|
181
|
+
if (node_fs.default.existsSync(skills)) replaceManagedSkillLink(skillsLink, skills);
|
|
182
|
+
else if (node_fs.default.lstatSync(skillsLink, { throwIfNoEntry: false })?.isSymbolicLink()) node_fs.default.rmSync(skillsLink, { force: true });
|
|
183
|
+
}
|
|
184
|
+
for (const entry of node_fs.default.readdirSync(targetRoot, { withFileTypes: true })) {
|
|
185
|
+
if (entry.name === "core" || selectedNames.has(entry.name)) continue;
|
|
186
|
+
const target = node_path.default.join(targetRoot, entry.name);
|
|
187
|
+
if (previousNames.has(entry.name)) {
|
|
188
|
+
node_fs.default.rmSync(target, {
|
|
189
|
+
recursive: true,
|
|
190
|
+
force: true
|
|
191
|
+
});
|
|
192
|
+
continue;
|
|
193
|
+
}
|
|
194
|
+
if (!entry.isDirectory()) continue;
|
|
195
|
+
const skillsLink = node_path.default.join(target, require_shared.SKILLS_DIRECTORY);
|
|
196
|
+
if (!node_fs.default.lstatSync(skillsLink, { throwIfNoEntry: false })?.isSymbolicLink()) continue;
|
|
197
|
+
const source = node_path.default.resolve(node_path.default.dirname(skillsLink), node_fs.default.readlinkSync(skillsLink));
|
|
198
|
+
if (require_process.pathInside(pluginsRoot, source)) node_fs.default.rmSync(target, {
|
|
199
|
+
recursive: true,
|
|
200
|
+
force: true
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
(0, _agimon_ai_po_core_runtimeJson.writeJson)(managedPath, {
|
|
204
|
+
...managed,
|
|
205
|
+
[MANAGED_PLUGINS_KEY]: [...selectedNames]
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
function removeManagedCorePlugin(core) {
|
|
209
|
+
if ((0, _agimon_ai_po_core_runtimeJson.readJson)(node_path.default.join(core, "plugin.json")).name === "core") node_fs.default.rmSync(core, {
|
|
210
|
+
recursive: true,
|
|
211
|
+
force: true
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
function syncAntigravitySharedSkills(context) {
|
|
215
|
+
const core = node_path.default.join(context.options.repoRoot, GENERATED_AGENTS_DIRECTORY, require_shared.PLUGINS_DIRECTORY, require_shared.CORE_PLUGIN_NAME);
|
|
216
|
+
if (node_fs.default.lstatSync(core, { throwIfNoEntry: false })?.isSymbolicLink()) throw new Error(`Refusing to use unmanaged Antigravity path: ${core}`);
|
|
217
|
+
if (!context.sharedSkills) {
|
|
218
|
+
removeManagedCorePlugin(core);
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
const source = node_path.default.join(context.options.repoRoot, CLAUDE_DIRECTORY, require_shared.SKILLS_DIRECTORY);
|
|
222
|
+
if (!node_fs.default.existsSync(source)) {
|
|
223
|
+
removeManagedCorePlugin(core);
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
ensureManagedDirectory(core);
|
|
227
|
+
const target = node_path.default.join(core, require_shared.SKILLS_DIRECTORY);
|
|
228
|
+
ensureManagedDirectory(target);
|
|
229
|
+
(0, _agimon_ai_po_core_runtimeJson.writeJson)(node_path.default.join(core, require_shared.PLUGIN_MANIFEST_FILENAME), { name: require_shared.CORE_PLUGIN_NAME });
|
|
230
|
+
const selected = /* @__PURE__ */ new Set();
|
|
231
|
+
for (const entry of node_fs.default.readdirSync(source, { withFileTypes: true })) {
|
|
232
|
+
if (!entry.isDirectory()) continue;
|
|
233
|
+
selected.add(entry.name);
|
|
234
|
+
replaceManagedSkillLink(node_path.default.join(target, entry.name), node_path.default.join(source, entry.name));
|
|
235
|
+
}
|
|
236
|
+
for (const entry of node_fs.default.readdirSync(target)) {
|
|
237
|
+
if (selected.has(entry)) continue;
|
|
238
|
+
const candidate = node_path.default.join(target, entry);
|
|
239
|
+
if (node_fs.default.lstatSync(candidate).isSymbolicLink()) node_fs.default.rmSync(candidate, { force: true });
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
function syncAntigravityHooks(context) {
|
|
243
|
+
const source = node_path.default.join(context.options.repoRoot, ANTIGRAVITY_LOCAL_DIRECTORY, HOOKS_CONFIG_FILENAME);
|
|
244
|
+
const target = node_path.default.join(context.options.repoRoot, AGENTS_DIRECTORY, HOOKS_CONFIG_FILENAME);
|
|
245
|
+
const managedPath = node_path.default.join(context.options.repoRoot, AGENTS_DIRECTORY, AGY_MANAGED_STATE);
|
|
246
|
+
const managed = (0, _agimon_ai_po_core_runtimeJson.readJson)(managedPath);
|
|
247
|
+
if (!node_fs.default.existsSync(source)) {
|
|
248
|
+
if (managed.hooks === true) node_fs.default.rmSync(target, { force: true });
|
|
249
|
+
(0, _agimon_ai_po_core_runtimeJson.writeJson)(managedPath, {
|
|
250
|
+
...managed,
|
|
251
|
+
hooks: false
|
|
252
|
+
});
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
const content = node_fs.default.readFileSync(source, "utf8").replaceAll(REPO_ROOT_PLACEHOLDER, context.options.repoRoot);
|
|
256
|
+
const targetStat = node_fs.default.lstatSync(target, { throwIfNoEntry: false });
|
|
257
|
+
if (targetStat && managed.hooks !== true) {
|
|
258
|
+
if (!targetStat.isFile() || node_fs.default.readFileSync(target, "utf8") !== content) throw new Error(`Refusing to replace unmanaged Antigravity path: ${target}`);
|
|
259
|
+
}
|
|
260
|
+
(0, _agimon_ai_po_core_runtimeJson.writeFileAtomic)(target, content);
|
|
261
|
+
(0, _agimon_ai_po_core_runtimeJson.writeJson)(managedPath, {
|
|
262
|
+
...managed,
|
|
263
|
+
hooks: true
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
function antigravityCompatibilityArgs(context) {
|
|
267
|
+
return [
|
|
268
|
+
...context.options.skipPermissions ? [require_shared.SKIP_PERMISSIONS_OPTION] : [],
|
|
269
|
+
...require_shared.additionalDirectoryArgs(context),
|
|
270
|
+
...context.options.providerArgs
|
|
271
|
+
];
|
|
272
|
+
}
|
|
273
|
+
async function launchAntigravity(context) {
|
|
274
|
+
const home = context.environment.HOME;
|
|
275
|
+
if (!home) throw new Error("HOME is required for Antigravity compatibility");
|
|
276
|
+
const lockPath = node_path.default.join(home, GEMINI_DIRECTORY, ANTIGRAVITY_CLI_DIRECTORY, ANTIGRAVITY_SYNC_LOCK);
|
|
277
|
+
const releaseLock = await require_process.acquireDirectoryLock(lockPath);
|
|
278
|
+
try {
|
|
279
|
+
syncAntigravityMcp(context);
|
|
280
|
+
syncAntigravityModel(context);
|
|
281
|
+
syncAntigravityPlugins(context);
|
|
282
|
+
syncAntigravitySharedSkills(context);
|
|
283
|
+
syncAntigravityHooks(context);
|
|
284
|
+
} finally {
|
|
285
|
+
await releaseLock();
|
|
286
|
+
}
|
|
287
|
+
return require_process.runInteractive(ANTIGRAVITY_PROVIDER, antigravityCompatibilityArgs(context), context.options.repoRoot, context.environment);
|
|
288
|
+
}
|
|
289
|
+
//#endregion
|
|
290
|
+
exports.adaptAntigravityMcpDefinition = adaptAntigravityMcpDefinition;
|
|
291
|
+
exports.antigravityCompatibilityArgs = antigravityCompatibilityArgs;
|
|
292
|
+
exports.launchAntigravity = launchAntigravity;
|
|
293
|
+
|
|
294
|
+
//# sourceMappingURL=antigravity.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"antigravity.cjs","names":["path","readJson","MCP_SERVERS_KEY","isRecord","mcpProxyArguments","ANTIGRAVITY_MCP_PROXY_PACKAGE","PLUGINS_DIRECTORY","fs","AGIFLOW_PROXY_SERVER_NAME","PLUGIN_MANIFEST_FILENAME","SKILLS_DIRECTORY","pathInside","CORE_PLUGIN_NAME","SKIP_PERMISSIONS_OPTION","additionalDirectoryArgs","acquireDirectoryLock","runInteractive"],"sources":["../../../../../../src/cli/commands/compat/providers/antigravity.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { isRecord, readJson, writeFileAtomic, writeJson } from '@agimon-ai/po-core/runtimeJson';\nimport type { JsonObject } from '@agimon-ai/po-core/runtimeJson';\n\nimport type { CompatibilityContext } from '../context';\nimport { acquireDirectoryLock, pathInside, runInteractive } from './process';\nimport {\n AGIFLOW_PROXY_SERVER_NAME,\n ANTIGRAVITY_MCP_PROXY_PACKAGE,\n additionalDirectoryArgs,\n CORE_PLUGIN_NAME,\n MCP_SERVERS_KEY,\n mcpProxyArguments,\n NPX_COMMAND,\n PLUGIN_MANIFEST_FILENAME,\n PLUGINS_DIRECTORY,\n SKILLS_DIRECTORY,\n SKIP_PERMISSIONS_OPTION,\n} from './shared';\n\n/**\n * Antigravity state synchronisation.\n *\n * Antigravity reads its configuration from the workspace and from the user's\n * home directory rather than from arguments, so every selection has to be\n * written to disk before launch and reverted when it is no longer selected.\n * Everything the harness writes is tracked in a managed-state file so a file\n * the user created by hand is never silently replaced.\n */\n\nconst ANTIGRAVITY_PROVIDER = 'agy';\nconst AGY_MANAGED_STATE = '.po-managed.json';\nconst ANTIGRAVITY_PROXY_SERVER_NAME = 'mcp-proxy';\nconst PROJECT_MCP_SERVER_NAME = 'project-mcp';\nconst PENCIL_SERVER_NAME = 'pencil';\nconst ANTIGRAVITY_SYNC_LOCK = '.po-sync.lock';\nconst AGENTS_DIRECTORY = '.agents';\nconst GENERATED_AGENTS_DIRECTORY = '_agents';\nconst CODEX_PLUGIN_DIRECTORY = '.codex-plugin';\nconst MCP_CONFIG_FILENAME = 'mcp_config.json';\nconst HOOKS_CONFIG_FILENAME = 'hooks.json';\nconst MANAGED_PLUGINS_KEY = 'plugins';\nconst MCP_PROXY_TIMEOUT_MS = 1_200_000;\nconst GEMINI_DIRECTORY = '.gemini';\nconst ANTIGRAVITY_CLI_DIRECTORY = 'antigravity-cli';\nconst ANTIGRAVITY_SETTINGS_FILENAME = 'settings.json';\nconst ANTIGRAVITY_LOCAL_DIRECTORY = '.antigravity-local';\nconst CLAUDE_DIRECTORY = '.claude';\nconst DEFAULT_ANTIGRAVITY_MODEL = 'Gemini 3.5 Flash';\nconst REPO_ROOT_PLACEHOLDER = '$AGY_REPO_ROOT';\n\n/** Rewrites one MCP server definition into the shape Antigravity expects. */\nexport function adaptAntigravityMcpDefinition(definition: JsonObject, repoRoot: string): JsonObject | undefined {\n if (typeof definition.command === 'string') {\n const adapted: JsonObject = {\n ...definition,\n command: definition.command,\n args: Array.isArray(definition.args) ? definition.args.map(String) : [],\n cwd: typeof definition.cwd === 'string' ? definition.cwd : repoRoot,\n };\n delete adapted.type;\n return adapted;\n }\n const url = typeof definition.url === 'string' ? definition.url : undefined;\n if (!url) return undefined;\n const adapted: JsonObject = { ...definition, serverUrl: url };\n delete adapted.type;\n delete adapted.url;\n return adapted;\n}\n\nfunction syncAntigravityMcp(context: CompatibilityContext): void {\n const repoRoot = context.options.repoRoot;\n const workspacePath = path.join(repoRoot, AGENTS_DIRECTORY, MCP_CONFIG_FILENAME);\n const managedPath = path.join(repoRoot, AGENTS_DIRECTORY, AGY_MANAGED_STATE);\n const workspace = readJson(workspacePath);\n const workspaceMcpServers = workspace[MCP_SERVERS_KEY];\n const workspaceServers = isRecord(workspaceMcpServers) ? { ...workspaceMcpServers } : {};\n const previousManaged = readJson(managedPath);\n const previousMcpServers = previousManaged[MCP_SERVERS_KEY];\n const previousNames = Array.isArray(previousMcpServers) ? previousMcpServers.map(String) : [];\n for (const name of new Set([\n ...previousNames,\n ANTIGRAVITY_PROXY_SERVER_NAME,\n PROJECT_MCP_SERVER_NAME,\n PENCIL_SERVER_NAME,\n ])) {\n delete workspaceServers[name];\n }\n\n const selectedConfig = readJson(context.mcpConfigPath);\n const selectedMcpServers = selectedConfig[MCP_SERVERS_KEY];\n const selectedServers = isRecord(selectedMcpServers) ? selectedMcpServers : {};\n const allowed = context.mcpAllowlist?.servers;\n const keeps = (name: string): boolean => !allowed || allowed.length === 0 || allowed.includes(name);\n const managedNames: string[] = [];\n\n if (keeps(AGIFLOW_PROXY_SERVER_NAME)) {\n workspaceServers[ANTIGRAVITY_PROXY_SERVER_NAME] = {\n command: NPX_COMMAND,\n args: mcpProxyArguments(ANTIGRAVITY_MCP_PROXY_PACKAGE, context.proxyConfigPath, true),\n cwd: repoRoot,\n timeout: MCP_PROXY_TIMEOUT_MS,\n };\n managedNames.push(ANTIGRAVITY_PROXY_SERVER_NAME);\n }\n\n const directNames = context.mcpAllowlist ? (allowed ?? []) : [PROJECT_MCP_SERVER_NAME, PENCIL_SERVER_NAME];\n for (const name of directNames) {\n if (name === AGIFLOW_PROXY_SERVER_NAME) continue;\n const definition = selectedServers[name];\n if (!isRecord(definition)) continue;\n const adapted = adaptAntigravityMcpDefinition(definition, repoRoot);\n if (!adapted) continue;\n workspaceServers[name] = adapted;\n managedNames.push(name);\n }\n\n writeJson(workspacePath, { ...workspace, [MCP_SERVERS_KEY]: workspaceServers });\n writeJson(managedPath, { ...previousManaged, [MCP_SERVERS_KEY]: managedNames });\n\n const home = context.environment.HOME;\n if (!home) return;\n // Earlier releases wrote these servers into the Gemini config. Leaving them\n // there would double every tool, so they are removed wherever they are found.\n for (const legacyPath of [\n path.join(home, GEMINI_DIRECTORY, 'config', MCP_CONFIG_FILENAME),\n path.join(home, GEMINI_DIRECTORY, 'config', PLUGINS_DIRECTORY, 'shared', MCP_CONFIG_FILENAME),\n ]) {\n if (!fs.existsSync(legacyPath)) continue;\n const legacy = readJson(legacyPath);\n const legacyMcpServers = legacy[MCP_SERVERS_KEY];\n const servers = isRecord(legacyMcpServers) ? { ...legacyMcpServers } : {};\n for (const name of [\n ANTIGRAVITY_PROXY_SERVER_NAME,\n AGIFLOW_PROXY_SERVER_NAME,\n PROJECT_MCP_SERVER_NAME,\n PENCIL_SERVER_NAME,\n ]) {\n delete servers[name];\n }\n writeJson(legacyPath, { ...legacy, [MCP_SERVERS_KEY]: servers });\n }\n}\n\nfunction antigravitySettingsPath(home: string): string {\n return path.join(home, GEMINI_DIRECTORY, ANTIGRAVITY_CLI_DIRECTORY, ANTIGRAVITY_SETTINGS_FILENAME);\n}\n\nfunction syncAntigravityModel(context: CompatibilityContext): void {\n const home = context.environment.HOME;\n if (!home) throw new Error('HOME is required for Antigravity compatibility');\n const settingsPath = antigravitySettingsPath(home);\n const settings = readJson(settingsPath);\n if (!settings.model) settings.model = context.environment.AGY_MODEL ?? DEFAULT_ANTIGRAVITY_MODEL;\n const trusted = Array.isArray(settings.trustedWorkspaces) ? settings.trustedWorkspaces.map(String) : [];\n // Trusting a workspace outlives the run that added it, and this file belongs\n // to Antigravity rather than to Po, so say which file gained the entry.\n if (!trusted.includes(context.options.repoRoot)) {\n trusted.push(context.options.repoRoot);\n process.stderr.write(`[po] trusting ${context.options.repoRoot} in ${settingsPath}\\n`);\n }\n settings.trustedWorkspaces = trusted;\n writeJson(settingsPath, settings);\n}\n\nfunction ensureManagedDirectory(directory: string): void {\n const stat = fs.lstatSync(directory, { throwIfNoEntry: false });\n if (stat && !stat.isDirectory()) {\n throw new Error(`Refusing to use unmanaged Antigravity path: ${directory}`);\n }\n if (!stat) fs.mkdirSync(directory, { recursive: true });\n}\n\nfunction replaceManagedSkillLink(linkPath: string, sourcePath: string): void {\n if (fs.existsSync(linkPath) || fs.lstatSync(linkPath, { throwIfNoEntry: false })) {\n const stat = fs.lstatSync(linkPath);\n if (!stat.isSymbolicLink()) throw new Error(`Refusing to replace unmanaged Antigravity path: ${linkPath}`);\n fs.rmSync(linkPath, { force: true });\n }\n fs.symlinkSync(sourcePath, linkPath, 'dir');\n}\n\nfunction syncAntigravityPlugins(context: CompatibilityContext): void {\n const repoRoot = context.options.repoRoot;\n const pluginsRoot = path.join(repoRoot, PLUGINS_DIRECTORY);\n const agentsRoot = path.join(repoRoot, GENERATED_AGENTS_DIRECTORY);\n const targetRoot = path.join(agentsRoot, PLUGINS_DIRECTORY);\n const managedPath = path.join(repoRoot, AGENTS_DIRECTORY, AGY_MANAGED_STATE);\n const managed = readJson(managedPath);\n const previousPlugins = managed[MANAGED_PLUGINS_KEY];\n const previousNames = new Set(Array.isArray(previousPlugins) ? previousPlugins.map(String) : []);\n ensureManagedDirectory(agentsRoot);\n ensureManagedDirectory(targetRoot);\n const selectedNames = new Set<string>();\n\n for (const plugin of context.plugins) {\n const manifestPath = path.join(plugin.directory, CODEX_PLUGIN_DIRECTORY, PLUGIN_MANIFEST_FILENAME);\n if (!fs.existsSync(manifestPath)) continue;\n const manifest = readJson(manifestPath);\n const pluginName =\n typeof manifest.name === 'string' && manifest.name ? manifest.name : path.basename(plugin.directory);\n if (\n pluginName === './index' ||\n pluginName === '..' ||\n pluginName.toLowerCase() === CORE_PLUGIN_NAME ||\n pluginName.includes('/') ||\n pluginName.includes('\\\\')\n ) {\n throw new Error(`Invalid Antigravity plugin name: ${pluginName}`);\n }\n const target = path.join(targetRoot, pluginName);\n selectedNames.add(pluginName);\n ensureManagedDirectory(target);\n writeJson(path.join(target, PLUGIN_MANIFEST_FILENAME), { name: pluginName });\n const skills = path.join(plugin.directory, SKILLS_DIRECTORY);\n const skillsLink = path.join(target, SKILLS_DIRECTORY);\n if (fs.existsSync(skills)) {\n replaceManagedSkillLink(skillsLink, skills);\n } else if (fs.lstatSync(skillsLink, { throwIfNoEntry: false })?.isSymbolicLink()) {\n fs.rmSync(skillsLink, { force: true });\n }\n }\n\n for (const entry of fs.readdirSync(targetRoot, { withFileTypes: true })) {\n if (entry.name === CORE_PLUGIN_NAME || selectedNames.has(entry.name)) continue;\n const target = path.join(targetRoot, entry.name);\n if (previousNames.has(entry.name)) {\n fs.rmSync(target, { recursive: true, force: true });\n continue;\n }\n if (!entry.isDirectory()) continue;\n // Not in the managed list, but its skills link points into this repository's\n // plugins, so an earlier run created it before the state file existed.\n const skillsLink = path.join(target, SKILLS_DIRECTORY);\n const stat = fs.lstatSync(skillsLink, { throwIfNoEntry: false });\n if (!stat?.isSymbolicLink()) continue;\n const source = path.resolve(path.dirname(skillsLink), fs.readlinkSync(skillsLink));\n if (pathInside(pluginsRoot, source)) fs.rmSync(target, { recursive: true, force: true });\n }\n\n writeJson(managedPath, { ...managed, [MANAGED_PLUGINS_KEY]: [...selectedNames] });\n}\n\nfunction removeManagedCorePlugin(core: string): void {\n if (readJson(path.join(core, PLUGIN_MANIFEST_FILENAME)).name === CORE_PLUGIN_NAME) {\n fs.rmSync(core, { recursive: true, force: true });\n }\n}\n\nfunction syncAntigravitySharedSkills(context: CompatibilityContext): void {\n const core = path.join(context.options.repoRoot, GENERATED_AGENTS_DIRECTORY, PLUGINS_DIRECTORY, CORE_PLUGIN_NAME);\n const coreStat = fs.lstatSync(core, { throwIfNoEntry: false });\n if (coreStat?.isSymbolicLink()) throw new Error(`Refusing to use unmanaged Antigravity path: ${core}`);\n if (!context.sharedSkills) {\n removeManagedCorePlugin(core);\n return;\n }\n\n const source = path.join(context.options.repoRoot, CLAUDE_DIRECTORY, SKILLS_DIRECTORY);\n if (!fs.existsSync(source)) {\n removeManagedCorePlugin(core);\n return;\n }\n ensureManagedDirectory(core);\n const target = path.join(core, SKILLS_DIRECTORY);\n ensureManagedDirectory(target);\n writeJson(path.join(core, PLUGIN_MANIFEST_FILENAME), { name: CORE_PLUGIN_NAME });\n const selected = new Set<string>();\n for (const entry of fs.readdirSync(source, { withFileTypes: true })) {\n if (!entry.isDirectory()) continue;\n selected.add(entry.name);\n replaceManagedSkillLink(path.join(target, entry.name), path.join(source, entry.name));\n }\n for (const entry of fs.readdirSync(target)) {\n if (selected.has(entry)) continue;\n const candidate = path.join(target, entry);\n if (fs.lstatSync(candidate).isSymbolicLink()) fs.rmSync(candidate, { force: true });\n }\n}\n\nfunction syncAntigravityHooks(context: CompatibilityContext): void {\n const source = path.join(context.options.repoRoot, ANTIGRAVITY_LOCAL_DIRECTORY, HOOKS_CONFIG_FILENAME);\n const target = path.join(context.options.repoRoot, AGENTS_DIRECTORY, HOOKS_CONFIG_FILENAME);\n const managedPath = path.join(context.options.repoRoot, AGENTS_DIRECTORY, AGY_MANAGED_STATE);\n const managed = readJson(managedPath);\n if (!fs.existsSync(source)) {\n if (managed.hooks === true) fs.rmSync(target, { force: true });\n writeJson(managedPath, { ...managed, hooks: false });\n return;\n }\n const content = fs.readFileSync(source, 'utf8').replaceAll(REPO_ROOT_PLACEHOLDER, context.options.repoRoot);\n const targetStat = fs.lstatSync(target, { throwIfNoEntry: false });\n if (targetStat && managed.hooks !== true) {\n if (!targetStat.isFile() || fs.readFileSync(target, 'utf8') !== content) {\n throw new Error(`Refusing to replace unmanaged Antigravity path: ${target}`);\n }\n }\n writeFileAtomic(target, content);\n writeJson(managedPath, { ...managed, hooks: true });\n}\n\nexport function antigravityCompatibilityArgs(context: CompatibilityContext): string[] {\n return [\n ...(context.options.skipPermissions ? [SKIP_PERMISSIONS_OPTION] : []),\n ...additionalDirectoryArgs(context),\n ...context.options.providerArgs,\n ];\n}\n\nexport async function launchAntigravity(context: CompatibilityContext): Promise<number> {\n const home = context.environment.HOME;\n if (!home) throw new Error('HOME is required for Antigravity compatibility');\n // Every step below writes shared state under the user's home directory, so\n // two repositories launching at once have to be serialised.\n const lockPath = path.join(home, GEMINI_DIRECTORY, ANTIGRAVITY_CLI_DIRECTORY, ANTIGRAVITY_SYNC_LOCK);\n const releaseLock = await acquireDirectoryLock(lockPath);\n try {\n syncAntigravityMcp(context);\n syncAntigravityModel(context);\n syncAntigravityPlugins(context);\n syncAntigravitySharedSkills(context);\n syncAntigravityHooks(context);\n } finally {\n await releaseLock();\n }\n return runInteractive(\n ANTIGRAVITY_PROVIDER,\n antigravityCompatibilityArgs(context),\n context.options.repoRoot,\n context.environment,\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { CompatibilityContext } from "../context.mjs";
|
|
2
|
+
import { JsonObject } from "@agimon-ai/po-core/runtimeJson";
|
|
3
|
+
//#region src/cli/commands/compat/providers/antigravity.d.ts
|
|
4
|
+
/** Rewrites one MCP server definition into the shape Antigravity expects. */
|
|
5
|
+
export declare function adaptAntigravityMcpDefinition(definition: JsonObject, repoRoot: string): JsonObject | undefined;
|
|
6
|
+
export declare function antigravityCompatibilityArgs(context: CompatibilityContext): string[];
|
|
7
|
+
export declare function launchAntigravity(context: CompatibilityContext): Promise<number>;
|
|
8
|
+
//#endregion
|
|
9
|
+
//# sourceMappingURL=antigravity.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"antigravity.d.mts","names":[],"sources":["../../../../../../src/cli/commands/compat/providers/antigravity.ts"],"mappings":";;;;wBAsDgB,8BAA8B,YAAY,YAAY,mBAAmB;wBA0PzE,6BAA6B,SAAS;wBAQhC,kBAAkB,SAAS,uBAAuB"}
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
import { acquireDirectoryLock, pathInside, runInteractive } from "./process.mjs";
|
|
2
|
+
import { AGIFLOW_PROXY_SERVER_NAME, ANTIGRAVITY_MCP_PROXY_PACKAGE, CORE_PLUGIN_NAME, MCP_SERVERS_KEY, PLUGINS_DIRECTORY, PLUGIN_MANIFEST_FILENAME, SKILLS_DIRECTORY, SKIP_PERMISSIONS_OPTION, additionalDirectoryArgs, mcpProxyArguments } from "./shared.mjs";
|
|
3
|
+
import fs from "node:fs";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import { isRecord, readJson, writeFileAtomic, writeJson } from "@agimon-ai/po-core/runtimeJson";
|
|
6
|
+
//#region src/cli/commands/compat/providers/antigravity.ts
|
|
7
|
+
/**
|
|
8
|
+
* Antigravity state synchronisation.
|
|
9
|
+
*
|
|
10
|
+
* Antigravity reads its configuration from the workspace and from the user's
|
|
11
|
+
* home directory rather than from arguments, so every selection has to be
|
|
12
|
+
* written to disk before launch and reverted when it is no longer selected.
|
|
13
|
+
* Everything the harness writes is tracked in a managed-state file so a file
|
|
14
|
+
* the user created by hand is never silently replaced.
|
|
15
|
+
*/
|
|
16
|
+
const ANTIGRAVITY_PROVIDER = "agy";
|
|
17
|
+
const AGY_MANAGED_STATE = ".po-managed.json";
|
|
18
|
+
const ANTIGRAVITY_PROXY_SERVER_NAME = "mcp-proxy";
|
|
19
|
+
const PROJECT_MCP_SERVER_NAME = "project-mcp";
|
|
20
|
+
const PENCIL_SERVER_NAME = "pencil";
|
|
21
|
+
const ANTIGRAVITY_SYNC_LOCK = ".po-sync.lock";
|
|
22
|
+
const AGENTS_DIRECTORY = ".agents";
|
|
23
|
+
const GENERATED_AGENTS_DIRECTORY = "_agents";
|
|
24
|
+
const CODEX_PLUGIN_DIRECTORY = ".codex-plugin";
|
|
25
|
+
const MCP_CONFIG_FILENAME = "mcp_config.json";
|
|
26
|
+
const HOOKS_CONFIG_FILENAME = "hooks.json";
|
|
27
|
+
const MANAGED_PLUGINS_KEY = "plugins";
|
|
28
|
+
const MCP_PROXY_TIMEOUT_MS = 12e5;
|
|
29
|
+
const GEMINI_DIRECTORY = ".gemini";
|
|
30
|
+
const ANTIGRAVITY_CLI_DIRECTORY = "antigravity-cli";
|
|
31
|
+
const ANTIGRAVITY_SETTINGS_FILENAME = "settings.json";
|
|
32
|
+
const ANTIGRAVITY_LOCAL_DIRECTORY = ".antigravity-local";
|
|
33
|
+
const CLAUDE_DIRECTORY = ".claude";
|
|
34
|
+
const DEFAULT_ANTIGRAVITY_MODEL = "Gemini 3.5 Flash";
|
|
35
|
+
const REPO_ROOT_PLACEHOLDER = "$AGY_REPO_ROOT";
|
|
36
|
+
/** Rewrites one MCP server definition into the shape Antigravity expects. */
|
|
37
|
+
function adaptAntigravityMcpDefinition(definition, repoRoot) {
|
|
38
|
+
if (typeof definition.command === "string") {
|
|
39
|
+
const adapted = {
|
|
40
|
+
...definition,
|
|
41
|
+
command: definition.command,
|
|
42
|
+
args: Array.isArray(definition.args) ? definition.args.map(String) : [],
|
|
43
|
+
cwd: typeof definition.cwd === "string" ? definition.cwd : repoRoot
|
|
44
|
+
};
|
|
45
|
+
delete adapted.type;
|
|
46
|
+
return adapted;
|
|
47
|
+
}
|
|
48
|
+
const url = typeof definition.url === "string" ? definition.url : void 0;
|
|
49
|
+
if (!url) return void 0;
|
|
50
|
+
const adapted = {
|
|
51
|
+
...definition,
|
|
52
|
+
serverUrl: url
|
|
53
|
+
};
|
|
54
|
+
delete adapted.type;
|
|
55
|
+
delete adapted.url;
|
|
56
|
+
return adapted;
|
|
57
|
+
}
|
|
58
|
+
function syncAntigravityMcp(context) {
|
|
59
|
+
const repoRoot = context.options.repoRoot;
|
|
60
|
+
const workspacePath = path.join(repoRoot, AGENTS_DIRECTORY, MCP_CONFIG_FILENAME);
|
|
61
|
+
const managedPath = path.join(repoRoot, AGENTS_DIRECTORY, AGY_MANAGED_STATE);
|
|
62
|
+
const workspace = readJson(workspacePath);
|
|
63
|
+
const workspaceMcpServers = workspace[MCP_SERVERS_KEY];
|
|
64
|
+
const workspaceServers = isRecord(workspaceMcpServers) ? { ...workspaceMcpServers } : {};
|
|
65
|
+
const previousManaged = readJson(managedPath);
|
|
66
|
+
const previousMcpServers = previousManaged[MCP_SERVERS_KEY];
|
|
67
|
+
const previousNames = Array.isArray(previousMcpServers) ? previousMcpServers.map(String) : [];
|
|
68
|
+
for (const name of /* @__PURE__ */ new Set([
|
|
69
|
+
...previousNames,
|
|
70
|
+
ANTIGRAVITY_PROXY_SERVER_NAME,
|
|
71
|
+
PROJECT_MCP_SERVER_NAME,
|
|
72
|
+
PENCIL_SERVER_NAME
|
|
73
|
+
])) delete workspaceServers[name];
|
|
74
|
+
const selectedMcpServers = readJson(context.mcpConfigPath)[MCP_SERVERS_KEY];
|
|
75
|
+
const selectedServers = isRecord(selectedMcpServers) ? selectedMcpServers : {};
|
|
76
|
+
const allowed = context.mcpAllowlist?.servers;
|
|
77
|
+
const keeps = (name) => !allowed || allowed.length === 0 || allowed.includes(name);
|
|
78
|
+
const managedNames = [];
|
|
79
|
+
if (keeps("agiflow-proxy")) {
|
|
80
|
+
workspaceServers[ANTIGRAVITY_PROXY_SERVER_NAME] = {
|
|
81
|
+
command: "npx",
|
|
82
|
+
args: mcpProxyArguments(ANTIGRAVITY_MCP_PROXY_PACKAGE, context.proxyConfigPath, true),
|
|
83
|
+
cwd: repoRoot,
|
|
84
|
+
timeout: MCP_PROXY_TIMEOUT_MS
|
|
85
|
+
};
|
|
86
|
+
managedNames.push(ANTIGRAVITY_PROXY_SERVER_NAME);
|
|
87
|
+
}
|
|
88
|
+
const directNames = context.mcpAllowlist ? allowed ?? [] : [PROJECT_MCP_SERVER_NAME, PENCIL_SERVER_NAME];
|
|
89
|
+
for (const name of directNames) {
|
|
90
|
+
if (name === "agiflow-proxy") continue;
|
|
91
|
+
const definition = selectedServers[name];
|
|
92
|
+
if (!isRecord(definition)) continue;
|
|
93
|
+
const adapted = adaptAntigravityMcpDefinition(definition, repoRoot);
|
|
94
|
+
if (!adapted) continue;
|
|
95
|
+
workspaceServers[name] = adapted;
|
|
96
|
+
managedNames.push(name);
|
|
97
|
+
}
|
|
98
|
+
writeJson(workspacePath, {
|
|
99
|
+
...workspace,
|
|
100
|
+
[MCP_SERVERS_KEY]: workspaceServers
|
|
101
|
+
});
|
|
102
|
+
writeJson(managedPath, {
|
|
103
|
+
...previousManaged,
|
|
104
|
+
[MCP_SERVERS_KEY]: managedNames
|
|
105
|
+
});
|
|
106
|
+
const home = context.environment.HOME;
|
|
107
|
+
if (!home) return;
|
|
108
|
+
for (const legacyPath of [path.join(home, GEMINI_DIRECTORY, "config", MCP_CONFIG_FILENAME), path.join(home, GEMINI_DIRECTORY, "config", PLUGINS_DIRECTORY, "shared", MCP_CONFIG_FILENAME)]) {
|
|
109
|
+
if (!fs.existsSync(legacyPath)) continue;
|
|
110
|
+
const legacy = readJson(legacyPath);
|
|
111
|
+
const legacyMcpServers = legacy[MCP_SERVERS_KEY];
|
|
112
|
+
const servers = isRecord(legacyMcpServers) ? { ...legacyMcpServers } : {};
|
|
113
|
+
for (const name of [
|
|
114
|
+
ANTIGRAVITY_PROXY_SERVER_NAME,
|
|
115
|
+
AGIFLOW_PROXY_SERVER_NAME,
|
|
116
|
+
PROJECT_MCP_SERVER_NAME,
|
|
117
|
+
PENCIL_SERVER_NAME
|
|
118
|
+
]) delete servers[name];
|
|
119
|
+
writeJson(legacyPath, {
|
|
120
|
+
...legacy,
|
|
121
|
+
[MCP_SERVERS_KEY]: servers
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
function antigravitySettingsPath(home) {
|
|
126
|
+
return path.join(home, GEMINI_DIRECTORY, ANTIGRAVITY_CLI_DIRECTORY, ANTIGRAVITY_SETTINGS_FILENAME);
|
|
127
|
+
}
|
|
128
|
+
function syncAntigravityModel(context) {
|
|
129
|
+
const home = context.environment.HOME;
|
|
130
|
+
if (!home) throw new Error("HOME is required for Antigravity compatibility");
|
|
131
|
+
const settingsPath = antigravitySettingsPath(home);
|
|
132
|
+
const settings = readJson(settingsPath);
|
|
133
|
+
if (!settings.model) settings.model = context.environment.AGY_MODEL ?? DEFAULT_ANTIGRAVITY_MODEL;
|
|
134
|
+
const trusted = Array.isArray(settings.trustedWorkspaces) ? settings.trustedWorkspaces.map(String) : [];
|
|
135
|
+
if (!trusted.includes(context.options.repoRoot)) {
|
|
136
|
+
trusted.push(context.options.repoRoot);
|
|
137
|
+
process.stderr.write(`[po] trusting ${context.options.repoRoot} in ${settingsPath}\n`);
|
|
138
|
+
}
|
|
139
|
+
settings.trustedWorkspaces = trusted;
|
|
140
|
+
writeJson(settingsPath, settings);
|
|
141
|
+
}
|
|
142
|
+
function ensureManagedDirectory(directory) {
|
|
143
|
+
const stat = fs.lstatSync(directory, { throwIfNoEntry: false });
|
|
144
|
+
if (stat && !stat.isDirectory()) throw new Error(`Refusing to use unmanaged Antigravity path: ${directory}`);
|
|
145
|
+
if (!stat) fs.mkdirSync(directory, { recursive: true });
|
|
146
|
+
}
|
|
147
|
+
function replaceManagedSkillLink(linkPath, sourcePath) {
|
|
148
|
+
if (fs.existsSync(linkPath) || fs.lstatSync(linkPath, { throwIfNoEntry: false })) {
|
|
149
|
+
if (!fs.lstatSync(linkPath).isSymbolicLink()) throw new Error(`Refusing to replace unmanaged Antigravity path: ${linkPath}`);
|
|
150
|
+
fs.rmSync(linkPath, { force: true });
|
|
151
|
+
}
|
|
152
|
+
fs.symlinkSync(sourcePath, linkPath, "dir");
|
|
153
|
+
}
|
|
154
|
+
function syncAntigravityPlugins(context) {
|
|
155
|
+
const repoRoot = context.options.repoRoot;
|
|
156
|
+
const pluginsRoot = path.join(repoRoot, PLUGINS_DIRECTORY);
|
|
157
|
+
const agentsRoot = path.join(repoRoot, GENERATED_AGENTS_DIRECTORY);
|
|
158
|
+
const targetRoot = path.join(agentsRoot, PLUGINS_DIRECTORY);
|
|
159
|
+
const managedPath = path.join(repoRoot, AGENTS_DIRECTORY, AGY_MANAGED_STATE);
|
|
160
|
+
const managed = readJson(managedPath);
|
|
161
|
+
const previousPlugins = managed[MANAGED_PLUGINS_KEY];
|
|
162
|
+
const previousNames = new Set(Array.isArray(previousPlugins) ? previousPlugins.map(String) : []);
|
|
163
|
+
ensureManagedDirectory(agentsRoot);
|
|
164
|
+
ensureManagedDirectory(targetRoot);
|
|
165
|
+
const selectedNames = /* @__PURE__ */ new Set();
|
|
166
|
+
for (const plugin of context.plugins) {
|
|
167
|
+
const manifestPath = path.join(plugin.directory, CODEX_PLUGIN_DIRECTORY, PLUGIN_MANIFEST_FILENAME);
|
|
168
|
+
if (!fs.existsSync(manifestPath)) continue;
|
|
169
|
+
const manifest = readJson(manifestPath);
|
|
170
|
+
const pluginName = typeof manifest.name === "string" && manifest.name ? manifest.name : path.basename(plugin.directory);
|
|
171
|
+
if (pluginName === "./index" || pluginName === ".." || pluginName.toLowerCase() === "core" || pluginName.includes("/") || pluginName.includes("\\")) throw new Error(`Invalid Antigravity plugin name: ${pluginName}`);
|
|
172
|
+
const target = path.join(targetRoot, pluginName);
|
|
173
|
+
selectedNames.add(pluginName);
|
|
174
|
+
ensureManagedDirectory(target);
|
|
175
|
+
writeJson(path.join(target, PLUGIN_MANIFEST_FILENAME), { name: pluginName });
|
|
176
|
+
const skills = path.join(plugin.directory, SKILLS_DIRECTORY);
|
|
177
|
+
const skillsLink = path.join(target, SKILLS_DIRECTORY);
|
|
178
|
+
if (fs.existsSync(skills)) replaceManagedSkillLink(skillsLink, skills);
|
|
179
|
+
else if (fs.lstatSync(skillsLink, { throwIfNoEntry: false })?.isSymbolicLink()) fs.rmSync(skillsLink, { force: true });
|
|
180
|
+
}
|
|
181
|
+
for (const entry of fs.readdirSync(targetRoot, { withFileTypes: true })) {
|
|
182
|
+
if (entry.name === "core" || selectedNames.has(entry.name)) continue;
|
|
183
|
+
const target = path.join(targetRoot, entry.name);
|
|
184
|
+
if (previousNames.has(entry.name)) {
|
|
185
|
+
fs.rmSync(target, {
|
|
186
|
+
recursive: true,
|
|
187
|
+
force: true
|
|
188
|
+
});
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
191
|
+
if (!entry.isDirectory()) continue;
|
|
192
|
+
const skillsLink = path.join(target, SKILLS_DIRECTORY);
|
|
193
|
+
if (!fs.lstatSync(skillsLink, { throwIfNoEntry: false })?.isSymbolicLink()) continue;
|
|
194
|
+
const source = path.resolve(path.dirname(skillsLink), fs.readlinkSync(skillsLink));
|
|
195
|
+
if (pathInside(pluginsRoot, source)) fs.rmSync(target, {
|
|
196
|
+
recursive: true,
|
|
197
|
+
force: true
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
writeJson(managedPath, {
|
|
201
|
+
...managed,
|
|
202
|
+
[MANAGED_PLUGINS_KEY]: [...selectedNames]
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
function removeManagedCorePlugin(core) {
|
|
206
|
+
if (readJson(path.join(core, "plugin.json")).name === "core") fs.rmSync(core, {
|
|
207
|
+
recursive: true,
|
|
208
|
+
force: true
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
function syncAntigravitySharedSkills(context) {
|
|
212
|
+
const core = path.join(context.options.repoRoot, GENERATED_AGENTS_DIRECTORY, PLUGINS_DIRECTORY, CORE_PLUGIN_NAME);
|
|
213
|
+
if (fs.lstatSync(core, { throwIfNoEntry: false })?.isSymbolicLink()) throw new Error(`Refusing to use unmanaged Antigravity path: ${core}`);
|
|
214
|
+
if (!context.sharedSkills) {
|
|
215
|
+
removeManagedCorePlugin(core);
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
const source = path.join(context.options.repoRoot, CLAUDE_DIRECTORY, SKILLS_DIRECTORY);
|
|
219
|
+
if (!fs.existsSync(source)) {
|
|
220
|
+
removeManagedCorePlugin(core);
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
ensureManagedDirectory(core);
|
|
224
|
+
const target = path.join(core, SKILLS_DIRECTORY);
|
|
225
|
+
ensureManagedDirectory(target);
|
|
226
|
+
writeJson(path.join(core, PLUGIN_MANIFEST_FILENAME), { name: CORE_PLUGIN_NAME });
|
|
227
|
+
const selected = /* @__PURE__ */ new Set();
|
|
228
|
+
for (const entry of fs.readdirSync(source, { withFileTypes: true })) {
|
|
229
|
+
if (!entry.isDirectory()) continue;
|
|
230
|
+
selected.add(entry.name);
|
|
231
|
+
replaceManagedSkillLink(path.join(target, entry.name), path.join(source, entry.name));
|
|
232
|
+
}
|
|
233
|
+
for (const entry of fs.readdirSync(target)) {
|
|
234
|
+
if (selected.has(entry)) continue;
|
|
235
|
+
const candidate = path.join(target, entry);
|
|
236
|
+
if (fs.lstatSync(candidate).isSymbolicLink()) fs.rmSync(candidate, { force: true });
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
function syncAntigravityHooks(context) {
|
|
240
|
+
const source = path.join(context.options.repoRoot, ANTIGRAVITY_LOCAL_DIRECTORY, HOOKS_CONFIG_FILENAME);
|
|
241
|
+
const target = path.join(context.options.repoRoot, AGENTS_DIRECTORY, HOOKS_CONFIG_FILENAME);
|
|
242
|
+
const managedPath = path.join(context.options.repoRoot, AGENTS_DIRECTORY, AGY_MANAGED_STATE);
|
|
243
|
+
const managed = readJson(managedPath);
|
|
244
|
+
if (!fs.existsSync(source)) {
|
|
245
|
+
if (managed.hooks === true) fs.rmSync(target, { force: true });
|
|
246
|
+
writeJson(managedPath, {
|
|
247
|
+
...managed,
|
|
248
|
+
hooks: false
|
|
249
|
+
});
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
const content = fs.readFileSync(source, "utf8").replaceAll(REPO_ROOT_PLACEHOLDER, context.options.repoRoot);
|
|
253
|
+
const targetStat = fs.lstatSync(target, { throwIfNoEntry: false });
|
|
254
|
+
if (targetStat && managed.hooks !== true) {
|
|
255
|
+
if (!targetStat.isFile() || fs.readFileSync(target, "utf8") !== content) throw new Error(`Refusing to replace unmanaged Antigravity path: ${target}`);
|
|
256
|
+
}
|
|
257
|
+
writeFileAtomic(target, content);
|
|
258
|
+
writeJson(managedPath, {
|
|
259
|
+
...managed,
|
|
260
|
+
hooks: true
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
function antigravityCompatibilityArgs(context) {
|
|
264
|
+
return [
|
|
265
|
+
...context.options.skipPermissions ? [SKIP_PERMISSIONS_OPTION] : [],
|
|
266
|
+
...additionalDirectoryArgs(context),
|
|
267
|
+
...context.options.providerArgs
|
|
268
|
+
];
|
|
269
|
+
}
|
|
270
|
+
async function launchAntigravity(context) {
|
|
271
|
+
const home = context.environment.HOME;
|
|
272
|
+
if (!home) throw new Error("HOME is required for Antigravity compatibility");
|
|
273
|
+
const lockPath = path.join(home, GEMINI_DIRECTORY, ANTIGRAVITY_CLI_DIRECTORY, ANTIGRAVITY_SYNC_LOCK);
|
|
274
|
+
const releaseLock = await acquireDirectoryLock(lockPath);
|
|
275
|
+
try {
|
|
276
|
+
syncAntigravityMcp(context);
|
|
277
|
+
syncAntigravityModel(context);
|
|
278
|
+
syncAntigravityPlugins(context);
|
|
279
|
+
syncAntigravitySharedSkills(context);
|
|
280
|
+
syncAntigravityHooks(context);
|
|
281
|
+
} finally {
|
|
282
|
+
await releaseLock();
|
|
283
|
+
}
|
|
284
|
+
return runInteractive(ANTIGRAVITY_PROVIDER, antigravityCompatibilityArgs(context), context.options.repoRoot, context.environment);
|
|
285
|
+
}
|
|
286
|
+
//#endregion
|
|
287
|
+
export { adaptAntigravityMcpDefinition, antigravityCompatibilityArgs, launchAntigravity };
|
|
288
|
+
|
|
289
|
+
//# sourceMappingURL=antigravity.mjs.map
|