codebuff 1.0.275 → 1.0.277
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/code-map/tsconfig.tsbuildinfo +1 -1
- package/dist/common/__tests__/project-file-tree.test.d.ts +1 -0
- package/dist/common/__tests__/project-file-tree.test.js +251 -0
- package/dist/common/__tests__/project-file-tree.test.js.map +1 -0
- package/dist/common/actions.d.ts +28 -28
- package/dist/common/constants.d.ts +5 -5
- package/dist/common/constants.js +7 -7
- package/dist/common/constants.js.map +1 -1
- package/dist/common/json-config/__tests__/__snapshots__/stringify-schema.test.js.snap +119 -0
- package/dist/common/util/file.js +3 -6
- package/dist/common/util/file.js.map +1 -1
- package/dist/common/util/process-stream.d.ts +7 -0
- package/dist/common/util/process-stream.js +162 -0
- package/dist/common/util/process-stream.js.map +1 -0
- package/dist/common/util/saxy.js +2 -2
- package/dist/common/util/saxy.js.map +1 -1
- package/dist/common/websockets/websocket-schema.d.ts +48 -48
- package/dist/index.js +20 -2
- package/dist/utils/__tests__/__snapshots__/background-process-manager.test.js.snap +137 -0
- package/dist/utils/__tests__/file-paths.test.d.ts +1 -0
- package/dist/utils/__tests__/file-paths.test.js +37 -0
- package/dist/utils/__tests__/file-paths.test.js.map +1 -0
- package/dist/utils/__tests__/path.test.d.ts +1 -0
- package/dist/utils/__tests__/path.test.js +37 -0
- package/dist/utils/__tests__/path.test.js.map +1 -0
- package/dist/utils/__tests__/tool-renderers.test.js +12 -4
- package/dist/utils/__tests__/tool-renderers.test.js.map +1 -1
- package/dist/utils/file-paths.d.ts +9 -0
- package/dist/utils/file-paths.js +24 -0
- package/dist/utils/file-paths.js.map +1 -0
- package/dist/utils/path.d.ts +9 -0
- package/dist/utils/path.js +27 -0
- package/dist/utils/path.js.map +1 -0
- package/package.json +1 -1
- package/dist/cli-handlers/initialization-flow.d.ts +0 -1
- package/dist/cli-handlers/initialization-flow.js +0 -24
- package/dist/cli-handlers/initialization-flow.js.map +0 -1
- package/dist/cli-modules/command-processor.d.ts +0 -12
- package/dist/cli-modules/command-processor.js +0 -129
- package/dist/cli-modules/command-processor.js.map +0 -1
- package/dist/cli-modules/input-handler.d.ts +0 -20
- package/dist/cli-modules/input-handler.js +0 -98
- package/dist/cli-modules/input-handler.js.map +0 -1
- package/dist/cli-modules/readline-handler.d.ts +0 -17
- package/dist/cli-modules/readline-handler.js +0 -134
- package/dist/cli-modules/readline-handler.js.map +0 -1
- package/dist/cli-modules/signal-handler.d.ts +0 -13
- package/dist/cli-modules/signal-handler.js +0 -69
- package/dist/cli-modules/signal-handler.js.map +0 -1
- package/dist/cli-modules/types.d.ts +0 -51
- package/dist/cli-modules/types.js +0 -3
- package/dist/cli-modules/types.js.map +0 -1
- package/dist/cli-modules/websocket-handler.d.ts +0 -16
- package/dist/cli-modules/websocket-handler.js +0 -53
- package/dist/cli-modules/websocket-handler.js.map +0 -1
- package/dist/code-map/__mocks__/tree-sitter-typescript.d.ts +0 -12
- package/dist/code-map/__mocks__/tree-sitter-typescript.d.ts.map +0 -1
- package/dist/code-map/__mocks__/tree-sitter-typescript.js +0 -14
- package/dist/code-map/__mocks__/tree-sitter-typescript.js.map +0 -1
- package/dist/code-map/__mocks__/wasm-mock.d.ts +0 -2
- package/dist/code-map/__mocks__/wasm-mock.d.ts.map +0 -1
- package/dist/code-map/__mocks__/wasm-mock.js +0 -3
- package/dist/code-map/__mocks__/wasm-mock.js.map +0 -1
- package/dist/code-map/__tests__/parse.test.d.ts +0 -2
- package/dist/code-map/__tests__/parse.test.d.ts.map +0 -1
- package/dist/code-map/__tests__/parse.test.js +0 -231
- package/dist/code-map/__tests__/parse.test.js.map +0 -1
- package/dist/code-map/__tests__/test-langs/consumer.d.ts +0 -2
- package/dist/code-map/__tests__/test-langs/consumer.d.ts.map +0 -1
- package/dist/code-map/__tests__/test-langs/consumer.js +0 -6
- package/dist/code-map/__tests__/test-langs/consumer.js.map +0 -1
- package/dist/code-map/__tests__/test-langs/empty.d.ts +0 -1
- package/dist/code-map/__tests__/test-langs/empty.d.ts.map +0 -1
- package/dist/code-map/__tests__/test-langs/empty.js +0 -2
- package/dist/code-map/__tests__/test-langs/empty.js.map +0 -1
- package/dist/code-map/__tests__/test-langs/test.d.ts +0 -12
- package/dist/code-map/__tests__/test-langs/test.d.ts.map +0 -1
- package/dist/code-map/__tests__/test-langs/test.js +0 -23
- package/dist/code-map/__tests__/test-langs/test.js.map +0 -1
- package/dist/code-map/__tests__/test-langs/unused.d.ts +0 -2
- package/dist/code-map/__tests__/test-langs/unused.d.ts.map +0 -1
- package/dist/code-map/__tests__/test-langs/unused.js +0 -7
- package/dist/code-map/__tests__/test-langs/unused.js.map +0 -1
- package/dist/code-map/__tests__/test-langs/utils1.d.ts +0 -2
- package/dist/code-map/__tests__/test-langs/utils1.d.ts.map +0 -1
- package/dist/code-map/__tests__/test-langs/utils1.js +0 -7
- package/dist/code-map/__tests__/test-langs/utils1.js.map +0 -1
- package/dist/code-map/__tests__/test-langs/utils2.d.ts +0 -2
- package/dist/code-map/__tests__/test-langs/utils2.d.ts.map +0 -1
- package/dist/code-map/__tests__/test-langs/utils2.js +0 -8
- package/dist/code-map/__tests__/test-langs/utils2.js.map +0 -1
- package/dist/code-map/__tests__/tree-sitter-minimal.test.d.ts +0 -2
- package/dist/code-map/__tests__/tree-sitter-minimal.test.d.ts.map +0 -1
- package/dist/code-map/__tests__/tree-sitter-minimal.test.js +0 -79
- package/dist/code-map/__tests__/tree-sitter-minimal.test.js.map +0 -1
- package/dist/code-map/jest.config.d.ts +0 -4
- package/dist/code-map/jest.config.d.ts.map +0 -1
- package/dist/code-map/jest.config.js +0 -18
- package/dist/code-map/jest.config.js.map +0 -1
- package/dist/code-map/parse.test.d.ts +0 -2
- package/dist/code-map/parse.test.d.ts.map +0 -1
- package/dist/code-map/parse.test.js +0 -218
- package/dist/code-map/parse.test.js.map +0 -1
- package/dist/code-map/scripts/tree-sitter-test.cjs +0 -27
- package/dist/code-map/scripts/tree-sitter-test.cjs.map +0 -1
- package/dist/code-map/scripts/tree-sitter-test.d.cts +0 -2
- package/dist/code-map/scripts/tree-sitter-test.d.cts.map +0 -1
- package/dist/code-map/scripts/tree-sitter-test.d.ts +0 -2
- package/dist/code-map/scripts/tree-sitter-test.d.ts.map +0 -1
- package/dist/code-map/scripts/tree-sitter-test.js +0 -54
- package/dist/code-map/scripts/tree-sitter-test.js.map +0 -1
- package/dist/code-map/test-parser.d.ts +0 -2
- package/dist/code-map/test-parser.d.ts.map +0 -1
- package/dist/code-map/test-parser.js +0 -42
- package/dist/code-map/test-parser.js.map +0 -1
- package/dist/common/bigquery/client.d.ts +0 -15
- package/dist/common/bigquery/client.js +0 -265
- package/dist/common/bigquery/client.js.map +0 -1
- package/dist/common/bigquery/schema.d.ts +0 -55
- package/dist/common/bigquery/schema.js +0 -24
- package/dist/common/bigquery/schema.js.map +0 -1
- package/dist/common/util/file-metadata.d.ts +0 -9
- package/dist/common/util/file-metadata.js +0 -24
- package/dist/common/util/file-metadata.js.map +0 -1
|
@@ -0,0 +1,37 @@
|
|
|
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
|
+
const path_1 = require("../path");
|
|
7
|
+
const path_2 = __importDefault(require("path"));
|
|
8
|
+
describe('toAbsolutePath', () => {
|
|
9
|
+
const projectRoot = '/home/user/project';
|
|
10
|
+
it('should handle relative paths', () => {
|
|
11
|
+
expect((0, path_1.toAbsolutePath)('src/file.ts', projectRoot))
|
|
12
|
+
.toBe(path_2.default.normalize(path_2.default.join(projectRoot, 'src/file.ts')));
|
|
13
|
+
});
|
|
14
|
+
it('should handle parent directory references', () => {
|
|
15
|
+
expect((0, path_1.toAbsolutePath)('../file.ts', projectRoot))
|
|
16
|
+
.toBe(path_2.default.normalize(path_2.default.join(path_2.default.dirname(projectRoot), 'file.ts')));
|
|
17
|
+
});
|
|
18
|
+
it('should handle current directory references', () => {
|
|
19
|
+
expect((0, path_1.toAbsolutePath)('./file.ts', projectRoot))
|
|
20
|
+
.toBe(path_2.default.normalize(path_2.default.join(projectRoot, 'file.ts')));
|
|
21
|
+
});
|
|
22
|
+
it('should return absolute paths unchanged', () => {
|
|
23
|
+
const absolutePath = '/absolute/path/file.ts';
|
|
24
|
+
expect((0, path_1.toAbsolutePath)(absolutePath, projectRoot))
|
|
25
|
+
.toBe(path_2.default.normalize(absolutePath));
|
|
26
|
+
});
|
|
27
|
+
it('should handle Windows-style paths', () => {
|
|
28
|
+
const winPath = 'src\\file.ts';
|
|
29
|
+
expect((0, path_1.toAbsolutePath)(winPath, projectRoot))
|
|
30
|
+
.toBe(path_2.default.normalize(path_2.default.join(projectRoot, 'src/file.ts')));
|
|
31
|
+
});
|
|
32
|
+
it('should normalize paths with multiple slashes', () => {
|
|
33
|
+
expect((0, path_1.toAbsolutePath)('src//file.ts', projectRoot))
|
|
34
|
+
.toBe(path_2.default.normalize(path_2.default.join(projectRoot, 'src/file.ts')));
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=path.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/path.test.ts"],"names":[],"mappings":";;;;;AAAA,kCAAwC;AACxC,gDAAuB;AAEvB,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,MAAM,WAAW,GAAG,oBAAoB,CAAA;IAExC,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CAAC,IAAA,qBAAc,EAAC,aAAa,EAAE,WAAW,CAAC,CAAC;aAC/C,IAAI,CAAC,cAAI,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IAChE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,CAAC,IAAA,qBAAc,EAAC,YAAY,EAAE,WAAW,CAAC,CAAC;aAC9C,IAAI,CAAC,cAAI,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,cAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;IAC1E,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,IAAA,qBAAc,EAAC,WAAW,EAAE,WAAW,CAAC,CAAC;aAC7C,IAAI,CAAC,cAAI,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;IAC5D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,YAAY,GAAG,wBAAwB,CAAA;QAC7C,MAAM,CAAC,IAAA,qBAAc,EAAC,YAAY,EAAE,WAAW,CAAC,CAAC;aAC9C,IAAI,CAAC,cAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,OAAO,GAAG,cAAc,CAAA;QAC9B,MAAM,CAAC,IAAA,qBAAc,EAAC,OAAO,EAAE,WAAW,CAAC,CAAC;aACzC,IAAI,CAAC,cAAI,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IAChE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,IAAA,qBAAc,EAAC,cAAc,EAAE,WAAW,CAAC,CAAC;aAChD,IAAI,CAAC,cAAI,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;IAChE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -29,14 +29,22 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
29
29
|
const stream_1 = require("stream");
|
|
30
30
|
// @ts-ignore
|
|
31
31
|
const bun_test_1 = require("bun:test");
|
|
32
|
+
// @ts-ignore
|
|
33
|
+
const bun_test_2 = require("bun:test");
|
|
32
34
|
const tools_1 = require("../../common/constants/tools");
|
|
33
35
|
const projectFileTree = __importStar(require("../../common/project-file-tree"));
|
|
34
36
|
const strip_ansi_1 = __importDefault(require("strip-ansi"));
|
|
37
|
+
const projectFiles = __importStar(require("../../project-files"));
|
|
35
38
|
const tool_renderers_1 = require("../tool-renderers");
|
|
36
39
|
const xml_stream_parser_1 = require("../xml-stream-parser");
|
|
37
40
|
(0, bun_test_1.describe)('Tool renderers with XML parser', () => {
|
|
38
|
-
|
|
39
|
-
|
|
41
|
+
(0, bun_test_1.beforeEach)(() => {
|
|
42
|
+
(0, bun_test_2.spyOn)(projectFileTree, 'isFileIgnored').mockImplementation(() => false);
|
|
43
|
+
(0, bun_test_2.spyOn)(projectFiles, 'getProjectRoot').mockImplementation(() => false);
|
|
44
|
+
});
|
|
45
|
+
(0, bun_test_1.afterEach)(() => {
|
|
46
|
+
bun_test_1.mock.restore();
|
|
47
|
+
});
|
|
40
48
|
// Helper function to process XML through parser and get output
|
|
41
49
|
async function processXML(xml) {
|
|
42
50
|
let result = '';
|
|
@@ -56,7 +64,7 @@ const xml_stream_parser_1 = require("../xml-stream-parser");
|
|
|
56
64
|
});
|
|
57
65
|
return result;
|
|
58
66
|
}
|
|
59
|
-
(0,
|
|
67
|
+
(0, bun_test_2.test)('formats write_file tool call', async () => {
|
|
60
68
|
const xml = (0, tools_1.getToolCallString)('write_file', {
|
|
61
69
|
path: 'test.ts',
|
|
62
70
|
content: 'console.log("test");\n',
|
|
@@ -65,7 +73,7 @@ const xml_stream_parser_1 = require("../xml-stream-parser");
|
|
|
65
73
|
const stripped = (0, strip_ansi_1.default)(output);
|
|
66
74
|
(0, bun_test_1.expect)(stripped).toBe('\n\n[Write File]\nEditing file at test.ts...\n\n');
|
|
67
75
|
});
|
|
68
|
-
(0,
|
|
76
|
+
(0, bun_test_2.test)('formats read_files tool call', async () => {
|
|
69
77
|
const xml = (0, tools_1.getToolCallString)('read_files', {
|
|
70
78
|
paths: 'file1.ts\nfile2.ts',
|
|
71
79
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-renderers.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/tool-renderers.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAiC;AAEjC,aAAa;AACb,
|
|
1
|
+
{"version":3,"file":"tool-renderers.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/tool-renderers.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAiC;AAEjC,aAAa;AACb,uCAAwE;AACxE,aAAa;AACb,uCAAsC;AACtC,kDAA0D;AAC1D,0EAA2D;AAC3D,4DAAkC;AAElC,kEAAmD;AACnD,sDAAiD;AACjD,4DAA4D;AAE5D,IAAA,mBAAQ,EAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,IAAA,qBAAU,EAAC,GAAG,EAAE;QACd,IAAA,gBAAK,EAAC,eAAe,EAAE,eAAe,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;QACvE,IAAA,gBAAK,EAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;IACvE,CAAC,CAAC,CAAA;IAEF,IAAA,oBAAS,EAAC,GAAG,EAAE;QACb,eAAI,CAAC,OAAO,EAAE,CAAA;IAChB,CAAC,CAAC,CAAA;IAEF,+DAA+D;IAC/D,KAAK,UAAU,UAAU,CAAC,GAAW;QACnC,IAAI,MAAM,GAAG,EAAE,CAAA;QACf,MAAM,SAAS,GAAG,IAAA,yCAAqB,EAAC,8BAAa,CAAC,CAAA;QAEtD,MAAM,QAAQ,GAAG,IAAI,iBAAQ,CAAC;YAC5B,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ;gBAC7B,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAA;gBAC1B,QAAQ,EAAE,CAAA;YACZ,CAAC;SACF,CAAC,CAAA;QAEF,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACxB,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACpB,SAAS,CAAC,GAAG,EAAE,CAAA;QAEf,4BAA4B;QAC5B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAChC,CAAC,CAAC,CAAA;QAEF,OAAO,MAAM,CAAA;IACf,CAAC;IAED,IAAA,eAAI,EAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,GAAG,GAAG,IAAA,yBAAiB,EAAC,YAAY,EAAE;YAC1C,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,wBAAwB;SAClC,CAAC,CAAA;QACF,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAA;QACpC,MAAM,QAAQ,GAAG,IAAA,oBAAS,EAAC,MAAM,CAAC,CAAA;QAClC,IAAA,iBAAM,EAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAA;IAC3E,CAAC,CAAC,CAAA;IAEF,IAAA,eAAI,EAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,GAAG,GAAG,IAAA,yBAAiB,EAAC,YAAY,EAAE;YAC1C,KAAK,EAAE,oBAAoB;SAC5B,CAAC,CAAA;QACF,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAA;QACpC,MAAM,QAAQ,GAAG,IAAA,oBAAS,EAAC,MAAM,CAAC,CAAA;QAClC,IAAA,iBAAM,EAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAA;IACnE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transforms a relative filepath into an absolute one, using the project root as the base.
|
|
3
|
+
* Handles '..' and '.' in paths correctly. Also handles Windows paths.
|
|
4
|
+
*
|
|
5
|
+
* @param filepath The relative filepath to transform
|
|
6
|
+
* @param projectRoot The absolute path to the project root
|
|
7
|
+
* @returns The absolute filepath
|
|
8
|
+
*/
|
|
9
|
+
export declare function toAbsolutePath(filepath: string, projectRoot: string): string;
|
|
@@ -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.toAbsolutePath = toAbsolutePath;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
/**
|
|
9
|
+
* Transforms a relative filepath into an absolute one, using the project root as the base.
|
|
10
|
+
* Handles '..' and '.' in paths correctly. Also handles Windows paths.
|
|
11
|
+
*
|
|
12
|
+
* @param filepath The relative filepath to transform
|
|
13
|
+
* @param projectRoot The absolute path to the project root
|
|
14
|
+
* @returns The absolute filepath
|
|
15
|
+
*/
|
|
16
|
+
function toAbsolutePath(filepath, projectRoot) {
|
|
17
|
+
// If already absolute, normalize and return
|
|
18
|
+
if (path_1.default.isAbsolute(filepath)) {
|
|
19
|
+
return path_1.default.normalize(filepath);
|
|
20
|
+
}
|
|
21
|
+
// Handle '..' at the start by resolving against project root
|
|
22
|
+
return path_1.default.normalize(path_1.default.resolve(projectRoot, filepath));
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=file-paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-paths.js","sourceRoot":"","sources":["../../src/utils/file-paths.ts"],"names":[],"mappings":";;;;;AAUA,wCAQC;AAlBD,gDAAuB;AAEvB;;;;;;;GAOG;AACH,SAAgB,cAAc,CAAC,QAAgB,EAAE,WAAmB;IAClE,4CAA4C;IAC5C,IAAI,cAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,OAAO,cAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;IACjC,CAAC;IAED,6DAA6D;IAC7D,OAAO,cAAI,CAAC,SAAS,CAAC,cAAI,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAA;AAC5D,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transforms a relative filepath into an absolute one, using the project root as the base.
|
|
3
|
+
* Handles '..' and '.' in paths correctly. Also handles Windows paths.
|
|
4
|
+
*
|
|
5
|
+
* @param filepath The relative filepath to transform
|
|
6
|
+
* @param projectRoot The absolute path to the project root
|
|
7
|
+
* @returns The absolute filepath
|
|
8
|
+
*/
|
|
9
|
+
export declare function toAbsolutePath(filepath: string, projectRoot: string): string;
|
|
@@ -0,0 +1,27 @@
|
|
|
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.toAbsolutePath = toAbsolutePath;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
/**
|
|
9
|
+
* Transforms a relative filepath into an absolute one, using the project root as the base.
|
|
10
|
+
* Handles '..' and '.' in paths correctly. Also handles Windows paths.
|
|
11
|
+
*
|
|
12
|
+
* @param filepath The relative filepath to transform
|
|
13
|
+
* @param projectRoot The absolute path to the project root
|
|
14
|
+
* @returns The absolute filepath
|
|
15
|
+
*/
|
|
16
|
+
function toAbsolutePath(filepath, projectRoot) {
|
|
17
|
+
// If already absolute, normalize and return
|
|
18
|
+
if (path_1.default.isAbsolute(filepath)) {
|
|
19
|
+
return path_1.default.normalize(filepath);
|
|
20
|
+
}
|
|
21
|
+
// Handle Windows paths
|
|
22
|
+
const normalizedFilepath = filepath.replace(/\\/g, '/');
|
|
23
|
+
const normalizedProjectRoot = projectRoot.replace(/\\/g, '/');
|
|
24
|
+
// Handle '..' at the start by resolving against project root
|
|
25
|
+
return path_1.default.normalize(path_1.default.resolve(normalizedProjectRoot, normalizedFilepath));
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.js","sourceRoot":"","sources":["../../src/utils/path.ts"],"names":[],"mappings":";;;;;AAUA,wCAYC;AAtBD,gDAAuB;AAEvB;;;;;;;GAOG;AACH,SAAgB,cAAc,CAAC,QAAgB,EAAE,WAAmB;IAClE,4CAA4C;IAC5C,IAAI,cAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,OAAO,cAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;IACjC,CAAC;IAED,uBAAuB;IACvB,MAAM,kBAAkB,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IACvD,MAAM,qBAAqB,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAE7D,6DAA6D;IAC7D,OAAO,cAAI,CAAC,SAAS,CAAC,cAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CAAC,CAAA;AAChF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function handleInitializationFlowLocally(): void;
|
|
@@ -1,24 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { CommandProcessorOptions, Handler } from './types';
|
|
2
|
-
export declare class CommandProcessor implements Handler {
|
|
3
|
-
private client;
|
|
4
|
-
private rl;
|
|
5
|
-
private freshPrompt;
|
|
6
|
-
private readyPromise;
|
|
7
|
-
private costMode;
|
|
8
|
-
private git;
|
|
9
|
-
constructor(options: CommandProcessorOptions);
|
|
10
|
-
processCommand(userInput: string): Promise<boolean>;
|
|
11
|
-
cleanup(): Promise<void>;
|
|
12
|
-
}
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CommandProcessor = void 0;
|
|
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 diff_1 = require("../cli-handlers/diff");
|
|
8
|
-
const easter_egg_1 = require("../cli-handlers/easter-egg");
|
|
9
|
-
const inititalization_flow_1 = require("../cli-handlers/inititalization-flow");
|
|
10
|
-
const api_key_1 = require("../cli-handlers/api-key");
|
|
11
|
-
const checkpoint_1 = require("../cli-handlers/checkpoint");
|
|
12
|
-
class CommandProcessor {
|
|
13
|
-
client;
|
|
14
|
-
rl;
|
|
15
|
-
freshPrompt;
|
|
16
|
-
readyPromise;
|
|
17
|
-
costMode;
|
|
18
|
-
git;
|
|
19
|
-
constructor(options) {
|
|
20
|
-
this.client = options.client;
|
|
21
|
-
this.rl = options.rl;
|
|
22
|
-
this.freshPrompt = options.freshPrompt;
|
|
23
|
-
this.readyPromise = options.readyPromise;
|
|
24
|
-
this.costMode = options.costMode;
|
|
25
|
-
this.git = options.git;
|
|
26
|
-
}
|
|
27
|
-
async processCommand(userInput) {
|
|
28
|
-
if (userInput === 'help' || userInput === 'h' || userInput === '/help') {
|
|
29
|
-
(0, menu_1.displayMenu)();
|
|
30
|
-
this.freshPrompt();
|
|
31
|
-
return true;
|
|
32
|
-
}
|
|
33
|
-
if (userInput === 'login' || userInput === 'signin') {
|
|
34
|
-
await this.client.login();
|
|
35
|
-
return true;
|
|
36
|
-
}
|
|
37
|
-
if (userInput === 'logout' || userInput === 'signout') {
|
|
38
|
-
await this.client.logout();
|
|
39
|
-
this.freshPrompt();
|
|
40
|
-
return true;
|
|
41
|
-
}
|
|
42
|
-
if (userInput.startsWith('ref-')) {
|
|
43
|
-
await this.client.handleReferralCode(userInput.trim());
|
|
44
|
-
return true;
|
|
45
|
-
}
|
|
46
|
-
// Detect potential API key input first
|
|
47
|
-
const detectionResult = (0, api_key_1.detectApiKey)(userInput);
|
|
48
|
-
if (detectionResult.status !== 'not_found') {
|
|
49
|
-
// If something resembling an API key was detected (valid or just prefix), handle it
|
|
50
|
-
await (0, api_key_1.handleApiKeyInput)(this.client, detectionResult, this.readyPromise, this.freshPrompt);
|
|
51
|
-
return true;
|
|
52
|
-
}
|
|
53
|
-
if (userInput === 'usage' || userInput === 'credits') {
|
|
54
|
-
await this.client.getUsage();
|
|
55
|
-
return true;
|
|
56
|
-
}
|
|
57
|
-
if (userInput === 'quit' || userInput === 'exit' || userInput === 'q') {
|
|
58
|
-
process.emit('SIGTSTP');
|
|
59
|
-
return true;
|
|
60
|
-
}
|
|
61
|
-
if (['diff', 'doff', 'dif', 'iff', 'd'].includes(userInput)) {
|
|
62
|
-
(0, diff_1.handleDiff)(this.client.lastChanges);
|
|
63
|
-
this.freshPrompt();
|
|
64
|
-
return true;
|
|
65
|
-
}
|
|
66
|
-
if (userInput === 'uuddlrlrba' ||
|
|
67
|
-
userInput === 'konami' ||
|
|
68
|
-
userInput === 'codebuffy') {
|
|
69
|
-
(0, easter_egg_1.showEasterEgg)(this.freshPrompt);
|
|
70
|
-
return true;
|
|
71
|
-
}
|
|
72
|
-
// Checkpoint commands
|
|
73
|
-
if ((0, checkpoint_1.isCheckpointCommand)(userInput)) {
|
|
74
|
-
(0, analytics_1.trackEvent)(analytics_events_1.AnalyticsEvent.CHECKPOINT_COMMAND_USED, {
|
|
75
|
-
command: userInput,
|
|
76
|
-
});
|
|
77
|
-
if ((0, checkpoint_1.isCheckpointCommand)(userInput, 'undo')) {
|
|
78
|
-
await (0, checkpoint_1.saveCheckpoint)(userInput, this.client, this.readyPromise);
|
|
79
|
-
const toRestore = await (0, checkpoint_1.handleUndo)(this.client, this.rl);
|
|
80
|
-
this.freshPrompt(toRestore);
|
|
81
|
-
return true;
|
|
82
|
-
}
|
|
83
|
-
if ((0, checkpoint_1.isCheckpointCommand)(userInput, 'redo')) {
|
|
84
|
-
await (0, checkpoint_1.saveCheckpoint)(userInput, this.client, this.readyPromise);
|
|
85
|
-
const toRestore = await (0, checkpoint_1.handleRedo)(this.client, this.rl);
|
|
86
|
-
this.freshPrompt(toRestore);
|
|
87
|
-
return true;
|
|
88
|
-
}
|
|
89
|
-
if ((0, checkpoint_1.isCheckpointCommand)(userInput, 'list')) {
|
|
90
|
-
await (0, checkpoint_1.saveCheckpoint)(userInput, this.client, this.readyPromise);
|
|
91
|
-
await (0, checkpoint_1.listCheckpoints)();
|
|
92
|
-
this.freshPrompt();
|
|
93
|
-
return true;
|
|
94
|
-
}
|
|
95
|
-
const restoreMatch = (0, checkpoint_1.isCheckpointCommand)(userInput, 'restore');
|
|
96
|
-
if (restoreMatch) {
|
|
97
|
-
const id = parseInt(restoreMatch[1], 10);
|
|
98
|
-
await (0, checkpoint_1.saveCheckpoint)(userInput, this.client, this.readyPromise);
|
|
99
|
-
const toRestore = await (0, checkpoint_1.handleRestoreCheckpoint)(id, this.client, this.rl);
|
|
100
|
-
this.freshPrompt(toRestore);
|
|
101
|
-
return true;
|
|
102
|
-
}
|
|
103
|
-
if ((0, checkpoint_1.isCheckpointCommand)(userInput, 'clear')) {
|
|
104
|
-
(0, checkpoint_1.handleClearCheckpoints)();
|
|
105
|
-
this.freshPrompt();
|
|
106
|
-
return true;
|
|
107
|
-
}
|
|
108
|
-
if ((0, checkpoint_1.isCheckpointCommand)(userInput, 'save')) {
|
|
109
|
-
await (0, checkpoint_1.saveCheckpoint)(userInput, this.client, this.readyPromise, true);
|
|
110
|
-
(0, checkpoint_1.displayCheckpointMenu)();
|
|
111
|
-
this.freshPrompt();
|
|
112
|
-
return true;
|
|
113
|
-
}
|
|
114
|
-
(0, checkpoint_1.displayCheckpointMenu)();
|
|
115
|
-
this.freshPrompt();
|
|
116
|
-
return true;
|
|
117
|
-
}
|
|
118
|
-
if (userInput === 'init') {
|
|
119
|
-
(0, inititalization_flow_1.handleInitializationFlowLocally)();
|
|
120
|
-
return false;
|
|
121
|
-
}
|
|
122
|
-
return false;
|
|
123
|
-
}
|
|
124
|
-
async cleanup() {
|
|
125
|
-
// Nothing to clean up for now
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
exports.CommandProcessor = CommandProcessor;
|
|
129
|
-
//# sourceMappingURL=command-processor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command-processor.js","sourceRoot":"","sources":["../../src/cli-modules/command-processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { InputHandlerOptions, Handler } from './types';
|
|
2
|
-
export declare class InputHandler implements Handler {
|
|
3
|
-
private client;
|
|
4
|
-
private rl;
|
|
5
|
-
private freshPrompt;
|
|
6
|
-
private lastInputTime;
|
|
7
|
-
private consecutiveFastInputs;
|
|
8
|
-
private isPasting;
|
|
9
|
-
private pastedContent;
|
|
10
|
-
private isReceivingResponse;
|
|
11
|
-
constructor(options: InputHandlerOptions);
|
|
12
|
-
handleLine(line: string): void;
|
|
13
|
-
private handleUserInput;
|
|
14
|
-
private forwardUserInput;
|
|
15
|
-
handleKeyPress(str: string, key: any): void;
|
|
16
|
-
private handleEscKey;
|
|
17
|
-
private detectPasting;
|
|
18
|
-
setIsReceivingResponse(value: boolean): void;
|
|
19
|
-
cleanup(): Promise<void>;
|
|
20
|
-
}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.InputHandler = void 0;
|
|
4
|
-
const display_1 = require("../display");
|
|
5
|
-
class InputHandler {
|
|
6
|
-
client;
|
|
7
|
-
rl;
|
|
8
|
-
freshPrompt;
|
|
9
|
-
lastInputTime = 0;
|
|
10
|
-
consecutiveFastInputs = 0;
|
|
11
|
-
isPasting = false;
|
|
12
|
-
pastedContent = '';
|
|
13
|
-
isReceivingResponse;
|
|
14
|
-
constructor(options) {
|
|
15
|
-
this.client = options.client;
|
|
16
|
-
this.rl = options.rl;
|
|
17
|
-
this.freshPrompt = options.freshPrompt;
|
|
18
|
-
this.isReceivingResponse = options.isReceivingResponse;
|
|
19
|
-
}
|
|
20
|
-
handleLine(line) {
|
|
21
|
-
this.detectPasting();
|
|
22
|
-
if (this.isPasting) {
|
|
23
|
-
this.pastedContent += line + '\n';
|
|
24
|
-
}
|
|
25
|
-
else if (!this.isReceivingResponse) {
|
|
26
|
-
const input = (this.pastedContent + line).trim();
|
|
27
|
-
this.pastedContent = '';
|
|
28
|
-
this.handleUserInput(input);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
async handleUserInput(userInput) {
|
|
32
|
-
(0, display_1.enableSquashNewlines)();
|
|
33
|
-
this.rl.setPrompt('');
|
|
34
|
-
if (!userInput) {
|
|
35
|
-
this.freshPrompt();
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
userInput = userInput.trim();
|
|
39
|
-
await this.forwardUserInput(userInput);
|
|
40
|
-
}
|
|
41
|
-
async forwardUserInput(userInput) {
|
|
42
|
-
// This will be implemented as part of the command processor
|
|
43
|
-
// For now, just forward to the client
|
|
44
|
-
await this.client.sendUserInput(userInput);
|
|
45
|
-
this.freshPrompt();
|
|
46
|
-
}
|
|
47
|
-
handleKeyPress(str, key) {
|
|
48
|
-
if (key.name === 'escape') {
|
|
49
|
-
this.handleEscKey();
|
|
50
|
-
}
|
|
51
|
-
if (!this.isPasting &&
|
|
52
|
-
str === ' ' &&
|
|
53
|
-
'_refreshLine' in this.rl &&
|
|
54
|
-
'line' in this.rl &&
|
|
55
|
-
'cursor' in this.rl) {
|
|
56
|
-
const rlAny = this.rl;
|
|
57
|
-
const { cursor, line } = rlAny;
|
|
58
|
-
const prevTwoChars = cursor > 1 ? line.slice(cursor - 2, cursor) : '';
|
|
59
|
-
if (prevTwoChars === ' ') {
|
|
60
|
-
rlAny.line = line.slice(0, cursor - 2) + '\n\n' + line.slice(cursor);
|
|
61
|
-
rlAny._refreshLine();
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
this.detectPasting();
|
|
65
|
-
}
|
|
66
|
-
handleEscKey() {
|
|
67
|
-
if (this.isReceivingResponse) {
|
|
68
|
-
// This will be handled by the WebSocket handler
|
|
69
|
-
// For now, just stop the response
|
|
70
|
-
this.isReceivingResponse = false;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
detectPasting() {
|
|
74
|
-
const currentTime = Date.now();
|
|
75
|
-
const timeDiff = currentTime - this.lastInputTime;
|
|
76
|
-
if (timeDiff < 10) {
|
|
77
|
-
this.consecutiveFastInputs++;
|
|
78
|
-
if (this.consecutiveFastInputs >= 2) {
|
|
79
|
-
this.isPasting = true;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
this.consecutiveFastInputs = 0;
|
|
84
|
-
if (this.isPasting) {
|
|
85
|
-
this.isPasting = false;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
this.lastInputTime = currentTime;
|
|
89
|
-
}
|
|
90
|
-
setIsReceivingResponse(value) {
|
|
91
|
-
this.isReceivingResponse = value;
|
|
92
|
-
}
|
|
93
|
-
async cleanup() {
|
|
94
|
-
// Nothing to clean up for now
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
exports.InputHandler = InputHandler;
|
|
98
|
-
//# sourceMappingURL=input-handler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"input-handler.js","sourceRoot":"","sources":["../../src/cli-modules/input-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import * as readline from 'readline';
|
|
2
|
-
import { ReadlineHandlerOptions, Handler } from './types';
|
|
3
|
-
export declare class ReadlineHandler implements Handler {
|
|
4
|
-
private rl;
|
|
5
|
-
private client;
|
|
6
|
-
private historyPath;
|
|
7
|
-
private freshPromptCallback;
|
|
8
|
-
constructor(options: ReadlineHandlerOptions);
|
|
9
|
-
private initInterface;
|
|
10
|
-
private loadHistory;
|
|
11
|
-
appendToHistory(line: string): void;
|
|
12
|
-
private filePathCompleter;
|
|
13
|
-
setPrompt(): void;
|
|
14
|
-
freshPrompt(userInput?: string): void;
|
|
15
|
-
getReadlineInterface(): readline.Interface;
|
|
16
|
-
cleanup(): Promise<void>;
|
|
17
|
-
}
|