@pellux/goodvibes-daemon-sdk 0.30.3 → 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.
Files changed (72) hide show
  1. package/README.md +2 -2
  2. package/dist/api-router.d.ts +4 -2
  3. package/dist/api-router.d.ts.map +1 -1
  4. package/dist/api-router.js +18 -10
  5. package/dist/artifact-upload.d.ts +9 -9
  6. package/dist/artifact-upload.d.ts.map +1 -1
  7. package/dist/artifact-upload.js +27 -19
  8. package/dist/auth-helpers.d.ts +9 -0
  9. package/dist/auth-helpers.d.ts.map +1 -0
  10. package/dist/auth-helpers.js +10 -0
  11. package/dist/automation.js +10 -10
  12. package/dist/channel-route-types.d.ts +22 -23
  13. package/dist/channel-route-types.d.ts.map +1 -1
  14. package/dist/channel-routes.d.ts.map +1 -1
  15. package/dist/channel-routes.js +37 -42
  16. package/dist/context.d.ts +27 -27
  17. package/dist/context.d.ts.map +1 -1
  18. package/dist/control-routes.d.ts +12 -13
  19. package/dist/control-routes.d.ts.map +1 -1
  20. package/dist/control-routes.js +55 -26
  21. package/dist/error-response.d.ts +10 -3
  22. package/dist/error-response.d.ts.map +1 -1
  23. package/dist/error-response.js +102 -11
  24. package/dist/http-policy.d.ts +3 -4
  25. package/dist/http-policy.d.ts.map +1 -1
  26. package/dist/http-policy.js +2 -1
  27. package/dist/index.d.ts +11 -8
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +2 -1
  30. package/dist/integration-routes.d.ts +1 -1
  31. package/dist/integration-routes.d.ts.map +1 -1
  32. package/dist/integration-routes.js +72 -33
  33. package/dist/knowledge-refinement-routes.d.ts.map +1 -1
  34. package/dist/knowledge-refinement-routes.js +22 -15
  35. package/dist/knowledge-route-types.d.ts +16 -15
  36. package/dist/knowledge-route-types.d.ts.map +1 -1
  37. package/dist/knowledge-routes.d.ts.map +1 -1
  38. package/dist/knowledge-routes.js +144 -89
  39. package/dist/media-route-types.d.ts +2 -1
  40. package/dist/media-route-types.d.ts.map +1 -1
  41. package/dist/media-routes.d.ts.map +1 -1
  42. package/dist/media-routes.js +119 -55
  43. package/dist/operator.d.ts +16 -0
  44. package/dist/operator.d.ts.map +1 -1
  45. package/dist/operator.js +105 -61
  46. package/dist/otlp-protobuf.d.ts.map +1 -1
  47. package/dist/otlp-protobuf.js +28 -10
  48. package/dist/remote-routes.d.ts +9 -3
  49. package/dist/remote-routes.d.ts.map +1 -1
  50. package/dist/remote-routes.js +259 -163
  51. package/dist/route-helpers.d.ts +13 -2
  52. package/dist/route-helpers.d.ts.map +1 -1
  53. package/dist/route-helpers.js +38 -1
  54. package/dist/runtime-automation-routes.d.ts.map +1 -1
  55. package/dist/runtime-automation-routes.js +88 -54
  56. package/dist/runtime-route-types.d.ts +87 -93
  57. package/dist/runtime-route-types.d.ts.map +1 -1
  58. package/dist/runtime-session-routes.d.ts +6 -4
  59. package/dist/runtime-session-routes.d.ts.map +1 -1
  60. package/dist/runtime-session-routes.js +132 -88
  61. package/dist/sessions.js +3 -3
  62. package/dist/system-route-types.d.ts +25 -24
  63. package/dist/system-route-types.d.ts.map +1 -1
  64. package/dist/system-routes.d.ts +1 -1
  65. package/dist/system-routes.d.ts.map +1 -1
  66. package/dist/system-routes.js +126 -92
  67. package/dist/tasks.d.ts.map +1 -1
  68. package/dist/tasks.js +2 -0
  69. package/dist/telemetry-routes.d.ts +14 -14
  70. package/dist/telemetry-routes.d.ts.map +1 -1
  71. package/dist/telemetry-routes.js +54 -29
  72. package/package.json +5 -4
@@ -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 ?? 1;
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;AAG1E,wBAAgB,0CAA0C,CACxD,OAAO,EAAE,yBAAyB,GACjC,oCAAoC,CAoBtC"}
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 prompt = typeof body.prompt === 'string' ? body.prompt.trim() : undefined;
33
- const kind = typeof body.kind === 'string' ? body.kind : 'cron';
34
- const scheduleObj = typeof body.schedule === 'object' && body.schedule !== null ? body.schedule : null;
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 fallbackModelsSource = body.fallbackModels ?? body.fallbacks;
48
- const fallbackModels = Array.isArray(fallbackModelsSource)
49
- ? fallbackModelsSource.filter((value) => typeof value === 'string')
50
- : undefined;
51
- const schedule = kind === 'every'
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
- timeoutMs: typeof body.timeoutMs === 'number' ? body.timeoutMs : undefined,
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 Response.json({ error: `Schedule not found: ${id}` }, { status: 404 });
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
- : Response.json({ error: `Schedule not found: ${id}` }, { status: 404 });
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 Response.json({ error: `Schedule not found: ${id}` }, { status: 404 });
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 Response.json({ error: `Schedule not found: ${id}` }, { status: 404 });
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 Response.json({ error: `Schedule not found: ${id}` }, { status: 404 });
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
- const reason = body instanceof Response
142
- ? 'operator-cancelled'
143
- : body && typeof body.reason === 'string'
144
- ? body.reason
145
- : 'operator-cancelled';
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}`, Response.json({ error: 'Unknown automation run' }, { status: 404 }));
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 Response.json({ error: 'Unknown automation run' }, { status: 404 });
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
- return context.automationManager.listJobs().find((entry) => entry.id === id || entry.id.startsWith(id));
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
- export type JsonBody = Record<string, unknown>;
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<JsonBody | Response>;
63
- readonly parseOptionalJsonBody: (req: Request) => Promise<JsonBody | null | Response>;
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: AutomationSurfaceKind;
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: AutomationSurfaceKind;
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: AutomationSurfaceKind;
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: AutomationSurfaceKind;
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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"}