@llmtune/cli 0.1.9 → 0.2.1
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 +27 -10
- 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.map +1 -0
- package/dist/commands/balance.js.map +1 -0
- package/dist/commands/chat.d.ts.map +1 -0
- 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.map +1 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/login.d.ts.map +1 -0
- 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.map +1 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +14 -3
- 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.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.map +1 -0
- package/dist/index.d.ts.map +1 -0
- 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.map +1 -0
- package/dist/repl/repl.js +264 -22
- 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.map +1 -0
- package/dist/tools/permissions.js +15 -9
- 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.map +1 -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 +1 -0
- 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.map +1 -0
- package/dist/tools/tools/web-fetch.d.ts.map +1 -0
- 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.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.map +1 -0
- package/dist/ui/banner.js +9 -8
- 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.map +1 -0
- 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":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/marketplace/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE/C,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,OAAO,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,CAAA;IACzD,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,gBAAgB,EAAE,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACb;AAkBD;;GAEG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,SAAS,EACjB,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACzE,OAAO,CAAC,YAAY,CAAC,CA6BvB;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAWhG;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBnF;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,GACxG,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAepD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/marketplace/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/memory/files.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,eAAO,MAAM,iBAAiB,EAAE,cAAc,EAK7C,CAAA;AAED,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,eAAe,IAAI,IAAI,CAWtC;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAS9C;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAM9D;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAG5D;AAED,wBAAgB,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOtD;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAa1C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/memory/files.ts"],"names":[],"mappings":"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"}
|
package/dist/memory/service.d.ts
CHANGED
|
@@ -5,12 +5,13 @@ declare const MEMORY_FILES: {
|
|
|
5
5
|
readonly architecture: "architecture.md";
|
|
6
6
|
readonly "active-task": "active-task.md";
|
|
7
7
|
};
|
|
8
|
-
type MemoryCategory = keyof typeof MEMORY_FILES;
|
|
8
|
+
export type MemoryCategory = keyof typeof MEMORY_FILES;
|
|
9
9
|
export interface MemoryEntry {
|
|
10
10
|
category: MemoryCategory;
|
|
11
11
|
content: string;
|
|
12
12
|
path: string;
|
|
13
13
|
}
|
|
14
|
+
export declare function getMemoryPath(category: MemoryCategory): string;
|
|
14
15
|
export declare function readMemory(category: MemoryCategory): string;
|
|
15
16
|
export declare function writeMemory(category: MemoryCategory, content: string): void;
|
|
16
17
|
export declare function appendMemory(category: MemoryCategory, line: string): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/memory/service.ts"],"names":[],"mappings":"AAMA,QAAA,MAAM,YAAY;;;;;;CAMR,CAAA;AAEV,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,YAAY,CAAA;AAEtD,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,cAAc,CAAA;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;CACb;AAQD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAE9D;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAO3D;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAI3E;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAKzE;AAED,wBAAgB,aAAa,IAAI,WAAW,EAAE,CAc7C;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAU1C;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAIjD;AAED,wBAAgB,aAAa,IAAI,MAAM,CAItC;AAED,wBAAgB,WAAW,CAAC,QAAQ,CAAC,EAAE,cAAc,GAAG,IAAI,CAiB3D;AAED,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,eAAe,IAAI,IAAI,CAqBtC"}
|
package/dist/memory/service.js
CHANGED
|
@@ -33,6 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.getMemoryPath = getMemoryPath;
|
|
36
37
|
exports.readMemory = readMemory;
|
|
37
38
|
exports.writeMemory = writeMemory;
|
|
38
39
|
exports.appendMemory = appendMemory;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/memory/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session auto-save — periodically saves conversation state so the user
|
|
3
|
+
* doesn't lose their session if the process crashes or is killed.
|
|
4
|
+
*/
|
|
5
|
+
import { Conversation } from "../agent/conversation";
|
|
6
|
+
export declare class SessionAutoSave {
|
|
7
|
+
private timer;
|
|
8
|
+
private conversation;
|
|
9
|
+
private lastSaveHash;
|
|
10
|
+
start(conversation: Conversation): void;
|
|
11
|
+
stop(): void;
|
|
12
|
+
private save;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=auto-save.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-save.d.ts","sourceRoot":"","sources":["../../src/repl/auto-save.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAKpD,qBAAa,eAAe;IAC1B,OAAO,CAAC,KAAK,CAA8C;IAC3D,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,YAAY,CAAa;IAEjC,KAAK,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI;IAiBvC,IAAI,IAAI,IAAI;IASZ,OAAO,CAAC,IAAI;CA8Bb"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Session auto-save — periodically saves conversation state so the user
|
|
4
|
+
* doesn't lose their session if the process crashes or is killed.
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.SessionAutoSave = void 0;
|
|
41
|
+
const fs = __importStar(require("fs"));
|
|
42
|
+
const path = __importStar(require("path"));
|
|
43
|
+
const os = __importStar(require("os"));
|
|
44
|
+
const AUTO_SAVE_DIR = path.join(os.homedir(), ".llmtune", "sessions");
|
|
45
|
+
const AUTO_SAVE_INTERVAL_MS = 30_000; // Save every 30 seconds
|
|
46
|
+
class SessionAutoSave {
|
|
47
|
+
timer = null;
|
|
48
|
+
conversation = null;
|
|
49
|
+
lastSaveHash = "";
|
|
50
|
+
start(conversation) {
|
|
51
|
+
this.conversation = conversation;
|
|
52
|
+
// Ensure directory exists
|
|
53
|
+
if (!fs.existsSync(AUTO_SAVE_DIR)) {
|
|
54
|
+
fs.mkdirSync(AUTO_SAVE_DIR, { recursive: true });
|
|
55
|
+
}
|
|
56
|
+
// Auto-save periodically
|
|
57
|
+
this.timer = setInterval(() => {
|
|
58
|
+
this.save();
|
|
59
|
+
}, AUTO_SAVE_INTERVAL_MS);
|
|
60
|
+
// Also save on process exit
|
|
61
|
+
process.on("beforeExit", () => this.save());
|
|
62
|
+
}
|
|
63
|
+
stop() {
|
|
64
|
+
if (this.timer) {
|
|
65
|
+
clearInterval(this.timer);
|
|
66
|
+
this.timer = null;
|
|
67
|
+
}
|
|
68
|
+
// Final save
|
|
69
|
+
this.save();
|
|
70
|
+
}
|
|
71
|
+
save() {
|
|
72
|
+
if (!this.conversation)
|
|
73
|
+
return;
|
|
74
|
+
try {
|
|
75
|
+
const messages = this.conversation.getApiMessages();
|
|
76
|
+
const hash = JSON.stringify(messages).length.toString();
|
|
77
|
+
// Skip save if nothing changed
|
|
78
|
+
if (hash === this.lastSaveHash)
|
|
79
|
+
return;
|
|
80
|
+
this.lastSaveHash = hash;
|
|
81
|
+
const sessionId = `autosave-${new Date().toISOString().slice(0, 10)}`;
|
|
82
|
+
const filePath = path.join(AUTO_SAVE_DIR, `${sessionId}.json`);
|
|
83
|
+
const data = {
|
|
84
|
+
meta: {
|
|
85
|
+
sessionId,
|
|
86
|
+
createdAt: new Date().toISOString(),
|
|
87
|
+
updatedAt: new Date().toISOString(),
|
|
88
|
+
messageCount: messages.length,
|
|
89
|
+
autosave: true,
|
|
90
|
+
},
|
|
91
|
+
messages,
|
|
92
|
+
};
|
|
93
|
+
fs.writeFileSync(filePath, JSON.stringify(data, null, 2), "utf-8");
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
// Silent fail — auto-save is non-critical
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
exports.SessionAutoSave = SessionAutoSave;
|
|
101
|
+
//# sourceMappingURL=auto-save.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-save.js","sourceRoot":"","sources":["../../src/repl/auto-save.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAwB;AACxB,2CAA4B;AAC5B,uCAAwB;AAGxB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;AACrE,MAAM,qBAAqB,GAAG,MAAM,CAAA,CAAC,wBAAwB;AAE7D,MAAa,eAAe;IAClB,KAAK,GAA0C,IAAI,CAAA;IACnD,YAAY,GAAwB,IAAI,CAAA;IACxC,YAAY,GAAW,EAAE,CAAA;IAEjC,KAAK,CAAC,YAA0B;QAC9B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;QAEhC,0BAA0B;QAC1B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAClC,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAClD,CAAC;QAED,yBAAyB;QACzB,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,IAAI,EAAE,CAAA;QACb,CAAC,EAAE,qBAAqB,CAAC,CAAA;QAEzB,4BAA4B;QAC5B,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IAC7C,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACnB,CAAC;QACD,aAAa;QACb,IAAI,CAAC,IAAI,EAAE,CAAA;IACb,CAAC;IAEO,IAAI;QACV,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAM;QAE9B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAA;YACnD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAA;YAEvD,+BAA+B;YAC/B,IAAI,IAAI,KAAK,IAAI,CAAC,YAAY;gBAAE,OAAM;YACtC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;YAExB,MAAM,SAAS,GAAG,YAAY,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAA;YACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,SAAS,OAAO,CAAC,CAAA;YAE9D,MAAM,IAAI,GAAG;gBACX,IAAI,EAAE;oBACJ,SAAS;oBACT,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,YAAY,EAAE,QAAQ,CAAC,MAAM;oBAC7B,QAAQ,EAAE,IAAI;iBACf;gBACD,QAAQ;aACT,CAAA;YAED,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;QACpE,CAAC;QAAC,MAAM,CAAC;YACP,0CAA0C;QAC5C,CAAC;IACH,CAAC;CACF;AA7DD,0CA6DC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../../src/repl/repl.ts"],"names":[],"mappings":"AAEA,OAAO,MAAM,MAAM,QAAQ,CAAA;AAsC3B,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAkCD,wBAAsB,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA0OnE"}
|
package/dist/repl/repl.js
CHANGED
|
@@ -60,33 +60,61 @@ const trust_1 = require("../skills/trust");
|
|
|
60
60
|
const service_2 = require("../memory/service");
|
|
61
61
|
const logger_1 = require("../telemetry/logger");
|
|
62
62
|
const config_1 = require("../auth/config");
|
|
63
|
+
const input_history_1 = require("../utils/input-history");
|
|
64
|
+
const undo_tracker_1 = require("../utils/undo-tracker");
|
|
65
|
+
const project_detect_1 = require("../context/project-detect");
|
|
66
|
+
const auto_save_1 = require("./auto-save");
|
|
63
67
|
const fs = __importStar(require("fs"));
|
|
64
68
|
const path = __importStar(require("path"));
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
${chalk_1.default.cyan("/
|
|
76
|
-
${chalk_1.default.cyan("/
|
|
77
|
-
${chalk_1.default.cyan("/
|
|
78
|
-
${chalk_1.default.cyan("/
|
|
79
|
-
${chalk_1.default.cyan("/
|
|
80
|
-
${chalk_1.default.cyan("/
|
|
81
|
-
${chalk_1.default.cyan("/
|
|
82
|
-
|
|
83
|
-
${chalk_1.default.
|
|
84
|
-
${chalk_1.default.
|
|
69
|
+
const BUILTIN_SLASH_COMMANDS = new Set([
|
|
70
|
+
"/help", "/exit", "/quit", "/clear", "/context", "/compact",
|
|
71
|
+
"/uncompact", "/model", "/stream", "/verbose", "/trust",
|
|
72
|
+
"/skills", "/memory", "/save", "/balance",
|
|
73
|
+
"/undo", "/history", "/cost", "/retry", "/edit-memory", "/project",
|
|
74
|
+
"/stats", "/diff", "/sessions",
|
|
75
|
+
]);
|
|
76
|
+
const HELP_TEXT = `
|
|
77
|
+
${chalk_1.default.bold("LLMTune CLI - Commands:")}
|
|
78
|
+
|
|
79
|
+
${chalk_1.default.cyan("/help")} Show this help
|
|
80
|
+
${chalk_1.default.cyan("/clear")} Clear conversation history
|
|
81
|
+
${chalk_1.default.cyan("/context")} Show detailed context usage breakdown
|
|
82
|
+
${chalk_1.default.cyan("/compact")} Compact conversation (LLM summary)
|
|
83
|
+
${chalk_1.default.cyan("/uncompact")} Restore conversation from before compaction
|
|
84
|
+
${chalk_1.default.cyan("/model <name>")} Switch model
|
|
85
|
+
${chalk_1.default.cyan("/stream")} Toggle streaming mode
|
|
86
|
+
${chalk_1.default.cyan("/verbose")} Toggle verbose tool output
|
|
87
|
+
${chalk_1.default.cyan("/trust <tool>")} Trust a tool (skip confirmations)
|
|
88
|
+
${chalk_1.default.cyan("/skills")} List available skills
|
|
89
|
+
${chalk_1.default.cyan("/memory")} Show memory contents
|
|
90
|
+
${chalk_1.default.cyan("/balance")} Show account balance
|
|
91
|
+
${chalk_1.default.cyan("/save")} Save conversation to file
|
|
92
|
+
${chalk_1.default.cyan("/undo")} Undo last file change
|
|
93
|
+
${chalk_1.default.cyan("/retry")} Retry the last message
|
|
94
|
+
${chalk_1.default.cyan("/history")} Show recent input history
|
|
95
|
+
${chalk_1.default.cyan("/cost")} Show session cost breakdown
|
|
96
|
+
${chalk_1.default.cyan("/stats")} Show detailed session statistics
|
|
97
|
+
${chalk_1.default.cyan("/sessions")} List saved conversation sessions
|
|
98
|
+
${chalk_1.default.cyan("/diff")} Show diff of last file change
|
|
99
|
+
${chalk_1.default.cyan("/edit-memory")} Edit a memory category
|
|
100
|
+
${chalk_1.default.cyan("/project")} Show detected project info
|
|
101
|
+
${chalk_1.default.cyan("/exit")} Exit REPL
|
|
102
|
+
|
|
103
|
+
${chalk_1.default.gray("Type your message and press Enter to chat.")}
|
|
104
|
+
${chalk_1.default.gray("Multi-line: end a line with '\\' to continue.")}
|
|
105
|
+
${chalk_1.default.gray("UP/DOWN arrows: navigate input history.")}
|
|
85
106
|
`.trim();
|
|
86
107
|
async function startRepl(options) {
|
|
87
108
|
const registry = new registry_1.ToolRegistry();
|
|
88
109
|
const cwd = process.cwd();
|
|
89
110
|
const permissions = new permissions_1.PermissionManager();
|
|
111
|
+
const inputHistory = new input_history_1.InputHistory();
|
|
112
|
+
const undoTracker = new undo_tracker_1.UndoTracker();
|
|
113
|
+
const autoSave = new auto_save_1.SessionAutoSave();
|
|
114
|
+
let lastUserInput = "";
|
|
115
|
+
let sessionTotalCost = 0;
|
|
116
|
+
let sessionTotalTokensIn = 0;
|
|
117
|
+
let sessionTotalTokensOut = 0;
|
|
90
118
|
registry.register(read_1.readTool);
|
|
91
119
|
registry.register(write_1.writeTool);
|
|
92
120
|
registry.register(edit_1.editTool);
|
|
@@ -96,6 +124,8 @@ async function startRepl(options) {
|
|
|
96
124
|
registry.register(web_fetch_1.webFetchTool);
|
|
97
125
|
registry.register(ask_user_1.askUserTool);
|
|
98
126
|
const conversation = new conversation_1.Conversation(options.model);
|
|
127
|
+
// Start session auto-save
|
|
128
|
+
autoSave.start(conversation);
|
|
99
129
|
// Load skills
|
|
100
130
|
const skills = (0, loader_1.loadAllSkills)(cwd);
|
|
101
131
|
const skillList = skills.listUserInvocable();
|
|
@@ -115,11 +145,18 @@ async function startRepl(options) {
|
|
|
115
145
|
if (skillList.length > 0) {
|
|
116
146
|
console.log(chalk_1.default.dim(` Skills: ${skillList.map((s) => s.name).join(", ")}`));
|
|
117
147
|
}
|
|
148
|
+
// Show detected project info
|
|
149
|
+
const projectInfo = (0, project_detect_1.detectProjectType)(cwd);
|
|
150
|
+
const projectSummary = (0, project_detect_1.formatProjectInfo)(projectInfo);
|
|
151
|
+
if (projectSummary) {
|
|
152
|
+
console.log(chalk_1.default.dim(` Project: ${projectSummary}`));
|
|
153
|
+
}
|
|
118
154
|
console.log("");
|
|
119
155
|
const rl = (0, readline_1.createInterface)({
|
|
120
156
|
input: process.stdin,
|
|
121
157
|
output: process.stdout,
|
|
122
158
|
prompt: chalk_1.default.blue("> "),
|
|
159
|
+
historySize: 100,
|
|
123
160
|
});
|
|
124
161
|
rl.prompt();
|
|
125
162
|
let multiLineBuffer = "";
|
|
@@ -136,8 +173,10 @@ async function startRepl(options) {
|
|
|
136
173
|
rl.prompt();
|
|
137
174
|
return;
|
|
138
175
|
}
|
|
176
|
+
// Save to input history (for UP arrow recall)
|
|
177
|
+
inputHistory.add(fullInput);
|
|
139
178
|
// Check for skill execution: /skill-name [args]
|
|
140
|
-
if (fullInput.startsWith("/") && !
|
|
179
|
+
if (fullInput.startsWith("/") && !BUILTIN_SLASH_COMMANDS.has(fullInput.split(/\s+/)[0])) {
|
|
141
180
|
const parts = fullInput.slice(1).split(/\s+/);
|
|
142
181
|
const skillName = parts[0];
|
|
143
182
|
const skillArgs = parts.slice(1);
|
|
@@ -165,6 +204,7 @@ async function startRepl(options) {
|
|
|
165
204
|
skipUserInput: false,
|
|
166
205
|
});
|
|
167
206
|
(0, logger_1.logEvent)({ event: "tool_call", tool: skillName, latency_ms: 0 });
|
|
207
|
+
trackSessionUsage(result);
|
|
168
208
|
}
|
|
169
209
|
catch (err) {
|
|
170
210
|
const msg = err instanceof Error ? err.message : String(err);
|
|
@@ -196,11 +236,24 @@ async function startRepl(options) {
|
|
|
196
236
|
setVerbose: (v) => {
|
|
197
237
|
verbose = v;
|
|
198
238
|
},
|
|
239
|
+
inputHistory,
|
|
240
|
+
undoTracker,
|
|
241
|
+
getSessionStats: () => ({
|
|
242
|
+
totalCost: sessionTotalCost,
|
|
243
|
+
totalTokensIn: sessionTotalTokensIn,
|
|
244
|
+
totalTokensOut: sessionTotalTokensOut,
|
|
245
|
+
}),
|
|
246
|
+
getLastInput: () => lastUserInput,
|
|
247
|
+
setLastInput: (input) => {
|
|
248
|
+
lastUserInput = input;
|
|
249
|
+
},
|
|
250
|
+
projectInfo,
|
|
199
251
|
});
|
|
200
252
|
rl.prompt();
|
|
201
253
|
return;
|
|
202
254
|
}
|
|
203
255
|
// Normal chat
|
|
256
|
+
lastUserInput = fullInput;
|
|
204
257
|
try {
|
|
205
258
|
const startTime = Date.now();
|
|
206
259
|
const result = await (0, loop_1.runAgentLoop)(options.client, conversation, registry, fullInput, {
|
|
@@ -212,6 +265,7 @@ async function startRepl(options) {
|
|
|
212
265
|
workspaceRoot: cwd,
|
|
213
266
|
permissions,
|
|
214
267
|
});
|
|
268
|
+
trackSessionUsage(result);
|
|
215
269
|
if (result.totalTokensIn > 0 || result.totalTokensOut > 0) {
|
|
216
270
|
const cost = estimateCostFromUsage(result.totalTokensIn, result.totalTokensOut);
|
|
217
271
|
const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
|
|
@@ -219,7 +273,7 @@ async function startRepl(options) {
|
|
|
219
273
|
console.log(chalk_1.default.dim(` [${elapsed}s | ` +
|
|
220
274
|
`${result.turns} turn${result.turns !== 1 ? "s" : ""} | ` +
|
|
221
275
|
`${result.totalToolCalls} tool${result.totalToolCalls !== 1 ? "s" : ""} | ` +
|
|
222
|
-
`${result.totalTokensIn + result.totalTokensOut} tok | ` +
|
|
276
|
+
`${(result.totalTokensIn + result.totalTokensOut).toLocaleString()} tok | ` +
|
|
223
277
|
`${costStr}]`));
|
|
224
278
|
(0, logger_1.logEvent)({
|
|
225
279
|
event: "llm_response",
|
|
@@ -240,10 +294,17 @@ async function startRepl(options) {
|
|
|
240
294
|
rl.prompt();
|
|
241
295
|
});
|
|
242
296
|
rl.on("close", () => {
|
|
297
|
+
autoSave.stop();
|
|
243
298
|
(0, logger_1.endSessionLog)({ totalToolCalls: 0, totalTokens: 0 });
|
|
244
299
|
console.log(chalk_1.default.dim("\nGoodbye!"));
|
|
245
300
|
process.exit(0);
|
|
246
301
|
});
|
|
302
|
+
/** Track cumulative session usage */
|
|
303
|
+
function trackSessionUsage(result) {
|
|
304
|
+
sessionTotalTokensIn += result.totalTokensIn;
|
|
305
|
+
sessionTotalTokensOut += result.totalTokensOut;
|
|
306
|
+
sessionTotalCost += estimateCostFromUsage(result.totalTokensIn, result.totalTokensOut);
|
|
307
|
+
}
|
|
247
308
|
}
|
|
248
309
|
async function handleCommand(input, ctx) {
|
|
249
310
|
const parts = input.split(/\s+/);
|
|
@@ -373,6 +434,36 @@ async function handleCommand(input, ctx) {
|
|
|
373
434
|
}
|
|
374
435
|
break;
|
|
375
436
|
}
|
|
437
|
+
case "/edit-memory": {
|
|
438
|
+
const category = args[0];
|
|
439
|
+
if (!category) {
|
|
440
|
+
console.log(chalk_1.default.dim("Usage: /edit-memory <category>"));
|
|
441
|
+
console.log(chalk_1.default.dim("Categories: preferences, project-notes, decisions, architecture, active-task"));
|
|
442
|
+
break;
|
|
443
|
+
}
|
|
444
|
+
const validCategories = ["preferences", "project-notes", "decisions", "architecture", "active-task"];
|
|
445
|
+
if (!validCategories.includes(category)) {
|
|
446
|
+
console.log(chalk_1.default.yellow(`Invalid category: ${category}`));
|
|
447
|
+
console.log(chalk_1.default.dim(`Valid categories: ${validCategories.join(", ")}`));
|
|
448
|
+
break;
|
|
449
|
+
}
|
|
450
|
+
const { getMemoryPath } = await Promise.resolve().then(() => __importStar(require("../memory/service")));
|
|
451
|
+
const memPath = getMemoryPath(category);
|
|
452
|
+
if (memPath) {
|
|
453
|
+
console.log(chalk_1.default.dim(`Memory file: ${memPath}`));
|
|
454
|
+
console.log(chalk_1.default.dim("Edit it manually or ask the agent to update it."));
|
|
455
|
+
// Show current content
|
|
456
|
+
try {
|
|
457
|
+
const content = fs.readFileSync(memPath, "utf-8");
|
|
458
|
+
console.log("");
|
|
459
|
+
console.log(content);
|
|
460
|
+
}
|
|
461
|
+
catch {
|
|
462
|
+
console.log(chalk_1.default.yellow("Memory file not found."));
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
break;
|
|
466
|
+
}
|
|
376
467
|
case "/balance": {
|
|
377
468
|
try {
|
|
378
469
|
const { balanceCommand } = await Promise.resolve().then(() => __importStar(require("../commands/balance")));
|
|
@@ -391,6 +482,157 @@ async function handleCommand(input, ctx) {
|
|
|
391
482
|
console.log(chalk_1.default.green(`Session saved to: ${savePath}`));
|
|
392
483
|
break;
|
|
393
484
|
}
|
|
485
|
+
// === NEW COMMANDS ===
|
|
486
|
+
case "/undo": {
|
|
487
|
+
const snapshot = ctx.undoTracker.peek();
|
|
488
|
+
if (!snapshot) {
|
|
489
|
+
console.log(chalk_1.default.yellow("Nothing to undo."));
|
|
490
|
+
break;
|
|
491
|
+
}
|
|
492
|
+
try {
|
|
493
|
+
const undone = ctx.undoTracker.undo();
|
|
494
|
+
const relativePath = path.relative(ctx.cwd, undone.filePath);
|
|
495
|
+
if (undone.content === null) {
|
|
496
|
+
console.log(chalk_1.default.green(`Undone: deleted ${relativePath} (was created by agent)`));
|
|
497
|
+
}
|
|
498
|
+
else {
|
|
499
|
+
console.log(chalk_1.default.green(`Undone: restored ${relativePath} to previous state`));
|
|
500
|
+
}
|
|
501
|
+
console.log(chalk_1.default.dim(` ${ctx.undoTracker.size} undo(s) remaining`));
|
|
502
|
+
}
|
|
503
|
+
catch (err) {
|
|
504
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
505
|
+
console.log(chalk_1.default.red(`Undo failed: ${msg}`));
|
|
506
|
+
}
|
|
507
|
+
break;
|
|
508
|
+
}
|
|
509
|
+
case "/retry": {
|
|
510
|
+
const lastInput = ctx.getLastInput();
|
|
511
|
+
if (!lastInput) {
|
|
512
|
+
console.log(chalk_1.default.yellow("No previous message to retry."));
|
|
513
|
+
break;
|
|
514
|
+
}
|
|
515
|
+
console.log(chalk_1.default.dim(`Retrying: "${lastInput.slice(0, 80)}${lastInput.length > 80 ? "..." : ""}"`));
|
|
516
|
+
try {
|
|
517
|
+
const startTime = Date.now();
|
|
518
|
+
const result = await (0, loop_1.runAgentLoop)(ctx.client, ctx.conversation, ctx.registry, lastInput, {
|
|
519
|
+
model: ctx.getModel(),
|
|
520
|
+
maxTurns: 50,
|
|
521
|
+
verbose: ctx.getVerbose(),
|
|
522
|
+
stream: ctx.getStream(),
|
|
523
|
+
cwd: ctx.cwd,
|
|
524
|
+
workspaceRoot: ctx.cwd,
|
|
525
|
+
permissions: ctx.permissions,
|
|
526
|
+
});
|
|
527
|
+
if (result.totalTokensIn > 0 || result.totalTokensOut > 0) {
|
|
528
|
+
const cost = estimateCostFromUsage(result.totalTokensIn, result.totalTokensOut);
|
|
529
|
+
const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
|
|
530
|
+
console.log(chalk_1.default.dim(` [${elapsed}s | ${(result.totalTokensIn + result.totalTokensOut).toLocaleString()} tok | ~$${cost.toFixed(4)}]`));
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
catch (err) {
|
|
534
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
535
|
+
console.log(chalk_1.default.red(`\nError: ${msg}`));
|
|
536
|
+
}
|
|
537
|
+
break;
|
|
538
|
+
}
|
|
539
|
+
case "/history": {
|
|
540
|
+
const recent = ctx.inputHistory.recent(20);
|
|
541
|
+
if (recent.length === 0) {
|
|
542
|
+
console.log(chalk_1.default.dim("No input history yet."));
|
|
543
|
+
break;
|
|
544
|
+
}
|
|
545
|
+
console.log(chalk_1.default.bold("\nRecent Inputs:"));
|
|
546
|
+
const startIdx = Math.max(0, recent.length - 20);
|
|
547
|
+
for (let i = recent.length - 1; i >= startIdx; i--) {
|
|
548
|
+
const entry = recent[i];
|
|
549
|
+
const num = i + 1;
|
|
550
|
+
const preview = entry.length > 80 ? entry.slice(0, 77) + "..." : entry;
|
|
551
|
+
console.log(` ${chalk_1.default.dim(`${num}.`)} ${preview}`);
|
|
552
|
+
}
|
|
553
|
+
console.log("");
|
|
554
|
+
break;
|
|
555
|
+
}
|
|
556
|
+
case "/cost": {
|
|
557
|
+
const stats = ctx.getSessionStats();
|
|
558
|
+
console.log(chalk_1.default.bold("\nSession Cost Breakdown:"));
|
|
559
|
+
console.log(` Input tokens: ${chalk_1.default.cyan(stats.totalTokensIn.toLocaleString())}`);
|
|
560
|
+
console.log(` Output tokens: ${chalk_1.default.cyan(stats.totalTokensOut.toLocaleString())}`);
|
|
561
|
+
console.log(` Total tokens: ${chalk_1.default.cyan((stats.totalTokensIn + stats.totalTokensOut).toLocaleString())}`);
|
|
562
|
+
const costStr = stats.totalCost < 0.001 ? "<$0.001" : `$${stats.totalCost.toFixed(4)}`;
|
|
563
|
+
console.log(` Estimated cost: ${chalk_1.default.green(costStr)}`);
|
|
564
|
+
console.log(` Model: ${chalk_1.default.dim(ctx.getModel())}`);
|
|
565
|
+
console.log("");
|
|
566
|
+
break;
|
|
567
|
+
}
|
|
568
|
+
case "/project": {
|
|
569
|
+
const info = ctx.projectInfo;
|
|
570
|
+
console.log(chalk_1.default.bold("\nProject Info:"));
|
|
571
|
+
console.log(` Name: ${chalk_1.default.cyan(info.name)}`);
|
|
572
|
+
console.log(` Type: ${chalk_1.default.cyan(info.type)}`);
|
|
573
|
+
console.log(` Language: ${chalk_1.default.cyan(info.language)}`);
|
|
574
|
+
console.log(` Framework: ${chalk_1.default.cyan(info.framework)}`);
|
|
575
|
+
if (info.testFramework !== "none") {
|
|
576
|
+
console.log(` Test framework: ${chalk_1.default.cyan(info.testFramework)}`);
|
|
577
|
+
}
|
|
578
|
+
console.log(` Package manager: ${chalk_1.default.cyan(info.packageManager)}`);
|
|
579
|
+
if (info.configFiles.length > 0) {
|
|
580
|
+
console.log(` Config files: ${chalk_1.default.dim(info.configFiles.join(", "))}`);
|
|
581
|
+
}
|
|
582
|
+
console.log("");
|
|
583
|
+
break;
|
|
584
|
+
}
|
|
585
|
+
case "/stats": {
|
|
586
|
+
const stats = ctx.getSessionStats();
|
|
587
|
+
console.log(chalk_1.default.bold("Session Statistics"));
|
|
588
|
+
console.log(chalk_1.default.dim("─".repeat(40)));
|
|
589
|
+
console.log(` Input tokens: ${stats.totalTokensIn.toLocaleString()}`);
|
|
590
|
+
console.log(` Output tokens: ${stats.totalTokensOut.toLocaleString()}`);
|
|
591
|
+
console.log(` Est. cost: ${stats.totalCost.toFixed(4)}`);
|
|
592
|
+
console.log(` Messages: ${ctx.conversation.messages.length}`);
|
|
593
|
+
console.log("");
|
|
594
|
+
break;
|
|
595
|
+
}
|
|
596
|
+
case "/sessions": {
|
|
597
|
+
try {
|
|
598
|
+
const sessions = conversation_1.Conversation.listSessions();
|
|
599
|
+
if (sessions.length === 0) {
|
|
600
|
+
console.log(chalk_1.default.dim("No saved sessions found."));
|
|
601
|
+
break;
|
|
602
|
+
}
|
|
603
|
+
console.log(chalk_1.default.bold("Recent Sessions"));
|
|
604
|
+
console.log(chalk_1.default.dim("─".repeat(60)));
|
|
605
|
+
for (const session of sessions.slice(0, 10)) {
|
|
606
|
+
const date = new Date(session.updatedAt).toLocaleDateString();
|
|
607
|
+
const time = new Date(session.updatedAt).toLocaleTimeString();
|
|
608
|
+
const label = session.id;
|
|
609
|
+
console.log(` ${chalk_1.default.cyan(session.id.slice(0, 8))} ${chalk_1.default.dim(`${date} ${time}`)} ${label} (${session.messageCount} msgs)`);
|
|
610
|
+
}
|
|
611
|
+
console.log("");
|
|
612
|
+
}
|
|
613
|
+
catch {
|
|
614
|
+
console.log(chalk_1.default.yellow("Could not load sessions."));
|
|
615
|
+
}
|
|
616
|
+
break;
|
|
617
|
+
}
|
|
618
|
+
case "/diff": {
|
|
619
|
+
const lastUndo = ctx.undoTracker.peek();
|
|
620
|
+
if (!lastUndo) {
|
|
621
|
+
console.log(chalk_1.default.yellow("No recent file changes to show."));
|
|
622
|
+
break;
|
|
623
|
+
}
|
|
624
|
+
try {
|
|
625
|
+
const current = fs.readFileSync(lastUndo.filePath, "utf-8");
|
|
626
|
+
const { diffStrings, formatDiff } = await Promise.resolve().then(() => __importStar(require("../utils/diff")));
|
|
627
|
+
const oldContent = lastUndo.content ?? "";
|
|
628
|
+
const result = diffStrings(oldContent, current, path.basename(lastUndo.filePath));
|
|
629
|
+
console.log(formatDiff(result, chalk_1.default));
|
|
630
|
+
}
|
|
631
|
+
catch {
|
|
632
|
+
console.log(chalk_1.default.yellow("Could not generate diff."));
|
|
633
|
+
}
|
|
634
|
+
break;
|
|
635
|
+
}
|
|
394
636
|
default:
|
|
395
637
|
console.log(chalk_1.default.yellow(`Unknown command: ${cmd}. Type /help for available commands.`));
|
|
396
638
|
}
|