@cogitator-ai/express 0.2.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.
Files changed (99) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +346 -0
  3. package/dist/index.d.ts +9 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +7 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/middleware/auth.d.ts +4 -0
  8. package/dist/middleware/auth.d.ts.map +1 -0
  9. package/dist/middleware/auth.js +26 -0
  10. package/dist/middleware/auth.js.map +1 -0
  11. package/dist/middleware/cors.d.ts +4 -0
  12. package/dist/middleware/cors.d.ts.map +1 -0
  13. package/dist/middleware/cors.js +42 -0
  14. package/dist/middleware/cors.js.map +1 -0
  15. package/dist/middleware/error-handler.d.ts +4 -0
  16. package/dist/middleware/error-handler.d.ts.map +1 -0
  17. package/dist/middleware/error-handler.js +32 -0
  18. package/dist/middleware/error-handler.js.map +1 -0
  19. package/dist/middleware/index.d.ts +5 -0
  20. package/dist/middleware/index.d.ts.map +1 -0
  21. package/dist/middleware/index.js +5 -0
  22. package/dist/middleware/index.js.map +1 -0
  23. package/dist/middleware/rate-limit.d.ts +4 -0
  24. package/dist/middleware/rate-limit.d.ts.map +1 -0
  25. package/dist/middleware/rate-limit.js +50 -0
  26. package/dist/middleware/rate-limit.js.map +1 -0
  27. package/dist/routes/agents.d.ts +4 -0
  28. package/dist/routes/agents.d.ts.map +1 -0
  29. package/dist/routes/agents.js +116 -0
  30. package/dist/routes/agents.js.map +1 -0
  31. package/dist/routes/health.d.ts +4 -0
  32. package/dist/routes/health.d.ts.map +1 -0
  33. package/dist/routes/health.js +18 -0
  34. package/dist/routes/health.js.map +1 -0
  35. package/dist/routes/index.d.ts +7 -0
  36. package/dist/routes/index.d.ts.map +1 -0
  37. package/dist/routes/index.js +7 -0
  38. package/dist/routes/index.js.map +1 -0
  39. package/dist/routes/swarms.d.ts +4 -0
  40. package/dist/routes/swarms.d.ts.map +1 -0
  41. package/dist/routes/swarms.js +179 -0
  42. package/dist/routes/swarms.js.map +1 -0
  43. package/dist/routes/threads.d.ts +4 -0
  44. package/dist/routes/threads.d.ts.map +1 -0
  45. package/dist/routes/threads.js +108 -0
  46. package/dist/routes/threads.js.map +1 -0
  47. package/dist/routes/tools.d.ts +4 -0
  48. package/dist/routes/tools.d.ts.map +1 -0
  49. package/dist/routes/tools.js +29 -0
  50. package/dist/routes/tools.js.map +1 -0
  51. package/dist/routes/workflows.d.ts +4 -0
  52. package/dist/routes/workflows.d.ts.map +1 -0
  53. package/dist/routes/workflows.js +110 -0
  54. package/dist/routes/workflows.js.map +1 -0
  55. package/dist/server.d.ts +15 -0
  56. package/dist/server.d.ts.map +1 -0
  57. package/dist/server.js +90 -0
  58. package/dist/server.js.map +1 -0
  59. package/dist/streaming/express-stream-writer.d.ts +24 -0
  60. package/dist/streaming/express-stream-writer.d.ts.map +1 -0
  61. package/dist/streaming/express-stream-writer.js +73 -0
  62. package/dist/streaming/express-stream-writer.js.map +1 -0
  63. package/dist/streaming/helpers.d.ts +4 -0
  64. package/dist/streaming/helpers.d.ts.map +1 -0
  65. package/dist/streaming/helpers.js +14 -0
  66. package/dist/streaming/helpers.js.map +1 -0
  67. package/dist/streaming/index.d.ts +4 -0
  68. package/dist/streaming/index.d.ts.map +1 -0
  69. package/dist/streaming/index.js +4 -0
  70. package/dist/streaming/index.js.map +1 -0
  71. package/dist/streaming/protocol.d.ts +76 -0
  72. package/dist/streaming/protocol.d.ts.map +1 -0
  73. package/dist/streaming/protocol.js +37 -0
  74. package/dist/streaming/protocol.js.map +1 -0
  75. package/dist/swagger/generator.d.ts +3 -0
  76. package/dist/swagger/generator.d.ts.map +1 -0
  77. package/dist/swagger/generator.js +486 -0
  78. package/dist/swagger/generator.js.map +1 -0
  79. package/dist/swagger/index.d.ts +3 -0
  80. package/dist/swagger/index.d.ts.map +1 -0
  81. package/dist/swagger/index.js +3 -0
  82. package/dist/swagger/index.js.map +1 -0
  83. package/dist/swagger/ui.d.ts +4 -0
  84. package/dist/swagger/ui.d.ts.map +1 -0
  85. package/dist/swagger/ui.js +39 -0
  86. package/dist/swagger/ui.js.map +1 -0
  87. package/dist/types.d.ts +246 -0
  88. package/dist/types.d.ts.map +1 -0
  89. package/dist/types.js +2 -0
  90. package/dist/types.js.map +1 -0
  91. package/dist/websocket/index.d.ts +2 -0
  92. package/dist/websocket/index.d.ts.map +1 -0
  93. package/dist/websocket/index.js +2 -0
  94. package/dist/websocket/index.js.map +1 -0
  95. package/dist/websocket/ws-handler.d.ts +6 -0
  96. package/dist/websocket/ws-handler.d.ts.map +1 -0
  97. package/dist/websocket/ws-handler.js +145 -0
  98. package/dist/websocket/ws-handler.js.map +1 -0
  99. package/package.json +62 -0
@@ -0,0 +1,116 @@
1
+ import { Router } from 'express';
2
+ import { ExpressStreamWriter, setupSSEHeaders, generateId } from '../streaming/index.js';
3
+ export function createAgentRoutes(ctx) {
4
+ const router = Router();
5
+ router.get('/agents', (_req, res) => {
6
+ const agentList = Object.entries(ctx.agents).map(([name, agent]) => ({
7
+ name,
8
+ description: agent.config.instructions?.slice(0, 100),
9
+ tools: agent.config.tools?.map((t) => t.name) || [],
10
+ }));
11
+ const response = { agents: agentList };
12
+ res.json(response);
13
+ });
14
+ router.post('/agents/:name/run', async (req, res) => {
15
+ const { name } = req.params;
16
+ const agent = ctx.agents[name];
17
+ if (!agent) {
18
+ res.status(404).json({
19
+ error: { message: `Agent '${name}' not found`, code: 'NOT_FOUND' },
20
+ });
21
+ return;
22
+ }
23
+ const body = req.body;
24
+ if (!body?.input) {
25
+ res.status(400).json({
26
+ error: { message: 'Missing required field: input', code: 'INVALID_INPUT' },
27
+ });
28
+ return;
29
+ }
30
+ try {
31
+ const result = await ctx.cogitator.run(agent, {
32
+ input: body.input,
33
+ context: body.context,
34
+ threadId: body.threadId,
35
+ });
36
+ const response = {
37
+ output: result.output,
38
+ threadId: result.threadId,
39
+ usage: {
40
+ inputTokens: result.usage.inputTokens,
41
+ outputTokens: result.usage.outputTokens,
42
+ totalTokens: result.usage.totalTokens,
43
+ },
44
+ toolCalls: [...result.toolCalls],
45
+ };
46
+ res.json(response);
47
+ }
48
+ catch (error) {
49
+ const message = error instanceof Error ? error.message : 'Unknown error';
50
+ res.status(500).json({
51
+ error: { message, code: 'INTERNAL' },
52
+ });
53
+ }
54
+ });
55
+ router.post('/agents/:name/stream', async (req, res) => {
56
+ const { name } = req.params;
57
+ const agent = ctx.agents[name];
58
+ if (!agent) {
59
+ res.status(404).json({
60
+ error: { message: `Agent '${name}' not found`, code: 'NOT_FOUND' },
61
+ });
62
+ return;
63
+ }
64
+ const body = req.body;
65
+ if (!body?.input) {
66
+ res.status(400).json({
67
+ error: { message: 'Missing required field: input', code: 'INVALID_INPUT' },
68
+ });
69
+ return;
70
+ }
71
+ setupSSEHeaders(res);
72
+ const writer = new ExpressStreamWriter(res);
73
+ const messageId = generateId('msg');
74
+ req.on('close', () => {
75
+ writer.close();
76
+ });
77
+ try {
78
+ writer.start(messageId);
79
+ const textId = generateId('txt');
80
+ writer.textStart(textId);
81
+ const result = await ctx.cogitator.run(agent, {
82
+ input: body.input,
83
+ context: body.context,
84
+ threadId: body.threadId,
85
+ stream: true,
86
+ onToken: (token) => {
87
+ writer.textDelta(textId, token);
88
+ },
89
+ onToolCall: (toolCall) => {
90
+ const toolId = generateId('tool');
91
+ writer.toolCallStart(toolId, toolCall.name);
92
+ writer.toolCallEnd(toolId);
93
+ },
94
+ onToolResult: (toolResult) => {
95
+ const resultId = generateId('res');
96
+ writer.toolResult(resultId, toolResult.callId, toolResult.result);
97
+ },
98
+ });
99
+ writer.textEnd(textId);
100
+ writer.finish(messageId, {
101
+ inputTokens: result.usage.inputTokens,
102
+ outputTokens: result.usage.outputTokens,
103
+ totalTokens: result.usage.totalTokens,
104
+ });
105
+ }
106
+ catch (error) {
107
+ const message = error instanceof Error ? error.message : 'Unknown error';
108
+ writer.error(message, 'INTERNAL');
109
+ }
110
+ finally {
111
+ writer.close();
112
+ }
113
+ });
114
+ return router;
115
+ }
116
+ //# sourceMappingURL=agents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/routes/agents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Router } from 'express';
2
+ import type { RouteContext } from '../types.js';
3
+ export declare function createHealthRoutes(_ctx: RouteContext): Router;
4
+ //# sourceMappingURL=health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/routes/health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,aAAa,CAAC;AAIhE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAiB7D"}
@@ -0,0 +1,18 @@
1
+ import { Router } from 'express';
2
+ const startTime = Date.now();
3
+ export function createHealthRoutes(_ctx) {
4
+ const router = Router();
5
+ router.get('/health', (_req, res) => {
6
+ const response = {
7
+ status: 'ok',
8
+ uptime: Date.now() - startTime,
9
+ timestamp: Date.now(),
10
+ };
11
+ res.json(response);
12
+ });
13
+ router.get('/ready', (_req, res) => {
14
+ res.json({ status: 'ok' });
15
+ });
16
+ return router;
17
+ }
18
+ //# sourceMappingURL=health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/routes/health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGjC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAE7B,MAAM,UAAU,kBAAkB,CAAC,IAAkB;IACnD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;IAExB,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QAClC,MAAM,QAAQ,GAAmB;YAC/B,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YAC9B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QACF,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACjC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { createHealthRoutes } from './health.js';
2
+ export { createAgentRoutes } from './agents.js';
3
+ export { createThreadRoutes } from './threads.js';
4
+ export { createToolRoutes } from './tools.js';
5
+ export { createWorkflowRoutes } from './workflows.js';
6
+ export { createSwarmRoutes } from './swarms.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { createHealthRoutes } from './health.js';
2
+ export { createAgentRoutes } from './agents.js';
3
+ export { createThreadRoutes } from './threads.js';
4
+ export { createToolRoutes } from './tools.js';
5
+ export { createWorkflowRoutes } from './workflows.js';
6
+ export { createSwarmRoutes } from './swarms.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Router } from 'express';
2
+ import type { RouteContext } from '../types.js';
3
+ export declare function createSwarmRoutes(ctx: RouteContext): Router;
4
+ //# sourceMappingURL=swarms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swarms.d.ts","sourceRoot":"","sources":["../../src/routes/swarms.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,KAAK,EACV,YAAY,EAMb,MAAM,aAAa,CAAC;AAIrB,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAmM3D"}
@@ -0,0 +1,179 @@
1
+ import { Router } from 'express';
2
+ import { ExpressStreamWriter, setupSSEHeaders, generateId } from '../streaming/index.js';
3
+ export function createSwarmRoutes(ctx) {
4
+ const router = Router();
5
+ router.get('/swarms', (_req, res) => {
6
+ const swarmList = Object.entries(ctx.swarms).map(([name, config]) => {
7
+ const agents = [];
8
+ if (config.supervisor)
9
+ agents.push(config.supervisor.name);
10
+ if (config.workers)
11
+ agents.push(...config.workers.map((w) => w.name));
12
+ if (config.agents)
13
+ agents.push(...config.agents.map((a) => a.name));
14
+ if (config.moderator)
15
+ agents.push(config.moderator.name);
16
+ return {
17
+ name,
18
+ strategy: config.strategy,
19
+ agents,
20
+ };
21
+ });
22
+ const response = { swarms: swarmList };
23
+ res.json(response);
24
+ });
25
+ router.post('/swarms/:name/run', async (req, res) => {
26
+ const { name } = req.params;
27
+ const swarmConfig = ctx.swarms[name];
28
+ if (!swarmConfig) {
29
+ res.status(404).json({
30
+ error: { message: `Swarm '${name}' not found`, code: 'NOT_FOUND' },
31
+ });
32
+ return;
33
+ }
34
+ const body = req.body;
35
+ if (!body?.input) {
36
+ res.status(400).json({
37
+ error: { message: 'Missing required field: input', code: 'INVALID_INPUT' },
38
+ });
39
+ return;
40
+ }
41
+ try {
42
+ const { Swarm } = await import('@cogitator-ai/swarms');
43
+ const swarm = new Swarm(ctx.cogitator, swarmConfig);
44
+ const result = await swarm.run({
45
+ input: body.input,
46
+ context: body.context,
47
+ threadId: body.threadId,
48
+ timeout: body.timeout,
49
+ });
50
+ const agentResults = {};
51
+ for (const [agentName, agentResult] of result.agentResults.entries()) {
52
+ agentResults[agentName] = {
53
+ output: agentResult.output,
54
+ usage: agentResult.usage,
55
+ };
56
+ }
57
+ const resourceUsage = swarm.getResourceUsage();
58
+ const response = {
59
+ swarmId: swarm.id,
60
+ swarmName: swarm.name,
61
+ strategy: swarm.strategyType,
62
+ output: result.output,
63
+ agentResults,
64
+ usage: {
65
+ totalTokens: resourceUsage.totalTokens,
66
+ totalCost: resourceUsage.totalCost,
67
+ elapsedTime: resourceUsage.elapsedTime,
68
+ },
69
+ };
70
+ res.json(response);
71
+ }
72
+ catch (error) {
73
+ if (error instanceof Error && error.message.includes('Cannot find module')) {
74
+ res.status(501).json({
75
+ error: { message: 'Swarms package not installed', code: 'UNIMPLEMENTED' },
76
+ });
77
+ return;
78
+ }
79
+ const message = error instanceof Error ? error.message : 'Unknown error';
80
+ res.status(500).json({
81
+ error: { message, code: 'INTERNAL' },
82
+ });
83
+ }
84
+ });
85
+ router.post('/swarms/:name/stream', async (req, res) => {
86
+ const { name } = req.params;
87
+ const swarmConfig = ctx.swarms[name];
88
+ if (!swarmConfig) {
89
+ res.status(404).json({
90
+ error: { message: `Swarm '${name}' not found`, code: 'NOT_FOUND' },
91
+ });
92
+ return;
93
+ }
94
+ const body = req.body;
95
+ if (!body?.input) {
96
+ res.status(400).json({
97
+ error: { message: 'Missing required field: input', code: 'INVALID_INPUT' },
98
+ });
99
+ return;
100
+ }
101
+ setupSSEHeaders(res);
102
+ const writer = new ExpressStreamWriter(res);
103
+ const messageId = generateId('swarm');
104
+ req.on('close', () => {
105
+ writer.close();
106
+ });
107
+ try {
108
+ const { Swarm } = await import('@cogitator-ai/swarms');
109
+ const swarm = new Swarm(ctx.cogitator, swarmConfig);
110
+ writer.start(messageId);
111
+ const result = await swarm.run({
112
+ input: body.input,
113
+ context: body.context,
114
+ threadId: body.threadId,
115
+ timeout: body.timeout,
116
+ onAgentStart: (agentName) => {
117
+ writer.swarmEvent('agent_start', { agentName, timestamp: Date.now() });
118
+ },
119
+ onAgentComplete: (agentName, agentResult) => {
120
+ writer.swarmEvent('agent_complete', {
121
+ agentName,
122
+ output: agentResult.output,
123
+ timestamp: Date.now(),
124
+ });
125
+ },
126
+ onAgentError: (agentName, error) => {
127
+ writer.swarmEvent('agent_error', { agentName, error: error.message });
128
+ },
129
+ onMessage: (message) => {
130
+ writer.swarmEvent('message', message);
131
+ },
132
+ onEvent: (event) => {
133
+ writer.swarmEvent(event.type, event.data);
134
+ },
135
+ });
136
+ const resourceUsage = swarm.getResourceUsage();
137
+ writer.swarmEvent('swarm_completed', {
138
+ swarmId: swarm.id,
139
+ output: result.output,
140
+ usage: resourceUsage,
141
+ });
142
+ writer.finish(messageId);
143
+ }
144
+ catch (error) {
145
+ if (error instanceof Error && error.message.includes('Cannot find module')) {
146
+ writer.error('Swarms package not installed', 'UNIMPLEMENTED');
147
+ }
148
+ else {
149
+ const message = error instanceof Error ? error.message : 'Unknown error';
150
+ writer.error(message, 'INTERNAL');
151
+ }
152
+ }
153
+ finally {
154
+ writer.close();
155
+ }
156
+ });
157
+ router.get('/swarms/:name/blackboard', async (req, res) => {
158
+ const { name } = req.params;
159
+ const swarmConfig = ctx.swarms[name];
160
+ if (!swarmConfig) {
161
+ res.status(404).json({
162
+ error: { message: `Swarm '${name}' not found`, code: 'NOT_FOUND' },
163
+ });
164
+ return;
165
+ }
166
+ if (!swarmConfig.blackboard?.enabled) {
167
+ res.status(400).json({
168
+ error: { message: 'Blackboard not enabled for this swarm', code: 'INVALID_INPUT' },
169
+ });
170
+ return;
171
+ }
172
+ const response = {
173
+ sections: swarmConfig.blackboard.sections || {},
174
+ };
175
+ res.json(response);
176
+ });
177
+ return router;
178
+ }
179
+ //# sourceMappingURL=swarms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swarms.js","sourceRoot":"","sources":["../../src/routes/swarms.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Router } from 'express';
2
+ import type { RouteContext } from '../types.js';
3
+ export declare function createThreadRoutes(ctx: RouteContext): Router;
4
+ //# sourceMappingURL=threads.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"threads.d.ts","sourceRoot":"","sources":["../../src/routes/threads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,KAAK,EACV,YAAY,EAIb,MAAM,aAAa,CAAC;AAErB,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAqH5D"}
@@ -0,0 +1,108 @@
1
+ import { Router } from 'express';
2
+ export function createThreadRoutes(ctx) {
3
+ const router = Router();
4
+ const getMemory = () => {
5
+ return ctx.cogitator.memory;
6
+ };
7
+ router.get('/threads/:id', async (req, res) => {
8
+ const memory = getMemory();
9
+ if (!memory) {
10
+ res.status(503).json({
11
+ error: { message: 'Memory not configured', code: 'UNAVAILABLE' },
12
+ });
13
+ return;
14
+ }
15
+ const { id } = req.params;
16
+ try {
17
+ const result = await memory.getEntries({ threadId: id });
18
+ if (!result.success) {
19
+ res.status(500).json({
20
+ error: { message: result.error, code: 'INTERNAL' },
21
+ });
22
+ return;
23
+ }
24
+ const messages = result.data.map((entry) => entry.message);
25
+ const response = {
26
+ id,
27
+ messages,
28
+ createdAt: Date.now(),
29
+ updatedAt: Date.now(),
30
+ };
31
+ res.json(response);
32
+ }
33
+ catch (error) {
34
+ const message = error instanceof Error ? error.message : 'Unknown error';
35
+ res.status(500).json({
36
+ error: { message, code: 'INTERNAL' },
37
+ });
38
+ }
39
+ });
40
+ router.post('/threads/:id/messages', async (req, res) => {
41
+ const memory = getMemory();
42
+ if (!memory) {
43
+ res.status(503).json({
44
+ error: { message: 'Memory not configured', code: 'UNAVAILABLE' },
45
+ });
46
+ return;
47
+ }
48
+ const { id } = req.params;
49
+ const body = req.body;
50
+ if (!body?.role || !body?.content) {
51
+ res.status(400).json({
52
+ error: { message: 'Missing required fields: role, content', code: 'INVALID_INPUT' },
53
+ });
54
+ return;
55
+ }
56
+ try {
57
+ const result = await memory.addEntry({
58
+ threadId: id,
59
+ message: {
60
+ role: body.role,
61
+ content: body.content,
62
+ },
63
+ tokenCount: 0,
64
+ });
65
+ if (!result.success) {
66
+ res.status(500).json({
67
+ error: { message: result.error, code: 'INTERNAL' },
68
+ });
69
+ return;
70
+ }
71
+ res.status(201).json({ success: true });
72
+ }
73
+ catch (error) {
74
+ const message = error instanceof Error ? error.message : 'Unknown error';
75
+ res.status(500).json({
76
+ error: { message, code: 'INTERNAL' },
77
+ });
78
+ }
79
+ });
80
+ router.delete('/threads/:id', async (req, res) => {
81
+ const memory = getMemory();
82
+ if (!memory) {
83
+ res.status(503).json({
84
+ error: { message: 'Memory not configured', code: 'UNAVAILABLE' },
85
+ });
86
+ return;
87
+ }
88
+ const { id } = req.params;
89
+ try {
90
+ const result = await memory.clearThread(id);
91
+ if (!result.success) {
92
+ res.status(500).json({
93
+ error: { message: result.error, code: 'INTERNAL' },
94
+ });
95
+ return;
96
+ }
97
+ res.status(204).end();
98
+ }
99
+ catch (error) {
100
+ const message = error instanceof Error ? error.message : 'Unknown error';
101
+ res.status(500).json({
102
+ error: { message, code: 'INTERNAL' },
103
+ });
104
+ }
105
+ });
106
+ return router;
107
+ }
108
+ //# sourceMappingURL=threads.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"threads.js","sourceRoot":"","sources":["../../src/routes/threads.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Router } from 'express';
2
+ import type { RouteContext } from '../types.js';
3
+ export declare function createToolRoutes(ctx: RouteContext): Router;
4
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/routes/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,aAAa,CAAC;AAElE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CA+B1D"}
@@ -0,0 +1,29 @@
1
+ import { Router } from 'express';
2
+ export function createToolRoutes(ctx) {
3
+ const router = Router();
4
+ router.get('/tools', (_req, res) => {
5
+ const toolsSet = new Map();
6
+ for (const agent of Object.values(ctx.agents)) {
7
+ const tools = agent.config.tools || [];
8
+ for (const tool of tools) {
9
+ if (!toolsSet.has(tool.name)) {
10
+ toolsSet.set(tool.name, {
11
+ name: tool.name,
12
+ description: tool.description,
13
+ parameters: tool.parameters,
14
+ });
15
+ }
16
+ }
17
+ }
18
+ const response = {
19
+ tools: Array.from(toolsSet.values()).map((t) => ({
20
+ name: t.name,
21
+ description: t.description,
22
+ parameters: t.parameters,
23
+ })),
24
+ };
25
+ res.json(response);
26
+ });
27
+ return router;
28
+ }
29
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/routes/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGjC,MAAM,UAAU,gBAAgB,CAAC,GAAiB;IAChD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;IAExB,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACjC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAuE,CAAC;QAEhG,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;YACvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC7B,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE;wBACtB,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,WAAW,EAAE,IAAI,CAAC,WAAW;wBAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;qBAC5B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAqB;YACjC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC/C,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,UAAU,EAAE,CAAC,CAAC,UAAqC;aACpD,CAAC,CAAC;SACJ,CAAC;QAEF,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Router } from 'express';
2
+ import type { RouteContext } from '../types.js';
3
+ export declare function createWorkflowRoutes(ctx: RouteContext): Router;
4
+ //# sourceMappingURL=workflows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../src/routes/workflows.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,KAAK,EACV,YAAY,EAKb,MAAM,aAAa,CAAC;AAGrB,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CA4H9D"}