LanguageModel API
A compatibility layer inspired by the Chrome Prompt API, mapped onto Napcar's local models.
Napcar provides a LanguageModel-style compatibility surface for code written
against the Chrome Prompt API. Import it from the SDK — it is opt-in and never
patches globalThis.LanguageModel.
import { createLanguageModel } from "@napcar/sdk/language-model";
const LanguageModel = createLanguageModel();
const status = await LanguageModel.availability();
// "unavailable" | "downloadable" | "downloading" | "available"
const session = await LanguageModel.create({ systemPrompt: "You are concise." });
const text = await session.prompt("Explain local LLMs in one paragraph.");
const stream = session.promptStreaming("Write a haiku about browsers.");
for await (const chunk of streamToAsyncIterable(stream)) appendToUI(chunk);
session.destroy();Mapping
| Prompt API | Napcar |
|---|---|
LanguageModel.availability() | navigator.napcar.ai.availability({ task: "chat" }) |
LanguageModel.create() | navigator.napcar.ai.requestSession({ task: "chat" }) |
session.prompt() | session.generate({ input }).then(r => r.text) |
session.promptStreaming() | session.generateStreaming({ input }) |
responseConstraint | responseFormat: { type: "json_schema", schema } |
Caveats
This is a compatibility layer, not a full implementation of the Chrome Prompt
API. It implements availability, create, prompt, promptStreaming,
append, clone, destroy, and measureInputUsage. Behaviors that depend on
Chrome-internal model downloads or exact token accounting are approximated.
Expose it only in secure contexts.