fix(pi): converge worker failures and thinking state

This commit is contained in:
2026-08-25 11:45:14 +08:00
parent 274187e3cf
commit 61817b161f
28 changed files with 2019 additions and 118 deletions

View File

@@ -89,13 +89,19 @@ import {
resolveCodingPiRuntimePaths,
} from '../api/coding-composition';
import {
abortFinalAsarResilienceTarget,
finishFinalAsarProxyCompositionProof,
finishFinalAsarPressureProof,
finishFinalAsarResilienceProof,
getFinalAsarProxyCompositionStatus,
getFinalAsarResilienceStatus,
injectFinalAsarResilienceFailure,
releaseFinalAsarProxyCompositionChild,
releaseFinalAsarResilienceParents,
runFinalAsarExtensionProof,
startFinalAsarProxyCompositionProof,
startFinalAsarPressureProof,
startFinalAsarResilienceProof,
} from '../coding-runtime/pi/release-proof';
// Diagnostic package: force Chromium networking onto HTTP/1.1 for transport A/B testing.
@@ -890,6 +896,13 @@ type PiReleaseProofAction =
| 'proxy.status'
| 'proxy.release-child'
| 'proxy.finish'
| 'resilience.start'
| 'resilience.status'
| 'resilience.inject-exit'
| 'resilience.inject-protocol'
| 'resilience.abort-after-exit'
| 'resilience.release-parents'
| 'resilience.finish'
| 'pressure.start'
| 'pressure.finish'
| 'pressure.finish.inject-failure';
@@ -930,6 +943,43 @@ export async function runPiReleaseProofE2E(action: PiReleaseProofAction) {
if (action === 'proxy.finish') {
return { action, packagedMain, proxy: await finishFinalAsarProxyCompositionProof() };
}
if (action === 'resilience.start') {
if (!codingProducts) throw new Error('Packaged Main coding composition is unavailable');
const address = hostApiServer?.address();
if (!address || typeof address === 'string') throw new Error('Packaged Main Host API is unavailable');
return {
action,
packagedMain,
resilience: await startFinalAsarResilienceProof({
composition: codingProducts,
projectPath: join(app.getPath('userData'), 'pi-resilience-proof-project'),
hostProxyBaseUrl: `http://127.0.0.1:${address.port}/api/ai-proxy/v1`,
hostToken: getHostApiToken(),
}),
};
}
if (action === 'resilience.status') {
return { action, packagedMain, resilience: await getFinalAsarResilienceStatus() };
}
if (action === 'resilience.inject-exit' || action === 'resilience.inject-protocol') {
return {
action,
packagedMain,
resilience: await injectFinalAsarResilienceFailure(
action === 'resilience.inject-exit' ? 'unexpected_exit' : 'protocol_invalidation',
),
};
}
if (action === 'resilience.abort-after-exit') {
return { action, packagedMain, resilience: await abortFinalAsarResilienceTarget() };
}
if (action === 'resilience.release-parents') {
releaseFinalAsarResilienceParents();
return { action, packagedMain, resilience: { released: 'parents' } };
}
if (action === 'resilience.finish') {
return { action, packagedMain, resilience: await finishFinalAsarResilienceProof() };
}
if (action === 'pressure.start') {
return { action, packagedMain, pressure: await startFinalAsarPressureProof() };
}