fix(sandbox): ignore generated output and clean failed drafts
This commit is contained in:
1 parent
d5512df549
commit
3be45999f7
3 files changed
+17
-7
No files matched your search
@@ -27,6 +27,10 @@ if (process.platform !== 'win32') throw new Error('Persistent workspace requires
|
||||
await fs.mkdir(resolve('.tmp'), { recursive: true })
|
||||
const fixture = await fs.mkdtemp(resolve('.tmp/sandbox-workspace-')), workspace = join(fixture, 'project \u4e2d\u6587 ^'), stateRoot = join(fixture, 'state')
|
||||
await fs.mkdir(workspace); await fs.writeFile(join(workspace, 'file.txt'), 'host-before')
|
||||
for (const generated of ['out', 'dist', 'release']) {
|
||||
await fs.mkdir(join(workspace, generated), { recursive: true })
|
||||
await fs.writeFile(join(workspace, generated, 'generated.bin'), 'generated-output')
|
||||
}
|
||||
configureSandbox({ stateRoot, resourceDirectory: resolve('resources/sandbox/win32-x64') })
|
||||
let approvals = 0
|
||||
const context = { workspaceRoot: workspace, sessionId: 'persistent-session', runId: 'persistent-run', toolCallId: 'persistent-call', approve: async () => { approvals++; return true } }
|
||||
@@ -42,6 +46,7 @@ try {
|
||||
let result = await run('echo draft-value>file.txt')
|
||||
check('successful command saves a draft without host writes or approval', result.ok && result.data.writeback === 'deferred' && approvals === 0 && await fs.readFile(join(workspace, 'file.txt'), 'utf8') === 'host-before')
|
||||
const first = await revision()
|
||||
check('generated build output stays outside the retained draft', !first.tree.some(entry => /^(out|dist|release)(\/|$)/.test(entry.path)) && first.excluded >= 3)
|
||||
result = await run('type file.txt')
|
||||
const second = await revision()
|
||||
check('next real native command reads the retained draft', result.ok && result.data.stdout.includes('draft-value') && result.data.workspace?.changes.length === 1)
|
||||
|
||||
Reference in new issue
Block a user