@nanonets/graft 0.23.1 → 0.24.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 +4 -4
- package/dist/ai/crux.d.ts +31 -3
- package/dist/ai/crux.d.ts.map +1 -1
- package/dist/ai/crux.js +88 -10
- package/dist/ai/crux.js.map +1 -1
- package/dist/ai/llm/openai.d.ts +101 -0
- package/dist/ai/llm/openai.d.ts.map +1 -1
- package/dist/ai/llm/openai.js +396 -6
- package/dist/ai/llm/openai.js.map +1 -1
- package/dist/ai/llm/recover-tool.d.ts +2 -0
- package/dist/ai/llm/recover-tool.d.ts.map +1 -1
- package/dist/ai/llm/recover-tool.js +1 -1
- package/dist/ai/llm/recover-tool.js.map +1 -1
- package/dist/ai/synthesize.d.ts.map +1 -1
- package/dist/ai/synthesize.js +100 -1
- package/dist/ai/synthesize.js.map +1 -1
- package/dist/claude/format.js +1 -1
- package/dist/claude/format.js.map +1 -1
- package/dist/claude/hooks.d.ts +0 -18
- package/dist/claude/hooks.d.ts.map +1 -1
- package/dist/claude/hooks.js +24 -77
- package/dist/claude/hooks.js.map +1 -1
- package/dist/claude/init.js +3 -3
- package/dist/claude/init.js.map +1 -1
- package/dist/claude/note-signals.d.ts +28 -0
- package/dist/claude/note-signals.d.ts.map +1 -0
- package/dist/claude/note-signals.js +325 -0
- package/dist/claude/note-signals.js.map +1 -0
- package/dist/claude/shim-template.d.ts.map +1 -1
- package/dist/claude/shim-template.js +10 -4
- package/dist/claude/shim-template.js.map +1 -1
- package/dist/claude/skill-template.d.ts.map +1 -1
- package/dist/claude/skill-template.js +49 -18
- package/dist/claude/skill-template.js.map +1 -1
- package/dist/claude/state.d.ts +4 -3
- package/dist/claude/state.d.ts.map +1 -1
- package/dist/claude/state.js.map +1 -1
- package/dist/claude/sync-run.js +1 -1
- package/dist/claude/sync-run.js.map +1 -1
- package/dist/cli-picker.d.ts +12 -5
- package/dist/cli-picker.d.ts.map +1 -1
- package/dist/cli-picker.js +24 -8
- package/dist/cli-picker.js.map +1 -1
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +131 -38
- package/dist/cli.js.map +1 -1
- package/dist/context/batches.d.ts +29 -0
- package/dist/context/batches.d.ts.map +1 -0
- package/dist/context/batches.js +130 -0
- package/dist/context/batches.js.map +1 -0
- package/dist/context/build.d.ts +7 -2
- package/dist/context/build.d.ts.map +1 -1
- package/dist/context/build.js +84 -50
- package/dist/context/build.js.map +1 -1
- package/dist/context/node-file.d.ts.map +1 -1
- package/dist/context/node-file.js +41 -4
- package/dist/context/node-file.js.map +1 -1
- package/dist/engine.d.ts +2 -0
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +1 -0
- package/dist/engine.js.map +1 -1
- package/dist/graph/cards.d.ts.map +1 -1
- package/dist/graph/cards.js +9 -4
- package/dist/graph/cards.js.map +1 -1
- package/dist/graph/enrich.d.ts.map +1 -1
- package/dist/graph/enrich.js +8 -3
- package/dist/graph/enrich.js.map +1 -1
- package/dist/graph/generic.d.ts.map +1 -1
- package/dist/graph/generic.js +207 -6
- package/dist/graph/generic.js.map +1 -1
- package/dist/graph/lsp/client.d.ts +18 -0
- package/dist/graph/lsp/client.d.ts.map +1 -1
- package/dist/graph/lsp/client.js +40 -2
- package/dist/graph/lsp/client.js.map +1 -1
- package/dist/graph/lsp/enrich.d.ts.map +1 -1
- package/dist/graph/lsp/enrich.js +9 -1
- package/dist/graph/lsp/enrich.js.map +1 -1
- package/dist/graph/lsp/registry.d.ts +7 -0
- package/dist/graph/lsp/registry.d.ts.map +1 -1
- package/dist/graph/lsp/registry.js +27 -2
- package/dist/graph/lsp/registry.js.map +1 -1
- package/dist/graph/queries/gleam.scm +51 -0
- package/dist/graph/resolve.d.ts.map +1 -1
- package/dist/graph/resolve.js +65 -3
- package/dist/graph/resolve.js.map +1 -1
- package/dist/graph/workspace-cli.d.ts +2 -0
- package/dist/graph/workspace-cli.d.ts.map +1 -1
- package/dist/graph/workspace-cli.js +1 -1
- package/dist/graph/workspace-cli.js.map +1 -1
- package/dist/notes/branches.d.ts +7 -1
- package/dist/notes/branches.d.ts.map +1 -1
- package/dist/notes/branches.js +31 -3
- package/dist/notes/branches.js.map +1 -1
- package/dist/notes/cold-start.d.ts +12 -2
- package/dist/notes/cold-start.d.ts.map +1 -1
- package/dist/notes/cold-start.js +46 -5
- package/dist/notes/cold-start.js.map +1 -1
- package/dist/notes/credit.d.ts +37 -0
- package/dist/notes/credit.d.ts.map +1 -0
- package/dist/notes/credit.js +78 -0
- package/dist/notes/credit.js.map +1 -0
- package/dist/notes/find-notes.d.ts +17 -0
- package/dist/notes/find-notes.d.ts.map +1 -0
- package/dist/notes/find-notes.js +48 -0
- package/dist/notes/find-notes.js.map +1 -0
- package/dist/notes/flatten.d.ts +31 -0
- package/dist/notes/flatten.d.ts.map +1 -0
- package/dist/notes/flatten.js +73 -0
- package/dist/notes/flatten.js.map +1 -0
- package/dist/notes/git-facts.d.ts +2 -0
- package/dist/notes/git-facts.d.ts.map +1 -1
- package/dist/notes/git-facts.js +6 -0
- package/dist/notes/git-facts.js.map +1 -1
- package/dist/notes/home.d.ts +24 -6
- package/dist/notes/home.d.ts.map +1 -1
- package/dist/notes/home.js +82 -15
- package/dist/notes/home.js.map +1 -1
- package/dist/notes/learning-fields.d.ts +102 -0
- package/dist/notes/learning-fields.d.ts.map +1 -0
- package/dist/notes/learning-fields.js +214 -0
- package/dist/notes/learning-fields.js.map +1 -0
- package/dist/notes/memory-notes.d.ts +71 -0
- package/dist/notes/memory-notes.d.ts.map +1 -0
- package/dist/notes/memory-notes.js +239 -0
- package/dist/notes/memory-notes.js.map +1 -0
- package/dist/notes/note-gate.d.ts +42 -0
- package/dist/notes/note-gate.d.ts.map +1 -0
- package/dist/notes/note-gate.js +181 -0
- package/dist/notes/note-gate.js.map +1 -0
- package/dist/notes/notes.d.ts +29 -85
- package/dist/notes/notes.d.ts.map +1 -1
- package/dist/notes/notes.js +69 -254
- package/dist/notes/notes.js.map +1 -1
- package/dist/notes/pr-reviews.d.ts +35 -7
- package/dist/notes/pr-reviews.d.ts.map +1 -1
- package/dist/notes/pr-reviews.js +156 -46
- package/dist/notes/pr-reviews.js.map +1 -1
- package/dist/notes/secrets.d.ts +28 -0
- package/dist/notes/secrets.d.ts.map +1 -0
- package/dist/notes/secrets.js +362 -0
- package/dist/notes/secrets.js.map +1 -0
- package/dist/notes/targets.d.ts +37 -0
- package/dist/notes/targets.d.ts.map +1 -0
- package/dist/notes/targets.js +108 -0
- package/dist/notes/targets.js.map +1 -0
- package/dist/notes/team-check.d.ts +22 -0
- package/dist/notes/team-check.d.ts.map +1 -0
- package/dist/notes/team-check.js +130 -0
- package/dist/notes/team-check.js.map +1 -0
- package/dist/notes/trail-home.d.ts +3 -0
- package/dist/notes/trail-home.d.ts.map +1 -0
- package/dist/notes/trail-home.js +12 -0
- package/dist/notes/trail-home.js.map +1 -0
- package/dist/skills/answers-prompt.d.ts +13 -0
- package/dist/skills/answers-prompt.d.ts.map +1 -0
- package/dist/skills/answers-prompt.js +83 -0
- package/dist/skills/answers-prompt.js.map +1 -0
- package/dist/skills/never-save.d.ts +5 -0
- package/dist/skills/never-save.d.ts.map +1 -0
- package/dist/skills/never-save.js +158 -0
- package/dist/skills/never-save.js.map +1 -0
- package/dist/skills/params.d.ts +39 -0
- package/dist/skills/params.d.ts.map +1 -0
- package/dist/skills/params.js +275 -0
- package/dist/skills/params.js.map +1 -0
- package/dist/skills/ran-less.d.ts +5 -0
- package/dist/skills/ran-less.d.ts.map +1 -0
- package/dist/skills/ran-less.js +51 -0
- package/dist/skills/ran-less.js.map +1 -0
- package/dist/skills/risk-delta.d.ts +32 -0
- package/dist/skills/risk-delta.d.ts.map +1 -0
- package/dist/skills/risk-delta.js +56 -0
- package/dist/skills/risk-delta.js.map +1 -0
- package/dist/skills/risk.d.ts +73 -0
- package/dist/skills/risk.d.ts.map +1 -0
- package/dist/skills/risk.js +396 -0
- package/dist/skills/risk.js.map +1 -0
- package/dist/skills/types.d.ts +422 -0
- package/dist/skills/types.d.ts.map +1 -0
- package/dist/skills/types.js +2 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/telemetry/contract.d.ts.map +1 -1
- package/dist/telemetry/contract.js +8 -6
- package/dist/telemetry/contract.js.map +1 -1
- package/dist/telemetry/notice.d.ts.map +1 -1
- package/dist/telemetry/notice.js +3 -1
- package/dist/telemetry/notice.js.map +1 -1
- package/dist/trace/check-reads.d.ts +36 -0
- package/dist/trace/check-reads.d.ts.map +1 -0
- package/dist/trace/check-reads.js +57 -0
- package/dist/trace/check-reads.js.map +1 -0
- package/dist/trace/host.d.ts +40 -0
- package/dist/trace/host.d.ts.map +1 -0
- package/dist/trace/host.js +84 -0
- package/dist/trace/host.js.map +1 -0
- package/dist/trace/redact.d.ts +8 -0
- package/dist/trace/redact.d.ts.map +1 -0
- package/dist/trace/redact.js +63 -0
- package/dist/trace/redact.js.map +1 -0
- package/dist/trace/seen-cache.d.ts +9 -0
- package/dist/trace/seen-cache.d.ts.map +1 -0
- package/dist/trace/seen-cache.js +46 -0
- package/dist/trace/seen-cache.js.map +1 -0
- package/dist/trace/shell-scan.d.ts +52 -0
- package/dist/trace/shell-scan.d.ts.map +1 -0
- package/dist/trace/shell-scan.js +318 -0
- package/dist/trace/shell-scan.js.map +1 -0
- package/dist/trace/shell-words.d.ts +91 -0
- package/dist/trace/shell-words.d.ts.map +1 -0
- package/dist/trace/shell-words.js +558 -0
- package/dist/trace/shell-words.js.map +1 -0
- package/dist/trace/shell.d.ts +91 -0
- package/dist/trace/shell.d.ts.map +1 -0
- package/dist/trace/shell.js +435 -0
- package/dist/trace/shell.js.map +1 -0
- package/dist/trace/state.d.ts +27 -0
- package/dist/trace/state.d.ts.map +1 -0
- package/dist/trace/state.js +98 -0
- package/dist/trace/state.js.map +1 -0
- package/dist/trace/tamper-code.d.ts +9 -0
- package/dist/trace/tamper-code.d.ts.map +1 -0
- package/dist/trace/tamper-code.js +174 -0
- package/dist/trace/tamper-code.js.map +1 -0
- package/dist/trace/tamper-git.d.ts +12 -0
- package/dist/trace/tamper-git.d.ts.map +1 -0
- package/dist/trace/tamper-git.js +77 -0
- package/dist/trace/tamper-git.js.map +1 -0
- package/dist/trace/types.d.ts +477 -0
- package/dist/trace/types.d.ts.map +1 -0
- package/dist/trace/types.js +12 -0
- package/dist/trace/types.js.map +1 -0
- package/dist/trace/walls-glob.d.ts +11 -0
- package/dist/trace/walls-glob.d.ts.map +1 -0
- package/dist/trace/walls-glob.js +264 -0
- package/dist/trace/walls-glob.js.map +1 -0
- package/dist/trace/walls-quoted.d.ts +25 -0
- package/dist/trace/walls-quoted.d.ts.map +1 -0
- package/dist/trace/walls-quoted.js +81 -0
- package/dist/trace/walls-quoted.js.map +1 -0
- package/dist/upkeep.d.ts +1 -1
- package/dist/upkeep.d.ts.map +1 -1
- package/dist/upkeep.js +4 -1
- package/dist/upkeep.js.map +1 -1
- package/dist/util/actions-folder.d.ts +2 -0
- package/dist/util/actions-folder.d.ts.map +1 -0
- package/dist/util/actions-folder.js +9 -0
- package/dist/util/actions-folder.js.map +1 -0
- package/dist/util/front-matter.d.ts +31 -4
- package/dist/util/front-matter.d.ts.map +1 -1
- package/dist/util/front-matter.js +95 -3
- package/dist/util/front-matter.js.map +1 -1
- package/dist/util/private-file.d.ts +14 -0
- package/dist/util/private-file.d.ts.map +1 -0
- package/dist/util/private-file.js +82 -0
- package/dist/util/private-file.js.map +1 -0
- package/dist/util/private-fs.d.ts +25 -0
- package/dist/util/private-fs.d.ts.map +1 -0
- package/dist/util/private-fs.js +253 -0
- package/dist/util/private-fs.js.map +1 -0
- package/dist/util/state.d.ts.map +1 -1
- package/dist/util/state.js +3 -0
- package/dist/util/state.js.map +1 -1
- package/dist/viewer/app.js +2 -2
- package/package.json +5 -5
- package/scripts/run-tests.mjs +14 -2
package/dist/ai/llm/openai.js
CHANGED
|
@@ -8,12 +8,62 @@
|
|
|
8
8
|
* is forwarded, cache breakpoints become `cache_control` content parts (which
|
|
9
9
|
* OpenRouter forwards to Anthropic), and cached tokens are subtracted out of the
|
|
10
10
|
* input count so {@link Usage.input} is uncached-only.
|
|
11
|
+
*
|
|
12
|
+
* Past that, everything here is tolerance rather than preference. An
|
|
13
|
+
* OpenAI-compatible endpoint is a gateway whose own upstream calls can fail
|
|
14
|
+
* while the HTTP status stays 200, and whose support for a forced `tool_choice`
|
|
15
|
+
* — the one structured-output mechanism graft can rely on across providers —
|
|
16
|
+
* ranges from exact to none. Each way that goes wrong gets its own narrow
|
|
17
|
+
* recovery: {@link ProviderResponseError} for a 200 that is not a completion,
|
|
18
|
+
* and a bounded rung ladder in {@link OpenAIChatModel.structured} for a
|
|
19
|
+
* structured reply the endpoint answers some other way. None of it changes the
|
|
20
|
+
* bytes on the wire for an endpoint that behaves.
|
|
11
21
|
*/
|
|
12
22
|
import OpenAI from "openai";
|
|
13
23
|
import { transportRetries } from "./types.js";
|
|
24
|
+
import { unwrapMarkdownFence } from "./recover-tool.js";
|
|
14
25
|
const PROVIDER = "openai";
|
|
15
26
|
/** Synthetic tool used to coerce a plain JSON object out of `{ kind: "json" }`. */
|
|
16
27
|
const JSON_TOOL = "emit_json";
|
|
28
|
+
/** Backoff before re-sending a 200 that carried an error instead of a completion. */
|
|
29
|
+
const EMPTY_RESPONSE_BACKOFF_MS = [500, 1000, 2000, 4000, 8000];
|
|
30
|
+
/** How many nested emulated `{name, parameters}` wrappers to unwrap before stopping. */
|
|
31
|
+
const MAX_UNWRAP_DEPTH = 2;
|
|
32
|
+
/** Stand-in id for a payload lifted out of `content` — no wire call ever had one. */
|
|
33
|
+
const CONTENT_CALL_ID = "from-content";
|
|
34
|
+
/**
|
|
35
|
+
* Endpoints already seen to answer a forced `tool_choice` with something other
|
|
36
|
+
* than a tool call, keyed `<baseUrl>|<model>`. Process-local on purpose: it
|
|
37
|
+
* describes one gateway's current behaviour, the rung that works costs at most
|
|
38
|
+
* one extra call, and the next run re-probes for free.
|
|
39
|
+
*
|
|
40
|
+
* Two observations are proof, because neither survives a retry: a reply the
|
|
41
|
+
* endpoint did serve that just doesn't carry the asked-for call (prose where a
|
|
42
|
+
* tool call was forced), and — counted over {@link forcedFallbackThreshold}
|
|
43
|
+
* separate calls by {@link forcedToolChoiceRescues} — errored bodies on every
|
|
44
|
+
* forced-family rung of a call that a lower rung then answered.
|
|
45
|
+
*/
|
|
46
|
+
const forcedToolChoiceIgnored = new Set();
|
|
47
|
+
/**
|
|
48
|
+
* Rescued calls per `<baseUrl>|<model>`: structured calls where every
|
|
49
|
+
* forced-family rung failed with an errored body and the final "auto" rung then
|
|
50
|
+
* answered. One such call is a hiccup — the upstream behind the gateway may
|
|
51
|
+
* already be back, and a healthy endpoint must not spend the rest of the run
|
|
52
|
+
* on the slow rungs — so the downgrade waits for
|
|
53
|
+
* {@link forcedFallbackThreshold} of them, and a forced call that succeeds
|
|
54
|
+
* resets the count.
|
|
55
|
+
*/
|
|
56
|
+
const forcedToolChoiceRescues = new Map();
|
|
57
|
+
/**
|
|
58
|
+
* Rescued calls it takes to stop probing the forced rung on an endpoint +
|
|
59
|
+
* model (`GRAFT_LLM_FORCED_RESCUES`). Two by default: the first errored body
|
|
60
|
+
* says the endpoint's upstream blinked; a second call walking the same ladder
|
|
61
|
+
* to the same answer says the endpoint itself cannot serve the ask.
|
|
62
|
+
*/
|
|
63
|
+
function forcedFallbackThreshold() {
|
|
64
|
+
const raw = Number(process.env.GRAFT_LLM_FORCED_RESCUES);
|
|
65
|
+
return Number.isFinite(raw) && raw >= 1 ? Math.floor(raw) : 2;
|
|
66
|
+
}
|
|
17
67
|
/** A text content part, optionally carrying a cache breakpoint (OpenRouter passthrough). */
|
|
18
68
|
function textPart(text, cache) {
|
|
19
69
|
return cache
|
|
@@ -98,13 +148,145 @@ function isRejectedToolsWithReasoning(err) {
|
|
|
98
148
|
(/function tools with reasoning_effort/i.test(message) ||
|
|
99
149
|
/thinking mode does not support this tool_choice/i.test(message)));
|
|
100
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* A 200 that is not a completion.
|
|
153
|
+
*
|
|
154
|
+
* A proxy in front of a model can answer HTTP 200 with
|
|
155
|
+
* `{"error": {...}}` and no `choices` when the upstream call fails, because the
|
|
156
|
+
* failure belongs to a server the proxy itself did not talk to. The SDK's retry
|
|
157
|
+
* policy only ever sees the status, so it returns that body as a success, and
|
|
158
|
+
* the first `choices[0]` used to turn it into a TypeError naming nothing a user
|
|
159
|
+
* could act on. Retryable by construction — the request was never served — and
|
|
160
|
+
* carrying the provider's own message and code so the failure that does reach
|
|
161
|
+
* the caller says what the endpoint said.
|
|
162
|
+
*/
|
|
163
|
+
export class ProviderResponseError extends Error {
|
|
164
|
+
code;
|
|
165
|
+
/** The status the provider actually sent. 200: that is the whole surprise. */
|
|
166
|
+
status = 200;
|
|
167
|
+
/** Always true — the same request can succeed on a later attempt. */
|
|
168
|
+
retryable = true;
|
|
169
|
+
constructor(message,
|
|
170
|
+
/** The provider's own error code, when the body carried one. */
|
|
171
|
+
code) {
|
|
172
|
+
super(message);
|
|
173
|
+
this.code = code;
|
|
174
|
+
this.name = "ProviderResponseError";
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* The completion inside a 200 body, or a typed error saying what came back
|
|
179
|
+
* instead. The only gate onto the response fields: no caller downstream of it
|
|
180
|
+
* may touch `choices` before this has decided the body holds one.
|
|
181
|
+
*/
|
|
182
|
+
function completionOrThrow(resp) {
|
|
183
|
+
const body = resp;
|
|
184
|
+
const err = body?.error;
|
|
185
|
+
if (err) {
|
|
186
|
+
const message = typeof err.message === "string" && err.message.trim()
|
|
187
|
+
? err.message
|
|
188
|
+
: "the provider returned an error body with no choices";
|
|
189
|
+
const code = typeof err.code === "string" || typeof err.code === "number" ? err.code : undefined;
|
|
190
|
+
throw new ProviderResponseError(message, code);
|
|
191
|
+
}
|
|
192
|
+
if (!Array.isArray(body?.choices) || body.choices.length === 0) {
|
|
193
|
+
throw new ProviderResponseError("the provider returned a successful response with no choices");
|
|
194
|
+
}
|
|
195
|
+
return body;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* A JSON value the model wrote into `content` instead of a tool call: fenced or
|
|
199
|
+
* bare, or wrapped in a sentence around it. Object before array, the same order
|
|
200
|
+
* the content recovery in ./recover-tool.ts uses, so both agree on what a
|
|
201
|
+
* half-written reply contains.
|
|
202
|
+
*/
|
|
203
|
+
function jsonFromContent(text) {
|
|
204
|
+
const raw = unwrapMarkdownFence((text ?? "").trim());
|
|
205
|
+
if (!raw)
|
|
206
|
+
return undefined;
|
|
207
|
+
try {
|
|
208
|
+
return JSON.parse(raw);
|
|
209
|
+
}
|
|
210
|
+
catch {
|
|
211
|
+
/* a sentence around the payload — try the outermost braces/brackets */
|
|
212
|
+
}
|
|
213
|
+
for (const [open, close] of [
|
|
214
|
+
["{", "}"],
|
|
215
|
+
["[", "]"],
|
|
216
|
+
]) {
|
|
217
|
+
const start = raw.indexOf(open);
|
|
218
|
+
const end = raw.lastIndexOf(close);
|
|
219
|
+
if (start < 0 || end <= start)
|
|
220
|
+
continue;
|
|
221
|
+
try {
|
|
222
|
+
return JSON.parse(raw.slice(start, end + 1));
|
|
223
|
+
}
|
|
224
|
+
catch {
|
|
225
|
+
/* not a single well-formed value — the caller judges it as prose */
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
return undefined;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* The `{name, parameters|arguments|args}` call a model wrote into `content`
|
|
232
|
+
* instead of `tool_calls` (#129) — alone, emulated in an array, or wrapped in a
|
|
233
|
+
* sentence — and failing that a plain JSON object, which is what a gateway that
|
|
234
|
+
* ignored a forced `tool_choice` writes when one tool was offered.
|
|
235
|
+
*
|
|
236
|
+
* Deliberately conservative: only the tool the caller named is accepted, and
|
|
237
|
+
* the caller still validates the shape it asked for.
|
|
238
|
+
*/
|
|
239
|
+
function payloadFromContent(text, toolName, depth = 0) {
|
|
240
|
+
const value = jsonFromContent(text);
|
|
241
|
+
if (!value || typeof value !== "object")
|
|
242
|
+
return undefined;
|
|
243
|
+
if (Array.isArray(value)) {
|
|
244
|
+
for (const item of value) {
|
|
245
|
+
const hit = item && typeof item === "object" ? payloadOf(item, toolName, depth) : undefined;
|
|
246
|
+
if (hit)
|
|
247
|
+
return hit;
|
|
248
|
+
}
|
|
249
|
+
return undefined;
|
|
250
|
+
}
|
|
251
|
+
return payloadOf(value, toolName, depth);
|
|
252
|
+
}
|
|
253
|
+
/** One emulated call object, at whatever depth of nesting it sits. */
|
|
254
|
+
function payloadOf(obj, toolName, depth) {
|
|
255
|
+
// A wrapper naming a different tool is not this caller's payload.
|
|
256
|
+
if (typeof obj.name === "string" && obj.name !== toolName)
|
|
257
|
+
return undefined;
|
|
258
|
+
const params = obj.parameters ?? obj.arguments ?? obj.args;
|
|
259
|
+
if (params === undefined)
|
|
260
|
+
return Object.keys(obj).length ? obj : undefined;
|
|
261
|
+
const parsed = typeof params === "string" ? tryParse(params) : params;
|
|
262
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
|
|
263
|
+
return undefined;
|
|
264
|
+
return depth < MAX_UNWRAP_DEPTH
|
|
265
|
+
? payloadOf(parsed, toolName, depth + 1)
|
|
266
|
+
: parsed;
|
|
267
|
+
}
|
|
268
|
+
function tryParse(s) {
|
|
269
|
+
try {
|
|
270
|
+
return JSON.parse(s);
|
|
271
|
+
}
|
|
272
|
+
catch {
|
|
273
|
+
return undefined;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
101
276
|
export class OpenAIChatModel {
|
|
102
277
|
label;
|
|
103
278
|
client;
|
|
104
279
|
model;
|
|
280
|
+
sleep;
|
|
281
|
+
/** Key into {@link forcedToolChoiceIgnored}: one entry per endpoint + model. */
|
|
282
|
+
choiceKey;
|
|
283
|
+
forcedIgnored;
|
|
105
284
|
constructor(opts) {
|
|
106
285
|
this.model = opts.model;
|
|
107
286
|
this.label = opts.label ?? `${PROVIDER}:${opts.model}`;
|
|
287
|
+
this.sleep = opts.sleep ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
|
|
288
|
+
this.choiceKey = `${opts.baseUrl ?? ""}|${opts.model}`;
|
|
289
|
+
this.forcedIgnored = forcedToolChoiceIgnored.has(this.choiceKey);
|
|
108
290
|
this.client =
|
|
109
291
|
opts.client ??
|
|
110
292
|
new OpenAI({
|
|
@@ -123,6 +305,8 @@ export class OpenAIChatModel {
|
|
|
123
305
|
if (req.maxTokens !== undefined)
|
|
124
306
|
params.max_tokens = req.maxTokens;
|
|
125
307
|
const fmt = req.responseFormat ?? { kind: "text" };
|
|
308
|
+
// The tool whose call answers the request, and the format that needs one.
|
|
309
|
+
let structured = null;
|
|
126
310
|
if (fmt.kind === "json") {
|
|
127
311
|
// Coerce JSON via a forced synthetic tool — the one structured-output
|
|
128
312
|
// mechanism shared with Anthropic (no reliance on `response_format`).
|
|
@@ -130,17 +314,154 @@ export class OpenAIChatModel {
|
|
|
130
314
|
...(tools ?? []),
|
|
131
315
|
{ type: "function", function: { name: JSON_TOOL, description: "Return the answer as a JSON object.", parameters: { type: "object", additionalProperties: true } } },
|
|
132
316
|
];
|
|
133
|
-
|
|
317
|
+
structured = { tool: JSON_TOOL, kind: "json" };
|
|
134
318
|
}
|
|
135
319
|
else if (fmt.kind === "tool") {
|
|
136
320
|
params.tools = tools;
|
|
137
|
-
|
|
321
|
+
structured = { tool: fmt.name, kind: "tool" };
|
|
138
322
|
}
|
|
139
323
|
else if (tools) {
|
|
140
324
|
params.tools = tools;
|
|
141
325
|
}
|
|
142
|
-
|
|
143
|
-
|
|
326
|
+
if (!structured)
|
|
327
|
+
return this.fromResponse(await this.complete(params, true), "text");
|
|
328
|
+
return this.structured(params, structured.tool, structured.kind);
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* A structured reply, however the endpoint is willing to produce one.
|
|
332
|
+
*
|
|
333
|
+
* A forced `tool_choice` is the only structured-output mechanism graft can
|
|
334
|
+
* rely on across providers, and it is the least portable corner of the
|
|
335
|
+
* OpenAI-compatible spec: an endpoint can reject the object form (handled one
|
|
336
|
+
* layer down), answer 200 with an error object, or quietly answer in prose.
|
|
337
|
+
* So walk a bounded ladder — the object form, then `"required"`, then
|
|
338
|
+
* `"auto"` with the tool named in the prompt — and take the payload from
|
|
339
|
+
* `content` if that is where it landed. `"required"` only stands in for the
|
|
340
|
+
* object form when one tool was offered, the same rule the 400 fallback
|
|
341
|
+
* applies: with several tools it would let the model pick freely rather than
|
|
342
|
+
* honour the caller's choice.
|
|
343
|
+
*
|
|
344
|
+
* An endpoint that honours the forced form never sees rung two — the first
|
|
345
|
+
* attempt answers the question and the ladder ends.
|
|
346
|
+
*
|
|
347
|
+
* An errored body is a weaker signal than a served-but-wrong reply, since it
|
|
348
|
+
* may belong to an upstream that a retry would reach, so it never downgrades
|
|
349
|
+
* on its own: it is counted instead. A call where every forced-family rung
|
|
350
|
+
* failed that way and the final "auto" rung then answered is a rescue, and
|
|
351
|
+
* the second rescue with no successful forced call in between is the
|
|
352
|
+
* endpoint's pattern, not its upstream's — that, and only that, switches
|
|
353
|
+
* later calls straight to "auto".
|
|
354
|
+
*/
|
|
355
|
+
async structured(base, tool, kind) {
|
|
356
|
+
const rungs = this.forcedIgnored
|
|
357
|
+
? ["auto"]
|
|
358
|
+
: base.tools?.length === 1
|
|
359
|
+
? ["forced", "required", "auto"]
|
|
360
|
+
: ["forced", "auto"];
|
|
361
|
+
// How many rungs of this call have answered with an errored body so far.
|
|
362
|
+
// The rescue judgement needs the whole call: forced-family rungs errored,
|
|
363
|
+
// and the rung that finally answered being the one below all of them.
|
|
364
|
+
let erroredAbove = 0;
|
|
365
|
+
for (const rung of rungs.slice(0, -1)) {
|
|
366
|
+
let res;
|
|
367
|
+
try {
|
|
368
|
+
// No empty-response retry on a rung with a successor: changing the ask
|
|
369
|
+
// is a better next move than re-sending a request the endpoint cannot
|
|
370
|
+
// serve, and it costs the same one call.
|
|
371
|
+
res = this.fromResponse(await this.complete(this.attempt(base, rung, tool), false), kind);
|
|
372
|
+
}
|
|
373
|
+
catch (err) {
|
|
374
|
+
if (!(err instanceof ProviderResponseError))
|
|
375
|
+
throw err;
|
|
376
|
+
erroredAbove += 1;
|
|
377
|
+
continue;
|
|
378
|
+
}
|
|
379
|
+
if (this.delivered(res, kind, tool)) {
|
|
380
|
+
// The forced rung answering is the strongest counter-evidence there
|
|
381
|
+
// is: whatever errored bodies came before, this endpoint serves the
|
|
382
|
+
// ask, and the count starts over.
|
|
383
|
+
if (rung === "forced")
|
|
384
|
+
forcedToolChoiceRescues.delete(this.choiceKey);
|
|
385
|
+
return fromContentAsPayload(res, kind, tool);
|
|
386
|
+
}
|
|
387
|
+
this.rememberForcedIgnored();
|
|
388
|
+
}
|
|
389
|
+
// Last rung: "auto" plus the tool named in the prompt, retried on an
|
|
390
|
+
// errored body. Whatever comes back is the answer — the payload from
|
|
391
|
+
// `content` when that is where it landed, the raw reply otherwise, so the
|
|
392
|
+
// caller's own miss classification still sees exactly what the model said.
|
|
393
|
+
const last = this.fromResponse(await this.complete(this.attempt(base, "auto", tool), true), kind);
|
|
394
|
+
if (this.delivered(last, kind, tool) && erroredAbove === rungs.length - 1)
|
|
395
|
+
this.noteForcedRescue();
|
|
396
|
+
return fromContentAsPayload(last, kind, tool);
|
|
397
|
+
}
|
|
398
|
+
/** One rung: the forced object form, its equivalent string form, or "auto" plus a prompt. */
|
|
399
|
+
attempt(base, rung, tool) {
|
|
400
|
+
if (rung === "forced")
|
|
401
|
+
return { ...base, tool_choice: { type: "function", function: { name: tool } } };
|
|
402
|
+
if (rung === "required")
|
|
403
|
+
return { ...base, tool_choice: "required" };
|
|
404
|
+
return { ...base, tool_choice: "auto", messages: withToolInstruction(base.messages, tool) };
|
|
405
|
+
}
|
|
406
|
+
/** Did the reply carry the payload the caller forced a tool for? */
|
|
407
|
+
delivered(res, kind, tool) {
|
|
408
|
+
if (kind === "json")
|
|
409
|
+
return jsonFromContent(res.text) !== undefined;
|
|
410
|
+
return res.toolCalls.some((c) => c.name === tool) || payloadFromContent(res.text, tool) !== undefined;
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
413
|
+
* One more rescued call for this endpoint + model. When the count reaches
|
|
414
|
+
* the threshold with no successful forced call in between, the endpoint is
|
|
415
|
+
* marked the same way a served-but-wrong reply marks it.
|
|
416
|
+
*/
|
|
417
|
+
noteForcedRescue() {
|
|
418
|
+
if (this.forcedIgnored)
|
|
419
|
+
return;
|
|
420
|
+
const rescues = (forcedToolChoiceRescues.get(this.choiceKey) ?? 0) + 1;
|
|
421
|
+
forcedToolChoiceRescues.set(this.choiceKey, rescues);
|
|
422
|
+
if (rescues >= forcedFallbackThreshold())
|
|
423
|
+
this.rememberForcedIgnored();
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* Remember, for this process, that the endpoint did not answer a forced
|
|
427
|
+
* `tool_choice` with a tool call, so later requests go straight to the rung
|
|
428
|
+
* that works. Logged once per endpoint + model — the set is shared by every
|
|
429
|
+
* instance, so a second adapter for the same endpoint never repeats it: it
|
|
430
|
+
* changes the bytes on the wire, which is exactly what someone reading a
|
|
431
|
+
* failing build needs told.
|
|
432
|
+
*/
|
|
433
|
+
rememberForcedIgnored() {
|
|
434
|
+
this.forcedIgnored = true;
|
|
435
|
+
if (forcedToolChoiceIgnored.has(this.choiceKey))
|
|
436
|
+
return;
|
|
437
|
+
forcedToolChoiceIgnored.add(this.choiceKey);
|
|
438
|
+
console.error(`⚠ ${this.label}: the endpoint did not honor a forced tool_choice — asking for the tool in the prompt instead (tool_choice "auto") for the rest of this run.`);
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* One completion, with the transport's retry policy extended to a 200 that
|
|
442
|
+
* carried an error instead of one. The SDK retries 429, 5xx and connection
|
|
443
|
+
* failures but never a successful status, and that body is the endpoint
|
|
444
|
+
* reporting a failed upstream call — the same judgement, so the same
|
|
445
|
+
* `GRAFT_LLM_RETRIES` budget and backoff apply, and the typed error is what
|
|
446
|
+
* reaches the caller once that budget is spent.
|
|
447
|
+
*/
|
|
448
|
+
async complete(params, retryErroredBody) {
|
|
449
|
+
const retries = retryErroredBody ? transportRetries() : 0;
|
|
450
|
+
for (let attempt = 0;; attempt++) {
|
|
451
|
+
let failure;
|
|
452
|
+
try {
|
|
453
|
+
return completionOrThrow(await this.createChatCompletion(params));
|
|
454
|
+
}
|
|
455
|
+
catch (err) {
|
|
456
|
+
if (!(err instanceof ProviderResponseError))
|
|
457
|
+
throw err;
|
|
458
|
+
failure = err;
|
|
459
|
+
}
|
|
460
|
+
if (attempt >= retries)
|
|
461
|
+
throw failure;
|
|
462
|
+
const wait = EMPTY_RESPONSE_BACKOFF_MS[Math.min(attempt, EMPTY_RESPONSE_BACKOFF_MS.length - 1)];
|
|
463
|
+
await this.sleep(wait);
|
|
464
|
+
}
|
|
144
465
|
}
|
|
145
466
|
/**
|
|
146
467
|
* Wraps `chat.completions.create` with a narrow, safe fallback: if the
|
|
@@ -186,7 +507,33 @@ export class OpenAIChatModel {
|
|
|
186
507
|
}
|
|
187
508
|
return this.client.chat.completions.create(attempt);
|
|
188
509
|
}
|
|
510
|
+
/**
|
|
511
|
+
* Normalize provider message content to the plain text representation
|
|
512
|
+
* expected by the rest of Graft. Some OpenAI-compatible providers
|
|
513
|
+
* (observed with GLM-5.3 hosted on Mistral's platform) return content as
|
|
514
|
+
* structured content parts, e.g. `[{ type: "text", text: "..." }]`,
|
|
515
|
+
* instead of a plain string — this path in Graft assumed the latter.
|
|
516
|
+
*/
|
|
517
|
+
static contentToText(content) {
|
|
518
|
+
if (typeof content === "string")
|
|
519
|
+
return content;
|
|
520
|
+
if (content == null)
|
|
521
|
+
return "";
|
|
522
|
+
if (Array.isArray(content)) {
|
|
523
|
+
return content
|
|
524
|
+
.filter((part) => part?.type === "text" || typeof part === "string")
|
|
525
|
+
.map((part) => (typeof part === "string" ? part : (part.text ?? "")))
|
|
526
|
+
.join("");
|
|
527
|
+
}
|
|
528
|
+
// An unrecognized shape is a signal worth surfacing loudly rather than
|
|
529
|
+
// silently coercing to "" or "[object Object]" — that hides a future
|
|
530
|
+
// provider format change instead of flagging it.
|
|
531
|
+
throw new Error(`Unsupported message.content type from provider: ${typeof content}`);
|
|
532
|
+
}
|
|
189
533
|
fromResponse(resp, format) {
|
|
534
|
+
// `resp` came through `completionOrThrow`, so `choices` holds at least one
|
|
535
|
+
// entry by now: this is a peek at the first one, not a dereference of a
|
|
536
|
+
// possibly-missing array.
|
|
190
537
|
const choice = resp.choices[0];
|
|
191
538
|
const msg = choice?.message;
|
|
192
539
|
const rawCalls = (msg?.tool_calls ?? []).filter((c) => c.type === "function");
|
|
@@ -198,7 +545,7 @@ export class OpenAIChatModel {
|
|
|
198
545
|
return {};
|
|
199
546
|
}
|
|
200
547
|
};
|
|
201
|
-
let text = msg?.content
|
|
548
|
+
let text = OpenAIChatModel.contentToText(msg?.content);
|
|
202
549
|
let toolCalls = rawCalls.map((c) => ({
|
|
203
550
|
id: c.id,
|
|
204
551
|
name: c.function.name,
|
|
@@ -218,13 +565,56 @@ export class OpenAIChatModel {
|
|
|
218
565
|
stopReason: choice?.finish_reason ?? null,
|
|
219
566
|
assistant: {
|
|
220
567
|
role: "assistant",
|
|
221
|
-
content: msg?.content
|
|
568
|
+
content: OpenAIChatModel.contentToText(msg?.content),
|
|
222
569
|
toolCalls: toolCalls.length ? toolCalls : undefined,
|
|
223
570
|
providerRaw: { provider: PROVIDER, raw: msg },
|
|
224
571
|
},
|
|
225
572
|
};
|
|
226
573
|
}
|
|
227
574
|
}
|
|
575
|
+
/**
|
|
576
|
+
* Name the tool in a system turn of its own, so an "auto" rung has something to
|
|
577
|
+
* act on. A separate message leaves every part the caller wrote — including a
|
|
578
|
+
* cache breakpoint — byte-for-byte as it was, so this costs no cache.
|
|
579
|
+
*/
|
|
580
|
+
function withToolInstruction(messages, tool) {
|
|
581
|
+
const line = {
|
|
582
|
+
role: "system",
|
|
583
|
+
content: `Answer by calling the ${tool} tool. Put your entire answer in that tool's arguments and reply with nothing else.`,
|
|
584
|
+
};
|
|
585
|
+
// After the last system turn, or first when the caller sent none.
|
|
586
|
+
const at = messages.map((m) => m.role).lastIndexOf("system") + 1;
|
|
587
|
+
return [...messages.slice(0, at), line, ...messages.slice(at)];
|
|
588
|
+
}
|
|
589
|
+
/**
|
|
590
|
+
* An accepted rung's answer, put in the shape the caller asked for. A model that
|
|
591
|
+
* ignored a forced `tool_choice` often produced the payload anyway, as text
|
|
592
|
+
* (#129) — so surface it as the JSON text a `{ kind: "json" }` caller expects,
|
|
593
|
+
* or as a call to the named tool a `{ kind: "tool" }` caller expects, rather
|
|
594
|
+
* than reporting an empty turn. A reply with no recognizable payload is passed
|
|
595
|
+
* through untouched, so the caller's own miss classification still sees exactly
|
|
596
|
+
* what the model said.
|
|
597
|
+
*/
|
|
598
|
+
function fromContentAsPayload(res, kind, tool) {
|
|
599
|
+
if (kind === "json") {
|
|
600
|
+
const value = jsonFromContent(res.text);
|
|
601
|
+
if (value === undefined)
|
|
602
|
+
return res;
|
|
603
|
+
const text = JSON.stringify(value);
|
|
604
|
+
return { ...res, text, assistant: { ...res.assistant, content: text } };
|
|
605
|
+
}
|
|
606
|
+
if (res.toolCalls.some((c) => c.name === tool))
|
|
607
|
+
return res;
|
|
608
|
+
const args = payloadFromContent(res.text, tool);
|
|
609
|
+
if (!args)
|
|
610
|
+
return res;
|
|
611
|
+
const call = { id: CONTENT_CALL_ID, name: tool, args };
|
|
612
|
+
return {
|
|
613
|
+
...res,
|
|
614
|
+
toolCalls: [...res.toolCalls, call],
|
|
615
|
+
assistant: { ...res.assistant, toolCalls: [...(res.assistant.toolCalls ?? []), call] },
|
|
616
|
+
};
|
|
617
|
+
}
|
|
228
618
|
/** Cached tokens are inside `prompt_tokens`; subtract so `input` is uncached-only. */
|
|
229
619
|
function normalizeUsage(u) {
|
|
230
620
|
const prompt = u?.prompt_tokens ?? 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/ai/llm/openai.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/ai/llm/openai.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
* Anything else (prose, truncated JSON, a guessed shape) returns undefined.
|
|
11
11
|
* Callers MUST run the same schema validation they use for real tool calls.
|
|
12
12
|
*/
|
|
13
|
+
/** Leading/trailing ```json fence, linear in `raw.length` — no quantified-whitespace regex. */
|
|
14
|
+
export declare function unwrapMarkdownFence(raw: string): string;
|
|
13
15
|
export declare function recoverToolArgsFromContent(text: string, opts: {
|
|
14
16
|
toolNames: readonly string[];
|
|
15
17
|
payloadKey: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recover-tool.d.ts","sourceRoot":"","sources":["../../../src/ai/llm/recover-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"recover-tool.d.ts","sourceRoot":"","sources":["../../../src/ai/llm/recover-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,+FAA+F;AAC/F,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CASvD;AAED,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE;IAAE,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACzD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAiErC;AAED,yFAAyF;AACzF,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CAMpF"}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* Callers MUST run the same schema validation they use for real tool calls.
|
|
12
12
|
*/
|
|
13
13
|
/** Leading/trailing ```json fence, linear in `raw.length` — no quantified-whitespace regex. */
|
|
14
|
-
function unwrapMarkdownFence(raw) {
|
|
14
|
+
export function unwrapMarkdownFence(raw) {
|
|
15
15
|
let s = raw;
|
|
16
16
|
if (s.startsWith("```")) {
|
|
17
17
|
s = s.slice(3);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recover-tool.js","sourceRoot":"","sources":["../../../src/ai/llm/recover-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,+FAA+F;AAC/F,
|
|
1
|
+
{"version":3,"file":"recover-tool.js","sourceRoot":"","sources":["../../../src/ai/llm/recover-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"synthesize.d.ts","sourceRoot":"","sources":["../../src/ai/synthesize.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGhD,gFAAgF;AAChF,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,2EAA2E;AAC3E,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB;AAED,mDAAmD;AACnD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;CACxD;
|
|
1
|
+
{"version":3,"file":"synthesize.d.ts","sourceRoot":"","sources":["../../src/ai/synthesize.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGhD,gFAAgF;AAChF,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,2EAA2E;AAC3E,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB;AAED,mDAAmD;AACnD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;CACxD;AAmLD,2EAA2E;AAC3E,qBAAa,eAAgB,YAAW,WAAW;IACrC,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,SAAS;IAE9B,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;CAyB7D"}
|