@llmtune/cli 0.1.8 → 0.2.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 (194) hide show
  1. package/README.md +206 -181
  2. package/dist/agent/conversation.d.ts.map +1 -0
  3. package/dist/agent/conversation.js.map +1 -0
  4. package/dist/agent/loop.d.ts.map +1 -0
  5. package/dist/agent/loop.js +45 -11
  6. package/dist/agent/loop.js.map +1 -0
  7. package/dist/agent/planner.d.ts.map +1 -0
  8. package/dist/agent/planner.js.map +1 -0
  9. package/dist/auth/client.d.ts.map +1 -0
  10. package/dist/auth/client.js.map +1 -0
  11. package/dist/auth/config.d.ts.map +1 -0
  12. package/dist/auth/config.js.map +1 -0
  13. package/dist/commands/balance.d.ts +2 -0
  14. package/dist/commands/balance.d.ts.map +1 -0
  15. package/dist/commands/balance.js +65 -0
  16. package/dist/commands/balance.js.map +1 -0
  17. package/dist/commands/chat.d.ts.map +1 -0
  18. package/dist/commands/chat.js +15 -11
  19. package/dist/commands/chat.js.map +1 -0
  20. package/dist/commands/config.d.ts.map +1 -0
  21. package/dist/commands/config.js.map +1 -0
  22. package/dist/commands/doctor.d.ts +2 -0
  23. package/dist/commands/doctor.d.ts.map +1 -0
  24. package/dist/commands/doctor.js +212 -0
  25. package/dist/commands/doctor.js.map +1 -0
  26. package/dist/commands/login.d.ts.map +1 -0
  27. package/dist/commands/login.js +3 -1
  28. package/dist/commands/login.js.map +1 -0
  29. package/dist/commands/marketplace.d.ts.map +1 -0
  30. package/dist/commands/marketplace.js.map +1 -0
  31. package/dist/commands/models.d.ts.map +1 -0
  32. package/dist/commands/models.js +9 -15
  33. package/dist/commands/models.js.map +1 -0
  34. package/dist/commands/update.d.ts +6 -0
  35. package/dist/commands/update.d.ts.map +1 -0
  36. package/dist/commands/update.js +115 -0
  37. package/dist/commands/update.js.map +1 -0
  38. package/dist/compact/auto-compact.d.ts.map +1 -0
  39. package/dist/compact/auto-compact.js.map +1 -0
  40. package/dist/compact/budget.d.ts.map +1 -0
  41. package/dist/compact/budget.js +18 -0
  42. package/dist/compact/budget.js.map +1 -0
  43. package/dist/compact/history-store.d.ts.map +1 -0
  44. package/dist/compact/history-store.js.map +1 -0
  45. package/dist/compact/microcompact.d.ts.map +1 -0
  46. package/dist/compact/microcompact.js.map +1 -0
  47. package/dist/compact/service.d.ts.map +1 -0
  48. package/dist/compact/service.js.map +1 -0
  49. package/dist/context/agent-identity.d.ts.map +1 -0
  50. package/dist/context/agent-identity.js +19 -0
  51. package/dist/context/agent-identity.js.map +1 -0
  52. package/dist/context/analyzer.d.ts.map +1 -0
  53. package/dist/context/analyzer.js.map +1 -0
  54. package/dist/context/builder.d.ts.map +1 -0
  55. package/dist/context/builder.js +7 -0
  56. package/dist/context/builder.js.map +1 -0
  57. package/dist/context/cache.d.ts.map +1 -0
  58. package/dist/context/cache.js +110 -0
  59. package/dist/context/cache.js.map +1 -0
  60. package/dist/context/git-context.d.ts.map +1 -0
  61. package/dist/context/git-context.js.map +1 -0
  62. package/dist/context/llmtune-md.d.ts.map +1 -0
  63. package/dist/context/llmtune-md.js.map +1 -0
  64. package/dist/context/project-detect.d.ts +26 -0
  65. package/dist/context/project-detect.d.ts.map +1 -0
  66. package/dist/context/project-detect.js +213 -0
  67. package/dist/context/project-detect.js.map +1 -0
  68. package/dist/context/workspace.d.ts.map +1 -0
  69. package/dist/context/workspace.js +2 -1
  70. package/dist/context/workspace.js.map +1 -0
  71. package/dist/index.d.ts.map +1 -0
  72. package/dist/index.js +57 -5
  73. package/dist/index.js.map +1 -0
  74. package/dist/marketplace/client.d.ts.map +1 -0
  75. package/dist/marketplace/client.js.map +1 -0
  76. package/dist/memory/files.d.ts.map +1 -0
  77. package/dist/memory/files.js.map +1 -0
  78. package/dist/memory/service.d.ts +2 -1
  79. package/dist/memory/service.d.ts.map +1 -0
  80. package/dist/memory/service.js +1 -0
  81. package/dist/memory/service.js.map +1 -0
  82. package/dist/repl/auto-save.d.ts +14 -0
  83. package/dist/repl/auto-save.d.ts.map +1 -0
  84. package/dist/repl/auto-save.js +101 -0
  85. package/dist/repl/auto-save.js.map +1 -0
  86. package/dist/repl/repl.d.ts +1 -0
  87. package/dist/repl/repl.d.ts.map +1 -0
  88. package/dist/repl/repl.js +296 -34
  89. package/dist/repl/repl.js.map +1 -0
  90. package/dist/skills/args.d.ts.map +1 -0
  91. package/dist/skills/args.js.map +1 -0
  92. package/dist/skills/frontmatter.d.ts.map +1 -0
  93. package/dist/skills/frontmatter.js.map +1 -0
  94. package/dist/skills/loader.d.ts.map +1 -0
  95. package/dist/skills/loader.js.map +1 -0
  96. package/dist/skills/registry.d.ts.map +1 -0
  97. package/dist/skills/registry.js.map +1 -0
  98. package/dist/skills/signing/signer.d.ts.map +1 -0
  99. package/dist/skills/signing/signer.js.map +1 -0
  100. package/dist/skills/trust.d.ts.map +1 -0
  101. package/dist/skills/trust.js.map +1 -0
  102. package/dist/telemetry/logger.d.ts.map +1 -0
  103. package/dist/telemetry/logger.js.map +1 -0
  104. package/dist/tools/permissions.d.ts +2 -0
  105. package/dist/tools/permissions.d.ts.map +1 -0
  106. package/dist/tools/permissions.js +9 -0
  107. package/dist/tools/permissions.js.map +1 -0
  108. package/dist/tools/protocol.d.ts.map +1 -0
  109. package/dist/tools/protocol.js.map +1 -0
  110. package/dist/tools/registry.d.ts.map +1 -0
  111. package/dist/tools/registry.js.map +1 -0
  112. package/dist/tools/sandbox/docker.d.ts.map +1 -0
  113. package/dist/tools/sandbox/docker.js.map +1 -0
  114. package/dist/tools/sandbox/index.d.ts.map +1 -0
  115. package/dist/tools/sandbox/index.js.map +1 -0
  116. package/dist/tools/sanitize.d.ts +10 -0
  117. package/dist/tools/sanitize.d.ts.map +1 -0
  118. package/dist/tools/sanitize.js +87 -0
  119. package/dist/tools/sanitize.js.map +1 -0
  120. package/dist/tools/tools/ask-user.d.ts.map +1 -0
  121. package/dist/tools/tools/ask-user.js.map +1 -0
  122. package/dist/tools/tools/bash.d.ts.map +1 -0
  123. package/dist/tools/tools/bash.js +52 -1
  124. package/dist/tools/tools/bash.js.map +1 -0
  125. package/dist/tools/tools/edit.d.ts.map +1 -0
  126. package/dist/tools/tools/edit.js +9 -2
  127. package/dist/tools/tools/edit.js.map +1 -0
  128. package/dist/tools/tools/glob.d.ts.map +1 -0
  129. package/dist/tools/tools/glob.js.map +1 -0
  130. package/dist/tools/tools/grep.d.ts.map +1 -0
  131. package/dist/tools/tools/grep.js +6 -8
  132. package/dist/tools/tools/grep.js.map +1 -0
  133. package/dist/tools/tools/read.d.ts.map +1 -0
  134. package/dist/tools/tools/read.js +7 -4
  135. package/dist/tools/tools/read.js.map +1 -0
  136. package/dist/tools/tools/web-fetch.d.ts.map +1 -0
  137. package/dist/tools/tools/web-fetch.js +74 -99
  138. package/dist/tools/tools/web-fetch.js.map +1 -0
  139. package/dist/tools/tools/write.d.ts.map +1 -0
  140. package/dist/tools/tools/write.js +13 -7
  141. package/dist/tools/tools/write.js.map +1 -0
  142. package/dist/tools/validation.d.ts.map +1 -0
  143. package/dist/tools/validation.js.map +1 -0
  144. package/dist/ui/banner.d.ts +2 -0
  145. package/dist/ui/banner.d.ts.map +1 -0
  146. package/dist/ui/banner.js +29 -0
  147. package/dist/ui/banner.js.map +1 -0
  148. package/dist/utils/diff.d.ts +38 -0
  149. package/dist/utils/diff.d.ts.map +1 -0
  150. package/dist/utils/diff.js +184 -0
  151. package/dist/utils/diff.js.map +1 -0
  152. package/dist/utils/errors.d.ts +32 -0
  153. package/dist/utils/errors.d.ts.map +1 -0
  154. package/dist/utils/errors.js +72 -0
  155. package/dist/utils/errors.js.map +1 -0
  156. package/dist/utils/ignore.d.ts +22 -0
  157. package/dist/utils/ignore.d.ts.map +1 -0
  158. package/dist/utils/ignore.js +205 -0
  159. package/dist/utils/ignore.js.map +1 -0
  160. package/dist/utils/input-history.d.ts +37 -0
  161. package/dist/utils/input-history.d.ts.map +1 -0
  162. package/dist/utils/input-history.js +142 -0
  163. package/dist/utils/input-history.js.map +1 -0
  164. package/dist/utils/markdown.d.ts.map +1 -0
  165. package/dist/utils/markdown.js.map +1 -0
  166. package/dist/utils/rate-limit.d.ts +36 -0
  167. package/dist/utils/rate-limit.d.ts.map +1 -0
  168. package/dist/utils/rate-limit.js +71 -0
  169. package/dist/utils/rate-limit.js.map +1 -0
  170. package/dist/utils/retry.d.ts +26 -0
  171. package/dist/utils/retry.d.ts.map +1 -0
  172. package/dist/utils/retry.js +96 -0
  173. package/dist/utils/retry.js.map +1 -0
  174. package/dist/utils/spinner.d.ts +12 -0
  175. package/dist/utils/spinner.d.ts.map +1 -0
  176. package/dist/utils/spinner.js +51 -0
  177. package/dist/utils/spinner.js.map +1 -0
  178. package/dist/utils/stats.d.ts +29 -0
  179. package/dist/utils/stats.d.ts.map +1 -0
  180. package/dist/utils/stats.js +95 -0
  181. package/dist/utils/stats.js.map +1 -0
  182. package/dist/utils/streaming.d.ts +6 -3
  183. package/dist/utils/streaming.d.ts.map +1 -0
  184. package/dist/utils/streaming.js +14 -19
  185. package/dist/utils/streaming.js.map +1 -0
  186. package/dist/utils/tokens.d.ts.map +1 -0
  187. package/dist/utils/tokens.js.map +1 -0
  188. package/dist/utils/undo-tracker.d.ts +37 -0
  189. package/dist/utils/undo-tracker.d.ts.map +1 -0
  190. package/dist/utils/undo-tracker.js +118 -0
  191. package/dist/utils/undo-tracker.js.map +1 -0
  192. package/dist/version.d.ts.map +1 -0
  193. package/dist/version.js.map +1 -0
  194. package/package.json +61 -45
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-fetch.js","sourceRoot":"","sources":["../../../src/tools/tools/web-fetch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../../src/tools/tools/write.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAqC,MAAM,aAAa,CAAA;AAG1E,eAAO,MAAM,SAAS,EAAE,IAqDvB,CAAA"}
@@ -36,6 +36,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.writeTool = void 0;
37
37
  const fs = __importStar(require("fs"));
38
38
  const path = __importStar(require("path"));
39
+ const sanitize_1 = require("../sanitize");
39
40
  exports.writeTool = {
40
41
  spec() {
41
42
  return {
@@ -54,18 +55,23 @@ exports.writeTool = {
54
55
  };
55
56
  },
56
57
  run(input, ctx) {
57
- const filePath = String(input.file_path ?? "");
58
+ let filePath;
59
+ try {
60
+ filePath = (0, sanitize_1.sanitizeFilePath)(String(input.file_path ?? ""), ctx.workspaceRoot);
61
+ }
62
+ catch (err) {
63
+ return { name: "write", output: { error: err.message }, isError: true };
64
+ }
58
65
  const content = String(input.content ?? "");
59
66
  const createDirs = input.create_dirs !== false;
60
- const absPath = path.resolve(ctx.cwd, filePath);
61
- if (!absPath.startsWith(path.resolve(ctx.cwd))) {
62
- return { name: "write", output: { error: "Cannot write outside workspace" }, isError: true };
63
- }
64
67
  try {
65
68
  if (createDirs) {
66
- fs.mkdirSync(path.dirname(absPath), { recursive: true });
69
+ const dir = path.dirname(filePath);
70
+ if (!fs.existsSync(dir)) {
71
+ fs.mkdirSync(dir, { recursive: true });
72
+ }
67
73
  }
68
- fs.writeFileSync(absPath, content, "utf-8");
74
+ fs.writeFileSync(filePath, content, "utf-8");
69
75
  return {
70
76
  name: "write",
71
77
  output: { type: "file_written", filePath, bytesWritten: Buffer.byteLength(content) },
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write.js","sourceRoot":"","sources":["../../../src/tools/tools/write.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAwB;AACxB,2CAA4B;AAE5B,0CAA8C;AAEjC,QAAA,SAAS,GAAS;IAC7B,IAAI;QACF,OAAO;YACL,IAAI,EAAE,OAAO;YACb,WAAW,EACT,wFAAwF;YAC1F,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uCAAuC,EAAE;oBACnF,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE;oBAC5D,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,oCAAoC,EAAE;iBACpF;gBACD,QAAQ,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;aACnC;YACD,aAAa,EAAE,IAAI;SACpB,CAAA;IACH,CAAC;IAED,GAAG,CAAC,KAA8B,EAAE,GAAgB;QAClD,IAAI,QAAgB,CAAA;QACpB,IAAI,CAAC;YACH,QAAQ,GAAG,IAAA,2BAAgB,EAAC,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC,CAAA;QAC/E,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;QACpF,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;QAC3C,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,KAAK,KAAK,CAAA;QAE9C,IAAI,CAAC;YACH,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;gBAClC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;gBACxC,CAAC;YACH,CAAC;YAED,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;YAE5C,OAAO;gBACL,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;gBACpF,OAAO,EAAE,KAAK;aACf,CAAA;QACH,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,OAAO;gBACL,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,EAAE,KAAK,EAAE,iBAAkB,GAAa,CAAC,OAAO,EAAE,EAAE;gBAC5D,OAAO,EAAE,IAAI;aACd,CAAA;QACH,CAAC;IACH,CAAC;CACF,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/tools/validation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAeD,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,QAAQ,SAAU,GACjB,IAAI,CAWN"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/tools/validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function renderBanner(): string;
2
+ //# sourceMappingURL=banner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../src/ui/banner.ts"],"names":[],"mappings":"AAgBA,wBAAgB,YAAY,IAAI,MAAM,CASrC"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.renderBanner = renderBanner;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const version_1 = require("../version");
9
+ /**
10
+ * LLMTune ASCII art logo — shown on CLI startup and `llmtune` with no args.
11
+ * Uses only standard ASCII characters for maximum terminal compatibility.
12
+ */
13
+ const LOGO = [
14
+ " _ _ _ _ __ _ _",
15
+ " | | | | | (_)/ _| | | |",
16
+ " | |__ | |__ | |_| |_ ___ | | |___ _ __",
17
+ " | '_ \\| '_ \\| | | _/ _ \\ | | / _ \\ '__|",
18
+ " | | | | |_) | | | || __/ | || __/ |",
19
+ " |_| |_|_.__/|_|_|_| \\___| |_|\\___|_|",
20
+ ].join("\n");
21
+ function renderBanner() {
22
+ const lines = [];
23
+ lines.push("");
24
+ lines.push(chalk_1.default.cyan(LOGO));
25
+ lines.push(chalk_1.default.dim(` AI CLI Agent · v${version_1.CLI_VERSION} · llmtune.io`));
26
+ lines.push("");
27
+ return lines.join("\n");
28
+ }
29
+ //# sourceMappingURL=banner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/ui/banner.ts"],"names":[],"mappings":";;;;;AAgBA,oCASC;AAzBD,kDAAyB;AACzB,wCAAwC;AAExC;;;GAGG;AACH,MAAM,IAAI,GAAG;IACX,iCAAiC;IACjC,kCAAkC;IAClC,0CAA0C;IAC1C,+CAA+C;IAC/C,wCAAwC;IACxC,yCAAyC;CAC1C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAEZ,SAAgB,YAAY;IAC1B,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAC5B,KAAK,CAAC,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,qBAAqB,qBAAW,eAAe,CAAC,CAAC,CAAA;IACtE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAEd,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Simple unified diff generator for showing file changes.
3
+ * Used by the /diff command and edit tool output.
4
+ */
5
+ export interface DiffLine {
6
+ type: "context" | "add" | "remove";
7
+ content: string;
8
+ lineNum?: number;
9
+ }
10
+ export interface DiffResult {
11
+ filePath: string;
12
+ hunks: DiffHunk[];
13
+ summary: {
14
+ added: number;
15
+ removed: number;
16
+ };
17
+ }
18
+ export interface DiffHunk {
19
+ oldStart: number;
20
+ oldCount: number;
21
+ newStart: number;
22
+ newCount: number;
23
+ lines: DiffLine[];
24
+ }
25
+ /**
26
+ * Generate a unified diff between two strings.
27
+ */
28
+ export declare function diffStrings(oldText: string, newText: string, filePath?: string): DiffResult;
29
+ /**
30
+ * Format a DiffResult as a colored terminal string.
31
+ */
32
+ export declare function formatDiff(diff: DiffResult, chalk_: {
33
+ green: (s: string) => string;
34
+ red: (s: string) => string;
35
+ dim: (s: string) => string;
36
+ cyan: (s: string) => string;
37
+ }): string;
38
+ //# sourceMappingURL=diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/utils/diff.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAA;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,QAAQ,EAAE,CAAA;IACjB,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAC5C;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,QAAQ,EAAE,CAAA;CAClB;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAAe,GACxB,UAAU,CAiBZ;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE;IACnD,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;IAC5B,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;IAC1B,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;IAC1B,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;CAC5B,GAAG,MAAM,CA2BT"}
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+ /**
3
+ * Simple unified diff generator for showing file changes.
4
+ * Used by the /diff command and edit tool output.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.diffStrings = diffStrings;
8
+ exports.formatDiff = formatDiff;
9
+ /**
10
+ * Generate a unified diff between two strings.
11
+ */
12
+ function diffStrings(oldText, newText, filePath = "file") {
13
+ const oldLines = oldText.split("\n");
14
+ const newLines = newText.split("\n");
15
+ const lcs = computeLCS(oldLines, newLines);
16
+ const hunks = buildHunks(oldLines, newLines, lcs);
17
+ let added = 0;
18
+ let removed = 0;
19
+ for (const hunk of hunks) {
20
+ for (const line of hunk.lines) {
21
+ if (line.type === "add")
22
+ added++;
23
+ if (line.type === "remove")
24
+ removed++;
25
+ }
26
+ }
27
+ return { filePath, hunks, summary: { added, removed } };
28
+ }
29
+ /**
30
+ * Format a DiffResult as a colored terminal string.
31
+ */
32
+ function formatDiff(diff, chalk_) {
33
+ const { filePath, hunks, summary } = diff;
34
+ const parts = [];
35
+ parts.push(chalk_.cyan(`diff --git a/${filePath} b/${filePath}`));
36
+ parts.push(chalk_.dim(`${summary.added} insertions(+), ${summary.removed} deletions(-)`));
37
+ for (const hunk of hunks) {
38
+ const header = `@@ -${hunk.oldStart},${hunk.oldCount} +${hunk.newStart},${hunk.newCount} @@`;
39
+ parts.push(chalk_.cyan(header));
40
+ for (const line of hunk.lines) {
41
+ switch (line.type) {
42
+ case "context":
43
+ parts.push(chalk_.dim(` ${line.content}`));
44
+ break;
45
+ case "add":
46
+ parts.push(chalk_.green(`+${line.content}`));
47
+ break;
48
+ case "remove":
49
+ parts.push(chalk_.red(`-${line.content}`));
50
+ break;
51
+ }
52
+ }
53
+ }
54
+ return parts.join("\n");
55
+ }
56
+ /**
57
+ * Compute the longest common subsequence table.
58
+ */
59
+ function computeLCS(a, b) {
60
+ const m = a.length;
61
+ const n = b.length;
62
+ const dp = Array.from({ length: m + 1 }, () => new Array(n + 1).fill(0));
63
+ for (let i = 1; i <= m; i++) {
64
+ for (let j = 1; j <= n; j++) {
65
+ if (a[i - 1] === b[j - 1]) {
66
+ dp[i][j] = dp[i - 1][j - 1] + 1;
67
+ }
68
+ else {
69
+ dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
70
+ }
71
+ }
72
+ }
73
+ return dp;
74
+ }
75
+ /**
76
+ * Build diff hunks from the LCS table.
77
+ */
78
+ function buildHunks(a, b, dp) {
79
+ const hunks = [];
80
+ let currentLines = [];
81
+ let oldStart = 1;
82
+ let newStart = 1;
83
+ let oldIdx = a.length;
84
+ let newIdx = b.length;
85
+ // Backtrack to find the edit script
86
+ const edits = [];
87
+ while (oldIdx > 0 || newIdx > 0) {
88
+ if (oldIdx > 0 && newIdx > 0 && a[oldIdx - 1] === b[newIdx - 1]) {
89
+ edits.push({ type: "keep", value: a[oldIdx - 1] });
90
+ oldIdx--;
91
+ newIdx--;
92
+ }
93
+ else if (newIdx > 0 && (oldIdx === 0 || dp[oldIdx][newIdx - 1] >= dp[oldIdx - 1][newIdx])) {
94
+ edits.push({ type: "add", value: b[newIdx - 1] });
95
+ newIdx--;
96
+ }
97
+ else {
98
+ edits.push({ type: "remove", value: a[oldIdx - 1] });
99
+ oldIdx--;
100
+ }
101
+ }
102
+ edits.reverse();
103
+ // Group edits into hunks with context
104
+ const CONTEXT_LINES = 3;
105
+ let i = 0;
106
+ let oLine = 1;
107
+ let nLine = 1;
108
+ while (i < edits.length) {
109
+ // Find next change
110
+ while (i < edits.length && edits[i].type === "keep") {
111
+ i++;
112
+ oLine++;
113
+ nLine++;
114
+ }
115
+ if (i >= edits.length)
116
+ break;
117
+ // Start of a hunk
118
+ const hunkStart = Math.max(0, i - CONTEXT_LINES);
119
+ const hunkOldStart = oLine - Math.min(i - hunkStart, oLine - 1);
120
+ const hunkNewStart = nLine - Math.min(i - hunkStart, nLine - 1);
121
+ currentLines = [];
122
+ // Add preceding context
123
+ for (let j = hunkStart; j < i; j++) {
124
+ currentLines.push({ type: "context", content: edits[j].value });
125
+ }
126
+ // Add changes
127
+ while (i < edits.length) {
128
+ const edit = edits[i];
129
+ if (edit.type === "keep") {
130
+ // Check if next change is far enough to start a new hunk
131
+ let nextChange = i + 1;
132
+ while (nextChange < edits.length && edits[nextChange].type === "keep")
133
+ nextChange++;
134
+ if (nextChange - i > CONTEXT_LINES * 2 && nextChange < edits.length) {
135
+ // Add trailing context and close hunk
136
+ for (let j = i; j < Math.min(i + CONTEXT_LINES, edits.length); j++) {
137
+ currentLines.push({ type: "context", content: edits[j].value });
138
+ oLine++;
139
+ nLine++;
140
+ }
141
+ i += CONTEXT_LINES;
142
+ break;
143
+ }
144
+ currentLines.push({ type: "context", content: edit.value });
145
+ oLine++;
146
+ nLine++;
147
+ i++;
148
+ }
149
+ else if (edit.type === "remove") {
150
+ currentLines.push({ type: "remove", content: edit.value });
151
+ oLine++;
152
+ i++;
153
+ }
154
+ else if (edit.type === "add") {
155
+ currentLines.push({ type: "add", content: edit.value });
156
+ nLine++;
157
+ i++;
158
+ }
159
+ }
160
+ let oldCount = 0;
161
+ let newCount = 0;
162
+ for (const line of currentLines) {
163
+ if (line.type === "context") {
164
+ oldCount++;
165
+ newCount++;
166
+ }
167
+ else if (line.type === "remove") {
168
+ oldCount++;
169
+ }
170
+ else if (line.type === "add") {
171
+ newCount++;
172
+ }
173
+ }
174
+ hunks.push({
175
+ oldStart: hunkOldStart,
176
+ oldCount,
177
+ newStart: hunkNewStart,
178
+ newCount,
179
+ lines: currentLines,
180
+ });
181
+ }
182
+ return hunks;
183
+ }
184
+ //# sourceMappingURL=diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/utils/diff.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Structured error types for the CLI.
3
+ * Provides consistent error handling, categorization, and user-friendly messages.
4
+ */
5
+ export declare enum ErrorCategory {
6
+ /** Network / API connectivity issues */
7
+ Network = "network",
8
+ /** Authentication / API key issues */
9
+ Auth = "auth",
10
+ /** Invalid user input */
11
+ Validation = "validation",
12
+ /** Tool execution failures */
13
+ Tool = "tool",
14
+ /** File system errors */
15
+ FileSystem = "filesystem",
16
+ /** Rate limiting / quota issues */
17
+ RateLimit = "rate_limit",
18
+ /** Internal errors (bugs) */
19
+ Internal = "internal"
20
+ }
21
+ export declare class CLIError extends Error {
22
+ readonly category: ErrorCategory;
23
+ readonly recoverable: boolean;
24
+ readonly suggestion?: string;
25
+ constructor(message: string, category?: ErrorCategory, recoverable?: boolean, suggestion?: string);
26
+ format(): string;
27
+ }
28
+ /**
29
+ * Create a user-friendly error from a raw error.
30
+ */
31
+ export declare function wrapError(err: unknown, context?: string): CLIError;
32
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,oBAAY,aAAa;IACvB,wCAAwC;IACxC,OAAO,YAAY;IACnB,sCAAsC;IACtC,IAAI,SAAS;IACb,yBAAyB;IACzB,UAAU,eAAe;IACzB,8BAA8B;IAC9B,IAAI,SAAS;IACb,yBAAyB;IACzB,UAAU,eAAe;IACzB,mCAAmC;IACnC,SAAS,eAAe;IACxB,6BAA6B;IAC7B,QAAQ,aAAa;CACtB;AAED,qBAAa,QAAS,SAAQ,KAAK;IACjC,SAAgB,QAAQ,EAAE,aAAa,CAAA;IACvC,SAAgB,WAAW,EAAE,OAAO,CAAA;IACpC,SAAgB,UAAU,CAAC,EAAE,MAAM,CAAA;gBAGjC,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,aAAsC,EAChD,WAAW,UAAO,EAClB,UAAU,CAAC,EAAE,MAAM;IASrB,MAAM,IAAI,MAAM;CAOjB;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,CAqDlE"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ /**
3
+ * Structured error types for the CLI.
4
+ * Provides consistent error handling, categorization, and user-friendly messages.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.CLIError = exports.ErrorCategory = void 0;
8
+ exports.wrapError = wrapError;
9
+ var ErrorCategory;
10
+ (function (ErrorCategory) {
11
+ /** Network / API connectivity issues */
12
+ ErrorCategory["Network"] = "network";
13
+ /** Authentication / API key issues */
14
+ ErrorCategory["Auth"] = "auth";
15
+ /** Invalid user input */
16
+ ErrorCategory["Validation"] = "validation";
17
+ /** Tool execution failures */
18
+ ErrorCategory["Tool"] = "tool";
19
+ /** File system errors */
20
+ ErrorCategory["FileSystem"] = "filesystem";
21
+ /** Rate limiting / quota issues */
22
+ ErrorCategory["RateLimit"] = "rate_limit";
23
+ /** Internal errors (bugs) */
24
+ ErrorCategory["Internal"] = "internal";
25
+ })(ErrorCategory || (exports.ErrorCategory = ErrorCategory = {}));
26
+ class CLIError extends Error {
27
+ category;
28
+ recoverable;
29
+ suggestion;
30
+ constructor(message, category = ErrorCategory.Internal, recoverable = true, suggestion) {
31
+ super(message);
32
+ this.name = "CLIError";
33
+ this.category = category;
34
+ this.recoverable = recoverable;
35
+ this.suggestion = suggestion;
36
+ }
37
+ format() {
38
+ const parts = [this.message];
39
+ if (this.suggestion) {
40
+ parts.push(` → ${this.suggestion}`);
41
+ }
42
+ return parts.join("\n");
43
+ }
44
+ }
45
+ exports.CLIError = CLIError;
46
+ /**
47
+ * Create a user-friendly error from a raw error.
48
+ */
49
+ function wrapError(err, context) {
50
+ if (err instanceof CLIError)
51
+ return err;
52
+ const msg = err instanceof Error ? err.message : String(err);
53
+ const contextStr = context ? `${context}: ` : "";
54
+ // Classify known error patterns
55
+ if (msg.includes("ECONNREFUSED") || msg.includes("ECONNRESET") || msg.includes("ETIMEDOUT")) {
56
+ return new CLIError(`${contextStr}${msg}`, ErrorCategory.Network, true, "Check your internet connection and try again.");
57
+ }
58
+ if (msg.includes("401") || msg.includes("Unauthorized") || msg.includes("Invalid API key")) {
59
+ return new CLIError(`${contextStr}${msg}`, ErrorCategory.Auth, true, "Run 'llmtune login' to configure your API key.");
60
+ }
61
+ if (msg.includes("429") || msg.includes("rate limit") || msg.includes("quota")) {
62
+ return new CLIError(`${contextStr}${msg}`, ErrorCategory.RateLimit, true, "Wait a moment and try again. Run 'llmtune balance' to check usage.");
63
+ }
64
+ if (msg.includes("ENOENT") || msg.includes("not found") || msg.includes("ENOENT")) {
65
+ return new CLIError(`${contextStr}${msg}`, ErrorCategory.FileSystem, true, "Check that the file path is correct.");
66
+ }
67
+ if (msg.includes("EACCES") || msg.includes("permission denied")) {
68
+ return new CLIError(`${contextStr}${msg}`, ErrorCategory.FileSystem, true, "Check file permissions.");
69
+ }
70
+ return new CLIError(`${contextStr}${msg}`, ErrorCategory.Internal, true);
71
+ }
72
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * .gitignore-aware file filtering.
3
+ * Skips files/directories that are typically ignored (node_modules, .git, etc.)
4
+ * and reads actual .gitignore patterns when available.
5
+ */
6
+ /**
7
+ * Check if a filename/path should be ignored based on default patterns.
8
+ * This is a fast check that doesn't require reading .gitignore.
9
+ */
10
+ export declare function isIgnoredByDefault(entryName: string, relativePath: string): boolean;
11
+ /**
12
+ * Try to read .gitignore patterns from the workspace root.
13
+ * Also reads .llmtuneignore if present for LLMTune-specific ignores.
14
+ * Returns a simple list of glob-like patterns.
15
+ */
16
+ export declare function readGitignorePatterns(workspaceRoot: string): string[];
17
+ /**
18
+ * Simple pattern matcher for .gitignore-style patterns.
19
+ * Handles: exact names, * globs, directory patterns (trailing /), negation (!)
20
+ */
21
+ export declare function matchesGitignorePattern(entryName: string, relativePath: string, pattern: string): boolean;
22
+ //# sourceMappingURL=ignore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ignore.d.ts","sourceRoot":"","sources":["../../src/utils/ignore.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA2CH;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAwCnF;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAgCrE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,GACd,OAAO,CA2CT"}