feat(coding): add core host api composition

This commit is contained in:
2026-08-23 20:00:35 +08:00
parent 98bac20639
commit 22b4a9f9c4
23 changed files with 2258 additions and 59 deletions

View File

@@ -1,5 +1,8 @@
import type { PrepareConversationInput } from '../contracts';
import type { ConversationModelState } from '../contracts';
import type {
CodingRuntimeDiagnostics,
ConversationModelState,
PrepareConversationInput,
} from '../contracts';
import type { PiProcessError, PiProcessErrorCode } from './process-errors';
import type {
PiRpcCommand,
@@ -347,6 +350,27 @@ export class PiWorkerPool {
return record ? this.publicState(record) : null;
}
getDiagnostics(): CodingRuntimeDiagnostics {
const stage = (
state: PiWorkerPoolState['state'],
): CodingRuntimeDiagnostics['workers'][number]['stage'] => {
if (state === 'spawning') return 'starting';
if (state === 'queued') return 'queued';
if (state === 'running') return 'running';
if (state === 'crashed') return 'failed';
return 'idle';
};
return {
revision: this.revisions.current,
workers: [...this.workers.values()].map((record) => ({
conversationId: record.conversation.conversationId,
generation: record.generation,
state: record.state,
stage: stage(record.state),
})),
};
}
async reclaimIdleWorker(signal?: AbortSignal): Promise<boolean> {
while (true) {
if (signal?.aborted) throw new Error('Pi idle worker reclaim cancelled');