Governed substrate for autonomous agents: scoped identity (passports), audited actions, MCP workspace. Infra IPs and secrets redacted for public release.
507 lines
13 KiB
JavaScript
507 lines
13 KiB
JavaScript
/**
|
|
* Pipeline Configuration — Unified multi-space config
|
|
*
|
|
* Provides `getPipelineConfig(spaceId)` to resolve per-space table IDs,
|
|
* state/priority/type option IDs, agent user mappings, and other constants
|
|
* needed by ChainHandoffService and related pipeline services.
|
|
*
|
|
* Space 11 (Development) is the default and preserves all existing hardcoded
|
|
* values for backward compatibility.
|
|
*
|
|
* Space 36 (HOLETRON) is the first additional space.
|
|
*
|
|
* To add a new space, add a SPACE_XX_CONFIG block and register it in the
|
|
* CONFIGS map at the bottom of this file.
|
|
*/
|
|
|
|
// =============================================================================
|
|
// SPACE 11 (Development) — Matches original hardcoded values in ChainHandoffService
|
|
// =============================================================================
|
|
|
|
const SPACE_11_CONFIG = {
|
|
spaceId: 11,
|
|
|
|
TICKETS_TABLE_ID: 1708,
|
|
AGENT_ACTIVITY_TABLE_ID: 1701,
|
|
AI_AGENTS_TABLE_ID: 1784,
|
|
|
|
STATE: {
|
|
BACKLOG: 24275,
|
|
ASSIGNED: 43436,
|
|
IN_PROGRESS: 24276,
|
|
REVIEW: 24277,
|
|
CONTROL: 43437,
|
|
REJECTED: 43438,
|
|
DONE: 24278,
|
|
},
|
|
|
|
PRIORITY: {
|
|
CRITICAL: 24274,
|
|
},
|
|
|
|
TYPE: {
|
|
TASK: 24269,
|
|
},
|
|
|
|
DEFAULTS: {
|
|
PRIORITY: 24274, // "critical" (historical default for Space 11)
|
|
TYPE: 24269, // "task"
|
|
},
|
|
|
|
AGENT_USERS: {
|
|
ORCHESTRATOR: 18,
|
|
DEV_RALPH: 19,
|
|
DEVELOPER: 20,
|
|
FRONTEND: 21,
|
|
FRONTEND_QA: 22,
|
|
TEST_RUNNER: 23,
|
|
ARCHITECT: 24,
|
|
TABLE_ARCHITECT: 25,
|
|
WIDGET_DEVELOPER: 26,
|
|
DOCUMENT_AGENT: 28,
|
|
MARKETER: 51,
|
|
NIKICH: 53,
|
|
FITNESS_COACH: 54,
|
|
SYSADMIN: 67,
|
|
},
|
|
|
|
USERS_TABLE_ROW_TO_USER_ID: {
|
|
26283: 19, // Developer Ralph
|
|
26284: 22, // Frontend QA
|
|
26285: 21, // Frontend Developer
|
|
26286: 28, // Document Agent
|
|
26287: 20, // Developer
|
|
26288: 24, // Architect
|
|
36612: 18, // Orchestrator
|
|
},
|
|
|
|
/**
|
|
* Legacy row-ID-to-user-ID mapping for historical assigned_to values
|
|
* that were stored as Users-table row IDs instead of system user IDs.
|
|
*/
|
|
ROW_ID_TO_USER_ID: {
|
|
26283: 19, // Developer Ralph -> 19
|
|
26285: 21, // Frontend Developer -> 21
|
|
26284: 22, // Frontend QA -> 22
|
|
26287: 20, // Developer -> 20
|
|
26288: 24, // Architect -> 24
|
|
26286: 28, // Document Agent -> 28
|
|
},
|
|
|
|
SUPERVISOR_CONFIG: {
|
|
enabled: true,
|
|
supervisor_agent_id: 53, // Nikich userId
|
|
trigger_at_step: 9,
|
|
max_cycles: 5,
|
|
max_total_tasks: 50,
|
|
max_duration_ms: 8 * 60 * 60 * 1000,
|
|
cycle_cooldown_ms: 5000,
|
|
},
|
|
};
|
|
|
|
|
|
// =============================================================================
|
|
// SPACE 36 (HOLETRON) — Full pipeline configuration
|
|
// =============================================================================
|
|
|
|
const SPACE_36_CONFIG = {
|
|
spaceId: 36,
|
|
|
|
TICKETS_TABLE_ID: 3207,
|
|
AGENT_ACTIVITY_TABLE_ID: 3070,
|
|
AI_AGENTS_TABLE_ID: 1584,
|
|
QUALITY_REPORTS_TABLE_ID: 3071,
|
|
ADR_PROJECTS_TABLE_ID: 3069,
|
|
|
|
// Dictionary table IDs (Space 36 only)
|
|
TICKET_STATES_TABLE_ID: 2968,
|
|
PRIORITY_TABLE_ID: 2967,
|
|
TYPE_TABLE_ID: 2966,
|
|
USERS_TABLE_ID: 970,
|
|
|
|
STATE: {
|
|
BACKLOG: 57081,
|
|
ASSIGNED: 57082,
|
|
IN_PROGRESS: 57083,
|
|
REVIEW: 57084,
|
|
CONTROL: 57085,
|
|
DONE: 57086,
|
|
ON_HOLD: 57087,
|
|
REJECTED: 57088,
|
|
},
|
|
|
|
PRIORITY: {
|
|
LOW: 57077,
|
|
MEDIUM: 57078,
|
|
HIGH: 57079,
|
|
CRITICAL: 57080,
|
|
},
|
|
|
|
TYPE: {
|
|
BUG: 57069,
|
|
TASK: 57070,
|
|
STORY: 57071,
|
|
SPIKE: 57072,
|
|
PRODUCTION: 57073,
|
|
LOGISTICS: 57074,
|
|
MARKETING: 57075,
|
|
WEBSITE: 57076,
|
|
},
|
|
|
|
DEFAULTS: {
|
|
PRIORITY: 57079, // "high"
|
|
TYPE: 57070, // "task"
|
|
},
|
|
|
|
AGENT_USERS: {
|
|
ORCHESTRATOR: 18,
|
|
DEV_RALPH: 19,
|
|
DEVELOPER: 20,
|
|
FRONTEND: 21,
|
|
FRONTEND_QA: 22,
|
|
TEST_RUNNER: 23,
|
|
ARCHITECT: 24,
|
|
TABLE_ARCHITECT: 25,
|
|
WIDGET_DEVELOPER: 26,
|
|
DOCUMENT_AGENT: 28,
|
|
MARKETER: 51,
|
|
NIKICH: 53,
|
|
FITNESS_COACH: 54,
|
|
SYSADMIN: 67,
|
|
PES: 2392,
|
|
},
|
|
|
|
USERS_TABLE_ROW_TO_USER_ID: {
|
|
10811: 1, // GERATRON
|
|
10815: 7, // NIKITRON
|
|
57126: 18, // Orchestrator
|
|
74566: 24, // Architect
|
|
74567: 25, // Table Architect
|
|
},
|
|
|
|
ROW_ID_TO_USER_ID: {
|
|
10811: 1, // GERATRON
|
|
10815: 7, // NIKITRON
|
|
57126: 18, // Orchestrator
|
|
74566: 24, // Architect
|
|
74567: 25, // Table Architect
|
|
},
|
|
|
|
SUPERVISOR_CONFIG: {
|
|
enabled: true,
|
|
supervisor_agent_id: 53, // Nikich userId (same across spaces)
|
|
trigger_at_step: 9,
|
|
max_cycles: 5,
|
|
max_total_tasks: 50,
|
|
max_duration_ms: 8 * 60 * 60 * 1000,
|
|
cycle_cooldown_ms: 5000,
|
|
},
|
|
|
|
// Space-36-specific extras (not present in Space 11)
|
|
AGENT_ROWS: {
|
|
HOLETRON: 57101,
|
|
PRODUCTION_MANAGER: 57102,
|
|
LOGISTICS_COORDINATOR: 57103,
|
|
MARKETING_MANAGER: 57104,
|
|
SALES_MANAGER: 57105,
|
|
WEBSITE_DEVELOPER: 57106,
|
|
HR_MANAGER: 57107,
|
|
QUALITY_INSPECTOR: 57108,
|
|
FINANCE_ANALYST: 57109,
|
|
WORKSPACE_MANAGER: 69310,
|
|
ARCHITECT: 69311,
|
|
GEMINI_ASSISTANT: 69312,
|
|
ADR_WRITER: 69313,
|
|
FRONTEND: 69314,
|
|
ORCHESTRATOR: 69315,
|
|
GPT_ASSISTANT: 69316,
|
|
TABLE_ARCHITECT: 69317,
|
|
MARKETING_STRATEGIST: 69318,
|
|
DOCUMENT_AGENT: 69319,
|
|
DEVELOPER_RALPH: 69320,
|
|
WIDGET_DEVELOPER: 69321,
|
|
FRONTEND_QA: 69322,
|
|
FRONTEND_DEBUGGER: 69323,
|
|
SYSADMIN: 69324,
|
|
DEVELOPER: 69325,
|
|
TEST_RUNNER: 69326,
|
|
AGENT_TEMPLATE: 69327,
|
|
NIKICH: 69328,
|
|
PES: 70373,
|
|
},
|
|
|
|
TICKET_COLUMNS: {
|
|
type: 25137,
|
|
adr_ref: 25138,
|
|
priority: 23683,
|
|
state: 25139,
|
|
assigned_to: 25140,
|
|
what: 23680,
|
|
why: 23682,
|
|
acceptance_criteria: 25141,
|
|
test_steps: 25142,
|
|
created_date: 25143,
|
|
completed_date: 25144,
|
|
phase: 25145,
|
|
scheduled_date: 25146,
|
|
due_date: 23685,
|
|
progress: 25147,
|
|
depends_on: 25148,
|
|
chain_id: 25149,
|
|
cycle: 25150,
|
|
calendar_event: 25151,
|
|
},
|
|
|
|
ACTIVITY_COLUMNS: {
|
|
agent_id: 22590,
|
|
task_id: 22591,
|
|
action: 22592,
|
|
timestamp: 22593,
|
|
details: 22594,
|
|
success: 22595,
|
|
duration_ms: 22596,
|
|
tokens_used: 22597,
|
|
cost_usd: 22598,
|
|
error_message: 22599,
|
|
},
|
|
|
|
QUALITY_COLUMNS: {
|
|
task_id: 22600,
|
|
report_type: 22601,
|
|
status: 22602,
|
|
tests_total: 22603,
|
|
tests_passed: 22604,
|
|
tests_failed: 22605,
|
|
tests_skipped: 22606,
|
|
coverage_percent: 22607,
|
|
any_count: 22608,
|
|
lighthouse_score: 22609,
|
|
bundle_size_kb: 22610,
|
|
security_issues: 22611,
|
|
a11y_violations: 22612,
|
|
details: 22613,
|
|
created_at: 22614,
|
|
},
|
|
|
|
ADR_COLUMNS: {
|
|
adr_number: 22581,
|
|
title: 22582,
|
|
status: 22583,
|
|
priority: 22584,
|
|
assigned_orchestrator: 22585,
|
|
start_date: 22586,
|
|
end_date: 22587,
|
|
completion_percentage: 22588,
|
|
notes: 22589,
|
|
},
|
|
};
|
|
|
|
|
|
// =============================================================================
|
|
// SPACE 35 (Sixtynine) — Full pipeline configuration
|
|
// =============================================================================
|
|
|
|
const SPACE_35_CONFIG = {
|
|
spaceId: 35,
|
|
|
|
TICKETS_TABLE_ID: 3679,
|
|
AGENT_ACTIVITY_TABLE_ID: 3680,
|
|
AI_AGENTS_TABLE_ID: 1574,
|
|
QUALITY_REPORTS_TABLE_ID: 3681,
|
|
|
|
// Dictionary table IDs
|
|
TICKET_STATES_TABLE_ID: 3682,
|
|
PRIORITY_TABLE_ID: 3683,
|
|
TYPE_TABLE_ID: 3684,
|
|
USERS_TABLE_ID: 940,
|
|
|
|
STATE: {
|
|
BACKLOG: 104402,
|
|
ASSIGNED: 104403,
|
|
IN_PROGRESS: 104404,
|
|
REVIEW: 104405,
|
|
CONTROL: 104406,
|
|
DONE: 104407,
|
|
ON_HOLD: 104408,
|
|
REJECTED: 104409,
|
|
},
|
|
|
|
PRIORITY: {
|
|
LOW: 104410,
|
|
MEDIUM: 104411,
|
|
HIGH: 104412,
|
|
CRITICAL: 104413,
|
|
},
|
|
|
|
TYPE: {
|
|
BUG: 104414,
|
|
TASK: 104415,
|
|
STORY: 104416,
|
|
SPIKE: 104417,
|
|
PRODUCTION: 104418,
|
|
LOGISTICS: 104419,
|
|
MARKETING: 104420,
|
|
WEBSITE: 104421,
|
|
},
|
|
|
|
DEFAULTS: {
|
|
PRIORITY: 104412, // "high"
|
|
TYPE: 104415, // "task"
|
|
},
|
|
|
|
AGENT_USERS: {
|
|
ORCHESTRATOR: 18,
|
|
DEV_RALPH: 19,
|
|
DEVELOPER: 20,
|
|
FRONTEND: 21,
|
|
FRONTEND_QA: 22,
|
|
TEST_RUNNER: 23,
|
|
ARCHITECT: 24,
|
|
TABLE_ARCHITECT: 25,
|
|
WIDGET_DEVELOPER: 26,
|
|
DOCUMENT_AGENT: 28,
|
|
MARKETER: 51,
|
|
NIKICH: 53,
|
|
FITNESS_COACH: 54,
|
|
SYSADMIN: 67,
|
|
PES: 2392,
|
|
},
|
|
|
|
USERS_TABLE_ROW_TO_USER_ID: {
|
|
// Will be populated as users are mapped
|
|
},
|
|
|
|
ROW_ID_TO_USER_ID: {
|
|
// Will be populated as users are mapped
|
|
},
|
|
|
|
SUPERVISOR_CONFIG: {
|
|
enabled: true,
|
|
supervisor_agent_id: 53, // Nikich userId
|
|
trigger_at_step: 9,
|
|
max_cycles: 5,
|
|
max_total_tasks: 50,
|
|
max_duration_ms: 8 * 60 * 60 * 1000,
|
|
cycle_cooldown_ms: 5000,
|
|
},
|
|
|
|
AGENT_ROWS: {
|
|
GENERAL_ASSISTANT: 22259,
|
|
CODE_EXPERT: 22260,
|
|
CONTENT_WRITER: 22261,
|
|
DATA_ANALYST: 22262,
|
|
GPT_ASSISTANT: 104198,
|
|
IMAGE_GENERATOR: 104204,
|
|
SUMMARY: 104205,
|
|
PES: 104206,
|
|
N: 104207,
|
|
HOLETRON: 104208,
|
|
TRAINER: 104209,
|
|
FITNESS_TRAINER: 104210,
|
|
NIKICH: 104211,
|
|
MARKETING_STRATEGIST:104212,
|
|
AGENT_TEMPLATE: 104213,
|
|
ARCHITECT: 104214,
|
|
ADR_WRITER: 104215,
|
|
DOCUMENT_AGENT: 104216,
|
|
WIDGET_DEVELOPER: 104217,
|
|
TABLE_ARCHITECT: 104218,
|
|
FRONTEND_DEBUGGER: 104219,
|
|
FRONTEND_QA: 104220,
|
|
SYSADMIN: 104221,
|
|
DEVELOPER: 104222,
|
|
TEST_RUNNER: 104223,
|
|
FRONTEND: 104224,
|
|
DEVELOPER_RALPH: 104225,
|
|
ORCHESTRATOR: 104226,
|
|
WORKSPACE_MANAGER: 104227,
|
|
},
|
|
|
|
TICKET_COLUMNS: {
|
|
what: 26678,
|
|
why: 26679,
|
|
state: 26680,
|
|
priority: 26681,
|
|
type: 26682,
|
|
assigned_to: 26683,
|
|
acceptance_criteria: 26684,
|
|
test_steps: 26685,
|
|
created_date: 26686,
|
|
completed_date: 26687,
|
|
phase: 26688,
|
|
scheduled_date: 26689,
|
|
due_date: 26690,
|
|
progress: 26691,
|
|
depends_on: 26692,
|
|
chain_id: 26693,
|
|
cycle: 26694,
|
|
calendar_event: 26695,
|
|
adr_ref: 26696,
|
|
},
|
|
|
|
ACTIVITY_COLUMNS: {
|
|
agent_id: 26697,
|
|
task_id: 26698,
|
|
action: 26699,
|
|
timestamp: 26700,
|
|
details: 26701,
|
|
success: 26702,
|
|
duration_ms: 26703,
|
|
tokens_used: 26704,
|
|
cost_usd: 26705,
|
|
error_message: 26706,
|
|
},
|
|
|
|
QUALITY_COLUMNS: {
|
|
task_id: 26707,
|
|
report_type: 26708,
|
|
status: 26709,
|
|
tests_total: 26710,
|
|
tests_passed: 26711,
|
|
tests_failed: 26712,
|
|
tests_skipped: 26713,
|
|
coverage_percent: 26714,
|
|
details: 26715,
|
|
created_at: 26716,
|
|
},
|
|
};
|
|
|
|
|
|
// =============================================================================
|
|
// Registry — add new spaces here
|
|
// =============================================================================
|
|
|
|
const CONFIGS = {
|
|
11: SPACE_11_CONFIG,
|
|
35: SPACE_35_CONFIG,
|
|
36: SPACE_36_CONFIG,
|
|
};
|
|
|
|
const DEFAULT_SPACE_ID = 11;
|
|
|
|
/**
|
|
* Get pipeline configuration for a given space.
|
|
*
|
|
* @param {number|string} [spaceId] - Space ID (defaults to 11)
|
|
* @returns {Object} Pipeline config object for the requested space
|
|
* @throws {Error} If space ID is not registered
|
|
*/
|
|
export function getPipelineConfig(spaceId) {
|
|
const id = spaceId != null ? Number(spaceId) : DEFAULT_SPACE_ID;
|
|
const config = CONFIGS[id];
|
|
if (!config) {
|
|
throw new Error(`No pipeline config registered for space ${id}. Available: ${Object.keys(CONFIGS).join(', ')}`);
|
|
}
|
|
return config;
|
|
}
|
|
|
|
/**
|
|
* List all registered space IDs.
|
|
* @returns {number[]}
|
|
*/
|
|
export function getRegisteredSpaceIds() {
|
|
return Object.keys(CONFIGS).map(Number);
|
|
}
|
|
|
|
export { SPACE_11_CONFIG, SPACE_35_CONFIG, SPACE_36_CONFIG, DEFAULT_SPACE_ID };
|
|
export default getPipelineConfig;
|