godcrm/backend/routes/v3/labs/index.js
GOD CRM Release f89e074dd1
Some checks failed
CI / Lint / Typecheck / Test / Build (push) Has been cancelled
CI / PostgreSQL Integration Tests (push) Has been cancelled
GOD CRM — public scrubbed snapshot
Governed substrate for autonomous agents: scoped identity (passports),
audited actions, MCP workspace. Infra IPs and secrets redacted for public release.
2026-08-10 04:01:45 +03:00

47 lines
1.5 KiB
JavaScript

/**
* Labs Routes Index
* Mounts all sub-routers for the labs feature
* @see ADR-043: Laboratories Feature
* @see ADR-119: Monster file refactoring
*
* IMPORTANT: Mount order matters - specific paths before parameterized ones.
* Routes with /node-types, /metrics, /ai/* must come before /:id, /:labTableId
*/
import { Router } from 'express';
import nodeTypesRouter from './node-types.js';
import aiRouter from './ai.js';
import projectsRouter from './projects.js';
import nodesRouter from './nodes.js';
import executionRouter from './execution.js';
import executionOpsRouter from './execution-ops.js';
import legacyRouter from './legacy.js';
import edgesRouter from './edges.js';
import metricsRouter from './metrics.js';
const router = Router();
// 1. Specific-path routes first (no param conflicts)
router.use(nodeTypesRouter); // GET /node-types
router.use(aiRouter); // /ai/agents, /ai/providers, /ai/templates/*
// 2. Projects v4 (/projects/*)
router.use(projectsRouter);
// 3. Nodes v4 CRUD (/:labTableId/nodes/*)
router.use(nodesRouter);
// 4. Execution (/:labTableId/nodes/:nodeId/execute|run|rerun|split)
router.use(executionRouter);
router.use(executionOpsRouter);
// 5. Legacy routes (/, /:id, /init, legacy /projects/*, legacy nodes)
router.use(legacyRouter);
// 6. Edges (/:id/edges, /edges/:edgeId, /projects/:id/edges)
router.use(edgesRouter);
// 7. Metrics (/metrics, /:labId/metrics, /nodes/:nodeId/metrics)
router.use(metricsRouter);
export default router;