@pellux/goodvibes-daemon-sdk 0.18.3 → 0.30.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 (82) hide show
  1. package/README.md +13 -7
  2. package/dist/api-router.d.ts +8 -1
  3. package/dist/api-router.d.ts.map +1 -1
  4. package/dist/api-router.js +12 -3
  5. package/dist/artifact-upload.d.ts +26 -0
  6. package/dist/artifact-upload.d.ts.map +1 -0
  7. package/dist/artifact-upload.js +535 -0
  8. package/dist/automation.d.ts +2 -2
  9. package/dist/automation.d.ts.map +1 -1
  10. package/dist/channel-route-types.d.ts.map +1 -1
  11. package/dist/channel-routes.d.ts +2 -2
  12. package/dist/channel-routes.d.ts.map +1 -1
  13. package/dist/channel-routes.js +28 -3
  14. package/dist/context.d.ts +151 -51
  15. package/dist/context.d.ts.map +1 -1
  16. package/dist/control-routes.d.ts +2 -2
  17. package/dist/control-routes.d.ts.map +1 -1
  18. package/dist/error-response.d.ts.map +1 -1
  19. package/dist/error-response.js +172 -12
  20. package/dist/http-policy.d.ts +1 -1
  21. package/dist/http-policy.d.ts.map +1 -1
  22. package/dist/http-policy.js +0 -1
  23. package/dist/index.d.ts +8 -4
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +3 -1
  26. package/dist/integration-route-types.d.ts +3 -1
  27. package/dist/integration-route-types.d.ts.map +1 -1
  28. package/dist/integration-routes.d.ts +2 -2
  29. package/dist/integration-routes.d.ts.map +1 -1
  30. package/dist/integration-routes.js +3 -0
  31. package/dist/knowledge-refinement-routes.d.ts +4 -0
  32. package/dist/knowledge-refinement-routes.d.ts.map +1 -0
  33. package/dist/knowledge-refinement-routes.js +58 -0
  34. package/dist/knowledge-route-types.d.ts +11 -1
  35. package/dist/knowledge-route-types.d.ts.map +1 -1
  36. package/dist/knowledge-routes.d.ts +2 -2
  37. package/dist/knowledge-routes.d.ts.map +1 -1
  38. package/dist/knowledge-routes.js +156 -13
  39. package/dist/media-route-types.d.ts +10 -0
  40. package/dist/media-route-types.d.ts.map +1 -1
  41. package/dist/media-routes.d.ts +2 -2
  42. package/dist/media-routes.d.ts.map +1 -1
  43. package/dist/media-routes.js +134 -15
  44. package/dist/operator.d.ts +2 -2
  45. package/dist/operator.d.ts.map +1 -1
  46. package/dist/operator.js +49 -15
  47. package/dist/otlp-protobuf.d.ts +3 -0
  48. package/dist/otlp-protobuf.d.ts.map +1 -0
  49. package/dist/otlp-protobuf.js +977 -0
  50. package/dist/remote-routes.d.ts +2 -2
  51. package/dist/remote-routes.d.ts.map +1 -1
  52. package/dist/remote-routes.js +146 -13
  53. package/dist/remote.d.ts +2 -2
  54. package/dist/remote.d.ts.map +1 -1
  55. package/dist/route-helpers.d.ts +8 -0
  56. package/dist/route-helpers.d.ts.map +1 -1
  57. package/dist/route-helpers.js +24 -0
  58. package/dist/runtime-automation-routes.d.ts +2 -2
  59. package/dist/runtime-automation-routes.d.ts.map +1 -1
  60. package/dist/runtime-automation-routes.js +4 -1
  61. package/dist/runtime-route-types.d.ts +46 -3
  62. package/dist/runtime-route-types.d.ts.map +1 -1
  63. package/dist/runtime-routes.d.ts +2 -2
  64. package/dist/runtime-routes.d.ts.map +1 -1
  65. package/dist/runtime-routes.js +1 -0
  66. package/dist/runtime-session-routes.d.ts +13 -3
  67. package/dist/runtime-session-routes.d.ts.map +1 -1
  68. package/dist/runtime-session-routes.js +102 -10
  69. package/dist/sessions.d.ts +2 -2
  70. package/dist/sessions.d.ts.map +1 -1
  71. package/dist/sessions.js +3 -0
  72. package/dist/system-route-types.d.ts +19 -0
  73. package/dist/system-route-types.d.ts.map +1 -1
  74. package/dist/system-routes.d.ts +2 -2
  75. package/dist/system-routes.d.ts.map +1 -1
  76. package/dist/system-routes.js +18 -0
  77. package/dist/tasks.d.ts +2 -2
  78. package/dist/tasks.d.ts.map +1 -1
  79. package/dist/telemetry-routes.d.ts +25 -2
  80. package/dist/telemetry-routes.d.ts.map +1 -1
  81. package/dist/telemetry-routes.js +131 -15
  82. package/package.json +128 -5
@@ -1,4 +1,4 @@
1
- import type { DaemonApiRouteHandlers } from './context.js';
1
+ import type { DaemonRemoteManagementRouteHandlers } from './context.js';
2
2
  type JsonBody = Record<string, unknown>;
3
3
  type RemotePeerAuth = unknown;
4
4
  interface DistributedRuntimeRouteService {
@@ -30,7 +30,7 @@ interface DaemonRemoteRouteContext {
30
30
  readonly requireAuthenticatedSession: (req: Request) => SessionUserLike | null;
31
31
  readonly distributedRuntime: DistributedRuntimeRouteService;
32
32
  }
33
- export declare function createDaemonRemoteRouteHandlers(context: DaemonRemoteRouteContext): Pick<DaemonApiRouteHandlers, 'getRemotePairRequests' | 'approveRemotePairRequest' | 'rejectRemotePairRequest' | 'getRemotePeers' | 'rotateRemotePeerToken' | 'revokeRemotePeerToken' | 'disconnectRemotePeer' | 'getRemoteWork' | 'invokeRemotePeer' | 'cancelRemoteWork' | 'getRemoteNodeHostContract'>;
33
+ export declare function createDaemonRemoteRouteHandlers(context: DaemonRemoteRouteContext): DaemonRemoteManagementRouteHandlers;
34
34
  export declare function handleRemotePairRequest(context: Pick<DaemonRemoteRouteContext, 'parseJsonBody' | 'distributedRuntime'>, req: Request): Promise<Response>;
35
35
  export declare function handleRemotePairVerify(context: Pick<DaemonRemoteRouteContext, 'parseJsonBody' | 'distributedRuntime'>, req: Request): Promise<Response>;
36
36
  export declare function handleRemotePeerHeartbeat(context: Pick<DaemonRemoteRouteContext, 'parseJsonBody' | 'requireRemotePeer' | 'distributedRuntime'>, req: Request): Promise<Response>;
@@ -1 +1 @@
1
- {"version":3,"file":"remote-routes.d.ts","sourceRoot":"","sources":["../src/remote-routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remote-routes.d.ts","sourceRoot":"","sources":["../src/remote-routes.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  import { jsonErrorResponse } from './error-response.js';
2
2
  import { serializableJsonResponse } from './route-helpers.js';
3
+ const MAX_REMOTE_RESULT_BYTES = 1_000_000;
4
+ const MAX_REMOTE_PAYLOAD_BYTES = 1_000_000;
3
5
  export function createDaemonRemoteRouteHandlers(context) {
4
6
  return {
5
7
  getRemotePairRequests: () => Response.json({ requests: context.distributedRuntime.listPairRequests() }),
@@ -34,10 +36,9 @@ export async function handleRemotePairRequest(context, req) {
34
36
  clientMode: typeof body.clientMode === 'string' ? body.clientMode : undefined,
35
37
  capabilities: Array.isArray(body.capabilities) ? body.capabilities.filter((value) => typeof value === 'string') : [],
36
38
  commands: Array.isArray(body.commands) ? body.commands.filter((value) => typeof value === 'string') : [],
37
- metadata: typeof body.metadata === 'object' && body.metadata !== null ? body.metadata : {},
39
+ metadata: readMetadataWithClientHintForwardedFor(req, body.metadata),
38
40
  requestedBy: 'remote',
39
- remoteAddress: req.headers.get('x-forwarded-for') ?? undefined,
40
- ttlMs: typeof body.ttlMs === 'number' ? body.ttlMs : undefined,
41
+ ttlMs: boundedPositiveNumber(body.ttlMs, 1_000, 86_400_000),
41
42
  });
42
43
  return Response.json(created, { status: 201 });
43
44
  }
@@ -51,8 +52,7 @@ export async function handleRemotePairVerify(context, req) {
51
52
  return Response.json({ error: 'Missing requestId or challenge' }, { status: 400 });
52
53
  }
53
54
  const verified = await context.distributedRuntime.verifyPairRequest(requestId, challenge, {
54
- remoteAddress: req.headers.get('x-forwarded-for') ?? undefined,
55
- metadata: typeof body.metadata === 'object' && body.metadata !== null ? body.metadata : {},
55
+ metadata: readMetadataWithClientHintForwardedFor(req, body.metadata),
56
56
  });
57
57
  return verified
58
58
  ? Response.json(verified)
@@ -66,12 +66,11 @@ export async function handleRemotePeerHeartbeat(context, req) {
66
66
  if (body instanceof Response)
67
67
  return body;
68
68
  const peer = await context.distributedRuntime.heartbeatPeer(auth, {
69
- remoteAddress: req.headers.get('x-forwarded-for') ?? undefined,
70
69
  capabilities: Array.isArray(body.capabilities) ? body.capabilities.filter((value) => typeof value === 'string') : undefined,
71
70
  commands: Array.isArray(body.commands) ? body.commands.filter((value) => typeof value === 'string') : undefined,
72
71
  version: typeof body.version === 'string' ? body.version : undefined,
73
72
  clientMode: typeof body.clientMode === 'string' ? body.clientMode : undefined,
74
- metadata: typeof body.metadata === 'object' && body.metadata !== null ? body.metadata : {},
73
+ metadata: readMetadataWithClientHintForwardedFor(req, body.metadata),
75
74
  });
76
75
  return Response.json({ peer });
77
76
  }
@@ -83,8 +82,8 @@ export async function handleRemotePeerWorkPull(context, req) {
83
82
  if (body instanceof Response)
84
83
  return body;
85
84
  const work = await context.distributedRuntime.claimWork(auth, {
86
- maxItems: typeof body.maxItems === 'number' ? body.maxItems : undefined,
87
- leaseMs: typeof body.leaseMs === 'number' ? body.leaseMs : undefined,
85
+ maxItems: boundedPositiveNumber(body.maxItems, 1, 100),
86
+ leaseMs: boundedPositiveNumber(body.leaseMs, 1_000, 3_600_000),
88
87
  });
89
88
  return Response.json({ work });
90
89
  }
@@ -95,9 +94,12 @@ export async function handleRemotePeerWorkComplete(context, workId, req) {
95
94
  const body = await context.parseJsonBody(req);
96
95
  if (body instanceof Response)
97
96
  return body;
97
+ const result = validateRemoteJsonPayload(body.result, MAX_REMOTE_RESULT_BYTES, 'result');
98
+ if (result instanceof Response)
99
+ return result;
98
100
  const work = await context.distributedRuntime.completeWork(auth, workId, {
99
101
  status: body.status === 'failed' || body.status === 'cancelled' ? body.status : body.status === 'completed' ? 'completed' : undefined,
100
- result: body.result,
102
+ result,
101
103
  error: typeof body.error === 'string' ? body.error : undefined,
102
104
  metadata: typeof body.metadata === 'object' && body.metadata !== null ? body.metadata : {},
103
105
  });
@@ -105,6 +107,134 @@ export async function handleRemotePeerWorkComplete(context, workId, req) {
105
107
  ? Response.json({ work })
106
108
  : Response.json({ error: 'Unknown or unclaimed remote work item' }, { status: 404 });
107
109
  }
110
+ function boundedPositiveNumber(value, min, max) {
111
+ if (typeof value !== 'number' || !Number.isFinite(value))
112
+ return undefined;
113
+ return Math.max(min, Math.min(max, Math.trunc(value)));
114
+ }
115
+ function validateRemoteJsonPayload(value, maxBytes, field) {
116
+ const size = estimateJsonByteLengthWithinLimit(value ?? null, maxBytes);
117
+ if (size.kind === 'invalid') {
118
+ return Response.json({
119
+ error: `Remote ${field} must be JSON-serializable`,
120
+ }, { status: 400 });
121
+ }
122
+ if (size.byteLength <= maxBytes)
123
+ return value;
124
+ return Response.json({
125
+ error: `Remote ${field} exceeds ${maxBytes} byte limit`,
126
+ }, { status: 413 });
127
+ }
128
+ function estimateJsonByteLengthWithinLimit(value, maxBytes, seen = new Set()) {
129
+ const byteLength = measureJsonByteLength(value, maxBytes, seen);
130
+ return byteLength === undefined ? { kind: 'invalid' } : { kind: 'ok', byteLength };
131
+ }
132
+ function measureJsonByteLength(value, maxBytes, seen) {
133
+ const valueType = typeof value;
134
+ if (value === null)
135
+ return 4;
136
+ if (typeof value === 'string')
137
+ return jsonStringByteLength(value, maxBytes);
138
+ if (valueType === 'number')
139
+ return Number.isFinite(value) ? String(value).length : 4;
140
+ if (valueType === 'boolean')
141
+ return value ? 4 : 5;
142
+ if (valueType === 'undefined' || valueType === 'function' || valueType === 'symbol')
143
+ return 4;
144
+ if (valueType !== 'object')
145
+ return undefined;
146
+ const objectValue = value;
147
+ if (seen.has(objectValue))
148
+ return undefined;
149
+ seen.add(objectValue);
150
+ try {
151
+ let total = 2;
152
+ if (Array.isArray(value)) {
153
+ for (let index = 0; index < value.length; index += 1) {
154
+ if (index > 0)
155
+ total += 1;
156
+ if (total > maxBytes)
157
+ return total;
158
+ const entrySize = measureJsonByteLength(value[index], maxBytes - total, seen);
159
+ if (entrySize === undefined)
160
+ return undefined;
161
+ total += entrySize;
162
+ if (total > maxBytes) {
163
+ return total;
164
+ }
165
+ }
166
+ return total;
167
+ }
168
+ let count = 0;
169
+ for (const [key, entryValue] of Object.entries(value)) {
170
+ const entryType = typeof entryValue;
171
+ if (entryType === 'undefined' || entryType === 'function' || entryType === 'symbol')
172
+ continue;
173
+ if (count > 0)
174
+ total += 1;
175
+ total += jsonStringByteLength(key, maxBytes - total) + 1;
176
+ if (total > maxBytes)
177
+ return total;
178
+ const entrySize = measureJsonByteLength(entryValue, maxBytes - total, seen);
179
+ if (entrySize === undefined)
180
+ return undefined;
181
+ total += entrySize;
182
+ count += 1;
183
+ if (total > maxBytes) {
184
+ return total;
185
+ }
186
+ }
187
+ return total;
188
+ }
189
+ finally {
190
+ seen.delete(objectValue);
191
+ }
192
+ }
193
+ function jsonStringByteLength(value, maxBytes = Number.POSITIVE_INFINITY) {
194
+ let total = 2;
195
+ for (let index = 0; index < value.length; index += 1) {
196
+ const code = value.charCodeAt(index);
197
+ if (code === 0x22 || code === 0x5c || code === 0x08 || code === 0x0c || code === 0x0a || code === 0x0d || code === 0x09) {
198
+ total += 2;
199
+ }
200
+ else if (code <= 0x1f) {
201
+ total += 6;
202
+ }
203
+ else if (code >= 0xd800 && code <= 0xdbff) {
204
+ const next = value.charCodeAt(index + 1);
205
+ if (next >= 0xdc00 && next <= 0xdfff) {
206
+ total += 4;
207
+ index += 1;
208
+ }
209
+ else {
210
+ total += 6;
211
+ }
212
+ }
213
+ else if (code >= 0xdc00 && code <= 0xdfff) {
214
+ total += 6;
215
+ }
216
+ else {
217
+ total += code <= 0x7f ? 1 : code <= 0x7ff ? 2 : 3;
218
+ }
219
+ if (total > maxBytes)
220
+ return total;
221
+ }
222
+ return total;
223
+ }
224
+ function readMetadataWithClientHintForwardedFor(req, value) {
225
+ const metadata = typeof value === 'object' && value !== null && !Array.isArray(value)
226
+ ? { ...value }
227
+ : {};
228
+ const clientHintForwardedFor = readClientHintForwardedFor(req);
229
+ return clientHintForwardedFor ? { ...metadata, clientHintForwardedFor } : metadata;
230
+ }
231
+ function readClientHintForwardedFor(req) {
232
+ // x-forwarded-for is caller-controlled unless the daemon is explicitly behind
233
+ // a trusted proxy. Preserve a small display/audit hint under an explicit
234
+ // client-hint key, but never use it for authorization decisions.
235
+ const value = req.headers.get('x-forwarded-for')?.split(',')[0]?.trim();
236
+ return value ? value : undefined;
237
+ }
108
238
  function operatorActor(context, req) {
109
239
  return context.authToken ? 'shared-token' : context.requireAuthenticatedSession(req)?.username ?? 'operator';
110
240
  }
@@ -199,15 +329,18 @@ async function handleInvokeRemotePeer(context, peerId, req) {
199
329
  if (!command) {
200
330
  return Response.json({ error: 'Missing remote invoke command' }, { status: 400 });
201
331
  }
332
+ const payload = validateRemoteJsonPayload(body.payload, MAX_REMOTE_PAYLOAD_BYTES, 'payload');
333
+ if (payload instanceof Response)
334
+ return payload;
202
335
  try {
203
336
  const invoked = await context.distributedRuntime.invokePeer({
204
337
  peerId,
205
338
  command,
206
- payload: body.payload,
339
+ payload,
207
340
  priority: body.priority === 'high' || body.priority === 'default' ? body.priority : 'normal',
208
341
  actor: operatorActor(context, req),
209
- waitMs: typeof body.waitMs === 'number' ? body.waitMs : undefined,
210
- timeoutMs: typeof body.timeoutMs === 'number' ? body.timeoutMs : undefined,
342
+ waitMs: boundedPositiveNumber(body.waitMs, 0, 300_000),
343
+ timeoutMs: boundedPositiveNumber(body.timeoutMs, 1_000, 300_000),
211
344
  sessionId: typeof body.sessionId === 'string' ? body.sessionId : undefined,
212
345
  routeId: typeof body.routeId === 'string' ? body.routeId : undefined,
213
346
  automationRunId: typeof body.automationRunId === 'string' ? body.automationRunId : undefined,
package/dist/remote.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- import type { DaemonApiRouteHandlers } from './context.js';
2
- export declare function dispatchRemoteRoutes(req: Request, handlers: Pick<DaemonApiRouteHandlers, 'getRemote' | 'getRemotePairRequests' | 'approveRemotePairRequest' | 'rejectRemotePairRequest' | 'getRemotePeers' | 'rotateRemotePeerToken' | 'revokeRemotePeerToken' | 'disconnectRemotePeer' | 'getRemoteWork' | 'invokeRemotePeer' | 'cancelRemoteWork'>): Promise<Response | null>;
1
+ import type { DaemonRemoteDispatchRouteHandlers } from './context.js';
2
+ export declare function dispatchRemoteRoutes(req: Request, handlers: DaemonRemoteDispatchRouteHandlers): Promise<Response | null>;
3
3
  //# sourceMappingURL=remote.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAE3D,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,IAAI,CACZ,sBAAsB,EACpB,WAAW,GACX,uBAAuB,GACvB,0BAA0B,GAC1B,yBAAyB,GACzB,gBAAgB,GAChB,uBAAuB,GACvB,uBAAuB,GACvB,sBAAsB,GACtB,eAAe,GACf,kBAAkB,GAClB,kBAAkB,CACrB,GACA,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CA6B1B"}
1
+ {"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,cAAc,CAAC;AAEtE,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,iCAAiC,GAC1C,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CA6B1B"}
@@ -2,6 +2,14 @@ export type JsonRecord = Record<string, unknown>;
2
2
  export declare function isJsonRecord(value: unknown): value is JsonRecord;
3
3
  export declare function toSerializableJson(value: unknown, stack?: Map<object, string>, path?: string): unknown;
4
4
  export declare function serializableJsonResponse(body: unknown, init?: ResponseInit): Response;
5
+ export interface BoundedIntegerOptions {
6
+ readonly fallback: number;
7
+ readonly min?: number;
8
+ readonly max?: number;
9
+ }
10
+ export declare function readBoundedInteger(raw: string | null, options: BoundedIntegerOptions): number;
11
+ export declare function readBoundedPositiveInteger(raw: string | null, fallback: number, max?: number): number;
12
+ export declare function readOptionalBoundedInteger(raw: string | null, min: number, max: number): number | undefined;
5
13
  export declare function scopeMatches(granted: string, required: string): boolean;
6
14
  export declare function missingScopes(grantedScopes: readonly string[] | undefined, requiredScopes: readonly string[]): string[];
7
15
  export type ChannelLifecycleAction = 'inspect' | 'setup' | 'retest' | 'connect' | 'disconnect' | 'start' | 'stop' | 'login' | 'logout' | 'wait_login';
@@ -1 +1 @@
1
- {"version":3,"file":"route-helpers.d.ts","sourceRoot":"","sources":["../src/route-helpers.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEjD,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAEhE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,sBAA4B,EAAE,IAAI,SAAM,GAAG,OAAO,CAiBzG;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,QAAQ,CAErF;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAMvE;AAED,wBAAgB,aAAa,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EAAE,cAAc,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAGvH;AAED,MAAM,MAAM,sBAAsB,GAC9B,SAAS,GACT,OAAO,GACP,QAAQ,GACR,SAAS,GACT,YAAY,GACZ,OAAO,GACP,MAAM,GACN,OAAO,GACP,QAAQ,GACR,YAAY,CAAC;AAEjB,MAAM,MAAM,uBAAuB,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE5F,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,GAAG,IAAI,CAaxF;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,uBAAuB,GAAG,IAAI,CAI1F"}
1
+ {"version":3,"file":"route-helpers.d.ts","sourceRoot":"","sources":["../src/route-helpers.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEjD,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAEhE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,sBAA4B,EAAE,IAAI,SAAM,GAAG,OAAO,CAiBzG;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,QAAQ,CAErF;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,qBAAqB,GAAG,MAAM,CAO7F;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAQ,GAAG,MAAM,CAEpG;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAK3G;AAMD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAMvE;AAED,wBAAgB,aAAa,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EAAE,cAAc,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAGvH;AAED,MAAM,MAAM,sBAAsB,GAC9B,SAAS,GACT,OAAO,GACP,QAAQ,GACR,SAAS,GACT,YAAY,GACZ,OAAO,GACP,MAAM,GACN,OAAO,GACP,QAAQ,GACR,YAAY,CAAC;AAEjB,MAAM,MAAM,uBAAuB,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE5F,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,GAAG,IAAI,CAaxF;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,uBAAuB,GAAG,IAAI,CAI1F"}
@@ -21,6 +21,30 @@ export function toSerializableJson(value, stack = new Map(), path = '$') {
21
21
  export function serializableJsonResponse(body, init) {
22
22
  return Response.json(toSerializableJson(body), init);
23
23
  }
24
+ export function readBoundedInteger(raw, options) {
25
+ const min = options.min ?? 1;
26
+ const max = options.max ?? 1_000;
27
+ if (raw === null || raw.trim() === '')
28
+ return clampInteger(options.fallback, min, max);
29
+ const value = Number(raw);
30
+ if (!Number.isFinite(value))
31
+ return clampInteger(options.fallback, min, max);
32
+ return clampInteger(value, min, max);
33
+ }
34
+ export function readBoundedPositiveInteger(raw, fallback, max = 1_000) {
35
+ return readBoundedInteger(raw, { fallback, min: 1, max });
36
+ }
37
+ export function readOptionalBoundedInteger(raw, min, max) {
38
+ if (raw === null || raw.trim() === '')
39
+ return undefined;
40
+ const value = Number(raw);
41
+ if (!Number.isFinite(value))
42
+ return undefined;
43
+ return clampInteger(value, min, max);
44
+ }
45
+ function clampInteger(value, min, max) {
46
+ return Math.min(max, Math.max(min, Math.trunc(value)));
47
+ }
24
48
  export function scopeMatches(granted, required) {
25
49
  if (granted === '*' || granted === required)
26
50
  return true;
@@ -1,4 +1,4 @@
1
- import type { DaemonApiRouteHandlers } from './context.js';
1
+ import type { DaemonRuntimeAutomationRouteHandlers } from './context.js';
2
2
  import type { DaemonRuntimeRouteContext } from './runtime-route-types.js';
3
- export declare function createDaemonRuntimeAutomationRouteHandlers(context: DaemonRuntimeRouteContext): Pick<DaemonApiRouteHandlers, 'getAutomationJobs' | 'postAutomationJob' | 'getAutomationRuns' | 'getAutomationRun' | 'getAutomationHeartbeat' | 'postAutomationHeartbeat' | 'automationRunAction' | 'patchAutomationJob' | 'deleteAutomationJob' | 'setAutomationJobEnabled' | 'runAutomationJobNow' | 'getSchedules' | 'postSchedule' | 'deleteSchedule' | 'setScheduleEnabled' | 'runScheduleNow'>;
3
+ export declare function createDaemonRuntimeAutomationRouteHandlers(context: DaemonRuntimeRouteContext): DaemonRuntimeAutomationRouteHandlers;
4
4
  //# sourceMappingURL=runtime-automation-routes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-automation-routes.d.ts","sourceRoot":"","sources":["../src/runtime-automation-routes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAG1E,wBAAgB,0CAA0C,CACxD,OAAO,EAAE,yBAAyB,GACjC,IAAI,CACL,sBAAsB,EACpB,mBAAmB,GACnB,mBAAmB,GACnB,mBAAmB,GACnB,kBAAkB,GAClB,wBAAwB,GACxB,yBAAyB,GACzB,qBAAqB,GACrB,oBAAoB,GACpB,qBAAqB,GACrB,yBAAyB,GACzB,qBAAqB,GACrB,cAAc,GACd,cAAc,GACd,gBAAgB,GAChB,oBAAoB,GACpB,gBAAgB,CACnB,CAmBA"}
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"}
@@ -17,6 +17,7 @@ export function createDaemonRuntimeAutomationRouteHandlers(context) {
17
17
  deleteSchedule: async (scheduleId) => handleDeleteSchedule(context, scheduleId),
18
18
  setScheduleEnabled: (scheduleId, enabled) => handleSetScheduleEnabled(context, scheduleId, enabled),
19
19
  runScheduleNow: (scheduleId) => handleRunScheduleNow(context, scheduleId),
20
+ getSchedulerCapacity: () => Response.json(context.automationManager.getSchedulerCapacity()),
20
21
  };
21
22
  }
22
23
  function handleGetSchedules(context) {
@@ -30,7 +31,9 @@ async function handlePostSchedule(context, req) {
30
31
  return body;
31
32
  const prompt = typeof body.prompt === 'string' ? body.prompt.trim() : undefined;
32
33
  const kind = typeof body.kind === 'string' ? body.kind : 'cron';
33
- const cron = typeof body.cron === 'string' ? body.cron : undefined;
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;
34
37
  const every = typeof body.every === 'string' ? body.every : undefined;
35
38
  const at = typeof body.at === 'string' || typeof body.at === 'number' ? body.at : undefined;
36
39
  const timezone = typeof body.timezone === 'string' ? body.timezone : undefined;
@@ -1,4 +1,18 @@
1
- import type { DaemonApiRouteHandlers } from './context.js';
1
+ import type { DaemonRuntimeRouteHandlers } from './context.js';
2
+ /**
3
+ * Stable envelope shape for conversation-message-related events published
4
+ * through the control-plane gateway. Used by companion follow-up routing
5
+ * (kind='message') to broadcast messages to TUI surface subscribers without
6
+ * spawning an agent.
7
+ */
8
+ export interface ConversationMessageEnvelope {
9
+ readonly messageId: string;
10
+ readonly body: string;
11
+ readonly source: string;
12
+ readonly timestamp: number;
13
+ /** Optional metadata (tool info, model id, etc.) */
14
+ readonly metadata?: Readonly<Record<string, unknown>>;
15
+ }
2
16
  export type JsonBody = Record<string, unknown>;
3
17
  export type AutomationSurfaceKind = string;
4
18
  export interface SharedSessionRoutingIntent {
@@ -49,6 +63,7 @@ export interface DaemonRuntimeRouteContext {
49
63
  readonly parseOptionalJsonBody: (req: Request) => Promise<JsonBody | null | Response>;
50
64
  readonly recordApiResponse: (req: Request, path: string, response: Response) => Response;
51
65
  readonly requireAdmin: (req: Request) => Response | null;
66
+ readonly snapshotMetrics: () => Record<string, unknown>;
52
67
  readonly sessionBroker: {
53
68
  start(): Promise<void>;
54
69
  submitMessage(input: {
@@ -175,6 +190,12 @@ export interface DaemonRuntimeRouteContext {
175
190
  status: string;
176
191
  routeId?: string;
177
192
  }): Promise<void>;
193
+ appendCompanionMessage(sessionId: string, input: {
194
+ readonly messageId: string;
195
+ readonly body: string;
196
+ readonly timestamp: number;
197
+ readonly source: string;
198
+ }): Promise<unknown>;
178
199
  };
179
200
  readonly agentManager: {
180
201
  getStatus(agentId: string): AgentRecordLike | null;
@@ -198,6 +219,12 @@ export interface DaemonRuntimeRouteContext {
198
219
  agentId?: string;
199
220
  status: string;
200
221
  }>;
222
+ getSchedulerCapacity(): {
223
+ slotsTotal: number;
224
+ slotsInUse: number;
225
+ queueDepth: number;
226
+ oldestQueuedAgeMs: number | null;
227
+ };
201
228
  };
202
229
  readonly normalizeAtSchedule: (at: number) => unknown;
203
230
  readonly normalizeEverySchedule: (interval: string | number, anchorAt?: number) => unknown;
@@ -214,13 +241,17 @@ export interface DaemonRuntimeRouteContext {
214
241
  provider?: string;
215
242
  context?: string;
216
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;
217
248
  }, logLabel: string, sessionId?: string) => AgentRecordLike | Response;
218
249
  readonly queueSurfaceReplyFromBinding: (binding: AutomationRouteBinding | undefined, input: {
219
250
  readonly agentId: string;
220
251
  readonly task: string;
221
252
  readonly sessionId?: string;
222
253
  }) => void;
223
- readonly surfaceDeliveryEnabled: (surface: 'slack' | 'discord' | 'ntfy' | 'webhook' | 'telegram' | 'google-chat' | 'signal' | 'whatsapp' | 'imessage' | 'msteams' | 'bluebubbles' | 'mattermost' | 'matrix') => boolean;
254
+ readonly surfaceDeliveryEnabled: (surface: 'slack' | 'discord' | 'ntfy' | 'webhook' | 'homeassistant' | 'telegram' | 'google-chat' | 'signal' | 'whatsapp' | 'imessage' | 'msteams' | 'bluebubbles' | 'mattermost' | 'matrix') => boolean;
224
255
  readonly syncSpawnedAgentTask: (record: AgentRecordLike, sessionId?: string) => void;
225
256
  readonly syncFinishedAgentTask: (record: AgentRecordLike) => void;
226
257
  readonly configManager: {
@@ -234,7 +265,19 @@ export interface DaemonRuntimeRouteContext {
234
265
  readonly runtimeDispatch: {
235
266
  transitionRuntimeTask(taskId: string, status: string, patch: Record<string, unknown>, source: string): void;
236
267
  } | 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
+ */
273
+ 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
+ */
279
+ readonly openSessionEventStream: (req: Request, sessionId: string) => Response;
237
280
  }
238
- export type DaemonRuntimeRouteHandlerMap = Pick<DaemonApiRouteHandlers, 'createSharedSession' | 'getAutomationJobs' | 'postAutomationJob' | 'getAutomationRuns' | 'getAutomationRun' | 'getAutomationHeartbeat' | 'postAutomationHeartbeat' | 'automationRunAction' | 'patchAutomationJob' | 'deleteAutomationJob' | 'setAutomationJobEnabled' | 'runAutomationJobNow' | 'postTask' | 'getSharedSession' | 'closeSharedSession' | 'reopenSharedSession' | 'getSharedSessionMessages' | 'getSharedSessionInputs' | 'postSharedSessionMessage' | 'postSharedSessionSteer' | 'postSharedSessionFollowUp' | 'cancelSharedSessionInput' | 'getRuntimeTask' | 'runtimeTaskAction' | 'getTaskStatus' | 'getSchedules' | 'postSchedule' | 'deleteSchedule' | 'setScheduleEnabled' | 'runScheduleNow'>;
281
+ export type DaemonRuntimeRouteHandlerMap = DaemonRuntimeRouteHandlers;
239
282
  export {};
240
283
  //# sourceMappingURL=runtime-route-types.d.ts.map
@@ -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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"}
@@ -1,5 +1,5 @@
1
- import type { DaemonApiRouteHandlers } from './context.js';
1
+ import type { DaemonRuntimeRouteHandlers } from './context.js';
2
2
  import type { DaemonRuntimeRouteContext } from './runtime-route-types.js';
3
3
  export type { DaemonRuntimeRouteContext } from './runtime-route-types.js';
4
- export declare function createDaemonRuntimeRouteHandlers(context: DaemonRuntimeRouteContext): Pick<DaemonApiRouteHandlers, 'createSharedSession' | 'getAutomationJobs' | 'postAutomationJob' | 'getAutomationRuns' | 'getAutomationRun' | 'getAutomationHeartbeat' | 'postAutomationHeartbeat' | 'automationRunAction' | 'patchAutomationJob' | 'deleteAutomationJob' | 'setAutomationJobEnabled' | 'runAutomationJobNow' | 'postTask' | 'getSharedSession' | 'closeSharedSession' | 'reopenSharedSession' | 'getSharedSessionMessages' | 'getSharedSessionInputs' | 'postSharedSessionMessage' | 'postSharedSessionSteer' | 'postSharedSessionFollowUp' | 'cancelSharedSessionInput' | 'getRuntimeTask' | 'runtimeTaskAction' | 'getTaskStatus' | 'getSchedules' | 'postSchedule' | 'deleteSchedule' | 'setScheduleEnabled' | 'runScheduleNow'>;
4
+ export declare function createDaemonRuntimeRouteHandlers(context: DaemonRuntimeRouteContext): DaemonRuntimeRouteHandlers;
5
5
  //# sourceMappingURL=runtime-routes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-routes.d.ts","sourceRoot":"","sources":["../src/runtime-routes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAG3D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAE1E,YAAY,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAE1E,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,yBAAyB,GACjC,IAAI,CACL,sBAAsB,EACpB,qBAAqB,GACrB,mBAAmB,GACnB,mBAAmB,GACnB,mBAAmB,GACnB,kBAAkB,GAClB,wBAAwB,GACxB,yBAAyB,GACzB,qBAAqB,GACrB,oBAAoB,GACpB,qBAAqB,GACrB,yBAAyB,GACzB,qBAAqB,GACrB,UAAU,GACV,kBAAkB,GAClB,oBAAoB,GACpB,qBAAqB,GACrB,0BAA0B,GAC1B,wBAAwB,GACxB,0BAA0B,GAC1B,wBAAwB,GACxB,2BAA2B,GAC3B,0BAA0B,GAC1B,gBAAgB,GAChB,mBAAmB,GACnB,eAAe,GACf,cAAc,GACd,cAAc,GACd,gBAAgB,GAChB,oBAAoB,GACpB,gBAAgB,CACnB,CAKA"}
1
+ {"version":3,"file":"runtime-routes.d.ts","sourceRoot":"","sources":["../src/runtime-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAG/D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAE1E,YAAY,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAE1E,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,yBAAyB,GACjC,0BAA0B,CAM5B"}
@@ -4,5 +4,6 @@ export function createDaemonRuntimeRouteHandlers(context) {
4
4
  return {
5
5
  ...createDaemonRuntimeSessionRouteHandlers(context),
6
6
  ...createDaemonRuntimeAutomationRouteHandlers(context),
7
+ getRuntimeMetrics: () => Response.json(context.snapshotMetrics()),
7
8
  };
8
9
  }
@@ -1,4 +1,14 @@
1
- import type { DaemonApiRouteHandlers } from './context.js';
2
- import type { DaemonRuntimeRouteContext } from './runtime-route-types.js';
3
- export declare function createDaemonRuntimeSessionRouteHandlers(context: DaemonRuntimeRouteContext): Pick<DaemonApiRouteHandlers, 'createSharedSession' | 'postTask' | 'getSharedSession' | 'closeSharedSession' | 'reopenSharedSession' | 'getSharedSessionMessages' | 'getSharedSessionInputs' | 'postSharedSessionMessage' | 'postSharedSessionSteer' | 'postSharedSessionFollowUp' | 'cancelSharedSessionInput' | 'getRuntimeTask' | 'runtimeTaskAction' | 'getTaskStatus'>;
1
+ import type { DaemonRuntimeSessionRouteHandlers, DaemonRuntimeTaskRouteHandlers } from './context.js';
2
+ import type { DaemonRuntimeRouteContext, JsonBody } from './runtime-route-types.js';
3
+ export declare function createDaemonRuntimeSessionRouteHandlers(context: DaemonRuntimeRouteContext): DaemonRuntimeSessionRouteHandlers & DaemonRuntimeTaskRouteHandlers;
4
+ /**
5
+ * Extract the message body from an incoming POST body.
6
+ *
7
+ * F13 normalization: accepts the canonical 'body' field.
8
+ * The caller must check for an empty result and return 400.
9
+ *
10
+ * @param body - Parsed JSON body from the request.
11
+ * @returns Trimmed message string, or '' if none of the accepted fields are present.
12
+ */
13
+ export declare function readSharedSessionMessageBody(body: JsonBody): string;
4
14
  //# sourceMappingURL=runtime-session-routes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-session-routes.d.ts","sourceRoot":"","sources":["../src/runtime-session-routes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,KAAK,EAEV,yBAAyB,EAI1B,MAAM,0BAA0B,CAAC;AAMlC,wBAAgB,uCAAuC,CACrD,OAAO,EAAE,yBAAyB,GACjC,IAAI,CACL,sBAAsB,EACpB,qBAAqB,GACrB,UAAU,GACV,kBAAkB,GAClB,oBAAoB,GACpB,qBAAqB,GACrB,0BAA0B,GAC1B,wBAAwB,GACxB,0BAA0B,GAC1B,wBAAwB,GACxB,2BAA2B,GAC3B,0BAA0B,GAC1B,gBAAgB,GAChB,mBAAmB,GACnB,eAAe,CAClB,CAiBA"}
1
+ {"version":3,"file":"runtime-session-routes.d.ts","sourceRoot":"","sources":["../src/runtime-session-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iCAAiC,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAC;AAEtG,OAAO,KAAK,EAEV,yBAAyB,EAEzB,QAAQ,EAET,MAAM,0BAA0B,CAAC;AAelC,wBAAgB,uCAAuC,CACrD,OAAO,EAAE,yBAAyB,GACjC,iCAAiC,GAAG,8BAA8B,CAkBpE;AA+VD;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAEnE"}