@cogitator-ai/hono 0.8.6 → 0.10.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 +86 -32
- 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 +84 -44
- 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/agents.js
CHANGED
|
@@ -3,8 +3,33 @@ import { streamSSE } from 'hono/streaming';
|
|
|
3
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
|
-
import {
|
|
7
|
-
import { createRequestAbortController, holdConnectionOpen, errorResponse, invalidInput, bodyRefused, readJsonBody, requestAborted, } from '../utils/request.js';
|
|
6
|
+
import { describeError } from '../utils/errors.js';
|
|
7
|
+
import { createRequestAbortController, holdConnectionOpen, errorResponse, invalidInput, bodyRefused, notFound, readJsonBody, refuseThread, requestAborted, runDeps, sendError, } from '../utils/request.js';
|
|
8
|
+
function streamAgent(c, threadId, errorLabel, execute) {
|
|
9
|
+
const abortController = createRequestAbortController(c);
|
|
10
|
+
return streamSSE(c, async (stream) => {
|
|
11
|
+
const writer = new HonoStreamWriter(stream, { heartbeatMs: c.get('cogitator').sseHeartbeatMs });
|
|
12
|
+
const session = new AgentStreamSession((event) => void writer.send(event), { threadId });
|
|
13
|
+
stream.onAbort(() => {
|
|
14
|
+
writer.close();
|
|
15
|
+
abortController.abort();
|
|
16
|
+
});
|
|
17
|
+
try {
|
|
18
|
+
session.start();
|
|
19
|
+
session.complete(await execute(session, abortController.signal));
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
if (abortController.signal.aborted)
|
|
23
|
+
return;
|
|
24
|
+
const failure = describeError(error, errorLabel);
|
|
25
|
+
session.fail(failure.message, failure.code);
|
|
26
|
+
}
|
|
27
|
+
finally {
|
|
28
|
+
await writer.flush();
|
|
29
|
+
writer.close();
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
8
33
|
export function createAgentRoutes() {
|
|
9
34
|
const app = new Hono();
|
|
10
35
|
app.get('/agents', (c) => {
|
|
@@ -21,22 +46,26 @@ export function createAgentRoutes() {
|
|
|
21
46
|
const ctx = c.get('cogitator');
|
|
22
47
|
const name = c.req.param('name');
|
|
23
48
|
const agent = getOwn(ctx.agents, name);
|
|
24
|
-
if (!agent)
|
|
25
|
-
return c
|
|
26
|
-
}
|
|
49
|
+
if (!agent)
|
|
50
|
+
return notFound(c, `Agent '${name}' not found`);
|
|
27
51
|
const body = await readJsonBody(c);
|
|
28
52
|
if (!body.ok)
|
|
29
53
|
return bodyRefused(c, body.refusal);
|
|
30
54
|
const parsed = parseRunRequest(body.value, { acceptContext: ctx.acceptContext });
|
|
31
55
|
if (!parsed.ok)
|
|
32
56
|
return invalidInput(c, parsed.message);
|
|
57
|
+
const refusal = await refuseThread(c, parsed.value.threadId);
|
|
58
|
+
if (refusal)
|
|
59
|
+
return sendError(c, refusal);
|
|
33
60
|
const userId = c.get('cogitatorAuth')?.userId;
|
|
61
|
+
const deps = await runDeps(c);
|
|
34
62
|
holdConnectionOpen(c);
|
|
35
63
|
const abortController = createRequestAbortController(c);
|
|
36
64
|
try {
|
|
37
65
|
const result = await ctx.runtime.run(agent, {
|
|
38
66
|
...parsed.value,
|
|
39
67
|
userId,
|
|
68
|
+
...deps,
|
|
40
69
|
signal: abortController.signal,
|
|
41
70
|
});
|
|
42
71
|
return c.json(toAgentRunResponse(result));
|
|
@@ -51,9 +80,8 @@ export function createAgentRoutes() {
|
|
|
51
80
|
const ctx = c.get('cogitator');
|
|
52
81
|
const name = c.req.param('name');
|
|
53
82
|
const agent = getOwn(ctx.agents, name);
|
|
54
|
-
if (!agent)
|
|
55
|
-
return c
|
|
56
|
-
}
|
|
83
|
+
if (!agent)
|
|
84
|
+
return notFound(c, `Agent '${name}' not found`);
|
|
57
85
|
const body = await readJsonBody(c);
|
|
58
86
|
if (!body.ok)
|
|
59
87
|
return bodyRefused(c, body.refusal);
|
|
@@ -61,12 +89,17 @@ export function createAgentRoutes() {
|
|
|
61
89
|
if (!parsed.ok)
|
|
62
90
|
return invalidInput(c, parsed.message);
|
|
63
91
|
const { threadId, decisions, defaultDecision } = parsed.value;
|
|
92
|
+
const refusal = await refuseThread(c, threadId);
|
|
93
|
+
if (refusal)
|
|
94
|
+
return sendError(c, refusal);
|
|
64
95
|
const userId = c.get('cogitatorAuth')?.userId;
|
|
96
|
+
const deps = await runDeps(c);
|
|
65
97
|
holdConnectionOpen(c);
|
|
66
98
|
const abortController = createRequestAbortController(c);
|
|
67
99
|
try {
|
|
68
100
|
const result = await ctx.runtime.resume(agent, threadId, {
|
|
69
101
|
userId,
|
|
102
|
+
...deps,
|
|
70
103
|
decisions,
|
|
71
104
|
defaultDecision,
|
|
72
105
|
signal: abortController.signal,
|
|
@@ -83,49 +116,56 @@ export function createAgentRoutes() {
|
|
|
83
116
|
const ctx = c.get('cogitator');
|
|
84
117
|
const name = c.req.param('name');
|
|
85
118
|
const agent = getOwn(ctx.agents, name);
|
|
86
|
-
if (!agent)
|
|
87
|
-
return c
|
|
88
|
-
}
|
|
119
|
+
if (!agent)
|
|
120
|
+
return notFound(c, `Agent '${name}' not found`);
|
|
89
121
|
const body = await readJsonBody(c);
|
|
90
122
|
if (!body.ok)
|
|
91
123
|
return bodyRefused(c, body.refusal);
|
|
92
124
|
const parsed = parseRunRequest(body.value, { acceptContext: ctx.acceptContext });
|
|
93
125
|
if (!parsed.ok)
|
|
94
126
|
return invalidInput(c, parsed.message);
|
|
127
|
+
const refusal = await refuseThread(c, parsed.value.threadId);
|
|
128
|
+
if (refusal)
|
|
129
|
+
return sendError(c, refusal);
|
|
95
130
|
const userId = c.get('cogitatorAuth')?.userId;
|
|
96
|
-
const
|
|
97
|
-
return
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
stream
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
131
|
+
const deps = await runDeps(c);
|
|
132
|
+
return streamAgent(c, parsed.value.threadId, 'Agent stream error', (session, signal) => ctx.runtime.run(agent, {
|
|
133
|
+
...parsed.value,
|
|
134
|
+
threadId: session.threadId,
|
|
135
|
+
userId,
|
|
136
|
+
...deps,
|
|
137
|
+
stream: true,
|
|
138
|
+
signal,
|
|
139
|
+
...session.callbacks,
|
|
140
|
+
}));
|
|
141
|
+
});
|
|
142
|
+
app.post('/agents/:name/resume/stream', async (c) => {
|
|
143
|
+
const ctx = c.get('cogitator');
|
|
144
|
+
const name = c.req.param('name');
|
|
145
|
+
const agent = getOwn(ctx.agents, name);
|
|
146
|
+
if (!agent)
|
|
147
|
+
return notFound(c, `Agent '${name}' not found`);
|
|
148
|
+
const body = await readJsonBody(c);
|
|
149
|
+
if (!body.ok)
|
|
150
|
+
return bodyRefused(c, body.refusal);
|
|
151
|
+
const parsed = parseResumeRequest(body.value);
|
|
152
|
+
if (!parsed.ok)
|
|
153
|
+
return invalidInput(c, parsed.message);
|
|
154
|
+
const { threadId, decisions, defaultDecision } = parsed.value;
|
|
155
|
+
const refusal = await refuseThread(c, threadId);
|
|
156
|
+
if (refusal)
|
|
157
|
+
return sendError(c, refusal);
|
|
158
|
+
const userId = c.get('cogitatorAuth')?.userId;
|
|
159
|
+
const deps = await runDeps(c);
|
|
160
|
+
return streamAgent(c, threadId, 'Agent resume stream error', (session, signal) => ctx.runtime.resume(agent, threadId, {
|
|
161
|
+
userId,
|
|
162
|
+
...deps,
|
|
163
|
+
decisions,
|
|
164
|
+
defaultDecision,
|
|
165
|
+
stream: true,
|
|
166
|
+
signal,
|
|
167
|
+
...session.callbacks,
|
|
168
|
+
}));
|
|
129
169
|
});
|
|
130
170
|
return app;
|
|
131
171
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/routes/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
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;AAU5B,OAAO,KAAK,EAAE,OAAO,EAAyC,MAAM,aAAa,CAAC;AAmBlF,wBAAgB,iBAAiB,IAAI,IAAI,CAAC,OAAO,CAAC,CAiKjD"}
|
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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"}
|