@jigyasudham/veto 2.0.2 → 2.1.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 (105) hide show
  1. package/README.md +391 -320
  2. package/dist/agents/executor.d.ts.map +1 -1
  3. package/dist/agents/executor.js +3 -1
  4. package/dist/agents/executor.js.map +1 -1
  5. package/dist/agents/llm-runner.d.ts.map +1 -1
  6. package/dist/agents/llm-runner.js +62 -58
  7. package/dist/agents/llm-runner.js.map +1 -1
  8. package/dist/cli.js +40 -4
  9. package/dist/cli.js.map +1 -1
  10. package/dist/log.d.ts +9 -0
  11. package/dist/log.d.ts.map +1 -0
  12. package/dist/log.js +33 -0
  13. package/dist/log.js.map +1 -0
  14. package/dist/memory/config.d.ts +1 -0
  15. package/dist/memory/config.d.ts.map +1 -1
  16. package/dist/memory/config.js +3 -2
  17. package/dist/memory/config.js.map +1 -1
  18. package/dist/memory/local.d.ts.map +1 -1
  19. package/dist/memory/local.js +3 -1
  20. package/dist/memory/local.js.map +1 -1
  21. package/dist/memory/schema.d.ts +1 -1
  22. package/dist/memory/schema.d.ts.map +1 -1
  23. package/dist/memory/schema.js +1 -0
  24. package/dist/memory/schema.js.map +1 -1
  25. package/dist/router/learning-updater.d.ts +4 -1
  26. package/dist/router/learning-updater.d.ts.map +1 -1
  27. package/dist/router/learning-updater.js +10 -0
  28. package/dist/router/learning-updater.js.map +1 -1
  29. package/dist/server/handlers/advisors.d.ts +3 -0
  30. package/dist/server/handlers/advisors.d.ts.map +1 -0
  31. package/dist/server/handlers/advisors.js +331 -0
  32. package/dist/server/handlers/advisors.js.map +1 -0
  33. package/dist/server/handlers/agents.d.ts +3 -0
  34. package/dist/server/handlers/agents.d.ts.map +1 -0
  35. package/dist/server/handlers/agents.js +202 -0
  36. package/dist/server/handlers/agents.js.map +1 -0
  37. package/dist/server/handlers/core.d.ts +3 -0
  38. package/dist/server/handlers/core.d.ts.map +1 -0
  39. package/dist/server/handlers/core.js +169 -0
  40. package/dist/server/handlers/core.js.map +1 -0
  41. package/dist/server/handlers/council.d.ts +3 -0
  42. package/dist/server/handlers/council.d.ts.map +1 -0
  43. package/dist/server/handlers/council.js +277 -0
  44. package/dist/server/handlers/council.js.map +1 -0
  45. package/dist/server/handlers/devtools.d.ts +3 -0
  46. package/dist/server/handlers/devtools.d.ts.map +1 -0
  47. package/dist/server/handlers/devtools.js +41 -0
  48. package/dist/server/handlers/devtools.js.map +1 -0
  49. package/dist/server/handlers/generators.d.ts +3 -0
  50. package/dist/server/handlers/generators.d.ts.map +1 -0
  51. package/dist/server/handlers/generators.js +541 -0
  52. package/dist/server/handlers/generators.js.map +1 -0
  53. package/dist/server/handlers/git.d.ts +3 -0
  54. package/dist/server/handlers/git.d.ts.map +1 -0
  55. package/dist/server/handlers/git.js +225 -0
  56. package/dist/server/handlers/git.js.map +1 -0
  57. package/dist/server/handlers/learning.d.ts +3 -0
  58. package/dist/server/handlers/learning.d.ts.map +1 -0
  59. package/dist/server/handlers/learning.js +60 -0
  60. package/dist/server/handlers/learning.js.map +1 -0
  61. package/dist/server/handlers/memory.d.ts +3 -0
  62. package/dist/server/handlers/memory.d.ts.map +1 -0
  63. package/dist/server/handlers/memory.js +181 -0
  64. package/dist/server/handlers/memory.js.map +1 -0
  65. package/dist/server/handlers/observability.d.ts +3 -0
  66. package/dist/server/handlers/observability.d.ts.map +1 -0
  67. package/dist/server/handlers/observability.js +132 -0
  68. package/dist/server/handlers/observability.js.map +1 -0
  69. package/dist/server/handlers/review.d.ts +3 -0
  70. package/dist/server/handlers/review.d.ts.map +1 -0
  71. package/dist/server/handlers/review.js +327 -0
  72. package/dist/server/handlers/review.js.map +1 -0
  73. package/dist/server/handlers/session.d.ts +3 -0
  74. package/dist/server/handlers/session.d.ts.map +1 -0
  75. package/dist/server/handlers/session.js +272 -0
  76. package/dist/server/handlers/session.js.map +1 -0
  77. package/dist/server/handlers/watch.d.ts +3 -0
  78. package/dist/server/handlers/watch.d.ts.map +1 -0
  79. package/dist/server/handlers/watch.js +29 -0
  80. package/dist/server/handlers/watch.js.map +1 -0
  81. package/dist/server/handlers/workers.d.ts +3 -0
  82. package/dist/server/handlers/workers.d.ts.map +1 -0
  83. package/dist/server/handlers/workers.js +27 -0
  84. package/dist/server/handlers/workers.js.map +1 -0
  85. package/dist/server/registry.d.ts +11 -0
  86. package/dist/server/registry.d.ts.map +1 -0
  87. package/dist/server/registry.js +9 -0
  88. package/dist/server/registry.js.map +1 -0
  89. package/dist/server/runtime.d.ts +49 -0
  90. package/dist/server/runtime.d.ts.map +1 -0
  91. package/dist/server/runtime.js +81 -0
  92. package/dist/server/runtime.js.map +1 -0
  93. package/dist/server/scan-core.d.ts +32 -0
  94. package/dist/server/scan-core.d.ts.map +1 -0
  95. package/dist/server/scan-core.js +82 -0
  96. package/dist/server/scan-core.js.map +1 -0
  97. package/dist/server.d.ts +1 -1
  98. package/dist/server.d.ts.map +1 -1
  99. package/dist/server.js +64 -2946
  100. package/dist/server.js.map +1 -1
  101. package/dist/tools/definitions.d.ts +4 -4
  102. package/dist/tools/definitions.js +4 -4
  103. package/dist/tools/definitions.js.map +1 -1
  104. package/package.json +2 -2
  105. package/AGENTS.md +0 -134
@@ -1,4 +1,4 @@
1
- export declare const CREATE_TABLES = "\n CREATE TABLE IF NOT EXISTS sessions (\n id TEXT PRIMARY KEY,\n started_at TEXT NOT NULL,\n ended_at TEXT,\n platform TEXT NOT NULL DEFAULT 'claude',\n active_client TEXT,\n last_resumed_at TEXT,\n connection_type TEXT NOT NULL DEFAULT 'subscription',\n project_dir TEXT,\n summary TEXT,\n context TEXT,\n task_state TEXT,\n token_count INTEGER DEFAULT 0,\n save_type TEXT NOT NULL DEFAULT 'manual',\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS docs_cache (\n id TEXT PRIMARY KEY,\n package_name TEXT NOT NULL,\n ecosystem TEXT NOT NULL,\n version TEXT NOT NULL,\n content TEXT NOT NULL,\n fetched_at TEXT NOT NULL,\n UNIQUE(package_name, ecosystem, version)\n );\n\n CREATE TABLE IF NOT EXISTS task_plans (\n id TEXT PRIMARY KEY,\n description_hash TEXT NOT NULL,\n plan_json TEXT NOT NULL,\n project_dir TEXT,\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS usage_events (\n id TEXT PRIMARY KEY,\n session_id TEXT,\n platform TEXT NOT NULL,\n connection_type TEXT NOT NULL DEFAULT 'subscription',\n tokens INTEGER DEFAULT 0,\n event_type TEXT NOT NULL DEFAULT 'session_save',\n recorded_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS decisions (\n id TEXT PRIMARY KEY,\n session_id TEXT NOT NULL,\n made_at TEXT NOT NULL,\n decision TEXT NOT NULL,\n rationale TEXT,\n council_verdict TEXT,\n files_affected TEXT,\n overridden INTEGER DEFAULT 0,\n FOREIGN KEY (session_id) REFERENCES sessions(id)\n );\n\n CREATE TABLE IF NOT EXISTS files_modified (\n id TEXT PRIMARY KEY,\n session_id TEXT NOT NULL,\n file_path TEXT NOT NULL,\n operation TEXT NOT NULL,\n modified_at TEXT NOT NULL,\n FOREIGN KEY (session_id) REFERENCES sessions(id)\n );\n\n CREATE TABLE IF NOT EXISTS council_outcomes (\n id TEXT PRIMARY KEY,\n session_id TEXT,\n task TEXT NOT NULL,\n verdict TEXT NOT NULL,\n lead_dev TEXT,\n pm TEXT,\n architect TEXT,\n ux TEXT,\n devil TEXT,\n legal TEXT,\n security TEXT,\n recommended TEXT,\n debated_at TEXT NOT NULL,\n duration_ms INTEGER DEFAULT 0\n );\n\n CREATE TABLE IF NOT EXISTS learning_data (\n id TEXT PRIMARY KEY,\n task_type TEXT NOT NULL,\n complexity INTEGER NOT NULL,\n model_tier INTEGER NOT NULL,\n output_quality INTEGER,\n tokens_used INTEGER,\n agent TEXT,\n recorded_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS patterns (\n id TEXT PRIMARY KEY,\n pattern_key TEXT NOT NULL UNIQUE,\n pattern_val TEXT NOT NULL,\n confidence REAL DEFAULT 1.0,\n seen_count INTEGER DEFAULT 1,\n updated_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS rate_usage (\n id TEXT PRIMARY KEY,\n platform TEXT NOT NULL,\n date_key TEXT NOT NULL,\n request_count INTEGER DEFAULT 0,\n updated_at TEXT NOT NULL DEFAULT (datetime('now')),\n UNIQUE(platform, date_key)\n );\n\n CREATE TABLE IF NOT EXISTS usage_log (\n id TEXT PRIMARY KEY,\n tool_name TEXT NOT NULL,\n session_id TEXT,\n max_tokens INTEGER NOT NULL,\n estimated_tokens INTEGER NOT NULL,\n exceeded INTEGER NOT NULL DEFAULT 0,\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS knowledge_base (\n id TEXT PRIMARY KEY,\n type TEXT NOT NULL DEFAULT 'solution',\n title TEXT NOT NULL,\n content TEXT NOT NULL,\n tags TEXT,\n project_dir TEXT,\n session_id TEXT,\n relevance REAL DEFAULT 1.0,\n accessed_count INTEGER DEFAULT 0,\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n updated_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS project_map (\n id TEXT PRIMARY KEY,\n project_dir TEXT NOT NULL UNIQUE,\n structure TEXT NOT NULL,\n key_modules TEXT,\n tech_stack TEXT,\n updated_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS scan_diagnostics (\n id TEXT PRIMARY KEY,\n file_path TEXT NOT NULL,\n line INTEGER NOT NULL DEFAULT 0,\n col_start INTEGER NOT NULL DEFAULT 0,\n message TEXT NOT NULL,\n severity TEXT NOT NULL DEFAULT 'warning',\n source TEXT NOT NULL DEFAULT 'veto',\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS context_usage (\n platform TEXT PRIMARY KEY,\n model TEXT,\n token_count INTEGER NOT NULL DEFAULT 0,\n context_window INTEGER NOT NULL DEFAULT 200000,\n usage_pct REAL NOT NULL DEFAULT 0,\n session_id TEXT,\n updated_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS routing_feedback (\n id TEXT PRIMARY KEY,\n task_hash TEXT NOT NULL,\n task_snippet TEXT NOT NULL,\n complexity INTEGER NOT NULL,\n model_tier INTEGER NOT NULL,\n agent TEXT,\n outcome TEXT NOT NULL DEFAULT 'pending',\n quality INTEGER,\n session_id TEXT,\n recorded_at TEXT NOT NULL DEFAULT (datetime('now')),\n expires_at TEXT NOT NULL\n );\n\n CREATE TABLE IF NOT EXISTS tool_call_trace_log (\n id TEXT PRIMARY KEY,\n session_id TEXT,\n tool_name TEXT NOT NULL,\n args_json TEXT,\n result_status TEXT NOT NULL DEFAULT 'success',\n error_message TEXT,\n duration_ms INTEGER NOT NULL,\n tokens_used INTEGER,\n recorded_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE INDEX IF NOT EXISTS idx_tool_trace_session ON tool_call_trace_log(session_id);\n CREATE INDEX IF NOT EXISTS idx_tool_trace_name ON tool_call_trace_log(tool_name);\n\n CREATE INDEX IF NOT EXISTS idx_scan_diag_file ON scan_diagnostics(file_path);\n CREATE INDEX IF NOT EXISTS idx_routing_fb_hash ON routing_feedback(task_hash);\n CREATE INDEX IF NOT EXISTS idx_routing_fb_exp ON routing_feedback(expires_at);\n\n CREATE INDEX IF NOT EXISTS idx_sessions_platform ON sessions(platform);\n CREATE INDEX IF NOT EXISTS idx_decisions_session ON decisions(session_id);\n CREATE INDEX IF NOT EXISTS idx_files_session ON files_modified(session_id);\n CREATE INDEX IF NOT EXISTS idx_learning_task_type ON learning_data(task_type);\n CREATE INDEX IF NOT EXISTS idx_patterns_key ON patterns(pattern_key);\n CREATE INDEX IF NOT EXISTS idx_rate_usage_platform ON rate_usage(platform, date_key);\n CREATE INDEX IF NOT EXISTS idx_knowledge_type ON knowledge_base(type);\n CREATE INDEX IF NOT EXISTS idx_knowledge_project ON knowledge_base(project_dir);\n CREATE INDEX IF NOT EXISTS idx_project_map_dir ON project_map(project_dir);\n CREATE INDEX IF NOT EXISTS idx_docs_cache_pkg ON docs_cache(package_name, ecosystem);\n CREATE INDEX IF NOT EXISTS idx_usage_events_session ON usage_events(session_id);\n CREATE INDEX IF NOT EXISTS idx_usage_events_date ON usage_events(recorded_at);\n";
1
+ export declare const CREATE_TABLES = "\n CREATE TABLE IF NOT EXISTS sessions (\n id TEXT PRIMARY KEY,\n started_at TEXT NOT NULL,\n ended_at TEXT,\n platform TEXT NOT NULL DEFAULT 'claude',\n active_client TEXT,\n last_resumed_at TEXT,\n connection_type TEXT NOT NULL DEFAULT 'subscription',\n project_dir TEXT,\n summary TEXT,\n context TEXT,\n task_state TEXT,\n token_count INTEGER DEFAULT 0,\n save_type TEXT NOT NULL DEFAULT 'manual',\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS docs_cache (\n id TEXT PRIMARY KEY,\n package_name TEXT NOT NULL,\n ecosystem TEXT NOT NULL,\n version TEXT NOT NULL,\n content TEXT NOT NULL,\n fetched_at TEXT NOT NULL,\n UNIQUE(package_name, ecosystem, version)\n );\n\n CREATE TABLE IF NOT EXISTS task_plans (\n id TEXT PRIMARY KEY,\n description_hash TEXT NOT NULL,\n plan_json TEXT NOT NULL,\n project_dir TEXT,\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS usage_events (\n id TEXT PRIMARY KEY,\n session_id TEXT,\n platform TEXT NOT NULL,\n connection_type TEXT NOT NULL DEFAULT 'subscription',\n tokens INTEGER DEFAULT 0,\n event_type TEXT NOT NULL DEFAULT 'session_save',\n recorded_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS decisions (\n id TEXT PRIMARY KEY,\n session_id TEXT NOT NULL,\n made_at TEXT NOT NULL,\n decision TEXT NOT NULL,\n rationale TEXT,\n council_verdict TEXT,\n files_affected TEXT,\n overridden INTEGER DEFAULT 0,\n FOREIGN KEY (session_id) REFERENCES sessions(id)\n );\n\n CREATE TABLE IF NOT EXISTS files_modified (\n id TEXT PRIMARY KEY,\n session_id TEXT NOT NULL,\n file_path TEXT NOT NULL,\n operation TEXT NOT NULL,\n modified_at TEXT NOT NULL,\n FOREIGN KEY (session_id) REFERENCES sessions(id)\n );\n\n CREATE TABLE IF NOT EXISTS council_outcomes (\n id TEXT PRIMARY KEY,\n session_id TEXT,\n task TEXT NOT NULL,\n verdict TEXT NOT NULL,\n lead_dev TEXT,\n pm TEXT,\n architect TEXT,\n ux TEXT,\n devil TEXT,\n legal TEXT,\n security TEXT,\n recommended TEXT,\n debated_at TEXT NOT NULL,\n duration_ms INTEGER DEFAULT 0\n );\n\n CREATE TABLE IF NOT EXISTS learning_data (\n id TEXT PRIMARY KEY,\n task_type TEXT NOT NULL,\n complexity INTEGER NOT NULL,\n model_tier INTEGER NOT NULL,\n output_quality INTEGER,\n tokens_used INTEGER,\n agent TEXT,\n recorded_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS patterns (\n id TEXT PRIMARY KEY,\n pattern_key TEXT NOT NULL UNIQUE,\n pattern_val TEXT NOT NULL,\n confidence REAL DEFAULT 1.0,\n seen_count INTEGER DEFAULT 1,\n updated_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS rate_usage (\n id TEXT PRIMARY KEY,\n platform TEXT NOT NULL,\n date_key TEXT NOT NULL,\n request_count INTEGER DEFAULT 0,\n token_count INTEGER DEFAULT 0,\n updated_at TEXT NOT NULL DEFAULT (datetime('now')),\n UNIQUE(platform, date_key)\n );\n\n CREATE TABLE IF NOT EXISTS usage_log (\n id TEXT PRIMARY KEY,\n tool_name TEXT NOT NULL,\n session_id TEXT,\n max_tokens INTEGER NOT NULL,\n estimated_tokens INTEGER NOT NULL,\n exceeded INTEGER NOT NULL DEFAULT 0,\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS knowledge_base (\n id TEXT PRIMARY KEY,\n type TEXT NOT NULL DEFAULT 'solution',\n title TEXT NOT NULL,\n content TEXT NOT NULL,\n tags TEXT,\n project_dir TEXT,\n session_id TEXT,\n relevance REAL DEFAULT 1.0,\n accessed_count INTEGER DEFAULT 0,\n created_at TEXT NOT NULL DEFAULT (datetime('now')),\n updated_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS project_map (\n id TEXT PRIMARY KEY,\n project_dir TEXT NOT NULL UNIQUE,\n structure TEXT NOT NULL,\n key_modules TEXT,\n tech_stack TEXT,\n updated_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS scan_diagnostics (\n id TEXT PRIMARY KEY,\n file_path TEXT NOT NULL,\n line INTEGER NOT NULL DEFAULT 0,\n col_start INTEGER NOT NULL DEFAULT 0,\n message TEXT NOT NULL,\n severity TEXT NOT NULL DEFAULT 'warning',\n source TEXT NOT NULL DEFAULT 'veto',\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS context_usage (\n platform TEXT PRIMARY KEY,\n model TEXT,\n token_count INTEGER NOT NULL DEFAULT 0,\n context_window INTEGER NOT NULL DEFAULT 200000,\n usage_pct REAL NOT NULL DEFAULT 0,\n session_id TEXT,\n updated_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE TABLE IF NOT EXISTS routing_feedback (\n id TEXT PRIMARY KEY,\n task_hash TEXT NOT NULL,\n task_snippet TEXT NOT NULL,\n complexity INTEGER NOT NULL,\n model_tier INTEGER NOT NULL,\n agent TEXT,\n outcome TEXT NOT NULL DEFAULT 'pending',\n quality INTEGER,\n session_id TEXT,\n recorded_at TEXT NOT NULL DEFAULT (datetime('now')),\n expires_at TEXT NOT NULL\n );\n\n CREATE TABLE IF NOT EXISTS tool_call_trace_log (\n id TEXT PRIMARY KEY,\n session_id TEXT,\n tool_name TEXT NOT NULL,\n args_json TEXT,\n result_status TEXT NOT NULL DEFAULT 'success',\n error_message TEXT,\n duration_ms INTEGER NOT NULL,\n tokens_used INTEGER,\n recorded_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n\n CREATE INDEX IF NOT EXISTS idx_tool_trace_session ON tool_call_trace_log(session_id);\n CREATE INDEX IF NOT EXISTS idx_tool_trace_name ON tool_call_trace_log(tool_name);\n\n CREATE INDEX IF NOT EXISTS idx_scan_diag_file ON scan_diagnostics(file_path);\n CREATE INDEX IF NOT EXISTS idx_routing_fb_hash ON routing_feedback(task_hash);\n CREATE INDEX IF NOT EXISTS idx_routing_fb_exp ON routing_feedback(expires_at);\n\n CREATE INDEX IF NOT EXISTS idx_sessions_platform ON sessions(platform);\n CREATE INDEX IF NOT EXISTS idx_decisions_session ON decisions(session_id);\n CREATE INDEX IF NOT EXISTS idx_files_session ON files_modified(session_id);\n CREATE INDEX IF NOT EXISTS idx_learning_task_type ON learning_data(task_type);\n CREATE INDEX IF NOT EXISTS idx_patterns_key ON patterns(pattern_key);\n CREATE INDEX IF NOT EXISTS idx_rate_usage_platform ON rate_usage(platform, date_key);\n CREATE INDEX IF NOT EXISTS idx_knowledge_type ON knowledge_base(type);\n CREATE INDEX IF NOT EXISTS idx_knowledge_project ON knowledge_base(project_dir);\n CREATE INDEX IF NOT EXISTS idx_project_map_dir ON project_map(project_dir);\n CREATE INDEX IF NOT EXISTS idx_docs_cache_pkg ON docs_cache(package_name, ecosystem);\n CREATE INDEX IF NOT EXISTS idx_usage_events_session ON usage_events(session_id);\n CREATE INDEX IF NOT EXISTS idx_usage_events_date ON usage_events(recorded_at);\n";
2
2
  export type SessionRow = {
3
3
  id: string;
4
4
  started_at: string;
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/memory/schema.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,aAAa,i7OAoNzB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,WAAW,GAAG,UAAU,CAAC;AAEpG,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;CAAE,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/memory/schema.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,aAAa,u9OAqNzB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,WAAW,GAAG,UAAU,CAAC;AAEpG,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;CAAE,CAAC"}
@@ -109,6 +109,7 @@ export const CREATE_TABLES = `
109
109
  platform TEXT NOT NULL,
110
110
  date_key TEXT NOT NULL,
111
111
  request_count INTEGER DEFAULT 0,
112
+ token_count INTEGER DEFAULT 0,
112
113
  updated_at TEXT NOT NULL DEFAULT (datetime('now')),
113
114
  UNIQUE(platform, date_key)
114
115
  );
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/memory/schema.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,wDAAwD;AAExD,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoN5B,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/memory/schema.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,wDAAwD;AAExD,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqN5B,CAAC"}
@@ -38,7 +38,10 @@ export type LearnedThresholds = {
38
38
  source: 'learned' | 'default';
39
39
  data_points: number;
40
40
  };
41
- export declare function recordOutcome(taskType: string, complexity: number, modelTier: 1 | 2 | 3, agent: string, outputQuality: number, tokensUsed?: number, fileExt?: string): void;
41
+ export declare function recordOutcome(taskType: string, complexity: number, modelTier: 1 | 2 | 3, agent: string, outputQuality: number, tokensUsed?: number, fileExt?: string): {
42
+ auto_applied: boolean;
43
+ total: number;
44
+ };
42
45
  export declare function getRecommendedAgent(taskType: string, fileExt?: string): string | null;
43
46
  export declare function getLearningStats(): LearningStats;
44
47
  export declare function getAgentPerformanceStats(): AgentPerformanceStat[];
@@ -1 +1 @@
1
- {"version":3,"file":"learning-updater.d.ts","sourceRoot":"","sources":["../../src/router/learning-updater.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"learning-updater.d.ts","sourceRoot":"","sources":["../../src/router/learning-updater.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  // Records routing outcomes to SQLite and adjusts tier thresholds from historical quality data
2
2
  import { randomUUID } from 'node:crypto';
3
3
  import { getDb } from '../memory/local.js';
4
+ import { getConfig } from '../memory/config.js';
4
5
  // ─── Record ───────────────────────────────────────────────────────────────────
5
6
  export function recordOutcome(taskType, complexity, modelTier, agent, outputQuality, tokensUsed = 0, fileExt) {
6
7
  const db = getDb();
@@ -28,6 +29,15 @@ export function recordOutcome(taskType, complexity, modelTier, agent, outputQual
28
29
  if (keyword)
29
30
  upsert(`task_agent:${keyword}:${agent}`);
30
31
  }
32
+ // Auto-apply learned thresholds every 20 outcomes (default on; disable via
33
+ // config auto_apply_learning=false). Closes the learning loop so no manual
34
+ // veto_learning_apply is required.
35
+ const total = db.prepare('SELECT COUNT(*) as c FROM learning_data').get().c;
36
+ let auto_applied = false;
37
+ if (total >= 20 && total % 20 === 0 && getConfig().auto_apply_learning !== false) {
38
+ auto_applied = applyLearnedThresholds().applied;
39
+ }
40
+ return { auto_applied, total };
31
41
  }
32
42
  // ─── Predictive Agent Recommendation ─────────────────────────────────────────
33
43
  export function getRecommendedAgent(taskType, fileExt) {
@@ -1 +1 @@
1
- {"version":3,"file":"learning-updater.js","sourceRoot":"","sources":["../../src/router/learning-updater.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"learning-updater.js","sourceRoot":"","sources":["../../src/router/learning-updater.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAE9F,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAyChD,iFAAiF;AAEjF,MAAM,UAAU,aAAa,CAC3B,QAAgB,EAChB,UAAkB,EAClB,SAAoB,EACpB,KAAa,EACb,aAAqB,EACrB,UAAU,GAAG,CAAC,EACd,OAAgB;IAEhB,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,EAAE,CAAC,OAAO,CACR;kCAC8B,CAC/B,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IAEvF,mFAAmF;IACnF,IAAI,KAAK,IAAI,KAAK,KAAK,SAAS,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE;YAC7B,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,oFAAoF,CAAC,CAAC,GAAG,CAAC,GAAG,CAChC,CAAC;YAC1F,IAAI,QAAQ,EAAE,CAAC;gBACb,8CAA8C;gBAC9C,MAAM,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,aAAa,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;gBAClH,EAAE,CAAC,OAAO,CAAC,0FAA0F,CAAC;qBACnG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,UAAU,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YAClE,CAAC;iBAAM,CAAC;gBACN,EAAE,CAAC,OAAO,CAAC,mHAAmH,CAAC;qBAC5H,GAAG,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,GAAG,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;YAChE,CAAC;QACH,CAAC,CAAC;QAEF,IAAI,OAAO;YAAE,MAAM,CAAC,cAAc,OAAO,CAAC,WAAW,EAAE,IAAI,KAAK,EAAE,CAAC,CAAC;QACpE,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,IAAI,OAAO;YAAE,MAAM,CAAC,cAAc,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,2EAA2E;IAC3E,2EAA2E;IAC3E,mCAAmC;IACnC,MAAM,KAAK,GAAI,EAAE,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,GAAG,EAAoB,CAAC,CAAC,CAAC;IAC/F,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,KAAK,IAAI,EAAE,IAAI,KAAK,GAAG,EAAE,KAAK,CAAC,IAAI,SAAS,EAAE,CAAC,mBAAmB,KAAK,KAAK,EAAE,CAAC;QACjF,YAAY,GAAG,sBAAsB,EAAE,CAAC,OAAO,CAAC;IAClD,CAAC;IACD,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;AACjC,CAAC;AAED,gFAAgF;AAEhF,MAAM,UAAU,mBAAmB,CAAC,QAAgB,EAAE,OAAgB;IACpE,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IAEnB,iDAAiD;IACjD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CACrB;;wCAEkC,CACnC,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,WAAW,EAAE,IAAI,CAAgG,CAAC;QAC9I,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,GAAG;YAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IAC/E,CAAC;IAED,kCAAkC;IAClC,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CACrB;;wCAEkC,CACnC,CAAC,GAAG,CAAC,cAAc,OAAO,IAAI,CAAgG,CAAC;QAChI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,GAAG;YAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IAC/E,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,iFAAiF;AAEjF,MAAM,UAAU,gBAAgB;IAC9B,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CACrB;4CACwC,CACzC,CAAC,GAAG,EAAuE,CAAC;IAE7E,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC9D,MAAM,cAAc,GAA2D,EAAE,CAAC;IAClF,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG;YAC7B,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG;SAC1D,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,0BAA0B,CAAC,cAAc,CAAC,CAAC;IAC9D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,oBAAoB,EAAE,UAAU,EAAE,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;GAUvB,CAAC,CAAC,GAAG,EAGJ,CAAC;IAEH,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACpB,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,GAAG,EAAE,CAAC,GAAG,EAAE;QAChD,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC;QACpC,iBAAiB,EAAE,CAAC,CAAC,iBAAiB;QACtC,eAAe,EAAE,CAAC,CAAC,WAAW,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,iBAAiB,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI;KACnF,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;GAiBvB,CAAC,CAAC,GAAG,EAGJ,CAAC;IAEH,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QAClB,sFAAsF;QACtF,MAAM,YAAY,GAAG,CAAC,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,MAAM,YAAY,GAAG,CAAC,CAAC,aAAa,GAAG,YAAY,IAAI,CAAC,CAAC,WAAW,GAAG,EAAE,CAAC;QAC1E,OAAO;YACL,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC;YAC5C,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,GAAG,EAAE,CAAC,GAAG,EAAE;YAChD,aAAa,EAAE,CAAC,CAAC,aAAa;YAC9B,YAAY;SACb,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IAEnB,qFAAqF;IACrF,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;;;GASvB,CAAC,CAAC,GAAG,EAGJ,CAAC;IAEH,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QAClB,IAAI,aAAa,GAAkB,IAAI,CAAC;QACxC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YAClB,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC;YACjD,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;YAClD,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO;YACL,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;YACrC,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,aAAa;YACb,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;SACrC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,iFAAiF;AAEjF,SAAS,0BAA0B,CACjC,cAAsE;IAEtE,MAAM,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;IAE7B,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,SAAS,GAAG,EAAE,CAAC;IAEnB,mFAAmF;IACnF,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,IAAI,EAAE,CAAC,WAAW,IAAI,EAAE;QAAE,SAAS,GAAG,EAAE,CAAC;IACjE,0EAA0E;IAC1E,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,IAAI,EAAE,CAAC,WAAW,GAAG,EAAE;QAAE,SAAS,GAAG,EAAE,CAAC;IAEhE,4EAA4E;IAC5E,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,IAAI,EAAE,CAAC,WAAW,IAAI,EAAE;QAAE,SAAS,GAAG,EAAE,CAAC;IACjE,iFAAiF;IACjF,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,IAAI,EAAE,CAAC,WAAW,GAAG,EAAE;QAAE,SAAS,GAAG,EAAE,CAAC;IAEhE,mEAAmE;IACnE,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,IAAI,EAAE,CAAC,WAAW,GAAG,EAAE;QAAE,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;IAEzF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAClC,CAAC;AAED,iFAAiF;AAEjF,MAAM,UAAU,sBAAsB;IACpC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,KAAK,GAAI,EAAE,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,GAAG,EAAoB,CAAC,CAAC,CAAC;IAE/F,gDAAgD;IAChD,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;YAC5C,WAAW,EAAE,KAAK;YAClB,MAAM,EAAE,oDAAoD,KAAK,4CAA4C;SAC9G,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;IACjC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,oBAAoB,CAAC;IAE5D,qEAAqE;IACrE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,kBAAkB,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,kBAAkB,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5G,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,GAAG,CAAC,GAAG,CAA+B,CAAC;QACpH,IAAI,QAAQ,EAAE,CAAC;YACb,EAAE,CAAC,OAAO,CAAC,2EAA2E,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAC7G,CAAC;aAAM,CAAC;YACN,EAAE,CAAC,OAAO,CAAC,mHAAmH,CAAC;iBAC5H,GAAG,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE;QACpC,WAAW,EAAE,KAAK;QAClB,MAAM,EAAE,2BAA2B,KAAK,iDAAiD,SAAS,IAAI,SAAS,GAAG;KACnH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,oEAAoE,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAA4D,CAAC;IAClL,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,oEAAoE,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAA4D,CAAC;IAElL,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;IAC7E,CAAC;IAED,OAAO;QACL,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;QAC1C,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;QAC1C,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,KAAK,CAAC,UAAU;KAC9B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,gBAAgB,EAAE,CAAC,oBAAoB,CAAC;AACjD,CAAC;AAED,iFAAiF;AACjF,wEAAwE;AACxE,kFAAkF;AAElF,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B,MAAM,UAAU,iBAAiB;IAC/B,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,wDAAwD,CAAC,CAAC,GAAG,CAAC,0BAA0B,CAAwC,CAAC;IACxJ,OAAO,GAAG,EAAE,WAAW,KAAK,MAAM,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IACvC,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,GAAG,CAAC,0BAA0B,CAA+B,CAAC;IAC3I,IAAI,QAAQ,EAAE,CAAC;QACb,EAAE,CAAC,OAAO,CAAC,2EAA2E,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,0BAA0B,CAAC,CAAC;IACpI,CAAC;SAAM,CAAC;QACN,EAAE,CAAC,OAAO,CAAC,mHAAmH,CAAC;aAC5H,GAAG,CAAC,UAAU,EAAE,EAAE,0BAA0B,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAgBD,MAAM,UAAU,qBAAqB,CAAC,IAMrC;IACC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;IACxB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,iBAAiB,GAAG,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;IACtF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5E,EAAE,CAAC,OAAO,CAAC;;;GAGV,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;IAC9I,OAAO,EAAE,CAAC;AACZ,CAAC;AAaD,MAAM,UAAU,uBAAuB;IACrC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IAEpC,MAAM,KAAK,GAAM,EAAE,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC,GAAG,EAAoB,CAAC,CAAC,CAAC;IACpG,MAAM,MAAM,GAAK,EAAE,CAAC,OAAO,CAAC,iEAAiE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAmB,CAAC,CAAC,CAAC;IAC5H,MAAM,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;IAE/B,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAC5B,2FAA2F,CAC5F,CAAC,GAAG,CAAC,GAAG,CAA0C,CAAC;IACpD,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9E,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CACzB,wHAAwH,CACzH,CAAC,GAAG,CAAC,GAAG,CAAmE,CAAC;IAC7E,MAAM,OAAO,GAAkE,EAAE,CAAC;IAClF,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACpG,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CACxB,8FAA8F,CAC/F,CAAC,GAAG,CAAC,GAAG,CAAuC,CAAC;IAEjD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,IAAI,IAAI,EAAE,CAAC;AACzI,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC,GAAG,EAAyB,CAAC;IACzF,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,6DAA6D,CAAC,CAAC,GAAG,EAAyB,CAAC;IAClH,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,6DAA6D,CAAC,CAAC,GAAG,EAAyB,CAAC;IAClH,OAAO,EAAE,gBAAgB,EAAE,QAAQ,CAAC,OAAO,EAAE,gBAAgB,EAAE,EAAE,CAAC,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;AACpG,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAK,GAAG,EAAE;IAC5C,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,OAAO,EAAE,CAAC,OAAO,CACf,kEAAkE,CACnE,CAAC,GAAG,CAAC,KAAK,CAA2B,CAAC;AACzC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { HandlerMap } from '../registry.js';
2
+ export declare const advisorHandlers: HandlerMap;
3
+ //# sourceMappingURL=advisors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advisors.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/advisors.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,eAAO,MAAM,eAAe,EAAE,UA0U7B,CAAC"}
@@ -0,0 +1,331 @@
1
+ // Single-purpose advisory tools that scan a project (deps, SQL, bundle stats,
2
+ // dead code, feature flags, API routes) and run one expert agent over the
3
+ // gathered evidence, recording the outcome for router learning. Plus the
4
+ // human-in-the-loop checkpoint, which is pure formatting. They share the
5
+ // executeOne + recordOutcome shape but each gathers evidence differently.
6
+ import { readFileSync, writeFileSync } from 'node:fs';
7
+ import { join } from 'node:path';
8
+ import { execSync } from 'node:child_process';
9
+ import { executeOne } from '../../agents/executor.js';
10
+ import { recordOutcome } from '../../router/index.js';
11
+ import { buildContextString } from '../../context/reader.js';
12
+ export const advisorHandlers = {
13
+ veto_dep_advisor: async ({ args }) => {
14
+ const projectDir = String(args?.project_dir ?? '').trim();
15
+ let ecosystem = String(args?.ecosystem ?? 'auto');
16
+ let packages = [];
17
+ // Try npm first
18
+ if (ecosystem === 'auto' || ecosystem === 'npm') {
19
+ try {
20
+ const pkg = JSON.parse(readFileSync(join(projectDir, 'package.json'), 'utf8'));
21
+ const deps = { ...pkg.dependencies, ...pkg.devDependencies };
22
+ packages = Object.entries(deps).map(([name, ver]) => ({ name, version: String(ver).replace(/[\^~>=<]/g, '').split('.')[0] + '.0.0' })).slice(0, 50);
23
+ ecosystem = 'npm';
24
+ }
25
+ catch { /* try next */ }
26
+ }
27
+ if ((ecosystem === 'auto' || ecosystem === 'pypi') && packages.length === 0) {
28
+ try {
29
+ const req = readFileSync(join(projectDir, 'requirements.txt'), 'utf8');
30
+ packages = req.split('\n').filter(l => l.trim() && !l.startsWith('#')).map(l => { const [name, ver = '0.0.0'] = l.split(/[==>=<]/); return { name: name.trim(), version: ver.trim() || '0.0.0' }; }).slice(0, 50);
31
+ ecosystem = 'pypi';
32
+ }
33
+ catch { /* skip */ }
34
+ }
35
+ if (packages.length === 0)
36
+ return { content: [{ type: 'text', text: JSON.stringify({ success: false, message: 'No package.json or requirements.txt found in project_dir.' }) }], isError: true };
37
+ let vulnerabilities = [];
38
+ let osvAvailable = false;
39
+ try {
40
+ const osvEcosystem = ecosystem === 'npm' ? 'npm' : ecosystem === 'pypi' ? 'PyPI' : 'crates.io';
41
+ const body = { queries: packages.slice(0, 30).map(p => ({ package: { name: p.name, ecosystem: osvEcosystem }, version: p.version })) };
42
+ const resp = await fetch('https://api.osv.dev/v1/querybatch', {
43
+ method: 'POST',
44
+ headers: { 'Content-Type': 'application/json' },
45
+ body: JSON.stringify(body),
46
+ signal: AbortSignal.timeout(8000),
47
+ });
48
+ if (resp.ok) {
49
+ const data = await resp.json();
50
+ data.results.forEach((r, i) => {
51
+ for (const v of (r.vulns ?? [])) {
52
+ vulnerabilities.push({ package: packages[i].name, version: packages[i].version, vuln_id: v.id, severity: v.database_specific?.severity?.toLowerCase() ?? 'unknown', summary: v.summary });
53
+ }
54
+ });
55
+ osvAvailable = true;
56
+ }
57
+ }
58
+ catch { /* OSV unavailable — proceed without vuln data */ }
59
+ const depResult = await executeOne({
60
+ id: 'dep-1',
61
+ agent: 'dependency-audit',
62
+ task: 'Analyze these dependencies and produce a risk-ranked upgrade plan. For each vulnerable or outdated package: (1) risk level, (2) recommended version, (3) breaking-change risk, (4) migration steps.',
63
+ code: JSON.stringify({ packages: packages.slice(0, 20), vulnerabilities }, null, 2).slice(0, 6000),
64
+ });
65
+ recordOutcome('dep_advisor', 50, 2, 'dependency-audit', depResult.analysis?.score ?? Math.round(depResult.output.confidence * 100));
66
+ return { content: [{ type: 'text', text: JSON.stringify({
67
+ ecosystem,
68
+ packages_scanned: packages.length,
69
+ vulnerabilities_found: vulnerabilities.length,
70
+ vulns: vulnerabilities,
71
+ upgrade_plan: depResult.plan?.approach ?? depResult.output.recommendation ?? '',
72
+ osv_available: osvAvailable,
73
+ }, null, 2) }] };
74
+ },
75
+ veto_query_advisor: async ({ args }) => {
76
+ const query = String(args?.query ?? '').trim();
77
+ const schema = args?.schema ? String(args.schema).trim() : '';
78
+ const explainOutput = args?.explain_output ? String(args.explain_output).trim() : '';
79
+ if (!query)
80
+ return { content: [{ type: 'text', text: JSON.stringify({ success: false, message: 'query is required.' }) }], isError: true };
81
+ // Deterministic pre-scan for common issues
82
+ const issues = [];
83
+ const q = query.toLowerCase();
84
+ if (/select \*/i.test(query))
85
+ issues.push('SELECT * detected — specify only needed columns');
86
+ if (/where.*like\s+'%/i.test(query))
87
+ issues.push('Leading wildcard LIKE pattern prevents index use');
88
+ if (!q.includes('limit') && (q.includes('select') && !q.includes('count')))
89
+ issues.push('No LIMIT clause — could return unbounded result set');
90
+ const joinCount = (q.match(/\bjoin\b/g) ?? []).length;
91
+ if (joinCount > 4)
92
+ issues.push(`${joinCount} JOINs detected — verify indexes on join columns`);
93
+ const queryResult = await executeOne({
94
+ id: 'query-1',
95
+ agent: 'database',
96
+ task: 'Analyze this SQL query for performance issues. Provide: (1) Rewritten optimized query, (2) Specific CREATE INDEX statements needed, (3) N+1 query detection if this is part of a loop, (4) Estimated improvement percentage, (5) Index risk assessment (will this lock the table?)',
97
+ code: query.slice(0, 4000),
98
+ context: [schema && `Schema:\n${schema}`, explainOutput && `EXPLAIN:\n${explainOutput}`].filter(Boolean).join('\n'),
99
+ });
100
+ recordOutcome('query_advisor', 50, 2, 'database', queryResult.analysis?.score ?? Math.round(queryResult.output.confidence * 100));
101
+ const agentOutput = queryResult.plan?.approach ?? queryResult.output.recommendation ?? '';
102
+ const indexStatements = agentOutput.split('\n').filter((l) => /CREATE INDEX/i.test(l)).map((l) => l.trim());
103
+ return { content: [{ type: 'text', text: JSON.stringify({
104
+ issues_detected: issues,
105
+ optimized_query: '',
106
+ index_statements: indexStatements,
107
+ n_plus_one_risk: /n\+1|n \+ 1/i.test(agentOutput),
108
+ recommendations: agentOutput,
109
+ estimated_improvement: '',
110
+ }, null, 2) }] };
111
+ },
112
+ veto_bundle_advisor: async ({ args }) => {
113
+ let statsRaw = '';
114
+ try {
115
+ statsRaw = readFileSync(String(args?.stats_file ?? ''), 'utf8');
116
+ }
117
+ catch (e) {
118
+ return { content: [{ type: 'text', text: JSON.stringify({ success: false, message: `Cannot read stats file: ${e}` }) }], isError: true };
119
+ }
120
+ let statsData = {};
121
+ try {
122
+ statsData = JSON.parse(statsRaw);
123
+ }
124
+ catch {
125
+ return { content: [{ type: 'text', text: JSON.stringify({ success: false, message: 'stats_file is not valid JSON' }) }], isError: true };
126
+ }
127
+ // Extract key metrics from webpack stats format
128
+ const assets = (statsData.assets ?? []).sort((a, b) => b.size - a.size).slice(0, 20);
129
+ const totalSize = assets.reduce((s, a) => s + (a.size ?? 0), 0);
130
+ const summary = JSON.stringify({
131
+ total_assets: assets.length,
132
+ total_size_kb: Math.round(totalSize / 1024),
133
+ top_assets: assets.slice(0, 10).map(a => ({ name: a.name, size_kb: Math.round(a.size / 1024) })),
134
+ }, null, 2);
135
+ const bundleResult = await executeOne({
136
+ id: 'bundle-1',
137
+ agent: 'frontend',
138
+ task: 'Analyze this bundle stats and provide: (1) Top 10 heaviest modules to target, (2) Duplicate packages to deduplicate, (3) Code-split candidates (lazy-loadable routes or heavy features), (4) Packages safe to move to CDN externals (React, lodash, etc.), (5) Estimated size reduction achievable.',
139
+ code: summary,
140
+ });
141
+ recordOutcome('bundle_advisor', 50, 2, 'frontend', bundleResult.analysis?.score ?? Math.round(bundleResult.output.confidence * 100));
142
+ return { content: [{ type: 'text', text: JSON.stringify({
143
+ total_size_kb: Math.round(totalSize / 1024),
144
+ assets_analyzed: assets.length,
145
+ heaviest_modules: assets.slice(0, 10).map(a => ({ name: a.name, size_kb: Math.round(a.size / 1024) })),
146
+ recommendations: bundleResult.plan?.approach ?? bundleResult.output.recommendation ?? '',
147
+ estimated_reduction_pct: 0,
148
+ }, null, 2) }] };
149
+ },
150
+ veto_dead_code: async ({ args }) => {
151
+ const projectDir = String(args?.project_dir ?? '').trim();
152
+ const exts = Array.isArray(args?.extensions) ? args.extensions.map(String) : ['.ts', '.js'];
153
+ const includeArgs = exts.map(e => `--include="*${e}"`).join(' ');
154
+ const patterns = [
155
+ { label: 'exported but possibly unused', regex: 'export (function|const|class|interface|type)' },
156
+ { label: 'TODO/FIXME markers', regex: '// (TODO|FIXME|HACK|XXX)' },
157
+ { label: 'feature flag patterns', regex: 'if.*flags?\\.\\w+|if.*feature.*enabled|if.*isEnabled' },
158
+ { label: 'commented-out code blocks', regex: '^\\/\\/' },
159
+ ];
160
+ let findings = '';
161
+ for (const { label, regex } of patterns) {
162
+ try {
163
+ const out = execSync(`git grep -rn "${regex}" ${includeArgs} -- . ":(exclude)node_modules" ":(exclude)dist"`, { cwd: projectDir, timeout: 5000, stdio: ['pipe', 'pipe', 'pipe'] }).toString();
164
+ const lines = out.split('\n').filter(Boolean).slice(0, 20);
165
+ if (lines.length > 0)
166
+ findings += `\n=== ${label} (${lines.length} found) ===\n${lines.join('\n')}`;
167
+ }
168
+ catch { /* no matches — git grep exits 1 */ }
169
+ }
170
+ if (!findings)
171
+ return { content: [{ type: 'text', text: JSON.stringify({ success: true, dead_code_items: [], summary: 'No dead code patterns detected.' }) }] };
172
+ const ctx = buildContextString(projectDir);
173
+ const deadResult = await executeOne({
174
+ id: 'dead-1',
175
+ agent: 'code-quality',
176
+ task: 'Identify dead code and safe deletion candidates from these patterns. For each item: (1) is it actually dead/unused?, (2) safe to delete?, (3) deletion risk (high/medium/low). Focus on exports with zero imports, always-true/false flags, and commented blocks older than 6 months.',
177
+ code: findings.slice(0, 6000),
178
+ context: ctx || undefined,
179
+ });
180
+ recordOutcome('dead_code', 50, 2, 'code-quality', deadResult.analysis?.score ?? Math.round(deadResult.output.confidence * 100));
181
+ const agentOut = deadResult.plan?.approach ?? deadResult.output.recommendation ?? '';
182
+ const safeMatches = agentOut.match(/\blow\b.*\bdelete\b|\bsafe to delete\b|\bsafely removed\b/gi) ?? [];
183
+ return { content: [{ type: 'text', text: JSON.stringify({
184
+ dead_code_items: [],
185
+ total_found: findings.split('\n').filter(l => l.startsWith('===')).length,
186
+ safe_to_delete: safeMatches.length,
187
+ recommendations: agentOut,
188
+ council_note: 'Run veto_council_debate before deleting any exports to check downstream impact.',
189
+ }, null, 2) }] };
190
+ },
191
+ veto_hitl_checkpoint: ({ args }) => {
192
+ const stage = String(args?.stage ?? '').trim();
193
+ const context = String(args?.context ?? '').trim();
194
+ const riskLevel = String(args?.risk_level ?? 'medium');
195
+ const workflowId = args?.workflow_id ? String(args.workflow_id) : null;
196
+ const options = Array.isArray(args?.options) ? args.options.map(String) : ['Approve', 'Reject', 'Modify'];
197
+ if (!stage || !context)
198
+ return { content: [{ type: 'text', text: JSON.stringify({ success: false, message: 'stage and context are required.' }) }], isError: true };
199
+ const riskEmoji = { low: '🟢', medium: '🟡', high: '🟠', critical: '🔴' }[riskLevel] ?? '🟡';
200
+ const checkpoint_id = `hitl-${Date.now().toString(36)}`;
201
+ const formatted = [
202
+ `## ⏸️ Human-in-the-Loop Checkpoint`,
203
+ ``,
204
+ `**Stage:** ${stage}${workflowId ? ` (workflow: ${workflowId})` : ''}`,
205
+ `**Risk:** ${riskEmoji} ${riskLevel.toUpperCase()}`,
206
+ ``,
207
+ `### What is about to happen`,
208
+ context,
209
+ ``,
210
+ `### Your response options`,
211
+ options.map((o, i) => `${i + 1}. **${o}**`).join('\n'),
212
+ ``,
213
+ `_Respond with your choice to continue the workflow. The agent is waiting._`,
214
+ ].join('\n');
215
+ return { content: [{ type: 'text', text: JSON.stringify({
216
+ checkpoint_id,
217
+ stage,
218
+ risk_level: riskLevel,
219
+ status: 'waiting_for_approval',
220
+ options,
221
+ formatted_request: formatted,
222
+ workflow_id: workflowId,
223
+ created_at: new Date().toISOString(),
224
+ }, null, 2) }] };
225
+ },
226
+ veto_openapi_gen: async ({ args }) => {
227
+ const filePath = args?.file_path ? String(args.file_path) : null;
228
+ const projectDir = args?.project_dir ? String(args.project_dir) : null;
229
+ const writeFileArg = args?.write_file === true;
230
+ const framework = String(args?.framework ?? 'auto');
231
+ let routeContent = '';
232
+ if (filePath) {
233
+ try {
234
+ routeContent = readFileSync(filePath, 'utf8').slice(0, 10000);
235
+ }
236
+ catch (e) {
237
+ return { content: [{ type: 'text', text: JSON.stringify({ success: false, message: `Cannot read ${filePath}: ${e}` }) }], isError: true };
238
+ }
239
+ }
240
+ else if (projectDir) {
241
+ try {
242
+ const candidates = execSync('git ls-files --cached -- "*.ts" "*.js" "*.py"', { cwd: projectDir, timeout: 4000, stdio: ['pipe', 'pipe', 'pipe'] }).toString().split('\n').filter((f) => /route|router|api|endpoint|controller/i.test(f) && !f.includes('node_modules') && !f.includes('dist/')).slice(0, 5);
243
+ for (const f of candidates) {
244
+ try {
245
+ routeContent += `\n// FILE: ${f}\n${readFileSync(join(projectDir, f), 'utf8').slice(0, 3000)}\n`;
246
+ }
247
+ catch { /* skip */ }
248
+ }
249
+ }
250
+ catch { /* not a git repo */ }
251
+ }
252
+ if (!routeContent)
253
+ return { content: [{ type: 'text', text: JSON.stringify({ success: false, message: 'No route files found. Provide file_path or project_dir with route files.' }) }], isError: true };
254
+ const openapiResult = await executeOne({
255
+ id: 'openapi-1',
256
+ agent: 'api',
257
+ task: `Generate a complete OpenAPI 3.1 specification in YAML format for these ${framework === 'auto' ? 'API' : framework} route definitions. Include: info block (title, version), servers, all paths with HTTP methods, request body schemas, response schemas (200, 400, 401, 404, 500), and security schemes if auth is detected. Output ONLY valid YAML — no markdown fences, no explanation.`,
258
+ code: routeContent,
259
+ });
260
+ const rawSpec = openapiResult.plan?.approach ?? openapiResult.output.recommendation ?? '';
261
+ const specLines = rawSpec.split('\n');
262
+ const specStart = specLines.findIndex((l) => /^(openapi:|info:)/.test(l.trim()));
263
+ const spec = specStart >= 0 ? specLines.slice(specStart).join('\n').trim() : rawSpec.trim();
264
+ let writtenTo = null;
265
+ if (writeFileArg && projectDir && spec) {
266
+ try {
267
+ const outPath = join(projectDir, 'openapi.yaml');
268
+ writeFileSync(outPath, spec, 'utf8');
269
+ writtenTo = outPath;
270
+ }
271
+ catch { /* skip write errors */ }
272
+ }
273
+ const routeLineCount = (routeContent.match(/\bget\b|\bpost\b|\bput\b|\bpatch\b|\bdelete\b/gi) ?? []).length;
274
+ recordOutcome('openapi_gen', 50, 2, 'api', openapiResult.analysis?.score ?? Math.round(openapiResult.output.confidence * 100));
275
+ return { content: [{ type: 'text', text: JSON.stringify({
276
+ spec,
277
+ written_to: writtenTo,
278
+ routes_detected: routeLineCount,
279
+ framework,
280
+ }, null, 2) }] };
281
+ },
282
+ veto_flag_auditor: async ({ args }) => {
283
+ const projectDir = String(args?.project_dir ?? '').trim();
284
+ const sdk = String(args?.sdk ?? 'auto');
285
+ if (!projectDir)
286
+ return { content: [{ type: 'text', text: JSON.stringify({ success: false, message: 'project_dir is required.' }) }], isError: true };
287
+ const patterns = [
288
+ { label: 'LaunchDarkly', regex: 'ldClient\\.variation|isFeatureEnabled|client\\.boolVariation' },
289
+ { label: 'Unleash', regex: 'isEnabled\\(|getVariant\\(|unleash\\.isEnabled' },
290
+ { label: 'Custom flags', regex: 'flags?\\[|flags?\\.\\w+|feature[Ff]lag|isFeature|FEATURE_' },
291
+ { label: 'Env-based flags', regex: 'process\\.env\\.FEATURE_|process\\.env\\.ENABLE_|process\\.env\\.FF_' },
292
+ ];
293
+ let findings = '';
294
+ let totalMatches = 0;
295
+ for (const { label, regex } of patterns) {
296
+ try {
297
+ const out = execSync(`git grep -rn "${regex}" --include="*.ts" --include="*.js" --include="*.py" -- . ":(exclude)node_modules" ":(exclude)dist"`, { cwd: projectDir, timeout: 5000, stdio: ['pipe', 'pipe', 'pipe'] }).toString();
298
+ const lines = out.split('\n').filter(Boolean);
299
+ totalMatches += lines.length;
300
+ if (lines.length > 0)
301
+ findings += `\n=== ${label} (${lines.length} occurrences) ===\n${lines.slice(0, 15).join('\n')}`;
302
+ }
303
+ catch { /* no matches */ }
304
+ }
305
+ if (!findings)
306
+ return { content: [{ type: 'text', text: JSON.stringify({ success: true, flags_found: 0, flag_items: [], summary: 'No feature flag patterns detected.' }) }] };
307
+ const flagResult = await executeOne({
308
+ id: 'flags-1',
309
+ agent: 'code-quality',
310
+ task: 'Analyze these feature flag usages and classify each unique flag as: (1) ACTIVE — still toggled in code and worth keeping, (2) CANDIDATE_REMOVAL — always-true/always-false or deprecated, (3) ORPHANED — referenced but flag definition not found. For each, provide: flag name, classification, last-seen location, and safe-to-remove assessment.',
311
+ code: findings.slice(0, 6000),
312
+ });
313
+ const agentOut = flagResult.plan?.approach ?? flagResult.output.recommendation ?? '';
314
+ recordOutcome('flag_audit', 50, 2, 'code-quality', flagResult.analysis?.score ?? Math.round(flagResult.output.confidence * 100));
315
+ // Parse a rough count from agentOut heuristics
316
+ const activeCount = (agentOut.match(/ACTIVE/g) ?? []).length;
317
+ const removalCount = (agentOut.match(/CANDIDATE_REMOVAL/g) ?? []).length;
318
+ const orphanedCount = (agentOut.match(/ORPHANED/g) ?? []).length;
319
+ return { content: [{ type: 'text', text: JSON.stringify({
320
+ flags_found: totalMatches,
321
+ active: activeCount,
322
+ candidate_removal: removalCount,
323
+ orphaned: orphanedCount,
324
+ flag_items: [],
325
+ recommendations: agentOut,
326
+ sdk_detected: sdk === 'auto' ? (findings.includes('ldClient') ? 'launchdarkly' : findings.includes('unleash') ? 'unleash' : 'custom') : sdk,
327
+ council_note: 'Run veto_council_debate before removing any flags to assess downstream risk.',
328
+ }, null, 2) }] };
329
+ },
330
+ };
331
+ //# sourceMappingURL=advisors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advisors.js","sourceRoot":"","sources":["../../../src/server/handlers/advisors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { HandlerMap } from '../registry.js';
2
+ export declare const agentHandlers: HandlerMap;
3
+ //# sourceMappingURL=agents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/agents.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,eAAO,MAAM,aAAa,EAAE,UAmN3B,CAAC"}