agent-tasks 1.5.0 → 1.6.5

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 (49) hide show
  1. package/README.md +149 -42
  2. package/dist/context.d.ts +4 -0
  3. package/dist/context.d.ts.map +1 -1
  4. package/dist/context.js +11 -0
  5. package/dist/context.js.map +1 -1
  6. package/dist/domain/approvals.d.ts +1 -0
  7. package/dist/domain/approvals.d.ts.map +1 -1
  8. package/dist/domain/approvals.js +13 -3
  9. package/dist/domain/approvals.js.map +1 -1
  10. package/dist/domain/collaborators.d.ts +1 -0
  11. package/dist/domain/collaborators.d.ts.map +1 -1
  12. package/dist/domain/collaborators.js +14 -1
  13. package/dist/domain/collaborators.js.map +1 -1
  14. package/dist/domain/comments.d.ts.map +1 -1
  15. package/dist/domain/comments.js +6 -3
  16. package/dist/domain/comments.js.map +1 -1
  17. package/dist/domain/events.d.ts +1 -0
  18. package/dist/domain/events.d.ts.map +1 -1
  19. package/dist/domain/events.js +13 -4
  20. package/dist/domain/events.js.map +1 -1
  21. package/dist/domain/rules.js +46 -46
  22. package/dist/domain/tasks.d.ts +8 -2
  23. package/dist/domain/tasks.d.ts.map +1 -1
  24. package/dist/domain/tasks.js +61 -22
  25. package/dist/domain/tasks.js.map +1 -1
  26. package/dist/domain/validate.d.ts +2 -0
  27. package/dist/domain/validate.d.ts.map +1 -1
  28. package/dist/domain/validate.js +5 -2
  29. package/dist/domain/validate.js.map +1 -1
  30. package/dist/index.js +13 -2
  31. package/dist/index.js.map +1 -1
  32. package/dist/storage/database.js +10 -1
  33. package/dist/storage/database.js.map +1 -1
  34. package/dist/transport/mcp.d.ts.map +1 -1
  35. package/dist/transport/mcp.js +165 -7
  36. package/dist/transport/mcp.js.map +1 -1
  37. package/dist/transport/rest.d.ts.map +1 -1
  38. package/dist/transport/rest.js +183 -12
  39. package/dist/transport/rest.js.map +1 -1
  40. package/dist/transport/ws.d.ts.map +1 -1
  41. package/dist/transport/ws.js +39 -25
  42. package/dist/transport/ws.js.map +1 -1
  43. package/dist/types.d.ts +2 -1
  44. package/dist/types.d.ts.map +1 -1
  45. package/dist/types.js.map +1 -1
  46. package/dist/ui/app.js +1956 -648
  47. package/dist/ui/index.html +97 -14
  48. package/dist/ui/styles.css +2023 -316
  49. package/package.json +84 -78
@@ -4,7 +4,11 @@
4
4
  // Maps MCP tool calls to the TaskService. Thin adapter — validation lives
5
5
  // in the domain layer, not here.
6
6
  // =============================================================================
7
+ import { writeFileSync, mkdirSync } from 'fs';
8
+ import { join } from 'path';
9
+ import { homedir } from 'os';
7
10
  import { ValidationError } from '../types.js';
11
+ import { generateRules } from '../domain/rules.js';
8
12
  // ---------------------------------------------------------------------------
9
13
  // Tool definitions
10
14
  // ---------------------------------------------------------------------------
@@ -44,6 +48,9 @@ export const tools = [
44
48
  assigned_to: { type: 'string', description: 'Filter by assigned agent name' },
45
49
  stage: { type: 'string', description: 'Filter by pipeline stage' },
46
50
  project: { type: 'string', description: 'Filter by project' },
51
+ collaborator: { type: 'string', description: 'Filter tasks where agent is a collaborator' },
52
+ root_only: { type: 'boolean', description: 'Only show top-level tasks (no subtasks)' },
53
+ parent_id: { type: 'number', description: 'Filter subtasks of a specific parent' },
47
54
  limit: { type: 'number', description: 'Max results (default/max: 500)' },
48
55
  offset: { type: 'number', description: 'Skip first N results (for pagination)' },
49
56
  },
@@ -161,12 +168,20 @@ export const tools = [
161
168
  },
162
169
  {
163
170
  name: 'task_add_dependency',
164
- description: 'Make a task depend on another (blocks advancement until dependency is done).',
171
+ description: 'Add a relationship between tasks. "blocks" prevents advancement until dependency is done. "related" and "duplicate" are informational only.',
165
172
  inputSchema: {
166
173
  type: 'object',
167
174
  properties: {
168
175
  task_id: { type: 'number', description: 'Task that depends on another' },
169
- depends_on: { type: 'number', description: 'Task that must complete first' },
176
+ depends_on: {
177
+ type: 'number',
178
+ description: 'Task that must complete first (for blocks) or related task',
179
+ },
180
+ relationship: {
181
+ type: 'string',
182
+ enum: ['blocks', 'related', 'duplicate'],
183
+ description: 'Relationship type (default: blocks)',
184
+ },
170
185
  },
171
186
  required: ['task_id', 'depends_on'],
172
187
  },
@@ -385,6 +400,78 @@ export const tools = [
385
400
  },
386
401
  },
387
402
  },
403
+ {
404
+ name: 'task_review_cycle',
405
+ description: 'Review a task: approve (advance to next stage) or reject (regress with reason). Convenience wrapper for the maker-checker pattern.',
406
+ inputSchema: {
407
+ type: 'object',
408
+ properties: {
409
+ task_id: { type: 'number', description: 'Task ID to review' },
410
+ action: {
411
+ type: 'string',
412
+ enum: ['approve', 'reject'],
413
+ description: 'Approve or reject',
414
+ },
415
+ reason: { type: 'string', description: 'Rejection reason (required for reject)' },
416
+ regress_to: {
417
+ type: 'string',
418
+ description: 'Stage to regress to on rejection (default: implement)',
419
+ },
420
+ },
421
+ required: ['task_id', 'action'],
422
+ },
423
+ },
424
+ {
425
+ name: 'task_expand',
426
+ description: 'Break a task into subtasks. Creates subtasks with parent_id pointing to the given task, inheriting project and priority.',
427
+ inputSchema: {
428
+ type: 'object',
429
+ properties: {
430
+ task_id: { type: 'number', description: 'Parent task ID to expand' },
431
+ subtasks: {
432
+ type: 'array',
433
+ items: {
434
+ type: 'object',
435
+ properties: {
436
+ title: { type: 'string', description: 'Subtask title' },
437
+ description: { type: 'string', description: 'Subtask description' },
438
+ priority: {
439
+ type: 'number',
440
+ description: 'Priority override (inherits from parent if omitted)',
441
+ },
442
+ },
443
+ required: ['title'],
444
+ },
445
+ description: 'Array of subtasks to create',
446
+ },
447
+ },
448
+ required: ['task_id', 'subtasks'],
449
+ },
450
+ },
451
+ {
452
+ name: 'task_cleanup',
453
+ description: 'Run data cleanup manually — purges completed/cancelled tasks and stale data older than the retention period.',
454
+ inputSchema: {
455
+ type: 'object',
456
+ properties: {},
457
+ },
458
+ },
459
+ {
460
+ name: 'task_generate_rules',
461
+ description: 'Generate IDE-specific rule files that instruct agents to use the pipeline. Supports Cursor (.mdc) and Claude Code (CLAUDE.md) formats.',
462
+ inputSchema: {
463
+ type: 'object',
464
+ properties: {
465
+ format: {
466
+ type: 'string',
467
+ enum: ['mdc', 'claude_md'],
468
+ description: 'Output format: mdc (Cursor) or claude_md (Claude Code)',
469
+ },
470
+ project: { type: 'string', description: 'Project name for project-specific rules' },
471
+ },
472
+ required: ['format'],
473
+ },
474
+ },
388
475
  ];
389
476
  // ---------------------------------------------------------------------------
390
477
  // Input validation helpers
@@ -445,9 +532,10 @@ export function createToolHandler(ctx) {
445
532
  switch (name) {
446
533
  case 'task_set_session': {
447
534
  const id = requireString(args, 'id');
448
- const sessionName = requireString(args, 'name');
449
- currentSession = { id, name: sessionName };
450
- return { success: true, id, name: sessionName };
535
+ const sName = requireString(args, 'name');
536
+ currentSession = { id, name: sName };
537
+ writeSessionFile(id, sName);
538
+ return { success: true, id, name: sName };
451
539
  }
452
540
  case 'task_create': {
453
541
  return ctx.tasks.create({
@@ -503,8 +591,9 @@ export function createToolHandler(ctx) {
503
591
  });
504
592
  }
505
593
  case 'task_add_dependency': {
506
- ctx.tasks.addDependency(requireNumber(args, 'task_id'), requireNumber(args, 'depends_on'));
507
- return { success: true, task_id: args.task_id, depends_on: args.depends_on };
594
+ const relationship = (optString(args, 'relationship') ?? 'blocks');
595
+ ctx.tasks.addDependency(requireNumber(args, 'task_id'), requireNumber(args, 'depends_on'), relationship);
596
+ return { success: true, task_id: args.task_id, depends_on: args.depends_on, relationship };
508
597
  }
509
598
  case 'task_remove_dependency': {
510
599
  ctx.tasks.removeDependency(requireNumber(args, 'task_id'), requireNumber(args, 'depends_on'));
@@ -565,9 +654,78 @@ export function createToolHandler(ctx) {
565
654
  }
566
655
  case 'task_pending_approvals':
567
656
  return ctx.approvals.getPending(optString(args, 'reviewer'));
657
+ case 'task_review_cycle': {
658
+ const taskId = requireNumber(args, 'task_id');
659
+ const action = requireString(args, 'action');
660
+ const task = ctx.tasks.getById(taskId);
661
+ if (!task)
662
+ throw new ValidationError(`Task ${taskId} not found.`);
663
+ if (action === 'approve') {
664
+ ctx.tasks.advance(taskId);
665
+ return { success: true, action: 'approved', task: ctx.tasks.getById(taskId) };
666
+ }
667
+ else if (action === 'reject') {
668
+ const reason = requireString(args, 'reason');
669
+ const regressTo = optString(args, 'regress_to') ?? 'implement';
670
+ ctx.tasks.regress(taskId, regressTo, reason);
671
+ return { success: true, action: 'rejected', task: ctx.tasks.getById(taskId) };
672
+ }
673
+ else {
674
+ throw new ValidationError(`Invalid action: ${action}. Use "approve" or "reject".`);
675
+ }
676
+ }
677
+ case 'task_expand': {
678
+ const parentId = requireNumber(args, 'task_id');
679
+ const parent = ctx.tasks.getById(parentId);
680
+ if (!parent)
681
+ throw new ValidationError(`Task ${parentId} not found.`);
682
+ const subtaskDefs = args.subtasks;
683
+ if (!Array.isArray(subtaskDefs) || subtaskDefs.length === 0) {
684
+ throw new ValidationError('"subtasks" must be a non-empty array.');
685
+ }
686
+ const created = [];
687
+ for (const sub of subtaskDefs) {
688
+ if (typeof sub !== 'object' ||
689
+ sub === null ||
690
+ typeof sub.title !== 'string') {
691
+ throw new ValidationError('Each subtask must have a "title" string.');
692
+ }
693
+ const s = sub;
694
+ created.push(ctx.tasks.create({
695
+ title: s.title,
696
+ description: s.description ?? undefined,
697
+ priority: typeof s.priority === 'number' ? s.priority : parent.priority,
698
+ project: parent.project ?? undefined,
699
+ parent_id: parentId,
700
+ }, sessionName()));
701
+ }
702
+ return created;
703
+ }
704
+ case 'task_cleanup':
705
+ return ctx.cleanup.run();
706
+ case 'task_generate_rules': {
707
+ const format = requireString(args, 'format');
708
+ if (format !== 'mdc' && format !== 'claude_md') {
709
+ throw new ValidationError('Format must be "mdc" or "claude_md".');
710
+ }
711
+ const project = optString(args, 'project');
712
+ const stages = ctx.tasks.getPipelineStages(project);
713
+ return { rules: generateRules(format, stages, project) };
714
+ }
568
715
  default:
569
716
  throw new ValidationError(`Unknown tool: ${name}`);
570
717
  }
571
718
  };
572
719
  }
720
+ function writeSessionFile(id, name) {
721
+ try {
722
+ const claudeDir = join(homedir(), '.claude');
723
+ mkdirSync(claudeDir, { recursive: true });
724
+ const filePath = join(claudeDir, `hub-session.${id}.json`);
725
+ writeFileSync(filePath, JSON.stringify({ pid: process.pid, name, id, timestamp: new Date().toISOString() }));
726
+ }
727
+ catch {
728
+ /* non-critical */
729
+ }
730
+ }
573
731
  //# sourceMappingURL=mcp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/transport/mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/transport/mcp.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"rest.d.ts","sourceRoot":"","sources":["../../src/transport/rest.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAI5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAmEhD,wBAAgB,YAAY,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,IAAI,CAwVjG"}
1
+ {"version":3,"file":"rest.d.ts","sourceRoot":"","sources":["../../src/transport/rest.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAI5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAkIhD,wBAAgB,YAAY,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,IAAI,CAsdjG"}
@@ -8,7 +8,56 @@ import { readFileSync, realpathSync, existsSync } from 'fs';
8
8
  import { join, extname, resolve, dirname } from 'path';
9
9
  import { fileURLToPath } from 'url';
10
10
  import { TasksError, ValidationError } from '../types.js';
11
- const MAX_BODY_SIZE = 65536;
11
+ const MAX_BODY_SIZE = 131_072;
12
+ // ---------------------------------------------------------------------------
13
+ // Rate limiting
14
+ // ---------------------------------------------------------------------------
15
+ const RATE_LIMIT_WINDOW_MS = 60_000;
16
+ const RATE_LIMIT_MAX = 100;
17
+ const RATE_LIMIT_CLEANUP_INTERVAL_MS = 5 * 60_000;
18
+ const rateLimitMap = new Map();
19
+ let lastRateLimitCleanup = Date.now();
20
+ function cleanupRateLimitMap() {
21
+ const now = Date.now();
22
+ if (now - lastRateLimitCleanup < RATE_LIMIT_CLEANUP_INTERVAL_MS)
23
+ return;
24
+ lastRateLimitCleanup = now;
25
+ for (const [ip, entry] of rateLimitMap) {
26
+ if (now >= entry.resetAt) {
27
+ rateLimitMap.delete(ip);
28
+ }
29
+ }
30
+ }
31
+ function checkRateLimit(req, res) {
32
+ const ip = req.socket.remoteAddress ?? 'unknown';
33
+ const now = Date.now();
34
+ cleanupRateLimitMap();
35
+ let entry = rateLimitMap.get(ip);
36
+ if (!entry || now >= entry.resetAt) {
37
+ entry = { count: 0, resetAt: now + RATE_LIMIT_WINDOW_MS };
38
+ rateLimitMap.set(ip, entry);
39
+ }
40
+ entry.count++;
41
+ if (entry.count > RATE_LIMIT_MAX) {
42
+ res.writeHead(429, {
43
+ 'Content-Type': 'application/json',
44
+ 'Retry-After': String(Math.ceil((entry.resetAt - now) / 1000)),
45
+ 'Access-Control-Allow-Origin': '*',
46
+ ...SECURITY_HEADERS,
47
+ });
48
+ res.end(JSON.stringify({ error: 'Too many requests. Try again later.' }));
49
+ return false;
50
+ }
51
+ return true;
52
+ }
53
+ // ---------------------------------------------------------------------------
54
+ // Security headers
55
+ // ---------------------------------------------------------------------------
56
+ const SECURITY_HEADERS = {
57
+ 'X-Frame-Options': 'SAMEORIGIN',
58
+ 'Strict-Transport-Security': 'max-age=31536000; includeSubDomains',
59
+ };
60
+ const CSP_HEADER = "default-src 'self'; style-src 'self' https://fonts.googleapis.com https://cdn.jsdelivr.net 'unsafe-inline'; font-src https://fonts.gstatic.com; script-src 'self' https://cdn.jsdelivr.net; img-src 'self' data:; connect-src 'self' ws: wss:";
12
61
  function parseBody(req) {
13
62
  return new Promise((resolve, reject) => {
14
63
  const chunks = [];
@@ -17,7 +66,7 @@ function parseBody(req) {
17
66
  size += chunk.length;
18
67
  if (size > MAX_BODY_SIZE) {
19
68
  req.destroy();
20
- reject(new ValidationError('Request body too large (max 64KB).'));
69
+ reject(new ValidationError('Request body too large (max 128KB).'));
21
70
  return;
22
71
  }
23
72
  chunks.push(chunk);
@@ -65,11 +114,18 @@ export function createRouter(ctx) {
65
114
  });
66
115
  routes.push({ method, pattern: new RegExp(`^${pattern}$`), paramNames, handler });
67
116
  }
117
+ function parseId(params, key = 'id') {
118
+ const n = parseInt(params[key], 10);
119
+ if (Number.isNaN(n))
120
+ throw new ValidationError(`Invalid ${key}: must be an integer.`);
121
+ return n;
122
+ }
68
123
  function json(res, data, status = 200) {
69
124
  res.writeHead(status, {
70
125
  'Content-Type': 'application/json',
71
126
  'Access-Control-Allow-Origin': '*',
72
127
  'X-Content-Type-Options': 'nosniff',
128
+ ...SECURITY_HEADERS,
73
129
  });
74
130
  res.end(JSON.stringify(data));
75
131
  }
@@ -81,7 +137,7 @@ export function createRouter(ctx) {
81
137
  status: 'ok',
82
138
  version: pkg.version,
83
139
  uptime: process.uptime(),
84
- tasks: ctx.tasks.list().length,
140
+ tasks: ctx.tasks.count(),
85
141
  });
86
142
  });
87
143
  route('GET', '/api/tasks', (req, res) => {
@@ -97,18 +153,57 @@ export function createRouter(ctx) {
97
153
  }));
98
154
  });
99
155
  route('GET', '/api/tasks/:id', (_req, res, params) => {
100
- const task = ctx.tasks.getById(parseInt(params.id, 10));
156
+ const task = ctx.tasks.getById(parseId(params));
101
157
  if (!task) {
102
158
  json(res, { error: 'Task not found' }, 404);
103
159
  return;
104
160
  }
105
161
  json(res, task);
106
162
  });
163
+ route('PUT', '/api/tasks/:id', async (req, res, params) => {
164
+ try {
165
+ const body = await parseBody(req);
166
+ const taskId = parseId(params);
167
+ const updated = ctx.tasks.update(taskId, {
168
+ title: body.title,
169
+ description: body.description,
170
+ priority: body.priority,
171
+ project: body.project,
172
+ tags: body.tags,
173
+ assigned_to: body.assigned_to,
174
+ });
175
+ json(res, updated);
176
+ }
177
+ catch (err) {
178
+ if (err instanceof TasksError) {
179
+ json(res, { error: err.message }, err.statusCode);
180
+ }
181
+ else {
182
+ json(res, { error: 'Internal error' }, 500);
183
+ }
184
+ }
185
+ });
107
186
  route('GET', '/api/tasks/:id/artifacts', (req, res, params) => {
108
187
  const url = new URL(req.url, `http://${req.headers.host}`);
109
188
  const stage = url.searchParams.get('stage') ?? undefined;
110
189
  try {
111
- json(res, ctx.tasks.getArtifacts(parseInt(params.id, 10), stage));
190
+ json(res, ctx.tasks.getArtifacts(parseId(params), stage));
191
+ }
192
+ catch (err) {
193
+ if (err instanceof TasksError) {
194
+ json(res, { error: err.message }, err.statusCode);
195
+ }
196
+ else {
197
+ json(res, { error: 'Internal error' }, 500);
198
+ }
199
+ }
200
+ });
201
+ route('POST', '/api/tasks/:id/artifacts', async (req, res, params) => {
202
+ try {
203
+ const body = await parseBody(req);
204
+ const taskId = parseId(params);
205
+ const artifact = ctx.tasks.addArtifact(taskId, body.name, body.content, body.created_by || 'api', body.stage);
206
+ json(res, artifact, 201);
112
207
  }
113
208
  catch (err) {
114
209
  if (err instanceof TasksError) {
@@ -121,7 +216,7 @@ export function createRouter(ctx) {
121
216
  });
122
217
  route('GET', '/api/tasks/:id/dependencies', (_req, res, params) => {
123
218
  try {
124
- json(res, ctx.tasks.getDependencies(parseInt(params.id, 10)));
219
+ json(res, ctx.tasks.getDependencies(parseId(params)));
125
220
  }
126
221
  catch (err) {
127
222
  if (err instanceof TasksError) {
@@ -153,6 +248,31 @@ export function createRouter(ctx) {
153
248
  route('POST', '/api/tasks', async (req, res) => {
154
249
  try {
155
250
  const body = await parseBody(req);
251
+ if (body.title !== undefined && typeof body.title !== 'string') {
252
+ throw new ValidationError('"title" must be a string.');
253
+ }
254
+ if (body.description !== undefined && typeof body.description !== 'string') {
255
+ throw new ValidationError('"description" must be a string.');
256
+ }
257
+ if (body.priority !== undefined && typeof body.priority !== 'number') {
258
+ throw new ValidationError('"priority" must be a number.');
259
+ }
260
+ if (body.parent_id !== undefined && typeof body.parent_id !== 'number') {
261
+ throw new ValidationError('"parent_id" must be a number.');
262
+ }
263
+ if (body.assign_to !== undefined && typeof body.assign_to !== 'string') {
264
+ throw new ValidationError('"assign_to" must be a string.');
265
+ }
266
+ if (body.stage !== undefined && typeof body.stage !== 'string') {
267
+ throw new ValidationError('"stage" must be a string.');
268
+ }
269
+ if (body.project !== undefined && typeof body.project !== 'string') {
270
+ throw new ValidationError('"project" must be a string.');
271
+ }
272
+ if (body.tags !== undefined &&
273
+ (!Array.isArray(body.tags) || !body.tags.every((t) => typeof t === 'string'))) {
274
+ throw new ValidationError('"tags" must be an array of strings.');
275
+ }
156
276
  const task = ctx.tasks.create({
157
277
  title: body.title,
158
278
  description: body.description,
@@ -162,7 +282,7 @@ export function createRouter(ctx) {
162
282
  project: body.project,
163
283
  tags: body.tags,
164
284
  parent_id: body.parent_id,
165
- }, body.created_by || 'api');
285
+ }, typeof body.created_by === 'string' && body.created_by ? body.created_by : 'api');
166
286
  json(res, task, 201);
167
287
  }
168
288
  catch (err) {
@@ -177,7 +297,7 @@ export function createRouter(ctx) {
177
297
  route('PUT', '/api/tasks/:id/stage', async (req, res, params) => {
178
298
  try {
179
299
  const body = await parseBody(req);
180
- const taskId = parseInt(params.id, 10);
300
+ const taskId = parseId(params);
181
301
  const targetStage = body.stage;
182
302
  const task = ctx.tasks.getById(taskId);
183
303
  if (!task) {
@@ -208,7 +328,7 @@ export function createRouter(ctx) {
208
328
  });
209
329
  route('GET', '/api/tasks/:id/subtasks', (_req, res, params) => {
210
330
  try {
211
- json(res, ctx.tasks.getSubtasks(parseInt(params.id, 10)));
331
+ json(res, ctx.tasks.getSubtasks(parseId(params)));
212
332
  }
213
333
  catch (err) {
214
334
  if (err instanceof TasksError) {
@@ -221,7 +341,7 @@ export function createRouter(ctx) {
221
341
  });
222
342
  route('GET', '/api/tasks/:id/comments', (_req, res, params) => {
223
343
  try {
224
- json(res, ctx.comments.list(parseInt(params.id, 10)));
344
+ json(res, ctx.comments.list(parseId(params)));
225
345
  }
226
346
  catch (err) {
227
347
  if (err instanceof TasksError) {
@@ -235,7 +355,13 @@ export function createRouter(ctx) {
235
355
  route('POST', '/api/tasks/:id/comments', async (req, res, params) => {
236
356
  try {
237
357
  const body = await parseBody(req);
238
- const comment = ctx.comments.add(parseInt(params.id, 10), body.agent_id || 'api', body.content, body.parent_comment_id);
358
+ if (body.content !== undefined && typeof body.content !== 'string') {
359
+ throw new ValidationError('"content" must be a string.');
360
+ }
361
+ if (body.parent_comment_id !== undefined && typeof body.parent_comment_id !== 'number') {
362
+ throw new ValidationError('"parent_comment_id" must be a number.');
363
+ }
364
+ const comment = ctx.comments.add(parseId(params), typeof body.agent_id === 'string' && body.agent_id ? body.agent_id : 'api', body.content, typeof body.parent_comment_id === 'number' ? body.parent_comment_id : undefined);
239
365
  json(res, comment, 201);
240
366
  }
241
367
  catch (err) {
@@ -247,6 +373,34 @@ export function createRouter(ctx) {
247
373
  }
248
374
  }
249
375
  });
376
+ route('GET', '/api/agents', async (_req, res) => {
377
+ try {
378
+ const agents = await ctx.agentBridge.fetchAgents();
379
+ json(res, agents);
380
+ }
381
+ catch {
382
+ json(res, []);
383
+ }
384
+ });
385
+ route('POST', '/api/cleanup', async (req, res) => {
386
+ try {
387
+ const body = await parseBody(req);
388
+ const result = body.all
389
+ ? ctx.cleanup.purgeEverything()
390
+ : body.force
391
+ ? ctx.cleanup.purgeAll()
392
+ : ctx.cleanup.run();
393
+ json(res, result);
394
+ }
395
+ catch (err) {
396
+ if (err instanceof TasksError) {
397
+ json(res, { error: err.message }, err.statusCode);
398
+ }
399
+ else {
400
+ json(res, { error: 'Internal error' }, 500);
401
+ }
402
+ }
403
+ });
250
404
  route('GET', '/api/search', (req, res) => {
251
405
  const url = new URL(req.url, `http://${req.headers.host}`);
252
406
  const query = url.searchParams.get('q') ?? '';
@@ -311,6 +465,11 @@ export function createRouter(ctx) {
311
465
  res.writeHead(200, {
312
466
  'Content-Type': contentType,
313
467
  'X-Content-Type-Options': 'nosniff',
468
+ 'Content-Security-Policy': CSP_HEADER,
469
+ 'Cache-Control': 'no-cache, no-store, must-revalidate',
470
+ Pragma: 'no-cache',
471
+ Expires: '0',
472
+ ...SECURITY_HEADERS,
314
473
  });
315
474
  res.end(content);
316
475
  }
@@ -323,6 +482,8 @@ export function createRouter(ctx) {
323
482
  // Request dispatcher
324
483
  // -----------------------------------------------------------------------
325
484
  return (req, res) => {
485
+ if (!checkRateLimit(req, res))
486
+ return;
326
487
  if (req.method === 'OPTIONS') {
327
488
  res.writeHead(204, {
328
489
  'Access-Control-Allow-Origin': '*',
@@ -341,9 +502,19 @@ export function createRouter(ctx) {
341
502
  if (!match)
342
503
  continue;
343
504
  const params = {};
505
+ let decodeFailed = false;
344
506
  r.paramNames.forEach((name, i) => {
345
- params[name] = decodeURIComponent(match[i + 1]);
507
+ try {
508
+ params[name] = decodeURIComponent(match[i + 1]);
509
+ }
510
+ catch {
511
+ decodeFailed = true;
512
+ }
346
513
  });
514
+ if (decodeFailed) {
515
+ json(res, { error: 'Malformed URL encoding in path parameter.' }, 400);
516
+ return;
517
+ }
347
518
  try {
348
519
  const result = r.handler(req, res, params);
349
520
  if (result instanceof Promise) {