@cogitator-ai/koa 0.10.1 → 0.11.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.
- package/README.md +44 -24
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/middleware/context.d.ts.map +1 -1
- package/dist/middleware/context.js +1 -0
- package/dist/middleware/context.js.map +1 -1
- package/dist/routes/workflows.d.ts.map +1 -1
- package/dist/routes/workflows.js +163 -112
- package/dist/routes/workflows.js.map +1 -1
- package/dist/types.d.ts +15 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/results.d.ts.map +1 -1
- package/dist/utils/results.js +1 -0
- package/dist/utils/results.js.map +1 -1
- package/package.json +9 -9
package/README.md
CHANGED
|
@@ -44,23 +44,24 @@ Creates a Koa Router with all Cogitator endpoints.
|
|
|
44
44
|
|
|
45
45
|
**Options:**
|
|
46
46
|
|
|
47
|
-
| Option
|
|
48
|
-
|
|
|
49
|
-
| `cogitator`
|
|
50
|
-
| `agents`
|
|
51
|
-
| `workflows`
|
|
52
|
-
| `swarms`
|
|
53
|
-
| `auth`
|
|
54
|
-
| `enableSwagger`
|
|
55
|
-
| `swagger`
|
|
56
|
-
| `bodyLimit`
|
|
57
|
-
| `sseHeartbeatMs`
|
|
58
|
-
| `acceptContext`
|
|
59
|
-
| `threadMessageRoles`
|
|
60
|
-
| `limits`
|
|
61
|
-
| `anonymous`
|
|
62
|
-
| `authorizeThread`
|
|
63
|
-
| `deps`
|
|
47
|
+
| Option | Type | Description |
|
|
48
|
+
| --------------------- | ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
49
|
+
| `cogitator` | `Cogitator` | **Required.** Cogitator runtime instance |
|
|
50
|
+
| `agents` | `Record<string, Agent>` | Named agents to expose |
|
|
51
|
+
| `workflows` | `Record<string, Workflow>` | Named workflows |
|
|
52
|
+
| `swarms` | `Record<string, SwarmConfig>` | Named swarms |
|
|
53
|
+
| `auth` | `AuthFunction` | `(ctx) => AuthContext \| undefined` (sync or async), receives the Koa Context, throw to answer `401 UNAUTHORIZED` |
|
|
54
|
+
| `enableSwagger` | `boolean` | Serve `/openapi.json` and Swagger UI at `/docs` |
|
|
55
|
+
| `swagger` | `SwaggerConfig` | Swagger configuration |
|
|
56
|
+
| `bodyLimit` | `number` | Max JSON body size in bytes (default 1 MiB) |
|
|
57
|
+
| `sseHeartbeatMs` | `number` | How often SSE streams write a `: keep-alive` comment while a run is silent (default `5000`, `0` turns it off) |
|
|
58
|
+
| `acceptContext` | `boolean \| string[]` | Keys of a run `context` clients may send: none by default, a list, or `true` for any (the model reads it as data from the application) |
|
|
59
|
+
| `threadMessageRoles` | `ThreadMessageRole[]` | Roles `POST /threads/:id/messages` accepts (default `user` and `assistant`) |
|
|
60
|
+
| `limits` | `RunLimits` | `{ swarmTimeout?, workflowMaxIterations?, workflowMaxConcurrency? }`: caps on what a request may ask a swarm or workflow run for (see [Run limits](#run-limits)) |
|
|
61
|
+
| `anonymous` | `'allow' \| 'deny'` | Whether callers without a `userId` may use the API (default `'allow'`), `'deny'` answers `401 UNAUTHORIZED` |
|
|
62
|
+
| `authorizeThread` | `(auth, threadId) => boolean \| Promise<boolean>` | Decides whether a caller may touch a thread, on top of the owner check, `false` answers `403 THREAD_FORBIDDEN` |
|
|
63
|
+
| `deps` | `(ctx) => unknown \| Promise<unknown>` | Builds the `deps` agent runs pass to their tools, from the Koa Context (see [Run deps](#run-deps)) |
|
|
64
|
+
| `workflowCheckpoints` | `CheckpointStore` | Where workflow runs keep their checkpoints, for `options.checkpoint` and `/resume` (see [Checkpoints and resume](#checkpoints-and-resume)) |
|
|
64
65
|
|
|
65
66
|
WebSocket support is attached to the HTTP server with [`setupWebSocket`](#websocket), not through router options.
|
|
66
67
|
|
|
@@ -71,7 +72,7 @@ The router answers `OPTIONS` for its own paths with `204` and the methods they s
|
|
|
71
72
|
- Request bodies are validated before anything reaches the runtime: `input` must contain more than whitespace (`""` and `" "` are refused before the model is called), `context` an object, `threadId` a non-empty string, swarm `timeout` a positive number. Invalid bodies return `400 INVALID_INPUT` with the offending field in the message. The validator comes from `@cogitator-ai/server-shared`, so Express, Fastify, Hono and Koa refuse exactly the same bodies.
|
|
72
73
|
- 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).
|
|
73
74
|
- While an SSE stream is open it writes a `: keep-alive` comment every `sseHeartbeatMs` (5 s by default, `0` turns it off), which SSE clients skip, so a proxy or load balancer does not close a stream that waits on a slow tool or model (nginx closes a connection silent for 60 s).
|
|
74
|
-
- Workflow runs accept an optional body. `options` is limited to `maxConcurrency
|
|
75
|
+
- Workflow runs accept an optional body. `options` is limited to `maxConcurrency`, `maxIterations` (positive integers) and `checkpoint`. Any other option is dropped and a wrongly typed one returns `400 INVALID_INPUT`. `checkpoint: true` is refused unless the app has `workflowCheckpoints` (see [Checkpoints and resume](#checkpoints-and-resume)).
|
|
75
76
|
- Thread messages accept `role` of `user` or `assistant` (more with `threadMessageRoles`), `metadata` is stored with the entry and a token estimate is recorded.
|
|
76
77
|
- A run sends `context` to the model as data the application supplied, 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.
|
|
77
78
|
- 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.
|
|
@@ -107,11 +108,30 @@ The router answers `OPTIONS` for its own paths with `204` and the methods they s
|
|
|
107
108
|
|
|
108
109
|
### Workflows
|
|
109
110
|
|
|
110
|
-
| Method | Path
|
|
111
|
-
| ------ |
|
|
112
|
-
| `GET` | `/workflows`
|
|
113
|
-
| `POST` | `/workflows/:name/run`
|
|
114
|
-
| `POST` | `/workflows/:name/stream`
|
|
111
|
+
| Method | Path | Description |
|
|
112
|
+
| ------ | -------------------------------- | --------------------------------- |
|
|
113
|
+
| `GET` | `/workflows` | List workflows |
|
|
114
|
+
| `POST` | `/workflows/:name/run` | Execute workflow |
|
|
115
|
+
| `POST` | `/workflows/:name/stream` | Stream workflow events |
|
|
116
|
+
| `POST` | `/workflows/:name/resume` | Resume from a checkpoint |
|
|
117
|
+
| `POST` | `/workflows/:name/resume/stream` | Resume and stream workflow events |
|
|
118
|
+
|
|
119
|
+
#### Checkpoints and resume
|
|
120
|
+
|
|
121
|
+
`workflowCheckpoints` takes any `CheckpointStore` of `@cogitator-ai/workflows`, such as `PostgresCheckpointStore` or `RedisCheckpointStore`. With it, a run with `options.checkpoint: true` saves its checkpoints there as the caller's, the `userId` that `auth` returned (none for an anonymous caller), and its answer and `workflow_completed` event carry the last one as `checkpointId`. Without it such a run is refused with `400 INVALID_INPUT`.
|
|
122
|
+
|
|
123
|
+
`POST /workflows/:name/resume` takes `{ checkpointId: string; options?: { maxConcurrency?: number; maxIterations?: number } }`, passes over the nodes the checkpoint completed and runs the rest. It answers like `/run`, and `/resume/stream` streams like `/stream`. The `limits` hold as on `/run`, and the resumed run keeps saving checkpoints, so it can be resumed again. A checkpoint that is missing, belongs to another user or to another workflow answers `404 CHECKPOINT_NOT_FOUND` before anything runs, on `/resume/stream` before the stream opens. Without `workflowCheckpoints` every resume answers `404 CHECKPOINT_NOT_FOUND`. A run that fails answers its error with the last checkpoint it saved as `checkpointId`, next to `code` and `message` (`{ error: { message, code, checkpointId } }`), and a failed stream sends a `workflow_failed` event with `{ checkpointId }` right before its `error` event, so the client resumes the failed run from there. A resume that fails again names the checkpoint to resume from, its own last one or, when it saved none, the one it started from.
|
|
124
|
+
|
|
125
|
+
```typescript
|
|
126
|
+
import { PostgresCheckpointStore } from '@cogitator-ai/workflows';
|
|
127
|
+
|
|
128
|
+
const api = cogitatorApp({
|
|
129
|
+
cogitator,
|
|
130
|
+
workflows: { shipping },
|
|
131
|
+
auth,
|
|
132
|
+
workflowCheckpoints: new PostgresCheckpointStore({ client: pool }),
|
|
133
|
+
});
|
|
134
|
+
```
|
|
115
135
|
|
|
116
136
|
### Swarms
|
|
117
137
|
|
|
@@ -301,7 +321,7 @@ The router's `auth` option does not cover WebSocket connections, so pass `auth`
|
|
|
301
321
|
|
|
302
322
|
## SSE Streaming
|
|
303
323
|
|
|
304
|
-
The adapter includes `KoaStreamWriter` for Server-Sent Events with structured event types (text deltas, tool calls, approvals, workflow/swarm events). Workflow streams send `{ type: 'workflow', event, data }` (`node_started`, `node_completed`, `node_error`, `node_progress`, `workflow_completed`); swarm streams send `{ type: 'swarm', event, data }` (`agent_start`, `agent_complete`, `agent_error`, `message`, the swarm's own events, `swarm_completed`). Every stream ends with `finish` and `data: [DONE]`, or with an `error` event. Agent streams emit `tool-call-start`, `tool-call-delta` (the JSON arguments) and `tool-call-end` with the provider's tool call id, so `tool-result.toolCallId` always matches the call it belongs to.
|
|
324
|
+
The adapter includes `KoaStreamWriter` for Server-Sent Events with structured event types (text deltas, tool calls, approvals, workflow/swarm events). Workflow streams send `{ type: 'workflow', event, data }` (`node_started`, `node_completed`, `node_error`, `node_progress`, `workflow_completed`, and `workflow_failed` with `{ checkpointId? }` right before the `error` event of a failed run); swarm streams send `{ type: 'swarm', event, data }` (`agent_start`, `agent_complete`, `agent_error`, `message`, the swarm's own events, `swarm_completed`). Every stream ends with `finish` and `data: [DONE]`, or with an `error` event. Agent streams emit `tool-call-start`, `tool-call-delta` (the JSON arguments) and `tool-call-end` with the provider's tool call id, so `tool-result.toolCallId` always matches the call it belongs to.
|
|
305
325
|
|
|
306
326
|
When the agent sets `reasoning: { summary: true }` and the provider returns a reasoning summary, agent streams also emit it as its own `reasoning-start`/`reasoning-delta`/`reasoning-end` part, closed before text or a tool call starts, so reasoning and text parts never interleave.
|
|
307
327
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { cogitatorApp } from './app.js';
|
|
2
|
-
export type { AuthContext, AuthFunction, CogitatorAppOptions, CogitatorState, RouteContext, WebSocketConfig, WebSocketAuthFunction, WebSocketDepsFunction, DepsFunction, RunLimits, AnonymousPolicy, AuthorizeThread, AgentListResponse, AgentRunRequest, AgentRunResponse, AgentResumeRequest, PendingApproval, ThreadResponse, AddMessageRequest, ToolListResponse, WorkflowListResponse, WorkflowRunRequest, WorkflowRunResponse, WorkflowStatusResponse, SwarmListResponse, SwarmRunRequest, SwarmRunResponse, BlackboardResponse, HealthResponse, ReadinessResponse, ReadinessCheckStatus, ErrorResponse, SwaggerConfig, WebSocketMessage, WebSocketResponse, WebSocketRunPayload, WebSocketResumePayload, } from './types.js';
|
|
2
|
+
export type { AuthContext, AuthFunction, CogitatorAppOptions, CogitatorState, RouteContext, WebSocketConfig, WebSocketAuthFunction, WebSocketDepsFunction, DepsFunction, RunLimits, AnonymousPolicy, AuthorizeThread, AgentListResponse, AgentRunRequest, AgentRunResponse, AgentResumeRequest, PendingApproval, ThreadResponse, AddMessageRequest, ToolListResponse, WorkflowListResponse, WorkflowRunRequest, WorkflowRunResponse, WorkflowResumeRequest, WorkflowStatusResponse, SwarmListResponse, SwarmRunRequest, SwarmRunResponse, BlackboardResponse, HealthResponse, ReadinessResponse, ReadinessCheckStatus, ErrorResponse, SwaggerConfig, WebSocketMessage, WebSocketResponse, WebSocketRunPayload, WebSocketResumePayload, } from './types.js';
|
|
3
3
|
export { createContextMiddleware, createAnonymousMiddleware, createAuthMiddleware, createBodyParser, createErrorHandler, } from './middleware/index.js';
|
|
4
4
|
export type { BodyParserOptions } from './middleware/body-parser.js';
|
|
5
5
|
export { createHealthRoutes, createAgentRoutes, createThreadRoutes, createToolRoutes, createWorkflowRoutes, createSwarmRoutes, } from './routes/index.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACZ,SAAS,EACT,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE,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;AACpF,YAAY,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAE/E,OAAO,EACL,UAAU,EACV,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,yBAAyB,EACzB,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EACrB,2BAA2B,EAC3B,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AAErC,YAAY,EACV,WAAW,EACX,UAAU,EACV,cAAc,EACd,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,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,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACZ,SAAS,EACT,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE,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;AACpF,YAAY,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAE/E,OAAO,EACL,UAAU,EACV,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,yBAAyB,EACzB,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EACrB,2BAA2B,EAC3B,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AAErC,YAAY,EACV,WAAW,EACX,UAAU,EACV,cAAc,EACd,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,UAAU,EACV,WAAW,EACX,KAAK,GACN,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
|
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;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AA2CxC,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAI/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;AAGpF,OAAO,EACL,UAAU,EACV,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,yBAAyB,EACzB,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,EACxB,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EACrB,2BAA2B,EAC3B,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AAqBrC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/middleware/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,KAAK,EAAE,mBAAmB,EAAgC,MAAM,aAAa,CAAC;AAQrF;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/middleware/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,KAAK,EAAE,mBAAmB,EAAgC,MAAM,aAAa,CAAC;AAQrF;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,mBAAmB,IAgBjD,KAAK,OAAO,EAAE,MAAM,IAAI,mBAOvC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/middleware/context.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,4BAA4B,EAC5B,cAAc,EACd,UAAU,EACV,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AAErC;;;;GAIG;AACH,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;QACzB,cAAc,EAAE,qBAAqB,CAAC,IAAI,CAAC,cAAc,CAAC;QAC1D,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,KAAK;QAC1C,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,IAAI,4BAA4B;QAC3E,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;QACnC,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,IAAI,EAAE,IAAI,CAAC,IAAI;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/middleware/context.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,4BAA4B,EAC5B,cAAc,EACd,UAAU,EACV,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AAErC;;;;GAIG;AACH,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;QACzB,cAAc,EAAE,qBAAqB,CAAC,IAAI,CAAC,cAAc,CAAC;QAC1D,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,KAAK;QAC1C,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,IAAI,4BAA4B;QAC3E,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;QACnC,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;KAC9C,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":"workflows.d.ts","sourceRoot":"","sources":["../../src/routes/workflows.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../src/routes/workflows.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAQjC,OAAO,KAAK,EAAE,cAAc,EAAwB,MAAM,aAAa,CAAC;AAqMxE,wBAAgB,oBAAoB,IAAI,MAAM,CAAC,cAAc,CAAC,CAoC7D"}
|
package/dist/routes/workflows.js
CHANGED
|
@@ -1,10 +1,155 @@
|
|
|
1
1
|
import Router from '@koa/router';
|
|
2
2
|
import { KoaStreamWriter, setupSSEHeaders } from '../streaming/index.js';
|
|
3
|
-
import { generateId, parseWorkflowRunRequest, workflowOptionsWithin, } from '@cogitator-ai/server-shared';
|
|
3
|
+
import { checkpointNotFound, findOwnedCheckpoint, generateId, ownedCheckpoints, parseWorkflowResumeRequest, parseWorkflowRunRequest, toWorkflowCompletedData, toWorkflowFailedData, withResumedCheckpoint, workflowOptionsWithin, workflowRunFailure, } from '@cogitator-ai/server-shared';
|
|
4
4
|
import { getOwn } from '../utils/lookup.js';
|
|
5
|
-
import { describeError, invalidInput, isModuleNotFoundError, notFound, notInstalled, respondWithError, } from '../utils/errors.js';
|
|
5
|
+
import { describeError, invalidInput, isModuleNotFoundError, notFound, notInstalled, respondWithError, sendError, } from '../utils/errors.js';
|
|
6
6
|
import { getRequestBody, onClientDisconnect } from '../utils/request.js';
|
|
7
7
|
import { toWorkflowRunResponse } from '../utils/results.js';
|
|
8
|
+
async function executorFor(ctx, checkpoints) {
|
|
9
|
+
const { WorkflowExecutor } = await import('@cogitator-ai/workflows');
|
|
10
|
+
return new WorkflowExecutor(ctx.state.cogitator.runtime, checkpoints);
|
|
11
|
+
}
|
|
12
|
+
function findWorkflow(ctx) {
|
|
13
|
+
const { name } = ctx.params;
|
|
14
|
+
const workflow = getOwn(ctx.state.cogitator.workflows, name);
|
|
15
|
+
if (!workflow)
|
|
16
|
+
notFound(ctx, `Workflow '${name}' not found`);
|
|
17
|
+
return workflow;
|
|
18
|
+
}
|
|
19
|
+
/** The start of a workflow run, `undefined` once the request was refused */
|
|
20
|
+
function admitRun(ctx) {
|
|
21
|
+
const workflow = findWorkflow(ctx);
|
|
22
|
+
if (!workflow)
|
|
23
|
+
return undefined;
|
|
24
|
+
const { limits, workflowCheckpoints: store } = ctx.state.cogitator;
|
|
25
|
+
const parsed = parseWorkflowRunRequest(getRequestBody(ctx), {
|
|
26
|
+
checkpoints: store !== undefined,
|
|
27
|
+
});
|
|
28
|
+
if (!parsed.ok) {
|
|
29
|
+
invalidInput(ctx, parsed.message);
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
const { input, options = {} } = parsed.value;
|
|
33
|
+
const checkpoints = options.checkpoint && store ? ownedCheckpoints(store, ctx.state.auth?.userId) : undefined;
|
|
34
|
+
return async (runOptions) => (await executorFor(ctx, checkpoints)).execute(workflow, input, {
|
|
35
|
+
...workflowOptionsWithin(options, limits),
|
|
36
|
+
...runOptions,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* The start of a workflow resume, `undefined` once the request was refused: a checkpoint that
|
|
41
|
+
* is missing, belongs to another user or to another workflow is refused before anything runs
|
|
42
|
+
*/
|
|
43
|
+
async function admitResume(ctx) {
|
|
44
|
+
const workflow = findWorkflow(ctx);
|
|
45
|
+
if (!workflow)
|
|
46
|
+
return undefined;
|
|
47
|
+
const parsed = parseWorkflowResumeRequest(getRequestBody(ctx));
|
|
48
|
+
if (!parsed.ok) {
|
|
49
|
+
invalidInput(ctx, parsed.message);
|
|
50
|
+
return undefined;
|
|
51
|
+
}
|
|
52
|
+
const { checkpointId, options = {} } = parsed.value;
|
|
53
|
+
const { limits, workflowCheckpoints: store } = ctx.state.cogitator;
|
|
54
|
+
const userId = ctx.state.auth?.userId;
|
|
55
|
+
try {
|
|
56
|
+
const checkpoint = await findOwnedCheckpoint(store, userId, workflow.name, checkpointId);
|
|
57
|
+
if (!store || !checkpoint) {
|
|
58
|
+
sendError(ctx, checkpointNotFound(checkpointId));
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
const checkpoints = ownedCheckpoints(store, userId);
|
|
62
|
+
return async (runOptions) => withResumedCheckpoint(await (await executorFor(ctx, checkpoints)).resume(workflow, checkpointId, {
|
|
63
|
+
...workflowOptionsWithin(options, limits),
|
|
64
|
+
checkpoint: true,
|
|
65
|
+
...runOptions,
|
|
66
|
+
}), checkpointId);
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
respondWithError(ctx, error, 'Workflow resume error');
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
async function respond(ctx, start, label) {
|
|
74
|
+
const abortController = new AbortController();
|
|
75
|
+
onClientDisconnect(ctx, () => abortController.abort());
|
|
76
|
+
try {
|
|
77
|
+
const result = await start({ signal: abortController.signal });
|
|
78
|
+
if (abortController.signal.aborted)
|
|
79
|
+
return;
|
|
80
|
+
if (result.error) {
|
|
81
|
+
sendError(ctx, workflowRunFailure(describeError(result.error, label), result.checkpointId));
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
ctx.body = toWorkflowRunResponse(result);
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
if (abortController.signal.aborted)
|
|
88
|
+
return;
|
|
89
|
+
if (isModuleNotFoundError(error)) {
|
|
90
|
+
notInstalled(ctx, 'Workflows');
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
respondWithError(ctx, error, label);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
async function stream(ctx, start) {
|
|
97
|
+
setupSSEHeaders(ctx);
|
|
98
|
+
const writer = new KoaStreamWriter(ctx, {
|
|
99
|
+
heartbeatMs: ctx.state.cogitator.sseHeartbeatMs,
|
|
100
|
+
});
|
|
101
|
+
const messageId = generateId('wf');
|
|
102
|
+
const abortController = new AbortController();
|
|
103
|
+
onClientDisconnect(ctx, () => {
|
|
104
|
+
writer.close();
|
|
105
|
+
abortController.abort();
|
|
106
|
+
});
|
|
107
|
+
try {
|
|
108
|
+
writer.start(messageId);
|
|
109
|
+
const result = await start({
|
|
110
|
+
signal: abortController.signal,
|
|
111
|
+
onNodeStart: (node) => {
|
|
112
|
+
writer.workflowEvent('node_started', { nodeName: node, timestamp: Date.now() });
|
|
113
|
+
},
|
|
114
|
+
onNodeComplete: (node, output, duration) => {
|
|
115
|
+
writer.workflowEvent('node_completed', { nodeName: node, output, duration });
|
|
116
|
+
},
|
|
117
|
+
onNodeError: (node, error) => {
|
|
118
|
+
writer.workflowEvent('node_error', {
|
|
119
|
+
nodeName: node,
|
|
120
|
+
error: describeError(error, `Workflow node ${node} error`).message,
|
|
121
|
+
});
|
|
122
|
+
},
|
|
123
|
+
onNodeProgress: (node, progress) => {
|
|
124
|
+
writer.workflowEvent('node_progress', { nodeName: node, progress });
|
|
125
|
+
},
|
|
126
|
+
});
|
|
127
|
+
if (abortController.signal.aborted)
|
|
128
|
+
return;
|
|
129
|
+
if (result.error) {
|
|
130
|
+
writer.workflowEvent('workflow_failed', toWorkflowFailedData(result));
|
|
131
|
+
const failure = describeError(result.error, 'Workflow stream error');
|
|
132
|
+
writer.error(failure.message, failure.code);
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
writer.workflowEvent('workflow_completed', toWorkflowCompletedData(result));
|
|
136
|
+
writer.finish(messageId);
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
if (abortController.signal.aborted)
|
|
140
|
+
return;
|
|
141
|
+
if (isModuleNotFoundError(error)) {
|
|
142
|
+
writer.error('Workflows package not installed', 'UNIMPLEMENTED');
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
const failure = describeError(error, 'Workflow stream error');
|
|
146
|
+
writer.error(failure.message, failure.code);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
finally {
|
|
150
|
+
writer.close();
|
|
151
|
+
}
|
|
152
|
+
}
|
|
8
153
|
export function createWorkflowRoutes() {
|
|
9
154
|
const router = new Router();
|
|
10
155
|
router.get('/workflows', (ctx) => {
|
|
@@ -18,118 +163,24 @@ export function createWorkflowRoutes() {
|
|
|
18
163
|
ctx.body = response;
|
|
19
164
|
});
|
|
20
165
|
router.post('/workflows/:name/run', async (ctx) => {
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if (!workflow) {
|
|
25
|
-
notFound(ctx, `Workflow '${name}' not found`);
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
const parsed = parseWorkflowRunRequest(getRequestBody(ctx));
|
|
29
|
-
if (!parsed.ok) {
|
|
30
|
-
invalidInput(ctx, parsed.message);
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
const abortController = new AbortController();
|
|
34
|
-
onClientDisconnect(ctx, () => abortController.abort());
|
|
35
|
-
try {
|
|
36
|
-
const { WorkflowExecutor } = await import('@cogitator-ai/workflows');
|
|
37
|
-
const executor = new WorkflowExecutor(runtime);
|
|
38
|
-
const result = await executor.execute(workflow, parsed.value.input, {
|
|
39
|
-
...workflowOptionsWithin(parsed.value.options ?? {}, ctx.state.cogitator.limits),
|
|
40
|
-
signal: abortController.signal,
|
|
41
|
-
});
|
|
42
|
-
if (abortController.signal.aborted)
|
|
43
|
-
return;
|
|
44
|
-
if (result.error) {
|
|
45
|
-
respondWithError(ctx, result.error, 'Workflow run error');
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
ctx.body = toWorkflowRunResponse(result);
|
|
49
|
-
}
|
|
50
|
-
catch (error) {
|
|
51
|
-
if (abortController.signal.aborted)
|
|
52
|
-
return;
|
|
53
|
-
if (isModuleNotFoundError(error)) {
|
|
54
|
-
notInstalled(ctx, 'Workflows');
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
respondWithError(ctx, error, 'Workflow run error');
|
|
58
|
-
}
|
|
166
|
+
const start = admitRun(ctx);
|
|
167
|
+
if (start)
|
|
168
|
+
await respond(ctx, start, 'Workflow run error');
|
|
59
169
|
});
|
|
60
170
|
router.post('/workflows/:name/stream', async (ctx) => {
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
const writer = new KoaStreamWriter(ctx, {
|
|
75
|
-
heartbeatMs: ctx.state.cogitator.sseHeartbeatMs,
|
|
76
|
-
});
|
|
77
|
-
const messageId = generateId('wf');
|
|
78
|
-
const abortController = new AbortController();
|
|
79
|
-
onClientDisconnect(ctx, () => {
|
|
80
|
-
writer.close();
|
|
81
|
-
abortController.abort();
|
|
82
|
-
});
|
|
83
|
-
try {
|
|
84
|
-
const { WorkflowExecutor } = await import('@cogitator-ai/workflows');
|
|
85
|
-
const executor = new WorkflowExecutor(runtime);
|
|
86
|
-
writer.start(messageId);
|
|
87
|
-
const result = await executor.execute(workflow, parsed.value.input, {
|
|
88
|
-
...workflowOptionsWithin(parsed.value.options ?? {}, ctx.state.cogitator.limits),
|
|
89
|
-
signal: abortController.signal,
|
|
90
|
-
onNodeStart: (node) => {
|
|
91
|
-
writer.workflowEvent('node_started', { nodeName: node, timestamp: Date.now() });
|
|
92
|
-
},
|
|
93
|
-
onNodeComplete: (node, output, duration) => {
|
|
94
|
-
writer.workflowEvent('node_completed', { nodeName: node, output, duration });
|
|
95
|
-
},
|
|
96
|
-
onNodeError: (node, error) => {
|
|
97
|
-
writer.workflowEvent('node_error', {
|
|
98
|
-
nodeName: node,
|
|
99
|
-
error: describeError(error, `Workflow node ${node} error`).message,
|
|
100
|
-
});
|
|
101
|
-
},
|
|
102
|
-
onNodeProgress: (node, progress) => {
|
|
103
|
-
writer.workflowEvent('node_progress', { nodeName: node, progress });
|
|
104
|
-
},
|
|
105
|
-
});
|
|
106
|
-
if (abortController.signal.aborted)
|
|
107
|
-
return;
|
|
108
|
-
if (result.error) {
|
|
109
|
-
const failure = describeError(result.error, 'Workflow stream error');
|
|
110
|
-
writer.error(failure.message, failure.code);
|
|
111
|
-
return;
|
|
112
|
-
}
|
|
113
|
-
writer.workflowEvent('workflow_completed', {
|
|
114
|
-
workflowId: result.workflowId,
|
|
115
|
-
duration: result.duration,
|
|
116
|
-
});
|
|
117
|
-
writer.finish(messageId);
|
|
118
|
-
}
|
|
119
|
-
catch (error) {
|
|
120
|
-
if (abortController.signal.aborted)
|
|
121
|
-
return;
|
|
122
|
-
if (isModuleNotFoundError(error)) {
|
|
123
|
-
writer.error('Workflows package not installed', 'UNIMPLEMENTED');
|
|
124
|
-
}
|
|
125
|
-
else {
|
|
126
|
-
const failure = describeError(error, 'Workflow stream error');
|
|
127
|
-
writer.error(failure.message, failure.code);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
finally {
|
|
131
|
-
writer.close();
|
|
132
|
-
}
|
|
171
|
+
const start = admitRun(ctx);
|
|
172
|
+
if (start)
|
|
173
|
+
await stream(ctx, start);
|
|
174
|
+
});
|
|
175
|
+
router.post('/workflows/:name/resume', async (ctx) => {
|
|
176
|
+
const start = await admitResume(ctx);
|
|
177
|
+
if (start)
|
|
178
|
+
await respond(ctx, start, 'Workflow resume error');
|
|
179
|
+
});
|
|
180
|
+
router.post('/workflows/:name/resume/stream', async (ctx) => {
|
|
181
|
+
const start = await admitResume(ctx);
|
|
182
|
+
if (start)
|
|
183
|
+
await stream(ctx, start);
|
|
133
184
|
});
|
|
134
185
|
return router;
|
|
135
186
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../src/routes/workflows.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../src/routes/workflows.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { IncomingMessage } from 'http';
|
|
2
2
|
import type { Context } from 'koa';
|
|
3
3
|
import type { Cogitator, Agent } from '@cogitator-ai/core';
|
|
4
|
-
import type { AgentRunResponse, AnonymousPolicy, AuthorizeThread, ContextPolicy, PendingApproval, ReadinessCheckStatus, ReadinessResponse, RunLimits, ThreadMessageRole, WorkflowRunRequestBody } from '@cogitator-ai/server-shared';
|
|
5
|
-
import type { Message, ToolCall, ToolResult, RunResult, Workflow, WorkflowResult, WorkflowState, SwarmConfig, SwarmResult, SwarmRunOptions, StreamingWorkflowEvent, SwarmEvent, SwarmMessage, ToolApprovalDecision } from '@cogitator-ai/types';
|
|
4
|
+
import type { AgentRunResponse, AnonymousPolicy, AuthorizeThread, ContextPolicy, PendingApproval, ReadinessCheckStatus, ReadinessResponse, RunLimits, ThreadMessageRole, WorkflowResumeRequestBody, WorkflowRunRequestBody } from '@cogitator-ai/server-shared';
|
|
5
|
+
import type { CheckpointStore, Message, ToolCall, ToolResult, RunResult, Workflow, WorkflowResult, WorkflowState, SwarmConfig, SwarmResult, SwarmRunOptions, StreamingWorkflowEvent, SwarmEvent, SwarmMessage, ToolApprovalDecision } from '@cogitator-ai/types';
|
|
6
6
|
export type { Message, ToolCall, ToolResult, RunResult, Workflow, WorkflowResult, WorkflowState, SwarmConfig, SwarmResult, SwarmRunOptions, StreamingWorkflowEvent, SwarmEvent, SwarmMessage, ToolApprovalDecision, PendingApproval, ReadinessResponse, ReadinessCheckStatus, RunLimits, AnonymousPolicy, AuthorizeThread, };
|
|
7
7
|
export interface AuthContext {
|
|
8
8
|
userId?: string;
|
|
@@ -90,6 +90,14 @@ export interface CogitatorAppOptions {
|
|
|
90
90
|
* never come from the request body. WebSocket runs use `WebSocketConfig.deps`.
|
|
91
91
|
*/
|
|
92
92
|
deps?: DepsFunction;
|
|
93
|
+
/**
|
|
94
|
+
* Where workflow runs keep their checkpoints. With a store, a run with
|
|
95
|
+
* `options.checkpoint: true` saves checkpoints owned by the caller, its answer names the
|
|
96
|
+
* last one as `checkpointId`, and `POST /workflows/:name/resume` (and `/resume/stream`)
|
|
97
|
+
* resumes from one of them. Without it such a run is refused with 400 and every resume
|
|
98
|
+
* answers 404 `CHECKPOINT_NOT_FOUND`.
|
|
99
|
+
*/
|
|
100
|
+
workflowCheckpoints?: CheckpointStore;
|
|
93
101
|
}
|
|
94
102
|
export interface CogitatorState {
|
|
95
103
|
cogitator: RouteContext;
|
|
@@ -127,6 +135,8 @@ export interface RouteContext {
|
|
|
127
135
|
* not use it: WebSocket runs take `WebSocketConfig.deps`. Default: none
|
|
128
136
|
*/
|
|
129
137
|
deps?: DepsFunction;
|
|
138
|
+
/** The `workflowCheckpoints` option. Default: none, workflow runs keep no checkpoints */
|
|
139
|
+
workflowCheckpoints?: CheckpointStore;
|
|
130
140
|
}
|
|
131
141
|
export interface AgentListResponse {
|
|
132
142
|
agents: Array<{
|
|
@@ -184,7 +194,10 @@ export interface WorkflowRunResponse {
|
|
|
184
194
|
output: unknown;
|
|
185
195
|
duration: number;
|
|
186
196
|
}>;
|
|
197
|
+
/** The last checkpoint of a run with `options.checkpoint` or of a resume */
|
|
198
|
+
checkpointId?: string;
|
|
187
199
|
}
|
|
200
|
+
export type WorkflowResumeRequest = WorkflowResumeRequestBody;
|
|
188
201
|
export interface WorkflowStatusResponse {
|
|
189
202
|
runId: string;
|
|
190
203
|
status: 'pending' | 'running' | 'completed' | 'failed';
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"results.d.ts","sourceRoot":"","sources":["../../src/utils/results.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,aAAa,EACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEzE,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9F;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,CAAC,aAAa,CAAC,GAAG,mBAAmB,
|
|
1
|
+
{"version":3,"file":"results.d.ts","sourceRoot":"","sources":["../../src/utils/results.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,aAAa,EACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEzE,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9F;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,CAAC,aAAa,CAAC,GAAG,mBAAmB,CAShG;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,oBAAoB,CAOnF;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,gBAAgB,IAAI,kBAAkB,CAAA;CAAE,EACjG,MAAM,EAAE,cAAc,GACrB,gBAAgB,CAmBlB"}
|
package/dist/utils/results.js
CHANGED
|
@@ -5,6 +5,7 @@ export function toWorkflowRunResponse(result) {
|
|
|
5
5
|
state: result.state,
|
|
6
6
|
duration: result.duration,
|
|
7
7
|
nodeResults: Object.fromEntries(result.nodeResults),
|
|
8
|
+
...(result.checkpointId !== undefined && { checkpointId: result.checkpointId }),
|
|
8
9
|
};
|
|
9
10
|
}
|
|
10
11
|
export function serializeSwarmUsage(usage) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"results.js","sourceRoot":"","sources":["../../src/utils/results.ts"],"names":[],"mappings":"AAeA,MAAM,UAAU,qBAAqB,CAAC,MAAqC;IACzE,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"results.js","sourceRoot":"","sources":["../../src/utils/results.ts"],"names":[],"mappings":"AAeA,MAAM,UAAU,qBAAqB,CAAC,MAAqC;IACzE,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC;QACnD,GAAG,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC;KAChF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAyB;IAC3D,OAAO;QACL,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC;KACjD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,KAAiG,EACjG,MAAsB;IAEtB,MAAM,YAAY,GAA4B,EAAE,CAAC;IACjD,KAAK,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QAC3D,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,CAAC;IACrF,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,gBAAgB,EAAE,CAAC;IACvC,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,EAAE;QACjB,SAAS,EAAE,KAAK,CAAC,IAAI;QACrB,QAAQ,EAAE,KAAK,CAAC,YAAY;QAC5B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,YAAY;QACZ,KAAK,EAAE;YACL,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,WAAW,EAAE,KAAK,CAAC,WAAW;SAC/B;KACF,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cogitator-ai/koa",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.1",
|
|
4
4
|
"description": "Koa server adapter for Cogitator AI runtime",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -20,23 +20,23 @@
|
|
|
20
20
|
"node": ">=22.12.0"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@cogitator-ai/core": "0.
|
|
24
|
-
"@cogitator-ai/memory": "0.24.
|
|
25
|
-
"@cogitator-ai/types": "0.
|
|
26
|
-
"@cogitator-ai/server-shared": "0.
|
|
23
|
+
"@cogitator-ai/core": "0.58.0",
|
|
24
|
+
"@cogitator-ai/memory": "0.24.5",
|
|
25
|
+
"@cogitator-ai/types": "0.63.0",
|
|
26
|
+
"@cogitator-ai/server-shared": "0.9.0"
|
|
27
27
|
},
|
|
28
28
|
"peerDependencies": {
|
|
29
29
|
"koa": ">=2.15.0",
|
|
30
30
|
"@koa/router": ">=12.0.0"
|
|
31
31
|
},
|
|
32
32
|
"optionalDependencies": {
|
|
33
|
-
"@cogitator-ai/workflows": "0.14.
|
|
34
|
-
"@cogitator-ai/swarms": "0.14.
|
|
33
|
+
"@cogitator-ai/workflows": "0.14.4",
|
|
34
|
+
"@cogitator-ai/swarms": "0.14.4",
|
|
35
35
|
"ws": "^8.22.0"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"@cogitator-ai/workflows": "0.14.
|
|
39
|
-
"@cogitator-ai/swarms": "0.14.
|
|
38
|
+
"@cogitator-ai/workflows": "0.14.4",
|
|
39
|
+
"@cogitator-ai/swarms": "0.14.4",
|
|
40
40
|
"supertest": "^7.3.0",
|
|
41
41
|
"@types/supertest": "^7.2.1",
|
|
42
42
|
"vitest": "^5.0.3",
|