51 lines
2.9 KiB
TypeScript
51 lines
2.9 KiB
TypeScript
import { readFile } from 'node:fs/promises';
|
|
import { resolve } from 'node:path';
|
|
|
|
import { describe, expect, it } from 'vitest';
|
|
|
|
describe('Pi packaged release proof wiring', () => {
|
|
it('keeps extension and proxy Provider scenarios assigned to their own proof entrypoints', async () => {
|
|
const source = await readFile(
|
|
resolve('electron/coding-runtime/pi/release-proof.ts'),
|
|
'utf8',
|
|
);
|
|
const extensionStart = source.indexOf('export async function runFinalAsarExtensionProof');
|
|
const proxyStart = source.indexOf('export async function startFinalAsarProxyCompositionProof');
|
|
const resilienceStart = source.indexOf('export async function startFinalAsarResilienceProof');
|
|
|
|
expect(extensionStart).toBeGreaterThan(-1);
|
|
expect(proxyStart).toBeGreaterThan(extensionStart);
|
|
expect(resilienceStart).toBeGreaterThan(proxyStart);
|
|
expect(source.slice(extensionStart, proxyStart))
|
|
.toContain("startLocalProofProvider('subagent')");
|
|
expect(source.slice(extensionStart, proxyStart))
|
|
.not.toContain("startLocalProofProvider('submit-rejection')");
|
|
expect(source.slice(proxyStart, resilienceStart))
|
|
.toContain("startLocalProofProvider('submit-rejection')");
|
|
expect(source.slice(proxyStart, resilienceStart))
|
|
.not.toContain("startLocalProofProvider('subagent')");
|
|
});
|
|
|
|
it('wires the packaged resilience proof through Main background and intentional-dispose seams', async () => {
|
|
const [mainSource, proofSource, scriptSource] = await Promise.all([
|
|
readFile(resolve('electron/main/index.ts'), 'utf8'),
|
|
readFile(resolve('electron/coding-runtime/pi/release-proof.ts'), 'utf8'),
|
|
readFile(resolve('scripts/run-pi-subagent-packaged-smoke.mjs'), 'utf8'),
|
|
]);
|
|
|
|
expect(mainSource).toContain("codingProducts?.sleep('background_sleep')");
|
|
expect(mainSource).toContain('acquireBackgroundLease: (lease) => backgroundLifecycle!');
|
|
expect(proofSource).toContain("runtime.dispose(run.targetConversationId, 'test_injection')");
|
|
expect(scriptSource).toContain("evaluateProof(electronApplication, 'resilience.idle-status')");
|
|
expect(scriptSource).toContain('setMainWindowVisible(electronApplication, false)');
|
|
expect(scriptSource).toContain("evaluateProof(electronApplication, 'resilience.dispose-target')");
|
|
expect(proofSource).toContain('const PROOF_MUTATION_CONFIRMATION_DELAY_MS = 12_000;');
|
|
expect(mainSource).toContain("'resilience.arm-compact-delay'");
|
|
expect(mainSource).toContain("'resilience.arm-prompt-delay'");
|
|
expect(scriptSource).toContain("evaluateProof(electronApplication, 'resilience.arm-compact-delay')");
|
|
expect(scriptSource).toContain("evaluateProof(electronApplication, 'resilience.arm-prompt-delay')");
|
|
expect(scriptSource).toContain("status?.target?.errorCode === 'CODING_REQUEST_UNCERTAIN'");
|
|
expect(scriptSource).toContain('status?.target?.completedCompactions >= 1');
|
|
});
|
|
});
|