@cleocode/cleo-os 2026.9.8 → 2026.9.9
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/cli.js +3 -10
- package/dist/cli.js.map +1 -1
- package/dist/commands/__tests__/doctor.test.js +111 -2
- package/dist/commands/__tests__/doctor.test.js.map +1 -1
- package/dist/commands/doctor.d.ts +11 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +55 -23
- package/dist/commands/doctor.js.map +1 -1
- package/dist/harnesses/__tests__/provider-verification.test.d.ts +2 -0
- package/dist/harnesses/__tests__/provider-verification.test.d.ts.map +1 -0
- package/dist/harnesses/__tests__/provider-verification.test.js +350 -0
- package/dist/harnesses/__tests__/provider-verification.test.js.map +1 -0
- package/dist/harnesses/pi-coding-agent/__tests__/harness-knowledge.test.d.ts +2 -0
- package/dist/harnesses/pi-coding-agent/__tests__/harness-knowledge.test.d.ts.map +1 -0
- package/dist/harnesses/pi-coding-agent/__tests__/harness-knowledge.test.js +66 -0
- package/dist/harnesses/pi-coding-agent/__tests__/harness-knowledge.test.js.map +1 -0
- package/dist/harnesses/pi-coding-agent/adapter.d.ts.map +1 -1
- package/dist/harnesses/pi-coding-agent/adapter.js +26 -2
- package/dist/harnesses/pi-coding-agent/adapter.js.map +1 -1
- package/dist/harnesses/provider-verification.d.ts +26 -0
- package/dist/harnesses/provider-verification.d.ts.map +1 -0
- package/dist/harnesses/provider-verification.js +442 -0
- package/dist/harnesses/provider-verification.js.map +1 -0
- package/dist/registry/__tests__/provider-matrix.test.d.ts +2 -0
- package/dist/registry/__tests__/provider-matrix.test.d.ts.map +1 -0
- package/dist/registry/__tests__/provider-matrix.test.js +111 -0
- package/dist/registry/__tests__/provider-matrix.test.js.map +1 -0
- package/dist/registry/provider-matrix.d.ts +25 -52
- package/dist/registry/provider-matrix.d.ts.map +1 -1
- package/dist/registry/provider-matrix.js +84 -88
- package/dist/registry/provider-matrix.js.map +1 -1
- package/package.json +6 -6
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
import * as childProcess from 'node:child_process';
|
|
2
|
+
import * as fileSystem from 'node:fs';
|
|
3
|
+
import { chmod, mkdir, mkdtemp, readFile, rm, symlink, writeFile } from 'node:fs/promises';
|
|
4
|
+
import { tmpdir } from 'node:os';
|
|
5
|
+
import { join } from 'node:path';
|
|
6
|
+
import * as spawning from '@cleocode/core/resources/spawn-wrapper';
|
|
7
|
+
import { _forceSystemdRunAvailable } from '@cleocode/core/resources/spawn-wrapper';
|
|
8
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
9
|
+
import { providerVerificationArguments, runProviderVerification, } from '../provider-verification.js';
|
|
10
|
+
vi.mock('node:child_process', { spy: true });
|
|
11
|
+
vi.mock('node:fs', async (importOriginal) => {
|
|
12
|
+
const actual = await importOriginal();
|
|
13
|
+
return { ...actual, readFileSync: vi.fn(actual.readFileSync) };
|
|
14
|
+
});
|
|
15
|
+
vi.mock('@cleocode/core/resources/spawn-wrapper', { spy: true });
|
|
16
|
+
let root;
|
|
17
|
+
beforeEach(async () => {
|
|
18
|
+
root = await mkdtemp(join(tmpdir(), 'provider-verification-fixture-'));
|
|
19
|
+
_forceSystemdRunAvailable(false);
|
|
20
|
+
});
|
|
21
|
+
afterEach(async () => {
|
|
22
|
+
vi.restoreAllMocks();
|
|
23
|
+
await rm(root, { recursive: true, force: true });
|
|
24
|
+
});
|
|
25
|
+
async function invocation(script) {
|
|
26
|
+
const projectRoot = join(root, 'project');
|
|
27
|
+
await mkdir(join(projectRoot, '.cleo'), { recursive: true });
|
|
28
|
+
const environment = {
|
|
29
|
+
PATH: process.env.PATH ?? '',
|
|
30
|
+
NODE_OPTIONS: '--max-old-space-size=128',
|
|
31
|
+
};
|
|
32
|
+
for (const key of [
|
|
33
|
+
'HOME',
|
|
34
|
+
'USERPROFILE',
|
|
35
|
+
'XDG_DATA_HOME',
|
|
36
|
+
'XDG_CONFIG_HOME',
|
|
37
|
+
'XDG_CACHE_HOME',
|
|
38
|
+
'XDG_STATE_HOME',
|
|
39
|
+
'XDG_RUNTIME_DIR',
|
|
40
|
+
'TMPDIR',
|
|
41
|
+
'TMP',
|
|
42
|
+
'TEMP',
|
|
43
|
+
'CLEO_HOME',
|
|
44
|
+
'CLEO_CONFIG_HOME',
|
|
45
|
+
'NEXUS_HOME',
|
|
46
|
+
'NEXUS_CACHE_DIR',
|
|
47
|
+
'AGENTS_HOME',
|
|
48
|
+
'CLAUDE_CONFIG_DIR',
|
|
49
|
+
'CODEX_HOME',
|
|
50
|
+
'KIMI_CODE_HOME',
|
|
51
|
+
'KIMI_HOME',
|
|
52
|
+
'KIMI_CONFIG_DIR',
|
|
53
|
+
]) {
|
|
54
|
+
environment[key] = join(root, key);
|
|
55
|
+
await mkdir(environment[key], { recursive: true });
|
|
56
|
+
}
|
|
57
|
+
environment.CLEO_ROOT = projectRoot;
|
|
58
|
+
environment.CLEO_PROJECT_ROOT = projectRoot;
|
|
59
|
+
environment.CLEO_DIR = join(projectRoot, '.cleo');
|
|
60
|
+
const executable = join(root, 'synthetic-provider');
|
|
61
|
+
await writeFile(executable, `#!${process.execPath}\n${script}\n`);
|
|
62
|
+
await chmod(executable, 0o700);
|
|
63
|
+
return {
|
|
64
|
+
provider: 'codex',
|
|
65
|
+
executable,
|
|
66
|
+
invocationId: 'synthetic-observation',
|
|
67
|
+
isolationRoot: root,
|
|
68
|
+
projectRoot,
|
|
69
|
+
environment,
|
|
70
|
+
prompt: 'Inspect the synthetic project using its installed instructions.',
|
|
71
|
+
deadlineAt: Date.now() + 3000,
|
|
72
|
+
transcriptByteLimit: 4096,
|
|
73
|
+
memoryMaxMb: 256,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
describe.skipIf(process.platform === 'win32')('bounded external provider observations', () => {
|
|
77
|
+
it('retains the actual termination signal without guessing OOM or a numeric exit', async () => {
|
|
78
|
+
const input = await invocation("process.kill(process.pid, 'SIGTERM');");
|
|
79
|
+
const result = await runProviderVerification(input);
|
|
80
|
+
expect(result).toMatchObject({
|
|
81
|
+
exitCode: null,
|
|
82
|
+
exitSignal: 'SIGTERM',
|
|
83
|
+
childClosed: true,
|
|
84
|
+
outcome: 'exited',
|
|
85
|
+
certification: 'unverified',
|
|
86
|
+
});
|
|
87
|
+
expect(result.diagnostics.some((message) => /out.of.memory|OOM/.test(message))).toBe(false);
|
|
88
|
+
});
|
|
89
|
+
it('uses fixed normal policy flags without adapter bypass defaults', () => {
|
|
90
|
+
expect(providerVerificationArguments('codex')).toEqual([
|
|
91
|
+
'exec',
|
|
92
|
+
'--json',
|
|
93
|
+
'--sandbox',
|
|
94
|
+
'workspace-write',
|
|
95
|
+
]);
|
|
96
|
+
expect(providerVerificationArguments('claude-code')).toEqual([
|
|
97
|
+
'--print',
|
|
98
|
+
'--output-format',
|
|
99
|
+
'stream-json',
|
|
100
|
+
'--verbose',
|
|
101
|
+
]);
|
|
102
|
+
expect(providerVerificationArguments('kimi')).toEqual([
|
|
103
|
+
'--output-format',
|
|
104
|
+
'stream-json',
|
|
105
|
+
'--prompt',
|
|
106
|
+
]);
|
|
107
|
+
for (const provider of ['codex', 'claude-code', 'kimi']) {
|
|
108
|
+
expect(providerVerificationArguments(provider).join(' ')).not.toMatch(/bypass|dangerously|yolo|--auto|ignore-rules/);
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
it('captures isolated identity but cannot certify an agent-authored success claim', async () => {
|
|
112
|
+
const input = await invocation("process.stdout.write(JSON.stringify({home:process.env.HOME,project:process.env.CLEO_ROOT,workflow:'passed',lifecycle:'passed'}));");
|
|
113
|
+
const pending = runProviderVerification(input);
|
|
114
|
+
input.projectRoot = '/not-the-captured-project';
|
|
115
|
+
const result = await pending;
|
|
116
|
+
expect(result.outcome).toBe('exited');
|
|
117
|
+
expect(result.exitCode).toBe(0);
|
|
118
|
+
expect(result.certification).toBe('unverified');
|
|
119
|
+
expect(result.executable.sha256).toMatch(/^[a-f0-9]{64}$/);
|
|
120
|
+
expect(JSON.parse(result.stdout)).toMatchObject({
|
|
121
|
+
home: join(root, 'HOME'),
|
|
122
|
+
project: join(root, 'project'),
|
|
123
|
+
});
|
|
124
|
+
expect(result.childClosed).toBe(true);
|
|
125
|
+
expect(result.processGroupGone).toBe(true);
|
|
126
|
+
expect(result.diagnostics.join(' ')).toContain('cannot exclude escaped descendants');
|
|
127
|
+
});
|
|
128
|
+
it('treats absent accounts or failed interfaces as observations, never certification', async () => {
|
|
129
|
+
const result = await runProviderVerification(await invocation("process.stderr.write('account unavailable');process.exitCode=42;"));
|
|
130
|
+
expect(result.exitCode).toBe(42);
|
|
131
|
+
expect(result.stderr).toBe('account unavailable');
|
|
132
|
+
expect(result.certification).toBe('unverified');
|
|
133
|
+
});
|
|
134
|
+
it('bounds shared stdout/stderr UTF-8 bytes and stops excess output', async () => {
|
|
135
|
+
const input = await invocation("process.stdout.write('😀'.repeat(20000));setInterval(()=>{},1000);");
|
|
136
|
+
input.transcriptByteLimit = 1025;
|
|
137
|
+
const result = await runProviderVerification(input);
|
|
138
|
+
expect(result.outcome).toBe('transcript-limit');
|
|
139
|
+
expect(result.transcriptTruncated).toBe(true);
|
|
140
|
+
expect(Buffer.byteLength(result.stdout) + Buffer.byteLength(result.stderr)).toBeLessThanOrEqual(1025);
|
|
141
|
+
expect(result.childClosed).toBe(true);
|
|
142
|
+
expect(result.certification).toBe('unverified');
|
|
143
|
+
});
|
|
144
|
+
it('stops on the original deadline without renewing the attempt', async () => {
|
|
145
|
+
const input = await invocation('setInterval(()=>{},1000);');
|
|
146
|
+
input.deadlineAt = Date.now() + 150;
|
|
147
|
+
const result = await runProviderVerification(input);
|
|
148
|
+
expect(result.outcome).toBe('deadline');
|
|
149
|
+
expect(result.deadlineAt).toBe(input.deadlineAt);
|
|
150
|
+
expect(result.elapsedMs).toBeLessThan(1500);
|
|
151
|
+
expect(result.childClosed).toBe(true);
|
|
152
|
+
});
|
|
153
|
+
it('cancels an actually running child and preserves uncertain mutation outcome', async () => {
|
|
154
|
+
const marker = join(root, 'started');
|
|
155
|
+
const input = await invocation(`require('node:fs').writeFileSync(${JSON.stringify(marker)},'ready');setInterval(()=>{},1000);`);
|
|
156
|
+
const controller = new AbortController();
|
|
157
|
+
input.signal = controller.signal;
|
|
158
|
+
const pending = runProviderVerification(input);
|
|
159
|
+
let started = false;
|
|
160
|
+
for (let attempt = 0; attempt < 100; attempt++) {
|
|
161
|
+
try {
|
|
162
|
+
started = (await readFile(marker, 'utf8')) === 'ready';
|
|
163
|
+
}
|
|
164
|
+
catch { }
|
|
165
|
+
if (started)
|
|
166
|
+
break;
|
|
167
|
+
await new Promise((done) => setTimeout(done, 10));
|
|
168
|
+
}
|
|
169
|
+
controller.abort();
|
|
170
|
+
expect(started).toBe(true);
|
|
171
|
+
const result = await pending;
|
|
172
|
+
expect(result.outcome).toBe('cancelled');
|
|
173
|
+
expect(result.childClosed).toBe(true);
|
|
174
|
+
expect(result.diagnostics.join(' ')).toContain('cannot establish whether an in-flight CLEO mutation committed');
|
|
175
|
+
});
|
|
176
|
+
it('rejects an escaped supported Kimi Code home before launch', async () => {
|
|
177
|
+
const input = await invocation("process.stdout.write('must not run');");
|
|
178
|
+
input.provider = 'kimi';
|
|
179
|
+
input.environment = { ...input.environment, KIMI_CODE_HOME: tmpdir() };
|
|
180
|
+
await expect(runProviderVerification(input)).rejects.toThrow('Writable root KIMI_CODE_HOME');
|
|
181
|
+
});
|
|
182
|
+
it('rejects a writable-root symlink escape before launch', async () => {
|
|
183
|
+
const input = await invocation("process.stdout.write('must not run');");
|
|
184
|
+
const outside = await mkdtemp(join(tmpdir(), 'provider-outside-fixture-'));
|
|
185
|
+
try {
|
|
186
|
+
const home = join(root, 'HOME');
|
|
187
|
+
await rm(home, { recursive: true });
|
|
188
|
+
await symlink(outside, home);
|
|
189
|
+
await expect(runProviderVerification(input)).rejects.toThrow('Writable root HOME');
|
|
190
|
+
}
|
|
191
|
+
finally {
|
|
192
|
+
await rm(outside, { recursive: true, force: true });
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
it('rejects a scenario string that a CLI could interpret as a permission flag', async () => {
|
|
196
|
+
const input = await invocation("process.stdout.write('must not run');");
|
|
197
|
+
input.prompt = '--dangerously-bypass-approvals-and-sandbox';
|
|
198
|
+
await expect(runProviderVerification(input)).rejects.toThrow('CLI options');
|
|
199
|
+
input.provider = 'kimi';
|
|
200
|
+
input.prompt = '--auto';
|
|
201
|
+
await expect(runProviderVerification(input)).rejects.toThrow('CLI options');
|
|
202
|
+
});
|
|
203
|
+
it('rejects already expired or cancelled preparation before launch', async () => {
|
|
204
|
+
const input = await invocation("process.stdout.write('must not run');");
|
|
205
|
+
input.deadlineAt = Date.now() - 1;
|
|
206
|
+
await expect(runProviderVerification(input)).rejects.toThrow('deadline');
|
|
207
|
+
input.deadlineAt = Date.now() + 3000;
|
|
208
|
+
const controller = new AbortController();
|
|
209
|
+
controller.abort();
|
|
210
|
+
input.signal = controller.signal;
|
|
211
|
+
await expect(runProviderVerification(input)).rejects.toMatchObject({ name: 'AbortError' });
|
|
212
|
+
});
|
|
213
|
+
it.skipIf(process.platform !== 'linux')('kills inherited process-group descendants without claiming complete lifecycle containment', async () => {
|
|
214
|
+
const marker = join(root, 'descendant-pid');
|
|
215
|
+
const input = await invocation(`const c=require('node:child_process').spawn(process.execPath,['-e','setInterval(()=>{},1000)'],{stdio:'inherit'});require('node:fs').writeFileSync(${JSON.stringify(marker)},String(c.pid));setTimeout(()=>process.exit(0),20);`);
|
|
216
|
+
input.deadlineAt = Date.now() + 500;
|
|
217
|
+
const result = await runProviderVerification(input);
|
|
218
|
+
const pid = Number(await readFile(marker, 'utf8'));
|
|
219
|
+
let cleanupFailure;
|
|
220
|
+
try {
|
|
221
|
+
expect(result.outcome).toBe('deadline');
|
|
222
|
+
expect(result.childClosed).toBe(true);
|
|
223
|
+
expect(result.certification).toBe('unverified');
|
|
224
|
+
try {
|
|
225
|
+
const status = await readFile(`/proc/${pid}/stat`, 'utf8');
|
|
226
|
+
expect(status.slice(status.lastIndexOf(')') + 2).split(' ')[0]).toBe('Z');
|
|
227
|
+
}
|
|
228
|
+
catch (error) {
|
|
229
|
+
if (!(error instanceof Error) || !('code' in error) || error.code !== 'ENOENT')
|
|
230
|
+
throw error;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
finally {
|
|
234
|
+
try {
|
|
235
|
+
process.kill(pid, 'SIGKILL');
|
|
236
|
+
}
|
|
237
|
+
catch (error) {
|
|
238
|
+
if (!(error instanceof Error) || !('code' in error) || error.code !== 'ESRCH')
|
|
239
|
+
cleanupFailure = error instanceof Error ? error : new Error(String(error));
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
if (cleanupFailure)
|
|
243
|
+
throw cleanupFailure;
|
|
244
|
+
});
|
|
245
|
+
});
|
|
246
|
+
describe.skipIf(process.platform !== 'linux')('owned scope observations', () => {
|
|
247
|
+
it.each([
|
|
248
|
+
false,
|
|
249
|
+
true,
|
|
250
|
+
])('requires independently observed limits and empty cleanup (conflict=%s)', async (wrongLimit) => {
|
|
251
|
+
const input = await invocation('setTimeout(()=>process.stdout.write("done"),150);');
|
|
252
|
+
const manager = { runtimeDirectory: join(root, 'control-runtime') };
|
|
253
|
+
input.systemdControl = manager;
|
|
254
|
+
const originalDeadline = input.deadlineAt;
|
|
255
|
+
const controller = new AbortController();
|
|
256
|
+
input.signal = controller.signal;
|
|
257
|
+
const { spawnWrapped: originalSpawn, _forceSystemdRunAvailable: forceOriginal } = await vi.importActual('@cleocode/core/resources/spawn-wrapper');
|
|
258
|
+
forceOriginal(false);
|
|
259
|
+
let unit = '';
|
|
260
|
+
let stopped = false;
|
|
261
|
+
let membershipReads = 0;
|
|
262
|
+
const captured = [];
|
|
263
|
+
vi.spyOn(spawning, 'spawnWrapped').mockImplementation((command, args, options, wrapper) => {
|
|
264
|
+
expect(wrapper?.execution?.deadlineAt).toBe(originalDeadline);
|
|
265
|
+
expect(wrapper?.execution?.signal).toBe(controller.signal);
|
|
266
|
+
captured.push(wrapper?.systemdControl?.runtimeDirectory ?? 'missing');
|
|
267
|
+
const launched = originalSpawn(command, args, options, {
|
|
268
|
+
...wrapper,
|
|
269
|
+
systemdControl: undefined,
|
|
270
|
+
});
|
|
271
|
+
unit = `cleo-tool-${wrapper?.scopeId}.scope`;
|
|
272
|
+
return { ...launched, mode: 'systemd', unitName: unit };
|
|
273
|
+
});
|
|
274
|
+
const { spawnSync: originalSync } = await vi.importActual('node:child_process');
|
|
275
|
+
vi.spyOn(childProcess, 'spawnSync').mockImplementation((command, args, options) => {
|
|
276
|
+
if (command !== 'systemctl')
|
|
277
|
+
return originalSync(command, args, options);
|
|
278
|
+
captured.push(options?.env?.XDG_RUNTIME_DIR ?? 'missing');
|
|
279
|
+
if (args?.includes('kill'))
|
|
280
|
+
stopped = true;
|
|
281
|
+
return {
|
|
282
|
+
pid: 1,
|
|
283
|
+
output: [],
|
|
284
|
+
stdout: `/synthetic/${unit}\n`,
|
|
285
|
+
stderr: '',
|
|
286
|
+
status: 0,
|
|
287
|
+
signal: null,
|
|
288
|
+
};
|
|
289
|
+
});
|
|
290
|
+
const { readFileSync: originalRead } = await vi.importActual('node:fs');
|
|
291
|
+
vi.spyOn(fileSystem, 'readFileSync').mockImplementation((path, options) => {
|
|
292
|
+
const name = String(path);
|
|
293
|
+
if (name === `/proc/12345/cgroup` || name === `/proc/67890/cgroup`)
|
|
294
|
+
return `0::/synthetic/${unit}\n`;
|
|
295
|
+
if (name.startsWith('/sys/fs/cgroup/synthetic/')) {
|
|
296
|
+
if (name.endsWith('/cgroup.events'))
|
|
297
|
+
return `populated ${stopped ? 0 : 1}\n`;
|
|
298
|
+
if (name.endsWith('/cgroup.procs'))
|
|
299
|
+
return membershipReads++ === 0 ? '12345\n' : '67890\n';
|
|
300
|
+
if (name.endsWith('/memory.max'))
|
|
301
|
+
return wrongLimit ? '1\n' : '268435456\n';
|
|
302
|
+
if (name.endsWith('/memory.swap.max'))
|
|
303
|
+
return '0\n';
|
|
304
|
+
}
|
|
305
|
+
return originalRead(path, options);
|
|
306
|
+
});
|
|
307
|
+
const promise = runProviderVerification(input);
|
|
308
|
+
manager.runtimeDirectory = '/not-captured';
|
|
309
|
+
input.deadlineAt += 100_000;
|
|
310
|
+
const result = await promise;
|
|
311
|
+
expect(captured).toEqual(captured.map(() => join(root, 'control-runtime')));
|
|
312
|
+
expect(result.scope).toMatchObject({
|
|
313
|
+
unitName: unit,
|
|
314
|
+
populatedBefore: true,
|
|
315
|
+
populatedAfter: false,
|
|
316
|
+
observedMemberPids: [12345, 67890],
|
|
317
|
+
verified: !wrongLimit,
|
|
318
|
+
});
|
|
319
|
+
expect(result.scope?.unitName).not.toBe(`cleo-tool-${input.invocationId}.scope`);
|
|
320
|
+
expect(result.certification).toBe('unverified');
|
|
321
|
+
expect(result.childClosed).toBe(true);
|
|
322
|
+
});
|
|
323
|
+
it('does not infer observed containment from a systemd launch or missing scope', async () => {
|
|
324
|
+
const input = await invocation('setTimeout(()=>{},30);');
|
|
325
|
+
const { spawnWrapped: originalSpawn, _forceSystemdRunAvailable: forceOriginal } = await vi.importActual('@cleocode/core/resources/spawn-wrapper');
|
|
326
|
+
forceOriginal(false);
|
|
327
|
+
vi.spyOn(spawning, 'spawnWrapped').mockImplementation((command, args, options, wrapper) => ({
|
|
328
|
+
...originalSpawn(command, args, options, wrapper),
|
|
329
|
+
mode: 'systemd',
|
|
330
|
+
unitName: 'unobserved-owned.scope',
|
|
331
|
+
}));
|
|
332
|
+
vi.spyOn(childProcess, 'spawnSync').mockReturnValue({
|
|
333
|
+
pid: 1,
|
|
334
|
+
output: [],
|
|
335
|
+
stdout: '',
|
|
336
|
+
stderr: '',
|
|
337
|
+
status: 1,
|
|
338
|
+
signal: null,
|
|
339
|
+
});
|
|
340
|
+
const result = await runProviderVerification(input);
|
|
341
|
+
expect(result.scope).toMatchObject({
|
|
342
|
+
verified: false,
|
|
343
|
+
cgroupPath: null,
|
|
344
|
+
removedAfter: false,
|
|
345
|
+
observedMemberPids: [],
|
|
346
|
+
});
|
|
347
|
+
expect(result.certification).toBe('unverified');
|
|
348
|
+
});
|
|
349
|
+
});
|
|
350
|
+
//# sourceMappingURL=provider-verification.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-verification.test.js","sourceRoot":"","sources":["../../../src/harnesses/__tests__/provider-verification.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness-knowledge.test.d.ts","sourceRoot":"","sources":["../../../../src/harnesses/pi-coding-agent/__tests__/harness-knowledge.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
2
|
+
vi.mock('@cleocode/core/doctor/knowledge', () => ({ runKnowledgeDoctor: vi.fn() }));
|
|
3
|
+
import { runKnowledgeDoctor } from '@cleocode/core/doctor/knowledge';
|
|
4
|
+
import { PiCodingAgentAdapter } from '../adapter.js';
|
|
5
|
+
import { PiWrapper } from '../pi-wrapper.js';
|
|
6
|
+
const assessment = {
|
|
7
|
+
health: {
|
|
8
|
+
coverage: {
|
|
9
|
+
status: 'missing',
|
|
10
|
+
projectId: 'fixture',
|
|
11
|
+
assessedRevision: null,
|
|
12
|
+
indexedRevision: null,
|
|
13
|
+
assessedAt: '2026-09-18T00:00:00Z',
|
|
14
|
+
reasons: ['No graph'],
|
|
15
|
+
evidence: [],
|
|
16
|
+
limitations: ['Static analysis cannot prove all runtime callers.'],
|
|
17
|
+
},
|
|
18
|
+
structure: { status: 'clean', reasons: [], evidence: [] },
|
|
19
|
+
semantics: { status: 'unavailable', reasons: ['Requires caller evidence'], evidence: [] },
|
|
20
|
+
extraction: { status: 'unavailable', reasons: [], evidence: [] },
|
|
21
|
+
findings: [
|
|
22
|
+
{
|
|
23
|
+
id: 'F1',
|
|
24
|
+
projectId: 'fixture',
|
|
25
|
+
affectedRecordIds: ['D001'],
|
|
26
|
+
description: 'Choose sourced authority',
|
|
27
|
+
evidence: [],
|
|
28
|
+
repairClass: 'agent-resolvable',
|
|
29
|
+
state: 'unresolved',
|
|
30
|
+
proposedAction: null,
|
|
31
|
+
verification: ['Fetch sourced successor'],
|
|
32
|
+
recovery: null,
|
|
33
|
+
},
|
|
34
|
+
],
|
|
35
|
+
},
|
|
36
|
+
stateHash: 'fixture-state',
|
|
37
|
+
proposals: [],
|
|
38
|
+
receipts: [],
|
|
39
|
+
dryRun: false,
|
|
40
|
+
};
|
|
41
|
+
beforeEach(() => {
|
|
42
|
+
vi.restoreAllMocks();
|
|
43
|
+
vi.mocked(runKnowledgeDoctor).mockReset().mockResolvedValue(assessment);
|
|
44
|
+
vi.spyOn(PiWrapper.prototype, 'start').mockImplementation(async (entry) => entry);
|
|
45
|
+
});
|
|
46
|
+
describe('foreground shared knowledge integration', () => {
|
|
47
|
+
it('delivers bounded assessment and repair matrix to the existing coding agent', async () => {
|
|
48
|
+
await new PiCodingAgentAdapter().spawn('T123', 'Fix assigned task', { cwd: '/fixture' });
|
|
49
|
+
expect(runKnowledgeDoctor).toHaveBeenCalledWith('/fixture', { taskId: 'T123', budgetMs: 2000 });
|
|
50
|
+
const prompt = vi.mocked(PiWrapper.prototype.start).mock.calls[0]?.[1];
|
|
51
|
+
expect(prompt).toContain('Fix assigned task');
|
|
52
|
+
expect(prompt).toContain('fixture-state');
|
|
53
|
+
expect(prompt).toContain('Choose sourced authority');
|
|
54
|
+
expect(prompt).toContain('UNKNOWN');
|
|
55
|
+
expect(prompt).toContain('permission policy');
|
|
56
|
+
expect(prompt).toContain('No graph');
|
|
57
|
+
});
|
|
58
|
+
it('honors cancellation before assessment and process spawn', async () => {
|
|
59
|
+
const controller = new AbortController();
|
|
60
|
+
controller.abort();
|
|
61
|
+
await expect(new PiCodingAgentAdapter().spawn('T123', 'Fix', { signal: controller.signal })).rejects.toThrow();
|
|
62
|
+
expect(runKnowledgeDoctor).not.toHaveBeenCalled();
|
|
63
|
+
expect(PiWrapper.prototype.start).not.toHaveBeenCalled();
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
//# sourceMappingURL=harness-knowledge.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness-knowledge.test.js","sourceRoot":"","sources":["../../../../src/harnesses/pi-coding-agent/__tests__/harness-knowledge.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/harnesses/pi-coding-agent/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/harnesses/pi-coding-agent/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAMH,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAMpB;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,oBAAqB,YAAW,cAAc;IACzD,gCAAgC;IAChC,QAAQ,CAAC,EAAE,qBAAqB;IAEhC,4DAA4D;IAC5D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqC;IAE/D,qCAAqC;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAE3C,mCAAmC;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;IAElD;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAKtB;;;;;;;;;;;;;;;;;;OAkBG;IACG,KAAK,CACT,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,mBAAmB,GACzB,OAAO,CAAC,kBAAkB,CAAC;IA0D9B;;;;;;;OAOG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI;IAMvD;;;;;;;;OAQG;IACG,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7C;;;;;;;;;;OAUG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB,EAAE;IAU/C;;;;;;;;;;;OAWG;YACW,cAAc;CAuF7B"}
|
|
@@ -40,6 +40,7 @@
|
|
|
40
40
|
* @packageDocumentation
|
|
41
41
|
*/
|
|
42
42
|
import { writeFile } from 'node:fs/promises';
|
|
43
|
+
import { runKnowledgeDoctor } from '@cleocode/core/doctor/knowledge';
|
|
43
44
|
import { DockerModeAdapter, isSandboxedGlobally } from './docker-mode.js';
|
|
44
45
|
import { buildStatus, createProcessEntry, PiWrapper } from './pi-wrapper.js';
|
|
45
46
|
// ---------------------------------------------------------------------------
|
|
@@ -104,6 +105,29 @@ export class PiCodingAgentAdapter {
|
|
|
104
105
|
const cwd = opts?.cwd ?? process.cwd();
|
|
105
106
|
const env = opts?.env ?? {};
|
|
106
107
|
const useSandbox = opts?.sandboxed === true || isSandboxedGlobally();
|
|
108
|
+
opts?.signal?.throwIfAborted();
|
|
109
|
+
const knowledge = await runKnowledgeDoctor(cwd, { taskId, budgetMs: 2000 });
|
|
110
|
+
opts?.signal?.throwIfAborted();
|
|
111
|
+
// The existing foreground coding agent owns reasoning and permission checks.
|
|
112
|
+
// Assessment is shared with external callers; no background model is spawned.
|
|
113
|
+
const knowledgePrompt = `${prompt}
|
|
114
|
+
|
|
115
|
+
## Project knowledge assessment
|
|
116
|
+
${JSON.stringify({
|
|
117
|
+
coverage: knowledge.health.coverage,
|
|
118
|
+
findings: knowledge.health.findings.slice(0, 5),
|
|
119
|
+
omittedFindings: Math.max(0, knowledge.health.findings.length - 5),
|
|
120
|
+
stateHash: knowledge.stateHash,
|
|
121
|
+
})}
|
|
122
|
+
Inspect current authority and source evidence before editing. UNKNOWN impact is
|
|
123
|
+
incomplete assessment; static analysis cannot prove all runtime callers. Preserve
|
|
124
|
+
historical guidance and follow explicitly sourced successors. Use the repair matrix
|
|
125
|
+
and its prerequisites, verification, and recovery. Stay within this task scope and
|
|
126
|
+
the existing permission policy. Submit sourced resolutions using the supported
|
|
127
|
+
knowledge doctor proposal operation; do not guess authority or invoke a background
|
|
128
|
+
model. Use cleo doctor knowledge --help for proposal syntax. Reassess after edits,
|
|
129
|
+
record verification evidence before completion, and include unresolved findings
|
|
130
|
+
in the handoff. Owner-decision findings require an actionable decision request.`;
|
|
107
131
|
// Build exit promise — resolved by the process entry when the child exits.
|
|
108
132
|
let resolveExit;
|
|
109
133
|
const exitPromise = new Promise((resolve) => {
|
|
@@ -118,10 +142,10 @@ export class PiCodingAgentAdapter {
|
|
|
118
142
|
});
|
|
119
143
|
}
|
|
120
144
|
if (useSandbox) {
|
|
121
|
-
await this.spawnInSandbox(entry,
|
|
145
|
+
await this.spawnInSandbox(entry, knowledgePrompt, cwd, env);
|
|
122
146
|
}
|
|
123
147
|
else {
|
|
124
|
-
await this.wrapper.start(entry,
|
|
148
|
+
await this.wrapper.start(entry, knowledgePrompt, cwd, env);
|
|
125
149
|
}
|
|
126
150
|
return {
|
|
127
151
|
instanceId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/harnesses/pi-coding-agent/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAuB,SAAS,EAAE,MAAM,iBAAiB,CAAC;AASlG,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,oBAAoB;IAC/B,gCAAgC;IACvB,EAAE,GAAG,iBAAiB,CAAC;IAEhC,4DAA4D;IAC3C,SAAS,GAAG,IAAI,GAAG,EAA0B,CAAC;IAE/D,qCAAqC;IACpB,OAAO,GAAG,IAAI,SAAS,EAAE,CAAC;IAE3C,mCAAmC;IAClB,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAElD;;;;;OAKG;IACK,cAAc,CAAC,MAAc;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACnD,OAAO,MAAM,MAAM,IAAI,GAAG,EAAE,CAAC;IAC/B,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,KAAK,CAAC,KAAK,CACT,MAAc,EACd,MAAc,EACd,IAA0B;QAE1B,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,IAAI,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,IAAI,EAAE,SAAS,KAAK,IAAI,IAAI,mBAAmB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/harnesses/pi-coding-agent/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** Bounded external CLI observation for the existing installed-artifact verifier. @packageDocumentation */
|
|
2
|
+
import type { CertifiableProviderCli, ProviderVerificationInvocation, ProviderVerificationProcessResult } from '@cleocode/contracts/capabilities';
|
|
3
|
+
/**
|
|
4
|
+
* Return normal noninteractive CLI flags without adapter bypass defaults.
|
|
5
|
+
* @param provider - External CLI, distinct from its programmatic adapter.
|
|
6
|
+
* @returns Fixed argument prefix; the scenario prompt is appended separately.
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* const args = providerVerificationArguments('codex');
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
export declare function providerVerificationArguments(provider: CertifiableProviderCli): readonly string[];
|
|
13
|
+
/**
|
|
14
|
+
* Observe a real external provider using canonical spawning and bounded cleanup.
|
|
15
|
+
* @param input - Captured isolated invocation; no ambient environment is inherited.
|
|
16
|
+
* @returns Process evidence only; repair, instruction delivery and lifecycle remain unverified.
|
|
17
|
+
* @remarks Process groups cannot prove that descendants did not escape. A successful
|
|
18
|
+
* systemd launch or kill request is not an independently verified empty cgroup.
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* const processEvidence = await runProviderVerification(invocation);
|
|
22
|
+
* // Independently inspect actual installed repair receipts before assessing capabilities.
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export declare function runProviderVerification(input: ProviderVerificationInvocation): Promise<ProviderVerificationProcessResult>;
|
|
26
|
+
//# sourceMappingURL=provider-verification.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-verification.d.ts","sourceRoot":"","sources":["../../src/harnesses/provider-verification.ts"],"names":[],"mappings":"AAAA,2GAA2G;AAO3G,OAAO,KAAK,EACV,sBAAsB,EAEtB,8BAA8B,EAC9B,iCAAiC,EAClC,MAAM,kCAAkC,CAAC;AAqC1C;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,sBAAsB,GAAG,SAAS,MAAM,EAAE,CAWjG;AA0DD;;;;;;;;;;;GAWG;AACH,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,8BAA8B,GACpC,OAAO,CAAC,iCAAiC,CAAC,CAiV5C"}
|