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.
This surface maps onto Napcar's local models. Outside Napcar, see Cloud fallback for routing the same prompts to a cloud provider.