@jigyasudham/veto 2.0.2 → 2.1.1

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 +148 -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 +334 -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
@@ -0,0 +1,202 @@
1
+ // Agent-orchestration tools: single-agent plan (agentic worker), parallel
2
+ // multi-agent execution, a compact single-agent delegation, a multi-step
3
+ // workflow pipeline, and PRD/task parsing. They drive the executor + agentic
4
+ // LLM-runner and record learning outcomes. veto_workflow uses ctx.server for
5
+ // the sampling-based HITL callback. Bodies are the verbatim switch handlers.
6
+ import { handleAgenticWorker } from '../scan-core.js';
7
+ import { executeParallel, executeOne } from '../../agents/executor.js';
8
+ import { buildAgenticAgentPrompt, parseAgenticAgentResponses } from '../../agents/llm-runner.js';
9
+ import { recordOutcome } from '../../router/index.js';
10
+ import { logUsage, saveTaskPlan } from '../../memory/local.js';
11
+ import { buildContextString } from '../../context/reader.js';
12
+ import { parsePrdIntoTasks, buildTaskPlan } from '../runtime.js';
13
+ import { runPipeline } from '../../workflow/pipeline.js';
14
+ export const agentHandlers = {
15
+ veto_agent_plan: async ({ args }) => {
16
+ const agentType = String(args?.agent ?? '');
17
+ const task = String(args?.task ?? '').trim();
18
+ return await handleAgenticWorker('veto_agent_plan', args, agentType, task);
19
+ },
20
+ veto_execute_parallel: async ({ args }) => {
21
+ const rawTasks = Array.isArray(args?.tasks) ? args.tasks : [];
22
+ const llmBacked = args?.llm_backed !== false;
23
+ const agentOutputs = args?.agent_outputs;
24
+ if (rawTasks.length === 0) {
25
+ return { content: [{ type: 'text', text: JSON.stringify({ success: false, message: 'tasks array is required and must not be empty.' }) }], isError: true };
26
+ }
27
+ const parallelProjectDir = args?.project_dir ? String(args.project_dir) : undefined;
28
+ const defaultModel = args?.editor_model ? String(args.editor_model) : args?.architect_model ? String(args.architect_model) : undefined;
29
+ const tasks = rawTasks.map((t) => ({
30
+ id: String(t.id ?? ''),
31
+ agent: String(t.agent ?? ''),
32
+ task: String(t.task ?? ''),
33
+ code: t.code ? String(t.code) : undefined,
34
+ context: t.context ? String(t.context) : undefined,
35
+ project_dir: t.project_dir ? String(t.project_dir) : parallelProjectDir,
36
+ llm_backed: llmBacked,
37
+ model: t.model ? String(t.model) : defaultModel,
38
+ }));
39
+ // Phase 2: Agentic loop
40
+ if (llmBacked && !agentOutputs) {
41
+ const prompts = tasks.map(t => buildAgenticAgentPrompt(t)).filter(Boolean);
42
+ return {
43
+ content: [{
44
+ type: 'text',
45
+ text: JSON.stringify({
46
+ mode: 'agentic_loop',
47
+ instruction: 'Reason as each agent below using their provided roles and schemas. Return a JSON object mapping task IDs (or agent names) to agent responses.',
48
+ prompts,
49
+ }, null, 2)
50
+ }]
51
+ };
52
+ }
53
+ const results = (llmBacked && agentOutputs)
54
+ ? parseAgenticAgentResponses(tasks, agentOutputs)
55
+ : await executeParallel(tasks);
56
+ // #40: auto-record learning outcome per completed parallel task
57
+ for (let i = 0; i < results.length; i++) {
58
+ const r = results[i];
59
+ if (r.error)
60
+ continue;
61
+ const quality = Math.round(r.output.confidence * 100);
62
+ const tier = quality >= 80 ? 1 : quality >= 40 ? 2 : 3;
63
+ recordOutcome(tasks[i]?.task.slice(0, 50) ?? r.agent, 50, tier, r.agent, quality);
64
+ }
65
+ const deterministicFallbacks = results
66
+ .map((r, i) => ({ r, t: tasks[i] }))
67
+ .filter(({ r }) => !r.error && r.llm_backed === false);
68
+ const parallelPayload = {
69
+ count: results.length,
70
+ total_duration_ms: results.reduce((s, r) => s + r.duration_ms, 0),
71
+ llm_backed_count: results.filter(r => r.llm_backed === true).length,
72
+ results: results.map(r => ({
73
+ id: r.id,
74
+ agent: r.agent,
75
+ duration_ms: r.duration_ms,
76
+ llm_backed: r.llm_backed,
77
+ error: r.error,
78
+ output: { ...(r.plan ?? r.analysis), structured: r.output },
79
+ })),
80
+ };
81
+ if (deterministicFallbacks.length > 0) {
82
+ parallelPayload.llm_upgrade = {
83
+ available: true,
84
+ instruction: 'Some agents ran deterministically (MCP Sampling unavailable or failed). For LLM-backed output, reason as each agent using the prompts below, then pass results back via veto_execute_parallel with pre-filled output.',
85
+ agent_prompts: deterministicFallbacks.map(({ t }) => t ? buildAgenticAgentPrompt(t) : null).filter(Boolean),
86
+ };
87
+ }
88
+ if (typeof args?.max_tokens === 'number') {
89
+ const outputText = JSON.stringify(parallelPayload, null, 2);
90
+ const { exceeded, estimated_tokens } = logUsage({
91
+ tool_name: 'veto_execute_parallel',
92
+ max_tokens: args.max_tokens,
93
+ output: outputText,
94
+ });
95
+ if (exceeded) {
96
+ parallelPayload.budget_warning = `Estimated output tokens (${estimated_tokens}) exceeded max_tokens budget (${args.max_tokens}).`;
97
+ }
98
+ }
99
+ return {
100
+ content: [{ type: 'text', text: JSON.stringify(parallelPayload, null, 2) }],
101
+ };
102
+ },
103
+ veto_delegate: async ({ args }) => {
104
+ const agentId = String(args?.agent_id ?? '').trim();
105
+ const task = String(args?.task ?? '').trim();
106
+ const context = args?.context ? String(args.context) : undefined;
107
+ const projectDir = args?.project_dir ? String(args.project_dir) : undefined;
108
+ const maxLen = typeof args?.max_summary_tokens === 'number' ? Math.min(args.max_summary_tokens, 2000) : 500;
109
+ if (!agentId || !task) {
110
+ return { content: [{ type: 'text', text: JSON.stringify({ success: false, message: 'agent_id and task are required.' }) }], isError: true };
111
+ }
112
+ const enrichedCtx = buildContextString(projectDir, context);
113
+ const result = await executeOne({ id: 'delegate-1', agent: agentId, task, context: enrichedCtx || undefined, project_dir: projectDir });
114
+ recordOutcome(task, 50, 2, agentId, Math.round(result.output.confidence * 100));
115
+ // Return compact summary only — no verbose findings/steps to avoid context pollution
116
+ const summary = [
117
+ result.output.recommendation,
118
+ result.plan?.approach,
119
+ result.analysis?.verdict ? `Verdict: ${result.analysis.verdict}` : null,
120
+ result.analysis?.score ? `Score: ${result.analysis.score}/100` : null,
121
+ ].filter(Boolean).join('\n').slice(0, maxLen);
122
+ return { content: [{ type: 'text', text: JSON.stringify({
123
+ agent: agentId,
124
+ task: task.slice(0, 100),
125
+ summary,
126
+ confidence: Math.round(result.output.confidence * 100),
127
+ severity: result.output.severity ?? null,
128
+ duration_ms: result.duration_ms,
129
+ truncated: summary.length >= maxLen,
130
+ }, null, 2) }] };
131
+ },
132
+ veto_workflow: async ({ args, server }) => {
133
+ const rawSteps = Array.isArray(args?.steps) ? args.steps : [];
134
+ if (rawSteps.length === 0)
135
+ return { content: [{ type: 'text', text: JSON.stringify({ success: false, message: 'steps array is required and must not be empty.' }) }], isError: true };
136
+ const steps = rawSteps.map((s) => ({
137
+ id: String(s.id ?? ''),
138
+ agent: String(s.agent ?? ''),
139
+ task: String(s.task ?? ''),
140
+ code: s.code ? String(s.code) : undefined,
141
+ context: s.context ? String(s.context) : undefined,
142
+ gate: typeof s.gate === 'number' ? s.gate : undefined,
143
+ retry_on_fail: s.retry_on_fail === true,
144
+ max_retries: typeof s.max_retries === 'number' ? Math.min(s.max_retries, 5) : undefined,
145
+ condition: s.condition ? String(s.condition) : undefined,
146
+ dependencies: Array.isArray(s.dependencies) ? s.dependencies.map(String) : undefined,
147
+ }));
148
+ const mode = String(args?.mode ?? 'linear') === 'dag' ? 'dag' : 'linear';
149
+ const result = await runPipeline(steps, args?.project_dir ? String(args.project_dir) : undefined, mode, async (question) => {
150
+ try {
151
+ const resp = await server.createMessage({ messages: [{ role: 'user', content: { type: 'text', text: question } }], maxTokens: 200 });
152
+ return resp.content.type === 'text' ? resp.content.text : '';
153
+ }
154
+ catch {
155
+ return ''; // sampling not supported by client
156
+ }
157
+ });
158
+ // #39: auto-record learning outcome per executed workflow step
159
+ for (const step of result.results) {
160
+ if (step.status === 'skipped')
161
+ continue;
162
+ const quality = step.error ? 0 : step.confidence;
163
+ const tier = quality >= 80 ? 1 : quality >= 40 ? 2 : 3;
164
+ const taskStr = steps.find(s => s.id === step.id)?.task.slice(0, 50) ?? step.id;
165
+ recordOutcome(taskStr, 50, tier, step.agent, quality);
166
+ }
167
+ return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
168
+ },
169
+ veto_task_parse: async ({ args }) => {
170
+ const description = String(args?.description ?? '').trim();
171
+ const project_dir = args?.project_dir ? String(args.project_dir) : undefined;
172
+ const max_tasks = typeof args?.max_tasks === 'number' ? Math.min(args.max_tasks, 50) : 20;
173
+ if (!description)
174
+ return { content: [{ type: 'text', text: JSON.stringify({ success: false, message: 'description is required.' }) }], isError: true };
175
+ const agentResponse = args?.agent_responses?.planner;
176
+ if (agentResponse) {
177
+ const results = parseAgenticAgentResponses([{ id: 'planner', agent: 'task-planner', task: description }], { planner: agentResponse });
178
+ const r = results[0];
179
+ if (r.plan) {
180
+ const plan = parsePrdIntoTasks(description, r.plan, max_tasks);
181
+ saveTaskPlan(description, JSON.stringify(plan));
182
+ return { content: [{ type: 'text', text: JSON.stringify({ success: true, ...plan }, null, 2) }] };
183
+ }
184
+ }
185
+ // Try sampling
186
+ try {
187
+ const result = await executeOne({ id: 'planner', agent: 'task-planner', task: description, project_dir, llm_backed: true });
188
+ if (result.llm_backed && result.plan && !result.error) {
189
+ const plan = parsePrdIntoTasks(description, result.plan, max_tasks);
190
+ saveTaskPlan(description, JSON.stringify(plan));
191
+ return { content: [{ type: 'text', text: JSON.stringify({ success: true, ...plan }, null, 2) }] };
192
+ }
193
+ if (result.llm_upgrade) {
194
+ return { content: [{ type: 'text', text: JSON.stringify({ llm_backed: false, llm_upgrade: result.llm_upgrade }, null, 2) }] };
195
+ }
196
+ }
197
+ catch { /* fallback */ }
198
+ const plan = await buildTaskPlan(description, project_dir, max_tasks);
199
+ return { content: [{ type: 'text', text: JSON.stringify({ success: true, ...plan }, null, 2) }] };
200
+ },
201
+ };
202
+ //# sourceMappingURL=agents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../../src/server/handlers/agents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { HandlerMap } from '../registry.js';
2
+ export declare const coreHandlers: HandlerMap;
3
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/core.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,eAAO,MAAM,YAAY,EAAE,UAqK1B,CAAC"}
@@ -0,0 +1,169 @@
1
+ // Core server tools: status/heartbeat (with token tracking + auto-save trigger),
2
+ // task routing, platform setup instructions, package-docs fetch, and project
3
+ // discovery. These touch the router, memory layer, config, adapters, and the
4
+ // shared runtime (autoSave/VERSION).
5
+ import { statSync } from 'node:fs';
6
+ import { getDbPath, resolveContextWindow, upsertContextUsage, fetchAndCacheDocs, updateProjectMap, storeKnowledge, } from '../../memory/local.js';
7
+ import { getConfig } from '../../memory/config.js';
8
+ import { routeTask, trackTokens, recordOutcome, getRecommendedAgent } from '../../router/index.js';
9
+ import { getPlatformSetup } from '../../adapters/index.js';
10
+ import { discoverProject } from '../../discover.js';
11
+ import { buildRepoMap } from '../../repo-map/index.js';
12
+ import { VERSION, autoSave, maybeAutoSave } from '../runtime.js';
13
+ export const coreHandlers = {
14
+ veto_status: ({ args }) => {
15
+ const statusTokenCount = typeof args?.token_count === 'number' ? args.token_count : null;
16
+ const statusPlatform = args?.platform ? String(args.platform) : 'claude';
17
+ const statusModel = args?.model ? String(args.model) : undefined;
18
+ if (statusTokenCount !== null && statusTokenCount > 0) {
19
+ trackTokens(statusPlatform, statusTokenCount);
20
+ upsertContextUsage({
21
+ platform: statusPlatform,
22
+ model: statusModel,
23
+ token_count: statusTokenCount,
24
+ context_window: resolveContextWindow(statusPlatform, statusModel),
25
+ session_id: autoSave.last_session_id ?? undefined,
26
+ });
27
+ }
28
+ const autoSaveResult = statusTokenCount !== null ? maybeAutoSave(statusTokenCount, statusPlatform, statusModel) : null;
29
+ return {
30
+ content: [
31
+ {
32
+ type: 'text',
33
+ text: JSON.stringify({
34
+ status: 'running',
35
+ version: VERSION,
36
+ server: 'veto',
37
+ phase: 17,
38
+ capabilities: [
39
+ 'session_save', 'session_restore', 'sessions_list',
40
+ 'router', 'rate_monitor',
41
+ 'council_debate',
42
+ 'agent_plan', 'parallel_exec',
43
+ 'code_review', 'diff_review', 'security_scan', 'secrets_scan', 'ci_gate', 'pr_review',
44
+ 'workflow', 'watch',
45
+ 'explain',
46
+ 'memory_store', 'memory_search', 'memory_delete', 'memory_export', 'memory_import',
47
+ 'project_map', 'pattern_store',
48
+ 'learning_stats', 'learning_apply', 'record_outcome',
49
+ 'handoff', 'continue', 'platform_setup',
50
+ 'plugins',
51
+ 'docs_fetch', 'context_status', 'task_parse',
52
+ 'usage_status', 'audit_log', 'health',
53
+ 'auto_save', 'discover', 'summarize',
54
+ ],
55
+ db_path: getDbPath(),
56
+ uptime_ms: process.uptime() * 1000,
57
+ timestamp: new Date().toISOString(),
58
+ billing_mode: getConfig().billing_mode,
59
+ ...(getConfig().billing_mode === 'api' ? { billing_warning: 'API billing detected — MCP Sampling calls count toward your token usage. Zero extra cost applies to subscription plans only.' } : {}),
60
+ ...(autoSaveResult?.triggered ? { auto_save: { triggered: true, session_id: autoSaveResult.session_id, usage_pct: autoSaveResult.usage_pct } } : {}),
61
+ }, null, 2),
62
+ },
63
+ ],
64
+ };
65
+ },
66
+ veto_route_task: ({ args }) => {
67
+ const routeTaskStr = String(args?.task ?? '');
68
+ const fileExt = args?.file_ext ? String(args.file_ext) : undefined;
69
+ const result = routeTask(routeTaskStr, {
70
+ agentType: args?.agent_type ? String(args.agent_type) : undefined,
71
+ filesAffected: typeof args?.files_affected === 'number' ? args.files_affected : undefined,
72
+ forceCouncil: args?.force_council === true,
73
+ context: args?.context ? String(args.context) : undefined,
74
+ preferredPlatform: args?.preferred_platform ? String(args.preferred_platform) : 'claude',
75
+ architectModel: args?.architect_model ? String(args.architect_model) : undefined,
76
+ editorModel: args?.editor_model ? String(args.editor_model) : undefined,
77
+ });
78
+ const recommended_agent = getRecommendedAgent(routeTaskStr, fileExt);
79
+ // #41: auto-record every routing so tier distribution stats are always populated
80
+ recordOutcome(routeTaskStr.slice(0, 50), result.complexity.score, result.model.tier, 'router', 70);
81
+ return {
82
+ content: [{
83
+ type: 'text',
84
+ text: JSON.stringify({ ...result, recommended_agent }, null, 2),
85
+ }],
86
+ };
87
+ },
88
+ veto_platform_setup: ({ args }) => {
89
+ const platform = String(args?.platform ?? '').trim();
90
+ const vetoServerPath = String(args?.veto_server_path ?? '').trim();
91
+ if (!platform || !vetoServerPath) {
92
+ return { content: [{ type: 'text', text: JSON.stringify({ success: false, message: 'platform and veto_server_path are required.' }) }], isError: true };
93
+ }
94
+ const setup = getPlatformSetup(platform, vetoServerPath);
95
+ return { content: [{ type: 'text', text: JSON.stringify(setup, null, 2) }] };
96
+ },
97
+ veto_docs_fetch: async ({ args }) => {
98
+ const package_name = String(args?.package_name ?? '').trim();
99
+ const ecosystem = String(args?.ecosystem ?? 'npm');
100
+ const version = args?.version ? String(args.version) : undefined;
101
+ const max_chars = typeof args?.max_chars === 'number' ? args.max_chars : 8000;
102
+ if (!package_name) {
103
+ return { content: [{ type: 'text', text: JSON.stringify({ success: false, message: 'package_name is required.' }) }], isError: true };
104
+ }
105
+ const result = await fetchAndCacheDocs(package_name, ecosystem, version, max_chars, VERSION);
106
+ if (!result) {
107
+ return { content: [{ type: 'text', text: JSON.stringify({ success: false, message: `Could not fetch docs for ${package_name} (${ecosystem}). Source may be offline — try again.` }) }], isError: true };
108
+ }
109
+ return { content: [{ type: 'text', text: JSON.stringify({ success: true, ...result }, null, 2) }] };
110
+ },
111
+ veto_discover: ({ args }) => {
112
+ const discoverDir = String(args?.project_dir ?? '').trim();
113
+ const discoverDepth = (['quick', 'standard', 'full'].includes(String(args?.depth ?? '')))
114
+ ? String(args.depth)
115
+ : 'standard';
116
+ const discoverStore = args?.store !== false;
117
+ if (!discoverDir) {
118
+ return { content: [{ type: 'text', text: JSON.stringify({ success: false, message: 'project_dir is required.' }) }], isError: true };
119
+ }
120
+ try {
121
+ statSync(discoverDir);
122
+ }
123
+ catch {
124
+ return { content: [{ type: 'text', text: JSON.stringify({ success: false, message: `Directory not found: ${discoverDir}` }) }], isError: true };
125
+ }
126
+ const result = discoverProject(discoverDir, discoverDepth);
127
+ // Build live repo-map for 'full' depth or when explicitly requested
128
+ let repoMap = null;
129
+ if (discoverDepth === 'full' || args?.include_repo_map === true) {
130
+ try {
131
+ repoMap = buildRepoMap({ projectDir: discoverDir, maxTopModules: 20 });
132
+ }
133
+ catch { /* non-fatal */ }
134
+ }
135
+ if (discoverStore) {
136
+ updateProjectMap({
137
+ project_dir: result.project_dir,
138
+ structure: {
139
+ ecosystems: result.ecosystems,
140
+ key_files: result.key_files,
141
+ file_count_by_ext: result.file_counts,
142
+ total_files: result.total_files,
143
+ scanned_at: result.scanned_at,
144
+ ...(repoMap ? { top_modules: repoMap.top_modules.slice(0, 10).map(m => ({ file: m.file, rank: m.rank, exports: m.symbols.slice(0, 4).map(s => s.name) })) } : {}),
145
+ },
146
+ key_modules: result.key_files,
147
+ tech_stack: result.tech_stack,
148
+ });
149
+ storeKnowledge({
150
+ type: 'solution',
151
+ title: `Project discovery: ${result.project_dir}`,
152
+ content: `Stack: ${result.tech_stack.join(', ') || 'unknown'}. Branch: ${result.git.branch || 'none'}. Commit: ${result.git.commit || 'none'}. Files: ${result.total_files}. Ecosystems: ${Object.keys(result.ecosystems).join(', ') || 'none'}. Key files: ${result.key_files.join(', ')}.`,
153
+ tags: ['discover', ...result.tech_stack.map(t => t.toLowerCase().replace(/[^a-z0-9]/g, ''))],
154
+ project_dir: result.project_dir,
155
+ });
156
+ }
157
+ const discoverPayload = { success: true, stored: discoverStore, ...result };
158
+ if (repoMap) {
159
+ discoverPayload.repo_map = {
160
+ total_files: repoMap.total_files,
161
+ symbol_count: repoMap.symbol_count,
162
+ top_modules: repoMap.top_modules.slice(0, 15),
163
+ dep_graph: repoMap.dep_graph,
164
+ };
165
+ }
166
+ return { content: [{ type: 'text', text: JSON.stringify(discoverPayload, null, 2) }] };
167
+ },
168
+ };
169
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/server/handlers/core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { HandlerMap } from '../registry.js';
2
+ export declare const councilHandlers: HandlerMap;
3
+ //# sourceMappingURL=council.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"council.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/council.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,eAAO,MAAM,eAAe,EAAE,UA4R7B,CAAC"}