@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.
- package/README.md +206 -181
- package/dist/agent/conversation.d.ts.map +1 -0
- package/dist/agent/conversation.js.map +1 -0
- package/dist/agent/loop.d.ts.map +1 -0
- package/dist/agent/loop.js +45 -11
- package/dist/agent/loop.js.map +1 -0
- package/dist/agent/planner.d.ts.map +1 -0
- package/dist/agent/planner.js.map +1 -0
- package/dist/auth/client.d.ts.map +1 -0
- package/dist/auth/client.js.map +1 -0
- package/dist/auth/config.d.ts.map +1 -0
- package/dist/auth/config.js.map +1 -0
- package/dist/commands/balance.d.ts +2 -0
- package/dist/commands/balance.d.ts.map +1 -0
- package/dist/commands/balance.js +65 -0
- package/dist/commands/balance.js.map +1 -0
- package/dist/commands/chat.d.ts.map +1 -0
- package/dist/commands/chat.js +15 -11
- package/dist/commands/chat.js.map +1 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/doctor.d.ts +2 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +212 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +3 -1
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/marketplace.d.ts.map +1 -0
- package/dist/commands/marketplace.js.map +1 -0
- package/dist/commands/models.d.ts.map +1 -0
- package/dist/commands/models.js +9 -15
- package/dist/commands/models.js.map +1 -0
- package/dist/commands/update.d.ts +6 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +115 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/compact/auto-compact.d.ts.map +1 -0
- package/dist/compact/auto-compact.js.map +1 -0
- package/dist/compact/budget.d.ts.map +1 -0
- package/dist/compact/budget.js +18 -0
- package/dist/compact/budget.js.map +1 -0
- package/dist/compact/history-store.d.ts.map +1 -0
- package/dist/compact/history-store.js.map +1 -0
- package/dist/compact/microcompact.d.ts.map +1 -0
- package/dist/compact/microcompact.js.map +1 -0
- package/dist/compact/service.d.ts.map +1 -0
- package/dist/compact/service.js.map +1 -0
- package/dist/context/agent-identity.d.ts.map +1 -0
- package/dist/context/agent-identity.js +19 -0
- package/dist/context/agent-identity.js.map +1 -0
- package/dist/context/analyzer.d.ts.map +1 -0
- package/dist/context/analyzer.js.map +1 -0
- package/dist/context/builder.d.ts.map +1 -0
- package/dist/context/builder.js +7 -0
- package/dist/context/builder.js.map +1 -0
- package/dist/context/cache.d.ts.map +1 -0
- package/dist/context/cache.js +110 -0
- package/dist/context/cache.js.map +1 -0
- package/dist/context/git-context.d.ts.map +1 -0
- package/dist/context/git-context.js.map +1 -0
- package/dist/context/llmtune-md.d.ts.map +1 -0
- package/dist/context/llmtune-md.js.map +1 -0
- package/dist/context/project-detect.d.ts +26 -0
- package/dist/context/project-detect.d.ts.map +1 -0
- package/dist/context/project-detect.js +213 -0
- package/dist/context/project-detect.js.map +1 -0
- package/dist/context/workspace.d.ts.map +1 -0
- package/dist/context/workspace.js +2 -1
- package/dist/context/workspace.js.map +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +57 -5
- package/dist/index.js.map +1 -0
- package/dist/marketplace/client.d.ts.map +1 -0
- package/dist/marketplace/client.js.map +1 -0
- package/dist/memory/files.d.ts.map +1 -0
- package/dist/memory/files.js.map +1 -0
- package/dist/memory/service.d.ts +2 -1
- package/dist/memory/service.d.ts.map +1 -0
- package/dist/memory/service.js +1 -0
- package/dist/memory/service.js.map +1 -0
- package/dist/repl/auto-save.d.ts +14 -0
- package/dist/repl/auto-save.d.ts.map +1 -0
- package/dist/repl/auto-save.js +101 -0
- package/dist/repl/auto-save.js.map +1 -0
- package/dist/repl/repl.d.ts +1 -0
- package/dist/repl/repl.d.ts.map +1 -0
- package/dist/repl/repl.js +296 -34
- package/dist/repl/repl.js.map +1 -0
- package/dist/skills/args.d.ts.map +1 -0
- package/dist/skills/args.js.map +1 -0
- package/dist/skills/frontmatter.d.ts.map +1 -0
- package/dist/skills/frontmatter.js.map +1 -0
- package/dist/skills/loader.d.ts.map +1 -0
- package/dist/skills/loader.js.map +1 -0
- package/dist/skills/registry.d.ts.map +1 -0
- package/dist/skills/registry.js.map +1 -0
- package/dist/skills/signing/signer.d.ts.map +1 -0
- package/dist/skills/signing/signer.js.map +1 -0
- package/dist/skills/trust.d.ts.map +1 -0
- package/dist/skills/trust.js.map +1 -0
- package/dist/telemetry/logger.d.ts.map +1 -0
- package/dist/telemetry/logger.js.map +1 -0
- package/dist/tools/permissions.d.ts +2 -0
- package/dist/tools/permissions.d.ts.map +1 -0
- package/dist/tools/permissions.js +9 -0
- package/dist/tools/permissions.js.map +1 -0
- package/dist/tools/protocol.d.ts.map +1 -0
- package/dist/tools/protocol.js.map +1 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/sandbox/docker.d.ts.map +1 -0
- package/dist/tools/sandbox/docker.js.map +1 -0
- package/dist/tools/sandbox/index.d.ts.map +1 -0
- package/dist/tools/sandbox/index.js.map +1 -0
- package/dist/tools/sanitize.d.ts +10 -0
- package/dist/tools/sanitize.d.ts.map +1 -0
- package/dist/tools/sanitize.js +87 -0
- package/dist/tools/sanitize.js.map +1 -0
- package/dist/tools/tools/ask-user.d.ts.map +1 -0
- package/dist/tools/tools/ask-user.js.map +1 -0
- package/dist/tools/tools/bash.d.ts.map +1 -0
- package/dist/tools/tools/bash.js +52 -1
- package/dist/tools/tools/bash.js.map +1 -0
- package/dist/tools/tools/edit.d.ts.map +1 -0
- package/dist/tools/tools/edit.js +9 -2
- package/dist/tools/tools/edit.js.map +1 -0
- package/dist/tools/tools/glob.d.ts.map +1 -0
- package/dist/tools/tools/glob.js.map +1 -0
- package/dist/tools/tools/grep.d.ts.map +1 -0
- package/dist/tools/tools/grep.js +6 -8
- package/dist/tools/tools/grep.js.map +1 -0
- package/dist/tools/tools/read.d.ts.map +1 -0
- package/dist/tools/tools/read.js +7 -4
- package/dist/tools/tools/read.js.map +1 -0
- package/dist/tools/tools/web-fetch.d.ts.map +1 -0
- package/dist/tools/tools/web-fetch.js +74 -99
- package/dist/tools/tools/web-fetch.js.map +1 -0
- package/dist/tools/tools/write.d.ts.map +1 -0
- package/dist/tools/tools/write.js +13 -7
- package/dist/tools/tools/write.js.map +1 -0
- package/dist/tools/validation.d.ts.map +1 -0
- package/dist/tools/validation.js.map +1 -0
- package/dist/ui/banner.d.ts +2 -0
- package/dist/ui/banner.d.ts.map +1 -0
- package/dist/ui/banner.js +29 -0
- package/dist/ui/banner.js.map +1 -0
- package/dist/utils/diff.d.ts +38 -0
- package/dist/utils/diff.d.ts.map +1 -0
- package/dist/utils/diff.js +184 -0
- package/dist/utils/diff.js.map +1 -0
- package/dist/utils/errors.d.ts +32 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +72 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/ignore.d.ts +22 -0
- package/dist/utils/ignore.d.ts.map +1 -0
- package/dist/utils/ignore.js +205 -0
- package/dist/utils/ignore.js.map +1 -0
- package/dist/utils/input-history.d.ts +37 -0
- package/dist/utils/input-history.d.ts.map +1 -0
- package/dist/utils/input-history.js +142 -0
- package/dist/utils/input-history.js.map +1 -0
- package/dist/utils/markdown.d.ts.map +1 -0
- package/dist/utils/markdown.js.map +1 -0
- package/dist/utils/rate-limit.d.ts +36 -0
- package/dist/utils/rate-limit.d.ts.map +1 -0
- package/dist/utils/rate-limit.js +71 -0
- package/dist/utils/rate-limit.js.map +1 -0
- package/dist/utils/retry.d.ts +26 -0
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/retry.js +96 -0
- package/dist/utils/retry.js.map +1 -0
- package/dist/utils/spinner.d.ts +12 -0
- package/dist/utils/spinner.d.ts.map +1 -0
- package/dist/utils/spinner.js +51 -0
- package/dist/utils/spinner.js.map +1 -0
- package/dist/utils/stats.d.ts +29 -0
- package/dist/utils/stats.d.ts.map +1 -0
- package/dist/utils/stats.js +95 -0
- package/dist/utils/stats.js.map +1 -0
- package/dist/utils/streaming.d.ts +6 -3
- package/dist/utils/streaming.d.ts.map +1 -0
- package/dist/utils/streaming.js +14 -19
- package/dist/utils/streaming.js.map +1 -0
- package/dist/utils/tokens.d.ts.map +1 -0
- package/dist/utils/tokens.js.map +1 -0
- package/dist/utils/undo-tracker.d.ts +37 -0
- package/dist/utils/undo-tracker.d.ts.map +1 -0
- package/dist/utils/undo-tracker.js +118 -0
- package/dist/utils/undo-tracker.js.map +1 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js.map +1 -0
- 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
|
-
|
|
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
|
-
|
|
69
|
+
const dir = path.dirname(filePath);
|
|
70
|
+
if (!fs.existsSync(dir)) {
|
|
71
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
72
|
+
}
|
|
67
73
|
}
|
|
68
|
-
fs.writeFileSync(
|
|
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 @@
|
|
|
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":";AAAA;;;GAGG;;AAyBH,kCAqBC;AAKD,gCAgCC;AA7DD;;GAEG;AACH,SAAgB,WAAW,CACzB,OAAe,EACf,OAAe,EACf,WAAmB,MAAM;IAEzB,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAEpC,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC1C,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAA;IAEjD,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;gBAAE,KAAK,EAAE,CAAA;YAChC,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,EAAE,CAAA;QACvC,CAAC;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAAA;AACzD,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,IAAgB,EAAE,MAK5C;IACC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;IACzC,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,QAAQ,MAAM,QAAQ,EAAE,CAAC,CAAC,CAAA;IACjE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,mBAAmB,OAAO,CAAC,OAAO,eAAe,CAAC,CAAC,CAAA;IAEzF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAA;QAC5F,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;QAE/B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClB,KAAK,SAAS;oBACZ,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;oBAC1C,MAAK;gBACP,KAAK,KAAK;oBACR,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;oBAC5C,MAAK;gBACP,KAAK,QAAQ;oBACX,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;oBAC1C,MAAK;YACT,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,CAAW,EAAE,CAAW;IAC1C,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAA;IAClB,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAA;IAClB,MAAM,EAAE,GAAe,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IAEpF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC1B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;YACjC,CAAC;iBAAM,CAAC;gBACN,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YACjD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,CAAA;AACX,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,CAAW,EAAE,CAAW,EAAE,EAAc;IAC1D,MAAM,KAAK,GAAe,EAAE,CAAA;IAC5B,IAAI,YAAY,GAAe,EAAE,CAAA;IACjC,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,IAAI,MAAM,GAAG,CAAC,CAAC,MAAM,CAAA;IACrB,IAAI,MAAM,GAAG,CAAC,CAAC,MAAM,CAAA;IAErB,oCAAoC;IACpC,MAAM,KAAK,GAA8D,EAAE,CAAA;IAE3E,OAAO,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;YAChE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAA;YAClD,MAAM,EAAE,CAAA;YACR,MAAM,EAAE,CAAA;QACV,CAAC;aAAM,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YAC5F,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAA;YACjD,MAAM,EAAE,CAAA;QACV,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAA;YACpD,MAAM,EAAE,CAAA;QACV,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,EAAE,CAAA;IAEf,sCAAsC;IACtC,MAAM,aAAa,GAAG,CAAC,CAAA;IACvB,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,KAAK,GAAG,CAAC,CAAA;IAEb,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACxB,mBAAmB;QACnB,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACpD,CAAC,EAAE,CAAA;YACH,KAAK,EAAE,CAAA;YACP,KAAK,EAAE,CAAA;QACT,CAAC;QAED,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM;YAAE,MAAK;QAE5B,kBAAkB;QAClB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,CAAA;QAChD,MAAM,YAAY,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;QAC/D,MAAM,YAAY,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;QAE/D,YAAY,GAAG,EAAE,CAAA;QAEjB,wBAAwB;QACxB,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;QACjE,CAAC;QAED,cAAc;QACd,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;YACrB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACzB,yDAAyD;gBACzD,IAAI,UAAU,GAAG,CAAC,GAAG,CAAC,CAAA;gBACtB,OAAO,UAAU,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,KAAK,MAAM;oBAAE,UAAU,EAAE,CAAA;gBACnF,IAAI,UAAU,GAAG,CAAC,GAAG,aAAa,GAAG,CAAC,IAAI,UAAU,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;oBACpE,sCAAsC;oBACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;wBACnE,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;wBAC/D,KAAK,EAAE,CAAA;wBACP,KAAK,EAAE,CAAA;oBACT,CAAC;oBACD,CAAC,IAAI,aAAa,CAAA;oBAClB,MAAK;gBACP,CAAC;gBACD,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;gBAC3D,KAAK,EAAE,CAAA;gBACP,KAAK,EAAE,CAAA;gBACP,CAAC,EAAE,CAAA;YACL,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAClC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;gBAC1D,KAAK,EAAE,CAAA;gBACP,CAAC,EAAE,CAAA;YACL,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBAC/B,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;gBACvD,KAAK,EAAE,CAAA;gBACP,CAAC,EAAE,CAAA;YACL,CAAC;QACH,CAAC;QAED,IAAI,QAAQ,GAAG,CAAC,CAAA;QAChB,IAAI,QAAQ,GAAG,CAAC,CAAA;QAChB,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAAC,QAAQ,EAAE,CAAC;gBAAC,QAAQ,EAAE,CAAA;YAAC,CAAC;iBAClD,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAAC,QAAQ,EAAE,CAAA;YAAC,CAAC;iBAC1C,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBAAC,QAAQ,EAAE,CAAA;YAAC,CAAC;QAC9C,CAAC;QAED,KAAK,CAAC,IAAI,CAAC;YACT,QAAQ,EAAE,YAAY;YACtB,QAAQ;YACR,QAAQ,EAAE,YAAY;YACtB,QAAQ;YACR,KAAK,EAAE,YAAY;SACpB,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC"}
|
|
@@ -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"}
|