codebuff 1.0.295 → 1.0.297
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/dist/chat-storage.js +1 -1
- package/dist/chat-storage.js.map +1 -1
- package/dist/cli-handlers/initialization-flow.d.ts +1 -0
- package/dist/cli-handlers/initialization-flow.js +24 -0
- package/dist/cli-handlers/initialization-flow.js.map +1 -0
- package/dist/cli-modules/command-processor.d.ts +2 -0
- package/dist/cli-modules/command-processor.js +112 -0
- package/dist/cli-modules/command-processor.js.map +1 -0
- package/dist/cli-modules/input-handler.d.ts +4 -0
- package/dist/cli-modules/input-handler.js +75 -0
- package/dist/cli-modules/input-handler.js.map +1 -0
- package/dist/cli-modules/readline-handler.d.ts +11 -0
- package/dist/cli-modules/readline-handler.js +158 -0
- package/dist/cli-modules/readline-handler.js.map +1 -0
- package/dist/cli-modules/signal-handler.d.ts +7 -0
- package/dist/cli-modules/signal-handler.js +128 -0
- package/dist/cli-modules/signal-handler.js.map +1 -0
- package/dist/cli-modules/types.d.ts +51 -0
- package/dist/cli-modules/types.js +3 -0
- package/dist/cli-modules/types.js.map +1 -0
- package/dist/cli-modules/websocket-handler.d.ts +16 -0
- package/dist/cli-modules/websocket-handler.js +53 -0
- package/dist/cli-modules/websocket-handler.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +139 -29
- package/dist/cli.js.map +1 -1
- package/dist/client.d.ts +3 -0
- package/dist/client.js +62 -3
- package/dist/client.js.map +1 -1
- package/dist/code-map/__mocks__/tree-sitter-typescript.d.ts +12 -0
- package/dist/code-map/__mocks__/tree-sitter-typescript.d.ts.map +1 -0
- package/dist/code-map/__mocks__/tree-sitter-typescript.js +14 -0
- package/dist/code-map/__mocks__/tree-sitter-typescript.js.map +1 -0
- package/dist/code-map/__mocks__/wasm-mock.d.ts +2 -0
- package/dist/code-map/__mocks__/wasm-mock.d.ts.map +1 -0
- package/dist/code-map/__mocks__/wasm-mock.js +3 -0
- package/dist/code-map/__mocks__/wasm-mock.js.map +1 -0
- package/dist/code-map/__tests__/parse.test.d.ts +2 -0
- package/dist/code-map/__tests__/parse.test.d.ts.map +1 -0
- package/dist/code-map/__tests__/parse.test.js +231 -0
- package/dist/code-map/__tests__/parse.test.js.map +1 -0
- package/dist/code-map/__tests__/test-langs/consumer.d.ts +2 -0
- package/dist/code-map/__tests__/test-langs/consumer.d.ts.map +1 -0
- package/dist/code-map/__tests__/test-langs/consumer.js +6 -0
- package/dist/code-map/__tests__/test-langs/consumer.js.map +1 -0
- package/dist/code-map/__tests__/test-langs/empty.d.ts +1 -0
- package/dist/code-map/__tests__/test-langs/empty.d.ts.map +1 -0
- package/dist/code-map/__tests__/test-langs/empty.js +2 -0
- package/dist/code-map/__tests__/test-langs/empty.js.map +1 -0
- package/dist/code-map/__tests__/test-langs/test.d.ts +12 -0
- package/dist/code-map/__tests__/test-langs/test.d.ts.map +1 -0
- package/dist/code-map/__tests__/test-langs/test.js +23 -0
- package/dist/code-map/__tests__/test-langs/test.js.map +1 -0
- package/dist/code-map/__tests__/test-langs/unused.d.ts +2 -0
- package/dist/code-map/__tests__/test-langs/unused.d.ts.map +1 -0
- package/dist/code-map/__tests__/test-langs/unused.js +7 -0
- package/dist/code-map/__tests__/test-langs/unused.js.map +1 -0
- package/dist/code-map/__tests__/test-langs/utils1.d.ts +2 -0
- package/dist/code-map/__tests__/test-langs/utils1.d.ts.map +1 -0
- package/dist/code-map/__tests__/test-langs/utils1.js +7 -0
- package/dist/code-map/__tests__/test-langs/utils1.js.map +1 -0
- package/dist/code-map/__tests__/test-langs/utils2.d.ts +2 -0
- package/dist/code-map/__tests__/test-langs/utils2.d.ts.map +1 -0
- package/dist/code-map/__tests__/test-langs/utils2.js +8 -0
- package/dist/code-map/__tests__/test-langs/utils2.js.map +1 -0
- package/dist/code-map/__tests__/tree-sitter-minimal.test.d.ts +2 -0
- package/dist/code-map/__tests__/tree-sitter-minimal.test.d.ts.map +1 -0
- package/dist/code-map/__tests__/tree-sitter-minimal.test.js +79 -0
- package/dist/code-map/__tests__/tree-sitter-minimal.test.js.map +1 -0
- package/dist/code-map/jest.config.d.ts +4 -0
- package/dist/code-map/jest.config.d.ts.map +1 -0
- package/dist/code-map/jest.config.js +18 -0
- package/dist/code-map/jest.config.js.map +1 -0
- package/dist/code-map/parse.test.d.ts +2 -0
- package/dist/code-map/parse.test.d.ts.map +1 -0
- package/dist/code-map/parse.test.js +218 -0
- package/dist/code-map/parse.test.js.map +1 -0
- package/dist/code-map/scripts/tree-sitter-test.cjs +27 -0
- package/dist/code-map/scripts/tree-sitter-test.cjs.map +1 -0
- package/dist/code-map/scripts/tree-sitter-test.d.cts +2 -0
- package/dist/code-map/scripts/tree-sitter-test.d.cts.map +1 -0
- package/dist/code-map/scripts/tree-sitter-test.d.ts +2 -0
- package/dist/code-map/scripts/tree-sitter-test.d.ts.map +1 -0
- package/dist/code-map/scripts/tree-sitter-test.js +54 -0
- package/dist/code-map/scripts/tree-sitter-test.js.map +1 -0
- package/dist/code-map/test-parser.d.ts +2 -0
- package/dist/code-map/test-parser.d.ts.map +1 -0
- package/dist/code-map/test-parser.js +42 -0
- package/dist/code-map/test-parser.js.map +1 -0
- package/dist/code-map/tsconfig.tsbuildinfo +1 -1
- package/dist/common/actions.d.ts +3 -0
- package/dist/common/actions.js +1 -0
- package/dist/common/actions.js.map +1 -1
- package/dist/common/analytics.d.ts +1 -0
- package/dist/common/analytics.js +7 -0
- package/dist/common/analytics.js.map +1 -1
- package/dist/common/bigquery/client.d.ts +15 -0
- package/dist/common/bigquery/client.js +265 -0
- package/dist/common/bigquery/client.js.map +1 -0
- package/dist/common/bigquery/schema.d.ts +55 -0
- package/dist/common/bigquery/schema.js +24 -0
- package/dist/common/bigquery/schema.js.map +1 -0
- package/dist/common/util/changes.d.ts +1 -0
- package/dist/common/util/changes.js +13 -4
- package/dist/common/util/changes.js.map +1 -1
- package/dist/common/util/file-metadata.d.ts +9 -0
- package/dist/common/util/file-metadata.js +24 -0
- package/dist/common/util/file-metadata.js.map +1 -0
- package/dist/common/websockets/websocket-schema.d.ts +10 -0
- package/dist/index.js +4 -4
- package/dist/menu.js +26 -2
- package/dist/menu.js.map +1 -1
- package/dist/project-files.d.ts +2 -1
- package/dist/project-files.js +12 -3
- package/dist/project-files.js.map +1 -1
- package/dist/tool-handlers.js +4 -1
- package/dist/tool-handlers.js.map +1 -1
- package/dist/update-codebuff.js +6 -3
- package/dist/update-codebuff.js.map +1 -1
- package/dist/utils/analytics.d.ts +1 -0
- package/dist/utils/analytics.js +8 -0
- package/dist/utils/analytics.js.map +1 -1
- package/dist/utils/git.d.ts +8 -0
- package/dist/utils/git.js +73 -1
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/logger.js +13 -6
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/terminal.d.ts +3 -2
- package/dist/utils/terminal.js +8 -4
- package/dist/utils/terminal.js.map +1 -1
- package/package.json +4 -3
package/dist/chat-storage.js
CHANGED
|
@@ -80,7 +80,7 @@ function setMessages(messages) {
|
|
|
80
80
|
const chatDir = (0, project_files_1.getCurrentChatDir)();
|
|
81
81
|
const messagesPath = path.join(chatDir, 'messages.json');
|
|
82
82
|
const messagesData = {
|
|
83
|
-
id: project_files_1.
|
|
83
|
+
id: (0, project_files_1.getCurrentChatId)(),
|
|
84
84
|
messages: cleanedMessages,
|
|
85
85
|
updatedAt: new Date().toISOString(),
|
|
86
86
|
};
|
package/dist/chat-storage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-storage.js","sourceRoot":"","sources":["../src/chat-storage.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAQA,kCA+EC;AAvFD,2CAA4B;AAC5B,uCAAwB;AAExB,
|
|
1
|
+
{"version":3,"file":"chat-storage.js","sourceRoot":"","sources":["../src/chat-storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function handleInitializationFlowLocally(): void;
|
|
@@ -0,0 +1,24 @@
|
|
|
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.handleInitializationFlowLocally = handleInitializationFlowLocally;
|
|
7
|
+
const fs_1 = require("fs");
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const constants_1 = require("../common/json-config/constants");
|
|
10
|
+
const project_files_1 = require("../project-files");
|
|
11
|
+
function handleInitializationFlowLocally() {
|
|
12
|
+
const projectRoot = (0, project_files_1.getProjectRoot)();
|
|
13
|
+
// Knowledge file will be created in the backend
|
|
14
|
+
const configPath = path_1.default.join(projectRoot, constants_1.codebuffConfigFile);
|
|
15
|
+
if (!(0, fs_1.existsSync)(configPath)) {
|
|
16
|
+
// Create the config file
|
|
17
|
+
const configContent = {
|
|
18
|
+
description: 'Template configuration for this project. See https://www.codebuff.com/config for all options.',
|
|
19
|
+
startupProcesses: [],
|
|
20
|
+
};
|
|
21
|
+
(0, fs_1.writeFileSync)(configPath, JSON.stringify(configContent, null, 2));
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=initialization-flow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initialization-flow.js","sourceRoot":"","sources":["../../src/cli-handlers/initialization-flow.ts"],"names":[],"mappings":";;;;;AAOA,0EAeC;AAtBD,2BAA8C;AAC9C,gDAAuB;AAEvB,4DAAiE;AAEjE,oDAAiD;AAEjD,SAAgB,+BAA+B;IAC7C,MAAM,WAAW,GAAG,IAAA,8BAAc,GAAE,CAAA;IAEpC,gDAAgD;IAEhD,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,8BAAkB,CAAC,CAAA;IAC7D,IAAI,CAAC,IAAA,eAAU,EAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,yBAAyB;QACzB,MAAM,aAAa,GAAG;YACpB,WAAW,EACT,+FAA+F;YACjG,gBAAgB,EAAE,EAAE;SACrB,CAAA;QACD,IAAA,kBAAa,EAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IACnE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.processCommand = processCommand;
|
|
4
|
+
const analytics_events_1 = require("../common/constants/analytics-events");
|
|
5
|
+
const analytics_1 = require("../utils/analytics");
|
|
6
|
+
const menu_1 = require("../menu");
|
|
7
|
+
const checkpoint_manager_1 = require("../checkpoints/checkpoint-manager");
|
|
8
|
+
const api_key_1 = require("../cli-handlers/api-key");
|
|
9
|
+
const checkpoint_1 = require("../cli-handlers/checkpoint");
|
|
10
|
+
const diff_1 = require("../cli-handlers/diff");
|
|
11
|
+
const easter_egg_1 = require("../cli-handlers/easter-egg");
|
|
12
|
+
const inititalization_flow_1 = require("../cli-handlers/inititalization-flow");
|
|
13
|
+
async function processCommand(cli, userInput) {
|
|
14
|
+
const { client, readyPromise, rl } = cli;
|
|
15
|
+
// freshPrompt is now an arrow function on CLI, so direct reference is fine.
|
|
16
|
+
const freshPromptFn = cli.freshPrompt;
|
|
17
|
+
if (userInput === 'help' || userInput === 'h' || userInput === '/help') {
|
|
18
|
+
(0, menu_1.displayMenu)();
|
|
19
|
+
freshPromptFn();
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
if (userInput === 'login' || userInput === 'signin') {
|
|
23
|
+
await client.login();
|
|
24
|
+
checkpoint_manager_1.checkpointManager.clearCheckpoints();
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
if (userInput === 'logout' || userInput === 'signout') {
|
|
28
|
+
await client.logout();
|
|
29
|
+
freshPromptFn();
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
if (userInput.startsWith('ref-')) {
|
|
33
|
+
await client.handleReferralCode(userInput.trim());
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
const detectionResult = (0, api_key_1.detectApiKey)(userInput);
|
|
37
|
+
if (detectionResult.status !== 'not_found') {
|
|
38
|
+
await (0, api_key_1.handleApiKeyInput)(client, detectionResult, readyPromise, freshPromptFn // Pass the function directly
|
|
39
|
+
);
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
if (userInput === 'usage' || userInput === 'credits') {
|
|
43
|
+
await client.getUsage();
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
if (userInput === 'quit' || userInput === 'exit' || userInput === 'q') {
|
|
47
|
+
rl.close();
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
if (['diff', 'doff', 'dif', 'iff', 'd'].includes(userInput)) {
|
|
51
|
+
(0, diff_1.handleDiff)(client.lastChanges);
|
|
52
|
+
freshPromptFn();
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
if (userInput === 'uuddlrlrba' ||
|
|
56
|
+
userInput === 'konami' ||
|
|
57
|
+
userInput === 'codebuffy') {
|
|
58
|
+
(0, easter_egg_1.showEasterEgg)(freshPromptFn); // Pass the function directly
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
if ((0, checkpoint_1.isCheckpointCommand)(userInput)) {
|
|
62
|
+
(0, analytics_1.trackEvent)(analytics_events_1.AnalyticsEvent.CHECKPOINT_COMMAND_USED, {
|
|
63
|
+
command: userInput,
|
|
64
|
+
});
|
|
65
|
+
if ((0, checkpoint_1.isCheckpointCommand)(userInput, 'undo')) {
|
|
66
|
+
await (0, checkpoint_1.saveCheckpoint)(userInput, client, readyPromise);
|
|
67
|
+
const toRestore = await (0, checkpoint_1.handleUndo)(client, rl);
|
|
68
|
+
freshPromptFn(toRestore);
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
if ((0, checkpoint_1.isCheckpointCommand)(userInput, 'redo')) {
|
|
72
|
+
await (0, checkpoint_1.saveCheckpoint)(userInput, client, readyPromise);
|
|
73
|
+
const toRestore = await (0, checkpoint_1.handleRedo)(client, rl);
|
|
74
|
+
freshPromptFn(toRestore);
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
if ((0, checkpoint_1.isCheckpointCommand)(userInput, 'list')) {
|
|
78
|
+
await (0, checkpoint_1.saveCheckpoint)(userInput, client, readyPromise);
|
|
79
|
+
await (0, checkpoint_1.listCheckpoints)();
|
|
80
|
+
freshPromptFn();
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
const restoreMatch = (0, checkpoint_1.isCheckpointCommand)(userInput, 'restore');
|
|
84
|
+
if (restoreMatch) {
|
|
85
|
+
const id = parseInt(restoreMatch[1], 10);
|
|
86
|
+
await (0, checkpoint_1.saveCheckpoint)(userInput, client, readyPromise);
|
|
87
|
+
const toRestore = await (0, checkpoint_1.handleRestoreCheckpoint)(id, client, rl);
|
|
88
|
+
freshPromptFn(toRestore);
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
if ((0, checkpoint_1.isCheckpointCommand)(userInput, 'clear')) {
|
|
92
|
+
(0, checkpoint_1.handleClearCheckpoints)();
|
|
93
|
+
freshPromptFn();
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
if ((0, checkpoint_1.isCheckpointCommand)(userInput, 'save')) {
|
|
97
|
+
await (0, checkpoint_1.saveCheckpoint)(userInput, client, readyPromise, true);
|
|
98
|
+
(0, checkpoint_1.displayCheckpointMenu)();
|
|
99
|
+
freshPromptFn();
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
(0, checkpoint_1.displayCheckpointMenu)();
|
|
103
|
+
freshPromptFn();
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
if (userInput === 'init') {
|
|
107
|
+
(0, inititalization_flow_1.handleInitializationFlowLocally)();
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=command-processor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-processor.js","sourceRoot":"","sources":["../../src/cli-modules/command-processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleLineInput = handleLineInput;
|
|
4
|
+
exports.handleKeyPressInput = handleKeyPressInput;
|
|
5
|
+
exports.attachInputEventHandlers = attachInputEventHandlers;
|
|
6
|
+
const readline_handler_1 = require("./readline-handler"); // For handleLine
|
|
7
|
+
// State variables that were previously in CLI, now managed here or passed via CLI instance
|
|
8
|
+
// For simplicity, we'll access them via the CLI instance passed to functions.
|
|
9
|
+
function detectPasting(cli) {
|
|
10
|
+
const currentTime = Date.now();
|
|
11
|
+
// Accessing and modifying CLI instance properties directly.
|
|
12
|
+
// Consider if these should be passed and returned if more functional style is preferred.
|
|
13
|
+
const timeDiff = currentTime - cli['lastInputTime']; // Private access via string key
|
|
14
|
+
if (timeDiff < 10) {
|
|
15
|
+
cli['consecutiveFastInputs']++;
|
|
16
|
+
if (cli['consecutiveFastInputs'] >= 2) {
|
|
17
|
+
cli['isPasting'] = true;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
cli['consecutiveFastInputs'] = 0;
|
|
22
|
+
if (cli['isPasting']) {
|
|
23
|
+
cli['isPasting'] = false;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
cli['lastInputTime'] = currentTime;
|
|
27
|
+
}
|
|
28
|
+
async function handleLineInput(cli, line) {
|
|
29
|
+
detectPasting(cli); // detectPasting will modify cli.isPasting and cli.pastedContent
|
|
30
|
+
if (cli['isPasting']) {
|
|
31
|
+
cli['pastedContent'] += line + '\n';
|
|
32
|
+
}
|
|
33
|
+
else if (!cli.isReceivingResponse) { // isReceivingResponse is public
|
|
34
|
+
const input = (cli['pastedContent'] + line).trim();
|
|
35
|
+
cli['pastedContent'] = '';
|
|
36
|
+
// Directly call a method on cli that was originally handleUserInput
|
|
37
|
+
// For now, assuming handleUserInput is still on CLI and public/accessible.
|
|
38
|
+
// If handleUserInput is also refactored, this call will change.
|
|
39
|
+
await cli['handleUserInput'](input); // Private access for now
|
|
40
|
+
(0, readline_handler_1.appendToHistory)(input);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function handleKeyPressInput(cli, str, key) {
|
|
44
|
+
// ESC key is handled by signal-handler. This only handles other specific keypresses.
|
|
45
|
+
if (!cli['isPasting'] &&
|
|
46
|
+
str === ' ' &&
|
|
47
|
+
'_refreshLine' in cli.rl && // rl is public
|
|
48
|
+
'line' in cli.rl &&
|
|
49
|
+
'cursor' in cli.rl) {
|
|
50
|
+
const rlAny = cli.rl;
|
|
51
|
+
const { cursor, line } = rlAny;
|
|
52
|
+
const prevTwoChars = cursor > 1 ? line.slice(cursor - 2, cursor) : '';
|
|
53
|
+
if (prevTwoChars === ' ') {
|
|
54
|
+
rlAny.line = line.slice(0, cursor - 2) + '\n\n' + line.slice(cursor);
|
|
55
|
+
rlAny._refreshLine();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
detectPasting(cli); // Also call detectPasting on keypress
|
|
59
|
+
}
|
|
60
|
+
// This function will be called from CLI to attach specific readline and keypress events
|
|
61
|
+
function attachInputEventHandlers(cli) {
|
|
62
|
+
cli.rl.on('line', (line) => handleLineInput(cli, line));
|
|
63
|
+
// process.stdin.on('keypress') is already set up by signal-handler for ESC.
|
|
64
|
+
// We need to ensure that this new keypress handler for other keys
|
|
65
|
+
// doesn't conflict or override it.
|
|
66
|
+
// A better approach might be a single keypress dispatcher in CLI
|
|
67
|
+
// that calls out to signal-handler for ESC and input-handler for others.
|
|
68
|
+
// For now, let's assume signal-handler's keypress is specific enough.
|
|
69
|
+
// Or, we can have this module handle all non-ESC keypresses.
|
|
70
|
+
// The current handleKeyPress in CLI will be replaced by this.
|
|
71
|
+
// The signal-handler's attachCliBehaviorEventHandlers already sets up a keypress listener for ESC.
|
|
72
|
+
// We need to make sure this doesn't add a second one or that they coordinate.
|
|
73
|
+
// Let's modify CLI's handleKeyPress to call this.
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=input-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-handler.js","sourceRoot":"","sources":["../../src/cli-modules/input-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as readline from 'readline';
|
|
2
|
+
import type { Client } from '../client';
|
|
3
|
+
export declare function loadHistory(): string[];
|
|
4
|
+
export declare function appendToHistory(line: string): void;
|
|
5
|
+
export declare function filePathCompleter(line: string): [string[], string];
|
|
6
|
+
export declare function setPrompt(rl: readline.Interface): void;
|
|
7
|
+
export declare function freshPrompt(rl: readline.Interface, client: Client, // Pass client instance
|
|
8
|
+
shouldReconnectWhenIdle: boolean, // Pass this state
|
|
9
|
+
onReconnect: () => void, // Callback for reconnection
|
|
10
|
+
userInput?: string): void;
|
|
11
|
+
export declare function initReadline(cliInstance: any): readline.Interface;
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.loadHistory = loadHistory;
|
|
30
|
+
exports.appendToHistory = appendToHistory;
|
|
31
|
+
exports.filePathCompleter = filePathCompleter;
|
|
32
|
+
exports.setPrompt = setPrompt;
|
|
33
|
+
exports.freshPrompt = freshPrompt;
|
|
34
|
+
exports.initReadline = initReadline;
|
|
35
|
+
const fs_1 = __importDefault(require("fs"));
|
|
36
|
+
const path_1 = __importStar(require("path"));
|
|
37
|
+
const readline = __importStar(require("readline"));
|
|
38
|
+
const os = __importStar(require("os"));
|
|
39
|
+
const os_1 = require("os");
|
|
40
|
+
const fs_2 = require("fs");
|
|
41
|
+
const picocolors_1 = require("picocolors");
|
|
42
|
+
const lodash_1 = require("lodash");
|
|
43
|
+
const credentials_1 = require("../credentials");
|
|
44
|
+
const project_files_1 = require("../project-files");
|
|
45
|
+
const spinner_1 = require("../utils/spinner");
|
|
46
|
+
const display_1 = require("../display");
|
|
47
|
+
const PROMPT_HISTORY_PATH = path_1.default.join(credentials_1.CONFIG_DIR, 'prompt_history.json');
|
|
48
|
+
function loadHistory() {
|
|
49
|
+
try {
|
|
50
|
+
if (fs_1.default.existsSync(PROMPT_HISTORY_PATH)) {
|
|
51
|
+
const content = fs_1.default.readFileSync(PROMPT_HISTORY_PATH, 'utf8');
|
|
52
|
+
const history = JSON.parse(content);
|
|
53
|
+
return (0, lodash_1.uniq)(history.filter((line) => line.trim())).reverse();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
console.error('Error loading prompt history:', error);
|
|
58
|
+
fs_1.default.writeFileSync(PROMPT_HISTORY_PATH, '[]');
|
|
59
|
+
}
|
|
60
|
+
return [];
|
|
61
|
+
}
|
|
62
|
+
function appendToHistory(line) {
|
|
63
|
+
try {
|
|
64
|
+
let history = [];
|
|
65
|
+
if (fs_1.default.existsSync(PROMPT_HISTORY_PATH)) {
|
|
66
|
+
const content = fs_1.default.readFileSync(PROMPT_HISTORY_PATH, 'utf8');
|
|
67
|
+
history = JSON.parse(content);
|
|
68
|
+
}
|
|
69
|
+
if (line.trim() && !history.includes(line)) {
|
|
70
|
+
history.push(line);
|
|
71
|
+
fs_1.default.writeFileSync(PROMPT_HISTORY_PATH, JSON.stringify(history, null, 2));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
console.error('Error appending to prompt history:', error);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
function filePathCompleter(line) {
|
|
79
|
+
const lastWord = line.split(' ').pop() || '';
|
|
80
|
+
const input = lastWord.startsWith('~')
|
|
81
|
+
? (0, os_1.homedir)() + lastWord.slice(1)
|
|
82
|
+
: lastWord;
|
|
83
|
+
const directorySuffix = process.platform === 'win32' ? '\\' : '/';
|
|
84
|
+
const dir = input.endsWith(directorySuffix)
|
|
85
|
+
? input.slice(0, input.length - 1)
|
|
86
|
+
: (0, path_1.dirname)(input);
|
|
87
|
+
const partial = input.endsWith(directorySuffix) ? '' : (0, path_1.basename)(input);
|
|
88
|
+
let baseDir = (0, path_1.isAbsolute)(dir) ? dir : path_1.default.join((0, project_files_1.getWorkingDirectory)(), dir);
|
|
89
|
+
try {
|
|
90
|
+
const files = (0, fs_2.readdirSync)(baseDir);
|
|
91
|
+
const matches = files
|
|
92
|
+
.filter((file) => file.startsWith(partial))
|
|
93
|
+
.map((file) => file + ((0, project_files_1.isDir)(path_1.default.join(baseDir, file)) ? directorySuffix : ''));
|
|
94
|
+
return [matches, partial];
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
return [[], line];
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
function setPrompt(rl) {
|
|
101
|
+
const projectRoot = (0, project_files_1.getProjectRoot)();
|
|
102
|
+
const cwd = (0, project_files_1.getWorkingDirectory)();
|
|
103
|
+
const projectDirName = path_1.default.parse(projectRoot).base;
|
|
104
|
+
const ps1Dir = projectDirName +
|
|
105
|
+
(cwd === projectRoot
|
|
106
|
+
? ''
|
|
107
|
+
: (os.platform() === 'win32' ? '\\' : '/') +
|
|
108
|
+
path_1.default.relative(projectRoot, cwd));
|
|
109
|
+
rl.setPrompt((0, picocolors_1.green)(`${ps1Dir} > `));
|
|
110
|
+
}
|
|
111
|
+
function freshPrompt(rl, client, // Pass client instance
|
|
112
|
+
shouldReconnectWhenIdle, // Pass this state
|
|
113
|
+
onReconnect, // Callback for reconnection
|
|
114
|
+
userInput = '') {
|
|
115
|
+
spinner_1.Spinner.get().stop();
|
|
116
|
+
// this.isReceivingResponse = false; // This state will be managed in CLI class
|
|
117
|
+
if (shouldReconnectWhenIdle) {
|
|
118
|
+
client.reconnect(); // Call client's reconnect method
|
|
119
|
+
onReconnect(); // Call the passed onReconnect callback
|
|
120
|
+
}
|
|
121
|
+
readline.cursorTo(process.stdout, 0);
|
|
122
|
+
const rlAny = rl;
|
|
123
|
+
if (client.pendingTopUpMessageAmount > 0) {
|
|
124
|
+
console.log('\n\n' +
|
|
125
|
+
(0, picocolors_1.green)(`Auto top-up successful! ${client.pendingTopUpMessageAmount.toLocaleString()} credits added.`) +
|
|
126
|
+
'\n');
|
|
127
|
+
client.pendingTopUpMessageAmount = 0;
|
|
128
|
+
}
|
|
129
|
+
rlAny.line = '';
|
|
130
|
+
setPrompt(rl);
|
|
131
|
+
rl.prompt();
|
|
132
|
+
(0, display_1.disableSquashNewlines)();
|
|
133
|
+
if (!userInput) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
rl.write(' '.repeat(userInput.length));
|
|
137
|
+
rlAny.line = userInput;
|
|
138
|
+
rlAny._refreshLine();
|
|
139
|
+
}
|
|
140
|
+
function initReadline(cliInstance // Using 'any' for now, will refine later
|
|
141
|
+
) {
|
|
142
|
+
const rl = readline.createInterface({
|
|
143
|
+
input: process.stdin,
|
|
144
|
+
output: process.stdout,
|
|
145
|
+
historySize: 1000,
|
|
146
|
+
terminal: true,
|
|
147
|
+
completer: filePathCompleter,
|
|
148
|
+
});
|
|
149
|
+
const history = loadHistory();
|
|
150
|
+
rl.history.push(...history);
|
|
151
|
+
// Event handlers will be attached in the CLI class or a dedicated input handler module
|
|
152
|
+
// rl.on('line', (line) => cliInstance.handleLine(line));
|
|
153
|
+
// rl.on('SIGINT', async () => await cliInstance.handleSigint());
|
|
154
|
+
// rl.on('close', async () => await cliInstance.handleExit());
|
|
155
|
+
// process.stdin.on('keypress', (str, key) => cliInstance.handleKeyPress(str, key));
|
|
156
|
+
return rl;
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=readline-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readline-handler.js","sourceRoot":"","sources":["../../src/cli-modules/readline-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { CLI } from '../cli';
|
|
2
|
+
export declare function handleStopResponse(cli: CLI): void;
|
|
3
|
+
export declare function handleExit(cli: CLI): Promise<void>;
|
|
4
|
+
export declare function handleSigint(cli: CLI): Promise<void>;
|
|
5
|
+
export declare function handleEscKey(cli: CLI): void;
|
|
6
|
+
export declare function setupSignalHandlers(cli: CLI): void;
|
|
7
|
+
export declare function attachCliBehaviorEventHandlers(cli: CLI): void;
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleStopResponse = handleStopResponse;
|
|
4
|
+
exports.handleExit = handleExit;
|
|
5
|
+
exports.handleSigint = handleSigint;
|
|
6
|
+
exports.handleEscKey = handleEscKey;
|
|
7
|
+
exports.setupSignalHandlers = setupSignalHandlers;
|
|
8
|
+
exports.attachCliBehaviorEventHandlers = attachCliBehaviorEventHandlers;
|
|
9
|
+
const picocolors_1 = require("picocolors");
|
|
10
|
+
const string_1 = require("../common/util/string");
|
|
11
|
+
const background_process_manager_1 = require("../background-process-manager");
|
|
12
|
+
const analytics_1 = require("../utils/analytics");
|
|
13
|
+
const spinner_1 = require("../utils/spinner");
|
|
14
|
+
const terminal_1 = require("../utils/terminal");
|
|
15
|
+
const project_files_1 = require("../project-files");
|
|
16
|
+
// Helper function to access CLI properties safely
|
|
17
|
+
function getCliProperties(cli) {
|
|
18
|
+
return {
|
|
19
|
+
rl: cli.rl,
|
|
20
|
+
isReceivingResponse: cli.isReceivingResponse,
|
|
21
|
+
stopResponse: cli.stopResponse,
|
|
22
|
+
client: cli.client,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
let lastSigintTime = 0;
|
|
26
|
+
function handleStopResponse(cli) {
|
|
27
|
+
console.log((0, picocolors_1.yellow)('\n[Response stopped by user]'));
|
|
28
|
+
cli.isReceivingResponse = false;
|
|
29
|
+
if (cli.stopResponse) {
|
|
30
|
+
cli.stopResponse();
|
|
31
|
+
cli.stopResponse = null;
|
|
32
|
+
}
|
|
33
|
+
spinner_1.Spinner.get().stop();
|
|
34
|
+
}
|
|
35
|
+
async function handleExit(cli) {
|
|
36
|
+
spinner_1.Spinner.get().restoreCursor();
|
|
37
|
+
process.removeAllListeners('unhandledRejection');
|
|
38
|
+
process.removeAllListeners('uncaughtException');
|
|
39
|
+
console.log('\n');
|
|
40
|
+
(0, terminal_1.killAndResetPersistentProcess)();
|
|
41
|
+
await (0, background_process_manager_1.killAllBackgroundProcesses)();
|
|
42
|
+
const logMessages = [];
|
|
43
|
+
const { client } = getCliProperties(cli);
|
|
44
|
+
if (client && client.creditsByPromptId && client.usageData) {
|
|
45
|
+
const totalCreditsUsedThisSession = Object.values(client.creditsByPromptId)
|
|
46
|
+
.flat()
|
|
47
|
+
.reduce((sum, credits) => sum + credits, 0);
|
|
48
|
+
logMessages.push(`${(0, string_1.pluralize)(totalCreditsUsedThisSession, 'credit')} used this session${client.usageData.remainingBalance !== null
|
|
49
|
+
? `, ${client.usageData.remainingBalance.toLocaleString()} credits left.`
|
|
50
|
+
: '.'}`);
|
|
51
|
+
if (client.usageData.next_quota_reset) {
|
|
52
|
+
const daysUntilReset = Math.ceil((new Date(client.usageData.next_quota_reset).getTime() - Date.now()) /
|
|
53
|
+
(1000 * 60 * 60 * 24));
|
|
54
|
+
logMessages.push(`Your free credits will reset in ${(0, string_1.pluralize)(daysUntilReset, 'day')}.`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
logMessages.push("Exiting Codebuff.");
|
|
59
|
+
}
|
|
60
|
+
console.log(logMessages.join(' '));
|
|
61
|
+
await (0, analytics_1.flushAnalytics)();
|
|
62
|
+
process.exit(0);
|
|
63
|
+
}
|
|
64
|
+
async function handleSigint(cli) {
|
|
65
|
+
const { rl, isReceivingResponse } = getCliProperties(cli);
|
|
66
|
+
if ((0, terminal_1.isCommandRunning)()) {
|
|
67
|
+
(0, terminal_1.resetShell)((0, project_files_1.getProjectRoot)());
|
|
68
|
+
}
|
|
69
|
+
if ('line' in rl) {
|
|
70
|
+
rl.line = '';
|
|
71
|
+
}
|
|
72
|
+
if (isReceivingResponse) {
|
|
73
|
+
handleStopResponse(cli);
|
|
74
|
+
cli.freshPrompt();
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
const now = Date.now();
|
|
78
|
+
if (now - lastSigintTime < 5000) {
|
|
79
|
+
await handleExit(cli);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
lastSigintTime = now;
|
|
83
|
+
console.log('\nPress Ctrl-C again to exit');
|
|
84
|
+
cli.freshPrompt();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
function handleEscKey(cli) {
|
|
89
|
+
const { isReceivingResponse } = getCliProperties(cli);
|
|
90
|
+
if (isReceivingResponse) {
|
|
91
|
+
handleStopResponse(cli);
|
|
92
|
+
cli.freshPrompt();
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
function setupSignalHandlers(cli) {
|
|
96
|
+
process.on('exit', () => {
|
|
97
|
+
spinner_1.Spinner.get().restoreCursor();
|
|
98
|
+
if (terminal_1.persistentProcess?.type === 'pty') {
|
|
99
|
+
terminal_1.persistentProcess.pty.kill();
|
|
100
|
+
}
|
|
101
|
+
(0, background_process_manager_1.sendKillSignalToAllBackgroundProcesses)();
|
|
102
|
+
});
|
|
103
|
+
for (const signal of ['SIGTERM', 'SIGHUP']) {
|
|
104
|
+
process.on(signal, async () => {
|
|
105
|
+
spinner_1.Spinner.get().restoreCursor();
|
|
106
|
+
await (0, background_process_manager_1.killAllBackgroundProcesses)();
|
|
107
|
+
await (0, analytics_1.flushAnalytics)();
|
|
108
|
+
process.exit(0);
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
process.on('SIGTSTP', async () => await handleExit(cli));
|
|
112
|
+
}
|
|
113
|
+
function attachCliBehaviorEventHandlers(cli) {
|
|
114
|
+
cli.rl.on('SIGINT', async () => await handleSigint(cli));
|
|
115
|
+
cli.rl.on('close', async () => await handleExit(cli));
|
|
116
|
+
process.stdin.on('keypress', (str, key) => {
|
|
117
|
+
if (key.name === 'escape') {
|
|
118
|
+
handleEscKey(cli);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
// Dispatch other key presses to the CLI's central key press handler
|
|
122
|
+
if (cli.dispatchKeyPress) { // Check if method exists
|
|
123
|
+
cli.dispatchKeyPress(str, key);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=signal-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal-handler.js","sourceRoot":"","sources":["../../src/cli-modules/signal-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Interface as ReadlineInterface } from 'readline';
|
|
2
|
+
import { Client } from '../client';
|
|
3
|
+
import { CostMode } from '../common/constants';
|
|
4
|
+
import { GitCommand } from '../types';
|
|
5
|
+
/**
|
|
6
|
+
* Base options interface that contains properties shared across multiple handlers
|
|
7
|
+
*/
|
|
8
|
+
export interface BaseHandlerOptions {
|
|
9
|
+
client: Client;
|
|
10
|
+
rl: ReadlineInterface;
|
|
11
|
+
freshPrompt: (userInput?: string) => void;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Options for ReadlineHandler initialization
|
|
15
|
+
*/
|
|
16
|
+
export interface ReadlineHandlerOptions extends BaseHandlerOptions {
|
|
17
|
+
historyPath: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Options for InputHandler initialization
|
|
21
|
+
*/
|
|
22
|
+
export interface InputHandlerOptions extends BaseHandlerOptions {
|
|
23
|
+
isReceivingResponse: boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Options for CommandProcessor initialization
|
|
27
|
+
*/
|
|
28
|
+
export interface CommandProcessorOptions extends BaseHandlerOptions {
|
|
29
|
+
readyPromise: Promise<any>;
|
|
30
|
+
costMode: CostMode;
|
|
31
|
+
git: GitCommand;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Options for SignalHandler initialization
|
|
35
|
+
*/
|
|
36
|
+
export interface SignalHandlerOptions extends BaseHandlerOptions {
|
|
37
|
+
onExit: () => Promise<void>;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Options for WebSocketHandler initialization
|
|
41
|
+
*/
|
|
42
|
+
export interface WebSocketHandlerOptions extends BaseHandlerOptions {
|
|
43
|
+
isReceivingResponse: boolean;
|
|
44
|
+
shouldReconnectWhenIdle: boolean;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Common interface for all handlers
|
|
48
|
+
*/
|
|
49
|
+
export interface Handler {
|
|
50
|
+
cleanup?: () => Promise<void>;
|
|
51
|
+
}
|