eucode-cli 0.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/dist/agentFinish.d.ts +10 -0
- package/dist/agentFinish.d.ts.map +1 -0
- package/dist/agentFinish.js +9 -0
- package/dist/agentFinish.js.map +1 -0
- package/dist/agentHost.d.ts +29 -0
- package/dist/agentHost.d.ts.map +1 -0
- package/dist/agentHost.js +94 -0
- package/dist/agentHost.js.map +1 -0
- package/dist/backgroundJobs.d.ts +12 -0
- package/dist/backgroundJobs.d.ts.map +1 -0
- package/dist/backgroundJobs.js +66 -0
- package/dist/backgroundJobs.js.map +1 -0
- package/dist/capabilities.d.ts +9 -0
- package/dist/capabilities.d.ts.map +1 -0
- package/dist/capabilities.js +46 -0
- package/dist/capabilities.js.map +1 -0
- package/dist/cliErrors.d.ts +3 -0
- package/dist/cliErrors.d.ts.map +1 -0
- package/dist/cliErrors.js +16 -0
- package/dist/cliErrors.js.map +1 -0
- package/dist/cloud.d.ts +17 -0
- package/dist/cloud.d.ts.map +1 -0
- package/dist/cloud.js +78 -0
- package/dist/cloud.js.map +1 -0
- package/dist/codeReview.d.ts +8 -0
- package/dist/codeReview.d.ts.map +1 -0
- package/dist/codeReview.js +64 -0
- package/dist/codeReview.js.map +1 -0
- package/dist/commands/agent.d.ts +7 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +86 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/capabilities.d.ts +2 -0
- package/dist/commands/capabilities.d.ts.map +1 -0
- package/dist/commands/capabilities.js +22 -0
- package/dist/commands/capabilities.js.map +1 -0
- package/dist/commands/chat.d.ts +7 -0
- package/dist/commands/chat.d.ts.map +1 -0
- package/dist/commands/chat.js +426 -0
- package/dist/commands/chat.js.map +1 -0
- package/dist/commands/db.d.ts +6 -0
- package/dist/commands/db.d.ts.map +1 -0
- package/dist/commands/db.js +17 -0
- package/dist/commands/db.js.map +1 -0
- package/dist/commands/docker.d.ts +5 -0
- package/dist/commands/docker.d.ts.map +1 -0
- package/dist/commands/docker.js +35 -0
- package/dist/commands/docker.js.map +1 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +34 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/login.d.ts +5 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +32 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/mcp.d.ts +3 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +65 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/models.d.ts +2 -0
- package/dist/commands/models.d.ts.map +1 -0
- package/dist/commands/models.js +30 -0
- package/dist/commands/models.js.map +1 -0
- package/dist/commands/new.d.ts +5 -0
- package/dist/commands/new.d.ts.map +1 -0
- package/dist/commands/new.js +31 -0
- package/dist/commands/new.js.map +1 -0
- package/dist/commands/plan.d.ts +6 -0
- package/dist/commands/plan.d.ts.map +1 -0
- package/dist/commands/plan.js +82 -0
- package/dist/commands/plan.js.map +1 -0
- package/dist/commands/pr.d.ts +6 -0
- package/dist/commands/pr.d.ts.map +1 -0
- package/dist/commands/pr.js +29 -0
- package/dist/commands/pr.js.map +1 -0
- package/dist/commands/test.d.ts +5 -0
- package/dist/commands/test.d.ts.map +1 -0
- package/dist/commands/test.js +49 -0
- package/dist/commands/test.js.map +1 -0
- package/dist/config.d.ts +18 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +75 -0
- package/dist/config.js.map +1 -0
- package/dist/createProject.d.ts +5 -0
- package/dist/createProject.d.ts.map +1 -0
- package/dist/createProject.js +53 -0
- package/dist/createProject.js.map +1 -0
- package/dist/delegateAgent.d.ts +6 -0
- package/dist/delegateAgent.d.ts.map +1 -0
- package/dist/delegateAgent.js +34 -0
- package/dist/delegateAgent.js.map +1 -0
- package/dist/fileContext.d.ts +4 -0
- package/dist/fileContext.d.ts.map +1 -0
- package/dist/fileContext.js +98 -0
- package/dist/fileContext.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +207 -0
- package/dist/index.js.map +1 -0
- package/dist/intensity.d.ts +13 -0
- package/dist/intensity.d.ts.map +1 -0
- package/dist/intensity.js +33 -0
- package/dist/intensity.js.map +1 -0
- package/dist/mcpConfig.d.ts +3 -0
- package/dist/mcpConfig.d.ts.map +1 -0
- package/dist/mcpConfig.js +29 -0
- package/dist/mcpConfig.js.map +1 -0
- package/dist/memory.d.ts +3 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +16 -0
- package/dist/memory.js.map +1 -0
- package/dist/modelCatalog.d.ts +9 -0
- package/dist/modelCatalog.d.ts.map +1 -0
- package/dist/modelCatalog.js +45 -0
- package/dist/modelCatalog.js.map +1 -0
- package/dist/nodeToolHost.d.ts +4 -0
- package/dist/nodeToolHost.d.ts.map +1 -0
- package/dist/nodeToolHost.js +320 -0
- package/dist/nodeToolHost.js.map +1 -0
- package/dist/projectRules.d.ts +2 -0
- package/dist/projectRules.d.ts.map +1 -0
- package/dist/projectRules.js +57 -0
- package/dist/projectRules.js.map +1 -0
- package/dist/replOutput.d.ts +21 -0
- package/dist/replOutput.d.ts.map +1 -0
- package/dist/replOutput.js +84 -0
- package/dist/replOutput.js.map +1 -0
- package/dist/sqliteQuery.d.ts +3 -0
- package/dist/sqliteQuery.d.ts.map +1 -0
- package/dist/sqliteQuery.js +40 -0
- package/dist/sqliteQuery.js.map +1 -0
- package/dist/synthesizeAgentReply.d.ts +32 -0
- package/dist/synthesizeAgentReply.d.ts.map +1 -0
- package/dist/synthesizeAgentReply.js +173 -0
- package/dist/synthesizeAgentReply.js.map +1 -0
- package/dist/synthesizeAgentReply.test.d.ts +2 -0
- package/dist/synthesizeAgentReply.test.d.ts.map +1 -0
- package/dist/synthesizeAgentReply.test.js +35 -0
- package/dist/synthesizeAgentReply.test.js.map +1 -0
- package/dist/terminalOutput.d.ts +4 -0
- package/dist/terminalOutput.d.ts.map +1 -0
- package/dist/terminalOutput.js +34 -0
- package/dist/terminalOutput.js.map +1 -0
- package/dist/ui.d.ts +17 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +121 -0
- package/dist/ui.js.map +1 -0
- package/dist/webFetch.d.ts +2 -0
- package/dist/webFetch.d.ts.map +1 -0
- package/dist/webFetch.js +29 -0
- package/dist/webFetch.js.map +1 -0
- package/dist/workspace.d.ts +2 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +30 -0
- package/dist/workspace.js.map +1 -0
- package/package.json +49 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ChatMessage } from "@eucode/shared";
|
|
2
|
+
import type { LlmProvider } from "@eucode/llm";
|
|
3
|
+
export declare function printAgentRunSummary(options: {
|
|
4
|
+
finalText: string;
|
|
5
|
+
wroteText: boolean;
|
|
6
|
+
history: ChatMessage[];
|
|
7
|
+
userPrompt: string;
|
|
8
|
+
provider?: LlmProvider;
|
|
9
|
+
}): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=agentFinish.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentFinish.d.ts","sourceRoot":"","sources":["../src/agentFinish.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C,wBAAsB,oBAAoB,CAAC,OAAO,EAAE;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,WAAW,CAAC;CACxB,GAAG,OAAO,CAAC,IAAI,CAAC,CAIhB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { resolveAgentAssistantSummary } from "./synthesizeAgentReply.js";
|
|
2
|
+
import { c } from "./ui.js";
|
|
3
|
+
export async function printAgentRunSummary(options) {
|
|
4
|
+
const summary = await resolveAgentAssistantSummary(options);
|
|
5
|
+
if (!summary)
|
|
6
|
+
return;
|
|
7
|
+
process.stdout.write(c.assistant(summary + "\n"));
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=agentFinish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentFinish.js","sourceRoot":"","sources":["../src/agentFinish.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,CAAC,EAAE,MAAM,SAAS,CAAC;AAE5B,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAM1C;IACC,MAAM,OAAO,GAAG,MAAM,4BAA4B,CAAC,OAAO,CAAC,CAAC;IAC5D,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { discoverMcpTools, EucodeAgent, type AgentCallbacks, type RunOptions } from "@eucode/agent";
|
|
2
|
+
import type { EucodeConfig } from "@eucode/shared";
|
|
3
|
+
export interface CliAgentHost {
|
|
4
|
+
agent: EucodeAgent;
|
|
5
|
+
config: EucodeConfig;
|
|
6
|
+
modelId: string;
|
|
7
|
+
cwd: string;
|
|
8
|
+
mcpServerCount: number;
|
|
9
|
+
disconnect: () => Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
export declare function createCliAgentHost(options: {
|
|
12
|
+
cwd: string;
|
|
13
|
+
model?: string;
|
|
14
|
+
maxSteps?: number;
|
|
15
|
+
}): Promise<CliAgentHost>;
|
|
16
|
+
export declare const CLI_AGENT_ROLE_PROMPT = "Regole CLI:\n- Per lint/eslint usa percorsi mirati (es. apps/cli), mai `eslint .` su monorepo intero.\n- Per test in monorepo usa `pnpm test --filter <package>`, non tutto il repo senza motivo.\n- Comandi Docker consentiti: docker ps, docker compose up/down/ps/logs.\n- Usa web_fetch per documentazione HTTP \u2014 non \u00E8 un motore di ricerca Google.\n- Usa i tool per agire; non limitarti a descrivere i comandi.\n- MAI percorsi segnaposto (path/to/file.txt) \u2014 solo path reali dal workspace.\n- Per git status usa il tool git (action status), non run_terminal ripetuto.\n- Non spiegare come usare i tool; eseguili. Vietato ripetere lo stesso comando.";
|
|
17
|
+
export declare function buildCliSessionRolePrompt(options: {
|
|
18
|
+
toolNames: string[];
|
|
19
|
+
mcpServerCount: number;
|
|
20
|
+
}): string;
|
|
21
|
+
export declare function buildCliRolePromptForCwd(cwd: string, mcpTools: Awaited<ReturnType<typeof discoverMcpTools>>): Promise<string>;
|
|
22
|
+
export declare function runCliAgentTask(task: string, options: {
|
|
23
|
+
cwd: string;
|
|
24
|
+
model?: string;
|
|
25
|
+
maxSteps?: number;
|
|
26
|
+
callbacks?: AgentCallbacks;
|
|
27
|
+
runOptions?: RunOptions;
|
|
28
|
+
}): Promise<string>;
|
|
29
|
+
//# sourceMappingURL=agentHost.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentHost.d.ts","sourceRoot":"","sources":["../src/agentHost.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,gBAAgB,EAChB,WAAW,EAGX,KAAK,cAAc,EACnB,KAAK,UAAU,EAChB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAanD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE;IAChD,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,YAAY,CAAC,CAqCxB;AAED,eAAO,MAAM,qBAAqB,ypBAQ8C,CAAC;AAEjF,wBAAgB,yBAAyB,CAAC,OAAO,EAAE;IACjD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB,GAAG,MAAM,CAgBT;AAED,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,GACrD,OAAO,CAAC,MAAM,CAAC,CASjB;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IACP,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,GACA,OAAO,CAAC,MAAM,CAAC,CA4BjB"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { disconnectMcpPool, discoverMcpTools, EucodeAgent, resolveMcpServers, wrapToolExecutorWithMcp, } from "@eucode/agent";
|
|
2
|
+
import { createCliCloudProvider } from "./cloud.js";
|
|
3
|
+
import { buildEucodeConfig, loadCliConfigFile, resolveModel, } from "./config.js";
|
|
4
|
+
import { enrichPromptWithFileContext } from "./fileContext.js";
|
|
5
|
+
import { loadMcpConfig } from "./mcpConfig.js";
|
|
6
|
+
import { createNodeToolHost } from "./nodeToolHost.js";
|
|
7
|
+
import { listCliToolNames } from "./capabilities.js";
|
|
8
|
+
import { loadCliProjectRules } from "./projectRules.js";
|
|
9
|
+
export async function createCliAgentHost(options) {
|
|
10
|
+
const file = await loadCliConfigFile();
|
|
11
|
+
const modelId = resolveModel(file, options.model);
|
|
12
|
+
const config = buildEucodeConfig(file, modelId);
|
|
13
|
+
if (options.maxSteps !== undefined) {
|
|
14
|
+
config.agent.maxSteps = options.maxSteps;
|
|
15
|
+
}
|
|
16
|
+
const [projectRules, mcpConfig] = await Promise.all([
|
|
17
|
+
loadCliProjectRules(options.cwd),
|
|
18
|
+
loadMcpConfig(options.cwd),
|
|
19
|
+
]);
|
|
20
|
+
const mcpServerCount = Object.keys(resolveMcpServers(mcpConfig, options.cwd)).length;
|
|
21
|
+
const inner = createNodeToolHost(options.cwd, config);
|
|
22
|
+
const tools = wrapToolExecutorWithMcp(inner, {
|
|
23
|
+
getServers: async () => resolveMcpServers(mcpConfig, options.cwd),
|
|
24
|
+
});
|
|
25
|
+
const provider = createCliCloudProvider(config, modelId);
|
|
26
|
+
const agent = new EucodeAgent(config, tools, {
|
|
27
|
+
projectRules,
|
|
28
|
+
provider,
|
|
29
|
+
connectorsEnabled: mcpServerCount > 0,
|
|
30
|
+
});
|
|
31
|
+
return {
|
|
32
|
+
agent,
|
|
33
|
+
config,
|
|
34
|
+
modelId,
|
|
35
|
+
cwd: options.cwd,
|
|
36
|
+
mcpServerCount,
|
|
37
|
+
disconnect: () => disconnectMcpPool(),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
export const CLI_AGENT_ROLE_PROMPT = `Regole CLI:
|
|
41
|
+
- Per lint/eslint usa percorsi mirati (es. apps/cli), mai \`eslint .\` su monorepo intero.
|
|
42
|
+
- Per test in monorepo usa \`pnpm test --filter <package>\`, non tutto il repo senza motivo.
|
|
43
|
+
- Comandi Docker consentiti: docker ps, docker compose up/down/ps/logs.
|
|
44
|
+
- Usa web_fetch per documentazione HTTP — non è un motore di ricerca Google.
|
|
45
|
+
- Usa i tool per agire; non limitarti a descrivere i comandi.
|
|
46
|
+
- MAI percorsi segnaposto (path/to/file.txt) — solo path reali dal workspace.
|
|
47
|
+
- Per git status usa il tool git (action status), non run_terminal ripetuto.
|
|
48
|
+
- Non spiegare come usare i tool; eseguili. Vietato ripetere lo stesso comando.`;
|
|
49
|
+
export function buildCliSessionRolePrompt(options) {
|
|
50
|
+
const tools = options.toolNames.join(", ");
|
|
51
|
+
const lines = [
|
|
52
|
+
CLI_AGENT_ROLE_PROMPT,
|
|
53
|
+
"",
|
|
54
|
+
"## Capacità sessione (non negare se presenti)",
|
|
55
|
+
`Tool: ${tools}`,
|
|
56
|
+
"REPL: /agent (sub-agent), /background, /mcp, query_sqlite, git, run_terminal, web_fetch.",
|
|
57
|
+
];
|
|
58
|
+
if (options.mcpServerCount > 0) {
|
|
59
|
+
lines.push(`MCP: ${options.mcpServerCount} server configurati in questo workspace.`);
|
|
60
|
+
}
|
|
61
|
+
lines.push("Non dire che MCP, Docker, sqlite o sub-agent non esistono se sono in elenco sopra.");
|
|
62
|
+
return lines.join("\n");
|
|
63
|
+
}
|
|
64
|
+
export async function buildCliRolePromptForCwd(cwd, mcpTools) {
|
|
65
|
+
const mcpConfig = await loadMcpConfig(cwd);
|
|
66
|
+
const mcpServerCount = Object.keys(resolveMcpServers(mcpConfig, cwd)).length;
|
|
67
|
+
return buildCliSessionRolePrompt({
|
|
68
|
+
toolNames: listCliToolNames(mcpTools),
|
|
69
|
+
mcpServerCount,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
export async function runCliAgentTask(task, options) {
|
|
73
|
+
const enriched = await enrichPromptWithFileContext(options.cwd, task);
|
|
74
|
+
const host = await createCliAgentHost({
|
|
75
|
+
cwd: options.cwd,
|
|
76
|
+
model: options.model,
|
|
77
|
+
maxSteps: options.maxSteps,
|
|
78
|
+
});
|
|
79
|
+
try {
|
|
80
|
+
const mcpTools = await discoverMcpTools(await loadMcpConfig(options.cwd), options.cwd);
|
|
81
|
+
const roleSystemPrompt = await buildCliRolePromptForCwd(options.cwd, mcpTools);
|
|
82
|
+
return await host.agent.run(enriched, options.callbacks ?? {}, {
|
|
83
|
+
mcpTools,
|
|
84
|
+
requireToolCallOnFirstStep: true,
|
|
85
|
+
toolCallNudge: "Usa i tool (write_file, read_file, git, run_terminal, …) per completare il task. Per git status: tool git action=status. Non limitarti a spiegare cosa faresti.",
|
|
86
|
+
roleSystemPrompt,
|
|
87
|
+
...options.runOptions,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
finally {
|
|
91
|
+
await host.disconnect();
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=agentHost.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentHost.js","sourceRoot":"","sources":["../src/agentHost.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type JobStatus = "running" | "done" | "error";
|
|
2
|
+
export interface BackgroundJob {
|
|
3
|
+
id: string;
|
|
4
|
+
task: string;
|
|
5
|
+
status: JobStatus;
|
|
6
|
+
startedAt: Date;
|
|
7
|
+
summary: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function getBackgroundJob(): BackgroundJob | null;
|
|
10
|
+
export declare function startBackgroundAgent(task: string, cwd: string, model?: string): BackgroundJob | null;
|
|
11
|
+
export declare function cancelBackgroundJob(): boolean;
|
|
12
|
+
//# sourceMappingURL=backgroundJobs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backgroundJobs.d.ts","sourceRoot":"","sources":["../src/backgroundJobs.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAErD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AASD,wBAAgB,gBAAgB,IAAI,aAAa,GAAG,IAAI,CAEvD;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,MAAM,GACb,aAAa,GAAG,IAAI,CA+CtB;AAED,wBAAgB,mBAAmB,IAAI,OAAO,CAO7C"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { dirname, join } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
let currentJob = null;
|
|
5
|
+
let child = null;
|
|
6
|
+
function cliEntryPath() {
|
|
7
|
+
return join(dirname(fileURLToPath(import.meta.url)), "index.js");
|
|
8
|
+
}
|
|
9
|
+
export function getBackgroundJob() {
|
|
10
|
+
return currentJob;
|
|
11
|
+
}
|
|
12
|
+
export function startBackgroundAgent(task, cwd, model) {
|
|
13
|
+
if (currentJob?.status === "running")
|
|
14
|
+
return null;
|
|
15
|
+
const id = `job-${Date.now()}`;
|
|
16
|
+
const job = {
|
|
17
|
+
id,
|
|
18
|
+
task,
|
|
19
|
+
status: "running",
|
|
20
|
+
startedAt: new Date(),
|
|
21
|
+
summary: "",
|
|
22
|
+
};
|
|
23
|
+
currentJob = job;
|
|
24
|
+
const args = ["agent", task, "-C", cwd];
|
|
25
|
+
if (model)
|
|
26
|
+
args.push("-m", model);
|
|
27
|
+
child = spawn(process.execPath, [cliEntryPath(), ...args], {
|
|
28
|
+
cwd,
|
|
29
|
+
env: process.env,
|
|
30
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
31
|
+
});
|
|
32
|
+
let output = "";
|
|
33
|
+
child.stdout?.on("data", (chunk) => {
|
|
34
|
+
output += chunk.toString();
|
|
35
|
+
if (output.length > 12_000)
|
|
36
|
+
output = output.slice(-12_000);
|
|
37
|
+
});
|
|
38
|
+
child.stderr?.on("data", (chunk) => {
|
|
39
|
+
output += chunk.toString();
|
|
40
|
+
if (output.length > 12_000)
|
|
41
|
+
output = output.slice(-12_000);
|
|
42
|
+
});
|
|
43
|
+
child.on("close", (code) => {
|
|
44
|
+
job.status = code === 0 ? "done" : "error";
|
|
45
|
+
job.summary =
|
|
46
|
+
output.trim().slice(-2000) ||
|
|
47
|
+
(code === 0 ? "Completato." : `Exit code ${code ?? 1}`);
|
|
48
|
+
child = null;
|
|
49
|
+
});
|
|
50
|
+
child.on("error", (err) => {
|
|
51
|
+
job.status = "error";
|
|
52
|
+
job.summary = err.message;
|
|
53
|
+
child = null;
|
|
54
|
+
});
|
|
55
|
+
return job;
|
|
56
|
+
}
|
|
57
|
+
export function cancelBackgroundJob() {
|
|
58
|
+
if (!child || currentJob?.status !== "running")
|
|
59
|
+
return false;
|
|
60
|
+
child.kill("SIGTERM");
|
|
61
|
+
currentJob.status = "error";
|
|
62
|
+
currentJob.summary = "Annullato.";
|
|
63
|
+
child = null;
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=backgroundJobs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backgroundJobs.js","sourceRoot":"","sources":["../src/backgroundJobs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type McpToolInfo } from "@eucode/agent";
|
|
2
|
+
/** Alias used in prompts and tests. */
|
|
3
|
+
export declare function listCliToolNames(mcpTools?: McpToolInfo[]): string[];
|
|
4
|
+
export declare function listCliCapabilities(mcpTools?: McpToolInfo[]): string[];
|
|
5
|
+
export declare function formatCapabilitiesList(tools: string[], extras?: {
|
|
6
|
+
mcpServers?: number;
|
|
7
|
+
notes?: string[];
|
|
8
|
+
}): string;
|
|
9
|
+
//# sourceMappingURL=capabilities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAqBlE,uCAAuC;AACvC,wBAAgB,gBAAgB,CAAC,QAAQ,GAAE,WAAW,EAAO,GAAG,MAAM,EAAE,CAEvE;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,GAAE,WAAW,EAAO,GAAG,MAAM,EAAE,CAM1E;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EAAE,EACf,MAAM,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GACjD,MAAM,CAcR"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { buildAgentTools } from "@eucode/agent";
|
|
2
|
+
const CLI_NATIVE_TOOLS = [
|
|
3
|
+
"read",
|
|
4
|
+
"read_file",
|
|
5
|
+
"write",
|
|
6
|
+
"write_file",
|
|
7
|
+
"edit",
|
|
8
|
+
"search_replace",
|
|
9
|
+
"glob",
|
|
10
|
+
"list_files",
|
|
11
|
+
"grep",
|
|
12
|
+
"create_project",
|
|
13
|
+
"bash",
|
|
14
|
+
"run_terminal",
|
|
15
|
+
"git",
|
|
16
|
+
"webfetch",
|
|
17
|
+
"web_fetch",
|
|
18
|
+
"query_sqlite",
|
|
19
|
+
];
|
|
20
|
+
/** Alias used in prompts and tests. */
|
|
21
|
+
export function listCliToolNames(mcpTools = []) {
|
|
22
|
+
return listCliCapabilities(mcpTools);
|
|
23
|
+
}
|
|
24
|
+
export function listCliCapabilities(mcpTools = []) {
|
|
25
|
+
const base = buildAgentTools({});
|
|
26
|
+
const names = new Set(base.map((t) => t.name));
|
|
27
|
+
for (const t of CLI_NATIVE_TOOLS)
|
|
28
|
+
names.add(t);
|
|
29
|
+
for (const m of mcpTools)
|
|
30
|
+
names.add(m.name);
|
|
31
|
+
return [...names].sort();
|
|
32
|
+
}
|
|
33
|
+
export function formatCapabilitiesList(tools, extras) {
|
|
34
|
+
const lines = ["Tool registrati (CLI):", ""];
|
|
35
|
+
for (const t of tools)
|
|
36
|
+
lines.push(` • ${t}`);
|
|
37
|
+
if (extras?.mcpServers) {
|
|
38
|
+
lines.push("", `MCP: ${extras.mcpServers} server configurati`);
|
|
39
|
+
}
|
|
40
|
+
if (extras?.notes?.length) {
|
|
41
|
+
lines.push("", ...extras.notes.map((n) => ` ${n}`));
|
|
42
|
+
}
|
|
43
|
+
lines.push("", "Non disponibile in CLI: browser MCP, semantic index IDE, orchestrator Leonardo.");
|
|
44
|
+
return lines.join("\n");
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=capabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAoB,MAAM,eAAe,CAAC;AAElE,MAAM,gBAAgB,GAAG;IACvB,MAAM;IACN,WAAW;IACX,OAAO;IACP,YAAY;IACZ,MAAM;IACN,gBAAgB;IAChB,MAAM;IACN,YAAY;IACZ,MAAM;IACN,gBAAgB;IAChB,MAAM;IACN,cAAc;IACd,KAAK;IACL,UAAU;IACV,WAAW;IACX,cAAc;CACN,CAAC;AAEX,uCAAuC;AACvC,MAAM,UAAU,gBAAgB,CAAC,WAA0B,EAAE;IAC3D,OAAO,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,WAA0B,EAAE;IAC9D,MAAM,IAAI,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/C,KAAK,MAAM,CAAC,IAAI,gBAAgB;QAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/C,KAAK,MAAM,CAAC,IAAI,QAAQ;QAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,KAAe,EACf,MAAkD;IAElD,MAAM,KAAK,GAAG,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;IAC7C,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC9C,IAAI,MAAM,EAAE,UAAU,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,MAAM,CAAC,UAAU,qBAAqB,CAAC,CAAC;IACjE,CAAC;IACD,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,KAAK,CAAC,IAAI,CACR,EAAE,EACF,iFAAiF,CAClF,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cliErrors.d.ts","sourceRoot":"","sources":["../src/cliErrors.ts"],"names":[],"mappings":"AAEA,4DAA4D;AAC5D,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAYpD"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { isContextLengthError, isPlanError, llmErrorMessage } from "@eucode/llm";
|
|
2
|
+
/** Single user-facing error line for the REPL (Italian). */
|
|
3
|
+
export function formatReplError(err) {
|
|
4
|
+
if (isContextLengthError(err)) {
|
|
5
|
+
return "Errore: contesto troppo lungo — riprova con richiesta più corta o /compact";
|
|
6
|
+
}
|
|
7
|
+
if (isPlanError(err)) {
|
|
8
|
+
return "Errore: modello Pro richiesto — usa /model groq-llama4-scout";
|
|
9
|
+
}
|
|
10
|
+
const msg = err instanceof Error ? err.message : llmErrorMessage(err);
|
|
11
|
+
if (/LLM 500|internal server error/i.test(msg)) {
|
|
12
|
+
return "Errore: servizio modello temporaneamente non disponibile — riprova tra poco";
|
|
13
|
+
}
|
|
14
|
+
return msg;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=cliErrors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cliErrors.js","sourceRoot":"","sources":["../src/cliErrors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEjF,4DAA4D;AAC5D,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,IAAI,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,4EAA4E,CAAC;IACtF,CAAC;IACD,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,8DAA8D,CAAC;IACxE,CAAC;IACD,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IACtE,IAAI,gCAAgC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,OAAO,6EAA6E,CAAC;IACvF,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/dist/cloud.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type LlmProvider } from "@eucode/llm";
|
|
2
|
+
import type { ChatMessage, EucodeConfig } from "@eucode/shared";
|
|
3
|
+
export declare function createCliCloudProvider(config: EucodeConfig, modelId: string): LlmProvider;
|
|
4
|
+
export declare function streamCliChat(provider: LlmProvider, messages: ChatMessage[], onDelta: (text: string) => void, opts?: {
|
|
5
|
+
maxTokens?: number;
|
|
6
|
+
}): Promise<string>;
|
|
7
|
+
export interface CliModelsResponse {
|
|
8
|
+
models: Array<{
|
|
9
|
+
id: string;
|
|
10
|
+
displayName?: string;
|
|
11
|
+
provider?: string;
|
|
12
|
+
}>;
|
|
13
|
+
plan?: string;
|
|
14
|
+
hint?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare function fetchModels(apiUrl: string, apiToken: string): Promise<CliModelsResponse>;
|
|
17
|
+
//# sourceMappingURL=cloud.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud.d.ts","sourceRoot":"","sources":["../src/cloud.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAsBhE,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,MAAM,GACd,WAAW,CAWb;AAID,wBAAsB,aAAa,CACjC,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAC/B,IAAI,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5B,OAAO,CAAC,MAAM,CAAC,CA4BjB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,iBAAiB,CAAC,CAiB5B"}
|
package/dist/cloud.js
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { createCloudProviderWithFallback, FallbackProvider, isContextLengthError, isRetryableLlmError, llmRetryDelayMs, tierForModelId, } from "@eucode/llm";
|
|
2
|
+
/** Free-tier fallbacks first (Pro-only / NIM 404 → next model, no retry storm). */
|
|
3
|
+
const CLI_EXTRA_FALLBACK = [
|
|
4
|
+
"groq-llama4-scout",
|
|
5
|
+
"gemini-2.0-flash",
|
|
6
|
+
];
|
|
7
|
+
function buildCliModelChain(primaryModelId) {
|
|
8
|
+
const seen = new Set();
|
|
9
|
+
const chain = [];
|
|
10
|
+
const push = (id) => {
|
|
11
|
+
const trimmed = id.trim();
|
|
12
|
+
if (!trimmed || seen.has(trimmed))
|
|
13
|
+
return;
|
|
14
|
+
seen.add(trimmed);
|
|
15
|
+
chain.push(trimmed);
|
|
16
|
+
};
|
|
17
|
+
push(primaryModelId);
|
|
18
|
+
for (const id of CLI_EXTRA_FALLBACK)
|
|
19
|
+
push(id);
|
|
20
|
+
return chain;
|
|
21
|
+
}
|
|
22
|
+
export function createCliCloudProvider(config, modelId) {
|
|
23
|
+
const chain = buildCliModelChain(modelId);
|
|
24
|
+
const providers = chain.map((id) => {
|
|
25
|
+
const tier = tierForModelId(id, config.mode);
|
|
26
|
+
return createCloudProviderWithFallback(config, id, tier, {
|
|
27
|
+
apiKey: config.subscription.token,
|
|
28
|
+
proxyBaseUrl: `${config.subscription.apiUrl.replace(/\/$/, "")}/v1`,
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
if (providers.length <= 1)
|
|
32
|
+
return providers[0];
|
|
33
|
+
return new FallbackProvider(providers, modelId);
|
|
34
|
+
}
|
|
35
|
+
const MAX_CHAT_RETRIES = 3;
|
|
36
|
+
export async function streamCliChat(provider, messages, onDelta, opts) {
|
|
37
|
+
let lastError;
|
|
38
|
+
for (let attempt = 0; attempt <= MAX_CHAT_RETRIES; attempt++) {
|
|
39
|
+
let full = "";
|
|
40
|
+
try {
|
|
41
|
+
await provider.stream({ messages, maxTokens: opts?.maxTokens }, (chunk) => {
|
|
42
|
+
if (chunk.type !== "text" || !chunk.text)
|
|
43
|
+
return;
|
|
44
|
+
full += chunk.text;
|
|
45
|
+
onDelta(chunk.text);
|
|
46
|
+
});
|
|
47
|
+
return full.trim() || full;
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
lastError = err;
|
|
51
|
+
if (isContextLengthError(err)) {
|
|
52
|
+
throw new Error("Contesto troppo lungo — riprova con una richiesta più corta o usa /compact.");
|
|
53
|
+
}
|
|
54
|
+
if (!isRetryableLlmError(err) || attempt >= MAX_CHAT_RETRIES)
|
|
55
|
+
break;
|
|
56
|
+
await new Promise((r) => setTimeout(r, llmRetryDelayMs(attempt)));
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
throw lastError instanceof Error
|
|
60
|
+
? lastError
|
|
61
|
+
: new Error(String(lastError ?? "Errore modello"));
|
|
62
|
+
}
|
|
63
|
+
export async function fetchModels(apiUrl, apiToken) {
|
|
64
|
+
const headers = {};
|
|
65
|
+
if (apiToken)
|
|
66
|
+
headers.Authorization = `Bearer ${apiToken}`;
|
|
67
|
+
const res = await fetch(`${apiUrl.replace(/\/$/, "")}/v1/models`, { headers });
|
|
68
|
+
if (!res.ok) {
|
|
69
|
+
throw new Error(`Impossibile caricare i modelli (${res.status})`);
|
|
70
|
+
}
|
|
71
|
+
const data = (await res.json());
|
|
72
|
+
return {
|
|
73
|
+
models: data.data ?? [],
|
|
74
|
+
plan: data.plan,
|
|
75
|
+
hint: data.hint,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=cloud.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud.js","sourceRoot":"","sources":["../src/cloud.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function getGitDiff(cwd: string, staged?: boolean): string;
|
|
2
|
+
export declare function printGitDiff(cwd: string): void;
|
|
3
|
+
export declare function runCodeReview(options: {
|
|
4
|
+
cwd: string;
|
|
5
|
+
model?: string;
|
|
6
|
+
applyFixes?: boolean;
|
|
7
|
+
}): Promise<string>;
|
|
8
|
+
//# sourceMappingURL=codeReview.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codeReview.d.ts","sourceRoot":"","sources":["../src/codeReview.ts"],"names":[],"mappings":"AAGA,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG,MAAM,CAmB9D;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAQ9C;AASD,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG,OAAO,CAAC,MAAM,CAAC,CA6BlB"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { execSync } from "node:child_process";
|
|
2
|
+
import { runCliAgentTask } from "./agentHost.js";
|
|
3
|
+
export function getGitDiff(cwd, staged = false) {
|
|
4
|
+
try {
|
|
5
|
+
const cmd = staged ? "git diff --cached" : "git diff";
|
|
6
|
+
const diff = execSync(cmd, { cwd, encoding: "utf8", maxBuffer: 512_000 });
|
|
7
|
+
if (diff.trim())
|
|
8
|
+
return diff;
|
|
9
|
+
if (!staged) {
|
|
10
|
+
const head = execSync("git diff HEAD", {
|
|
11
|
+
cwd,
|
|
12
|
+
encoding: "utf8",
|
|
13
|
+
maxBuffer: 512_000,
|
|
14
|
+
});
|
|
15
|
+
if (head.trim())
|
|
16
|
+
return head;
|
|
17
|
+
}
|
|
18
|
+
return "";
|
|
19
|
+
}
|
|
20
|
+
catch (e) {
|
|
21
|
+
throw new Error(e instanceof Error ? e.message : "Impossibile eseguire git diff.");
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export function printGitDiff(cwd) {
|
|
25
|
+
const diff = getGitDiff(cwd);
|
|
26
|
+
if (!diff) {
|
|
27
|
+
console.log("(nessuna modifica — working tree pulito)\n");
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
process.stdout.write(diff);
|
|
31
|
+
if (!diff.endsWith("\n"))
|
|
32
|
+
process.stdout.write("\n");
|
|
33
|
+
}
|
|
34
|
+
const REVIEW_PROMPT = `Code review focalizzata sul diff git sotto.
|
|
35
|
+
Elenca: bug, regressioni, sicurezza, test mancanti. Max 15 bullet, priorità alta prima.
|
|
36
|
+
NON chiamare tool — analizza solo il diff fornito.
|
|
37
|
+
|
|
38
|
+
\`\`\`diff
|
|
39
|
+
`;
|
|
40
|
+
export async function runCodeReview(options) {
|
|
41
|
+
const diff = getGitDiff(options.cwd);
|
|
42
|
+
if (!diff.trim()) {
|
|
43
|
+
return "Nessuna modifica da revisionare (git diff vuoto).";
|
|
44
|
+
}
|
|
45
|
+
const truncated = diff.length > 24_000
|
|
46
|
+
? `${diff.slice(0, 24_000)}\n…[diff troncato]`
|
|
47
|
+
: diff;
|
|
48
|
+
const task = REVIEW_PROMPT +
|
|
49
|
+
truncated +
|
|
50
|
+
"\n```" +
|
|
51
|
+
(options.applyFixes
|
|
52
|
+
? "\n\nDopo la review, applica fix mirati con write_file/search_replace se sicuri."
|
|
53
|
+
: "");
|
|
54
|
+
return runCliAgentTask(task, {
|
|
55
|
+
cwd: options.cwd,
|
|
56
|
+
model: options.model,
|
|
57
|
+
maxSteps: options.applyFixes ? 16 : 6,
|
|
58
|
+
runOptions: {
|
|
59
|
+
requireToolCallOnFirstStep: false,
|
|
60
|
+
roleSystemPrompt: "Review mode: preferisci analisi testuale. Usa tool solo se --fix è attivo.",
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=codeReview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codeReview.js","sourceRoot":"","sources":["../src/codeReview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,UAAU,UAAU,CAAC,GAAW,EAAE,MAAM,GAAG,KAAK;IACpD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC;QACtD,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1E,IAAI,IAAI,CAAC,IAAI,EAAE;YAAE,OAAO,IAAI,CAAC;QAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,EAAE;gBACrC,GAAG;gBACH,QAAQ,EAAE,MAAM;gBAChB,SAAS,EAAE,OAAO;aACnB,CAAC,CAAC;YACH,IAAI,IAAI,CAAC,IAAI,EAAE;gBAAE,OAAO,IAAI,CAAC;QAC/B,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gCAAgC,CAClE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC1D,OAAO;IACT,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,aAAa,GAAG;;;;;CAKrB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAInC;IACC,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QACjB,OAAO,mDAAmD,CAAC;IAC7D,CAAC;IAED,MAAM,SAAS,GACb,IAAI,CAAC,MAAM,GAAG,MAAM;QAClB,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,oBAAoB;QAC9C,CAAC,CAAC,IAAI,CAAC;IAEX,MAAM,IAAI,GACR,aAAa;QACb,SAAS;QACT,OAAO;QACP,CAAC,OAAO,CAAC,UAAU;YACjB,CAAC,CAAC,iFAAiF;YACnF,CAAC,CAAC,EAAE,CAAC,CAAC;IAEV,OAAO,eAAe,CAAC,IAAI,EAAE;QAC3B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACrC,UAAU,EAAE;YACV,0BAA0B,EAAE,KAAK;YACjC,gBAAgB,EACd,4EAA4E;SAC/E;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"AAmBA,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IACJ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GACA,OAAO,CAAC,IAAI,CAAC,CAsFf"}
|