Files
makelore/tests/unit/pi-release-proof-wiring.test.ts

69 lines
3.7 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(proofSource).toContain('keepRecentTokens: 1');
expect(proofSource).toContain("mode === 'resilience' && delayedCompactionArmed");
expect(mainSource).toContain("userDataDir: app.getPath('userData')");
expect(proofSource).toContain('delayNextTopLevelConfirmationForProof');
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');
const releaseParents = scriptSource.indexOf(
"await evaluateProof(electronApplication, 'resilience.release-parents')",
);
const restoreVisible = scriptSource.indexOf(
'await setMainWindowVisible(electronApplication, true)',
releaseParents,
);
const awaitSettlement = scriptSource.indexOf(
'await waitForResilienceProof(',
releaseParents,
);
expect(releaseParents).toBeGreaterThan(-1);
expect(restoreVisible).toBeGreaterThan(releaseParents);
expect(restoreVisible).toBeLessThan(awaitSettlement);
});
});