diff --git a/types/dom-chromium-ai/dom-chromium-ai-tests.ts b/types/dom-chromium-ai/dom-chromium-ai-tests.ts index a443bc82c111f2..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, @@ -434,11 +439,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..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"; @@ -397,8 +405,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 +428,10 @@ interface ProofreaderCreateOptions extends ProofreaderCreateCoreOptions { monitor?: CreateMonitorCallback; } +interface ProofreaderProofreadOptions { + signal?: AbortSignal; +} + interface ProofreadResult { correctedInput: string; corrections: ProofreadCorrection[];