feat: use managed model capabilities for reasoning and image input

This commit is contained in:
2026-09-12 21:37:18 +08:00
parent e7701d1f2c
commit 26cbb29aa9
29 changed files with 652 additions and 271 deletions

View File

@@ -30,6 +30,7 @@ const CORE_PRODUCT_TOOL_NAMES = new Set([
]);
interface WorkerRegistrationRecord {
managedModelRequest?: import('../../../shared/managed-model-capabilities').ManagedModelRequest;
token: string;
conversationId: string;
generation: number;
@@ -59,6 +60,7 @@ export interface PiExtensionWorkerRegistration {
}
export interface RegisterPiExtensionWorkerInput {
managedModelRequest?: import('../../../shared/managed-model-capabilities').ManagedModelRequest;
conversationId: string;
generation: number;
projectId: string;
@@ -246,6 +248,7 @@ export class PiManagedExtensionHost {
const token = randomBytes(32).toString('base64url');
const contextFile = path.join(input.extensionsDir, `worker-${randomUUID()}.json`);
const record: WorkerRegistrationRecord = {
managedModelRequest: input.managedModelRequest,
token,
conversationId: input.conversationId,
generation: input.generation,
@@ -292,7 +295,7 @@ export class PiManagedExtensionHost {
};
}
async bindRun(conversationId: string, generation: number, runId: string): Promise<void> {
async bindRun(conversationId: string, generation: number, runId: string, managedModelRequest?: import('../../../shared/managed-model-capabilities').ManagedModelRequest): Promise<void> {
const record = this.findWorker(conversationId, generation);
if (!record) throw new Error('Pi extension worker registration is unavailable');
if (this.productTools && record.projectPath) {
@@ -301,6 +304,7 @@ export class PiManagedExtensionHost {
this.releaseWorkerResources(record);
this.runBindings.set(conversationId, runId);
record.runId = runId;
if (managedModelRequest) record.managedModelRequest = structuredClone(managedModelRequest);
await this.writeContext(record);
}
@@ -664,6 +668,7 @@ export class PiManagedExtensionHost {
tools: record.tools,
projectWriteLeaseToolNames: record.projectWriteLeaseToolNames,
...(record.runId ? { runId: record.runId } : {}),
...(record.managedModelRequest ? { managedModelRequest: record.managedModelRequest } : {}),
});
}