@amsterdamdatalabs/enact-factory 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +674 -0
- package/README.md +566 -0
- package/dist/adapters/agenticLoop.d.ts +90 -0
- package/dist/adapters/agenticLoop.d.ts.map +1 -0
- package/dist/adapters/agenticLoop.js +219 -0
- package/dist/adapters/agenticLoop.js.map +1 -0
- package/dist/adapters/base.d.ts +16 -0
- package/dist/adapters/base.d.ts.map +1 -0
- package/dist/adapters/base.js +135 -0
- package/dist/adapters/base.js.map +1 -0
- package/dist/adapters/claude.d.ts +13 -0
- package/dist/adapters/claude.d.ts.map +1 -0
- package/dist/adapters/claude.js +318 -0
- package/dist/adapters/claude.js.map +1 -0
- package/dist/adapters/codex.d.ts +14 -0
- package/dist/adapters/codex.d.ts.map +1 -0
- package/dist/adapters/codex.js +366 -0
- package/dist/adapters/codex.js.map +1 -0
- package/dist/adapters/cryptoQuantAdapter.d.ts +85 -0
- package/dist/adapters/cryptoQuantAdapter.d.ts.map +1 -0
- package/dist/adapters/cryptoQuantAdapter.js +238 -0
- package/dist/adapters/cryptoQuantAdapter.js.map +1 -0
- package/dist/adapters/cursor.d.ts +13 -0
- package/dist/adapters/cursor.d.ts.map +1 -0
- package/dist/adapters/cursor.js +300 -0
- package/dist/adapters/cursor.js.map +1 -0
- package/dist/adapters/envPath.d.ts +20 -0
- package/dist/adapters/envPath.d.ts.map +1 -0
- package/dist/adapters/envPath.js +49 -0
- package/dist/adapters/envPath.js.map +1 -0
- package/dist/adapters/hermes.d.ts +13 -0
- package/dist/adapters/hermes.d.ts.map +1 -0
- package/dist/adapters/hermes.js +283 -0
- package/dist/adapters/hermes.js.map +1 -0
- package/dist/adapters/index.d.ts +18 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +56 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/opencode.d.ts +13 -0
- package/dist/adapters/opencode.d.ts.map +1 -0
- package/dist/adapters/opencode.js +282 -0
- package/dist/adapters/opencode.js.map +1 -0
- package/dist/adapters/processRegistry.d.ts +38 -0
- package/dist/adapters/processRegistry.d.ts.map +1 -0
- package/dist/adapters/processRegistry.js +147 -0
- package/dist/adapters/processRegistry.js.map +1 -0
- package/dist/adapters/responses.d.ts +16 -0
- package/dist/adapters/responses.d.ts.map +1 -0
- package/dist/adapters/responses.js +244 -0
- package/dist/adapters/responses.js.map +1 -0
- package/dist/adapters/streamBuffer.d.ts +59 -0
- package/dist/adapters/streamBuffer.d.ts.map +1 -0
- package/dist/adapters/streamBuffer.js +123 -0
- package/dist/adapters/streamBuffer.js.map +1 -0
- package/dist/adapters/tools.d.ts +30 -0
- package/dist/adapters/tools.d.ts.map +1 -0
- package/dist/adapters/tools.js +219 -0
- package/dist/adapters/tools.js.map +1 -0
- package/dist/adapters/types.d.ts +82 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/adapters/types.js +6 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/agents/agentBus.d.ts +160 -0
- package/dist/agents/agentBus.d.ts.map +1 -0
- package/dist/agents/agentBus.js +350 -0
- package/dist/agents/agentBus.js.map +1 -0
- package/dist/agents/agentPair.d.ts +215 -0
- package/dist/agents/agentPair.d.ts.map +1 -0
- package/dist/agents/agentPair.js +456 -0
- package/dist/agents/agentPair.js.map +1 -0
- package/dist/agents/auditor.d.ts +27 -0
- package/dist/agents/auditor.d.ts.map +1 -0
- package/dist/agents/auditor.js +238 -0
- package/dist/agents/auditor.js.map +1 -0
- package/dist/agents/cliStreamParser.d.ts +18 -0
- package/dist/agents/cliStreamParser.d.ts.map +1 -0
- package/dist/agents/cliStreamParser.js +156 -0
- package/dist/agents/cliStreamParser.js.map +1 -0
- package/dist/agents/documenter.d.ts +31 -0
- package/dist/agents/documenter.d.ts.map +1 -0
- package/dist/agents/documenter.js +286 -0
- package/dist/agents/documenter.js.map +1 -0
- package/dist/agents/draftAnalyzer.d.ts +50 -0
- package/dist/agents/draftAnalyzer.d.ts.map +1 -0
- package/dist/agents/draftAnalyzer.js +289 -0
- package/dist/agents/draftAnalyzer.js.map +1 -0
- package/dist/agents/evaluator.d.ts +61 -0
- package/dist/agents/evaluator.d.ts.map +1 -0
- package/dist/agents/evaluator.js +338 -0
- package/dist/agents/evaluator.js.map +1 -0
- package/dist/agents/executor.d.ts +33 -0
- package/dist/agents/executor.d.ts.map +1 -0
- package/dist/agents/executor.js +130 -0
- package/dist/agents/executor.js.map +1 -0
- package/dist/agents/index.d.ts +10 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +10 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/pairMetrics.d.ts +63 -0
- package/dist/agents/pairMetrics.d.ts.map +1 -0
- package/dist/agents/pairMetrics.js +232 -0
- package/dist/agents/pairMetrics.js.map +1 -0
- package/dist/agents/pairPipeline.d.ts +184 -0
- package/dist/agents/pairPipeline.d.ts.map +1 -0
- package/dist/agents/pairPipeline.js +934 -0
- package/dist/agents/pairPipeline.js.map +1 -0
- package/dist/agents/pairWebhook.d.ts +59 -0
- package/dist/agents/pairWebhook.d.ts.map +1 -0
- package/dist/agents/pairWebhook.js +242 -0
- package/dist/agents/pairWebhook.js.map +1 -0
- package/dist/agents/pipelineFormat.d.ts +8 -0
- package/dist/agents/pipelineFormat.d.ts.map +1 -0
- package/dist/agents/pipelineFormat.js +65 -0
- package/dist/agents/pipelineFormat.js.map +1 -0
- package/dist/agents/pipelineGuards.d.ts +23 -0
- package/dist/agents/pipelineGuards.d.ts.map +1 -0
- package/dist/agents/pipelineGuards.js +257 -0
- package/dist/agents/pipelineGuards.js.map +1 -0
- package/dist/agents/reviewer.d.ts +37 -0
- package/dist/agents/reviewer.d.ts.map +1 -0
- package/dist/agents/reviewer.js +214 -0
- package/dist/agents/reviewer.js.map +1 -0
- package/dist/agents/skillDocumenter.d.ts +23 -0
- package/dist/agents/skillDocumenter.d.ts.map +1 -0
- package/dist/agents/skillDocumenter.js +219 -0
- package/dist/agents/skillDocumenter.js.map +1 -0
- package/dist/agents/tester.d.ts +37 -0
- package/dist/agents/tester.d.ts.map +1 -0
- package/dist/agents/tester.js +309 -0
- package/dist/agents/tester.js.map +1 -0
- package/dist/automation/autonomousRunner.d.ts +145 -0
- package/dist/automation/autonomousRunner.d.ts.map +1 -0
- package/dist/automation/autonomousRunner.js +1272 -0
- package/dist/automation/autonomousRunner.js.map +1 -0
- package/dist/automation/dailyReporter.d.ts +26 -0
- package/dist/automation/dailyReporter.d.ts.map +1 -0
- package/dist/automation/dailyReporter.js +130 -0
- package/dist/automation/dailyReporter.js.map +1 -0
- package/dist/automation/index.d.ts +5 -0
- package/dist/automation/index.d.ts.map +1 -0
- package/dist/automation/index.js +5 -0
- package/dist/automation/index.js.map +1 -0
- package/dist/automation/longRunningMonitor.d.ts +26 -0
- package/dist/automation/longRunningMonitor.d.ts.map +1 -0
- package/dist/automation/longRunningMonitor.js +356 -0
- package/dist/automation/longRunningMonitor.js.map +1 -0
- package/dist/automation/prOwnership.d.ts +18 -0
- package/dist/automation/prOwnership.d.ts.map +1 -0
- package/dist/automation/prOwnership.js +61 -0
- package/dist/automation/prOwnership.js.map +1 -0
- package/dist/automation/runnerExecution.d.ts +57 -0
- package/dist/automation/runnerExecution.d.ts.map +1 -0
- package/dist/automation/runnerExecution.js +701 -0
- package/dist/automation/runnerExecution.js.map +1 -0
- package/dist/automation/runnerState.d.ts +170 -0
- package/dist/automation/runnerState.d.ts.map +1 -0
- package/dist/automation/runnerState.js +496 -0
- package/dist/automation/runnerState.js.map +1 -0
- package/dist/automation/runnerTypes.d.ts +57 -0
- package/dist/automation/runnerTypes.d.ts.map +1 -0
- package/dist/automation/runnerTypes.js +5 -0
- package/dist/automation/runnerTypes.js.map +1 -0
- package/dist/automation/scheduler.d.ts +75 -0
- package/dist/automation/scheduler.d.ts.map +1 -0
- package/dist/automation/scheduler.js +402 -0
- package/dist/automation/scheduler.js.map +1 -0
- package/dist/azdo/azdo.d.ts +70 -0
- package/dist/azdo/azdo.d.ts.map +1 -0
- package/dist/azdo/azdo.js +328 -0
- package/dist/azdo/azdo.js.map +1 -0
- package/dist/azdo/index.d.ts +3 -0
- package/dist/azdo/index.d.ts.map +1 -0
- package/dist/azdo/index.js +3 -0
- package/dist/azdo/index.js.map +1 -0
- package/dist/azdo/projectUpdater.d.ts +13 -0
- package/dist/azdo/projectUpdater.d.ts.map +1 -0
- package/dist/azdo/projectUpdater.js +155 -0
- package/dist/azdo/projectUpdater.js.map +1 -0
- package/dist/azureDevOps/client.d.ts +75 -0
- package/dist/azureDevOps/client.d.ts.map +1 -0
- package/dist/azureDevOps/client.js +150 -0
- package/dist/azureDevOps/client.js.map +1 -0
- package/dist/azureDevOps/hierarchy.d.ts +119 -0
- package/dist/azureDevOps/hierarchy.d.ts.map +1 -0
- package/dist/azureDevOps/hierarchy.js +470 -0
- package/dist/azureDevOps/hierarchy.js.map +1 -0
- package/dist/azureDevOps/mapper.d.ts +101 -0
- package/dist/azureDevOps/mapper.d.ts.map +1 -0
- package/dist/azureDevOps/mapper.js +438 -0
- package/dist/azureDevOps/mapper.js.map +1 -0
- package/dist/azureDevOps/stateMapping.d.ts +15 -0
- package/dist/azureDevOps/stateMapping.d.ts.map +1 -0
- package/dist/azureDevOps/stateMapping.js +141 -0
- package/dist/azureDevOps/stateMapping.js.map +1 -0
- package/dist/cli/authHandler.d.ts +13 -0
- package/dist/cli/authHandler.d.ts.map +1 -0
- package/dist/cli/authHandler.js +70 -0
- package/dist/cli/authHandler.js.map +1 -0
- package/dist/cli/checkHandler.d.ts +27 -0
- package/dist/cli/checkHandler.d.ts.map +1 -0
- package/dist/cli/checkHandler.js +560 -0
- package/dist/cli/checkHandler.js.map +1 -0
- package/dist/cli/daemon.d.ts +30 -0
- package/dist/cli/daemon.d.ts.map +1 -0
- package/dist/cli/daemon.js +141 -0
- package/dist/cli/daemon.js.map +1 -0
- package/dist/cli/factoryCommands.d.ts +3 -0
- package/dist/cli/factoryCommands.d.ts.map +1 -0
- package/dist/cli/factoryCommands.js +165 -0
- package/dist/cli/factoryCommands.js.map +1 -0
- package/dist/cli/promptHandler.d.ts +13 -0
- package/dist/cli/promptHandler.d.ts.map +1 -0
- package/dist/cli/promptHandler.js +193 -0
- package/dist/cli/promptHandler.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +320 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/agentLifecycle.d.ts +322 -0
- package/dist/core/agentLifecycle.d.ts.map +1 -0
- package/dist/core/agentLifecycle.js +230 -0
- package/dist/core/agentLifecycle.js.map +1 -0
- package/dist/core/areaMapping.d.ts +9 -0
- package/dist/core/areaMapping.d.ts.map +1 -0
- package/dist/core/areaMapping.js +37 -0
- package/dist/core/areaMapping.js.map +1 -0
- package/dist/core/config.d.ts +469 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +780 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/dashboardContract.d.ts +204 -0
- package/dist/core/dashboardContract.d.ts.map +1 -0
- package/dist/core/dashboardContract.js +205 -0
- package/dist/core/dashboardContract.js.map +1 -0
- package/dist/core/devopsModel.d.ts +138 -0
- package/dist/core/devopsModel.d.ts.map +1 -0
- package/dist/core/devopsModel.js +137 -0
- package/dist/core/devopsModel.js.map +1 -0
- package/dist/core/envFile.d.ts +11 -0
- package/dist/core/envFile.d.ts.map +1 -0
- package/dist/core/envFile.js +104 -0
- package/dist/core/envFile.js.map +1 -0
- package/dist/core/eventHub.d.ts +220 -0
- package/dist/core/eventHub.d.ts.map +1 -0
- package/dist/core/eventHub.js +136 -0
- package/dist/core/eventHub.js.map +1 -0
- package/dist/core/index.d.ts +8 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +7 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/laneExecutionState.d.ts +29 -0
- package/dist/core/laneExecutionState.d.ts.map +1 -0
- package/dist/core/laneExecutionState.js +18 -0
- package/dist/core/laneExecutionState.js.map +1 -0
- package/dist/core/laneStatus.d.ts +49 -0
- package/dist/core/laneStatus.d.ts.map +1 -0
- package/dist/core/laneStatus.js +153 -0
- package/dist/core/laneStatus.js.map +1 -0
- package/dist/core/prSidecar.d.ts +96 -0
- package/dist/core/prSidecar.d.ts.map +1 -0
- package/dist/core/prSidecar.js +33 -0
- package/dist/core/prSidecar.js.map +1 -0
- package/dist/core/runtimeConfig.d.ts +6 -0
- package/dist/core/runtimeConfig.d.ts.map +1 -0
- package/dist/core/runtimeConfig.js +24 -0
- package/dist/core/runtimeConfig.js.map +1 -0
- package/dist/core/scmProvider.d.ts +19 -0
- package/dist/core/scmProvider.d.ts.map +1 -0
- package/dist/core/scmProvider.js +38 -0
- package/dist/core/scmProvider.js.map +1 -0
- package/dist/core/service.d.ts +10 -0
- package/dist/core/service.d.ts.map +1 -0
- package/dist/core/service.js +297 -0
- package/dist/core/service.js.map +1 -0
- package/dist/core/traceCollector.d.ts +105 -0
- package/dist/core/traceCollector.d.ts.map +1 -0
- package/dist/core/traceCollector.js +141 -0
- package/dist/core/traceCollector.js.map +1 -0
- package/dist/core/types.d.ts +432 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +2 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/workItemMapper.d.ts +39 -0
- package/dist/core/workItemMapper.d.ts.map +1 -0
- package/dist/core/workItemMapper.js +427 -0
- package/dist/core/workItemMapper.js.map +1 -0
- package/dist/core/workItemModel.d.ts +120 -0
- package/dist/core/workItemModel.d.ts.map +1 -0
- package/dist/core/workItemModel.js +104 -0
- package/dist/core/workItemModel.js.map +1 -0
- package/dist/core/workItemPayload.d.ts +195 -0
- package/dist/core/workItemPayload.d.ts.map +1 -0
- package/dist/core/workItemPayload.js +24 -0
- package/dist/core/workItemPayload.js.map +1 -0
- package/dist/core/workspaceConfig.d.ts +57 -0
- package/dist/core/workspaceConfig.d.ts.map +1 -0
- package/dist/core/workspaceConfig.js +184 -0
- package/dist/core/workspaceConfig.js.map +1 -0
- package/dist/doctor.d.ts +18 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +34 -0
- package/dist/doctor.js.map +1 -0
- package/dist/factory/activeSkill.d.ts +11 -0
- package/dist/factory/activeSkill.d.ts.map +1 -0
- package/dist/factory/activeSkill.js +44 -0
- package/dist/factory/activeSkill.js.map +1 -0
- package/dist/factory/assignment.d.ts +54 -0
- package/dist/factory/assignment.d.ts.map +1 -0
- package/dist/factory/assignment.js +94 -0
- package/dist/factory/assignment.js.map +1 -0
- package/dist/factory/auditLog.d.ts +10 -0
- package/dist/factory/auditLog.d.ts.map +1 -0
- package/dist/factory/auditLog.js +38 -0
- package/dist/factory/auditLog.js.map +1 -0
- package/dist/factory/closureRequirements.d.ts +12 -0
- package/dist/factory/closureRequirements.d.ts.map +1 -0
- package/dist/factory/closureRequirements.js +30 -0
- package/dist/factory/closureRequirements.js.map +1 -0
- package/dist/factory/delegationPrompt.d.ts +3 -0
- package/dist/factory/delegationPrompt.d.ts.map +1 -0
- package/dist/factory/delegationPrompt.js +16 -0
- package/dist/factory/delegationPrompt.js.map +1 -0
- package/dist/factory/http.d.ts +3 -0
- package/dist/factory/http.d.ts.map +1 -0
- package/dist/factory/http.js +555 -0
- package/dist/factory/http.js.map +1 -0
- package/dist/factory/lifecyclePushMap.d.ts +4 -0
- package/dist/factory/lifecyclePushMap.d.ts.map +1 -0
- package/dist/factory/lifecyclePushMap.js +7 -0
- package/dist/factory/lifecyclePushMap.js.map +1 -0
- package/dist/factory/missions.d.ts +125 -0
- package/dist/factory/missions.d.ts.map +1 -0
- package/dist/factory/missions.js +304 -0
- package/dist/factory/missions.js.map +1 -0
- package/dist/factory/mode.d.ts +9 -0
- package/dist/factory/mode.d.ts.map +1 -0
- package/dist/factory/mode.js +30 -0
- package/dist/factory/mode.js.map +1 -0
- package/dist/factory/operatorActiveSkill.d.ts +15 -0
- package/dist/factory/operatorActiveSkill.d.ts.map +1 -0
- package/dist/factory/operatorActiveSkill.js +95 -0
- package/dist/factory/operatorActiveSkill.js.map +1 -0
- package/dist/factory/paseoDispatcher.d.ts +52 -0
- package/dist/factory/paseoDispatcher.d.ts.map +1 -0
- package/dist/factory/paseoDispatcher.js +122 -0
- package/dist/factory/paseoDispatcher.js.map +1 -0
- package/dist/factory/paseoLifecycle.d.ts +32 -0
- package/dist/factory/paseoLifecycle.d.ts.map +1 -0
- package/dist/factory/paseoLifecycle.js +260 -0
- package/dist/factory/paseoLifecycle.js.map +1 -0
- package/dist/factory/paths.d.ts +31 -0
- package/dist/factory/paths.d.ts.map +1 -0
- package/dist/factory/paths.js +139 -0
- package/dist/factory/paths.js.map +1 -0
- package/dist/factory/progressWatchdog.d.ts +58 -0
- package/dist/factory/progressWatchdog.d.ts.map +1 -0
- package/dist/factory/progressWatchdog.js +160 -0
- package/dist/factory/progressWatchdog.js.map +1 -0
- package/dist/factory/roster.d.ts +59 -0
- package/dist/factory/roster.d.ts.map +1 -0
- package/dist/factory/roster.js +116 -0
- package/dist/factory/roster.js.map +1 -0
- package/dist/factory/runtime.d.ts +44 -0
- package/dist/factory/runtime.d.ts.map +1 -0
- package/dist/factory/runtime.js +238 -0
- package/dist/factory/runtime.js.map +1 -0
- package/dist/factory/sync.d.ts +29 -0
- package/dist/factory/sync.d.ts.map +1 -0
- package/dist/factory/sync.js +77 -0
- package/dist/factory/sync.js.map +1 -0
- package/dist/factory/workitemQueues.d.ts +37 -0
- package/dist/factory/workitemQueues.d.ts.map +1 -0
- package/dist/factory/workitemQueues.js +99 -0
- package/dist/factory/workitemQueues.js.map +1 -0
- package/dist/factory/workitemTriage.d.ts +9 -0
- package/dist/factory/workitemTriage.d.ts.map +1 -0
- package/dist/factory/workitemTriage.js +81 -0
- package/dist/factory/workitemTriage.js.map +1 -0
- package/dist/hooks.d.ts +18 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +96 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +90 -0
- package/dist/index.js.map +1 -0
- package/dist/install/agentCatalog.d.ts +7 -0
- package/dist/install/agentCatalog.d.ts.map +1 -0
- package/dist/install/agentCatalog.js +28 -0
- package/dist/install/agentCatalog.js.map +1 -0
- package/dist/install/bundlePaths.d.ts +10 -0
- package/dist/install/bundlePaths.d.ts.map +1 -0
- package/dist/install/bundlePaths.js +30 -0
- package/dist/install/bundlePaths.js.map +1 -0
- package/dist/install/codex.d.ts +43 -0
- package/dist/install/codex.d.ts.map +1 -0
- package/dist/install/codex.js +207 -0
- package/dist/install/codex.js.map +1 -0
- package/dist/install/enactHome.d.ts +37 -0
- package/dist/install/enactHome.d.ts.map +1 -0
- package/dist/install/enactHome.js +152 -0
- package/dist/install/enactHome.js.map +1 -0
- package/dist/install/plugins.d.ts +115 -0
- package/dist/install/plugins.d.ts.map +1 -0
- package/dist/install/plugins.js +259 -0
- package/dist/install/plugins.js.map +1 -0
- package/dist/install/setup.d.ts +33 -0
- package/dist/install/setup.d.ts.map +1 -0
- package/dist/install/setup.js +167 -0
- package/dist/install/setup.js.map +1 -0
- package/dist/locale/en.d.ts +3 -0
- package/dist/locale/en.d.ts.map +1 -0
- package/dist/locale/en.js +435 -0
- package/dist/locale/en.js.map +1 -0
- package/dist/locale/index.d.ts +28 -0
- package/dist/locale/index.d.ts.map +1 -0
- package/dist/locale/index.js +84 -0
- package/dist/locale/index.js.map +1 -0
- package/dist/locale/prompts/en.d.ts +3 -0
- package/dist/locale/prompts/en.d.ts.map +1 -0
- package/dist/locale/prompts/en.js +254 -0
- package/dist/locale/prompts/en.js.map +1 -0
- package/dist/locale/types.d.ts +433 -0
- package/dist/locale/types.d.ts.map +1 -0
- package/dist/locale/types.js +5 -0
- package/dist/locale/types.js.map +1 -0
- package/dist/mcp/server.d.ts +489 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +597 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/orchestration/decisionEngine.d.ts +175 -0
- package/dist/orchestration/decisionEngine.d.ts.map +1 -0
- package/dist/orchestration/decisionEngine.js +471 -0
- package/dist/orchestration/decisionEngine.js.map +1 -0
- package/dist/orchestration/index.d.ts +5 -0
- package/dist/orchestration/index.d.ts.map +1 -0
- package/dist/orchestration/index.js +5 -0
- package/dist/orchestration/index.js.map +1 -0
- package/dist/orchestration/workItemParser.d.ts +67 -0
- package/dist/orchestration/workItemParser.d.ts.map +1 -0
- package/dist/orchestration/workItemParser.js +560 -0
- package/dist/orchestration/workItemParser.js.map +1 -0
- package/dist/orchestration/workItemScheduler.d.ts +141 -0
- package/dist/orchestration/workItemScheduler.d.ts.map +1 -0
- package/dist/orchestration/workItemScheduler.js +317 -0
- package/dist/orchestration/workItemScheduler.js.map +1 -0
- package/dist/orchestration/workflow.d.ts +145 -0
- package/dist/orchestration/workflow.d.ts.map +1 -0
- package/dist/orchestration/workflow.js +301 -0
- package/dist/orchestration/workflow.js.map +1 -0
- package/dist/providers/codexSessions.d.ts +93 -0
- package/dist/providers/codexSessions.d.ts.map +1 -0
- package/dist/providers/codexSessions.js +366 -0
- package/dist/providers/codexSessions.js.map +1 -0
- package/dist/registry/bsDetector.d.ts +24 -0
- package/dist/registry/bsDetector.d.ts.map +1 -0
- package/dist/registry/bsDetector.js +276 -0
- package/dist/registry/bsDetector.js.map +1 -0
- package/dist/registry/entityScanner.d.ts +36 -0
- package/dist/registry/entityScanner.d.ts.map +1 -0
- package/dist/registry/entityScanner.js +693 -0
- package/dist/registry/entityScanner.js.map +1 -0
- package/dist/registry/index.d.ts +9 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +13 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/registry/schema.d.ts +307 -0
- package/dist/registry/schema.d.ts.map +1 -0
- package/dist/registry/schema.js +139 -0
- package/dist/registry/schema.js.map +1 -0
- package/dist/registry/sqliteStore.d.ts +101 -0
- package/dist/registry/sqliteStore.d.ts.map +1 -0
- package/dist/registry/sqliteStore.js +688 -0
- package/dist/registry/sqliteStore.js.map +1 -0
- package/dist/registry/workItemBridge.d.ts +8 -0
- package/dist/registry/workItemBridge.d.ts.map +1 -0
- package/dist/registry/workItemBridge.js +30 -0
- package/dist/registry/workItemBridge.js.map +1 -0
- package/dist/runners/cliRunner.d.ts +11 -0
- package/dist/runners/cliRunner.d.ts.map +1 -0
- package/dist/runners/cliRunner.js +193 -0
- package/dist/runners/cliRunner.js.map +1 -0
- package/dist/support/apiCache.d.ts +85 -0
- package/dist/support/apiCache.d.ts.map +1 -0
- package/dist/support/apiCache.js +163 -0
- package/dist/support/apiCache.js.map +1 -0
- package/dist/support/chat.d.ts +3 -0
- package/dist/support/chat.d.ts.map +1 -0
- package/dist/support/chat.js +305 -0
- package/dist/support/chat.js.map +1 -0
- package/dist/support/chatBackend.d.ts +25 -0
- package/dist/support/chatBackend.d.ts.map +1 -0
- package/dist/support/chatBackend.js +289 -0
- package/dist/support/chatBackend.js.map +1 -0
- package/dist/support/chatTui.d.ts +3 -0
- package/dist/support/chatTui.d.ts.map +1 -0
- package/dist/support/chatTui.js +1082 -0
- package/dist/support/chatTui.js.map +1 -0
- package/dist/support/costTracker.d.ts +29 -0
- package/dist/support/costTracker.d.ts.map +1 -0
- package/dist/support/costTracker.js +113 -0
- package/dist/support/costTracker.js.map +1 -0
- package/dist/support/dashboardHtml.d.ts +5 -0
- package/dist/support/dashboardHtml.d.ts.map +1 -0
- package/dist/support/dashboardHtml.js +2629 -0
- package/dist/support/dashboardHtml.js.map +1 -0
- package/dist/support/dev.d.ts +55 -0
- package/dist/support/dev.d.ts.map +1 -0
- package/dist/support/dev.js +298 -0
- package/dist/support/dev.js.map +1 -0
- package/dist/support/editParser.d.ts +37 -0
- package/dist/support/editParser.d.ts.map +1 -0
- package/dist/support/editParser.js +365 -0
- package/dist/support/editParser.js.map +1 -0
- package/dist/support/ghosttyThemeCatalog.generated.d.ts +2 -0
- package/dist/support/ghosttyThemeCatalog.generated.d.ts.map +1 -0
- package/dist/support/ghosttyThemeCatalog.generated.js +11116 -0
- package/dist/support/ghosttyThemeCatalog.generated.js.map +1 -0
- package/dist/support/gitStatus.d.ts +21 -0
- package/dist/support/gitStatus.d.ts.map +1 -0
- package/dist/support/gitStatus.js +108 -0
- package/dist/support/gitStatus.js.map +1 -0
- package/dist/support/gitTracker.d.ts +30 -0
- package/dist/support/gitTracker.d.ts.map +1 -0
- package/dist/support/gitTracker.js +143 -0
- package/dist/support/gitTracker.js.map +1 -0
- package/dist/support/index.d.ts +12 -0
- package/dist/support/index.d.ts.map +1 -0
- package/dist/support/index.js +12 -0
- package/dist/support/index.js.map +1 -0
- package/dist/support/planner.d.ts +64 -0
- package/dist/support/planner.d.ts.map +1 -0
- package/dist/support/planner.js +396 -0
- package/dist/support/planner.js.map +1 -0
- package/dist/support/projectMapper.d.ts +46 -0
- package/dist/support/projectMapper.d.ts.map +1 -0
- package/dist/support/projectMapper.js +273 -0
- package/dist/support/projectMapper.js.map +1 -0
- package/dist/support/pty-helper.py +117 -0
- package/dist/support/quotaTracker.d.ts +29 -0
- package/dist/support/quotaTracker.d.ts.map +1 -0
- package/dist/support/quotaTracker.js +89 -0
- package/dist/support/quotaTracker.js.map +1 -0
- package/dist/support/rateLimiter.d.ts +101 -0
- package/dist/support/rateLimiter.d.ts.map +1 -0
- package/dist/support/rateLimiter.js +219 -0
- package/dist/support/rateLimiter.js.map +1 -0
- package/dist/support/rollback.d.ts +61 -0
- package/dist/support/rollback.d.ts.map +1 -0
- package/dist/support/rollback.js +329 -0
- package/dist/support/rollback.js.map +1 -0
- package/dist/support/sharedShell.d.ts +17 -0
- package/dist/support/sharedShell.d.ts.map +1 -0
- package/dist/support/sharedShell.js +439 -0
- package/dist/support/sharedShell.js.map +1 -0
- package/dist/support/stuckDetector.d.ts +68 -0
- package/dist/support/stuckDetector.d.ts.map +1 -0
- package/dist/support/stuckDetector.js +174 -0
- package/dist/support/stuckDetector.js.map +1 -0
- package/dist/support/terminalBridge.d.ts +18 -0
- package/dist/support/terminalBridge.d.ts.map +1 -0
- package/dist/support/terminalBridge.js +553 -0
- package/dist/support/terminalBridge.js.map +1 -0
- package/dist/support/timeWindow.d.ts +60 -0
- package/dist/support/timeWindow.d.ts.map +1 -0
- package/dist/support/timeWindow.js +236 -0
- package/dist/support/timeWindow.js.map +1 -0
- package/dist/support/uiThemes.d.ts +44 -0
- package/dist/support/uiThemes.d.ts.map +1 -0
- package/dist/support/uiThemes.js +290 -0
- package/dist/support/uiThemes.js.map +1 -0
- package/dist/support/web.d.ts +29 -0
- package/dist/support/web.d.ts.map +1 -0
- package/dist/support/web.js +1097 -0
- package/dist/support/web.js.map +1 -0
- package/dist/support/worktreeManager.d.ts +20 -0
- package/dist/support/worktreeManager.d.ts.map +1 -0
- package/dist/support/worktreeManager.js +140 -0
- package/dist/support/worktreeManager.js.map +1 -0
- package/dist/task_state_model.py +55 -0
- package/dist/workItemState/store.d.ts +122 -0
- package/dist/workItemState/store.d.ts.map +1 -0
- package/dist/workItemState/store.js +438 -0
- package/dist/workItemState/store.js.map +1 -0
- package/dist/workItems/azdoBridge.d.ts +42 -0
- package/dist/workItems/azdoBridge.d.ts.map +1 -0
- package/dist/workItems/azdoBridge.js +143 -0
- package/dist/workItems/azdoBridge.js.map +1 -0
- package/dist/workItems/azdoSyncRuntime.d.ts +28 -0
- package/dist/workItems/azdoSyncRuntime.d.ts.map +1 -0
- package/dist/workItems/azdoSyncRuntime.js +158 -0
- package/dist/workItems/azdoSyncRuntime.js.map +1 -0
- package/dist/workItems/azureDevOpsSync.d.ts +128 -0
- package/dist/workItems/azureDevOpsSync.d.ts.map +1 -0
- package/dist/workItems/azureDevOpsSync.js +748 -0
- package/dist/workItems/azureDevOpsSync.js.map +1 -0
- package/dist/workItems/helpers.d.ts +11 -0
- package/dist/workItems/helpers.d.ts.map +1 -0
- package/dist/workItems/helpers.js +17 -0
- package/dist/workItems/helpers.js.map +1 -0
- package/dist/workItems/index.d.ts +21 -0
- package/dist/workItems/index.d.ts.map +1 -0
- package/dist/workItems/index.js +89 -0
- package/dist/workItems/index.js.map +1 -0
- package/dist/workItems/localWorkItemFetcher.d.ts +55 -0
- package/dist/workItems/localWorkItemFetcher.d.ts.map +1 -0
- package/dist/workItems/localWorkItemFetcher.js +209 -0
- package/dist/workItems/localWorkItemFetcher.js.map +1 -0
- package/dist/workItems/migrations/001_rename_workItem_to_work_item.sql +10 -0
- package/dist/workItems/postgresStore.d.ts +78 -0
- package/dist/workItems/postgresStore.d.ts.map +1 -0
- package/dist/workItems/postgresStore.js +937 -0
- package/dist/workItems/postgresStore.js.map +1 -0
- package/dist/workItems/schema.d.ts +257 -0
- package/dist/workItems/schema.d.ts.map +1 -0
- package/dist/workItems/schema.js +176 -0
- package/dist/workItems/schema.js.map +1 -0
- package/dist/workItems/sqliteStore.d.ts +124 -0
- package/dist/workItems/sqliteStore.d.ts.map +1 -0
- package/dist/workItems/sqliteStore.js +713 -0
- package/dist/workItems/sqliteStore.js.map +1 -0
- package/dist/workItems/workItemBoardHtml.d.ts +5 -0
- package/dist/workItems/workItemBoardHtml.d.ts.map +1 -0
- package/dist/workItems/workItemBoardHtml.js +2192 -0
- package/dist/workItems/workItemBoardHtml.js.map +1 -0
- package/package.json +99 -0
- package/templates/AGENTS.md +432 -0
- package/templates/BOOT.md +25 -0
- package/templates/BOOTSTRAP.md +50 -0
- package/templates/CHANGELOG_AUDIT.md +74 -0
- package/templates/HEARTBEAT.md +86 -0
- package/templates/IDENTITY.md +27 -0
- package/templates/PR_LAND.md +75 -0
- package/templates/PR_REVIEW.md +97 -0
- package/templates/SOUL.dev.md +52 -0
- package/templates/SOUL.md +81 -0
- package/templates/TOOLS.md +52 -0
- package/templates/USER.md +22 -0
- package/templates/WORKITEM_ANALYSIS.md +31 -0
- package/templates/agents/executor.md +26 -0
- package/templates/agents/plan.md +22 -0
- package/templates/agents/ralph.md +37 -0
- package/templates/agents/review.md +22 -0
- package/templates/agents/team.md +39 -0
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
import type { WorkItem } from '../core/workItemModel.js';
|
|
2
|
+
/**
|
|
3
|
+
* Stable execution roles — each is a distinct agent identity.
|
|
4
|
+
* Model fallback may occur inside a role; the role identity never changes.
|
|
5
|
+
*
|
|
6
|
+
* - planner → creates the execution plan before implementation begins
|
|
7
|
+
* - executor → implements the plan; runs a self-review loop before external review
|
|
8
|
+
* - reviewer → external reviewer; remains separate from the executor
|
|
9
|
+
* - tester → verifies behavior after approved implementation
|
|
10
|
+
* - documenter → records outcome after testing
|
|
11
|
+
*/
|
|
12
|
+
export type RoleId = 'planner' | 'coder' | 'critic' | 'tester' | 'documenter';
|
|
13
|
+
export type SupportingRoleId = 'auditor' | 'stage-documenter';
|
|
14
|
+
export type AnyRoleId = RoleId | SupportingRoleId;
|
|
15
|
+
export declare const ROLE_IDS: readonly RoleId[];
|
|
16
|
+
export declare const SUPPORTING_ROLE_IDS: readonly SupportingRoleId[];
|
|
17
|
+
/**
|
|
18
|
+
* Execution phases for a work item's runtime lifecycle.
|
|
19
|
+
*
|
|
20
|
+
* Terminal phases: `done` | `halted` | `failed`
|
|
21
|
+
*
|
|
22
|
+
* Phase notes:
|
|
23
|
+
* - `idle` → work item accepted, not yet started
|
|
24
|
+
* - `dispatching` → work has been handed to an external dispatcher
|
|
25
|
+
* - `planning` → planner is creating the execution plan (requires plan.md)
|
|
26
|
+
* - `implementing`→ executor is executing the plan
|
|
27
|
+
* - `reviewing` → external reviewer is validating the implementation
|
|
28
|
+
* - `revising` → revision loop: executor continues with preserved context
|
|
29
|
+
* after the reviewer rejected the implementation
|
|
30
|
+
* - `testing` → tester is verifying behaviour
|
|
31
|
+
* - `documenting` → documenter is recording the outcome
|
|
32
|
+
* - `done` → all phases complete (terminal)
|
|
33
|
+
* - `halted` → execution paused; awaiting operator intervention (terminal)
|
|
34
|
+
* - `awaiting_input` → external agent requires human input (non-terminal)
|
|
35
|
+
* - `failed` → unrecoverable error (terminal)
|
|
36
|
+
*/
|
|
37
|
+
export type ExecutionPhase = 'idle' | 'dispatching' | 'planning' | 'implementing' | 'reviewing' | 'revising' | 'testing' | 'documenting' | 'done' | 'halted' | 'awaiting_input' | 'failed';
|
|
38
|
+
/** Ordered tuple of all ExecutionPhase values. */
|
|
39
|
+
export declare const EXECUTION_PHASES: readonly ExecutionPhase[];
|
|
40
|
+
/**
|
|
41
|
+
* Return true when `phase` is a terminal phase.
|
|
42
|
+
* Callers should not attempt phase transitions from terminal phases.
|
|
43
|
+
*/
|
|
44
|
+
export declare function isTerminal(phase: ExecutionPhase): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Valid next phases from each ExecutionPhase.
|
|
47
|
+
*
|
|
48
|
+
* Key design decisions encoded here:
|
|
49
|
+
* - `planning` → `implementing` (planner hands off to executor)
|
|
50
|
+
* - `implementing` → `reviewing` (executor self-review done; hand off to external reviewer)
|
|
51
|
+
* - `reviewing` → `testing` | `revising` | `failed`
|
|
52
|
+
* (reviewer accepts → testing; reviewer rejects → revising; unrecoverable → failed)
|
|
53
|
+
* - `revising` → `reviewing` | `halted` | `failed`
|
|
54
|
+
* (after revision, executor re-submits for review; too many loops → halted)
|
|
55
|
+
* - `testing` → `documenting` | `revising` | `failed`
|
|
56
|
+
* - `documenting` → `done` | `failed`
|
|
57
|
+
* - Terminal phases have no successors.
|
|
58
|
+
*/
|
|
59
|
+
export declare const phaseTransitions: Record<ExecutionPhase, readonly ExecutionPhase[]>;
|
|
60
|
+
/**
|
|
61
|
+
* Return the valid next phases from `current`.
|
|
62
|
+
* Returns an empty array for terminal phases.
|
|
63
|
+
*
|
|
64
|
+
* @throws {Error} if `current` is not a recognised ExecutionPhase.
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* nextPhases('reviewing') // ['testing', 'revising', 'failed']
|
|
68
|
+
* nextPhases('done') // []
|
|
69
|
+
*/
|
|
70
|
+
export declare function nextPhases(current: ExecutionPhase): readonly ExecutionPhase[];
|
|
71
|
+
/**
|
|
72
|
+
* Artifact produced by the `planning` phase.
|
|
73
|
+
* Must exist before the work item can move to `implementing`.
|
|
74
|
+
*/
|
|
75
|
+
export interface PlanningArtifact {
|
|
76
|
+
phase: 'planning';
|
|
77
|
+
/** High-level goal of the work item. */
|
|
78
|
+
goal: string;
|
|
79
|
+
/** Intended approach / execution strategy. */
|
|
80
|
+
approach: string;
|
|
81
|
+
/** Files the planner expects to touch (may be empty for discovery workItems). */
|
|
82
|
+
filesToTouch: string[];
|
|
83
|
+
/** Verification path to confirm the implementation is correct. */
|
|
84
|
+
verificationPlan: string;
|
|
85
|
+
/** Acceptance criteria (must be verifiable). */
|
|
86
|
+
acceptanceCriteria: string;
|
|
87
|
+
/** Known risks at planning time. */
|
|
88
|
+
knownRisks?: string[];
|
|
89
|
+
/** Open assumptions that may invalidate the plan. */
|
|
90
|
+
openAssumptions?: string[];
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Artifact produced by the `implementing` phase.
|
|
94
|
+
* Executor must self-review before handing off to the external reviewer.
|
|
95
|
+
*
|
|
96
|
+
* `selfReviewPassed` encodes the result of the mandatory 2-pass self-review
|
|
97
|
+
* using the `review` skill (Locked Decision #2 in Wave 2).
|
|
98
|
+
*/
|
|
99
|
+
export interface ImplementingArtifact {
|
|
100
|
+
phase: 'implementing';
|
|
101
|
+
/** Human-readable summary of what was done. */
|
|
102
|
+
summary: string;
|
|
103
|
+
/** Files actually changed (Git-verified). */
|
|
104
|
+
filesChanged: string[];
|
|
105
|
+
/** Commands run during implementation. */
|
|
106
|
+
commands: string[];
|
|
107
|
+
/** Raw diff or diff summary from the implementation. */
|
|
108
|
+
diffSummary: string;
|
|
109
|
+
/** Result of the mandatory executor self-review (2 passes). */
|
|
110
|
+
selfReviewPassed: boolean;
|
|
111
|
+
/** Confidence percentage reported by the executor (0–100). */
|
|
112
|
+
confidencePercent: number;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Artifact produced by the `reviewing` or `revising` phase.
|
|
116
|
+
* `revising` is the post-rejection continuation loop; the executor must carry
|
|
117
|
+
* `priorAttemptContext` across loops so review history is never lost.
|
|
118
|
+
*/
|
|
119
|
+
export interface ReviewingArtifact {
|
|
120
|
+
phase: 'reviewing';
|
|
121
|
+
/** Whether the reviewer approved the implementation. */
|
|
122
|
+
approved: boolean;
|
|
123
|
+
/** Reviewer comments / feedback (required when approved === false). */
|
|
124
|
+
comments: string;
|
|
125
|
+
/** Iteration number (1 = first review, 2+ = after revisions). */
|
|
126
|
+
iteration: number;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Artifact produced during the `revising` phase.
|
|
130
|
+
* The executor must preserve `priorAttemptContext` across revision loops.
|
|
131
|
+
*
|
|
132
|
+
* `priorAttemptContext` is REQUIRED — it encodes the rule that context
|
|
133
|
+
* continuity is not optional across revision loops (per Wave 2 contract).
|
|
134
|
+
*/
|
|
135
|
+
export interface RevisingArtifact {
|
|
136
|
+
phase: 'revising';
|
|
137
|
+
/** Reviewer feedback that triggered this revision. */
|
|
138
|
+
reviewerFeedback: string;
|
|
139
|
+
/**
|
|
140
|
+
* Accumulated context from prior attempts — REQUIRED.
|
|
141
|
+
* Executor must carry this forward so review history and prior decisions
|
|
142
|
+
* are never silently dropped across revision loops.
|
|
143
|
+
*/
|
|
144
|
+
priorAttemptContext: string;
|
|
145
|
+
/** Iteration number of this revision (1 = first revision). */
|
|
146
|
+
iteration: number;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Artifact produced by the `testing` phase.
|
|
150
|
+
*/
|
|
151
|
+
export interface TestingArtifact {
|
|
152
|
+
phase: 'testing';
|
|
153
|
+
/** Whether all tests passed. */
|
|
154
|
+
passed: boolean;
|
|
155
|
+
/** Test results summary. */
|
|
156
|
+
resultsSummary: string;
|
|
157
|
+
/** Number of tests run. */
|
|
158
|
+
testsRun: number;
|
|
159
|
+
/** Number of tests that failed. */
|
|
160
|
+
testsFailed: number;
|
|
161
|
+
/** Optional: path(s) to detailed test output. */
|
|
162
|
+
outputPaths?: string[];
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Artifact produced by the `documenting` phase.
|
|
166
|
+
*/
|
|
167
|
+
export interface DocumentingArtifact {
|
|
168
|
+
phase: 'documenting';
|
|
169
|
+
/** Diff or summary of documentation changes made. */
|
|
170
|
+
docsDiff: string;
|
|
171
|
+
/** Paths of documentation files created or updated. */
|
|
172
|
+
docsChanged: string[];
|
|
173
|
+
/** Short prose summary of what was documented. */
|
|
174
|
+
summary: string;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Discriminated union of all phase artifacts.
|
|
178
|
+
* Each artifact carries its `phase` tag so callers can narrow precisely.
|
|
179
|
+
*/
|
|
180
|
+
export type PhaseArtifact = PlanningArtifact | ImplementingArtifact | ReviewingArtifact | RevisingArtifact | TestingArtifact | DocumentingArtifact;
|
|
181
|
+
/**
|
|
182
|
+
* Minimum required fields for a planning artifact to allow a work item
|
|
183
|
+
* to move to `Approved` status.
|
|
184
|
+
*
|
|
185
|
+
* A work item CANNOT move from `New` → `Approved` unless a `MinimumPlanArtifact`
|
|
186
|
+
* with all required fields is present and valid.
|
|
187
|
+
*
|
|
188
|
+
* Locked Decision (Wave 2, #6): expressed through `goal` + `acceptanceCriteria`
|
|
189
|
+
* rather than requiring new custom Azure DevOps fields.
|
|
190
|
+
*/
|
|
191
|
+
export interface MinimumPlanArtifact {
|
|
192
|
+
/** What the work item is trying to achieve (maps to AzDO Description). */
|
|
193
|
+
goal: string;
|
|
194
|
+
/** How the planner intends to achieve it. */
|
|
195
|
+
approach: string;
|
|
196
|
+
/** Files the plan expects to touch (may be empty for discovery workItems). */
|
|
197
|
+
filesToTouch: string[];
|
|
198
|
+
/** Verifiable acceptance criteria (maps to AzDO Acceptance Criteria). */
|
|
199
|
+
acceptanceCriteria: string;
|
|
200
|
+
}
|
|
201
|
+
export type PlanArtifactValidationError = {
|
|
202
|
+
field: 'goal';
|
|
203
|
+
message: string;
|
|
204
|
+
} | {
|
|
205
|
+
field: 'approach';
|
|
206
|
+
message: string;
|
|
207
|
+
} | {
|
|
208
|
+
field: 'filesToTouch';
|
|
209
|
+
message: string;
|
|
210
|
+
} | {
|
|
211
|
+
field: 'acceptanceCriteria';
|
|
212
|
+
message: string;
|
|
213
|
+
};
|
|
214
|
+
export type PlanArtifactValidationResult = {
|
|
215
|
+
valid: true;
|
|
216
|
+
artifact: MinimumPlanArtifact;
|
|
217
|
+
} | {
|
|
218
|
+
valid: false;
|
|
219
|
+
errors: PlanArtifactValidationError[];
|
|
220
|
+
};
|
|
221
|
+
/**
|
|
222
|
+
* Validate a `MinimumPlanArtifact`.
|
|
223
|
+
* Returns the typed artifact on success, or a list of field errors on failure.
|
|
224
|
+
*
|
|
225
|
+
* @example
|
|
226
|
+
* const result = validatePlanArtifact(input);
|
|
227
|
+
* if (result.valid) { ... result.artifact ... }
|
|
228
|
+
* else { ... result.errors ... }
|
|
229
|
+
*/
|
|
230
|
+
export declare function validatePlanArtifact(input: unknown): PlanArtifactValidationResult;
|
|
231
|
+
/**
|
|
232
|
+
* A validated role configuration as declared in role YAML.
|
|
233
|
+
* YAML is the canonical authority for runtime role behaviour;
|
|
234
|
+
* dashboard controls must not casually override these values.
|
|
235
|
+
*/
|
|
236
|
+
export interface RoleConfig {
|
|
237
|
+
/** Role identifier. */
|
|
238
|
+
id: AnyRoleId;
|
|
239
|
+
/** Model identifier (e.g., 'claude-sonnet-4-5', 'claude-opus-4-5'). */
|
|
240
|
+
model: string;
|
|
241
|
+
/** Provider / adapter name (e.g., 'claude', 'openai'). */
|
|
242
|
+
provider: string;
|
|
243
|
+
/**
|
|
244
|
+
* Skill pack identifiers this role may invoke.
|
|
245
|
+
* Validated at load time; unknown skills produce errors.
|
|
246
|
+
*/
|
|
247
|
+
skills: string[];
|
|
248
|
+
/**
|
|
249
|
+
* Tool names this role is permitted to use.
|
|
250
|
+
* Empty array means no tool restrictions.
|
|
251
|
+
*/
|
|
252
|
+
tools: string[];
|
|
253
|
+
/**
|
|
254
|
+
* Additional system-prompt instructions for this role.
|
|
255
|
+
* May be empty string.
|
|
256
|
+
*/
|
|
257
|
+
instructions: string;
|
|
258
|
+
}
|
|
259
|
+
export type RoleConfigValidationError = {
|
|
260
|
+
field: keyof RoleConfig | 'root';
|
|
261
|
+
message: string;
|
|
262
|
+
};
|
|
263
|
+
export type RoleConfigValidationResult = {
|
|
264
|
+
valid: true;
|
|
265
|
+
config: RoleConfig;
|
|
266
|
+
} | {
|
|
267
|
+
valid: false;
|
|
268
|
+
errors: RoleConfigValidationError[];
|
|
269
|
+
};
|
|
270
|
+
/**
|
|
271
|
+
* Validate a raw role configuration object (e.g., parsed from YAML).
|
|
272
|
+
* Returns a typed `RoleConfig` on success, or a list of field errors.
|
|
273
|
+
*
|
|
274
|
+
* @example
|
|
275
|
+
* const result = validateRoleConfig(yamlParsed);
|
|
276
|
+
* if (result.valid) { startAgent(result.config); }
|
|
277
|
+
* else { logErrors(result.errors); }
|
|
278
|
+
*/
|
|
279
|
+
export declare function validateRoleConfig(input: unknown): RoleConfigValidationResult;
|
|
280
|
+
/**
|
|
281
|
+
* Runtime-facing role config candidate.
|
|
282
|
+
*
|
|
283
|
+
* Some live runtime config surfaces only carry a subset of the full lifecycle
|
|
284
|
+
* role schema (`model` plus optional adapter/provider metadata). This adapter
|
|
285
|
+
* helper lets those paths route through the canonical role validator without
|
|
286
|
+
* inventing a second validation contract.
|
|
287
|
+
*/
|
|
288
|
+
export interface RuntimeRoleConfigCandidate {
|
|
289
|
+
model?: unknown;
|
|
290
|
+
provider?: unknown;
|
|
291
|
+
adapter?: unknown;
|
|
292
|
+
skills?: unknown;
|
|
293
|
+
tools?: unknown;
|
|
294
|
+
instructions?: unknown;
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Validate a runtime role configuration against the canonical lifecycle role
|
|
298
|
+
* schema, filling in omitted runtime fields with conservative defaults.
|
|
299
|
+
*/
|
|
300
|
+
export declare function validateRuntimeStageConfig(roleId: AnyRoleId, candidate: RuntimeRoleConfigCandidate, fallbackProvider: string): RoleConfigValidationResult;
|
|
301
|
+
/**
|
|
302
|
+
* Attaches an agent's current role and execution phase to a work item.
|
|
303
|
+
* This is the contract type that links the runtime lifecycle to the domain model.
|
|
304
|
+
*
|
|
305
|
+
* Wave 3 will thread this through the worktree/pipeline flow.
|
|
306
|
+
* For now this is the contract type only — no pipeline wiring.
|
|
307
|
+
*/
|
|
308
|
+
export interface AgentLifecycle {
|
|
309
|
+
/** The canonical work item this lifecycle is attached to. */
|
|
310
|
+
workItem: WorkItem;
|
|
311
|
+
/** The role currently responsible for this work item. */
|
|
312
|
+
currentRole: RoleId;
|
|
313
|
+
/** The current execution phase of the work item. */
|
|
314
|
+
currentPhase: ExecutionPhase;
|
|
315
|
+
/**
|
|
316
|
+
* Ordered list of phase artifacts accumulated so far.
|
|
317
|
+
* Artifacts are appended in phase order; `revising` artifacts must carry
|
|
318
|
+
* `priorAttemptContext` encoding the full revision history.
|
|
319
|
+
*/
|
|
320
|
+
artifacts: PhaseArtifact[];
|
|
321
|
+
}
|
|
322
|
+
//# sourceMappingURL=agentLifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentLifecycle.d.ts","sourceRoot":"","sources":["../../src/core/agentLifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
// ============================================
|
|
2
|
+
// EnactFactory - Agent Lifecycle Contract (Wave 2)
|
|
3
|
+
// Roles, phases, artifacts, plan validation,
|
|
4
|
+
// and pair attachment over canonical WorkItem.
|
|
5
|
+
// ============================================
|
|
6
|
+
export const ROLE_IDS = [
|
|
7
|
+
'planner',
|
|
8
|
+
'coder',
|
|
9
|
+
'critic',
|
|
10
|
+
'tester',
|
|
11
|
+
'documenter',
|
|
12
|
+
];
|
|
13
|
+
export const SUPPORTING_ROLE_IDS = [
|
|
14
|
+
'auditor',
|
|
15
|
+
'stage-documenter',
|
|
16
|
+
];
|
|
17
|
+
/** Ordered tuple of all ExecutionPhase values. */
|
|
18
|
+
export const EXECUTION_PHASES = [
|
|
19
|
+
'idle',
|
|
20
|
+
'dispatching',
|
|
21
|
+
'planning',
|
|
22
|
+
'implementing',
|
|
23
|
+
'reviewing',
|
|
24
|
+
'revising',
|
|
25
|
+
'testing',
|
|
26
|
+
'documenting',
|
|
27
|
+
'done',
|
|
28
|
+
'halted',
|
|
29
|
+
'awaiting_input',
|
|
30
|
+
'failed',
|
|
31
|
+
];
|
|
32
|
+
/** Terminal phases — no further transitions are valid from these. */
|
|
33
|
+
const TERMINAL_PHASES = new Set([
|
|
34
|
+
'done',
|
|
35
|
+
'halted',
|
|
36
|
+
'failed',
|
|
37
|
+
]);
|
|
38
|
+
/**
|
|
39
|
+
* Return true when `phase` is a terminal phase.
|
|
40
|
+
* Callers should not attempt phase transitions from terminal phases.
|
|
41
|
+
*/
|
|
42
|
+
export function isTerminal(phase) {
|
|
43
|
+
return TERMINAL_PHASES.has(phase);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Valid next phases from each ExecutionPhase.
|
|
47
|
+
*
|
|
48
|
+
* Key design decisions encoded here:
|
|
49
|
+
* - `planning` → `implementing` (planner hands off to executor)
|
|
50
|
+
* - `implementing` → `reviewing` (executor self-review done; hand off to external reviewer)
|
|
51
|
+
* - `reviewing` → `testing` | `revising` | `failed`
|
|
52
|
+
* (reviewer accepts → testing; reviewer rejects → revising; unrecoverable → failed)
|
|
53
|
+
* - `revising` → `reviewing` | `halted` | `failed`
|
|
54
|
+
* (after revision, executor re-submits for review; too many loops → halted)
|
|
55
|
+
* - `testing` → `documenting` | `revising` | `failed`
|
|
56
|
+
* - `documenting` → `done` | `failed`
|
|
57
|
+
* - Terminal phases have no successors.
|
|
58
|
+
*/
|
|
59
|
+
export const phaseTransitions = {
|
|
60
|
+
idle: ['dispatching', 'planning', 'halted'],
|
|
61
|
+
dispatching: ['implementing', 'awaiting_input', 'done', 'halted', 'failed'],
|
|
62
|
+
planning: ['implementing', 'halted', 'failed'],
|
|
63
|
+
implementing: ['reviewing', 'halted', 'failed'],
|
|
64
|
+
reviewing: ['testing', 'revising', 'failed'],
|
|
65
|
+
revising: ['reviewing', 'halted', 'failed'],
|
|
66
|
+
testing: ['documenting', 'revising', 'failed'],
|
|
67
|
+
documenting: ['done', 'failed'],
|
|
68
|
+
done: [],
|
|
69
|
+
halted: [],
|
|
70
|
+
awaiting_input: ['implementing', 'halted', 'failed'],
|
|
71
|
+
failed: [],
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Return the valid next phases from `current`.
|
|
75
|
+
* Returns an empty array for terminal phases.
|
|
76
|
+
*
|
|
77
|
+
* @throws {Error} if `current` is not a recognised ExecutionPhase.
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* nextPhases('reviewing') // ['testing', 'revising', 'failed']
|
|
81
|
+
* nextPhases('done') // []
|
|
82
|
+
*/
|
|
83
|
+
export function nextPhases(current) {
|
|
84
|
+
if (!(current in phaseTransitions)) {
|
|
85
|
+
throw new Error(`Unknown ExecutionPhase: "${current}"`);
|
|
86
|
+
}
|
|
87
|
+
return phaseTransitions[current];
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Validate a `MinimumPlanArtifact`.
|
|
91
|
+
* Returns the typed artifact on success, or a list of field errors on failure.
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* const result = validatePlanArtifact(input);
|
|
95
|
+
* if (result.valid) { ... result.artifact ... }
|
|
96
|
+
* else { ... result.errors ... }
|
|
97
|
+
*/
|
|
98
|
+
export function validatePlanArtifact(input) {
|
|
99
|
+
const errors = [];
|
|
100
|
+
if (typeof input !== 'object' || input === null) {
|
|
101
|
+
return {
|
|
102
|
+
valid: false,
|
|
103
|
+
errors: [
|
|
104
|
+
{ field: 'goal', message: 'Plan artifact must be a non-null object' },
|
|
105
|
+
{ field: 'approach', message: 'Plan artifact must be a non-null object' },
|
|
106
|
+
{ field: 'filesToTouch', message: 'Plan artifact must be a non-null object' },
|
|
107
|
+
{ field: 'acceptanceCriteria', message: 'Plan artifact must be a non-null object' },
|
|
108
|
+
],
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
const obj = input;
|
|
112
|
+
if (typeof obj['goal'] !== 'string' || obj['goal'].trim() === '') {
|
|
113
|
+
errors.push({ field: 'goal', message: 'goal must be a non-empty string' });
|
|
114
|
+
}
|
|
115
|
+
if (typeof obj['approach'] !== 'string' || obj['approach'].trim() === '') {
|
|
116
|
+
errors.push({ field: 'approach', message: 'approach must be a non-empty string' });
|
|
117
|
+
}
|
|
118
|
+
if (!Array.isArray(obj['filesToTouch'])) {
|
|
119
|
+
errors.push({ field: 'filesToTouch', message: 'filesToTouch must be an array' });
|
|
120
|
+
}
|
|
121
|
+
else if (obj['filesToTouch'].some((f) => typeof f !== 'string')) {
|
|
122
|
+
errors.push({ field: 'filesToTouch', message: 'filesToTouch must contain only strings' });
|
|
123
|
+
}
|
|
124
|
+
if (typeof obj['acceptanceCriteria'] !== 'string' || obj['acceptanceCriteria'].trim() === '') {
|
|
125
|
+
errors.push({ field: 'acceptanceCriteria', message: 'acceptanceCriteria must be a non-empty string' });
|
|
126
|
+
}
|
|
127
|
+
if (errors.length > 0) {
|
|
128
|
+
return { valid: false, errors };
|
|
129
|
+
}
|
|
130
|
+
return {
|
|
131
|
+
valid: true,
|
|
132
|
+
artifact: {
|
|
133
|
+
goal: obj['goal'].trim(),
|
|
134
|
+
approach: obj['approach'].trim(),
|
|
135
|
+
filesToTouch: obj['filesToTouch'],
|
|
136
|
+
acceptanceCriteria: obj['acceptanceCriteria'].trim(),
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
/** All valid AnyRoleId values, for validation. */
|
|
141
|
+
const ALL_ROLE_IDS = new Set([
|
|
142
|
+
...ROLE_IDS,
|
|
143
|
+
...SUPPORTING_ROLE_IDS,
|
|
144
|
+
]);
|
|
145
|
+
/**
|
|
146
|
+
* Validate a raw role configuration object (e.g., parsed from YAML).
|
|
147
|
+
* Returns a typed `RoleConfig` on success, or a list of field errors.
|
|
148
|
+
*
|
|
149
|
+
* @example
|
|
150
|
+
* const result = validateRoleConfig(yamlParsed);
|
|
151
|
+
* if (result.valid) { startAgent(result.config); }
|
|
152
|
+
* else { logErrors(result.errors); }
|
|
153
|
+
*/
|
|
154
|
+
export function validateRoleConfig(input) {
|
|
155
|
+
const errors = [];
|
|
156
|
+
if (typeof input !== 'object' || input === null) {
|
|
157
|
+
return {
|
|
158
|
+
valid: false,
|
|
159
|
+
errors: [{ field: 'root', message: 'Role config must be a non-null object' }],
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
const obj = input;
|
|
163
|
+
// id
|
|
164
|
+
if (typeof obj['id'] !== 'string' || !ALL_ROLE_IDS.has(obj['id'])) {
|
|
165
|
+
errors.push({
|
|
166
|
+
field: 'id',
|
|
167
|
+
message: `id must be one of: ${[...ALL_ROLE_IDS].join(', ')}`,
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
// model
|
|
171
|
+
if (typeof obj['model'] !== 'string' || obj['model'].trim() === '') {
|
|
172
|
+
errors.push({ field: 'model', message: 'model must be a non-empty string' });
|
|
173
|
+
}
|
|
174
|
+
// provider
|
|
175
|
+
if (typeof obj['provider'] !== 'string' || obj['provider'].trim() === '') {
|
|
176
|
+
errors.push({ field: 'provider', message: 'provider must be a non-empty string' });
|
|
177
|
+
}
|
|
178
|
+
// skills
|
|
179
|
+
if (!Array.isArray(obj['skills'])) {
|
|
180
|
+
errors.push({ field: 'skills', message: 'skills must be an array' });
|
|
181
|
+
}
|
|
182
|
+
else if (obj['skills'].some((s) => typeof s !== 'string')) {
|
|
183
|
+
errors.push({ field: 'skills', message: 'skills must contain only strings' });
|
|
184
|
+
}
|
|
185
|
+
// tools
|
|
186
|
+
if (!Array.isArray(obj['tools'])) {
|
|
187
|
+
errors.push({ field: 'tools', message: 'tools must be an array' });
|
|
188
|
+
}
|
|
189
|
+
else if (obj['tools'].some((t) => typeof t !== 'string')) {
|
|
190
|
+
errors.push({ field: 'tools', message: 'tools must contain only strings' });
|
|
191
|
+
}
|
|
192
|
+
// instructions
|
|
193
|
+
if (typeof obj['instructions'] !== 'string') {
|
|
194
|
+
errors.push({ field: 'instructions', message: 'instructions must be a string (may be empty)' });
|
|
195
|
+
}
|
|
196
|
+
if (errors.length > 0) {
|
|
197
|
+
return { valid: false, errors };
|
|
198
|
+
}
|
|
199
|
+
return {
|
|
200
|
+
valid: true,
|
|
201
|
+
config: {
|
|
202
|
+
id: obj['id'],
|
|
203
|
+
model: obj['model'].trim(),
|
|
204
|
+
provider: obj['provider'].trim(),
|
|
205
|
+
skills: obj['skills'],
|
|
206
|
+
tools: obj['tools'],
|
|
207
|
+
instructions: obj['instructions'],
|
|
208
|
+
},
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Validate a runtime role configuration against the canonical lifecycle role
|
|
213
|
+
* schema, filling in omitted runtime fields with conservative defaults.
|
|
214
|
+
*/
|
|
215
|
+
export function validateRuntimeStageConfig(roleId, candidate, fallbackProvider) {
|
|
216
|
+
const resolvedProvider = typeof candidate.provider === 'string' && candidate.provider.trim().length > 0
|
|
217
|
+
? candidate.provider
|
|
218
|
+
: typeof candidate.adapter === 'string' && candidate.adapter.trim().length > 0
|
|
219
|
+
? candidate.adapter
|
|
220
|
+
: fallbackProvider;
|
|
221
|
+
return validateRoleConfig({
|
|
222
|
+
id: roleId,
|
|
223
|
+
model: candidate.model,
|
|
224
|
+
provider: resolvedProvider,
|
|
225
|
+
skills: Array.isArray(candidate.skills) ? candidate.skills : [],
|
|
226
|
+
tools: Array.isArray(candidate.tools) ? candidate.tools : [],
|
|
227
|
+
instructions: typeof candidate.instructions === 'string' ? candidate.instructions : '',
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=agentLifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentLifecycle.js","sourceRoot":"","sources":["../../src/core/agentLifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Area } from '../core/workItemModel.js';
|
|
2
|
+
/**
|
|
3
|
+
* Map a canonical Area to its project / repo id slug. The switch is exhaustive
|
|
4
|
+
* over `Area`; an unknown value (only reachable when callers widen the input)
|
|
5
|
+
* yields undefined.
|
|
6
|
+
*/
|
|
7
|
+
export declare function areaToProjectId(area: Area): string;
|
|
8
|
+
export declare function areaToProjectId(area: string | undefined): string | undefined;
|
|
9
|
+
//# sourceMappingURL=areaMapping.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"areaMapping.d.ts","sourceRoot":"","sources":["../../src/core/areaMapping.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAEpD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAAC;AACpD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// ============================================
|
|
2
|
+
// EnactFactory - Area -> Project/Repo id mapping
|
|
3
|
+
// ============================================
|
|
4
|
+
//
|
|
5
|
+
// Single source of truth for the EXPLICIT, hardcoded mapping from a canonical
|
|
6
|
+
// Area (e.g. 'Enact/Factory') to its repo / project id slug (e.g.
|
|
7
|
+
// 'enact-factory'). The mapping is intentionally NOT inferred generically: the
|
|
8
|
+
// `/`->`-` transform happens to hold for the enact-factory layout but is not
|
|
9
|
+
// safe for other deployments, so the table stays explicit.
|
|
10
|
+
//
|
|
11
|
+
// Consumed by src/factory/http.ts (workspace id resolution) and
|
|
12
|
+
// src/azureDevOps/hierarchy.ts (Epic naming / repo resolution).
|
|
13
|
+
export function areaToProjectId(area) {
|
|
14
|
+
switch (area) {
|
|
15
|
+
case 'Enact/CLI':
|
|
16
|
+
return 'enact-cli';
|
|
17
|
+
case 'Enact/Context':
|
|
18
|
+
return 'enact-context';
|
|
19
|
+
case 'Enact/Factory':
|
|
20
|
+
return 'enact-factory';
|
|
21
|
+
case 'Enact/Gateway':
|
|
22
|
+
return 'enact-gateway';
|
|
23
|
+
case 'Enact/Wiki':
|
|
24
|
+
return 'enact-wiki';
|
|
25
|
+
case 'Enact/Mission Control':
|
|
26
|
+
return 'enact-mission-control';
|
|
27
|
+
case 'Enact/Proc Tap':
|
|
28
|
+
return 'enact-proc-tap';
|
|
29
|
+
case 'Enact/Runtime':
|
|
30
|
+
return 'enact-runtime';
|
|
31
|
+
case 'Enact/Watchdog':
|
|
32
|
+
return 'enact-watchdog';
|
|
33
|
+
default:
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=areaMapping.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"areaMapping.js","sourceRoot":"","sources":["../../src/core/areaMapping.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,iDAAiD;AACjD,+CAA+C;AAC/C,EAAE;AACF,8EAA8E;AAC9E,kEAAkE;AAClE,+EAA+E;AAC/E,6EAA6E;AAC7E,2DAA2D;AAC3D,EAAE;AACF,gEAAgE;AAChE,gEAAgE;AAWhE,MAAM,UAAU,eAAe,CAAC,IAA+B;IAC7D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,WAAW;YACd,OAAO,WAAW,CAAC;QACrB,KAAK,eAAe;YAClB,OAAO,eAAe,CAAC;QACzB,KAAK,eAAe;YAClB,OAAO,eAAe,CAAC;QACzB,KAAK,eAAe;YAClB,OAAO,eAAe,CAAC;QACzB,KAAK,YAAY;YACf,OAAO,YAAY,CAAC;QACtB,KAAK,uBAAuB;YAC1B,OAAO,uBAAuB,CAAC;QACjC,KAAK,gBAAgB;YACnB,OAAO,gBAAgB,CAAC;QAC1B,KAAK,eAAe;YAClB,OAAO,eAAe,CAAC;QACzB,KAAK,gBAAgB;YACnB,OAAO,gBAAgB,CAAC;QAC1B;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC"}
|