From 122cf12b4c88e536c4838b8698068643f90076d8 Mon Sep 17 00:00:00 2001 From: Shay Cojocaru Date: Wed, 17 Dec 2025 09:23:46 +0200 Subject: [PATCH 1/2] =?UTF-8?q?=F0=9F=A4=96=20Merge=20PR=20#74220=20Update?= =?UTF-8?q?=20proofread=20method=20to=20accept=20options=20parameter=20by?= =?UTF-8?q?=20@shayc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Christian Liebel --- types/dom-chromium-ai/dom-chromium-ai-tests.ts | 6 ++++-- types/dom-chromium-ai/index.d.ts | 8 ++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/types/dom-chromium-ai/dom-chromium-ai-tests.ts b/types/dom-chromium-ai/dom-chromium-ai-tests.ts index a443bc82c111f2..5223c2300e88cf 100644 --- a/types/dom-chromium-ai/dom-chromium-ai-tests.ts +++ b/types/dom-chromium-ai/dom-chromium-ai-tests.ts @@ -434,11 +434,13 @@ async function topLevel() { }); console.log(proofreaderAvailability2); - const proofreaderResult: ProofreadResult = await proofreader.proofread("foo"); + const proofreaderResult: ProofreadResult = await proofreader.proofread("foo", { + signal: (new AbortController()).signal, + }); console.log(proofreaderResult); // for await ( - // const chunk of proofreader.proofreadStreaming("foo") + // const chunk of proofreader.proofreadStreaming("foo", { signal: (new AbortController()).signal }) // ) { // console.log(chunk); // } diff --git a/types/dom-chromium-ai/index.d.ts b/types/dom-chromium-ai/index.d.ts index b5028339c20b78..917af9f1c2f5bb 100644 --- a/types/dom-chromium-ai/index.d.ts +++ b/types/dom-chromium-ai/index.d.ts @@ -397,8 +397,8 @@ declare abstract class Proofreader implements DestroyableModel { static create(options?: ProofreaderCreateOptions): Promise; static availability(options?: ProofreaderCreateCoreOptions): Promise; - proofread(input: string): Promise; - // proofreadStreaming(input: string): ReadableStream; + proofread(input: string, options?: ProofreaderProofreadOptions): Promise; + // proofreadStreaming(input: string, options?: ProofreaderProofreadOptions): ReadableStream; readonly includeCorrectionTypes: boolean; readonly includeCorrectionExplanations: boolean; @@ -420,6 +420,10 @@ interface ProofreaderCreateOptions extends ProofreaderCreateCoreOptions { monitor?: CreateMonitorCallback; } +interface ProofreaderProofreadOptions { + signal?: AbortSignal; +} + interface ProofreadResult { correctedInput: string; corrections: ProofreadCorrection[]; From 70c7889a6e9da939ab2903168eee053a2e4ca7ff Mon Sep 17 00:00:00 2001 From: Christian Liebel Date: Wed, 17 Dec 2025 10:40:27 +0100 Subject: [PATCH 2/2] =?UTF-8?q?=F0=9F=A4=96=20Merge=20PR=20#74234=20[dom-c?= =?UTF-8?q?hromium-ai]=20disallow=20`prefix`=20in=20`initialPrompts`=20by?= =?UTF-8?q?=20@christianliebel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- types/dom-chromium-ai/dom-chromium-ai-tests.ts | 7 ++++++- types/dom-chromium-ai/index.d.ts | 12 ++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/types/dom-chromium-ai/dom-chromium-ai-tests.ts b/types/dom-chromium-ai/dom-chromium-ai-tests.ts index 5223c2300e88cf..a4b814a6c1161f 100644 --- a/types/dom-chromium-ai/dom-chromium-ai-tests.ts +++ b/types/dom-chromium-ai/dom-chromium-ai-tests.ts @@ -2,10 +2,15 @@ async function topLevel() { // Language Model await LanguageModel.create({ - // @ts-expect-error - System prompt must be first element of the initialPrompt array. + // @ts-expect-error - System prompt must be first element of the initialPrompts array. initialPrompts: [{ role: "user", content: "foo" }, { role: "system", content: "foo" }], }); + await LanguageModel.create({ + // @ts-expect-error - Prefixes are not allowed in initialPrompts. + initialPrompts: [{ role: "assistant", content: "foo", prefix: true }], + }); + const languageModel = await LanguageModel.create({ topK: 1, temperature: 0, diff --git a/types/dom-chromium-ai/index.d.ts b/types/dom-chromium-ai/index.d.ts index 917af9f1c2f5bb..c539ae728ff60e 100644 --- a/types/dom-chromium-ai/index.d.ts +++ b/types/dom-chromium-ai/index.d.ts @@ -146,11 +146,17 @@ interface LanguageModelToolFunction { (...args: any[]): Promise; } -type LanguageModelPrompt = LanguageModelMessage[] | string; +type LanguageModelPrompt = (LanguageModelMessage | LanguageModelAssistantMessage)[] | string; interface LanguageModelMessage { role: LanguageModelMessageRole; content: LanguageModelMessageContent[] | string; +} + +// Not in IDL, split up here for allowing assistant messages with prefix in prompt() and promptStreaming() only +interface LanguageModelAssistantMessage { + role: LanguageModelAssistantMessageRole; + content: LanguageModelMessageContent[] | string; prefix?: boolean; } @@ -165,7 +171,9 @@ interface LanguageModelMessageContent { value: LanguageModelMessageValue; } -type LanguageModelMessageRole = "user" | "assistant"; +type LanguageModelMessageRole = "user" | LanguageModelAssistantMessageRole; +// Not in IDL, split up here for allowing assistant messages with prefix in prompt() and promptStreaming() only +type LanguageModelAssistantMessageRole = "assistant"; // Not in IDL, split up here for enforcing the system message as the first element type LanguageModelSystemMessageRole = "system";