@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,28 @@
|
|
|
1
|
+
import { type AzdoSyncConfig, type AzdoSyncService } from '../workItems/azureDevOpsSync.js';
|
|
2
|
+
/** True when the rejection looks like a transient DB/connection error. */
|
|
3
|
+
export declare function isTransientDbError(reason: unknown): boolean;
|
|
4
|
+
/**
|
|
5
|
+
* The unhandledRejection guard handler. Exported for direct unit testing of the
|
|
6
|
+
* swallow-vs-rethrow decision. Swallows transient DB-down rejections (logs +
|
|
7
|
+
* marks degraded); re-throws everything else so Node's default handler crashes
|
|
8
|
+
* loudly. Must never mask genuine defects.
|
|
9
|
+
*/
|
|
10
|
+
export declare function handleUnhandledRejection(reason: unknown): void;
|
|
11
|
+
/**
|
|
12
|
+
* Start the AzDO heartbeat sync service in-process, exactly once.
|
|
13
|
+
*
|
|
14
|
+
* Idempotent: subsequent calls (e.g. from both the daemon and the web server)
|
|
15
|
+
* return the already-running service without starting a second heartbeat.
|
|
16
|
+
*
|
|
17
|
+
* @returns the running service, or null when AzDO sync is disabled in config.
|
|
18
|
+
*/
|
|
19
|
+
export declare function ensureAzdoSyncStarted(config: AzdoSyncConfig | undefined): Promise<AzdoSyncService | null>;
|
|
20
|
+
/** True if the in-process AzDO sync heartbeat is currently running. */
|
|
21
|
+
export declare function isAzdoSyncRunning(): boolean;
|
|
22
|
+
/** The running AzDO sync service, or null when not started. */
|
|
23
|
+
export declare function getAzdoSyncService(): AzdoSyncService | null;
|
|
24
|
+
/** Stop the in-process AzDO sync heartbeat if running. Idempotent. */
|
|
25
|
+
export declare function stopAzdoSync(): Promise<void>;
|
|
26
|
+
/** Test-only: reset the singleton without touching a live service. */
|
|
27
|
+
export declare function __resetAzdoSyncForTests(): void;
|
|
28
|
+
//# sourceMappingURL=azdoSyncRuntime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"azdoSyncRuntime.d.ts","sourceRoot":"","sources":["../../src/workItems/azdoSyncRuntime.ts"],"names":[],"mappings":"AAgBA,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,eAAe,EACrB,MAAM,gCAAgC,CAAC;AAqBxC,0EAA0E;AAC1E,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAO3D;AAOD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAU9D;AASD;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,cAAc,GAAG,SAAS,GACjC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CA4DjC;AAED,uEAAuE;AACvE,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED,+DAA+D;AAC/D,wBAAgB,kBAAkB,IAAI,eAAe,GAAG,IAAI,CAE3D;AAED,sEAAsE;AACtE,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAMlD;AAED,sEAAsE;AACtE,wBAAgB,uBAAuB,IAAI,IAAI,CAK9C"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
// ============================================
|
|
2
|
+
// EnactFactory - Shared AzDO Sync Runtime
|
|
3
|
+
// Single, process-wide owner of the in-process AzDO heartbeat sync service.
|
|
4
|
+
//
|
|
5
|
+
// Both the daemon (`enact-factory start`, src/core/service.ts) and the
|
|
6
|
+
// dashboard web server (`startWebServer`, used by `enact-factory dash` and the
|
|
7
|
+
// daemon) start sync identically through this helper. A module-level singleton
|
|
8
|
+
// guard ensures the heartbeat is started exactly once even when both paths run
|
|
9
|
+
// in the same process (e.g. the daemon, which boots both the web server and the
|
|
10
|
+
// service). Opening the dashboard via EITHER command keeps Postgres live and
|
|
11
|
+
// gives instant in-process SSE.
|
|
12
|
+
// ============================================
|
|
13
|
+
import { createAzdoClient } from '../azureDevOps/client.js';
|
|
14
|
+
import { getEventHub } from '../core/eventHub.js';
|
|
15
|
+
import { getWorkItemStore } from '../workItems/index.js';
|
|
16
|
+
import { createAzdoSyncService, makePATFetcher, makeAzCliTokenFetcher, } from '../workItems/azureDevOpsSync.js';
|
|
17
|
+
// Lazily imported to avoid a circular dep (web → azdoSyncRuntime → web).
|
|
18
|
+
// We update the DB health flag in web.ts when store errors occur.
|
|
19
|
+
async function reportDbHealth(ok) {
|
|
20
|
+
try {
|
|
21
|
+
const { setDbHealthy } = await import('../support/web.js');
|
|
22
|
+
setDbHealthy(ok);
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
// web module may not be loaded in test/CLI contexts — ignore
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
let azdoSyncService = null;
|
|
29
|
+
let startInFlight = null;
|
|
30
|
+
// Transient DB/connection error codes from the store/pg pool. Only these are
|
|
31
|
+
// tolerated when they surface as unhandled rejections — everything else must
|
|
32
|
+
// crash loudly so genuine bugs aren't masked.
|
|
33
|
+
const DB_TRANSIENT_ERROR_CODES = ['ECONNREFUSED', 'ECONNRESET', 'ETIMEDOUT', 'EPIPE'];
|
|
34
|
+
/** True when the rejection looks like a transient DB/connection error. */
|
|
35
|
+
export function isTransientDbError(reason) {
|
|
36
|
+
const code = reason?.code;
|
|
37
|
+
if (typeof code === 'string' && DB_TRANSIENT_ERROR_CODES.includes(code)) {
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
const msg = reason instanceof Error ? reason.message : String(reason);
|
|
41
|
+
return typeof msg === 'string' && DB_TRANSIENT_ERROR_CODES.some((c) => msg.includes(c));
|
|
42
|
+
}
|
|
43
|
+
// Process-level safety net SCOPED TO DB-DOWN ONLY. Transient store/pg connection
|
|
44
|
+
// errors (ECONNREFUSED etc.) that escape as unhandled rejections are tolerated:
|
|
45
|
+
// we log a warning and mark the DB degraded, but do NOT exit. EVERY other
|
|
46
|
+
// unhandled rejection is left untouched so Node's default handler still fires
|
|
47
|
+
// (loud crash + stack trace) — this guard must never mask genuine defects.
|
|
48
|
+
/**
|
|
49
|
+
* The unhandledRejection guard handler. Exported for direct unit testing of the
|
|
50
|
+
* swallow-vs-rethrow decision. Swallows transient DB-down rejections (logs +
|
|
51
|
+
* marks degraded); re-throws everything else so Node's default handler crashes
|
|
52
|
+
* loudly. Must never mask genuine defects.
|
|
53
|
+
*/
|
|
54
|
+
export function handleUnhandledRejection(reason) {
|
|
55
|
+
if (isTransientDbError(reason)) {
|
|
56
|
+
const msg = reason instanceof Error ? reason.message : String(reason);
|
|
57
|
+
console.warn('[AzdoSync] Unhandled DB rejection (transient connection error) — DB is down, sync will retry:', msg);
|
|
58
|
+
void reportDbHealth(false);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
// Not a DB-down transient — re-surface to Node's default handler so it
|
|
62
|
+
// crashes loudly with a stack trace. Do NOT swallow real bugs.
|
|
63
|
+
throw reason;
|
|
64
|
+
}
|
|
65
|
+
let _unhandledRejectionInstalled = false;
|
|
66
|
+
function installUnhandledRejectionGuard() {
|
|
67
|
+
if (_unhandledRejectionInstalled)
|
|
68
|
+
return;
|
|
69
|
+
_unhandledRejectionInstalled = true;
|
|
70
|
+
process.on('unhandledRejection', (reason) => handleUnhandledRejection(reason));
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Start the AzDO heartbeat sync service in-process, exactly once.
|
|
74
|
+
*
|
|
75
|
+
* Idempotent: subsequent calls (e.g. from both the daemon and the web server)
|
|
76
|
+
* return the already-running service without starting a second heartbeat.
|
|
77
|
+
*
|
|
78
|
+
* @returns the running service, or null when AzDO sync is disabled in config.
|
|
79
|
+
*/
|
|
80
|
+
export async function ensureAzdoSyncStarted(config) {
|
|
81
|
+
if (!config?.enabled) {
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
if (azdoSyncService) {
|
|
85
|
+
return azdoSyncService;
|
|
86
|
+
}
|
|
87
|
+
if (startInFlight) {
|
|
88
|
+
return startInFlight;
|
|
89
|
+
}
|
|
90
|
+
// Install the unhandledRejection guard before any async DB work starts.
|
|
91
|
+
installUnhandledRejectionGuard();
|
|
92
|
+
startInFlight = (async () => {
|
|
93
|
+
const fetchToken = config.authStrategy === 'pat'
|
|
94
|
+
? makePATFetcher(config.patEnvVar ?? 'AZDO_PAT')
|
|
95
|
+
: makeAzCliTokenFetcher('amsterdamdatalabs.com');
|
|
96
|
+
const azdoClient = createAzdoClient({
|
|
97
|
+
organization: config.organization,
|
|
98
|
+
project: config.project,
|
|
99
|
+
fetchToken,
|
|
100
|
+
});
|
|
101
|
+
let store;
|
|
102
|
+
try {
|
|
103
|
+
store = await getWorkItemStore();
|
|
104
|
+
}
|
|
105
|
+
catch (err) {
|
|
106
|
+
console.warn('[AzdoSync] Store unavailable at startup, sync will not start:', err instanceof Error ? err.message : err);
|
|
107
|
+
void reportDbHealth(false);
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
const service = createAzdoSyncService({
|
|
111
|
+
client: azdoClient,
|
|
112
|
+
store,
|
|
113
|
+
config,
|
|
114
|
+
events: getEventHub(),
|
|
115
|
+
fetchToken,
|
|
116
|
+
});
|
|
117
|
+
try {
|
|
118
|
+
await service.start();
|
|
119
|
+
}
|
|
120
|
+
catch (err) {
|
|
121
|
+
console.warn('[AzdoSync] Initial sync failed (service still started, heartbeat will retry):', err instanceof Error ? err.message : err);
|
|
122
|
+
void reportDbHealth(false);
|
|
123
|
+
}
|
|
124
|
+
azdoSyncService = service;
|
|
125
|
+
console.log(`[AzdoSync] Heartbeat started (org: ${config.organization}, project: ${config.project}, interval: ${config.intervalMs}ms)`);
|
|
126
|
+
return service;
|
|
127
|
+
})();
|
|
128
|
+
try {
|
|
129
|
+
return await startInFlight;
|
|
130
|
+
}
|
|
131
|
+
finally {
|
|
132
|
+
startInFlight = null;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/** True if the in-process AzDO sync heartbeat is currently running. */
|
|
136
|
+
export function isAzdoSyncRunning() {
|
|
137
|
+
return azdoSyncService !== null;
|
|
138
|
+
}
|
|
139
|
+
/** The running AzDO sync service, or null when not started. */
|
|
140
|
+
export function getAzdoSyncService() {
|
|
141
|
+
return azdoSyncService;
|
|
142
|
+
}
|
|
143
|
+
/** Stop the in-process AzDO sync heartbeat if running. Idempotent. */
|
|
144
|
+
export async function stopAzdoSync() {
|
|
145
|
+
if (azdoSyncService) {
|
|
146
|
+
await azdoSyncService.stop();
|
|
147
|
+
azdoSyncService = null;
|
|
148
|
+
console.log('[AzdoSync] Heartbeat stopped');
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/** Test-only: reset the singleton without touching a live service. */
|
|
152
|
+
export function __resetAzdoSyncForTests() {
|
|
153
|
+
azdoSyncService = null;
|
|
154
|
+
startInFlight = null;
|
|
155
|
+
// Don't reset _unhandledRejectionInstalled — re-installing the same handler on every
|
|
156
|
+
// test would leak listeners. The guard is idempotent once installed.
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=azdoSyncRuntime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"azdoSyncRuntime.js","sourceRoot":"","sources":["../../src/workItems/azdoSyncRuntime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import type { AzdoClient } from '../azureDevOps/client.js';
|
|
2
|
+
import type { AzdoFieldNames } from '../azureDevOps/mapper.js';
|
|
3
|
+
import type { IWorkItemStore } from '../workItems/sqliteStore.js';
|
|
4
|
+
import type { WorkItemRecord } from '../workItems/schema.js';
|
|
5
|
+
import { EventEmitter } from 'node:events';
|
|
6
|
+
/**
|
|
7
|
+
* ⚠️ PROCESS-TEMPLATE ASSUMPTION (Scrum-only): the pull path maps AzDO System.State
|
|
8
|
+
* → local status via a HARDCODED Scrum-template map in `azdoToWorkItemRecord`
|
|
9
|
+
* (mapper.ts). An unmapped state now THROWS (fail-loudly) instead of defaulting, so a
|
|
10
|
+
* workspace on a non-Scrum template (Agile / CMMI / custom) would make every item
|
|
11
|
+
* throw MapperError and never sync. `terminalStates` below is similarly Scrum-defaulted.
|
|
12
|
+
* Supporting other templates requires making the state→status map (and terminalStates)
|
|
13
|
+
* configurable here. See the matching note on `statusMap` in mapper.ts.
|
|
14
|
+
*/
|
|
15
|
+
export interface AzdoSyncConfig {
|
|
16
|
+
enabled: boolean;
|
|
17
|
+
organization: string;
|
|
18
|
+
project: string;
|
|
19
|
+
intervalMs: number;
|
|
20
|
+
authStrategy: 'pat' | 'az-cli';
|
|
21
|
+
patEnvVar?: string;
|
|
22
|
+
fieldNames?: Partial<AzdoFieldNames>;
|
|
23
|
+
areaFilter?: string;
|
|
24
|
+
azdoStateToStatus?: Partial<Record<string, WorkItemRecord['status']>>;
|
|
25
|
+
statusToAzdoState?: Partial<Record<WorkItemRecord['status'], string>>;
|
|
26
|
+
/**
|
|
27
|
+
* AzDO states that count as terminal (closed). "Open" = NOT in this set.
|
|
28
|
+
* Drives both the open-only WIQL filter and the reconcile's closed-item
|
|
29
|
+
* detection so they can't drift. Defaults to AZDO_TERMINAL_STATES
|
|
30
|
+
* (['Done', 'Removed'] — the Scrum process template) when omitted.
|
|
31
|
+
*/
|
|
32
|
+
terminalStates?: readonly string[];
|
|
33
|
+
}
|
|
34
|
+
export interface SyncResult {
|
|
35
|
+
pulled: number;
|
|
36
|
+
pushed: number;
|
|
37
|
+
conflicts: number;
|
|
38
|
+
errors: SyncError[];
|
|
39
|
+
durationMs: number;
|
|
40
|
+
}
|
|
41
|
+
export interface SyncError {
|
|
42
|
+
workItemId: string;
|
|
43
|
+
message: string;
|
|
44
|
+
}
|
|
45
|
+
export interface SyncStatus {
|
|
46
|
+
lastSuccessAt: number | null;
|
|
47
|
+
lastErrorAt: number | null;
|
|
48
|
+
lastError?: string;
|
|
49
|
+
running: boolean;
|
|
50
|
+
isStale: boolean;
|
|
51
|
+
}
|
|
52
|
+
export type SyncMode = 'incremental' | 'full';
|
|
53
|
+
export interface SyncOnceOptions {
|
|
54
|
+
/**
|
|
55
|
+
* 'incremental' (default) — query only items changed since the stored
|
|
56
|
+
* watermark and skip orphan pruning. 'full' — query the complete id set and
|
|
57
|
+
* prune orphans. Boot, the manual refresh button, and the periodic reconcile
|
|
58
|
+
* use 'full'; the heartbeat uses 'incremental'.
|
|
59
|
+
*/
|
|
60
|
+
mode?: SyncMode;
|
|
61
|
+
}
|
|
62
|
+
export interface AzdoSyncService {
|
|
63
|
+
start(): Promise<void>;
|
|
64
|
+
stop(): Promise<void>;
|
|
65
|
+
syncOnce(opts?: SyncOnceOptions): Promise<SyncResult>;
|
|
66
|
+
pushLocalChange(workItemId: string): Promise<void>;
|
|
67
|
+
getStatus(): SyncStatus;
|
|
68
|
+
}
|
|
69
|
+
export type WorkItemStore = IWorkItemStore;
|
|
70
|
+
export type EventHub = EventEmitter;
|
|
71
|
+
export interface DrainPushQueueOptions {
|
|
72
|
+
/** Maximum push attempts per queue entry before giving up. Default: 3. */
|
|
73
|
+
maxAttemptsPerEntry?: number;
|
|
74
|
+
/** Base delay in ms for exponential backoff between retries. Default: 1000. */
|
|
75
|
+
backoffMs?: number;
|
|
76
|
+
}
|
|
77
|
+
export interface DrainResult {
|
|
78
|
+
/** Number of entries successfully pushed and marked drained. */
|
|
79
|
+
drained: number;
|
|
80
|
+
/** Entries that exhausted all attempts; remain in queue for the next pass. */
|
|
81
|
+
errors: Array<{
|
|
82
|
+
entryId: string;
|
|
83
|
+
workItemId: string;
|
|
84
|
+
attempts: number;
|
|
85
|
+
lastError: string;
|
|
86
|
+
}>;
|
|
87
|
+
}
|
|
88
|
+
export interface AzdoSyncContext {
|
|
89
|
+
client: AzdoClient;
|
|
90
|
+
store: WorkItemStore;
|
|
91
|
+
config: AzdoSyncConfig;
|
|
92
|
+
events: EventHub;
|
|
93
|
+
fetchToken: () => Promise<string>;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Drains the workitem-push-queue at `root` by calling pushLocalChange for
|
|
97
|
+
* each pending entry. Entries that succeed are marked drained. Entries that
|
|
98
|
+
* exhaust all attempts remain in the queue and are reported in result.errors.
|
|
99
|
+
*
|
|
100
|
+
* Exponential backoff: delay = backoffMs * 2^attempt (capped at 30 000 ms).
|
|
101
|
+
*/
|
|
102
|
+
export declare function drainWorkItemPushQueue(root: string, context: AzdoSyncContext, options?: DrainPushQueueOptions): Promise<DrainResult>;
|
|
103
|
+
export declare const AZDO_TERMINAL_STATES: readonly ["Done", "Removed"];
|
|
104
|
+
export declare function makePATFetcher(patEnvVar: string): () => Promise<string>;
|
|
105
|
+
export declare function makeAzCliTokenFetcher(tenant?: string): () => Promise<string>;
|
|
106
|
+
/**
|
|
107
|
+
* Build an AzdoSyncContext from workspace config.
|
|
108
|
+
* Organization / project come from config.toml; PAT remains a secret env var.
|
|
109
|
+
*/
|
|
110
|
+
export declare function buildAzdoSyncContextFromConfig(store: WorkItemStore): AzdoSyncContext;
|
|
111
|
+
export interface AzdoSyncServiceOptions {
|
|
112
|
+
/**
|
|
113
|
+
* When true (default), the periodic sync loop calls drainWorkItemPushQueue
|
|
114
|
+
* after each successful syncOnce tick. Errors during drain are logged and
|
|
115
|
+
* do NOT crash the service. Set to false to disable in tests or special contexts.
|
|
116
|
+
*/
|
|
117
|
+
drainPushQueueAfterSync?: boolean;
|
|
118
|
+
/** Root directory for the push-queue file. Required when drainPushQueueAfterSync is true. */
|
|
119
|
+
root?: string;
|
|
120
|
+
}
|
|
121
|
+
export declare function createAzdoSyncService(deps: {
|
|
122
|
+
client: AzdoClient;
|
|
123
|
+
store: WorkItemStore;
|
|
124
|
+
config: AzdoSyncConfig;
|
|
125
|
+
events: EventHub;
|
|
126
|
+
fetchToken: () => Promise<string>;
|
|
127
|
+
}, options?: AzdoSyncServiceOptions): AzdoSyncService;
|
|
128
|
+
//# sourceMappingURL=azureDevOpsSync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"azureDevOpsSync.d.ts","sourceRoot":"","sources":["../../src/workItems/azureDevOpsSync.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAgC,MAAM,yBAAyB,CAAC;AAExF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAY9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAS3C;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtE,iBAAiB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACtE;;;;;OAKG;IACH,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,MAAM,QAAQ,GAAG,aAAa,GAAG,MAAM,CAAC;AAE9C,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACtD,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,SAAS,IAAI,UAAU,CAAC;CACzB;AAGD,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC;AAG3C,MAAM,MAAM,QAAQ,GAAG,YAAY,CAAC;AAMpC,MAAM,WAAW,qBAAqB;IACpC,0EAA0E;IAC1E,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,MAAM,EAAE,KAAK,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;CACJ;AAGD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,QAAQ,CAAC;IACjB,UAAU,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CACnC;AAED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,eAAe,EACxB,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,WAAW,CAAC,CAmEtB;AAWD,eAAO,MAAM,oBAAoB,8BAA+B,CAAC;AA+NjE,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAQvE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAa5E;AAMD;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,aAAa,GAAG,eAAe,CA2BpF;AAMD,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,6FAA6F;IAC7F,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,QAAQ,CAAC;IACjB,UAAU,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CACnC,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,eAAe,CAydpD"}
|