@cogitator-ai/koa 0.1.0 → 0.1.3

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 (48) hide show
  1. package/README.md +152 -39
  2. package/dist/app.d.ts.map +1 -1
  3. package/dist/app.js +5 -1
  4. package/dist/app.js.map +1 -1
  5. package/dist/index.d.ts +3 -2
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +2 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/middleware/auth.d.ts.map +1 -1
  10. package/dist/middleware/auth.js +6 -2
  11. package/dist/middleware/auth.js.map +1 -1
  12. package/dist/middleware/body-parser.d.ts.map +1 -1
  13. package/dist/middleware/body-parser.js +26 -4
  14. package/dist/middleware/body-parser.js.map +1 -1
  15. package/dist/middleware/context.js +4 -4
  16. package/dist/middleware/context.js.map +1 -1
  17. package/dist/middleware/error-handler.d.ts.map +1 -1
  18. package/dist/middleware/error-handler.js +8 -0
  19. package/dist/middleware/error-handler.js.map +1 -1
  20. package/dist/routes/agents.d.ts.map +1 -1
  21. package/dist/routes/agents.js +11 -5
  22. package/dist/routes/agents.js.map +1 -1
  23. package/dist/routes/swarms.d.ts.map +1 -1
  24. package/dist/routes/swarms.js +7 -5
  25. package/dist/routes/swarms.js.map +1 -1
  26. package/dist/routes/threads.d.ts.map +1 -1
  27. package/dist/routes/threads.js +12 -7
  28. package/dist/routes/threads.js.map +1 -1
  29. package/dist/routes/workflows.js +4 -4
  30. package/dist/routes/workflows.js.map +1 -1
  31. package/dist/streaming/index.d.ts +0 -1
  32. package/dist/streaming/index.d.ts.map +1 -1
  33. package/dist/streaming/index.js +0 -1
  34. package/dist/streaming/index.js.map +1 -1
  35. package/dist/streaming/koa-stream-writer.d.ts.map +1 -1
  36. package/dist/streaming/koa-stream-writer.js +2 -0
  37. package/dist/streaming/koa-stream-writer.js.map +1 -1
  38. package/dist/swagger/index.d.ts +5 -0
  39. package/dist/swagger/index.d.ts.map +1 -0
  40. package/dist/swagger/index.js +29 -0
  41. package/dist/swagger/index.js.map +1 -0
  42. package/dist/types.d.ts +15 -7
  43. package/dist/types.d.ts.map +1 -1
  44. package/dist/websocket/handler.d.ts.map +1 -1
  45. package/dist/websocket/handler.js +59 -28
  46. package/dist/websocket/handler.js.map +1 -1
  47. package/package.json +22 -18
  48. package/LICENSE +0 -21
package/README.md CHANGED
@@ -1,24 +1,25 @@
1
1
  # @cogitator-ai/koa
2
2
 
3
- Koa server adapter for [Cogitator AI](https://github.com/cogitator-ai/Cogitator-AI) runtime. Exposes agents, workflows, swarms, and threads as a REST API with SSE streaming.
3
+ Koa server adapter for Cogitator AI runtime. Exposes agents, workflows, swarms, and threads as a REST API with SSE streaming and WebSocket support.
4
4
 
5
5
  ## Installation
6
6
 
7
7
  ```bash
8
- npm install @cogitator-ai/koa koa @koa/router
8
+ pnpm add @cogitator-ai/koa @cogitator-ai/core koa @koa/router
9
9
  ```
10
10
 
11
11
  ## Quick Start
12
12
 
13
13
  ```typescript
14
14
  import Koa from 'koa';
15
- import { cogitatorApp } from '@cogitator-ai/koa';
16
15
  import { Cogitator, Agent } from '@cogitator-ai/core';
16
+ import { cogitatorApp } from '@cogitator-ai/koa';
17
17
 
18
- const cogitator = new Cogitator({ backend: 'openai' });
19
- const chatAgent = new Agent({ name: 'chat', instructions: 'You are helpful.' });
18
+ const cogitator = new Cogitator({ /* ... */ });
19
+ const chatAgent = new Agent({ name: 'chat', instructions: 'You are a helpful assistant.' });
20
20
 
21
21
  const app = new Koa();
22
+
22
23
  const router = cogitatorApp({
23
24
  cogitator,
24
25
  agents: { chat: chatAgent },
@@ -30,26 +31,68 @@ app.use(router.allowedMethods());
30
31
  app.listen(3000);
31
32
  ```
32
33
 
33
- ## API Endpoints
34
-
35
- | Method | Path | Description |
36
- | -------- | -------------------------- | ---------------------------- |
37
- | `GET` | `/health` | Health check |
38
- | `GET` | `/ready` | Readiness check |
39
- | `GET` | `/agents` | List all agents |
40
- | `POST` | `/agents/:name/run` | Run an agent |
41
- | `POST` | `/agents/:name/stream` | Stream agent response (SSE) |
42
- | `GET` | `/threads/:id` | Get thread messages |
43
- | `POST` | `/threads/:id/messages` | Add message to thread |
44
- | `DELETE` | `/threads/:id` | Delete thread |
45
- | `GET` | `/tools` | List all tools |
46
- | `GET` | `/workflows` | List workflows |
47
- | `POST` | `/workflows/:name/run` | Execute workflow |
48
- | `POST` | `/workflows/:name/stream` | Stream workflow events (SSE) |
49
- | `GET` | `/swarms` | List swarms |
50
- | `POST` | `/swarms/:name/run` | Run swarm |
51
- | `POST` | `/swarms/:name/stream` | Stream swarm events (SSE) |
52
- | `GET` | `/swarms/:name/blackboard` | Get swarm blackboard |
34
+ ## API
35
+
36
+ ### `cogitatorApp(options)`
37
+
38
+ Creates a Koa Router with all Cogitator endpoints.
39
+
40
+ **Options:**
41
+
42
+ | Option | Type | Description |
43
+ | ----------------- | ----------------------------- | -------------------------------------------- |
44
+ | `cogitator` | `Cogitator` | **Required.** Cogitator runtime instance |
45
+ | `agents` | `Record<string, Agent>` | Named agents to expose |
46
+ | `workflows` | `Record<string, Workflow>` | Named workflows |
47
+ | `swarms` | `Record<string, SwarmConfig>` | Named swarms |
48
+ | `auth` | `(ctx: Context) => AuthContext` | Authentication function (receives Koa Context) |
49
+ | `enableSwagger` | `boolean` | Enable Swagger/OpenAPI docs |
50
+ | `swagger` | `SwaggerConfig` | Swagger configuration |
51
+ | `enableWebSocket` | `boolean` | Enable WebSocket support |
52
+ | `websocket` | `WebSocketConfig` | WebSocket configuration |
53
+
54
+ ## Endpoints
55
+
56
+ ### Agents
57
+
58
+ | Method | Path | Description |
59
+ | ------ | ---------------------- | ------------------------- |
60
+ | `GET` | `/agents` | List all agents |
61
+ | `POST` | `/agents/:name/run` | Run agent (JSON response) |
62
+ | `POST` | `/agents/:name/stream` | Run agent (SSE stream) |
63
+
64
+ ### Threads (Memory)
65
+
66
+ | Method | Path | Description |
67
+ | -------- | ----------------------- | --------------------- |
68
+ | `GET` | `/threads/:id` | Get thread messages |
69
+ | `POST` | `/threads/:id/messages` | Add message to thread |
70
+ | `DELETE` | `/threads/:id` | Delete thread |
71
+
72
+ ### Workflows
73
+
74
+ | Method | Path | Description |
75
+ | ------ | ------------------------- | ---------------------- |
76
+ | `GET` | `/workflows` | List workflows |
77
+ | `POST` | `/workflows/:name/run` | Execute workflow |
78
+ | `POST` | `/workflows/:name/stream` | Stream workflow events |
79
+
80
+ ### Swarms
81
+
82
+ | Method | Path | Description |
83
+ | ------ | -------------------------- | --------------------- |
84
+ | `GET` | `/swarms` | List swarms |
85
+ | `POST` | `/swarms/:name/run` | Run swarm |
86
+ | `POST` | `/swarms/:name/stream` | Stream swarm progress |
87
+ | `GET` | `/swarms/:name/blackboard` | Get shared state |
88
+
89
+ ### Tools & Health
90
+
91
+ | Method | Path | Description |
92
+ | ------ | --------- | --------------- |
93
+ | `GET` | `/tools` | List all tools |
94
+ | `GET` | `/health` | Health check |
95
+ | `GET` | `/ready` | Readiness check |
53
96
 
54
97
  ## Authentication
55
98
 
@@ -60,13 +103,12 @@ const router = cogitatorApp({
60
103
  auth: async (ctx) => {
61
104
  const token = ctx.get('authorization')?.replace('Bearer ', '');
62
105
  if (!token) throw new Error('No token');
63
- const user = await validateToken(token);
64
- return { userId: user.id, roles: user.roles };
106
+ return { userId: 'user-123', roles: ['admin'] };
65
107
  },
66
108
  });
67
109
  ```
68
110
 
69
- ## With Prefix
111
+ ## Route Prefix
70
112
 
71
113
  ```typescript
72
114
  import Koa from 'koa';
@@ -75,14 +117,16 @@ import { cogitatorApp } from '@cogitator-ai/koa';
75
117
 
76
118
  const app = new Koa();
77
119
  const main = new Router();
78
- const cogitator = cogitatorApp({ cogitator, agents });
120
+ const api = cogitatorApp({ cogitator, agents });
79
121
 
80
- main.use('/api/v1', cogitator.routes(), cogitator.allowedMethods());
122
+ main.use('/api/v1', api.routes(), api.allowedMethods());
81
123
  app.use(main.routes());
82
124
  ```
83
125
 
84
126
  ## WebSocket
85
127
 
128
+ Requires the optional `ws` peer dependency. Supports agent, workflow, and swarm runs over a persistent connection.
129
+
86
130
  ```typescript
87
131
  import { createServer } from 'http';
88
132
  import { cogitatorApp, setupWebSocket } from '@cogitator-ai/koa';
@@ -90,22 +134,91 @@ import { cogitatorApp, setupWebSocket } from '@cogitator-ai/koa';
90
134
  const app = new Koa();
91
135
  const router = cogitatorApp({ cogitator, agents, enableWebSocket: true });
92
136
  app.use(router.routes());
137
+ app.use(router.allowedMethods());
93
138
 
94
139
  const server = createServer(app.callback());
95
- await setupWebSocket(server, { cogitator, agents, workflows: {}, swarms: {} });
140
+ await setupWebSocket(server, { runtime: cogitator, agents, workflows: {}, swarms: {} }, {
141
+ path: '/ws',
142
+ pingInterval: 30000,
143
+ });
96
144
 
97
145
  server.listen(3000);
98
146
  ```
99
147
 
100
- ## Features
148
+ **Message types:**
101
149
 
102
- - Full REST API for agents, workflows, swarms, and threads
103
- - Server-Sent Events (SSE) streaming
104
- - Authentication middleware
105
- - Built-in JSON body parser
106
- - Error handling with Cogitator error codes
107
- - WebSocket support via `ws`
108
- - TypeScript-first with full type safety
150
+ | Client sends | Description |
151
+ | ------------ | ------------------------- |
152
+ | `run` | Start an agent/workflow/swarm run |
153
+ | `stop` | Cancel the current run |
154
+ | `ping` | Heartbeat ping |
155
+
156
+ | Server sends | Description |
157
+ | ------------ | ------------------------- |
158
+ | `event` | Stream event (token, tool-call, complete, etc.) |
159
+ | `error` | Error response |
160
+ | `pong` | Heartbeat pong |
161
+
162
+ ## SSE Streaming
163
+
164
+ The adapter includes `KoaStreamWriter` for Server-Sent Events with structured event types (text deltas, tool calls, workflow/swarm events).
165
+
166
+ ## Event Factories
167
+
168
+ Re-exported from `@cogitator-ai/server-shared` for custom stream handling:
169
+
170
+ ```typescript
171
+ import {
172
+ createStartEvent,
173
+ createTextDeltaEvent,
174
+ createToolCallStartEvent,
175
+ createFinishEvent,
176
+ createWorkflowEvent,
177
+ createSwarmEvent,
178
+ } from '@cogitator-ai/koa';
179
+ ```
180
+
181
+ ## Individual Route Builders
182
+
183
+ Each route group is available as a standalone factory for custom composition:
184
+
185
+ ```typescript
186
+ import {
187
+ createAgentRoutes,
188
+ createThreadRoutes,
189
+ createToolRoutes,
190
+ createWorkflowRoutes,
191
+ createSwarmRoutes,
192
+ createHealthRoutes,
193
+ createSwaggerRoutes,
194
+ } from '@cogitator-ai/koa';
195
+ ```
196
+
197
+ ## Middleware
198
+
199
+ Built-in middleware stack (applied automatically by `cogitatorApp`):
200
+
201
+ - **Error handler** — catches errors and returns structured `ErrorResponse`
202
+ - **Body parser** — parses JSON for POST, PUT, PATCH requests (1 MB limit)
203
+ - **Context** — injects `RouteContext` with `runtime`, `agents`, `workflows`, `swarms` into Koa state
204
+ - **Auth** — optional authentication via the `auth` callback
205
+
206
+ ## Key Types
207
+
208
+ ```typescript
209
+ import type {
210
+ RouteContext, // { runtime, agents, workflows, swarms }
211
+ CogitatorAppOptions,
212
+ AuthContext,
213
+ AuthFunction,
214
+ WebSocketConfig,
215
+ WorkflowStatusResponse,
216
+ AgentRunRequest,
217
+ AgentRunResponse,
218
+ SwarmRunResponse,
219
+ ErrorResponse,
220
+ } from '@cogitator-ai/koa';
221
+ ```
109
222
 
110
223
  ## License
111
224
 
package/dist/app.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAWtE,wBAAgB,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAAC,cAAc,CAAC,CA8B9E"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAiBtE,wBAAgB,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAAC,cAAc,CAAC,CAoC9E"}
package/dist/app.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import Router from '@koa/router';
2
- import { createContextMiddleware, createAuthMiddleware, createBodyParser, createErrorHandler } from './middleware/index.js';
2
+ import { createContextMiddleware, createAuthMiddleware, createBodyParser, createErrorHandler, } from './middleware/index.js';
3
3
  import { createHealthRoutes, createAgentRoutes, createThreadRoutes, createToolRoutes, createWorkflowRoutes, createSwarmRoutes, } from './routes/index.js';
4
+ import { createSwaggerRoutes } from './swagger/index.js';
4
5
  export function cogitatorApp(opts) {
5
6
  const router = new Router();
6
7
  router.use(createErrorHandler());
@@ -17,6 +18,9 @@ export function cogitatorApp(opts) {
17
18
  createWorkflowRoutes(),
18
19
  createSwarmRoutes(),
19
20
  ];
21
+ if (opts.enableSwagger) {
22
+ subrouters.push(createSwaggerRoutes(opts.swagger));
23
+ }
20
24
  for (const sub of subrouters) {
21
25
  router.use(sub.routes());
22
26
  router.use(sub.allowedMethods());
package/dist/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC5H,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,UAAU,YAAY,CAAC,IAAyB;IACpD,MAAM,MAAM,GAAG,IAAI,MAAM,EAAkB,CAAC;IAE5C,MAAM,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACjC,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC/B,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;IAE1C,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,UAAU,GAAG;QACjB,kBAAkB,EAAE;QACpB,iBAAiB,EAAE;QACnB,kBAAkB,EAAE;QACpB,gBAAgB,EAAE;QAClB,oBAAoB,EAAE;QACtB,iBAAiB,EAAE;KACpB,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,wFAAwF,CAAC,CAAC;IACxG,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,UAAU,YAAY,CAAC,IAAyB;IACpD,MAAM,MAAM,GAAG,IAAI,MAAM,EAAkB,CAAC;IAE5C,MAAM,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACjC,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC/B,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;IAE1C,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,UAAU,GAAG;QACjB,kBAAkB,EAAE;QACpB,iBAAiB,EAAE;QACnB,kBAAkB,EAAE;QACpB,gBAAgB,EAAE;QAClB,oBAAoB,EAAE;QACtB,iBAAiB,EAAE;KACpB,CAAC;IAEF,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CACT,wFAAwF,CACzF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,9 +1,10 @@
1
1
  export { cogitatorApp } from './app.js';
2
- export type { AuthContext, AuthFunction, CogitatorAppOptions, CogitatorState, RouteContext, WebSocketConfig, AgentListResponse, AgentRunRequest, AgentRunResponse, ThreadResponse, AddMessageRequest, ToolListResponse, WorkflowListResponse, WorkflowRunRequest, WorkflowRunResponse, SwarmListResponse, SwarmRunRequest, SwarmRunResponse, BlackboardResponse, HealthResponse, ErrorResponse, WebSocketMessage, WebSocketResponse, } from './types.js';
2
+ export type { AuthContext, AuthFunction, CogitatorAppOptions, CogitatorState, RouteContext, WebSocketConfig, AgentListResponse, AgentRunRequest, AgentRunResponse, ThreadResponse, AddMessageRequest, ToolListResponse, WorkflowListResponse, WorkflowRunRequest, WorkflowRunResponse, WorkflowStatusResponse, SwarmListResponse, SwarmRunRequest, SwarmRunResponse, BlackboardResponse, HealthResponse, ErrorResponse, SwaggerConfig, WebSocketMessage, WebSocketResponse, } from './types.js';
3
3
  export { createContextMiddleware, createAuthMiddleware, createBodyParser, createErrorHandler, } from './middleware/index.js';
4
4
  export { createHealthRoutes, createAgentRoutes, createThreadRoutes, createToolRoutes, createWorkflowRoutes, createSwarmRoutes, } from './routes/index.js';
5
+ export { createSwaggerRoutes } from './swagger/index.js';
5
6
  export { KoaStreamWriter, setupSSEHeaders } from './streaming/koa-stream-writer.js';
6
- export { generateId, encodeSSE, encodeDone } from '@cogitator-ai/server-shared';
7
+ export { generateId, encodeSSE, encodeDone, createStartEvent, createTextStartEvent, createTextDeltaEvent, createTextEndEvent, createToolCallStartEvent, createToolCallDeltaEvent, createToolCallEndEvent, createToolResultEvent, createErrorEvent, createFinishEvent, createWorkflowEvent, createSwarmEvent, } from '@cogitator-ai/server-shared';
7
8
  export type { StreamEvent, StartEvent, TextStartEvent, TextDeltaEvent, TextEndEvent, ToolCallStartEvent, ToolCallDeltaEvent, ToolCallEndEvent, ToolResultEvent, ErrorEvent, FinishEvent, Usage, } from '@cogitator-ai/server-shared';
8
9
  export { setupWebSocket } from './websocket/index.js';
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,YAAY,EACV,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEpF,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEhF,YAAY,EACV,WAAW,EACX,UAAU,EACV,cAAc,EACd,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,WAAW,EACX,KAAK,GACN,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,YAAY,EACV,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEpF,OAAO,EACL,UAAU,EACV,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AAErC,YAAY,EACV,WAAW,EACX,UAAU,EACV,cAAc,EACd,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,WAAW,EACX,KAAK,GACN,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,8 @@
1
1
  export { cogitatorApp } from './app.js';
2
2
  export { createContextMiddleware, createAuthMiddleware, createBodyParser, createErrorHandler, } from './middleware/index.js';
3
3
  export { createHealthRoutes, createAgentRoutes, createThreadRoutes, createToolRoutes, createWorkflowRoutes, createSwarmRoutes, } from './routes/index.js';
4
+ export { createSwaggerRoutes } from './swagger/index.js';
4
5
  export { KoaStreamWriter, setupSSEHeaders } from './streaming/koa-stream-writer.js';
5
- export { generateId, encodeSSE, encodeDone } from '@cogitator-ai/server-shared';
6
+ export { generateId, encodeSSE, encodeDone, createStartEvent, createTextStartEvent, createTextDeltaEvent, createTextEndEvent, createToolCallStartEvent, createToolCallDeltaEvent, createToolCallEndEvent, createToolResultEvent, createErrorEvent, createFinishEvent, createWorkflowEvent, createSwarmEvent, } from '@cogitator-ai/server-shared';
6
7
  export { setupWebSocket } from './websocket/index.js';
7
8
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AA4BxC,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEpF,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAiBhF,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AA8BxC,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEpF,OAAO,EACL,UAAU,EACV,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AAiBrC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/middleware/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,aAAa,CAAC;AAEhE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,IACzC,KAAK,OAAO,EAAE,MAAM,IAAI,mBAevC"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/middleware/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,aAAa,CAAC;AAEhE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,IACzC,KAAK,OAAO,EAAE,MAAM,IAAI,mBAmBvC"}
@@ -5,11 +5,15 @@ export function createAuthMiddleware(authFn) {
5
5
  ctx.state.auth = auth;
6
6
  await next();
7
7
  }
8
- catch {
8
+ catch (err) {
9
+ const status = err.status;
10
+ if (status && status >= 500) {
11
+ throw err;
12
+ }
9
13
  ctx.status = 401;
10
14
  ctx.body = {
11
15
  error: {
12
- message: 'Unauthorized',
16
+ message: err instanceof Error ? err.message : 'Unauthorized',
13
17
  code: 'UNAUTHORIZED',
14
18
  },
15
19
  };
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/middleware/auth.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,oBAAoB,CAAC,MAAoB;IACvD,OAAO,KAAK,EAAE,GAAY,EAAE,IAAU,EAAE,EAAE;QACxC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC;YAC9B,GAAG,CAAC,KAAwB,CAAC,IAAI,GAAG,IAAI,CAAC;YAC1C,MAAM,IAAI,EAAE,CAAC;QACf,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;YACjB,GAAG,CAAC,IAAI,GAAG;gBACT,KAAK,EAAE;oBACL,OAAO,EAAE,cAAc;oBACvB,IAAI,EAAE,cAAc;iBACrB;aACF,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/middleware/auth.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,oBAAoB,CAAC,MAAoB;IACvD,OAAO,KAAK,EAAE,GAAY,EAAE,IAAU,EAAE,EAAE;QACxC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC;YAC9B,GAAG,CAAC,KAAwB,CAAC,IAAI,GAAG,IAAI,CAAC;YAC1C,MAAM,IAAI,EAAE,CAAC;QACf,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,MAAM,GAAI,GAA2B,CAAC,MAAM,CAAC;YACnD,IAAI,MAAM,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;gBAC5B,MAAM,GAAG,CAAC;YACZ,CAAC;YACD,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;YACjB,GAAG,CAAC,IAAI,GAAG;gBACT,KAAK,EAAE;oBACL,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc;oBAC5D,IAAI,EAAE,cAAc;iBACrB;aACF,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"body-parser.d.ts","sourceRoot":"","sources":["../../src/middleware/body-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEzC,wBAAgB,gBAAgB,KAChB,KAAK,OAAO,EAAE,MAAM,IAAI,mBAYvC"}
1
+ {"version":3,"file":"body-parser.d.ts","sourceRoot":"","sources":["../../src/middleware/body-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAIzC,wBAAgB,gBAAgB,KAChB,KAAK,OAAO,EAAE,MAAM,IAAI,mBAevC"}
@@ -1,10 +1,17 @@
1
+ const MAX_BODY_SIZE = 1024 * 1024;
1
2
  export function createBodyParser() {
2
3
  return async (ctx, next) => {
3
- if (ctx.method === 'POST' &&
4
- ctx.is('application/json')) {
4
+ if (['POST', 'PUT', 'PATCH'].includes(ctx.method) && ctx.is('application/json')) {
5
5
  const body = await readBody(ctx);
6
6
  if (body) {
7
- ctx.request.body = JSON.parse(body);
7
+ try {
8
+ ctx.request.body = JSON.parse(body);
9
+ }
10
+ catch {
11
+ ctx.status = 400;
12
+ ctx.body = { error: { message: 'Invalid JSON body', code: 'INVALID_INPUT' } };
13
+ return;
14
+ }
8
15
  }
9
16
  }
10
17
  await next();
@@ -13,9 +20,24 @@ export function createBodyParser() {
13
20
  function readBody(ctx) {
14
21
  return new Promise((resolve, reject) => {
15
22
  const chunks = [];
16
- ctx.req.on('data', (chunk) => chunks.push(chunk));
23
+ let size = 0;
24
+ ctx.req.on('data', (chunk) => {
25
+ size += chunk.length;
26
+ if (size > MAX_BODY_SIZE) {
27
+ ctx.req.destroy();
28
+ reject(new PayloadTooLargeError());
29
+ return;
30
+ }
31
+ chunks.push(chunk);
32
+ });
17
33
  ctx.req.on('end', () => resolve(Buffer.concat(chunks).toString()));
18
34
  ctx.req.on('error', reject);
19
35
  });
20
36
  }
37
+ class PayloadTooLargeError extends Error {
38
+ status = 413;
39
+ constructor() {
40
+ super('Payload too large');
41
+ }
42
+ }
21
43
  //# sourceMappingURL=body-parser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"body-parser.js","sourceRoot":"","sources":["../../src/middleware/body-parser.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,gBAAgB;IAC9B,OAAO,KAAK,EAAE,GAAY,EAAE,IAAU,EAAE,EAAE;QACxC,IACE,GAAG,CAAC,MAAM,KAAK,MAAM;YACrB,GAAG,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAC1B,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,IAAI,EAAE,CAAC;gBACR,GAAG,CAAC,OAAwC,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;QACD,MAAM,IAAI,EAAE,CAAC;IACf,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,GAAY;IAC5B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1D,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACnE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"body-parser.js","sourceRoot":"","sources":["../../src/middleware/body-parser.ts"],"names":[],"mappings":"AAEA,MAAM,aAAa,GAAG,IAAI,GAAG,IAAI,CAAC;AAElC,MAAM,UAAU,gBAAgB;IAC9B,OAAO,KAAK,EAAE,GAAY,EAAE,IAAU,EAAE,EAAE;QACxC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAChF,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC;oBACF,GAAG,CAAC,OAAwC,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACxE,CAAC;gBAAC,MAAM,CAAC;oBACP,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;oBACjB,GAAG,CAAC,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,CAAC;oBAC9E,OAAO;gBACT,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,IAAI,EAAE,CAAC;IACf,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,GAAY;IAC5B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,IAAI,GAAG,CAAC,CAAC;QAEb,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACnC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC;YACrB,IAAI,IAAI,GAAG,aAAa,EAAE,CAAC;gBACzB,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;gBAClB,MAAM,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;gBACnC,OAAO;YACT,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACnE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,oBAAqB,SAAQ,KAAK;IACtC,MAAM,GAAG,GAAG,CAAC;IACb;QACE,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAC7B,CAAC;CACF"}
@@ -1,10 +1,10 @@
1
1
  import { generateId } from '@cogitator-ai/server-shared';
2
2
  export function createContextMiddleware(opts) {
3
3
  const routeCtx = {
4
- cogitator: opts.cogitator,
5
- agents: opts.agents || {},
6
- workflows: opts.workflows || {},
7
- swarms: opts.swarms || {},
4
+ runtime: opts.cogitator,
5
+ agents: opts.agents ?? {},
6
+ workflows: opts.workflows ?? {},
7
+ swarms: opts.swarms ?? {},
8
8
  };
9
9
  return async (ctx, next) => {
10
10
  const state = ctx.state;
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/middleware/context.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEzD,MAAM,UAAU,uBAAuB,CAAC,IAAyB;IAC/D,MAAM,QAAQ,GAAiB;QAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;QACzB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;QAC/B,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;KAC1B,CAAC;IAEF,OAAO,KAAK,EAAE,GAAY,EAAE,IAAU,EAAE,EAAE;QACxC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAuB,CAAC;QAC1C,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC3B,KAAK,CAAC,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACpC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,IAAI,EAAE,CAAC;IACf,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/middleware/context.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEzD,MAAM,UAAU,uBAAuB,CAAC,IAAyB;IAC/D,MAAM,QAAQ,GAAiB;QAC7B,OAAO,EAAE,IAAI,CAAC,SAAS;QACvB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;QACzB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;QAC/B,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;KAC1B,CAAC;IAEF,OAAO,KAAK,EAAE,GAAY,EAAE,IAAU,EAAE,EAAE;QACxC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAuB,CAAC;QAC1C,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC3B,KAAK,CAAC,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACpC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,IAAI,EAAE,CAAC;IACf,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"error-handler.d.ts","sourceRoot":"","sources":["../../src/middleware/error-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAGzC,wBAAgB,kBAAkB,KAClB,KAAK,OAAO,EAAE,MAAM,IAAI,mBA0BvC"}
1
+ {"version":3,"file":"error-handler.d.ts","sourceRoot":"","sources":["../../src/middleware/error-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAGzC,wBAAgB,kBAAkB,KAClB,KAAK,OAAO,EAAE,MAAM,IAAI,mBAmCvC"}
@@ -5,6 +5,14 @@ export function createErrorHandler() {
5
5
  await next();
6
6
  }
7
7
  catch (err) {
8
+ if (ctx.headerSent)
9
+ return;
10
+ const status = err.status;
11
+ if (status === 413) {
12
+ ctx.status = 413;
13
+ ctx.body = { error: { message: 'Payload too large', code: 'PAYLOAD_TOO_LARGE' } };
14
+ return;
15
+ }
8
16
  if (CogitatorError.isCogitatorError(err)) {
9
17
  ctx.status = ERROR_STATUS_CODES[err.code] || 500;
10
18
  ctx.body = {
@@ -1 +1 @@
1
- {"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../src/middleware/error-handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEpF,MAAM,UAAU,kBAAkB;IAChC,OAAO,KAAK,EAAE,GAAY,EAAE,IAAU,EAAE,EAAE;QACxC,IAAI,CAAC;YACH,MAAM,IAAI,EAAE,CAAC;QACf,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,cAAc,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzC,GAAG,CAAC,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;gBACjD,GAAG,CAAC,IAAI,GAAG;oBACT,KAAK,EAAE;wBACL,OAAO,EAAE,GAAG,CAAC,OAAO;wBACpB,IAAI,EAAE,GAAG,CAAC,IAAI;qBACf;iBACF,CAAC;gBACF,OAAO;YACT,CAAC;YAED,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;YAEtD,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;YACjB,GAAG,CAAC,IAAI,GAAG;gBACT,KAAK,EAAE;oBACL,OAAO,EAAE,uBAAuB;oBAChC,IAAI,EAAE,SAAS,CAAC,cAAc;iBAC/B;aACF,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../src/middleware/error-handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEpF,MAAM,UAAU,kBAAkB;IAChC,OAAO,KAAK,EAAE,GAAY,EAAE,IAAU,EAAE,EAAE;QACxC,IAAI,CAAC;YACH,MAAM,IAAI,EAAE,CAAC;QACf,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,CAAC,UAAU;gBAAE,OAAO;YAE3B,MAAM,MAAM,GAAI,GAA2B,CAAC,MAAM,CAAC;YACnD,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;gBACnB,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;gBACjB,GAAG,CAAC,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,CAAC;gBAClF,OAAO;YACT,CAAC;YAED,IAAI,cAAc,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzC,GAAG,CAAC,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;gBACjD,GAAG,CAAC,IAAI,GAAG;oBACT,KAAK,EAAE;wBACL,OAAO,EAAE,GAAG,CAAC,OAAO;wBACpB,IAAI,EAAE,GAAG,CAAC,IAAI;qBACf;iBACF,CAAC;gBACF,OAAO;YACT,CAAC;YAED,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;YAEtD,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;YACjB,GAAG,CAAC,IAAI,GAAG;gBACT,KAAK,EAAE;oBACL,OAAO,EAAE,uBAAuB;oBAChC,IAAI,EAAE,SAAS,CAAC,cAAc;iBAC/B;aACF,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/routes/agents.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,KAAK,EACV,cAAc,EAIf,MAAM,aAAa,CAAC;AAKrB,wBAAgB,iBAAiB,IAAI,MAAM,CAAC,cAAc,CAAC,CA4H1D"}
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/routes/agents.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,KAAK,EACV,cAAc,EAIf,MAAM,aAAa,CAAC;AAKrB,wBAAgB,iBAAiB,IAAI,MAAM,CAAC,cAAc,CAAC,CAmI1D"}
@@ -14,7 +14,7 @@ export function createAgentRoutes() {
14
14
  ctx.body = response;
15
15
  });
16
16
  router.post('/agents/:name/run', async (ctx) => {
17
- const { agents, cogitator } = ctx.state.cogitator;
17
+ const { agents, runtime } = ctx.state.cogitator;
18
18
  const { name } = ctx.params;
19
19
  const agent = agents[name];
20
20
  if (!agent) {
@@ -29,7 +29,7 @@ export function createAgentRoutes() {
29
29
  return;
30
30
  }
31
31
  try {
32
- const result = await cogitator.run(agent, {
32
+ const result = await runtime.run(agent, {
33
33
  input: body.input,
34
34
  context: body.context,
35
35
  threadId: body.threadId,
@@ -53,7 +53,7 @@ export function createAgentRoutes() {
53
53
  }
54
54
  });
55
55
  router.post('/agents/:name/stream', async (ctx) => {
56
- const { agents, cogitator } = ctx.state.cogitator;
56
+ const { agents, runtime } = ctx.state.cogitator;
57
57
  const { name } = ctx.params;
58
58
  const agent = agents[name];
59
59
  if (!agent) {
@@ -73,11 +73,14 @@ export function createAgentRoutes() {
73
73
  ctx.req.on('close', () => {
74
74
  writer.close();
75
75
  });
76
+ let textStarted = false;
77
+ let textId = '';
76
78
  try {
77
79
  writer.start(messageId);
78
- const textId = generateId('txt');
80
+ textId = generateId('txt');
81
+ textStarted = true;
79
82
  writer.textStart(textId);
80
- const result = await cogitator.run(agent, {
83
+ const result = await runtime.run(agent, {
81
84
  input: body.input,
82
85
  context: body.context,
83
86
  threadId: body.threadId,
@@ -103,6 +106,9 @@ export function createAgentRoutes() {
103
106
  });
104
107
  }
105
108
  catch (error) {
109
+ if (textStarted) {
110
+ writer.textEnd(textId);
111
+ }
106
112
  const message = error instanceof Error ? error.message : 'Unknown error';
107
113
  writer.error(message, 'INTERNAL');
108
114
  }
@@ -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,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,KAAK,EACV,cAAc,EAKf,MAAM,aAAa,CAAC;AAKrB,wBAAgB,iBAAiB,IAAI,MAAM,CAAC,cAAc,CAAC,CA+L1D"}
1
+ {"version":3,"file":"swarms.d.ts","sourceRoot":"","sources":["../../src/routes/swarms.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,KAAK,EACV,cAAc,EAKf,MAAM,aAAa,CAAC;AAKrB,wBAAgB,iBAAiB,IAAI,MAAM,CAAC,cAAc,CAAC,CAiM1D"}
@@ -25,7 +25,7 @@ export function createSwarmRoutes() {
25
25
  ctx.body = response;
26
26
  });
27
27
  router.post('/swarms/:name/run', async (ctx) => {
28
- const { swarms, cogitator } = ctx.state.cogitator;
28
+ const { swarms, runtime } = ctx.state.cogitator;
29
29
  const { name } = ctx.params;
30
30
  const swarmConfig = swarms[name];
31
31
  if (!swarmConfig) {
@@ -41,7 +41,7 @@ export function createSwarmRoutes() {
41
41
  }
42
42
  try {
43
43
  const { Swarm } = await import('@cogitator-ai/swarms');
44
- const swarm = new Swarm(cogitator, swarmConfig);
44
+ const swarm = new Swarm(runtime, swarmConfig);
45
45
  const result = await swarm.run({
46
46
  input: body.input,
47
47
  context: body.context,
@@ -82,7 +82,7 @@ export function createSwarmRoutes() {
82
82
  }
83
83
  });
84
84
  router.post('/swarms/:name/stream', async (ctx) => {
85
- const { swarms, cogitator } = ctx.state.cogitator;
85
+ const { swarms, runtime } = ctx.state.cogitator;
86
86
  const { name } = ctx.params;
87
87
  const swarmConfig = swarms[name];
88
88
  if (!swarmConfig) {
@@ -104,7 +104,7 @@ export function createSwarmRoutes() {
104
104
  });
105
105
  try {
106
106
  const { Swarm } = await import('@cogitator-ai/swarms');
107
- const swarm = new Swarm(cogitator, swarmConfig);
107
+ const swarm = new Swarm(runtime, swarmConfig);
108
108
  writer.start(messageId);
109
109
  const result = await swarm.run({
110
110
  input: body.input,
@@ -163,7 +163,9 @@ export function createSwarmRoutes() {
163
163
  }
164
164
  if (!swarmConfig.blackboard?.enabled) {
165
165
  ctx.status = 400;
166
- ctx.body = { error: { message: 'Blackboard not enabled for this swarm', code: 'INVALID_INPUT' } };
166
+ ctx.body = {
167
+ error: { message: 'Blackboard not enabled for this swarm', code: 'INVALID_INPUT' },
168
+ };
167
169
  return;
168
170
  }
169
171
  const response = {