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.
Files changed (157) hide show
  1. package/dist/agentFinish.d.ts +10 -0
  2. package/dist/agentFinish.d.ts.map +1 -0
  3. package/dist/agentFinish.js +9 -0
  4. package/dist/agentFinish.js.map +1 -0
  5. package/dist/agentHost.d.ts +29 -0
  6. package/dist/agentHost.d.ts.map +1 -0
  7. package/dist/agentHost.js +94 -0
  8. package/dist/agentHost.js.map +1 -0
  9. package/dist/backgroundJobs.d.ts +12 -0
  10. package/dist/backgroundJobs.d.ts.map +1 -0
  11. package/dist/backgroundJobs.js +66 -0
  12. package/dist/backgroundJobs.js.map +1 -0
  13. package/dist/capabilities.d.ts +9 -0
  14. package/dist/capabilities.d.ts.map +1 -0
  15. package/dist/capabilities.js +46 -0
  16. package/dist/capabilities.js.map +1 -0
  17. package/dist/cliErrors.d.ts +3 -0
  18. package/dist/cliErrors.d.ts.map +1 -0
  19. package/dist/cliErrors.js +16 -0
  20. package/dist/cliErrors.js.map +1 -0
  21. package/dist/cloud.d.ts +17 -0
  22. package/dist/cloud.d.ts.map +1 -0
  23. package/dist/cloud.js +78 -0
  24. package/dist/cloud.js.map +1 -0
  25. package/dist/codeReview.d.ts +8 -0
  26. package/dist/codeReview.d.ts.map +1 -0
  27. package/dist/codeReview.js +64 -0
  28. package/dist/codeReview.js.map +1 -0
  29. package/dist/commands/agent.d.ts +7 -0
  30. package/dist/commands/agent.d.ts.map +1 -0
  31. package/dist/commands/agent.js +86 -0
  32. package/dist/commands/agent.js.map +1 -0
  33. package/dist/commands/capabilities.d.ts +2 -0
  34. package/dist/commands/capabilities.d.ts.map +1 -0
  35. package/dist/commands/capabilities.js +22 -0
  36. package/dist/commands/capabilities.js.map +1 -0
  37. package/dist/commands/chat.d.ts +7 -0
  38. package/dist/commands/chat.d.ts.map +1 -0
  39. package/dist/commands/chat.js +426 -0
  40. package/dist/commands/chat.js.map +1 -0
  41. package/dist/commands/db.d.ts +6 -0
  42. package/dist/commands/db.d.ts.map +1 -0
  43. package/dist/commands/db.js +17 -0
  44. package/dist/commands/db.js.map +1 -0
  45. package/dist/commands/docker.d.ts +5 -0
  46. package/dist/commands/docker.d.ts.map +1 -0
  47. package/dist/commands/docker.js +35 -0
  48. package/dist/commands/docker.js.map +1 -0
  49. package/dist/commands/init.d.ts +3 -0
  50. package/dist/commands/init.d.ts.map +1 -0
  51. package/dist/commands/init.js +34 -0
  52. package/dist/commands/init.js.map +1 -0
  53. package/dist/commands/login.d.ts +5 -0
  54. package/dist/commands/login.d.ts.map +1 -0
  55. package/dist/commands/login.js +32 -0
  56. package/dist/commands/login.js.map +1 -0
  57. package/dist/commands/mcp.d.ts +3 -0
  58. package/dist/commands/mcp.d.ts.map +1 -0
  59. package/dist/commands/mcp.js +65 -0
  60. package/dist/commands/mcp.js.map +1 -0
  61. package/dist/commands/models.d.ts +2 -0
  62. package/dist/commands/models.d.ts.map +1 -0
  63. package/dist/commands/models.js +30 -0
  64. package/dist/commands/models.js.map +1 -0
  65. package/dist/commands/new.d.ts +5 -0
  66. package/dist/commands/new.d.ts.map +1 -0
  67. package/dist/commands/new.js +31 -0
  68. package/dist/commands/new.js.map +1 -0
  69. package/dist/commands/plan.d.ts +6 -0
  70. package/dist/commands/plan.d.ts.map +1 -0
  71. package/dist/commands/plan.js +82 -0
  72. package/dist/commands/plan.js.map +1 -0
  73. package/dist/commands/pr.d.ts +6 -0
  74. package/dist/commands/pr.d.ts.map +1 -0
  75. package/dist/commands/pr.js +29 -0
  76. package/dist/commands/pr.js.map +1 -0
  77. package/dist/commands/test.d.ts +5 -0
  78. package/dist/commands/test.d.ts.map +1 -0
  79. package/dist/commands/test.js +49 -0
  80. package/dist/commands/test.js.map +1 -0
  81. package/dist/config.d.ts +18 -0
  82. package/dist/config.d.ts.map +1 -0
  83. package/dist/config.js +75 -0
  84. package/dist/config.js.map +1 -0
  85. package/dist/createProject.d.ts +5 -0
  86. package/dist/createProject.d.ts.map +1 -0
  87. package/dist/createProject.js +53 -0
  88. package/dist/createProject.js.map +1 -0
  89. package/dist/delegateAgent.d.ts +6 -0
  90. package/dist/delegateAgent.d.ts.map +1 -0
  91. package/dist/delegateAgent.js +34 -0
  92. package/dist/delegateAgent.js.map +1 -0
  93. package/dist/fileContext.d.ts +4 -0
  94. package/dist/fileContext.d.ts.map +1 -0
  95. package/dist/fileContext.js +98 -0
  96. package/dist/fileContext.js.map +1 -0
  97. package/dist/index.d.ts +3 -0
  98. package/dist/index.d.ts.map +1 -0
  99. package/dist/index.js +207 -0
  100. package/dist/index.js.map +1 -0
  101. package/dist/intensity.d.ts +13 -0
  102. package/dist/intensity.d.ts.map +1 -0
  103. package/dist/intensity.js +33 -0
  104. package/dist/intensity.js.map +1 -0
  105. package/dist/mcpConfig.d.ts +3 -0
  106. package/dist/mcpConfig.d.ts.map +1 -0
  107. package/dist/mcpConfig.js +29 -0
  108. package/dist/mcpConfig.js.map +1 -0
  109. package/dist/memory.d.ts +3 -0
  110. package/dist/memory.d.ts.map +1 -0
  111. package/dist/memory.js +16 -0
  112. package/dist/memory.js.map +1 -0
  113. package/dist/modelCatalog.d.ts +9 -0
  114. package/dist/modelCatalog.d.ts.map +1 -0
  115. package/dist/modelCatalog.js +45 -0
  116. package/dist/modelCatalog.js.map +1 -0
  117. package/dist/nodeToolHost.d.ts +4 -0
  118. package/dist/nodeToolHost.d.ts.map +1 -0
  119. package/dist/nodeToolHost.js +320 -0
  120. package/dist/nodeToolHost.js.map +1 -0
  121. package/dist/projectRules.d.ts +2 -0
  122. package/dist/projectRules.d.ts.map +1 -0
  123. package/dist/projectRules.js +57 -0
  124. package/dist/projectRules.js.map +1 -0
  125. package/dist/replOutput.d.ts +21 -0
  126. package/dist/replOutput.d.ts.map +1 -0
  127. package/dist/replOutput.js +84 -0
  128. package/dist/replOutput.js.map +1 -0
  129. package/dist/sqliteQuery.d.ts +3 -0
  130. package/dist/sqliteQuery.d.ts.map +1 -0
  131. package/dist/sqliteQuery.js +40 -0
  132. package/dist/sqliteQuery.js.map +1 -0
  133. package/dist/synthesizeAgentReply.d.ts +32 -0
  134. package/dist/synthesizeAgentReply.d.ts.map +1 -0
  135. package/dist/synthesizeAgentReply.js +173 -0
  136. package/dist/synthesizeAgentReply.js.map +1 -0
  137. package/dist/synthesizeAgentReply.test.d.ts +2 -0
  138. package/dist/synthesizeAgentReply.test.d.ts.map +1 -0
  139. package/dist/synthesizeAgentReply.test.js +35 -0
  140. package/dist/synthesizeAgentReply.test.js.map +1 -0
  141. package/dist/terminalOutput.d.ts +4 -0
  142. package/dist/terminalOutput.d.ts.map +1 -0
  143. package/dist/terminalOutput.js +34 -0
  144. package/dist/terminalOutput.js.map +1 -0
  145. package/dist/ui.d.ts +17 -0
  146. package/dist/ui.d.ts.map +1 -0
  147. package/dist/ui.js +121 -0
  148. package/dist/ui.js.map +1 -0
  149. package/dist/webFetch.d.ts +2 -0
  150. package/dist/webFetch.d.ts.map +1 -0
  151. package/dist/webFetch.js +29 -0
  152. package/dist/webFetch.js.map +1 -0
  153. package/dist/workspace.d.ts +2 -0
  154. package/dist/workspace.d.ts.map +1 -0
  155. package/dist/workspace.js +30 -0
  156. package/dist/workspace.js.map +1 -0
  157. package/package.json +49 -0
@@ -0,0 +1,86 @@
1
+ import { resolve } from "node:path";
2
+ import ora from "ora";
3
+ import { buildCliRolePromptForCwd, createCliAgentHost, } from "../agentHost.js";
4
+ import { formatReplError } from "../cliErrors.js";
5
+ import { enrichPromptWithFileContext } from "../fileContext.js";
6
+ import { delegateAgentTask } from "../delegateAgent.js";
7
+ import { createReplAgentCallbacks } from "../replOutput.js";
8
+ import { createCliCloudProvider } from "../cloud.js";
9
+ import { buildEucodeConfig, loadCliConfigFile, } from "../config.js";
10
+ import { discoverMcpTools } from "@eucode/agent";
11
+ import { loadMcpConfig } from "../mcpConfig.js";
12
+ import { c } from "../ui.js";
13
+ export async function runAgentCommand(task, opts) {
14
+ if (!task.trim()) {
15
+ console.error(c.err('Specifica un task: eucoder agent "fix i test"'));
16
+ process.exitCode = 1;
17
+ return;
18
+ }
19
+ const cwd = resolve(opts.cwd ?? process.cwd());
20
+ if (opts.delegate) {
21
+ console.log(c.dim(`Delegate sub-agent · ${cwd}\n`));
22
+ try {
23
+ const summary = await delegateAgentTask(task, {
24
+ cwd,
25
+ model: opts.model,
26
+ maxSteps: opts.maxSteps,
27
+ });
28
+ console.log(summary + "\n");
29
+ }
30
+ catch (e) {
31
+ console.error(c.err(formatReplError(e)) + "\n");
32
+ process.exitCode = 1;
33
+ }
34
+ return;
35
+ }
36
+ const host = await createCliAgentHost({
37
+ cwd,
38
+ model: opts.model,
39
+ maxSteps: opts.maxSteps ?? 24,
40
+ });
41
+ const mcpConfig = await loadMcpConfig(cwd);
42
+ const mcpTools = await discoverMcpTools(mcpConfig, cwd);
43
+ const mcpNote = host.mcpServerCount > 0
44
+ ? c.dim(` · MCP: ${host.mcpServerCount} server`)
45
+ : "";
46
+ console.log(c.dim(`Agente · ${host.modelId} · ${cwd}${mcpNote}\n`));
47
+ console.log(c.user(task) + "\n");
48
+ const spinner = ora({
49
+ text: "Agente in esecuzione…",
50
+ color: "cyan",
51
+ stream: process.stderr,
52
+ }).start();
53
+ const repl = createReplAgentCallbacks(spinner);
54
+ const file = await loadCliConfigFile();
55
+ const provider = createCliCloudProvider(buildEucodeConfig(file, host.modelId), host.modelId);
56
+ try {
57
+ const enriched = await enrichPromptWithFileContext(cwd, task);
58
+ const roleSystemPrompt = await buildCliRolePromptForCwd(cwd, mcpTools);
59
+ const runResult = await host.agent.run(enriched, {
60
+ ...repl.callbacks,
61
+ onStep: (step, max) => {
62
+ spinner.text = `Step ${step}/${max}…`;
63
+ },
64
+ }, {
65
+ mcpTools,
66
+ requireToolCallOnFirstStep: true,
67
+ 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.",
68
+ roleSystemPrompt,
69
+ });
70
+ await repl.finish({
71
+ runResult,
72
+ userPrompt: enriched,
73
+ history: host.agent.getHistory(),
74
+ provider,
75
+ });
76
+ }
77
+ catch (e) {
78
+ spinner.stop();
79
+ console.error(c.err(formatReplError(e)) + "\n");
80
+ process.exitCode = 1;
81
+ }
82
+ finally {
83
+ await host.disconnect();
84
+ }
85
+ }
86
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function runCapabilitiesCommand(cwd: string): Promise<void>;
2
+ //# sourceMappingURL=capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/commands/capabilities.ts"],"names":[],"mappings":"AASA,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBvE"}
@@ -0,0 +1,22 @@
1
+ import { resolve } from "node:path";
2
+ import { discoverMcpTools } from "@eucode/agent";
3
+ import { loadMcpConfig } from "../mcpConfig.js";
4
+ import { formatCapabilitiesList, listCliCapabilities, } from "../capabilities.js";
5
+ import { c } from "../ui.js";
6
+ export async function runCapabilitiesCommand(cwd) {
7
+ const abs = resolve(cwd);
8
+ const mcpConfig = await loadMcpConfig(abs);
9
+ const mcpTools = await discoverMcpTools(mcpConfig, abs).catch(() => []);
10
+ const tools = listCliCapabilities(mcpTools);
11
+ const serverCount = Object.keys(mcpConfig.mcpServers ?? {}).length;
12
+ console.log(formatCapabilitiesList(tools, {
13
+ mcpServers: serverCount,
14
+ notes: [
15
+ "REPL: /agent /background /tasks /diff /code-review /memory",
16
+ "CLI: eucoder test | docker | db | pr | mcp list",
17
+ "Test monorepo: preferisci pnpm test --filter <package>",
18
+ ],
19
+ }) + "\n");
20
+ console.log(c.dim("Aggiorna con: eucoder capabilities\n"));
21
+ }
22
+ //# sourceMappingURL=capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/commands/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EACL,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAE7B,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,GAAW;IACtD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACzB,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACxE,MAAM,KAAK,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IAEnE,OAAO,CAAC,GAAG,CACT,sBAAsB,CAAC,KAAK,EAAE;QAC5B,UAAU,EAAE,WAAW;QACvB,KAAK,EAAE;YACL,4DAA4D;YAC5D,iDAAiD;YACjD,wDAAwD;SACzD;KACF,CAAC,GAAG,IAAI,CACV,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC,CAAC;AAC7D,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare function runChatCommand(opts: {
2
+ model?: string;
3
+ once?: string;
4
+ local?: boolean;
5
+ dir?: string;
6
+ }): Promise<void>;
7
+ //# sourceMappingURL=chat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"AAoDA,wBAAsB,cAAc,CAAC,IAAI,EAAE;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,IAAI,CAAC,CA4chB"}
@@ -0,0 +1,426 @@
1
+ import * as readline from "node:readline";
2
+ import { stdin as input, stdout as output } from "node:process";
3
+ import { resolve } from "node:path";
4
+ import ora from "ora";
5
+ import { clampUserMessage, discoverMcpTools } from "@eucode/agent";
6
+ import { buildCliRolePromptForCwd, createCliAgentHost, } from "../agentHost.js";
7
+ import { formatReplError } from "../cliErrors.js";
8
+ import { enrichPromptWithFileContext } from "../fileContext.js";
9
+ import { runInitCommand } from "./init.js";
10
+ import { loadMcpConfig } from "../mcpConfig.js";
11
+ import { printGitDiff, runCodeReview } from "../codeReview.js";
12
+ import { delegateAgentTask } from "../delegateAgent.js";
13
+ import { getBackgroundJob, startBackgroundAgent, } from "../backgroundJobs.js";
14
+ import { appendProjectMemory } from "../memory.js";
15
+ import { runPlanCommand } from "./plan.js";
16
+ import { createReplAgentCallbacks } from "../replOutput.js";
17
+ import { buildEucodeConfig, loadCliConfigFile, resolveModel, saveCliConfigFile, } from "../config.js";
18
+ import { createCliCloudProvider, streamCliChat } from "../cloud.js";
19
+ import { intensityLabel, loadIntensity, maxTokensForIntensity, parseIntensity, saveIntensity, } from "../intensity.js";
20
+ import { loadSelectableModelGroups, modelDisplayName, resolveModelFromInput, } from "../modelCatalog.js";
21
+ import { isProjectDirectory } from "../workspace.js";
22
+ import { c, formatStatusPrompt, printModelGroups, printReplHelp, } from "../ui.js";
23
+ export async function runChatCommand(opts) {
24
+ if (opts.local) {
25
+ console.error("Modalità --local: avvia Ollama su http://127.0.0.1:11434 e usa l'app desktop o pnpm dev:api per il proxy. La CLI cloud è il default.");
26
+ process.exit(1);
27
+ }
28
+ const cwd = resolve(opts.dir ?? process.cwd());
29
+ const file = await loadCliConfigFile();
30
+ let modelId = resolveModel(file, opts.model);
31
+ let intensity = await loadIntensity();
32
+ let provider = createCliCloudProvider(buildEucodeConfig(file, modelId), modelId);
33
+ const agentMode = await isProjectDirectory(cwd);
34
+ const history = [
35
+ {
36
+ role: "system",
37
+ content: agentMode
38
+ ? "Sei EUCoder, assistente AI per sviluppatori con accesso ai tool del progetto. Rispondi in italiano se l'utente scrive in italiano. Usa i tool quando serve modificare file o eseguire comandi."
39
+ : "Sei EUCoder, assistente AI per sviluppatori. Rispondi in italiano se l'utente scrive in italiano. Sii conciso e utile.",
40
+ },
41
+ ];
42
+ let agentHost = null;
43
+ let turnInFlight = false;
44
+ const refreshProvider = () => {
45
+ provider = createCliCloudProvider(buildEucodeConfig(file, modelId), modelId);
46
+ };
47
+ const cleanupAgentHost = async () => {
48
+ const host = agentHost;
49
+ if (!host)
50
+ return;
51
+ await host.disconnect();
52
+ agentHost = null;
53
+ };
54
+ const ensureAgentHost = async () => {
55
+ if (!agentHost) {
56
+ agentHost = await createCliAgentHost({ cwd, model: modelId });
57
+ }
58
+ return agentHost;
59
+ };
60
+ const runAgentTurn = async (userText) => {
61
+ const host = await ensureAgentHost();
62
+ const mcpTools = await discoverMcpTools(await loadMcpConfig(cwd), cwd);
63
+ const enriched = await enrichPromptWithFileContext(cwd, userText);
64
+ const spinner = ora({
65
+ text: "Agente…",
66
+ color: "cyan",
67
+ stream: process.stderr,
68
+ }).start();
69
+ const repl = createReplAgentCallbacks(spinner);
70
+ try {
71
+ const roleSystemPrompt = await buildCliRolePromptForCwd(cwd, mcpTools);
72
+ const runResult = await host.agent.run(enriched, repl.callbacks, {
73
+ mcpTools,
74
+ requireToolCallOnFirstStep: true,
75
+ 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.",
76
+ roleSystemPrompt,
77
+ });
78
+ await repl.finish({
79
+ runResult,
80
+ userPrompt: enriched,
81
+ history: host.agent.getHistory(),
82
+ provider,
83
+ });
84
+ }
85
+ catch (e) {
86
+ spinner.stop();
87
+ console.error(c.err(formatReplError(e)) + "\n");
88
+ }
89
+ };
90
+ const runChatTurn = async (userText) => {
91
+ history.push({ role: "user", content: userText });
92
+ const spinner = ora({
93
+ text: "Generazione…",
94
+ color: "cyan",
95
+ stream: process.stderr,
96
+ }).start();
97
+ let started = false;
98
+ let assistantText = "";
99
+ try {
100
+ assistantText = await streamCliChat(provider, history, (delta) => {
101
+ if (!started) {
102
+ spinner.stop();
103
+ process.stdout.write(c.assistant(""));
104
+ started = true;
105
+ }
106
+ process.stdout.write(delta);
107
+ }, { maxTokens: maxTokensForIntensity(intensity) });
108
+ if (!started) {
109
+ spinner.stop();
110
+ process.stdout.write(c.assistant(assistantText || "(nessuna risposta)"));
111
+ }
112
+ process.stdout.write("\n\n");
113
+ history.push({ role: "assistant", content: assistantText });
114
+ }
115
+ catch (e) {
116
+ spinner.stop();
117
+ console.error(c.err(formatReplError(e)) + "\n");
118
+ history.pop();
119
+ }
120
+ };
121
+ const isClaudeCodeMarketingPaste = (text) => text.length > 5000 && /claude\s+code/i.test(text);
122
+ const isShellCliInvocation = (text) => /^(?:pnpm|npm|yarn|node|npx)\b/i.test(text) &&
123
+ /\beucoder\b|apps\/cli\/dist/i.test(text);
124
+ const prepareUserInput = (raw) => {
125
+ const trimmed = raw.trim();
126
+ if (!trimmed)
127
+ return null;
128
+ if (isShellCliInvocation(trimmed)) {
129
+ console.log(c.warn("Sembra un comando shell per avviare EUCoder — sei già nella REPL. Scrivi il task (es. git status: riassumi) oppure esci e usa: eucoder agent \"…\"\n"));
130
+ return null;
131
+ }
132
+ if (isClaudeCodeMarketingPaste(trimmed)) {
133
+ console.log(c.warn("Testo lungo tipo documentazione Claude Code — usa /compact e poi un task concreto nel repo.\n"));
134
+ console.log(c.assistant("Ho letto il testo. Dimmi un task concreto nel repo.") +
135
+ "\n");
136
+ return null;
137
+ }
138
+ const { text, truncated } = clampUserMessage(trimmed);
139
+ if (truncated) {
140
+ console.log(c.warn("Messaggio molto lungo — troncato. Incolla in un file e menziona @percorso se serve.\n"));
141
+ }
142
+ return text;
143
+ };
144
+ const runTurn = async (userText) => {
145
+ const prepared = prepareUserInput(userText);
146
+ if (!prepared)
147
+ return;
148
+ if (agentMode)
149
+ await runAgentTurn(prepared);
150
+ else
151
+ await runChatTurn(prepared);
152
+ };
153
+ const applyIntensity = async (mode) => {
154
+ if (!mode || !parseIntensity(mode)) {
155
+ console.log(c.err("Intensità non valida. Usa: veloce, bilanciato o profondo.\n"));
156
+ return true;
157
+ }
158
+ intensity = mode;
159
+ await saveIntensity(mode);
160
+ console.log(c.ok(`Intensità: ${intensityLabel(intensity)}\n`));
161
+ return true;
162
+ };
163
+ const handleSlashCommand = async (line) => {
164
+ const trimmed = line.trim();
165
+ const [cmd, ...rest] = trimmed.slice(1).split(/\s+/);
166
+ const arg = rest.join(" ").trim();
167
+ switch (cmd.toLowerCase()) {
168
+ case "help":
169
+ case "h":
170
+ printReplHelp(agentMode);
171
+ return true;
172
+ case "exit":
173
+ case "quit":
174
+ return false;
175
+ case "clear":
176
+ case "compact":
177
+ if (agentMode && agentHost) {
178
+ agentHost.agent.reset();
179
+ }
180
+ else {
181
+ history.splice(1);
182
+ }
183
+ console.log(c.ok("Cronologia cancellata.\n"));
184
+ return true;
185
+ case "init":
186
+ await runInitCommand(cwd);
187
+ return true;
188
+ case "model":
189
+ if (!arg) {
190
+ console.log(c.warn(`Modello attuale: ${modelId}\n`));
191
+ return true;
192
+ }
193
+ try {
194
+ const { groups } = await loadSelectableModelGroups();
195
+ const next = resolveModelFromInput(arg, groups);
196
+ if (!next) {
197
+ console.log(c.err(`Modello non trovato: ${arg}\n`));
198
+ return true;
199
+ }
200
+ modelId = next;
201
+ await saveCliConfigFile({ model: modelId });
202
+ refreshProvider();
203
+ await cleanupAgentHost();
204
+ console.log(c.ok(`Modello impostato: ${modelDisplayName(modelId, groups)} (${modelId})\n`));
205
+ }
206
+ catch (e) {
207
+ console.log(c.err(`${e instanceof Error ? e.message : String(e)}\n`));
208
+ }
209
+ return true;
210
+ case "models":
211
+ try {
212
+ const { groups, hint } = await loadSelectableModelGroups();
213
+ printModelGroups(groups, modelId, hint);
214
+ console.log("");
215
+ }
216
+ catch (e) {
217
+ console.log(c.err(`${e instanceof Error ? e.message : String(e)}\n`));
218
+ }
219
+ return true;
220
+ case "intensity":
221
+ if (!arg) {
222
+ console.log(c.warn(`Intensità attuale: ${intensityLabel(intensity)}\n`));
223
+ return true;
224
+ }
225
+ return applyIntensity(parseIntensity(arg) ?? arg);
226
+ case "fast":
227
+ case "veloce":
228
+ return applyIntensity("veloce");
229
+ case "balanced":
230
+ case "bilanciato":
231
+ return applyIntensity("bilanciato");
232
+ case "deep":
233
+ case "profondo":
234
+ return applyIntensity("profondo");
235
+ case "agent":
236
+ if (!agentMode) {
237
+ console.log(c.warn("Comando /agent richiede modalità progetto.\n"));
238
+ return true;
239
+ }
240
+ if (!arg) {
241
+ console.log(c.warn("Uso: /agent <task>\n"));
242
+ return true;
243
+ }
244
+ console.log(c.dim("Sub-agent in esecuzione…\n"));
245
+ try {
246
+ const summary = await delegateAgentTask(arg, { cwd, model: modelId });
247
+ console.log(c.assistant(summary) + "\n");
248
+ }
249
+ catch (e) {
250
+ console.log(c.err(`${e instanceof Error ? e.message : String(e)}\n`));
251
+ }
252
+ return true;
253
+ case "background":
254
+ case "bg":
255
+ if (!agentMode) {
256
+ console.log(c.warn("Comando /background richiede modalità progetto.\n"));
257
+ return true;
258
+ }
259
+ if (!arg) {
260
+ console.log(c.warn("Uso: /background <task>\n"));
261
+ return true;
262
+ }
263
+ {
264
+ const job = startBackgroundAgent(arg, cwd, modelId);
265
+ if (!job) {
266
+ console.log(c.warn("Un job è già in esecuzione — usa /tasks per lo stato.\n"));
267
+ }
268
+ else {
269
+ console.log(c.ok(`Job avviato: ${job.id}\n`));
270
+ }
271
+ }
272
+ return true;
273
+ case "tasks":
274
+ {
275
+ const job = getBackgroundJob();
276
+ if (!job) {
277
+ console.log(c.dim("Nessun job in background.\n"));
278
+ }
279
+ else {
280
+ console.log(`${job.id} · ${job.status} · ${job.task.slice(0, 60)}\n` +
281
+ c.dim(job.summary.slice(0, 500) + "\n"));
282
+ }
283
+ }
284
+ return true;
285
+ case "diff":
286
+ if (!agentMode) {
287
+ console.log(c.warn("Comando /diff richiede modalità progetto.\n"));
288
+ return true;
289
+ }
290
+ printGitDiff(cwd);
291
+ return true;
292
+ case "code-review":
293
+ case "review": {
294
+ if (!agentMode) {
295
+ console.log(c.warn("Comando /code-review richiede modalità progetto.\n"));
296
+ return true;
297
+ }
298
+ const applyFixes = /\b--fix\b/.test(arg);
299
+ const spinner = ora({
300
+ text: "Code review…",
301
+ color: "cyan",
302
+ stream: process.stderr,
303
+ }).start();
304
+ try {
305
+ const review = await runCodeReview({
306
+ cwd,
307
+ model: modelId,
308
+ applyFixes,
309
+ });
310
+ spinner.stop();
311
+ console.log(c.assistant(review) + "\n");
312
+ }
313
+ catch (e) {
314
+ spinner.stop();
315
+ console.log(c.err(`${e instanceof Error ? e.message : String(e)}\n`));
316
+ }
317
+ return true;
318
+ }
319
+ case "memory":
320
+ if (!arg) {
321
+ console.log(c.warn("Uso: /memory <nota da ricordare>\n"));
322
+ return true;
323
+ }
324
+ try {
325
+ const file = await appendProjectMemory(cwd, arg);
326
+ console.log(c.ok(`Memoria salvata in ${file}\n`));
327
+ }
328
+ catch (e) {
329
+ console.log(c.err(`${e instanceof Error ? e.message : String(e)}\n`));
330
+ }
331
+ return true;
332
+ case "plan":
333
+ if (!arg) {
334
+ console.log(c.warn("Uso: /plan <task di analisi>\n"));
335
+ return true;
336
+ }
337
+ console.log(c.dim("Plan mode — solo lettura, niente modifiche.\n"));
338
+ try {
339
+ await runPlanCommand(arg, { cwd, model: modelId });
340
+ }
341
+ catch (e) {
342
+ console.log(c.err(`${e instanceof Error ? e.message : String(e)}\n`));
343
+ }
344
+ return true;
345
+ case "mcp":
346
+ if (arg === "list" || !arg) {
347
+ const { runMcpListCommand } = await import("./mcp.js");
348
+ await runMcpListCommand(cwd);
349
+ }
350
+ else if (arg === "test") {
351
+ const { runMcpTestCommand } = await import("./mcp.js");
352
+ await runMcpTestCommand(cwd);
353
+ }
354
+ else {
355
+ console.log(c.warn("Uso: /mcp list | /mcp test\n"));
356
+ }
357
+ return true;
358
+ default:
359
+ console.log(c.warn(`Comando sconosciuto: /${cmd} — digita /help\n`));
360
+ return true;
361
+ }
362
+ };
363
+ if (opts.once?.trim()) {
364
+ await runTurn(opts.once.trim());
365
+ await cleanupAgentHost();
366
+ return;
367
+ }
368
+ if (agentMode) {
369
+ console.log(c.dim(`Modalità agent attiva · ${cwd} · menziona @src/file.ts per contesto file\n`));
370
+ }
371
+ return new Promise((resolvePromise) => {
372
+ const rl = readline.createInterface({ input, output, terminal: true });
373
+ const showPrompt = () => {
374
+ rl.setPrompt(formatStatusPrompt(modelId, intensity, agentMode));
375
+ rl.prompt();
376
+ };
377
+ rl.on("SIGINT", () => {
378
+ process.stdout.write("\n");
379
+ rl.close();
380
+ });
381
+ rl.on("line", (line) => {
382
+ if (turnInFlight) {
383
+ console.log(c.warn("Agente occupato — attendi la fine della risposta.\n"));
384
+ showPrompt();
385
+ return;
386
+ }
387
+ rl.pause();
388
+ void (async () => {
389
+ const trimmed = line.trim();
390
+ if (!trimmed) {
391
+ rl.resume();
392
+ showPrompt();
393
+ return;
394
+ }
395
+ if (trimmed.startsWith("/")) {
396
+ const cont = await handleSlashCommand(trimmed);
397
+ if (!cont) {
398
+ rl.close();
399
+ return;
400
+ }
401
+ rl.resume();
402
+ showPrompt();
403
+ return;
404
+ }
405
+ turnInFlight = true;
406
+ try {
407
+ await runTurn(trimmed);
408
+ }
409
+ finally {
410
+ turnInFlight = false;
411
+ rl.resume();
412
+ showPrompt();
413
+ }
414
+ })();
415
+ });
416
+ rl.on("close", () => {
417
+ void (async () => {
418
+ await cleanupAgentHost();
419
+ process.stdout.write("\n");
420
+ resolvePromise();
421
+ })();
422
+ });
423
+ showPrompt();
424
+ });
425
+ }
426
+ //# sourceMappingURL=chat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/commands/chat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function runDbCommand(opts: {
2
+ cwd?: string;
3
+ path?: string;
4
+ sql?: string;
5
+ }): Promise<void>;
6
+ //# sourceMappingURL=db.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/commands/db.ts"],"names":[],"mappings":"AAGA,wBAAsB,YAAY,CAAC,IAAI,EAAE;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBhB"}
@@ -0,0 +1,17 @@
1
+ import { resolve } from "node:path";
2
+ import { c } from "../ui.js";
3
+ export async function runDbCommand(opts) {
4
+ const cwd = resolve(opts.cwd ?? process.cwd());
5
+ const dbPath = opts.path;
6
+ const sql = opts.sql;
7
+ if (!dbPath || !sql) {
8
+ console.log(c.warn("Uso: eucoder db --path ./data/app.db --sql \"SELECT * FROM users LIMIT 5\"\n" +
9
+ "Solo SELECT in sola lettura.\n"));
10
+ return;
11
+ }
12
+ const { querySqliteFile } = await import("../sqliteQuery.js");
13
+ const abs = resolve(cwd, dbPath);
14
+ const out = querySqliteFile(abs, sql);
15
+ console.log(out + "\n");
16
+ }
17
+ //# sourceMappingURL=db.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/commands/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAE7B,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAIlC;IACC,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;IACzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IAErB,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CACT,CAAC,CAAC,IAAI,CACJ,8EAA8E;YAC5E,gCAAgC,CACnC,CACF,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function runDockerCommand(sub: string | undefined, opts: {
2
+ cwd?: string;
3
+ args?: string[];
4
+ }): Promise<void>;
5
+ //# sourceMappingURL=docker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../src/commands/docker.ts"],"names":[],"mappings":"AAcA,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GACtC,OAAO,CAAC,IAAI,CAAC,CA6Bf"}