codebuff 1.0.310 → 1.0.311
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/background-process-manager.d.ts +1 -1
- package/dist/background-process-manager.js +3 -3
- package/dist/browser-runner.d.ts +1 -1
- package/dist/browser-runner.js +4 -4
- package/dist/chat-storage.d.ts +1 -1
- package/dist/chat-storage.js +1 -1
- package/dist/checkpoints/checkpoint-manager.d.ts +1 -1
- package/dist/checkpoints/checkpoint-manager.js +1 -1
- package/dist/cli-handlers/api-key.d.ts +1 -1
- package/dist/cli-handlers/api-key.js +1 -1
- package/dist/cli-handlers/diff.d.ts +1 -1
- package/dist/cli-handlers/inititalization-flow.js +2 -1
- package/dist/cli-handlers/inititalization-flow.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +2 -2
- package/dist/client.d.ts +6 -6
- package/dist/client.js +9 -9
- package/dist/common/json-config/__tests__/constants.test.d.ts +1 -0
- package/dist/common/json-config/__tests__/constants.test.js +273 -0
- package/dist/common/json-config/__tests__/constants.test.js.map +1 -0
- package/dist/credentials.d.ts +1 -1
- package/dist/credentials.js +2 -2
- package/dist/dev-process-manager.d.ts +1 -1
- package/dist/dev-process-manager.js +2 -2
- package/dist/index.js +0 -0
- package/dist/json-config/hooks.d.ts +1 -1
- package/dist/json-config/hooks.js +1 -1
- package/dist/json-config/parser.d.ts +1 -1
- package/dist/json-config/parser.js +1 -1
- package/dist/menu.d.ts +1 -1
- package/dist/menu.js +1 -1
- package/dist/project-files.d.ts +2 -2
- package/dist/project-files.js +6 -6
- package/dist/tool-handlers.d.ts +2 -2
- package/dist/tool-handlers.js +4 -4
- package/dist/types.d.ts +1 -1
- package/dist/update-codebuff.js +1 -1
- package/dist/utils/__tests__/tool-renderers.test.js +2 -2
- package/dist/utils/__tests__/xml-stream-parser.test.js +1 -1
- package/dist/utils/analytics.d.ts +1 -1
- package/dist/utils/logger.js +1 -1
- package/dist/utils/terminal.js +3 -3
- package/dist/utils/tool-renderers.d.ts +1 -1
- package/dist/utils/tool-renderers.js +2 -2
- package/dist/utils/xml-stream-parser.d.ts +1 -1
- package/dist/utils/xml-stream-parser.js +2 -2
- package/dist/web-scraper.js +1 -1
- package/dist/workers/project-context.js +1 -1
- package/package.json +2 -2
- package/dist/common/json-config/parser.d.ts +0 -7
- package/dist/common/json-config/parser.js +0 -51
- package/dist/common/json-config/parser.js.map +0 -1
- package/dist/json-config-parser.d.ts +0 -7
- package/dist/json-config-parser.js +0 -53
- package/dist/json-config-parser.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ChildProcessByStdio, ChildProcessWithoutNullStreams, SpawnOptionsWithoutStdio } from 'child_process';
|
|
2
|
-
import { ToolResult } from '
|
|
2
|
+
import { ToolResult } from 'common/types/agent-state';
|
|
3
3
|
/**
|
|
4
4
|
* Interface describing the information stored for each background process.
|
|
5
5
|
*/
|
|
@@ -15,9 +15,9 @@ const child_process_1 = require("child_process");
|
|
|
15
15
|
const fs_1 = require("fs");
|
|
16
16
|
const path_1 = __importDefault(require("path"));
|
|
17
17
|
const process_1 = __importDefault(require("process"));
|
|
18
|
-
const analytics_events_1 = require("
|
|
19
|
-
const array_1 = require("
|
|
20
|
-
const string_1 = require("
|
|
18
|
+
const analytics_events_1 = require("common/constants/analytics-events");
|
|
19
|
+
const array_1 = require("common/util/array");
|
|
20
|
+
const string_1 = require("common/util/string");
|
|
21
21
|
const picocolors_1 = require("picocolors");
|
|
22
22
|
const zod_1 = require("zod");
|
|
23
23
|
const credentials_1 = require("./credentials");
|
package/dist/browser-runner.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BrowserAction, BrowserResponse } from '
|
|
1
|
+
import { BrowserAction, BrowserResponse } from 'common/browser-actions';
|
|
2
2
|
export declare class BrowserRunner {
|
|
3
3
|
getLogs(): BrowserResponse['logs'];
|
|
4
4
|
getNetworkEvents(): BrowserResponse['networkEvents'];
|
package/dist/browser-runner.js
CHANGED
|
@@ -27,10 +27,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
exports.activeBrowserRunner = exports.handleBrowserInstruction = exports.BrowserRunner = void 0;
|
|
30
|
-
const browser_actions_1 = require("
|
|
31
|
-
const file_1 = require("
|
|
32
|
-
const promise_1 = require("
|
|
33
|
-
const string_1 = require("
|
|
30
|
+
const browser_actions_1 = require("common/browser-actions");
|
|
31
|
+
const file_1 = require("common/util/file");
|
|
32
|
+
const promise_1 = require("common/util/promise");
|
|
33
|
+
const string_1 = require("common/util/string");
|
|
34
34
|
const fs = __importStar(require("fs"));
|
|
35
35
|
const path = __importStar(require("path"));
|
|
36
36
|
const puppeteer_core_1 = __importDefault(require("puppeteer-core"));
|
package/dist/chat-storage.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { type CodebuffMessage } from '
|
|
1
|
+
import { type CodebuffMessage } from 'common/types/message';
|
|
2
2
|
export declare function setMessages(messages: CodebuffMessage[]): void;
|
package/dist/chat-storage.js
CHANGED
|
@@ -24,7 +24,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.setMessages = setMessages;
|
|
27
|
-
const string_1 = require("
|
|
27
|
+
const string_1 = require("common/util/string");
|
|
28
28
|
const fs = __importStar(require("fs"));
|
|
29
29
|
const path = __importStar(require("path"));
|
|
30
30
|
const project_files_1 = require("./project-files");
|
|
@@ -8,7 +8,7 @@ const assert_1 = __importDefault(require("assert"));
|
|
|
8
8
|
const os_1 = __importDefault(require("os"));
|
|
9
9
|
const path_1 = require("path");
|
|
10
10
|
const worker_threads_1 = require("worker_threads");
|
|
11
|
-
const project_file_tree_1 = require("
|
|
11
|
+
const project_file_tree_1 = require("common/project-file-tree");
|
|
12
12
|
const picocolors_1 = require("picocolors");
|
|
13
13
|
const project_files_1 = require("../project-files");
|
|
14
14
|
const file_manager_1 = require("./file-manager");
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.detectApiKey = detectApiKey;
|
|
4
4
|
exports.handleApiKeyInput = handleApiKeyInput;
|
|
5
|
-
const constants_1 = require("
|
|
5
|
+
const constants_1 = require("common/api-keys/constants");
|
|
6
6
|
const picocolors_1 = require("picocolors");
|
|
7
7
|
/**
|
|
8
8
|
* Detects if the user input contains a known API key pattern.
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { FileChange } from '
|
|
1
|
+
import { FileChange } from 'common/actions';
|
|
2
2
|
export declare function handleDiff(lastChanges: FileChange[]): void;
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.handleInitializationFlowLocally = handleInitializationFlowLocally;
|
|
7
7
|
const fs_1 = require("fs");
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
|
-
const constants_1 = require("
|
|
9
|
+
const constants_1 = require("common/json-config/constants");
|
|
10
10
|
const project_files_1 = require("../project-files");
|
|
11
11
|
function handleInitializationFlowLocally() {
|
|
12
12
|
const projectRoot = (0, project_files_1.getProjectRoot)();
|
|
@@ -17,6 +17,7 @@ function handleInitializationFlowLocally() {
|
|
|
17
17
|
const configContent = {
|
|
18
18
|
description: 'Template configuration for this project. See https://www.codebuff.com/config for all options.',
|
|
19
19
|
startupProcesses: [],
|
|
20
|
+
fileChangeHooks: [],
|
|
20
21
|
};
|
|
21
22
|
(0, fs_1.writeFileSync)(configPath, JSON.stringify(configContent, null, 2));
|
|
22
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inititalization-flow.js","sourceRoot":"","sources":["../../src/cli-handlers/inititalization-flow.ts"],"names":[],"mappings":";;;;;AAOA,
|
|
1
|
+
{"version":3,"file":"inititalization-flow.js","sourceRoot":"","sources":["../../src/cli-handlers/inititalization-flow.ts"],"names":[],"mappings":";;;;;AAOA,0EAgBC;AAvBD,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;YACpB,eAAe,EAAE,EAAE;SACpB,CAAA;QACD,IAAA,kBAAa,EAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IACnE,CAAC;AACH,CAAC"}
|
package/dist/cli.d.ts
CHANGED
package/dist/cli.js
CHANGED
|
@@ -29,8 +29,8 @@ const os = __importStar(require("os"));
|
|
|
29
29
|
const os_1 = require("os");
|
|
30
30
|
const path_1 = __importStar(require("path"));
|
|
31
31
|
const readline = __importStar(require("readline"));
|
|
32
|
-
const analytics_events_1 = require("
|
|
33
|
-
const string_1 = require("
|
|
32
|
+
const analytics_events_1 = require("common/constants/analytics-events");
|
|
33
|
+
const string_1 = require("common/util/string");
|
|
34
34
|
const picocolors_1 = require("picocolors");
|
|
35
35
|
const background_process_manager_1 = require("./background-process-manager");
|
|
36
36
|
const chat_storage_1 = require("./chat-storage");
|
package/dist/client.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { FileChanges, ServerAction, UsageResponse } from '
|
|
2
|
-
import { ApiKeyType } from '
|
|
3
|
-
import { CostMode } from '
|
|
4
|
-
import { AgentState, ToolResult } from '
|
|
5
|
-
import { User } from '
|
|
6
|
-
import { ProjectFileContext } from '
|
|
1
|
+
import { FileChanges, ServerAction, UsageResponse } from 'common/actions';
|
|
2
|
+
import { ApiKeyType } from 'common/api-keys/constants';
|
|
3
|
+
import { CostMode } from 'common/constants';
|
|
4
|
+
import { AgentState, ToolResult } from 'common/types/agent-state';
|
|
5
|
+
import { User } from 'common/util/credentials';
|
|
6
|
+
import { ProjectFileContext } from 'common/util/file';
|
|
7
7
|
import { GitCommand, MakeNullable } from './types';
|
|
8
8
|
type UsageData = Omit<MakeNullable<UsageResponse, 'remainingBalance'>, 'type'>;
|
|
9
9
|
interface ClientOptions {
|
package/dist/client.js
CHANGED
|
@@ -8,15 +8,15 @@ const child_process_1 = require("child_process");
|
|
|
8
8
|
const fs_1 = require("fs");
|
|
9
9
|
const os_1 = __importDefault(require("os"));
|
|
10
10
|
const path_1 = __importDefault(require("path"));
|
|
11
|
-
const actions_1 = require("
|
|
12
|
-
const constants_1 = require("
|
|
13
|
-
const constants_2 = require("
|
|
14
|
-
const analytics_events_1 = require("
|
|
15
|
-
const constants_3 = require("
|
|
16
|
-
const agent_state_1 = require("
|
|
17
|
-
const array_1 = require("
|
|
18
|
-
const string_1 = require("
|
|
19
|
-
const websocket_client_1 = require("
|
|
11
|
+
const actions_1 = require("common/actions");
|
|
12
|
+
const constants_1 = require("common/api-keys/constants");
|
|
13
|
+
const constants_2 = require("common/constants");
|
|
14
|
+
const analytics_events_1 = require("common/constants/analytics-events");
|
|
15
|
+
const constants_3 = require("common/json-config/constants");
|
|
16
|
+
const agent_state_1 = require("common/types/agent-state");
|
|
17
|
+
const array_1 = require("common/util/array");
|
|
18
|
+
const string_1 = require("common/util/string");
|
|
19
|
+
const websocket_client_1 = require("common/websockets/websocket-client");
|
|
20
20
|
const picocolors_1 = require("picocolors");
|
|
21
21
|
const ts_pattern_1 = require("ts-pattern");
|
|
22
22
|
const zod_1 = require("zod");
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
// @ts-ignore
|
|
4
|
+
const bun_test_1 = require("bun:test");
|
|
5
|
+
const constants_1 = require("../constants");
|
|
6
|
+
(0, bun_test_1.describe)('constants', () => {
|
|
7
|
+
(0, bun_test_1.describe)('codebuffConfigFile and codebuffConfigFileBackup', () => {
|
|
8
|
+
(0, bun_test_1.it)('should have correct file names', () => {
|
|
9
|
+
(0, bun_test_1.expect)(constants_1.codebuffConfigFile).toBe('codebuff.json');
|
|
10
|
+
(0, bun_test_1.expect)(constants_1.codebuffConfigFileBackup).toBe('codebuff.jsonc');
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
(0, bun_test_1.describe)('StartupProcessSchema', () => {
|
|
14
|
+
(0, bun_test_1.it)('should validate a minimal startup process', () => {
|
|
15
|
+
const validProcess = {
|
|
16
|
+
name: 'test-process',
|
|
17
|
+
command: 'echo hello',
|
|
18
|
+
};
|
|
19
|
+
const result = constants_1.StartupProcessSchema.safeParse(validProcess);
|
|
20
|
+
(0, bun_test_1.expect)(result.success).toBe(true);
|
|
21
|
+
if (result.success) {
|
|
22
|
+
(0, bun_test_1.expect)(result.data.enabled).toBe(true); // default value
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
(0, bun_test_1.it)('should validate a complete startup process', () => {
|
|
26
|
+
const validProcess = {
|
|
27
|
+
name: 'web-server',
|
|
28
|
+
command: 'npm start',
|
|
29
|
+
cwd: './web',
|
|
30
|
+
enabled: false,
|
|
31
|
+
stdoutFile: 'logs/web.log',
|
|
32
|
+
stderrFile: 'logs/web-error.log',
|
|
33
|
+
};
|
|
34
|
+
const result = constants_1.StartupProcessSchema.safeParse(validProcess);
|
|
35
|
+
(0, bun_test_1.expect)(result.success).toBe(true);
|
|
36
|
+
if (result.success) {
|
|
37
|
+
(0, bun_test_1.expect)(result.data).toEqual(validProcess);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
(0, bun_test_1.it)('should reject startup process with empty name', () => {
|
|
41
|
+
const invalidProcess = {
|
|
42
|
+
name: '',
|
|
43
|
+
command: 'echo hello',
|
|
44
|
+
};
|
|
45
|
+
const result = constants_1.StartupProcessSchema.safeParse(invalidProcess);
|
|
46
|
+
(0, bun_test_1.expect)(result.success).toBe(false);
|
|
47
|
+
});
|
|
48
|
+
(0, bun_test_1.it)('should reject startup process with empty command', () => {
|
|
49
|
+
const invalidProcess = {
|
|
50
|
+
name: 'test',
|
|
51
|
+
command: '',
|
|
52
|
+
};
|
|
53
|
+
const result = constants_1.StartupProcessSchema.safeParse(invalidProcess);
|
|
54
|
+
(0, bun_test_1.expect)(result.success).toBe(false);
|
|
55
|
+
});
|
|
56
|
+
(0, bun_test_1.it)('should apply default enabled value', () => {
|
|
57
|
+
const process = {
|
|
58
|
+
name: 'test',
|
|
59
|
+
command: 'echo hello',
|
|
60
|
+
};
|
|
61
|
+
const result = constants_1.StartupProcessSchema.safeParse(process);
|
|
62
|
+
(0, bun_test_1.expect)(result.success).toBe(true);
|
|
63
|
+
if (result.success) {
|
|
64
|
+
(0, bun_test_1.expect)(result.data.enabled).toBe(true);
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
(0, bun_test_1.describe)('FileChangeHook', () => {
|
|
69
|
+
(0, bun_test_1.it)('should validate a minimal file change hook', () => {
|
|
70
|
+
const validHook = {
|
|
71
|
+
name: 'test-hook',
|
|
72
|
+
command: 'npm test',
|
|
73
|
+
};
|
|
74
|
+
const result = constants_1.FileChangeHook.safeParse(validHook);
|
|
75
|
+
(0, bun_test_1.expect)(result.success).toBe(true);
|
|
76
|
+
if (result.success) {
|
|
77
|
+
(0, bun_test_1.expect)(result.data.enabled).toBe(true); // default value
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
(0, bun_test_1.it)('should validate a complete file change hook', () => {
|
|
81
|
+
const validHook = {
|
|
82
|
+
name: 'lint-check',
|
|
83
|
+
command: 'eslint .',
|
|
84
|
+
cwd: './src',
|
|
85
|
+
filePattern: '**/*.ts',
|
|
86
|
+
enabled: false,
|
|
87
|
+
};
|
|
88
|
+
const result = constants_1.FileChangeHook.safeParse(validHook);
|
|
89
|
+
(0, bun_test_1.expect)(result.success).toBe(true);
|
|
90
|
+
if (result.success) {
|
|
91
|
+
(0, bun_test_1.expect)(result.data).toEqual(validHook);
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
(0, bun_test_1.it)('should reject hook with empty name', () => {
|
|
95
|
+
const invalidHook = {
|
|
96
|
+
name: '',
|
|
97
|
+
command: 'npm test',
|
|
98
|
+
};
|
|
99
|
+
const result = constants_1.FileChangeHook.safeParse(invalidHook);
|
|
100
|
+
(0, bun_test_1.expect)(result.success).toBe(false);
|
|
101
|
+
});
|
|
102
|
+
(0, bun_test_1.it)('should reject hook with empty command', () => {
|
|
103
|
+
const invalidHook = {
|
|
104
|
+
name: 'test',
|
|
105
|
+
command: '',
|
|
106
|
+
};
|
|
107
|
+
const result = constants_1.FileChangeHook.safeParse(invalidHook);
|
|
108
|
+
(0, bun_test_1.expect)(result.success).toBe(false);
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
(0, bun_test_1.describe)('CodebuffConfigSchema', () => {
|
|
112
|
+
(0, bun_test_1.it)('should validate an empty object as a valid config', () => {
|
|
113
|
+
const emptyConfig = {};
|
|
114
|
+
const result = constants_1.CodebuffConfigSchema.safeParse(emptyConfig);
|
|
115
|
+
(0, bun_test_1.expect)(result.success).toBe(true);
|
|
116
|
+
if (result.success) {
|
|
117
|
+
(0, bun_test_1.expect)(result.data.maxAgentSteps).toBe(12); // default value
|
|
118
|
+
(0, bun_test_1.expect)(result.data.description).toBeUndefined();
|
|
119
|
+
(0, bun_test_1.expect)(result.data.startupProcesses).toBeUndefined();
|
|
120
|
+
(0, bun_test_1.expect)(result.data.fileChangeHooks).toBeUndefined();
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
(0, bun_test_1.it)('should validate a minimal config with description only', () => {
|
|
124
|
+
const config = {
|
|
125
|
+
description: 'My project config',
|
|
126
|
+
};
|
|
127
|
+
const result = constants_1.CodebuffConfigSchema.safeParse(config);
|
|
128
|
+
(0, bun_test_1.expect)(result.success).toBe(true);
|
|
129
|
+
if (result.success) {
|
|
130
|
+
(0, bun_test_1.expect)(result.data.description).toBe('My project config');
|
|
131
|
+
(0, bun_test_1.expect)(result.data.maxAgentSteps).toBe(12);
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
(0, bun_test_1.it)('should validate a complete config', () => {
|
|
135
|
+
const config = {
|
|
136
|
+
description: 'Full configuration',
|
|
137
|
+
startupProcesses: [
|
|
138
|
+
{
|
|
139
|
+
name: 'web-server',
|
|
140
|
+
command: 'npm start',
|
|
141
|
+
cwd: './web',
|
|
142
|
+
stdoutFile: 'logs/web.log',
|
|
143
|
+
},
|
|
144
|
+
],
|
|
145
|
+
fileChangeHooks: [
|
|
146
|
+
{
|
|
147
|
+
name: 'test-runner',
|
|
148
|
+
command: 'npm test',
|
|
149
|
+
filePattern: '**/*.ts',
|
|
150
|
+
},
|
|
151
|
+
],
|
|
152
|
+
maxAgentSteps: 20,
|
|
153
|
+
};
|
|
154
|
+
const result = constants_1.CodebuffConfigSchema.safeParse(config);
|
|
155
|
+
(0, bun_test_1.expect)(result.success).toBe(true);
|
|
156
|
+
if (result.success) {
|
|
157
|
+
(0, bun_test_1.expect)(result.data).toEqual({
|
|
158
|
+
...config,
|
|
159
|
+
startupProcesses: [
|
|
160
|
+
{
|
|
161
|
+
...config.startupProcesses[0],
|
|
162
|
+
enabled: true, // default value
|
|
163
|
+
},
|
|
164
|
+
],
|
|
165
|
+
fileChangeHooks: [
|
|
166
|
+
{
|
|
167
|
+
...config.fileChangeHooks[0],
|
|
168
|
+
enabled: true, // default value
|
|
169
|
+
},
|
|
170
|
+
],
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
(0, bun_test_1.it)('should accept any type for description field', () => {
|
|
175
|
+
const configs = [
|
|
176
|
+
{ description: 'string description' },
|
|
177
|
+
{ description: 42 },
|
|
178
|
+
{ description: true },
|
|
179
|
+
{ description: { nested: 'object' } },
|
|
180
|
+
{ description: ['array', 'values'] },
|
|
181
|
+
{ description: null },
|
|
182
|
+
];
|
|
183
|
+
configs.forEach((config) => {
|
|
184
|
+
const result = constants_1.CodebuffConfigSchema.safeParse(config);
|
|
185
|
+
(0, bun_test_1.expect)(result.success).toBe(true);
|
|
186
|
+
});
|
|
187
|
+
});
|
|
188
|
+
(0, bun_test_1.it)('should apply default maxAgentSteps value', () => {
|
|
189
|
+
const config = {
|
|
190
|
+
description: 'Test config',
|
|
191
|
+
};
|
|
192
|
+
const result = constants_1.CodebuffConfigSchema.safeParse(config);
|
|
193
|
+
(0, bun_test_1.expect)(result.success).toBe(true);
|
|
194
|
+
if (result.success) {
|
|
195
|
+
(0, bun_test_1.expect)(result.data.maxAgentSteps).toBe(12);
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
(0, bun_test_1.it)('should allow custom maxAgentSteps value', () => {
|
|
199
|
+
const config = {
|
|
200
|
+
maxAgentSteps: 25,
|
|
201
|
+
};
|
|
202
|
+
const result = constants_1.CodebuffConfigSchema.safeParse(config);
|
|
203
|
+
(0, bun_test_1.expect)(result.success).toBe(true);
|
|
204
|
+
if (result.success) {
|
|
205
|
+
(0, bun_test_1.expect)(result.data.maxAgentSteps).toBe(25);
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
(0, bun_test_1.it)('should reject invalid startup process in array', () => {
|
|
209
|
+
const config = {
|
|
210
|
+
startupProcesses: [
|
|
211
|
+
{
|
|
212
|
+
name: '', // invalid: empty name
|
|
213
|
+
command: 'npm start',
|
|
214
|
+
},
|
|
215
|
+
],
|
|
216
|
+
};
|
|
217
|
+
const result = constants_1.CodebuffConfigSchema.safeParse(config);
|
|
218
|
+
(0, bun_test_1.expect)(result.success).toBe(false);
|
|
219
|
+
});
|
|
220
|
+
(0, bun_test_1.it)('should reject invalid file change hook in array', () => {
|
|
221
|
+
const config = {
|
|
222
|
+
fileChangeHooks: [
|
|
223
|
+
{
|
|
224
|
+
name: 'test',
|
|
225
|
+
command: '', // invalid: empty command
|
|
226
|
+
},
|
|
227
|
+
],
|
|
228
|
+
};
|
|
229
|
+
const result = constants_1.CodebuffConfigSchema.safeParse(config);
|
|
230
|
+
(0, bun_test_1.expect)(result.success).toBe(false);
|
|
231
|
+
});
|
|
232
|
+
(0, bun_test_1.it)('should reject non-number maxAgentSteps', () => {
|
|
233
|
+
const config = {
|
|
234
|
+
maxAgentSteps: 'not-a-number',
|
|
235
|
+
};
|
|
236
|
+
const result = constants_1.CodebuffConfigSchema.safeParse(config);
|
|
237
|
+
(0, bun_test_1.expect)(result.success).toBe(false);
|
|
238
|
+
});
|
|
239
|
+
(0, bun_test_1.it)('should reject non-array startupProcesses', () => {
|
|
240
|
+
const config = {
|
|
241
|
+
startupProcesses: 'not-an-array',
|
|
242
|
+
};
|
|
243
|
+
const result = constants_1.CodebuffConfigSchema.safeParse(config);
|
|
244
|
+
(0, bun_test_1.expect)(result.success).toBe(false);
|
|
245
|
+
});
|
|
246
|
+
(0, bun_test_1.it)('should reject non-array fileChangeHooks', () => {
|
|
247
|
+
const config = {
|
|
248
|
+
fileChangeHooks: 'not-an-array',
|
|
249
|
+
};
|
|
250
|
+
const result = constants_1.CodebuffConfigSchema.safeParse(config);
|
|
251
|
+
(0, bun_test_1.expect)(result.success).toBe(false);
|
|
252
|
+
});
|
|
253
|
+
});
|
|
254
|
+
(0, bun_test_1.describe)('TypeScript types', () => {
|
|
255
|
+
(0, bun_test_1.it)('should have correct TypeScript types', () => {
|
|
256
|
+
// This test ensures the types are properly exported and inferred
|
|
257
|
+
const startupProcess = {
|
|
258
|
+
name: 'test',
|
|
259
|
+
command: 'echo hello',
|
|
260
|
+
enabled: true,
|
|
261
|
+
};
|
|
262
|
+
const config = {
|
|
263
|
+
description: 'Test config',
|
|
264
|
+
startupProcesses: [startupProcess],
|
|
265
|
+
maxAgentSteps: 15,
|
|
266
|
+
};
|
|
267
|
+
// If this compiles without TypeScript errors, the types are correct
|
|
268
|
+
(0, bun_test_1.expect)(startupProcess.name).toBe('test');
|
|
269
|
+
(0, bun_test_1.expect)(config.maxAgentSteps).toBe(15);
|
|
270
|
+
});
|
|
271
|
+
});
|
|
272
|
+
});
|
|
273
|
+
//# sourceMappingURL=constants.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.test.js","sourceRoot":"","sources":["../../../src/json-config/__tests__/constants.test.ts"],"names":[],"mappings":"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"}
|
package/dist/credentials.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { User } from '
|
|
1
|
+
import { User } from 'common/util/credentials';
|
|
2
2
|
export declare const userFromJson: (json: string, profileName?: string) => User | undefined;
|
|
3
3
|
export declare const CONFIG_DIR: string;
|
|
4
4
|
export declare const CREDENTIALS_PATH: string;
|
package/dist/credentials.js
CHANGED
|
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.CREDENTIALS_PATH = exports.CONFIG_DIR = exports.userFromJson = void 0;
|
|
7
|
-
const credentials_1 = require("
|
|
7
|
+
const credentials_1 = require("common/util/credentials");
|
|
8
8
|
const node_path_1 = __importDefault(require("node:path"));
|
|
9
9
|
const os_1 = __importDefault(require("os"));
|
|
10
10
|
const zod_1 = require("zod");
|
|
@@ -31,7 +31,7 @@ const userFromJson = (json, profileName = 'default') => {
|
|
|
31
31
|
}
|
|
32
32
|
};
|
|
33
33
|
exports.userFromJson = userFromJson;
|
|
34
|
-
const file_1 = require("
|
|
34
|
+
const file_1 = require("common/util/file");
|
|
35
35
|
exports.CONFIG_DIR = node_path_1.default.join(os_1.default.homedir(), '.config', 'manicode' +
|
|
36
36
|
// on a development stack?
|
|
37
37
|
(process.env.NEXT_PUBLIC_CB_ENVIRONMENT &&
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { StartupProcess } from '
|
|
1
|
+
import { StartupProcess } from 'common/json-config/constants';
|
|
2
2
|
/**
|
|
3
3
|
* Starts background development processes defined in the config file.
|
|
4
4
|
* Processes are started asynchronously and their output is tracked.
|
|
@@ -5,8 +5,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.startDevProcesses = startDevProcesses;
|
|
7
7
|
const path_1 = __importDefault(require("path"));
|
|
8
|
-
const constants_1 = require("
|
|
9
|
-
const string_1 = require("
|
|
8
|
+
const constants_1 = require("common/json-config/constants");
|
|
9
|
+
const string_1 = require("common/util/string");
|
|
10
10
|
const picocolors_1 = require("picocolors");
|
|
11
11
|
const terminal_1 = require("./utils/terminal");
|
|
12
12
|
/**
|
package/dist/index.js
CHANGED
|
File without changes
|
|
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.runFileChangeHooks = runFileChangeHooks;
|
|
7
|
-
const string_1 = require("
|
|
7
|
+
const string_1 = require("common/util/string");
|
|
8
8
|
const micromatch_1 = __importDefault(require("micromatch"));
|
|
9
9
|
const project_files_1 = require("../project-files");
|
|
10
10
|
const logger_1 = require("../utils/logger");
|
|
@@ -8,7 +8,7 @@ const fs_1 = require("fs");
|
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
9
|
const jsonc_parser_1 = require("jsonc-parser");
|
|
10
10
|
const picocolors_1 = require("picocolors");
|
|
11
|
-
const constants_1 = require("
|
|
11
|
+
const constants_1 = require("common/json-config/constants");
|
|
12
12
|
const project_files_1 = require("../project-files");
|
|
13
13
|
/**
|
|
14
14
|
* Loads and validates the configuration file from the project directory.
|
package/dist/menu.d.ts
CHANGED
package/dist/menu.js
CHANGED
|
@@ -35,7 +35,7 @@ const fs = __importStar(require("fs"));
|
|
|
35
35
|
const os_1 = __importDefault(require("os"));
|
|
36
36
|
const path_1 = __importDefault(require("path"));
|
|
37
37
|
const picocolors_1 = require("picocolors");
|
|
38
|
-
const constants_1 = require("
|
|
38
|
+
const constants_1 = require("common/json-config/constants");
|
|
39
39
|
const project_files_1 = require("./project-files");
|
|
40
40
|
exports.interactiveCommandDetails = [
|
|
41
41
|
{
|
package/dist/project-files.d.ts
CHANGED
|
@@ -23,7 +23,7 @@ export declare function toAbsolutePath(filepath: string, projectRoot: string): s
|
|
|
23
23
|
export declare function isSubdir(fromPath: string, toPath: string): boolean;
|
|
24
24
|
export declare function initProjectFileContextWithWorker(dir: string, resetCache?: boolean): Promise<{
|
|
25
25
|
currentWorkingDirectory: string;
|
|
26
|
-
fileTree: import("
|
|
26
|
+
fileTree: import("common/util/file").FileTreeNode[];
|
|
27
27
|
fileTokenScores: Record<string, Record<string, number>>;
|
|
28
28
|
knowledgeFiles: Record<string, string>;
|
|
29
29
|
gitChanges: {
|
|
@@ -73,7 +73,7 @@ export declare function initProjectFileContextWithWorker(dir: string, resetCache
|
|
|
73
73
|
*/
|
|
74
74
|
export declare const getProjectFileContext: (projectRoot: string, lastFileVersion: Record<string, string>) => Promise<{
|
|
75
75
|
currentWorkingDirectory: string;
|
|
76
|
-
fileTree: import("
|
|
76
|
+
fileTree: import("common/util/file").FileTreeNode[];
|
|
77
77
|
fileTokenScores: Record<string, Record<string, number>>;
|
|
78
78
|
knowledgeFiles: Record<string, string>;
|
|
79
79
|
gitChanges: {
|
package/dist/project-files.js
CHANGED
|
@@ -54,14 +54,14 @@ const os_1 = __importDefault(require("os"));
|
|
|
54
54
|
const path_1 = __importStar(require("path"));
|
|
55
55
|
const util_1 = require("util");
|
|
56
56
|
const worker_threads_1 = require("worker_threads");
|
|
57
|
-
const parse_1 = require("
|
|
58
|
-
const constants_1 = require("
|
|
59
|
-
const project_file_tree_1 = require("
|
|
60
|
-
const file_1 = require("
|
|
61
|
-
const object_1 = require("
|
|
57
|
+
const parse_1 = require("code-map/parse");
|
|
58
|
+
const constants_1 = require("common/constants");
|
|
59
|
+
const project_file_tree_1 = require("common/project-file-tree");
|
|
60
|
+
const file_1 = require("common/util/file");
|
|
61
|
+
const object_1 = require("common/util/object");
|
|
62
62
|
const diff_1 = require("diff");
|
|
63
63
|
const picocolors_1 = require("picocolors");
|
|
64
|
-
const constants_2 = require("
|
|
64
|
+
const constants_2 = require("common/json-config/constants");
|
|
65
65
|
const checkpoint_manager_1 = require("./checkpoints/checkpoint-manager");
|
|
66
66
|
const credentials_1 = require("./credentials");
|
|
67
67
|
const logger_1 = require("./utils/logger");
|
package/dist/tool-handlers.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { BrowserResponse } from '
|
|
2
|
-
import { RawToolCall } from '
|
|
1
|
+
import { BrowserResponse } from 'common/browser-actions';
|
|
2
|
+
import { RawToolCall } from 'common/types/tools';
|
|
3
3
|
export type ToolHandler<T extends Record<string, any>> = (parameters: T, id: string) => Promise<string | BrowserResponse>;
|
|
4
4
|
export declare const handleUpdateFile: ToolHandler<{
|
|
5
5
|
tool: 'write_file' | 'str_replace' | 'create_plan';
|
package/dist/tool-handlers.js
CHANGED
|
@@ -27,10 +27,10 @@ exports.handleToolCall = exports.toolHandlers = exports.handleSleep = exports.ha
|
|
|
27
27
|
const child_process_1 = require("child_process");
|
|
28
28
|
const path = __importStar(require("path"));
|
|
29
29
|
const ripgrep_1 = require("@vscode/ripgrep");
|
|
30
|
-
const actions_1 = require("
|
|
31
|
-
const browser_actions_1 = require("
|
|
32
|
-
const changes_1 = require("
|
|
33
|
-
const string_1 = require("
|
|
30
|
+
const actions_1 = require("common/actions");
|
|
31
|
+
const browser_actions_1 = require("common/browser-actions");
|
|
32
|
+
const changes_1 = require("common/util/changes");
|
|
33
|
+
const string_1 = require("common/util/string");
|
|
34
34
|
const picocolors_1 = require("picocolors");
|
|
35
35
|
const logger_1 = require("./utils/logger");
|
|
36
36
|
const browser_runner_1 = require("./browser-runner");
|
package/dist/types.d.ts
CHANGED
package/dist/update-codebuff.js
CHANGED
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.updateCodebuff = updateCodebuff;
|
|
7
7
|
const child_process_1 = require("child_process");
|
|
8
8
|
const picocolors_1 = require("picocolors");
|
|
9
|
-
const analytics_events_1 = require("
|
|
9
|
+
const analytics_events_1 = require("common/constants/analytics-events");
|
|
10
10
|
const package_json_1 = __importDefault(require("../package.json"));
|
|
11
11
|
const background_process_manager_1 = require("./background-process-manager");
|
|
12
12
|
const config_1 = require("./config");
|
|
@@ -29,8 +29,8 @@ 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
|
-
const tools_1 = require("
|
|
33
|
-
const projectFileTree = __importStar(require("
|
|
32
|
+
const tools_1 = require("common/constants/tools");
|
|
33
|
+
const projectFileTree = __importStar(require("common/project-file-tree"));
|
|
34
34
|
const strip_ansi_1 = __importDefault(require("strip-ansi"));
|
|
35
35
|
const projectFiles = __importStar(require("../../project-files"));
|
|
36
36
|
const tool_renderers_1 = require("../tool-renderers");
|
|
@@ -8,7 +8,7 @@ const path_1 = __importDefault(require("path"));
|
|
|
8
8
|
const stream_1 = require("stream");
|
|
9
9
|
// @ts-ignore
|
|
10
10
|
const bun_test_1 = require("bun:test");
|
|
11
|
-
const tools_1 = require("
|
|
11
|
+
const tools_1 = require("common/constants/tools");
|
|
12
12
|
const strip_ansi_1 = __importDefault(require("strip-ansi"));
|
|
13
13
|
const tool_renderers_1 = require("../tool-renderers");
|
|
14
14
|
const xml_stream_parser_1 = require("../xml-stream-parser");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AnalyticsEvent } from '
|
|
1
|
+
import { AnalyticsEvent } from 'common/constants/analytics-events';
|
|
2
2
|
export declare let identified: boolean;
|
|
3
3
|
export declare function initAnalytics(): void;
|
|
4
4
|
export declare function flushAnalytics(): Promise<void>;
|
package/dist/utils/logger.js
CHANGED
|
@@ -27,7 +27,7 @@ exports.logger = exports.loggerContext = void 0;
|
|
|
27
27
|
const fs_1 = require("fs");
|
|
28
28
|
const path_1 = __importStar(require("path"));
|
|
29
29
|
const util_1 = require("util");
|
|
30
|
-
const analytics_events_1 = require("
|
|
30
|
+
const analytics_events_1 = require("common/constants/analytics-events");
|
|
31
31
|
const pino_1 = require("pino");
|
|
32
32
|
const project_files_1 = require("../project-files");
|
|
33
33
|
const analytics_1 = require("./analytics");
|
package/dist/utils/terminal.js
CHANGED
|
@@ -36,9 +36,9 @@ const fs = __importStar(require("fs"));
|
|
|
36
36
|
const fs_1 = require("fs");
|
|
37
37
|
const os = __importStar(require("os"));
|
|
38
38
|
const path_1 = __importStar(require("path"));
|
|
39
|
-
const analytics_events_1 = require("
|
|
40
|
-
const array_1 = require("
|
|
41
|
-
const string_1 = require("
|
|
39
|
+
const analytics_events_1 = require("common/constants/analytics-events");
|
|
40
|
+
const array_1 = require("common/util/array");
|
|
41
|
+
const string_1 = require("common/util/string");
|
|
42
42
|
const picocolors_1 = require("picocolors");
|
|
43
43
|
const background_process_manager_1 = require("../background-process-manager");
|
|
44
44
|
const project_files_1 = require("../project-files");
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.toolRenderers = exports.defaultToolCallRenderer = void 0;
|
|
4
|
-
const project_file_tree_1 = require("
|
|
5
|
-
const string_1 = require("
|
|
4
|
+
const project_file_tree_1 = require("common/project-file-tree");
|
|
5
|
+
const string_1 = require("common/util/string");
|
|
6
6
|
const picocolors_1 = require("picocolors");
|
|
7
7
|
const project_files_1 = require("../project-files");
|
|
8
8
|
let toolStart = true;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createXMLStreamParser = createXMLStreamParser;
|
|
4
|
-
const tools_1 = require("
|
|
5
|
-
const saxy_1 = require("
|
|
4
|
+
const tools_1 = require("common/constants/tools");
|
|
5
|
+
const saxy_1 = require("common/util/saxy");
|
|
6
6
|
const tool_renderers_1 = require("./tool-renderers");
|
|
7
7
|
/**
|
|
8
8
|
* Creates a transform stream that processes XML tool calls
|
package/dist/web-scraper.js
CHANGED
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.scrapeWebPage = scrapeWebPage;
|
|
4
4
|
exports.parseUrlsFromContent = parseUrlsFromContent;
|
|
5
5
|
exports.getScrapedContentBlocks = getScrapedContentBlocks;
|
|
6
|
-
const string_1 = require("
|
|
6
|
+
const string_1 = require("common/util/string");
|
|
7
7
|
const logger_1 = require("./utils/logger");
|
|
8
8
|
// Global cache for scraped web pages
|
|
9
9
|
const scrapedPagesCache = {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const worker_threads_1 = require("worker_threads");
|
|
4
|
-
const project_file_tree_1 = require("
|
|
4
|
+
const project_file_tree_1 = require("common/project-file-tree");
|
|
5
5
|
const file_manager_1 = require("../checkpoints/file-manager");
|
|
6
6
|
const project_files_1 = require("../project-files");
|
|
7
7
|
if (worker_threads_1.parentPort) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codebuff",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.311",
|
|
4
4
|
"description": "AI dev assistant",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"postpublish": "echo \"const fs=require('fs');fs.copyFileSync('temp.package.json','package.json');fs.unlinkSync('temp.package.json');\" | bun run -",
|
|
14
14
|
"format": "prettier --write \"**/*.{ts,tsx,json,md}\"",
|
|
15
15
|
"test": "jest",
|
|
16
|
-
"start-js": "nx
|
|
16
|
+
"start-js": "nx build npm-app && bun run with-env -- sh -c 'TS_NODE_BASEURL=./dist node -r tsconfig-paths/register dist/index.js ..'",
|
|
17
17
|
"start": "nx build npm-app > /dev/null && bun run with-env -- sh -c 'TS_NODE_PROJECT=./tsconfig.json ts-node -r tsconfig-paths/register src/index.ts ..'",
|
|
18
18
|
"start-max": "nx build npm-app > /dev/null && bun run with-env -- sh -c 'TS_NODE_PROJECT=./tsconfig.json ts-node -r tsconfig-paths/register src/index.ts .. --max'",
|
|
19
19
|
"start-lite": "nx build npm-app > /dev/null && bun run with-env -- sh -c 'TS_NODE_PROJECT=./tsconfig.json ts-node -r tsconfig-paths/register src/index.ts .. --lite'",
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { CodebuffConfig } from './constants';
|
|
2
|
-
/**
|
|
3
|
-
* Loads and validates the configuration file from the project directory.
|
|
4
|
-
* @param projectPath - The root directory of the project
|
|
5
|
-
* @returns The parsed and validated configuration, or null if no valid config exists
|
|
6
|
-
*/
|
|
7
|
-
export declare function loadCodebuffConfig(projectPath: string): CodebuffConfig | null;
|
|
@@ -1,51 +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.loadCodebuffConfig = loadCodebuffConfig;
|
|
7
|
-
const fs_1 = require("fs");
|
|
8
|
-
const path_1 = __importDefault(require("path"));
|
|
9
|
-
const jsonc_parser_1 = require("jsonc-parser");
|
|
10
|
-
const picocolors_1 = require("picocolors");
|
|
11
|
-
const constants_1 = require("./constants");
|
|
12
|
-
/**
|
|
13
|
-
* Loads and validates the configuration file from the project directory.
|
|
14
|
-
* @param projectPath - The root directory of the project
|
|
15
|
-
* @returns The parsed and validated configuration, or null if no valid config exists
|
|
16
|
-
*/
|
|
17
|
-
function loadCodebuffConfig(projectPath) {
|
|
18
|
-
const configPathPrimary = path_1.default.join(projectPath, constants_1.codebuffConfigFile);
|
|
19
|
-
const configPathBackup = path_1.default.join(projectPath, constants_1.codebuffConfigFileBackup);
|
|
20
|
-
const configPath = (0, fs_1.existsSync)(configPathBackup)
|
|
21
|
-
? configPathBackup
|
|
22
|
-
: (0, fs_1.existsSync)(configPathPrimary)
|
|
23
|
-
? configPathPrimary
|
|
24
|
-
: null;
|
|
25
|
-
if (configPath === null) {
|
|
26
|
-
return null;
|
|
27
|
-
}
|
|
28
|
-
try {
|
|
29
|
-
const jsoncContent = (0, fs_1.readFileSync)(configPath, 'utf-8');
|
|
30
|
-
const parsedConfig = (0, jsonc_parser_1.parse)(jsoncContent);
|
|
31
|
-
const result = constants_1.CodebuffConfigSchema.safeParse(parsedConfig);
|
|
32
|
-
if (!result.success) {
|
|
33
|
-
console.warn((0, picocolors_1.yellow)(`Warning: Invalid ${constants_1.codebuffConfigFile} configuration. Please check the schema:\n` +
|
|
34
|
-
result.error.errors
|
|
35
|
-
.map((err) => `- ${err.path.join('.')}: ${err.message}`)
|
|
36
|
-
.join('\n')));
|
|
37
|
-
return null;
|
|
38
|
-
}
|
|
39
|
-
return result.data;
|
|
40
|
-
}
|
|
41
|
-
catch (error) {
|
|
42
|
-
if (error instanceof SyntaxError) {
|
|
43
|
-
console.warn((0, picocolors_1.yellow)(`Warning: Invalid JSON in ${constants_1.codebuffConfigFile}. Please check the syntax.`));
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
console.warn((0, picocolors_1.yellow)(`Warning: Error reading ${constants_1.codebuffConfigFile} configuration file.`));
|
|
47
|
-
}
|
|
48
|
-
return null;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=parser.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/json-config/parser.ts"],"names":[],"mappings":";;;;;AAkBA,gDAgDC;AAlED,2BAA6C;AAC7C,gDAAuB;AAEvB,+CAAkD;AAClD,2CAAmC;AAEnC,2CAKoB;AAEpB;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,WAAmB;IACpD,MAAM,iBAAiB,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,8BAAkB,CAAC,CAAA;IACpE,MAAM,gBAAgB,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,oCAAwB,CAAC,CAAA;IACzE,MAAM,UAAU,GAAG,IAAA,eAAU,EAAC,gBAAgB,CAAC;QAC7C,CAAC,CAAC,gBAAgB;QAClB,CAAC,CAAC,IAAA,eAAU,EAAC,iBAAiB,CAAC;YAC7B,CAAC,CAAC,iBAAiB;YACnB,CAAC,CAAC,IAAI,CAAA;IAEV,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACxB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,IAAA,iBAAY,EAAC,UAAU,EAAE,OAAO,CAAC,CAAA;QACtD,MAAM,YAAY,GAAG,IAAA,oBAAU,EAAC,YAAY,CAAC,CAAA;QAE7C,MAAM,MAAM,GAAG,gCAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;QAE3D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CACV,IAAA,mBAAM,EACJ,oBAAoB,8BAAkB,4CAA4C;gBAChF,MAAM,CAAC,KAAK,CAAC,MAAM;qBAChB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC;qBACvD,IAAI,CAAC,IAAI,CAAC,CAChB,CACF,CAAA;YACD,OAAO,IAAI,CAAA;QACb,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAA;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CACV,IAAA,mBAAM,EACJ,4BAA4B,8BAAkB,4BAA4B,CAC3E,CACF,CAAA;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CACV,IAAA,mBAAM,EACJ,0BAA0B,8BAAkB,sBAAsB,CACnE,CACF,CAAA;QACH,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { CodebuffConfig } from './common/json-config/constants';
|
|
2
|
-
/**
|
|
3
|
-
* Loads and validates the configuration file from the project directory.
|
|
4
|
-
* @param projectPath - The root directory of the project
|
|
5
|
-
* @returns The parsed and validated configuration, or null if no valid config exists
|
|
6
|
-
*/
|
|
7
|
-
export declare function loadCodebuffConfig(): CodebuffConfig | null;
|
|
@@ -1,53 +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.loadCodebuffConfig = loadCodebuffConfig;
|
|
7
|
-
const fs_1 = require("fs");
|
|
8
|
-
const path_1 = __importDefault(require("path"));
|
|
9
|
-
const jsonc_parser_1 = require("jsonc-parser");
|
|
10
|
-
const picocolors_1 = require("picocolors");
|
|
11
|
-
const constants_1 = require("./common/json-config/constants");
|
|
12
|
-
const project_files_1 = require("./project-files");
|
|
13
|
-
/**
|
|
14
|
-
* Loads and validates the configuration file from the project directory.
|
|
15
|
-
* @param projectPath - The root directory of the project
|
|
16
|
-
* @returns The parsed and validated configuration, or null if no valid config exists
|
|
17
|
-
*/
|
|
18
|
-
function loadCodebuffConfig() {
|
|
19
|
-
const projectPath = (0, project_files_1.getProjectRoot)();
|
|
20
|
-
const configPathPrimary = path_1.default.join(projectPath, constants_1.codebuffConfigFile);
|
|
21
|
-
const configPathBackup = path_1.default.join(projectPath, constants_1.codebuffConfigFileBackup);
|
|
22
|
-
const configPath = (0, fs_1.existsSync)(configPathBackup)
|
|
23
|
-
? configPathBackup
|
|
24
|
-
: (0, fs_1.existsSync)(configPathPrimary)
|
|
25
|
-
? configPathPrimary
|
|
26
|
-
: null;
|
|
27
|
-
if (configPath === null) {
|
|
28
|
-
return null;
|
|
29
|
-
}
|
|
30
|
-
try {
|
|
31
|
-
const jsoncContent = (0, fs_1.readFileSync)(configPath, 'utf-8');
|
|
32
|
-
const parsedConfig = (0, jsonc_parser_1.parse)(jsoncContent);
|
|
33
|
-
const result = constants_1.CodebuffConfigSchema.safeParse(parsedConfig);
|
|
34
|
-
if (!result.success) {
|
|
35
|
-
console.warn((0, picocolors_1.yellow)(`Warning: Invalid ${constants_1.codebuffConfigFile} configuration. Please check the schema:\n` +
|
|
36
|
-
result.error.errors
|
|
37
|
-
.map((err) => `- ${err.path.join('.')}: ${err.message}`)
|
|
38
|
-
.join('\n')));
|
|
39
|
-
return null;
|
|
40
|
-
}
|
|
41
|
-
return result.data;
|
|
42
|
-
}
|
|
43
|
-
catch (error) {
|
|
44
|
-
if (error instanceof SyntaxError) {
|
|
45
|
-
console.warn((0, picocolors_1.yellow)(`Warning: Invalid JSON in ${constants_1.codebuffConfigFile}. Please check the syntax.`));
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
console.warn((0, picocolors_1.yellow)(`Warning: Error reading ${constants_1.codebuffConfigFile} configuration file.`));
|
|
49
|
-
}
|
|
50
|
-
return null;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
//# sourceMappingURL=json-config-parser.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"json-config-parser.js","sourceRoot":"","sources":["../src/json-config-parser.ts"],"names":[],"mappings":";;;;;AAmBA,gDAiDC;AApED,2BAA6C;AAC7C,gDAAuB;AAEvB,+CAAkD;AAClD,2CAAmC;AAEnC,4DAKqC;AACrC,mDAAgD;AAEhD;;;;GAIG;AACH,SAAgB,kBAAkB;IAChC,MAAM,WAAW,GAAG,IAAA,8BAAc,GAAE,CAAA;IACpC,MAAM,iBAAiB,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,8BAAkB,CAAC,CAAA;IACpE,MAAM,gBAAgB,GAAG,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,oCAAwB,CAAC,CAAA;IACzE,MAAM,UAAU,GAAG,IAAA,eAAU,EAAC,gBAAgB,CAAC;QAC7C,CAAC,CAAC,gBAAgB;QAClB,CAAC,CAAC,IAAA,eAAU,EAAC,iBAAiB,CAAC;YAC7B,CAAC,CAAC,iBAAiB;YACnB,CAAC,CAAC,IAAI,CAAA;IAEV,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACxB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,IAAA,iBAAY,EAAC,UAAU,EAAE,OAAO,CAAC,CAAA;QACtD,MAAM,YAAY,GAAG,IAAA,oBAAU,EAAC,YAAY,CAAC,CAAA;QAE7C,MAAM,MAAM,GAAG,gCAAoB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;QAE3D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CACV,IAAA,mBAAM,EACJ,oBAAoB,8BAAkB,4CAA4C;gBAChF,MAAM,CAAC,KAAK,CAAC,MAAM;qBAChB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC;qBACvD,IAAI,CAAC,IAAI,CAAC,CAChB,CACF,CAAA;YACD,OAAO,IAAI,CAAA;QACb,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAA;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CACV,IAAA,mBAAM,EACJ,4BAA4B,8BAAkB,4BAA4B,CAC3E,CACF,CAAA;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CACV,IAAA,mBAAM,EACJ,0BAA0B,8BAAkB,sBAAsB,CACnE,CACF,CAAA;QACH,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC"}
|