@cogitator-ai/express 0.7.11 → 0.8.1

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 (37) hide show
  1. package/README.md +11 -3
  2. package/dist/middleware/index.d.ts +1 -0
  3. package/dist/middleware/index.d.ts.map +1 -1
  4. package/dist/middleware/index.js +1 -0
  5. package/dist/middleware/index.js.map +1 -1
  6. package/dist/middleware/json-body.d.ts +8 -0
  7. package/dist/middleware/json-body.d.ts.map +1 -0
  8. package/dist/middleware/json-body.js +17 -0
  9. package/dist/middleware/json-body.js.map +1 -0
  10. package/dist/routes/agents.d.ts.map +1 -1
  11. package/dist/routes/agents.js +15 -72
  12. package/dist/routes/agents.js.map +1 -1
  13. package/dist/routes/swarms.d.ts.map +1 -1
  14. package/dist/routes/swarms.js +81 -86
  15. package/dist/routes/swarms.js.map +1 -1
  16. package/dist/routes/threads.d.ts.map +1 -1
  17. package/dist/routes/threads.js +6 -17
  18. package/dist/routes/threads.js.map +1 -1
  19. package/dist/routes/utils.d.ts +1 -16
  20. package/dist/routes/utils.d.ts.map +1 -1
  21. package/dist/routes/utils.js +1 -99
  22. package/dist/routes/utils.js.map +1 -1
  23. package/dist/routes/workflows.js +4 -3
  24. package/dist/routes/workflows.js.map +1 -1
  25. package/dist/server.d.ts.map +1 -1
  26. package/dist/server.js +6 -3
  27. package/dist/server.js.map +1 -1
  28. package/dist/streaming/express-stream-writer.d.ts +4 -2
  29. package/dist/streaming/express-stream-writer.d.ts.map +1 -1
  30. package/dist/streaming/express-stream-writer.js +11 -6
  31. package/dist/streaming/express-stream-writer.js.map +1 -1
  32. package/dist/types.d.ts +14 -19
  33. package/dist/types.d.ts.map +1 -1
  34. package/dist/websocket/ws-handler.d.ts.map +1 -1
  35. package/dist/websocket/ws-handler.js +13 -21
  36. package/dist/websocket/ws-handler.js.map +1 -1
  37. package/package.json +10 -9
package/README.md CHANGED
@@ -60,6 +60,12 @@ POST /api/agents/:name/resume - Resume a run paused for tool approvals
60
60
 
61
61
  Run/stream body: `{ input: string; context?: object; threadId?: string }`. `input` must contain more than whitespace and `threadId`, when sent, must be a non-empty string (`400 INVALID_INPUT` otherwise, before the model is called). The validator comes from `@cogitator-ai/server-shared`, so Express, Fastify, Hono and Koa refuse exactly the same bodies. The `usage` of a run answer carries `inputTokens`, `outputTokens` and `totalTokens`, plus `reasoningTokens`, `cachedInputTokens` and `cacheWriteTokens` when the model reported them, the same shape as every other adapter. The `finish` event of an agent stream carries the same `usage` (never the run's cost or duration). The agent list exposes `config.description`, never the agent instructions. The authenticated `userId` (from `auth`) is passed to the run, and the run is aborted when the client disconnects.
62
62
 
63
+ - A run puts `context` into the system prompt, and the model reads a `system` thread message as operator instructions, so clients may set neither unless the server allows it: `acceptContext` lists the `context` keys clients may send (`true` accepts any key, for clients trusted like your own code), and `threadMessageRoles` the roles of `POST /threads/:id/messages` (`user` and `assistant` by default). Anything else is refused with `400 INVALID_INPUT`, over HTTP and WebSocket alike.
64
+ - A `POST` body that is not JSON (`text/plain`, a form) is refused with `415 UNSUPPORTED_MEDIA_TYPE` before it is parsed: browsers send those across origins without a CORS preflight.
65
+ - `POST /agents/:name/run` and `/resume` answer `toAgentRunResponse()` of `@cogitator-ai/server-shared`: `output`, `threadId`, `usage`, `toolCalls` (`{ id, name, arguments }`), `status` and `traceId`, plus `reasoning`, `pendingApprovals`, `structured`, `structuredError`, `truncated`, `blocked` and `iterationLimitReached` when they apply. The WebSocket `complete` event carries the same object, never the system prompt, the history, trace spans or a paused run's checkpoint.
66
+ - The `start` event of an agent stream names the run's thread (the request's `threadId`, or a new one), and `finish` repeats it with the run's outcome, so a client that sent no thread continues the conversation with this one.
67
+ - Swarm routes close each swarm they build once its run ends, so a distributed swarm leaves no Redis connections behind and its state expires. `GET /swarms` lists every agent, the router and pipeline stages included.
68
+
63
69
  ### Threads (Memory)
64
70
 
65
71
  ```
@@ -68,7 +74,7 @@ POST /api/threads/:id/messages - Add message to thread
68
74
  DELETE /api/threads/:id - Delete thread
69
75
  ```
70
76
 
71
- The routes use `cogitator.getMemory()`, which connects the configured memory adapter on first use, so threads can be read on a fresh server before any agent has run. Only a `Cogitator` without `memory` configured answers `503 UNAVAILABLE`. New messages need `role` (`user` | `assistant` | `system`) and a non-empty string `content`; optional `metadata` is stored on the memory entry.
77
+ The routes use `cogitator.getMemory()`, which connects the configured memory adapter on first use, so threads can be read on a fresh server before any agent has run. Only a `Cogitator` without `memory` configured answers `503 UNAVAILABLE`. New messages need `role` (`user` or `assistant`, more with `threadMessageRoles`) and a non-empty string `content`, optional `metadata` is stored on the memory entry.
72
78
 
73
79
  ### Workflows
74
80
 
@@ -78,7 +84,7 @@ POST /api/workflows/:name/run - Run workflow
78
84
  POST /api/workflows/:name/stream - Stream workflow events
79
85
  ```
80
86
 
81
- Body: `{ input?: object; options?: { maxConcurrency?: number; maxIterations?: number; checkpoint?: boolean } }`. `maxConcurrency`/`maxIterations` must be positive integers and `checkpoint` a boolean (400 otherwise); other options are dropped. A failed workflow returns `500` with code `WORKFLOW_FAILED` (the stream ends with an `error` event instead of `workflow_completed`). Disconnecting aborts the workflow.
87
+ Body: `{ input?: object; options?: { maxConcurrency?: number; maxIterations?: number } }`. `maxConcurrency`/`maxIterations` must be positive integers (400 otherwise). Other options are dropped, and `checkpoint: true` is refused, since the server keeps no checkpoint store to resume from. A failed workflow returns `500` with code `WORKFLOW_FAILED` (the stream ends with an `error` event instead of `workflow_completed`). Disconnecting aborts the workflow.
82
88
 
83
89
  The stream sends `{ type: 'workflow', event, data }` events: `node_started`, `node_completed`, `node_error`, `node_progress` and finally `workflow_completed`.
84
90
 
@@ -91,7 +97,7 @@ POST /api/swarms/:name/stream - Stream swarm events
91
97
  GET /api/swarms/:name/blackboard - Get configured blackboard sections
92
98
  ```
93
99
 
94
- Run/stream body: `{ input: string; context?: object; threadId?: string; timeout?: number }` (`timeout` must be positive). Disconnecting aborts the swarm. The stream sends `{ type: 'swarm', event, data }` events (`agent_start`, `agent_complete`, `agent_error`, `message`, the swarm's own events, and finally `swarm_completed` with the output and usage). Each run creates a fresh swarm, so the blackboard endpoint returns the configured initial sections.
100
+ Run/stream body: `{ input: string; context?: object; threadId?: string; timeout?: number }` (`timeout` must be positive, at most `2147483647` ms). Disconnecting aborts the swarm. The stream sends `{ type: 'swarm', event, data }` events (`agent_start`, `agent_complete`, `agent_error`, `message`, the swarm's own events, and finally `swarm_completed` with the output and usage). Each run creates a fresh swarm, so the blackboard endpoint returns the configured initial sections.
95
101
 
96
102
  ### Tools & Docs
97
103
 
@@ -378,6 +384,8 @@ interface CogitatorServerConfig {
378
384
  swagger?: SwaggerConfig;
379
385
  websocket?: WebSocketConfig;
380
386
  sseHeartbeatMs?: number; // Default: 5000, 0 turns SSE heartbeats off
387
+ acceptContext?: boolean | string[]; // context keys clients may send: none by default, a list, or true for any
388
+ threadMessageRoles?: ('user' | 'assistant' | 'system')[]; // roles of POST /threads/:id/messages, default user and assistant
381
389
  };
382
390
  }
383
391
  ```
@@ -2,4 +2,5 @@ export { createAuthMiddleware } from './auth.js';
2
2
  export { createRateLimitMiddleware } from './rate-limit.js';
3
3
  export { createCorsMiddleware } from './cors.js';
4
4
  export { errorHandler, notFoundHandler } from './error-handler.js';
5
+ export { createJsonBodyGuard } from './json-body.js';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -2,4 +2,5 @@ export { createAuthMiddleware } from './auth.js';
2
2
  export { createRateLimitMiddleware } from './rate-limit.js';
3
3
  export { createCorsMiddleware } from './cors.js';
4
4
  export { errorHandler, notFoundHandler } from './error-handler.js';
5
+ export { createJsonBodyGuard } from './json-body.js';
5
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { RequestHandler } from 'express';
2
+ /**
3
+ * Refuses a request whose body is not JSON with `415 UNSUPPORTED_MEDIA_TYPE` before any
4
+ * route reads it. Browsers send `text/plain` and form bodies across origins without a
5
+ * preflight, so the API only takes the JSON a cross-origin page cannot send unasked.
6
+ */
7
+ export declare function createJsonBodyGuard(): RequestHandler;
8
+ //# sourceMappingURL=json-body.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-body.d.ts","sourceRoot":"","sources":["../../src/middleware/json-body.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAG9C;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,cAAc,CASpD"}
@@ -0,0 +1,17 @@
1
+ import { refuseNonJsonBody } from '@cogitator-ai/server-shared';
2
+ /**
3
+ * Refuses a request whose body is not JSON with `415 UNSUPPORTED_MEDIA_TYPE` before any
4
+ * route reads it. Browsers send `text/plain` and form bodies across origins without a
5
+ * preflight, so the API only takes the JSON a cross-origin page cannot send unasked.
6
+ */
7
+ export function createJsonBodyGuard() {
8
+ return (req, res, next) => {
9
+ const refusal = refuseNonJsonBody(req.method, req.headers);
10
+ if (!refusal) {
11
+ next();
12
+ return;
13
+ }
14
+ res.status(refusal.status).json({ error: { message: refusal.message, code: refusal.code } });
15
+ };
16
+ }
17
+ //# sourceMappingURL=json-body.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-body.js","sourceRoot":"","sources":["../../src/middleware/json-body.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE;;;;GAIG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACxB,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,EAAE,CAAC;YACP,OAAO;QACT,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC/F,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/routes/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,KAAK,EAAE,YAAY,EAAuC,MAAM,aAAa,CAAC;AAYrF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CA8M3D"}
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/routes/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,KAAK,EAAE,YAAY,EAAuC,MAAM,aAAa,CAAC;AAUrF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAmJ3D"}
@@ -1,9 +1,10 @@
1
1
  import { Router } from 'express';
2
- import { parseRunRequest } from '@cogitator-ai/server-shared';
3
- import { ExpressStreamWriter, setupSSEHeaders, generateId } from '../streaming/index.js';
4
- import { handleRouteError, onClientDisconnect, parseResumeBody, resolveError, sendError, toAgentRunResponse, } from './utils.js';
2
+ import { AgentStreamSession, parseResumeRequest, parseRunRequest, toAgentRunResponse, } from '@cogitator-ai/server-shared';
3
+ import { ExpressStreamWriter, setupSSEHeaders } from '../streaming/index.js';
4
+ import { handleRouteError, onClientDisconnect, resolveError, sendError } from './utils.js';
5
5
  export function createAgentRoutes(ctx) {
6
6
  const router = Router();
7
+ const runRequestOptions = { acceptContext: ctx.config.acceptContext };
7
8
  const findAgent = (name) => Object.hasOwn(ctx.agents, name) ? ctx.agents[name] : undefined;
8
9
  router.get('/agents', (_req, res) => {
9
10
  const agentList = Object.entries(ctx.agents).map(([name, agent]) => ({
@@ -21,7 +22,7 @@ export function createAgentRoutes(ctx) {
21
22
  sendError(res, 404, `Agent '${name}' not found`, 'NOT_FOUND');
22
23
  return;
23
24
  }
24
- const parsed = parseRunRequest(req.body);
25
+ const parsed = parseRunRequest(req.body, runRequestOptions);
25
26
  if (!parsed.ok) {
26
27
  sendError(res, 400, parsed.message, 'INVALID_INPUT');
27
28
  return;
@@ -52,7 +53,7 @@ export function createAgentRoutes(ctx) {
52
53
  sendError(res, 404, `Agent '${name}' not found`, 'NOT_FOUND');
53
54
  return;
54
55
  }
55
- const parsed = parseResumeBody(req.body);
56
+ const parsed = parseResumeRequest(req.body);
56
57
  if (!parsed.ok) {
57
58
  sendError(res, 400, parsed.message, 'INVALID_INPUT');
58
59
  return;
@@ -82,7 +83,7 @@ export function createAgentRoutes(ctx) {
82
83
  sendError(res, 404, `Agent '${name}' not found`, 'NOT_FOUND');
83
84
  return;
84
85
  }
85
- const parsed = parseRunRequest(req.body);
86
+ const parsed = parseRunRequest(req.body, runRequestOptions);
86
87
  if (!parsed.ok) {
87
88
  sendError(res, 400, parsed.message, 'INVALID_INPUT');
88
89
  return;
@@ -90,89 +91,31 @@ export function createAgentRoutes(ctx) {
90
91
  const body = parsed.value;
91
92
  setupSSEHeaders(res);
92
93
  const writer = new ExpressStreamWriter(res, { heartbeatMs: ctx.config.sseHeartbeatMs });
93
- const messageId = generateId('msg');
94
+ const session = new AgentStreamSession((event) => writer.send(event), {
95
+ threadId: body.threadId,
96
+ });
94
97
  const abortController = new AbortController();
95
98
  onClientDisconnect(res, () => {
96
99
  abortController.abort();
97
100
  writer.close();
98
101
  });
99
- let textId = null;
100
- let reasoningId = null;
101
- let streamedText = false;
102
- const endText = () => {
103
- if (textId === null)
104
- return;
105
- writer.textEnd(textId);
106
- textId = null;
107
- };
108
- const endReasoning = () => {
109
- if (reasoningId === null)
110
- return;
111
- writer.reasoningEnd(reasoningId);
112
- reasoningId = null;
113
- };
114
- const endParts = () => {
115
- endReasoning();
116
- endText();
117
- };
118
- const writeText = (delta) => {
119
- if (!delta)
120
- return;
121
- if (textId === null) {
122
- endReasoning();
123
- textId = generateId('txt');
124
- writer.textStart(textId);
125
- }
126
- writer.textDelta(textId, delta);
127
- };
128
- const writeReasoning = (delta) => {
129
- if (!delta)
130
- return;
131
- if (reasoningId === null) {
132
- endText();
133
- reasoningId = generateId('rsn');
134
- writer.reasoningStart(reasoningId);
135
- }
136
- writer.reasoningDelta(reasoningId, delta);
137
- };
138
102
  try {
139
- writer.start(messageId);
103
+ session.start();
140
104
  const result = await ctx.cogitator.run(agent, {
141
105
  input: body.input,
142
106
  context: body.context,
143
- threadId: body.threadId,
107
+ threadId: session.threadId,
144
108
  userId: req.cogitator?.auth?.userId,
145
109
  signal: abortController.signal,
146
110
  stream: true,
147
- onToken: (token) => {
148
- if (token)
149
- streamedText = true;
150
- writeText(token);
151
- },
152
- onReasoning: writeReasoning,
153
- onToolCall: (toolCall) => {
154
- endParts();
155
- writer.toolCallStart(toolCall.id, toolCall.name);
156
- writer.toolCallDelta(toolCall.id, JSON.stringify(toolCall.arguments));
157
- writer.toolCallEnd(toolCall.id);
158
- },
159
- onToolResult: (toolResult) => {
160
- writer.toolResult(generateId('res'), toolResult.callId, toolResult.result);
161
- },
111
+ ...session.callbacks,
162
112
  });
163
- if (!streamedText)
164
- writeText(result.output);
165
- endParts();
166
- if (result.status === 'paused' && result.pendingApprovals) {
167
- writer.approvalRequired(result.threadId, result.pendingApprovals);
168
- }
169
- writer.finish(messageId, result.usage);
113
+ session.complete(result);
170
114
  }
171
115
  catch (error) {
172
116
  if (!abortController.signal.aborted) {
173
117
  const resolved = resolveError(error, 'Agent stream error');
174
- endParts();
175
- writer.error(resolved.message, resolved.code);
118
+ session.fail(resolved.message, resolved.code);
176
119
  }
177
120
  }
178
121
  finally {
@@ -1 +1 @@
1
- {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/routes/agents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/routes/agents.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"swarms.d.ts","sourceRoot":"","sources":["../../src/routes/swarms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,KAAK,EACV,YAAY,EAKb,MAAM,aAAa,CAAC;AAcrB,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CA0N3D"}
1
+ {"version":3,"file":"swarms.d.ts","sourceRoot":"","sources":["../../src/routes/swarms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,KAAK,EACV,YAAY,EAKb,MAAM,aAAa,CAAC;AAcrB,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CA2N3D"}
@@ -1,22 +1,15 @@
1
1
  import { Router } from 'express';
2
- import { parseSwarmRunRequest } from '@cogitator-ai/server-shared';
2
+ import { parseSwarmRunRequest, swarmAgentNames, withSwarm } from '@cogitator-ai/server-shared';
3
3
  import { ExpressStreamWriter, setupSSEHeaders, generateId } from '../streaming/index.js';
4
4
  import { handleRouteError, isModuleNotFound, onClientDisconnect, resolveError, sendError, } from './utils.js';
5
5
  const SWARMS_MISSING = 'Swarms package not installed';
6
6
  export function createSwarmRoutes(ctx) {
7
7
  const router = Router();
8
+ const runRequestOptions = { acceptContext: ctx.config.acceptContext };
8
9
  const findSwarm = (name) => Object.hasOwn(ctx.swarms, name) ? ctx.swarms[name] : undefined;
9
10
  router.get('/swarms', (_req, res) => {
10
11
  const swarmList = Object.entries(ctx.swarms).map(([name, config]) => {
11
- const agents = [];
12
- if (config.supervisor)
13
- agents.push(config.supervisor.name);
14
- if (config.workers)
15
- agents.push(...config.workers.map((w) => w.name));
16
- if (config.agents)
17
- agents.push(...config.agents.map((a) => a.name));
18
- if (config.moderator)
19
- agents.push(config.moderator.name);
12
+ const agents = swarmAgentNames(config);
20
13
  return {
21
14
  name,
22
15
  strategy: config.strategy,
@@ -33,7 +26,7 @@ export function createSwarmRoutes(ctx) {
33
26
  sendError(res, 404, `Swarm '${name}' not found`, 'NOT_FOUND');
34
27
  return;
35
28
  }
36
- const parsed = parseSwarmRunRequest(req.body);
29
+ const parsed = parseSwarmRunRequest(req.body, runRequestOptions);
37
30
  if (!parsed.ok) {
38
31
  sendError(res, 400, parsed.message, 'INVALID_INPUT');
39
32
  return;
@@ -47,39 +40,40 @@ export function createSwarmRoutes(ctx) {
47
40
  });
48
41
  try {
49
42
  const { Swarm } = await import('@cogitator-ai/swarms');
50
- const swarm = new Swarm(ctx.cogitator, swarmConfig);
51
- abortSwarm = () => swarm.abort();
52
- if (disconnected)
53
- swarm.abort();
54
- const result = await swarm.run({
55
- input: body.input,
56
- context: body.context,
57
- threadId: body.threadId,
58
- userId: req.cogitator?.auth?.userId,
59
- timeout: body.timeout,
43
+ const response = await withSwarm(new Swarm(ctx.cogitator, swarmConfig), async (swarm) => {
44
+ abortSwarm = () => swarm.abort();
45
+ if (disconnected)
46
+ swarm.abort();
47
+ const result = await swarm.run({
48
+ input: body.input,
49
+ context: body.context,
50
+ threadId: body.threadId,
51
+ userId: req.cogitator?.auth?.userId,
52
+ timeout: body.timeout,
53
+ });
54
+ const agentResults = {};
55
+ for (const [agentName, agentResult] of result.agentResults.entries()) {
56
+ agentResults[agentName] = {
57
+ output: agentResult.output,
58
+ usage: agentResult.usage,
59
+ };
60
+ }
61
+ const resourceUsage = swarm.getResourceUsage();
62
+ return {
63
+ swarmId: swarm.id,
64
+ swarmName: swarm.name,
65
+ strategy: swarm.strategyType,
66
+ output: result.output,
67
+ agentResults,
68
+ usage: {
69
+ totalTokens: resourceUsage.totalTokens,
70
+ totalCost: resourceUsage.totalCost,
71
+ elapsedTime: resourceUsage.elapsedTime,
72
+ },
73
+ };
60
74
  });
61
75
  if (disconnected)
62
76
  return;
63
- const agentResults = {};
64
- for (const [agentName, agentResult] of result.agentResults.entries()) {
65
- agentResults[agentName] = {
66
- output: agentResult.output,
67
- usage: agentResult.usage,
68
- };
69
- }
70
- const resourceUsage = swarm.getResourceUsage();
71
- const response = {
72
- swarmId: swarm.id,
73
- swarmName: swarm.name,
74
- strategy: swarm.strategyType,
75
- output: result.output,
76
- agentResults,
77
- usage: {
78
- totalTokens: resourceUsage.totalTokens,
79
- totalCost: resourceUsage.totalCost,
80
- elapsedTime: resourceUsage.elapsedTime,
81
- },
82
- };
83
77
  res.json(response);
84
78
  }
85
79
  catch (error) {
@@ -99,7 +93,7 @@ export function createSwarmRoutes(ctx) {
99
93
  sendError(res, 404, `Swarm '${name}' not found`, 'NOT_FOUND');
100
94
  return;
101
95
  }
102
- const parsed = parseSwarmRunRequest(req.body);
96
+ const parsed = parseSwarmRunRequest(req.body, runRequestOptions);
103
97
  if (!parsed.ok) {
104
98
  sendError(res, 400, parsed.message, 'INVALID_INPUT');
105
99
  return;
@@ -117,51 +111,52 @@ export function createSwarmRoutes(ctx) {
117
111
  });
118
112
  try {
119
113
  const { Swarm } = await import('@cogitator-ai/swarms');
120
- const swarm = new Swarm(ctx.cogitator, swarmConfig);
121
- abortSwarm = () => swarm.abort();
122
- if (disconnected)
123
- swarm.abort();
124
- writer.start(messageId);
125
- const result = await swarm.run({
126
- input: body.input,
127
- context: body.context,
128
- threadId: body.threadId,
129
- userId: req.cogitator?.auth?.userId,
130
- timeout: body.timeout,
131
- onAgentStart: (agentName) => {
132
- writer.swarmEvent('agent_start', { agentName, timestamp: Date.now() });
133
- },
134
- onAgentComplete: (agentName, agentResult) => {
135
- writer.swarmEvent('agent_complete', {
136
- agentName,
137
- output: agentResult.output,
138
- timestamp: Date.now(),
139
- });
140
- },
141
- onAgentError: (agentName, error) => {
142
- writer.swarmEvent('agent_error', {
143
- agentName,
144
- error: resolveError(error, `Swarm agent ${agentName}`).message,
145
- });
146
- },
147
- onMessage: (message) => {
148
- writer.swarmEvent('message', message);
149
- },
150
- onEvent: (event) => {
151
- writer.swarmEvent(event.type, event.data);
152
- },
153
- });
154
- const resourceUsage = swarm.getResourceUsage();
155
- writer.swarmEvent('swarm_completed', {
156
- swarmId: swarm.id,
157
- output: result.output,
158
- usage: {
159
- totalTokens: resourceUsage.totalTokens,
160
- totalCost: resourceUsage.totalCost,
161
- elapsedTime: resourceUsage.elapsedTime,
162
- },
114
+ await withSwarm(new Swarm(ctx.cogitator, swarmConfig), async (swarm) => {
115
+ abortSwarm = () => swarm.abort();
116
+ if (disconnected)
117
+ swarm.abort();
118
+ writer.start(messageId);
119
+ const result = await swarm.run({
120
+ input: body.input,
121
+ context: body.context,
122
+ threadId: body.threadId,
123
+ userId: req.cogitator?.auth?.userId,
124
+ timeout: body.timeout,
125
+ onAgentStart: (agentName) => {
126
+ writer.swarmEvent('agent_start', { agentName, timestamp: Date.now() });
127
+ },
128
+ onAgentComplete: (agentName, agentResult) => {
129
+ writer.swarmEvent('agent_complete', {
130
+ agentName,
131
+ output: agentResult.output,
132
+ timestamp: Date.now(),
133
+ });
134
+ },
135
+ onAgentError: (agentName, error) => {
136
+ writer.swarmEvent('agent_error', {
137
+ agentName,
138
+ error: resolveError(error, `Swarm agent ${agentName}`).message,
139
+ });
140
+ },
141
+ onMessage: (message) => {
142
+ writer.swarmEvent('message', message);
143
+ },
144
+ onEvent: (event) => {
145
+ writer.swarmEvent(event.type, event.data);
146
+ },
147
+ });
148
+ const resourceUsage = swarm.getResourceUsage();
149
+ writer.swarmEvent('swarm_completed', {
150
+ swarmId: swarm.id,
151
+ output: result.output,
152
+ usage: {
153
+ totalTokens: resourceUsage.totalTokens,
154
+ totalCost: resourceUsage.totalCost,
155
+ elapsedTime: resourceUsage.elapsedTime,
156
+ },
157
+ });
158
+ writer.finish(messageId);
163
159
  });
164
- writer.finish(messageId);
165
160
  }
166
161
  catch (error) {
167
162
  if (isModuleNotFound(error)) {
@@ -1 +1 @@
1
- {"version":3,"file":"swarms.js","sourceRoot":"","sources":["../../src/routes/swarms.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"swarms.js","sourceRoot":"","sources":["../../src/routes/swarms.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"threads.d.ts","sourceRoot":"","sources":["../../src/routes/threads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGjC,OAAO,KAAK,EACV,YAAY,EAIb,MAAM,aAAa,CAAC;AAcrB,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAgH5D"}
1
+ {"version":3,"file":"threads.d.ts","sourceRoot":"","sources":["../../src/routes/threads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAIjC,OAAO,KAAK,EAAE,YAAY,EAAoC,MAAM,aAAa,CAAC;AAGlF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CA2G5D"}
@@ -1,19 +1,7 @@
1
1
  import { Router } from 'express';
2
2
  import { assertThreadAccess, ensureThreadAccess } from '@cogitator-ai/core';
3
- import { handleRouteError, isPlainObject, sendError } from './utils.js';
4
- const MESSAGE_ROLES = new Set(['user', 'assistant', 'system']);
5
- function parseMessageBody(body) {
6
- if (!isPlainObject(body))
7
- return null;
8
- const { role, content, metadata } = body;
9
- if (typeof role !== 'string' || !MESSAGE_ROLES.has(role))
10
- return null;
11
- if (typeof content !== 'string' || content === '')
12
- return null;
13
- if (metadata !== undefined && !isPlainObject(metadata))
14
- return null;
15
- return { role: role, content, metadata };
16
- }
3
+ import { parseAddMessageRequest } from '@cogitator-ai/server-shared';
4
+ import { handleRouteError, sendError } from './utils.js';
17
5
  export function createThreadRoutes(ctx) {
18
6
  const router = Router();
19
7
  const getMemory = () => ctx.cogitator.getMemory();
@@ -55,11 +43,12 @@ export function createThreadRoutes(ctx) {
55
43
  return;
56
44
  }
57
45
  const { id } = req.params;
58
- const body = parseMessageBody(req.body);
59
- if (!body) {
60
- sendError(res, 400, 'Invalid message: role must be user, assistant or system and content a non-empty string', 'INVALID_INPUT');
46
+ const parsed = parseAddMessageRequest(req.body, { roles: ctx.config.threadMessageRoles });
47
+ if (!parsed.ok) {
48
+ sendError(res, 400, parsed.message, 'INVALID_INPUT');
61
49
  return;
62
50
  }
51
+ const body = parsed.value;
63
52
  const userId = req.cogitator?.auth?.userId;
64
53
  try {
65
54
  await ensureThreadAccess(memory, id, { agentId: '', userId });
@@ -1 +1 @@
1
- {"version":3,"file":"threads.js","sourceRoot":"","sources":["../../src/routes/threads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAO5E,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAExE,MAAM,aAAa,GAAwB,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEpF,SAAS,gBAAgB,CAAC,IAAa;IACrC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IACzC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACtE,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC/D,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACpE,OAAO,EAAE,IAAI,EAAE,IAAiC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAiB;IAClD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;IAExB,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;IAElD,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,EAAE,GAAqC,EAAE,GAAa,EAAE,EAAE;QACxF,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,uBAAuB,EAAE,aAAa,CAAC,CAAC;YAC5D,OAAO;QACT,CAAC;QAED,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC;QAE3C,IAAI,CAAC;YACH,MAAM,kBAAkB,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;YAC7C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;YACzD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,gBAAgB,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,kBAAkB,CAAC,CAAC;gBACnE,OAAO;YACT,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;YAC5B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACvD,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACnF,MAAM,SAAS,GACb,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACpF,MAAM,QAAQ,GAAmB;gBAC/B,EAAE;gBACF,QAAQ;gBACR,SAAS;gBACT,SAAS;aACV,CAAC;YACF,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,KAAK,EAAE,GAAqC,EAAE,GAAa,EAAE,EAAE;QAC7D,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,uBAAuB,EAAE,aAAa,CAAC,CAAC;YAC5D,OAAO;QACT,CAAC;QAED,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAExC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,SAAS,CACP,GAAG,EACH,GAAG,EACH,wFAAwF,EACxF,eAAe,CAChB,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC;QAE3C,IAAI,CAAC;YACH,MAAM,kBAAkB,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;gBACnC,QAAQ,EAAE,EAAE;gBACZ,OAAO,EAAE;oBACP,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,OAAO,EAAE,IAAI,CAAC,OAAO;iBACtB;gBACD,UAAU,EAAE,CAAC;gBACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,gBAAgB,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,0BAA0B,CAAC,CAAC;gBAC3E,OAAO;YACT,CAAC;YAED,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,0BAA0B,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,KAAK,EAAE,GAAqC,EAAE,GAAa,EAAE,EAAE;QAC3F,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,uBAAuB,EAAE,aAAa,CAAC,CAAC;YAC5D,OAAO;QACT,CAAC;QAED,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC;QAE3C,IAAI,CAAC;YACH,MAAM,kBAAkB,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;YAC7C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,gBAAgB,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,qBAAqB,CAAC,CAAC;gBACtE,OAAO;YACT,CAAC;YACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACxB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,qBAAqB,CAAC,CAAC;QACtD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"threads.js","sourceRoot":"","sources":["../../src/routes/threads.ts"],"names":[],"mappings":"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"}