@telora/daemon 0.15.2 → 0.15.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -11
- package/build-info.json +2 -2
- package/dist/assembly-engine.d.ts +1 -1
- package/dist/assembly-engine.d.ts.map +1 -1
- package/dist/assembly-resolvers.js +41 -41
- package/dist/assembly-resolvers.js.map +1 -1
- package/dist/branch-status.d.ts +4 -4
- package/dist/branch-status.d.ts.map +1 -1
- package/dist/branch-status.js +23 -23
- package/dist/branch-status.js.map +1 -1
- package/dist/cli/connect.js +1 -1
- package/dist/cli/connect.js.map +1 -1
- package/dist/completion-detector.d.ts +1 -1
- package/dist/completion-detector.js +1 -1
- package/dist/completion-handler.d.ts +1 -1
- package/dist/completion-handler.js +4 -4
- package/dist/completion-handler.js.map +1 -1
- package/dist/condition-evaluators.js +4 -4
- package/dist/condition-evaluators.js.map +1 -1
- package/dist/control-state.d.ts +6 -6
- package/dist/control-state.d.ts.map +1 -1
- package/dist/control-state.js +43 -43
- package/dist/control-state.js.map +1 -1
- package/dist/crash-recovery-scan.d.ts +1 -1
- package/dist/crash-recovery-scan.js +20 -20
- package/dist/crash-recovery-scan.js.map +1 -1
- package/dist/crash-recovery-types.d.ts +3 -3
- package/dist/crash-recovery-types.d.ts.map +1 -1
- package/dist/crash-recovery-types.js +2 -2
- package/dist/crash-recovery-types.js.map +1 -1
- package/dist/crash-recovery.d.ts +3 -3
- package/dist/crash-recovery.d.ts.map +1 -1
- package/dist/crash-recovery.js +21 -21
- package/dist/crash-recovery.js.map +1 -1
- package/dist/daemon-process.d.ts +1 -1
- package/dist/daemon-process.d.ts.map +1 -1
- package/dist/dag-validator.d.ts +6 -6
- package/dist/dag-validator.d.ts.map +1 -1
- package/dist/dag-validator.js +2 -2
- package/dist/dag-validator.js.map +1 -1
- package/dist/delivery-guards.d.ts +1 -1
- package/dist/delivery-guards.js +1 -1
- package/dist/delivery-lifecycle.d.ts +5 -5
- package/dist/delivery-lifecycle.d.ts.map +1 -1
- package/dist/delivery-lifecycle.js +12 -12
- package/dist/delivery-lifecycle.js.map +1 -1
- package/dist/delivery-merge.js +1 -1
- package/dist/delivery-merge.js.map +1 -1
- package/dist/dependency-resolver.d.ts +7 -7
- package/dist/dependency-resolver.d.ts.map +1 -1
- package/dist/dependency-resolver.js.map +1 -1
- package/dist/directive-executor.d.ts +32 -17
- package/dist/directive-executor.d.ts.map +1 -1
- package/dist/directive-executor.js +119 -78
- package/dist/directive-executor.js.map +1 -1
- package/dist/evaluation-context.d.ts +2 -2
- package/dist/evaluation-context.d.ts.map +1 -1
- package/dist/evaluation-context.js +4 -4
- package/dist/evaluation-context.js.map +1 -1
- package/dist/focus-completion-event.d.ts +97 -0
- package/dist/focus-completion-event.d.ts.map +1 -0
- package/dist/focus-completion-event.js +257 -0
- package/dist/focus-completion-event.js.map +1 -0
- package/dist/{strategy-completion.d.ts → focus-completion.d.ts} +11 -11
- package/dist/focus-completion.d.ts.map +1 -0
- package/dist/{strategy-completion.js → focus-completion.js} +68 -68
- package/dist/focus-completion.js.map +1 -0
- package/dist/{strategy-engine.d.ts → focus-engine.d.ts} +5 -5
- package/dist/focus-engine.d.ts.map +1 -0
- package/dist/{strategy-engine.js → focus-engine.js} +35 -35
- package/dist/focus-engine.js.map +1 -0
- package/dist/focus-executor.d.ts +55 -0
- package/dist/focus-executor.d.ts.map +1 -0
- package/dist/{strategy-executor.js → focus-executor.js} +167 -120
- package/dist/focus-executor.js.map +1 -0
- package/dist/focus-lifecycle.d.ts +61 -0
- package/dist/focus-lifecycle.d.ts.map +1 -0
- package/dist/{strategy-lifecycle.js → focus-lifecycle.js} +164 -164
- package/dist/focus-lifecycle.js.map +1 -0
- package/dist/{strategy-merge.d.ts → focus-merge.d.ts} +10 -10
- package/dist/focus-merge.d.ts.map +1 -0
- package/dist/{strategy-merge.js → focus-merge.js} +51 -51
- package/dist/focus-merge.js.map +1 -0
- package/dist/focus-phase.d.ts +22 -0
- package/dist/focus-phase.d.ts.map +1 -0
- package/dist/focus-phase.js +54 -0
- package/dist/focus-phase.js.map +1 -0
- package/dist/focus-prompt-builder.d.ts +35 -0
- package/dist/focus-prompt-builder.d.ts.map +1 -0
- package/dist/{strategy-prompt-builder.js → focus-prompt-builder.js} +55 -4
- package/dist/focus-prompt-builder.js.map +1 -0
- package/dist/focus-provisioning.d.ts +16 -0
- package/dist/focus-provisioning.d.ts.map +1 -0
- package/dist/focus-provisioning.js +119 -0
- package/dist/focus-provisioning.js.map +1 -0
- package/dist/{strategy-spawn-helpers.d.ts → focus-spawn-helpers.d.ts} +15 -15
- package/dist/focus-spawn-helpers.d.ts.map +1 -0
- package/dist/{strategy-spawn-helpers.js → focus-spawn-helpers.js} +28 -28
- package/dist/focus-spawn-helpers.js.map +1 -0
- package/dist/{strategy-team-lifecycle.d.ts → focus-team-lifecycle.d.ts} +13 -13
- package/dist/focus-team-lifecycle.d.ts.map +1 -0
- package/dist/{strategy-team-lifecycle.js → focus-team-lifecycle.js} +57 -57
- package/dist/focus-team-lifecycle.js.map +1 -0
- package/dist/focus-team-state.d.ts +24 -0
- package/dist/focus-team-state.d.ts.map +1 -0
- package/dist/{strategy-team-state.js → focus-team-state.js} +9 -9
- package/dist/focus-team-state.js.map +1 -0
- package/dist/focus-worktree-state.d.ts +47 -0
- package/dist/focus-worktree-state.d.ts.map +1 -0
- package/dist/{strategy-worktree-state.js → focus-worktree-state.js} +29 -29
- package/dist/focus-worktree-state.js.map +1 -0
- package/dist/git-merge.d.ts +5 -5
- package/dist/git-merge.d.ts.map +1 -1
- package/dist/git-merge.js +5 -5
- package/dist/git-merge.js.map +1 -1
- package/dist/git-state-detector.d.ts +1 -1
- package/dist/git-state-detector.js +9 -9
- package/dist/git-state-detector.js.map +1 -1
- package/dist/git-utils.d.ts +1 -1
- package/dist/git-utils.js +1 -1
- package/dist/git.d.ts +2 -2
- package/dist/git.d.ts.map +1 -1
- package/dist/git.js +3 -3
- package/dist/git.js.map +1 -1
- package/dist/heartbeat.d.ts +4 -4
- package/dist/heartbeat.d.ts.map +1 -1
- package/dist/heartbeat.js +7 -7
- package/dist/heartbeat.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +10 -10
- package/dist/index.js.map +1 -1
- package/dist/listener-auto-advance.d.ts +2 -2
- package/dist/listener-auto-advance.js +21 -21
- package/dist/listener-auto-advance.js.map +1 -1
- package/dist/listener.d.ts +12 -12
- package/dist/listener.d.ts.map +1 -1
- package/dist/listener.js +80 -75
- package/dist/listener.js.map +1 -1
- package/dist/loop-engine.d.ts +20 -20
- package/dist/loop-engine.d.ts.map +1 -1
- package/dist/loop-engine.js +82 -82
- package/dist/loop-engine.js.map +1 -1
- package/dist/loop-event-bus.d.ts +5 -5
- package/dist/loop-event-bus.d.ts.map +1 -1
- package/dist/loop-event-bus.js +3 -3
- package/dist/loop-llm-client.d.ts +1 -1
- package/dist/loop-llm-client.js +1 -1
- package/dist/loop-variance.d.ts +1 -1
- package/dist/loop-variance.js +1 -1
- package/dist/merge-detector.d.ts +6 -6
- package/dist/merge-detector.d.ts.map +1 -1
- package/dist/merge-detector.js +47 -47
- package/dist/merge-detector.js.map +1 -1
- package/dist/otlp-log-parser.js +2 -2
- package/dist/otlp-log-parser.js.map +1 -1
- package/dist/otlp-metric-parser.js +1 -1
- package/dist/otlp-metric-parser.js.map +1 -1
- package/dist/otlp-receiver.d.ts +1 -1
- package/dist/otlp-receiver.js +7 -7
- package/dist/otlp-receiver.js.map +1 -1
- package/dist/otlp-types.d.ts +1 -1
- package/dist/otlp-types.d.ts.map +1 -1
- package/dist/otlp-types.js +3 -3
- package/dist/otlp-types.js.map +1 -1
- package/dist/output-monitor.d.ts +6 -6
- package/dist/output-monitor.d.ts.map +1 -1
- package/dist/output-monitor.js +11 -11
- package/dist/output-monitor.js.map +1 -1
- package/dist/planning-prompt-builder.d.ts +11 -11
- package/dist/planning-prompt-builder.d.ts.map +1 -1
- package/dist/planning-prompt-builder.js +28 -28
- package/dist/planning-prompt-builder.js.map +1 -1
- package/dist/pm/mitigation-correlator.d.ts +7 -7
- package/dist/pm/mitigation-correlator.d.ts.map +1 -1
- package/dist/pm/mitigation-correlator.js +33 -33
- package/dist/pm/mitigation-correlator.js.map +1 -1
- package/dist/pm-engine.js +1 -1
- package/dist/pm-engine.js.map +1 -1
- package/dist/prompt-builder.d.ts +1 -1
- package/dist/prompt-builder.js +9 -9
- package/dist/prompt-builder.js.map +1 -1
- package/dist/prompts/starter-prompt.d.ts +2 -2
- package/dist/prompts/starter-prompt.d.ts.map +1 -1
- package/dist/prompts/starter-prompt.js +6 -6
- package/dist/qa-crash-recovery.d.ts +10 -10
- package/dist/qa-crash-recovery.d.ts.map +1 -1
- package/dist/qa-crash-recovery.js +32 -32
- package/dist/qa-crash-recovery.js.map +1 -1
- package/dist/qa-dev-server.d.ts +3 -3
- package/dist/qa-dev-server.d.ts.map +1 -1
- package/dist/qa-dev-server.js +3 -3
- package/dist/qa-dev-server.js.map +1 -1
- package/dist/qa-orchestrator.d.ts +18 -18
- package/dist/qa-orchestrator.d.ts.map +1 -1
- package/dist/qa-orchestrator.js +47 -47
- package/dist/qa-orchestrator.js.map +1 -1
- package/dist/qa-provisioner.d.ts +3 -3
- package/dist/qa-provisioner.d.ts.map +1 -1
- package/dist/qa-provisioner.js +14 -14
- package/dist/qa-provisioner.js.map +1 -1
- package/dist/qa-state.d.ts +10 -10
- package/dist/qa-state.d.ts.map +1 -1
- package/dist/qa-state.js +11 -11
- package/dist/qa-state.js.map +1 -1
- package/dist/queries/control-state.d.ts +5 -5
- package/dist/queries/control-state.d.ts.map +1 -1
- package/dist/queries/control-state.js +4 -4
- package/dist/queries/control-state.js.map +1 -1
- package/dist/queries/deliveries.d.ts +24 -23
- package/dist/queries/deliveries.d.ts.map +1 -1
- package/dist/queries/deliveries.js +30 -29
- package/dist/queries/deliveries.js.map +1 -1
- package/dist/queries/{strategies.d.ts → focuses.d.ts} +24 -21
- package/dist/queries/focuses.d.ts.map +1 -0
- package/dist/queries/{strategies.js → focuses.js} +39 -31
- package/dist/queries/focuses.js.map +1 -0
- package/dist/queries/index.d.ts +3 -3
- package/dist/queries/index.d.ts.map +1 -1
- package/dist/queries/index.js +2 -2
- package/dist/queries/index.js.map +1 -1
- package/dist/queries/qa.d.ts +16 -16
- package/dist/queries/qa.d.ts.map +1 -1
- package/dist/queries/qa.js +22 -22
- package/dist/queries/qa.js.map +1 -1
- package/dist/queries/schemas.d.ts +36 -30
- package/dist/queries/schemas.d.ts.map +1 -1
- package/dist/queries/schemas.js +28 -25
- package/dist/queries/schemas.js.map +1 -1
- package/dist/queries/sessions.d.ts +1 -1
- package/dist/queries/sessions.d.ts.map +1 -1
- package/dist/queries/sessions.js +2 -2
- package/dist/queries/sessions.js.map +1 -1
- package/dist/queries/shared.js +10 -10
- package/dist/queries/shared.js.map +1 -1
- package/dist/queries/workflows.d.ts +1 -1
- package/dist/queries/workflows.js +1 -1
- package/dist/queries/worktrees.d.ts +7 -7
- package/dist/queries/worktrees.d.ts.map +1 -1
- package/dist/queries/worktrees.js +7 -7
- package/dist/queries/worktrees.js.map +1 -1
- package/dist/review-defect-detector.d.ts +125 -0
- package/dist/review-defect-detector.d.ts.map +1 -0
- package/dist/review-defect-detector.js +289 -0
- package/dist/review-defect-detector.js.map +1 -0
- package/dist/session-lifecycle.d.ts +17 -17
- package/dist/session-lifecycle.d.ts.map +1 -1
- package/dist/session-lifecycle.js +82 -82
- package/dist/session-lifecycle.js.map +1 -1
- package/dist/spawn-cooldown.d.ts +8 -8
- package/dist/spawn-cooldown.d.ts.map +1 -1
- package/dist/spawn-cooldown.js +15 -15
- package/dist/spawn-cooldown.js.map +1 -1
- package/dist/spawn-environment.d.ts +2 -2
- package/dist/spawn-environment.d.ts.map +1 -1
- package/dist/spawn-environment.js +3 -3
- package/dist/spawn-environment.js.map +1 -1
- package/dist/spawner-lifecycle.d.ts +2 -2
- package/dist/spawner-lifecycle.d.ts.map +1 -1
- package/dist/spawner-lifecycle.js +3 -3
- package/dist/spawner-lifecycle.js.map +1 -1
- package/dist/spawner-resolution.d.ts +3 -3
- package/dist/spawner-resolution.d.ts.map +1 -1
- package/dist/spawner-resolution.js +4 -4
- package/dist/spawner-resolution.js.map +1 -1
- package/dist/spawner-stream-handlers.js +2 -2
- package/dist/spawner-stream-handlers.js.map +1 -1
- package/dist/spawner.d.ts +1 -1
- package/dist/spawner.d.ts.map +1 -1
- package/dist/spawner.js +6 -6
- package/dist/spawner.js.map +1 -1
- package/dist/stage-classifier.d.ts +1 -1
- package/dist/stage-classifier.js +1 -1
- package/dist/state-cascade.d.ts +25 -25
- package/dist/state-cascade.d.ts.map +1 -1
- package/dist/state-cascade.js +89 -89
- package/dist/state-cascade.js.map +1 -1
- package/dist/supabase.d.ts +4 -4
- package/dist/supabase.d.ts.map +1 -1
- package/dist/supabase.js +5 -5
- package/dist/supabase.js.map +1 -1
- package/dist/task-converter.d.ts +4 -4
- package/dist/task-converter.d.ts.map +1 -1
- package/dist/task-converter.js +1 -1
- package/dist/task-converter.js.map +1 -1
- package/dist/team-prompt-base.d.ts +49 -22
- package/dist/team-prompt-base.d.ts.map +1 -1
- package/dist/team-prompt-base.js +96 -32
- package/dist/team-prompt-base.js.map +1 -1
- package/dist/team-spawner.d.ts +9 -9
- package/dist/team-spawner.d.ts.map +1 -1
- package/dist/team-spawner.js +84 -82
- package/dist/team-spawner.js.map +1 -1
- package/dist/telemetry-writer.d.ts +2 -2
- package/dist/telemetry-writer.d.ts.map +1 -1
- package/dist/templates/claude-md.js +8 -8
- package/dist/templates/claude-settings.d.ts +1 -1
- package/dist/templates/claude-settings.js +2 -2
- package/dist/templates/claude-settings.js.map +1 -1
- package/dist/trigger-executor.d.ts +4 -4
- package/dist/trigger-executor.d.ts.map +1 -1
- package/dist/trigger-executor.js +11 -11
- package/dist/trigger-executor.js.map +1 -1
- package/dist/types/dag.d.ts +1 -1
- package/dist/types/delivery.d.ts +3 -3
- package/dist/types/delivery.d.ts.map +1 -1
- package/dist/types/{strategy.d.ts → focus.d.ts} +65 -31
- package/dist/types/focus.d.ts.map +1 -0
- package/dist/types/focus.js +5 -0
- package/dist/types/focus.js.map +1 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/merge.d.ts +1 -1
- package/dist/types/session.d.ts +2 -2
- package/dist/types/session.d.ts.map +1 -1
- package/dist/unified-engine-lifecycle.js +11 -11
- package/dist/unified-engine-lifecycle.js.map +1 -1
- package/dist/unified-init.d.ts +1 -1
- package/dist/unified-init.js +9 -9
- package/dist/unified-init.js.map +1 -1
- package/dist/unified-shell-config.d.ts +4 -4
- package/dist/unified-shell-config.d.ts.map +1 -1
- package/dist/unified-shell-config.js +5 -5
- package/dist/unified-shell-config.js.map +1 -1
- package/dist/unified-shell-status.js +3 -3
- package/dist/unified-shell-status.js.map +1 -1
- package/dist/unified-shell.d.ts +1 -1
- package/dist/unified-shell.js +4 -4
- package/dist/unified-shell.js.map +1 -1
- package/dist/workflow-engine.d.ts +1 -1
- package/dist/workflow-engine.d.ts.map +1 -1
- package/dist/{worktree-strategy.d.ts → worktree-focus.d.ts} +15 -15
- package/dist/worktree-focus.d.ts.map +1 -0
- package/dist/{worktree-strategy.js → worktree-focus.js} +37 -37
- package/dist/worktree-focus.js.map +1 -0
- package/dist/worktree.d.ts +10 -10
- package/dist/worktree.d.ts.map +1 -1
- package/dist/worktree.js +39 -39
- package/dist/worktree.js.map +1 -1
- package/package.json +3 -3
- package/dist/listener-review.d.ts +0 -37
- package/dist/listener-review.d.ts.map +0 -1
- package/dist/listener-review.js +0 -217
- package/dist/listener-review.js.map +0 -1
- package/dist/queries/strategies.d.ts.map +0 -1
- package/dist/queries/strategies.js.map +0 -1
- package/dist/review-spawner.d.ts +0 -32
- package/dist/review-spawner.d.ts.map +0 -1
- package/dist/review-spawner.js +0 -170
- package/dist/review-spawner.js.map +0 -1
- package/dist/strategy-completion-event.d.ts +0 -63
- package/dist/strategy-completion-event.d.ts.map +0 -1
- package/dist/strategy-completion-event.js +0 -138
- package/dist/strategy-completion-event.js.map +0 -1
- package/dist/strategy-completion.d.ts.map +0 -1
- package/dist/strategy-completion.js.map +0 -1
- package/dist/strategy-engine.d.ts.map +0 -1
- package/dist/strategy-engine.js.map +0 -1
- package/dist/strategy-executor.d.ts +0 -55
- package/dist/strategy-executor.d.ts.map +0 -1
- package/dist/strategy-executor.js.map +0 -1
- package/dist/strategy-lifecycle.d.ts +0 -61
- package/dist/strategy-lifecycle.d.ts.map +0 -1
- package/dist/strategy-lifecycle.js.map +0 -1
- package/dist/strategy-merge.d.ts.map +0 -1
- package/dist/strategy-merge.js.map +0 -1
- package/dist/strategy-prompt-builder.d.ts +0 -24
- package/dist/strategy-prompt-builder.d.ts.map +0 -1
- package/dist/strategy-prompt-builder.js.map +0 -1
- package/dist/strategy-provisioning.d.ts +0 -16
- package/dist/strategy-provisioning.d.ts.map +0 -1
- package/dist/strategy-provisioning.js +0 -119
- package/dist/strategy-provisioning.js.map +0 -1
- package/dist/strategy-spawn-helpers.d.ts.map +0 -1
- package/dist/strategy-spawn-helpers.js.map +0 -1
- package/dist/strategy-team-lifecycle.d.ts.map +0 -1
- package/dist/strategy-team-lifecycle.js.map +0 -1
- package/dist/strategy-team-state.d.ts +0 -24
- package/dist/strategy-team-state.d.ts.map +0 -1
- package/dist/strategy-team-state.js.map +0 -1
- package/dist/strategy-teardown.d.ts +0 -24
- package/dist/strategy-teardown.d.ts.map +0 -1
- package/dist/strategy-teardown.js +0 -158
- package/dist/strategy-teardown.js.map +0 -1
- package/dist/strategy-worktree-state.d.ts +0 -47
- package/dist/strategy-worktree-state.d.ts.map +0 -1
- package/dist/strategy-worktree-state.js.map +0 -1
- package/dist/team-prompt-variants.d.ts +0 -17
- package/dist/team-prompt-variants.d.ts.map +0 -1
- package/dist/team-prompt-variants.js +0 -79
- package/dist/team-prompt-variants.js.map +0 -1
- package/dist/types/strategy.d.ts.map +0 -1
- package/dist/types/strategy.js +0 -5
- package/dist/types/strategy.js.map +0 -1
- package/dist/worktree-merge.d.ts +0 -23
- package/dist/worktree-merge.d.ts.map +0 -1
- package/dist/worktree-merge.js +0 -57
- package/dist/worktree-merge.js.map +0 -1
- package/dist/worktree-strategy.d.ts.map +0 -1
- package/dist/worktree-strategy.js.map +0 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* FocusEngine -- ExecutionEngine adapter for the focus-based daemon.
|
|
3
3
|
*
|
|
4
4
|
* Wraps the existing daemon modules (listener, heartbeat, spawner, git, etc.)
|
|
5
5
|
* behind the ExecutionEngine interface from @telora/daemon-core. This allows
|
|
6
|
-
* the unified process shell to manage the
|
|
6
|
+
* the unified process shell to manage the focus engine without knowing
|
|
7
7
|
* its internals.
|
|
8
8
|
*
|
|
9
9
|
* Lifecycle (called by the process shell):
|
|
@@ -16,32 +16,32 @@
|
|
|
16
16
|
import { safeInterval, withRetry } from '@telora/daemon-core';
|
|
17
17
|
import { validateConfig, configForProduct } from './config.js';
|
|
18
18
|
import { initSupabase, validateTrackerAuth } from './supabase.js';
|
|
19
|
-
import {
|
|
19
|
+
import { getQaFocuses, updateQaStatus, getProductQaStatus, updateProductQaStatus } from './supabase.js';
|
|
20
20
|
import { initGit, commitWipChanges } from './git.js';
|
|
21
21
|
import { initHeartbeat, startHeartbeat, stopHeartbeat, getVersions, setLatestAvailableVersion, setLatestAvailableFactoryVersion } from './heartbeat.js';
|
|
22
22
|
import { checkForUpdates } from './version-check.js';
|
|
23
|
-
import { initListener, startDeliveryListener, startSessionListener, stopListeners,
|
|
23
|
+
import { initListener, startDeliveryListener, startSessionListener, stopListeners, processReadyFocuses, refreshRoles, } from './listener.js';
|
|
24
24
|
import { recoverFromCrash } from './crash-recovery.js';
|
|
25
|
-
import { hydrateFromDb } from './
|
|
26
|
-
import {
|
|
25
|
+
import { hydrateFromDb } from './focus-worktree-state.js';
|
|
26
|
+
import { rebuildFocusWorktreeState, reconcileGitState } from './focus-lifecycle.js';
|
|
27
27
|
import { reconcileQaEnvironments, reconcileProductQaEnvironment } from './qa-crash-recovery.js';
|
|
28
28
|
import { removeQaWorktree } from './qa-provisioner.js';
|
|
29
29
|
import { pruneOldLogs } from './log-manager.js';
|
|
30
30
|
import { getActiveQaEnvironments } from './qa-state.js';
|
|
31
31
|
import { stopQaDevServer } from './qa-dev-server.js';
|
|
32
|
-
import { getActiveTeams, terminateAllTeams, waitForTeamExit, initGovernor as initExecutorGovernor, } from './
|
|
32
|
+
import { getActiveTeams, terminateAllTeams, waitForTeamExit, initGovernor as initExecutorGovernor, } from './focus-executor.js';
|
|
33
33
|
import { getRunningAgents } from './agent-state.js';
|
|
34
34
|
import { terminateAllAgents, initGovernor as initSpawnerGovernor } from './spawner.js';
|
|
35
35
|
import { checkAgentLiveness } from './spawner-liveness.js';
|
|
36
36
|
import { updateSession } from './queries/sessions.js';
|
|
37
|
-
import {
|
|
37
|
+
import { getAllFocusWorktrees } from './focus-worktree-state.js';
|
|
38
38
|
import { scanGitActivity } from './git-activity.js';
|
|
39
39
|
import { upsertGitActivity, getLatestGitActivityTimestamp } from './queries/git-activity.js';
|
|
40
40
|
// ---------------------------------------------------------------------------
|
|
41
|
-
//
|
|
41
|
+
// FocusEngine
|
|
42
42
|
// ---------------------------------------------------------------------------
|
|
43
|
-
export class
|
|
44
|
-
name = '
|
|
43
|
+
export class FocusEngine {
|
|
44
|
+
name = 'focus';
|
|
45
45
|
/** Daemon config, set during init(). */
|
|
46
46
|
config = null;
|
|
47
47
|
/** Optional resource governor for global concurrency limiting. */
|
|
@@ -111,11 +111,11 @@ export class StrategyEngine {
|
|
|
111
111
|
console.warn(`Worktree state hydration failed for product ${product.id} (non-fatal):`, err instanceof Error ? err.message : String(err));
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
|
-
// Rebuild
|
|
114
|
+
// Rebuild focus worktree state from surviving worktrees on disk (non-fatal per product)
|
|
115
115
|
for (const product of config.products) {
|
|
116
116
|
try {
|
|
117
117
|
const pc = configForProduct(config, product);
|
|
118
|
-
await
|
|
118
|
+
await rebuildFocusWorktreeState(pc);
|
|
119
119
|
}
|
|
120
120
|
catch (err) {
|
|
121
121
|
console.warn(`Worktree state rebuild failed for product ${product.id} (non-fatal):`, err instanceof Error ? err.message : String(err));
|
|
@@ -136,12 +136,12 @@ export class StrategyEngine {
|
|
|
136
136
|
const pc = configForProduct(config, product);
|
|
137
137
|
try {
|
|
138
138
|
await reconcileQaEnvironments(pc, {
|
|
139
|
-
|
|
139
|
+
getQaFocuses: () => getQaFocuses(product.id),
|
|
140
140
|
updateQaStatus,
|
|
141
141
|
});
|
|
142
142
|
}
|
|
143
143
|
catch (err) {
|
|
144
|
-
console.warn(`
|
|
144
|
+
console.warn(`Focus QA crash recovery failed for product ${product.id} (non-fatal):`, err instanceof Error ? err.message : String(err));
|
|
145
145
|
}
|
|
146
146
|
try {
|
|
147
147
|
await reconcileProductQaEnvironment(pc, {
|
|
@@ -183,13 +183,13 @@ export class StrategyEngine {
|
|
|
183
183
|
if (r?.latestVersion)
|
|
184
184
|
setLatestAvailableFactoryVersion(r.latestVersion);
|
|
185
185
|
}).catch(() => { });
|
|
186
|
-
// Process any ready
|
|
187
|
-
console.log('Processing ready
|
|
188
|
-
await
|
|
189
|
-
// Periodically refresh roles and process ready
|
|
186
|
+
// Process any ready focuses immediately
|
|
187
|
+
console.log('Processing ready focuses...');
|
|
188
|
+
await processReadyFocuses();
|
|
189
|
+
// Periodically refresh roles and process ready focuses (60s)
|
|
190
190
|
this.intervals.push(safeInterval(async () => {
|
|
191
191
|
await refreshRoles();
|
|
192
|
-
await
|
|
192
|
+
await processReadyFocuses();
|
|
193
193
|
}, 60_000, 'role-refresh'));
|
|
194
194
|
// Periodic log pruning (hourly) — iterate all products so each logDir is pruned
|
|
195
195
|
this.intervals.push(safeInterval(async () => {
|
|
@@ -208,7 +208,7 @@ export class StrategyEngine {
|
|
|
208
208
|
}, 300_000, 'git-activity-scan'));
|
|
209
209
|
// Initial git activity scan (non-blocking)
|
|
210
210
|
void this.scanAndUpsertGitActivity(config).catch(() => { });
|
|
211
|
-
console.log('
|
|
211
|
+
console.log('Focus engine started');
|
|
212
212
|
}
|
|
213
213
|
// -----------------------------------------------------------------------
|
|
214
214
|
// git activity scanning
|
|
@@ -235,7 +235,7 @@ export class StrategyEngine {
|
|
|
235
235
|
}
|
|
236
236
|
}
|
|
237
237
|
catch (err) {
|
|
238
|
-
console.debug(`[
|
|
238
|
+
console.debug(`[focus-engine] Git activity scan failed for product ${product.id}:`, err.message);
|
|
239
239
|
}
|
|
240
240
|
}
|
|
241
241
|
}
|
|
@@ -272,28 +272,28 @@ export class StrategyEngine {
|
|
|
272
272
|
}
|
|
273
273
|
}
|
|
274
274
|
}
|
|
275
|
-
// Terminate active
|
|
275
|
+
// Terminate active focus teams with WIP commit support
|
|
276
276
|
const activeTeams = getActiveTeams();
|
|
277
277
|
if (activeTeams.size > 0) {
|
|
278
278
|
// Snapshot team info before termination (worktree paths for WIP commits)
|
|
279
279
|
const teamSnapshots = [...activeTeams.entries()].map(([id, team]) => ({
|
|
280
|
-
|
|
281
|
-
|
|
280
|
+
focusId: id,
|
|
281
|
+
focusName: team.focusName,
|
|
282
282
|
worktreePath: team.worktreePath,
|
|
283
283
|
leadSessionId: team.leadSessionId,
|
|
284
284
|
}));
|
|
285
|
-
console.log(`Terminating ${activeTeams.size} active
|
|
285
|
+
console.log(`Terminating ${activeTeams.size} active focus teams...`);
|
|
286
286
|
terminateAllTeams();
|
|
287
287
|
// Wait for each team to exit (30s per team, parallelized)
|
|
288
|
-
await Promise.allSettled(teamSnapshots.map((t) => waitForTeamExit(t.
|
|
288
|
+
await Promise.allSettled(teamSnapshots.map((t) => waitForTeamExit(t.focusId, 30_000)));
|
|
289
289
|
// Commit WIP changes in each team's worktree after process exit
|
|
290
290
|
for (const team of teamSnapshots) {
|
|
291
291
|
if (team.worktreePath) {
|
|
292
292
|
try {
|
|
293
|
-
commitWipChanges(team.worktreePath, team.
|
|
293
|
+
commitWipChanges(team.worktreePath, team.focusName);
|
|
294
294
|
}
|
|
295
295
|
catch (err) {
|
|
296
|
-
console.warn(`WIP commit failed for "${team.
|
|
296
|
+
console.warn(`WIP commit failed for "${team.focusName}": ${err.message}`);
|
|
297
297
|
}
|
|
298
298
|
}
|
|
299
299
|
}
|
|
@@ -333,7 +333,7 @@ export class StrategyEngine {
|
|
|
333
333
|
// Drain: allow pending async session updates to flush
|
|
334
334
|
console.log('Draining pending session updates...');
|
|
335
335
|
await new Promise((resolve) => setTimeout(resolve, 2000));
|
|
336
|
-
console.log('
|
|
336
|
+
console.log('Focus engine shutdown complete');
|
|
337
337
|
}
|
|
338
338
|
// -----------------------------------------------------------------------
|
|
339
339
|
// healthCheck
|
|
@@ -352,8 +352,8 @@ export class StrategyEngine {
|
|
|
352
352
|
for (const team of teams.values()) {
|
|
353
353
|
const durationSec = Math.round((Date.now() - team.startedAt.getTime()) / 1000);
|
|
354
354
|
teamDetails.push({
|
|
355
|
-
|
|
356
|
-
|
|
355
|
+
focusId: team.focusId,
|
|
356
|
+
focusName: team.focusName,
|
|
357
357
|
roleName: team.roleName,
|
|
358
358
|
phase: team.phase,
|
|
359
359
|
durationSec,
|
|
@@ -389,7 +389,7 @@ export class StrategyEngine {
|
|
|
389
389
|
getResourceUsage() {
|
|
390
390
|
const teams = getActiveTeams();
|
|
391
391
|
const agents = getRunningAgents();
|
|
392
|
-
const worktrees =
|
|
392
|
+
const worktrees = getAllFocusWorktrees();
|
|
393
393
|
// Active Claude processes: team lead processes + legacy agent processes
|
|
394
394
|
let activeClaudeProcesses = 0;
|
|
395
395
|
for (const team of teams.values()) {
|
|
@@ -412,10 +412,10 @@ export class StrategyEngine {
|
|
|
412
412
|
*/
|
|
413
413
|
requireConfig(method) {
|
|
414
414
|
if (!this.config) {
|
|
415
|
-
throw new Error(`
|
|
415
|
+
throw new Error(`FocusEngine.${method}() called before init(). ` +
|
|
416
416
|
'The process shell must call init(config) first.');
|
|
417
417
|
}
|
|
418
418
|
return this.config;
|
|
419
419
|
}
|
|
420
420
|
}
|
|
421
|
-
//# sourceMappingURL=
|
|
421
|
+
//# sourceMappingURL=focus-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"focus-engine.js","sourceRoot":"","sources":["../src/focus-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Focus executor - manages Agent Team lifecycle per focus.
|
|
3
|
+
*
|
|
4
|
+
* Replaces the per-delivery agent spawning model. When a focus has
|
|
5
|
+
* an assigned agent role and queued deliveries, the executor spawns
|
|
6
|
+
* a single Agent Team (one lead agent process) scoped to the entire focus.
|
|
7
|
+
*
|
|
8
|
+
* The lead agent:
|
|
9
|
+
* 1. Reads all deliveries + issues for the focus
|
|
10
|
+
* 2. Builds a task DAG with dependencies
|
|
11
|
+
* 3. Spawns worker teammates to execute issues in parallel
|
|
12
|
+
* 4. Advances delivery stages as their issues complete
|
|
13
|
+
* 5. Terminates when all work is done; fresh team spawned for new work
|
|
14
|
+
*
|
|
15
|
+
* This module is the orchestration entry point. Pure logic is extracted to:
|
|
16
|
+
* - focus-team-state.ts -- active teams map, config derivation
|
|
17
|
+
* - focus-merge.ts -- branch merge logic
|
|
18
|
+
* - focus-completion.ts -- post-execution completion handling
|
|
19
|
+
* - focus-spawn-helpers.ts -- log streams, stream handlers, process close
|
|
20
|
+
* - focus-team-lifecycle.ts -- terminate, wait, detect deactivated, merge checks
|
|
21
|
+
* - focus-completion-event.ts -- completion event handler
|
|
22
|
+
*/
|
|
23
|
+
import type { DaemonConfig, AgentRole, PipelineConfig } from './types.js';
|
|
24
|
+
import { type ResourceGovernor } from '@telora/daemon-core';
|
|
25
|
+
import './assembly-resolvers.js';
|
|
26
|
+
export { getActiveTeams, hasActiveTeam, getActiveTeamCount, } from './focus-team-state.js';
|
|
27
|
+
export { mergeFocusBranch, } from './focus-merge.js';
|
|
28
|
+
export { handleTeamCompletion, advanceDeliveryStatuses, isStatusTerminal, isStatusAgentActionable, } from './focus-completion.js';
|
|
29
|
+
export type { TeamCompletionParams } from './focus-completion.js';
|
|
30
|
+
export { terminateTeam, waitForTeamExit, terminateAllTeams, detectDeactivatedFocuses, checkAndMergeCompletedDeliveries, } from './focus-team-lifecycle.js';
|
|
31
|
+
export type { CompletionEventContext } from './focus-completion-event.js';
|
|
32
|
+
/** Inject the resource governor for global concurrency limiting. */
|
|
33
|
+
export declare function initGovernor(gov: ResourceGovernor): void;
|
|
34
|
+
/**
|
|
35
|
+
* Generate branch name for focus-level work.
|
|
36
|
+
*/
|
|
37
|
+
export declare function generateFocusBranchName(role: AgentRole, focusName: string, focusId: string): string;
|
|
38
|
+
export interface SpawnFocusTeamParams {
|
|
39
|
+
config: DaemonConfig;
|
|
40
|
+
focusId: string;
|
|
41
|
+
focusName: string;
|
|
42
|
+
role: AgentRole;
|
|
43
|
+
pipelineConfig: PipelineConfig | null;
|
|
44
|
+
readOnly?: boolean;
|
|
45
|
+
/** Previous Claude Code session ID for --resume support. */
|
|
46
|
+
lastClaudeSessionId?: string | null;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Spawn a focus team to execute all deliveries in a focus.
|
|
50
|
+
*
|
|
51
|
+
* Creates a single Agent Team (lead process) that reads all deliveries
|
|
52
|
+
* and issues, builds a task DAG, and coordinates worker execution.
|
|
53
|
+
*/
|
|
54
|
+
export declare function spawnFocusTeam(params: SpawnFocusTeamParams): Promise<void>;
|
|
55
|
+
//# sourceMappingURL=focus-executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"focus-executor.d.ts","sourceRoot":"","sources":["../src/focus-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EAET,cAAc,EACf,MAAM,YAAY,CAAC;AASpB,OAAO,EAAwC,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAUlG,OAAO,yBAAyB,CAAC;AAyBjC,OAAO,EACL,cAAc,EACd,aAAa,EACb,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAElE,OAAO,EACL,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,gCAAgC,GACjC,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAM1E,oEAAoE;AACpE,wBAAgB,YAAY,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI,CAExD;AAsED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAKnG;AA+BD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,SAAS,CAAC;IAChB,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4DAA4D;IAC5D,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,IAAI,CAAC,CA4cf"}
|