projax 3.3.69 → 3.3.71
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/dist/agent-runner.d.ts +60 -0
- package/dist/agent-runner.js +382 -0
- package/dist/api/database.d.ts +38 -1
- package/dist/api/database.d.ts.map +1 -1
- package/dist/api/database.js +327 -0
- package/dist/api/database.js.map +1 -1
- package/dist/api/routes/agents.d.ts +4 -0
- package/dist/api/routes/agents.d.ts.map +1 -0
- package/dist/api/routes/agents.js +375 -0
- package/dist/api/routes/agents.js.map +1 -0
- package/dist/api/routes/index.d.ts.map +1 -1
- package/dist/api/routes/index.js +4 -0
- package/dist/api/routes/index.js.map +1 -1
- package/dist/api/routes/todos.d.ts +4 -0
- package/dist/api/routes/todos.d.ts.map +1 -0
- package/dist/api/routes/todos.js +595 -0
- package/dist/api/routes/todos.js.map +1 -0
- package/dist/api/types.d.ts +67 -0
- package/dist/api/types.d.ts.map +1 -1
- package/dist/core/database.d.ts +47 -0
- package/dist/core/database.js +48 -0
- package/dist/core-bridge.d.ts +1 -1
- package/dist/electron/core/database.d.ts +47 -0
- package/dist/electron/core/database.js +48 -0
- package/dist/electron/renderer/assets/index-6afBeDFD.js +66 -0
- package/dist/electron/renderer/assets/index-Bd3aFi7B.css +1 -0
- package/dist/electron/renderer/index.html +2 -2
- package/dist/index.js +6 -175
- package/dist/octopus-cli.d.ts +2 -0
- package/dist/octopus-cli.js +45 -0
- package/dist/octopus-show-tui.d.ts +1 -0
- package/dist/octopus-show-tui.js +802 -0
- package/dist/octopus-tui.d.ts +1 -0
- package/dist/octopus-tui.js +115 -0
- package/dist/prxi.js +373 -63
- package/dist/prxi.tsx +472 -65
- package/package.json +7 -2
- package/dist/electron/renderer/assets/index-BjZn_mEF.js +0 -66
- package/dist/electron/renderer/assets/index-CZmDxbJO.js +0 -66
- package/dist/electron/renderer/assets/index-Cd1mTO3s.js +0 -66
- package/dist/electron/renderer/assets/index-Cj4QON0s.js +0 -66
- package/dist/electron/renderer/assets/index-CmtZriN5.js +0 -66
- package/dist/electron/renderer/assets/index-DJDPi0kp.css +0 -1
- package/dist/electron/renderer/assets/index-DfocdjIj.css +0 -1
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const express_1 = require("express");
|
|
4
|
+
const database_1 = require("../database");
|
|
5
|
+
const child_process_1 = require("child_process");
|
|
6
|
+
const router = (0, express_1.Router)();
|
|
7
|
+
const db = (0, database_1.getDatabase)();
|
|
8
|
+
// Track running agent processes
|
|
9
|
+
const runningAgents = new Map();
|
|
10
|
+
// CLI type to command mapping
|
|
11
|
+
const CLI_COMMANDS = {
|
|
12
|
+
claude: 'claude',
|
|
13
|
+
gemini: 'gemini',
|
|
14
|
+
openai: 'openai',
|
|
15
|
+
xai: 'xai',
|
|
16
|
+
ollama: 'ollama',
|
|
17
|
+
aider: 'aider',
|
|
18
|
+
continue: 'continue',
|
|
19
|
+
custom: '',
|
|
20
|
+
};
|
|
21
|
+
// CLI type to environment variable mapping for API keys
|
|
22
|
+
const CLI_ENV_VARS = {
|
|
23
|
+
claude: 'ANTHROPIC_API_KEY',
|
|
24
|
+
gemini: 'GOOGLE_API_KEY',
|
|
25
|
+
openai: 'OPENAI_API_KEY',
|
|
26
|
+
xai: 'XAI_API_KEY',
|
|
27
|
+
ollama: null, // Local, no API key needed
|
|
28
|
+
aider: null, // Uses OPENAI_API_KEY or ANTHROPIC_API_KEY depending on model
|
|
29
|
+
continue: null, // IDE extension
|
|
30
|
+
custom: null,
|
|
31
|
+
};
|
|
32
|
+
// Helper to build command and args for an agent
|
|
33
|
+
function buildAgentCommand(agent) {
|
|
34
|
+
const command = agent.cli_type === 'custom' && agent.cli_command
|
|
35
|
+
? agent.cli_command
|
|
36
|
+
: CLI_COMMANDS[agent.cli_type];
|
|
37
|
+
const args = [];
|
|
38
|
+
const env = { ...process.env };
|
|
39
|
+
// Set API key in environment if available
|
|
40
|
+
if (agent.api_key) {
|
|
41
|
+
const envVar = CLI_ENV_VARS[agent.cli_type];
|
|
42
|
+
if (envVar) {
|
|
43
|
+
env[envVar] = agent.api_key;
|
|
44
|
+
}
|
|
45
|
+
// For aider, set both possible keys
|
|
46
|
+
if (agent.cli_type === 'aider') {
|
|
47
|
+
env['OPENAI_API_KEY'] = agent.api_key;
|
|
48
|
+
env['ANTHROPIC_API_KEY'] = agent.api_key;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// Add model flag if specified
|
|
52
|
+
if (agent.model) {
|
|
53
|
+
switch (agent.cli_type) {
|
|
54
|
+
case 'claude':
|
|
55
|
+
args.push('--model', agent.model);
|
|
56
|
+
break;
|
|
57
|
+
case 'openai':
|
|
58
|
+
args.push('--model', agent.model);
|
|
59
|
+
break;
|
|
60
|
+
case 'gemini':
|
|
61
|
+
args.push('--model', agent.model);
|
|
62
|
+
break;
|
|
63
|
+
case 'ollama':
|
|
64
|
+
args.push('run', agent.model);
|
|
65
|
+
break;
|
|
66
|
+
case 'aider':
|
|
67
|
+
args.push('--model', agent.model);
|
|
68
|
+
break;
|
|
69
|
+
default:
|
|
70
|
+
// Custom or unknown - add as generic flag
|
|
71
|
+
if (agent.model) {
|
|
72
|
+
args.push('--model', agent.model);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
// Add system prompt if specified
|
|
77
|
+
if (agent.system_prompt) {
|
|
78
|
+
switch (agent.cli_type) {
|
|
79
|
+
case 'claude':
|
|
80
|
+
args.push('--system-prompt', agent.system_prompt);
|
|
81
|
+
break;
|
|
82
|
+
case 'aider':
|
|
83
|
+
args.push('--message', agent.system_prompt);
|
|
84
|
+
break;
|
|
85
|
+
default:
|
|
86
|
+
// Most CLIs don't support system prompt via CLI
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// Add additional args if specified
|
|
91
|
+
if (agent.additional_args) {
|
|
92
|
+
const additionalArgs = agent.additional_args.split(/\s+/).filter(Boolean);
|
|
93
|
+
args.push(...additionalArgs);
|
|
94
|
+
}
|
|
95
|
+
return { command, args, env };
|
|
96
|
+
}
|
|
97
|
+
// List agents for a project
|
|
98
|
+
router.get('/projects/:projectId/agents', (req, res) => {
|
|
99
|
+
try {
|
|
100
|
+
const projectId = parseInt(req.params.projectId, 10);
|
|
101
|
+
if (isNaN(projectId)) {
|
|
102
|
+
return res.status(400).json({ error: 'Invalid project ID' });
|
|
103
|
+
}
|
|
104
|
+
// Verify project exists
|
|
105
|
+
const project = db.getProject(projectId);
|
|
106
|
+
if (!project) {
|
|
107
|
+
return res.status(404).json({ error: 'Project not found' });
|
|
108
|
+
}
|
|
109
|
+
const agents = db.getAgentsByProject(projectId);
|
|
110
|
+
res.json(agents);
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
res.status(500).json({ error: error instanceof Error ? error.message : 'Unknown error' });
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
// Create agent for a project
|
|
117
|
+
router.post('/projects/:projectId/agents', (req, res) => {
|
|
118
|
+
try {
|
|
119
|
+
const projectId = parseInt(req.params.projectId, 10);
|
|
120
|
+
if (isNaN(projectId)) {
|
|
121
|
+
return res.status(400).json({ error: 'Invalid project ID' });
|
|
122
|
+
}
|
|
123
|
+
// Verify project exists
|
|
124
|
+
const project = db.getProject(projectId);
|
|
125
|
+
if (!project) {
|
|
126
|
+
return res.status(404).json({ error: 'Project not found' });
|
|
127
|
+
}
|
|
128
|
+
const { name, cli_type, cli_command, model, api_key, system_prompt, temperature, max_tokens, additional_args } = req.body;
|
|
129
|
+
if (!name || !cli_type) {
|
|
130
|
+
return res.status(400).json({ error: 'Name and cli_type are required' });
|
|
131
|
+
}
|
|
132
|
+
// Validate cli_type
|
|
133
|
+
const validCliTypes = ['claude', 'gemini', 'openai', 'xai', 'ollama', 'aider', 'continue', 'custom'];
|
|
134
|
+
if (!validCliTypes.includes(cli_type)) {
|
|
135
|
+
return res.status(400).json({ error: `Invalid cli_type. Must be one of: ${validCliTypes.join(', ')}` });
|
|
136
|
+
}
|
|
137
|
+
// Validate temperature if provided
|
|
138
|
+
if (temperature !== undefined && temperature !== null) {
|
|
139
|
+
if (typeof temperature !== 'number' || temperature < 0 || temperature > 2) {
|
|
140
|
+
return res.status(400).json({ error: 'Temperature must be a number between 0 and 2' });
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
// Validate max_tokens if provided
|
|
144
|
+
if (max_tokens !== undefined && max_tokens !== null) {
|
|
145
|
+
if (typeof max_tokens !== 'number' || max_tokens < 1) {
|
|
146
|
+
return res.status(400).json({ error: 'max_tokens must be a positive number' });
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
const agent = db.addAgent(projectId, {
|
|
150
|
+
name,
|
|
151
|
+
cli_type,
|
|
152
|
+
cli_command: cli_command || null,
|
|
153
|
+
model: model || null,
|
|
154
|
+
api_key: api_key || null,
|
|
155
|
+
system_prompt: system_prompt || null,
|
|
156
|
+
temperature: temperature ?? null,
|
|
157
|
+
max_tokens: max_tokens ?? null,
|
|
158
|
+
additional_args: additional_args || null,
|
|
159
|
+
});
|
|
160
|
+
res.status(201).json(agent);
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
if (error instanceof Error && error.message.includes('already exists')) {
|
|
164
|
+
return res.status(409).json({ error: error.message });
|
|
165
|
+
}
|
|
166
|
+
res.status(500).json({ error: error instanceof Error ? error.message : 'Unknown error' });
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
// Get agent by ID
|
|
170
|
+
router.get('/agents/:id', (req, res) => {
|
|
171
|
+
try {
|
|
172
|
+
const id = parseInt(req.params.id, 10);
|
|
173
|
+
if (isNaN(id)) {
|
|
174
|
+
return res.status(400).json({ error: 'Invalid agent ID' });
|
|
175
|
+
}
|
|
176
|
+
const agent = db.getAgent(id);
|
|
177
|
+
if (!agent) {
|
|
178
|
+
return res.status(404).json({ error: 'Agent not found' });
|
|
179
|
+
}
|
|
180
|
+
res.json(agent);
|
|
181
|
+
}
|
|
182
|
+
catch (error) {
|
|
183
|
+
res.status(500).json({ error: error instanceof Error ? error.message : 'Unknown error' });
|
|
184
|
+
}
|
|
185
|
+
});
|
|
186
|
+
// Update agent
|
|
187
|
+
router.put('/agents/:id', (req, res) => {
|
|
188
|
+
try {
|
|
189
|
+
const id = parseInt(req.params.id, 10);
|
|
190
|
+
if (isNaN(id)) {
|
|
191
|
+
return res.status(400).json({ error: 'Invalid agent ID' });
|
|
192
|
+
}
|
|
193
|
+
const { name, cli_type, cli_command, model, api_key, system_prompt, temperature, max_tokens, additional_args } = req.body;
|
|
194
|
+
// Validate cli_type if provided
|
|
195
|
+
if (cli_type !== undefined) {
|
|
196
|
+
const validCliTypes = ['claude', 'gemini', 'openai', 'xai', 'ollama', 'aider', 'continue', 'custom'];
|
|
197
|
+
if (!validCliTypes.includes(cli_type)) {
|
|
198
|
+
return res.status(400).json({ error: `Invalid cli_type. Must be one of: ${validCliTypes.join(', ')}` });
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
// Validate temperature if provided
|
|
202
|
+
if (temperature !== undefined && temperature !== null) {
|
|
203
|
+
if (typeof temperature !== 'number' || temperature < 0 || temperature > 2) {
|
|
204
|
+
return res.status(400).json({ error: 'Temperature must be a number between 0 and 2' });
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
// Validate max_tokens if provided
|
|
208
|
+
if (max_tokens !== undefined && max_tokens !== null) {
|
|
209
|
+
if (typeof max_tokens !== 'number' || max_tokens < 1) {
|
|
210
|
+
return res.status(400).json({ error: 'max_tokens must be a positive number' });
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
const updates = {};
|
|
214
|
+
if (name !== undefined)
|
|
215
|
+
updates.name = name;
|
|
216
|
+
if (cli_type !== undefined)
|
|
217
|
+
updates.cli_type = cli_type;
|
|
218
|
+
if (cli_command !== undefined)
|
|
219
|
+
updates.cli_command = cli_command;
|
|
220
|
+
if (model !== undefined)
|
|
221
|
+
updates.model = model;
|
|
222
|
+
if (api_key !== undefined)
|
|
223
|
+
updates.api_key = api_key;
|
|
224
|
+
if (system_prompt !== undefined)
|
|
225
|
+
updates.system_prompt = system_prompt;
|
|
226
|
+
if (temperature !== undefined)
|
|
227
|
+
updates.temperature = temperature;
|
|
228
|
+
if (max_tokens !== undefined)
|
|
229
|
+
updates.max_tokens = max_tokens;
|
|
230
|
+
if (additional_args !== undefined)
|
|
231
|
+
updates.additional_args = additional_args;
|
|
232
|
+
const agent = db.updateAgent(id, updates);
|
|
233
|
+
res.json(agent);
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
if (error instanceof Error && error.message.includes('not found')) {
|
|
237
|
+
return res.status(404).json({ error: error.message });
|
|
238
|
+
}
|
|
239
|
+
if (error instanceof Error && error.message.includes('already exists')) {
|
|
240
|
+
return res.status(409).json({ error: error.message });
|
|
241
|
+
}
|
|
242
|
+
res.status(500).json({ error: error instanceof Error ? error.message : 'Unknown error' });
|
|
243
|
+
}
|
|
244
|
+
});
|
|
245
|
+
// Delete agent
|
|
246
|
+
router.delete('/agents/:id', (req, res) => {
|
|
247
|
+
try {
|
|
248
|
+
const id = parseInt(req.params.id, 10);
|
|
249
|
+
if (isNaN(id)) {
|
|
250
|
+
return res.status(400).json({ error: 'Invalid agent ID' });
|
|
251
|
+
}
|
|
252
|
+
// Stop agent if running
|
|
253
|
+
const running = runningAgents.get(id);
|
|
254
|
+
if (running) {
|
|
255
|
+
running.process.kill();
|
|
256
|
+
runningAgents.delete(id);
|
|
257
|
+
}
|
|
258
|
+
db.removeAgent(id);
|
|
259
|
+
res.status(204).send();
|
|
260
|
+
}
|
|
261
|
+
catch (error) {
|
|
262
|
+
if (error instanceof Error && error.message.includes('not found')) {
|
|
263
|
+
return res.status(404).json({ error: error.message });
|
|
264
|
+
}
|
|
265
|
+
res.status(500).json({ error: error instanceof Error ? error.message : 'Unknown error' });
|
|
266
|
+
}
|
|
267
|
+
});
|
|
268
|
+
// Launch agent
|
|
269
|
+
router.post('/agents/:id/launch', (req, res) => {
|
|
270
|
+
try {
|
|
271
|
+
const id = parseInt(req.params.id, 10);
|
|
272
|
+
if (isNaN(id)) {
|
|
273
|
+
return res.status(400).json({ error: 'Invalid agent ID' });
|
|
274
|
+
}
|
|
275
|
+
// Check if already running
|
|
276
|
+
if (runningAgents.has(id)) {
|
|
277
|
+
return res.status(409).json({ error: 'Agent is already running', running: runningAgents.get(id).info });
|
|
278
|
+
}
|
|
279
|
+
const agent = db.getAgent(id);
|
|
280
|
+
if (!agent) {
|
|
281
|
+
return res.status(404).json({ error: 'Agent not found' });
|
|
282
|
+
}
|
|
283
|
+
const project = db.getProject(agent.project_id);
|
|
284
|
+
if (!project) {
|
|
285
|
+
return res.status(404).json({ error: 'Project not found' });
|
|
286
|
+
}
|
|
287
|
+
const { command, args, env } = buildAgentCommand(agent);
|
|
288
|
+
if (!command) {
|
|
289
|
+
return res.status(400).json({ error: 'No command configured for this agent' });
|
|
290
|
+
}
|
|
291
|
+
// Spawn the process
|
|
292
|
+
const childProcess = (0, child_process_1.spawn)(command, args, {
|
|
293
|
+
cwd: project.path,
|
|
294
|
+
env,
|
|
295
|
+
stdio: 'pipe',
|
|
296
|
+
detached: true,
|
|
297
|
+
});
|
|
298
|
+
if (!childProcess.pid) {
|
|
299
|
+
return res.status(500).json({ error: 'Failed to start agent process' });
|
|
300
|
+
}
|
|
301
|
+
const runningInfo = {
|
|
302
|
+
pid: childProcess.pid,
|
|
303
|
+
agentId: agent.id,
|
|
304
|
+
agentName: agent.name,
|
|
305
|
+
projectId: project.id,
|
|
306
|
+
projectPath: project.path,
|
|
307
|
+
cliType: agent.cli_type,
|
|
308
|
+
startedAt: Math.floor(Date.now() / 1000),
|
|
309
|
+
};
|
|
310
|
+
runningAgents.set(id, { process: childProcess, info: runningInfo });
|
|
311
|
+
// Clean up when process exits
|
|
312
|
+
childProcess.on('exit', () => {
|
|
313
|
+
runningAgents.delete(id);
|
|
314
|
+
});
|
|
315
|
+
childProcess.on('error', () => {
|
|
316
|
+
runningAgents.delete(id);
|
|
317
|
+
});
|
|
318
|
+
// Unref to allow the parent to exit independently
|
|
319
|
+
childProcess.unref();
|
|
320
|
+
res.status(201).json(runningInfo);
|
|
321
|
+
}
|
|
322
|
+
catch (error) {
|
|
323
|
+
res.status(500).json({ error: error instanceof Error ? error.message : 'Unknown error' });
|
|
324
|
+
}
|
|
325
|
+
});
|
|
326
|
+
// Stop agent
|
|
327
|
+
router.post('/agents/:id/stop', (req, res) => {
|
|
328
|
+
try {
|
|
329
|
+
const id = parseInt(req.params.id, 10);
|
|
330
|
+
if (isNaN(id)) {
|
|
331
|
+
return res.status(400).json({ error: 'Invalid agent ID' });
|
|
332
|
+
}
|
|
333
|
+
const running = runningAgents.get(id);
|
|
334
|
+
if (!running) {
|
|
335
|
+
return res.status(404).json({ error: 'Agent is not running' });
|
|
336
|
+
}
|
|
337
|
+
running.process.kill();
|
|
338
|
+
runningAgents.delete(id);
|
|
339
|
+
res.status(204).send();
|
|
340
|
+
}
|
|
341
|
+
catch (error) {
|
|
342
|
+
res.status(500).json({ error: error instanceof Error ? error.message : 'Unknown error' });
|
|
343
|
+
}
|
|
344
|
+
});
|
|
345
|
+
// Get all running agents
|
|
346
|
+
router.get('/agents/running', (req, res) => {
|
|
347
|
+
try {
|
|
348
|
+
const running = Array.from(runningAgents.values()).map(r => r.info);
|
|
349
|
+
res.json(running);
|
|
350
|
+
}
|
|
351
|
+
catch (error) {
|
|
352
|
+
res.status(500).json({ error: error instanceof Error ? error.message : 'Unknown error' });
|
|
353
|
+
}
|
|
354
|
+
});
|
|
355
|
+
// Get running status for specific agent
|
|
356
|
+
router.get('/agents/:id/status', (req, res) => {
|
|
357
|
+
try {
|
|
358
|
+
const id = parseInt(req.params.id, 10);
|
|
359
|
+
if (isNaN(id)) {
|
|
360
|
+
return res.status(400).json({ error: 'Invalid agent ID' });
|
|
361
|
+
}
|
|
362
|
+
const running = runningAgents.get(id);
|
|
363
|
+
if (running) {
|
|
364
|
+
res.json({ running: true, info: running.info });
|
|
365
|
+
}
|
|
366
|
+
else {
|
|
367
|
+
res.json({ running: false });
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
catch (error) {
|
|
371
|
+
res.status(500).json({ error: error instanceof Error ? error.message : 'Unknown error' });
|
|
372
|
+
}
|
|
373
|
+
});
|
|
374
|
+
exports.default = router;
|
|
375
|
+
//# 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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAQjC,QAAA,MAAM,MAAM,EAAE,MAAiB,CAAC;AAchC,eAAe,MAAM,CAAC"}
|
package/dist/api/routes/index.js
CHANGED
|
@@ -8,11 +8,15 @@ const projects_1 = __importDefault(require("./projects"));
|
|
|
8
8
|
const settings_1 = __importDefault(require("./settings"));
|
|
9
9
|
const workspaces_1 = __importDefault(require("./workspaces"));
|
|
10
10
|
const backup_1 = __importDefault(require("./backup"));
|
|
11
|
+
const agents_1 = __importDefault(require("./agents"));
|
|
12
|
+
const todos_1 = __importDefault(require("./todos"));
|
|
11
13
|
const router = (0, express_1.Router)();
|
|
12
14
|
router.use('/projects', projects_1.default);
|
|
13
15
|
router.use('/settings', settings_1.default);
|
|
14
16
|
router.use('/workspaces', workspaces_1.default);
|
|
15
17
|
router.use('/backup', backup_1.default);
|
|
18
|
+
router.use('/', agents_1.default); // Mounts both /projects/:id/agents and /agents routes
|
|
19
|
+
router.use('/', todos_1.default); // Mounts todo list and task routes
|
|
16
20
|
// Health check endpoint
|
|
17
21
|
router.get('/health', (req, res) => {
|
|
18
22
|
res.json({ status: 'ok', timestamp: new Date().toISOString() });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":";;;;;AAAA,qCAAiC;AACjC,0DAAwC;AACxC,0DAAwC;AACxC,8DAA4C;AAC5C,sDAAoC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":";;;;;AAAA,qCAAiC;AACjC,0DAAwC;AACxC,0DAAwC;AACxC,8DAA4C;AAC5C,sDAAoC;AACpC,sDAAoC;AACpC,oDAAkC;AAElC,MAAM,MAAM,GAAW,IAAA,gBAAM,GAAE,CAAC;AAEhC,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,kBAAc,CAAC,CAAC;AACxC,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,kBAAc,CAAC,CAAC;AACxC,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,oBAAgB,CAAC,CAAC;AAC5C,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,gBAAY,CAAC,CAAC;AACpC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAY,CAAC,CAAC,CAAC,sDAAsD;AACrF,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,eAAW,CAAC,CAAC,CAAE,mCAAmC;AAElE,wBAAwB;AACxB,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IACjC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAClE,CAAC,CAAC,CAAC;AAEH,kBAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"todos.d.ts","sourceRoot":"","sources":["../../src/routes/todos.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AASjC,QAAA,MAAM,MAAM,EAAE,MAAiB,CAAC;AAumBhC,eAAe,MAAM,CAAC"}
|