@uptimizr/agent-core 0.3.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/loop.d.ts +35 -0
- package/dist/loop.d.ts.map +1 -1
- package/dist/loop.js +29 -3
- package/dist/loop.js.map +1 -1
- package/dist/provider.d.ts +18 -1
- package/dist/provider.d.ts.map +1 -1
- package/dist/providers/anthropic.d.ts +33 -0
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +75 -0
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/hosted.d.ts +10 -1
- package/dist/providers/hosted.d.ts.map +1 -1
- package/dist/providers/hosted.js +86 -9
- package/dist/providers/hosted.js.map +1 -1
- package/dist/providers/index.d.ts +1 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +1 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/openai.d.ts +35 -0
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +50 -0
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/sse.d.ts +41 -0
- package/dist/providers/sse.d.ts.map +1 -0
- package/dist/providers/sse.js +126 -0
- package/dist/providers/sse.js.map +1 -0
- package/dist/providers/webllm.d.ts +93 -9
- package/dist/providers/webllm.d.ts.map +1 -1
- package/dist/providers/webllm.js +119 -7
- package/dist/providers/webllm.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -104,11 +104,50 @@ import {
|
|
|
104
104
|
- **`createWebLlmProvider`** — local, in-browser inference on WebGPU via
|
|
105
105
|
[`@mlc-ai/web-llm`](https://github.com/mlc-ai/web-llm). The runtime is an **optional** dependency
|
|
106
106
|
loaded with a lazy `import()` only on first use; model weights download behind an explicit consent
|
|
107
|
-
gate and are cached in the browser's Cache Storage (never precached). **Zero data egress.**
|
|
107
|
+
gate and are cached in the browser's Cache Storage (never precached). **Zero data egress.** By
|
|
108
|
+
default only the **active** model stays cached (`cachePolicy: "active-only"`): loading a model
|
|
109
|
+
evicts the other curated models' ~4 GB caches so switching never fills the origin's storage
|
|
110
|
+
quota; pass `cachePolicy: "keep-all"` to keep every download for fast switching. The standalone
|
|
111
|
+
`clearCachedModels()` helper (and `provider.clearCachedModels()`) reclaims every cached model on
|
|
112
|
+
demand.
|
|
108
113
|
- **`createHostedProvider`** — bring-your-own **OpenAI-compatible** or **Anthropic** endpoint + key,
|
|
109
114
|
stored only in the browser; the browser calls your provider directly. Only the prompt and
|
|
110
115
|
aggregated results leave, to **your own** provider (ADR 0050 §4/§5).
|
|
111
116
|
|
|
117
|
+
### Streaming (for provider authors)
|
|
118
|
+
|
|
119
|
+
Streaming is an **optional, additive** channel on the provider contract — `complete()` still
|
|
120
|
+
returns a `Promise<ProviderResponse>`, so every existing provider keeps working unchanged. A caller
|
|
121
|
+
that wants tokens incrementally passes `onToken` on the request; a provider that can stream calls
|
|
122
|
+
it with each assistant **text** delta, in order, and still resolves with the complete, assembled
|
|
123
|
+
response (tool calls included — those are never sent through `onToken`, they aren't user-visible
|
|
124
|
+
text):
|
|
125
|
+
|
|
126
|
+
```ts
|
|
127
|
+
const provider: LlmProvider = {
|
|
128
|
+
async complete({ messages, tools, signal, onToken }) {
|
|
129
|
+
// Only ask your backend for a streamed reply when someone is listening.
|
|
130
|
+
if (!onToken) return callBackendOnce(messages, tools, signal);
|
|
131
|
+
let content = "";
|
|
132
|
+
for await (const delta of streamFromBackend(messages, tools, signal)) {
|
|
133
|
+
content += delta; // assemble the full answer…
|
|
134
|
+
onToken(delta); // …and forward each fragment as it arrives
|
|
135
|
+
}
|
|
136
|
+
return { kind: "final", content };
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
`runAgent` exposes the same thing one level up as `onStream`: it hands every provider turn an
|
|
142
|
+
`onToken` listener and re-emits `{ type: "delta", step, delta, text }` (with `text` the turn's
|
|
143
|
+
accumulated text) and `{ type: "turn_end", step, outcome: "final" | "tool_calls" }`. A UI shows
|
|
144
|
+
`text` live and discards it when a turn ends as `tool_calls` (that text was pre-tool commentary,
|
|
145
|
+
not the answer); the loop's own result is identical whether or not anything streamed. Both bundled
|
|
146
|
+
adapters stream: the hosted adapter parses the OpenAI-compatible and Anthropic SSE formats (string
|
|
147
|
+
scans only — no regex over model output), and the WebLLM adapter streams the tools-less answer turn
|
|
148
|
+
(with tools present WebLLM's Hermes grammar forces a JSON tool-call array as the output, so there is
|
|
149
|
+
no user text to stream there).
|
|
150
|
+
|
|
112
151
|
Install the WebLLM runtime alongside the assistant if you use the local backend:
|
|
113
152
|
|
|
114
153
|
```bash
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { createCollectorClient, CollectorError, type CollectorClient, type CollectorClientConfig, type QueryParams, } from "./client.js";
|
|
2
2
|
export { readTools, coreReadTools, selectReadTools, CORE_READ_TOOL_NAMES, type ReadTool, type ReadToolRequest, type ReadToolSetKind, } from "./tools.js";
|
|
3
3
|
export type { AgentMessage, AgentToolCall, AgentToolSchema, LlmProvider, ProviderRequest, ProviderResponse, } from "./provider.js";
|
|
4
|
-
export { runAgent, toToolSchemas, truncateToolResult, DEFAULT_MAX_STEPS, DEFAULT_MAX_TOOL_RESULT_CHARS, type RunAgentOptions, type RunAgentResult, } from "./loop.js";
|
|
4
|
+
export { runAgent, toToolSchemas, truncateToolResult, DEFAULT_MAX_STEPS, DEFAULT_MAX_TOOL_RESULT_CHARS, type AgentStreamEvent, type RunAgentOptions, type RunAgentResult, } from "./loop.js";
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,WAAW,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,SAAS,EACT,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,KAAK,QAAQ,EACb,KAAK,eAAe,EACpB,KAAK,eAAe,GACrB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,YAAY,EACZ,aAAa,EACb,eAAe,EACf,WAAW,EACX,eAAe,EACf,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,QAAQ,EACR,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,6BAA6B,EAC7B,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,WAAW,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,SAAS,EACT,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,KAAK,QAAQ,EACb,KAAK,eAAe,EACpB,KAAK,eAAe,GACrB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,YAAY,EACZ,aAAa,EACb,eAAe,EACf,WAAW,EACX,eAAe,EACf,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,QAAQ,EACR,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,6BAA6B,EAC7B,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,cAAc,GACpB,MAAM,WAAW,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,cAAc,GAIf,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,SAAS,EACT,aAAa,EACb,eAAe,EACf,oBAAoB,GAIrB,MAAM,YAAY,CAAC;AASpB,OAAO,EACL,QAAQ,EACR,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,6BAA6B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,cAAc,GAIf,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,SAAS,EACT,aAAa,EACb,eAAe,EACf,oBAAoB,GAIrB,MAAM,YAAY,CAAC;AASpB,OAAO,EACL,QAAQ,EACR,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,6BAA6B,GAI9B,MAAM,WAAW,CAAC"}
|
package/dist/loop.d.ts
CHANGED
|
@@ -52,7 +52,42 @@ export interface RunAgentOptions {
|
|
|
52
52
|
maxToolResultChars?: number;
|
|
53
53
|
/** Optional cancellation signal forwarded to the provider. */
|
|
54
54
|
signal?: AbortSignal;
|
|
55
|
+
/**
|
|
56
|
+
* Optional streaming observer. When set, the loop passes an `onToken`
|
|
57
|
+
* listener to every `provider.complete()` and re-emits what arrives as
|
|
58
|
+
* {@link AgentStreamEvent}s, so a UI can render the reply as it is generated.
|
|
59
|
+
* A provider that does not stream simply produces no `delta` events; the
|
|
60
|
+
* loop's result is identical either way. See {@link AgentStreamEvent} for
|
|
61
|
+
* how final-answer turns are told apart from tool-call turns.
|
|
62
|
+
*/
|
|
63
|
+
onStream?: (event: AgentStreamEvent) => void;
|
|
55
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* A streaming event emitted through {@link RunAgentOptions.onStream}.
|
|
67
|
+
*
|
|
68
|
+
* - `delta` — the provider produced more assistant text for the current turn:
|
|
69
|
+
* `delta` is the new fragment and `text` the turn's accumulated text so far
|
|
70
|
+
* (a fresh turn starts again from its first fragment).
|
|
71
|
+
* - `turn_end` — the provider finished a turn. `outcome: "final"` means the
|
|
72
|
+
* streamed `text` IS the answer (the loop returns it, or — if it was empty —
|
|
73
|
+
* makes one more forced synthesis turn, which streams as a new turn).
|
|
74
|
+
* `outcome: "tool_calls"` means the turn asked for tools: any text streamed
|
|
75
|
+
* for it is the model's pre-tool commentary, not the answer, and a UI that
|
|
76
|
+
* only shows the answer should discard it.
|
|
77
|
+
*
|
|
78
|
+
* `step` is the loop's provider-turn counter; the forced synthesis pass (which
|
|
79
|
+
* does not count as a step) reports the step it followed.
|
|
80
|
+
*/
|
|
81
|
+
export type AgentStreamEvent = {
|
|
82
|
+
type: "delta";
|
|
83
|
+
step: number;
|
|
84
|
+
delta: string;
|
|
85
|
+
text: string;
|
|
86
|
+
} | {
|
|
87
|
+
type: "turn_end";
|
|
88
|
+
step: number;
|
|
89
|
+
outcome: "final" | "tool_calls";
|
|
90
|
+
};
|
|
56
91
|
/** The outcome of a completed agent run. */
|
|
57
92
|
export interface RunAgentResult {
|
|
58
93
|
/** The model's final natural-language answer (empty if it never produced one). */
|
package/dist/loop.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EACV,YAAY,EAEZ,eAAe,EACf,WAAW,EAEZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtD,qFAAqF;AACrF,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC;;;;;;GAMG;AACH,eAAO,MAAM,6BAA6B,OAAO,CAAC;AAYlD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAIvE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,GAAE,SAAS,QAAQ,EAAc,GAAG,eAAe,EAAE,CAMvF;AAED,wDAAwD;AACxD,MAAM,WAAW,eAAe;IAC9B,iDAAiD;IACjD,QAAQ,EAAE,WAAW,CAAC;IACtB,6DAA6D;IAC7D,MAAM,EAAE,eAAe,CAAC;IACxB,4EAA4E;IAC5E,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,wEAAwE;IACxE,KAAK,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC5B,sFAAsF;IACtF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,8DAA8D;IAC9D,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;CAC9C;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CAAA;CAAE,CAAC;AAExE,4CAA4C;AAC5C,MAAM,WAAW,cAAc;IAC7B,kFAAkF;IAClF,OAAO,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,uFAAuF;IACvF,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAsGhF"}
|
package/dist/loop.js
CHANGED
|
@@ -57,7 +57,7 @@ export function toToolSchemas(tools = readTools) {
|
|
|
57
57
|
* at most one such forced turn per run.
|
|
58
58
|
*/
|
|
59
59
|
export async function runAgent(options) {
|
|
60
|
-
const { provider, client, signal } = options;
|
|
60
|
+
const { provider, client, signal, onStream } = options;
|
|
61
61
|
const tools = options.tools ?? readTools;
|
|
62
62
|
const maxSteps = options.maxSteps ?? DEFAULT_MAX_STEPS;
|
|
63
63
|
const forceFinalAnswer = options.forceFinalAnswer ?? true;
|
|
@@ -67,6 +67,32 @@ export async function runAgent(options) {
|
|
|
67
67
|
const messages = [...options.messages];
|
|
68
68
|
let steps = 0;
|
|
69
69
|
let alreadyForced = false;
|
|
70
|
+
/**
|
|
71
|
+
* One provider turn. When an `onStream` observer is present, hands the
|
|
72
|
+
* provider an `onToken` listener that accumulates this turn's text and
|
|
73
|
+
* re-emits `delta` events, then reports how the turn ended. Without an
|
|
74
|
+
* observer no listener is passed, so providers stay in their non-streaming
|
|
75
|
+
* path and behave exactly as before.
|
|
76
|
+
*/
|
|
77
|
+
async function completeTurn(turnMessages, turnTools) {
|
|
78
|
+
if (!onStream)
|
|
79
|
+
return provider.complete({ messages: turnMessages, tools: turnTools, signal });
|
|
80
|
+
const step = steps;
|
|
81
|
+
let text = "";
|
|
82
|
+
const response = await provider.complete({
|
|
83
|
+
messages: turnMessages,
|
|
84
|
+
tools: turnTools,
|
|
85
|
+
signal,
|
|
86
|
+
onToken: (delta) => {
|
|
87
|
+
if (!delta)
|
|
88
|
+
return;
|
|
89
|
+
text += delta;
|
|
90
|
+
onStream({ type: "delta", step, delta, text });
|
|
91
|
+
},
|
|
92
|
+
});
|
|
93
|
+
onStream({ type: "turn_end", step, outcome: response.kind });
|
|
94
|
+
return response;
|
|
95
|
+
}
|
|
70
96
|
/**
|
|
71
97
|
* One tools-disabled synthesis turn: ask the provider to answer in prose from
|
|
72
98
|
* the tool results already in `messages`. Sends no tools (so adapters omit
|
|
@@ -80,12 +106,12 @@ export async function runAgent(options) {
|
|
|
80
106
|
...messages,
|
|
81
107
|
{ role: "user", content: FORCE_FINAL_DIRECTIVE },
|
|
82
108
|
];
|
|
83
|
-
const response = await
|
|
109
|
+
const response = await completeTurn(forcedMessages, []);
|
|
84
110
|
return response.kind === "final" ? response.content : (response.content ?? "");
|
|
85
111
|
}
|
|
86
112
|
while (steps < maxSteps) {
|
|
87
113
|
steps += 1;
|
|
88
|
-
const response = await
|
|
114
|
+
const response = await completeTurn(messages, toolSchemas);
|
|
89
115
|
if (response.kind === "final") {
|
|
90
116
|
// The model may emit an empty final early — the reported failure where the
|
|
91
117
|
// user sees no answer. Force one tools-disabled synthesis pass to recover a
|
package/dist/loop.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB,OAAO,EAAE,SAAS,EAAiB,MAAM,YAAY,CAAC;AAEtD,qFAAqF;AACrF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAEnC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,IAAI,CAAC;AAElD;;;;;GAKG;AACH,MAAM,qBAAqB,GACzB,wFAAwF;IACxF,qFAAqF,CAAC;AAExF;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAe,EAAE,GAAW;IAC7D,IAAI,OAAO,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,OAAO,CAAC;IAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC;IACrC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,eAAe,OAAO,SAAS,CAAC;AACjE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,QAA6B,SAAS;IAClE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,UAAU,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAA4B;KAClF,CAAC,CAAC,CAAC;AACN,CAAC;AA0ED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAwB;IACrD,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IACvD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,SAAS,CAAC;IACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,iBAAiB,CAAC;IACvD,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC;IAC1D,MAAM,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,IAAI,6BAA6B,CAAC;IACvF,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAmB,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEvD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B;;;;;;OAMG;IACH,KAAK,UAAU,YAAY,CACzB,YAA4B,EAC5B,SAA4B;QAE5B,IAAI,CAAC,QAAQ;YAAE,OAAO,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9F,MAAM,IAAI,GAAG,KAAK,CAAC;QACnB,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC;YACvC,QAAQ,EAAE,YAAY;YACtB,KAAK,EAAE,SAAS;YAChB,MAAM;YACN,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBACjB,IAAI,CAAC,KAAK;oBAAE,OAAO;gBACnB,IAAI,IAAI,KAAK,CAAC;gBACd,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACjD,CAAC;SACF,CAAC,CAAC;QACH,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7D,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;;OAMG;IACH,KAAK,UAAU,mBAAmB;QAChC,aAAa,GAAG,IAAI,CAAC;QACrB,MAAM,cAAc,GAAmB;YACrC,GAAG,QAAQ;YACX,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,EAAE;SACjD,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QACxD,OAAO,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,OAAO,KAAK,GAAG,QAAQ,EAAE,CAAC;QACxB,KAAK,IAAI,CAAC,CAAC;QACX,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAE3D,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC9B,2EAA2E;YAC3E,4EAA4E;YAC5E,qEAAqE;YACrE,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,gBAAgB,IAAI,CAAC,aAAa,EAAE,CAAC;gBACzE,MAAM,MAAM,GAAG,MAAM,mBAAmB,EAAE,CAAC;gBAC3C,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;oBACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;oBACtD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC;gBACxE,CAAC;YACH,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;YAChE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC;QAClF,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,EAAE;YAC/B,SAAS,EAAE,QAAQ,CAAC,SAAS;SAC9B,CAAC,CAAC;QAEH,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;YACtC,QAAQ,CAAC,IAAI,CACX,MAAM,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kBAAkB,CAAC,CACpF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,gFAAgF;IAChF,4EAA4E;IAC5E,0BAA0B;IAC1B,IAAI,gBAAgB,IAAI,CAAC,aAAa,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,mBAAmB,EAAE,CAAC;QAC3C,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YACtD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;QACvE,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;AACnE,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,eAAe,CAC5B,MAAuB,EACvB,IAA0B,EAC1B,IAAmB,EACnB,kBAA0B;IAE1B,MAAM,MAAM,GAAG,CAAC,OAAe,EAAgB,EAAE,CAAC,CAAC;QACjD,IAAI,EAAE,MAAM;QACZ,UAAU,EAAE,IAAI,CAAC,EAAE;QACnB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO;KACR,CAAC,CAAC;IAEH,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,MAAM,CAAC,wBAAwB,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IAC1E,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;aAC/B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;aAC3D,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,OAAO,MAAM,CAAC,iCAAiC,IAAI,CAAC,IAAI,MAAM,MAAM,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAA+B,CAAC,CAAC;QACnF,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5C,OAAO,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAC9E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,MAAM,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;IACrC,CAAC;AACH,CAAC"}
|
package/dist/provider.d.ts
CHANGED
|
@@ -61,11 +61,28 @@ export interface ProviderRequest {
|
|
|
61
61
|
tools: AgentToolSchema[];
|
|
62
62
|
/** Optional cancellation signal, forwarded by the loop. */
|
|
63
63
|
signal?: AbortSignal;
|
|
64
|
+
/**
|
|
65
|
+
* Optional streaming channel. When present, a provider that can stream calls
|
|
66
|
+
* it with each **assistant text delta** as the model produces it, in order,
|
|
67
|
+
* so a UI can render the reply incrementally. The returned
|
|
68
|
+
* {@link ProviderResponse} is still the complete, authoritative result: its
|
|
69
|
+
* `content` is the full assembled text (the concatenation of every delta) and
|
|
70
|
+
* any tool calls are reported there only, never through this callback — tool
|
|
71
|
+
* call JSON is not user-visible text.
|
|
72
|
+
*
|
|
73
|
+
* The channel is strictly additive: a provider that does not stream simply
|
|
74
|
+
* never calls it and returns its `Promise<ProviderResponse>` exactly as
|
|
75
|
+
* before, and a caller that omits it gets the non-streaming behaviour.
|
|
76
|
+
* Providers SHOULD avoid requesting a streamed wire response when no callback
|
|
77
|
+
* is supplied (nobody is listening).
|
|
78
|
+
*/
|
|
79
|
+
onToken?: (delta: string) => void;
|
|
64
80
|
}
|
|
65
81
|
/**
|
|
66
82
|
* A pluggable LLM backend. Implementations translate {@link ProviderRequest}
|
|
67
83
|
* into their own wire format and normalise the reply into a
|
|
68
|
-
* {@link ProviderResponse}.
|
|
84
|
+
* {@link ProviderResponse}. Streaming is opt-in per call via
|
|
85
|
+
* {@link ProviderRequest.onToken}; the promise-based shape never changes.
|
|
69
86
|
*/
|
|
70
87
|
export interface LlmProvider {
|
|
71
88
|
complete(request: ProviderRequest): Promise<ProviderResponse>;
|
package/dist/provider.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,kDAAkD;AAClD,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,aAAa,EAAE,CAAA;CAAE,GACnE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAExE,gDAAgD;AAChD,MAAM,WAAW,aAAa;IAC5B,6EAA6E;IAC7E,EAAE,EAAE,MAAM,CAAC;IACX,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,oDAAoD;AACpD,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,SAAS,EAAE,aAAa,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GACpE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,4CAA4C;AAC5C,MAAM,WAAW,eAAe;IAC9B,4EAA4E;IAC5E,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,wDAAwD;IACxD,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,kDAAkD;AAClD,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,aAAa,EAAE,CAAA;CAAE,GACnE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAExE,gDAAgD;AAChD,MAAM,WAAW,aAAa;IAC5B,6EAA6E;IAC7E,EAAE,EAAE,MAAM,CAAC;IACX,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,oDAAoD;AACpD,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,SAAS,EAAE,aAAa,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GACpE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,4CAA4C;AAC5C,MAAM,WAAW,eAAe;IAC9B,4EAA4E;IAC5E,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,wDAAwD;IACxD,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC/D"}
|
|
@@ -54,4 +54,37 @@ export declare function toAnthropicRequest(messages: readonly AgentMessage[], to
|
|
|
54
54
|
* the final answer.
|
|
55
55
|
*/
|
|
56
56
|
export declare function parseAnthropicCompletion(completion: AnthropicCompletion): ProviderResponse;
|
|
57
|
+
/**
|
|
58
|
+
* One Anthropic Messages streaming event (the subset this module reads). Text
|
|
59
|
+
* arrives as `text_delta`s and tool inputs as `input_json_delta` fragments,
|
|
60
|
+
* both addressed by content-block `index`; `content_block_start` announces the
|
|
61
|
+
* block's type (and a tool block's `id` + `name`).
|
|
62
|
+
*/
|
|
63
|
+
export interface AnthropicStreamEvent {
|
|
64
|
+
type: string;
|
|
65
|
+
index?: number;
|
|
66
|
+
content_block?: {
|
|
67
|
+
type: string;
|
|
68
|
+
id?: string;
|
|
69
|
+
name?: string;
|
|
70
|
+
text?: string;
|
|
71
|
+
};
|
|
72
|
+
delta?: {
|
|
73
|
+
type?: string;
|
|
74
|
+
text?: string;
|
|
75
|
+
partial_json?: string;
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Accumulates {@link AnthropicStreamEvent}s into a complete
|
|
80
|
+
* {@link AnthropicCompletion}. `push` returns the event's text delta (empty
|
|
81
|
+
* when it carried none); `finish` yields the assembled content blocks for
|
|
82
|
+
* {@link parseAnthropicCompletion}.
|
|
83
|
+
*/
|
|
84
|
+
export interface AnthropicStreamAssembler {
|
|
85
|
+
push(event: AnthropicStreamEvent): string;
|
|
86
|
+
finish(): AnthropicCompletion;
|
|
87
|
+
}
|
|
88
|
+
/** Create a fresh {@link AnthropicStreamAssembler}. Pure: no I/O, no regex. */
|
|
89
|
+
export declare function createAnthropicStreamAssembler(): AnthropicStreamAssembler;
|
|
57
90
|
//# sourceMappingURL=anthropic.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,YAAY,EAEZ,eAAe,EACf,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAExB,yDAAyD;AACzD,MAAM,MAAM,qBAAqB,GAC7B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAC9E;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAElE,oCAAoC;AACpC,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,qBAAqB,EAAE,CAAC;CAClC;AAED,uCAAuC;AACvC,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED,4DAA4D;AAC5D,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,4EAA4E;IAC5E,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC;CACzB;AAED,sEAAsE;AACtE,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,qBAAqB,EAAE,CAAC;CACnC;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,SAAS,YAAY,EAAE,EACjC,KAAK,EAAE,SAAS,eAAe,EAAE,GAChC,oBAAoB,CA6CtB;AAMD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,mBAAmB,GAAG,gBAAgB,CAc1F"}
|
|
1
|
+
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,YAAY,EAEZ,eAAe,EACf,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAExB,yDAAyD;AACzD,MAAM,MAAM,qBAAqB,GAC7B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAC9E;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAElE,oCAAoC;AACpC,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,qBAAqB,EAAE,CAAC;CAClC;AAED,uCAAuC;AACvC,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED,4DAA4D;AAC5D,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,4EAA4E;IAC5E,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC;CACzB;AAED,sEAAsE;AACtE,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,qBAAqB,EAAE,CAAC;CACnC;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,SAAS,YAAY,EAAE,EACjC,KAAK,EAAE,SAAS,eAAe,EAAE,GAChC,oBAAoB,CA6CtB;AAMD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,mBAAmB,GAAG,gBAAgB,CAc1F;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5E,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACjE;AAED;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,CAAC;IAC1C,MAAM,IAAI,mBAAmB,CAAC;CAC/B;AAaD,+EAA+E;AAC/E,wBAAgB,8BAA8B,IAAI,wBAAwB,CA+DzE"}
|
|
@@ -78,4 +78,79 @@ export function parseAnthropicCompletion(completion) {
|
|
|
78
78
|
}
|
|
79
79
|
return { kind: "final", content: text };
|
|
80
80
|
}
|
|
81
|
+
/** Parse a tool block's accumulated JSON input; malformed/empty → `{}`. */
|
|
82
|
+
function parseToolInput(raw) {
|
|
83
|
+
if (raw.length === 0)
|
|
84
|
+
return {};
|
|
85
|
+
try {
|
|
86
|
+
const parsed = JSON.parse(raw);
|
|
87
|
+
return parsed && typeof parsed === "object" ? parsed : {};
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return {};
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/** Create a fresh {@link AnthropicStreamAssembler}. Pure: no I/O, no regex. */
|
|
94
|
+
export function createAnthropicStreamAssembler() {
|
|
95
|
+
const blocks = new Map();
|
|
96
|
+
return {
|
|
97
|
+
push(event) {
|
|
98
|
+
const index = typeof event.index === "number" ? event.index : 0;
|
|
99
|
+
if (event.type === "content_block_start" && event.content_block) {
|
|
100
|
+
const start = event.content_block;
|
|
101
|
+
if (start.type === "text") {
|
|
102
|
+
blocks.set(index, { type: "text", text: start.text ?? "" });
|
|
103
|
+
return start.text ?? "";
|
|
104
|
+
}
|
|
105
|
+
if (start.type === "tool_use") {
|
|
106
|
+
blocks.set(index, {
|
|
107
|
+
type: "tool_use",
|
|
108
|
+
id: start.id ?? String(index),
|
|
109
|
+
name: start.name ?? "",
|
|
110
|
+
json: "",
|
|
111
|
+
});
|
|
112
|
+
return "";
|
|
113
|
+
}
|
|
114
|
+
blocks.set(index, { type: "other" });
|
|
115
|
+
return "";
|
|
116
|
+
}
|
|
117
|
+
if (event.type === "content_block_delta" && event.delta) {
|
|
118
|
+
const delta = event.delta;
|
|
119
|
+
let block = blocks.get(index);
|
|
120
|
+
if (delta.type === "text_delta" && typeof delta.text === "string") {
|
|
121
|
+
if (!block) {
|
|
122
|
+
block = { type: "text", text: "" };
|
|
123
|
+
blocks.set(index, block);
|
|
124
|
+
}
|
|
125
|
+
if (block.type === "text")
|
|
126
|
+
block.text += delta.text;
|
|
127
|
+
return delta.text;
|
|
128
|
+
}
|
|
129
|
+
if (delta.type === "input_json_delta" && typeof delta.partial_json === "string") {
|
|
130
|
+
if (block?.type === "tool_use")
|
|
131
|
+
block.json += delta.partial_json;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
// message_start / content_block_stop / message_delta / message_stop /
|
|
135
|
+
// ping carry nothing this assembler needs.
|
|
136
|
+
return "";
|
|
137
|
+
},
|
|
138
|
+
finish() {
|
|
139
|
+
const content = [];
|
|
140
|
+
for (const [, block] of [...blocks.entries()].sort((a, b) => a[0] - b[0])) {
|
|
141
|
+
if (block.type === "text")
|
|
142
|
+
content.push({ type: "text", text: block.text });
|
|
143
|
+
else if (block.type === "tool_use") {
|
|
144
|
+
content.push({
|
|
145
|
+
type: "tool_use",
|
|
146
|
+
id: block.id,
|
|
147
|
+
name: block.name,
|
|
148
|
+
input: parseToolInput(block.json),
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return { content };
|
|
153
|
+
},
|
|
154
|
+
};
|
|
155
|
+
}
|
|
81
156
|
//# sourceMappingURL=anthropic.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,14 @@
|
|
|
13
13
|
* - Anthropic: pass the `anthropic-dangerous-direct-browser-access` header
|
|
14
14
|
* (added below) which enables their browser CORS path.
|
|
15
15
|
* See the docs (guides/assistant) for the exact requirements.
|
|
16
|
+
*
|
|
17
|
+
* **Streaming.** When the caller supplies `ProviderRequest.onToken`, the adapter
|
|
18
|
+
* asks the provider for a streamed (`text/event-stream`) response, forwards each
|
|
19
|
+
* text delta as it arrives, and still resolves with the complete, assembled
|
|
20
|
+
* `ProviderResponse` (tool calls included). Without a listener it makes the
|
|
21
|
+
* same single non-streamed POST as before. The SSE payload is model output, so
|
|
22
|
+
* it is parsed with string membership and linear scans only (no regex — CodeQL
|
|
23
|
+
* ReDoS), see `./sse.ts`.
|
|
16
24
|
*/
|
|
17
25
|
import type { LlmProvider } from "../provider.js";
|
|
18
26
|
import type { HostedApi } from "./config.js";
|
|
@@ -44,7 +52,8 @@ export declare class HostedProviderError extends Error {
|
|
|
44
52
|
/**
|
|
45
53
|
* Create a hosted provider bound to one `(api, endpoint, apiKey, model)`. The
|
|
46
54
|
* returned {@link LlmProvider} issues one direct request per turn to the user's
|
|
47
|
-
* provider and normalises the reply.
|
|
55
|
+
* provider and normalises the reply. Pass `onToken` on a request to receive the
|
|
56
|
+
* answer incrementally (see the module docs).
|
|
48
57
|
*/
|
|
49
58
|
export declare function createHostedProvider(config: HostedProviderConfig): LlmProvider;
|
|
50
59
|
//# sourceMappingURL=hosted.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hosted.d.ts","sourceRoot":"","sources":["../../src/providers/hosted.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"hosted.d.ts","sourceRoot":"","sources":["../../src/providers/hosted.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAqC,MAAM,gBAAgB,CAAC;AACrF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAkB7C,0DAA0D;AAC1D,MAAM,WAAW,oBAAoB;IACnC,6CAA6C;IAC7C,GAAG,EAAE,SAAS,CAAC;IACf;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oEAAoE;IACpE,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,sEAAsE;AACtE,qBAAa,mBAAoB,SAAQ,KAAK;IAG1C,QAAQ,CAAC,MAAM,EAAE,MAAM;gBADvB,OAAO,EAAE,MAAM,EACN,MAAM,EAAE,MAAM;CAK1B;AAeD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,WAAW,CAS9E"}
|
package/dist/providers/hosted.js
CHANGED
|
@@ -13,9 +13,18 @@
|
|
|
13
13
|
* - Anthropic: pass the `anthropic-dangerous-direct-browser-access` header
|
|
14
14
|
* (added below) which enables their browser CORS path.
|
|
15
15
|
* See the docs (guides/assistant) for the exact requirements.
|
|
16
|
+
*
|
|
17
|
+
* **Streaming.** When the caller supplies `ProviderRequest.onToken`, the adapter
|
|
18
|
+
* asks the provider for a streamed (`text/event-stream`) response, forwards each
|
|
19
|
+
* text delta as it arrives, and still resolves with the complete, assembled
|
|
20
|
+
* `ProviderResponse` (tool calls included). Without a listener it makes the
|
|
21
|
+
* same single non-streamed POST as before. The SSE payload is model output, so
|
|
22
|
+
* it is parsed with string membership and linear scans only (no regex — CodeQL
|
|
23
|
+
* ReDoS), see `./sse.ts`.
|
|
16
24
|
*/
|
|
17
|
-
import { parseOpenAiCompletion, toOpenAiMessages, toOpenAiTools, } from "./openai.js";
|
|
18
|
-
import { parseAnthropicCompletion, toAnthropicRequest, } from "./anthropic.js";
|
|
25
|
+
import { createOpenAiStreamAssembler, parseOpenAiCompletion, toOpenAiMessages, toOpenAiTools, } from "./openai.js";
|
|
26
|
+
import { createAnthropicStreamAssembler, parseAnthropicCompletion, toAnthropicRequest, } from "./anthropic.js";
|
|
27
|
+
import { readSseStream } from "./sse.js";
|
|
19
28
|
/** Thrown when the user's provider responds with a non-2xx status. */
|
|
20
29
|
export class HostedProviderError extends Error {
|
|
21
30
|
status;
|
|
@@ -27,6 +36,8 @@ export class HostedProviderError extends Error {
|
|
|
27
36
|
}
|
|
28
37
|
const DEFAULT_MAX_TOKENS = 1024;
|
|
29
38
|
const DEFAULT_ANTHROPIC_VERSION = "2023-06-01";
|
|
39
|
+
/** The OpenAI-compatible end-of-stream sentinel (`data: [DONE]`). */
|
|
40
|
+
const OPENAI_DONE_SENTINEL = "[DONE]";
|
|
30
41
|
function joinUrl(base, suffix) {
|
|
31
42
|
let end = base.length;
|
|
32
43
|
while (end > 0 && base[end - 1] === "/")
|
|
@@ -37,7 +48,8 @@ function joinUrl(base, suffix) {
|
|
|
37
48
|
/**
|
|
38
49
|
* Create a hosted provider bound to one `(api, endpoint, apiKey, model)`. The
|
|
39
50
|
* returned {@link LlmProvider} issues one direct request per turn to the user's
|
|
40
|
-
* provider and normalises the reply.
|
|
51
|
+
* provider and normalises the reply. Pass `onToken` on a request to receive the
|
|
52
|
+
* answer incrementally (see the module docs).
|
|
41
53
|
*/
|
|
42
54
|
export function createHostedProvider(config) {
|
|
43
55
|
const fetchImpl = config.fetchImpl ?? fetch;
|
|
@@ -51,6 +63,7 @@ export function createHostedProvider(config) {
|
|
|
51
63
|
}
|
|
52
64
|
async function completeOpenAi(config, fetchImpl, request) {
|
|
53
65
|
const url = joinUrl(config.endpoint, "/chat/completions");
|
|
66
|
+
const onToken = request.onToken;
|
|
54
67
|
// No tools this turn (e.g. the loop's forced synthesis pass) → omit `tools`
|
|
55
68
|
// and `tool_choice` entirely so the model answers in plain text rather than
|
|
56
69
|
// being nudged to keep calling functions.
|
|
@@ -60,6 +73,8 @@ async function completeOpenAi(config, fetchImpl, request) {
|
|
|
60
73
|
...(request.tools.length > 0
|
|
61
74
|
? { tools: toOpenAiTools(request.tools), tool_choice: "auto" }
|
|
62
75
|
: {}),
|
|
76
|
+
// Only ask for a streamed reply when someone is listening.
|
|
77
|
+
...(onToken ? { stream: true } : {}),
|
|
63
78
|
};
|
|
64
79
|
const res = await fetchImpl(url, {
|
|
65
80
|
method: "POST",
|
|
@@ -70,16 +85,39 @@ async function completeOpenAi(config, fetchImpl, request) {
|
|
|
70
85
|
body: JSON.stringify(body),
|
|
71
86
|
signal: request.signal,
|
|
72
87
|
});
|
|
73
|
-
|
|
74
|
-
|
|
88
|
+
await assertOk(res);
|
|
89
|
+
if (onToken && isEventStream(res)) {
|
|
90
|
+
const assembler = createOpenAiStreamAssembler();
|
|
91
|
+
await readSseStream(res.body ?? new ReadableStream(), (event) => {
|
|
92
|
+
// `data: [DONE]` closes an OpenAI stream; anything else is a JSON chunk.
|
|
93
|
+
if (event.data === OPENAI_DONE_SENTINEL)
|
|
94
|
+
return;
|
|
95
|
+
const chunk = parseJsonEvent(event.data);
|
|
96
|
+
if (!chunk)
|
|
97
|
+
return;
|
|
98
|
+
const delta = assembler.push(chunk);
|
|
99
|
+
if (delta)
|
|
100
|
+
onToken(delta);
|
|
101
|
+
}, request.signal);
|
|
102
|
+
return parseOpenAiCompletion(assembler.finish());
|
|
103
|
+
}
|
|
104
|
+
// A provider that ignores `stream` (or no listener) → one JSON body. Forward
|
|
105
|
+
// the whole answer as a single delta so a listener still sees it.
|
|
106
|
+
const completion = (await res.json());
|
|
107
|
+
const parsed = parseOpenAiCompletion(completion);
|
|
108
|
+
if (onToken && parsed.content)
|
|
109
|
+
onToken(parsed.content);
|
|
110
|
+
return parsed;
|
|
75
111
|
}
|
|
76
112
|
async function completeAnthropic(config, fetchImpl, request) {
|
|
77
113
|
const url = joinUrl(config.endpoint, "/messages");
|
|
114
|
+
const onToken = request.onToken;
|
|
78
115
|
const shaped = toAnthropicRequest(request.messages, request.tools);
|
|
79
116
|
const body = {
|
|
80
117
|
model: config.model,
|
|
81
118
|
max_tokens: config.maxTokens ?? DEFAULT_MAX_TOKENS,
|
|
82
119
|
...shaped,
|
|
120
|
+
...(onToken ? { stream: true } : {}),
|
|
83
121
|
};
|
|
84
122
|
const res = await fetchImpl(url, {
|
|
85
123
|
method: "POST",
|
|
@@ -93,14 +131,53 @@ async function completeAnthropic(config, fetchImpl, request) {
|
|
|
93
131
|
body: JSON.stringify(body),
|
|
94
132
|
signal: request.signal,
|
|
95
133
|
});
|
|
96
|
-
|
|
97
|
-
|
|
134
|
+
await assertOk(res);
|
|
135
|
+
if (onToken && isEventStream(res)) {
|
|
136
|
+
const assembler = createAnthropicStreamAssembler();
|
|
137
|
+
let streamError;
|
|
138
|
+
await readSseStream(res.body ?? new ReadableStream(), (event) => {
|
|
139
|
+
const parsed = parseJsonEvent(event.data);
|
|
140
|
+
if (!parsed)
|
|
141
|
+
return;
|
|
142
|
+
// Anthropic reports mid-stream failures as an `error` event.
|
|
143
|
+
if (parsed.type === "error") {
|
|
144
|
+
streamError = new HostedProviderError(parsed.error?.message ?? "stream error", 200);
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
const delta = assembler.push(parsed);
|
|
148
|
+
if (delta)
|
|
149
|
+
onToken(delta);
|
|
150
|
+
}, request.signal);
|
|
151
|
+
if (streamError)
|
|
152
|
+
throw streamError;
|
|
153
|
+
return parseAnthropicCompletion(assembler.finish());
|
|
154
|
+
}
|
|
155
|
+
const completion = (await res.json());
|
|
156
|
+
const parsed = parseAnthropicCompletion(completion);
|
|
157
|
+
if (onToken && parsed.content)
|
|
158
|
+
onToken(parsed.content);
|
|
159
|
+
return parsed;
|
|
98
160
|
}
|
|
99
|
-
|
|
161
|
+
/** Reject a non-2xx response with the provider's own error text. */
|
|
162
|
+
async function assertOk(res) {
|
|
100
163
|
if (!res.ok) {
|
|
101
164
|
const detail = await res.text().catch(() => "");
|
|
102
165
|
throw new HostedProviderError(detail || res.statusText, res.status);
|
|
103
166
|
}
|
|
104
|
-
|
|
167
|
+
}
|
|
168
|
+
/** Whether the response is an SSE stream (plain substring check on the header). */
|
|
169
|
+
function isEventStream(res) {
|
|
170
|
+
const type = res.headers.get("content-type") ?? "";
|
|
171
|
+
return type.includes("text/event-stream");
|
|
172
|
+
}
|
|
173
|
+
/** Parse one SSE `data:` payload as JSON; malformed payloads are skipped. */
|
|
174
|
+
function parseJsonEvent(data) {
|
|
175
|
+
try {
|
|
176
|
+
const parsed = JSON.parse(data);
|
|
177
|
+
return parsed && typeof parsed === "object" ? parsed : undefined;
|
|
178
|
+
}
|
|
179
|
+
catch {
|
|
180
|
+
return undefined;
|
|
181
|
+
}
|
|
105
182
|
}
|
|
106
183
|
//# sourceMappingURL=hosted.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hosted.js","sourceRoot":"","sources":["../../src/providers/hosted.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"hosted.js","sourceRoot":"","sources":["../../src/providers/hosted.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,OAAO,EACL,2BAA2B,EAC3B,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,GAGd,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,8BAA8B,EAC9B,wBAAwB,EACxB,kBAAkB,GAGnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAuBzC,sEAAsE;AACtE,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAGjC;IAFX,YACE,OAAe,EACN,MAAc;QAEvB,KAAK,CAAC,OAAO,CAAC,CAAC;QAFN,WAAM,GAAN,MAAM,CAAQ;QAGvB,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAChC,MAAM,yBAAyB,GAAG,YAAY,CAAC;AAE/C,qEAAqE;AACrE,MAAM,oBAAoB,GAAG,QAAQ,CAAC;AAEtC,SAAS,OAAO,CAAC,IAAY,EAAE,MAAc;IAC3C,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;IACtB,OAAO,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG;QAAE,GAAG,EAAE,CAAC;IAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACnC,OAAO,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,MAAM,EAAE,CAAC;AACpE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAA4B;IAC/D,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC;IAC5C,OAAO;QACL,QAAQ,CAAC,OAAwB;YAC/B,OAAO,MAAM,CAAC,GAAG,KAAK,WAAW;gBAC/B,CAAC,CAAC,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC;gBAC/C,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACjD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,MAA4B,EAC5B,SAAuB,EACvB,OAAwB;IAExB,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,4EAA4E;IAC5E,4EAA4E;IAC5E,0CAA0C;IAC1C,MAAM,IAAI,GAAG;QACX,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,QAAQ,EAAE,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC5C,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YAC1B,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,MAAe,EAAE;YACvE,CAAC,CAAC,EAAE,CAAC;QACP,2DAA2D;QAC3D,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACrC,CAAC;IACF,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE;QAC/B,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,aAAa,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE;SACzC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IACH,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;IACpB,IAAI,OAAO,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,2BAA2B,EAAE,CAAC;QAChD,MAAM,aAAa,CACjB,GAAG,CAAC,IAAI,IAAI,IAAI,cAAc,EAAc,EAC5C,CAAC,KAAK,EAAE,EAAE;YACR,yEAAyE;YACzE,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB;gBAAE,OAAO;YAChD,MAAM,KAAK,GAAG,cAAc,CAAoB,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5D,IAAI,CAAC,KAAK;gBAAE,OAAO;YACnB,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,KAAK;gBAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC,EACD,OAAO,CAAC,MAAM,CACf,CAAC;QACF,OAAO,qBAAqB,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,6EAA6E;IAC7E,kEAAkE;IAClE,MAAM,UAAU,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAqB,CAAC;IAC1D,MAAM,MAAM,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;IACjD,IAAI,OAAO,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,MAA4B,EAC5B,SAAuB,EACvB,OAAwB;IAExB,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG;QACX,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,UAAU,EAAE,MAAM,CAAC,SAAS,IAAI,kBAAkB;QAClD,GAAG,MAAM;QACT,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACrC,CAAC;IACF,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE;QAC/B,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,WAAW,EAAE,MAAM,CAAC,MAAM;YAC1B,mBAAmB,EAAE,MAAM,CAAC,gBAAgB,IAAI,yBAAyB;YACzE,sEAAsE;YACtE,2CAA2C,EAAE,MAAM;SACpD;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IACH,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;IACpB,IAAI,OAAO,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,8BAA8B,EAAE,CAAC;QACnD,IAAI,WAA8B,CAAC;QACnC,MAAM,aAAa,CACjB,GAAG,CAAC,IAAI,IAAI,IAAI,cAAc,EAAc,EAC5C,CAAC,KAAK,EAAE,EAAE;YACR,MAAM,MAAM,GAAG,cAAc,CAC3B,KAAK,CAAC,IAAI,CACX,CAAC;YACF,IAAI,CAAC,MAAM;gBAAE,OAAO;YACpB,6DAA6D;YAC7D,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC5B,WAAW,GAAG,IAAI,mBAAmB,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,cAAc,EAAE,GAAG,CAAC,CAAC;gBACpF,OAAO;YACT,CAAC;YACD,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,KAAK;gBAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC,EACD,OAAO,CAAC,MAAM,CACf,CAAC;QACF,IAAI,WAAW;YAAE,MAAM,WAAW,CAAC;QACnC,OAAO,wBAAwB,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,UAAU,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAwB,CAAC;IAC7D,MAAM,MAAM,GAAG,wBAAwB,CAAC,UAAU,CAAC,CAAC;IACpD,IAAI,OAAO,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,oEAAoE;AACpE,KAAK,UAAU,QAAQ,CAAC,GAAa;IACnC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAChD,MAAM,IAAI,mBAAmB,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED,mFAAmF;AACnF,SAAS,aAAa,CAAC,GAAa;IAClC,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IACnD,OAAO,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;AAC5C,CAAC;AAED,6EAA6E;AAC7E,SAAS,cAAc,CAAmB,IAAY;IACpD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;QAC3C,OAAO,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAE,MAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
@@ -12,5 +12,5 @@
|
|
|
12
12
|
*/
|
|
13
13
|
export { type AssistantBackendConfig, type BackendKind, type HostedApi, type HostedBackendConfig, type KeyValueStorage, type WebLlmBackendConfig, BACKEND_CONFIG_STORAGE_KEY, clearBackendConfig, defaultBackendKind, isWebGpuAvailable, loadBackendConfig, saveBackendConfig, } from "./config.js";
|
|
14
14
|
export { type HostedProviderConfig, HostedProviderError, createHostedProvider } from "./hosted.js";
|
|
15
|
-
export { type CuratedModel, type InitProgress, type WebLlmEngine, type WebLlmProvider, type WebLlmProviderOptions, type WebLlmRuntime, CURATED_MODELS, SUPPORTED_TOOL_CALLING_MODELS, UnsupportedToolCallingModelError, WebGpuUnavailableError, WebLlmConsentError, WebLlmStorageError, createWebLlmProvider, isQuotaExceededError, } from "./webllm.js";
|
|
15
|
+
export { type ClearCachedModelsOptions, type CuratedModel, type InitProgress, type WebLlmCachePolicy, type WebLlmEngine, type WebLlmProvider, type WebLlmProviderOptions, type WebLlmRuntime, CURATED_MODELS, DEFAULT_CACHE_POLICY, SUPPORTED_TOOL_CALLING_MODELS, UnsupportedToolCallingModelError, WebGpuUnavailableError, WebLlmConsentError, WebLlmStorageError, clearCachedModels, createWebLlmProvider, isQuotaExceededError, } from "./webllm.js";
|
|
16
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,0BAA0B,EAC1B,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,KAAK,oBAAoB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnG,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,cAAc,EACd,6BAA6B,EAC7B,gCAAgC,EAChC,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,0BAA0B,EAC1B,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,KAAK,oBAAoB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnG,OAAO,EACL,KAAK,wBAAwB,EAC7B,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,cAAc,EACd,oBAAoB,EACpB,6BAA6B,EAC7B,gCAAgC,EAChC,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,aAAa,CAAC"}
|