@machina.ai/cell-cli-core 1.50.0-rc1 → 1.51.0-rc1
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/docs/changelogs/preview.md +11 -3
- package/dist/docs/cli/settings.md +21 -1
- package/dist/docs/reference/configuration.md +150 -39
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/package.json +2 -2
- package/dist/src/agents/browser/browserAgentDefinition.js +2 -2
- package/dist/src/agents/browser/browserAgentDefinition.js.map +1 -1
- package/dist/src/agents/codebase-investigator.js +2 -2
- package/dist/src/agents/codebase-investigator.js.map +1 -1
- package/dist/src/agents/skill-extraction-agent.js +2 -2
- package/dist/src/agents/skill-extraction-agent.js.map +1 -1
- package/dist/src/billing/billing.js +3 -1
- package/dist/src/billing/billing.js.map +1 -1
- package/dist/src/config/defaultModelConfigs.js +31 -25
- package/dist/src/config/defaultModelConfigs.js.map +1 -1
- package/dist/src/config/models.d.ts +1 -0
- package/dist/src/config/models.js +15 -5
- package/dist/src/config/models.js.map +1 -1
- package/dist/src/config/models.test.js +15 -15
- package/dist/src/config/models.test.js.map +1 -1
- package/dist/src/core/contentGenerator.js +17 -0
- package/dist/src/core/contentGenerator.js.map +1 -1
- package/dist/src/core/contentGenerator.test.js +57 -0
- package/dist/src/core/contentGenerator.test.js.map +1 -1
- package/dist/src/core/geminiChat.test.js +25 -0
- package/dist/src/core/geminiChat.test.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/safety/built-in.js +60 -11
- package/dist/src/safety/built-in.js.map +1 -1
- package/dist/src/safety/built-in.test.js +60 -0
- package/dist/src/safety/built-in.test.js.map +1 -1
- package/dist/src/test-utils/mockWorkspaceContext.js +12 -1
- package/dist/src/test-utils/mockWorkspaceContext.js.map +1 -1
- package/dist/src/tools/at-reference-resolution.test.d.ts +6 -0
- package/dist/src/tools/at-reference-resolution.test.js +402 -0
- package/dist/src/tools/at-reference-resolution.test.js.map +1 -0
- package/dist/src/tools/edit.js +91 -12
- package/dist/src/tools/edit.js.map +1 -1
- package/dist/src/tools/edit.test.js +22 -1
- package/dist/src/tools/edit.test.js.map +1 -1
- package/dist/src/tools/glob.js +40 -4
- package/dist/src/tools/glob.js.map +1 -1
- package/dist/src/tools/glob.test.js +2 -1
- package/dist/src/tools/glob.test.js.map +1 -1
- package/dist/src/tools/grep.js +22 -3
- package/dist/src/tools/grep.js.map +1 -1
- package/dist/src/tools/grep.test.js +2 -2
- package/dist/src/tools/grep.test.js.map +1 -1
- package/dist/src/tools/read-file.js +16 -3
- package/dist/src/tools/read-file.js.map +1 -1
- package/dist/src/tools/read-many-files.test.js +2 -2
- package/dist/src/tools/read-many-files.test.js.map +1 -1
- package/dist/src/tools/ripGrep.js +30 -3
- package/dist/src/tools/ripGrep.js.map +1 -1
- package/dist/src/tools/ripGrep.test.js +3 -3
- package/dist/src/tools/ripGrep.test.js.map +1 -1
- package/dist/src/tools/trackerTools.test.js +1 -1
- package/dist/src/tools/trackerTools.test.js.map +1 -1
- package/dist/src/tools/write-file.js +76 -9
- package/dist/src/tools/write-file.js.map +1 -1
- package/dist/src/tools/write-file.test.js +17 -16
- package/dist/src/tools/write-file.test.js.map +1 -1
- package/dist/src/utils/editCorrector.test.js +6 -0
- package/dist/src/utils/editCorrector.test.js.map +1 -1
- package/dist/src/utils/fetch.test.js +1 -0
- package/dist/src/utils/fetch.test.js.map +1 -1
- package/dist/src/utils/historyHardening.d.ts +1 -0
- package/dist/src/utils/historyHardening.js +92 -14
- package/dist/src/utils/historyHardening.js.map +1 -1
- package/dist/src/utils/historyHardening.test.js +189 -1
- package/dist/src/utils/historyHardening.test.js.map +1 -1
- package/dist/src/utils/memoryImportProcessor.js +24 -3
- package/dist/src/utils/memoryImportProcessor.js.map +1 -1
- package/dist/src/utils/memoryImportProcessor.test.js +36 -0
- package/dist/src/utils/memoryImportProcessor.test.js.map +1 -1
- package/dist/src/utils/pathCorrector.js +5 -3
- package/dist/src/utils/pathCorrector.js.map +1 -1
- package/dist/src/utils/pathCorrector.test.js +2 -1
- package/dist/src/utils/pathCorrector.test.js.map +1 -1
- package/dist/src/utils/paths.d.ts +5 -0
- package/dist/src/utils/paths.js +41 -0
- package/dist/src/utils/paths.js.map +1 -1
- package/dist/src/utils/paths.test.js +15 -1
- package/dist/src/utils/paths.test.js.map +1 -1
- package/dist/src/utils/workspaceContext.js +21 -0
- package/dist/src/utils/workspaceContext.js.map +1 -1
- package/dist/src/utils/workspaceContext.test.js +40 -0
- package/dist/src/utils/workspaceContext.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"built-in.test.js","sourceRoot":"","sources":["../../../src/safety/built-in.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"built-in.test.js","sourceRoot":"","sources":["../../../src/safety/built-in.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Copyright 2025 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
import * as fs from 'node:fs';
|
|
6
7
|
import { vi } from 'vitest';
|
|
7
8
|
/**
|
|
8
9
|
* Creates a mock WorkspaceContext for testing
|
|
@@ -11,7 +12,17 @@ import { vi } from 'vitest';
|
|
|
11
12
|
* @returns A mock WorkspaceContext instance
|
|
12
13
|
*/
|
|
13
14
|
export function createMockWorkspaceContext(rootDir, additionalDirs = []) {
|
|
14
|
-
const
|
|
15
|
+
const resolveToRealPathSafe = (p) => {
|
|
16
|
+
try {
|
|
17
|
+
return fs.realpathSync(p);
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return p;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
const resolvedRootDir = resolveToRealPathSafe(rootDir);
|
|
24
|
+
const resolvedAdditionalDirs = additionalDirs.map(resolveToRealPathSafe);
|
|
25
|
+
const allDirs = [resolvedRootDir, ...resolvedAdditionalDirs];
|
|
15
26
|
const mockWorkspaceContext = {
|
|
16
27
|
addDirectory: vi.fn(),
|
|
17
28
|
getDirectories: vi.fn().mockReturnValue(allDirs),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mockWorkspaceContext.js","sourceRoot":"","sources":["../../../src/test-utils/mockWorkspaceContext.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAG5B;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CACxC,OAAe,EACf,iBAA2B,EAAE;IAE7B,MAAM,
|
|
1
|
+
{"version":3,"file":"mockWorkspaceContext.js","sourceRoot":"","sources":["../../../src/test-utils/mockWorkspaceContext.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAG5B;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CACxC,OAAe,EACf,iBAA2B,EAAE;IAE7B,MAAM,qBAAqB,GAAG,CAAC,CAAS,EAAE,EAAE;QAC1C,IAAI,CAAC;YACH,OAAO,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACvD,MAAM,sBAAsB,GAAG,cAAc,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACzE,MAAM,OAAO,GAAG,CAAC,eAAe,EAAE,GAAG,sBAAsB,CAAC,CAAC;IAE7D,MAAM,oBAAoB,GAAG;QAC3B,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE;QACrB,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC;QAChD,qBAAqB,EAAE,EAAE;aACtB,EAAE,EAAE;aACJ,kBAAkB,CAAC,CAAC,IAAY,EAAE,EAAE,CACnC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAC5C;KAC2B,CAAC;IAEjC,OAAO,oBAAoB,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,402 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
|
|
7
|
+
import { ReadFileTool } from './read-file.js';
|
|
8
|
+
import { WriteFileTool, getCorrectedFileContent } from './write-file.js';
|
|
9
|
+
import { EditTool } from './edit.js';
|
|
10
|
+
import { correctPath } from '../utils/pathCorrector.js';
|
|
11
|
+
import path from 'node:path';
|
|
12
|
+
import os from 'node:os';
|
|
13
|
+
import fs from 'node:fs';
|
|
14
|
+
import fsp from 'node:fs/promises';
|
|
15
|
+
import { FileDiscoveryService } from '../services/fileDiscoveryService.js';
|
|
16
|
+
import { StandardFileSystemService } from '../services/fileSystemService.js';
|
|
17
|
+
import { createMockWorkspaceContext } from '../test-utils/mockWorkspaceContext.js';
|
|
18
|
+
import { createMockMessageBus } from '../test-utils/mock-message-bus.js';
|
|
19
|
+
import { isSubpath } from '../utils/paths.js';
|
|
20
|
+
vi.mock('../telemetry/loggers.js', () => ({
|
|
21
|
+
logFileOperation: vi.fn(),
|
|
22
|
+
logEditStrategy: vi.fn(),
|
|
23
|
+
logEditCorrectionEvent: vi.fn(),
|
|
24
|
+
}));
|
|
25
|
+
vi.mock('./jit-context.js', () => ({
|
|
26
|
+
discoverJitContext: vi.fn().mockResolvedValue(''),
|
|
27
|
+
appendJitContext: vi.fn().mockImplementation((content) => content),
|
|
28
|
+
appendJitContextToParts: vi.fn().mockImplementation((content) => content),
|
|
29
|
+
}));
|
|
30
|
+
describe('Consolidated At-Reference Path Resolution Tests (b-495551283)', () => {
|
|
31
|
+
let tempRootDir;
|
|
32
|
+
let mockConfigInstance;
|
|
33
|
+
const abortSignal = new AbortController().signal;
|
|
34
|
+
beforeEach(async () => {
|
|
35
|
+
// Create a unique temporary root directory for each test run
|
|
36
|
+
const realTmp = await fsp.realpath(os.tmpdir());
|
|
37
|
+
tempRootDir = await fsp.mkdtemp(path.join(realTmp, 'at-ref-resolution-root-'));
|
|
38
|
+
mockConfigInstance = {
|
|
39
|
+
getFileService: () => new FileDiscoveryService(tempRootDir),
|
|
40
|
+
getFileSystemService: () => new StandardFileSystemService(),
|
|
41
|
+
getTargetDir: () => tempRootDir,
|
|
42
|
+
getWorkspaceContext: () => createMockWorkspaceContext(tempRootDir),
|
|
43
|
+
getFileFilteringOptions: () => ({
|
|
44
|
+
respectGitIgnore: true,
|
|
45
|
+
respectGeminiIgnore: true,
|
|
46
|
+
}),
|
|
47
|
+
storage: {
|
|
48
|
+
getProjectTempDir: () => path.join(tempRootDir, '.temp'),
|
|
49
|
+
},
|
|
50
|
+
isInteractive: () => false,
|
|
51
|
+
isPlanMode: () => false,
|
|
52
|
+
getActiveModel: () => undefined,
|
|
53
|
+
getBaseLlmClient: () => undefined,
|
|
54
|
+
getDisableLLMCorrection: () => true,
|
|
55
|
+
isPathAllowed(absolutePath) {
|
|
56
|
+
const workspaceContext = this.getWorkspaceContext();
|
|
57
|
+
if (workspaceContext.isPathWithinWorkspace(absolutePath)) {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
const projectTempDir = this.storage.getProjectTempDir();
|
|
61
|
+
return isSubpath(path.resolve(projectTempDir), absolutePath);
|
|
62
|
+
},
|
|
63
|
+
validatePathAccess(absolutePath) {
|
|
64
|
+
if (this.isPathAllowed(absolutePath)) {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
const workspaceDirs = this.getWorkspaceContext().getDirectories();
|
|
68
|
+
const projectTempDir = this.storage.getProjectTempDir();
|
|
69
|
+
return `Path not in workspace: Attempted path "${absolutePath}" resolves outside the allowed workspace directories: ${workspaceDirs.join(', ')} or the project temp directory: ${projectTempDir}`;
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
// Create the policies directory and new-policies.txt file
|
|
73
|
+
await fsp.mkdir(path.join(tempRootDir, 'policies'), { recursive: true });
|
|
74
|
+
await fsp.writeFile(path.join(tempRootDir, 'policies', 'new-policies.txt'), '[[rule]]\ntoolName = "run_shell_command"\ndecision = "allow"\n', 'utf8');
|
|
75
|
+
});
|
|
76
|
+
afterEach(async () => {
|
|
77
|
+
// Clean up the temporary root directory
|
|
78
|
+
if (fs.existsSync(tempRootDir)) {
|
|
79
|
+
await fsp.rm(tempRootDir, { recursive: true, force: true });
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
it('ReadFileTool successfully reads a file when the path is prefixed with @', async () => {
|
|
83
|
+
const readFileTool = new ReadFileTool(mockConfigInstance, createMockMessageBus());
|
|
84
|
+
const invocation = readFileTool.build({
|
|
85
|
+
file_path: '@policies/new-policies.txt',
|
|
86
|
+
});
|
|
87
|
+
const result = await invocation.execute({ abortSignal });
|
|
88
|
+
// The tool should succeed because it defensively strips the leading '@'
|
|
89
|
+
expect(result.error).toBeUndefined();
|
|
90
|
+
expect(result.llmContent).toContain('toolName = "run_shell_command"');
|
|
91
|
+
});
|
|
92
|
+
it('ReadFileTool successfully reads a file when the path is prefixed with @/', async () => {
|
|
93
|
+
const readFileTool = new ReadFileTool(mockConfigInstance, createMockMessageBus());
|
|
94
|
+
const invocation = readFileTool.build({
|
|
95
|
+
file_path: '@/policies/new-policies.txt',
|
|
96
|
+
});
|
|
97
|
+
const result = await invocation.execute({ abortSignal });
|
|
98
|
+
// The tool should succeed because it defensively strips the leading '@/'
|
|
99
|
+
expect(result.error).toBeUndefined();
|
|
100
|
+
expect(result.llmContent).toContain('toolName = "run_shell_command"');
|
|
101
|
+
});
|
|
102
|
+
it('WriteFileTool successfully writes to/updates a file when the path is prefixed with @', async () => {
|
|
103
|
+
const writeFileTool = new WriteFileTool(mockConfigInstance, createMockMessageBus());
|
|
104
|
+
const invocation = writeFileTool.build({
|
|
105
|
+
file_path: '@policies/new-policies.txt',
|
|
106
|
+
content: '[[rule]]\nupdated_content = true\n',
|
|
107
|
+
});
|
|
108
|
+
const result = await invocation.execute({ abortSignal });
|
|
109
|
+
// The tool should succeed and update the correct file
|
|
110
|
+
expect(result.error).toBeUndefined();
|
|
111
|
+
const incorrectFilePath = path.join(tempRootDir, '@policies', 'new-policies.txt');
|
|
112
|
+
const correctFilePath = path.join(tempRootDir, 'policies', 'new-policies.txt');
|
|
113
|
+
// It should NOT have created a literal "@policies" directory
|
|
114
|
+
expect(fs.existsSync(incorrectFilePath)).toBe(false);
|
|
115
|
+
// It should have updated the correct file under "policies"
|
|
116
|
+
const updatedContent = await fsp.readFile(correctFilePath, 'utf8');
|
|
117
|
+
expect(updatedContent).toContain('updated_content = true');
|
|
118
|
+
});
|
|
119
|
+
it('WriteFileTool successfully creates a new file when the path is prefixed with @ and the parent directory exists', async () => {
|
|
120
|
+
const writeFileTool = new WriteFileTool(mockConfigInstance, createMockMessageBus());
|
|
121
|
+
const invocation = writeFileTool.build({
|
|
122
|
+
file_path: '@policies/brand-new-file.txt',
|
|
123
|
+
content: '[[rule]]\nbrand_new_file = true\n',
|
|
124
|
+
});
|
|
125
|
+
const result = await invocation.execute({ abortSignal });
|
|
126
|
+
// The tool should succeed and create the correct file
|
|
127
|
+
expect(result.error).toBeUndefined();
|
|
128
|
+
const incorrectFilePath = path.join(tempRootDir, '@policies', 'brand-new-file.txt');
|
|
129
|
+
const correctFilePath = path.join(tempRootDir, 'policies', 'brand-new-file.txt');
|
|
130
|
+
// It should NOT have created a literal "@policies" directory
|
|
131
|
+
expect(fs.existsSync(incorrectFilePath)).toBe(false);
|
|
132
|
+
// It should have created the correct file under "policies"
|
|
133
|
+
const createdContent = await fsp.readFile(correctFilePath, 'utf8');
|
|
134
|
+
expect(createdContent).toContain('brand_new_file = true');
|
|
135
|
+
});
|
|
136
|
+
it('WriteFileTool successfully creates a new file in a nested subdirectory when the path is prefixed with @ and the first segment exists', async () => {
|
|
137
|
+
const writeFileTool = new WriteFileTool(mockConfigInstance, createMockMessageBus());
|
|
138
|
+
const invocation = writeFileTool.build({
|
|
139
|
+
file_path: '@policies/sub/brand-new-file.txt',
|
|
140
|
+
content: '[[rule]]\nnested_brand_new_file = true\n',
|
|
141
|
+
});
|
|
142
|
+
const result = await invocation.execute({ abortSignal });
|
|
143
|
+
// The tool should succeed and create the correct file
|
|
144
|
+
expect(result.error).toBeUndefined();
|
|
145
|
+
const incorrectFilePath = path.join(tempRootDir, '@policies', 'sub', 'brand-new-file.txt');
|
|
146
|
+
const correctFilePath = path.join(tempRootDir, 'policies', 'sub', 'brand-new-file.txt');
|
|
147
|
+
// It should NOT have created a literal "@policies" directory
|
|
148
|
+
expect(fs.existsSync(incorrectFilePath)).toBe(false);
|
|
149
|
+
// It should have created the correct file under "policies/sub"
|
|
150
|
+
const createdContent = await fsp.readFile(correctFilePath, 'utf8');
|
|
151
|
+
expect(createdContent).toContain('nested_brand_new_file = true');
|
|
152
|
+
});
|
|
153
|
+
it('WriteFileTool successfully creates a new file in a nested subdirectory when the path is prefixed with @ and the first segment does NOT exist', async () => {
|
|
154
|
+
const writeFileTool = new WriteFileTool(mockConfigInstance, createMockMessageBus());
|
|
155
|
+
const invocation = writeFileTool.build({
|
|
156
|
+
file_path: '@new-policies/sub/brand-new-file.txt',
|
|
157
|
+
content: '[[rule]]\nnested_brand_new_file = true\n',
|
|
158
|
+
});
|
|
159
|
+
const result = await invocation.execute({ abortSignal });
|
|
160
|
+
// The tool should succeed and create the correct file
|
|
161
|
+
expect(result.error).toBeUndefined();
|
|
162
|
+
const incorrectFilePath = path.join(tempRootDir, '@new-policies', 'sub', 'brand-new-file.txt');
|
|
163
|
+
const correctFilePath = path.join(tempRootDir, 'new-policies', 'sub', 'brand-new-file.txt');
|
|
164
|
+
// It should NOT have created a literal "@new-policies" directory
|
|
165
|
+
expect(fs.existsSync(incorrectFilePath)).toBe(false);
|
|
166
|
+
// It SHOULD have created the file under "new-policies/sub"
|
|
167
|
+
expect(fs.existsSync(correctFilePath)).toBe(true);
|
|
168
|
+
// Verify the content of the created file
|
|
169
|
+
const createdContent = await fsp.readFile(correctFilePath, 'utf8');
|
|
170
|
+
expect(createdContent).toContain('nested_brand_new_file = true');
|
|
171
|
+
});
|
|
172
|
+
it('WriteFileTool successfully creates a new file in a nested subdirectory when the path is prefixed with @/ and the first segment does NOT exist', async () => {
|
|
173
|
+
const writeFileTool = new WriteFileTool(mockConfigInstance, createMockMessageBus());
|
|
174
|
+
const invocation = writeFileTool.build({
|
|
175
|
+
file_path: '@/new-policies-alias/sub/brand-new-file.txt',
|
|
176
|
+
content: '[[rule]]\nnested_brand_new_file_alias = true\n',
|
|
177
|
+
});
|
|
178
|
+
const result = await invocation.execute({ abortSignal });
|
|
179
|
+
// The tool should succeed and create the correct file
|
|
180
|
+
expect(result.error).toBeUndefined();
|
|
181
|
+
const literalAtFilePath = path.join(tempRootDir, '@', 'new-policies-alias', 'sub', 'brand-new-file.txt');
|
|
182
|
+
const correctFilePath = path.join(tempRootDir, 'new-policies-alias', 'sub', 'brand-new-file.txt');
|
|
183
|
+
// It should NOT have created a literal "@" directory
|
|
184
|
+
expect(fs.existsSync(literalAtFilePath)).toBe(false);
|
|
185
|
+
expect(fs.existsSync(path.join(tempRootDir, '@'))).toBe(false);
|
|
186
|
+
// It should have created the file under "new-policies-alias/sub"
|
|
187
|
+
expect(fs.existsSync(correctFilePath)).toBe(true);
|
|
188
|
+
// Verify the content of the created file
|
|
189
|
+
const createdContent = await fsp.readFile(correctFilePath, 'utf8');
|
|
190
|
+
expect(createdContent).toContain('nested_brand_new_file_alias = true');
|
|
191
|
+
});
|
|
192
|
+
it('WriteFileTool successfully creates a new file in a nested subdirectory when the path is prefixed with @\\ and the first segment does NOT exist', async () => {
|
|
193
|
+
const writeFileTool = new WriteFileTool(mockConfigInstance, createMockMessageBus());
|
|
194
|
+
const invocation = writeFileTool.build({
|
|
195
|
+
file_path: '@\\new-policies-alias-win\\sub\\brand-new-file.txt',
|
|
196
|
+
content: '[[rule]]\nnested_brand_new_file_alias_win = true\n',
|
|
197
|
+
});
|
|
198
|
+
const result = await invocation.execute({ abortSignal });
|
|
199
|
+
// The tool should succeed and create the correct file
|
|
200
|
+
expect(result.error).toBeUndefined();
|
|
201
|
+
const isWindows = process.platform === 'win32';
|
|
202
|
+
const literalAtFilePath = isWindows
|
|
203
|
+
? path.join(tempRootDir, '@', 'new-policies-alias-win', 'sub', 'brand-new-file.txt')
|
|
204
|
+
: path.join(tempRootDir, '@\\new-policies-alias-win\\sub\\brand-new-file.txt');
|
|
205
|
+
const correctFilePath = isWindows
|
|
206
|
+
? path.join(tempRootDir, 'new-policies-alias-win', 'sub', 'brand-new-file.txt')
|
|
207
|
+
: path.join(tempRootDir, 'new-policies-alias-win\\sub\\brand-new-file.txt');
|
|
208
|
+
// It should NOT have created a literal "@" directory
|
|
209
|
+
expect(fs.existsSync(literalAtFilePath)).toBe(false);
|
|
210
|
+
expect(fs.existsSync(path.join(tempRootDir, '@'))).toBe(false);
|
|
211
|
+
// It should have created the file under "new-policies-alias-win/sub"
|
|
212
|
+
expect(fs.existsSync(correctFilePath)).toBe(true);
|
|
213
|
+
// Verify the content of the created file
|
|
214
|
+
const createdContent = await fsp.readFile(correctFilePath, 'utf8');
|
|
215
|
+
expect(createdContent).toContain('nested_brand_new_file_alias_win = true');
|
|
216
|
+
});
|
|
217
|
+
it('getCorrectedFileContent blocks path traversal outside the workspace', async () => {
|
|
218
|
+
const result = await getCorrectedFileContent(mockConfigInstance, '../../etc/passwd', 'malicious content', abortSignal);
|
|
219
|
+
// The utility should fail with a path validation error
|
|
220
|
+
expect(result.error).toBeDefined();
|
|
221
|
+
expect(result.error?.message).toContain('Path not in workspace');
|
|
222
|
+
});
|
|
223
|
+
it('EditTool.getModifyContext blocks path traversal outside the workspace', async () => {
|
|
224
|
+
const editTool = new EditTool(mockConfigInstance, createMockMessageBus());
|
|
225
|
+
const modifyContext = editTool.getModifyContext(abortSignal);
|
|
226
|
+
// The getCurrentContent method should throw a path validation error
|
|
227
|
+
await expect(modifyContext.getCurrentContent({
|
|
228
|
+
file_path: '../../etc/passwd',
|
|
229
|
+
instruction: 'read file',
|
|
230
|
+
old_string: '',
|
|
231
|
+
new_string: '',
|
|
232
|
+
})).rejects.toThrow('Path not in workspace');
|
|
233
|
+
// The getProposedContent method should throw a path validation error
|
|
234
|
+
await expect(modifyContext.getProposedContent({
|
|
235
|
+
file_path: '../../etc/passwd',
|
|
236
|
+
instruction: 'read file',
|
|
237
|
+
old_string: '',
|
|
238
|
+
new_string: '',
|
|
239
|
+
})).rejects.toThrow('Path not in workspace');
|
|
240
|
+
});
|
|
241
|
+
it('getCorrectedFileContent handles symlink loops gracefully', async () => {
|
|
242
|
+
const symlinkPath1 = path.join(tempRootDir, 'symlink1');
|
|
243
|
+
const symlinkPath2 = path.join(tempRootDir, 'symlink2');
|
|
244
|
+
await fsp.symlink(symlinkPath2, symlinkPath1);
|
|
245
|
+
await fsp.symlink(symlinkPath1, symlinkPath2);
|
|
246
|
+
const result = await getCorrectedFileContent(mockConfigInstance, 'symlink1', 'content', abortSignal);
|
|
247
|
+
// The utility should fail gracefully with a resolution error
|
|
248
|
+
expect(result.error).toBeDefined();
|
|
249
|
+
expect(result.error?.message).toContain('Failed to resolve path');
|
|
250
|
+
});
|
|
251
|
+
it('EditTool.getModifyContext handles symlink loops gracefully by throwing a descriptive error', async () => {
|
|
252
|
+
const symlinkPath1 = path.join(tempRootDir, 'symlink1');
|
|
253
|
+
const symlinkPath2 = path.join(tempRootDir, 'symlink2');
|
|
254
|
+
await fsp.symlink(symlinkPath2, symlinkPath1);
|
|
255
|
+
await fsp.symlink(symlinkPath1, symlinkPath2);
|
|
256
|
+
const editTool = new EditTool(mockConfigInstance, createMockMessageBus());
|
|
257
|
+
const modifyContext = editTool.getModifyContext(abortSignal);
|
|
258
|
+
// The getCurrentContent method should throw a path resolution error
|
|
259
|
+
await expect(modifyContext.getCurrentContent({
|
|
260
|
+
file_path: 'symlink1',
|
|
261
|
+
instruction: 'read file',
|
|
262
|
+
old_string: '',
|
|
263
|
+
new_string: '',
|
|
264
|
+
})).rejects.toThrow('Failed to resolve path');
|
|
265
|
+
// The getProposedContent method should throw a path resolution error
|
|
266
|
+
await expect(modifyContext.getProposedContent({
|
|
267
|
+
file_path: 'symlink1',
|
|
268
|
+
instruction: 'read file',
|
|
269
|
+
old_string: '',
|
|
270
|
+
new_string: '',
|
|
271
|
+
})).rejects.toThrow('Failed to resolve path');
|
|
272
|
+
});
|
|
273
|
+
it('getCorrectedFileContent successfully resolves paths in Plan Mode', async () => {
|
|
274
|
+
const plansDir = path.join(tempRootDir, '.plans');
|
|
275
|
+
await fsp.mkdir(plansDir, { recursive: true });
|
|
276
|
+
await fsp.writeFile(path.join(plansDir, 'plan-file.txt'), 'plan content', 'utf8');
|
|
277
|
+
const planConfigInstance = Object.assign({}, mockConfigInstance, {
|
|
278
|
+
isPlanMode: () => true,
|
|
279
|
+
getProjectRoot: () => tempRootDir,
|
|
280
|
+
storage: {
|
|
281
|
+
getProjectTempDir: () => path.join(tempRootDir, '.temp'),
|
|
282
|
+
getPlansDir: () => plansDir,
|
|
283
|
+
},
|
|
284
|
+
});
|
|
285
|
+
const result = await getCorrectedFileContent(planConfigInstance, 'plan-file.txt', 'new plan content', abortSignal);
|
|
286
|
+
expect(result.error).toBeUndefined();
|
|
287
|
+
expect(result.originalContent).toBe('plan content');
|
|
288
|
+
});
|
|
289
|
+
it('EditTool successfully edits an existing file when the path is prefixed with @', async () => {
|
|
290
|
+
const editTool = new EditTool(mockConfigInstance, createMockMessageBus());
|
|
291
|
+
const invocation = editTool.build({
|
|
292
|
+
file_path: '@policies/new-policies.txt',
|
|
293
|
+
instruction: 'update decision rule',
|
|
294
|
+
old_string: 'decision = "allow"',
|
|
295
|
+
new_string: 'decision = "deny"',
|
|
296
|
+
});
|
|
297
|
+
const result = await invocation.execute({ abortSignal });
|
|
298
|
+
// The tool should succeed and update the correct file
|
|
299
|
+
expect(result.error).toBeUndefined();
|
|
300
|
+
const correctFilePath = path.join(tempRootDir, 'policies', 'new-policies.txt');
|
|
301
|
+
const updatedContent = await fsp.readFile(correctFilePath, 'utf8');
|
|
302
|
+
expect(updatedContent).toContain('decision = "deny"');
|
|
303
|
+
});
|
|
304
|
+
it('EditTool successfully creates a new file when the path is prefixed with @ and the parent directory exists', async () => {
|
|
305
|
+
const editTool = new EditTool(mockConfigInstance, createMockMessageBus());
|
|
306
|
+
const invocation = editTool.build({
|
|
307
|
+
file_path: '@policies/brand-new-edit-file.txt',
|
|
308
|
+
instruction: 'create new file',
|
|
309
|
+
old_string: '',
|
|
310
|
+
new_string: '[[rule]]\nbrand_new_edit_file = true\n',
|
|
311
|
+
});
|
|
312
|
+
const result = await invocation.execute({ abortSignal });
|
|
313
|
+
// The tool should succeed and create the correct file
|
|
314
|
+
expect(result.error).toBeUndefined();
|
|
315
|
+
const incorrectFilePath = path.join(tempRootDir, '@policies', 'brand-new-edit-file.txt');
|
|
316
|
+
const correctFilePath = path.join(tempRootDir, 'policies', 'brand-new-edit-file.txt');
|
|
317
|
+
// It should NOT have created a literal "@policies" directory
|
|
318
|
+
expect(fs.existsSync(incorrectFilePath)).toBe(false);
|
|
319
|
+
// It should have created the correct file under "policies"
|
|
320
|
+
const createdContent = await fsp.readFile(correctFilePath, 'utf8');
|
|
321
|
+
expect(createdContent).toContain('brand_new_edit_file = true');
|
|
322
|
+
});
|
|
323
|
+
it('EditTool successfully creates a new file in a nested subdirectory when the path is prefixed with @ and the first segment does NOT exist', async () => {
|
|
324
|
+
const editTool = new EditTool(mockConfigInstance, createMockMessageBus());
|
|
325
|
+
const invocation = editTool.build({
|
|
326
|
+
file_path: '@new-policies-edit/sub/brand-new-file.txt',
|
|
327
|
+
instruction: 'create new file in nested subdirectory',
|
|
328
|
+
old_string: '',
|
|
329
|
+
new_string: '[[rule]]\nnested_brand_new_edit_file = true\n',
|
|
330
|
+
});
|
|
331
|
+
const result = await invocation.execute({ abortSignal });
|
|
332
|
+
// The tool should succeed and create the correct file
|
|
333
|
+
expect(result.error).toBeUndefined();
|
|
334
|
+
const incorrectFilePath = path.join(tempRootDir, '@new-policies-edit', 'sub', 'brand-new-file.txt');
|
|
335
|
+
const correctFilePath = path.join(tempRootDir, 'new-policies-edit', 'sub', 'brand-new-file.txt');
|
|
336
|
+
// It should NOT have created a literal "@new-policies-edit" directory
|
|
337
|
+
expect(fs.existsSync(incorrectFilePath)).toBe(false);
|
|
338
|
+
// It SHOULD have created the file under "new-policies-edit/sub"
|
|
339
|
+
expect(fs.existsSync(correctFilePath)).toBe(true);
|
|
340
|
+
// Verify the content of the created file
|
|
341
|
+
const createdContent = await fsp.readFile(correctFilePath, 'utf8');
|
|
342
|
+
expect(createdContent).toContain('nested_brand_new_edit_file = true');
|
|
343
|
+
});
|
|
344
|
+
it('EditTool successfully creates a new file in a nested subdirectory when the path is prefixed with @/ and the first segment does NOT exist', async () => {
|
|
345
|
+
const editTool = new EditTool(mockConfigInstance, createMockMessageBus());
|
|
346
|
+
const invocation = editTool.build({
|
|
347
|
+
file_path: '@/new-policies-edit-alias/sub/brand-new-file.txt',
|
|
348
|
+
instruction: 'create new file in nested subdirectory',
|
|
349
|
+
old_string: '',
|
|
350
|
+
new_string: '[[rule]]\nnested_brand_new_edit_file_alias = true\n',
|
|
351
|
+
});
|
|
352
|
+
const result = await invocation.execute({ abortSignal });
|
|
353
|
+
// The tool should succeed and create the correct file
|
|
354
|
+
expect(result.error).toBeUndefined();
|
|
355
|
+
const literalAtFilePath = path.join(tempRootDir, '@', 'new-policies-edit-alias', 'sub', 'brand-new-file.txt');
|
|
356
|
+
const correctFilePath = path.join(tempRootDir, 'new-policies-edit-alias', 'sub', 'brand-new-file.txt');
|
|
357
|
+
// It should NOT have created a literal "@" directory
|
|
358
|
+
expect(fs.existsSync(literalAtFilePath)).toBe(false);
|
|
359
|
+
expect(fs.existsSync(path.join(tempRootDir, '@'))).toBe(false);
|
|
360
|
+
// It should have created the file under "new-policies-edit-alias/sub"
|
|
361
|
+
expect(fs.existsSync(correctFilePath)).toBe(true);
|
|
362
|
+
// Verify the content of the created file
|
|
363
|
+
const createdContent = await fsp.readFile(correctFilePath, 'utf8');
|
|
364
|
+
expect(createdContent).toContain('nested_brand_new_edit_file_alias = true');
|
|
365
|
+
});
|
|
366
|
+
it('EditTool successfully creates a new file in a nested subdirectory when the path is prefixed with @\\ and the first segment does NOT exist', async () => {
|
|
367
|
+
const editTool = new EditTool(mockConfigInstance, createMockMessageBus());
|
|
368
|
+
const invocation = editTool.build({
|
|
369
|
+
file_path: '@\\new-policies-edit-alias-win\\sub\\brand-new-file.txt',
|
|
370
|
+
instruction: 'create new file in nested subdirectory',
|
|
371
|
+
old_string: '',
|
|
372
|
+
new_string: '[[rule]]\nnested_brand_new_edit_file_alias_win = true\n',
|
|
373
|
+
});
|
|
374
|
+
const result = await invocation.execute({ abortSignal });
|
|
375
|
+
// The tool should succeed and create the correct file
|
|
376
|
+
expect(result.error).toBeUndefined();
|
|
377
|
+
const isWindows = process.platform === 'win32';
|
|
378
|
+
const literalAtFilePath = isWindows
|
|
379
|
+
? path.join(tempRootDir, '@', 'new-policies-edit-alias-win', 'sub', 'brand-new-file.txt')
|
|
380
|
+
: path.join(tempRootDir, '@\\new-policies-edit-alias-win\\sub\\brand-new-file.txt');
|
|
381
|
+
const correctFilePath = isWindows
|
|
382
|
+
? path.join(tempRootDir, 'new-policies-edit-alias-win', 'sub', 'brand-new-file.txt')
|
|
383
|
+
: path.join(tempRootDir, 'new-policies-edit-alias-win\\sub\\brand-new-file.txt');
|
|
384
|
+
// It should NOT have created a literal "@" directory
|
|
385
|
+
expect(fs.existsSync(literalAtFilePath)).toBe(false);
|
|
386
|
+
expect(fs.existsSync(path.join(tempRootDir, '@'))).toBe(false);
|
|
387
|
+
// It should have created the file under "new-policies-edit-alias-win/sub"
|
|
388
|
+
expect(fs.existsSync(correctFilePath)).toBe(true);
|
|
389
|
+
// Verify the content of the created file
|
|
390
|
+
const createdContent = await fsp.readFile(correctFilePath, 'utf8');
|
|
391
|
+
expect(createdContent).toContain('nested_brand_new_edit_file_alias_win = true');
|
|
392
|
+
});
|
|
393
|
+
it('correctPath successfully resolves a path prefixed with @ to its clean counterpart', () => {
|
|
394
|
+
const result = correctPath('@policies/new-policies.txt', mockConfigInstance);
|
|
395
|
+
expect(result.success).toBe(true);
|
|
396
|
+
if (result.success) {
|
|
397
|
+
const expectedPath = path.join(tempRootDir, 'policies', 'new-policies.txt');
|
|
398
|
+
expect(result.correctedPath).toBe(expectedPath);
|
|
399
|
+
}
|
|
400
|
+
});
|
|
401
|
+
});
|
|
402
|
+
//# sourceMappingURL=at-reference-resolution.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"at-reference-resolution.test.js","sourceRoot":"","sources":["../../../src/tools/at-reference-resolution.test.ts"],"names":[],"mappings":"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"}
|