@jigyasudham/veto 2.0.1 → 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.
- package/README.md +391 -658
- package/dist/agents/executor.d.ts.map +1 -1
- package/dist/agents/executor.js +3 -1
- package/dist/agents/executor.js.map +1 -1
- package/dist/agents/llm-runner.d.ts.map +1 -1
- package/dist/agents/llm-runner.js +62 -58
- package/dist/agents/llm-runner.js.map +1 -1
- package/dist/cli.js +84 -9
- package/dist/cli.js.map +1 -1
- package/dist/log.d.ts +9 -0
- package/dist/log.d.ts.map +1 -0
- package/dist/log.js +33 -0
- package/dist/log.js.map +1 -0
- package/dist/memory/config.d.ts +2 -0
- package/dist/memory/config.d.ts.map +1 -1
- package/dist/memory/config.js +4 -2
- package/dist/memory/config.js.map +1 -1
- package/dist/memory/local.d.ts.map +1 -1
- package/dist/memory/local.js +3 -1
- package/dist/memory/local.js.map +1 -1
- package/dist/memory/schema.d.ts +1 -1
- package/dist/memory/schema.d.ts.map +1 -1
- package/dist/memory/schema.js +1 -0
- package/dist/memory/schema.js.map +1 -1
- package/dist/router/learning-updater.d.ts +4 -1
- package/dist/router/learning-updater.d.ts.map +1 -1
- package/dist/router/learning-updater.js +10 -0
- package/dist/router/learning-updater.js.map +1 -1
- package/dist/server/handlers/advisors.d.ts +3 -0
- package/dist/server/handlers/advisors.d.ts.map +1 -0
- package/dist/server/handlers/advisors.js +331 -0
- package/dist/server/handlers/advisors.js.map +1 -0
- package/dist/server/handlers/agents.d.ts +3 -0
- package/dist/server/handlers/agents.d.ts.map +1 -0
- package/dist/server/handlers/agents.js +202 -0
- package/dist/server/handlers/agents.js.map +1 -0
- package/dist/server/handlers/core.d.ts +3 -0
- package/dist/server/handlers/core.d.ts.map +1 -0
- package/dist/server/handlers/core.js +169 -0
- package/dist/server/handlers/core.js.map +1 -0
- package/dist/server/handlers/council.d.ts +3 -0
- package/dist/server/handlers/council.d.ts.map +1 -0
- package/dist/server/handlers/council.js +277 -0
- package/dist/server/handlers/council.js.map +1 -0
- package/dist/server/handlers/devtools.d.ts +3 -0
- package/dist/server/handlers/devtools.d.ts.map +1 -0
- package/dist/server/handlers/devtools.js +41 -0
- package/dist/server/handlers/devtools.js.map +1 -0
- package/dist/server/handlers/generators.d.ts +3 -0
- package/dist/server/handlers/generators.d.ts.map +1 -0
- package/dist/server/handlers/generators.js +541 -0
- package/dist/server/handlers/generators.js.map +1 -0
- package/dist/server/handlers/git.d.ts +3 -0
- package/dist/server/handlers/git.d.ts.map +1 -0
- package/dist/server/handlers/git.js +225 -0
- package/dist/server/handlers/git.js.map +1 -0
- package/dist/server/handlers/learning.d.ts +3 -0
- package/dist/server/handlers/learning.d.ts.map +1 -0
- package/dist/server/handlers/learning.js +60 -0
- package/dist/server/handlers/learning.js.map +1 -0
- package/dist/server/handlers/memory.d.ts +3 -0
- package/dist/server/handlers/memory.d.ts.map +1 -0
- package/dist/server/handlers/memory.js +181 -0
- package/dist/server/handlers/memory.js.map +1 -0
- package/dist/server/handlers/observability.d.ts +3 -0
- package/dist/server/handlers/observability.d.ts.map +1 -0
- package/dist/server/handlers/observability.js +132 -0
- package/dist/server/handlers/observability.js.map +1 -0
- package/dist/server/handlers/review.d.ts +3 -0
- package/dist/server/handlers/review.d.ts.map +1 -0
- package/dist/server/handlers/review.js +327 -0
- package/dist/server/handlers/review.js.map +1 -0
- package/dist/server/handlers/session.d.ts +3 -0
- package/dist/server/handlers/session.d.ts.map +1 -0
- package/dist/server/handlers/session.js +272 -0
- package/dist/server/handlers/session.js.map +1 -0
- package/dist/server/handlers/watch.d.ts +3 -0
- package/dist/server/handlers/watch.d.ts.map +1 -0
- package/dist/server/handlers/watch.js +29 -0
- package/dist/server/handlers/watch.js.map +1 -0
- package/dist/server/handlers/workers.d.ts +3 -0
- package/dist/server/handlers/workers.d.ts.map +1 -0
- package/dist/server/handlers/workers.js +27 -0
- package/dist/server/handlers/workers.js.map +1 -0
- package/dist/server/registry.d.ts +11 -0
- package/dist/server/registry.d.ts.map +1 -0
- package/dist/server/registry.js +9 -0
- package/dist/server/registry.js.map +1 -0
- package/dist/server/runtime.d.ts +49 -0
- package/dist/server/runtime.d.ts.map +1 -0
- package/dist/server/runtime.js +81 -0
- package/dist/server/runtime.js.map +1 -0
- package/dist/server/scan-core.d.ts +32 -0
- package/dist/server/scan-core.d.ts.map +1 -0
- package/dist/server/scan-core.js +82 -0
- package/dist/server/scan-core.js.map +1 -0
- package/dist/server.d.ts +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +64 -2944
- package/dist/server.js.map +1 -1
- package/dist/tools/definitions.d.ts +4 -4
- package/dist/tools/definitions.js +4 -4
- package/dist/tools/definitions.js.map +1 -1
- package/package.json +2 -2
- 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 @@
|
|
|
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 @@
|
|
|
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"}
|