@luckydraw/cumulus 1.0.3 → 1.0.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.
- package/CHANGELOG.md +19 -0
- package/dist/gateway/daemon.d.ts.map +1 -1
- package/dist/gateway/daemon.js +53 -18
- package/dist/gateway/daemon.js.map +1 -1
- package/dist/gateway/gateway-agents-mcp.js +133 -0
- package/dist/gateway/gateway-agents-mcp.js.map +1 -1
- package/dist/gateway/jobs.d.ts +158 -0
- package/dist/gateway/jobs.d.ts.map +1 -0
- package/dist/gateway/jobs.js +497 -0
- package/dist/gateway/jobs.js.map +1 -0
- package/dist/gateway/scheduler.d.ts.map +1 -1
- package/dist/gateway/scheduler.js +9 -30
- package/dist/gateway/scheduler.js.map +1 -1
- package/dist/gateway/server.d.ts +16 -0
- package/dist/gateway/server.d.ts.map +1 -1
- package/dist/gateway/server.js +183 -2
- package/dist/gateway/server.js.map +1 -1
- package/dist/gateway/setup.d.ts.map +1 -1
- package/dist/gateway/setup.js +10 -0
- package/dist/gateway/setup.js.map +1 -1
- package/dist/lib/config.d.ts +11 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +21 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/gateway.d.ts +35 -45
- package/dist/lib/gateway.d.ts.map +1 -1
- package/dist/lib/gateway.js +98 -117
- package/dist/lib/gateway.js.map +1 -1
- package/dist/lib/tool-inventory.d.ts +140 -0
- package/dist/lib/tool-inventory.d.ts.map +1 -0
- package/dist/lib/tool-inventory.js +317 -0
- package/dist/lib/tool-inventory.js.map +1 -0
- package/docs/conditional-continuation.md +102 -147
- package/docs/web-app-agent-guide.md +74 -3
- package/examples/web-app-agent/README.md +40 -8
- package/examples/web-app-agent/thread-config.visitor.example.json +30 -2
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../src/gateway/jobs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/gateway/scheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/gateway/scheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAeH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,4CAA4C;IAC5C,IAAI,IAAI,IAAI,CAAC;IACb,mEAAmE;IACnE,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,kDAAkD;IAClD,MAAM,IAAI,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAA;KAAE,CAAC,CAAC;CAC7D;AAMD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,GAAG,OAAO,CAgB5E;AA2BD,MAAM,WAAW,gBAAgB;IAC/B,0DAA0D;IAC1D,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,sBAAsB;IACtB,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CAC7D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,gBAAgB,GAAG,eAAe,CA6NvE"}
|
|
@@ -13,8 +13,7 @@ import * as fs from 'fs';
|
|
|
13
13
|
import * as os from 'os';
|
|
14
14
|
import * as path from 'path';
|
|
15
15
|
import { loadThreadConfig, saveThreadConfig } from '../lib/config.js';
|
|
16
|
-
import {
|
|
17
|
-
import { isThreadBusy, markThreadBusy, enqueueAgentMessage } from './server.js';
|
|
16
|
+
import { deliverAgentTurn } from './server.js';
|
|
18
17
|
const THREADS_DIR = path.join(process.env.CUMULUS_DIR || path.join(os.homedir(), '.cumulus'), 'threads');
|
|
19
18
|
/**
|
|
20
19
|
* Parse a cron expression and check if it matches the current minute.
|
|
@@ -78,35 +77,15 @@ export function createScheduler(opts) {
|
|
|
78
77
|
const text = `[Scheduled trigger: ${schedule.id}] ${schedule.message}`;
|
|
79
78
|
// Task 120: a trigger fires on wall-clock time, not on the thread being free.
|
|
80
79
|
// Without this gate it spawned a second concurrent turn on the same thread
|
|
81
|
-
// (up to 4 observed on cdda, all writing the same projectDir).
|
|
82
|
-
//
|
|
83
|
-
//
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
sender: `schedule:${schedule.id}`,
|
|
88
|
-
type: 'inject',
|
|
89
|
-
targets: [threadName],
|
|
90
|
-
visibility: 'direct',
|
|
91
|
-
timestamp: Date.now(),
|
|
92
|
-
});
|
|
93
|
-
log(`Thread "${threadName}" busy — queued trigger "${schedule.id}" (position ${position})`);
|
|
80
|
+
// (up to 4 observed on cdda, all writing the same projectDir). The gate
|
|
81
|
+
// itself lives in server.ts's deliverAgentTurn (task 139), shared with job
|
|
82
|
+
// completions — every automated sender takes the same path.
|
|
83
|
+
const outcome = await deliverAgentTurn(threadName, text, `schedule:${schedule.id}`, opts.pipelineOpts);
|
|
84
|
+
if (outcome === 'queued') {
|
|
85
|
+
log(`Thread "${threadName}" busy — queued trigger "${schedule.id}"`);
|
|
94
86
|
}
|
|
95
|
-
else {
|
|
96
|
-
|
|
97
|
-
try {
|
|
98
|
-
await sendMessage({
|
|
99
|
-
threadName,
|
|
100
|
-
message: text,
|
|
101
|
-
...opts.pipelineOpts,
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
catch (err) {
|
|
105
|
-
log(`Failed to fire trigger "${schedule.id}" on "${threadName}": ${err}`);
|
|
106
|
-
}
|
|
107
|
-
finally {
|
|
108
|
-
markThreadBusy(threadName, false);
|
|
109
|
-
}
|
|
87
|
+
else if (outcome === 'failed') {
|
|
88
|
+
log(`Failed to fire trigger "${schedule.id}" on "${threadName}"`);
|
|
110
89
|
}
|
|
111
90
|
// Auto-remove 'once' triggers after firing
|
|
112
91
|
if (schedule.trigger === 'once') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/gateway/scheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/gateway/scheduler.ts"],"names":[],"mappings":"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"}
|
package/dist/gateway/server.d.ts
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
*/
|
|
17
17
|
import { type GatewayAgentsConfig } from '../lib/gateway.js';
|
|
18
18
|
import type { HooksConfig, NamespaceConfig, AppliedConfig } from './config.js';
|
|
19
|
+
import { type JobRegistryHandle } from './jobs.js';
|
|
19
20
|
import { type DemoCapDenial } from './namespaces.js';
|
|
20
21
|
import { type VapidConfig } from './push.js';
|
|
21
22
|
export interface GatewayServerOptions {
|
|
@@ -75,6 +76,8 @@ export interface GatewayServerHandle {
|
|
|
75
76
|
setScheduler: (s: {
|
|
76
77
|
reloadThread: (name: string) => void;
|
|
77
78
|
}) => void;
|
|
79
|
+
/** Set job registry reference — used by the background-job REST endpoints (task 139) */
|
|
80
|
+
setJobRegistry: (r: JobRegistryHandle) => void;
|
|
78
81
|
/** Set shutdown/restart callbacks — used by admin REST endpoints (cross-platform restart) */
|
|
79
82
|
setAdminCallbacks: (cbs: {
|
|
80
83
|
restart: () => void;
|
|
@@ -97,6 +100,19 @@ export declare function markThreadBusy(threadName: string, busy: boolean): void;
|
|
|
97
100
|
export declare function enqueueAgentMessage(threadName: string, msg: AgentQueuedMessage): number;
|
|
98
101
|
/** Check if a thread is currently busy (from any source). */
|
|
99
102
|
export declare function isThreadBusy(threadName: string): boolean;
|
|
103
|
+
/**
|
|
104
|
+
* Deliver an automated turn to a thread, honouring the single busy gate.
|
|
105
|
+
*
|
|
106
|
+
* THE one place a non-user, non-transport sender (a scheduled trigger, a
|
|
107
|
+
* finished background job) starts a turn. Task 120 had to add this gate to the
|
|
108
|
+
* scheduler after it spawned four concurrent turns on one thread; task 139
|
|
109
|
+
* needed the identical gate for job completions. Two copies of it is exactly
|
|
110
|
+
* the shape of task 100's stranded-queue bug, so there is one.
|
|
111
|
+
*
|
|
112
|
+
* Busy ⇒ queue (drained at the shared `markThreadBusy(false)` point).
|
|
113
|
+
* Idle ⇒ hold the thread busy for the duration, so the other paths see it.
|
|
114
|
+
*/
|
|
115
|
+
export declare function deliverAgentTurn(threadName: string, text: string, sender: string, pipelineOpts: Record<string, unknown>): Promise<'queued' | 'sent' | 'failed'>;
|
|
100
116
|
/**
|
|
101
117
|
* True if `err` is a benign socket error caused by a client disconnecting
|
|
102
118
|
* mid-stream (EPIPE/ECONNRESET/etc.). Used by the daemon's uncaughtException
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/gateway/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/gateway/server.ts"],"names":[],"mappings":"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"}
|
package/dist/gateway/server.js
CHANGED
|
@@ -20,9 +20,9 @@ import * as fs from 'fs';
|
|
|
20
20
|
import * as http from 'http';
|
|
21
21
|
import * as os from 'os';
|
|
22
22
|
import * as path from 'path';
|
|
23
|
-
import { loadThreadConfig, saveThreadConfig, setConfigThreadsDir } from '../lib/config.js';
|
|
23
|
+
import { loadGlobalConfig, loadThreadConfig, mergeConfigs, saveThreadConfig, setConfigThreadsDir, } from '../lib/config.js';
|
|
24
24
|
import { loadEmbeddings, generateMissingEmbeddings } from '../lib/embeddings.js';
|
|
25
|
-
import { sendMessage, getOrCreateThread, clearThreadCache, getActiveSubprocessCount, setGatewayThreadsDir, } from '../lib/gateway.js';
|
|
25
|
+
import { sendMessage, getOrCreateThread, clearThreadCache, canRunBackgroundWork, getActiveSubprocessCount, setGatewayThreadsDir, } from '../lib/gateway.js';
|
|
26
26
|
import { verifyLicense, majorOf, LICENSE_CONTACT } from '../lib/license.js';
|
|
27
27
|
import { getPromptsDirForThreadPath, isValidCaptureId, readPromptCapture, } from '../lib/prompt-capture.js';
|
|
28
28
|
import { catchUpSegmentation, loadSegmentBoundaries, saveSegmentBoundaries, } from '../lib/segments.js';
|
|
@@ -33,6 +33,7 @@ import { authenticate, getPresentedKey } from './auth.js';
|
|
|
33
33
|
import { BridgeGateway } from './bridge/gateway.js';
|
|
34
34
|
import { applyConfigPatch, maskedConfigView } from './config.js';
|
|
35
35
|
import { handleEmailHook, handleFormHook, handleGenericWebhook, } from './hooks.js';
|
|
36
|
+
import { validateJobRequest } from './jobs.js';
|
|
36
37
|
import { allNamespaceKeys, demoMintDenial, extraMcpServersForThread, licenseBannerLines, namespaceForKey, namespaceForThread, resolveExecutorProxy, threadAccessibleToScope, threadVisibleToScope, } from './namespaces.js';
|
|
37
38
|
import { configureVapid, sendNotification, subscribe as pushSubscribe, unsubscribe as pushUnsubscribe, } from './push.js';
|
|
38
39
|
import { validateTranscriptFlush, ingestTranscriptFlush } from './transcript-ingest.js';
|
|
@@ -127,6 +128,43 @@ export function enqueueAgentMessage(threadName, msg) {
|
|
|
127
128
|
export function isThreadBusy(threadName) {
|
|
128
129
|
return !!threadBusy.get(threadName);
|
|
129
130
|
}
|
|
131
|
+
/**
|
|
132
|
+
* Deliver an automated turn to a thread, honouring the single busy gate.
|
|
133
|
+
*
|
|
134
|
+
* THE one place a non-user, non-transport sender (a scheduled trigger, a
|
|
135
|
+
* finished background job) starts a turn. Task 120 had to add this gate to the
|
|
136
|
+
* scheduler after it spawned four concurrent turns on one thread; task 139
|
|
137
|
+
* needed the identical gate for job completions. Two copies of it is exactly
|
|
138
|
+
* the shape of task 100's stranded-queue bug, so there is one.
|
|
139
|
+
*
|
|
140
|
+
* Busy ⇒ queue (drained at the shared `markThreadBusy(false)` point).
|
|
141
|
+
* Idle ⇒ hold the thread busy for the duration, so the other paths see it.
|
|
142
|
+
*/
|
|
143
|
+
export async function deliverAgentTurn(threadName, text, sender, pipelineOpts) {
|
|
144
|
+
if (threadBusy.get(threadName)) {
|
|
145
|
+
enqueueAgentMessage(threadName, {
|
|
146
|
+
text,
|
|
147
|
+
sender,
|
|
148
|
+
type: 'inject',
|
|
149
|
+
targets: [threadName],
|
|
150
|
+
visibility: 'direct',
|
|
151
|
+
timestamp: Date.now(),
|
|
152
|
+
});
|
|
153
|
+
return 'queued';
|
|
154
|
+
}
|
|
155
|
+
markThreadBusy(threadName, true);
|
|
156
|
+
try {
|
|
157
|
+
await sendMessage({ threadName, message: text, ...pipelineOpts });
|
|
158
|
+
return 'sent';
|
|
159
|
+
}
|
|
160
|
+
catch (err) {
|
|
161
|
+
console.error(`[Gateway] Failed to deliver "${sender}" turn on "${threadName}": ${err}`);
|
|
162
|
+
return 'failed';
|
|
163
|
+
}
|
|
164
|
+
finally {
|
|
165
|
+
markThreadBusy(threadName, false);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
130
168
|
function enqueue(threadName, item) {
|
|
131
169
|
if (!threadQueues.has(threadName)) {
|
|
132
170
|
threadQueues.set(threadName, []);
|
|
@@ -1386,6 +1424,115 @@ async function handleDeleteSchedule(threadName, scheduleId, res, scheduler) {
|
|
|
1386
1424
|
jsonResponse(res, 500, { error: String(err) });
|
|
1387
1425
|
}
|
|
1388
1426
|
}
|
|
1427
|
+
// ─── Background job handlers (task 139) ────────────────────
|
|
1428
|
+
/**
|
|
1429
|
+
* Can this thread start background jobs?
|
|
1430
|
+
*
|
|
1431
|
+
* `run_job` is arbitrary shell execution reached over MCP, so an unguarded
|
|
1432
|
+
* endpoint would let a thread that denies `Bash` run shell anyway — exactly
|
|
1433
|
+
* the bypass task 136 closed for `read_file`. Gated on the same derived
|
|
1434
|
+
* predicate the seeding gate uses (task 134), against the MERGED config, so a
|
|
1435
|
+
* global denial counts. The check lives at this seam and not in the tool list
|
|
1436
|
+
* because the MCP shim cannot see thread config, and a thread configured with
|
|
1437
|
+
* a denylist would otherwise be silently granted each new tool (task 137).
|
|
1438
|
+
*/
|
|
1439
|
+
async function threadCanRunJobs(threadName) {
|
|
1440
|
+
try {
|
|
1441
|
+
const merged = mergeConfigs(await loadGlobalConfig(), await loadThreadConfig(threadName));
|
|
1442
|
+
return canRunBackgroundWork(merged);
|
|
1443
|
+
}
|
|
1444
|
+
catch {
|
|
1445
|
+
return false;
|
|
1446
|
+
}
|
|
1447
|
+
}
|
|
1448
|
+
async function handleListJobs(threadName, res, jobs) {
|
|
1449
|
+
if (!jobs) {
|
|
1450
|
+
jsonResponse(res, 503, { error: 'Job registry not available' });
|
|
1451
|
+
return;
|
|
1452
|
+
}
|
|
1453
|
+
jsonResponse(res, 200, { jobs: jobs.list(threadName) });
|
|
1454
|
+
}
|
|
1455
|
+
async function handleCreateJob(threadName, req, res, jobs, projectRoot) {
|
|
1456
|
+
if (!jobs) {
|
|
1457
|
+
jsonResponse(res, 503, { error: 'Job registry not available' });
|
|
1458
|
+
return;
|
|
1459
|
+
}
|
|
1460
|
+
let body;
|
|
1461
|
+
try {
|
|
1462
|
+
body = JSON.parse(await readBody(req));
|
|
1463
|
+
}
|
|
1464
|
+
catch {
|
|
1465
|
+
jsonResponse(res, 400, { error: 'Invalid JSON body' });
|
|
1466
|
+
return;
|
|
1467
|
+
}
|
|
1468
|
+
const validation = validateJobRequest(body);
|
|
1469
|
+
if (!validation.ok) {
|
|
1470
|
+
jsonResponse(res, 400, { error: validation.error });
|
|
1471
|
+
return;
|
|
1472
|
+
}
|
|
1473
|
+
if (!(await threadCanRunJobs(threadName))) {
|
|
1474
|
+
jsonResponse(res, 403, {
|
|
1475
|
+
error: 'This thread is not permitted to run shell commands, so it cannot start background jobs.',
|
|
1476
|
+
});
|
|
1477
|
+
return;
|
|
1478
|
+
}
|
|
1479
|
+
// Default to where the thread's own turns run, so a job sees the same tree
|
|
1480
|
+
// the thread has been reading and editing.
|
|
1481
|
+
let cwd = body.cwd;
|
|
1482
|
+
if (!cwd) {
|
|
1483
|
+
try {
|
|
1484
|
+
const merged = mergeConfigs(await loadGlobalConfig(), await loadThreadConfig(threadName));
|
|
1485
|
+
cwd = merged.projectDir;
|
|
1486
|
+
}
|
|
1487
|
+
catch {
|
|
1488
|
+
/* fall through to the defaults below */
|
|
1489
|
+
}
|
|
1490
|
+
}
|
|
1491
|
+
cwd = cwd || projectRoot || os.homedir();
|
|
1492
|
+
if (!fs.existsSync(cwd)) {
|
|
1493
|
+
jsonResponse(res, 400, { error: `Working directory does not exist: ${cwd}` });
|
|
1494
|
+
return;
|
|
1495
|
+
}
|
|
1496
|
+
try {
|
|
1497
|
+
const job = jobs.create({ thread: threadName, command: body.command, label: body.label, cwd });
|
|
1498
|
+
jsonResponse(res, 200, {
|
|
1499
|
+
started: true,
|
|
1500
|
+
id: job.id,
|
|
1501
|
+
label: job.label,
|
|
1502
|
+
pid: job.pid,
|
|
1503
|
+
cwd: job.cwd,
|
|
1504
|
+
logPath: job.logPath,
|
|
1505
|
+
});
|
|
1506
|
+
}
|
|
1507
|
+
catch (err) {
|
|
1508
|
+
jsonResponse(res, 429, { error: String(err instanceof Error ? err.message : err) });
|
|
1509
|
+
}
|
|
1510
|
+
}
|
|
1511
|
+
async function handleJobLog(threadName, jobId, query, res, jobs) {
|
|
1512
|
+
if (!jobs) {
|
|
1513
|
+
jsonResponse(res, 503, { error: 'Job registry not available' });
|
|
1514
|
+
return;
|
|
1515
|
+
}
|
|
1516
|
+
const job = jobs.get(threadName, jobId);
|
|
1517
|
+
if (!job) {
|
|
1518
|
+
jsonResponse(res, 404, { error: `Job "${jobId}" not found` });
|
|
1519
|
+
return;
|
|
1520
|
+
}
|
|
1521
|
+
const requested = parseInt(query.tail || '', 10);
|
|
1522
|
+
const lines = Number.isNaN(requested) ? 100 : Math.min(Math.max(requested, 1), 2_000);
|
|
1523
|
+
jsonResponse(res, 200, { job, tail: jobs.tail(threadName, jobId, lines) ?? '' });
|
|
1524
|
+
}
|
|
1525
|
+
async function handleCancelJob(threadName, jobId, res, jobs) {
|
|
1526
|
+
if (!jobs) {
|
|
1527
|
+
jsonResponse(res, 503, { error: 'Job registry not available' });
|
|
1528
|
+
return;
|
|
1529
|
+
}
|
|
1530
|
+
if (!jobs.cancel(threadName, jobId)) {
|
|
1531
|
+
jsonResponse(res, 404, { error: `No running job "${jobId}" on this thread` });
|
|
1532
|
+
return;
|
|
1533
|
+
}
|
|
1534
|
+
jsonResponse(res, 200, { cancelled: true, id: jobId });
|
|
1535
|
+
}
|
|
1389
1536
|
async function handleListTemplates(res) {
|
|
1390
1537
|
try {
|
|
1391
1538
|
const templates = listTemplates();
|
|
@@ -1761,6 +1908,7 @@ export async function startGatewayServer(options) {
|
|
|
1761
1908
|
const nsKeys = allNamespaceKeys(namespaces);
|
|
1762
1909
|
let currentApiKeys = Array.from(new Set([...options.apiKeys, ...nsKeys]));
|
|
1763
1910
|
let scheduler;
|
|
1911
|
+
let jobRegistry;
|
|
1764
1912
|
let adminCallbacks;
|
|
1765
1913
|
// federationRouter is module-level (set via handle.setFederationRouter)
|
|
1766
1914
|
// Initialize VAPID for push notifications (if configured)
|
|
@@ -2092,6 +2240,36 @@ export async function startGatewayServer(options) {
|
|
|
2092
2240
|
return;
|
|
2093
2241
|
}
|
|
2094
2242
|
}
|
|
2243
|
+
// ─── Background jobs (task 139) ──────────────────────
|
|
2244
|
+
// Mounted under /api/thread/:name/ so they inherit the namespace access
|
|
2245
|
+
// gate above (task 097 P7) rather than needing their own.
|
|
2246
|
+
// GET /api/thread/:name/jobs — list this thread's jobs
|
|
2247
|
+
if (routePath === '/api/thread/:name/jobs' && req.method === 'GET') {
|
|
2248
|
+
await handleListJobs(params.name, res, jobRegistry);
|
|
2249
|
+
return;
|
|
2250
|
+
}
|
|
2251
|
+
// POST /api/thread/:name/jobs — start a background job
|
|
2252
|
+
if (routePath === '/api/thread/:name/jobs' && req.method === 'POST') {
|
|
2253
|
+
await handleCreateJob(params.name, req, res, jobRegistry, options.projectRoot);
|
|
2254
|
+
return;
|
|
2255
|
+
}
|
|
2256
|
+
// GET /api/thread/:name/jobs/:id/log — tail a job's output
|
|
2257
|
+
if (routePath.startsWith('/api/thread/:name/jobs/') && req.method === 'GET') {
|
|
2258
|
+
const rest = routePath.replace('/api/thread/:name/jobs/', '');
|
|
2259
|
+
if (rest.endsWith('/log')) {
|
|
2260
|
+
const jobId = decodeURIComponent(rest.slice(0, -'/log'.length));
|
|
2261
|
+
await handleJobLog(params.name, jobId, query, res, jobRegistry);
|
|
2262
|
+
return;
|
|
2263
|
+
}
|
|
2264
|
+
}
|
|
2265
|
+
// DELETE /api/thread/:name/jobs/:id — cancel a running job
|
|
2266
|
+
if (routePath.startsWith('/api/thread/:name/jobs/') && req.method === 'DELETE') {
|
|
2267
|
+
const jobId = routePath.replace('/api/thread/:name/jobs/', '');
|
|
2268
|
+
if (jobId) {
|
|
2269
|
+
await handleCancelJob(params.name, decodeURIComponent(jobId), res, jobRegistry);
|
|
2270
|
+
return;
|
|
2271
|
+
}
|
|
2272
|
+
}
|
|
2095
2273
|
// GET /api/dashboard — pipeline dashboard data. Lists thread names, so it
|
|
2096
2274
|
// is an enumeration surface: scoped keys see nothing (task 097 P7).
|
|
2097
2275
|
if (routePath === '/api/dashboard' && req.method === 'GET') {
|
|
@@ -2338,6 +2516,9 @@ export async function startGatewayServer(options) {
|
|
|
2338
2516
|
setScheduler: (s) => {
|
|
2339
2517
|
scheduler = s;
|
|
2340
2518
|
},
|
|
2519
|
+
setJobRegistry: (r) => {
|
|
2520
|
+
jobRegistry = r;
|
|
2521
|
+
},
|
|
2341
2522
|
setAdminCallbacks: (cbs) => {
|
|
2342
2523
|
adminCallbacks = cbs;
|
|
2343
2524
|
},
|