@pellux/goodvibes-daemon-sdk 0.30.2 → 0.33.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/README.md +2 -2
- package/dist/api-router.d.ts +4 -2
- package/dist/api-router.d.ts.map +1 -1
- package/dist/api-router.js +18 -10
- package/dist/artifact-upload.d.ts +9 -9
- package/dist/artifact-upload.d.ts.map +1 -1
- package/dist/artifact-upload.js +27 -19
- package/dist/auth-helpers.d.ts +9 -0
- package/dist/auth-helpers.d.ts.map +1 -0
- package/dist/auth-helpers.js +10 -0
- package/dist/automation.js +10 -10
- package/dist/channel-route-types.d.ts +22 -23
- package/dist/channel-route-types.d.ts.map +1 -1
- package/dist/channel-routes.d.ts.map +1 -1
- package/dist/channel-routes.js +37 -42
- package/dist/context.d.ts +27 -27
- package/dist/context.d.ts.map +1 -1
- package/dist/control-routes.d.ts +12 -13
- package/dist/control-routes.d.ts.map +1 -1
- package/dist/control-routes.js +55 -26
- package/dist/error-response.d.ts +10 -3
- package/dist/error-response.d.ts.map +1 -1
- package/dist/error-response.js +102 -11
- package/dist/http-policy.d.ts +3 -4
- package/dist/http-policy.d.ts.map +1 -1
- package/dist/http-policy.js +2 -1
- package/dist/index.d.ts +11 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/integration-routes.d.ts +1 -1
- package/dist/integration-routes.d.ts.map +1 -1
- package/dist/integration-routes.js +72 -33
- package/dist/knowledge-refinement-routes.d.ts.map +1 -1
- package/dist/knowledge-refinement-routes.js +22 -15
- package/dist/knowledge-route-types.d.ts +16 -15
- package/dist/knowledge-route-types.d.ts.map +1 -1
- package/dist/knowledge-routes.d.ts.map +1 -1
- package/dist/knowledge-routes.js +144 -89
- package/dist/media-route-types.d.ts +2 -1
- package/dist/media-route-types.d.ts.map +1 -1
- package/dist/media-routes.d.ts.map +1 -1
- package/dist/media-routes.js +119 -55
- package/dist/operator.d.ts +16 -0
- package/dist/operator.d.ts.map +1 -1
- package/dist/operator.js +105 -61
- package/dist/otlp-protobuf.d.ts.map +1 -1
- package/dist/otlp-protobuf.js +28 -10
- package/dist/remote-routes.d.ts +9 -3
- package/dist/remote-routes.d.ts.map +1 -1
- package/dist/remote-routes.js +259 -163
- package/dist/route-helpers.d.ts +13 -2
- package/dist/route-helpers.d.ts.map +1 -1
- package/dist/route-helpers.js +38 -1
- package/dist/runtime-automation-routes.d.ts.map +1 -1
- package/dist/runtime-automation-routes.js +88 -54
- package/dist/runtime-route-types.d.ts +87 -93
- package/dist/runtime-route-types.d.ts.map +1 -1
- package/dist/runtime-session-routes.d.ts +6 -4
- package/dist/runtime-session-routes.d.ts.map +1 -1
- package/dist/runtime-session-routes.js +132 -88
- package/dist/sessions.js +3 -3
- package/dist/system-route-types.d.ts +25 -24
- package/dist/system-route-types.d.ts.map +1 -1
- package/dist/system-routes.d.ts +1 -1
- package/dist/system-routes.d.ts.map +1 -1
- package/dist/system-routes.js +126 -92
- package/dist/tasks.d.ts.map +1 -1
- package/dist/tasks.js +2 -0
- package/dist/telemetry-routes.d.ts +14 -14
- package/dist/telemetry-routes.d.ts.map +1 -1
- package/dist/telemetry-routes.js +54 -29
- package/package.json +5 -4
package/dist/route-helpers.js
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
export function createRouteBodySchema(routeId, parse) {
|
|
2
|
+
return { routeId, parse };
|
|
3
|
+
}
|
|
4
|
+
export function createRouteBodySchemaRegistry(schemas) {
|
|
5
|
+
return schemas;
|
|
6
|
+
}
|
|
1
7
|
export function isJsonRecord(value) {
|
|
2
8
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
3
9
|
}
|
|
@@ -22,11 +28,13 @@ export function serializableJsonResponse(body, init) {
|
|
|
22
28
|
return Response.json(toSerializableJson(body), init);
|
|
23
29
|
}
|
|
24
30
|
export function readBoundedInteger(raw, options) {
|
|
25
|
-
const min = options.min ??
|
|
31
|
+
const min = options.min ?? 0;
|
|
26
32
|
const max = options.max ?? 1_000;
|
|
27
33
|
if (raw === null || raw.trim() === '')
|
|
28
34
|
return clampInteger(options.fallback, min, max);
|
|
29
35
|
const value = Number(raw);
|
|
36
|
+
// Non-finite values (NaN from malformed strings like '?limit=abc') fall back
|
|
37
|
+
// to a safe default instead of rejecting the whole request.
|
|
30
38
|
if (!Number.isFinite(value))
|
|
31
39
|
return clampInteger(options.fallback, min, max);
|
|
32
40
|
return clampInteger(value, min, max);
|
|
@@ -34,6 +42,11 @@ export function readBoundedInteger(raw, options) {
|
|
|
34
42
|
export function readBoundedPositiveInteger(raw, fallback, max = 1_000) {
|
|
35
43
|
return readBoundedInteger(raw, { fallback, min: 1, max });
|
|
36
44
|
}
|
|
45
|
+
export function readBoundedBodyInteger(value, fallback, max, min = 1) {
|
|
46
|
+
if (typeof value !== 'number' || !Number.isFinite(value))
|
|
47
|
+
return clampInteger(fallback, min, max);
|
|
48
|
+
return clampInteger(value, min, max);
|
|
49
|
+
}
|
|
37
50
|
export function readOptionalBoundedInteger(raw, min, max) {
|
|
38
51
|
if (raw === null || raw.trim() === '')
|
|
39
52
|
return undefined;
|
|
@@ -45,6 +58,26 @@ export function readOptionalBoundedInteger(raw, min, max) {
|
|
|
45
58
|
function clampInteger(value, min, max) {
|
|
46
59
|
return Math.min(max, Math.max(min, Math.trunc(value)));
|
|
47
60
|
}
|
|
61
|
+
export function readOptionalStringField(body, key) {
|
|
62
|
+
const value = body[key];
|
|
63
|
+
return typeof value === 'string' && value.trim().length > 0 ? value.trim() : undefined;
|
|
64
|
+
}
|
|
65
|
+
// `max` defaults to 128, with call sites free to pass tighter domain-specific limits.
|
|
66
|
+
export function readStringArrayField(body, key, max = 128) {
|
|
67
|
+
const value = body[key];
|
|
68
|
+
if (!Array.isArray(value))
|
|
69
|
+
return undefined;
|
|
70
|
+
const output = [];
|
|
71
|
+
for (let index = 0; index < value.length && index < max; index++) {
|
|
72
|
+
const entry = value[index];
|
|
73
|
+
if (typeof entry !== 'string')
|
|
74
|
+
continue;
|
|
75
|
+
const trimmed = entry.trim();
|
|
76
|
+
if (trimmed)
|
|
77
|
+
output.push(trimmed);
|
|
78
|
+
}
|
|
79
|
+
return output.length > 0 ? output : undefined;
|
|
80
|
+
}
|
|
48
81
|
export function scopeMatches(granted, required) {
|
|
49
82
|
if (granted === '*' || granted === required)
|
|
50
83
|
return true;
|
|
@@ -53,6 +86,10 @@ export function scopeMatches(granted, required) {
|
|
|
53
86
|
}
|
|
54
87
|
return false;
|
|
55
88
|
}
|
|
89
|
+
export function hasAnyScope(grantedScopes, requiredScopes) {
|
|
90
|
+
const granted = grantedScopes ?? [];
|
|
91
|
+
return requiredScopes.some((required) => granted.some((entry) => scopeMatches(entry, required)));
|
|
92
|
+
}
|
|
56
93
|
export function missingScopes(grantedScopes, requiredScopes) {
|
|
57
94
|
const granted = grantedScopes ?? [];
|
|
58
95
|
return requiredScopes.filter((required) => !granted.some((entry) => scopeMatches(entry, required)));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-automation-routes.d.ts","sourceRoot":"","sources":["../src/runtime-automation-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime-automation-routes.d.ts","sourceRoot":"","sources":["../src/runtime-automation-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAuB1E,wBAAgB,0CAA0C,CACxD,OAAO,EAAE,yBAAyB,GACjC,oCAAoC,CAoBtC"}
|
|
@@ -1,23 +1,25 @@
|
|
|
1
|
+
import { withAdmin } from './auth-helpers.js';
|
|
1
2
|
import { jsonErrorResponse } from './error-response.js';
|
|
3
|
+
import { createRouteBodySchema, createRouteBodySchemaRegistry, readBoundedBodyInteger, readOptionalStringField, readStringArrayField, } from './route-helpers.js';
|
|
2
4
|
export function createDaemonRuntimeAutomationRouteHandlers(context) {
|
|
3
5
|
return {
|
|
4
6
|
getAutomationJobs: () => Response.json({ jobs: context.automationManager.listJobs() }),
|
|
5
|
-
postAutomationJob: async (request) => handlePostSchedule(context, request),
|
|
7
|
+
postAutomationJob: async (request) => withAdmin(context, request, () => handlePostSchedule(context, request)),
|
|
6
8
|
getAutomationRuns: () => Response.json({ runs: context.automationManager.listRuns() }),
|
|
7
9
|
getAutomationRun: (runId) => handleGetAutomationRun(context, runId),
|
|
8
10
|
getAutomationHeartbeat: () => Response.json({ pending: [] }),
|
|
9
|
-
postAutomationHeartbeat: async (request) => handlePostAutomationHeartbeat(context, request),
|
|
10
|
-
automationRunAction: async (runId, action, request) => handleAutomationRunAction(context, runId, action, request),
|
|
11
|
-
patchAutomationJob: async (jobId, request) => handlePatchSchedule(context, jobId, request),
|
|
12
|
-
deleteAutomationJob: async (jobId) => handleDeleteSchedule(context, jobId),
|
|
13
|
-
setAutomationJobEnabled: async (jobId, enabled) => handleSetScheduleEnabled(context, jobId, enabled),
|
|
14
|
-
runAutomationJobNow: async (jobId) => handleRunScheduleNow(context, jobId),
|
|
11
|
+
postAutomationHeartbeat: async (request) => withAdmin(context, request, () => handlePostAutomationHeartbeat(context, request)),
|
|
12
|
+
automationRunAction: async (runId, action, request) => withAdmin(context, request, () => handleAutomationRunAction(context, runId, action, request)),
|
|
13
|
+
patchAutomationJob: async (jobId, request) => withAdmin(context, request, () => handlePatchSchedule(context, jobId, request)),
|
|
14
|
+
deleteAutomationJob: async (jobId, request) => withAdmin(context, request, () => handleDeleteSchedule(context, jobId)),
|
|
15
|
+
setAutomationJobEnabled: async (jobId, enabled, request) => withAdmin(context, request, () => handleSetScheduleEnabled(context, jobId, enabled)),
|
|
16
|
+
runAutomationJobNow: async (jobId, request) => withAdmin(context, request, () => handleRunScheduleNow(context, jobId)),
|
|
15
17
|
getSchedules: () => handleGetSchedules(context),
|
|
16
|
-
postSchedule: (request) => handlePostSchedule(context, request),
|
|
17
|
-
deleteSchedule: async (scheduleId) => handleDeleteSchedule(context, scheduleId),
|
|
18
|
-
setScheduleEnabled: (scheduleId, enabled) => handleSetScheduleEnabled(context, scheduleId, enabled),
|
|
19
|
-
runScheduleNow: (scheduleId) => handleRunScheduleNow(context, scheduleId),
|
|
20
|
-
getSchedulerCapacity: () => Response.json(context.automationManager.getSchedulerCapacity()),
|
|
18
|
+
postSchedule: (request) => withAdmin(context, request, () => handlePostSchedule(context, request)),
|
|
19
|
+
deleteSchedule: async (scheduleId, request) => withAdmin(context, request, () => handleDeleteSchedule(context, scheduleId)),
|
|
20
|
+
setScheduleEnabled: (scheduleId, enabled, request) => withAdmin(context, request, () => handleSetScheduleEnabled(context, scheduleId, enabled)),
|
|
21
|
+
runScheduleNow: (scheduleId, request) => withAdmin(context, request, () => handleRunScheduleNow(context, scheduleId)),
|
|
22
|
+
getSchedulerCapacity: (req) => withAdmin(context, req, () => Response.json(context.automationManager.getSchedulerCapacity())),
|
|
21
23
|
};
|
|
22
24
|
}
|
|
23
25
|
function handleGetSchedules(context) {
|
|
@@ -25,48 +27,71 @@ function handleGetSchedules(context) {
|
|
|
25
27
|
const runs = context.automationManager.listRuns().slice(0, 50);
|
|
26
28
|
return Response.json({ jobs, runs });
|
|
27
29
|
}
|
|
30
|
+
const automationBodySchemas = createRouteBodySchemaRegistry({
|
|
31
|
+
schedule: createRouteBodySchema('POST /api/automation/schedules', (body) => {
|
|
32
|
+
const prompt = readOptionalStringField(body, 'prompt');
|
|
33
|
+
if (!prompt)
|
|
34
|
+
return jsonErrorResponse({ error: 'Missing required field: prompt (string)' }, { status: 400 });
|
|
35
|
+
if (prompt.length > 10_000) {
|
|
36
|
+
return jsonErrorResponse({ error: 'prompt exceeds maximum length of 10000 characters' }, { status: 400 });
|
|
37
|
+
}
|
|
38
|
+
const scheduleObj = body.schedule && typeof body.schedule === 'object' && !Array.isArray(body.schedule)
|
|
39
|
+
? body.schedule
|
|
40
|
+
: null;
|
|
41
|
+
const timeoutMs = readScheduleTimeoutMs(body.timeoutMs);
|
|
42
|
+
if (timeoutMs instanceof Response)
|
|
43
|
+
return timeoutMs;
|
|
44
|
+
const cron = readOptionalStringField(body, 'cron') ?? readOptionalStringField(scheduleObj ?? {}, 'expression');
|
|
45
|
+
const every = readOptionalStringField(body, 'every');
|
|
46
|
+
const timezone = readOptionalStringField(body, 'timezone');
|
|
47
|
+
const fallbackModels = readStringArrayField(body, 'fallbackModels');
|
|
48
|
+
return {
|
|
49
|
+
prompt,
|
|
50
|
+
kind: readOptionalStringField(body, 'kind') ?? 'cron',
|
|
51
|
+
...(cron ? { cron } : {}),
|
|
52
|
+
...(every ? { every } : {}),
|
|
53
|
+
...(typeof body.at === 'string' || typeof body.at === 'number' ? { at: body.at } : {}),
|
|
54
|
+
...(timezone ? { timezone } : {}),
|
|
55
|
+
...(timeoutMs !== undefined ? { timeoutMs } : {}),
|
|
56
|
+
...(fallbackModels ? { fallbackModels } : {}),
|
|
57
|
+
};
|
|
58
|
+
}),
|
|
59
|
+
});
|
|
60
|
+
function readScheduleTimeoutMs(value) {
|
|
61
|
+
if (value === undefined)
|
|
62
|
+
return undefined;
|
|
63
|
+
if (typeof value !== 'number' || !Number.isFinite(value) || value <= 0) {
|
|
64
|
+
return jsonErrorResponse({ error: 'timeoutMs must be a finite positive number' }, { status: 400 });
|
|
65
|
+
}
|
|
66
|
+
return readBoundedBodyInteger(value, 1, 86_400_000);
|
|
67
|
+
}
|
|
28
68
|
async function handlePostSchedule(context, req) {
|
|
29
69
|
const body = await context.parseJsonBody(req);
|
|
30
70
|
if (body instanceof Response)
|
|
31
71
|
return body;
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
const cronExpression = typeof body.cron === 'string' ? body.cron : typeof scheduleObj?.expression === 'string' ? scheduleObj.expression : undefined;
|
|
36
|
-
const cron = cronExpression;
|
|
37
|
-
const every = typeof body.every === 'string' ? body.every : undefined;
|
|
38
|
-
const at = typeof body.at === 'string' || typeof body.at === 'number' ? body.at : undefined;
|
|
39
|
-
const timezone = typeof body.timezone === 'string' ? body.timezone : undefined;
|
|
40
|
-
if (!prompt) {
|
|
41
|
-
return Response.json({ error: 'Missing required field: prompt (string)' }, { status: 400 });
|
|
42
|
-
}
|
|
43
|
-
if (prompt.length > 10_000) {
|
|
44
|
-
return Response.json({ error: 'prompt exceeds maximum length of 10000 characters' }, { status: 400 });
|
|
45
|
-
}
|
|
72
|
+
const input = automationBodySchemas.schedule.parse(body);
|
|
73
|
+
if (input instanceof Response)
|
|
74
|
+
return input;
|
|
46
75
|
try {
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
? context.normalizeEverySchedule(every ?? '')
|
|
53
|
-
: kind === 'at'
|
|
54
|
-
? context.normalizeAtSchedule(typeof at === 'number' ? at : Date.parse(String(at)))
|
|
55
|
-
: context.normalizeCronSchedule(cron ?? '', timezone, body.staggerMs ?? body.stagger);
|
|
76
|
+
const schedule = input.kind === 'every'
|
|
77
|
+
? context.normalizeEverySchedule(input.every ?? '')
|
|
78
|
+
: input.kind === 'at'
|
|
79
|
+
? context.normalizeAtSchedule(readAtSchedule(input.at))
|
|
80
|
+
: context.normalizeCronSchedule(input.cron ?? '', input.timezone, body.staggerMs ?? body.stagger);
|
|
56
81
|
const job = await context.automationManager.createJob({
|
|
57
|
-
name: typeof body.name === 'string' ? body.name : prompt.slice(0, 40),
|
|
58
|
-
prompt,
|
|
82
|
+
name: typeof body.name === 'string' ? body.name : input.prompt.slice(0, 40),
|
|
83
|
+
prompt: input.prompt,
|
|
59
84
|
schedule,
|
|
60
|
-
description: prompt,
|
|
85
|
+
description: input.prompt,
|
|
61
86
|
model: typeof body.model === 'string' ? body.model : undefined,
|
|
62
87
|
provider: typeof body.provider === 'string' ? body.provider : undefined,
|
|
63
|
-
fallbackModels,
|
|
88
|
+
...(input.fallbackModels ? { fallbackModels: input.fallbackModels } : {}),
|
|
64
89
|
template: typeof body.template === 'string' ? body.template : undefined,
|
|
65
90
|
target: typeof body.target === 'object' && body.target !== null ? body.target : undefined,
|
|
66
91
|
reasoningEffort: body.reasoningEffort,
|
|
67
92
|
thinking: typeof body.thinking === 'string' ? body.thinking : undefined,
|
|
68
93
|
wakeMode: body.wakeMode,
|
|
69
|
-
|
|
94
|
+
...(input.timeoutMs !== undefined ? { timeoutMs: input.timeoutMs } : {}),
|
|
70
95
|
toolAllowlist: Array.isArray(body.toolAllowlist) ? body.toolAllowlist.filter((value) => typeof value === 'string') : undefined,
|
|
71
96
|
autoApprove: typeof body.autoApprove === 'boolean' ? body.autoApprove : undefined,
|
|
72
97
|
allowUnsafeExternalContent: typeof body.allowUnsafeExternalContent === 'boolean' ? body.allowUnsafeExternalContent : undefined,
|
|
@@ -83,10 +108,17 @@ async function handlePostSchedule(context, req) {
|
|
|
83
108
|
return jsonErrorResponse(e, { status: 400, fallbackMessage: 'Failed to create schedule' });
|
|
84
109
|
}
|
|
85
110
|
}
|
|
111
|
+
function readAtSchedule(at) {
|
|
112
|
+
const value = typeof at === 'number' ? at : Date.parse(String(at));
|
|
113
|
+
if (!Number.isFinite(value)) {
|
|
114
|
+
throw new Error('Invalid at schedule; expected an epoch timestamp or parseable date string');
|
|
115
|
+
}
|
|
116
|
+
return value;
|
|
117
|
+
}
|
|
86
118
|
async function handlePatchSchedule(context, id, req) {
|
|
87
119
|
const job = findAutomationJob(context, id);
|
|
88
120
|
if (!job)
|
|
89
|
-
return
|
|
121
|
+
return jsonErrorResponse({ error: `Schedule not found: ${id}` }, { status: 404 });
|
|
90
122
|
const body = await context.parseJsonBody(req);
|
|
91
123
|
if (body instanceof Response)
|
|
92
124
|
return body;
|
|
@@ -94,7 +126,7 @@ async function handlePatchSchedule(context, id, req) {
|
|
|
94
126
|
const updated = await context.automationManager.updateJob(job.id, body);
|
|
95
127
|
return updated
|
|
96
128
|
? Response.json(updated)
|
|
97
|
-
:
|
|
129
|
+
: jsonErrorResponse({ error: `Schedule not found: ${id}` }, { status: 404 });
|
|
98
130
|
}
|
|
99
131
|
catch (error) {
|
|
100
132
|
return jsonErrorResponse(error, { status: 400, fallbackMessage: 'Failed to update schedule' });
|
|
@@ -103,21 +135,21 @@ async function handlePatchSchedule(context, id, req) {
|
|
|
103
135
|
async function handleDeleteSchedule(context, id) {
|
|
104
136
|
const job = findAutomationJob(context, id);
|
|
105
137
|
if (!job)
|
|
106
|
-
return
|
|
138
|
+
return jsonErrorResponse({ error: `Schedule not found: ${id}` }, { status: 404 });
|
|
107
139
|
await context.automationManager.removeJob(job.id);
|
|
108
140
|
return Response.json({ removed: true, id: job.id });
|
|
109
141
|
}
|
|
110
142
|
async function handleSetScheduleEnabled(context, id, enabled) {
|
|
111
143
|
const job = findAutomationJob(context, id);
|
|
112
144
|
if (!job)
|
|
113
|
-
return
|
|
145
|
+
return jsonErrorResponse({ error: `Schedule not found: ${id}` }, { status: 404 });
|
|
114
146
|
const updated = await context.automationManager.setEnabled(job.id, enabled);
|
|
115
147
|
return Response.json(updated ?? { id: job.id, enabled });
|
|
116
148
|
}
|
|
117
149
|
async function handleRunScheduleNow(context, id) {
|
|
118
150
|
const job = findAutomationJob(context, id);
|
|
119
151
|
if (!job)
|
|
120
|
-
return
|
|
152
|
+
return jsonErrorResponse({ error: `Schedule not found: ${id}` }, { status: 404 });
|
|
121
153
|
try {
|
|
122
154
|
const run = await context.automationManager.runNow(job.id);
|
|
123
155
|
return Response.json({ jobId: job.id, runId: run.id, agentId: run.agentId, status: run.status });
|
|
@@ -130,23 +162,24 @@ async function handlePostAutomationHeartbeat(context, req) {
|
|
|
130
162
|
const body = await context.parseOptionalJsonBody(req);
|
|
131
163
|
if (body instanceof Response)
|
|
132
164
|
return body;
|
|
165
|
+
// Only `source` is consumed; extra fields are ignored.
|
|
133
166
|
const result = await context.automationManager.triggerHeartbeat({
|
|
134
|
-
source: body && typeof body.source === 'string' ? body.source : 'api',
|
|
167
|
+
source: body && typeof body.source === 'string' && body.source.trim() ? body.source.trim() : 'api',
|
|
135
168
|
});
|
|
136
169
|
return Response.json(result);
|
|
137
170
|
}
|
|
138
171
|
async function handleAutomationRunAction(context, runId, action, req) {
|
|
139
172
|
if (action === 'cancel') {
|
|
140
173
|
const body = await context.parseOptionalJsonBody(req);
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
174
|
+
if (body instanceof Response)
|
|
175
|
+
return body;
|
|
176
|
+
const reason = body && typeof body.reason === 'string'
|
|
177
|
+
? body.reason
|
|
178
|
+
: 'operator-cancelled';
|
|
146
179
|
const run = await context.automationManager.cancelRun(runId, reason);
|
|
147
180
|
return run
|
|
148
181
|
? context.recordApiResponse(req, `/api/automation/runs/${runId}/${action}`, Response.json({ run }))
|
|
149
|
-
: context.recordApiResponse(req, `/api/automation/runs/${runId}/${action}`,
|
|
182
|
+
: context.recordApiResponse(req, `/api/automation/runs/${runId}/${action}`, jsonErrorResponse({ error: 'Unknown automation run' }, { status: 404 }));
|
|
150
183
|
}
|
|
151
184
|
try {
|
|
152
185
|
const run = await context.automationManager.retryRun(runId);
|
|
@@ -159,10 +192,11 @@ async function handleAutomationRunAction(context, runId, action, req) {
|
|
|
159
192
|
function handleGetAutomationRun(context, runId) {
|
|
160
193
|
const run = context.automationManager.getRun(runId);
|
|
161
194
|
if (!run) {
|
|
162
|
-
return
|
|
195
|
+
return jsonErrorResponse({ error: 'Unknown automation run' }, { status: 404 });
|
|
163
196
|
}
|
|
164
197
|
return Response.json({ run, deliveries: [] });
|
|
165
198
|
}
|
|
166
199
|
function findAutomationJob(context, id) {
|
|
167
|
-
|
|
200
|
+
// exact-match only — prefix match was non-deterministic when multiple ids share a prefix.
|
|
201
|
+
return context.automationManager.listJobs().find((entry) => entry.id === id);
|
|
168
202
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { DaemonRuntimeRouteHandlers } from './context.js';
|
|
2
|
+
import type { JsonRecord } from './route-helpers.js';
|
|
2
3
|
/**
|
|
3
4
|
* Stable envelope shape for conversation-message-related events published
|
|
4
5
|
* through the control-plane gateway. Used by companion follow-up routing
|
|
@@ -11,31 +12,32 @@ export interface ConversationMessageEnvelope {
|
|
|
11
12
|
readonly source: string;
|
|
12
13
|
readonly timestamp: number;
|
|
13
14
|
/** Optional metadata (tool info, model id, etc.) */
|
|
14
|
-
readonly metadata?: Readonly<Record<string, unknown
|
|
15
|
+
readonly metadata?: Readonly<Record<string, unknown>> | undefined;
|
|
15
16
|
}
|
|
16
|
-
|
|
17
|
+
/** @public */
|
|
17
18
|
export type AutomationSurfaceKind = string;
|
|
18
19
|
export interface SharedSessionRoutingIntent {
|
|
19
|
-
readonly modelId?: string;
|
|
20
|
-
readonly providerId?: string;
|
|
21
|
-
readonly tools?: readonly string[];
|
|
22
|
-
readonly executionIntent?: unknown;
|
|
20
|
+
readonly modelId?: string | undefined;
|
|
21
|
+
readonly providerId?: string | undefined;
|
|
22
|
+
readonly tools?: readonly string[] | undefined;
|
|
23
|
+
readonly executionIntent?: unknown | undefined;
|
|
23
24
|
}
|
|
24
25
|
interface AutomationRouteBinding {
|
|
25
|
-
readonly id?: string;
|
|
26
|
+
readonly id?: string | undefined;
|
|
26
27
|
}
|
|
28
|
+
/** @public */
|
|
27
29
|
export type ExecutionIntent = unknown;
|
|
28
30
|
type AgentRecordLike = {
|
|
29
31
|
readonly id: string;
|
|
30
32
|
readonly status: string;
|
|
31
33
|
readonly task: string;
|
|
32
|
-
readonly model?: string | null;
|
|
34
|
+
readonly model?: string | null | undefined;
|
|
33
35
|
readonly tools: readonly string[];
|
|
34
36
|
readonly startedAt: number;
|
|
35
|
-
readonly completedAt?: number;
|
|
36
|
-
readonly toolCallCount?: number;
|
|
37
|
-
readonly progress?: string | null;
|
|
38
|
-
readonly error?: string | null;
|
|
37
|
+
readonly completedAt?: number | undefined;
|
|
38
|
+
readonly toolCallCount?: number | undefined;
|
|
39
|
+
readonly progress?: string | null | undefined;
|
|
40
|
+
readonly error?: string | null | undefined;
|
|
39
41
|
};
|
|
40
42
|
type AutomationJobLike = {
|
|
41
43
|
readonly id: string;
|
|
@@ -43,42 +45,42 @@ type AutomationJobLike = {
|
|
|
43
45
|
type AutomationRunLike = {
|
|
44
46
|
readonly id: string;
|
|
45
47
|
readonly jobId: string;
|
|
46
|
-
readonly agentId?: string;
|
|
48
|
+
readonly agentId?: string | undefined;
|
|
47
49
|
readonly status: string;
|
|
48
|
-
readonly startedAt?: number;
|
|
50
|
+
readonly startedAt?: number | undefined;
|
|
49
51
|
readonly queuedAt: number;
|
|
50
|
-
readonly continuationMode?: string;
|
|
52
|
+
readonly continuationMode?: string | undefined;
|
|
51
53
|
};
|
|
52
54
|
interface RuntimeTaskLike {
|
|
53
|
-
readonly kind?: string;
|
|
54
|
-
readonly owner?: string;
|
|
55
|
-
readonly description?: string;
|
|
56
|
-
readonly title?: string;
|
|
55
|
+
readonly kind?: string | undefined;
|
|
56
|
+
readonly owner?: string | undefined;
|
|
57
|
+
readonly description?: string | undefined;
|
|
58
|
+
readonly title?: string | undefined;
|
|
57
59
|
}
|
|
58
60
|
interface RuntimeTaskStateLike {
|
|
59
61
|
readonly tasks: Map<string, RuntimeTaskLike>;
|
|
60
62
|
}
|
|
61
63
|
export interface DaemonRuntimeRouteContext {
|
|
62
|
-
readonly parseJsonBody: (req: Request) => Promise<
|
|
63
|
-
readonly parseOptionalJsonBody: (req: Request) => Promise<
|
|
64
|
+
readonly parseJsonBody: (req: Request) => Promise<JsonRecord | Response>;
|
|
65
|
+
readonly parseOptionalJsonBody: (req: Request) => Promise<JsonRecord | null | Response>;
|
|
64
66
|
readonly recordApiResponse: (req: Request, path: string, response: Response) => Response;
|
|
65
67
|
readonly requireAdmin: (req: Request) => Response | null;
|
|
66
68
|
readonly snapshotMetrics: () => Record<string, unknown>;
|
|
67
69
|
readonly sessionBroker: {
|
|
68
70
|
start(): Promise<void>;
|
|
69
71
|
submitMessage(input: {
|
|
70
|
-
sessionId?: string;
|
|
71
|
-
routeId?: string;
|
|
72
|
-
surfaceKind:
|
|
72
|
+
sessionId?: string | undefined;
|
|
73
|
+
routeId?: string | undefined;
|
|
74
|
+
surfaceKind: string;
|
|
73
75
|
surfaceId: string;
|
|
74
|
-
externalId?: string;
|
|
75
|
-
threadId?: string;
|
|
76
|
-
userId?: string;
|
|
77
|
-
displayName?: string;
|
|
78
|
-
title?: string;
|
|
76
|
+
externalId?: string | undefined;
|
|
77
|
+
threadId?: string | undefined;
|
|
78
|
+
userId?: string | undefined;
|
|
79
|
+
displayName?: string | undefined;
|
|
80
|
+
title?: string | undefined;
|
|
79
81
|
body: string;
|
|
80
|
-
metadata?: Record<string, unknown
|
|
81
|
-
routing?: SharedSessionRoutingIntent;
|
|
82
|
+
metadata?: Record<string, unknown> | undefined;
|
|
83
|
+
routing?: SharedSessionRoutingIntent | undefined;
|
|
82
84
|
}): Promise<{
|
|
83
85
|
mode: 'continued-live' | 'spawn' | 'queued-follow-up' | 'rejected';
|
|
84
86
|
input: {
|
|
@@ -89,25 +91,25 @@ export interface DaemonRuntimeRouteContext {
|
|
|
89
91
|
id: string;
|
|
90
92
|
status: string;
|
|
91
93
|
};
|
|
92
|
-
routeBinding?: AutomationRouteBinding;
|
|
93
|
-
task?: string;
|
|
94
|
-
activeAgentId?: string | null;
|
|
95
|
-
userMessage?: unknown;
|
|
94
|
+
routeBinding?: AutomationRouteBinding | undefined;
|
|
95
|
+
task?: string | undefined;
|
|
96
|
+
activeAgentId?: string | null | undefined;
|
|
97
|
+
userMessage?: unknown | undefined;
|
|
96
98
|
}>;
|
|
97
99
|
steerMessage(input: {
|
|
98
|
-
sessionId?: string;
|
|
99
|
-
routeId?: string;
|
|
100
|
-
surfaceKind:
|
|
100
|
+
sessionId?: string | undefined;
|
|
101
|
+
routeId?: string | undefined;
|
|
102
|
+
surfaceKind: string;
|
|
101
103
|
surfaceId: string;
|
|
102
|
-
externalId?: string;
|
|
103
|
-
threadId?: string;
|
|
104
|
-
userId?: string;
|
|
105
|
-
displayName?: string;
|
|
106
|
-
title?: string;
|
|
104
|
+
externalId?: string | undefined;
|
|
105
|
+
threadId?: string | undefined;
|
|
106
|
+
userId?: string | undefined;
|
|
107
|
+
displayName?: string | undefined;
|
|
108
|
+
title?: string | undefined;
|
|
107
109
|
body: string;
|
|
108
|
-
metadata?: Record<string, unknown
|
|
109
|
-
routing?: SharedSessionRoutingIntent;
|
|
110
|
-
allowSpawnFallback?: boolean;
|
|
110
|
+
metadata?: Record<string, unknown> | undefined;
|
|
111
|
+
routing?: SharedSessionRoutingIntent | undefined;
|
|
112
|
+
allowSpawnFallback?: boolean | undefined;
|
|
111
113
|
}): Promise<{
|
|
112
114
|
mode: 'continued-live' | 'spawn' | 'queued-follow-up' | 'rejected';
|
|
113
115
|
input: {
|
|
@@ -119,24 +121,24 @@ export interface DaemonRuntimeRouteContext {
|
|
|
119
121
|
id: string;
|
|
120
122
|
status: string;
|
|
121
123
|
};
|
|
122
|
-
routeBinding?: AutomationRouteBinding;
|
|
123
|
-
task?: string;
|
|
124
|
-
activeAgentId?: string | null;
|
|
125
|
-
userMessage?: unknown;
|
|
124
|
+
routeBinding?: AutomationRouteBinding | undefined;
|
|
125
|
+
task?: string | undefined;
|
|
126
|
+
activeAgentId?: string | null | undefined;
|
|
127
|
+
userMessage?: unknown | undefined;
|
|
126
128
|
}>;
|
|
127
129
|
followUpMessage(input: {
|
|
128
|
-
sessionId?: string;
|
|
129
|
-
routeId?: string;
|
|
130
|
-
surfaceKind:
|
|
130
|
+
sessionId?: string | undefined;
|
|
131
|
+
routeId?: string | undefined;
|
|
132
|
+
surfaceKind: string;
|
|
131
133
|
surfaceId: string;
|
|
132
|
-
externalId?: string;
|
|
133
|
-
threadId?: string;
|
|
134
|
-
userId?: string;
|
|
135
|
-
displayName?: string;
|
|
136
|
-
title?: string;
|
|
134
|
+
externalId?: string | undefined;
|
|
135
|
+
threadId?: string | undefined;
|
|
136
|
+
userId?: string | undefined;
|
|
137
|
+
displayName?: string | undefined;
|
|
138
|
+
title?: string | undefined;
|
|
137
139
|
body: string;
|
|
138
|
-
metadata?: Record<string, unknown
|
|
139
|
-
routing?: SharedSessionRoutingIntent;
|
|
140
|
+
metadata?: Record<string, unknown> | undefined;
|
|
141
|
+
routing?: SharedSessionRoutingIntent | undefined;
|
|
140
142
|
}): Promise<{
|
|
141
143
|
mode: 'continued-live' | 'spawn' | 'queued-follow-up' | 'rejected';
|
|
142
144
|
input: {
|
|
@@ -148,26 +150,26 @@ export interface DaemonRuntimeRouteContext {
|
|
|
148
150
|
id: string;
|
|
149
151
|
status: string;
|
|
150
152
|
};
|
|
151
|
-
routeBinding?: AutomationRouteBinding;
|
|
152
|
-
task?: string;
|
|
153
|
-
activeAgentId?: string | null;
|
|
154
|
-
userMessage?: unknown;
|
|
153
|
+
routeBinding?: AutomationRouteBinding | undefined;
|
|
154
|
+
task?: string | undefined;
|
|
155
|
+
activeAgentId?: string | null | undefined;
|
|
156
|
+
userMessage?: unknown | undefined;
|
|
155
157
|
}>;
|
|
156
158
|
bindAgent(sessionId: string, agentId: string): Promise<unknown>;
|
|
157
159
|
createSession(input: {
|
|
158
|
-
id?: string;
|
|
159
|
-
title?: string;
|
|
160
|
-
metadata?: Record<string, unknown
|
|
161
|
-
routeBinding?: AutomationRouteBinding;
|
|
160
|
+
id?: string | undefined;
|
|
161
|
+
title?: string | undefined;
|
|
162
|
+
metadata?: Record<string, unknown> | undefined;
|
|
163
|
+
routeBinding?: AutomationRouteBinding | undefined;
|
|
162
164
|
participant?: {
|
|
163
|
-
surfaceKind:
|
|
165
|
+
surfaceKind: string;
|
|
164
166
|
surfaceId: string;
|
|
165
|
-
externalId?: string;
|
|
166
|
-
userId?: string;
|
|
167
|
-
displayName?: string;
|
|
168
|
-
routeId?: string;
|
|
167
|
+
externalId?: string | undefined;
|
|
168
|
+
userId?: string | undefined;
|
|
169
|
+
displayName?: string | undefined;
|
|
170
|
+
routeId?: string | undefined;
|
|
169
171
|
lastSeenAt: number;
|
|
170
|
-
};
|
|
172
|
+
} | undefined;
|
|
171
173
|
}): Promise<{
|
|
172
174
|
id: string;
|
|
173
175
|
}>;
|
|
@@ -236,15 +238,15 @@ export interface DaemonRuntimeRouteContext {
|
|
|
236
238
|
readonly trySpawnAgent: (input: {
|
|
237
239
|
mode: 'spawn';
|
|
238
240
|
task: string;
|
|
239
|
-
model?: string;
|
|
240
|
-
tools?: string[] | readonly string[];
|
|
241
|
-
provider?: string;
|
|
242
|
-
context?: string;
|
|
243
|
-
executionIntent?: ExecutionIntent;
|
|
244
|
-
executionProtocol?: 'direct' | 'gather-plan-apply';
|
|
245
|
-
reviewMode?: 'none' | 'wrfc';
|
|
246
|
-
communicationLane?: 'parent-only' | 'parent-and-children' | 'cohort' | 'direct';
|
|
247
|
-
dangerously_disable_wrfc?: boolean;
|
|
241
|
+
model?: string | undefined;
|
|
242
|
+
tools?: string[] | readonly string[] | undefined;
|
|
243
|
+
provider?: string | undefined;
|
|
244
|
+
context?: string | undefined;
|
|
245
|
+
executionIntent?: ExecutionIntent | undefined;
|
|
246
|
+
executionProtocol?: 'direct' | 'gather-plan-apply' | undefined;
|
|
247
|
+
reviewMode?: 'none' | 'wrfc' | undefined;
|
|
248
|
+
communicationLane?: 'parent-only' | 'parent-and-children' | 'cohort' | 'direct' | undefined;
|
|
249
|
+
dangerously_disable_wrfc?: boolean | undefined;
|
|
248
250
|
}, logLabel: string, sessionId?: string) => AgentRecordLike | Response;
|
|
249
251
|
readonly queueSurfaceReplyFromBinding: (binding: AutomationRouteBinding | undefined, input: {
|
|
250
252
|
readonly agentId: string;
|
|
@@ -265,17 +267,9 @@ export interface DaemonRuntimeRouteContext {
|
|
|
265
267
|
readonly runtimeDispatch: {
|
|
266
268
|
transitionRuntimeTask(taskId: string, status: string, patch: Record<string, unknown>, source: string): void;
|
|
267
269
|
} | null;
|
|
268
|
-
/**
|
|
269
|
-
* Publish a conversation follow-up event scoped to a specific session.
|
|
270
|
-
* Used by kind='message' routing to broadcast a ConversationMessageEnvelope
|
|
271
|
-
* to TUI surface subscribers so the operator can see the companion message.
|
|
272
|
-
*/
|
|
270
|
+
/** Publish a conversation follow-up event scoped to a shared session. */
|
|
273
271
|
readonly publishConversationFollowup: (sessionId: string, envelope: Omit<ConversationMessageEnvelope, 'sessionId'>) => void;
|
|
274
|
-
/**
|
|
275
|
-
* Open a session-scoped SSE event stream for the companion app.
|
|
276
|
-
* Streams turn events (STREAM_DELTA, TURN_COMPLETED, etc.) and agent events
|
|
277
|
-
* for the given shared session back to the caller over SSE.
|
|
278
|
-
*/
|
|
272
|
+
/** Open a shared-session SSE stream for turn and agent events. */
|
|
279
273
|
readonly openSessionEventStream: (req: Request, sessionId: string) => Response;
|
|
280
274
|
}
|
|
281
275
|
export type DaemonRuntimeRouteHandlerMap = DaemonRuntimeRouteHandlers;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-route-types.d.ts","sourceRoot":"","sources":["../src/runtime-route-types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runtime-route-types.d.ts","sourceRoot":"","sources":["../src/runtime-route-types.ts"],"names":[],"mappings":"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"}
|