@telora/daemon 0.15.3 → 0.15.5

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.
Files changed (115) hide show
  1. package/build-info.json +2 -2
  2. package/dist/directive-executor.d.ts +18 -3
  3. package/dist/directive-executor.d.ts.map +1 -1
  4. package/dist/directive-executor.js +45 -4
  5. package/dist/directive-executor.js.map +1 -1
  6. package/dist/focus-completion.js +12 -12
  7. package/dist/focus-completion.js.map +1 -1
  8. package/dist/focus-executor.d.ts.map +1 -1
  9. package/dist/focus-executor.js +30 -13
  10. package/dist/focus-executor.js.map +1 -1
  11. package/dist/focus-phase.d.ts +22 -0
  12. package/dist/focus-phase.d.ts.map +1 -0
  13. package/dist/focus-phase.js +54 -0
  14. package/dist/focus-phase.js.map +1 -0
  15. package/dist/focus-team-state.d.ts +6 -0
  16. package/dist/focus-team-state.d.ts.map +1 -1
  17. package/dist/focus-team-state.js +13 -0
  18. package/dist/focus-team-state.js.map +1 -1
  19. package/dist/index.js +0 -0
  20. package/dist/listener.d.ts.map +1 -1
  21. package/dist/listener.js +0 -5
  22. package/dist/listener.js.map +1 -1
  23. package/dist/queries/focuses.d.ts +5 -0
  24. package/dist/queries/focuses.d.ts.map +1 -1
  25. package/dist/queries/focuses.js +15 -0
  26. package/dist/queries/focuses.js.map +1 -1
  27. package/dist/review-defect-detector.d.ts +16 -95
  28. package/dist/review-defect-detector.d.ts.map +1 -1
  29. package/dist/review-defect-detector.js +19 -211
  30. package/dist/review-defect-detector.js.map +1 -1
  31. package/dist/state-cascade.d.ts +45 -41
  32. package/dist/state-cascade.d.ts.map +1 -1
  33. package/dist/state-cascade.js +123 -215
  34. package/dist/state-cascade.js.map +1 -1
  35. package/package.json +2 -2
  36. package/dist/listener-review.d.ts +0 -37
  37. package/dist/listener-review.d.ts.map +0 -1
  38. package/dist/listener-review.js +0 -217
  39. package/dist/listener-review.js.map +0 -1
  40. package/dist/queries/strategies.d.ts +0 -97
  41. package/dist/queries/strategies.d.ts.map +0 -1
  42. package/dist/queries/strategies.js +0 -136
  43. package/dist/queries/strategies.js.map +0 -1
  44. package/dist/review-spawner.d.ts +0 -32
  45. package/dist/review-spawner.d.ts.map +0 -1
  46. package/dist/review-spawner.js +0 -170
  47. package/dist/review-spawner.js.map +0 -1
  48. package/dist/strategy-completion-event.d.ts +0 -63
  49. package/dist/strategy-completion-event.d.ts.map +0 -1
  50. package/dist/strategy-completion-event.js +0 -138
  51. package/dist/strategy-completion-event.js.map +0 -1
  52. package/dist/strategy-completion.d.ts +0 -85
  53. package/dist/strategy-completion.d.ts.map +0 -1
  54. package/dist/strategy-completion.js +0 -459
  55. package/dist/strategy-completion.js.map +0 -1
  56. package/dist/strategy-engine.d.ts +0 -47
  57. package/dist/strategy-engine.d.ts.map +0 -1
  58. package/dist/strategy-engine.js +0 -421
  59. package/dist/strategy-engine.js.map +0 -1
  60. package/dist/strategy-executor.d.ts +0 -55
  61. package/dist/strategy-executor.d.ts.map +0 -1
  62. package/dist/strategy-executor.js +0 -519
  63. package/dist/strategy-executor.js.map +0 -1
  64. package/dist/strategy-lifecycle.d.ts +0 -61
  65. package/dist/strategy-lifecycle.d.ts.map +0 -1
  66. package/dist/strategy-lifecycle.js +0 -544
  67. package/dist/strategy-lifecycle.js.map +0 -1
  68. package/dist/strategy-merge.d.ts +0 -77
  69. package/dist/strategy-merge.d.ts.map +0 -1
  70. package/dist/strategy-merge.js +0 -378
  71. package/dist/strategy-merge.js.map +0 -1
  72. package/dist/strategy-prompt-builder.d.ts +0 -24
  73. package/dist/strategy-prompt-builder.d.ts.map +0 -1
  74. package/dist/strategy-prompt-builder.js +0 -87
  75. package/dist/strategy-prompt-builder.js.map +0 -1
  76. package/dist/strategy-provisioning.d.ts +0 -16
  77. package/dist/strategy-provisioning.d.ts.map +0 -1
  78. package/dist/strategy-provisioning.js +0 -119
  79. package/dist/strategy-provisioning.js.map +0 -1
  80. package/dist/strategy-spawn-helpers.d.ts +0 -67
  81. package/dist/strategy-spawn-helpers.d.ts.map +0 -1
  82. package/dist/strategy-spawn-helpers.js +0 -160
  83. package/dist/strategy-spawn-helpers.js.map +0 -1
  84. package/dist/strategy-team-lifecycle.d.ts +0 -50
  85. package/dist/strategy-team-lifecycle.d.ts.map +0 -1
  86. package/dist/strategy-team-lifecycle.js +0 -256
  87. package/dist/strategy-team-lifecycle.js.map +0 -1
  88. package/dist/strategy-team-state.d.ts +0 -24
  89. package/dist/strategy-team-state.d.ts.map +0 -1
  90. package/dist/strategy-team-state.js +0 -43
  91. package/dist/strategy-team-state.js.map +0 -1
  92. package/dist/strategy-teardown.d.ts +0 -24
  93. package/dist/strategy-teardown.d.ts.map +0 -1
  94. package/dist/strategy-teardown.js +0 -158
  95. package/dist/strategy-teardown.js.map +0 -1
  96. package/dist/strategy-worktree-state.d.ts +0 -47
  97. package/dist/strategy-worktree-state.d.ts.map +0 -1
  98. package/dist/strategy-worktree-state.js +0 -104
  99. package/dist/strategy-worktree-state.js.map +0 -1
  100. package/dist/team-prompt-variants.d.ts +0 -17
  101. package/dist/team-prompt-variants.d.ts.map +0 -1
  102. package/dist/team-prompt-variants.js +0 -79
  103. package/dist/team-prompt-variants.js.map +0 -1
  104. package/dist/types/strategy.d.ts +0 -180
  105. package/dist/types/strategy.d.ts.map +0 -1
  106. package/dist/types/strategy.js +0 -5
  107. package/dist/types/strategy.js.map +0 -1
  108. package/dist/worktree-merge.d.ts +0 -23
  109. package/dist/worktree-merge.d.ts.map +0 -1
  110. package/dist/worktree-merge.js +0 -57
  111. package/dist/worktree-merge.js.map +0 -1
  112. package/dist/worktree-strategy.d.ts +0 -69
  113. package/dist/worktree-strategy.d.ts.map +0 -1
  114. package/dist/worktree-strategy.js +0 -214
  115. package/dist/worktree-strategy.js.map +0 -1
@@ -1,421 +0,0 @@
1
- /**
2
- * StrategyEngine -- ExecutionEngine adapter for the strategy-based daemon.
3
- *
4
- * Wraps the existing daemon modules (listener, heartbeat, spawner, git, etc.)
5
- * behind the ExecutionEngine interface from @telora/daemon-core. This allows
6
- * the unified process shell to manage the strategy engine without knowing
7
- * its internals.
8
- *
9
- * Lifecycle (called by the process shell):
10
- * 1. init(config) -- validate, connect to Supabase, init git
11
- * 2. recoverFromCrash() -- reconcile orphaned state from previous run
12
- * 3. start() -- begin polling loops and heartbeat
13
- * 4. stop() -- stop accepting new work
14
- * 5. shutdown() -- graceful cleanup (kill teams, WIP commit, drain)
15
- */
16
- import { safeInterval, withRetry } from '@telora/daemon-core';
17
- import { validateConfig, configForProduct } from './config.js';
18
- import { initSupabase, validateTrackerAuth } from './supabase.js';
19
- import { getQaStrategies, updateQaStatus, getProductQaStatus, updateProductQaStatus } from './supabase.js';
20
- import { initGit, commitWipChanges } from './git.js';
21
- import { initHeartbeat, startHeartbeat, stopHeartbeat, getVersions, setLatestAvailableVersion, setLatestAvailableFactoryVersion } from './heartbeat.js';
22
- import { checkForUpdates } from './version-check.js';
23
- import { initListener, startDeliveryListener, startSessionListener, stopListeners, processReadyStrategies, refreshRoles, } from './listener.js';
24
- import { recoverFromCrash } from './crash-recovery.js';
25
- import { hydrateFromDb } from './strategy-worktree-state.js';
26
- import { rebuildStrategyWorktreeState, reconcileGitState } from './strategy-lifecycle.js';
27
- import { reconcileQaEnvironments, reconcileProductQaEnvironment } from './qa-crash-recovery.js';
28
- import { removeQaWorktree } from './qa-provisioner.js';
29
- import { pruneOldLogs } from './log-manager.js';
30
- import { getActiveQaEnvironments } from './qa-state.js';
31
- import { stopQaDevServer } from './qa-dev-server.js';
32
- import { getActiveTeams, terminateAllTeams, waitForTeamExit, initGovernor as initExecutorGovernor, } from './strategy-executor.js';
33
- import { getRunningAgents } from './agent-state.js';
34
- import { terminateAllAgents, initGovernor as initSpawnerGovernor } from './spawner.js';
35
- import { checkAgentLiveness } from './spawner-liveness.js';
36
- import { updateSession } from './queries/sessions.js';
37
- import { getAllStrategyWorktrees } from './strategy-worktree-state.js';
38
- import { scanGitActivity } from './git-activity.js';
39
- import { upsertGitActivity, getLatestGitActivityTimestamp } from './queries/git-activity.js';
40
- // ---------------------------------------------------------------------------
41
- // StrategyEngine
42
- // ---------------------------------------------------------------------------
43
- export class StrategyEngine {
44
- name = 'strategy';
45
- /** Daemon config, set during init(). */
46
- config = null;
47
- /** Optional resource governor for global concurrency limiting. */
48
- governor = null;
49
- /** Interval handles for periodic tasks (cleared in stop/shutdown). */
50
- intervals = [];
51
- /** Last scanned timestamp for git activity per product (reset on restart). */
52
- lastGitScanTimestamps = new Map();
53
- /**
54
- * Inject a ResourceGovernor for global concurrency limiting.
55
- * Called by the process shell after construction but before start().
56
- */
57
- setGovernor(gov) {
58
- this.governor = gov;
59
- initExecutorGovernor(gov);
60
- initSpawnerGovernor(gov);
61
- }
62
- // -----------------------------------------------------------------------
63
- // init
64
- // -----------------------------------------------------------------------
65
- async init(config) {
66
- // Cast to DaemonConfig -- the shell loads the full config including
67
- // daemon-specific fields and passes it through the generic interface.
68
- this.config = config;
69
- // Validate configuration
70
- validateConfig(this.config);
71
- // Initialize Supabase client
72
- console.log('Initializing Supabase client...');
73
- initSupabase(this.config);
74
- // Validate tracker auth -- fail fast if invalid
75
- console.log('Validating tracker authentication...');
76
- await validateTrackerAuth();
77
- console.log('Tracker authentication valid');
78
- // Initialize git for each product's repository
79
- for (const product of this.config.products) {
80
- const pc = configForProduct(this.config, product);
81
- await initGit(pc);
82
- }
83
- // Initialize heartbeat (bootstraps counters from DB)
84
- await initHeartbeat(this.config);
85
- // Initialize listener (loads agent roles)
86
- console.log('Initializing listener...');
87
- await initListener(this.config);
88
- }
89
- // -----------------------------------------------------------------------
90
- // recoverFromCrash
91
- // -----------------------------------------------------------------------
92
- async recoverFromCrash() {
93
- const config = this.requireConfig('recoverFromCrash');
94
- // Core crash recovery: clean up orphaned worktrees and stale branches
95
- // Run per-product to handle each product's repo (non-fatal per product)
96
- for (const product of config.products) {
97
- try {
98
- const pc = configForProduct(config, product);
99
- await recoverFromCrash(pc);
100
- }
101
- catch (err) {
102
- console.warn(`Crash recovery failed for product ${product.id} (non-fatal):`, err instanceof Error ? err.message : String(err));
103
- }
104
- }
105
- // Hydrate worktree state from DB for all products (non-fatal per product)
106
- for (const product of config.products) {
107
- try {
108
- await hydrateFromDb(product.id);
109
- }
110
- catch (err) {
111
- console.warn(`Worktree state hydration failed for product ${product.id} (non-fatal):`, err instanceof Error ? err.message : String(err));
112
- }
113
- }
114
- // Rebuild strategy worktree state from surviving worktrees on disk (non-fatal per product)
115
- for (const product of config.products) {
116
- try {
117
- const pc = configForProduct(config, product);
118
- await rebuildStrategyWorktreeState(pc);
119
- }
120
- catch (err) {
121
- console.warn(`Worktree state rebuild failed for product ${product.id} (non-fatal):`, err instanceof Error ? err.message : String(err));
122
- }
123
- }
124
- // Reconcile git state for rebuilt worktrees (non-fatal)
125
- for (const product of config.products) {
126
- try {
127
- const pc = configForProduct(config, product);
128
- await reconcileGitState(pc);
129
- }
130
- catch (err) {
131
- console.warn(`Git state reconciliation failed for product ${product.id} (non-fatal):`, err instanceof Error ? err.message : String(err));
132
- }
133
- }
134
- // QA environment crash recovery (DB-driven, non-fatal)
135
- for (const product of config.products) {
136
- const pc = configForProduct(config, product);
137
- try {
138
- await reconcileQaEnvironments(pc, {
139
- getQaStrategies: () => getQaStrategies(product.id),
140
- updateQaStatus,
141
- });
142
- }
143
- catch (err) {
144
- console.warn(`Strategy QA crash recovery failed for product ${product.id} (non-fatal):`, err instanceof Error ? err.message : String(err));
145
- }
146
- try {
147
- await reconcileProductQaEnvironment(pc, {
148
- getProductQaStatus: (productId) => getProductQaStatus(productId),
149
- updateProductQaStatus: (productId, fields) => updateProductQaStatus(productId, fields),
150
- removeQaWorktree,
151
- });
152
- }
153
- catch (err) {
154
- console.warn(`Product QA crash recovery failed for product ${product.id} (non-fatal):`, err instanceof Error ? err.message : String(err));
155
- }
156
- }
157
- // Startup log pruning (non-fatal)
158
- try {
159
- await pruneOldLogs(config);
160
- }
161
- catch (err) {
162
- console.warn('Startup log pruning failed (non-fatal):', err instanceof Error ? err.message : String(err));
163
- }
164
- }
165
- // -----------------------------------------------------------------------
166
- // start
167
- // -----------------------------------------------------------------------
168
- async start() {
169
- const config = this.requireConfig('start');
170
- // Start listeners
171
- console.log('Starting listeners...');
172
- startDeliveryListener();
173
- startSessionListener();
174
- // Start heartbeat
175
- await startHeartbeat();
176
- // Non-blocking version checks against registry
177
- const versions = getVersions();
178
- void checkForUpdates(versions.daemon, '@telora/daemon').then(r => {
179
- if (r?.latestVersion)
180
- setLatestAvailableVersion(r.latestVersion);
181
- }).catch(() => { });
182
- void checkForUpdates(versions.factory, '@telora/factory').then(r => {
183
- if (r?.latestVersion)
184
- setLatestAvailableFactoryVersion(r.latestVersion);
185
- }).catch(() => { });
186
- // Process any ready strategies immediately
187
- console.log('Processing ready strategies...');
188
- await processReadyStrategies();
189
- // Periodically refresh roles and process ready strategies (60s)
190
- this.intervals.push(safeInterval(async () => {
191
- await refreshRoles();
192
- await processReadyStrategies();
193
- }, 60_000, 'role-refresh'));
194
- // Periodic log pruning (hourly) — iterate all products so each logDir is pruned
195
- this.intervals.push(safeInterval(async () => {
196
- for (const product of config.products) {
197
- const pc = configForProduct(config, product);
198
- await pruneOldLogs(pc);
199
- }
200
- }, 3_600_000, 'log-prune'));
201
- // Periodic agent liveness check (60s)
202
- this.intervals.push(safeInterval(async () => {
203
- await checkAgentLiveness(config, getRunningAgents());
204
- }, 60_000, 'agent-liveness'));
205
- // Periodic git activity scanning (5 minutes)
206
- this.intervals.push(safeInterval(async () => {
207
- await this.scanAndUpsertGitActivity(config);
208
- }, 300_000, 'git-activity-scan'));
209
- // Initial git activity scan (non-blocking)
210
- void this.scanAndUpsertGitActivity(config).catch(() => { });
211
- console.log('Strategy engine started');
212
- }
213
- // -----------------------------------------------------------------------
214
- // git activity scanning
215
- // -----------------------------------------------------------------------
216
- async scanAndUpsertGitActivity(config) {
217
- // Scan git activity for each configured product independently
218
- for (const product of config.products) {
219
- try {
220
- // Determine scan window start per product
221
- let scanFrom = this.lastGitScanTimestamps.get(product.id);
222
- if (!scanFrom) {
223
- const latest = await getLatestGitActivityTimestamp(product.id);
224
- scanFrom = latest ?? new Date(Date.now() - 86_400_000).toISOString();
225
- this.lastGitScanTimestamps.set(product.id, scanFrom);
226
- }
227
- const buckets = scanGitActivity(product.repoPath, scanFrom);
228
- if (buckets.length > 0) {
229
- await upsertGitActivity(product.id, buckets.map(b => ({
230
- ...b,
231
- intervalMinutes: 60,
232
- })));
233
- // Advance the scan window for this product
234
- this.lastGitScanTimestamps.set(product.id, buckets[buckets.length - 1].intervalStart);
235
- }
236
- }
237
- catch (err) {
238
- console.debug(`[strategy-engine] Git activity scan failed for product ${product.id}:`, err.message);
239
- }
240
- }
241
- }
242
- // -----------------------------------------------------------------------
243
- // stop
244
- // -----------------------------------------------------------------------
245
- stop() {
246
- // Clear periodic intervals
247
- for (const interval of this.intervals) {
248
- clearInterval(interval);
249
- }
250
- this.intervals = [];
251
- // Stop listeners (polling loops)
252
- stopListeners();
253
- }
254
- // -----------------------------------------------------------------------
255
- // shutdown
256
- // -----------------------------------------------------------------------
257
- async shutdown() {
258
- // Stop heartbeat and send disconnect signal
259
- await stopHeartbeat();
260
- // Stop all QA dev servers (worktrees persist, but dev servers don't)
261
- const qaEnvs = getActiveQaEnvironments();
262
- if (qaEnvs.size > 0) {
263
- console.log(`Stopping ${qaEnvs.size} QA dev server(s)...`);
264
- for (const [, state] of qaEnvs) {
265
- if (state.pid) {
266
- try {
267
- await stopQaDevServer(state.pid);
268
- }
269
- catch (err) {
270
- console.warn(`Failed to stop QA dev server (PID ${state.pid}): ${err.message}`);
271
- }
272
- }
273
- }
274
- }
275
- // Terminate active strategy teams with WIP commit support
276
- const activeTeams = getActiveTeams();
277
- if (activeTeams.size > 0) {
278
- // Snapshot team info before termination (worktree paths for WIP commits)
279
- const teamSnapshots = [...activeTeams.entries()].map(([id, team]) => ({
280
- strategyId: id,
281
- strategyName: team.strategyName,
282
- worktreePath: team.worktreePath,
283
- leadSessionId: team.leadSessionId,
284
- }));
285
- console.log(`Terminating ${activeTeams.size} active strategy teams...`);
286
- terminateAllTeams();
287
- // Wait for each team to exit (30s per team, parallelized)
288
- await Promise.allSettled(teamSnapshots.map((t) => waitForTeamExit(t.strategyId, 30_000)));
289
- // Commit WIP changes in each team's worktree after process exit
290
- for (const team of teamSnapshots) {
291
- if (team.worktreePath) {
292
- try {
293
- commitWipChanges(team.worktreePath, team.strategyName);
294
- }
295
- catch (err) {
296
- console.warn(`WIP commit failed for "${team.strategyName}": ${err.message}`);
297
- }
298
- }
299
- }
300
- // Force-update any remaining sessions that didn't exit within the timeout
301
- const remainingTeams = getActiveTeams();
302
- if (remainingTeams.size > 0) {
303
- console.log(`Force-updating ${remainingTeams.size} remaining session(s) to failed...`);
304
- const updates = [...remainingTeams.values()]
305
- .filter((team) => team.leadSessionId)
306
- .map((team) => withRetry(() => updateSession(team.leadSessionId, {
307
- status: 'failed',
308
- exit_reason: 'Daemon shutdown: team did not exit within timeout',
309
- ended_at: new Date().toISOString(),
310
- }), {
311
- maxAttempts: 3,
312
- baseDelayMs: 1000,
313
- label: `shutdown-session-${team.leadSessionId}`,
314
- }).catch((err) => console.warn(`Failed to update session ${team.leadSessionId}:`, err.message)));
315
- await Promise.allSettled(updates);
316
- }
317
- }
318
- // Wait for running agents (legacy agents still in flight)
319
- const runningAgents = getRunningAgents();
320
- if (runningAgents.size > 0) {
321
- console.log(`Waiting for ${runningAgents.size} running agents to complete...`);
322
- // Give agents 30 seconds to reach a checkpoint
323
- const timeout = setTimeout(() => {
324
- console.log('Timeout reached, terminating remaining agents...');
325
- terminateAllAgents();
326
- }, 30_000);
327
- // Poll for completion
328
- while (getRunningAgents().size > 0) {
329
- await new Promise((resolve) => setTimeout(resolve, 1000));
330
- }
331
- clearTimeout(timeout);
332
- }
333
- // Drain: allow pending async session updates to flush
334
- console.log('Draining pending session updates...');
335
- await new Promise((resolve) => setTimeout(resolve, 2000));
336
- console.log('Strategy engine shutdown complete');
337
- }
338
- // -----------------------------------------------------------------------
339
- // healthCheck
340
- // -----------------------------------------------------------------------
341
- healthCheck() {
342
- const teams = getActiveTeams();
343
- const agents = getRunningAgents();
344
- const activeWorkItems = teams.size + agents.size;
345
- // Determine overall status
346
- let status = 'healthy';
347
- if (this.config === null) {
348
- status = 'unhealthy';
349
- }
350
- // Build details
351
- const teamDetails = [];
352
- for (const team of teams.values()) {
353
- const durationSec = Math.round((Date.now() - team.startedAt.getTime()) / 1000);
354
- teamDetails.push({
355
- strategyId: team.strategyId,
356
- strategyName: team.strategyName,
357
- roleName: team.roleName,
358
- phase: team.phase,
359
- durationSec,
360
- deliveryCount: team.knownDeliveryIds.size,
361
- });
362
- }
363
- const agentDetails = [];
364
- for (const agent of agents.values()) {
365
- const durationSec = Math.round((Date.now() - agent.startedAt.getTime()) / 1000);
366
- agentDetails.push({
367
- sessionId: agent.sessionId,
368
- deliveryName: agent.deliveryName,
369
- roleName: agent.roleName,
370
- pid: agent.pid,
371
- durationSec,
372
- streamState: agent.streamState,
373
- });
374
- }
375
- return {
376
- status,
377
- activeWorkItems,
378
- details: {
379
- activeTeams: teams.size,
380
- activeLegacyAgents: agents.size,
381
- teams: teamDetails,
382
- agents: agentDetails,
383
- },
384
- };
385
- }
386
- // -----------------------------------------------------------------------
387
- // getResourceUsage
388
- // -----------------------------------------------------------------------
389
- getResourceUsage() {
390
- const teams = getActiveTeams();
391
- const agents = getRunningAgents();
392
- const worktrees = getAllStrategyWorktrees();
393
- // Active Claude processes: team lead processes + legacy agent processes
394
- let activeClaudeProcesses = 0;
395
- for (const team of teams.values()) {
396
- if (team.leadPid) {
397
- activeClaudeProcesses++;
398
- }
399
- }
400
- activeClaudeProcesses += agents.size;
401
- return {
402
- activeClaudeProcesses,
403
- activeWorktrees: worktrees.size,
404
- };
405
- }
406
- // -----------------------------------------------------------------------
407
- // Private helpers
408
- // -----------------------------------------------------------------------
409
- /**
410
- * Assert that config has been set (init() was called) and return it.
411
- * Throws a clear error if called before init().
412
- */
413
- requireConfig(method) {
414
- if (!this.config) {
415
- throw new Error(`StrategyEngine.${method}() called before init(). ` +
416
- 'The process shell must call init(config) first.');
417
- }
418
- return this.config;
419
- }
420
- }
421
- //# sourceMappingURL=strategy-engine.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"strategy-engine.js","sourceRoot":"","sources":["../src/strategy-engine.ts"],"names":[],"mappings":"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"}
@@ -1,55 +0,0 @@
1
- /**
2
- * Strategy executor - manages Agent Team lifecycle per strategy.
3
- *
4
- * Replaces the per-delivery agent spawning model. When a strategy 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 strategy.
7
- *
8
- * The lead agent:
9
- * 1. Reads all deliveries + issues for the strategy
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
- * - strategy-team-state.ts -- active teams map, config derivation
17
- * - strategy-merge.ts -- branch merge logic
18
- * - strategy-completion.ts -- post-execution completion handling
19
- * - strategy-spawn-helpers.ts -- log streams, stream handlers, process close
20
- * - strategy-team-lifecycle.ts -- terminate, wait, detect deactivated, merge checks
21
- * - strategy-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 './strategy-team-state.js';
27
- export { mergeStrategyBranch, } from './strategy-merge.js';
28
- export { handleTeamCompletion, advanceDeliveryStatuses, isStatusTerminal, isStatusAgentActionable, } from './strategy-completion.js';
29
- export type { TeamCompletionParams } from './strategy-completion.js';
30
- export { terminateTeam, waitForTeamExit, terminateAllTeams, detectDeactivatedStrategies, checkAndMergeCompletedDeliveries, } from './strategy-team-lifecycle.js';
31
- export type { CompletionEventContext } from './strategy-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 strategy-level work.
36
- */
37
- export declare function generateStrategyBranchName(role: AgentRole, strategyName: string, strategyId: string): string;
38
- export interface SpawnStrategyTeamParams {
39
- config: DaemonConfig;
40
- strategyId: string;
41
- strategyName: 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 strategy team to execute all deliveries in a strategy.
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 spawnStrategyTeam(params: SpawnStrategyTeamParams): Promise<void>;
55
- //# sourceMappingURL=strategy-executor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"strategy-executor.d.ts","sourceRoot":"","sources":["../src/strategy-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;AAuBjC,OAAO,EACL,cAAc,EACd,aAAa,EACb,kBAAkB,GACnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAElC,YAAY,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAErE,OAAO,EACL,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,2BAA2B,EAC3B,gCAAgC,GACjC,MAAM,8BAA8B,CAAC;AAEtC,YAAY,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAM7E,oEAAoE;AACpE,wBAAgB,YAAY,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI,CAExD;AA8DD;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAK5G;AA+BD,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,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,iBAAiB,CACrC,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAsaf"}