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,35 @@
1
+ import { resolve } from "node:path";
2
+ import { spawnSync } from "node:child_process";
3
+ import { isDockerCommandAllowed } from "@eucode/agent";
4
+ import { c } from "../ui.js";
5
+ const DOCKER_SUBCOMMANDS = {
6
+ ps: "docker ps",
7
+ images: "docker images",
8
+ up: "docker compose up -d",
9
+ down: "docker compose down",
10
+ logs: "docker compose logs --tail=50",
11
+ compose: "docker compose ps",
12
+ };
13
+ export async function runDockerCommand(sub, opts) {
14
+ const cwd = resolve(opts.cwd ?? process.cwd());
15
+ const key = (sub ?? "ps").toLowerCase();
16
+ let command = DOCKER_SUBCOMMANDS[key];
17
+ if (!command) {
18
+ console.error(c.err(`Sottocomando sconosciuto: ${sub}\n` +
19
+ "Usa: ps, images, up, down, logs, compose\n"));
20
+ process.exitCode = 1;
21
+ return;
22
+ }
23
+ if (opts.args?.length) {
24
+ command = `${command} ${opts.args.join(" ")}`;
25
+ }
26
+ if (!isDockerCommandAllowed(command)) {
27
+ console.error(c.err(`Comando Docker non consentito: ${command}\n`));
28
+ process.exitCode = 1;
29
+ return;
30
+ }
31
+ console.log(c.dim(`$ ${command}\n`));
32
+ const result = spawnSync(command, { shell: true, cwd, stdio: "inherit" });
33
+ process.exitCode = result.status ?? 1;
34
+ }
35
+ //# sourceMappingURL=docker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/commands/docker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAE7B,MAAM,kBAAkB,GAA2B;IACjD,EAAE,EAAE,WAAW;IACf,MAAM,EAAE,eAAe;IACvB,EAAE,EAAE,sBAAsB;IAC1B,IAAI,EAAE,qBAAqB;IAC3B,IAAI,EAAE,+BAA+B;IACrC,OAAO,EAAE,mBAAmB;CAC7B,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAuB,EACvB,IAAuC;IAEvC,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IACxC,IAAI,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAEtC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CACX,CAAC,CAAC,GAAG,CACH,6BAA6B,GAAG,IAAI;YAClC,4CAA4C,CAC/C,CACF,CAAC;QACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QACtB,OAAO,GAAG,GAAG,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAChD,CAAC;IAED,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,kCAAkC,OAAO,IAAI,CAAC,CAAC,CAAC;QACpE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC1E,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;AACxC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const AGENTS_MD_TEMPLATE = "# AGENTS.md\n\nRegole di progetto per l'agente EUCoder. Modifica liberamente \u2014 vengono\ncaricate automaticamente in ogni richiesta agent per questa cartella.\n\n## Stack\n- (framework, linguaggio e librerie principali)\n\n## Convenzioni\n- (stile di codice, naming, struttura cartelle)\n\n## Da fare\n- (pattern preferiti, comandi da eseguire, test da mantenere verdi)\n\n## Da evitare\n- (anti-pattern, file da non toccare, azioni distruttive da evitare)\n";
2
+ export declare function runInitCommand(cwd: string): Promise<void>;
3
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,kBAAkB,mdAgB9B,CAAC;AAEF,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAc/D"}
@@ -0,0 +1,34 @@
1
+ import { access, writeFile } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ import { c } from "../ui.js";
4
+ export const AGENTS_MD_TEMPLATE = `# AGENTS.md
5
+
6
+ Regole di progetto per l'agente EUCoder. Modifica liberamente — vengono
7
+ caricate automaticamente in ogni richiesta agent per questa cartella.
8
+
9
+ ## Stack
10
+ - (framework, linguaggio e librerie principali)
11
+
12
+ ## Convenzioni
13
+ - (stile di codice, naming, struttura cartelle)
14
+
15
+ ## Da fare
16
+ - (pattern preferiti, comandi da eseguire, test da mantenere verdi)
17
+
18
+ ## Da evitare
19
+ - (anti-pattern, file da non toccare, azioni distruttive da evitare)
20
+ `;
21
+ export async function runInitCommand(cwd) {
22
+ const target = join(cwd, "AGENTS.md");
23
+ try {
24
+ await access(target);
25
+ console.log(c.warn("`AGENTS.md` esiste già — le regole vengono caricate automaticamente.\n"));
26
+ return;
27
+ }
28
+ catch {
29
+ /* create */
30
+ }
31
+ await writeFile(target, AGENTS_MD_TEMPLATE, "utf8");
32
+ console.log(c.ok("Creato `AGENTS.md`. Personalizzalo per questo progetto.\n"));
33
+ }
34
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAE7B,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;CAgBjC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAW;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACtC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;QACrB,OAAO,CAAC,GAAG,CACT,CAAC,CAAC,IAAI,CAAC,wEAAwE,CAAC,CACjF,CAAC;QACF,OAAO;IACT,CAAC;IAAC,MAAM,CAAC;QACP,YAAY;IACd,CAAC;IAED,MAAM,SAAS,CAAC,MAAM,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,2DAA2D,CAAC,CAAC,CAAC;AACjF,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function runLoginCommand(opts: {
2
+ token?: string;
3
+ apiUrl?: string;
4
+ }): Promise<void>;
5
+ //# sourceMappingURL=login.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAMA,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BhB"}
@@ -0,0 +1,32 @@
1
+ import * as readline from "node:readline/promises";
2
+ import { stdin as input, stdout as output } from "node:process";
3
+ import { EUCODE_CLOUD_API_URL } from "@eucode/shared";
4
+ import { configPath, saveCliConfigFile } from "../config.js";
5
+ import { c } from "../ui.js";
6
+ export async function runLoginCommand(opts) {
7
+ const rl = readline.createInterface({ input, output });
8
+ try {
9
+ let token = opts.token?.trim();
10
+ if (!token) {
11
+ token = (await rl.question("Token API (Bearer): ")).trim();
12
+ }
13
+ if (!token) {
14
+ console.error(c.err("Token obbligatorio."));
15
+ process.exitCode = 1;
16
+ return;
17
+ }
18
+ let apiUrl = opts.apiUrl?.trim() || EUCODE_CLOUD_API_URL;
19
+ if (!opts.apiUrl) {
20
+ const urlInput = (await rl.question(`URL API [${EUCODE_CLOUD_API_URL}]: `)).trim();
21
+ if (urlInput)
22
+ apiUrl = urlInput.replace(/\/$/, "");
23
+ }
24
+ await saveCliConfigFile({ apiToken: token, apiUrl });
25
+ console.log(c.accent(`✓ Credenziali salvate in ${configPath()}`));
26
+ console.log(c.dim("Usa `eucoder models` per verificare la connessione."));
27
+ }
28
+ finally {
29
+ rl.close();
30
+ }
31
+ }
32
+ //# sourceMappingURL=login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,KAAK,IAAI,KAAK,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAE7B,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAGrC;IACC,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IACvD,IAAI,CAAC;QACH,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7D,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAC5C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,oBAAoB,CAAC;QACzD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,QAAQ,GAAG,CACf,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,oBAAoB,KAAK,CAAC,CACzD,CAAC,IAAI,EAAE,CAAC;YACT,IAAI,QAAQ;gBAAE,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,iBAAiB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,4BAA4B,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC,CAAC;IAC5E,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function runMcpListCommand(cwd: string): Promise<void>;
2
+ export declare function runMcpTestCommand(cwd: string, serverName?: string): Promise<void>;
3
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAQA,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkClE;AAED,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAoCf"}
@@ -0,0 +1,65 @@
1
+ import { resolve } from "node:path";
2
+ import { discoverMcpTools, resolveMcpServers, } from "@eucode/agent";
3
+ import { loadMcpConfig } from "../mcpConfig.js";
4
+ import { c } from "../ui.js";
5
+ export async function runMcpListCommand(cwd) {
6
+ const config = await loadMcpConfig(cwd);
7
+ const servers = resolveMcpServers(config, cwd);
8
+ const names = Object.keys(servers);
9
+ if (!names.length) {
10
+ console.log(c.warn("Nessun server MCP configurato.\n" +
11
+ "Aggiungi ~/.config/eucoder/mcp.json o .eucode/mcp.json\n"));
12
+ return;
13
+ }
14
+ console.log(c.ok(`Server MCP (${names.length}):\n`));
15
+ for (const name of names) {
16
+ const srv = servers[name];
17
+ const cmd = [srv.command, ...(srv.args ?? [])].join(" ");
18
+ console.log(` ${c.accent(name)}`);
19
+ console.log(c.dim(` ${cmd}\n`));
20
+ }
21
+ const tools = await discoverMcpTools(config, cwd);
22
+ if (tools.length) {
23
+ console.log(c.ok(`Tool scoperti (${tools.length}):`));
24
+ for (const t of tools.slice(0, 40)) {
25
+ console.log(` • ${t.name}`);
26
+ }
27
+ if (tools.length > 40) {
28
+ console.log(c.dim(` … +${tools.length - 40} altri`));
29
+ }
30
+ console.log("");
31
+ }
32
+ }
33
+ export async function runMcpTestCommand(cwd, serverName) {
34
+ const config = await loadMcpConfig(cwd);
35
+ const servers = resolveMcpServers(config, cwd);
36
+ const names = Object.keys(servers);
37
+ if (!names.length) {
38
+ console.error(c.err("Nessun server MCP da testare.\n"));
39
+ process.exitCode = 1;
40
+ return;
41
+ }
42
+ const toTest = serverName
43
+ ? names.filter((n) => n === serverName)
44
+ : names;
45
+ if (serverName && !toTest.length) {
46
+ console.error(c.err(`Server non trovato: ${serverName}\n`));
47
+ process.exitCode = 1;
48
+ return;
49
+ }
50
+ for (const name of toTest) {
51
+ process.stdout.write(`Test ${name}… `);
52
+ try {
53
+ const subset = { mcpServers: { [name]: servers[name] } };
54
+ const tools = await discoverMcpTools(subset, resolve(cwd));
55
+ console.log(c.ok(`OK (${tools.length} tool)`));
56
+ }
57
+ catch (e) {
58
+ console.log(c.err("FAIL"));
59
+ console.error(c.dim(` ${e instanceof Error ? e.message : String(e)}\n`));
60
+ process.exitCode = 1;
61
+ }
62
+ }
63
+ console.log("");
64
+ }
65
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAE7B,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,GAAW;IACjD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAEnC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CACT,CAAC,CAAC,IAAI,CACJ,kCAAkC;YAChC,0DAA0D,CAC7D,CACF,CAAC;QACF,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,KAAK,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC;IACrD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClD,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;QACtD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,MAAM,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,GAAW,EACX,UAAmB;IAEnB,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAEnC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,UAAU;QACvB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC;QACvC,CAAC,CAAC,KAAK,CAAC;IAEV,IAAI,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,uBAAuB,UAAU,IAAI,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,EAAE,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAE,EAAE,EAAE,CAAC;YAC1D,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3B,OAAO,CAAC,KAAK,CACX,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAC3D,CAAC;YACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function runModelsCommand(): Promise<void>;
2
+ //# sourceMappingURL=models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/commands/models.ts"],"names":[],"mappings":"AASA,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAuBtD"}
@@ -0,0 +1,30 @@
1
+ import { loadCliConfigFile, resolveApiToken, resolveApiUrl, CLI_GUEST_TOKEN, } from "../config.js";
2
+ import { fetchModels } from "../cloud.js";
3
+ import { c } from "../ui.js";
4
+ export async function runModelsCommand() {
5
+ const file = await loadCliConfigFile();
6
+ const apiUrl = resolveApiUrl(file);
7
+ let token = resolveApiToken(file);
8
+ if (token === CLI_GUEST_TOKEN)
9
+ token = "";
10
+ try {
11
+ const { models, hint } = await fetchModels(apiUrl, token);
12
+ if (!models.length) {
13
+ console.log(c.warn("Nessun modello disponibile."));
14
+ return;
15
+ }
16
+ console.log(c.accent(`Modelli cloud (${models.length}) — ${apiUrl}\n`));
17
+ if (hint)
18
+ console.log(c.dim(`${hint}\n`));
19
+ for (const m of models) {
20
+ const label = m.displayName ?? m.id;
21
+ const provider = m.provider ? c.dim(` · ${m.provider}`) : "";
22
+ console.log(` ${c.accent(m.id)}${provider} ${c.dim(label !== m.id ? label : "")}`);
23
+ }
24
+ }
25
+ catch (e) {
26
+ console.error(c.err(e instanceof Error ? e.message : String(e)));
27
+ process.exitCode = 1;
28
+ }
29
+ }
30
+ //# sourceMappingURL=models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/commands/models.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,eAAe,GAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAE7B,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,MAAM,IAAI,GAAG,MAAM,iBAAiB,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,KAAK,KAAK,eAAe;QAAE,KAAK,GAAG,EAAE,CAAC;IAE1C,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;YACnD,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,MAAM,CAAC,MAAM,OAAO,MAAM,IAAI,CAAC,CAAC,CAAC;QACxE,IAAI,IAAI;YAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC;QAC1C,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function runNewCommand(name: string, opts: {
2
+ template?: string;
3
+ cwd?: string;
4
+ }): Promise<void>;
5
+ //# sourceMappingURL=new.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new.d.ts","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"AAQA,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACxC,OAAO,CAAC,IAAI,CAAC,CAiCf"}
@@ -0,0 +1,31 @@
1
+ import { resolve } from "node:path";
2
+ import { createProjectOnDisk, parseProjectTemplate, } from "../createProject.js";
3
+ import { c } from "../ui.js";
4
+ export async function runNewCommand(name, opts) {
5
+ const folderName = name.trim();
6
+ if (!folderName) {
7
+ console.error(c.err("Specifica un nome: eucoder new mio-sito"));
8
+ process.exitCode = 1;
9
+ return;
10
+ }
11
+ const template = (opts.template
12
+ ? parseProjectTemplate(opts.template)
13
+ : "landing-3d");
14
+ if (opts.template && !template) {
15
+ console.error(c.err(`Template non valido: ${opts.template}. Usa: empty, landing-restaurant, butcher-shop, landing-3d`));
16
+ process.exitCode = 1;
17
+ return;
18
+ }
19
+ const parentDir = resolve(opts.cwd ?? process.cwd());
20
+ try {
21
+ const root = await createProjectOnDisk(parentDir, folderName, template);
22
+ console.log(c.ok(`Progetto creato: ${root}`));
23
+ console.log(c.dim(`Template: ${template}\n`));
24
+ console.log(c.dim(`Prossimo passo: cd ${folderName} && eucoder chat\n`));
25
+ }
26
+ catch (e) {
27
+ console.error(c.err(e instanceof Error ? e.message : String(e)));
28
+ process.exitCode = 1;
29
+ }
30
+ }
31
+ //# sourceMappingURL=new.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAE7B,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAY,EACZ,IAAyC;IAEzC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ;QAC7B,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC;QACrC,CAAC,CAAC,YAAY,CAAsB,CAAC;IAEvC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CACX,CAAC,CAAC,GAAG,CACH,wBAAwB,IAAI,CAAC,QAAQ,4DAA4D,CAClG,CACF,CAAC;QACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAErD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,QAAQ,IAAI,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,sBAAsB,UAAU,oBAAoB,CAAC,CAAC,CAAC;IAC3E,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare function runPlanCommand(task: string, opts: {
2
+ model?: string;
3
+ cwd?: string;
4
+ maxSteps?: number;
5
+ }): Promise<void>;
6
+ //# sourceMappingURL=plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":"AAwBA,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IACJ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,OAAO,CAAC,IAAI,CAAC,CAsEf"}
@@ -0,0 +1,82 @@
1
+ import { resolve } from "node:path";
2
+ import ora from "ora";
3
+ import { createCliAgentHost } from "../agentHost.js";
4
+ import { formatReplError } from "../cliErrors.js";
5
+ import { enrichPromptWithFileContext } from "../fileContext.js";
6
+ import { createReplAgentCallbacks } from "../replOutput.js";
7
+ import { createCliCloudProvider } from "../cloud.js";
8
+ import { buildEucodeConfig, loadCliConfigFile } from "../config.js";
9
+ import { discoverMcpTools } from "@eucode/agent";
10
+ import { loadMcpConfig } from "../mcpConfig.js";
11
+ import { c } from "../ui.js";
12
+ const PLAN_ALLOWED_TOOLS = [
13
+ "read",
14
+ "glob",
15
+ "grep",
16
+ "codebase_search",
17
+ "list_files",
18
+ "read_file",
19
+ "webfetch",
20
+ "web_fetch",
21
+ "git",
22
+ ];
23
+ export async function runPlanCommand(task, opts) {
24
+ if (!task.trim()) {
25
+ console.error(c.err('Specifica un task: eucoder plan "analizza il codice"'));
26
+ process.exitCode = 1;
27
+ return;
28
+ }
29
+ const cwd = resolve(opts.cwd ?? process.cwd());
30
+ const host = await createCliAgentHost({
31
+ cwd,
32
+ model: opts.model,
33
+ maxSteps: opts.maxSteps ?? 12,
34
+ });
35
+ const mcpConfig = await loadMcpConfig(cwd);
36
+ const mcpTools = await discoverMcpTools(mcpConfig, cwd);
37
+ console.log(c.dim(`Plan mode · ${host.modelId} · ${cwd}\n`));
38
+ console.log(c.user(task) + "\n");
39
+ const spinner = ora({
40
+ text: "Analisi in corso…",
41
+ color: "yellow",
42
+ stream: process.stderr,
43
+ }).start();
44
+ const repl = createReplAgentCallbacks(spinner);
45
+ const file = await loadCliConfigFile();
46
+ const provider = createCliCloudProvider(buildEucodeConfig(file, host.modelId), host.modelId);
47
+ const roleSystemPrompt = `Sei in PLAN MODE — analisi e pianificazione senza modifiche.
48
+ Puoi usare solo tool di lettura: read, glob, grep, codebase_search, webfetch, git.
49
+ NON puoi scrivere file, modificare codice o eseguire comandi shell.
50
+ Fornisci un'analisi chiara e un piano d'azione dettagliato
51
+ che l'utente o un altro agente potrà eseguire successivamente.`;
52
+ try {
53
+ const enriched = await enrichPromptWithFileContext(cwd, task);
54
+ const runResult = await host.agent.run(enriched, {
55
+ ...repl.callbacks,
56
+ onStep: (step, max) => {
57
+ spinner.text = `Step ${step}/${max}…`;
58
+ },
59
+ }, {
60
+ mcpTools,
61
+ allowedTools: PLAN_ALLOWED_TOOLS,
62
+ requireToolCallOnFirstStep: true,
63
+ toolCallNudge: "Sei in plan mode. Usa read, glob, grep, codebase_search, webfetch e git per analizzare il codice. Non scrivere o modificare nulla.",
64
+ roleSystemPrompt,
65
+ });
66
+ await repl.finish({
67
+ runResult,
68
+ userPrompt: enriched,
69
+ history: host.agent.getHistory(),
70
+ provider,
71
+ });
72
+ }
73
+ catch (e) {
74
+ spinner.stop();
75
+ console.error(c.err(formatReplError(e)) + "\n");
76
+ process.exitCode = 1;
77
+ }
78
+ finally {
79
+ await host.disconnect();
80
+ }
81
+ }
82
+ //# sourceMappingURL=plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function runPrCommand(opts: {
2
+ cwd?: string;
3
+ title?: string;
4
+ body?: string;
5
+ }): Promise<void>;
6
+ //# sourceMappingURL=pr.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pr.d.ts","sourceRoot":"","sources":["../../src/commands/pr.ts"],"names":[],"mappings":"AAIA,wBAAsB,YAAY,CAAC,IAAI,EAAE;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,IAAI,CAAC,CAgChB"}
@@ -0,0 +1,29 @@
1
+ import { resolve } from "node:path";
2
+ import { spawnSync } from "node:child_process";
3
+ import { c } from "../ui.js";
4
+ export async function runPrCommand(opts) {
5
+ const cwd = resolve(opts.cwd ?? process.cwd());
6
+ const ghCheck = spawnSync("gh", ["--version"], { encoding: "utf8" });
7
+ if (ghCheck.error?.message.includes("ENOENT")) {
8
+ console.log(c.warn("GitHub CLI (gh) non installato.\n\n" +
9
+ "1. Installa: https://cli.github.com/\n" +
10
+ "2. gh auth login\n" +
11
+ "3. git push -u origin HEAD\n" +
12
+ "4. gh pr create --fill\n"));
13
+ return;
14
+ }
15
+ const args = ["pr", "create"];
16
+ if (opts.title)
17
+ args.push("--title", opts.title);
18
+ if (opts.body)
19
+ args.push("--body", opts.body);
20
+ if (!opts.title && !opts.body)
21
+ args.push("--fill");
22
+ console.log(c.dim(`$ gh ${args.join(" ")}\n`));
23
+ const result = spawnSync("gh", args, { cwd, stdio: "inherit" });
24
+ if (result.status !== 0) {
25
+ console.log(c.dim("\nSuggerimento: verifica branch pushato, gh auth status, remote origin.\n"));
26
+ process.exitCode = result.status ?? 1;
27
+ }
28
+ }
29
+ //# sourceMappingURL=pr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pr.js","sourceRoot":"","sources":["../../src/commands/pr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,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;IAE/C,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACrE,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9C,OAAO,CAAC,GAAG,CACT,CAAC,CAAC,IAAI,CACJ,qCAAqC;YACnC,wCAAwC;YACxC,oBAAoB;YACpB,8BAA8B;YAC9B,0BAA0B,CAC7B,CACF,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9B,IAAI,IAAI,CAAC,KAAK;QAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,IAAI,CAAC,IAAI;QAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI;QAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEnD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAChE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CACT,CAAC,CAAC,GAAG,CACH,2EAA2E,CAC5E,CACF,CAAC;QACF,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;IACxC,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function runTestCommand(opts: {
2
+ cwd?: string;
3
+ filter?: string;
4
+ }): Promise<void>;
5
+ //# sourceMappingURL=test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"AAwBA,wBAAsB,cAAc,CAAC,IAAI,EAAE;IACzC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiChB"}
@@ -0,0 +1,49 @@
1
+ import { existsSync } from "node:fs";
2
+ import { readFile } from "node:fs/promises";
3
+ import { join, resolve } from "node:path";
4
+ import { spawnSync } from "node:child_process";
5
+ import { c } from "../ui.js";
6
+ async function readPackageJson(cwd) {
7
+ try {
8
+ const raw = await readFile(join(cwd, "package.json"), "utf8");
9
+ return JSON.parse(raw);
10
+ }
11
+ catch {
12
+ return null;
13
+ }
14
+ }
15
+ function isMonorepo(cwd) {
16
+ return existsSync(join(cwd, "pnpm-workspace.yaml"));
17
+ }
18
+ export async function runTestCommand(opts) {
19
+ const cwd = resolve(opts.cwd ?? process.cwd());
20
+ const pkg = await readPackageJson(cwd);
21
+ let command;
22
+ if (opts.filter) {
23
+ command = `pnpm test --filter ${opts.filter}`;
24
+ }
25
+ else if (pkg?.scripts?.test) {
26
+ const pkgName = pkg.name;
27
+ command =
28
+ isMonorepo(cwd) && pkgName?.startsWith("@")
29
+ ? `pnpm test --filter ${pkgName}`
30
+ : "pnpm test";
31
+ }
32
+ else if (isMonorepo(cwd)) {
33
+ command = "pnpm test";
34
+ }
35
+ else {
36
+ console.error(c.err('Nessuno script test in package.json. Aggiungi "test" o usa --filter.\n'));
37
+ process.exitCode = 1;
38
+ return;
39
+ }
40
+ console.log(c.dim(`$ ${command}\n`));
41
+ const result = spawnSync(command, {
42
+ shell: true,
43
+ cwd,
44
+ stdio: "inherit",
45
+ env: process.env,
46
+ });
47
+ process.exitCode = result.status ?? 1;
48
+ }
49
+ //# sourceMappingURL=test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,CAAC,EAAE,MAAM,UAAU,CAAC;AAO7B,KAAK,UAAU,eAAe,CAAC,GAAW;IACxC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAGpC;IACC,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;IAEvC,IAAI,OAAe,CAAC;IACpB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,GAAG,sBAAsB,IAAI,CAAC,MAAM,EAAE,CAAC;IAChD,CAAC;SAAM,IAAI,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC;QACzB,OAAO;YACL,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC;gBACzC,CAAC,CAAC,sBAAsB,OAAO,EAAE;gBACjC,CAAC,CAAC,WAAW,CAAC;IACpB,CAAC;SAAM,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,GAAG,WAAW,CAAC;IACxB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CACX,CAAC,CAAC,GAAG,CACH,wEAAwE,CACzE,CACF,CAAC;QACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE;QAChC,KAAK,EAAE,IAAI;QACX,GAAG;QACH,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB,CAAC,CAAC;IACH,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;AACxC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { type EucodeConfig } from "@eucode/shared";
2
+ export declare const CLI_GUEST_TOKEN = "eucode-dev";
3
+ export declare const CLI_DEFAULT_MODEL = "groq-llama4-scout";
4
+ export interface CliConfigFile {
5
+ apiToken?: string;
6
+ apiUrl?: string;
7
+ model?: string;
8
+ email?: string;
9
+ intensity?: "veloce" | "bilanciato" | "profondo";
10
+ }
11
+ export declare function loadCliConfigFile(): Promise<CliConfigFile>;
12
+ export declare function saveCliConfigFile(partial: CliConfigFile): Promise<void>;
13
+ export declare function resolveApiToken(file: CliConfigFile): string;
14
+ export declare function resolveApiUrl(file: CliConfigFile): string;
15
+ export declare function resolveModel(file: CliConfigFile, override?: string): string;
16
+ export declare function buildEucodeConfig(file: CliConfigFile, modelId: string): EucodeConfig;
17
+ export declare function configPath(): string;
18
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,gBAAgB,CAAC;AAExB,eAAO,MAAM,eAAe,eAAe,CAAC;AAC5C,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AAKrD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,QAAQ,GAAG,YAAY,GAAG,UAAU,CAAC;CAClD;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,aAAa,CAAC,CAOhE;AAED,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAK7E;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAM3D;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAMzD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAM3E;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY,CAmBpF;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC"}
package/dist/config.js ADDED
@@ -0,0 +1,75 @@
1
+ import { mkdir, readFile, writeFile } from "node:fs/promises";
2
+ import { homedir } from "node:os";
3
+ import { join } from "node:path";
4
+ import { DEFAULT_CONFIG, EUCODE_CLOUD_API_URL, } from "@eucode/shared";
5
+ export const CLI_GUEST_TOKEN = "eucode-dev";
6
+ export const CLI_DEFAULT_MODEL = "groq-llama4-scout";
7
+ const CONFIG_DIR = join(homedir(), ".config", "eucoder");
8
+ const CONFIG_FILE = join(CONFIG_DIR, "config.json");
9
+ export async function loadCliConfigFile() {
10
+ try {
11
+ const raw = await readFile(CONFIG_FILE, "utf8");
12
+ return JSON.parse(raw);
13
+ }
14
+ catch {
15
+ return {};
16
+ }
17
+ }
18
+ export async function saveCliConfigFile(partial) {
19
+ const current = await loadCliConfigFile();
20
+ const next = { ...current, ...partial };
21
+ await mkdir(CONFIG_DIR, { recursive: true });
22
+ await writeFile(CONFIG_FILE, `${JSON.stringify(next, null, 2)}\n`, "utf8");
23
+ }
24
+ export function resolveApiToken(file) {
25
+ const env = process.env.EUCODER_TOKEN?.trim();
26
+ if (env)
27
+ return env;
28
+ const fileToken = file.apiToken?.trim();
29
+ if (fileToken)
30
+ return fileToken;
31
+ return CLI_GUEST_TOKEN;
32
+ }
33
+ export function resolveApiUrl(file) {
34
+ const env = process.env.EUCODER_API_URL?.trim();
35
+ if (env)
36
+ return env.replace(/\/$/, "");
37
+ const fileUrl = file.apiUrl?.trim();
38
+ if (fileUrl)
39
+ return fileUrl.replace(/\/$/, "");
40
+ return EUCODE_CLOUD_API_URL;
41
+ }
42
+ export function resolveModel(file, override) {
43
+ const env = process.env.EUCODER_MODEL?.trim();
44
+ if (override?.trim())
45
+ return override.trim();
46
+ if (env)
47
+ return env;
48
+ if (file.model?.trim())
49
+ return file.model.trim();
50
+ return CLI_DEFAULT_MODEL;
51
+ }
52
+ export function buildEucodeConfig(file, modelId) {
53
+ return {
54
+ ...DEFAULT_CONFIG,
55
+ mode: "cloud-subscription",
56
+ cloud: {
57
+ ...DEFAULT_CONFIG.cloud,
58
+ model: modelId,
59
+ },
60
+ subscription: {
61
+ apiUrl: resolveApiUrl(file),
62
+ token: resolveApiToken(file),
63
+ },
64
+ agent: {
65
+ ...DEFAULT_CONFIG.agent,
66
+ maxSteps: 24,
67
+ allowTerminal: process.env.EUCODE_ALLOW_TERMINAL !== "0",
68
+ confirmEdits: false,
69
+ },
70
+ };
71
+ }
72
+ export function configPath() {
73
+ return CONFIG_FILE;
74
+ }
75
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}