@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncCommand.cjs","names":["path","HARNESS_STATE_POINTER","loadDoomConfig","DOOMPI_MAJOR_MODE_ENV","DOOMPI_PROFILE_ENV","DOOMPI_DOMAINS_ENV","computeInputsHash","recordResolvedEntries","createLayerResolvers","readPiSettings","serializePiSettings","mergePiSettings","ownEntry","fs","createMapResolvers","selectWorkflowExtensionForProcess","CONTEXT_PACKAGES","PERSONA_ENTRY","filterHookDisabledLayers","assembleExtensions","assembleChildExtensions","extensionSetKey","compileModeExtension","findRepositoryRoot","parseHarnessArgs","readSyncState","syncDirectory","buildHarnessContext","compileResolvedEntries","compileExtensionSet","DEFAULT_THEME_NAME","writeSyncState","writePiSettings","readMcpServerNames"],"sources":["../../src/commands/syncCommand.ts"],"sourcesContent":["import { spawnSync } from 'node:child_process';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport { DOOMPI_DOMAINS_ENV, DOOMPI_MAJOR_MODE_ENV, DOOMPI_PROFILE_ENV } from '../cli/matrixOptions.ts';\nimport { parseHarnessArgs } from '../cli/options.ts';\nimport {\n DEFAULT_THEME_NAME,\n HARNESS_STATE_POINTER,\n loadDomains,\n loadDoomConfig,\n loadHarnessState,\n loadMajorModesConfig,\n} from '../config/index.ts';\nimport type { HarnessOptions } from '../interfaces/index.ts';\nimport {\n assembleChildExtensions,\n assembleExtensions,\n CONTEXT_PACKAGES,\n createLayerResolvers,\n filterHookDisabledLayers,\n PERSONA_ENTRY,\n} from '../services/extensionAssembler.ts';\nimport { compileExtensionSet, compileResolvedEntries, extensionSetKey } from '../services/extensionCompiler.ts';\nimport { buildHarnessContext } from '../services/harnessContext.ts';\nimport { mergePiSettings, readPiSettings, serializePiSettings, writePiSettings } from '../services/piSettings.ts';\nimport { selectWorkflowExtensionForProcess } from '../services/resourceCollector.ts';\nimport { compileModeExtension, type ModeBuildSelection } from '../services/runtimeBundle.ts';\nimport {\n computeInputsHash,\n createMapResolvers,\n readMcpServerNames,\n readSyncState,\n recordResolvedEntries,\n SYNC_STATE_VERSION,\n type SyncSelection,\n type SyncState,\n syncDirectory,\n writeSyncState,\n} from '../services/syncState.ts';\nimport { findRepositoryRoot, ownEntry } from '../utils/index.ts';\n\n/**\n * `doom-pi sync`: resolve the matrix once and write it where plain Pi finds it.\n *\n * The doom-emacs split. Everything that needs a real Node process (module\n * resolution, staging skills and agents, generating the MCP config) happens\n * here, and the doom-pi extension then only reads what this produced. The\n * launcher is untouched and keeps resolving the same matrix per run.\n */\n\nconst SYNC_COMMAND = 'sync';\nconst CHECK_OPTION = '--check';\nconst HARNESS_ROOT_ENV = 'DOOMPI_ROOT';\nconst PERSONA_FILE_ENV = 'DOOMPI_PERSONA_FILE';\nconst HOOK_EMITTER = path.join('tools', 'harness', 'emit-hooks.mjs');\nconst RUN_DIRECTORY = 'run';\n/** Compiled extension bundles, keyed by content hash. */\nconst EXTENSION_CACHE_DIRECTORY = 'cache';\nconst MODE_DIST_DIRECTORY = 'dist';\nconst DOOM_ENTRY = 'doom';\nconst TRUST_ALWAYS = 'always';\nconst NONE = '(none)';\n\n/**\n * Harness variables worth recording, by prefix or exact name.\n *\n * An allowlist rather than the whole environment: the state file is a snapshot\n * of resolved configuration, and dumping `process.env` into it would write\n * every credential the sync happened to run with onto disk.\n */\nconst RECORDED_PREFIXES = ['DOOMPI_'];\nconst RECORDED_KEYS = ['CLAUDE_PROJECT_DIR', 'CODEX_REPO_ROOT', 'ORIGINAL_REPO_PATH', 'MCP_UI_VIEWER'];\n/**\n * Launcher-only values a synced session must not inherit.\n *\n * The child extension list is recomposed on every load, and the subagent binary\n * points at `pi.sh`, which a session started as plain `pi` should not shell out\n * to: Doom Team resolves Pi's own CLI when the variable is absent.\n */\nconst EXCLUDED_KEYS = new Set([\n 'DOOMPI_CHILD_EXTENSIONS',\n 'DOOMPI_COMPOSED',\n 'DOOMPI_MUTE',\n 'DOOMPI_TEMP_DIR',\n // A pointer to the syncing process's own state file. Recording it would hand\n // every later session a path to a state that died with this one.\n HARNESS_STATE_POINTER,\n 'PI_SUBAGENT_PI_BINARY',\n]);\n\ntype SyncOutput = Pick<NodeJS.WritableStream, 'write'>;\n\ninterface BundleContext {\n options: Omit<HarnessOptions, 'repoRoot'>;\n majorModesConfig: Awaited<ReturnType<typeof buildHarnessContext>>['majorModesConfig'];\n environment: NodeJS.ProcessEnv;\n skillPaths: readonly string[];\n pluginRoots: readonly string[];\n}\n\nexport interface SyncResult {\n statePath: string;\n settingsPath: string;\n selection: SyncSelection;\n mcpServers: string[];\n skillCount: number;\n agentCount: number;\n}\n\nexport function recordedEnvironment(environment: NodeJS.ProcessEnv): Record<string, string> {\n const recorded: Record<string, string> = {};\n for (const [key, value] of Object.entries(environment)) {\n if (value === undefined || EXCLUDED_KEYS.has(key)) continue;\n if (RECORDED_KEYS.includes(key) || RECORDED_PREFIXES.some((prefix) => key.startsWith(prefix))) {\n recorded[key] = value;\n }\n }\n return recorded;\n}\n\n/**\n * Layers the repository's declared selection under the usual resolution.\n *\n * `.doom/config.yaml` holds what the repository selects by default, the way\n * init.el does for doom-emacs. Seeding the environment the parser reads keeps\n * the precedence the launcher already documents: an explicit flag wins, then an\n * exported variable, then the declared default.\n */\nexport function selectionEnvironment(repoRoot: string, environment: NodeJS.ProcessEnv): NodeJS.ProcessEnv {\n const { selection } = loadDoomConfig(repoRoot);\n if (!selection) return environment;\n return {\n ...environment,\n ...(selection.majorMode && !environment[DOOMPI_MAJOR_MODE_ENV]\n ? { [DOOMPI_MAJOR_MODE_ENV]: selection.majorMode }\n : {}),\n ...(selection.profile && !environment[DOOMPI_PROFILE_ENV] ? { [DOOMPI_PROFILE_ENV]: selection.profile } : {}),\n ...(selection.domains && environment[DOOMPI_DOMAINS_ENV] === undefined\n ? { [DOOMPI_DOMAINS_ENV]: selection.domains.join(',') }\n : {}),\n };\n}\n\nexport function toSelection(\n options: Pick<HarnessOptions, 'majorMode' | 'domains' | 'profile' | 'preset'>,\n): SyncSelection {\n return {\n majorMode: options.majorMode,\n domains: options.domains,\n profile: options.profile,\n preset: options.preset,\n };\n}\n\n/** Differences between what a sync would produce and what is on disk. */\nexport function collectDrift(repoRoot: string, selection: SyncSelection, state: SyncState | undefined): string[] {\n if (!state) return ['no sync state: run doompi sync'];\n const drift: string[] = [];\n const recorded = state.selection;\n if (\n recorded.majorMode !== selection.majorMode ||\n recorded.profile !== selection.profile ||\n recorded.preset !== selection.preset ||\n recorded.domains.join(',') !== selection.domains.join(',')\n ) {\n drift.push('selection changed since the last sync');\n }\n // Hashed against the recorded selection, not the requested one, so a\n // selection change is reported once rather than as two findings.\n if (computeInputsHash(repoRoot, recorded) !== state.inputsHash) drift.push('.doom configuration changed');\n // Re-resolving is what catches a dependency upgrade moving a package, which\n // the inputs hash deliberately does not read.\n if (\n JSON.stringify(recordResolvedEntries(loadMajorModesConfig(repoRoot), createLayerResolvers(repoRoot))) !==\n JSON.stringify(state.resolved)\n ) {\n drift.push('resolved extension paths changed');\n }\n const settings = readPiSettings(repoRoot);\n const merged = mergePiSettings(settings, repoRoot, {\n extensionEntry: state.bootstrap ?? ownEntry(DOOM_ENTRY),\n themePath: state.baseline.themePath,\n themeName: state.baseline.themeName,\n });\n if (serializePiSettings(merged) !== serializePiSettings(settings)) drift.push('.pi/settings.json is out of date');\n return drift;\n}\n\n/** Regenerates the hook files the other frontends read before any harness code runs. */\nfunction emitFrontendHooks(repoRoot: string, output: SyncOutput): void {\n const emitter = path.join(repoRoot, HOOK_EMITTER);\n if (!fs.existsSync(emitter)) return;\n const result = spawnSync(process.execPath, [emitter, '--write'], { cwd: repoRoot, encoding: 'utf8' });\n if (result.status === 0) {\n output.write('hooks: regenerated for Claude Code and Codex\\n');\n return;\n }\n output.write(`hooks: emit-hooks failed (${result.stderr?.trim() || `exit ${String(result.status)}`})\\n`);\n}\n\nexport function formatSyncResult(result: SyncResult, projectTrust: string): string {\n const { selection } = result;\n return [\n `mode: ${selection.majorMode}`,\n `domains: ${selection.domains.join(', ') || NONE}`,\n `profile: ${selection.profile ?? NONE}`,\n `skills: ${result.skillCount}`,\n `agents: ${result.agentCount}`,\n `mcp: ${result.mcpServers.join(', ') || NONE}`,\n `state: ${result.statePath}`,\n `settings: ${result.settingsPath}`,\n '',\n 'Run pi from the repository root to use it.',\n // projectTrust only reaches Pi as a launcher flag, so a synced session has\n // to be told once that it will be asked.\n ...(projectTrust === TRUST_ALWAYS\n ? ['Pi asks once before loading project extensions: answer yes, or run /trust in the session.']\n : []),\n '',\n ].join('\\n');\n}\n\n/** Precompiles every mode Pi can switch to without restarting. */\nasync function compileModeBundles(\n repoRoot: string,\n context: BundleContext,\n resolved: Record<string, string>,\n compiled: Record<string, string>,\n cacheDirectory: string,\n outputDirectory: string,\n): Promise<Record<string, string>> {\n const bundles: Record<string, string> = {};\n const selectionFor = (majorMode: string, mute: boolean): ModeBuildSelection => ({\n majorMode,\n domains: [...context.options.domains],\n profile: context.options.profile,\n preset: context.options.preset,\n mute,\n autoStop: false,\n agents: context.options.agents,\n mcp: context.options.mcp,\n });\n const planFor = (layers: string[], source: boolean) => {\n const resolvers = createMapResolvers(resolved, source ? undefined : compiled);\n const workflowExtension = selectWorkflowExtensionForProcess(\n resolvers.optionalPackageEntry(CONTEXT_PACKAGES.workflow),\n resolvers.optionalPackageEntry(CONTEXT_PACKAGES.dispatcherWorkflow),\n context.environment,\n );\n return {\n base: {\n agents: context.options.agents,\n autoStop: false,\n preset: context.options.preset,\n mcpEntry: context.options.mcp ? resolvers.optionalPackageEntry(CONTEXT_PACKAGES.mcp) : undefined,\n personaEntry: resolvers.ownEntry(PERSONA_ENTRY),\n workflowExtension,\n majorModesConfig: context.majorModesConfig,\n resolvers,\n },\n layers,\n };\n };\n\n for (const [majorMode, layers] of Object.entries(context.majorModesConfig.majorMode)) {\n const selectedLayers = filterHookDisabledLayers(layers, context.options.hooks);\n for (const mute of [false, true]) {\n const source = planFor(selectedLayers, true);\n const runtime = planFor(selectedLayers, false);\n const sourceEntries = [...assembleExtensions({ ...source.base, layers: source.layers, mute })].reverse();\n const runtimeEntries = [...assembleExtensions({ ...runtime.base, layers: runtime.layers, mute })].reverse();\n const childExtensionPaths = assembleChildExtensions({\n ...source.base,\n layers: source.layers,\n agents: false,\n mute: true,\n });\n const key = extensionSetKey(runtimeEntries);\n try {\n const built = await compileModeExtension({\n repoRoot,\n selection: selectionFor(majorMode, mute),\n extensionPaths: sourceEntries,\n childExtensionPaths,\n skillPaths: context.skillPaths,\n pluginRoots: context.pluginRoots,\n outputName: `${majorMode}${mute ? '.mute' : ''}`,\n cacheDirectory,\n outputDirectory,\n });\n bundles[key] = built.bundle;\n } catch (error) {\n const detail = error instanceof Error ? error.message : String(error);\n process.stderr.write(`[doompi] could not precompile ${majorMode}${mute ? ' (mute)' : ''}: ${detail}\\n`);\n }\n }\n }\n return bundles;\n}\n\n/** Resolves the matrix, stages it into `.pi/doom`, and points Pi at the result. */\nexport class SyncCommand {\n readonly name = SYNC_COMMAND;\n\n matches(args: string[]): boolean {\n return args[0] === this.name;\n }\n\n async execute(\n args: string[],\n environment: NodeJS.ProcessEnv = process.env,\n currentDirectory = process.cwd(),\n output: SyncOutput = process.stdout,\n ): Promise<number> {\n const check = args.includes(CHECK_OPTION);\n const rest = args.slice(1).filter((argument) => argument !== CHECK_OPTION);\n const inheritedRoot = environment[HARNESS_ROOT_ENV];\n const repoRoot = inheritedRoot ? path.resolve(inheritedRoot) : findRepositoryRoot(currentDirectory);\n const defaultMajorMode = loadMajorModesConfig(repoRoot).defaultMajorMode;\n const defaultDomains = loadDomains(repoRoot).defaultDomains;\n const parsed = parseHarnessArgs(\n rest,\n selectionEnvironment(repoRoot, environment),\n currentDirectory,\n defaultMajorMode,\n defaultDomains,\n );\n const selection = toSelection(parsed.options);\n\n if (check) {\n const drift = collectDrift(repoRoot, selection, readSyncState(repoRoot));\n if (drift.length === 0) {\n output.write('doompi sync is up to date\\n');\n return 0;\n }\n output.write(`doompi sync is out of date:\\n${drift.map((entry) => ` ${entry}`).join('\\n')}\\n`);\n return 1;\n }\n\n const result = await this.stage(repoRoot, parsed.options);\n emitFrontendHooks(repoRoot, output);\n output.write(formatSyncResult(result, loadDoomConfig(repoRoot).projectTrust));\n return 0;\n }\n\n private async stage(repoRoot: string, options: Omit<HarnessOptions, 'repoRoot'>): Promise<SyncResult> {\n const directory = syncDirectory(repoRoot);\n // A full regeneration, so nothing a previous selection staged survives. Keep\n // per-session run directories because another Pi session may be using one,\n // and retain content-addressed cache and dist artifacts across selections.\n const preserved = new Set([RUN_DIRECTORY, EXTENSION_CACHE_DIRECTORY, MODE_DIST_DIRECTORY]);\n for (const entry of fs.existsSync(directory) ? fs.readdirSync(directory) : []) {\n if (!preserved.has(entry)) fs.rmSync(path.join(directory, entry), { recursive: true, force: true });\n }\n\n const context = await buildHarnessContext({\n ...options,\n repoRoot,\n // Sync describes the repository, not the directory it was invoked from.\n cwd: repoRoot,\n resourceDirectory: directory,\n });\n const selection = toSelection(options);\n // Pi would otherwise transpile every TypeScript extension through jiti on\n // each launch. Resolution already knows the whole list, so it is bundled to\n // plain ESM once here and imported natively for the rest of its life.\n const resolved = recordResolvedEntries(context.majorModesConfig, createLayerResolvers(repoRoot));\n const cacheDirectory = path.join(directory, EXTENSION_CACHE_DIRECTORY);\n const outputDirectory = path.join(directory, MODE_DIST_DIRECTORY);\n const compiled = await compileResolvedEntries(resolved, cacheDirectory);\n const bundles = await compileModeBundles(\n repoRoot,\n {\n options,\n majorModesConfig: context.majorModesConfig,\n environment: context.environment,\n skillPaths: context.resources.skillDirectories,\n pluginRoots: context.plugins.map((plugin) => plugin.directory),\n },\n resolved,\n compiled,\n cacheDirectory,\n outputDirectory,\n );\n // Pi loads this entry before it can inspect the synced state. Flattening\n // the bootstrap and composer graph removes their module-resolution fanout;\n // it then selects one of the mode bundles above without compiling at run\n // time. The content hash also lets settings replace an upgraded bootstrap\n // atomically on the next sync.\n const bootstrap = await compileExtensionSet([ownEntry(DOOM_ENTRY)], cacheDirectory, {\n outputDirectory,\n outputName: 'bootstrap',\n });\n const state: SyncState = {\n version: SYNC_STATE_VERSION,\n root: repoRoot,\n inputsHash: computeInputsHash(repoRoot, selection),\n selection,\n env: recordedEnvironment(context.environment),\n // Read back from the session file the context just wrote, which is the\n // only place these two live now.\n fileState: {\n profileEnvironment: loadHarnessState(context.environment).state.profileEnvironment,\n pluginHooks: context.resources.pluginHooks,\n },\n resolved,\n compiled,\n bundles,\n bootstrap,\n baseline: {\n mcpConfigPath: context.resources.mcpConfigPath,\n personaFile: context.environment[PERSONA_FILE_ENV],\n themePath: context.defaultThemePath,\n themeName: DEFAULT_THEME_NAME,\n },\n };\n\n return {\n statePath: await writeSyncState(repoRoot, state),\n settingsPath: writePiSettings(repoRoot, {\n extensionEntry: bootstrap,\n themePath: state.baseline.themePath,\n themeName: state.baseline.themeName,\n }),\n selection,\n mcpServers: state.baseline.mcpConfigPath ? readMcpServerNames(state.baseline.mcpConfigPath) : [],\n skillCount: context.resources.skillCount,\n agentCount: context.resources.agentCount,\n };\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"syncCommand.cjs","names":["path","HARNESS_STATE_POINTER","loadDoomConfig","DOOMPI_MAJOR_MODE_ENV","DOOMPI_PROFILE_ENV","DOOMPI_DOMAINS_ENV","syncStateRootMatches","computeInputsHash","os","recordResolvedEntries","createLayerResolvers","piAgentDirectory","piThemeDirectory","DEFAULT_THEME_NAME","readPiSettings","serializePiSettings","mergePiSettings","projectRegistersDoom","DUPLICATE_REGISTRATION_DRIFT","piExtensionAliasIsCurrent","DEFAULT_THEME","fs","findRepositoryRoot","parseHarnessArgs","readLocatedSyncState","acquireSyncLocationLock","resolveSyncLocation","buildHarnessContext","writeSyncState","writePiSettings","writeProjectPiSettings","readMcpServerNames"],"sources":["../../src/commands/syncCommand.ts"],"sourcesContent":["import { spawnSync } from 'node:child_process';\nimport fs from 'node:fs';\nimport os from 'node:os';\nimport path from 'node:path';\nimport { buildHarnessContext } from '../adapters/harnessContext.ts';\nimport { piExtensionAliasIsCurrent, writePiExtensionAlias } from '../adapters/piExtensionAlias.ts';\nimport {\n mergePiSettings,\n piAgentDirectory,\n piThemeDirectory,\n readPiSettings,\n serializePiSettings,\n writePiSettings,\n} from '../adapters/piSettings.ts';\nimport {\n DUPLICATE_REGISTRATION_DRIFT,\n projectRegistersDoom,\n writeProjectPiSettings,\n} from '../adapters/projectPiSettings.ts';\nimport { acquireSyncLocationLock, resolveSyncLocation } from '../adapters/syncLocation.ts';\nimport {\n computeInputsHash,\n readLocatedSyncState,\n readMcpServerNames,\n recordResolvedEntries,\n SYNC_STATE_VERSION,\n type SyncSelection,\n type SyncState,\n syncStateRootMatches,\n writeSyncState,\n} from '../adapters/syncState.ts';\nimport {\n DEFAULT_THEME,\n DEFAULT_THEME_NAME,\n HARNESS_STATE_POINTER,\n loadDomains,\n loadDoomConfig,\n loadHarnessState,\n loadMajorModesConfig,\n writeDefaultTheme,\n} from '../services/config/index.ts';\nimport { createLayerResolvers } from '../services/extensionAssembler.ts';\nimport type { HarnessOptions } from '../types/interfaces/index.ts';\nimport { findRepositoryRoot } from '../utils/index.ts';\nimport { DOOMPI_DOMAINS_ENV, DOOMPI_MAJOR_MODE_ENV, DOOMPI_PROFILE_ENV } from './cli/matrixOptions.ts';\nimport { parseHarnessArgs } from './cli/options.ts';\n\n/**\n * `doom-pi sync`: resolve the matrix once and write it where plain Pi finds it.\n *\n * The doom-emacs split. Everything that needs a real Node process (module\n * resolution, staging skills and agents, generating the MCP config) happens\n * here, and the doom-pi extension then only reads what this produced. The\n * launcher is untouched and keeps resolving the same matrix per run.\n */\n\nconst SYNC_COMMAND = 'sync';\nconst CHECK_OPTION = '--check';\nconst HARNESS_ROOT_ENV = 'DOOMPI_ROOT';\nconst PERSONA_FILE_ENV = 'DOOMPI_PERSONA_FILE';\nconst HOOK_EMITTER = path.join('tools', 'harness', 'emit-hooks.mjs');\nconst RUN_DIRECTORY = 'run';\nconst EXTENSION_CACHE_DIRECTORY = 'cache';\nconst MODE_DIST_DIRECTORY = 'dist';\nconst SYNC_LOCK_FILE = '.sync.lock';\nconst NONE = '(none)';\n\n/**\n * Harness variables worth recording, by prefix or exact name.\n *\n * An allowlist rather than the whole environment: the state file is a snapshot\n * of resolved configuration, and dumping `process.env` into it would write\n * every credential the sync happened to run with onto disk.\n */\nconst RECORDED_PREFIXES = ['DOOMPI_'];\nconst RECORDED_KEYS = ['CLAUDE_PROJECT_DIR', 'CODEX_REPO_ROOT', 'ORIGINAL_REPO_PATH', 'MCP_UI_VIEWER'];\n/**\n * Launcher-only values a synced session must not inherit.\n *\n * The child extension list is recomposed on every load, and the subagent binary\n * points at `pi.sh`, which a session started as plain `pi` should not shell out\n * to: Doom Team resolves Pi's own CLI when the variable is absent.\n */\nconst EXCLUDED_KEYS = new Set([\n 'DOOMPI_CHILD_EXTENSIONS',\n 'DOOMPI_COMPOSED',\n 'DOOMPI_MUTE',\n 'DOOMPI_TEMP_DIR',\n // A pointer to the syncing process's own state file. Recording it would hand\n // every later session a path to a state that died with this one.\n HARNESS_STATE_POINTER,\n 'PI_SUBAGENT_PI_BINARY',\n]);\n\ntype SyncOutput = Pick<NodeJS.WritableStream, 'write'>;\n\nexport type SyncSettingsMode = 'persisted' | 'embedded';\n\nexport interface SyncCommandOptions {\n settingsMode?: SyncSettingsMode;\n /** Test/embedding override; normal CLI execution uses the process home. */\n homeDirectory?: string;\n}\n\nexport interface SyncResult {\n statePath: string;\n /** Omitted when DPI supplies the integration as a process-local overlay. */\n settingsPath?: string;\n /** Set only when the repository still carried its own DoomPi registration. */\n projectSettingsPath?: string;\n selection: SyncSelection;\n mcpServers: string[];\n skillCount: number;\n agentCount: number;\n}\n\nexport function recordedEnvironment(environment: NodeJS.ProcessEnv): Record<string, string> {\n const recorded: Record<string, string> = {};\n for (const [key, value] of Object.entries(environment)) {\n if (value === undefined || EXCLUDED_KEYS.has(key)) continue;\n if (RECORDED_KEYS.includes(key) || RECORDED_PREFIXES.some((prefix) => key.startsWith(prefix))) {\n recorded[key] = value;\n }\n }\n return recorded;\n}\n\n/**\n * Layers the repository's declared selection under the usual resolution.\n *\n * `.doom/config.yaml` holds what the repository selects by default, the way\n * init.el does for doom-emacs. Seeding the environment the parser reads keeps\n * the precedence the launcher already documents: an explicit flag wins, then an\n * exported variable, then the declared default.\n */\nexport function selectionEnvironment(repoRoot: string, environment: NodeJS.ProcessEnv): NodeJS.ProcessEnv {\n const { selection } = loadDoomConfig(repoRoot);\n if (!selection) return environment;\n return {\n ...environment,\n ...(selection.majorMode && !environment[DOOMPI_MAJOR_MODE_ENV]\n ? { [DOOMPI_MAJOR_MODE_ENV]: selection.majorMode }\n : {}),\n ...(selection.profile && !environment[DOOMPI_PROFILE_ENV] ? { [DOOMPI_PROFILE_ENV]: selection.profile } : {}),\n ...(selection.domains && environment[DOOMPI_DOMAINS_ENV] === undefined\n ? { [DOOMPI_DOMAINS_ENV]: selection.domains.join(',') }\n : {}),\n };\n}\n\nexport function toSelection(\n options: Pick<HarnessOptions, 'majorMode' | 'domains' | 'profile' | 'preset'>,\n): SyncSelection {\n return {\n majorMode: options.majorMode,\n domains: options.domains,\n profile: options.profile,\n preset: options.preset,\n };\n}\n\n/** Differences between what a sync would produce and what is on disk. */\nexport function collectDrift(\n repoRoot: string,\n selection: SyncSelection,\n state: SyncState | undefined,\n environment: NodeJS.ProcessEnv = process.env,\n settingsMode: SyncSettingsMode = 'persisted',\n): string[] {\n if (!state) return ['no sync state: run doompi sync'];\n const drift: string[] = [];\n if (!syncStateRootMatches(repoRoot, state.root)) drift.push('sync state belongs to a different repository');\n const recorded = state.selection;\n if (\n recorded.majorMode !== selection.majorMode ||\n recorded.profile !== selection.profile ||\n recorded.preset !== selection.preset ||\n recorded.domains.join(',') !== selection.domains.join(',')\n ) {\n drift.push('selection changed since the last sync');\n }\n // Hashed against the recorded selection, not the requested one, so a\n // selection change is reported once rather than as two findings.\n if (computeInputsHash(repoRoot, recorded, environment.HOME ?? os.homedir()) !== state.inputsHash) {\n drift.push('.doom configuration changed');\n }\n // Re-resolving is what catches a dependency upgrade moving a package, which\n // the inputs hash deliberately does not read.\n if (\n JSON.stringify(recordResolvedEntries(loadMajorModesConfig(repoRoot), createLayerResolvers(repoRoot))) !==\n JSON.stringify(state.resolved)\n ) {\n drift.push('resolved extension paths changed');\n }\n\n const agentDirectory = piAgentDirectory(environment);\n const themePath = path.join(piThemeDirectory(agentDirectory), `${DEFAULT_THEME_NAME}.json`);\n if (settingsMode === 'persisted') {\n const settings = readPiSettings(agentDirectory);\n const merged = mergePiSettings(settings, agentDirectory, { themePath, themeName: DEFAULT_THEME_NAME });\n if (serializePiSettings(merged) !== serializePiSettings(settings)) {\n drift.push('Pi user settings are out of date');\n }\n if (projectRegistersDoom(repoRoot)) drift.push(DUPLICATE_REGISTRATION_DRIFT);\n }\n if (!piExtensionAliasIsCurrent(agentDirectory)) drift.push('Pi user extension alias is out of date');\n const expectedTheme = `${JSON.stringify(DEFAULT_THEME, null, 2)}\\n`;\n if (!fs.existsSync(themePath) || fs.readFileSync(themePath, 'utf8') !== expectedTheme) {\n drift.push('Pi user theme is out of date');\n }\n if (state.baseline.themePath !== themePath || state.baseline.themeName !== DEFAULT_THEME_NAME) {\n drift.push('synced theme location is out of date');\n }\n return drift;\n}\n\n/** Regenerates the hook files the other frontends read before any harness code runs. */\nfunction emitFrontendHooks(repoRoot: string, output: SyncOutput): void {\n const emitter = path.join(repoRoot, HOOK_EMITTER);\n if (!fs.existsSync(emitter)) return;\n const result = spawnSync(process.execPath, [emitter, '--write'], { cwd: repoRoot, encoding: 'utf8' });\n if (result.status === 0) {\n output.write('hooks: regenerated for Claude Code and Codex\\n');\n return;\n }\n output.write(`hooks: emit-hooks failed (${result.stderr?.trim() || `exit ${String(result.status)}`})\\n`);\n}\n\nexport function formatSyncResult(result: SyncResult, runner = 'pi'): string {\n const { selection } = result;\n return [\n `mode: ${selection.majorMode}`,\n `domains: ${selection.domains.join(', ') || NONE}`,\n `profile: ${selection.profile ?? NONE}`,\n `skills: ${result.skillCount}`,\n `agents: ${result.agentCount}`,\n `mcp: ${result.mcpServers.join(', ') || NONE}`,\n `state: ${result.statePath}`,\n ...(result.settingsPath ? [`settings: ${result.settingsPath}`] : []),\n ...(result.projectSettingsPath\n ? [`project: removed duplicate registration from ${result.projectSettingsPath}`]\n : []),\n '',\n `Run ${runner} from the repository root to use it.`,\n '',\n ].join('\\n');\n}\n\n/** Resolves the matrix, stages it into home-scoped worktree storage, and points Pi at the result. */\nexport class SyncCommand {\n readonly name = SYNC_COMMAND;\n private readonly settingsMode: SyncSettingsMode;\n private readonly homeDirectory: string | undefined;\n\n constructor(options: SyncCommandOptions = {}) {\n this.settingsMode = options.settingsMode ?? 'persisted';\n this.homeDirectory = options.homeDirectory;\n }\n\n matches(args: string[]): boolean {\n return args[0] === this.name;\n }\n\n async execute(\n args: string[],\n environment: NodeJS.ProcessEnv = process.env,\n currentDirectory = process.cwd(),\n output: SyncOutput = process.stdout,\n ): Promise<number> {\n const check = args.includes(CHECK_OPTION);\n const rest = args.slice(1).filter((argument) => argument !== CHECK_OPTION);\n const inheritedRoot = environment[HARNESS_ROOT_ENV];\n const repoRoot = inheritedRoot ? path.resolve(inheritedRoot) : findRepositoryRoot(currentDirectory);\n const defaultMajorMode = loadMajorModesConfig(repoRoot).defaultMajorMode;\n const defaultDomains = loadDomains(repoRoot).defaultDomains;\n const parsed = parseHarnessArgs(\n rest,\n selectionEnvironment(repoRoot, environment),\n currentDirectory,\n defaultMajorMode,\n defaultDomains,\n );\n const selection = toSelection(parsed.options);\n const homeDirectory = this.homeDirectory ?? environment.HOME ?? os.homedir();\n\n if (check) {\n let located: ReturnType<typeof readLocatedSyncState>;\n try {\n located = readLocatedSyncState(repoRoot, homeDirectory);\n } catch (error) {\n const detail = error instanceof Error ? error.message : String(error);\n output.write(`doompi sync is out of date:\\n ${detail}\\n`);\n return 1;\n }\n const drift = collectDrift(repoRoot, selection, located?.state, environment, this.settingsMode);\n if (located?.layout === 'legacy') drift.unshift('legacy repository-local sync state requires migration');\n if (drift.length === 0) {\n output.write('doompi sync is up to date\\n');\n return 0;\n }\n output.write(`doompi sync is out of date:\\n${drift.map((entry) => ` ${entry}`).join('\\n')}\\n`);\n return 1;\n }\n\n const releaseLock = await acquireSyncLocationLock(resolveSyncLocation(repoRoot, homeDirectory));\n let result: SyncResult;\n try {\n result = await this.stage(repoRoot, parsed.options, environment, homeDirectory);\n } finally {\n await releaseLock();\n }\n emitFrontendHooks(repoRoot, output);\n output.write(formatSyncResult(result, this.settingsMode === 'embedded' ? 'dpi' : 'pi'));\n return 0;\n }\n\n private async stage(\n repoRoot: string,\n options: Omit<HarnessOptions, 'repoRoot'>,\n environment: NodeJS.ProcessEnv,\n homeDirectory: string,\n ): Promise<SyncResult> {\n const location = resolveSyncLocation(repoRoot, homeDirectory);\n const directory = location.directory;\n // A full regeneration, so nothing a previous selection staged survives. Keep\n // per-session run directories because another Pi session may be using one,\n // and retain content-addressed cache and dist artifacts across selections.\n const preserved = new Set([RUN_DIRECTORY, EXTENSION_CACHE_DIRECTORY, MODE_DIST_DIRECTORY, SYNC_LOCK_FILE]);\n for (const entry of fs.existsSync(directory) ? fs.readdirSync(directory) : []) {\n if (!preserved.has(entry)) fs.rmSync(path.join(directory, entry), { recursive: true, force: true });\n }\n\n const context = await buildHarnessContext({\n ...options,\n repoRoot,\n homeDirectory,\n // Sync describes the repository, not the directory it was invoked from.\n cwd: repoRoot,\n resourceDirectory: directory,\n });\n const selection = toSelection(options);\n const resolved = recordResolvedEntries(context.majorModesConfig, createLayerResolvers(repoRoot));\n const agentDirectory = piAgentDirectory(environment);\n const themeDirectory = piThemeDirectory(agentDirectory);\n await fs.promises.mkdir(themeDirectory, { recursive: true });\n const themePath = await writeDefaultTheme(themeDirectory);\n if (path.resolve(context.defaultThemePath) !== path.resolve(themePath)) {\n await fs.promises.rm(context.defaultThemePath, { force: true });\n }\n const state: SyncState = {\n version: SYNC_STATE_VERSION,\n root: repoRoot,\n identity: location.identity,\n inputsHash: computeInputsHash(repoRoot, selection, homeDirectory),\n selection,\n env: recordedEnvironment(context.environment),\n // Read back from the session file the context just wrote, which is the\n // only place these two live now.\n fileState: {\n profileEnvironment: loadHarnessState(context.environment).state.profileEnvironment,\n pluginHooks: context.resources.pluginHooks,\n },\n resolved,\n baseline: {\n mcpConfigPath: context.resources.mcpConfigPath,\n personaFile: context.environment[PERSONA_FILE_ENV],\n themePath,\n themeName: DEFAULT_THEME_NAME,\n },\n };\n\n const statePath = await writeSyncState(repoRoot, state, homeDirectory);\n writePiExtensionAlias(agentDirectory);\n const settingsPath =\n this.settingsMode === 'persisted'\n ? writePiSettings(agentDirectory, {\n themePath: state.baseline.themePath,\n themeName: state.baseline.themeName,\n })\n : undefined;\n // After the user scope is current, so the repository is only ever stripped\n // of a registration the user scope already provides.\n const projectSettingsPath = this.settingsMode === 'persisted' ? writeProjectPiSettings(repoRoot) : undefined;\n\n return {\n statePath,\n ...(settingsPath ? { settingsPath } : {}),\n ...(projectSettingsPath ? { projectSettingsPath } : {}),\n selection,\n mcpServers: state.baseline.mcpConfigPath ? readMcpServerNames(state.baseline.mcpConfigPath) : [],\n skillCount: context.resources.skillCount,\n agentCount: context.resources.agentCount,\n };\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,11 +1,20 @@
|
|
|
1
|
-
import { HarnessOptions } from "../interfaces/harness.cjs";
|
|
2
|
-
import { SyncSelection, SyncState } from "../
|
|
1
|
+
import { HarnessOptions } from "../types/interfaces/harness.cjs";
|
|
2
|
+
import { SyncSelection, SyncState } from "../adapters/syncState.cjs";
|
|
3
3
|
|
|
4
4
|
//#region src/commands/syncCommand.d.ts
|
|
5
5
|
type SyncOutput = Pick<NodeJS.WritableStream, 'write'>;
|
|
6
|
+
type SyncSettingsMode = 'persisted' | 'embedded';
|
|
7
|
+
interface SyncCommandOptions {
|
|
8
|
+
settingsMode?: SyncSettingsMode;
|
|
9
|
+
/** Test/embedding override; normal CLI execution uses the process home. */
|
|
10
|
+
homeDirectory?: string;
|
|
11
|
+
}
|
|
6
12
|
interface SyncResult {
|
|
7
13
|
statePath: string;
|
|
8
|
-
|
|
14
|
+
/** Omitted when DPI supplies the integration as a process-local overlay. */
|
|
15
|
+
settingsPath?: string;
|
|
16
|
+
/** Set only when the repository still carried its own DoomPi registration. */
|
|
17
|
+
projectSettingsPath?: string;
|
|
9
18
|
selection: SyncSelection;
|
|
10
19
|
mcpServers: string[];
|
|
11
20
|
skillCount: number;
|
|
@@ -23,15 +32,18 @@ declare function recordedEnvironment(environment: NodeJS.ProcessEnv): Record<str
|
|
|
23
32
|
declare function selectionEnvironment(repoRoot: string, environment: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
|
|
24
33
|
declare function toSelection(options: Pick<HarnessOptions, 'majorMode' | 'domains' | 'profile' | 'preset'>): SyncSelection;
|
|
25
34
|
/** Differences between what a sync would produce and what is on disk. */
|
|
26
|
-
declare function collectDrift(repoRoot: string, selection: SyncSelection, state: SyncState | undefined): string[];
|
|
27
|
-
declare function formatSyncResult(result: SyncResult,
|
|
28
|
-
/** Resolves the matrix, stages it into
|
|
35
|
+
declare function collectDrift(repoRoot: string, selection: SyncSelection, state: SyncState | undefined, environment?: NodeJS.ProcessEnv, settingsMode?: SyncSettingsMode): string[];
|
|
36
|
+
declare function formatSyncResult(result: SyncResult, runner?: string): string;
|
|
37
|
+
/** Resolves the matrix, stages it into home-scoped worktree storage, and points Pi at the result. */
|
|
29
38
|
declare class SyncCommand {
|
|
30
39
|
readonly name = "sync";
|
|
40
|
+
private readonly settingsMode;
|
|
41
|
+
private readonly homeDirectory;
|
|
42
|
+
constructor(options?: SyncCommandOptions);
|
|
31
43
|
matches(args: string[]): boolean;
|
|
32
44
|
execute(args: string[], environment?: NodeJS.ProcessEnv, currentDirectory?: string, output?: SyncOutput): Promise<number>;
|
|
33
45
|
private stage;
|
|
34
46
|
}
|
|
35
47
|
//#endregion
|
|
36
|
-
export { SyncCommand, SyncResult, collectDrift, formatSyncResult, recordedEnvironment, selectionEnvironment, toSelection };
|
|
48
|
+
export { SyncCommand, SyncCommandOptions, SyncResult, SyncSettingsMode, collectDrift, formatSyncResult, recordedEnvironment, selectionEnvironment, toSelection };
|
|
37
49
|
//# sourceMappingURL=syncCommand.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncCommand.d.cts","names":[],"sources":["../../src/commands/syncCommand.ts"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"syncCommand.d.cts","names":[],"sources":["../../src/commands/syncCommand.ts"],"mappings":";;;;KA8FK,UAAA,GAAa,IAAA,CAAK,MAAA,CAAO,cAAA;AAAA,KAElB,gBAAA;AAAA,UAEK,kBAAA;EACf,YAAA,GAAe,gBAAA;;EAEf,aAAA;AAAA;AAAA,UAGe,UAAA;EACf,SAAA;EAX0C;EAa1C,YAAA;EAXU;EAaV,mBAAA;EACA,SAAA,EAAW,aAAA;EACX,UAAA;EACA,UAAA;EACA,UAAA;AAAA;AAAA,iBAGc,mBAAA,CAAoB,WAAA,EAAa,MAAA,CAAO,UAAA,GAAa,MAAA;;;;;;;AAZrE;;iBA+BgB,oBAAA,CAAqB,QAAA,UAAkB,WAAA,EAAa,MAAA,CAAO,UAAA,GAAa,MAAA,CAAO,UAAA;AAAA,iBAe/E,WAAA,CACd,OAAA,EAAS,IAAA,CAAK,cAAA,oDACb,aAAA;;iBAUa,YAAA,CACd,QAAA,UACA,SAAA,EAAW,aAAA,EACX,KAAA,EAAO,SAAA,cACP,WAAA,GAAa,MAAA,CAAO,UAAA,EACpB,YAAA,GAAc,gBAAA;AAAA,iBA6DA,gBAAA,CAAiB,MAAA,EAAQ,UAAA,EAAY,MAAA;;cAqBxC,WAAA;EAAA,SACF,IAAA;EAAA,iBACQ,YAAA;EAAA,iBACA,aAAA;cAEL,OAAA,GAAS,kBAAA;EAKrB,OAAA,CAAQ,IAAA;EAIF,OAAA,CACJ,IAAA,YACA,WAAA,GAAa,MAAA,CAAO,UAAA,EACpB,gBAAA,WACA,MAAA,GAAQ,UAAA,GACP,OAAA;EAAA,QAgDW,KAAA;AAAA"}
|
|
@@ -1,11 +1,20 @@
|
|
|
1
|
-
import { HarnessOptions } from "../interfaces/harness.mjs";
|
|
2
|
-
import { SyncSelection, SyncState } from "../
|
|
1
|
+
import { HarnessOptions } from "../types/interfaces/harness.mjs";
|
|
2
|
+
import { SyncSelection, SyncState } from "../adapters/syncState.mjs";
|
|
3
3
|
|
|
4
4
|
//#region src/commands/syncCommand.d.ts
|
|
5
5
|
type SyncOutput = Pick<NodeJS.WritableStream, 'write'>;
|
|
6
|
+
type SyncSettingsMode = 'persisted' | 'embedded';
|
|
7
|
+
interface SyncCommandOptions {
|
|
8
|
+
settingsMode?: SyncSettingsMode;
|
|
9
|
+
/** Test/embedding override; normal CLI execution uses the process home. */
|
|
10
|
+
homeDirectory?: string;
|
|
11
|
+
}
|
|
6
12
|
interface SyncResult {
|
|
7
13
|
statePath: string;
|
|
8
|
-
|
|
14
|
+
/** Omitted when DPI supplies the integration as a process-local overlay. */
|
|
15
|
+
settingsPath?: string;
|
|
16
|
+
/** Set only when the repository still carried its own DoomPi registration. */
|
|
17
|
+
projectSettingsPath?: string;
|
|
9
18
|
selection: SyncSelection;
|
|
10
19
|
mcpServers: string[];
|
|
11
20
|
skillCount: number;
|
|
@@ -23,15 +32,18 @@ declare function recordedEnvironment(environment: NodeJS.ProcessEnv): Record<str
|
|
|
23
32
|
declare function selectionEnvironment(repoRoot: string, environment: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
|
|
24
33
|
declare function toSelection(options: Pick<HarnessOptions, 'majorMode' | 'domains' | 'profile' | 'preset'>): SyncSelection;
|
|
25
34
|
/** Differences between what a sync would produce and what is on disk. */
|
|
26
|
-
declare function collectDrift(repoRoot: string, selection: SyncSelection, state: SyncState | undefined): string[];
|
|
27
|
-
declare function formatSyncResult(result: SyncResult,
|
|
28
|
-
/** Resolves the matrix, stages it into
|
|
35
|
+
declare function collectDrift(repoRoot: string, selection: SyncSelection, state: SyncState | undefined, environment?: NodeJS.ProcessEnv, settingsMode?: SyncSettingsMode): string[];
|
|
36
|
+
declare function formatSyncResult(result: SyncResult, runner?: string): string;
|
|
37
|
+
/** Resolves the matrix, stages it into home-scoped worktree storage, and points Pi at the result. */
|
|
29
38
|
declare class SyncCommand {
|
|
30
39
|
readonly name = "sync";
|
|
40
|
+
private readonly settingsMode;
|
|
41
|
+
private readonly homeDirectory;
|
|
42
|
+
constructor(options?: SyncCommandOptions);
|
|
31
43
|
matches(args: string[]): boolean;
|
|
32
44
|
execute(args: string[], environment?: NodeJS.ProcessEnv, currentDirectory?: string, output?: SyncOutput): Promise<number>;
|
|
33
45
|
private stage;
|
|
34
46
|
}
|
|
35
47
|
//#endregion
|
|
36
|
-
export { SyncCommand, SyncResult, collectDrift, formatSyncResult, recordedEnvironment, selectionEnvironment, toSelection };
|
|
48
|
+
export { SyncCommand, SyncCommandOptions, SyncResult, SyncSettingsMode, collectDrift, formatSyncResult, recordedEnvironment, selectionEnvironment, toSelection };
|
|
37
49
|
//# sourceMappingURL=syncCommand.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncCommand.d.mts","names":[],"sources":["../../src/commands/syncCommand.ts"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"syncCommand.d.mts","names":[],"sources":["../../src/commands/syncCommand.ts"],"mappings":";;;;KA8FK,UAAA,GAAa,IAAA,CAAK,MAAA,CAAO,cAAA;AAAA,KAElB,gBAAA;AAAA,UAEK,kBAAA;EACf,YAAA,GAAe,gBAAA;;EAEf,aAAA;AAAA;AAAA,UAGe,UAAA;EACf,SAAA;EAX0C;EAa1C,YAAA;EAXU;EAaV,mBAAA;EACA,SAAA,EAAW,aAAA;EACX,UAAA;EACA,UAAA;EACA,UAAA;AAAA;AAAA,iBAGc,mBAAA,CAAoB,WAAA,EAAa,MAAA,CAAO,UAAA,GAAa,MAAA;;;;;;;AAZrE;;iBA+BgB,oBAAA,CAAqB,QAAA,UAAkB,WAAA,EAAa,MAAA,CAAO,UAAA,GAAa,MAAA,CAAO,UAAA;AAAA,iBAe/E,WAAA,CACd,OAAA,EAAS,IAAA,CAAK,cAAA,oDACb,aAAA;;iBAUa,YAAA,CACd,QAAA,UACA,SAAA,EAAW,aAAA,EACX,KAAA,EAAO,SAAA,cACP,WAAA,GAAa,MAAA,CAAO,UAAA,EACpB,YAAA,GAAc,gBAAA;AAAA,iBA6DA,gBAAA,CAAiB,MAAA,EAAQ,UAAA,EAAY,MAAA;;cAqBxC,WAAA;EAAA,SACF,IAAA;EAAA,iBACQ,YAAA;EAAA,iBACA,aAAA;cAEL,OAAA,GAAS,kBAAA;EAKrB,OAAA,CAAQ,IAAA;EAIF,OAAA,CACJ,IAAA,YACA,WAAA,GAAa,MAAA,CAAO,UAAA,EACpB,gBAAA,WACA,MAAA,GAAQ,UAAA,GACP,OAAA;EAAA,QAgDW,KAAA;AAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import{
|
|
2
|
-
`);return}t.write(`hooks: emit-hooks failed (${r.stderr?.trim()||`exit ${String(r.status)}`})\n`)}function
|
|
3
|
-
`)}
|
|
4
|
-
`),0):(
|
|
5
|
-
`)}\n`),1)}let _=await this.stage(
|
|
1
|
+
import{findRepositoryRoot as e}from"../adapters/repository/repository.mjs";import{acquireSyncLocationLock as t,resolveSyncLocation as n}from"../adapters/syncLocation.mjs";import"../utils/index.mjs";import{createLayerResolvers as r}from"../services/extensionAssembler.mjs";import"../adapters/syncStateContract.mjs";import{computeInputsHash as i,readLocatedSyncState as a,readMcpServerNames as o,recordResolvedEntries as s,syncStateRootMatches as c,writeSyncState as l}from"../adapters/syncState.mjs";import{DOOMPI_DOMAINS_ENV as u,DOOMPI_MAJOR_MODE_ENV as d,DOOMPI_PROFILE_ENV as f}from"./cli/matrixOptions.mjs";import{parseHarnessArgs as p}from"./cli/options.mjs";import{HARNESS_STATE_POINTER as m,loadHarnessState as h}from"../adapters/config/harnessState.mjs";import{loadDoomConfig as g}from"../services/config/projectTrust.mjs";import{DEFAULT_THEME as _,DEFAULT_THEME_NAME as v,loadDomains as y,loadMajorModesConfig as b,writeDefaultTheme as x}from"../services/config/index.mjs";import{buildHarnessContext as S}from"../adapters/harnessContext.mjs";import{mergePiSettings as C,piAgentDirectory as w,piThemeDirectory as T,readPiSettings as E,serializePiSettings as D,writePiSettings as O}from"../adapters/piSettings.mjs";import{piExtensionAliasIsCurrent as k,writePiExtensionAlias as A}from"../adapters/piExtensionAlias.mjs";import{DUPLICATE_REGISTRATION_DRIFT as j,projectRegistersDoom as M,writeProjectPiSettings as N}from"../adapters/projectPiSettings.mjs";import P from"node:path";import F from"node:fs";import I from"node:os";import{spawnSync as L}from"node:child_process";const R=`--check`,z=P.join(`tools`,`harness`,`emit-hooks.mjs`),B=`(none)`,V=[`DOOMPI_`],H=[`CLAUDE_PROJECT_DIR`,`CODEX_REPO_ROOT`,`ORIGINAL_REPO_PATH`,`MCP_UI_VIEWER`],U=new Set([`DOOMPI_CHILD_EXTENSIONS`,`DOOMPI_COMPOSED`,`DOOMPI_MUTE`,`DOOMPI_TEMP_DIR`,m,`PI_SUBAGENT_PI_BINARY`]);function W(e){let t={};for(let[n,r]of Object.entries(e))r===void 0||U.has(n)||(H.includes(n)||V.some(e=>n.startsWith(e)))&&(t[n]=r);return t}function G(e,t){let{selection:n}=g(e);return n?{...t,...n.majorMode&&!t.DOOMPI_MAJOR_MODE?{[d]:n.majorMode}:{},...n.profile&&!t.DOOMPI_PROFILE?{[f]:n.profile}:{},...n.domains&&t.DOOMPI_DOMAINS===void 0?{[u]:n.domains.join(`,`)}:{}}:t}function K(e){return{majorMode:e.majorMode,domains:e.domains,profile:e.profile,preset:e.preset}}function q(e,t,n,a=process.env,o=`persisted`){if(!n)return[`no sync state: run doompi sync`];let l=[];c(e,n.root)||l.push(`sync state belongs to a different repository`);let u=n.selection;(u.majorMode!==t.majorMode||u.profile!==t.profile||u.preset!==t.preset||u.domains.join(`,`)!==t.domains.join(`,`))&&l.push(`selection changed since the last sync`),i(e,u,a.HOME??I.homedir())!==n.inputsHash&&l.push(`.doom configuration changed`),JSON.stringify(s(b(e),r(e)))!==JSON.stringify(n.resolved)&&l.push(`resolved extension paths changed`);let d=w(a),f=P.join(T(d),`${v}.json`);if(o===`persisted`){let t=E(d);D(C(t,d,{themePath:f,themeName:v}))!==D(t)&&l.push(`Pi user settings are out of date`),M(e)&&l.push(j)}k(d)||l.push(`Pi user extension alias is out of date`);let p=`${JSON.stringify(_,null,2)}\n`;return(!F.existsSync(f)||F.readFileSync(f,`utf8`)!==p)&&l.push(`Pi user theme is out of date`),(n.baseline.themePath!==f||n.baseline.themeName!==v)&&l.push(`synced theme location is out of date`),l}function J(e,t){let n=P.join(e,z);if(!F.existsSync(n))return;let r=L(process.execPath,[n,`--write`],{cwd:e,encoding:`utf8`});if(r.status===0){t.write(`hooks: regenerated for Claude Code and Codex
|
|
2
|
+
`);return}t.write(`hooks: emit-hooks failed (${r.stderr?.trim()||`exit ${String(r.status)}`})\n`)}function Y(e,t=`pi`){let{selection:n}=e;return[`mode: ${n.majorMode}`,`domains: ${n.domains.join(`, `)||B}`,`profile: ${n.profile??B}`,`skills: ${e.skillCount}`,`agents: ${e.agentCount}`,`mcp: ${e.mcpServers.join(`, `)||B}`,`state: ${e.statePath}`,...e.settingsPath?[`settings: ${e.settingsPath}`]:[],...e.projectSettingsPath?[`project: removed duplicate registration from ${e.projectSettingsPath}`]:[],``,`Run ${t} from the repository root to use it.`,``].join(`
|
|
3
|
+
`)}var X=class{name=`sync`;settingsMode;homeDirectory;constructor(e={}){this.settingsMode=e.settingsMode??`persisted`,this.homeDirectory=e.homeDirectory}matches(e){return e[0]===this.name}async execute(r,i=process.env,o=process.cwd(),s=process.stdout){let c=r.includes(R),l=r.slice(1).filter(e=>e!==R),u=i.DOOMPI_ROOT,d=u?P.resolve(u):e(o),f=b(d).defaultMajorMode,m=y(d).defaultDomains,h=p(l,G(d,i),o,f,m),g=K(h.options),_=this.homeDirectory??i.HOME??I.homedir();if(c){let e;try{e=a(d,_)}catch(e){let t=e instanceof Error?e.message:String(e);return s.write(`doompi sync is out of date:\n ${t}\n`),1}let t=q(d,g,e?.state,i,this.settingsMode);return e?.layout===`legacy`&&t.unshift(`legacy repository-local sync state requires migration`),t.length===0?(s.write(`doompi sync is up to date
|
|
4
|
+
`),0):(s.write(`doompi sync is out of date:\n${t.map(e=>` ${e}`).join(`
|
|
5
|
+
`)}\n`),1)}let v=await t(n(d,_)),x;try{x=await this.stage(d,h.options,i,_)}finally{await v()}return J(d,s),s.write(Y(x,this.settingsMode===`embedded`?`dpi`:`pi`)),0}async stage(e,t,a,c){let u=n(e,c),d=u.directory,f=new Set([`run`,`cache`,`dist`,`.sync.lock`]);for(let e of F.existsSync(d)?F.readdirSync(d):[])f.has(e)||F.rmSync(P.join(d,e),{recursive:!0,force:!0});let p=await S({...t,repoRoot:e,homeDirectory:c,cwd:e,resourceDirectory:d}),m=K(t),g=s(p.majorModesConfig,r(e)),_=w(a),y=T(_);await F.promises.mkdir(y,{recursive:!0});let b=await x(y);P.resolve(p.defaultThemePath)!==P.resolve(b)&&await F.promises.rm(p.defaultThemePath,{force:!0});let C={version:9,root:e,identity:u.identity,inputsHash:i(e,m,c),selection:m,env:W(p.environment),fileState:{profileEnvironment:h(p.environment).state.profileEnvironment,pluginHooks:p.resources.pluginHooks},resolved:g,baseline:{mcpConfigPath:p.resources.mcpConfigPath,personaFile:p.environment.DOOMPI_PERSONA_FILE,themePath:b,themeName:v}},E=await l(e,C,c);A(_);let D=this.settingsMode===`persisted`?O(_,{themePath:C.baseline.themePath,themeName:C.baseline.themeName}):void 0,k=this.settingsMode===`persisted`?N(e):void 0;return{statePath:E,...D?{settingsPath:D}:{},...k?{projectSettingsPath:k}:{},selection:m,mcpServers:C.baseline.mcpConfigPath?o(C.baseline.mcpConfigPath):[],skillCount:p.resources.skillCount,agentCount:p.resources.agentCount}}};export{X as SyncCommand,q as collectDrift,Y as formatSyncResult,W as recordedEnvironment,G as selectionEnvironment,K as toSelection};
|
|
6
6
|
//# sourceMappingURL=syncCommand.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncCommand.mjs","names":[],"sources":["../../src/commands/syncCommand.ts"],"sourcesContent":["import { spawnSync } from 'node:child_process';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport { DOOMPI_DOMAINS_ENV, DOOMPI_MAJOR_MODE_ENV, DOOMPI_PROFILE_ENV } from '../cli/matrixOptions.ts';\nimport { parseHarnessArgs } from '../cli/options.ts';\nimport {\n DEFAULT_THEME_NAME,\n HARNESS_STATE_POINTER,\n loadDomains,\n loadDoomConfig,\n loadHarnessState,\n loadMajorModesConfig,\n} from '../config/index.ts';\nimport type { HarnessOptions } from '../interfaces/index.ts';\nimport {\n assembleChildExtensions,\n assembleExtensions,\n CONTEXT_PACKAGES,\n createLayerResolvers,\n filterHookDisabledLayers,\n PERSONA_ENTRY,\n} from '../services/extensionAssembler.ts';\nimport { compileExtensionSet, compileResolvedEntries, extensionSetKey } from '../services/extensionCompiler.ts';\nimport { buildHarnessContext } from '../services/harnessContext.ts';\nimport { mergePiSettings, readPiSettings, serializePiSettings, writePiSettings } from '../services/piSettings.ts';\nimport { selectWorkflowExtensionForProcess } from '../services/resourceCollector.ts';\nimport { compileModeExtension, type ModeBuildSelection } from '../services/runtimeBundle.ts';\nimport {\n computeInputsHash,\n createMapResolvers,\n readMcpServerNames,\n readSyncState,\n recordResolvedEntries,\n SYNC_STATE_VERSION,\n type SyncSelection,\n type SyncState,\n syncDirectory,\n writeSyncState,\n} from '../services/syncState.ts';\nimport { findRepositoryRoot, ownEntry } from '../utils/index.ts';\n\n/**\n * `doom-pi sync`: resolve the matrix once and write it where plain Pi finds it.\n *\n * The doom-emacs split. Everything that needs a real Node process (module\n * resolution, staging skills and agents, generating the MCP config) happens\n * here, and the doom-pi extension then only reads what this produced. The\n * launcher is untouched and keeps resolving the same matrix per run.\n */\n\nconst SYNC_COMMAND = 'sync';\nconst CHECK_OPTION = '--check';\nconst HARNESS_ROOT_ENV = 'DOOMPI_ROOT';\nconst PERSONA_FILE_ENV = 'DOOMPI_PERSONA_FILE';\nconst HOOK_EMITTER = path.join('tools', 'harness', 'emit-hooks.mjs');\nconst RUN_DIRECTORY = 'run';\n/** Compiled extension bundles, keyed by content hash. */\nconst EXTENSION_CACHE_DIRECTORY = 'cache';\nconst MODE_DIST_DIRECTORY = 'dist';\nconst DOOM_ENTRY = 'doom';\nconst TRUST_ALWAYS = 'always';\nconst NONE = '(none)';\n\n/**\n * Harness variables worth recording, by prefix or exact name.\n *\n * An allowlist rather than the whole environment: the state file is a snapshot\n * of resolved configuration, and dumping `process.env` into it would write\n * every credential the sync happened to run with onto disk.\n */\nconst RECORDED_PREFIXES = ['DOOMPI_'];\nconst RECORDED_KEYS = ['CLAUDE_PROJECT_DIR', 'CODEX_REPO_ROOT', 'ORIGINAL_REPO_PATH', 'MCP_UI_VIEWER'];\n/**\n * Launcher-only values a synced session must not inherit.\n *\n * The child extension list is recomposed on every load, and the subagent binary\n * points at `pi.sh`, which a session started as plain `pi` should not shell out\n * to: Doom Team resolves Pi's own CLI when the variable is absent.\n */\nconst EXCLUDED_KEYS = new Set([\n 'DOOMPI_CHILD_EXTENSIONS',\n 'DOOMPI_COMPOSED',\n 'DOOMPI_MUTE',\n 'DOOMPI_TEMP_DIR',\n // A pointer to the syncing process's own state file. Recording it would hand\n // every later session a path to a state that died with this one.\n HARNESS_STATE_POINTER,\n 'PI_SUBAGENT_PI_BINARY',\n]);\n\ntype SyncOutput = Pick<NodeJS.WritableStream, 'write'>;\n\ninterface BundleContext {\n options: Omit<HarnessOptions, 'repoRoot'>;\n majorModesConfig: Awaited<ReturnType<typeof buildHarnessContext>>['majorModesConfig'];\n environment: NodeJS.ProcessEnv;\n skillPaths: readonly string[];\n pluginRoots: readonly string[];\n}\n\nexport interface SyncResult {\n statePath: string;\n settingsPath: string;\n selection: SyncSelection;\n mcpServers: string[];\n skillCount: number;\n agentCount: number;\n}\n\nexport function recordedEnvironment(environment: NodeJS.ProcessEnv): Record<string, string> {\n const recorded: Record<string, string> = {};\n for (const [key, value] of Object.entries(environment)) {\n if (value === undefined || EXCLUDED_KEYS.has(key)) continue;\n if (RECORDED_KEYS.includes(key) || RECORDED_PREFIXES.some((prefix) => key.startsWith(prefix))) {\n recorded[key] = value;\n }\n }\n return recorded;\n}\n\n/**\n * Layers the repository's declared selection under the usual resolution.\n *\n * `.doom/config.yaml` holds what the repository selects by default, the way\n * init.el does for doom-emacs. Seeding the environment the parser reads keeps\n * the precedence the launcher already documents: an explicit flag wins, then an\n * exported variable, then the declared default.\n */\nexport function selectionEnvironment(repoRoot: string, environment: NodeJS.ProcessEnv): NodeJS.ProcessEnv {\n const { selection } = loadDoomConfig(repoRoot);\n if (!selection) return environment;\n return {\n ...environment,\n ...(selection.majorMode && !environment[DOOMPI_MAJOR_MODE_ENV]\n ? { [DOOMPI_MAJOR_MODE_ENV]: selection.majorMode }\n : {}),\n ...(selection.profile && !environment[DOOMPI_PROFILE_ENV] ? { [DOOMPI_PROFILE_ENV]: selection.profile } : {}),\n ...(selection.domains && environment[DOOMPI_DOMAINS_ENV] === undefined\n ? { [DOOMPI_DOMAINS_ENV]: selection.domains.join(',') }\n : {}),\n };\n}\n\nexport function toSelection(\n options: Pick<HarnessOptions, 'majorMode' | 'domains' | 'profile' | 'preset'>,\n): SyncSelection {\n return {\n majorMode: options.majorMode,\n domains: options.domains,\n profile: options.profile,\n preset: options.preset,\n };\n}\n\n/** Differences between what a sync would produce and what is on disk. */\nexport function collectDrift(repoRoot: string, selection: SyncSelection, state: SyncState | undefined): string[] {\n if (!state) return ['no sync state: run doompi sync'];\n const drift: string[] = [];\n const recorded = state.selection;\n if (\n recorded.majorMode !== selection.majorMode ||\n recorded.profile !== selection.profile ||\n recorded.preset !== selection.preset ||\n recorded.domains.join(',') !== selection.domains.join(',')\n ) {\n drift.push('selection changed since the last sync');\n }\n // Hashed against the recorded selection, not the requested one, so a\n // selection change is reported once rather than as two findings.\n if (computeInputsHash(repoRoot, recorded) !== state.inputsHash) drift.push('.doom configuration changed');\n // Re-resolving is what catches a dependency upgrade moving a package, which\n // the inputs hash deliberately does not read.\n if (\n JSON.stringify(recordResolvedEntries(loadMajorModesConfig(repoRoot), createLayerResolvers(repoRoot))) !==\n JSON.stringify(state.resolved)\n ) {\n drift.push('resolved extension paths changed');\n }\n const settings = readPiSettings(repoRoot);\n const merged = mergePiSettings(settings, repoRoot, {\n extensionEntry: state.bootstrap ?? ownEntry(DOOM_ENTRY),\n themePath: state.baseline.themePath,\n themeName: state.baseline.themeName,\n });\n if (serializePiSettings(merged) !== serializePiSettings(settings)) drift.push('.pi/settings.json is out of date');\n return drift;\n}\n\n/** Regenerates the hook files the other frontends read before any harness code runs. */\nfunction emitFrontendHooks(repoRoot: string, output: SyncOutput): void {\n const emitter = path.join(repoRoot, HOOK_EMITTER);\n if (!fs.existsSync(emitter)) return;\n const result = spawnSync(process.execPath, [emitter, '--write'], { cwd: repoRoot, encoding: 'utf8' });\n if (result.status === 0) {\n output.write('hooks: regenerated for Claude Code and Codex\\n');\n return;\n }\n output.write(`hooks: emit-hooks failed (${result.stderr?.trim() || `exit ${String(result.status)}`})\\n`);\n}\n\nexport function formatSyncResult(result: SyncResult, projectTrust: string): string {\n const { selection } = result;\n return [\n `mode: ${selection.majorMode}`,\n `domains: ${selection.domains.join(', ') || NONE}`,\n `profile: ${selection.profile ?? NONE}`,\n `skills: ${result.skillCount}`,\n `agents: ${result.agentCount}`,\n `mcp: ${result.mcpServers.join(', ') || NONE}`,\n `state: ${result.statePath}`,\n `settings: ${result.settingsPath}`,\n '',\n 'Run pi from the repository root to use it.',\n // projectTrust only reaches Pi as a launcher flag, so a synced session has\n // to be told once that it will be asked.\n ...(projectTrust === TRUST_ALWAYS\n ? ['Pi asks once before loading project extensions: answer yes, or run /trust in the session.']\n : []),\n '',\n ].join('\\n');\n}\n\n/** Precompiles every mode Pi can switch to without restarting. */\nasync function compileModeBundles(\n repoRoot: string,\n context: BundleContext,\n resolved: Record<string, string>,\n compiled: Record<string, string>,\n cacheDirectory: string,\n outputDirectory: string,\n): Promise<Record<string, string>> {\n const bundles: Record<string, string> = {};\n const selectionFor = (majorMode: string, mute: boolean): ModeBuildSelection => ({\n majorMode,\n domains: [...context.options.domains],\n profile: context.options.profile,\n preset: context.options.preset,\n mute,\n autoStop: false,\n agents: context.options.agents,\n mcp: context.options.mcp,\n });\n const planFor = (layers: string[], source: boolean) => {\n const resolvers = createMapResolvers(resolved, source ? undefined : compiled);\n const workflowExtension = selectWorkflowExtensionForProcess(\n resolvers.optionalPackageEntry(CONTEXT_PACKAGES.workflow),\n resolvers.optionalPackageEntry(CONTEXT_PACKAGES.dispatcherWorkflow),\n context.environment,\n );\n return {\n base: {\n agents: context.options.agents,\n autoStop: false,\n preset: context.options.preset,\n mcpEntry: context.options.mcp ? resolvers.optionalPackageEntry(CONTEXT_PACKAGES.mcp) : undefined,\n personaEntry: resolvers.ownEntry(PERSONA_ENTRY),\n workflowExtension,\n majorModesConfig: context.majorModesConfig,\n resolvers,\n },\n layers,\n };\n };\n\n for (const [majorMode, layers] of Object.entries(context.majorModesConfig.majorMode)) {\n const selectedLayers = filterHookDisabledLayers(layers, context.options.hooks);\n for (const mute of [false, true]) {\n const source = planFor(selectedLayers, true);\n const runtime = planFor(selectedLayers, false);\n const sourceEntries = [...assembleExtensions({ ...source.base, layers: source.layers, mute })].reverse();\n const runtimeEntries = [...assembleExtensions({ ...runtime.base, layers: runtime.layers, mute })].reverse();\n const childExtensionPaths = assembleChildExtensions({\n ...source.base,\n layers: source.layers,\n agents: false,\n mute: true,\n });\n const key = extensionSetKey(runtimeEntries);\n try {\n const built = await compileModeExtension({\n repoRoot,\n selection: selectionFor(majorMode, mute),\n extensionPaths: sourceEntries,\n childExtensionPaths,\n skillPaths: context.skillPaths,\n pluginRoots: context.pluginRoots,\n outputName: `${majorMode}${mute ? '.mute' : ''}`,\n cacheDirectory,\n outputDirectory,\n });\n bundles[key] = built.bundle;\n } catch (error) {\n const detail = error instanceof Error ? error.message : String(error);\n process.stderr.write(`[doompi] could not precompile ${majorMode}${mute ? ' (mute)' : ''}: ${detail}\\n`);\n }\n }\n }\n return bundles;\n}\n\n/** Resolves the matrix, stages it into `.pi/doom`, and points Pi at the result. */\nexport class SyncCommand {\n readonly name = SYNC_COMMAND;\n\n matches(args: string[]): boolean {\n return args[0] === this.name;\n }\n\n async execute(\n args: string[],\n environment: NodeJS.ProcessEnv = process.env,\n currentDirectory = process.cwd(),\n output: SyncOutput = process.stdout,\n ): Promise<number> {\n const check = args.includes(CHECK_OPTION);\n const rest = args.slice(1).filter((argument) => argument !== CHECK_OPTION);\n const inheritedRoot = environment[HARNESS_ROOT_ENV];\n const repoRoot = inheritedRoot ? path.resolve(inheritedRoot) : findRepositoryRoot(currentDirectory);\n const defaultMajorMode = loadMajorModesConfig(repoRoot).defaultMajorMode;\n const defaultDomains = loadDomains(repoRoot).defaultDomains;\n const parsed = parseHarnessArgs(\n rest,\n selectionEnvironment(repoRoot, environment),\n currentDirectory,\n defaultMajorMode,\n defaultDomains,\n );\n const selection = toSelection(parsed.options);\n\n if (check) {\n const drift = collectDrift(repoRoot, selection, readSyncState(repoRoot));\n if (drift.length === 0) {\n output.write('doompi sync is up to date\\n');\n return 0;\n }\n output.write(`doompi sync is out of date:\\n${drift.map((entry) => ` ${entry}`).join('\\n')}\\n`);\n return 1;\n }\n\n const result = await this.stage(repoRoot, parsed.options);\n emitFrontendHooks(repoRoot, output);\n output.write(formatSyncResult(result, loadDoomConfig(repoRoot).projectTrust));\n return 0;\n }\n\n private async stage(repoRoot: string, options: Omit<HarnessOptions, 'repoRoot'>): Promise<SyncResult> {\n const directory = syncDirectory(repoRoot);\n // A full regeneration, so nothing a previous selection staged survives. Keep\n // per-session run directories because another Pi session may be using one,\n // and retain content-addressed cache and dist artifacts across selections.\n const preserved = new Set([RUN_DIRECTORY, EXTENSION_CACHE_DIRECTORY, MODE_DIST_DIRECTORY]);\n for (const entry of fs.existsSync(directory) ? fs.readdirSync(directory) : []) {\n if (!preserved.has(entry)) fs.rmSync(path.join(directory, entry), { recursive: true, force: true });\n }\n\n const context = await buildHarnessContext({\n ...options,\n repoRoot,\n // Sync describes the repository, not the directory it was invoked from.\n cwd: repoRoot,\n resourceDirectory: directory,\n });\n const selection = toSelection(options);\n // Pi would otherwise transpile every TypeScript extension through jiti on\n // each launch. Resolution already knows the whole list, so it is bundled to\n // plain ESM once here and imported natively for the rest of its life.\n const resolved = recordResolvedEntries(context.majorModesConfig, createLayerResolvers(repoRoot));\n const cacheDirectory = path.join(directory, EXTENSION_CACHE_DIRECTORY);\n const outputDirectory = path.join(directory, MODE_DIST_DIRECTORY);\n const compiled = await compileResolvedEntries(resolved, cacheDirectory);\n const bundles = await compileModeBundles(\n repoRoot,\n {\n options,\n majorModesConfig: context.majorModesConfig,\n environment: context.environment,\n skillPaths: context.resources.skillDirectories,\n pluginRoots: context.plugins.map((plugin) => plugin.directory),\n },\n resolved,\n compiled,\n cacheDirectory,\n outputDirectory,\n );\n // Pi loads this entry before it can inspect the synced state. Flattening\n // the bootstrap and composer graph removes their module-resolution fanout;\n // it then selects one of the mode bundles above without compiling at run\n // time. The content hash also lets settings replace an upgraded bootstrap\n // atomically on the next sync.\n const bootstrap = await compileExtensionSet([ownEntry(DOOM_ENTRY)], cacheDirectory, {\n outputDirectory,\n outputName: 'bootstrap',\n });\n const state: SyncState = {\n version: SYNC_STATE_VERSION,\n root: repoRoot,\n inputsHash: computeInputsHash(repoRoot, selection),\n selection,\n env: recordedEnvironment(context.environment),\n // Read back from the session file the context just wrote, which is the\n // only place these two live now.\n fileState: {\n profileEnvironment: loadHarnessState(context.environment).state.profileEnvironment,\n pluginHooks: context.resources.pluginHooks,\n },\n resolved,\n compiled,\n bundles,\n bootstrap,\n baseline: {\n mcpConfigPath: context.resources.mcpConfigPath,\n personaFile: context.environment[PERSONA_FILE_ENV],\n themePath: context.defaultThemePath,\n themeName: DEFAULT_THEME_NAME,\n },\n };\n\n return {\n statePath: await writeSyncState(repoRoot, state),\n settingsPath: writePiSettings(repoRoot, {\n extensionEntry: bootstrap,\n themePath: state.baseline.themePath,\n themeName: state.baseline.themeName,\n }),\n selection,\n mcpServers: state.baseline.mcpConfigPath ? readMcpServerNames(state.baseline.mcpConfigPath) : [],\n skillCount: context.resources.skillCount,\n agentCount: context.resources.agentCount,\n };\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"syncCommand.mjs","names":[],"sources":["../../src/commands/syncCommand.ts"],"sourcesContent":["import { spawnSync } from 'node:child_process';\nimport fs from 'node:fs';\nimport os from 'node:os';\nimport path from 'node:path';\nimport { buildHarnessContext } from '../adapters/harnessContext.ts';\nimport { piExtensionAliasIsCurrent, writePiExtensionAlias } from '../adapters/piExtensionAlias.ts';\nimport {\n mergePiSettings,\n piAgentDirectory,\n piThemeDirectory,\n readPiSettings,\n serializePiSettings,\n writePiSettings,\n} from '../adapters/piSettings.ts';\nimport {\n DUPLICATE_REGISTRATION_DRIFT,\n projectRegistersDoom,\n writeProjectPiSettings,\n} from '../adapters/projectPiSettings.ts';\nimport { acquireSyncLocationLock, resolveSyncLocation } from '../adapters/syncLocation.ts';\nimport {\n computeInputsHash,\n readLocatedSyncState,\n readMcpServerNames,\n recordResolvedEntries,\n SYNC_STATE_VERSION,\n type SyncSelection,\n type SyncState,\n syncStateRootMatches,\n writeSyncState,\n} from '../adapters/syncState.ts';\nimport {\n DEFAULT_THEME,\n DEFAULT_THEME_NAME,\n HARNESS_STATE_POINTER,\n loadDomains,\n loadDoomConfig,\n loadHarnessState,\n loadMajorModesConfig,\n writeDefaultTheme,\n} from '../services/config/index.ts';\nimport { createLayerResolvers } from '../services/extensionAssembler.ts';\nimport type { HarnessOptions } from '../types/interfaces/index.ts';\nimport { findRepositoryRoot } from '../utils/index.ts';\nimport { DOOMPI_DOMAINS_ENV, DOOMPI_MAJOR_MODE_ENV, DOOMPI_PROFILE_ENV } from './cli/matrixOptions.ts';\nimport { parseHarnessArgs } from './cli/options.ts';\n\n/**\n * `doom-pi sync`: resolve the matrix once and write it where plain Pi finds it.\n *\n * The doom-emacs split. Everything that needs a real Node process (module\n * resolution, staging skills and agents, generating the MCP config) happens\n * here, and the doom-pi extension then only reads what this produced. The\n * launcher is untouched and keeps resolving the same matrix per run.\n */\n\nconst SYNC_COMMAND = 'sync';\nconst CHECK_OPTION = '--check';\nconst HARNESS_ROOT_ENV = 'DOOMPI_ROOT';\nconst PERSONA_FILE_ENV = 'DOOMPI_PERSONA_FILE';\nconst HOOK_EMITTER = path.join('tools', 'harness', 'emit-hooks.mjs');\nconst RUN_DIRECTORY = 'run';\nconst EXTENSION_CACHE_DIRECTORY = 'cache';\nconst MODE_DIST_DIRECTORY = 'dist';\nconst SYNC_LOCK_FILE = '.sync.lock';\nconst NONE = '(none)';\n\n/**\n * Harness variables worth recording, by prefix or exact name.\n *\n * An allowlist rather than the whole environment: the state file is a snapshot\n * of resolved configuration, and dumping `process.env` into it would write\n * every credential the sync happened to run with onto disk.\n */\nconst RECORDED_PREFIXES = ['DOOMPI_'];\nconst RECORDED_KEYS = ['CLAUDE_PROJECT_DIR', 'CODEX_REPO_ROOT', 'ORIGINAL_REPO_PATH', 'MCP_UI_VIEWER'];\n/**\n * Launcher-only values a synced session must not inherit.\n *\n * The child extension list is recomposed on every load, and the subagent binary\n * points at `pi.sh`, which a session started as plain `pi` should not shell out\n * to: Doom Team resolves Pi's own CLI when the variable is absent.\n */\nconst EXCLUDED_KEYS = new Set([\n 'DOOMPI_CHILD_EXTENSIONS',\n 'DOOMPI_COMPOSED',\n 'DOOMPI_MUTE',\n 'DOOMPI_TEMP_DIR',\n // A pointer to the syncing process's own state file. Recording it would hand\n // every later session a path to a state that died with this one.\n HARNESS_STATE_POINTER,\n 'PI_SUBAGENT_PI_BINARY',\n]);\n\ntype SyncOutput = Pick<NodeJS.WritableStream, 'write'>;\n\nexport type SyncSettingsMode = 'persisted' | 'embedded';\n\nexport interface SyncCommandOptions {\n settingsMode?: SyncSettingsMode;\n /** Test/embedding override; normal CLI execution uses the process home. */\n homeDirectory?: string;\n}\n\nexport interface SyncResult {\n statePath: string;\n /** Omitted when DPI supplies the integration as a process-local overlay. */\n settingsPath?: string;\n /** Set only when the repository still carried its own DoomPi registration. */\n projectSettingsPath?: string;\n selection: SyncSelection;\n mcpServers: string[];\n skillCount: number;\n agentCount: number;\n}\n\nexport function recordedEnvironment(environment: NodeJS.ProcessEnv): Record<string, string> {\n const recorded: Record<string, string> = {};\n for (const [key, value] of Object.entries(environment)) {\n if (value === undefined || EXCLUDED_KEYS.has(key)) continue;\n if (RECORDED_KEYS.includes(key) || RECORDED_PREFIXES.some((prefix) => key.startsWith(prefix))) {\n recorded[key] = value;\n }\n }\n return recorded;\n}\n\n/**\n * Layers the repository's declared selection under the usual resolution.\n *\n * `.doom/config.yaml` holds what the repository selects by default, the way\n * init.el does for doom-emacs. Seeding the environment the parser reads keeps\n * the precedence the launcher already documents: an explicit flag wins, then an\n * exported variable, then the declared default.\n */\nexport function selectionEnvironment(repoRoot: string, environment: NodeJS.ProcessEnv): NodeJS.ProcessEnv {\n const { selection } = loadDoomConfig(repoRoot);\n if (!selection) return environment;\n return {\n ...environment,\n ...(selection.majorMode && !environment[DOOMPI_MAJOR_MODE_ENV]\n ? { [DOOMPI_MAJOR_MODE_ENV]: selection.majorMode }\n : {}),\n ...(selection.profile && !environment[DOOMPI_PROFILE_ENV] ? { [DOOMPI_PROFILE_ENV]: selection.profile } : {}),\n ...(selection.domains && environment[DOOMPI_DOMAINS_ENV] === undefined\n ? { [DOOMPI_DOMAINS_ENV]: selection.domains.join(',') }\n : {}),\n };\n}\n\nexport function toSelection(\n options: Pick<HarnessOptions, 'majorMode' | 'domains' | 'profile' | 'preset'>,\n): SyncSelection {\n return {\n majorMode: options.majorMode,\n domains: options.domains,\n profile: options.profile,\n preset: options.preset,\n };\n}\n\n/** Differences between what a sync would produce and what is on disk. */\nexport function collectDrift(\n repoRoot: string,\n selection: SyncSelection,\n state: SyncState | undefined,\n environment: NodeJS.ProcessEnv = process.env,\n settingsMode: SyncSettingsMode = 'persisted',\n): string[] {\n if (!state) return ['no sync state: run doompi sync'];\n const drift: string[] = [];\n if (!syncStateRootMatches(repoRoot, state.root)) drift.push('sync state belongs to a different repository');\n const recorded = state.selection;\n if (\n recorded.majorMode !== selection.majorMode ||\n recorded.profile !== selection.profile ||\n recorded.preset !== selection.preset ||\n recorded.domains.join(',') !== selection.domains.join(',')\n ) {\n drift.push('selection changed since the last sync');\n }\n // Hashed against the recorded selection, not the requested one, so a\n // selection change is reported once rather than as two findings.\n if (computeInputsHash(repoRoot, recorded, environment.HOME ?? os.homedir()) !== state.inputsHash) {\n drift.push('.doom configuration changed');\n }\n // Re-resolving is what catches a dependency upgrade moving a package, which\n // the inputs hash deliberately does not read.\n if (\n JSON.stringify(recordResolvedEntries(loadMajorModesConfig(repoRoot), createLayerResolvers(repoRoot))) !==\n JSON.stringify(state.resolved)\n ) {\n drift.push('resolved extension paths changed');\n }\n\n const agentDirectory = piAgentDirectory(environment);\n const themePath = path.join(piThemeDirectory(agentDirectory), `${DEFAULT_THEME_NAME}.json`);\n if (settingsMode === 'persisted') {\n const settings = readPiSettings(agentDirectory);\n const merged = mergePiSettings(settings, agentDirectory, { themePath, themeName: DEFAULT_THEME_NAME });\n if (serializePiSettings(merged) !== serializePiSettings(settings)) {\n drift.push('Pi user settings are out of date');\n }\n if (projectRegistersDoom(repoRoot)) drift.push(DUPLICATE_REGISTRATION_DRIFT);\n }\n if (!piExtensionAliasIsCurrent(agentDirectory)) drift.push('Pi user extension alias is out of date');\n const expectedTheme = `${JSON.stringify(DEFAULT_THEME, null, 2)}\\n`;\n if (!fs.existsSync(themePath) || fs.readFileSync(themePath, 'utf8') !== expectedTheme) {\n drift.push('Pi user theme is out of date');\n }\n if (state.baseline.themePath !== themePath || state.baseline.themeName !== DEFAULT_THEME_NAME) {\n drift.push('synced theme location is out of date');\n }\n return drift;\n}\n\n/** Regenerates the hook files the other frontends read before any harness code runs. */\nfunction emitFrontendHooks(repoRoot: string, output: SyncOutput): void {\n const emitter = path.join(repoRoot, HOOK_EMITTER);\n if (!fs.existsSync(emitter)) return;\n const result = spawnSync(process.execPath, [emitter, '--write'], { cwd: repoRoot, encoding: 'utf8' });\n if (result.status === 0) {\n output.write('hooks: regenerated for Claude Code and Codex\\n');\n return;\n }\n output.write(`hooks: emit-hooks failed (${result.stderr?.trim() || `exit ${String(result.status)}`})\\n`);\n}\n\nexport function formatSyncResult(result: SyncResult, runner = 'pi'): string {\n const { selection } = result;\n return [\n `mode: ${selection.majorMode}`,\n `domains: ${selection.domains.join(', ') || NONE}`,\n `profile: ${selection.profile ?? NONE}`,\n `skills: ${result.skillCount}`,\n `agents: ${result.agentCount}`,\n `mcp: ${result.mcpServers.join(', ') || NONE}`,\n `state: ${result.statePath}`,\n ...(result.settingsPath ? [`settings: ${result.settingsPath}`] : []),\n ...(result.projectSettingsPath\n ? [`project: removed duplicate registration from ${result.projectSettingsPath}`]\n : []),\n '',\n `Run ${runner} from the repository root to use it.`,\n '',\n ].join('\\n');\n}\n\n/** Resolves the matrix, stages it into home-scoped worktree storage, and points Pi at the result. */\nexport class SyncCommand {\n readonly name = SYNC_COMMAND;\n private readonly settingsMode: SyncSettingsMode;\n private readonly homeDirectory: string | undefined;\n\n constructor(options: SyncCommandOptions = {}) {\n this.settingsMode = options.settingsMode ?? 'persisted';\n this.homeDirectory = options.homeDirectory;\n }\n\n matches(args: string[]): boolean {\n return args[0] === this.name;\n }\n\n async execute(\n args: string[],\n environment: NodeJS.ProcessEnv = process.env,\n currentDirectory = process.cwd(),\n output: SyncOutput = process.stdout,\n ): Promise<number> {\n const check = args.includes(CHECK_OPTION);\n const rest = args.slice(1).filter((argument) => argument !== CHECK_OPTION);\n const inheritedRoot = environment[HARNESS_ROOT_ENV];\n const repoRoot = inheritedRoot ? path.resolve(inheritedRoot) : findRepositoryRoot(currentDirectory);\n const defaultMajorMode = loadMajorModesConfig(repoRoot).defaultMajorMode;\n const defaultDomains = loadDomains(repoRoot).defaultDomains;\n const parsed = parseHarnessArgs(\n rest,\n selectionEnvironment(repoRoot, environment),\n currentDirectory,\n defaultMajorMode,\n defaultDomains,\n );\n const selection = toSelection(parsed.options);\n const homeDirectory = this.homeDirectory ?? environment.HOME ?? os.homedir();\n\n if (check) {\n let located: ReturnType<typeof readLocatedSyncState>;\n try {\n located = readLocatedSyncState(repoRoot, homeDirectory);\n } catch (error) {\n const detail = error instanceof Error ? error.message : String(error);\n output.write(`doompi sync is out of date:\\n ${detail}\\n`);\n return 1;\n }\n const drift = collectDrift(repoRoot, selection, located?.state, environment, this.settingsMode);\n if (located?.layout === 'legacy') drift.unshift('legacy repository-local sync state requires migration');\n if (drift.length === 0) {\n output.write('doompi sync is up to date\\n');\n return 0;\n }\n output.write(`doompi sync is out of date:\\n${drift.map((entry) => ` ${entry}`).join('\\n')}\\n`);\n return 1;\n }\n\n const releaseLock = await acquireSyncLocationLock(resolveSyncLocation(repoRoot, homeDirectory));\n let result: SyncResult;\n try {\n result = await this.stage(repoRoot, parsed.options, environment, homeDirectory);\n } finally {\n await releaseLock();\n }\n emitFrontendHooks(repoRoot, output);\n output.write(formatSyncResult(result, this.settingsMode === 'embedded' ? 'dpi' : 'pi'));\n return 0;\n }\n\n private async stage(\n repoRoot: string,\n options: Omit<HarnessOptions, 'repoRoot'>,\n environment: NodeJS.ProcessEnv,\n homeDirectory: string,\n ): Promise<SyncResult> {\n const location = resolveSyncLocation(repoRoot, homeDirectory);\n const directory = location.directory;\n // A full regeneration, so nothing a previous selection staged survives. Keep\n // per-session run directories because another Pi session may be using one,\n // and retain content-addressed cache and dist artifacts across selections.\n const preserved = new Set([RUN_DIRECTORY, EXTENSION_CACHE_DIRECTORY, MODE_DIST_DIRECTORY, SYNC_LOCK_FILE]);\n for (const entry of fs.existsSync(directory) ? fs.readdirSync(directory) : []) {\n if (!preserved.has(entry)) fs.rmSync(path.join(directory, entry), { recursive: true, force: true });\n }\n\n const context = await buildHarnessContext({\n ...options,\n repoRoot,\n homeDirectory,\n // Sync describes the repository, not the directory it was invoked from.\n cwd: repoRoot,\n resourceDirectory: directory,\n });\n const selection = toSelection(options);\n const resolved = recordResolvedEntries(context.majorModesConfig, createLayerResolvers(repoRoot));\n const agentDirectory = piAgentDirectory(environment);\n const themeDirectory = piThemeDirectory(agentDirectory);\n await fs.promises.mkdir(themeDirectory, { recursive: true });\n const themePath = await writeDefaultTheme(themeDirectory);\n if (path.resolve(context.defaultThemePath) !== path.resolve(themePath)) {\n await fs.promises.rm(context.defaultThemePath, { force: true });\n }\n const state: SyncState = {\n version: SYNC_STATE_VERSION,\n root: repoRoot,\n identity: location.identity,\n inputsHash: computeInputsHash(repoRoot, selection, homeDirectory),\n selection,\n env: recordedEnvironment(context.environment),\n // Read back from the session file the context just wrote, which is the\n // only place these two live now.\n fileState: {\n profileEnvironment: loadHarnessState(context.environment).state.profileEnvironment,\n pluginHooks: context.resources.pluginHooks,\n },\n resolved,\n baseline: {\n mcpConfigPath: context.resources.mcpConfigPath,\n personaFile: context.environment[PERSONA_FILE_ENV],\n themePath,\n themeName: DEFAULT_THEME_NAME,\n },\n };\n\n const statePath = await writeSyncState(repoRoot, state, homeDirectory);\n writePiExtensionAlias(agentDirectory);\n const settingsPath =\n this.settingsMode === 'persisted'\n ? writePiSettings(agentDirectory, {\n themePath: state.baseline.themePath,\n themeName: state.baseline.themeName,\n })\n : undefined;\n // After the user scope is current, so the repository is only ever stripped\n // of a registration the user scope already provides.\n const projectSettingsPath = this.settingsMode === 'persisted' ? writeProjectPiSettings(repoRoot) : undefined;\n\n return {\n statePath,\n ...(settingsPath ? { settingsPath } : {}),\n ...(projectSettingsPath ? { projectSettingsPath } : {}),\n selection,\n mcpServers: state.baseline.mcpConfigPath ? readMcpServerNames(state.baseline.mcpConfigPath) : [],\n skillCount: context.resources.skillCount,\n agentCount: context.resources.agentCount,\n };\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`./syncCommand.cjs`),t=require(`./buildCommand.cjs`),n=`--check`,r={write:()=>!0};var i=class{settingsMode;telemetry;constructor(e={}){this.settingsMode=e.settingsMode??`persisted`,this.telemetry=e.telemetry}async execute(i,a=process.env,o=process.cwd(),s=process.stdout){if(!i.includes(n)){let e=[`build`,...i.slice(1).filter(e=>e!==n)],s=await new t.BuildCommand(this.telemetry).execute(e,a,o,r);if(s!==0)return s}return new e.SyncCommand({settingsMode:this.settingsMode}).execute(i,a,o,s)}};exports.SyncPipeline=i;
|
|
2
|
+
//# sourceMappingURL=syncPipeline.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"syncPipeline.cjs","names":["BuildCommand","SyncCommand"],"sources":["../../src/commands/syncPipeline.ts"],"sourcesContent":["import type { HarnessTelemetry } from '../adapters/telemetry/logSinkTelemetry.ts';\nimport { BuildCommand } from './buildCommand.ts';\nimport { SyncCommand, type SyncSettingsMode } from './syncCommand.ts';\n\nconst CHECK_OPTION = '--check';\n\ntype SyncOutput = Pick<NodeJS.WritableStream, 'write'>;\n\nexport interface SyncPipelineOptions {\n settingsMode?: SyncSettingsMode;\n telemetry?: HarnessTelemetry;\n}\n\nconst DISCARD_BUILD_OUTPUT: SyncOutput = {\n write: () => true,\n};\n\n/** Runs the private cache build before committing the synchronized state. */\nexport class SyncPipeline {\n private readonly settingsMode: SyncSettingsMode;\n private readonly telemetry: HarnessTelemetry | undefined;\n\n constructor(options: SyncPipelineOptions = {}) {\n this.settingsMode = options.settingsMode ?? 'persisted';\n this.telemetry = options.telemetry;\n }\n\n async execute(\n args: string[],\n environment: NodeJS.ProcessEnv = process.env,\n currentDirectory = process.cwd(),\n output: SyncOutput = process.stdout,\n ): Promise<number> {\n if (!args.includes(CHECK_OPTION)) {\n const buildArgs = ['build', ...args.slice(1).filter((argument) => argument !== CHECK_OPTION)];\n const buildCode = await new BuildCommand(this.telemetry).execute(\n buildArgs,\n environment,\n currentDirectory,\n DISCARD_BUILD_OUTPUT,\n );\n if (buildCode !== 0) return buildCode;\n }\n\n return new SyncCommand({ settingsMode: this.settingsMode }).execute(args, environment, currentDirectory, output);\n }\n}\n"],"mappings":"qEAIM,EAAe,UASf,EAAmC,CACvC,UAAa,GACd,CAGD,IAAa,EAAb,KAA0B,CACxB,aACA,UAEA,YAAY,EAA+B,EAAE,CAAE,CAC7C,KAAK,aAAe,EAAQ,cAAgB,YAC5C,KAAK,UAAY,EAAQ,UAG3B,MAAM,QACJ,EACA,EAAiC,QAAQ,IACzC,EAAmB,QAAQ,KAAK,CAChC,EAAqB,QAAQ,OACZ,CACjB,GAAI,CAAC,EAAK,SAAS,EAAa,CAAE,CAChC,IAAM,EAAY,CAAC,QAAS,GAAG,EAAK,MAAM,EAAE,CAAC,OAAQ,GAAa,IAAa,EAAa,CAAC,CACvF,EAAY,MAAM,IAAIA,EAAAA,aAAa,KAAK,UAAU,CAAC,QACvD,EACA,EACA,EACA,EACD,CACD,GAAI,IAAc,EAAG,OAAO,EAG9B,OAAO,IAAIC,EAAAA,YAAY,CAAE,aAAc,KAAK,aAAc,CAAC,CAAC,QAAQ,EAAM,EAAa,EAAkB,EAAO"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{SyncCommand as e}from"./syncCommand.mjs";import{BuildCommand as t}from"./buildCommand.mjs";const n=`--check`,r={write:()=>!0};var i=class{settingsMode;telemetry;constructor(e={}){this.settingsMode=e.settingsMode??`persisted`,this.telemetry=e.telemetry}async execute(i,a=process.env,o=process.cwd(),s=process.stdout){if(!i.includes(n)){let e=[`build`,...i.slice(1).filter(e=>e!==n)],s=await new t(this.telemetry).execute(e,a,o,r);if(s!==0)return s}return new e({settingsMode:this.settingsMode}).execute(i,a,o,s)}};export{i as SyncPipeline};
|
|
2
|
+
//# sourceMappingURL=syncPipeline.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"syncPipeline.mjs","names":[],"sources":["../../src/commands/syncPipeline.ts"],"sourcesContent":["import type { HarnessTelemetry } from '../adapters/telemetry/logSinkTelemetry.ts';\nimport { BuildCommand } from './buildCommand.ts';\nimport { SyncCommand, type SyncSettingsMode } from './syncCommand.ts';\n\nconst CHECK_OPTION = '--check';\n\ntype SyncOutput = Pick<NodeJS.WritableStream, 'write'>;\n\nexport interface SyncPipelineOptions {\n settingsMode?: SyncSettingsMode;\n telemetry?: HarnessTelemetry;\n}\n\nconst DISCARD_BUILD_OUTPUT: SyncOutput = {\n write: () => true,\n};\n\n/** Runs the private cache build before committing the synchronized state. */\nexport class SyncPipeline {\n private readonly settingsMode: SyncSettingsMode;\n private readonly telemetry: HarnessTelemetry | undefined;\n\n constructor(options: SyncPipelineOptions = {}) {\n this.settingsMode = options.settingsMode ?? 'persisted';\n this.telemetry = options.telemetry;\n }\n\n async execute(\n args: string[],\n environment: NodeJS.ProcessEnv = process.env,\n currentDirectory = process.cwd(),\n output: SyncOutput = process.stdout,\n ): Promise<number> {\n if (!args.includes(CHECK_OPTION)) {\n const buildArgs = ['build', ...args.slice(1).filter((argument) => argument !== CHECK_OPTION)];\n const buildCode = await new BuildCommand(this.telemetry).execute(\n buildArgs,\n environment,\n currentDirectory,\n DISCARD_BUILD_OUTPUT,\n );\n if (buildCode !== 0) return buildCode;\n }\n\n return new SyncCommand({ settingsMode: this.settingsMode }).execute(args, environment, currentDirectory, output);\n }\n}\n"],"mappings":"kGAIA,MAAM,EAAe,UASf,EAAmC,CACvC,UAAa,GACd,CAGD,IAAa,EAAb,KAA0B,CACxB,aACA,UAEA,YAAY,EAA+B,EAAE,CAAE,CAC7C,KAAK,aAAe,EAAQ,cAAgB,YAC5C,KAAK,UAAY,EAAQ,UAG3B,MAAM,QACJ,EACA,EAAiC,QAAQ,IACzC,EAAmB,QAAQ,KAAK,CAChC,EAAqB,QAAQ,OACZ,CACjB,GAAI,CAAC,EAAK,SAAS,EAAa,CAAE,CAChC,IAAM,EAAY,CAAC,QAAS,GAAG,EAAK,MAAM,EAAE,CAAC,OAAQ,GAAa,IAAa,EAAa,CAAC,CACvF,EAAY,MAAM,IAAI,EAAa,KAAK,UAAU,CAAC,QACvD,EACA,EACA,EACA,EACD,CACD,GAAI,IAAc,EAAG,OAAO,EAG9B,OAAO,IAAI,EAAY,CAAE,aAAc,KAAK,aAAc,CAAC,CAAC,QAAQ,EAAM,EAAa,EAAkB,EAAO"}
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../
|
|
2
|
-
//# sourceMappingURL=harnessState.cjs.map
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../adapters/config/harnessState.cjs`);let t=require(`@agimon-ai/doompi-config/harnessState`),n=require(`@agimon-ai/doompi-config/harnessStore`);exports.HARNESS_STATE_KEYS=t.HARNESS_STATE_KEYS,exports.HARNESS_STATE_POINTER=n.HARNESS_STATE_POINTER,exports.createHarnessSession=n.createHarnessSession,exports.getHarnessState=e.getHarnessState,exports.harnessRoot=n.harnessRoot,exports.loadHarnessState=n.loadHarnessState,exports.persistHarnessSelection=e.persistHarnessSelection,exports.projectHarnessEnvironment=t.projectHarnessEnvironment,exports.readHarnessState=e.readHarnessState,exports.refreshHarnessState=e.refreshHarnessState,exports.requireHarnessPaths=n.requireHarnessPaths,exports.requireHarnessRoot=n.requireHarnessRoot,exports.resetHarnessStore=n.resetHarnessStore,exports.updateHarnessState=e.updateHarnessState;
|
|
@@ -1,24 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
4
|
-
|
|
5
|
-
//#region src/config/harnessState.d.ts
|
|
6
|
-
declare function readHarnessState(environment?: NodeJS.ProcessEnv, report?: HarnessFailureReporter): HarnessState$1;
|
|
7
|
-
declare function getHarnessState(report?: HarnessFailureReporter): HarnessState$1;
|
|
8
|
-
/**
|
|
9
|
-
* Re-reads the state, dropping what this process had cached.
|
|
10
|
-
*
|
|
11
|
-
* The store caches for the life of a process because nothing else writes the
|
|
12
|
-
* file it owns. A test suite and a Pi reload are the two places that outlive
|
|
13
|
-
* that assumption, so both come through here.
|
|
14
|
-
*/
|
|
15
|
-
declare function refreshHarnessState(report?: HarnessFailureReporter): HarnessState$1;
|
|
16
|
-
declare function updateHarnessState(patch: Partial<HarnessState$1>, environment?: NodeJS.ProcessEnv): HarnessState$1;
|
|
17
|
-
declare function persistHarnessSelection(pi: Pick<ExtensionAPI, 'appendEntry'>, state?: {
|
|
18
|
-
readonly majorMode: string;
|
|
19
|
-
readonly domains: readonly string[];
|
|
20
|
-
readonly profile?: string;
|
|
21
|
-
}): void;
|
|
22
|
-
//#endregion
|
|
23
|
-
export { type DoomHarnessContext, HARNESS_STATE_KEYS, HARNESS_STATE_POINTER, type HarnessState, createHarnessSession, getHarnessState, harnessRoot, loadHarnessState, persistHarnessSelection, projectHarnessEnvironment, readHarnessState, refreshHarnessState, requireHarnessPaths, requireHarnessRoot, resetHarnessStore, updateHarnessState };
|
|
24
|
-
//# sourceMappingURL=harnessState.d.cts.map
|
|
1
|
+
import { DoomHarnessContext, HARNESS_STATE_KEYS, HARNESS_STATE_POINTER, HarnessState, createHarnessSession, getHarnessState, harnessRoot, loadHarnessState, persistHarnessSelection, projectHarnessEnvironment, readHarnessState, refreshHarnessState, requireHarnessPaths, requireHarnessRoot, resetHarnessStore, updateHarnessState } from "../adapters/config/harnessState.cjs";
|
|
2
|
+
export { DoomHarnessContext, HARNESS_STATE_KEYS, HARNESS_STATE_POINTER, HarnessState, createHarnessSession, getHarnessState, harnessRoot, loadHarnessState, persistHarnessSelection, projectHarnessEnvironment, readHarnessState, refreshHarnessState, requireHarnessPaths, requireHarnessRoot, resetHarnessStore, updateHarnessState };
|
|
@@ -1,24 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import { ExtensionAPI } from "@earendil-works/pi-coding-agent";
|
|
4
|
-
|
|
5
|
-
//#region src/config/harnessState.d.ts
|
|
6
|
-
declare function readHarnessState(environment?: NodeJS.ProcessEnv, report?: HarnessFailureReporter): HarnessState$1;
|
|
7
|
-
declare function getHarnessState(report?: HarnessFailureReporter): HarnessState$1;
|
|
8
|
-
/**
|
|
9
|
-
* Re-reads the state, dropping what this process had cached.
|
|
10
|
-
*
|
|
11
|
-
* The store caches for the life of a process because nothing else writes the
|
|
12
|
-
* file it owns. A test suite and a Pi reload are the two places that outlive
|
|
13
|
-
* that assumption, so both come through here.
|
|
14
|
-
*/
|
|
15
|
-
declare function refreshHarnessState(report?: HarnessFailureReporter): HarnessState$1;
|
|
16
|
-
declare function updateHarnessState(patch: Partial<HarnessState$1>, environment?: NodeJS.ProcessEnv): HarnessState$1;
|
|
17
|
-
declare function persistHarnessSelection(pi: Pick<ExtensionAPI, 'appendEntry'>, state?: {
|
|
18
|
-
readonly majorMode: string;
|
|
19
|
-
readonly domains: readonly string[];
|
|
20
|
-
readonly profile?: string;
|
|
21
|
-
}): void;
|
|
22
|
-
//#endregion
|
|
23
|
-
export { type DoomHarnessContext, HARNESS_STATE_KEYS, HARNESS_STATE_POINTER, type HarnessState, createHarnessSession, getHarnessState, harnessRoot, loadHarnessState, persistHarnessSelection, projectHarnessEnvironment, readHarnessState, refreshHarnessState, requireHarnessPaths, requireHarnessRoot, resetHarnessStore, updateHarnessState };
|
|
24
|
-
//# sourceMappingURL=harnessState.d.mts.map
|
|
1
|
+
import { DoomHarnessContext, HARNESS_STATE_KEYS, HARNESS_STATE_POINTER, HarnessState, createHarnessSession, getHarnessState, harnessRoot, loadHarnessState, persistHarnessSelection, projectHarnessEnvironment, readHarnessState, refreshHarnessState, requireHarnessPaths, requireHarnessRoot, resetHarnessStore, updateHarnessState } from "../adapters/config/harnessState.mjs";
|
|
2
|
+
export { DoomHarnessContext, HARNESS_STATE_KEYS, HARNESS_STATE_POINTER, HarnessState, createHarnessSession, getHarnessState, harnessRoot, loadHarnessState, persistHarnessSelection, projectHarnessEnvironment, readHarnessState, refreshHarnessState, requireHarnessPaths, requireHarnessRoot, resetHarnessStore, updateHarnessState };
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
import{
|
|
2
|
-
//# sourceMappingURL=harnessState.mjs.map
|
|
1
|
+
import{HARNESS_STATE_KEYS as e,HARNESS_STATE_POINTER as t,createHarnessSession as n,getHarnessState as r,harnessRoot as i,loadHarnessState as a,persistHarnessSelection as o,projectHarnessEnvironment as s,readHarnessState as c,refreshHarnessState as l,requireHarnessPaths as u,requireHarnessRoot as d,resetHarnessStore as f,updateHarnessState as p}from"../adapters/config/harnessState.mjs";export{e as HARNESS_STATE_KEYS,t as HARNESS_STATE_POINTER,n as createHarnessSession,r as getHarnessState,i as harnessRoot,a as loadHarnessState,o as persistHarnessSelection,s as projectHarnessEnvironment,c as readHarnessState,l as refreshHarnessState,u as requireHarnessPaths,d as requireHarnessRoot,f as resetHarnessStore,p as updateHarnessState};
|
package/dist/config/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`../_virtual/_rolldown/runtime.cjs`);const e=require(
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../adapters/config/harnessState.cjs`),t=require(`../services/config/projectTrust.cjs`);require(`../services/config/index.cjs`);let n=require(`@agimon-ai/doompi-ui/theme`),r=require(`@agimon-ai/doompi-config/domains`),i=require(`@agimon-ai/doompi-config/harnessState`),a=require(`@agimon-ai/doompi-config/harnessStore`),o=require(`@agimon-ai/doompi-config/profiles`),s=require(`@agimon-ai/doompi-config/majorModes`);Object.defineProperty(exports,`DEFAULT_THEME`,{enumerable:!0,get:function(){return n.DEFAULT_THEME}}),Object.defineProperty(exports,`DEFAULT_THEME_NAME`,{enumerable:!0,get:function(){return n.DEFAULT_THEME_NAME}}),Object.defineProperty(exports,`DOOM_DIR`,{enumerable:!0,get:function(){return r.DOOM_DIR}}),exports.HARNESS_STATE_KEYS=i.HARNESS_STATE_KEYS,exports.HARNESS_STATE_POINTER=a.HARNESS_STATE_POINTER,Object.defineProperty(exports,`PERSONA_FILES`,{enumerable:!0,get:function(){return o.PERSONA_FILES}}),Object.defineProperty(exports,`applyProfileEnvironment`,{enumerable:!0,get:function(){return o.applyProfileEnvironment}}),exports.applyProjectTrust=t.applyProjectTrust,Object.defineProperty(exports,`buildPersonaPrompt`,{enumerable:!0,get:function(){return o.buildPersonaPrompt}}),exports.createHarnessSession=a.createHarnessSession,Object.defineProperty(exports,`domainCompletionItems`,{enumerable:!0,get:function(){return r.domainCompletionItems}}),Object.defineProperty(exports,`domainCompletionPrefix`,{enumerable:!0,get:function(){return r.domainCompletionPrefix}}),exports.getHarnessState=e.getHarnessState,exports.harnessRoot=a.harnessRoot,exports.hasProjectTrustOption=t.hasProjectTrustOption,Object.defineProperty(exports,`layerEntries`,{enumerable:!0,get:function(){return s.layerEntries}}),Object.defineProperty(exports,`layerHookGroups`,{enumerable:!0,get:function(){return s.layerHookGroups}}),Object.defineProperty(exports,`listDomainNames`,{enumerable:!0,get:function(){return r.listDomainNames}}),Object.defineProperty(exports,`listProfileNames`,{enumerable:!0,get:function(){return o.listProfileNames}}),Object.defineProperty(exports,`loadDomains`,{enumerable:!0,get:function(){return r.loadDomains}}),exports.loadDoomConfig=t.loadDoomConfig,exports.loadHarnessState=a.loadHarnessState,Object.defineProperty(exports,`loadMajorModesConfig`,{enumerable:!0,get:function(){return s.loadMajorModesConfig}}),Object.defineProperty(exports,`loadProfiles`,{enumerable:!0,get:function(){return o.loadProfiles}}),exports.projectHarnessEnvironment=i.projectHarnessEnvironment,exports.readHarnessState=e.readHarnessState,exports.refreshHarnessState=e.refreshHarnessState,Object.defineProperty(exports,`replaceProfileEnvironment`,{enumerable:!0,get:function(){return o.replaceProfileEnvironment}}),exports.requireHarnessPaths=a.requireHarnessPaths,exports.requireHarnessRoot=a.requireHarnessRoot,exports.resetHarnessStore=a.resetHarnessStore,Object.defineProperty(exports,`resolveLayers`,{enumerable:!0,get:function(){return s.resolveLayers}}),Object.defineProperty(exports,`resolvePackageConfigurations`,{enumerable:!0,get:function(){return s.resolvePackageConfigurations}}),Object.defineProperty(exports,`resolvePluginDirectories`,{enumerable:!0,get:function(){return r.resolvePluginDirectories}}),Object.defineProperty(exports,`resolvePluginEntries`,{enumerable:!0,get:function(){return r.resolvePluginEntries}}),Object.defineProperty(exports,`resolveProfile`,{enumerable:!0,get:function(){return o.resolveProfile}}),Object.defineProperty(exports,`resolveSharedSkills`,{enumerable:!0,get:function(){return r.resolveSharedSkills}}),exports.updateHarnessState=e.updateHarnessState,Object.defineProperty(exports,`writeDefaultTheme`,{enumerable:!0,get:function(){return n.writeDefaultTheme}});
|
package/dist/config/index.d.cts
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { DOOM_DIR, DomainDefinition, DomainManifest, DomainMcpAllowlist, DomainPlugin, PluginEntry, domainCompletionItems, domainCompletionPrefix, listDomainNames, loadDomains, resolvePluginDirectories, resolvePluginEntries, resolveSharedSkills } from "
|
|
4
|
-
|
|
5
|
-
import { LayerDefinition, LayerPackage, LayerResolvers, MajorModesConfig, layerEntries, layerHookGroups, loadMajorModesConfig, resolveLayers } from "@agimon-ai/doompi-config/majorModes";
|
|
6
|
-
import { DEFAULT_THEME, DEFAULT_THEME_NAME, writeDefaultTheme } from "@agimon-ai/doompi-ui/theme";
|
|
7
|
-
export { type AgentProfile, DEFAULT_THEME, DEFAULT_THEME_NAME, DOOM_DIR, type DomainDefinition, type DomainManifest, type DomainMcpAllowlist, type DomainPlugin, type DoomConfig, HARNESS_STATE_KEYS, HARNESS_STATE_POINTER, type HarnessState, type LayerDefinition, type LayerPackage, type LayerResolvers, type MajorModesConfig, PERSONA_FILES, type PluginEntry, type ProjectTrust, applyProfileEnvironment, applyProjectTrust, buildPersonaPrompt, createHarnessSession, domainCompletionItems, domainCompletionPrefix, getHarnessState, harnessRoot, hasProjectTrustOption, layerEntries, layerHookGroups, listDomainNames, listProfileNames, loadDomains, loadDoomConfig, loadHarnessState, loadMajorModesConfig, loadProfiles, projectHarnessEnvironment, readHarnessState, refreshHarnessState, replaceProfileEnvironment, requireHarnessPaths, requireHarnessRoot, resetHarnessStore, resolveLayers, resolvePluginDirectories, resolvePluginEntries, resolveProfile, resolveSharedSkills, updateHarnessState, writeDefaultTheme };
|
|
1
|
+
import { HARNESS_STATE_KEYS, HARNESS_STATE_POINTER, HarnessState, createHarnessSession, getHarnessState, harnessRoot, loadHarnessState, projectHarnessEnvironment, readHarnessState, refreshHarnessState, requireHarnessPaths, requireHarnessRoot, resetHarnessStore, updateHarnessState } from "../adapters/config/harnessState.cjs";
|
|
2
|
+
import { DoomConfig, ProjectTrust, applyProjectTrust, hasProjectTrustOption, loadDoomConfig } from "../services/config/projectTrust.cjs";
|
|
3
|
+
import { AgentProfile, DEFAULT_THEME, DEFAULT_THEME_NAME, DOOM_DIR, DomainDefinition, DomainManifest, DomainMcpAllowlist, DomainPlugin, LayerDefinition, LayerPackage, LayerPackageConfig, LayerResolvers, MajorModesConfig, PERSONA_FILES, PluginEntry, ResolvedPackageConfiguration, applyProfileEnvironment, buildPersonaPrompt, domainCompletionItems, domainCompletionPrefix, layerEntries, layerHookGroups, listDomainNames, listProfileNames, loadDomains, loadMajorModesConfig, loadProfiles, replaceProfileEnvironment, resolveLayers, resolvePackageConfigurations, resolvePluginDirectories, resolvePluginEntries, resolveProfile, resolveSharedSkills, writeDefaultTheme } from "../services/config/index.cjs";
|
|
4
|
+
export { AgentProfile, DEFAULT_THEME, DEFAULT_THEME_NAME, DOOM_DIR, DomainDefinition, DomainManifest, DomainMcpAllowlist, DomainPlugin, DoomConfig, HARNESS_STATE_KEYS, HARNESS_STATE_POINTER, HarnessState, LayerDefinition, LayerPackage, LayerPackageConfig, LayerResolvers, MajorModesConfig, PERSONA_FILES, PluginEntry, ProjectTrust, ResolvedPackageConfiguration, applyProfileEnvironment, applyProjectTrust, buildPersonaPrompt, createHarnessSession, domainCompletionItems, domainCompletionPrefix, getHarnessState, harnessRoot, hasProjectTrustOption, layerEntries, layerHookGroups, listDomainNames, listProfileNames, loadDomains, loadDoomConfig, loadHarnessState, loadMajorModesConfig, loadProfiles, projectHarnessEnvironment, readHarnessState, refreshHarnessState, replaceProfileEnvironment, requireHarnessPaths, requireHarnessRoot, resetHarnessStore, resolveLayers, resolvePackageConfigurations, resolvePluginDirectories, resolvePluginEntries, resolveProfile, resolveSharedSkills, updateHarnessState, writeDefaultTheme };
|
package/dist/config/index.d.mts
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { DOOM_DIR, DomainDefinition, DomainManifest, DomainMcpAllowlist, DomainPlugin, PluginEntry, domainCompletionItems, domainCompletionPrefix, listDomainNames, loadDomains, resolvePluginDirectories, resolvePluginEntries, resolveSharedSkills } from "
|
|
4
|
-
|
|
5
|
-
import { LayerDefinition, LayerPackage, LayerResolvers, MajorModesConfig, layerEntries, layerHookGroups, loadMajorModesConfig, resolveLayers } from "@agimon-ai/doompi-config/majorModes";
|
|
6
|
-
import { DEFAULT_THEME, DEFAULT_THEME_NAME, writeDefaultTheme } from "@agimon-ai/doompi-ui/theme";
|
|
7
|
-
export { type AgentProfile, DEFAULT_THEME, DEFAULT_THEME_NAME, DOOM_DIR, type DomainDefinition, type DomainManifest, type DomainMcpAllowlist, type DomainPlugin, type DoomConfig, HARNESS_STATE_KEYS, HARNESS_STATE_POINTER, type HarnessState, type LayerDefinition, type LayerPackage, type LayerResolvers, type MajorModesConfig, PERSONA_FILES, type PluginEntry, type ProjectTrust, applyProfileEnvironment, applyProjectTrust, buildPersonaPrompt, createHarnessSession, domainCompletionItems, domainCompletionPrefix, getHarnessState, harnessRoot, hasProjectTrustOption, layerEntries, layerHookGroups, listDomainNames, listProfileNames, loadDomains, loadDoomConfig, loadHarnessState, loadMajorModesConfig, loadProfiles, projectHarnessEnvironment, readHarnessState, refreshHarnessState, replaceProfileEnvironment, requireHarnessPaths, requireHarnessRoot, resetHarnessStore, resolveLayers, resolvePluginDirectories, resolvePluginEntries, resolveProfile, resolveSharedSkills, updateHarnessState, writeDefaultTheme };
|
|
1
|
+
import { HARNESS_STATE_KEYS, HARNESS_STATE_POINTER, HarnessState, createHarnessSession, getHarnessState, harnessRoot, loadHarnessState, projectHarnessEnvironment, readHarnessState, refreshHarnessState, requireHarnessPaths, requireHarnessRoot, resetHarnessStore, updateHarnessState } from "../adapters/config/harnessState.mjs";
|
|
2
|
+
import { DoomConfig, ProjectTrust, applyProjectTrust, hasProjectTrustOption, loadDoomConfig } from "../services/config/projectTrust.mjs";
|
|
3
|
+
import { AgentProfile, DEFAULT_THEME, DEFAULT_THEME_NAME, DOOM_DIR, DomainDefinition, DomainManifest, DomainMcpAllowlist, DomainPlugin, LayerDefinition, LayerPackage, LayerPackageConfig, LayerResolvers, MajorModesConfig, PERSONA_FILES, PluginEntry, ResolvedPackageConfiguration, applyProfileEnvironment, buildPersonaPrompt, domainCompletionItems, domainCompletionPrefix, layerEntries, layerHookGroups, listDomainNames, listProfileNames, loadDomains, loadMajorModesConfig, loadProfiles, replaceProfileEnvironment, resolveLayers, resolvePackageConfigurations, resolvePluginDirectories, resolvePluginEntries, resolveProfile, resolveSharedSkills, writeDefaultTheme } from "../services/config/index.mjs";
|
|
4
|
+
export { AgentProfile, DEFAULT_THEME, DEFAULT_THEME_NAME, DOOM_DIR, DomainDefinition, DomainManifest, DomainMcpAllowlist, DomainPlugin, DoomConfig, HARNESS_STATE_KEYS, HARNESS_STATE_POINTER, HarnessState, LayerDefinition, LayerPackage, LayerPackageConfig, LayerResolvers, MajorModesConfig, PERSONA_FILES, PluginEntry, ProjectTrust, ResolvedPackageConfiguration, applyProfileEnvironment, applyProjectTrust, buildPersonaPrompt, createHarnessSession, domainCompletionItems, domainCompletionPrefix, getHarnessState, harnessRoot, hasProjectTrustOption, layerEntries, layerHookGroups, listDomainNames, listProfileNames, loadDomains, loadDoomConfig, loadHarnessState, loadMajorModesConfig, loadProfiles, projectHarnessEnvironment, readHarnessState, refreshHarnessState, replaceProfileEnvironment, requireHarnessPaths, requireHarnessRoot, resetHarnessStore, resolveLayers, resolvePackageConfigurations, resolvePluginDirectories, resolvePluginEntries, resolveProfile, resolveSharedSkills, updateHarnessState, writeDefaultTheme };
|
package/dist/config/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{HARNESS_STATE_KEYS as e,HARNESS_STATE_POINTER as t,createHarnessSession as n,getHarnessState as r,harnessRoot as i,loadHarnessState as a,projectHarnessEnvironment as o,readHarnessState as s,refreshHarnessState as c,requireHarnessPaths as l,requireHarnessRoot as u,resetHarnessStore as d,updateHarnessState as f}from"../adapters/config/harnessState.mjs";import{applyProjectTrust as p,hasProjectTrustOption as m,loadDoomConfig as h}from"../services/config/projectTrust.mjs";import{DEFAULT_THEME as g,DEFAULT_THEME_NAME as _,DOOM_DIR as v,PERSONA_FILES as y,applyProfileEnvironment as b,buildPersonaPrompt as x,domainCompletionItems as S,domainCompletionPrefix as C,layerEntries as w,layerHookGroups as T,listDomainNames as E,listProfileNames as D,loadDomains as O,loadMajorModesConfig as k,loadProfiles as A,replaceProfileEnvironment as j,resolveLayers as M,resolvePackageConfigurations as N,resolvePluginDirectories as P,resolvePluginEntries as F,resolveProfile as I,resolveSharedSkills as L,writeDefaultTheme as R}from"../services/config/index.mjs";export{g as DEFAULT_THEME,_ as DEFAULT_THEME_NAME,v as DOOM_DIR,e as HARNESS_STATE_KEYS,t as HARNESS_STATE_POINTER,y as PERSONA_FILES,b as applyProfileEnvironment,p as applyProjectTrust,x as buildPersonaPrompt,n as createHarnessSession,S as domainCompletionItems,C as domainCompletionPrefix,r as getHarnessState,i as harnessRoot,m as hasProjectTrustOption,w as layerEntries,T as layerHookGroups,E as listDomainNames,D as listProfileNames,O as loadDomains,h as loadDoomConfig,a as loadHarnessState,k as loadMajorModesConfig,A as loadProfiles,o as projectHarnessEnvironment,s as readHarnessState,c as refreshHarnessState,j as replaceProfileEnvironment,l as requireHarnessPaths,u as requireHarnessRoot,d as resetHarnessStore,M as resolveLayers,N as resolvePackageConfigurations,P as resolvePluginDirectories,F as resolvePluginEntries,I as resolveProfile,L as resolveSharedSkills,f as updateHarnessState,R as writeDefaultTheme};
|