@cogitator-ai/hono 0.8.6 → 0.9.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 +77 -26
- package/dist/app.d.ts +5 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +16 -4
- package/dist/app.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/middleware/auth.d.ts +6 -0
- package/dist/middleware/auth.d.ts.map +1 -1
- package/dist/middleware/auth.js +15 -1
- package/dist/middleware/auth.js.map +1 -1
- package/dist/middleware/body-limit.d.ts.map +1 -1
- package/dist/middleware/body-limit.js +3 -1
- package/dist/middleware/body-limit.js.map +1 -1
- package/dist/middleware/context.d.ts +5 -0
- package/dist/middleware/context.d.ts.map +1 -1
- package/dist/middleware/context.js +10 -1
- package/dist/middleware/context.js.map +1 -1
- package/dist/middleware/error-handler.d.ts.map +1 -1
- package/dist/middleware/error-handler.js +3 -7
- package/dist/middleware/error-handler.js.map +1 -1
- package/dist/routes/agents.d.ts.map +1 -1
- package/dist/routes/agents.js +25 -13
- package/dist/routes/agents.js.map +1 -1
- package/dist/routes/swarms.d.ts.map +1 -1
- package/dist/routes/swarms.js +24 -17
- package/dist/routes/swarms.js.map +1 -1
- package/dist/routes/threads.d.ts.map +1 -1
- package/dist/routes/threads.js +17 -16
- package/dist/routes/threads.js.map +1 -1
- package/dist/routes/workflows.d.ts.map +1 -1
- package/dist/routes/workflows.js +15 -18
- package/dist/routes/workflows.js.map +1 -1
- package/dist/types.d.ts +42 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/errors.d.ts +6 -9
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +10 -19
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/request.d.ts +14 -1
- package/dist/utils/request.d.ts.map +1 -1
- package/dist/utils/request.js +36 -7
- package/dist/utils/request.js.map +1 -1
- package/dist/websocket/handler.d.ts +5 -1
- package/dist/websocket/handler.d.ts.map +1 -1
- package/dist/websocket/handler.js +43 -19
- package/dist/websocket/handler.js.map +1 -1
- package/package.json +8 -8
package/dist/routes/swarms.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Hono } from 'hono';
|
|
2
2
|
import { streamSSE } from 'hono/streaming';
|
|
3
|
-
import { generateId, parseSwarmRunRequest, swarmAgentNames, withSwarm, } from '@cogitator-ai/server-shared';
|
|
3
|
+
import { generateId, parseSwarmRunRequest, swarmAgentNames, swarmTimeoutWithin, 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
|
-
import {
|
|
7
|
-
import { createRequestAbortController, holdConnectionOpen, errorResponse, invalidInput, bodyRefused, readJsonBody, requestAborted, } from '../utils/request.js';
|
|
6
|
+
import { describeError, isModuleNotFoundError } from '../utils/errors.js';
|
|
7
|
+
import { createRequestAbortController, holdConnectionOpen, errorResponse, invalidInput, bodyRefused, notFound, notInstalled, readJsonBody, refuseThread, requestAborted, sendError, } from '../utils/request.js';
|
|
8
8
|
import { serializeSwarmUsage, toSwarmRunResponse } from '../utils/results.js';
|
|
9
9
|
export function createSwarmRoutes() {
|
|
10
10
|
const app = new Hono();
|
|
@@ -21,15 +21,18 @@ export function createSwarmRoutes() {
|
|
|
21
21
|
const ctx = c.get('cogitator');
|
|
22
22
|
const name = c.req.param('name');
|
|
23
23
|
const swarmConfig = getOwn(ctx.swarms, name);
|
|
24
|
-
if (!swarmConfig)
|
|
25
|
-
return c
|
|
26
|
-
}
|
|
24
|
+
if (!swarmConfig)
|
|
25
|
+
return notFound(c, `Swarm '${name}' not found`);
|
|
27
26
|
const body = await readJsonBody(c);
|
|
28
27
|
if (!body.ok)
|
|
29
28
|
return bodyRefused(c, body.refusal);
|
|
30
29
|
const parsed = parseSwarmRunRequest(body.value, { acceptContext: ctx.acceptContext });
|
|
31
30
|
if (!parsed.ok)
|
|
32
31
|
return invalidInput(c, parsed.message);
|
|
32
|
+
const refusal = await refuseThread(c, parsed.value.threadId);
|
|
33
|
+
if (refusal)
|
|
34
|
+
return sendError(c, refusal);
|
|
35
|
+
const timeout = swarmTimeoutWithin(parsed.value.timeout, ctx.limits);
|
|
33
36
|
holdConnectionOpen(c);
|
|
34
37
|
const abortController = createRequestAbortController(c);
|
|
35
38
|
try {
|
|
@@ -40,6 +43,7 @@ export function createSwarmRoutes() {
|
|
|
40
43
|
abortController.signal.addEventListener('abort', () => swarm.abort(), { once: true });
|
|
41
44
|
const result = await swarm.run({
|
|
42
45
|
...parsed.value,
|
|
46
|
+
timeout,
|
|
43
47
|
userId: c.get('cogitatorAuth')?.userId,
|
|
44
48
|
});
|
|
45
49
|
return toSwarmRunResponse(swarm, result);
|
|
@@ -52,7 +56,7 @@ export function createSwarmRoutes() {
|
|
|
52
56
|
if (abortController.signal.aborted)
|
|
53
57
|
return requestAborted(c);
|
|
54
58
|
if (isModuleNotFoundError(error)) {
|
|
55
|
-
return c
|
|
59
|
+
return notInstalled(c, 'Swarms');
|
|
56
60
|
}
|
|
57
61
|
return errorResponse(c, error, 'Swarm run error');
|
|
58
62
|
}
|
|
@@ -61,15 +65,18 @@ export function createSwarmRoutes() {
|
|
|
61
65
|
const ctx = c.get('cogitator');
|
|
62
66
|
const name = c.req.param('name');
|
|
63
67
|
const swarmConfig = getOwn(ctx.swarms, name);
|
|
64
|
-
if (!swarmConfig)
|
|
65
|
-
return c
|
|
66
|
-
}
|
|
68
|
+
if (!swarmConfig)
|
|
69
|
+
return notFound(c, `Swarm '${name}' not found`);
|
|
67
70
|
const body = await readJsonBody(c);
|
|
68
71
|
if (!body.ok)
|
|
69
72
|
return bodyRefused(c, body.refusal);
|
|
70
73
|
const parsed = parseSwarmRunRequest(body.value, { acceptContext: ctx.acceptContext });
|
|
71
74
|
if (!parsed.ok)
|
|
72
75
|
return invalidInput(c, parsed.message);
|
|
76
|
+
const refusal = await refuseThread(c, parsed.value.threadId);
|
|
77
|
+
if (refusal)
|
|
78
|
+
return sendError(c, refusal);
|
|
79
|
+
const timeout = swarmTimeoutWithin(parsed.value.timeout, ctx.limits);
|
|
73
80
|
const abortController = createRequestAbortController(c);
|
|
74
81
|
return streamSSE(c, async (stream) => {
|
|
75
82
|
const writer = new HonoStreamWriter(stream, { heartbeatMs: ctx.sseHeartbeatMs });
|
|
@@ -87,6 +94,7 @@ export function createSwarmRoutes() {
|
|
|
87
94
|
await writer.start(messageId);
|
|
88
95
|
const result = await swarm.run({
|
|
89
96
|
...parsed.value,
|
|
97
|
+
timeout,
|
|
90
98
|
userId: c.get('cogitatorAuth')?.userId,
|
|
91
99
|
onAgentStart: (agentName) => {
|
|
92
100
|
void writer.swarmEvent('agent_start', { agentName, timestamp: Date.now() });
|
|
@@ -101,7 +109,7 @@ export function createSwarmRoutes() {
|
|
|
101
109
|
onAgentError: (agentName, error) => {
|
|
102
110
|
void writer.swarmEvent('agent_error', {
|
|
103
111
|
agentName,
|
|
104
|
-
error:
|
|
112
|
+
error: describeError(error, `Swarm agent ${agentName} error`).message,
|
|
105
113
|
});
|
|
106
114
|
},
|
|
107
115
|
onMessage: (message) => {
|
|
@@ -128,8 +136,8 @@ export function createSwarmRoutes() {
|
|
|
128
136
|
await writer.error('Swarms package not installed', 'UNIMPLEMENTED');
|
|
129
137
|
}
|
|
130
138
|
else {
|
|
131
|
-
const
|
|
132
|
-
await writer.error(
|
|
139
|
+
const failure = describeError(error, 'Swarm stream error');
|
|
140
|
+
await writer.error(failure.message, failure.code);
|
|
133
141
|
}
|
|
134
142
|
}
|
|
135
143
|
finally {
|
|
@@ -141,11 +149,10 @@ export function createSwarmRoutes() {
|
|
|
141
149
|
const ctx = c.get('cogitator');
|
|
142
150
|
const name = c.req.param('name');
|
|
143
151
|
const swarmConfig = getOwn(ctx.swarms, name);
|
|
144
|
-
if (!swarmConfig)
|
|
145
|
-
return c
|
|
146
|
-
}
|
|
152
|
+
if (!swarmConfig)
|
|
153
|
+
return notFound(c, `Swarm '${name}' not found`);
|
|
147
154
|
if (!swarmConfig.blackboard?.enabled) {
|
|
148
|
-
return c
|
|
155
|
+
return invalidInput(c, 'Blackboard not enabled for this swarm');
|
|
149
156
|
}
|
|
150
157
|
const response = {
|
|
151
158
|
sections: swarmConfig.blackboard.sections ?? {},
|
|
@@ -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,EACL,UAAU,EACV,oBAAoB,EACpB,eAAe,EACf,SAAS,GACV,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAGtE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,
|
|
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;
|
|
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;AAmB3D,wBAAgB,kBAAkB,IAAI,IAAI,CAAC,OAAO,CAAC,CAqFlD"}
|
package/dist/routes/threads.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
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 { bodyRefused, errorResponse, invalidInput, readJsonBody } from '../utils/request.js';
|
|
5
|
-
import { parseAddMessageRequest } from '@cogitator-ai/server-shared';
|
|
4
|
+
import { bodyRefused, errorResponse, invalidInput, readJsonBody, refuseThread, sendError, } from '../utils/request.js';
|
|
5
|
+
import { parseAddMessageRequest, parseThreadPageQuery, readThreadPage, } from '@cogitator-ai/server-shared';
|
|
6
6
|
function memoryUnavailable(c) {
|
|
7
|
-
return c
|
|
7
|
+
return sendError(c, { status: 503, code: 'UNAVAILABLE', message: 'Memory not configured' });
|
|
8
8
|
}
|
|
9
9
|
export function createThreadRoutes() {
|
|
10
10
|
const app = new Hono();
|
|
@@ -13,21 +13,16 @@ export function createThreadRoutes() {
|
|
|
13
13
|
if (!memory)
|
|
14
14
|
return memoryUnavailable(c);
|
|
15
15
|
const id = c.req.param('id');
|
|
16
|
+
const page = parseThreadPageQuery(c.req.queries());
|
|
17
|
+
if (!page.ok)
|
|
18
|
+
return invalidInput(c, page.message);
|
|
19
|
+
const refusal = await refuseThread(c, id);
|
|
20
|
+
if (refusal)
|
|
21
|
+
return sendError(c, refusal);
|
|
16
22
|
const userId = c.get('cogitatorAuth')?.userId;
|
|
17
23
|
try {
|
|
18
|
-
await assertThreadAccess(memory, id, userId);
|
|
19
|
-
const
|
|
20
|
-
if (!result.success) {
|
|
21
|
-
return errorResponse(c, new Error(result.error), 'Thread get error');
|
|
22
|
-
}
|
|
23
|
-
const entries = result.data;
|
|
24
|
-
const now = Date.now();
|
|
25
|
-
const response = {
|
|
26
|
-
id,
|
|
27
|
-
messages: entries.map((entry) => entry.message),
|
|
28
|
-
createdAt: entries.length > 0 ? entries[0].createdAt.getTime() : now,
|
|
29
|
-
updatedAt: entries.length > 0 ? entries[entries.length - 1].createdAt.getTime() : now,
|
|
30
|
-
};
|
|
24
|
+
const thread = await assertThreadAccess(memory, id, userId);
|
|
25
|
+
const response = await readThreadPage(memory, id, page.value, thread);
|
|
31
26
|
return c.json(response);
|
|
32
27
|
}
|
|
33
28
|
catch (error) {
|
|
@@ -47,6 +42,9 @@ export function createThreadRoutes() {
|
|
|
47
42
|
});
|
|
48
43
|
if (!parsed.ok)
|
|
49
44
|
return invalidInput(c, parsed.message);
|
|
45
|
+
const refusal = await refuseThread(c, id);
|
|
46
|
+
if (refusal)
|
|
47
|
+
return sendError(c, refusal);
|
|
50
48
|
const message = { role: parsed.value.role, content: parsed.value.content };
|
|
51
49
|
const userId = c.get('cogitatorAuth')?.userId;
|
|
52
50
|
try {
|
|
@@ -71,6 +69,9 @@ export function createThreadRoutes() {
|
|
|
71
69
|
if (!memory)
|
|
72
70
|
return memoryUnavailable(c);
|
|
73
71
|
const id = c.req.param('id');
|
|
72
|
+
const refusal = await refuseThread(c, id);
|
|
73
|
+
if (refusal)
|
|
74
|
+
return sendError(c, refusal);
|
|
74
75
|
const userId = c.get('cogitatorAuth')?.userId;
|
|
75
76
|
try {
|
|
76
77
|
await assertThreadAccess(memory, id, userId);
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"threads.js","sourceRoot":"","sources":["../../src/routes/threads.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../src/routes/workflows.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../src/routes/workflows.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAQ5B,OAAO,KAAK,EAAE,OAAO,EAAwB,MAAM,aAAa,CAAC;AAgBjE,wBAAgB,oBAAoB,IAAI,IAAI,CAAC,OAAO,CAAC,CAgIpD"}
|
package/dist/routes/workflows.js
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { Hono } from 'hono';
|
|
2
2
|
import { streamSSE } from 'hono/streaming';
|
|
3
|
-
import { generateId } from '@cogitator-ai/server-shared';
|
|
3
|
+
import { generateId, parseWorkflowRunRequest, workflowOptionsWithin, } from '@cogitator-ai/server-shared';
|
|
4
4
|
import { HonoStreamWriter } from '../streaming/hono-stream-writer.js';
|
|
5
5
|
import { getOwn } from '../utils/lookup.js';
|
|
6
|
-
import {
|
|
7
|
-
import { createRequestAbortController, holdConnectionOpen, errorResponse, invalidInput, bodyRefused, readJsonBody, requestAborted, } from '../utils/request.js';
|
|
6
|
+
import { describeError, isModuleNotFoundError } from '../utils/errors.js';
|
|
7
|
+
import { createRequestAbortController, holdConnectionOpen, errorResponse, invalidInput, bodyRefused, notFound, notInstalled, readJsonBody, requestAborted, } from '../utils/request.js';
|
|
8
8
|
import { toWorkflowRunResponse } from '../utils/results.js';
|
|
9
|
-
import { parseWorkflowRunRequest } from '@cogitator-ai/server-shared';
|
|
10
9
|
export function createWorkflowRoutes() {
|
|
11
10
|
const app = new Hono();
|
|
12
11
|
app.get('/workflows', (c) => {
|
|
@@ -23,9 +22,8 @@ export function createWorkflowRoutes() {
|
|
|
23
22
|
const ctx = c.get('cogitator');
|
|
24
23
|
const name = c.req.param('name');
|
|
25
24
|
const workflow = getOwn(ctx.workflows, name);
|
|
26
|
-
if (!workflow)
|
|
27
|
-
return c
|
|
28
|
-
}
|
|
25
|
+
if (!workflow)
|
|
26
|
+
return notFound(c, `Workflow '${name}' not found`);
|
|
29
27
|
const body = await readJsonBody(c);
|
|
30
28
|
if (!body.ok)
|
|
31
29
|
return bodyRefused(c, body.refusal);
|
|
@@ -38,7 +36,7 @@ export function createWorkflowRoutes() {
|
|
|
38
36
|
const { WorkflowExecutor } = await import('@cogitator-ai/workflows');
|
|
39
37
|
const executor = new WorkflowExecutor(ctx.runtime);
|
|
40
38
|
const result = await executor.execute(workflow, parsed.value.input, {
|
|
41
|
-
...parsed.value.options,
|
|
39
|
+
...workflowOptionsWithin(parsed.value.options ?? {}, ctx.limits),
|
|
42
40
|
signal: abortController.signal,
|
|
43
41
|
});
|
|
44
42
|
if (abortController.signal.aborted)
|
|
@@ -51,7 +49,7 @@ export function createWorkflowRoutes() {
|
|
|
51
49
|
if (abortController.signal.aborted)
|
|
52
50
|
return requestAborted(c);
|
|
53
51
|
if (isModuleNotFoundError(error)) {
|
|
54
|
-
return c
|
|
52
|
+
return notInstalled(c, 'Workflows');
|
|
55
53
|
}
|
|
56
54
|
return errorResponse(c, error, 'Workflow run error');
|
|
57
55
|
}
|
|
@@ -60,9 +58,8 @@ export function createWorkflowRoutes() {
|
|
|
60
58
|
const ctx = c.get('cogitator');
|
|
61
59
|
const name = c.req.param('name');
|
|
62
60
|
const workflow = getOwn(ctx.workflows, name);
|
|
63
|
-
if (!workflow)
|
|
64
|
-
return c
|
|
65
|
-
}
|
|
61
|
+
if (!workflow)
|
|
62
|
+
return notFound(c, `Workflow '${name}' not found`);
|
|
66
63
|
const body = await readJsonBody(c);
|
|
67
64
|
if (!body.ok)
|
|
68
65
|
return bodyRefused(c, body.refusal);
|
|
@@ -82,7 +79,7 @@ export function createWorkflowRoutes() {
|
|
|
82
79
|
const executor = new WorkflowExecutor(ctx.runtime);
|
|
83
80
|
await writer.start(messageId);
|
|
84
81
|
const result = await executor.execute(workflow, parsed.value.input, {
|
|
85
|
-
...parsed.value.options,
|
|
82
|
+
...workflowOptionsWithin(parsed.value.options ?? {}, ctx.limits),
|
|
86
83
|
signal: abortController.signal,
|
|
87
84
|
onNodeStart: (node) => {
|
|
88
85
|
void writer.workflowEvent('node_started', { nodeName: node, timestamp: Date.now() });
|
|
@@ -93,7 +90,7 @@ export function createWorkflowRoutes() {
|
|
|
93
90
|
onNodeError: (node, error) => {
|
|
94
91
|
void writer.workflowEvent('node_error', {
|
|
95
92
|
nodeName: node,
|
|
96
|
-
error:
|
|
93
|
+
error: describeError(error, `Workflow node ${node} error`).message,
|
|
97
94
|
});
|
|
98
95
|
},
|
|
99
96
|
onNodeProgress: (node, progress) => {
|
|
@@ -103,8 +100,8 @@ export function createWorkflowRoutes() {
|
|
|
103
100
|
if (abortController.signal.aborted)
|
|
104
101
|
return;
|
|
105
102
|
if (result.error) {
|
|
106
|
-
const
|
|
107
|
-
await writer.error(
|
|
103
|
+
const failure = describeError(result.error, 'Workflow stream error');
|
|
104
|
+
await writer.error(failure.message, failure.code);
|
|
108
105
|
return;
|
|
109
106
|
}
|
|
110
107
|
await writer.workflowEvent('workflow_completed', {
|
|
@@ -120,8 +117,8 @@ export function createWorkflowRoutes() {
|
|
|
120
117
|
await writer.error('Workflows package not installed', 'UNIMPLEMENTED');
|
|
121
118
|
}
|
|
122
119
|
else {
|
|
123
|
-
const
|
|
124
|
-
await writer.error(
|
|
120
|
+
const failure = describeError(error, 'Workflow stream error');
|
|
121
|
+
await writer.error(failure.message, failure.code);
|
|
125
122
|
}
|
|
126
123
|
}
|
|
127
124
|
finally {
|
|
@@ -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,
|
|
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,9 +1,9 @@
|
|
|
1
1
|
import type { Context as HonoContext } from 'hono';
|
|
2
2
|
import type { UpgradeWebSocket } from 'hono/ws';
|
|
3
3
|
import type { Cogitator, Agent } from '@cogitator-ai/core';
|
|
4
|
-
import type { AgentRunResponse, ContextPolicy, PendingApproval, ReadinessCheckStatus, ReadinessResponse, ThreadMessageRole, WorkflowRunRequestBody } from '@cogitator-ai/server-shared';
|
|
4
|
+
import type { AgentRunResponse, AnonymousPolicy, AuthorizeThread, ContextPolicy, PendingApproval, ReadinessCheckStatus, ReadinessResponse, RunLimits, ThreadMessageRole, WorkflowRunRequestBody } from '@cogitator-ai/server-shared';
|
|
5
5
|
import type { Message, ToolCall, ToolResult, RunResult, Workflow, WorkflowResult, WorkflowState, SwarmConfig, SwarmResult, SwarmRunOptions, StreamingWorkflowEvent, SwarmEvent, SwarmMessage, ToolApprovalDecision } from '@cogitator-ai/types';
|
|
6
|
-
export type { Message, ToolCall, ToolResult, RunResult, Workflow, WorkflowResult, WorkflowState, SwarmConfig, SwarmResult, SwarmRunOptions, StreamingWorkflowEvent, SwarmEvent, SwarmMessage, ToolApprovalDecision, PendingApproval, ReadinessResponse, ReadinessCheckStatus, };
|
|
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;
|
|
9
9
|
roles?: string[];
|
|
@@ -11,6 +11,8 @@ export interface AuthContext {
|
|
|
11
11
|
metadata?: Record<string, unknown>;
|
|
12
12
|
}
|
|
13
13
|
export type AuthFunction = (c: HonoContext<HonoEnv>) => Promise<AuthContext | undefined> | AuthContext | undefined;
|
|
14
|
+
/** Builds the `deps` an agent run of a request passes to its tools (`RunOptions.deps`) */
|
|
15
|
+
export type DepsFunction = (c: HonoContext<HonoEnv>) => unknown | Promise<unknown>;
|
|
14
16
|
export interface WebSocketConfig {
|
|
15
17
|
path?: string;
|
|
16
18
|
maxPayloadSize?: number;
|
|
@@ -47,6 +49,34 @@ export interface CogitatorAppOptions {
|
|
|
47
49
|
* `assistant`. A `system` message is read by the model as operator instructions.
|
|
48
50
|
*/
|
|
49
51
|
threadMessageRoles?: readonly ThreadMessageRole[];
|
|
52
|
+
/**
|
|
53
|
+
* Caps on what a request may ask a run for. A swarm run times out after at most
|
|
54
|
+
* `swarmTimeout` ms and a workflow run takes at most `workflowMaxIterations` iterations and
|
|
55
|
+
* `workflowMaxConcurrency` nodes at once, over HTTP, SSE and WebSocket alike. A request that
|
|
56
|
+
* asks for more is held to the cap, one that asks for nothing gets it. Each limit must be a
|
|
57
|
+
* positive integer, or creating the app throws.
|
|
58
|
+
*/
|
|
59
|
+
limits?: RunLimits;
|
|
60
|
+
/**
|
|
61
|
+
* Whether a caller without a `userId` may use the API: `'allow'` (the default) lets them
|
|
62
|
+
* in, `'deny'` answers `401 UNAUTHORIZED`. `/health`, `/ready`, `/openapi.json` and `/docs`
|
|
63
|
+
* stay open either way.
|
|
64
|
+
*/
|
|
65
|
+
anonymous?: AnonymousPolicy;
|
|
66
|
+
/**
|
|
67
|
+
* Decides whether a caller may touch a thread, on top of the ownership check of core:
|
|
68
|
+
* called with what `auth` returned and the thread a request names, on agent runs, streams
|
|
69
|
+
* and resumes, swarm runs, the thread routes and WebSocket runs. `false` answers
|
|
70
|
+
* `403 THREAD_FORBIDDEN` and starts no run.
|
|
71
|
+
*/
|
|
72
|
+
authorizeThread?: AuthorizeThread<AuthContext>;
|
|
73
|
+
/**
|
|
74
|
+
* Builds the `deps` of the agent runs and resumes of a request, which tools get as
|
|
75
|
+
* `context.deps` and the model never sees: a database handle, a tenant, a client. Called for
|
|
76
|
+
* each run, over HTTP and WebSocket (with the upgrade request). Deps never come from the
|
|
77
|
+
* request body.
|
|
78
|
+
*/
|
|
79
|
+
deps?: DepsFunction;
|
|
50
80
|
}
|
|
51
81
|
export interface CogitatorContext {
|
|
52
82
|
runtime: Cogitator;
|
|
@@ -59,6 +89,12 @@ export interface CogitatorContext {
|
|
|
59
89
|
acceptContext?: ContextPolicy;
|
|
60
90
|
/** The resolved `threadMessageRoles` option. Default: `user` and `assistant` */
|
|
61
91
|
threadMessageRoles?: readonly ThreadMessageRole[];
|
|
92
|
+
/** The checked `limits` option. Default: none */
|
|
93
|
+
limits?: RunLimits;
|
|
94
|
+
/** The `authorizeThread` option. Default: every caller may touch the threads core lets them */
|
|
95
|
+
authorizeThread?: AuthorizeThread<AuthContext>;
|
|
96
|
+
/** The `deps` option. Default: runs get no deps */
|
|
97
|
+
deps?: DepsFunction;
|
|
62
98
|
}
|
|
63
99
|
export type HonoEnv = {
|
|
64
100
|
Variables: {
|
|
@@ -92,6 +128,8 @@ export interface ThreadResponse {
|
|
|
92
128
|
metadata?: Record<string, unknown>;
|
|
93
129
|
createdAt: number;
|
|
94
130
|
updatedAt: number;
|
|
131
|
+
/** Pass as `cursor` to read the page before this one, absent at the thread's start */
|
|
132
|
+
nextCursor?: string;
|
|
95
133
|
}
|
|
96
134
|
export interface AddMessageRequest {
|
|
97
135
|
role: 'user' | 'assistant' | 'system';
|
|
@@ -193,6 +231,8 @@ export interface WebSocketResumePayload extends AgentResumeRequest {
|
|
|
193
231
|
export interface WebSocketClientState {
|
|
194
232
|
id: string;
|
|
195
233
|
auth?: AuthContext;
|
|
234
|
+
/** Builds the `deps` of each agent run on the connection, from its upgrade request */
|
|
235
|
+
deps?: () => unknown | Promise<unknown>;
|
|
196
236
|
abortController?: AbortController;
|
|
197
237
|
}
|
|
198
238
|
export interface WebSocketLike {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,MAAM,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EACV,OAAO,EACP,QAAQ,EACR,UAAU,EACV,SAAS,EACT,QAAQ,EACR,cAAc,EACd,aAAa,EACb,WAAW,EACX,WAAW,EACX,eAAe,EACf,sBAAsB,EACtB,UAAU,EACV,YAAY,EACZ,oBAAoB,EACrB,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EACV,OAAO,EACP,QAAQ,EACR,UAAU,EACV,SAAS,EACT,QAAQ,EACR,cAAc,EACd,aAAa,EACb,WAAW,EACX,WAAW,EACX,eAAe,EACf,sBAAsB,EACtB,UAAU,EACV,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/errors.d.ts
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import { CogitatorError } from '@cogitator-ai/types';
|
|
3
|
-
import type { ErrorResponse } from '../types.js';
|
|
4
|
-
export interface ResolvedError {
|
|
5
|
-
status: ContentfulStatusCode;
|
|
6
|
-
body: ErrorResponse;
|
|
7
|
-
}
|
|
1
|
+
import { type HttpErrorDescription } from '@cogitator-ai/server-shared';
|
|
8
2
|
export declare function isModuleNotFoundError(error: unknown): boolean;
|
|
9
|
-
|
|
10
|
-
|
|
3
|
+
/**
|
|
4
|
+
* How the server answers `error`: {@link describeHttpError}, or {@link INTERNAL_ERROR} for an
|
|
5
|
+
* error the client is not told about, which is logged under `label`
|
|
6
|
+
*/
|
|
7
|
+
export declare function describeError(error: unknown, label: string): HttpErrorDescription;
|
|
11
8
|
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,6BAA6B,CAAC;AAErC,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAI7D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,oBAAoB,CAKjF"}
|
package/dist/utils/errors.js
CHANGED
|
@@ -1,28 +1,19 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { INTERNAL_ERROR, describeHttpError, } from '@cogitator-ai/server-shared';
|
|
2
2
|
export function isModuleNotFoundError(error) {
|
|
3
3
|
if (typeof error !== 'object' || error === null)
|
|
4
4
|
return false;
|
|
5
5
|
const code = error.code;
|
|
6
6
|
return code === 'MODULE_NOT_FOUND' || code === 'ERR_MODULE_NOT_FOUND';
|
|
7
7
|
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
if (CogitatorError.isCogitatorError(error)) {
|
|
17
|
-
return {
|
|
18
|
-
status: cogitatorErrorStatus(error),
|
|
19
|
-
body: { error: { message: error.message, code: error.code } },
|
|
20
|
-
};
|
|
21
|
-
}
|
|
8
|
+
/**
|
|
9
|
+
* How the server answers `error`: {@link describeHttpError}, or {@link INTERNAL_ERROR} for an
|
|
10
|
+
* error the client is not told about, which is logged under `label`
|
|
11
|
+
*/
|
|
12
|
+
export function describeError(error, label) {
|
|
13
|
+
const described = describeHttpError(error);
|
|
14
|
+
if (described)
|
|
15
|
+
return described;
|
|
22
16
|
console.error(`[CogitatorHono] ${label}:`, error);
|
|
23
|
-
return
|
|
24
|
-
status: 500,
|
|
25
|
-
body: { error: { message: 'Internal server error', code: ErrorCode.INTERNAL_ERROR } },
|
|
26
|
-
};
|
|
17
|
+
return INTERNAL_ERROR;
|
|
27
18
|
}
|
|
28
19
|
//# sourceMappingURL=errors.js.map
|
package/dist/utils/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,iBAAiB,GAElB,MAAM,6BAA6B,CAAC;AAErC,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,IAAI,GAAI,KAA+B,CAAC,IAAI,CAAC;IACnD,OAAO,IAAI,KAAK,kBAAkB,IAAI,IAAI,KAAK,sBAAsB,CAAC;AACxE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc,EAAE,KAAa;IACzD,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,mBAAmB,KAAK,GAAG,EAAE,KAAK,CAAC,CAAC;IAClD,OAAO,cAAc,CAAC;AACxB,CAAC"}
|
package/dist/utils/request.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Context } from 'hono';
|
|
2
|
-
import { type BodyRefusal } from '@cogitator-ai/server-shared';
|
|
2
|
+
import { type BodyRefusal, type HttpErrorDescription } from '@cogitator-ai/server-shared';
|
|
3
3
|
import type { HonoEnv } from '../types.js';
|
|
4
4
|
export type { JsonBodyResult } from '@cogitator-ai/server-shared';
|
|
5
5
|
/**
|
|
@@ -9,6 +9,8 @@ export type { JsonBodyResult } from '@cogitator-ai/server-shared';
|
|
|
9
9
|
* without a CORS preflight.
|
|
10
10
|
*/
|
|
11
11
|
export declare function readJsonBody(c: Context<HonoEnv>): Promise<import("@cogitator-ai/server-shared").JsonBodyResult>;
|
|
12
|
+
/** Answers an error with the error envelope and its `Retry-After` */
|
|
13
|
+
export declare function sendError(c: Context<HonoEnv>, error: HttpErrorDescription): Response;
|
|
12
14
|
/** Answers a body that {@link readJsonBody} refused */
|
|
13
15
|
export declare function bodyRefused(c: Context<HonoEnv>, refusal: BodyRefusal): Response;
|
|
14
16
|
export declare function createRequestAbortController(c: Context<HonoEnv>): AbortController;
|
|
@@ -23,6 +25,17 @@ export declare function createRequestAbortController(c: Context<HonoEnv>): Abort
|
|
|
23
25
|
*/
|
|
24
26
|
export declare function holdConnectionOpen(c: Context<HonoEnv>): void;
|
|
25
27
|
export declare function invalidInput(c: Context<HonoEnv>, message: string): Response;
|
|
28
|
+
export declare function notFound(c: Context<HonoEnv>, message: string): Response;
|
|
29
|
+
export declare function notInstalled(c: Context<HonoEnv>, label: 'Swarms' | 'Workflows'): Response;
|
|
26
30
|
export declare function errorResponse(c: Context<HonoEnv>, error: unknown, label: string): Response;
|
|
27
31
|
export declare function requestAborted(c: Context<HonoEnv>): Response;
|
|
32
|
+
/**
|
|
33
|
+
* The refusal of a request that names a thread the app's `authorizeThread` keeps the caller
|
|
34
|
+
* from, none when it may go on
|
|
35
|
+
*/
|
|
36
|
+
export declare function refuseThread(c: Context<HonoEnv>, threadId: string | undefined): Promise<HttpErrorDescription | undefined>;
|
|
37
|
+
/** The `deps` a run of this request gets from the app's `deps` hook, none without it */
|
|
38
|
+
export declare function runDeps(c: Context<HonoEnv>): Promise<{
|
|
39
|
+
deps?: unknown;
|
|
40
|
+
}>;
|
|
28
41
|
//# sourceMappingURL=request.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/utils/request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/utils/request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,EAML,KAAK,WAAW,EAChB,KAAK,oBAAoB,EAC1B,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C,YAAY,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,iEAErD;AAMD,qEAAqE;AACrE,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,oBAAoB,GAAG,QAAQ,CAGpF;AAED,uDAAuD;AACvD,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,WAAW,GAAG,QAAQ,CAE/E;AAED,wBAAgB,4BAA4B,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,eAAe,CASjF;AAgBD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAI5D;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,CAE3E;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,CAEvE;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAMzF;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CAE1F;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,QAAQ,CAE5D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EACnB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAM3C;AAED,wFAAwF;AACxF,wBAAsB,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAG9E"}
|