@arden-hq/loop 0.0.0-stage → 0.1.2
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/LICENSE +202 -0
- package/README.md +121 -2
- package/dist/abort.d.ts +9 -0
- package/dist/abort.d.ts.map +1 -0
- package/dist/abort.js +31 -0
- package/dist/abort.js.map +1 -0
- package/dist/agent/agent.d.ts +48 -0
- package/dist/agent/agent.d.ts.map +1 -0
- package/dist/agent/agent.js +146 -0
- package/dist/agent/agent.js.map +1 -0
- package/dist/agent/background-tools.d.ts +51 -0
- package/dist/agent/background-tools.d.ts.map +1 -0
- package/dist/agent/background-tools.js +257 -0
- package/dist/agent/background-tools.js.map +1 -0
- package/dist/agent/budget.d.ts +5 -0
- package/dist/agent/budget.d.ts.map +1 -0
- package/dist/agent/budget.js +48 -0
- package/dist/agent/budget.js.map +1 -0
- package/dist/agent/config.d.ts +61 -0
- package/dist/agent/config.d.ts.map +1 -0
- package/dist/agent/config.js +99 -0
- package/dist/agent/config.js.map +1 -0
- package/dist/agent/guards.d.ts +10 -0
- package/dist/agent/guards.d.ts.map +1 -0
- package/dist/agent/guards.js +136 -0
- package/dist/agent/guards.js.map +1 -0
- package/dist/agent/history-journal.d.ts +18 -0
- package/dist/agent/history-journal.d.ts.map +1 -0
- package/dist/agent/history-journal.js +87 -0
- package/dist/agent/history-journal.js.map +1 -0
- package/dist/agent/history-projection.d.ts +6 -0
- package/dist/agent/history-projection.d.ts.map +1 -0
- package/dist/agent/history-projection.js +62 -0
- package/dist/agent/history-projection.js.map +1 -0
- package/dist/agent/interactions.d.ts +14 -0
- package/dist/agent/interactions.d.ts.map +1 -0
- package/dist/agent/interactions.js +85 -0
- package/dist/agent/interactions.js.map +1 -0
- package/dist/agent/middleware.d.ts +5 -0
- package/dist/agent/middleware.d.ts.map +1 -0
- package/dist/agent/middleware.js +55 -0
- package/dist/agent/middleware.js.map +1 -0
- package/dist/agent/model-output-projection.d.ts +27 -0
- package/dist/agent/model-output-projection.d.ts.map +1 -0
- package/dist/agent/model-output-projection.js +138 -0
- package/dist/agent/model-output-projection.js.map +1 -0
- package/dist/agent/model-output.d.ts +19 -0
- package/dist/agent/model-output.d.ts.map +1 -0
- package/dist/agent/model-output.js +172 -0
- package/dist/agent/model-output.js.map +1 -0
- package/dist/agent/model-turn.d.ts +29 -0
- package/dist/agent/model-turn.d.ts.map +1 -0
- package/dist/agent/model-turn.js +401 -0
- package/dist/agent/model-turn.js.map +1 -0
- package/dist/agent/policy.d.ts +28 -0
- package/dist/agent/policy.d.ts.map +1 -0
- package/dist/agent/policy.js +109 -0
- package/dist/agent/policy.js.map +1 -0
- package/dist/agent/provider-capabilities.d.ts +12 -0
- package/dist/agent/provider-capabilities.d.ts.map +1 -0
- package/dist/agent/provider-capabilities.js +76 -0
- package/dist/agent/provider-capabilities.js.map +1 -0
- package/dist/agent/recovery.d.ts +8 -0
- package/dist/agent/recovery.d.ts.map +1 -0
- package/dist/agent/recovery.js +21 -0
- package/dist/agent/recovery.js.map +1 -0
- package/dist/agent/replies.d.ts +3 -0
- package/dist/agent/replies.d.ts.map +1 -0
- package/dist/agent/replies.js +24 -0
- package/dist/agent/replies.js.map +1 -0
- package/dist/agent/run-state.d.ts +98 -0
- package/dist/agent/run-state.d.ts.map +1 -0
- package/dist/agent/run-state.js +454 -0
- package/dist/agent/run-state.js.map +1 -0
- package/dist/agent/run.d.ts +6 -0
- package/dist/agent/run.d.ts.map +1 -0
- package/dist/agent/run.js +462 -0
- package/dist/agent/run.js.map +1 -0
- package/dist/agent/streamed-call-history.d.ts +20 -0
- package/dist/agent/streamed-call-history.d.ts.map +1 -0
- package/dist/agent/streamed-call-history.js +71 -0
- package/dist/agent/streamed-call-history.js.map +1 -0
- package/dist/agent/streaming-tools.d.ts +23 -0
- package/dist/agent/streaming-tools.d.ts.map +1 -0
- package/dist/agent/streaming-tools.js +67 -0
- package/dist/agent/streaming-tools.js.map +1 -0
- package/dist/agent/structured-output.d.ts +27 -0
- package/dist/agent/structured-output.d.ts.map +1 -0
- package/dist/agent/structured-output.js +26 -0
- package/dist/agent/structured-output.js.map +1 -0
- package/dist/agent/tool-admission.d.ts +18 -0
- package/dist/agent/tool-admission.d.ts.map +1 -0
- package/dist/agent/tool-admission.js +22 -0
- package/dist/agent/tool-admission.js.map +1 -0
- package/dist/contracts/events.d.ts +236 -0
- package/dist/contracts/events.d.ts.map +1 -0
- package/dist/contracts/events.js +13 -0
- package/dist/contracts/events.js.map +1 -0
- package/dist/contracts/messages.d.ts +234 -0
- package/dist/contracts/messages.d.ts.map +1 -0
- package/dist/contracts/messages.js +11 -0
- package/dist/contracts/messages.js.map +1 -0
- package/dist/contracts/provider.d.ts +177 -0
- package/dist/contracts/provider.d.ts.map +1 -0
- package/dist/contracts/provider.js +26 -0
- package/dist/contracts/provider.js.map +1 -0
- package/dist/contracts/tools.d.ts +217 -0
- package/dist/contracts/tools.d.ts.map +1 -0
- package/dist/contracts/tools.js +16 -0
- package/dist/contracts/tools.js.map +1 -0
- package/dist/errors.d.ts +112 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +190 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/concurrency.d.ts +11 -0
- package/dist/internal/concurrency.d.ts.map +1 -0
- package/dist/internal/concurrency.js +86 -0
- package/dist/internal/concurrency.js.map +1 -0
- package/dist/internal/stream.d.ts +25 -0
- package/dist/internal/stream.d.ts.map +1 -0
- package/dist/internal/stream.js +97 -0
- package/dist/internal/stream.js.map +1 -0
- package/dist/internal/validate.d.ts +30 -0
- package/dist/internal/validate.d.ts.map +1 -0
- package/dist/internal/validate.js +480 -0
- package/dist/internal/validate.js.map +1 -0
- package/dist/providers/kit/errors.d.ts +40 -0
- package/dist/providers/kit/errors.d.ts.map +1 -0
- package/dist/providers/kit/errors.js +48 -0
- package/dist/providers/kit/errors.js.map +1 -0
- package/dist/providers/kit/index.d.ts +10 -0
- package/dist/providers/kit/index.d.ts.map +1 -0
- package/dist/providers/kit/index.js +10 -0
- package/dist/providers/kit/index.js.map +1 -0
- package/dist/providers/kit/retry.d.ts +43 -0
- package/dist/providers/kit/retry.d.ts.map +1 -0
- package/dist/providers/kit/retry.js +118 -0
- package/dist/providers/kit/retry.js.map +1 -0
- package/dist/providers/kit/sse.d.ts +22 -0
- package/dist/providers/kit/sse.d.ts.map +1 -0
- package/dist/providers/kit/sse.js +70 -0
- package/dist/providers/kit/sse.js.map +1 -0
- package/dist/providers/openai-responses/citations.d.ts +21 -0
- package/dist/providers/openai-responses/citations.d.ts.map +1 -0
- package/dist/providers/openai-responses/citations.js +65 -0
- package/dist/providers/openai-responses/citations.js.map +1 -0
- package/dist/providers/openai-responses/continuation.d.ts +19 -0
- package/dist/providers/openai-responses/continuation.d.ts.map +1 -0
- package/dist/providers/openai-responses/continuation.js +28 -0
- package/dist/providers/openai-responses/continuation.js.map +1 -0
- package/dist/providers/openai-responses/errors.d.ts +28 -0
- package/dist/providers/openai-responses/errors.d.ts.map +1 -0
- package/dist/providers/openai-responses/errors.js +103 -0
- package/dist/providers/openai-responses/errors.js.map +1 -0
- package/dist/providers/openai-responses/history.d.ts +8 -0
- package/dist/providers/openai-responses/history.d.ts.map +1 -0
- package/dist/providers/openai-responses/history.js +93 -0
- package/dist/providers/openai-responses/history.js.map +1 -0
- package/dist/providers/openai-responses/items.d.ts +106 -0
- package/dist/providers/openai-responses/items.d.ts.map +1 -0
- package/dist/providers/openai-responses/items.js +124 -0
- package/dist/providers/openai-responses/items.js.map +1 -0
- package/dist/providers/openai-responses/parameter-schema.d.ts +11 -0
- package/dist/providers/openai-responses/parameter-schema.d.ts.map +1 -0
- package/dist/providers/openai-responses/parameter-schema.js +186 -0
- package/dist/providers/openai-responses/parameter-schema.js.map +1 -0
- package/dist/providers/openai-responses/provider.d.ts +54 -0
- package/dist/providers/openai-responses/provider.d.ts.map +1 -0
- package/dist/providers/openai-responses/provider.js +270 -0
- package/dist/providers/openai-responses/provider.js.map +1 -0
- package/dist/providers/openai-responses/request.d.ts +41 -0
- package/dist/providers/openai-responses/request.d.ts.map +1 -0
- package/dist/providers/openai-responses/request.js +276 -0
- package/dist/providers/openai-responses/request.js.map +1 -0
- package/dist/providers/openai-responses/response.d.ts +7 -0
- package/dist/providers/openai-responses/response.d.ts.map +1 -0
- package/dist/providers/openai-responses/response.js +354 -0
- package/dist/providers/openai-responses/response.js.map +1 -0
- package/dist/providers/openai-responses/stored-items.d.ts +9 -0
- package/dist/providers/openai-responses/stored-items.d.ts.map +1 -0
- package/dist/providers/openai-responses/stored-items.js +133 -0
- package/dist/providers/openai-responses/stored-items.js.map +1 -0
- package/dist/providers/openai-responses/tool-search.d.ts +12 -0
- package/dist/providers/openai-responses/tool-search.d.ts.map +1 -0
- package/dist/providers/openai-responses/tool-search.js +68 -0
- package/dist/providers/openai-responses/tool-search.js.map +1 -0
- package/dist/providers/openai-responses/tools.d.ts +33 -0
- package/dist/providers/openai-responses/tools.d.ts.map +1 -0
- package/dist/providers/openai-responses/tools.js +53 -0
- package/dist/providers/openai-responses/tools.js.map +1 -0
- package/dist/providers/openai-responses/web-search.d.ts +5 -0
- package/dist/providers/openai-responses/web-search.d.ts.map +1 -0
- package/dist/providers/openai-responses/web-search.js +114 -0
- package/dist/providers/openai-responses/web-search.js.map +1 -0
- package/dist/providers/openai-responses/websocket.d.ts +29 -0
- package/dist/providers/openai-responses/websocket.d.ts.map +1 -0
- package/dist/providers/openai-responses/websocket.js +400 -0
- package/dist/providers/openai-responses/websocket.js.map +1 -0
- package/dist/tools/dispatch.d.ts +65 -0
- package/dist/tools/dispatch.d.ts.map +1 -0
- package/dist/tools/dispatch.js +536 -0
- package/dist/tools/dispatch.js.map +1 -0
- package/dist/tools/display-title.d.ts +18 -0
- package/dist/tools/display-title.d.ts.map +1 -0
- package/dist/tools/display-title.js +50 -0
- package/dist/tools/display-title.js.map +1 -0
- package/dist/tools/search.d.ts +36 -0
- package/dist/tools/search.d.ts.map +1 -0
- package/dist/tools/search.js +224 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/tool.d.ts +200 -0
- package/dist/tools/tool.d.ts.map +1 -0
- package/dist/tools/tool.js +275 -0
- package/dist/tools/tool.js.map +1 -0
- package/dist/tools/truncate.d.ts +18 -0
- package/dist/tools/truncate.d.ts.map +1 -0
- package/dist/tools/truncate.js +76 -0
- package/dist/tools/truncate.js.map +1 -0
- package/package.json +67 -4
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { OpenAiResponsesProviderError } from "./errors.js";
|
|
2
|
+
/** Reject malformed durable runtime-tool history before it reaches OpenAI. */
|
|
3
|
+
export function validateFunctionCallHistory(batches) {
|
|
4
|
+
const outputs = new Map();
|
|
5
|
+
const outstanding = new Map();
|
|
6
|
+
for (const batch of batches) {
|
|
7
|
+
for (const item of batch.items) {
|
|
8
|
+
if (item.type === "function_call") {
|
|
9
|
+
const id = requireFunctionCallId(item);
|
|
10
|
+
if (outstanding.has(id)) {
|
|
11
|
+
throw new OpenAiResponsesProviderError(`Stored OpenAI tool history contains duplicate function call ${id}`);
|
|
12
|
+
}
|
|
13
|
+
outstanding.set(id, item);
|
|
14
|
+
}
|
|
15
|
+
else if (item.type === "function_call_output") {
|
|
16
|
+
const id = requireFunctionCallId(item);
|
|
17
|
+
const call = outstanding.get(id);
|
|
18
|
+
if (call === undefined) {
|
|
19
|
+
throw new OpenAiResponsesProviderError(`Stored OpenAI tool history contains output without matching function call ${id}`);
|
|
20
|
+
}
|
|
21
|
+
outputs.set(call, item);
|
|
22
|
+
outstanding.delete(id);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
const calls = new Map();
|
|
27
|
+
const consumedOutputs = new Set();
|
|
28
|
+
const pending = new Set();
|
|
29
|
+
const asynchronous = new Set();
|
|
30
|
+
const deferredToolContext = [];
|
|
31
|
+
const input = [];
|
|
32
|
+
const closeInterruptedCalls = () => {
|
|
33
|
+
for (const callId of pending) {
|
|
34
|
+
const call = calls.get(callId);
|
|
35
|
+
const recorded = call === undefined ? undefined : outputs.get(call);
|
|
36
|
+
if (recorded !== undefined)
|
|
37
|
+
consumedOutputs.add(recorded);
|
|
38
|
+
input.push(recorded ?? {
|
|
39
|
+
type: "function_call_output",
|
|
40
|
+
call_id: callId,
|
|
41
|
+
output: "Tool output was not recorded. The call may have been interrupted; check its effects before retrying.",
|
|
42
|
+
status: "completed"
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
pending.clear();
|
|
46
|
+
input.push(...deferredToolContext.splice(0));
|
|
47
|
+
};
|
|
48
|
+
for (const batch of batches) {
|
|
49
|
+
if (pending.size > 0 && batch.deferWhileCallsPending) {
|
|
50
|
+
deferredToolContext.push(...batch.items);
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
if (pending.size > 0 && batch.items.some((item) => item.type !== "function_call_output")) {
|
|
54
|
+
closeInterruptedCalls();
|
|
55
|
+
}
|
|
56
|
+
for (const item of batch.items) {
|
|
57
|
+
if (consumedOutputs.has(item))
|
|
58
|
+
continue;
|
|
59
|
+
if (item.type === "function_call") {
|
|
60
|
+
const callId = requireFunctionCallId(item);
|
|
61
|
+
calls.set(callId, item);
|
|
62
|
+
if (pending.has(callId) || asynchronous.has(callId)) {
|
|
63
|
+
throw new OpenAiResponsesProviderError(`Stored OpenAI tool history contains duplicate function call ${callId}`);
|
|
64
|
+
}
|
|
65
|
+
if (item.async === true)
|
|
66
|
+
asynchronous.add(callId);
|
|
67
|
+
else
|
|
68
|
+
pending.add(callId);
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
if (item.type !== "function_call_output")
|
|
72
|
+
continue;
|
|
73
|
+
const callId = requireFunctionCallId(item);
|
|
74
|
+
if (!pending.has(callId) && !asynchronous.has(callId)) {
|
|
75
|
+
throw new OpenAiResponsesProviderError(`Stored OpenAI tool history contains output without matching function call ${callId}`);
|
|
76
|
+
}
|
|
77
|
+
pending.delete(callId);
|
|
78
|
+
asynchronous.delete(callId);
|
|
79
|
+
}
|
|
80
|
+
input.push(...batch.items.filter((item) => !consumedOutputs.has(item)));
|
|
81
|
+
if (pending.size === 0 && deferredToolContext.length > 0) {
|
|
82
|
+
input.push(...deferredToolContext.splice(0));
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
closeInterruptedCalls();
|
|
86
|
+
return input;
|
|
87
|
+
}
|
|
88
|
+
function requireFunctionCallId(item) {
|
|
89
|
+
if (typeof item.call_id === "string" && item.call_id.length > 0)
|
|
90
|
+
return item.call_id;
|
|
91
|
+
throw new OpenAiResponsesProviderError("Stored OpenAI tool history contains an invalid function call id");
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../../src/providers/openai-responses/history.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
export declare const SYNTHETIC_OUTPUT_ID_PREFIX = "arden-synthetic-output-";
|
|
2
|
+
type ItemStatus = "in_progress" | "completed" | "incomplete";
|
|
3
|
+
type MessagePhase = "commentary" | "final_answer";
|
|
4
|
+
interface OutputTextPart {
|
|
5
|
+
readonly type: "output_text";
|
|
6
|
+
readonly text: string;
|
|
7
|
+
readonly annotations: ReadonlyArray<unknown>;
|
|
8
|
+
readonly logprobs: ReadonlyArray<unknown>;
|
|
9
|
+
}
|
|
10
|
+
interface RefusalPart {
|
|
11
|
+
readonly type: "refusal";
|
|
12
|
+
readonly refusal: string;
|
|
13
|
+
}
|
|
14
|
+
interface SummaryPart {
|
|
15
|
+
readonly type: "summary_text";
|
|
16
|
+
readonly text: string;
|
|
17
|
+
}
|
|
18
|
+
interface ReasoningTextPart {
|
|
19
|
+
readonly type: "reasoning_text";
|
|
20
|
+
readonly text: string;
|
|
21
|
+
}
|
|
22
|
+
interface MessageOutputItem {
|
|
23
|
+
readonly id: string;
|
|
24
|
+
readonly type: "message";
|
|
25
|
+
readonly role: "assistant";
|
|
26
|
+
readonly content: ReadonlyArray<OutputTextPart | RefusalPart>;
|
|
27
|
+
readonly status: ItemStatus;
|
|
28
|
+
readonly phase?: MessagePhase | null;
|
|
29
|
+
}
|
|
30
|
+
export interface ReasoningOutputItem {
|
|
31
|
+
readonly type: "reasoning";
|
|
32
|
+
readonly id: string;
|
|
33
|
+
readonly encrypted_content?: string | null;
|
|
34
|
+
readonly summary: ReadonlyArray<SummaryPart>;
|
|
35
|
+
readonly content?: ReadonlyArray<ReasoningTextPart>;
|
|
36
|
+
readonly status: ItemStatus;
|
|
37
|
+
}
|
|
38
|
+
interface FunctionCallOutputItem {
|
|
39
|
+
readonly async?: boolean;
|
|
40
|
+
readonly id?: string;
|
|
41
|
+
readonly type: "function_call";
|
|
42
|
+
readonly call_id: string;
|
|
43
|
+
readonly name: string;
|
|
44
|
+
/** Set when the called tool was loaded through tool search inside a namespace. */
|
|
45
|
+
readonly namespace?: string;
|
|
46
|
+
readonly arguments: string;
|
|
47
|
+
readonly status: ItemStatus;
|
|
48
|
+
}
|
|
49
|
+
/** The model asking the client to search deferred tools; the response ends here. */
|
|
50
|
+
export interface ToolSearchCallOutputItem {
|
|
51
|
+
readonly id: string;
|
|
52
|
+
readonly type: "tool_search_call";
|
|
53
|
+
readonly call_id: string | null;
|
|
54
|
+
readonly execution: string;
|
|
55
|
+
readonly arguments: unknown;
|
|
56
|
+
readonly status: ItemStatus;
|
|
57
|
+
}
|
|
58
|
+
export interface WebSearchOutputItem {
|
|
59
|
+
readonly [key: string]: unknown;
|
|
60
|
+
readonly id: string;
|
|
61
|
+
readonly type: "web_search_call";
|
|
62
|
+
readonly status: ItemStatus;
|
|
63
|
+
readonly action?: Readonly<Record<string, unknown>>;
|
|
64
|
+
}
|
|
65
|
+
export type OutputItem = MessageOutputItem | ReasoningOutputItem | FunctionCallOutputItem | WebSearchOutputItem | ToolSearchCallOutputItem;
|
|
66
|
+
export interface ToolSearchCallInputItem {
|
|
67
|
+
readonly [key: string]: unknown;
|
|
68
|
+
readonly type: "tool_search_call";
|
|
69
|
+
readonly call_id: string | null;
|
|
70
|
+
readonly execution: string;
|
|
71
|
+
readonly arguments: unknown;
|
|
72
|
+
}
|
|
73
|
+
export interface ToolSearchOutputInputItem {
|
|
74
|
+
readonly [key: string]: unknown;
|
|
75
|
+
readonly type: "tool_search_output";
|
|
76
|
+
readonly call_id: string | null;
|
|
77
|
+
readonly status: string;
|
|
78
|
+
readonly execution: string;
|
|
79
|
+
readonly tools: ReadonlyArray<unknown>;
|
|
80
|
+
}
|
|
81
|
+
export type StoredResponseItem = OutputItem | ToolSearchCallInputItem | ToolSearchOutputInputItem;
|
|
82
|
+
/** Wire-format input entries; kept structurally open like the wire itself. */
|
|
83
|
+
export type InputItem = Readonly<Record<string, unknown>>;
|
|
84
|
+
export interface ResponseUsage {
|
|
85
|
+
readonly input_tokens: number;
|
|
86
|
+
readonly input_tokens_details: {
|
|
87
|
+
readonly cached_tokens: number;
|
|
88
|
+
readonly cache_write_tokens: number;
|
|
89
|
+
};
|
|
90
|
+
readonly output_tokens: number;
|
|
91
|
+
}
|
|
92
|
+
export interface ResponseShape {
|
|
93
|
+
readonly output: ReadonlyArray<OutputItem>;
|
|
94
|
+
readonly usage: ResponseUsage | null;
|
|
95
|
+
}
|
|
96
|
+
export type RawResponseEvent = Readonly<Record<string, unknown>>;
|
|
97
|
+
export declare const WEB_SEARCH_TOOL_NAME = "web_search";
|
|
98
|
+
export declare const TOOL_SEARCH_TOOL_NAME = "tool_search";
|
|
99
|
+
/** This provider's key in an assistant message's `provider_state`. */
|
|
100
|
+
export declare const PROVIDER_STATE_KEY = "openai-responses";
|
|
101
|
+
export declare const asRecord: (value: unknown) => Readonly<Record<string, unknown>> | null;
|
|
102
|
+
export declare const stringValue: (value: unknown) => string | null;
|
|
103
|
+
export declare const normalizeOutputItem: (value: unknown, fallbackId: string) => OutputItem;
|
|
104
|
+
export declare const messageItemText: (item: MessageOutputItem) => string;
|
|
105
|
+
export {};
|
|
106
|
+
//# sourceMappingURL=items.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"items.d.ts","sourceRoot":"","sources":["../../../src/providers/openai-responses/items.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { SemanticResponseError } from "../kit/index.js";
|
|
2
|
+
import { isRecord } from "@arden-hq/std/json";
|
|
3
|
+
export const SYNTHETIC_OUTPUT_ID_PREFIX = "arden-synthetic-output-";
|
|
4
|
+
export const WEB_SEARCH_TOOL_NAME = "web_search";
|
|
5
|
+
export const TOOL_SEARCH_TOOL_NAME = "tool_search";
|
|
6
|
+
/** This provider's key in an assistant message's `provider_state`. */
|
|
7
|
+
export const PROVIDER_STATE_KEY = "openai-responses";
|
|
8
|
+
export const asRecord = (value) => isRecord(value) ? value : null;
|
|
9
|
+
export const stringValue = (value) => typeof value === "string" ? value : null;
|
|
10
|
+
const itemStatus = (value) => value === "in_progress" || value === "incomplete" ? value : "completed";
|
|
11
|
+
export const normalizeOutputItem = (value, fallbackId) => {
|
|
12
|
+
const raw = asRecord(value);
|
|
13
|
+
const type = raw === null ? null : stringValue(raw.type);
|
|
14
|
+
if (raw !== null && type === "message" && Array.isArray(raw.content)) {
|
|
15
|
+
const phase = raw.phase;
|
|
16
|
+
if (phase !== undefined &&
|
|
17
|
+
phase !== null &&
|
|
18
|
+
phase !== "commentary" &&
|
|
19
|
+
phase !== "final_answer") {
|
|
20
|
+
throw new SemanticResponseError("OpenAI returned an invalid message phase");
|
|
21
|
+
}
|
|
22
|
+
const content = raw.content.map((partValue) => {
|
|
23
|
+
const part = asRecord(partValue);
|
|
24
|
+
if (part?.type === "output_text" && typeof part.text === "string") {
|
|
25
|
+
return {
|
|
26
|
+
type: "output_text",
|
|
27
|
+
text: part.text,
|
|
28
|
+
annotations: Array.isArray(part.annotations) ? part.annotations : [],
|
|
29
|
+
logprobs: Array.isArray(part.logprobs) ? part.logprobs : []
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
if (part?.type === "refusal" && typeof part.refusal === "string") {
|
|
33
|
+
return { type: "refusal", refusal: part.refusal };
|
|
34
|
+
}
|
|
35
|
+
throw new SemanticResponseError("OpenAI returned invalid message content");
|
|
36
|
+
});
|
|
37
|
+
return {
|
|
38
|
+
id: stringValue(raw.id) ?? fallbackId,
|
|
39
|
+
type: "message",
|
|
40
|
+
role: "assistant",
|
|
41
|
+
content,
|
|
42
|
+
status: itemStatus(raw.status),
|
|
43
|
+
...(phase === undefined ? {} : { phase })
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
if (raw !== null && type === "reasoning") {
|
|
47
|
+
const summary = Array.isArray(raw.summary)
|
|
48
|
+
? raw.summary.map((partValue) => {
|
|
49
|
+
const part = asRecord(partValue);
|
|
50
|
+
if (part?.type !== "summary_text" || typeof part.text !== "string") {
|
|
51
|
+
throw new SemanticResponseError("OpenAI returned invalid reasoning summary content");
|
|
52
|
+
}
|
|
53
|
+
return { type: "summary_text", text: part.text };
|
|
54
|
+
})
|
|
55
|
+
: [];
|
|
56
|
+
const content = Array.isArray(raw.content)
|
|
57
|
+
? raw.content.map((partValue) => {
|
|
58
|
+
const part = asRecord(partValue);
|
|
59
|
+
if (part?.type !== "reasoning_text" || typeof part.text !== "string") {
|
|
60
|
+
throw new SemanticResponseError("OpenAI returned invalid reasoning content");
|
|
61
|
+
}
|
|
62
|
+
return { type: "reasoning_text", text: part.text };
|
|
63
|
+
})
|
|
64
|
+
: undefined;
|
|
65
|
+
return {
|
|
66
|
+
type: "reasoning",
|
|
67
|
+
id: stringValue(raw.id) ?? fallbackId,
|
|
68
|
+
...(typeof raw.encrypted_content === "string" || raw.encrypted_content === null
|
|
69
|
+
? { encrypted_content: raw.encrypted_content }
|
|
70
|
+
: {}),
|
|
71
|
+
summary,
|
|
72
|
+
...(content === undefined ? {} : { content }),
|
|
73
|
+
status: itemStatus(raw.status)
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
if (raw !== null &&
|
|
77
|
+
type === "function_call" &&
|
|
78
|
+
typeof raw.call_id === "string" &&
|
|
79
|
+
typeof raw.name === "string" &&
|
|
80
|
+
typeof raw.arguments === "string") {
|
|
81
|
+
return {
|
|
82
|
+
...(typeof raw.id === "string" ? { id: raw.id } : {}),
|
|
83
|
+
type: "function_call",
|
|
84
|
+
call_id: raw.call_id,
|
|
85
|
+
name: raw.name,
|
|
86
|
+
...(typeof raw.namespace === "string" ? { namespace: raw.namespace } : {}),
|
|
87
|
+
arguments: raw.arguments,
|
|
88
|
+
...(raw.async === true ? { async: true } : {}),
|
|
89
|
+
status: itemStatus(raw.status)
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
if (raw !== null &&
|
|
93
|
+
type === "tool_search_call" &&
|
|
94
|
+
typeof raw.execution === "string" &&
|
|
95
|
+
(typeof raw.call_id === "string" || raw.call_id === null || raw.call_id === undefined)) {
|
|
96
|
+
return {
|
|
97
|
+
id: stringValue(raw.id) ?? fallbackId,
|
|
98
|
+
type: "tool_search_call",
|
|
99
|
+
call_id: stringValue(raw.call_id),
|
|
100
|
+
execution: raw.execution,
|
|
101
|
+
arguments: raw.arguments ?? {},
|
|
102
|
+
status: itemStatus(raw.status)
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
if (raw !== null && type === "web_search_call") {
|
|
106
|
+
if (raw.action !== undefined && asRecord(raw.action) === null) {
|
|
107
|
+
throw new SemanticResponseError("OpenAI returned an invalid web search action");
|
|
108
|
+
}
|
|
109
|
+
return {
|
|
110
|
+
...raw,
|
|
111
|
+
id: stringValue(raw.id) ?? fallbackId,
|
|
112
|
+
type: "web_search_call",
|
|
113
|
+
status: itemStatus(raw.status),
|
|
114
|
+
...(raw.action === undefined ? {} : { action: raw.action })
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
if (type !== null) {
|
|
118
|
+
throw new SemanticResponseError(`OpenAI returned unsupported output item: ${type.slice(0, 128)}`);
|
|
119
|
+
}
|
|
120
|
+
throw new SemanticResponseError("OpenAI returned an invalid output item");
|
|
121
|
+
};
|
|
122
|
+
const partText = (part) => part.type === "output_text" ? part.text : part.refusal;
|
|
123
|
+
export const messageItemText = (item) => item.content.map(partText).join("");
|
|
124
|
+
//# sourceMappingURL=items.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"items.js","sourceRoot":"","sources":["../../../src/providers/openai-responses/items.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Responses backend rejects some valid JS patterns. Omit that assertion only
|
|
3
|
+
* on function parameters. Schema maps contain names; annotations contain opaque
|
|
4
|
+
* data. Neither may be treated as a recursively nested schema.
|
|
5
|
+
*
|
|
6
|
+
* Removing pattern can strengthen not/oneOf/conditionals/counts, including through
|
|
7
|
+
* recursive refs. A changed document deliberately widens those assertions at every
|
|
8
|
+
* schema node. Unsupported reference scopes use open object guidance instead.
|
|
9
|
+
*/
|
|
10
|
+
export declare const projectFunctionParameters: (parameters: Readonly<Record<string, unknown>>) => Readonly<Record<string, unknown>>;
|
|
11
|
+
//# sourceMappingURL=parameter-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parameter-schema.d.ts","sourceRoot":"","sources":["../../../src/providers/openai-responses/parameter-schema.ts"],"names":[],"mappings":"AA4DA;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB,eACxB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KAC5C,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAgDlC,CAAA"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { asRecord } from "./items.js";
|
|
2
|
+
const schemaMaps = new Set([
|
|
3
|
+
"properties",
|
|
4
|
+
"patternProperties",
|
|
5
|
+
"$defs",
|
|
6
|
+
"definitions",
|
|
7
|
+
"dependentSchemas"
|
|
8
|
+
]);
|
|
9
|
+
const schemaArrays = new Set(["allOf", "anyOf", "oneOf", "prefixItems"]);
|
|
10
|
+
const schemaValues = new Set([
|
|
11
|
+
"additionalProperties",
|
|
12
|
+
"additionalItems",
|
|
13
|
+
"propertyNames",
|
|
14
|
+
"contains",
|
|
15
|
+
"not",
|
|
16
|
+
"if",
|
|
17
|
+
"then",
|
|
18
|
+
"else",
|
|
19
|
+
"unevaluatedProperties",
|
|
20
|
+
"unevaluatedItems",
|
|
21
|
+
"contentSchema"
|
|
22
|
+
]);
|
|
23
|
+
const widened = new Set([
|
|
24
|
+
"pattern",
|
|
25
|
+
"not",
|
|
26
|
+
"if",
|
|
27
|
+
"then",
|
|
28
|
+
"else",
|
|
29
|
+
"contains",
|
|
30
|
+
"minContains",
|
|
31
|
+
"maxContains",
|
|
32
|
+
"unevaluatedProperties",
|
|
33
|
+
"unevaluatedItems"
|
|
34
|
+
]);
|
|
35
|
+
const unsupportedScopes = new Set([
|
|
36
|
+
"$id",
|
|
37
|
+
"id",
|
|
38
|
+
"$anchor",
|
|
39
|
+
"$dynamicRef",
|
|
40
|
+
"$dynamicAnchor",
|
|
41
|
+
"$recursiveRef",
|
|
42
|
+
"$recursiveAnchor",
|
|
43
|
+
"$vocabulary"
|
|
44
|
+
]);
|
|
45
|
+
const dialects = new Set([
|
|
46
|
+
"http://json-schema.org/draft-04/schema",
|
|
47
|
+
"http://json-schema.org/draft-06/schema",
|
|
48
|
+
"http://json-schema.org/draft-07/schema",
|
|
49
|
+
"https://json-schema.org/draft/2019-09/schema",
|
|
50
|
+
"https://json-schema.org/draft/2020-12/schema"
|
|
51
|
+
]);
|
|
52
|
+
/**
|
|
53
|
+
* The Responses backend rejects some valid JS patterns. Omit that assertion only
|
|
54
|
+
* on function parameters. Schema maps contain names; annotations contain opaque
|
|
55
|
+
* data. Neither may be treated as a recursively nested schema.
|
|
56
|
+
*
|
|
57
|
+
* Removing pattern can strengthen not/oneOf/conditionals/counts, including through
|
|
58
|
+
* recursive refs. A changed document deliberately widens those assertions at every
|
|
59
|
+
* schema node. Unsupported reference scopes use open object guidance instead.
|
|
60
|
+
*/
|
|
61
|
+
export const projectFunctionParameters = (parameters) => {
|
|
62
|
+
const nodes = [];
|
|
63
|
+
visit(parameters, "#", nodes);
|
|
64
|
+
if (!nodes.some(({ value }) => typeof value !== "boolean" && "pattern" in value))
|
|
65
|
+
return parameters;
|
|
66
|
+
const paths = new Set(nodes.map(({ path }) => path));
|
|
67
|
+
const references = [];
|
|
68
|
+
for (const { path, value } of nodes) {
|
|
69
|
+
if (typeof value === "boolean")
|
|
70
|
+
continue;
|
|
71
|
+
if (Object.keys(value).some((key) => unsupportedScopes.has(key)) ||
|
|
72
|
+
(value.$schema !== undefined &&
|
|
73
|
+
(typeof value.$schema !== "string" || !dialects.has(value.$schema.replace(/#$/u, "")))))
|
|
74
|
+
return openParameters();
|
|
75
|
+
if (value.$ref === undefined)
|
|
76
|
+
continue;
|
|
77
|
+
const target = localPointer(value.$ref);
|
|
78
|
+
if (target === undefined || !paths.has(target))
|
|
79
|
+
return openParameters();
|
|
80
|
+
references.push({ path, target });
|
|
81
|
+
}
|
|
82
|
+
const removed = nodes.flatMap(({ path, value }) => typeof value === "boolean"
|
|
83
|
+
? []
|
|
84
|
+
: Object.keys(value).flatMap((key) => widened.has(key) || key === "oneOf" ? [childPath(path, key)] : []));
|
|
85
|
+
const replaced = new Set();
|
|
86
|
+
// A ref into an omitted applicator becomes {} as a whole. Deleting only $ref
|
|
87
|
+
// could activate siblings ignored by older dialects. Its descendants disappear
|
|
88
|
+
// too, so close that finite set before building the provider copy.
|
|
89
|
+
let changed = true;
|
|
90
|
+
while (changed) {
|
|
91
|
+
changed = false;
|
|
92
|
+
for (const { path, target } of references) {
|
|
93
|
+
if (replaced.has(path))
|
|
94
|
+
continue;
|
|
95
|
+
if (removed.some((prefix) => target === prefix || target.startsWith(`${prefix}/`)) ||
|
|
96
|
+
[...replaced].some((prefix) => target.startsWith(`${prefix}/`))) {
|
|
97
|
+
replaced.add(path);
|
|
98
|
+
changed = true;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return replaced.has("#") ? openParameters() : project(parameters, "#", replaced);
|
|
103
|
+
};
|
|
104
|
+
const openParameters = () => ({
|
|
105
|
+
type: "object",
|
|
106
|
+
properties: {}
|
|
107
|
+
});
|
|
108
|
+
const childPath = (path, key) => `${path}/${key.replace(/~/gu, "~0").replace(/\//gu, "~1")}`;
|
|
109
|
+
const isSchema = (value) => typeof value === "boolean" || asRecord(value) !== null;
|
|
110
|
+
const children = (value, path) => Object.entries(value).flatMap(([key, child]) => {
|
|
111
|
+
const location = childPath(path, key);
|
|
112
|
+
if (schemaMaps.has(key) || key === "dependencies") {
|
|
113
|
+
const map = asRecord(child);
|
|
114
|
+
return map === null
|
|
115
|
+
? []
|
|
116
|
+
: Object.entries(map).flatMap(([name, schema]) => isSchema(schema) ? [{ path: childPath(location, name), value: schema }] : []);
|
|
117
|
+
}
|
|
118
|
+
if (schemaArrays.has(key) || (key === "items" && Array.isArray(child)))
|
|
119
|
+
return Array.isArray(child)
|
|
120
|
+
? child.flatMap((schema, index) => isSchema(schema) ? [{ path: childPath(location, String(index)), value: schema }] : [])
|
|
121
|
+
: [];
|
|
122
|
+
if (schemaValues.has(key) || key === "items")
|
|
123
|
+
return isSchema(child) ? [{ path: location, value: child }] : [];
|
|
124
|
+
return [];
|
|
125
|
+
});
|
|
126
|
+
const visit = (value, path, nodes) => {
|
|
127
|
+
nodes.push({ path, value });
|
|
128
|
+
if (typeof value === "boolean")
|
|
129
|
+
return;
|
|
130
|
+
for (const child of children(value, path))
|
|
131
|
+
visit(child.value, child.path, nodes);
|
|
132
|
+
};
|
|
133
|
+
const localPointer = (reference) => {
|
|
134
|
+
if (typeof reference !== "string" || !reference.startsWith("#"))
|
|
135
|
+
return undefined;
|
|
136
|
+
try {
|
|
137
|
+
const pointer = decodeURIComponent(reference.slice(1));
|
|
138
|
+
if (pointer === "")
|
|
139
|
+
return "#";
|
|
140
|
+
if (!pointer.startsWith("/") || /~(?:[^01]|$)/u.test(pointer))
|
|
141
|
+
return undefined;
|
|
142
|
+
return `#${pointer}`;
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
return undefined;
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
const project = (value, path, replaced) => {
|
|
149
|
+
if (replaced.has(path))
|
|
150
|
+
return {};
|
|
151
|
+
const projectedChildren = new Map(children(value, path).map((child) => [
|
|
152
|
+
child.path,
|
|
153
|
+
typeof child.value === "boolean" ? child.value : project(child.value, child.path, replaced)
|
|
154
|
+
]));
|
|
155
|
+
return Object.fromEntries(Object.entries(value).flatMap(([key, child]) => {
|
|
156
|
+
if (widened.has(key))
|
|
157
|
+
return [];
|
|
158
|
+
if (key === "oneOf" && "anyOf" in value)
|
|
159
|
+
return [];
|
|
160
|
+
const location = childPath(path, key);
|
|
161
|
+
const outputKey = key === "oneOf" ? "anyOf" : key;
|
|
162
|
+
if (schemaMaps.has(key) || key === "dependencies") {
|
|
163
|
+
const map = asRecord(child);
|
|
164
|
+
return [
|
|
165
|
+
[
|
|
166
|
+
outputKey,
|
|
167
|
+
map === null
|
|
168
|
+
? child
|
|
169
|
+
: Object.fromEntries(Object.entries(map).map(([name, schema]) => [
|
|
170
|
+
name,
|
|
171
|
+
projectedChildren.get(childPath(location, name)) ?? schema
|
|
172
|
+
]))
|
|
173
|
+
]
|
|
174
|
+
];
|
|
175
|
+
}
|
|
176
|
+
if (Array.isArray(child) && (schemaArrays.has(key) || key === "items"))
|
|
177
|
+
return [
|
|
178
|
+
[
|
|
179
|
+
outputKey,
|
|
180
|
+
child.map((schema, index) => projectedChildren.get(childPath(location, String(index))) ?? schema)
|
|
181
|
+
]
|
|
182
|
+
];
|
|
183
|
+
return [[outputKey, projectedChildren.get(location) ?? child]];
|
|
184
|
+
}));
|
|
185
|
+
};
|
|
186
|
+
//# sourceMappingURL=parameter-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parameter-schema.js","sourceRoot":"","sources":["../../../src/providers/openai-responses/parameter-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { type ConnectResponsesWebSocket } from "./websocket.js";
|
|
2
|
+
export type { ConnectResponsesWebSocket, ResponsesWebSocket } from "./websocket.js";
|
|
3
|
+
/**
|
|
4
|
+
* OpenAI Responses streaming provider over plain fetch. The host owns
|
|
5
|
+
* credentials: the factory only receives an `auth.headers()` broker (called
|
|
6
|
+
* once per connection attempt, with `forceRefresh` on the single pre-emission
|
|
7
|
+
* 401 retry), so tokens never enter the lib. Transport failures retry under
|
|
8
|
+
* the provider kit's bounded policy (D-123); event mapping and response-item
|
|
9
|
+
* history semantics are ported byte-for-byte from the previous Effect-based
|
|
10
|
+
* server provider.
|
|
11
|
+
*/
|
|
12
|
+
import type { ModelProvider } from "../../contracts/provider.js";
|
|
13
|
+
export { OpenAiResponsesProviderError, statusFailureCode } from "./errors.js";
|
|
14
|
+
export { makePayload, type ResponsesPayload } from "./request.js";
|
|
15
|
+
export interface OpenAiResponsesAuthHeadersOptions {
|
|
16
|
+
readonly signal: AbortSignal;
|
|
17
|
+
readonly forceRefresh?: boolean;
|
|
18
|
+
}
|
|
19
|
+
/** Host-owned credential broker: returns the full auth header set per attempt. */
|
|
20
|
+
export interface OpenAiResponsesAuth {
|
|
21
|
+
readonly headers: (options: OpenAiResponsesAuthHeadersOptions) => Promise<Record<string, string>>;
|
|
22
|
+
}
|
|
23
|
+
export interface OpenAiResponsesProviderOptions {
|
|
24
|
+
readonly connectWebSocket?: ConnectResponsesWebSocket;
|
|
25
|
+
/** Adapter-local route policy, independent of async tools and steering. Defaults to SSE. */
|
|
26
|
+
readonly transport?: (model: string) => "sse" | "websocket";
|
|
27
|
+
/**
|
|
28
|
+
* The host's capability table for its routes. Without one, every model gets
|
|
29
|
+
* hosted web search, native structured output, portable async tools, and
|
|
30
|
+
* boundary steering; native async and steering are opt-in per verified route.
|
|
31
|
+
*/
|
|
32
|
+
readonly capabilities?: ModelProvider["capabilities"];
|
|
33
|
+
readonly auth: OpenAiResponsesAuth;
|
|
34
|
+
readonly fetch?: typeof globalThis.fetch;
|
|
35
|
+
readonly baseUrl?: string;
|
|
36
|
+
/** Maximum silence between SSE reads before the idle transport retry. */
|
|
37
|
+
readonly idleTimeoutMs?: number;
|
|
38
|
+
/** Total connection attempts per request, including the first (default 5). */
|
|
39
|
+
readonly maxAttempts?: number;
|
|
40
|
+
/** Optional host-owned catalog prefix that the upstream API does not accept. */
|
|
41
|
+
readonly modelPrefix?: string;
|
|
42
|
+
/** Instructions used only when the request history has no system message. */
|
|
43
|
+
readonly defaultInstructions?: string;
|
|
44
|
+
/** Omit the Responses API token-limit field for endpoints that reject it. */
|
|
45
|
+
readonly omitMaxOutputTokens?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Request header that also carries the request's `cacheScope`, for routes
|
|
48
|
+
* that pick the cache by header rather than by `prompt_cache_key`. The
|
|
49
|
+
* ChatGPT Codex backend reads `session-id`.
|
|
50
|
+
*/
|
|
51
|
+
readonly cacheScopeHeader?: string;
|
|
52
|
+
}
|
|
53
|
+
export declare const makeOpenAiResponsesProvider: (options: OpenAiResponsesProviderOptions) => ModelProvider;
|
|
54
|
+
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/providers/openai-responses/provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,KAAK,yBAAyB,EAAE,MAAM,gBAAgB,CAAA;AACrF,YAAY,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACnF;;;;;;;;GAQG;AACH,OAAO,KAAK,EAEV,aAAa,EAGd,MAAM,6BAA6B,CAAA;AAmBpC,OAAO,EAAE,4BAA4B,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC7E,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAEjE,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAChC;AAED,kFAAkF;AAClF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,iCAAiC,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAClG;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IACrD,4FAA4F;IAC5F,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,KAAK,GAAG,WAAW,CAAA;IAC3D;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAA;IACrD,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAA;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;IACxC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,yEAAyE;IACzE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B,8EAA8E;IAC9E,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,gFAAgF;IAChF,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,6EAA6E;IAC7E,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IACrC,6EAA6E;IAC7E,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CACnC;AA6ND,eAAO,MAAM,2BAA2B,YAC7B,8BAA8B,KACtC,aA+DF,CAAA"}
|