gm-orchestrator 0.3.5 → 0.5.0
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/dist/cli/index.js +45 -12
- package/dist/cli/index.js.map +1 -1
- package/dist/core/orchestrator.d.ts +23 -1
- package/dist/core/orchestrator.d.ts.map +1 -1
- package/dist/core/orchestrator.js +131 -8
- package/dist/core/orchestrator.js.map +1 -1
- package/dist/core/prompt-builder.d.ts +4 -2
- package/dist/core/prompt-builder.d.ts.map +1 -1
- package/dist/core/prompt-builder.js.map +1 -1
- package/dist/core/scheduler.d.ts +57 -0
- package/dist/core/scheduler.d.ts.map +1 -0
- package/dist/core/scheduler.js +202 -0
- package/dist/core/scheduler.js.map +1 -0
- package/dist/core/task-utils.d.ts +10 -1
- package/dist/core/task-utils.d.ts.map +1 -1
- package/dist/core/task-utils.js +22 -0
- package/dist/core/task-utils.js.map +1 -1
- package/dist/core/types.d.ts +142 -2
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +14 -1
- package/dist/core/types.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/infra/claude-runner.d.ts.map +1 -1
- package/dist/infra/claude-runner.js +3 -1
- package/dist/infra/claude-runner.js.map +1 -1
- package/dist/infra/config.d.ts +6 -3
- package/dist/infra/config.d.ts.map +1 -1
- package/dist/infra/config.js +127 -16
- package/dist/infra/config.js.map +1 -1
- package/dist/infra/gm-client-pool.d.ts +42 -0
- package/dist/infra/gm-client-pool.d.ts.map +1 -0
- package/dist/infra/gm-client-pool.js +97 -0
- package/dist/infra/gm-client-pool.js.map +1 -0
- package/dist/infra/gm-client.d.ts +1 -0
- package/dist/infra/gm-client.d.ts.map +1 -1
- package/dist/infra/gm-client.js +4 -0
- package/dist/infra/gm-client.js.map +1 -1
- package/dist/infra/gm-discovery.d.ts +6 -4
- package/dist/infra/gm-discovery.d.ts.map +1 -1
- package/dist/infra/gm-discovery.js +34 -16
- package/dist/infra/gm-discovery.js.map +1 -1
- package/dist/infra/logger.d.ts +6 -1
- package/dist/infra/logger.d.ts.map +1 -1
- package/dist/infra/logger.js +2 -0
- package/dist/infra/logger.js.map +1 -1
- package/dist/infra/task-poller.d.ts +2 -1
- package/dist/infra/task-poller.d.ts.map +1 -1
- package/dist/infra/task-poller.js +5 -1
- package/dist/infra/task-poller.js.map +1 -1
- package/dist/server/api.d.ts +15 -2
- package/dist/server/api.d.ts.map +1 -1
- package/dist/server/api.js +219 -17
- package/dist/server/api.js.map +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +7 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/runner-service.d.ts +23 -1
- package/dist/server/runner-service.d.ts.map +1 -1
- package/dist/server/runner-service.js +354 -52
- package/dist/server/runner-service.js.map +1 -1
- package/dist/ui/assets/index-D_vwcE8U.css +1 -0
- package/dist/ui/assets/index-ScZoMo7e.js +410 -0
- package/dist/ui/index.html +2 -2
- package/package.json +2 -1
- package/dist/ui/assets/index-CNWg3_sE.js +0 -259
- package/dist/ui/assets/index-iBDF7mnS.css +0 -1
package/dist/cli/index.js
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { readFileSync } from 'node:fs';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import { dirname, resolve } from 'node:path';
|
|
2
5
|
import { GraphMemoryClient } from '../infra/gm-client.js';
|
|
6
|
+
import { GraphMemoryClientPool } from '../infra/gm-client-pool.js';
|
|
3
7
|
import { ClaudeRunner } from '../infra/claude-runner.js';
|
|
4
8
|
import { TaskPoller } from '../infra/task-poller.js';
|
|
5
9
|
import { consoleLogger } from '../infra/logger.js';
|
|
@@ -10,6 +14,12 @@ import { createApiRouter } from '../server/api.js';
|
|
|
10
14
|
import { createWebSocketServer } from '../server/ws.js';
|
|
11
15
|
import { createRunnerService } from '../server/runner-service.js';
|
|
12
16
|
import { discoverServers } from '../infra/gm-discovery.js';
|
|
17
|
+
import { getActiveProject } from '../core/types.js';
|
|
18
|
+
// Read version from package.json once at startup
|
|
19
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
20
|
+
const __dirname = dirname(__filename);
|
|
21
|
+
const packageJson = JSON.parse(readFileSync(resolve(__dirname, '../../package.json'), 'utf-8'));
|
|
22
|
+
const APP_VERSION = packageJson.version;
|
|
13
23
|
function parseArgs(argv) {
|
|
14
24
|
const args = argv.slice(2);
|
|
15
25
|
const result = {
|
|
@@ -48,9 +58,17 @@ function parseArgs(argv) {
|
|
|
48
58
|
result.overrides.configPath = args[++i];
|
|
49
59
|
break;
|
|
50
60
|
case '--project':
|
|
51
|
-
case '-p':
|
|
52
|
-
|
|
61
|
+
case '-p': {
|
|
62
|
+
const pid = args[++i];
|
|
63
|
+
result.overrides.activeProjectId = pid;
|
|
64
|
+
// Will be merged into projects array by loadConfig/mergeConfigs
|
|
65
|
+
if (!result.overrides.projects)
|
|
66
|
+
result.overrides.projects = [];
|
|
67
|
+
const existing = result.overrides.projects.find((p) => p.projectId === pid);
|
|
68
|
+
if (!existing)
|
|
69
|
+
result.overrides.projects.push({ baseUrl: 'http://localhost:3000', projectId: pid });
|
|
53
70
|
break;
|
|
71
|
+
}
|
|
54
72
|
case '--tag':
|
|
55
73
|
case '-t':
|
|
56
74
|
result.overrides.tag = args[++i];
|
|
@@ -90,14 +108,19 @@ OPTIONS
|
|
|
90
108
|
|
|
91
109
|
CONFIG FILE (.gm-orchestrator.json)
|
|
92
110
|
{
|
|
93
|
-
"
|
|
94
|
-
|
|
95
|
-
|
|
111
|
+
"projects": [
|
|
112
|
+
{ "baseUrl": "http://localhost:3000", "projectId": "my-app", "label": "My App" }
|
|
113
|
+
],
|
|
114
|
+
"activeProjectId": "my-app",
|
|
115
|
+
"concurrency": 1,
|
|
96
116
|
"timeoutMs": 900000,
|
|
97
117
|
"maxRetries": 1,
|
|
98
118
|
"claudeArgs": []
|
|
99
119
|
}
|
|
100
120
|
|
|
121
|
+
Legacy format (auto-migrated):
|
|
122
|
+
{ "baseUrl": "http://localhost:3000", "projectId": "my-app" }
|
|
123
|
+
|
|
101
124
|
ENV VARS
|
|
102
125
|
GM_BASE_URL / GM_PROJECT_ID / GM_API_KEY / GM_TIMEOUT_MS
|
|
103
126
|
`);
|
|
@@ -107,7 +130,10 @@ async function main() {
|
|
|
107
130
|
const { command, epicId, overrides, printConfig, headless } = parseArgs(process.argv);
|
|
108
131
|
const config = loadConfig(overrides);
|
|
109
132
|
if (printConfig) {
|
|
110
|
-
const display = {
|
|
133
|
+
const display = {
|
|
134
|
+
...config,
|
|
135
|
+
projects: config.projects.map(({ apiKey, ...rest }) => ({ ...rest, ...(apiKey ? { apiKey: '***' } : {}) })),
|
|
136
|
+
};
|
|
111
137
|
console.log(JSON.stringify(display, null, 2));
|
|
112
138
|
return;
|
|
113
139
|
}
|
|
@@ -126,9 +152,13 @@ async function main() {
|
|
|
126
152
|
consoleLogger.info(`gm-orchestrator v1.0.0 → http://localhost:${port}`);
|
|
127
153
|
// Server mode doesn't require projectId upfront — it's set via the UI
|
|
128
154
|
const { app, start, mountStaticUI } = createServer({ logger: consoleLogger });
|
|
155
|
+
// Init pool from all configured projects
|
|
156
|
+
const gmPool = new GraphMemoryClientPool(config.projects);
|
|
157
|
+
const active = getActiveProject(config);
|
|
129
158
|
const gmClient = new GraphMemoryClient({
|
|
130
|
-
baseUrl:
|
|
131
|
-
projectId:
|
|
159
|
+
baseUrl: active?.baseUrl ?? 'http://localhost:3000',
|
|
160
|
+
projectId: active?.projectId ?? '',
|
|
161
|
+
...(active?.apiKey !== undefined && { apiKey: active.apiKey }),
|
|
132
162
|
});
|
|
133
163
|
// Create a no-op WS bus for now — replaced after server starts
|
|
134
164
|
const wsBusHolder = {
|
|
@@ -147,8 +177,10 @@ async function main() {
|
|
|
147
177
|
logger: consoleLogger,
|
|
148
178
|
gmDiscovery: { discoverServers },
|
|
149
179
|
gmClient,
|
|
180
|
+
gmPool,
|
|
150
181
|
runner,
|
|
151
182
|
saveConfig: (partial) => saveConfig(partial),
|
|
183
|
+
version: APP_VERSION,
|
|
152
184
|
});
|
|
153
185
|
// Mount API routes before the catch-all static handler
|
|
154
186
|
app.use(apiRouter);
|
|
@@ -158,10 +190,11 @@ async function main() {
|
|
|
158
190
|
return;
|
|
159
191
|
}
|
|
160
192
|
validateConfig(config);
|
|
193
|
+
const activeProj = getActiveProject(config);
|
|
161
194
|
const gm = new GraphMemoryClient({
|
|
162
|
-
baseUrl:
|
|
163
|
-
projectId:
|
|
164
|
-
...(
|
|
195
|
+
baseUrl: activeProj?.baseUrl ?? 'http://localhost:3000',
|
|
196
|
+
projectId: activeProj?.projectId ?? '',
|
|
197
|
+
...(activeProj?.apiKey !== undefined && { apiKey: activeProj.apiKey }),
|
|
165
198
|
});
|
|
166
199
|
const ports = {
|
|
167
200
|
gm,
|
|
@@ -176,7 +209,7 @@ async function main() {
|
|
|
176
209
|
gm.listTasks({ status: 'done' }),
|
|
177
210
|
]);
|
|
178
211
|
const epics = await gm.listEpics().catch(() => []);
|
|
179
|
-
consoleLogger.section(`Status — ${
|
|
212
|
+
consoleLogger.section(`Status — ${activeProj?.projectId ?? '(none)'}`);
|
|
180
213
|
console.log(` todo: ${todo.length}`);
|
|
181
214
|
console.log(` in_progress: ${inProgress.length}`);
|
|
182
215
|
console.log(` done: ${done.length}`);
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,16 @@
|
|
|
1
|
-
import type { GraphMemoryPort, ClaudeRunnerPort, TaskPollerPort, OrchestratorConfig, SprintStats } from './types.js';
|
|
1
|
+
import type { GraphMemoryPort, ClaudeRunnerPort, TaskPollerPort, OrchestratorConfig, SprintStats, CrossProjectResolver, CrossProjectTask } from './types.js';
|
|
2
2
|
import type { Logger } from '../infra/logger.js';
|
|
3
3
|
interface Ports {
|
|
4
4
|
gm: GraphMemoryPort;
|
|
5
5
|
runner: ClaudeRunnerPort;
|
|
6
6
|
poller: TaskPollerPort;
|
|
7
7
|
logger: Logger;
|
|
8
|
+
signal?: AbortSignal;
|
|
9
|
+
/**
|
|
10
|
+
* Optional resolver for cross-project blockers.
|
|
11
|
+
* When provided, `findNextRunnable` will check blockers in other projects.
|
|
12
|
+
*/
|
|
13
|
+
crossProjectResolver?: CrossProjectResolver;
|
|
8
14
|
}
|
|
9
15
|
/**
|
|
10
16
|
* Orchestrates a full sprint: runs all todo/in_progress tasks in priority
|
|
@@ -17,7 +23,23 @@ export declare function runSprint(ports: Ports, config: OrchestratorConfig): Pro
|
|
|
17
23
|
/**
|
|
18
24
|
* Runs all tasks belonging to an epic, in priority order with blocker checks.
|
|
19
25
|
* Marks the epic done when all tasks complete.
|
|
26
|
+
* Supports cross-project blockers when a CrossProjectResolver is injected.
|
|
20
27
|
*/
|
|
21
28
|
export declare function runEpic(epicId: string, ports: Ports, config: OrchestratorConfig): Promise<SprintStats>;
|
|
29
|
+
/**
|
|
30
|
+
* Runs a specific set of tasks by ID, in priority order.
|
|
31
|
+
* Fetches each task, validates it is runnable (todo/in_progress),
|
|
32
|
+
* then executes them sequentially using the standard runOneTask logic.
|
|
33
|
+
*/
|
|
34
|
+
export declare function runTasks(taskIds: string[], ports: Ports, config: OrchestratorConfig): Promise<SprintStats>;
|
|
35
|
+
/**
|
|
36
|
+
* Collect tasks for a cross-project epic.
|
|
37
|
+
* Fetches the epic from the "home" project, then gathers tasks from all
|
|
38
|
+
* referenced projects. Each task is annotated with `sourceProjectId`.
|
|
39
|
+
*/
|
|
40
|
+
export declare function collectCrossProjectEpicTasks(epicId: string, homePorts: Pick<Ports, 'gm' | 'logger'>, resolveGm: (projectId: string) => GraphMemoryPort, homeProjectId: string): Promise<{
|
|
41
|
+
epic: Awaited<ReturnType<GraphMemoryPort['getEpic']>>;
|
|
42
|
+
tasks: CrossProjectTask[];
|
|
43
|
+
}>;
|
|
22
44
|
export {};
|
|
23
45
|
//# sourceMappingURL=orchestrator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/core/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,WAAW,
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/core/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,WAAW,EAGX,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAGpB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,UAAU,KAAK;IACb,EAAE,EAAE,eAAe,CAAC;IACpB,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;CAC7C;AAED;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC7B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,WAAW,CAAC,CAyDtB;AAED;;;;GAIG;AACH,wBAAsB,OAAO,CAC3B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,WAAW,CAAC,CA2DtB;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,MAAM,EAAE,EACjB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,WAAW,CAAC,CAoDtB;AAyHD;;;;GAIG;AACH,wBAAsB,4BAA4B,CAChD,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,QAAQ,CAAC,EACvC,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,eAAe,EACjD,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC;IAAE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAAC,KAAK,EAAE,gBAAgB,EAAE,CAAA;CAAE,CAAC,CAmC/F"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getActiveProject } from './types.js';
|
|
2
|
+
import { sortByPriority, areBlockersResolved, areBlockersResolvedAsync } from './task-utils.js';
|
|
2
3
|
/**
|
|
3
4
|
* Orchestrates a full sprint: runs all todo/in_progress tasks in priority
|
|
4
5
|
* order, respecting blockers, retrying on failure, until none remain.
|
|
@@ -12,8 +13,15 @@ export async function runSprint(ports, config) {
|
|
|
12
13
|
const stats = { done: 0, cancelled: 0, retried: 0, errors: 0, skipped: 0, durationMs: 0 };
|
|
13
14
|
const failedIds = new Set();
|
|
14
15
|
const retryCounts = new Map();
|
|
15
|
-
|
|
16
|
+
const activeProject = getActiveProject(config);
|
|
17
|
+
const projectLabel = activeProject?.projectId ?? '(none)';
|
|
18
|
+
logger.section(`Sprint — project: ${projectLabel}${config.tag ? ` tag: ${config.tag}` : ''}`);
|
|
16
19
|
while (true) {
|
|
20
|
+
if (ports.signal?.aborted) {
|
|
21
|
+
logger.warn('Sprint aborted');
|
|
22
|
+
stats.durationMs = Date.now() - startTime;
|
|
23
|
+
return stats;
|
|
24
|
+
}
|
|
17
25
|
const tagFilter = config.tag !== undefined ? { tag: config.tag } : {};
|
|
18
26
|
const [inProgress, todo] = await Promise.all([
|
|
19
27
|
gm.listTasks({ status: 'in_progress', ...tagFilter }),
|
|
@@ -30,7 +38,7 @@ export async function runSprint(ports, config) {
|
|
|
30
38
|
logStats(logger, stats);
|
|
31
39
|
return stats;
|
|
32
40
|
}
|
|
33
|
-
const next = findNextRunnable(queue, logger);
|
|
41
|
+
const next = await findNextRunnable(queue, logger, ports.crossProjectResolver);
|
|
34
42
|
if (!next) {
|
|
35
43
|
logger.warn(`${queue.length} tasks remain but all are blocked — stopping`);
|
|
36
44
|
queue.forEach((t) => logger.skip(` blocked: ${t.title} (${t.id})`));
|
|
@@ -49,6 +57,7 @@ export async function runSprint(ports, config) {
|
|
|
49
57
|
/**
|
|
50
58
|
* Runs all tasks belonging to an epic, in priority order with blocker checks.
|
|
51
59
|
* Marks the epic done when all tasks complete.
|
|
60
|
+
* Supports cross-project blockers when a CrossProjectResolver is injected.
|
|
52
61
|
*/
|
|
53
62
|
export async function runEpic(epicId, ports, config) {
|
|
54
63
|
const { gm, logger } = ports;
|
|
@@ -60,6 +69,11 @@ export async function runEpic(epicId, ports, config) {
|
|
|
60
69
|
const failedIds = new Set();
|
|
61
70
|
const retryCounts = new Map();
|
|
62
71
|
while (true) {
|
|
72
|
+
if (ports.signal?.aborted) {
|
|
73
|
+
logger.warn('Epic aborted');
|
|
74
|
+
stats.durationMs = Date.now() - startTime;
|
|
75
|
+
return stats;
|
|
76
|
+
}
|
|
63
77
|
// Fetch fresh task list from the epic's dedicated endpoint
|
|
64
78
|
const allTasks = await gm.listEpicTasks(epicId);
|
|
65
79
|
const queue = sortByPriority(allTasks.filter((t) => !['done', 'cancelled'].includes(t.status) &&
|
|
@@ -75,7 +89,7 @@ export async function runEpic(epicId, ports, config) {
|
|
|
75
89
|
logStats(logger, stats);
|
|
76
90
|
return stats;
|
|
77
91
|
}
|
|
78
|
-
const next = findNextRunnable(queue, logger);
|
|
92
|
+
const next = await findNextRunnable(queue, logger, ports.crossProjectResolver);
|
|
79
93
|
if (!next) {
|
|
80
94
|
logger.warn('All remaining epic tasks are blocked — stopping');
|
|
81
95
|
stats.durationMs = Date.now() - startTime;
|
|
@@ -90,16 +104,84 @@ export async function runEpic(epicId, ports, config) {
|
|
|
90
104
|
await sleep(config.pauseMs);
|
|
91
105
|
}
|
|
92
106
|
}
|
|
107
|
+
/**
|
|
108
|
+
* Runs a specific set of tasks by ID, in priority order.
|
|
109
|
+
* Fetches each task, validates it is runnable (todo/in_progress),
|
|
110
|
+
* then executes them sequentially using the standard runOneTask logic.
|
|
111
|
+
*/
|
|
112
|
+
export async function runTasks(taskIds, ports, config) {
|
|
113
|
+
const { gm, logger } = ports;
|
|
114
|
+
const startTime = Date.now();
|
|
115
|
+
const stats = { done: 0, cancelled: 0, retried: 0, errors: 0, skipped: 0, durationMs: 0 };
|
|
116
|
+
const failedIds = new Set();
|
|
117
|
+
const retryCounts = new Map();
|
|
118
|
+
logger.section(`Running ${taskIds.length} selected task(s)`);
|
|
119
|
+
// Fetch all tasks and validate
|
|
120
|
+
const tasks = [];
|
|
121
|
+
for (const taskId of taskIds) {
|
|
122
|
+
if (ports.signal?.aborted)
|
|
123
|
+
break;
|
|
124
|
+
try {
|
|
125
|
+
const task = await gm.getTask(taskId);
|
|
126
|
+
if (task.status === 'todo' || task.status === 'in_progress') {
|
|
127
|
+
tasks.push(task);
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
logger.skip(`Skipping "${task.title}" — status is "${task.status}"`);
|
|
131
|
+
stats.skipped++;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
catch (err) {
|
|
135
|
+
logger.error(`Failed to fetch task ${taskId}: ${String(err)}`);
|
|
136
|
+
stats.errors++;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// Sort by priority
|
|
140
|
+
const queue = sortByPriority(tasks);
|
|
141
|
+
for (const task of queue) {
|
|
142
|
+
if (ports.signal?.aborted) {
|
|
143
|
+
logger.warn('Run aborted');
|
|
144
|
+
break;
|
|
145
|
+
}
|
|
146
|
+
if (failedIds.has(task.id))
|
|
147
|
+
continue;
|
|
148
|
+
const result = await runOneTask(task, ports, config);
|
|
149
|
+
await handleResult(result, task, {
|
|
150
|
+
gm, logger, stats, failedIds, retryCounts,
|
|
151
|
+
maxRetries: config.maxRetries,
|
|
152
|
+
});
|
|
153
|
+
await sleep(config.pauseMs);
|
|
154
|
+
}
|
|
155
|
+
stats.durationMs = Date.now() - startTime;
|
|
156
|
+
logStats(logger, stats);
|
|
157
|
+
return stats;
|
|
158
|
+
}
|
|
93
159
|
// ── Internal ──────────────────────────────────────────────────────────────
|
|
94
|
-
|
|
160
|
+
/**
|
|
161
|
+
* Finds the next runnable task in the queue, respecting both same-project
|
|
162
|
+
* and cross-project blockers. If a CrossProjectResolver is provided,
|
|
163
|
+
* blockers with a `projectId` field are resolved asynchronously against
|
|
164
|
+
* the remote project.
|
|
165
|
+
*/
|
|
166
|
+
async function findNextRunnable(queue, logger, resolver) {
|
|
95
167
|
for (const task of queue) {
|
|
96
|
-
|
|
97
|
-
|
|
168
|
+
// Fast path: no cross-project blockers or no resolver
|
|
169
|
+
const hasCrossProjectBlockers = task.blockedBy?.some((b) => b.projectId);
|
|
170
|
+
if (!hasCrossProjectBlockers || !resolver) {
|
|
171
|
+
if (areBlockersResolved(task))
|
|
172
|
+
return task;
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
// Slow path: resolve cross-project blockers
|
|
176
|
+
const resolved = await areBlockersResolvedAsync(task, resolver);
|
|
177
|
+
if (resolved)
|
|
178
|
+
return task;
|
|
179
|
+
}
|
|
98
180
|
logger.skip(`blocked: "${task.title}"`);
|
|
99
181
|
}
|
|
100
182
|
return null;
|
|
101
183
|
}
|
|
102
|
-
async function runOneTask(task, { gm, runner, poller, logger }, config) {
|
|
184
|
+
async function runOneTask(task, { gm, runner, poller, logger, signal }, config) {
|
|
103
185
|
logger.task(task);
|
|
104
186
|
// Mark in_progress (idempotent)
|
|
105
187
|
if (task.status !== 'in_progress') {
|
|
@@ -119,6 +201,7 @@ async function runOneTask(task, { gm, runner, poller, logger }, config) {
|
|
|
119
201
|
// Poll GraphMemory until task reaches terminal state
|
|
120
202
|
const pollResult = await poller.waitForCompletion(task.id, {
|
|
121
203
|
timeoutMs: config.timeoutMs,
|
|
204
|
+
...(signal ? { signal } : {}),
|
|
122
205
|
});
|
|
123
206
|
await sessionPromise; // let process clean up
|
|
124
207
|
if (pollResult === 'timeout') {
|
|
@@ -137,11 +220,13 @@ async function handleResult(result, task, ctx) {
|
|
|
137
220
|
const { gm, logger, stats, failedIds, retryCounts, maxRetries } = ctx;
|
|
138
221
|
if (result === 'done' || result === 'dry_run') {
|
|
139
222
|
stats.done++;
|
|
223
|
+
logger.taskResult(task, 'done');
|
|
140
224
|
return;
|
|
141
225
|
}
|
|
142
226
|
if (result === 'cancelled') {
|
|
143
227
|
stats.cancelled++;
|
|
144
228
|
failedIds.add(task.id);
|
|
229
|
+
logger.taskResult(task, 'cancelled');
|
|
145
230
|
return;
|
|
146
231
|
}
|
|
147
232
|
// timeout | error
|
|
@@ -149,16 +234,54 @@ async function handleResult(result, task, ctx) {
|
|
|
149
234
|
if (retries < maxRetries) {
|
|
150
235
|
retryCounts.set(task.id, retries + 1);
|
|
151
236
|
stats.retried++;
|
|
237
|
+
logger.taskResult(task, 'timeout', { attempt: retries + 1, maxRetries });
|
|
152
238
|
logger.warn(`Retrying (${retries + 1}/${maxRetries}): ${task.id}`);
|
|
153
239
|
await gm.moveTask(task.id, 'todo').catch(() => { });
|
|
154
240
|
}
|
|
155
241
|
else {
|
|
156
242
|
stats.errors++;
|
|
157
243
|
failedIds.add(task.id);
|
|
244
|
+
logger.taskResult(task, 'timeout');
|
|
158
245
|
logger.error(`Giving up on: ${task.id}`);
|
|
159
246
|
await gm.moveTask(task.id, 'cancelled').catch(() => { });
|
|
160
247
|
}
|
|
161
248
|
}
|
|
249
|
+
/**
|
|
250
|
+
* Collect tasks for a cross-project epic.
|
|
251
|
+
* Fetches the epic from the "home" project, then gathers tasks from all
|
|
252
|
+
* referenced projects. Each task is annotated with `sourceProjectId`.
|
|
253
|
+
*/
|
|
254
|
+
export async function collectCrossProjectEpicTasks(epicId, homePorts, resolveGm, homeProjectId) {
|
|
255
|
+
const { gm, logger } = homePorts;
|
|
256
|
+
const epic = await gm.getEpic(epicId);
|
|
257
|
+
const taskRefs = epic.tasks ?? [];
|
|
258
|
+
// Group task refs by project — refs without projectId belong to the home project
|
|
259
|
+
const byProject = new Map();
|
|
260
|
+
for (const ref of taskRefs) {
|
|
261
|
+
const pid = ref.projectId ?? homeProjectId;
|
|
262
|
+
const ids = byProject.get(pid) ?? [];
|
|
263
|
+
ids.push(ref.id);
|
|
264
|
+
byProject.set(pid, ids);
|
|
265
|
+
}
|
|
266
|
+
// Fetch tasks from each project in parallel
|
|
267
|
+
const allTasks = [];
|
|
268
|
+
await Promise.all([...byProject.entries()].map(async ([projectId, taskIds]) => {
|
|
269
|
+
try {
|
|
270
|
+
const client = projectId === homeProjectId ? gm : resolveGm(projectId);
|
|
271
|
+
const taskIdSet = new Set(taskIds);
|
|
272
|
+
const tasks = await client.listTasks({ limit: 500 });
|
|
273
|
+
for (const t of tasks) {
|
|
274
|
+
if (taskIdSet.has(t.id)) {
|
|
275
|
+
allTasks.push({ ...t, sourceProjectId: projectId });
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
catch (err) {
|
|
280
|
+
logger.warn(`Failed to fetch tasks from project "${projectId}": ${String(err)}`);
|
|
281
|
+
}
|
|
282
|
+
}));
|
|
283
|
+
return { epic, tasks: allTasks };
|
|
284
|
+
}
|
|
162
285
|
function logStats(logger, stats) {
|
|
163
286
|
const secs = Math.round(stats.durationMs / 1000);
|
|
164
287
|
logger.info(`✓ ${stats.done} done ✗ ${stats.cancelled} cancelled ` +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/core/orchestrator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/core/orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Task
|
|
1
|
+
import type { Task } from './types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Builds a self-contained, autonomous prompt for a single Claude Code session.
|
|
4
4
|
*
|
|
@@ -21,5 +21,7 @@ import type { Task, OrchestratorConfig } from './types.js';
|
|
|
21
21
|
* 5. MINIMAL PROMPT — only what's needed. The description might be empty
|
|
22
22
|
* deliberately (Claude fetches full context via tasks_get). Don't pad.
|
|
23
23
|
*/
|
|
24
|
-
export declare function buildPrompt(task: Task, config:
|
|
24
|
+
export declare function buildPrompt(task: Task, config: {
|
|
25
|
+
projectId: string;
|
|
26
|
+
}): string;
|
|
25
27
|
//# sourceMappingURL=prompt-builder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-builder.d.ts","sourceRoot":"","sources":["../../src/core/prompt-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"prompt-builder.d.ts","sourceRoot":"","sources":["../../src/core/prompt-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAoC7E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-builder.js","sourceRoot":"","sources":["../../src/core/prompt-builder.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,WAAW,CAAC,IAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"prompt-builder.js","sourceRoot":"","sources":["../../src/core/prompt-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { GraphMemoryPort, ClaudeRunnerPort, TaskPollerPort, OrchestratorConfig, SprintStats, Task, CrossProjectResolver } from './types.js';
|
|
2
|
+
import type { Logger } from '../infra/logger.js';
|
|
3
|
+
export type SchedulerStrategy = 'round-robin' | 'priority';
|
|
4
|
+
export interface RunRequest {
|
|
5
|
+
id: string;
|
|
6
|
+
projectId: string;
|
|
7
|
+
mode: 'sprint' | 'epic';
|
|
8
|
+
epicId?: string | undefined;
|
|
9
|
+
tag?: string | undefined;
|
|
10
|
+
priority: number;
|
|
11
|
+
enqueuedAt: number;
|
|
12
|
+
}
|
|
13
|
+
export type SlotStatus = 'idle' | 'running' | 'stopping';
|
|
14
|
+
export interface RunSlot {
|
|
15
|
+
id: number;
|
|
16
|
+
status: SlotStatus;
|
|
17
|
+
projectId: string | null;
|
|
18
|
+
abort: AbortController | null;
|
|
19
|
+
runPromise: Promise<SprintStats> | null;
|
|
20
|
+
activeTask: Task | null;
|
|
21
|
+
completedTasks: Task[];
|
|
22
|
+
recentLines: string[];
|
|
23
|
+
}
|
|
24
|
+
export interface SchedulerPorts {
|
|
25
|
+
resolveGm: (projectId: string) => GraphMemoryPort;
|
|
26
|
+
createRunner: (projectId: string) => ClaudeRunnerPort;
|
|
27
|
+
createPoller: (projectId: string) => TaskPollerPort;
|
|
28
|
+
logger: Logger;
|
|
29
|
+
/** Optional resolver for cross-project blocker dependencies. */
|
|
30
|
+
crossProjectResolver?: CrossProjectResolver;
|
|
31
|
+
}
|
|
32
|
+
export interface SchedulerEvents {
|
|
33
|
+
onSlotStarted?: (slotId: number, request: RunRequest) => void;
|
|
34
|
+
onSlotCompleted?: (slotId: number, request: RunRequest, stats: SprintStats) => void;
|
|
35
|
+
onSlotError?: (slotId: number, request: RunRequest, error: Error) => void;
|
|
36
|
+
onQueueDrained?: () => void;
|
|
37
|
+
}
|
|
38
|
+
export interface Scheduler {
|
|
39
|
+
/** Enqueue a run request. Returns the request ID. */
|
|
40
|
+
enqueue(request: Omit<RunRequest, 'id' | 'enqueuedAt'>): string;
|
|
41
|
+
/** Start processing the queue with configured concurrency. */
|
|
42
|
+
start(): void;
|
|
43
|
+
/** Stop all running slots and drain the queue. */
|
|
44
|
+
stop(): Promise<void>;
|
|
45
|
+
/** Cancel a specific queued request (not yet running). Returns true if removed. */
|
|
46
|
+
cancel(requestId: string): boolean;
|
|
47
|
+
/** Get current queue state. */
|
|
48
|
+
readonly queue: ReadonlyArray<RunRequest>;
|
|
49
|
+
/** Get slot states. */
|
|
50
|
+
readonly slots: ReadonlyArray<Readonly<RunSlot>>;
|
|
51
|
+
/** True if any slot is running or queue is non-empty. */
|
|
52
|
+
readonly isActive: boolean;
|
|
53
|
+
/** Get aggregate stats across all completed runs. */
|
|
54
|
+
readonly aggregateStats: SprintStats;
|
|
55
|
+
}
|
|
56
|
+
export declare function createScheduler(config: OrchestratorConfig, ports: SchedulerPorts, events?: SchedulerEvents): Scheduler;
|
|
57
|
+
//# sourceMappingURL=scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/core/scheduler.ts"],"names":[],"mappings":"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"}
|