@agimon-ai/doompi 0.0.1-alpha.2 → 0.0.1-alpha.21
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/README.md +437 -452
- package/assets/doompi-tui.png +0 -0
- package/dist/adapters/bootstrapClaim.cjs +2 -0
- package/dist/adapters/bootstrapClaim.cjs.map +1 -0
- package/dist/adapters/bootstrapClaim.mjs +2 -0
- package/dist/adapters/bootstrapClaim.mjs.map +1 -0
- package/dist/adapters/bootstrapLocator.cjs +2 -0
- package/dist/adapters/bootstrapLocator.cjs.map +1 -0
- package/dist/adapters/bootstrapLocator.d.cts +6 -0
- package/dist/adapters/bootstrapLocator.d.cts.map +1 -0
- package/dist/adapters/bootstrapLocator.d.mts +6 -0
- package/dist/adapters/bootstrapLocator.d.mts.map +1 -0
- package/dist/adapters/bootstrapLocator.mjs +2 -0
- package/dist/adapters/bootstrapLocator.mjs.map +1 -0
- package/dist/adapters/compatibility/antigravity.cjs +2 -0
- package/dist/{services → adapters}/compatibility/antigravity.cjs.map +1 -1
- package/dist/adapters/compatibility/antigravity.d.cts +11 -0
- package/dist/{services → adapters}/compatibility/antigravity.d.cts.map +1 -1
- package/dist/adapters/compatibility/antigravity.d.mts +11 -0
- package/dist/{services → adapters}/compatibility/antigravity.d.mts.map +1 -1
- package/dist/adapters/compatibility/antigravity.mjs +2 -0
- package/dist/{services → adapters}/compatibility/antigravity.mjs.map +1 -1
- package/dist/adapters/compatibility/codex.cjs +2 -0
- package/dist/{services → adapters}/compatibility/codex.cjs.map +1 -1
- package/dist/adapters/compatibility/codex.d.cts +19 -0
- package/dist/{services → adapters}/compatibility/codex.d.cts.map +1 -1
- package/dist/adapters/compatibility/codex.d.mts +19 -0
- package/dist/{services → adapters}/compatibility/codex.d.mts.map +1 -1
- package/dist/adapters/compatibility/codex.mjs +2 -0
- package/dist/{services → adapters}/compatibility/codex.mjs.map +1 -1
- package/dist/adapters/compatibility/index.cjs +2 -0
- package/dist/adapters/compatibility/index.cjs.map +1 -0
- package/dist/adapters/compatibility/index.d.cts +16 -0
- package/dist/{services → adapters}/compatibility/index.d.cts.map +1 -1
- package/dist/adapters/compatibility/index.d.mts +16 -0
- package/dist/{services → adapters}/compatibility/index.d.mts.map +1 -1
- package/dist/adapters/compatibility/index.mjs +2 -0
- package/dist/adapters/compatibility/index.mjs.map +1 -0
- package/dist/adapters/compatibility/process.cjs +2 -0
- package/dist/{services → adapters}/compatibility/process.cjs.map +1 -1
- package/dist/adapters/compatibility/process.d.cts +35 -0
- package/dist/{services → adapters}/compatibility/process.d.cts.map +1 -1
- package/dist/adapters/compatibility/process.d.mts +35 -0
- package/dist/{services → adapters}/compatibility/process.d.mts.map +1 -1
- package/dist/adapters/compatibility/process.mjs +2 -0
- package/dist/{services → adapters}/compatibility/process.mjs.map +1 -1
- package/dist/adapters/compatibility/shared.cjs +2 -0
- package/dist/{services → adapters}/compatibility/shared.cjs.map +1 -1
- package/dist/adapters/compatibility/shared.d.cts +33 -0
- package/dist/{services → adapters}/compatibility/shared.d.cts.map +1 -1
- package/dist/adapters/compatibility/shared.d.mts +33 -0
- package/dist/{services → adapters}/compatibility/shared.d.mts.map +1 -1
- package/dist/adapters/compatibility/shared.mjs +2 -0
- package/dist/{services → adapters}/compatibility/shared.mjs.map +1 -1
- package/dist/adapters/compatibilityContext.cjs +2 -0
- package/dist/adapters/compatibilityContext.cjs.map +1 -0
- package/dist/adapters/compatibilityContext.d.cts +23 -0
- package/dist/{services → adapters}/compatibilityContext.d.cts.map +1 -1
- package/dist/adapters/compatibilityContext.d.mts +23 -0
- package/dist/{services → adapters}/compatibilityContext.d.mts.map +1 -1
- package/dist/adapters/compatibilityContext.mjs +2 -0
- package/dist/adapters/compatibilityContext.mjs.map +1 -0
- package/dist/adapters/composer.cjs +2 -0
- package/dist/adapters/composer.cjs.map +1 -0
- package/dist/adapters/composer.d.cts +113 -0
- package/dist/adapters/composer.d.cts.map +1 -0
- package/dist/adapters/composer.d.mts +113 -0
- package/dist/adapters/composer.d.mts.map +1 -0
- package/dist/adapters/composer.mjs +2 -0
- package/dist/adapters/composer.mjs.map +1 -0
- package/dist/adapters/compositionState.cjs +2 -0
- package/dist/adapters/compositionState.cjs.map +1 -0
- package/dist/adapters/compositionState.d.cts +12 -0
- package/dist/adapters/compositionState.d.cts.map +1 -0
- package/dist/adapters/compositionState.d.mts +12 -0
- package/dist/adapters/compositionState.d.mts.map +1 -0
- package/dist/adapters/compositionState.mjs +2 -0
- package/dist/adapters/compositionState.mjs.map +1 -0
- package/dist/adapters/config/harnessState.cjs +2 -0
- package/dist/adapters/config/harnessState.cjs.map +1 -0
- package/dist/adapters/config/harnessState.d.cts +26 -0
- package/dist/adapters/config/harnessState.d.cts.map +1 -0
- package/dist/adapters/config/harnessState.d.mts +26 -0
- package/dist/adapters/config/harnessState.d.mts.map +1 -0
- package/dist/adapters/config/harnessState.mjs +2 -0
- package/dist/adapters/config/harnessState.mjs.map +1 -0
- package/dist/adapters/deferredSkills.cjs +12 -0
- package/dist/adapters/deferredSkills.cjs.map +1 -0
- package/dist/adapters/deferredSkills.mjs +12 -0
- package/dist/adapters/deferredSkills.mjs.map +1 -0
- package/dist/adapters/doomPackage.cjs +2 -0
- package/dist/adapters/doomPackage.cjs.map +1 -0
- package/dist/adapters/doomPackage.mjs +2 -0
- package/dist/adapters/doomPackage.mjs.map +1 -0
- package/dist/adapters/dpiRunner.cjs +3 -0
- package/dist/adapters/dpiRunner.cjs.map +1 -0
- package/dist/adapters/dpiRunner.mjs +3 -0
- package/dist/adapters/dpiRunner.mjs.map +1 -0
- package/dist/adapters/dpiSettings.cjs +2 -0
- package/dist/adapters/dpiSettings.cjs.map +1 -0
- package/dist/adapters/dpiSettings.mjs +2 -0
- package/dist/adapters/dpiSettings.mjs.map +1 -0
- package/dist/adapters/extensionCompiler.cjs +3 -0
- package/dist/adapters/extensionCompiler.cjs.map +1 -0
- package/dist/adapters/extensionCompiler.mjs +3 -0
- package/dist/adapters/extensionCompiler.mjs.map +1 -0
- package/dist/adapters/harnessContext.cjs +2 -0
- package/dist/adapters/harnessContext.cjs.map +1 -0
- package/dist/adapters/harnessContext.d.cts +61 -0
- package/dist/{services → adapters}/harnessContext.d.cts.map +1 -1
- package/dist/adapters/harnessContext.d.mts +61 -0
- package/dist/{services → adapters}/harnessContext.d.mts.map +1 -1
- package/dist/adapters/harnessContext.mjs +2 -0
- package/dist/adapters/harnessContext.mjs.map +1 -0
- package/dist/adapters/helpSkills.cjs +2 -0
- package/dist/adapters/helpSkills.cjs.map +1 -0
- package/dist/adapters/helpSkills.mjs +2 -0
- package/dist/adapters/helpSkills.mjs.map +1 -0
- package/dist/adapters/layerPackageInstaller.cjs +2 -0
- package/dist/adapters/layerPackageInstaller.cjs.map +1 -0
- package/dist/adapters/layerPackageInstaller.mjs +2 -0
- package/dist/adapters/layerPackageInstaller.mjs.map +1 -0
- package/dist/adapters/matrixSwitcher.cjs +2 -0
- package/dist/adapters/matrixSwitcher.cjs.map +1 -0
- package/dist/adapters/matrixSwitcher.d.cts +46 -0
- package/dist/{services → adapters}/matrixSwitcher.d.cts.map +1 -1
- package/dist/adapters/matrixSwitcher.d.mts +46 -0
- package/dist/{services → adapters}/matrixSwitcher.d.mts.map +1 -1
- package/dist/adapters/matrixSwitcher.mjs +2 -0
- package/dist/adapters/matrixSwitcher.mjs.map +1 -0
- package/dist/adapters/mcpFilter.cjs +3 -0
- package/dist/adapters/mcpFilter.cjs.map +1 -0
- package/dist/adapters/mcpFilter.d.cts +40 -0
- package/dist/adapters/mcpFilter.d.cts.map +1 -0
- package/dist/adapters/mcpFilter.d.mts +40 -0
- package/dist/adapters/mcpFilter.d.mts.map +1 -0
- package/dist/adapters/mcpFilter.mjs +3 -0
- package/dist/adapters/mcpFilter.mjs.map +1 -0
- package/dist/adapters/modules/moduleResolution.cjs +2 -0
- package/dist/adapters/modules/moduleResolution.cjs.map +1 -0
- package/dist/adapters/modules/moduleResolution.d.cts +69 -0
- package/dist/adapters/modules/moduleResolution.d.cts.map +1 -0
- package/dist/adapters/modules/moduleResolution.d.mts +69 -0
- package/dist/adapters/modules/moduleResolution.d.mts.map +1 -0
- package/dist/adapters/modules/moduleResolution.mjs +2 -0
- package/dist/adapters/modules/moduleResolution.mjs.map +1 -0
- package/dist/adapters/packageBootstrap.cjs +2 -0
- package/dist/adapters/packageBootstrap.cjs.map +1 -0
- package/dist/adapters/packageBootstrap.d.cts +8 -0
- package/dist/adapters/packageBootstrap.d.cts.map +1 -0
- package/dist/adapters/packageBootstrap.d.mts +8 -0
- package/dist/adapters/packageBootstrap.d.mts.map +1 -0
- package/dist/adapters/packageBootstrap.mjs +2 -0
- package/dist/adapters/packageBootstrap.mjs.map +1 -0
- package/dist/adapters/piExtensionAlias.cjs +2 -0
- package/dist/adapters/piExtensionAlias.cjs.map +1 -0
- package/dist/adapters/piExtensionAlias.mjs +2 -0
- package/dist/adapters/piExtensionAlias.mjs.map +1 -0
- package/dist/adapters/piSettings.cjs +2 -0
- package/dist/adapters/piSettings.cjs.map +1 -0
- package/dist/adapters/piSettings.d.cts +25 -0
- package/dist/adapters/piSettings.d.cts.map +1 -0
- package/dist/adapters/piSettings.d.mts +25 -0
- package/dist/adapters/piSettings.d.mts.map +1 -0
- package/dist/adapters/piSettings.mjs +2 -0
- package/dist/adapters/piSettings.mjs.map +1 -0
- package/dist/adapters/pluginMaterializer.cjs +2 -0
- package/dist/adapters/pluginMaterializer.cjs.map +1 -0
- package/dist/adapters/pluginMaterializer.mjs +2 -0
- package/dist/adapters/pluginMaterializer.mjs.map +1 -0
- package/dist/adapters/projectPiSettings.cjs +2 -0
- package/dist/adapters/projectPiSettings.cjs.map +1 -0
- package/dist/adapters/projectPiSettings.d.cts +29 -0
- package/dist/adapters/projectPiSettings.d.cts.map +1 -0
- package/dist/adapters/projectPiSettings.d.mts +29 -0
- package/dist/adapters/projectPiSettings.d.mts.map +1 -0
- package/dist/adapters/projectPiSettings.mjs +2 -0
- package/dist/adapters/projectPiSettings.mjs.map +1 -0
- package/dist/adapters/repository/repository.cjs +2 -0
- package/dist/adapters/repository/repository.cjs.map +1 -0
- package/dist/adapters/repository/repository.d.cts +21 -0
- package/dist/adapters/repository/repository.d.cts.map +1 -0
- package/dist/adapters/repository/repository.d.mts +21 -0
- package/dist/adapters/repository/repository.d.mts.map +1 -0
- package/dist/adapters/repository/repository.mjs +2 -0
- package/dist/adapters/repository/repository.mjs.map +1 -0
- package/dist/adapters/resourceCollector.cjs +3 -0
- package/dist/adapters/resourceCollector.cjs.map +1 -0
- package/dist/adapters/resourceCollector.d.cts +25 -0
- package/dist/adapters/resourceCollector.d.cts.map +1 -0
- package/dist/adapters/resourceCollector.d.mts +25 -0
- package/dist/adapters/resourceCollector.d.mts.map +1 -0
- package/dist/adapters/resourceCollector.mjs +3 -0
- package/dist/adapters/resourceCollector.mjs.map +1 -0
- package/dist/adapters/runtimeBundle.cjs +2 -0
- package/dist/adapters/runtimeBundle.cjs.map +1 -0
- package/dist/{services → adapters}/runtimeBundle.d.cts +4 -2
- package/dist/adapters/runtimeBundle.d.cts.map +1 -0
- package/dist/{services → adapters}/runtimeBundle.d.mts +4 -2
- package/dist/adapters/runtimeBundle.d.mts.map +1 -0
- package/dist/adapters/runtimeBundle.mjs +2 -0
- package/dist/adapters/runtimeBundle.mjs.map +1 -0
- package/dist/adapters/serialization/json.cjs +2 -0
- package/dist/adapters/serialization/json.cjs.map +1 -0
- package/dist/adapters/serialization/json.d.cts +23 -0
- package/dist/adapters/serialization/json.d.cts.map +1 -0
- package/dist/adapters/serialization/json.d.mts +23 -0
- package/dist/adapters/serialization/json.d.mts.map +1 -0
- package/dist/adapters/serialization/json.mjs +2 -0
- package/dist/adapters/serialization/json.mjs.map +1 -0
- package/dist/adapters/sharedBuildCache.cjs +2 -0
- package/dist/adapters/sharedBuildCache.cjs.map +1 -0
- package/dist/adapters/sharedBuildCache.mjs +2 -0
- package/dist/adapters/sharedBuildCache.mjs.map +1 -0
- package/dist/adapters/skillCatalog.cjs +2 -0
- package/dist/adapters/skillCatalog.cjs.map +1 -0
- package/dist/adapters/skillCatalog.d.cts +61 -0
- package/dist/adapters/skillCatalog.d.cts.map +1 -0
- package/dist/adapters/skillCatalog.d.mts +61 -0
- package/dist/adapters/skillCatalog.d.mts.map +1 -0
- package/dist/adapters/skillCatalog.mjs +2 -0
- package/dist/adapters/skillCatalog.mjs.map +1 -0
- package/dist/adapters/skillSources.cjs +2 -0
- package/dist/{services → adapters}/skillSources.cjs.map +1 -1
- package/dist/adapters/skillSources.d.cts +24 -0
- package/dist/{services → adapters}/skillSources.d.cts.map +1 -1
- package/dist/adapters/skillSources.d.mts +24 -0
- package/dist/{services → adapters}/skillSources.d.mts.map +1 -1
- package/dist/adapters/skillSources.mjs +2 -0
- package/dist/{services → adapters}/skillSources.mjs.map +1 -1
- package/dist/adapters/startupPrecompiler.cjs +2 -0
- package/dist/adapters/startupPrecompiler.cjs.map +1 -0
- package/dist/adapters/startupPrecompiler.d.cts +13 -0
- package/dist/adapters/startupPrecompiler.d.cts.map +1 -0
- package/dist/adapters/startupPrecompiler.d.mts +13 -0
- package/dist/adapters/startupPrecompiler.d.mts.map +1 -0
- package/dist/adapters/startupPrecompiler.mjs +2 -0
- package/dist/adapters/startupPrecompiler.mjs.map +1 -0
- package/dist/adapters/syncLocation.cjs +2 -0
- package/dist/adapters/syncLocation.cjs.map +1 -0
- package/dist/adapters/syncLocation.d.cts +19 -0
- package/dist/adapters/syncLocation.d.cts.map +1 -0
- package/dist/adapters/syncLocation.d.mts +19 -0
- package/dist/adapters/syncLocation.d.mts.map +1 -0
- package/dist/adapters/syncLocation.mjs +2 -0
- package/dist/adapters/syncLocation.mjs.map +1 -0
- package/dist/adapters/syncState.cjs +2 -0
- package/dist/adapters/syncState.cjs.map +1 -0
- package/dist/adapters/syncState.d.cts +153 -0
- package/dist/adapters/syncState.d.cts.map +1 -0
- package/dist/adapters/syncState.d.mts +153 -0
- package/dist/adapters/syncState.d.mts.map +1 -0
- package/dist/adapters/syncState.mjs +2 -0
- package/dist/adapters/syncState.mjs.map +1 -0
- package/dist/adapters/syncStateContract.cjs +2 -0
- package/dist/adapters/syncStateContract.cjs.map +1 -0
- package/dist/adapters/syncStateContract.d.cts +13 -0
- package/dist/adapters/syncStateContract.d.cts.map +1 -0
- package/dist/adapters/syncStateContract.d.mts +13 -0
- package/dist/adapters/syncStateContract.d.mts.map +1 -0
- package/dist/adapters/syncStateContract.mjs +2 -0
- package/dist/adapters/syncStateContract.mjs.map +1 -0
- package/dist/adapters/syncedRuntimeBuilder.cjs +2 -0
- package/dist/adapters/syncedRuntimeBuilder.cjs.map +1 -0
- package/dist/adapters/syncedRuntimeBuilder.d.cts +11 -0
- package/dist/adapters/syncedRuntimeBuilder.d.cts.map +1 -0
- package/dist/adapters/syncedRuntimeBuilder.d.mts +11 -0
- package/dist/adapters/syncedRuntimeBuilder.d.mts.map +1 -0
- package/dist/adapters/syncedRuntimeBuilder.mjs +2 -0
- package/dist/adapters/syncedRuntimeBuilder.mjs.map +1 -0
- package/dist/adapters/telemetry/logSinkTelemetry.cjs +2 -0
- package/dist/adapters/telemetry/logSinkTelemetry.cjs.map +1 -0
- package/dist/adapters/telemetry/logSinkTelemetry.d.cts +51 -0
- package/dist/adapters/telemetry/logSinkTelemetry.d.cts.map +1 -0
- package/dist/adapters/telemetry/logSinkTelemetry.d.mts +51 -0
- package/dist/adapters/telemetry/logSinkTelemetry.d.mts.map +1 -0
- package/dist/adapters/telemetry/logSinkTelemetry.mjs +2 -0
- package/dist/adapters/telemetry/logSinkTelemetry.mjs.map +1 -0
- package/dist/bin/cli.cjs +1 -1
- package/dist/bin/cli.cjs.map +1 -1
- package/dist/bin/cli.mjs +1 -1
- package/dist/bin/cli.mjs.map +1 -1
- package/dist/bin/dpi.cjs +3 -0
- package/dist/bin/dpi.cjs.map +1 -0
- package/dist/bin/dpi.d.cts +1 -0
- package/dist/bin/dpi.d.mts +1 -0
- package/dist/bin/dpi.mjs +3 -0
- package/dist/bin/dpi.mjs.map +1 -0
- package/dist/cli/cliApp.cjs +1 -2
- package/dist/cli/cliApp.d.cts +2 -45
- package/dist/cli/cliApp.d.mts +2 -45
- package/dist/cli/cliApp.mjs +1 -2
- package/dist/cli/compatibilityOptions.cjs +1 -2
- package/dist/cli/compatibilityOptions.d.cts +2 -15
- package/dist/cli/compatibilityOptions.d.mts +2 -15
- package/dist/cli/compatibilityOptions.mjs +1 -2
- package/dist/cli/help.cjs +1 -63
- package/dist/cli/help.d.cts +2 -6
- package/dist/cli/help.d.mts +2 -6
- package/dist/cli/help.mjs +1 -63
- package/dist/cli/index.cjs +1 -1
- package/dist/cli/index.d.cts +4 -4
- package/dist/cli/index.d.mts +4 -4
- package/dist/cli/index.mjs +1 -1
- package/dist/cli/matrixOptions.cjs +1 -2
- package/dist/cli/matrixOptions.d.cts +2 -99
- package/dist/cli/matrixOptions.d.mts +2 -99
- package/dist/cli/matrixOptions.mjs +1 -2
- package/dist/cli/options.cjs +1 -2
- package/dist/cli/options.d.cts +2 -7
- package/dist/cli/options.d.mts +2 -7
- package/dist/cli/options.mjs +1 -2
- package/dist/commands/baseCommand.cjs.map +1 -1
- package/dist/commands/baseCommand.d.cts +3 -3
- package/dist/commands/baseCommand.d.mts +3 -3
- package/dist/commands/baseCommand.mjs.map +1 -1
- package/dist/commands/buildCommand.cjs +2 -2
- package/dist/commands/buildCommand.cjs.map +1 -1
- package/dist/commands/buildCommand.mjs +2 -2
- package/dist/commands/buildCommand.mjs.map +1 -1
- package/dist/commands/cli/cliApp.cjs +2 -0
- package/dist/commands/cli/cliApp.cjs.map +1 -0
- package/dist/commands/cli/cliApp.d.cts +45 -0
- package/dist/commands/cli/cliApp.d.cts.map +1 -0
- package/dist/commands/cli/cliApp.d.mts +45 -0
- package/dist/commands/cli/cliApp.d.mts.map +1 -0
- package/dist/commands/cli/cliApp.mjs +2 -0
- package/dist/commands/cli/cliApp.mjs.map +1 -0
- package/dist/commands/cli/compatibilityOptions.cjs +2 -0
- package/dist/commands/cli/compatibilityOptions.cjs.map +1 -0
- package/dist/commands/cli/compatibilityOptions.d.cts +15 -0
- package/dist/commands/cli/compatibilityOptions.d.cts.map +1 -0
- package/dist/commands/cli/compatibilityOptions.d.mts +15 -0
- package/dist/commands/cli/compatibilityOptions.d.mts.map +1 -0
- package/dist/commands/cli/compatibilityOptions.mjs +2 -0
- package/dist/commands/cli/compatibilityOptions.mjs.map +1 -0
- package/dist/commands/cli/help.cjs +68 -0
- package/dist/{cli → commands/cli}/help.cjs.map +1 -1
- package/dist/commands/cli/help.d.cts +6 -0
- package/dist/commands/cli/help.d.cts.map +1 -0
- package/dist/commands/cli/help.d.mts +6 -0
- package/dist/commands/cli/help.d.mts.map +1 -0
- package/dist/commands/cli/help.mjs +68 -0
- package/dist/{cli → commands/cli}/help.mjs.map +1 -1
- package/dist/commands/cli/index.cjs +1 -0
- package/dist/commands/cli/index.d.cts +4 -0
- package/dist/commands/cli/index.d.mts +4 -0
- package/dist/commands/cli/index.mjs +1 -0
- package/dist/commands/cli/matrixOptions.cjs +2 -0
- package/dist/commands/cli/matrixOptions.cjs.map +1 -0
- package/dist/commands/cli/matrixOptions.d.cts +99 -0
- package/dist/commands/cli/matrixOptions.d.cts.map +1 -0
- package/dist/commands/cli/matrixOptions.d.mts +99 -0
- package/dist/commands/cli/matrixOptions.d.mts.map +1 -0
- package/dist/commands/cli/matrixOptions.mjs +2 -0
- package/dist/commands/cli/matrixOptions.mjs.map +1 -0
- package/dist/commands/cli/options.cjs +2 -0
- package/dist/commands/cli/options.cjs.map +1 -0
- package/dist/commands/cli/options.d.cts +7 -0
- package/dist/commands/cli/options.d.cts.map +1 -0
- package/dist/commands/cli/options.d.mts +7 -0
- package/dist/commands/cli/options.d.mts.map +1 -0
- package/dist/commands/cli/options.mjs +2 -0
- package/dist/commands/cli/options.mjs.map +1 -0
- package/dist/commands/compatibilityCommand.cjs +1 -1
- package/dist/commands/compatibilityCommand.cjs.map +1 -1
- package/dist/commands/compatibilityCommand.d.cts +1 -1
- package/dist/commands/compatibilityCommand.d.cts.map +1 -1
- package/dist/commands/compatibilityCommand.d.mts +1 -1
- package/dist/commands/compatibilityCommand.d.mts.map +1 -1
- package/dist/commands/compatibilityCommand.mjs +1 -1
- package/dist/commands/compatibilityCommand.mjs.map +1 -1
- package/dist/commands/emitMcpCommand.cjs +1 -1
- package/dist/commands/emitMcpCommand.cjs.map +1 -1
- package/dist/commands/emitMcpCommand.d.cts +2 -2
- package/dist/commands/emitMcpCommand.d.mts +2 -2
- package/dist/commands/emitMcpCommand.mjs +1 -1
- package/dist/commands/emitMcpCommand.mjs.map +1 -1
- package/dist/commands/explainCommand.cjs +2 -2
- package/dist/commands/explainCommand.cjs.map +1 -1
- package/dist/commands/explainCommand.d.cts +2 -2
- package/dist/commands/explainCommand.d.mts +2 -2
- package/dist/commands/explainCommand.mjs +2 -2
- package/dist/commands/explainCommand.mjs.map +1 -1
- package/dist/commands/index.cjs +1 -1
- package/dist/commands/index.d.cts +2 -3
- package/dist/commands/index.d.mts +2 -3
- package/dist/commands/index.mjs +1 -1
- package/dist/commands/initCommand.cjs +1 -2
- package/dist/commands/initCommand.cjs.map +1 -1
- package/dist/commands/initCommand.d.cts +4 -3
- package/dist/commands/initCommand.d.cts.map +1 -1
- package/dist/commands/initCommand.d.mts +4 -3
- package/dist/commands/initCommand.d.mts.map +1 -1
- package/dist/commands/initCommand.mjs +1 -2
- package/dist/commands/initCommand.mjs.map +1 -1
- package/dist/commands/initPresenter.cjs +3 -0
- package/dist/commands/initPresenter.cjs.map +1 -0
- package/dist/commands/initPresenter.d.cts +8 -0
- package/dist/commands/initPresenter.d.cts.map +1 -0
- package/dist/commands/initPresenter.d.mts +8 -0
- package/dist/commands/initPresenter.d.mts.map +1 -0
- package/dist/commands/initPresenter.mjs +3 -0
- package/dist/commands/initPresenter.mjs.map +1 -0
- package/dist/commands/launchCommand.cjs +1 -1
- package/dist/commands/launchCommand.cjs.map +1 -1
- package/dist/commands/launchCommand.d.cts +6 -4
- package/dist/commands/launchCommand.d.cts.map +1 -1
- package/dist/commands/launchCommand.d.mts +6 -4
- package/dist/commands/launchCommand.d.mts.map +1 -1
- package/dist/commands/launchCommand.mjs +1 -1
- package/dist/commands/launchCommand.mjs.map +1 -1
- package/dist/commands/syncCommand.cjs +5 -5
- package/dist/commands/syncCommand.cjs.map +1 -1
- package/dist/commands/syncCommand.d.cts +19 -7
- package/dist/commands/syncCommand.d.cts.map +1 -1
- package/dist/commands/syncCommand.d.mts +19 -7
- package/dist/commands/syncCommand.d.mts.map +1 -1
- package/dist/commands/syncCommand.mjs +5 -5
- package/dist/commands/syncCommand.mjs.map +1 -1
- package/dist/commands/syncPipeline.cjs +2 -0
- package/dist/commands/syncPipeline.cjs.map +1 -0
- package/dist/commands/syncPipeline.mjs +2 -0
- package/dist/commands/syncPipeline.mjs.map +1 -0
- package/dist/config/harnessState.cjs +1 -2
- package/dist/config/harnessState.d.cts +2 -24
- package/dist/config/harnessState.d.mts +2 -24
- package/dist/config/harnessState.mjs +1 -2
- package/dist/config/index.cjs +1 -1
- package/dist/config/index.d.cts +4 -7
- package/dist/config/index.d.mts +4 -7
- package/dist/config/index.mjs +1 -1
- package/dist/config/projectTrust.cjs +1 -2
- package/dist/config/projectTrust.d.cts +2 -14
- package/dist/config/projectTrust.d.mts +2 -14
- package/dist/config/projectTrust.mjs +1 -2
- package/dist/entries/autoStop.cjs +1 -2
- package/dist/entries/autoStop.d.cts +2 -6
- package/dist/entries/autoStop.d.mts +2 -7
- package/dist/entries/autoStop.mjs +1 -2
- package/dist/entries/components/matrixPicker.cjs +1 -2
- package/dist/entries/components/matrixPicker.d.cts +2 -55
- package/dist/entries/components/matrixPicker.d.mts +2 -55
- package/dist/entries/components/matrixPicker.mjs +1 -2
- package/dist/entries/components/skillsOverlay.cjs +1 -4
- package/dist/entries/components/skillsOverlay.d.cts +2 -58
- package/dist/entries/components/skillsOverlay.d.mts +2 -58
- package/dist/entries/components/skillsOverlay.mjs +1 -4
- package/dist/entries/domains.cjs +1 -2
- package/dist/entries/domains.d.cts +2 -10
- package/dist/entries/domains.d.mts +2 -10
- package/dist/entries/domains.mjs +1 -2
- package/dist/entries/doom.cjs +1 -2
- package/dist/entries/doom.d.cts +2 -13
- package/dist/entries/doom.d.mts +2 -14
- package/dist/entries/doom.mjs +1 -2
- package/dist/entries/effort.cjs +1 -2
- package/dist/entries/effort.d.cts +2 -10
- package/dist/entries/effort.d.mts +2 -10
- package/dist/entries/effort.mjs +1 -2
- package/dist/entries/majorMode.cjs +1 -6
- package/dist/entries/majorMode.d.cts +2 -29
- package/dist/entries/majorMode.d.mts +2 -29
- package/dist/entries/majorMode.mjs +1 -6
- package/dist/entries/modeCatalog.cjs +1 -0
- package/dist/entries/modeCatalog.d.cts +2 -0
- package/dist/entries/modeCatalog.d.mts +2 -0
- package/dist/entries/modeCatalog.mjs +1 -0
- package/dist/entries/notifications.cjs +1 -2
- package/dist/entries/notifications.d.cts +2 -13
- package/dist/entries/notifications.d.mts +2 -13
- package/dist/entries/notifications.mjs +1 -2
- package/dist/entries/ollamaProvider.cjs +1 -2
- package/dist/entries/ollamaProvider.d.cts +2 -6
- package/dist/entries/ollamaProvider.d.mts +2 -7
- package/dist/entries/ollamaProvider.mjs +1 -2
- package/dist/entries/persona.cjs +1 -2
- package/dist/entries/persona.d.cts +2 -14
- package/dist/entries/persona.d.mts +2 -15
- package/dist/entries/persona.mjs +1 -2
- package/dist/entries/profile.cjs +1 -3
- package/dist/entries/profile.d.cts +2 -16
- package/dist/entries/profile.d.mts +2 -16
- package/dist/entries/profile.mjs +1 -3
- package/dist/entries/repositoryHooks.cjs +1 -9
- package/dist/entries/repositoryHooks.d.cts +2 -7
- package/dist/entries/repositoryHooks.d.mts +2 -8
- package/dist/entries/repositoryHooks.mjs +1 -9
- package/dist/entries/skills.cjs +1 -2
- package/dist/entries/skills.d.cts +2 -34
- package/dist/entries/skills.d.mts +2 -34
- package/dist/entries/skills.mjs +1 -2
- package/dist/entries/styleSystem.cjs +1 -4
- package/dist/entries/styleSystem.d.cts +2 -32
- package/dist/entries/styleSystem.d.mts +2 -32
- package/dist/entries/styleSystem.mjs +1 -4
- package/dist/extensions/entries/autoStop.cjs +2 -0
- package/dist/extensions/entries/autoStop.cjs.map +1 -0
- package/dist/extensions/entries/autoStop.d.cts +7 -0
- package/dist/extensions/entries/autoStop.d.cts.map +1 -0
- package/dist/extensions/entries/autoStop.d.mts +7 -0
- package/dist/extensions/entries/autoStop.d.mts.map +1 -0
- package/dist/extensions/entries/autoStop.mjs +2 -0
- package/dist/extensions/entries/autoStop.mjs.map +1 -0
- package/dist/extensions/entries/cacheOptimizer.mjs +2 -0
- package/dist/extensions/entries/cacheOptimizer.mjs.map +1 -0
- package/dist/extensions/entries/components/matrixPicker.cjs +2 -0
- package/dist/extensions/entries/components/matrixPicker.cjs.map +1 -0
- package/dist/extensions/entries/components/matrixPicker.d.cts +55 -0
- package/dist/extensions/entries/components/matrixPicker.d.cts.map +1 -0
- package/dist/extensions/entries/components/matrixPicker.d.mts +55 -0
- package/dist/extensions/entries/components/matrixPicker.d.mts.map +1 -0
- package/dist/extensions/entries/components/matrixPicker.mjs +2 -0
- package/dist/extensions/entries/components/matrixPicker.mjs.map +1 -0
- package/dist/extensions/entries/components/skillsOverlay.cjs +4 -0
- package/dist/extensions/entries/components/skillsOverlay.cjs.map +1 -0
- package/dist/extensions/entries/components/skillsOverlay.d.cts +58 -0
- package/dist/extensions/entries/components/skillsOverlay.d.cts.map +1 -0
- package/dist/extensions/entries/components/skillsOverlay.d.mts +58 -0
- package/dist/extensions/entries/components/skillsOverlay.d.mts.map +1 -0
- package/dist/extensions/entries/components/skillsOverlay.mjs +4 -0
- package/dist/extensions/entries/components/skillsOverlay.mjs.map +1 -0
- package/dist/extensions/entries/domains.cjs +2 -0
- package/dist/extensions/entries/domains.cjs.map +1 -0
- package/dist/extensions/entries/domains.d.cts +18 -0
- package/dist/extensions/entries/domains.d.cts.map +1 -0
- package/dist/extensions/entries/domains.d.mts +18 -0
- package/dist/extensions/entries/domains.d.mts.map +1 -0
- package/dist/extensions/entries/domains.mjs +2 -0
- package/dist/extensions/entries/domains.mjs.map +1 -0
- package/dist/extensions/entries/doom.cjs +2 -0
- package/dist/extensions/entries/doom.cjs.map +1 -0
- package/dist/extensions/entries/doom.d.cts +14 -0
- package/dist/extensions/entries/doom.d.cts.map +1 -0
- package/dist/extensions/entries/doom.d.mts +14 -0
- package/dist/extensions/entries/doom.d.mts.map +1 -0
- package/dist/extensions/entries/doom.mjs +2 -0
- package/dist/extensions/entries/doom.mjs.map +1 -0
- package/dist/extensions/entries/effort.cjs +2 -0
- package/dist/extensions/entries/effort.cjs.map +1 -0
- package/dist/extensions/entries/effort.d.cts +10 -0
- package/dist/extensions/entries/effort.d.cts.map +1 -0
- package/dist/extensions/entries/effort.d.mts +10 -0
- package/dist/extensions/entries/effort.d.mts.map +1 -0
- package/dist/extensions/entries/effort.mjs +2 -0
- package/dist/extensions/entries/effort.mjs.map +1 -0
- package/dist/extensions/entries/majorMode.cjs +6 -0
- package/dist/extensions/entries/majorMode.cjs.map +1 -0
- package/dist/extensions/entries/majorMode.d.cts +27 -0
- package/dist/extensions/entries/majorMode.d.cts.map +1 -0
- package/dist/extensions/entries/majorMode.d.mts +27 -0
- package/dist/extensions/entries/majorMode.d.mts.map +1 -0
- package/dist/extensions/entries/majorMode.mjs +6 -0
- package/dist/extensions/entries/majorMode.mjs.map +1 -0
- package/dist/extensions/entries/modeCatalog.cjs +2 -0
- package/dist/extensions/entries/modeCatalog.cjs.map +1 -0
- package/dist/extensions/entries/modeCatalog.d.cts +7 -0
- package/dist/extensions/entries/modeCatalog.d.cts.map +1 -0
- package/dist/extensions/entries/modeCatalog.d.mts +7 -0
- package/dist/extensions/entries/modeCatalog.d.mts.map +1 -0
- package/dist/extensions/entries/modeCatalog.mjs +2 -0
- package/dist/extensions/entries/modeCatalog.mjs.map +1 -0
- package/dist/extensions/entries/notifications.cjs +2 -0
- package/dist/extensions/entries/notifications.cjs.map +1 -0
- package/dist/extensions/entries/notifications.d.cts +14 -0
- package/dist/extensions/entries/notifications.d.cts.map +1 -0
- package/dist/extensions/entries/notifications.d.mts +14 -0
- package/dist/extensions/entries/notifications.d.mts.map +1 -0
- package/dist/extensions/entries/notifications.mjs +2 -0
- package/dist/extensions/entries/notifications.mjs.map +1 -0
- package/dist/extensions/entries/ollamaProvider.cjs +2 -0
- package/dist/extensions/entries/ollamaProvider.cjs.map +1 -0
- package/dist/extensions/entries/ollamaProvider.d.cts +7 -0
- package/dist/extensions/entries/ollamaProvider.d.cts.map +1 -0
- package/dist/extensions/entries/ollamaProvider.d.mts +7 -0
- package/dist/extensions/entries/ollamaProvider.d.mts.map +1 -0
- package/dist/extensions/entries/ollamaProvider.mjs +2 -0
- package/dist/extensions/entries/ollamaProvider.mjs.map +1 -0
- package/dist/extensions/entries/persona.cjs +2 -0
- package/dist/extensions/entries/persona.cjs.map +1 -0
- package/dist/extensions/entries/persona.d.cts +15 -0
- package/dist/extensions/entries/persona.d.cts.map +1 -0
- package/dist/extensions/entries/persona.d.mts +15 -0
- package/dist/extensions/entries/persona.d.mts.map +1 -0
- package/dist/extensions/entries/persona.mjs +2 -0
- package/dist/extensions/entries/persona.mjs.map +1 -0
- package/dist/extensions/entries/profile.cjs +3 -0
- package/dist/extensions/entries/profile.cjs.map +1 -0
- package/dist/extensions/entries/profile.d.cts +18 -0
- package/dist/extensions/entries/profile.d.cts.map +1 -0
- package/dist/extensions/entries/profile.d.mts +18 -0
- package/dist/extensions/entries/profile.d.mts.map +1 -0
- package/dist/extensions/entries/profile.mjs +3 -0
- package/dist/extensions/entries/profile.mjs.map +1 -0
- package/dist/extensions/entries/repositoryHooks.cjs +9 -0
- package/dist/extensions/entries/repositoryHooks.cjs.map +1 -0
- package/dist/extensions/entries/repositoryHooks.d.cts +8 -0
- package/dist/extensions/entries/repositoryHooks.d.cts.map +1 -0
- package/dist/extensions/entries/repositoryHooks.d.mts +8 -0
- package/dist/extensions/entries/repositoryHooks.d.mts.map +1 -0
- package/dist/extensions/entries/repositoryHooks.mjs +9 -0
- package/dist/extensions/entries/repositoryHooks.mjs.map +1 -0
- package/dist/extensions/entries/shellTitleController.cjs +27 -0
- package/dist/extensions/entries/shellTitleController.cjs.map +1 -0
- package/dist/extensions/entries/shellTitleController.d.cts +11 -0
- package/dist/extensions/entries/shellTitleController.d.cts.map +1 -0
- package/dist/extensions/entries/shellTitleController.d.mts +11 -0
- package/dist/extensions/entries/shellTitleController.d.mts.map +1 -0
- package/dist/extensions/entries/shellTitleController.mjs +27 -0
- package/dist/extensions/entries/shellTitleController.mjs.map +1 -0
- package/dist/extensions/entries/skills.cjs +4 -0
- package/dist/extensions/entries/skills.cjs.map +1 -0
- package/dist/extensions/entries/skills.d.cts +34 -0
- package/dist/extensions/entries/skills.d.cts.map +1 -0
- package/dist/extensions/entries/skills.d.mts +34 -0
- package/dist/extensions/entries/skills.d.mts.map +1 -0
- package/dist/extensions/entries/skills.mjs +4 -0
- package/dist/extensions/entries/skills.mjs.map +1 -0
- package/dist/extensions/entries/styleSystem.cjs +4 -0
- package/dist/extensions/entries/styleSystem.cjs.map +1 -0
- package/dist/extensions/entries/styleSystem.d.cts +32 -0
- package/dist/extensions/entries/styleSystem.d.cts.map +1 -0
- package/dist/extensions/entries/styleSystem.d.mts +32 -0
- package/dist/extensions/entries/styleSystem.d.mts.map +1 -0
- package/dist/extensions/entries/styleSystem.mjs +4 -0
- package/dist/{entries/styleSystem.cjs.map → extensions/entries/styleSystem.mjs.map} +1 -1
- package/dist/extensions/pi.cjs +1 -0
- package/dist/extensions/pi.d.cts +2 -0
- package/dist/extensions/pi.d.mts +2 -0
- package/dist/extensions/pi.mjs +1 -0
- package/dist/extensions/services/domainSwitchHandoff.cjs +2 -0
- package/dist/extensions/services/domainSwitchHandoff.cjs.map +1 -0
- package/dist/extensions/services/domainSwitchHandoff.mjs +2 -0
- package/dist/extensions/services/domainSwitchHandoff.mjs.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +33 -29
- package/dist/index.d.mts +33 -29
- package/dist/index.mjs +1 -1
- package/dist/logSinkTelemetry.cjs +1 -2
- package/dist/logSinkTelemetry.d.cts +2 -51
- package/dist/logSinkTelemetry.d.mts +2 -51
- package/dist/logSinkTelemetry.mjs +1 -2
- package/dist/pi-cache-optimizer-D9beVnnH.mjs +50 -0
- package/dist/pi-cache-optimizer-D9beVnnH.mjs.map +1 -0
- package/dist/schemas/domainVoiceTools.cjs +2 -0
- package/dist/schemas/domainVoiceTools.cjs.map +1 -0
- package/dist/schemas/domainVoiceTools.mjs +2 -0
- package/dist/schemas/domainVoiceTools.mjs.map +1 -0
- package/dist/schemas/majorModeVoiceTools.cjs +2 -0
- package/dist/schemas/majorModeVoiceTools.cjs.map +1 -0
- package/dist/schemas/majorModeVoiceTools.mjs +2 -0
- package/dist/schemas/majorModeVoiceTools.mjs.map +1 -0
- package/dist/services/compatibility/antigravity.cjs +1 -2
- package/dist/services/compatibility/antigravity.d.cts +2 -11
- package/dist/services/compatibility/antigravity.d.mts +2 -11
- package/dist/services/compatibility/antigravity.mjs +1 -2
- package/dist/services/compatibility/codex.cjs +1 -2
- package/dist/services/compatibility/codex.d.cts +2 -19
- package/dist/services/compatibility/codex.d.mts +2 -19
- package/dist/services/compatibility/codex.mjs +1 -2
- package/dist/services/compatibility/index.cjs +1 -2
- package/dist/services/compatibility/index.d.cts +6 -16
- package/dist/services/compatibility/index.d.mts +6 -16
- package/dist/services/compatibility/index.mjs +1 -2
- package/dist/services/compatibility/process.cjs +1 -2
- package/dist/services/compatibility/process.d.cts +2 -35
- package/dist/services/compatibility/process.d.mts +2 -35
- package/dist/services/compatibility/process.mjs +1 -2
- package/dist/services/compatibility/shared.cjs +1 -2
- package/dist/services/compatibility/shared.d.cts +2 -33
- package/dist/services/compatibility/shared.d.mts +2 -33
- package/dist/services/compatibility/shared.mjs +1 -2
- package/dist/services/compatibilityContext.cjs +1 -2
- package/dist/services/compatibilityContext.d.cts +2 -23
- package/dist/services/compatibilityContext.d.mts +2 -23
- package/dist/services/compatibilityContext.mjs +1 -2
- package/dist/services/composer.cjs +1 -2
- package/dist/services/composer.d.cts +4 -135
- package/dist/services/composer.d.mts +4 -135
- package/dist/services/composer.mjs +1 -2
- package/dist/services/config/index.cjs +1 -0
- package/dist/services/config/index.d.cts +7 -0
- package/dist/services/config/index.d.mts +7 -0
- package/dist/services/config/index.mjs +1 -0
- package/dist/services/config/projectTrust.cjs +2 -0
- package/dist/services/config/projectTrust.cjs.map +1 -0
- package/dist/services/config/projectTrust.d.cts +14 -0
- package/dist/services/config/projectTrust.d.cts.map +1 -0
- package/dist/services/config/projectTrust.d.mts +14 -0
- package/dist/services/config/projectTrust.d.mts.map +1 -0
- package/dist/services/config/projectTrust.mjs +2 -0
- package/dist/services/config/projectTrust.mjs.map +1 -0
- package/dist/services/extensionAssembler.cjs +1 -1
- package/dist/services/extensionAssembler.cjs.map +1 -1
- package/dist/services/extensionAssembler.d.cts +13 -6
- package/dist/services/extensionAssembler.d.cts.map +1 -1
- package/dist/services/extensionAssembler.d.mts +13 -6
- package/dist/services/extensionAssembler.d.mts.map +1 -1
- package/dist/services/extensionAssembler.mjs +1 -1
- package/dist/services/extensionAssembler.mjs.map +1 -1
- package/dist/services/harnessContext.cjs +1 -2
- package/dist/services/harnessContext.d.cts +2 -61
- package/dist/services/harnessContext.d.mts +2 -61
- package/dist/services/harnessContext.mjs +1 -2
- package/dist/services/index.cjs +1 -1
- package/dist/services/index.d.cts +18 -14
- package/dist/services/index.d.mts +18 -14
- package/dist/services/index.mjs +1 -1
- package/dist/services/matrixSwitcher.cjs +1 -2
- package/dist/services/matrixSwitcher.d.cts +2 -46
- package/dist/services/matrixSwitcher.d.mts +2 -46
- package/dist/services/matrixSwitcher.mjs +1 -2
- package/dist/services/mcpFilter.cjs +1 -3
- package/dist/services/mcpFilter.d.cts +2 -40
- package/dist/services/mcpFilter.d.mts +2 -40
- package/dist/services/mcpFilter.mjs +1 -3
- package/dist/services/modeCatalog.cjs +2 -0
- package/dist/services/modeCatalog.cjs.map +1 -0
- package/dist/services/modeCatalog.d.cts +18 -0
- package/dist/services/modeCatalog.d.cts.map +1 -0
- package/dist/services/modeCatalog.d.mts +18 -0
- package/dist/services/modeCatalog.d.mts.map +1 -0
- package/dist/services/modeCatalog.mjs +2 -0
- package/dist/services/modeCatalog.mjs.map +1 -0
- package/dist/services/piSettings.cjs +1 -2
- package/dist/services/piSettings.d.cts +2 -24
- package/dist/services/piSettings.d.mts +2 -24
- package/dist/services/piSettings.mjs +1 -2
- package/dist/services/resourceCollector.cjs +1 -3
- package/dist/services/resourceCollector.d.cts +2 -23
- package/dist/services/resourceCollector.d.mts +2 -23
- package/dist/services/resourceCollector.mjs +1 -3
- package/dist/services/skillCatalog.cjs +1 -2
- package/dist/services/skillCatalog.d.cts +2 -56
- package/dist/services/skillCatalog.d.mts +2 -56
- package/dist/services/skillCatalog.mjs +1 -2
- package/dist/services/skillSources.cjs +1 -2
- package/dist/services/skillSources.d.cts +2 -24
- package/dist/services/skillSources.d.mts +2 -24
- package/dist/services/skillSources.mjs +1 -2
- package/dist/services/syncState.cjs +1 -2
- package/dist/services/syncState.d.cts +3 -133
- package/dist/services/syncState.d.mts +3 -133
- package/dist/services/syncState.mjs +1 -2
- package/dist/services/tools/toolNames.cjs +2 -0
- package/dist/services/tools/toolNames.cjs.map +1 -0
- package/dist/services/tools/toolNames.d.cts +25 -0
- package/dist/services/tools/toolNames.d.cts.map +1 -0
- package/dist/services/tools/toolNames.d.mts +25 -0
- package/dist/services/tools/toolNames.d.mts.map +1 -0
- package/dist/services/tools/toolNames.mjs +2 -0
- package/dist/services/tools/toolNames.mjs.map +1 -0
- package/dist/{interfaces → types/interfaces}/compatibility.d.cts +1 -1
- package/dist/types/interfaces/compatibility.d.cts.map +1 -0
- package/dist/{interfaces → types/interfaces}/compatibility.d.mts +1 -1
- package/dist/types/interfaces/compatibility.d.mts.map +1 -0
- package/dist/{interfaces → types/interfaces}/harness.d.cts +6 -2
- package/dist/types/interfaces/harness.d.cts.map +1 -0
- package/dist/{interfaces → types/interfaces}/harness.d.mts +6 -2
- package/dist/types/interfaces/harness.d.mts.map +1 -0
- package/dist/utils/index.cjs +1 -1
- package/dist/utils/index.d.cts +5 -5
- package/dist/utils/index.d.mts +5 -5
- package/dist/utils/index.mjs +1 -1
- package/dist/utils/json.cjs +1 -2
- package/dist/utils/json.d.cts +2 -23
- package/dist/utils/json.d.mts +2 -23
- package/dist/utils/json.mjs +1 -2
- package/dist/utils/moduleResolution.cjs +1 -2
- package/dist/utils/moduleResolution.d.cts +2 -56
- package/dist/utils/moduleResolution.d.mts +2 -56
- package/dist/utils/moduleResolution.mjs +1 -2
- package/dist/utils/repository.cjs +1 -2
- package/dist/utils/repository.d.cts +2 -21
- package/dist/utils/repository.d.mts +2 -21
- package/dist/utils/repository.mjs +1 -2
- package/dist/utils/toolNames.cjs +1 -2
- package/dist/utils/toolNames.d.cts +2 -25
- package/dist/utils/toolNames.d.mts +2 -25
- package/dist/utils/toolNames.mjs +1 -2
- package/package.json +59 -37
- package/dist/cli/cliApp.cjs.map +0 -1
- package/dist/cli/cliApp.d.cts.map +0 -1
- package/dist/cli/cliApp.d.mts.map +0 -1
- package/dist/cli/cliApp.mjs.map +0 -1
- package/dist/cli/compatibilityOptions.cjs.map +0 -1
- package/dist/cli/compatibilityOptions.d.cts.map +0 -1
- package/dist/cli/compatibilityOptions.d.mts.map +0 -1
- package/dist/cli/compatibilityOptions.mjs.map +0 -1
- package/dist/cli/help.d.cts.map +0 -1
- package/dist/cli/help.d.mts.map +0 -1
- package/dist/cli/matrixOptions.cjs.map +0 -1
- package/dist/cli/matrixOptions.d.cts.map +0 -1
- package/dist/cli/matrixOptions.d.mts.map +0 -1
- package/dist/cli/matrixOptions.mjs.map +0 -1
- package/dist/cli/options.cjs.map +0 -1
- package/dist/cli/options.d.cts.map +0 -1
- package/dist/cli/options.d.mts.map +0 -1
- package/dist/cli/options.mjs.map +0 -1
- package/dist/commands/buildCommand.d.cts +0 -23
- package/dist/commands/buildCommand.d.cts.map +0 -1
- package/dist/commands/buildCommand.d.mts +0 -23
- package/dist/commands/buildCommand.d.mts.map +0 -1
- package/dist/config/harnessState.cjs.map +0 -1
- package/dist/config/harnessState.d.cts.map +0 -1
- package/dist/config/harnessState.d.mts.map +0 -1
- package/dist/config/harnessState.mjs.map +0 -1
- package/dist/config/projectTrust.cjs.map +0 -1
- package/dist/config/projectTrust.d.cts.map +0 -1
- package/dist/config/projectTrust.d.mts.map +0 -1
- package/dist/config/projectTrust.mjs.map +0 -1
- package/dist/entries/addDirCompatibility.cjs +0 -2
- package/dist/entries/addDirCompatibility.cjs.map +0 -1
- package/dist/entries/addDirCompatibility.d.cts +0 -13
- package/dist/entries/addDirCompatibility.d.cts.map +0 -1
- package/dist/entries/addDirCompatibility.d.mts +0 -14
- package/dist/entries/addDirCompatibility.d.mts.map +0 -1
- package/dist/entries/addDirCompatibility.mjs +0 -2
- package/dist/entries/addDirCompatibility.mjs.map +0 -1
- package/dist/entries/autoStop.cjs.map +0 -1
- package/dist/entries/autoStop.d.cts.map +0 -1
- package/dist/entries/autoStop.d.mts.map +0 -1
- package/dist/entries/autoStop.mjs.map +0 -1
- package/dist/entries/components/matrixPicker.cjs.map +0 -1
- package/dist/entries/components/matrixPicker.d.cts.map +0 -1
- package/dist/entries/components/matrixPicker.d.mts.map +0 -1
- package/dist/entries/components/matrixPicker.mjs.map +0 -1
- package/dist/entries/components/skillsOverlay.cjs.map +0 -1
- package/dist/entries/components/skillsOverlay.d.cts.map +0 -1
- package/dist/entries/components/skillsOverlay.d.mts.map +0 -1
- package/dist/entries/components/skillsOverlay.mjs.map +0 -1
- package/dist/entries/domains.cjs.map +0 -1
- package/dist/entries/domains.d.cts.map +0 -1
- package/dist/entries/domains.d.mts.map +0 -1
- package/dist/entries/domains.mjs.map +0 -1
- package/dist/entries/doom.cjs.map +0 -1
- package/dist/entries/doom.d.cts.map +0 -1
- package/dist/entries/doom.d.mts.map +0 -1
- package/dist/entries/doom.mjs.map +0 -1
- package/dist/entries/effort.cjs.map +0 -1
- package/dist/entries/effort.d.cts.map +0 -1
- package/dist/entries/effort.d.mts.map +0 -1
- package/dist/entries/effort.mjs.map +0 -1
- package/dist/entries/majorMode.cjs.map +0 -1
- package/dist/entries/majorMode.d.cts.map +0 -1
- package/dist/entries/majorMode.d.mts.map +0 -1
- package/dist/entries/majorMode.mjs.map +0 -1
- package/dist/entries/notifications.cjs.map +0 -1
- package/dist/entries/notifications.d.cts.map +0 -1
- package/dist/entries/notifications.d.mts.map +0 -1
- package/dist/entries/notifications.mjs.map +0 -1
- package/dist/entries/ollamaProvider.cjs.map +0 -1
- package/dist/entries/ollamaProvider.d.cts.map +0 -1
- package/dist/entries/ollamaProvider.d.mts.map +0 -1
- package/dist/entries/ollamaProvider.mjs.map +0 -1
- package/dist/entries/persona.cjs.map +0 -1
- package/dist/entries/persona.d.cts.map +0 -1
- package/dist/entries/persona.d.mts.map +0 -1
- package/dist/entries/persona.mjs.map +0 -1
- package/dist/entries/profile.cjs.map +0 -1
- package/dist/entries/profile.d.cts.map +0 -1
- package/dist/entries/profile.d.mts.map +0 -1
- package/dist/entries/profile.mjs.map +0 -1
- package/dist/entries/repositoryHooks.cjs.map +0 -1
- package/dist/entries/repositoryHooks.d.cts.map +0 -1
- package/dist/entries/repositoryHooks.d.mts.map +0 -1
- package/dist/entries/repositoryHooks.mjs.map +0 -1
- package/dist/entries/skills.cjs.map +0 -1
- package/dist/entries/skills.d.cts.map +0 -1
- package/dist/entries/skills.d.mts.map +0 -1
- package/dist/entries/skills.mjs.map +0 -1
- package/dist/entries/styleSystem.d.cts.map +0 -1
- package/dist/entries/styleSystem.d.mts.map +0 -1
- package/dist/entries/styleSystem.mjs.map +0 -1
- package/dist/interfaces/compatibility.d.cts.map +0 -1
- package/dist/interfaces/compatibility.d.mts.map +0 -1
- package/dist/interfaces/harness.d.cts.map +0 -1
- package/dist/interfaces/harness.d.mts.map +0 -1
- package/dist/logSinkTelemetry.cjs.map +0 -1
- package/dist/logSinkTelemetry.d.cts.map +0 -1
- package/dist/logSinkTelemetry.d.mts.map +0 -1
- package/dist/logSinkTelemetry.mjs.map +0 -1
- package/dist/node_modules/.pnpm/@juicesharp_rpiv-ask-user-question@2.2.0_@earendil-works_pi-coding-agent@0.84.1_support_6ba1249e24a50b62791c1c91c9f324c6/node_modules/@juicesharp/rpiv-ask-user-question/events.cjs +0 -2
- package/dist/node_modules/.pnpm/@juicesharp_rpiv-ask-user-question@2.2.0_@earendil-works_pi-coding-agent@0.84.1_support_6ba1249e24a50b62791c1c91c9f324c6/node_modules/@juicesharp/rpiv-ask-user-question/events.cjs.map +0 -1
- package/dist/node_modules/.pnpm/@juicesharp_rpiv-ask-user-question@2.2.0_@earendil-works_pi-coding-agent@0.84.1_support_6ba1249e24a50b62791c1c91c9f324c6/node_modules/@juicesharp/rpiv-ask-user-question/events.mjs +0 -2
- package/dist/node_modules/.pnpm/@juicesharp_rpiv-ask-user-question@2.2.0_@earendil-works_pi-coding-agent@0.84.1_support_6ba1249e24a50b62791c1c91c9f324c6/node_modules/@juicesharp/rpiv-ask-user-question/events.mjs.map +0 -1
- package/dist/services/compatibility/index.cjs.map +0 -1
- package/dist/services/compatibility/index.mjs.map +0 -1
- package/dist/services/compatibilityContext.cjs.map +0 -1
- package/dist/services/compatibilityContext.mjs.map +0 -1
- package/dist/services/composer.cjs.map +0 -1
- package/dist/services/composer.d.cts.map +0 -1
- package/dist/services/composer.d.mts.map +0 -1
- package/dist/services/composer.mjs.map +0 -1
- package/dist/services/extensionCompiler.cjs +0 -3
- package/dist/services/extensionCompiler.cjs.map +0 -1
- package/dist/services/extensionCompiler.mjs +0 -3
- package/dist/services/extensionCompiler.mjs.map +0 -1
- package/dist/services/harnessContext.cjs.map +0 -1
- package/dist/services/harnessContext.mjs.map +0 -1
- package/dist/services/matrixSwitcher.cjs.map +0 -1
- package/dist/services/matrixSwitcher.mjs.map +0 -1
- package/dist/services/mcpFilter.cjs.map +0 -1
- package/dist/services/mcpFilter.d.cts.map +0 -1
- package/dist/services/mcpFilter.d.mts.map +0 -1
- package/dist/services/mcpFilter.mjs.map +0 -1
- package/dist/services/piSettings.cjs.map +0 -1
- package/dist/services/piSettings.d.cts.map +0 -1
- package/dist/services/piSettings.d.mts.map +0 -1
- package/dist/services/piSettings.mjs.map +0 -1
- package/dist/services/resourceCollector.cjs.map +0 -1
- package/dist/services/resourceCollector.d.cts.map +0 -1
- package/dist/services/resourceCollector.d.mts.map +0 -1
- package/dist/services/resourceCollector.mjs.map +0 -1
- package/dist/services/runtimeBundle.cjs +0 -2
- package/dist/services/runtimeBundle.cjs.map +0 -1
- package/dist/services/runtimeBundle.d.cts.map +0 -1
- package/dist/services/runtimeBundle.d.mts.map +0 -1
- package/dist/services/runtimeBundle.mjs +0 -2
- package/dist/services/runtimeBundle.mjs.map +0 -1
- package/dist/services/skillCatalog.cjs.map +0 -1
- package/dist/services/skillCatalog.d.cts.map +0 -1
- package/dist/services/skillCatalog.d.mts.map +0 -1
- package/dist/services/skillCatalog.mjs.map +0 -1
- package/dist/services/syncState.cjs.map +0 -1
- package/dist/services/syncState.d.cts.map +0 -1
- package/dist/services/syncState.d.mts.map +0 -1
- package/dist/services/syncState.mjs.map +0 -1
- package/dist/utils/json.cjs.map +0 -1
- package/dist/utils/json.d.cts.map +0 -1
- package/dist/utils/json.d.mts.map +0 -1
- package/dist/utils/json.mjs.map +0 -1
- package/dist/utils/moduleResolution.cjs.map +0 -1
- package/dist/utils/moduleResolution.d.cts.map +0 -1
- package/dist/utils/moduleResolution.d.mts.map +0 -1
- package/dist/utils/moduleResolution.mjs.map +0 -1
- package/dist/utils/repository.cjs.map +0 -1
- package/dist/utils/repository.d.cts.map +0 -1
- package/dist/utils/repository.d.mts.map +0 -1
- package/dist/utils/repository.mjs.map +0 -1
- package/dist/utils/toolNames.cjs.map +0 -1
- package/dist/utils/toolNames.d.cts.map +0 -1
- package/dist/utils/toolNames.d.mts.map +0 -1
- package/dist/utils/toolNames.mjs.map +0 -1
|
Binary file
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`../_virtual/_rolldown/runtime.cjs`);let t=require(`node:path`);t=e.__toESM(t,1);const n=Symbol.for(`@agimon-ai/doompi:bootstrap-claim`);function r(){let e=Reflect.get(globalThis,n);if(e instanceof Map)return e;let t=new Map;return Reflect.set(globalThis,n,t),t}function i(e){let n=r(),i=t.default.resolve(e);if(n.has(i))return;let a=Symbol(`doompi-bootstrap`);return n.set(i,a),()=>{n.get(i)===a&&n.delete(i)}}exports.acquireBootstrapClaim=i;
|
|
2
|
+
//# sourceMappingURL=bootstrapClaim.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrapClaim.cjs","names":["path"],"sources":["../../src/adapters/bootstrapClaim.ts"],"sourcesContent":["import path from 'node:path';\n\n/**\n * Process-wide ownership of one repository's DoomPi load cycle.\n *\n * Pi unions the extension lists of its user and project settings scopes and\n * dedupes only by the resolved file's real path, so registering DoomPi in both\n * scopes loads two separate installs of the same package. Each one would\n * otherwise read, recompile, and rewrite the same home-scoped worktree state\n * for the same repository, and two installs at different versions disagree about the state\n * contract. A process-global symbol survives the distinct module URLs those\n * installs have, so the first factory owns the cycle and the rest stand down.\n * Pi resolves project resources before user ones, which makes the owner the\n * repository-local install whenever both scopes register the package.\n */\n\nconst BOOTSTRAP_CLAIM_KEY = Symbol.for('@agimon-ai/doompi:bootstrap-claim');\n\nexport type ReleaseBootstrapClaim = () => void;\n\n/**\n * The registry shared by every DoomPi install in this process.\n *\n * The symbol description is part of the cross-install contract and must stay\n * exactly as written: two installs only meet here when they compute the same\n * key. A value of another shape belongs to an install that spelled the\n * registry differently, so this one starts its own rather than corrupting it.\n */\nfunction claimRegistry(): Map<string, symbol> {\n const existing = Reflect.get(globalThis, BOOTSTRAP_CLAIM_KEY);\n if (existing instanceof Map) return existing as Map<string, symbol>;\n const created = new Map<string, symbol>();\n Reflect.set(globalThis, BOOTSTRAP_CLAIM_KEY, created);\n return created;\n}\n\n/**\n * Claims the load cycle for one repository, or reports that it is already owned.\n *\n * Callers must acquire before their first `await`, because releasing happens on\n * `session_start` and an interleaved second factory would otherwise slip in.\n */\nexport function acquireBootstrapClaim(repoRoot: string): ReleaseBootstrapClaim | undefined {\n const registry = claimRegistry();\n const key = path.resolve(repoRoot);\n if (registry.has(key)) return undefined;\n\n const claim = Symbol('doompi-bootstrap');\n registry.set(key, claim);\n return () => {\n if (registry.get(key) === claim) registry.delete(key);\n };\n}\n"],"mappings":"iGAgBA,MAAM,EAAsB,OAAO,IAAI,oCAAoC,CAY3E,SAAS,GAAqC,CAC5C,IAAM,EAAW,QAAQ,IAAI,WAAY,EAAoB,CAC7D,GAAI,aAAoB,IAAK,OAAO,EACpC,IAAM,EAAU,IAAI,IAEpB,OADA,QAAQ,IAAI,WAAY,EAAqB,EAAQ,CAC9C,EAST,SAAgB,EAAsB,EAAqD,CACzF,IAAM,EAAW,GAAe,CAC1B,EAAMA,EAAAA,QAAK,QAAQ,EAAS,CAClC,GAAI,EAAS,IAAI,EAAI,CAAE,OAEvB,IAAM,EAAQ,OAAO,mBAAmB,CAExC,OADA,EAAS,IAAI,EAAK,EAAM,KACX,CACP,EAAS,IAAI,EAAI,GAAK,GAAO,EAAS,OAAO,EAAI"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e from"node:path";const t=Symbol.for(`@agimon-ai/doompi:bootstrap-claim`);function n(){let e=Reflect.get(globalThis,t);if(e instanceof Map)return e;let n=new Map;return Reflect.set(globalThis,t,n),n}function r(t){let r=n(),i=e.resolve(t);if(r.has(i))return;let a=Symbol(`doompi-bootstrap`);return r.set(i,a),()=>{r.get(i)===a&&r.delete(i)}}export{r as acquireBootstrapClaim};
|
|
2
|
+
//# sourceMappingURL=bootstrapClaim.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrapClaim.mjs","names":[],"sources":["../../src/adapters/bootstrapClaim.ts"],"sourcesContent":["import path from 'node:path';\n\n/**\n * Process-wide ownership of one repository's DoomPi load cycle.\n *\n * Pi unions the extension lists of its user and project settings scopes and\n * dedupes only by the resolved file's real path, so registering DoomPi in both\n * scopes loads two separate installs of the same package. Each one would\n * otherwise read, recompile, and rewrite the same home-scoped worktree state\n * for the same repository, and two installs at different versions disagree about the state\n * contract. A process-global symbol survives the distinct module URLs those\n * installs have, so the first factory owns the cycle and the rest stand down.\n * Pi resolves project resources before user ones, which makes the owner the\n * repository-local install whenever both scopes register the package.\n */\n\nconst BOOTSTRAP_CLAIM_KEY = Symbol.for('@agimon-ai/doompi:bootstrap-claim');\n\nexport type ReleaseBootstrapClaim = () => void;\n\n/**\n * The registry shared by every DoomPi install in this process.\n *\n * The symbol description is part of the cross-install contract and must stay\n * exactly as written: two installs only meet here when they compute the same\n * key. A value of another shape belongs to an install that spelled the\n * registry differently, so this one starts its own rather than corrupting it.\n */\nfunction claimRegistry(): Map<string, symbol> {\n const existing = Reflect.get(globalThis, BOOTSTRAP_CLAIM_KEY);\n if (existing instanceof Map) return existing as Map<string, symbol>;\n const created = new Map<string, symbol>();\n Reflect.set(globalThis, BOOTSTRAP_CLAIM_KEY, created);\n return created;\n}\n\n/**\n * Claims the load cycle for one repository, or reports that it is already owned.\n *\n * Callers must acquire before their first `await`, because releasing happens on\n * `session_start` and an interleaved second factory would otherwise slip in.\n */\nexport function acquireBootstrapClaim(repoRoot: string): ReleaseBootstrapClaim | undefined {\n const registry = claimRegistry();\n const key = path.resolve(repoRoot);\n if (registry.has(key)) return undefined;\n\n const claim = Symbol('doompi-bootstrap');\n registry.set(key, claim);\n return () => {\n if (registry.get(key) === claim) registry.delete(key);\n };\n}\n"],"mappings":"yBAgBA,MAAM,EAAsB,OAAO,IAAI,oCAAoC,CAY3E,SAAS,GAAqC,CAC5C,IAAM,EAAW,QAAQ,IAAI,WAAY,EAAoB,CAC7D,GAAI,aAAoB,IAAK,OAAO,EACpC,IAAM,EAAU,IAAI,IAEpB,OADA,QAAQ,IAAI,WAAY,EAAqB,EAAQ,CAC9C,EAST,SAAgB,EAAsB,EAAqD,CACzF,IAAM,EAAW,GAAe,CAC1B,EAAM,EAAK,QAAQ,EAAS,CAClC,GAAI,EAAS,IAAI,EAAI,CAAE,OAEvB,IAAM,EAAQ,OAAO,mBAAmB,CAExC,OADA,EAAS,IAAI,EAAK,EAAM,KACX,CACP,EAAS,IAAI,EAAI,GAAK,GAAO,EAAS,OAAO,EAAI"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`../_virtual/_rolldown/runtime.cjs`),t=require(`./repository/repository.cjs`),n=require(`./syncLocation.cjs`);require(`./syncStateContract.cjs`);const r=require(`./syncState.cjs`);let i=require(`node:url`),a=require(`node:path`);a=e.__toESM(a,1);let o=require(`node:fs`);o=e.__toESM(o,1);let s=require(`node:os`);s=e.__toESM(s,1);function c(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function l(e){return c(e)?Object.fromEntries(Object.entries(e).filter(e=>typeof e[1]==`string`)):{}}function u(e){let t=a.default.resolve(e);try{return o.default.realpathSync(t)}catch{let e=a.default.dirname(t);return e===t?t:a.default.join(u(e),a.default.basename(t))}}function d(e,t){let n=a.default.relative(u(e),u(t));return n===``||!n.startsWith(`..`)&&!a.default.isAbsolute(n)}function f(e=require(`url`).pathToFileURL(__filename).href){let t=e.endsWith(`.ts`)?`ts`:`mjs`,n=a.default.dirname(a.default.dirname((0,i.fileURLToPath)(e)));return a.default.join(n,`extensions`,`entries`,`doom.${t}`)}function p(e){return`export { default } from ${JSON.stringify((0,i.pathToFileURL)(e).href)};\n`}function m(e,t){let r=n.resolveSyncLocation(e,t);return o.default.existsSync(r.statePath)||o.default.existsSync(r.legacyStatePath)}function h(e,n=s.default.homedir()){try{if(m(e,n))return u(e);let r=t.findRepositoryRoot(e);return m(r,n)?r:void 0}catch{return}}function g(e,t=s.default.homedir()){let n=r.readLocatedSyncState(e,t);if(!n)return;let{state:i}=n,o=n.layout===`global`?n.location.statePath:n.location.legacyStatePath,c=a.default.dirname(o),u=i.bootstrap;if(u&&!d(c,u))throw Error(`Doom bootstrap must stay inside ${c}: ${u}`);let f;if(i.precompile!==void 0){if(typeof i.precompile.version!=`number`||i.precompile.strategy!==`native`&&i.precompile.strategy!==`bundle`||typeof i.precompile.bootstrapEntry!=`string`||i.precompile.bootstrapManifest!==void 0&&typeof i.precompile.bootstrapManifest!=`string`||!Array.isArray(i.precompile.manifests)||i.precompile.manifests.some(e=>typeof e!=`string`))throw Error(`Doom sync state at ${o} has an invalid precompile record`);f={version:i.precompile.version,strategy:i.precompile.strategy,bootstrapEntry:i.precompile.bootstrapEntry,bootstrapManifest:i.precompile.bootstrapManifest,manifests:i.precompile.manifests}}return{statePath:o,generatedDirectory:c,bootstrap:u,bundles:l(i.bundles),precompile:f}}function _(e,t){if(d(t,e))try{let n=JSON.parse(o.default.readFileSync(e,`utf8`));if(!c(n)||typeof n.output!=`string`||!Array.isArray(n.artifacts)||n.artifacts.some(e=>typeof e!=`string`)||!Array.isArray(n.entries)||n.entries.some(e=>typeof e!=`string`)||!Array.isArray(n.inputs))return;let r=[];for(let e of n.inputs){if(!c(e)||typeof e.path!=`string`||typeof e.size!=`number`||typeof e.mtimeMs!=`number`)return;r.push({path:e.path,size:e.size,mtimeMs:e.mtimeMs})}let i=n.artifacts,a=n.entries;return!d(t,n.output)||i.some(e=>!d(t,e))?void 0:{output:n.output,artifacts:i,entries:a,inputs:r}}catch{return}}function v(e){return!o.default.existsSync(e.output)||e.artifacts.some(e=>!o.default.existsSync(e))?!1:e.inputs.every(e=>{try{let t=o.default.statSync(e.path);return t.isFile()&&t.size===e.size&&t.mtimeMs===e.mtimeMs}catch{return!1}})}function y(e,t=f(),n=s.default.homedir()){let r=g(e,n);if(!r?.bootstrap||!r.precompile)return{bootstrap:r?.bootstrap,fresh:!1};if(r.precompile.version!==2||u(r.precompile.bootstrapEntry)!==u(t))return{bootstrap:r.bootstrap,fresh:!1};if(r.precompile.strategy===`native`){let e=Object.keys(r.bundles).length===0;try{e&&=o.default.readFileSync(r.bootstrap,`utf8`)===p(t)}catch{e=!1}return{bootstrap:r.bootstrap,fresh:e}}if(r.precompile.strategy!==`bundle`||!r.precompile.bootstrapManifest)return{bootstrap:r.bootstrap,fresh:!1};let i=[...new Set(r.precompile.manifests)];if(i.length===0||i.length!==r.precompile.manifests.length||!i.includes(r.precompile.bootstrapManifest))return{bootstrap:r.bootstrap,fresh:!1};let a=r.generatedDirectory,c=i.map(e=>_(e,a));if(c.some(e=>!e||!v(e)))return{bootstrap:r.bootstrap,fresh:!1};let l=c[i.indexOf(r.precompile.bootstrapManifest)];if(!l||l.output!==r.bootstrap||l.entries.length!==1||u(l.entries[0]??``)!==u(t))return{bootstrap:r.bootstrap,fresh:!1};let d=new Set(c.flatMap(e=>e?[e.output]:[])),m=Object.values(r.bundles).every(e=>d.has(e));return{bootstrap:r.bootstrap,fresh:m}}exports.findSyncedRoot=h,exports.readBootstrapStatus=y;
|
|
2
|
+
//# sourceMappingURL=bootstrapLocator.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrapLocator.cjs","names":["path","fs","resolveSyncLocation","os","findRepositoryRoot","readLocatedSyncState"],"sources":["../../src/adapters/bootstrapLocator.ts"],"sourcesContent":["import fs from 'node:fs';\nimport os from 'node:os';\nimport path from 'node:path';\nimport { fileURLToPath, pathToFileURL } from 'node:url';\nimport { findRepositoryRoot } from './repository/repository.ts';\nimport { resolveSyncLocation } from './syncLocation.ts';\nimport { readLocatedSyncState } from './syncState.ts';\nimport {\n BUNDLED_PRECOMPILE_STRATEGY,\n NATIVE_PRECOMPILE_STRATEGY,\n PRECOMPILE_STATE_VERSION,\n} from './syncStateContract.ts';\n\ninterface InputFingerprint {\n path: string;\n size: number;\n mtimeMs: number;\n}\n\ninterface CompilerManifest {\n output: string;\n artifacts: string[];\n entries: string[];\n inputs: InputFingerprint[];\n}\n\ninterface BootstrapState {\n statePath: string;\n generatedDirectory: string;\n bootstrap?: string;\n bundles: Record<string, string>;\n precompile?: {\n version: number;\n strategy: 'native' | 'bundle';\n bootstrapEntry: string;\n bootstrapManifest?: string;\n manifests: string[];\n };\n}\n\nexport interface BootstrapStatus {\n bootstrap?: string;\n fresh: boolean;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction stringRecord(value: unknown): Record<string, string> {\n if (!isRecord(value)) return {};\n return Object.fromEntries(\n Object.entries(value).filter((entry): entry is [string, string] => typeof entry[1] === 'string'),\n );\n}\n\nfunction canonicalPath(target: string): string {\n const absolute = path.resolve(target);\n try {\n return fs.realpathSync(absolute);\n } catch {\n const parent = path.dirname(absolute);\n if (parent === absolute) return absolute;\n return path.join(canonicalPath(parent), path.basename(absolute));\n }\n}\n\nfunction isInside(directory: string, target: string): boolean {\n const relative = path.relative(canonicalPath(directory), canonicalPath(target));\n return relative === '' || (!relative.startsWith('..') && !path.isAbsolute(relative));\n}\n\nfunction packagedDoomEntry(moduleUrl: string = import.meta.url): string {\n const extension = moduleUrl.endsWith('.ts') ? 'ts' : 'mjs';\n const sourceRoot = path.dirname(path.dirname(fileURLToPath(moduleUrl)));\n return path.join(sourceRoot, 'extensions', 'entries', `doom.${extension}`);\n}\n\nfunction nativeBootstrapSource(entry: string): string {\n return `export { default } from ${JSON.stringify(pathToFileURL(entry).href)};\\n`;\n}\n\nfunction locationHasState(repoRoot: string, homeDirectory: string): boolean {\n const location = resolveSyncLocation(repoRoot, homeDirectory);\n return fs.existsSync(location.statePath) || fs.existsSync(location.legacyStatePath);\n}\n\n/** Finds the nearest configured repository with generated Doom sync state. */\nexport function findSyncedRoot(cwd: string, homeDirectory: string = os.homedir()): string | undefined {\n try {\n if (locationHasState(cwd, homeDirectory)) return canonicalPath(cwd);\n const root = findRepositoryRoot(cwd);\n return locationHasState(root, homeDirectory) ? root : undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction readBootstrapState(repoRoot: string, homeDirectory: string = os.homedir()): BootstrapState | undefined {\n const located = readLocatedSyncState(repoRoot, homeDirectory);\n if (!located) return undefined;\n const { state } = located;\n const statePath = located.layout === 'global' ? located.location.statePath : located.location.legacyStatePath;\n const generatedDirectory = path.dirname(statePath);\n const bootstrap = state.bootstrap;\n if (bootstrap && !isInside(generatedDirectory, bootstrap)) {\n throw new Error(`Doom bootstrap must stay inside ${generatedDirectory}: ${bootstrap}`);\n }\n\n let precompile: BootstrapState['precompile'];\n if (state.precompile !== undefined) {\n if (\n typeof state.precompile.version !== 'number' ||\n (state.precompile.strategy !== NATIVE_PRECOMPILE_STRATEGY &&\n state.precompile.strategy !== BUNDLED_PRECOMPILE_STRATEGY) ||\n typeof state.precompile.bootstrapEntry !== 'string' ||\n (state.precompile.bootstrapManifest !== undefined && typeof state.precompile.bootstrapManifest !== 'string') ||\n !Array.isArray(state.precompile.manifests) ||\n state.precompile.manifests.some((manifest) => typeof manifest !== 'string')\n ) {\n throw new Error(`Doom sync state at ${statePath} has an invalid precompile record`);\n }\n precompile = {\n version: state.precompile.version,\n strategy: state.precompile.strategy,\n bootstrapEntry: state.precompile.bootstrapEntry,\n bootstrapManifest: state.precompile.bootstrapManifest,\n manifests: state.precompile.manifests,\n };\n }\n\n return {\n statePath,\n generatedDirectory,\n bootstrap,\n bundles: stringRecord(state.bundles),\n precompile,\n };\n}\n\nfunction readCompilerManifest(manifestPath: string, generatedDirectory: string): CompilerManifest | undefined {\n if (!isInside(generatedDirectory, manifestPath)) return undefined;\n try {\n const parsed = JSON.parse(fs.readFileSync(manifestPath, 'utf8')) as unknown;\n if (\n !isRecord(parsed) ||\n typeof parsed.output !== 'string' ||\n !Array.isArray(parsed.artifacts) ||\n parsed.artifacts.some((artifact) => typeof artifact !== 'string') ||\n !Array.isArray(parsed.entries) ||\n parsed.entries.some((entry) => typeof entry !== 'string') ||\n !Array.isArray(parsed.inputs)\n ) {\n return undefined;\n }\n const inputs: InputFingerprint[] = [];\n for (const input of parsed.inputs) {\n if (\n !isRecord(input) ||\n typeof input.path !== 'string' ||\n typeof input.size !== 'number' ||\n typeof input.mtimeMs !== 'number'\n ) {\n return undefined;\n }\n inputs.push({ path: input.path, size: input.size, mtimeMs: input.mtimeMs });\n }\n const artifacts = parsed.artifacts as string[];\n const entries = parsed.entries as string[];\n if (\n !isInside(generatedDirectory, parsed.output) ||\n artifacts.some((artifact) => !isInside(generatedDirectory, artifact))\n ) {\n return undefined;\n }\n return { output: parsed.output, artifacts, entries, inputs };\n } catch {\n return undefined;\n }\n}\n\nfunction compilerManifestIsFresh(manifest: CompilerManifest): boolean {\n if (!fs.existsSync(manifest.output) || manifest.artifacts.some((artifact) => !fs.existsSync(artifact))) return false;\n return manifest.inputs.every((input) => {\n try {\n const stat = fs.statSync(input.path);\n return stat.isFile() && stat.size === input.size && stat.mtimeMs === input.mtimeMs;\n } catch {\n return false;\n }\n });\n}\n\n/** Reads the generated pointer and validates every compiler input without loading the compiler. */\nexport function readBootstrapStatus(\n repoRoot: string,\n expectedBootstrapEntry: string = packagedDoomEntry(),\n homeDirectory: string = os.homedir(),\n): BootstrapStatus {\n const state = readBootstrapState(repoRoot, homeDirectory);\n if (!state?.bootstrap || !state.precompile) return { bootstrap: state?.bootstrap, fresh: false };\n if (\n state.precompile.version !== PRECOMPILE_STATE_VERSION ||\n canonicalPath(state.precompile.bootstrapEntry) !== canonicalPath(expectedBootstrapEntry)\n ) {\n return { bootstrap: state.bootstrap, fresh: false };\n }\n if (state.precompile.strategy === NATIVE_PRECOMPILE_STRATEGY) {\n let fresh = Object.keys(state.bundles).length === 0;\n try {\n fresh = fresh && fs.readFileSync(state.bootstrap, 'utf8') === nativeBootstrapSource(expectedBootstrapEntry);\n } catch {\n fresh = false;\n }\n return { bootstrap: state.bootstrap, fresh };\n }\n if (state.precompile.strategy !== BUNDLED_PRECOMPILE_STRATEGY || !state.precompile.bootstrapManifest) {\n return { bootstrap: state.bootstrap, fresh: false };\n }\n\n const manifests = [...new Set(state.precompile.manifests)];\n if (\n manifests.length === 0 ||\n manifests.length !== state.precompile.manifests.length ||\n !manifests.includes(state.precompile.bootstrapManifest)\n ) {\n return { bootstrap: state.bootstrap, fresh: false };\n }\n\n const generatedDirectory = state.generatedDirectory;\n const records = manifests.map((manifest) => readCompilerManifest(manifest, generatedDirectory));\n if (records.some((record) => !record || !compilerManifestIsFresh(record))) {\n return { bootstrap: state.bootstrap, fresh: false };\n }\n\n const bootstrapIndex = manifests.indexOf(state.precompile.bootstrapManifest);\n const bootstrapRecord = records[bootstrapIndex];\n if (\n !bootstrapRecord ||\n bootstrapRecord.output !== state.bootstrap ||\n bootstrapRecord.entries.length !== 1 ||\n canonicalPath(bootstrapRecord.entries[0] ?? '') !== canonicalPath(expectedBootstrapEntry)\n ) {\n return { bootstrap: state.bootstrap, fresh: false };\n }\n const outputs = new Set(records.flatMap((record) => (record ? [record.output] : [])));\n const fresh = Object.values(state.bundles).every((bundle) => outputs.has(bundle));\n return { bootstrap: state.bootstrap, fresh };\n}\n\n/** Reads only the generated bootstrap pointer while retaining state validation. */\nexport function readBootstrapPointer(repoRoot: string, homeDirectory: string = os.homedir()): string | undefined {\n return readBootstrapState(repoRoot, homeDirectory)?.bootstrap;\n}\n"],"mappings":"0VA6CA,SAAS,EAAS,EAAkD,CAClE,OAAO,OAAO,GAAU,YAAY,GAAkB,CAAC,MAAM,QAAQ,EAAM,CAG7E,SAAS,EAAa,EAAwC,CAE5D,OADK,EAAS,EAAM,CACb,OAAO,YACZ,OAAO,QAAQ,EAAM,CAAC,OAAQ,GAAqC,OAAO,EAAM,IAAO,SAAS,CACjG,CAH4B,EAAE,CAMjC,SAAS,EAAc,EAAwB,CAC7C,IAAM,EAAWA,EAAAA,QAAK,QAAQ,EAAO,CACrC,GAAI,CACF,OAAOC,EAAAA,QAAG,aAAa,EAAS,MAC1B,CACN,IAAM,EAASD,EAAAA,QAAK,QAAQ,EAAS,CAErC,OADI,IAAW,EAAiB,EACzBA,EAAAA,QAAK,KAAK,EAAc,EAAO,CAAEA,EAAAA,QAAK,SAAS,EAAS,CAAC,EAIpE,SAAS,EAAS,EAAmB,EAAyB,CAC5D,IAAM,EAAWA,EAAAA,QAAK,SAAS,EAAc,EAAU,CAAE,EAAc,EAAO,CAAC,CAC/E,OAAO,IAAa,IAAO,CAAC,EAAS,WAAW,KAAK,EAAI,CAACA,EAAAA,QAAK,WAAW,EAAS,CAGrF,SAAS,EAAkB,EAAA,QAAA,MAAA,CAAA,cAAA,WAAA,CAAA,KAA6C,CACtE,IAAM,EAAY,EAAU,SAAS,MAAM,CAAG,KAAO,MAC/C,EAAaA,EAAAA,QAAK,QAAQA,EAAAA,QAAK,SAAA,EAAA,EAAA,eAAsB,EAAU,CAAC,CAAC,CACvE,OAAOA,EAAAA,QAAK,KAAK,EAAY,aAAc,UAAW,QAAQ,IAAY,CAG5E,SAAS,EAAsB,EAAuB,CACpD,MAAO,2BAA2B,KAAK,WAAA,EAAA,EAAA,eAAwB,EAAM,CAAC,KAAK,CAAC,KAG9E,SAAS,EAAiB,EAAkB,EAAgC,CAC1E,IAAM,EAAWE,EAAAA,oBAAoB,EAAU,EAAc,CAC7D,OAAOD,EAAAA,QAAG,WAAW,EAAS,UAAU,EAAIA,EAAAA,QAAG,WAAW,EAAS,gBAAgB,CAIrF,SAAgB,EAAe,EAAa,EAAwBE,EAAAA,QAAG,SAAS,CAAsB,CACpG,GAAI,CACF,GAAI,EAAiB,EAAK,EAAc,CAAE,OAAO,EAAc,EAAI,CACnE,IAAM,EAAOC,EAAAA,mBAAmB,EAAI,CACpC,OAAO,EAAiB,EAAM,EAAc,CAAG,EAAO,IAAA,QAChD,CACN,QAIJ,SAAS,EAAmB,EAAkB,EAAwBD,EAAAA,QAAG,SAAS,CAA8B,CAC9G,IAAM,EAAUE,EAAAA,qBAAqB,EAAU,EAAc,CAC7D,GAAI,CAAC,EAAS,OACd,GAAM,CAAE,SAAU,EACZ,EAAY,EAAQ,SAAW,SAAW,EAAQ,SAAS,UAAY,EAAQ,SAAS,gBACxF,EAAqBL,EAAAA,QAAK,QAAQ,EAAU,CAC5C,EAAY,EAAM,UACxB,GAAI,GAAa,CAAC,EAAS,EAAoB,EAAU,CACvD,MAAU,MAAM,mCAAmC,EAAmB,IAAI,IAAY,CAGxF,IAAI,EACJ,GAAI,EAAM,aAAe,IAAA,GAAW,CAClC,GACE,OAAO,EAAM,WAAW,SAAY,UACnC,EAAM,WAAW,WAAA,UAChB,EAAM,WAAW,WAAA,UACnB,OAAO,EAAM,WAAW,gBAAmB,UAC1C,EAAM,WAAW,oBAAsB,IAAA,IAAa,OAAO,EAAM,WAAW,mBAAsB,UACnG,CAAC,MAAM,QAAQ,EAAM,WAAW,UAAU,EAC1C,EAAM,WAAW,UAAU,KAAM,GAAa,OAAO,GAAa,SAAS,CAE3E,MAAU,MAAM,sBAAsB,EAAU,mCAAmC,CAErF,EAAa,CACX,QAAS,EAAM,WAAW,QAC1B,SAAU,EAAM,WAAW,SAC3B,eAAgB,EAAM,WAAW,eACjC,kBAAmB,EAAM,WAAW,kBACpC,UAAW,EAAM,WAAW,UAC7B,CAGH,MAAO,CACL,YACA,qBACA,YACA,QAAS,EAAa,EAAM,QAAQ,CACpC,aACD,CAGH,SAAS,EAAqB,EAAsB,EAA0D,CACvG,KAAS,EAAoB,EAAa,CAC/C,GAAI,CACF,IAAM,EAAS,KAAK,MAAMC,EAAAA,QAAG,aAAa,EAAc,OAAO,CAAC,CAChE,GACE,CAAC,EAAS,EAAO,EACjB,OAAO,EAAO,QAAW,UACzB,CAAC,MAAM,QAAQ,EAAO,UAAU,EAChC,EAAO,UAAU,KAAM,GAAa,OAAO,GAAa,SAAS,EACjE,CAAC,MAAM,QAAQ,EAAO,QAAQ,EAC9B,EAAO,QAAQ,KAAM,GAAU,OAAO,GAAU,SAAS,EACzD,CAAC,MAAM,QAAQ,EAAO,OAAO,CAE7B,OAEF,IAAM,EAA6B,EAAE,CACrC,IAAK,IAAM,KAAS,EAAO,OAAQ,CACjC,GACE,CAAC,EAAS,EAAM,EAChB,OAAO,EAAM,MAAS,UACtB,OAAO,EAAM,MAAS,UACtB,OAAO,EAAM,SAAY,SAEzB,OAEF,EAAO,KAAK,CAAE,KAAM,EAAM,KAAM,KAAM,EAAM,KAAM,QAAS,EAAM,QAAS,CAAC,CAE7E,IAAM,EAAY,EAAO,UACnB,EAAU,EAAO,QAOvB,MALE,CAAC,EAAS,EAAoB,EAAO,OAAO,EAC5C,EAAU,KAAM,GAAa,CAAC,EAAS,EAAoB,EAAS,CAAC,CAErE,OAEK,CAAE,OAAQ,EAAO,OAAQ,YAAW,UAAS,SAAQ,MACtD,CACN,QAIJ,SAAS,EAAwB,EAAqC,CAEpE,MADI,CAACA,EAAAA,QAAG,WAAW,EAAS,OAAO,EAAI,EAAS,UAAU,KAAM,GAAa,CAACA,EAAAA,QAAG,WAAW,EAAS,CAAC,CAAS,GACxG,EAAS,OAAO,MAAO,GAAU,CACtC,GAAI,CACF,IAAM,EAAOA,EAAAA,QAAG,SAAS,EAAM,KAAK,CACpC,OAAO,EAAK,QAAQ,EAAI,EAAK,OAAS,EAAM,MAAQ,EAAK,UAAY,EAAM,aACrE,CACN,MAAO,KAET,CAIJ,SAAgB,EACd,EACA,EAAiC,GAAmB,CACpD,EAAwBE,EAAAA,QAAG,SAAS,CACnB,CACjB,IAAM,EAAQ,EAAmB,EAAU,EAAc,CACzD,GAAI,CAAC,GAAO,WAAa,CAAC,EAAM,WAAY,MAAO,CAAE,UAAW,GAAO,UAAW,MAAO,GAAO,CAChG,GACE,EAAM,WAAW,UAAA,GACjB,EAAc,EAAM,WAAW,eAAe,GAAK,EAAc,EAAuB,CAExF,MAAO,CAAE,UAAW,EAAM,UAAW,MAAO,GAAO,CAErD,GAAI,EAAM,WAAW,WAAA,SAAyC,CAC5D,IAAI,EAAQ,OAAO,KAAK,EAAM,QAAQ,CAAC,SAAW,EAClD,GAAI,CACF,IAAiBF,EAAAA,QAAG,aAAa,EAAM,UAAW,OAAO,GAAK,EAAsB,EAAuB,MACrG,CACN,EAAQ,GAEV,MAAO,CAAE,UAAW,EAAM,UAAW,QAAO,CAE9C,GAAI,EAAM,WAAW,WAAA,UAA4C,CAAC,EAAM,WAAW,kBACjF,MAAO,CAAE,UAAW,EAAM,UAAW,MAAO,GAAO,CAGrD,IAAM,EAAY,CAAC,GAAG,IAAI,IAAI,EAAM,WAAW,UAAU,CAAC,CAC1D,GACE,EAAU,SAAW,GACrB,EAAU,SAAW,EAAM,WAAW,UAAU,QAChD,CAAC,EAAU,SAAS,EAAM,WAAW,kBAAkB,CAEvD,MAAO,CAAE,UAAW,EAAM,UAAW,MAAO,GAAO,CAGrD,IAAM,EAAqB,EAAM,mBAC3B,EAAU,EAAU,IAAK,GAAa,EAAqB,EAAU,EAAmB,CAAC,CAC/F,GAAI,EAAQ,KAAM,GAAW,CAAC,GAAU,CAAC,EAAwB,EAAO,CAAC,CACvE,MAAO,CAAE,UAAW,EAAM,UAAW,MAAO,GAAO,CAIrD,IAAM,EAAkB,EADD,EAAU,QAAQ,EAAM,WAAW,kBACZ,EAC9C,GACE,CAAC,GACD,EAAgB,SAAW,EAAM,WACjC,EAAgB,QAAQ,SAAW,GACnC,EAAc,EAAgB,QAAQ,IAAM,GAAG,GAAK,EAAc,EAAuB,CAEzF,MAAO,CAAE,UAAW,EAAM,UAAW,MAAO,GAAO,CAErD,IAAM,EAAU,IAAI,IAAI,EAAQ,QAAS,GAAY,EAAS,CAAC,EAAO,OAAO,CAAG,EAAE,CAAE,CAAC,CAC/E,EAAQ,OAAO,OAAO,EAAM,QAAQ,CAAC,MAAO,GAAW,EAAQ,IAAI,EAAO,CAAC,CACjF,MAAO,CAAE,UAAW,EAAM,UAAW,QAAO"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
//#region src/adapters/bootstrapLocator.d.ts
|
|
2
|
+
/** Finds the nearest configured repository with generated Doom sync state. */
|
|
3
|
+
declare function findSyncedRoot(cwd: string, homeDirectory?: string): string | undefined;
|
|
4
|
+
//#endregion
|
|
5
|
+
export { findSyncedRoot };
|
|
6
|
+
//# sourceMappingURL=bootstrapLocator.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrapLocator.d.cts","names":[],"sources":["../../src/adapters/bootstrapLocator.ts"],"mappings":";;iBAwFgB,cAAA,CAAe,GAAA,UAAa,aAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
//#region src/adapters/bootstrapLocator.d.ts
|
|
2
|
+
/** Finds the nearest configured repository with generated Doom sync state. */
|
|
3
|
+
declare function findSyncedRoot(cwd: string, homeDirectory?: string): string | undefined;
|
|
4
|
+
//#endregion
|
|
5
|
+
export { findSyncedRoot };
|
|
6
|
+
//# sourceMappingURL=bootstrapLocator.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrapLocator.d.mts","names":[],"sources":["../../src/adapters/bootstrapLocator.ts"],"mappings":";;iBAwFgB,cAAA,CAAe,GAAA,UAAa,aAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{findRepositoryRoot as e}from"./repository/repository.mjs";import{resolveSyncLocation as t}from"./syncLocation.mjs";import"./syncStateContract.mjs";import{readLocatedSyncState as n}from"./syncState.mjs";import{fileURLToPath as r,pathToFileURL as i}from"node:url";import a from"node:path";import o from"node:fs";import s from"node:os";function c(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function l(e){return c(e)?Object.fromEntries(Object.entries(e).filter(e=>typeof e[1]==`string`)):{}}function u(e){let t=a.resolve(e);try{return o.realpathSync(t)}catch{let e=a.dirname(t);return e===t?t:a.join(u(e),a.basename(t))}}function d(e,t){let n=a.relative(u(e),u(t));return n===``||!n.startsWith(`..`)&&!a.isAbsolute(n)}function f(e=import.meta.url){let t=e.endsWith(`.ts`)?`ts`:`mjs`,n=a.dirname(a.dirname(r(e)));return a.join(n,`extensions`,`entries`,`doom.${t}`)}function p(e){return`export { default } from ${JSON.stringify(i(e).href)};\n`}function m(e,n){let r=t(e,n);return o.existsSync(r.statePath)||o.existsSync(r.legacyStatePath)}function h(t,n=s.homedir()){try{if(m(t,n))return u(t);let r=e(t);return m(r,n)?r:void 0}catch{return}}function g(e,t=s.homedir()){let r=n(e,t);if(!r)return;let{state:i}=r,o=r.layout===`global`?r.location.statePath:r.location.legacyStatePath,c=a.dirname(o),u=i.bootstrap;if(u&&!d(c,u))throw Error(`Doom bootstrap must stay inside ${c}: ${u}`);let f;if(i.precompile!==void 0){if(typeof i.precompile.version!=`number`||i.precompile.strategy!==`native`&&i.precompile.strategy!==`bundle`||typeof i.precompile.bootstrapEntry!=`string`||i.precompile.bootstrapManifest!==void 0&&typeof i.precompile.bootstrapManifest!=`string`||!Array.isArray(i.precompile.manifests)||i.precompile.manifests.some(e=>typeof e!=`string`))throw Error(`Doom sync state at ${o} has an invalid precompile record`);f={version:i.precompile.version,strategy:i.precompile.strategy,bootstrapEntry:i.precompile.bootstrapEntry,bootstrapManifest:i.precompile.bootstrapManifest,manifests:i.precompile.manifests}}return{statePath:o,generatedDirectory:c,bootstrap:u,bundles:l(i.bundles),precompile:f}}function _(e,t){if(d(t,e))try{let n=JSON.parse(o.readFileSync(e,`utf8`));if(!c(n)||typeof n.output!=`string`||!Array.isArray(n.artifacts)||n.artifacts.some(e=>typeof e!=`string`)||!Array.isArray(n.entries)||n.entries.some(e=>typeof e!=`string`)||!Array.isArray(n.inputs))return;let r=[];for(let e of n.inputs){if(!c(e)||typeof e.path!=`string`||typeof e.size!=`number`||typeof e.mtimeMs!=`number`)return;r.push({path:e.path,size:e.size,mtimeMs:e.mtimeMs})}let i=n.artifacts,a=n.entries;return!d(t,n.output)||i.some(e=>!d(t,e))?void 0:{output:n.output,artifacts:i,entries:a,inputs:r}}catch{return}}function v(e){return!o.existsSync(e.output)||e.artifacts.some(e=>!o.existsSync(e))?!1:e.inputs.every(e=>{try{let t=o.statSync(e.path);return t.isFile()&&t.size===e.size&&t.mtimeMs===e.mtimeMs}catch{return!1}})}function y(e,t=f(),n=s.homedir()){let r=g(e,n);if(!r?.bootstrap||!r.precompile)return{bootstrap:r?.bootstrap,fresh:!1};if(r.precompile.version!==2||u(r.precompile.bootstrapEntry)!==u(t))return{bootstrap:r.bootstrap,fresh:!1};if(r.precompile.strategy===`native`){let e=Object.keys(r.bundles).length===0;try{e&&=o.readFileSync(r.bootstrap,`utf8`)===p(t)}catch{e=!1}return{bootstrap:r.bootstrap,fresh:e}}if(r.precompile.strategy!==`bundle`||!r.precompile.bootstrapManifest)return{bootstrap:r.bootstrap,fresh:!1};let i=[...new Set(r.precompile.manifests)];if(i.length===0||i.length!==r.precompile.manifests.length||!i.includes(r.precompile.bootstrapManifest))return{bootstrap:r.bootstrap,fresh:!1};let a=r.generatedDirectory,c=i.map(e=>_(e,a));if(c.some(e=>!e||!v(e)))return{bootstrap:r.bootstrap,fresh:!1};let l=c[i.indexOf(r.precompile.bootstrapManifest)];if(!l||l.output!==r.bootstrap||l.entries.length!==1||u(l.entries[0]??``)!==u(t))return{bootstrap:r.bootstrap,fresh:!1};let d=new Set(c.flatMap(e=>e?[e.output]:[])),m=Object.values(r.bundles).every(e=>d.has(e));return{bootstrap:r.bootstrap,fresh:m}}export{h as findSyncedRoot,y as readBootstrapStatus};
|
|
2
|
+
//# sourceMappingURL=bootstrapLocator.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrapLocator.mjs","names":[],"sources":["../../src/adapters/bootstrapLocator.ts"],"sourcesContent":["import fs from 'node:fs';\nimport os from 'node:os';\nimport path from 'node:path';\nimport { fileURLToPath, pathToFileURL } from 'node:url';\nimport { findRepositoryRoot } from './repository/repository.ts';\nimport { resolveSyncLocation } from './syncLocation.ts';\nimport { readLocatedSyncState } from './syncState.ts';\nimport {\n BUNDLED_PRECOMPILE_STRATEGY,\n NATIVE_PRECOMPILE_STRATEGY,\n PRECOMPILE_STATE_VERSION,\n} from './syncStateContract.ts';\n\ninterface InputFingerprint {\n path: string;\n size: number;\n mtimeMs: number;\n}\n\ninterface CompilerManifest {\n output: string;\n artifacts: string[];\n entries: string[];\n inputs: InputFingerprint[];\n}\n\ninterface BootstrapState {\n statePath: string;\n generatedDirectory: string;\n bootstrap?: string;\n bundles: Record<string, string>;\n precompile?: {\n version: number;\n strategy: 'native' | 'bundle';\n bootstrapEntry: string;\n bootstrapManifest?: string;\n manifests: string[];\n };\n}\n\nexport interface BootstrapStatus {\n bootstrap?: string;\n fresh: boolean;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction stringRecord(value: unknown): Record<string, string> {\n if (!isRecord(value)) return {};\n return Object.fromEntries(\n Object.entries(value).filter((entry): entry is [string, string] => typeof entry[1] === 'string'),\n );\n}\n\nfunction canonicalPath(target: string): string {\n const absolute = path.resolve(target);\n try {\n return fs.realpathSync(absolute);\n } catch {\n const parent = path.dirname(absolute);\n if (parent === absolute) return absolute;\n return path.join(canonicalPath(parent), path.basename(absolute));\n }\n}\n\nfunction isInside(directory: string, target: string): boolean {\n const relative = path.relative(canonicalPath(directory), canonicalPath(target));\n return relative === '' || (!relative.startsWith('..') && !path.isAbsolute(relative));\n}\n\nfunction packagedDoomEntry(moduleUrl: string = import.meta.url): string {\n const extension = moduleUrl.endsWith('.ts') ? 'ts' : 'mjs';\n const sourceRoot = path.dirname(path.dirname(fileURLToPath(moduleUrl)));\n return path.join(sourceRoot, 'extensions', 'entries', `doom.${extension}`);\n}\n\nfunction nativeBootstrapSource(entry: string): string {\n return `export { default } from ${JSON.stringify(pathToFileURL(entry).href)};\\n`;\n}\n\nfunction locationHasState(repoRoot: string, homeDirectory: string): boolean {\n const location = resolveSyncLocation(repoRoot, homeDirectory);\n return fs.existsSync(location.statePath) || fs.existsSync(location.legacyStatePath);\n}\n\n/** Finds the nearest configured repository with generated Doom sync state. */\nexport function findSyncedRoot(cwd: string, homeDirectory: string = os.homedir()): string | undefined {\n try {\n if (locationHasState(cwd, homeDirectory)) return canonicalPath(cwd);\n const root = findRepositoryRoot(cwd);\n return locationHasState(root, homeDirectory) ? root : undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction readBootstrapState(repoRoot: string, homeDirectory: string = os.homedir()): BootstrapState | undefined {\n const located = readLocatedSyncState(repoRoot, homeDirectory);\n if (!located) return undefined;\n const { state } = located;\n const statePath = located.layout === 'global' ? located.location.statePath : located.location.legacyStatePath;\n const generatedDirectory = path.dirname(statePath);\n const bootstrap = state.bootstrap;\n if (bootstrap && !isInside(generatedDirectory, bootstrap)) {\n throw new Error(`Doom bootstrap must stay inside ${generatedDirectory}: ${bootstrap}`);\n }\n\n let precompile: BootstrapState['precompile'];\n if (state.precompile !== undefined) {\n if (\n typeof state.precompile.version !== 'number' ||\n (state.precompile.strategy !== NATIVE_PRECOMPILE_STRATEGY &&\n state.precompile.strategy !== BUNDLED_PRECOMPILE_STRATEGY) ||\n typeof state.precompile.bootstrapEntry !== 'string' ||\n (state.precompile.bootstrapManifest !== undefined && typeof state.precompile.bootstrapManifest !== 'string') ||\n !Array.isArray(state.precompile.manifests) ||\n state.precompile.manifests.some((manifest) => typeof manifest !== 'string')\n ) {\n throw new Error(`Doom sync state at ${statePath} has an invalid precompile record`);\n }\n precompile = {\n version: state.precompile.version,\n strategy: state.precompile.strategy,\n bootstrapEntry: state.precompile.bootstrapEntry,\n bootstrapManifest: state.precompile.bootstrapManifest,\n manifests: state.precompile.manifests,\n };\n }\n\n return {\n statePath,\n generatedDirectory,\n bootstrap,\n bundles: stringRecord(state.bundles),\n precompile,\n };\n}\n\nfunction readCompilerManifest(manifestPath: string, generatedDirectory: string): CompilerManifest | undefined {\n if (!isInside(generatedDirectory, manifestPath)) return undefined;\n try {\n const parsed = JSON.parse(fs.readFileSync(manifestPath, 'utf8')) as unknown;\n if (\n !isRecord(parsed) ||\n typeof parsed.output !== 'string' ||\n !Array.isArray(parsed.artifacts) ||\n parsed.artifacts.some((artifact) => typeof artifact !== 'string') ||\n !Array.isArray(parsed.entries) ||\n parsed.entries.some((entry) => typeof entry !== 'string') ||\n !Array.isArray(parsed.inputs)\n ) {\n return undefined;\n }\n const inputs: InputFingerprint[] = [];\n for (const input of parsed.inputs) {\n if (\n !isRecord(input) ||\n typeof input.path !== 'string' ||\n typeof input.size !== 'number' ||\n typeof input.mtimeMs !== 'number'\n ) {\n return undefined;\n }\n inputs.push({ path: input.path, size: input.size, mtimeMs: input.mtimeMs });\n }\n const artifacts = parsed.artifacts as string[];\n const entries = parsed.entries as string[];\n if (\n !isInside(generatedDirectory, parsed.output) ||\n artifacts.some((artifact) => !isInside(generatedDirectory, artifact))\n ) {\n return undefined;\n }\n return { output: parsed.output, artifacts, entries, inputs };\n } catch {\n return undefined;\n }\n}\n\nfunction compilerManifestIsFresh(manifest: CompilerManifest): boolean {\n if (!fs.existsSync(manifest.output) || manifest.artifacts.some((artifact) => !fs.existsSync(artifact))) return false;\n return manifest.inputs.every((input) => {\n try {\n const stat = fs.statSync(input.path);\n return stat.isFile() && stat.size === input.size && stat.mtimeMs === input.mtimeMs;\n } catch {\n return false;\n }\n });\n}\n\n/** Reads the generated pointer and validates every compiler input without loading the compiler. */\nexport function readBootstrapStatus(\n repoRoot: string,\n expectedBootstrapEntry: string = packagedDoomEntry(),\n homeDirectory: string = os.homedir(),\n): BootstrapStatus {\n const state = readBootstrapState(repoRoot, homeDirectory);\n if (!state?.bootstrap || !state.precompile) return { bootstrap: state?.bootstrap, fresh: false };\n if (\n state.precompile.version !== PRECOMPILE_STATE_VERSION ||\n canonicalPath(state.precompile.bootstrapEntry) !== canonicalPath(expectedBootstrapEntry)\n ) {\n return { bootstrap: state.bootstrap, fresh: false };\n }\n if (state.precompile.strategy === NATIVE_PRECOMPILE_STRATEGY) {\n let fresh = Object.keys(state.bundles).length === 0;\n try {\n fresh = fresh && fs.readFileSync(state.bootstrap, 'utf8') === nativeBootstrapSource(expectedBootstrapEntry);\n } catch {\n fresh = false;\n }\n return { bootstrap: state.bootstrap, fresh };\n }\n if (state.precompile.strategy !== BUNDLED_PRECOMPILE_STRATEGY || !state.precompile.bootstrapManifest) {\n return { bootstrap: state.bootstrap, fresh: false };\n }\n\n const manifests = [...new Set(state.precompile.manifests)];\n if (\n manifests.length === 0 ||\n manifests.length !== state.precompile.manifests.length ||\n !manifests.includes(state.precompile.bootstrapManifest)\n ) {\n return { bootstrap: state.bootstrap, fresh: false };\n }\n\n const generatedDirectory = state.generatedDirectory;\n const records = manifests.map((manifest) => readCompilerManifest(manifest, generatedDirectory));\n if (records.some((record) => !record || !compilerManifestIsFresh(record))) {\n return { bootstrap: state.bootstrap, fresh: false };\n }\n\n const bootstrapIndex = manifests.indexOf(state.precompile.bootstrapManifest);\n const bootstrapRecord = records[bootstrapIndex];\n if (\n !bootstrapRecord ||\n bootstrapRecord.output !== state.bootstrap ||\n bootstrapRecord.entries.length !== 1 ||\n canonicalPath(bootstrapRecord.entries[0] ?? '') !== canonicalPath(expectedBootstrapEntry)\n ) {\n return { bootstrap: state.bootstrap, fresh: false };\n }\n const outputs = new Set(records.flatMap((record) => (record ? [record.output] : [])));\n const fresh = Object.values(state.bundles).every((bundle) => outputs.has(bundle));\n return { bootstrap: state.bootstrap, fresh };\n}\n\n/** Reads only the generated bootstrap pointer while retaining state validation. */\nexport function readBootstrapPointer(repoRoot: string, homeDirectory: string = os.homedir()): string | undefined {\n return readBootstrapState(repoRoot, homeDirectory)?.bootstrap;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`../../_virtual/_rolldown/runtime.cjs`),t=require(`../serialization/json.cjs`);require(`../../utils/index.cjs`);const n=require(`./process.cjs`),r=require(`./shared.cjs`);let i=require(`node:path`);i=e.__toESM(i,1);let a=require(`node:fs`);a=e.__toESM(a,1);const o=`.doom-pi-managed.json`,s=`mcp-proxy`,c=`project-mcp`,l=`pencil`,u=`.agents`,d=`_agents`,f=`mcp_config.json`,p=`hooks.json`,m=`plugins`,h=`.gemini`,g=`antigravity-cli`;function _(e,t){if(typeof e.command==`string`){let n={...e,command:e.command,args:Array.isArray(e.args)?e.args.map(String):[],cwd:typeof e.cwd==`string`?e.cwd:t};return delete n.type,n}let n=typeof e.url==`string`?e.url:void 0;if(!n)return;let r={...e,serverUrl:n};return delete r.type,delete r.url,r}function v(e){let n=e.options.repoRoot,d=i.default.join(n,u,f),p=i.default.join(n,u,o),m=t.readJson(d),g=m[r.MCP_SERVERS_KEY],v=t.isRecord(g)?{...g}:{},y=t.readJson(p),b=y[r.MCP_SERVERS_KEY],x=Array.isArray(b)?b.map(String):[];for(let e of new Set([...x,s,c,l]))delete v[e];let S=t.readJson(e.mcpConfigPath)[r.MCP_SERVERS_KEY],C=t.isRecord(S)?S:{},w=e.mcpAllowlist?.servers,T=e=>!w||w.length===0||w.includes(e),E=[];T(`agiflow-proxy`)&&(v[s]={command:`npx`,args:r.mcpProxyArguments(r.ANTIGRAVITY_MCP_PROXY_PACKAGE,e.proxyConfigPath,!0),cwd:n,timeout:12e5},E.push(s));let D=e.mcpAllowlist?w??[]:[c,l];for(let e of D){if(e===`agiflow-proxy`)continue;let r=C[e];if(!t.isRecord(r))continue;let i=_(r,n);i&&(v[e]=i,E.push(e))}t.writeJson(d,{...m,[r.MCP_SERVERS_KEY]:v}),t.writeJson(p,{...y,[r.MCP_SERVERS_KEY]:E});let O=e.environment.HOME;if(O)for(let e of[i.default.join(O,h,`config`,f),i.default.join(O,h,`config`,r.PLUGINS_DIRECTORY,`shared`,f)]){if(!a.default.existsSync(e))continue;let n=t.readJson(e),i=n[r.MCP_SERVERS_KEY],o=t.isRecord(i)?{...i}:{};for(let e of[s,r.AGIFLOW_PROXY_SERVER_NAME,c,l])delete o[e];t.writeJson(e,{...n,[r.MCP_SERVERS_KEY]:o})}}function y(e){return i.default.join(e,h,g,`settings.json`)}function b(e){let n=e.environment.HOME;if(!n)throw Error(`HOME is required for Antigravity compatibility`);let r=y(n),i=t.readJson(r);i.model||=e.environment.AGY_MODEL??`Gemini 3.5 Flash`;let a=Array.isArray(i.trustedWorkspaces)?i.trustedWorkspaces.map(String):[];a.includes(e.options.repoRoot)||a.push(e.options.repoRoot),i.trustedWorkspaces=a,t.writeJson(r,i)}function x(e){let t=a.default.lstatSync(e,{throwIfNoEntry:!1});if(t&&!t.isDirectory())throw Error(`Refusing to use unmanaged Antigravity path: ${e}`);t||a.default.mkdirSync(e,{recursive:!0})}function S(e,t){if(a.default.existsSync(e)||a.default.lstatSync(e,{throwIfNoEntry:!1})){if(!a.default.lstatSync(e).isSymbolicLink())throw Error(`Refusing to replace unmanaged Antigravity path: ${e}`);a.default.rmSync(e,{force:!0})}a.default.symlinkSync(t,e,`dir`)}function C(e){let s=e.options.repoRoot,c=i.default.join(s,r.PLUGINS_DIRECTORY),l=i.default.join(s,d),f=i.default.join(l,r.PLUGINS_DIRECTORY),p=i.default.join(s,u,o),h=t.readJson(p),g=h[m],_=new Set(Array.isArray(g)?g.map(String):[]);x(l),x(f);let v=new Set;for(let n of e.plugins){let e=i.default.join(n.directory,`.codex-plugin`,r.PLUGIN_MANIFEST_FILENAME);if(!a.default.existsSync(e))continue;let o=t.readJson(e),s=typeof o.name==`string`&&o.name?o.name:i.default.basename(n.directory);if(s===`.`||s===`..`||s.toLowerCase()===`core`||s.includes(`/`)||s.includes(`\\`))throw Error(`Invalid Antigravity plugin name: ${s}`);let c=i.default.join(f,s);v.add(s),x(c),t.writeJson(i.default.join(c,r.PLUGIN_MANIFEST_FILENAME),{name:s});let l=i.default.join(n.directory,r.SKILLS_DIRECTORY),u=i.default.join(c,r.SKILLS_DIRECTORY);a.default.existsSync(l)?S(u,l):a.default.lstatSync(u,{throwIfNoEntry:!1})?.isSymbolicLink()&&a.default.rmSync(u,{force:!0})}for(let e of a.default.readdirSync(f,{withFileTypes:!0})){if(e.name===`core`||v.has(e.name))continue;let t=i.default.join(f,e.name);if(_.has(e.name)){a.default.rmSync(t,{recursive:!0,force:!0});continue}if(!e.isDirectory())continue;let o=i.default.join(t,r.SKILLS_DIRECTORY);a.default.lstatSync(o,{throwIfNoEntry:!1})?.isSymbolicLink()&&n.pathInside(c,i.default.resolve(i.default.dirname(o),a.default.readlinkSync(o)))&&a.default.rmSync(t,{recursive:!0,force:!0})}t.writeJson(p,{...h,[m]:[...v]})}function w(e){t.readJson(i.default.join(e,`plugin.json`)).name===`core`&&a.default.rmSync(e,{recursive:!0,force:!0})}function T(e){let n=i.default.join(e.options.repoRoot,d,r.PLUGINS_DIRECTORY,r.CORE_PLUGIN_NAME);if(a.default.lstatSync(n,{throwIfNoEntry:!1})?.isSymbolicLink())throw Error(`Refusing to use unmanaged Antigravity path: ${n}`);if(!e.sharedSkills){w(n);return}let o=i.default.join(e.options.repoRoot,`.claude`,r.SKILLS_DIRECTORY);if(!a.default.existsSync(o)){w(n);return}x(n);let s=i.default.join(n,r.SKILLS_DIRECTORY);x(s),t.writeJson(i.default.join(n,r.PLUGIN_MANIFEST_FILENAME),{name:r.CORE_PLUGIN_NAME});let c=new Set;for(let e of a.default.readdirSync(o,{withFileTypes:!0}))e.isDirectory()&&(c.add(e.name),S(i.default.join(s,e.name),i.default.join(o,e.name)));for(let e of a.default.readdirSync(s)){if(c.has(e))continue;let t=i.default.join(s,e);a.default.lstatSync(t).isSymbolicLink()&&a.default.rmSync(t,{force:!0})}}function E(e){let n=i.default.join(e.options.repoRoot,`.antigravity-local`,p),r=i.default.join(e.options.repoRoot,u,p),s=i.default.join(e.options.repoRoot,u,o),c=t.readJson(s);if(!a.default.existsSync(n)){c.hooks===!0&&a.default.rmSync(r,{force:!0}),t.writeJson(s,{...c,hooks:!1});return}let l=a.default.readFileSync(n,`utf8`).replaceAll(`$AGY_REPO_ROOT`,e.options.repoRoot),d=a.default.lstatSync(r,{throwIfNoEntry:!1});if(d&&c.hooks!==!0&&(!d.isFile()||a.default.readFileSync(r,`utf8`)!==l))throw Error(`Refusing to replace unmanaged Antigravity path: ${r}`);t.writeFileAtomic(r,l),t.writeJson(s,{...c,hooks:!0})}function D(e){return[r.SKIP_PERMISSIONS_OPTION,...r.additionalDirectoryArgs(e),...e.options.providerArgs]}async function O(e){let t=e.environment.HOME;if(!t)throw Error(`HOME is required for Antigravity compatibility`);let r=await n.acquireDirectoryLock(i.default.join(t,h,g,`.doom-pi-sync.lock`));try{v(e),b(e),C(e),T(e),E(e)}finally{await r()}return n.runInteractive(`agy`,D(e),e.options.repoRoot,e.environment)}exports.adaptAntigravityMcpDefinition=_,exports.antigravityCompatibilityArgs=D,exports.launchAntigravity=O;
|
|
2
|
+
//# sourceMappingURL=antigravity.cjs.map
|
|
@@ -1 +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/services/compatibility/antigravity.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\nimport { type JsonObject, isRecord, readJson, writeFileAtomic, writeJson } from '../../utils/index.ts';\nimport type { CompatibilityContext } from '../compatibilityContext.ts';\nimport { acquireDirectoryLock, pathInside, runInteractive } from './process.ts';\nimport {\n AGIFLOW_PROXY_SERVER_NAME,\n ANTIGRAVITY_MCP_PROXY_PACKAGE,\n CORE_PLUGIN_NAME,\n MCP_SERVERS_KEY,\n NPX_COMMAND,\n PLUGIN_MANIFEST_FILENAME,\n PLUGINS_DIRECTORY,\n SKILLS_DIRECTORY,\n SKIP_PERMISSIONS_OPTION,\n additionalDirectoryArgs,\n mcpProxyArguments,\n} from './shared.ts';\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 = '.doom-pi-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 = '.doom-pi-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 if (!trusted.includes(context.options.repoRoot)) trusted.push(context.options.repoRoot);\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 === '.' ||\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 [SKIP_PERMISSIONS_OPTION, ...additionalDirectoryArgs(context), ...context.options.providerArgs];\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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"}
|
|
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/adapters/compatibility/antigravity.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\nimport { isRecord, type JsonObject, readJson, writeFileAtomic, writeJson } from '../../utils/index.ts';\nimport type { CompatibilityContext } from '../compatibilityContext.ts';\nimport { acquireDirectoryLock, pathInside, runInteractive } from './process.ts';\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.ts';\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 = '.doom-pi-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 = '.doom-pi-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 if (!trusted.includes(context.options.repoRoot)) trusted.push(context.options.repoRoot);\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 === '.' ||\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 [SKIP_PERMISSIONS_OPTION, ...additionalDirectoryArgs(context), ...context.options.providerArgs];\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,11 @@
|
|
|
1
|
+
import { CompatibilityContext } from "../compatibilityContext.cjs";
|
|
2
|
+
import { JsonObject } from "../serialization/json.cjs";
|
|
3
|
+
|
|
4
|
+
//#region src/adapters/compatibility/antigravity.d.ts
|
|
5
|
+
/** Rewrites one MCP server definition into the shape Antigravity expects. */
|
|
6
|
+
declare function adaptAntigravityMcpDefinition(definition: JsonObject, repoRoot: string): JsonObject | undefined;
|
|
7
|
+
declare function antigravityCompatibilityArgs(context: CompatibilityContext): string[];
|
|
8
|
+
declare function launchAntigravity(context: CompatibilityContext): Promise<number>;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { adaptAntigravityMcpDefinition, antigravityCompatibilityArgs, launchAntigravity };
|
|
11
|
+
//# sourceMappingURL=antigravity.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"antigravity.d.cts","names":[],"sources":["../../../src/
|
|
1
|
+
{"version":3,"file":"antigravity.d.cts","names":[],"sources":["../../../src/adapters/compatibility/antigravity.ts"],"mappings":";;;;;iBAmDgB,6BAAA,CAA8B,UAAA,EAAY,UAAA,EAAY,QAAA,WAAmB,UAAA;AAAA,iBAqPzE,4BAAA,CAA6B,OAAA,EAAS,oBAAA;AAAA,iBAIhC,iBAAA,CAAkB,OAAA,EAAS,oBAAA,GAAuB,OAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CompatibilityContext } from "../compatibilityContext.mjs";
|
|
2
|
+
import { JsonObject } from "../serialization/json.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/adapters/compatibility/antigravity.d.ts
|
|
5
|
+
/** Rewrites one MCP server definition into the shape Antigravity expects. */
|
|
6
|
+
declare function adaptAntigravityMcpDefinition(definition: JsonObject, repoRoot: string): JsonObject | undefined;
|
|
7
|
+
declare function antigravityCompatibilityArgs(context: CompatibilityContext): string[];
|
|
8
|
+
declare function launchAntigravity(context: CompatibilityContext): Promise<number>;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { adaptAntigravityMcpDefinition, antigravityCompatibilityArgs, launchAntigravity };
|
|
11
|
+
//# sourceMappingURL=antigravity.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"antigravity.d.mts","names":[],"sources":["../../../src/
|
|
1
|
+
{"version":3,"file":"antigravity.d.mts","names":[],"sources":["../../../src/adapters/compatibility/antigravity.ts"],"mappings":";;;;;iBAmDgB,6BAAA,CAA8B,UAAA,EAAY,UAAA,EAAY,QAAA,WAAmB,UAAA;AAAA,iBAqPzE,4BAAA,CAA6B,OAAA,EAAS,oBAAA;AAAA,iBAIhC,iBAAA,CAAkB,OAAA,EAAS,oBAAA,GAAuB,OAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{isRecord as e,readJson as t,writeFileAtomic as n,writeJson as r}from"../serialization/json.mjs";import"../../utils/index.mjs";import{acquireDirectoryLock as i,pathInside as a,runInteractive as o}from"./process.mjs";import{AGIFLOW_PROXY_SERVER_NAME as s,ANTIGRAVITY_MCP_PROXY_PACKAGE as c,CORE_PLUGIN_NAME as l,MCP_SERVERS_KEY as u,PLUGINS_DIRECTORY as d,PLUGIN_MANIFEST_FILENAME as f,SKILLS_DIRECTORY as p,SKIP_PERMISSIONS_OPTION as m,additionalDirectoryArgs as h,mcpProxyArguments as g}from"./shared.mjs";import _ from"node:path";import v from"node:fs";const y=`.doom-pi-managed.json`,b=`mcp-proxy`,x=`project-mcp`,S=`pencil`,C=`.agents`,w=`_agents`,T=`mcp_config.json`,E=`hooks.json`,D=`plugins`,O=`.gemini`,k=`antigravity-cli`;function A(e,t){if(typeof e.command==`string`){let n={...e,command:e.command,args:Array.isArray(e.args)?e.args.map(String):[],cwd:typeof e.cwd==`string`?e.cwd:t};return delete n.type,n}let n=typeof e.url==`string`?e.url:void 0;if(!n)return;let r={...e,serverUrl:n};return delete r.type,delete r.url,r}function j(n){let i=n.options.repoRoot,a=_.join(i,C,T),o=_.join(i,C,y),l=t(a),f=l[u],p=e(f)?{...f}:{},m=t(o),h=m[u],w=Array.isArray(h)?h.map(String):[];for(let e of new Set([...w,b,x,S]))delete p[e];let E=t(n.mcpConfigPath)[u],D=e(E)?E:{},k=n.mcpAllowlist?.servers,j=e=>!k||k.length===0||k.includes(e),M=[];j(`agiflow-proxy`)&&(p[b]={command:`npx`,args:g(c,n.proxyConfigPath,!0),cwd:i,timeout:12e5},M.push(b));let N=n.mcpAllowlist?k??[]:[x,S];for(let t of N){if(t===`agiflow-proxy`)continue;let n=D[t];if(!e(n))continue;let r=A(n,i);r&&(p[t]=r,M.push(t))}r(a,{...l,[u]:p}),r(o,{...m,[u]:M});let P=n.environment.HOME;if(P)for(let n of[_.join(P,O,`config`,T),_.join(P,O,`config`,d,`shared`,T)]){if(!v.existsSync(n))continue;let i=t(n),a=i[u],o=e(a)?{...a}:{};for(let e of[b,s,x,S])delete o[e];r(n,{...i,[u]:o})}}function M(e){return _.join(e,O,k,`settings.json`)}function N(e){let n=e.environment.HOME;if(!n)throw Error(`HOME is required for Antigravity compatibility`);let i=M(n),a=t(i);a.model||=e.environment.AGY_MODEL??`Gemini 3.5 Flash`;let o=Array.isArray(a.trustedWorkspaces)?a.trustedWorkspaces.map(String):[];o.includes(e.options.repoRoot)||o.push(e.options.repoRoot),a.trustedWorkspaces=o,r(i,a)}function P(e){let t=v.lstatSync(e,{throwIfNoEntry:!1});if(t&&!t.isDirectory())throw Error(`Refusing to use unmanaged Antigravity path: ${e}`);t||v.mkdirSync(e,{recursive:!0})}function F(e,t){if(v.existsSync(e)||v.lstatSync(e,{throwIfNoEntry:!1})){if(!v.lstatSync(e).isSymbolicLink())throw Error(`Refusing to replace unmanaged Antigravity path: ${e}`);v.rmSync(e,{force:!0})}v.symlinkSync(t,e,`dir`)}function I(e){let n=e.options.repoRoot,i=_.join(n,d),o=_.join(n,w),s=_.join(o,d),c=_.join(n,C,y),l=t(c),u=l[D],m=new Set(Array.isArray(u)?u.map(String):[]);P(o),P(s);let h=new Set;for(let n of e.plugins){let e=_.join(n.directory,`.codex-plugin`,f);if(!v.existsSync(e))continue;let i=t(e),a=typeof i.name==`string`&&i.name?i.name:_.basename(n.directory);if(a===`.`||a===`..`||a.toLowerCase()===`core`||a.includes(`/`)||a.includes(`\\`))throw Error(`Invalid Antigravity plugin name: ${a}`);let o=_.join(s,a);h.add(a),P(o),r(_.join(o,f),{name:a});let c=_.join(n.directory,p),l=_.join(o,p);v.existsSync(c)?F(l,c):v.lstatSync(l,{throwIfNoEntry:!1})?.isSymbolicLink()&&v.rmSync(l,{force:!0})}for(let e of v.readdirSync(s,{withFileTypes:!0})){if(e.name===`core`||h.has(e.name))continue;let t=_.join(s,e.name);if(m.has(e.name)){v.rmSync(t,{recursive:!0,force:!0});continue}if(!e.isDirectory())continue;let n=_.join(t,p);v.lstatSync(n,{throwIfNoEntry:!1})?.isSymbolicLink()&&a(i,_.resolve(_.dirname(n),v.readlinkSync(n)))&&v.rmSync(t,{recursive:!0,force:!0})}r(c,{...l,[D]:[...h]})}function L(e){t(_.join(e,`plugin.json`)).name===`core`&&v.rmSync(e,{recursive:!0,force:!0})}function R(e){let t=_.join(e.options.repoRoot,w,d,l);if(v.lstatSync(t,{throwIfNoEntry:!1})?.isSymbolicLink())throw Error(`Refusing to use unmanaged Antigravity path: ${t}`);if(!e.sharedSkills){L(t);return}let n=_.join(e.options.repoRoot,`.claude`,p);if(!v.existsSync(n)){L(t);return}P(t);let i=_.join(t,p);P(i),r(_.join(t,f),{name:l});let a=new Set;for(let e of v.readdirSync(n,{withFileTypes:!0}))e.isDirectory()&&(a.add(e.name),F(_.join(i,e.name),_.join(n,e.name)));for(let e of v.readdirSync(i)){if(a.has(e))continue;let t=_.join(i,e);v.lstatSync(t).isSymbolicLink()&&v.rmSync(t,{force:!0})}}function z(e){let i=_.join(e.options.repoRoot,`.antigravity-local`,E),a=_.join(e.options.repoRoot,C,E),o=_.join(e.options.repoRoot,C,y),s=t(o);if(!v.existsSync(i)){s.hooks===!0&&v.rmSync(a,{force:!0}),r(o,{...s,hooks:!1});return}let c=v.readFileSync(i,`utf8`).replaceAll(`$AGY_REPO_ROOT`,e.options.repoRoot),l=v.lstatSync(a,{throwIfNoEntry:!1});if(l&&s.hooks!==!0&&(!l.isFile()||v.readFileSync(a,`utf8`)!==c))throw Error(`Refusing to replace unmanaged Antigravity path: ${a}`);n(a,c),r(o,{...s,hooks:!0})}function B(e){return[m,...h(e),...e.options.providerArgs]}async function V(e){let t=e.environment.HOME;if(!t)throw Error(`HOME is required for Antigravity compatibility`);let n=await i(_.join(t,O,k,`.doom-pi-sync.lock`));try{j(e),N(e),I(e),R(e),z(e)}finally{await n()}return o(`agy`,B(e),e.options.repoRoot,e.environment)}export{A as adaptAntigravityMcpDefinition,B as antigravityCompatibilityArgs,V as launchAntigravity};
|
|
2
|
+
//# sourceMappingURL=antigravity.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"antigravity.mjs","names":[],"sources":["../../../src/services/compatibility/antigravity.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\nimport { type JsonObject, isRecord, readJson, writeFileAtomic, writeJson } from '../../utils/index.ts';\nimport type { CompatibilityContext } from '../compatibilityContext.ts';\nimport { acquireDirectoryLock, pathInside, runInteractive } from './process.ts';\nimport {\n AGIFLOW_PROXY_SERVER_NAME,\n ANTIGRAVITY_MCP_PROXY_PACKAGE,\n CORE_PLUGIN_NAME,\n MCP_SERVERS_KEY,\n NPX_COMMAND,\n PLUGIN_MANIFEST_FILENAME,\n PLUGINS_DIRECTORY,\n SKILLS_DIRECTORY,\n SKIP_PERMISSIONS_OPTION,\n additionalDirectoryArgs,\n mcpProxyArguments,\n} from './shared.ts';\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 = '.doom-pi-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 = '.doom-pi-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 if (!trusted.includes(context.options.repoRoot)) trusted.push(context.options.repoRoot);\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 === '.' ||\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 [SKIP_PERMISSIONS_OPTION, ...additionalDirectoryArgs(context), ...context.options.providerArgs];\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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"}
|
|
1
|
+
{"version":3,"file":"antigravity.mjs","names":[],"sources":["../../../src/adapters/compatibility/antigravity.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\nimport { isRecord, type JsonObject, readJson, writeFileAtomic, writeJson } from '../../utils/index.ts';\nimport type { CompatibilityContext } from '../compatibilityContext.ts';\nimport { acquireDirectoryLock, pathInside, runInteractive } from './process.ts';\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.ts';\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 = '.doom-pi-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 = '.doom-pi-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 if (!trusted.includes(context.options.repoRoot)) trusted.push(context.options.repoRoot);\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 === '.' ||\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 [SKIP_PERMISSIONS_OPTION, ...additionalDirectoryArgs(context), ...context.options.providerArgs];\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,2 @@
|
|
|
1
|
+
const e=require(`../../_virtual/_rolldown/runtime.cjs`),t=require(`./process.cjs`),n=require(`./shared.cjs`);let r=require(`node:path`);r=e.__toESM(r,1);let i=require(`node:fs`);i=e.__toESM(i,1);let a=require(`node:child_process`);const o=`codex`,s=`--profile`,c=`--profile-v2`,l=/^[A-Za-z0-9_-]+$/,u=[`tools`,`harness`,`sync-codex-state.cjs`];function d(e){return new Set([s,c,`-c`,n.MCP_CONFIG_OPTION,`--enable`,`--disable`,`--remote`,`--remote-auth-token-env`,`-i`,`--image`,`-m`,`--model`,`--local-provider`,`-s`,`--sandbox`,`-C`,`--cd`,n.ADD_DIRECTORY_OPTION,`-a`,`--ask-for-approval`]).has(e)}function f(e){let t=!1,n=``,r=``;for(let i of e){if(t){t=!1;continue}if(d(i)){t=!0;continue}if(!i.startsWith(`-`)){if(!n){n=i;continue}n===`debug`&&!r&&(r=i);break}}return!n||[`exec`,`e`,`review`,`resume`,`fork`].includes(n)?!0:n===`debug`?r===`prompt-input`:![`login`,`logout`,`mcp`,`plugin`,`mcp-server`,`app-server`,`remote-control`,`app`,`completion`,`update`,`doctor`,`sandbox`,`apply`,`a`,`cloud`,`exec-server`,`features`,`archive`,`delete`,`unarchive`,`help`].includes(n)}function p(e){let t=r.default.join(e.options.repoRoot,n.PLUGINS_DIRECTORY);return e.plugins.map(e=>{let n=r.default.relative(t,e.directory);if(!n||n===`..`||n.startsWith(`..${r.default.sep}`)||n.includes(r.default.sep))throw Error(`Codex compatibility requires a direct repository plugin: ${e.directory}`);return n})}function m(e){return n.mcpProxyArguments(n.MCP_PROXY_PACKAGE,e.proxyConfigPath,!0,!0)}function h(e,t,r){let a=[`--yolo`,`--enable`,`hooks`,...n.additionalDirectoryArgs(e)];if(f(e.options.providerArgs)){if(a.push(r,t),e.personaFile){let t=i.default.readFileSync(e.personaFile,`utf8`);a.push(`-c`,`developer_instructions=${JSON.stringify(t)}`)}e.mcpAllowlist&&a.push(`-c`,`mcp_servers.${n.AGIFLOW_PROXY_SERVER_NAME}.args=${JSON.stringify(m(e))}`)}return[...a,...e.options.providerArgs]}function g(e){let t={...e.environment},n=(0,a.spawnSync)(`git`,[`-C`,e.options.repoRoot,`remote`,`get-url`,`origin`],{encoding:`utf8`,env:t});return t.CODEX_REPO_ORIGIN=n.status===0?n.stdout.trim():``,t.CODEX_PROFILE_NAMES=e.options.domains.join(`,`),t.CODEX_PLUGIN_DIRS=p(e).join(`,`),t.CODEX_ENABLE_XCODE_MCP=(0,a.spawnSync)(`xcrun`,[`mcpbridge`,`--help`],{env:t,stdio:`ignore`}).status===0?`1`:`0`,t}async function _(e){let i=g(e),a=r.default.join(e.options.repoRoot,...u),d=t.runCaptured(process.execPath,[a,`owner-key`],e.options.repoRoot,i),f=i.HOME;i.CODEX_LEGACY_HOME=f?r.default.join(f,`.codex`,`agirepo`):void 0,i.CODEX_HOME=f?r.default.join(f,`.codex`,d):r.default.join(e.options.repoRoot,`.codex-local`,`state`,d),t.runChecked(`npx`,[...n.mcpProxyArguments(n.MCP_PROXY_PACKAGE,e.proxyConfigPath,!0),n.MCP_PRESTART_OPTION],e.options.repoRoot,i);let p=t.runCaptured(process.execPath,[a,`sync`],e.options.repoRoot,i),m=JSON.parse(p);if(typeof m.profileConfigName!=`string`||!l.test(m.profileConfigName))throw Error(`Codex sync returned an invalid profile config name`);let _=t.runCaptured(`codex`,[`--help`],e.options.repoRoot,i).includes(c)?c:s;return t.runInteractive(o,h(e,m.profileConfigName,_),e.options.repoRoot,i)}exports.CODEX_PROVIDER=o,exports.codexCompatibilityArgs=h,exports.codexEnvironment=g,exports.codexPluginDirectories=p,exports.launchCodex=_,exports.supportsCodexManagedProfile=f;
|
|
2
|
+
//# sourceMappingURL=codex.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.cjs","names":["MCP_CONFIG_OPTION","ADD_DIRECTORY_OPTION","path","PLUGINS_DIRECTORY","mcpProxyArguments","MCP_PROXY_PACKAGE","additionalDirectoryArgs","fs","AGIFLOW_PROXY_SERVER_NAME","runCaptured","MCP_PRESTART_OPTION","runInteractive"],"sources":["../../../src/
|
|
1
|
+
{"version":3,"file":"codex.cjs","names":["MCP_CONFIG_OPTION","ADD_DIRECTORY_OPTION","path","PLUGINS_DIRECTORY","mcpProxyArguments","MCP_PROXY_PACKAGE","additionalDirectoryArgs","fs","AGIFLOW_PROXY_SERVER_NAME","runCaptured","MCP_PRESTART_OPTION","runInteractive"],"sources":["../../../src/adapters/compatibility/codex.ts"],"sourcesContent":["import { spawnSync } from 'node:child_process';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport type { JsonObject } from '../../utils/index.ts';\nimport type { CompatibilityContext } from '../compatibilityContext.ts';\nimport { runCaptured, runChecked, runInteractive } from './process.ts';\nimport {\n ADD_DIRECTORY_OPTION,\n AGIFLOW_PROXY_SERVER_NAME,\n additionalDirectoryArgs,\n MCP_CONFIG_OPTION,\n MCP_PRESTART_OPTION,\n MCP_PROXY_PACKAGE,\n mcpProxyArguments,\n NPX_COMMAND,\n PLUGINS_DIRECTORY,\n} from './shared.ts';\n\nexport const CODEX_PROVIDER = 'codex';\n\nconst PROFILE_FLAG = '--profile';\nconst PROFILE_V2_FLAG = '--profile-v2';\nconst PROFILE_CONFIG_NAME_PATTERN = /^[A-Za-z0-9_-]+$/;\nconst SYNC_SCRIPT_RELATIVE_PATH = ['tools', 'harness', 'sync-codex-state.cjs'];\n\n/** Codex options that consume the following argument, so it is not a subcommand. */\nfunction optionRequiresValue(argument: string): boolean {\n return new Set([\n PROFILE_FLAG,\n PROFILE_V2_FLAG,\n '-c',\n MCP_CONFIG_OPTION,\n '--enable',\n '--disable',\n '--remote',\n '--remote-auth-token-env',\n '-i',\n '--image',\n '-m',\n '--model',\n '--local-provider',\n '-s',\n '--sandbox',\n '-C',\n '--cd',\n ADD_DIRECTORY_OPTION,\n '-a',\n '--ask-for-approval',\n ]).has(argument);\n}\n\n/**\n * Whether the managed profile, persona, and proxy config apply to this run.\n *\n * Codex management subcommands reject session options, so injecting them would\n * turn `codex login` into an error.\n */\nexport function supportsCodexManagedProfile(args: string[]): boolean {\n let previousRequiresValue = false;\n let command = '';\n let debugSubcommand = '';\n\n for (const argument of args) {\n if (previousRequiresValue) {\n previousRequiresValue = false;\n continue;\n }\n if (optionRequiresValue(argument)) {\n previousRequiresValue = true;\n continue;\n }\n if (argument.startsWith('-')) continue;\n if (!command) {\n command = argument;\n continue;\n }\n if (command === 'debug' && !debugSubcommand) debugSubcommand = argument;\n break;\n }\n\n if (!command || ['exec', 'e', 'review', 'resume', 'fork'].includes(command)) return true;\n if (command === 'debug') return debugSubcommand === 'prompt-input';\n if (\n [\n 'login',\n 'logout',\n 'mcp',\n 'plugin',\n 'mcp-server',\n 'app-server',\n 'remote-control',\n 'app',\n 'completion',\n 'update',\n 'doctor',\n 'sandbox',\n 'apply',\n 'a',\n 'cloud',\n 'exec-server',\n 'features',\n 'archive',\n 'delete',\n 'unarchive',\n 'help',\n ].includes(command)\n ) {\n return false;\n }\n return true;\n}\n\n/** Plugin directory names relative to `plugins/`, which is all Codex accepts. */\nexport function codexPluginDirectories(context: CompatibilityContext): string[] {\n const pluginsRoot = path.join(context.options.repoRoot, PLUGINS_DIRECTORY);\n return context.plugins.map((plugin) => {\n const relative = path.relative(pluginsRoot, plugin.directory);\n if (!relative || relative === '..' || relative.startsWith(`..${path.sep}`) || relative.includes(path.sep)) {\n throw new Error(`Codex compatibility requires a direct repository plugin: ${plugin.directory}`);\n }\n return relative;\n });\n}\n\nfunction codexProxyArguments(context: CompatibilityContext): string[] {\n return mcpProxyArguments(MCP_PROXY_PACKAGE, context.proxyConfigPath, true, true);\n}\n\nexport function codexCompatibilityArgs(\n context: CompatibilityContext,\n managedProfileName: string,\n managedProfileFlag: string,\n): string[] {\n const args = ['--yolo', '--enable', 'hooks', ...additionalDirectoryArgs(context)];\n if (supportsCodexManagedProfile(context.options.providerArgs)) {\n args.push(managedProfileFlag, managedProfileName);\n if (context.personaFile) {\n const persona = fs.readFileSync(context.personaFile, 'utf8');\n args.push('-c', `developer_instructions=${JSON.stringify(persona)}`);\n }\n if (context.mcpAllowlist) {\n args.push('-c', `mcp_servers.${AGIFLOW_PROXY_SERVER_NAME}.args=${JSON.stringify(codexProxyArguments(context))}`);\n }\n }\n return [...args, ...context.options.providerArgs];\n}\n\nexport function codexEnvironment(context: CompatibilityContext): NodeJS.ProcessEnv {\n const environment = { ...context.environment };\n const originResult = spawnSync('git', ['-C', context.options.repoRoot, 'remote', 'get-url', 'origin'], {\n encoding: 'utf8',\n env: environment,\n });\n environment.CODEX_REPO_ORIGIN = originResult.status === 0 ? originResult.stdout.trim() : '';\n environment.CODEX_PROFILE_NAMES = context.options.domains.join(',');\n environment.CODEX_PLUGIN_DIRS = codexPluginDirectories(context).join(',');\n environment.CODEX_ENABLE_XCODE_MCP =\n spawnSync('xcrun', ['mcpbridge', '--help'], { env: environment, stdio: 'ignore' }).status === 0 ? '1' : '0';\n return environment;\n}\n\nexport async function launchCodex(context: CompatibilityContext): Promise<number> {\n const environment = codexEnvironment(context);\n const syncScript = path.join(context.options.repoRoot, ...SYNC_SCRIPT_RELATIVE_PATH);\n const stateName = runCaptured(process.execPath, [syncScript, 'owner-key'], context.options.repoRoot, environment);\n const home = environment.HOME;\n environment.CODEX_LEGACY_HOME = home ? path.join(home, '.codex', 'agirepo') : undefined;\n environment.CODEX_HOME = home\n ? path.join(home, '.codex', stateName)\n : path.join(context.options.repoRoot, '.codex-local', 'state', stateName);\n\n runChecked(\n NPX_COMMAND,\n [...mcpProxyArguments(MCP_PROXY_PACKAGE, context.proxyConfigPath, true), MCP_PRESTART_OPTION],\n context.options.repoRoot,\n environment,\n );\n\n const syncOutput = runCaptured(process.execPath, [syncScript, 'sync'], context.options.repoRoot, environment);\n const syncResult = JSON.parse(syncOutput) as JsonObject;\n if (\n typeof syncResult.profileConfigName !== 'string' ||\n !PROFILE_CONFIG_NAME_PATTERN.test(syncResult.profileConfigName)\n ) {\n throw new Error('Codex sync returned an invalid profile config name');\n }\n // Older Codex builds only understand --profile, so the flag is probed rather\n // than assumed.\n const help = runCaptured(CODEX_PROVIDER, ['--help'], context.options.repoRoot, environment);\n const profileFlag = help.includes(PROFILE_V2_FLAG) ? PROFILE_V2_FLAG : PROFILE_FLAG;\n return runInteractive(\n CODEX_PROVIDER,\n codexCompatibilityArgs(context, syncResult.profileConfigName, profileFlag),\n context.options.repoRoot,\n environment,\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { CompatibilityContext } from "../compatibilityContext.cjs";
|
|
2
|
+
|
|
3
|
+
//#region src/adapters/compatibility/codex.d.ts
|
|
4
|
+
declare const CODEX_PROVIDER = "codex";
|
|
5
|
+
/**
|
|
6
|
+
* Whether the managed profile, persona, and proxy config apply to this run.
|
|
7
|
+
*
|
|
8
|
+
* Codex management subcommands reject session options, so injecting them would
|
|
9
|
+
* turn `codex login` into an error.
|
|
10
|
+
*/
|
|
11
|
+
declare function supportsCodexManagedProfile(args: string[]): boolean;
|
|
12
|
+
/** Plugin directory names relative to `plugins/`, which is all Codex accepts. */
|
|
13
|
+
declare function codexPluginDirectories(context: CompatibilityContext): string[];
|
|
14
|
+
declare function codexCompatibilityArgs(context: CompatibilityContext, managedProfileName: string, managedProfileFlag: string): string[];
|
|
15
|
+
declare function codexEnvironment(context: CompatibilityContext): NodeJS.ProcessEnv;
|
|
16
|
+
declare function launchCodex(context: CompatibilityContext): Promise<number>;
|
|
17
|
+
//#endregion
|
|
18
|
+
export { CODEX_PROVIDER, codexCompatibilityArgs, codexEnvironment, codexPluginDirectories, launchCodex, supportsCodexManagedProfile };
|
|
19
|
+
//# sourceMappingURL=codex.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.d.cts","names":[],"sources":["../../../src/
|
|
1
|
+
{"version":3,"file":"codex.d.cts","names":[],"sources":["../../../src/adapters/compatibility/codex.ts"],"mappings":";;;cAkBa,cAAA;;AAAb;;;;;iBAuCgB,2BAAA,CAA4B,IAAA;;iBAwD5B,sBAAA,CAAuB,OAAA,EAAS,oBAAA;AAAA,iBAehC,sBAAA,CACd,OAAA,EAAS,oBAAA,EACT,kBAAA,UACA,kBAAA;AAAA,iBAgBc,gBAAA,CAAiB,OAAA,EAAS,oBAAA,GAAuB,MAAA,CAAO,UAAA;AAAA,iBAclD,WAAA,CAAY,OAAA,EAAS,oBAAA,GAAuB,OAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { CompatibilityContext } from "../compatibilityContext.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/adapters/compatibility/codex.d.ts
|
|
4
|
+
declare const CODEX_PROVIDER = "codex";
|
|
5
|
+
/**
|
|
6
|
+
* Whether the managed profile, persona, and proxy config apply to this run.
|
|
7
|
+
*
|
|
8
|
+
* Codex management subcommands reject session options, so injecting them would
|
|
9
|
+
* turn `codex login` into an error.
|
|
10
|
+
*/
|
|
11
|
+
declare function supportsCodexManagedProfile(args: string[]): boolean;
|
|
12
|
+
/** Plugin directory names relative to `plugins/`, which is all Codex accepts. */
|
|
13
|
+
declare function codexPluginDirectories(context: CompatibilityContext): string[];
|
|
14
|
+
declare function codexCompatibilityArgs(context: CompatibilityContext, managedProfileName: string, managedProfileFlag: string): string[];
|
|
15
|
+
declare function codexEnvironment(context: CompatibilityContext): NodeJS.ProcessEnv;
|
|
16
|
+
declare function launchCodex(context: CompatibilityContext): Promise<number>;
|
|
17
|
+
//#endregion
|
|
18
|
+
export { CODEX_PROVIDER, codexCompatibilityArgs, codexEnvironment, codexPluginDirectories, launchCodex, supportsCodexManagedProfile };
|
|
19
|
+
//# sourceMappingURL=codex.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.d.mts","names":[],"sources":["../../../src/
|
|
1
|
+
{"version":3,"file":"codex.d.mts","names":[],"sources":["../../../src/adapters/compatibility/codex.ts"],"mappings":";;;cAkBa,cAAA;;AAAb;;;;;iBAuCgB,2BAAA,CAA4B,IAAA;;iBAwD5B,sBAAA,CAAuB,OAAA,EAAS,oBAAA;AAAA,iBAehC,sBAAA,CACd,OAAA,EAAS,oBAAA,EACT,kBAAA,UACA,kBAAA;AAAA,iBAgBc,gBAAA,CAAiB,OAAA,EAAS,oBAAA,GAAuB,MAAA,CAAO,UAAA;AAAA,iBAclD,WAAA,CAAY,OAAA,EAAS,oBAAA,GAAuB,OAAA"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{runCaptured as e,runChecked as t,runInteractive as n}from"./process.mjs";import{ADD_DIRECTORY_OPTION as r,AGIFLOW_PROXY_SERVER_NAME as i,MCP_CONFIG_OPTION as a,MCP_PRESTART_OPTION as o,MCP_PROXY_PACKAGE as s,PLUGINS_DIRECTORY as c,additionalDirectoryArgs as l,mcpProxyArguments as u}from"./shared.mjs";import d from"node:path";import f from"node:fs";import{spawnSync as p}from"node:child_process";const m=`codex`,h=`--profile`,g=`--profile-v2`,_=/^[A-Za-z0-9_-]+$/,v=[`tools`,`harness`,`sync-codex-state.cjs`];function y(e){return new Set([h,g,`-c`,a,`--enable`,`--disable`,`--remote`,`--remote-auth-token-env`,`-i`,`--image`,`-m`,`--model`,`--local-provider`,`-s`,`--sandbox`,`-C`,`--cd`,r,`-a`,`--ask-for-approval`]).has(e)}function b(e){let t=!1,n=``,r=``;for(let i of e){if(t){t=!1;continue}if(y(i)){t=!0;continue}if(!i.startsWith(`-`)){if(!n){n=i;continue}n===`debug`&&!r&&(r=i);break}}return!n||[`exec`,`e`,`review`,`resume`,`fork`].includes(n)?!0:n===`debug`?r===`prompt-input`:![`login`,`logout`,`mcp`,`plugin`,`mcp-server`,`app-server`,`remote-control`,`app`,`completion`,`update`,`doctor`,`sandbox`,`apply`,`a`,`cloud`,`exec-server`,`features`,`archive`,`delete`,`unarchive`,`help`].includes(n)}function x(e){let t=d.join(e.options.repoRoot,c);return e.plugins.map(e=>{let n=d.relative(t,e.directory);if(!n||n===`..`||n.startsWith(`..${d.sep}`)||n.includes(d.sep))throw Error(`Codex compatibility requires a direct repository plugin: ${e.directory}`);return n})}function S(e){return u(s,e.proxyConfigPath,!0,!0)}function C(e,t,n){let r=[`--yolo`,`--enable`,`hooks`,...l(e)];if(b(e.options.providerArgs)){if(r.push(n,t),e.personaFile){let t=f.readFileSync(e.personaFile,`utf8`);r.push(`-c`,`developer_instructions=${JSON.stringify(t)}`)}e.mcpAllowlist&&r.push(`-c`,`mcp_servers.${i}.args=${JSON.stringify(S(e))}`)}return[...r,...e.options.providerArgs]}function w(e){let t={...e.environment},n=p(`git`,[`-C`,e.options.repoRoot,`remote`,`get-url`,`origin`],{encoding:`utf8`,env:t});return t.CODEX_REPO_ORIGIN=n.status===0?n.stdout.trim():``,t.CODEX_PROFILE_NAMES=e.options.domains.join(`,`),t.CODEX_PLUGIN_DIRS=x(e).join(`,`),t.CODEX_ENABLE_XCODE_MCP=p(`xcrun`,[`mcpbridge`,`--help`],{env:t,stdio:`ignore`}).status===0?`1`:`0`,t}async function T(r){let i=w(r),a=d.join(r.options.repoRoot,...v),c=e(process.execPath,[a,`owner-key`],r.options.repoRoot,i),l=i.HOME;i.CODEX_LEGACY_HOME=l?d.join(l,`.codex`,`agirepo`):void 0,i.CODEX_HOME=l?d.join(l,`.codex`,c):d.join(r.options.repoRoot,`.codex-local`,`state`,c),t(`npx`,[...u(s,r.proxyConfigPath,!0),o],r.options.repoRoot,i);let f=e(process.execPath,[a,`sync`],r.options.repoRoot,i),p=JSON.parse(f);if(typeof p.profileConfigName!=`string`||!_.test(p.profileConfigName))throw Error(`Codex sync returned an invalid profile config name`);let y=e(`codex`,[`--help`],r.options.repoRoot,i).includes(g)?g:h;return n(m,C(r,p.profileConfigName,y),r.options.repoRoot,i)}export{m as CODEX_PROVIDER,C as codexCompatibilityArgs,w as codexEnvironment,x as codexPluginDirectories,T as launchCodex,b as supportsCodexManagedProfile};
|
|
2
|
+
//# sourceMappingURL=codex.mjs.map
|