@cogitator-ai/hono 0.6.11 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -15
- package/dist/middleware/context.d.ts.map +1 -1
- package/dist/middleware/context.js +3 -1
- package/dist/middleware/context.js.map +1 -1
- package/dist/routes/agents.d.ts.map +1 -1
- package/dist/routes/agents.js +17 -75
- package/dist/routes/agents.js.map +1 -1
- package/dist/routes/swarms.d.ts.map +1 -1
- package/dist/routes/swarms.js +52 -58
- package/dist/routes/swarms.js.map +1 -1
- package/dist/routes/threads.d.ts.map +1 -1
- package/dist/routes/threads.js +6 -4
- package/dist/routes/threads.js.map +1 -1
- package/dist/routes/workflows.js +4 -4
- package/dist/routes/workflows.js.map +1 -1
- package/dist/streaming/hono-stream-writer.d.ts +11 -2
- package/dist/streaming/hono-stream-writer.d.ts.map +1 -1
- package/dist/streaming/hono-stream-writer.js +24 -6
- package/dist/streaming/hono-stream-writer.js.map +1 -1
- package/dist/types.d.ts +18 -18
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/request.d.ts +11 -8
- package/dist/utils/request.d.ts.map +1 -1
- package/dist/utils/request.js +12 -13
- package/dist/utils/request.js.map +1 -1
- package/dist/utils/results.d.ts +2 -5
- package/dist/utils/results.d.ts.map +1 -1
- package/dist/utils/results.js +0 -17
- package/dist/utils/results.js.map +1 -1
- package/dist/websocket/handler.d.ts.map +1 -1
- package/dist/websocket/handler.js +32 -43
- package/dist/websocket/handler.js.map +1 -1
- package/package.json +11 -10
- package/dist/utils/validation.d.ts +0 -12
- package/dist/utils/validation.d.ts.map +0 -1
- package/dist/utils/validation.js +0 -114
- package/dist/utils/validation.js.map +0 -1
package/README.md
CHANGED
|
@@ -44,26 +44,33 @@ Creates a Hono sub-application 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
|
-
| `enableWebSocket`
|
|
57
|
-
| `websocket`
|
|
58
|
-
| `bodyLimit`
|
|
59
|
-
| `sseHeartbeatMs`
|
|
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` | `(c) => AuthContext \| undefined` (sync or async), receives the Hono Context, throw to answer `401 UNAUTHORIZED` |
|
|
54
|
+
| `enableSwagger` | `boolean` | Serve `/openapi.json` and Swagger UI at `/docs` |
|
|
55
|
+
| `swagger` | `SwaggerConfig` | Swagger configuration |
|
|
56
|
+
| `enableWebSocket` | `boolean` | Enable the WebSocket endpoint |
|
|
57
|
+
| `websocket` | `WebSocketConfig` | `{ path?, maxPayloadSize?, upgradeWebSocket? }` (see below) |
|
|
58
|
+
| `bodyLimit` | `number` | Max request body size in bytes (default 1 MiB) |
|
|
59
|
+
| `sseHeartbeatMs` | `number` | How often SSE streams write a `: keep-alive` comment while a run is silent (default `5000`, `0` turns it off) |
|
|
60
|
+
| `acceptContext` | `boolean \| string[]` | Keys of a run `context` clients may send: none by default, a list, or `true` for any (it goes into the system prompt) |
|
|
61
|
+
| `threadMessageRoles` | `ThreadMessageRole[]` | Roles `POST /threads/:id/messages` accepts (default `user` and `assistant`) |
|
|
60
62
|
|
|
61
63
|
## Request Handling
|
|
62
64
|
|
|
63
65
|
- 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.
|
|
64
66
|
- 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).
|
|
65
|
-
- Workflow runs accept an optional body. `options` is limited to `maxConcurrency
|
|
66
|
-
- Thread messages accept `role` of `user
|
|
67
|
+
- Workflow runs accept an optional body. `options` is limited to `maxConcurrency` and `maxIterations` (positive integers). Any other option is dropped and a wrongly typed one returns `400 INVALID_INPUT`. `checkpoint: true` is refused, since the server runs each workflow on a fresh executor and keeps no checkpoint store to resume from.
|
|
68
|
+
- Thread messages accept `role` of `user` or `assistant` (more with `threadMessageRoles`), `metadata` is stored with the entry and a token estimate is recorded.
|
|
69
|
+
- 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.
|
|
70
|
+
- 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.
|
|
71
|
+
- `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.
|
|
72
|
+
- 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.
|
|
73
|
+
- 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.
|
|
67
74
|
- Thread 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`.
|
|
68
75
|
- Bodies above `bodyLimit` return `413 PAYLOAD_TOO_LARGE`.
|
|
69
76
|
- `CogitatorError`s are returned with their HTTP status and code (for example `429 LLM_RATE_LIMITED`). Any other error is logged and returned as `500 Internal server error` (code `INTERNAL_ERROR`) without internal details; the same masking applies to SSE `error` events, `node_error`/`agent_error` stream events and WebSocket errors. A workflow that finishes with an error is answered like a thrown error (its `CogitatorError` status, otherwise `500`), never as a successful result. Missing optional packages (`@cogitator-ai/workflows`, `@cogitator-ai/swarms`) answer `501 UNIMPLEMENTED`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/middleware/context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/middleware/context.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEhE,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,mBAAmB,mEAiBhE"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createMiddleware } from 'hono/factory';
|
|
2
|
-
import { generateId, resolveSseHeartbeatMs } from '@cogitator-ai/server-shared';
|
|
2
|
+
import { DEFAULT_THREAD_MESSAGE_ROLES, generateId, resolveSseHeartbeatMs, } from '@cogitator-ai/server-shared';
|
|
3
3
|
export function createContextMiddleware(opts) {
|
|
4
4
|
const sseHeartbeatMs = resolveSseHeartbeatMs(opts.sseHeartbeatMs);
|
|
5
5
|
return createMiddleware(async (c, next) => {
|
|
@@ -9,6 +9,8 @@ export function createContextMiddleware(opts) {
|
|
|
9
9
|
workflows: opts.workflows ?? {},
|
|
10
10
|
swarms: opts.swarms ?? {},
|
|
11
11
|
sseHeartbeatMs,
|
|
12
|
+
acceptContext: opts.acceptContext ?? false,
|
|
13
|
+
threadMessageRoles: opts.threadMessageRoles ?? DEFAULT_THREAD_MESSAGE_ROLES,
|
|
12
14
|
});
|
|
13
15
|
c.set('cogitatorRequestId', generateId('req'));
|
|
14
16
|
c.set('cogitatorStartTime', Date.now());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/middleware/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/middleware/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EACL,4BAA4B,EAC5B,UAAU,EACV,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AAGrC,MAAM,UAAU,uBAAuB,CAAC,IAAyB;IAC/D,MAAM,cAAc,GAAG,qBAAqB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAClE,OAAO,gBAAgB,CAAU,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;QACjD,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE;YACjB,OAAO,EAAE,IAAI,CAAC,SAAS;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;YAC/B,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;YACzB,cAAc;YACd,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,KAAK;YAC1C,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,IAAI,4BAA4B;SAC5E,CAAC,CAAC;QACH,CAAC,CAAC,GAAG,CAAC,oBAAoB,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAExC,MAAM,IAAI,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/routes/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/routes/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAS5B,OAAO,KAAK,EAAE,OAAO,EAAqB,MAAM,aAAa,CAAC;AAa9D,wBAAgB,iBAAiB,IAAI,IAAI,CAAC,OAAO,CAAC,CAoIjD"}
|
package/dist/routes/agents.js
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { Hono } from 'hono';
|
|
2
2
|
import { streamSSE } from 'hono/streaming';
|
|
3
|
-
import {
|
|
3
|
+
import { AgentStreamSession, parseResumeRequest, parseRunRequest, toAgentRunResponse, } from '@cogitator-ai/server-shared';
|
|
4
4
|
import { HonoStreamWriter } from '../streaming/hono-stream-writer.js';
|
|
5
5
|
import { getOwn } from '../utils/lookup.js';
|
|
6
6
|
import { resolveError } from '../utils/errors.js';
|
|
7
|
-
import { createRequestAbortController, holdConnectionOpen, errorResponse, invalidInput,
|
|
8
|
-
import { toAgentRunResponse } from '../utils/results.js';
|
|
9
|
-
import { parseAgentResumeRequest, parseAgentRunRequest } from '../utils/validation.js';
|
|
7
|
+
import { createRequestAbortController, holdConnectionOpen, errorResponse, invalidInput, bodyRefused, readJsonBody, requestAborted, } from '../utils/request.js';
|
|
10
8
|
export function createAgentRoutes() {
|
|
11
9
|
const app = new Hono();
|
|
12
10
|
app.get('/agents', (c) => {
|
|
@@ -28,8 +26,8 @@ export function createAgentRoutes() {
|
|
|
28
26
|
}
|
|
29
27
|
const body = await readJsonBody(c);
|
|
30
28
|
if (!body.ok)
|
|
31
|
-
return
|
|
32
|
-
const parsed =
|
|
29
|
+
return bodyRefused(c, body.refusal);
|
|
30
|
+
const parsed = parseRunRequest(body.value, { acceptContext: ctx.acceptContext });
|
|
33
31
|
if (!parsed.ok)
|
|
34
32
|
return invalidInput(c, parsed.message);
|
|
35
33
|
const userId = c.get('cogitatorAuth')?.userId;
|
|
@@ -58,8 +56,8 @@ export function createAgentRoutes() {
|
|
|
58
56
|
}
|
|
59
57
|
const body = await readJsonBody(c);
|
|
60
58
|
if (!body.ok)
|
|
61
|
-
return
|
|
62
|
-
const parsed =
|
|
59
|
+
return bodyRefused(c, body.refusal);
|
|
60
|
+
const parsed = parseResumeRequest(body.value);
|
|
63
61
|
if (!parsed.ok)
|
|
64
62
|
return invalidInput(c, parsed.message);
|
|
65
63
|
const { threadId, decisions, defaultDecision } = parsed.value;
|
|
@@ -90,97 +88,41 @@ export function createAgentRoutes() {
|
|
|
90
88
|
}
|
|
91
89
|
const body = await readJsonBody(c);
|
|
92
90
|
if (!body.ok)
|
|
93
|
-
return
|
|
94
|
-
const parsed =
|
|
91
|
+
return bodyRefused(c, body.refusal);
|
|
92
|
+
const parsed = parseRunRequest(body.value, { acceptContext: ctx.acceptContext });
|
|
95
93
|
if (!parsed.ok)
|
|
96
94
|
return invalidInput(c, parsed.message);
|
|
97
95
|
const userId = c.get('cogitatorAuth')?.userId;
|
|
98
96
|
const abortController = createRequestAbortController(c);
|
|
99
97
|
return streamSSE(c, async (stream) => {
|
|
100
98
|
const writer = new HonoStreamWriter(stream, { heartbeatMs: ctx.sseHeartbeatMs });
|
|
101
|
-
const
|
|
99
|
+
const session = new AgentStreamSession((event) => void writer.send(event), {
|
|
100
|
+
threadId: parsed.value.threadId,
|
|
101
|
+
});
|
|
102
102
|
stream.onAbort(() => {
|
|
103
103
|
writer.close();
|
|
104
104
|
abortController.abort();
|
|
105
105
|
});
|
|
106
|
-
let textId = null;
|
|
107
|
-
let reasoningId = null;
|
|
108
|
-
let streamedText = false;
|
|
109
|
-
const endText = () => {
|
|
110
|
-
if (textId === null)
|
|
111
|
-
return;
|
|
112
|
-
void writer.textEnd(textId);
|
|
113
|
-
textId = null;
|
|
114
|
-
};
|
|
115
|
-
const endReasoning = () => {
|
|
116
|
-
if (reasoningId === null)
|
|
117
|
-
return;
|
|
118
|
-
void writer.reasoningEnd(reasoningId);
|
|
119
|
-
reasoningId = null;
|
|
120
|
-
};
|
|
121
|
-
const endParts = () => {
|
|
122
|
-
endReasoning();
|
|
123
|
-
endText();
|
|
124
|
-
};
|
|
125
|
-
const writeText = (delta) => {
|
|
126
|
-
if (!delta)
|
|
127
|
-
return;
|
|
128
|
-
if (textId === null) {
|
|
129
|
-
endReasoning();
|
|
130
|
-
textId = generateId('txt');
|
|
131
|
-
void writer.textStart(textId);
|
|
132
|
-
}
|
|
133
|
-
void writer.textDelta(textId, delta);
|
|
134
|
-
};
|
|
135
|
-
const writeReasoning = (delta) => {
|
|
136
|
-
if (!delta)
|
|
137
|
-
return;
|
|
138
|
-
if (reasoningId === null) {
|
|
139
|
-
endText();
|
|
140
|
-
reasoningId = generateId('rsn');
|
|
141
|
-
void writer.reasoningStart(reasoningId);
|
|
142
|
-
}
|
|
143
|
-
void writer.reasoningDelta(reasoningId, delta);
|
|
144
|
-
};
|
|
145
106
|
try {
|
|
146
|
-
|
|
107
|
+
session.start();
|
|
147
108
|
const result = await ctx.runtime.run(agent, {
|
|
148
109
|
...parsed.value,
|
|
110
|
+
threadId: session.threadId,
|
|
149
111
|
userId,
|
|
150
112
|
stream: true,
|
|
151
113
|
signal: abortController.signal,
|
|
152
|
-
|
|
153
|
-
if (token)
|
|
154
|
-
streamedText = true;
|
|
155
|
-
writeText(token);
|
|
156
|
-
},
|
|
157
|
-
onReasoning: writeReasoning,
|
|
158
|
-
onToolCall: (toolCall) => {
|
|
159
|
-
endParts();
|
|
160
|
-
void writer.toolCallStart(toolCall.id, toolCall.name);
|
|
161
|
-
void writer.toolCallDelta(toolCall.id, JSON.stringify(toolCall.arguments));
|
|
162
|
-
void writer.toolCallEnd(toolCall.id);
|
|
163
|
-
},
|
|
164
|
-
onToolResult: (toolResult) => {
|
|
165
|
-
void writer.toolResult(generateId('res'), toolResult.callId, toolResult.result);
|
|
166
|
-
},
|
|
114
|
+
...session.callbacks,
|
|
167
115
|
});
|
|
168
|
-
|
|
169
|
-
writeText(result.output);
|
|
170
|
-
endParts();
|
|
171
|
-
if (result.status === 'paused' && result.pendingApprovals) {
|
|
172
|
-
await writer.approvalRequired(result.threadId, result.pendingApprovals);
|
|
173
|
-
}
|
|
174
|
-
await writer.finish(messageId, result.usage);
|
|
116
|
+
session.complete(result);
|
|
175
117
|
}
|
|
176
118
|
catch (error) {
|
|
177
119
|
if (abortController.signal.aborted)
|
|
178
120
|
return;
|
|
179
|
-
endParts();
|
|
180
121
|
const { body: errorBody } = resolveError(error, 'Agent stream error');
|
|
181
|
-
|
|
122
|
+
session.fail(errorBody.error.message, errorBody.error.code);
|
|
182
123
|
}
|
|
183
124
|
finally {
|
|
125
|
+
await writer.flush();
|
|
184
126
|
writer.close();
|
|
185
127
|
}
|
|
186
128
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/routes/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,
|
|
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,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"swarms.d.ts","sourceRoot":"","sources":["../../src/routes/swarms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAS5B,OAAO,KAAK,EAAE,OAAO,EAAyC,MAAM,aAAa,CAAC;AAelF,wBAAgB,iBAAiB,IAAI,IAAI,CAAC,OAAO,CAAC,CAqKjD"}
|
package/dist/routes/swarms.js
CHANGED
|
@@ -1,26 +1,17 @@
|
|
|
1
1
|
import { Hono } from 'hono';
|
|
2
2
|
import { streamSSE } from 'hono/streaming';
|
|
3
|
-
import { generateId } from '@cogitator-ai/server-shared';
|
|
3
|
+
import { generateId, parseSwarmRunRequest, swarmAgentNames, withSwarm, } from '@cogitator-ai/server-shared';
|
|
4
4
|
import { HonoStreamWriter } from '../streaming/hono-stream-writer.js';
|
|
5
5
|
import { getOwn } from '../utils/lookup.js';
|
|
6
6
|
import { isModuleNotFoundError, resolveError } from '../utils/errors.js';
|
|
7
|
-
import { createRequestAbortController, holdConnectionOpen, errorResponse, invalidInput,
|
|
7
|
+
import { createRequestAbortController, holdConnectionOpen, errorResponse, invalidInput, bodyRefused, readJsonBody, requestAborted, } from '../utils/request.js';
|
|
8
8
|
import { serializeSwarmUsage, toSwarmRunResponse } from '../utils/results.js';
|
|
9
|
-
import { parseSwarmRunRequest } from '../utils/validation.js';
|
|
10
9
|
export function createSwarmRoutes() {
|
|
11
10
|
const app = new Hono();
|
|
12
11
|
app.get('/swarms', (c) => {
|
|
13
12
|
const ctx = c.get('cogitator');
|
|
14
13
|
const swarmList = Object.entries(ctx.swarms).map(([name, config]) => {
|
|
15
|
-
const agents =
|
|
16
|
-
if (config.supervisor)
|
|
17
|
-
agents.push(config.supervisor.name);
|
|
18
|
-
if (config.workers)
|
|
19
|
-
agents.push(...config.workers.map((w) => w.name));
|
|
20
|
-
if (config.agents)
|
|
21
|
-
agents.push(...config.agents.map((a) => a.name));
|
|
22
|
-
if (config.moderator)
|
|
23
|
-
agents.push(config.moderator.name);
|
|
14
|
+
const agents = swarmAgentNames(config);
|
|
24
15
|
return { name, strategy: config.strategy, agents };
|
|
25
16
|
});
|
|
26
17
|
const response = { swarms: swarmList };
|
|
@@ -35,25 +26,27 @@ export function createSwarmRoutes() {
|
|
|
35
26
|
}
|
|
36
27
|
const body = await readJsonBody(c);
|
|
37
28
|
if (!body.ok)
|
|
38
|
-
return
|
|
39
|
-
const parsed = parseSwarmRunRequest(body.value);
|
|
29
|
+
return bodyRefused(c, body.refusal);
|
|
30
|
+
const parsed = parseSwarmRunRequest(body.value, { acceptContext: ctx.acceptContext });
|
|
40
31
|
if (!parsed.ok)
|
|
41
32
|
return invalidInput(c, parsed.message);
|
|
42
33
|
holdConnectionOpen(c);
|
|
43
34
|
const abortController = createRequestAbortController(c);
|
|
44
35
|
try {
|
|
45
36
|
const { Swarm } = await import('@cogitator-ai/swarms');
|
|
46
|
-
const swarm = new Swarm(ctx.runtime, swarmConfig);
|
|
47
37
|
if (abortController.signal.aborted)
|
|
48
38
|
return requestAborted(c);
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
39
|
+
const response = await withSwarm(new Swarm(ctx.runtime, swarmConfig), async (swarm) => {
|
|
40
|
+
abortController.signal.addEventListener('abort', () => swarm.abort(), { once: true });
|
|
41
|
+
const result = await swarm.run({
|
|
42
|
+
...parsed.value,
|
|
43
|
+
userId: c.get('cogitatorAuth')?.userId,
|
|
44
|
+
});
|
|
45
|
+
return toSwarmRunResponse(swarm, result);
|
|
53
46
|
});
|
|
54
47
|
if (abortController.signal.aborted)
|
|
55
48
|
return requestAborted(c);
|
|
56
|
-
return c.json(
|
|
49
|
+
return c.json(response);
|
|
57
50
|
}
|
|
58
51
|
catch (error) {
|
|
59
52
|
if (abortController.signal.aborted)
|
|
@@ -73,8 +66,8 @@ export function createSwarmRoutes() {
|
|
|
73
66
|
}
|
|
74
67
|
const body = await readJsonBody(c);
|
|
75
68
|
if (!body.ok)
|
|
76
|
-
return
|
|
77
|
-
const parsed = parseSwarmRunRequest(body.value);
|
|
69
|
+
return bodyRefused(c, body.refusal);
|
|
70
|
+
const parsed = parseSwarmRunRequest(body.value, { acceptContext: ctx.acceptContext });
|
|
78
71
|
if (!parsed.ok)
|
|
79
72
|
return invalidInput(c, parsed.message);
|
|
80
73
|
const abortController = createRequestAbortController(c);
|
|
@@ -87,45 +80,46 @@ export function createSwarmRoutes() {
|
|
|
87
80
|
});
|
|
88
81
|
try {
|
|
89
82
|
const { Swarm } = await import('@cogitator-ai/swarms');
|
|
90
|
-
const swarm = new Swarm(ctx.runtime, swarmConfig);
|
|
91
|
-
if (abortController.signal.aborted)
|
|
92
|
-
return;
|
|
93
|
-
abortController.signal.addEventListener('abort', () => swarm.abort(), { once: true });
|
|
94
|
-
await writer.start(messageId);
|
|
95
|
-
const result = await swarm.run({
|
|
96
|
-
...parsed.value,
|
|
97
|
-
userId: c.get('cogitatorAuth')?.userId,
|
|
98
|
-
onAgentStart: (agentName) => {
|
|
99
|
-
void writer.swarmEvent('agent_start', { agentName, timestamp: Date.now() });
|
|
100
|
-
},
|
|
101
|
-
onAgentComplete: (agentName, agentResult) => {
|
|
102
|
-
void writer.swarmEvent('agent_complete', {
|
|
103
|
-
agentName,
|
|
104
|
-
output: agentResult.output,
|
|
105
|
-
timestamp: Date.now(),
|
|
106
|
-
});
|
|
107
|
-
},
|
|
108
|
-
onAgentError: (agentName, error) => {
|
|
109
|
-
void writer.swarmEvent('agent_error', {
|
|
110
|
-
agentName,
|
|
111
|
-
error: resolveError(error, `Swarm agent ${agentName} error`).body.error.message,
|
|
112
|
-
});
|
|
113
|
-
},
|
|
114
|
-
onMessage: (message) => {
|
|
115
|
-
void writer.swarmEvent('message', message);
|
|
116
|
-
},
|
|
117
|
-
onEvent: (event) => {
|
|
118
|
-
void writer.swarmEvent(event.type, event.data);
|
|
119
|
-
},
|
|
120
|
-
});
|
|
121
83
|
if (abortController.signal.aborted)
|
|
122
84
|
return;
|
|
123
|
-
await
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
85
|
+
await withSwarm(new Swarm(ctx.runtime, swarmConfig), async (swarm) => {
|
|
86
|
+
abortController.signal.addEventListener('abort', () => swarm.abort(), { once: true });
|
|
87
|
+
await writer.start(messageId);
|
|
88
|
+
const result = await swarm.run({
|
|
89
|
+
...parsed.value,
|
|
90
|
+
userId: c.get('cogitatorAuth')?.userId,
|
|
91
|
+
onAgentStart: (agentName) => {
|
|
92
|
+
void writer.swarmEvent('agent_start', { agentName, timestamp: Date.now() });
|
|
93
|
+
},
|
|
94
|
+
onAgentComplete: (agentName, agentResult) => {
|
|
95
|
+
void writer.swarmEvent('agent_complete', {
|
|
96
|
+
agentName,
|
|
97
|
+
output: agentResult.output,
|
|
98
|
+
timestamp: Date.now(),
|
|
99
|
+
});
|
|
100
|
+
},
|
|
101
|
+
onAgentError: (agentName, error) => {
|
|
102
|
+
void writer.swarmEvent('agent_error', {
|
|
103
|
+
agentName,
|
|
104
|
+
error: resolveError(error, `Swarm agent ${agentName} error`).body.error.message,
|
|
105
|
+
});
|
|
106
|
+
},
|
|
107
|
+
onMessage: (message) => {
|
|
108
|
+
void writer.swarmEvent('message', message);
|
|
109
|
+
},
|
|
110
|
+
onEvent: (event) => {
|
|
111
|
+
void writer.swarmEvent(event.type, event.data);
|
|
112
|
+
},
|
|
113
|
+
});
|
|
114
|
+
if (abortController.signal.aborted)
|
|
115
|
+
return;
|
|
116
|
+
await writer.swarmEvent('swarm_completed', {
|
|
117
|
+
swarmId: swarm.id,
|
|
118
|
+
output: result.output,
|
|
119
|
+
usage: serializeSwarmUsage(swarm.getResourceUsage()),
|
|
120
|
+
});
|
|
121
|
+
await writer.finish(messageId);
|
|
127
122
|
});
|
|
128
|
-
await writer.finish(messageId);
|
|
129
123
|
}
|
|
130
124
|
catch (error) {
|
|
131
125
|
if (abortController.signal.aborted)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swarms.js","sourceRoot":"","sources":["../../src/routes/swarms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,
|
|
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,IAAI,EAAE,MAAM,MAAM,CAAC;AAK5B,OAAO,KAAK,EAAE,OAAO,EAAkB,MAAM,aAAa,CAAC;AAQ3D,wBAAgB,kBAAkB,IAAI,IAAI,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"threads.d.ts","sourceRoot":"","sources":["../../src/routes/threads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAK5B,OAAO,KAAK,EAAE,OAAO,EAAkB,MAAM,aAAa,CAAC;AAQ3D,wBAAgB,kBAAkB,IAAI,IAAI,CAAC,OAAO,CAAC,CAuFlD"}
|
package/dist/routes/threads.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Hono } from 'hono';
|
|
2
2
|
import { assertThreadAccess, ensureThreadAccess } from '@cogitator-ai/core';
|
|
3
3
|
import { countMessageTokens } from '@cogitator-ai/memory';
|
|
4
|
-
import { errorResponse, invalidInput,
|
|
5
|
-
import { parseAddMessageRequest } from '
|
|
4
|
+
import { bodyRefused, errorResponse, invalidInput, readJsonBody } from '../utils/request.js';
|
|
5
|
+
import { parseAddMessageRequest } from '@cogitator-ai/server-shared';
|
|
6
6
|
function memoryUnavailable(c) {
|
|
7
7
|
return c.json({ error: { message: 'Memory not configured', code: 'UNAVAILABLE' } }, 503);
|
|
8
8
|
}
|
|
@@ -41,8 +41,10 @@ export function createThreadRoutes() {
|
|
|
41
41
|
const id = c.req.param('id');
|
|
42
42
|
const body = await readJsonBody(c);
|
|
43
43
|
if (!body.ok)
|
|
44
|
-
return
|
|
45
|
-
const parsed = parseAddMessageRequest(body.value
|
|
44
|
+
return bodyRefused(c, body.refusal);
|
|
45
|
+
const parsed = parseAddMessageRequest(body.value, {
|
|
46
|
+
roles: c.get('cogitator').threadMessageRoles,
|
|
47
|
+
});
|
|
46
48
|
if (!parsed.ok)
|
|
47
49
|
return invalidInput(c, parsed.message);
|
|
48
50
|
const message = { role: parsed.value.role, content: parsed.value.content };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"threads.js","sourceRoot":"","sources":["../../src/routes/threads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"threads.js","sourceRoot":"","sources":["../../src/routes/threads.ts"],"names":[],"mappings":"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"}
|
package/dist/routes/workflows.js
CHANGED
|
@@ -4,9 +4,9 @@ import { generateId } from '@cogitator-ai/server-shared';
|
|
|
4
4
|
import { HonoStreamWriter } from '../streaming/hono-stream-writer.js';
|
|
5
5
|
import { getOwn } from '../utils/lookup.js';
|
|
6
6
|
import { isModuleNotFoundError, resolveError } from '../utils/errors.js';
|
|
7
|
-
import { createRequestAbortController, holdConnectionOpen, errorResponse, invalidInput,
|
|
7
|
+
import { createRequestAbortController, holdConnectionOpen, errorResponse, invalidInput, bodyRefused, readJsonBody, requestAborted, } from '../utils/request.js';
|
|
8
8
|
import { toWorkflowRunResponse } from '../utils/results.js';
|
|
9
|
-
import { parseWorkflowRunRequest } from '
|
|
9
|
+
import { parseWorkflowRunRequest } from '@cogitator-ai/server-shared';
|
|
10
10
|
export function createWorkflowRoutes() {
|
|
11
11
|
const app = new Hono();
|
|
12
12
|
app.get('/workflows', (c) => {
|
|
@@ -28,7 +28,7 @@ export function createWorkflowRoutes() {
|
|
|
28
28
|
}
|
|
29
29
|
const body = await readJsonBody(c);
|
|
30
30
|
if (!body.ok)
|
|
31
|
-
return
|
|
31
|
+
return bodyRefused(c, body.refusal);
|
|
32
32
|
const parsed = parseWorkflowRunRequest(body.value);
|
|
33
33
|
if (!parsed.ok)
|
|
34
34
|
return invalidInput(c, parsed.message);
|
|
@@ -65,7 +65,7 @@ export function createWorkflowRoutes() {
|
|
|
65
65
|
}
|
|
66
66
|
const body = await readJsonBody(c);
|
|
67
67
|
if (!body.ok)
|
|
68
|
-
return
|
|
68
|
+
return bodyRefused(c, body.refusal);
|
|
69
69
|
const parsed = parseWorkflowRunRequest(body.value);
|
|
70
70
|
if (!parsed.ok)
|
|
71
71
|
return invalidInput(c, parsed.message);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../src/routes/workflows.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAEtE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EACL,4BAA4B,EAC5B,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,cAAc,GACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../src/routes/workflows.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAEtE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EACL,4BAA4B,EAC5B,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,cAAc,GACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,MAAM,UAAU,oBAAoB;IAClC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAW,CAAC;IAEhC,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE;QAC1B,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC/B,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5E,IAAI;YACJ,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SACzC,CAAC,CAAC,CAAC;QAEJ,MAAM,QAAQ,GAAyB,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;QACnE,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAE7C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,aAAa,IAAI,aAAa,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QAChG,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAEvD,kBAAkB,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,eAAe,GAAG,4BAA4B,CAAC,CAAC,CAAC,CAAC;QAExD,IAAI,CAAC;YACH,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;YACrE,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACnD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE;gBAClE,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO;gBACvB,MAAM,EAAE,eAAe,CAAC,MAAM;aAC/B,CAAC,CAAC;YAEH,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC;YAC7D,IAAI,MAAM,CAAC,KAAK;gBAAE,OAAO,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;YAE9E,OAAO,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC;YAC7D,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjC,OAAO,CAAC,CAAC,IAAI,CACX,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,iCAAiC,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAChF,GAAG,CACJ,CAAC;YACJ,CAAC;YACD,OAAO,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,oBAAoB,CAAC,CAAC;QACvD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,yBAAyB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC9C,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAE7C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,aAAa,IAAI,aAAa,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QAChG,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAEvD,MAAM,eAAe,GAAG,4BAA4B,CAAC,CAAC,CAAC,CAAC;QAExD,OAAO,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACnC,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC;YACjF,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YAEnC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;gBAClB,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,eAAe,CAAC,KAAK,EAAE,CAAC;YAC1B,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC;gBACH,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;gBACrE,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAEnD,MAAM,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAE9B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE;oBAClE,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO;oBACvB,MAAM,EAAE,eAAe,CAAC,MAAM;oBAC9B,WAAW,EAAE,CAAC,IAAY,EAAE,EAAE;wBAC5B,KAAK,MAAM,CAAC,aAAa,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBACvF,CAAC;oBACD,cAAc,EAAE,CAAC,IAAY,EAAE,MAAe,EAAE,QAAgB,EAAE,EAAE;wBAClE,KAAK,MAAM,CAAC,aAAa,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;oBACpF,CAAC;oBACD,WAAW,EAAE,CAAC,IAAY,EAAE,KAAY,EAAE,EAAE;wBAC1C,KAAK,MAAM,CAAC,aAAa,CAAC,YAAY,EAAE;4BACtC,QAAQ,EAAE,IAAI;4BACd,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,iBAAiB,IAAI,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO;yBAC7E,CAAC,CAAC;oBACL,CAAC;oBACD,cAAc,EAAE,CAAC,IAAY,EAAE,QAAgB,EAAE,EAAE;wBACjD,KAAK,MAAM,CAAC,aAAa,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;oBAC3E,CAAC;iBACF,CAAC,CAAC;gBAEH,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO;oBAAE,OAAO;gBAE3C,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBACjB,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;oBAChF,MAAM,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAClE,OAAO;gBACT,CAAC;gBAED,MAAM,MAAM,CAAC,aAAa,CAAC,oBAAoB,EAAE;oBAC/C,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;iBAC1B,CAAC,CAAC;gBACH,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACjC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO;oBAAE,OAAO;gBAC3C,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;oBACjC,MAAM,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,eAAe,CAAC,CAAC;gBACzE,CAAC;qBAAM,CAAC;oBACN,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;oBACzE,MAAM,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACpE,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC"}
|