@openclaw/ai 2026.9.1 → 2026.9.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/dist/{anthropic-hk7F7ptG.mjs → anthropic-BDdqdVLK.mjs} +208 -205
- package/dist/{anthropic-compaction-replay-OMJZ0uyo.mjs → anthropic-compaction-replay-DB2FGLQc.mjs} +130 -41
- package/dist/{anthropic-payload-policy-DBT1itQ-.d.mts → anthropic-payload-policy-d46X2pR0.d.mts} +27 -3
- package/dist/{api-registry-Cs6HGNqY.d.mts → api-registry-DWtPjzyn.d.mts} +2 -2
- package/dist/{azure-openai-responses-CN4Fy5zV.mjs → azure-openai-responses-C5bZRfAP.mjs} +5 -5
- package/dist/{diagnostics-KhXK-QJI.mjs → diagnostics-DfFyKeX_.mjs} +1 -1
- package/dist/diagnostics.mjs +2 -2
- package/dist/{event-stream-uSMZJ3FA.mjs → event-stream-BgDvQeum.mjs} +3 -9
- package/dist/{event-stream-vK_7r3bj.d.mts → event-stream-BhT5T1Ay.d.mts} +1 -1
- package/dist/event-stream-zctLx0yr.d.mts +1 -0
- package/dist/event-stream.d.mts +2 -2
- package/dist/event-stream.mjs +1 -1
- package/dist/{google-CC-nrwXg.mjs → google-4qeuE8iX.mjs} +4 -4
- package/dist/{google-shared-CjPY0hZM.mjs → google-shared-CWeG8RIl.mjs} +7 -5
- package/dist/{google-vertex-DCr0pyzQ.mjs → google-vertex-O9BcnB6X.mjs} +4 -4
- package/dist/{host-BIaiBURL.mjs → host-CEvLw30U.mjs} +54 -9
- package/dist/{host-BztR4tQj.d.mts → host-DjzGmdZ2.d.mts} +3 -3
- package/dist/{index-AfaxKT8w.d.mts → index-FnHM2FcI.d.mts} +11 -5
- package/dist/index.d.mts +7 -7
- package/dist/index.mjs +4 -4
- package/dist/internal/anthropic.d.mts +12 -9
- package/dist/internal/anthropic.mjs +5 -5
- package/dist/internal/openai-responses-payload-policy.d.mts +1 -1
- package/dist/internal/openai-responses-payload-policy.mjs +1 -1
- package/dist/internal/openai.d.mts +7 -7
- package/dist/internal/openai.mjs +10 -10
- package/dist/internal/runtime.d.mts +5 -5
- package/dist/internal/runtime.mjs +3 -3
- package/dist/internal/shared.d.mts +2 -2
- package/dist/internal/shared.mjs +3 -3
- package/dist/{mistral-B7etBd_H.mjs → mistral-Tb6oalqH.mjs} +10 -8
- package/dist/{openai-chatgpt-responses-BAJ4gq3i.mjs → openai-chatgpt-responses-yUXjPNfu.mjs} +26 -28
- package/dist/{openai-completions-D0QZ0AyB.mjs → openai-completions-BIUV3RDT.mjs} +8 -8
- package/dist/{openai-completions-compat-4IjSBpr6.d.mts → openai-completions-compat-CpjYUArk.d.mts} +3 -3
- package/dist/{openai-completions-stream-DZjwK8vp.mjs → openai-completions-stream-BsrBe3Gg.mjs} +16 -16
- package/dist/openai-prompt-cache-CGnVB74a.mjs +21 -0
- package/dist/openai-prompt-cache-CNoIfHYC.d.mts +16 -0
- package/dist/{openai-responses-BEUlxfDu.mjs → openai-responses-CCL41ALM.mjs} +8 -11
- package/dist/{openai-responses-compaction-window-DO7yV7az.mjs → openai-responses-compaction-window-BMVHFOtq.mjs} +18 -7
- package/dist/{openai-responses-contracts-bPzSN_Ba.d.mts → openai-responses-contracts-rF5DDRNS.d.mts} +12 -4
- package/dist/{openai-responses-prompt-observer-internal-C7x4IK7r.mjs → openai-responses-prompt-observer-internal-D0bhBfgL.mjs} +3 -3
- package/dist/{openai-responses-shared-DiAdpNAM.mjs → openai-responses-shared-Bmma_3Qc.mjs} +185 -109
- package/dist/{openai-tool-schema-BMiHFH36.mjs → openai-tool-schema-_pTAJqKF.mjs} +20 -32
- package/dist/{provider-error-B6EGq6gg.mjs → provider-error-9TraxGvt.mjs} +6 -7
- package/dist/{provider-options-CxFPtvh7.d.mts → provider-options-Bcc_p-TU.d.mts} +18 -6
- package/dist/provider-replay-context-BuSUaAk5.mjs +21 -0
- package/dist/{provider-transcript-transform-WvJmFUAf.mjs → provider-transcript-transform-BaMbI1hr.mjs} +1 -1
- package/dist/provider-types.d.mts +6 -6
- package/dist/providers.d.mts +2 -2
- package/dist/providers.mjs +11 -11
- package/dist/{reasoning-tag-text-partitioner-C-4uedDb.mjs → reasoning-tag-text-partitioner-DLCNXki6.mjs} +72 -24
- package/dist/{sanitize-unicode-S6binQG-.mjs → sanitize-unicode-D6xUvZaS.mjs} +1 -1
- package/dist/{simple-options-0PLDyJ-d.mjs → simple-options-BjHCCh4v.mjs} +2 -2
- package/dist/{src-C8U7lkoa.mjs → src-2qBGKg8O.mjs} +9 -1
- package/dist/{tool-schema-json-projection-BtZiml7r.mjs → tool-schema-json-projection-mJhXDcyz.mjs} +1 -1
- package/dist/{transport-stream-shared-CytPVLIg.mjs → transport-stream-shared-CZqMhfIw.mjs} +4 -4
- package/dist/{transport-stream-shared-BrvFTkoO.d.mts → transport-stream-shared-xnaqxmbP.d.mts} +4 -4
- package/dist/{transport-utils-CtuS1Upe.mjs → transport-utils-7il795_9.mjs} +1 -1
- package/dist/transports.d.mts +11 -10
- package/dist/transports.mjs +567 -253
- package/dist/types-3Lnm-QSJ.d.mts +1 -0
- package/dist/{types-DbrhszyQ.d.mts → types-CJ1-Ht7A.d.mts} +29 -7
- package/dist/types.d.mts +6 -6
- package/dist/types.mjs +3 -3
- package/dist/{validation-BOwtcl9X.d.mts → validation-AKZBDGQd.d.mts} +1 -1
- package/dist/validation.d.mts +1 -1
- package/package.json +2 -2
- package/dist/event-stream-DeDhbCc5.d.mts +0 -1
- package/dist/openai-prompt-cache-2uo_1OR1.d.mts +0 -7
- package/dist/openai-prompt-cache-mZTCdRPo.mjs +0 -12
- package/dist/types-B5EFUmXs.d.mts +0 -1
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
//#region packages/ai/src/providers/openai-prompt-cache.ts
|
|
2
|
+
/** Selects the documented cache lifetime fields for a Responses request. */
|
|
3
|
+
function resolveOpenAIResponsesCacheParams(model, cacheRetention, supportsLongCacheRetention) {
|
|
4
|
+
if (cacheRetention === "none") return {};
|
|
5
|
+
if (model.id === "gpt-6-astra" && model.api === "openai-responses") {
|
|
6
|
+
const endpoint = URL.parse(model.baseUrl ?? "https://api.openai.com/v1");
|
|
7
|
+
if (endpoint?.protocol === "https:" && (endpoint.hostname === "api.openai.com" || endpoint.hostname.endsWith(".api.openai.com"))) return { prompt_cache_options: { ttl: "30m" } };
|
|
8
|
+
}
|
|
9
|
+
return cacheRetention === "long" && supportsLongCacheRetention ? { prompt_cache_retention: "24h" } : {};
|
|
10
|
+
}
|
|
11
|
+
/** Maximum prompt cache key length accepted by OpenAI-compatible request metadata. */
|
|
12
|
+
const OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH = 64;
|
|
13
|
+
/** Truncates a prompt cache key by Unicode code point count. */
|
|
14
|
+
function clampOpenAIPromptCacheKey(key) {
|
|
15
|
+
if (key === void 0) return;
|
|
16
|
+
const chars = Array.from(key);
|
|
17
|
+
if (chars.length <= 64) return key;
|
|
18
|
+
return chars.slice(0, 64).join("");
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
export { clampOpenAIPromptCacheKey as n, resolveOpenAIResponsesCacheParams as r, OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH as t };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { D as Model, l as CacheRetention } from "./types-CJ1-Ht7A.mjs";
|
|
2
|
+
import "./types-3Lnm-QSJ.mjs";
|
|
3
|
+
//#region packages/ai/src/providers/openai-prompt-cache.d.ts
|
|
4
|
+
/** Selects the documented cache lifetime fields for a Responses request. */
|
|
5
|
+
declare function resolveOpenAIResponsesCacheParams(model: Pick<Model, "id" | "api" | "baseUrl">, cacheRetention: CacheRetention, supportsLongCacheRetention: boolean): {
|
|
6
|
+
prompt_cache_retention?: "24h";
|
|
7
|
+
prompt_cache_options?: {
|
|
8
|
+
ttl: "30m";
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
/** Maximum prompt cache key length accepted by OpenAI-compatible request metadata. */
|
|
12
|
+
declare const OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH = 64;
|
|
13
|
+
/** Truncates a prompt cache key by Unicode code point count. */
|
|
14
|
+
declare function clampOpenAIPromptCacheKey(key: string | undefined): string | undefined;
|
|
15
|
+
//#endregion
|
|
16
|
+
export { clampOpenAIPromptCacheKey as n, resolveOpenAIResponsesCacheParams as r, OPENAI_PROMPT_CACHE_KEY_MAX_LENGTH as t };
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-BhDjJH2R.mjs";
|
|
2
|
-
import { t as AssistantMessageEventStream } from "./event-stream-
|
|
3
|
-
import { n as getAiTransportHost } from "./host-
|
|
4
|
-
import { n as clampOpenAIPromptCacheKey } from "./openai-prompt-cache-
|
|
2
|
+
import { t as AssistantMessageEventStream } from "./event-stream-BgDvQeum.mjs";
|
|
3
|
+
import { n as getAiTransportHost } from "./host-CEvLw30U.mjs";
|
|
4
|
+
import { n as clampOpenAIPromptCacheKey, r as resolveOpenAIResponsesCacheParams } from "./openai-prompt-cache-CGnVB74a.mjs";
|
|
5
5
|
import { t as resolveCacheRetention } from "./cache-retention-0x979a5V.mjs";
|
|
6
|
-
import { n as buildBaseOptions } from "./simple-options-
|
|
6
|
+
import { n as buildBaseOptions } from "./simple-options-BjHCCh4v.mjs";
|
|
7
7
|
import { n as getEnvApiKey } from "./env-api-keys-bktO00EJ.mjs";
|
|
8
|
-
import { a as resolveResponsesReasoningEffort, i as createResponsesAssistantOutput, n as applyResponsesServiceTierPricing,
|
|
9
|
-
import { j as resolveOpenAIClientBaseUrl } from "./openai-tool-schema-
|
|
10
|
-
import {
|
|
8
|
+
import { a as resolveResponsesReasoningEffort, i as createResponsesAssistantOutput, n as applyResponsesServiceTierPricing, r as convertResponsesMessages, s as runResponsesStreamLifecycle, t as applyCommonResponsesParams } from "./openai-responses-shared-Bmma_3Qc.mjs";
|
|
9
|
+
import { j as resolveOpenAIClientBaseUrl } from "./openai-tool-schema-_pTAJqKF.mjs";
|
|
10
|
+
import { j as supportsOpenAITemperature } from "./openai-responses-compaction-window-BMVHFOtq.mjs";
|
|
11
11
|
import { i as resolveCloudflareBaseUrl, n as hasCopilotVisionInput, r as isCloudflareProvider, t as buildCopilotDynamicHeaders } from "./github-copilot-headers-NCJtz9i0.mjs";
|
|
12
12
|
import OpenAI from "openai";
|
|
13
13
|
//#region packages/ai/src/providers/openai-responses.ts
|
|
@@ -22,9 +22,6 @@ function getCompat(model) {
|
|
|
22
22
|
supportsLongCacheRetention: model.compat?.supportsLongCacheRetention ?? true
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
|
-
function getPromptCacheRetention(compat, cacheRetention) {
|
|
26
|
-
return cacheRetention === "long" && compat.supportsLongCacheRetention ? "24h" : void 0;
|
|
27
|
-
}
|
|
28
25
|
/**
|
|
29
26
|
* Generate function for OpenAI Responses API
|
|
30
27
|
*/
|
|
@@ -107,7 +104,7 @@ function buildParams(model, context, options, replayMode = "checkpoint") {
|
|
|
107
104
|
input: messages,
|
|
108
105
|
stream: true,
|
|
109
106
|
prompt_cache_key: cacheRetention === "none" ? void 0 : clampOpenAIPromptCacheKey(options?.promptCacheKey ?? options?.sessionId),
|
|
110
|
-
|
|
107
|
+
...resolveOpenAIResponsesCacheParams(model, cacheRetention, compat.supportsLongCacheRetention),
|
|
111
108
|
store: false
|
|
112
109
|
};
|
|
113
110
|
if (options?.maxTokens) params.max_output_tokens = options?.maxTokens;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import "./src-
|
|
1
|
+
import "./src-2qBGKg8O.mjs";
|
|
2
2
|
import { n as PROVIDER_POST_DISPATCH_AMBIGUITY_ERROR_CODE } from "./types-BDdaOVi2.mjs";
|
|
3
3
|
import { c as normalizeLowercaseStringOrEmpty, o as isRecord, p as readStringValue, u as normalizeOptionalLowercaseString } from "./utf16-slice-qz3nsy87.mjs";
|
|
4
4
|
import { t as canonicalizeBase64 } from "./base64-CEFBpSkN.mjs";
|
|
5
5
|
import { n as uniqueStrings, t as normalizeStringEntries } from "./string-normalization--fwJ4S2q.mjs";
|
|
6
|
-
import { s as parsePositiveInteger } from "./transport-utils-
|
|
6
|
+
import { s as parsePositiveInteger } from "./transport-utils-7il795_9.mjs";
|
|
7
7
|
import { t as createSseByteGuard } from "./streaming-byte-guard-CC-HMn_u.mjs";
|
|
8
8
|
//#region packages/ai/src/providers/openai-reasoning-effort.ts
|
|
9
9
|
/**
|
|
@@ -38,6 +38,13 @@ const GPT_56_REASONING_EFFORTS = [
|
|
|
38
38
|
"xhigh",
|
|
39
39
|
"max"
|
|
40
40
|
];
|
|
41
|
+
const GPT_6_ASTRA_REASONING_EFFORTS = [
|
|
42
|
+
"low",
|
|
43
|
+
"medium",
|
|
44
|
+
"high",
|
|
45
|
+
"xhigh",
|
|
46
|
+
"max"
|
|
47
|
+
];
|
|
41
48
|
const GPT_CODEX_REASONING_EFFORTS = [
|
|
42
49
|
"low",
|
|
43
50
|
"medium",
|
|
@@ -111,9 +118,14 @@ function isDisabledReasoningEffort(effort) {
|
|
|
111
118
|
}
|
|
112
119
|
/** Resolve the reasoning efforts accepted by a specific OpenAI-compatible model. */
|
|
113
120
|
function resolveOpenAISupportedReasoningEfforts(model) {
|
|
121
|
+
return resolveOpenAIModelReasoningEfforts(model) ?? GENERIC_REASONING_EFFORTS;
|
|
122
|
+
}
|
|
123
|
+
/** Read a declared or known model contract, leaving unknown compatible models unspecified. */
|
|
124
|
+
function resolveOpenAIModelReasoningEfforts(model) {
|
|
114
125
|
const compatEfforts = readCompatReasoningEfforts(model.compat);
|
|
115
126
|
if (compatEfforts) return compatEfforts;
|
|
116
127
|
const id = normalizeModelId(typeof model.id === "string" ? model.id : void 0);
|
|
128
|
+
if (id === "gpt-6-astra" && model.api !== "azure-openai-responses") return GPT_6_ASTRA_REASONING_EFFORTS;
|
|
117
129
|
if (/^gpt-5\.6(?:-|$)/u.test(id)) return GPT_56_REASONING_EFFORTS;
|
|
118
130
|
if (id === "gpt-5.1-codex-mini") return GPT_51_CODEX_MINI_REASONING_EFFORTS;
|
|
119
131
|
if (id === "gpt-5.1-codex-max") return GPT_51_CODEX_MAX_REASONING_EFFORTS;
|
|
@@ -123,11 +135,10 @@ function resolveOpenAISupportedReasoningEfforts(model) {
|
|
|
123
135
|
if (/^gpt-5\.[2-9](?:\.\d+)?(?:-|$)/u.test(id)) return GPT_52_REASONING_EFFORTS;
|
|
124
136
|
if (/^gpt-5\.1(?:-|$)/u.test(id)) return GPT_51_REASONING_EFFORTS;
|
|
125
137
|
if (/^gpt-5(?:-|$)/u.test(id)) return GPT_5_REASONING_EFFORTS;
|
|
126
|
-
return GENERIC_REASONING_EFFORTS;
|
|
127
138
|
}
|
|
128
139
|
/**
|
|
129
|
-
* Return whether a model accepts
|
|
130
|
-
*
|
|
140
|
+
* Return whether a model accepts temperature. GPT-5.6 and GPT-6 Astra
|
|
141
|
+
* reject it with a 400; catalog compat can override per model.
|
|
131
142
|
*/
|
|
132
143
|
function supportsOpenAITemperature(model) {
|
|
133
144
|
const compat = model.compat;
|
|
@@ -136,7 +147,7 @@ function supportsOpenAITemperature(model) {
|
|
|
136
147
|
if (typeof declared === "boolean") return declared;
|
|
137
148
|
}
|
|
138
149
|
const id = normalizeModelId(typeof model.id === "string" ? model.id : void 0);
|
|
139
|
-
return !/^gpt-5\.6(?:-|$)/u.test(id);
|
|
150
|
+
return (id !== "gpt-6-astra" || model.api === "azure-openai-responses") && !/^gpt-5\.6(?:-|$)/u.test(id);
|
|
140
151
|
}
|
|
141
152
|
/** Return whether a model accepts a requested reasoning effort. */
|
|
142
153
|
function supportsOpenAIReasoningEffort(model, effort) {
|
|
@@ -683,4 +694,4 @@ function createBoundedOpenAIResponsesCompactionFetch(upstreamFetch) {
|
|
|
683
694
|
};
|
|
684
695
|
}
|
|
685
696
|
//#endregion
|
|
686
|
-
export {
|
|
697
|
+
export { supportsOpenAIReasoningEffort as A, isOpenAIGpt54MiniModel as C, resolveOpenAIModelReasoningEfforts as D, normalizeOpenAIReasoningEffort as E, resolveOpenAIReasoningEffortForModel as O, responsesPromptObserver as S, isOpenAIGpt56Model as T, OpenAIResponsesWebSocketPostDispatchError as _, applyOpenAIResponsesPayloadPolicy as a, RESPONSE_FAILED_NO_DETAILS_MESSAGE as b, resolveOpenAIResponsesServerCompactionPlan as c, OPENAI_CODEX_RESPONSES_DEFAULT_INSTRUCTIONS as d, OPENAI_RESPONSES_APIS as f, OPENAI_RESPONSES_RETAINED_COMPACTION_REPLAY_TYPE as g, OPENAI_RESPONSES_REASONING_REPLAY_META_KEY as h, sanitizeResponsesImagePayload as i, supportsOpenAITemperature as j, resolveOpenAISupportedReasoningEfforts as k, AZURE_RESPONSES_FIRST_EVENT_TIMEOUT_MS as l, OPENAI_RESPONSES_REASONING_REPLAY_BLOCK_META_KEY as m, isOpenAIResponsesCompactionOutput as n, resolveOpenAIResponsesCompactEndpointPlan as o, OPENAI_RESPONSES_COMPACTION_REPLAY_TYPE as p, readOpenAIResponsesCompactionWindow as r, resolveOpenAIResponsesPayloadPolicy as s, createBoundedOpenAIResponsesCompactionFetch as t, DEFAULT_AZURE_OPENAI_API_VERSION as u, OpenAIResponsesWebSocketPreDispatchError as v, isOpenAIGpt55Model as w, parseOpenAIResponsesWebSocketServerError as x, OpenAIResponsesWebSocketSafeRetryError as y };
|
package/dist/{openai-responses-contracts-bPzSN_Ba.d.mts → openai-responses-contracts-rF5DDRNS.d.mts}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import "./index-
|
|
2
|
-
import { D as Model, n as Api } from "./types-
|
|
3
|
-
import {
|
|
1
|
+
import "./index-FnHM2FcI.mjs";
|
|
2
|
+
import { D as Model, n as Api } from "./types-CJ1-Ht7A.mjs";
|
|
3
|
+
import { _ as OpenAIReasoningEffort, a as BaseOpenAIStreamOptions, g as OpenAIApiReasoningEffort } from "./provider-options-Bcc_p-TU.mjs";
|
|
4
4
|
import { FunctionTool, ResponseCompactionItem, ResponseCreateParamsStreaming, ResponseInput, ResponseInputItem } from "openai/resources/responses/responses.js";
|
|
5
5
|
//#region packages/ai/src/transports/openai-responses-compaction-window.d.ts
|
|
6
6
|
type OpenAIResponsesCompactionOutput = Array<ResponseInputItem.Message | ReplayableResponseCompactionItem>;
|
|
@@ -55,6 +55,9 @@ type OpenAIResponsesRequestParams = {
|
|
|
55
55
|
instructions?: string;
|
|
56
56
|
prompt_cache_key?: string;
|
|
57
57
|
prompt_cache_retention?: "24h";
|
|
58
|
+
prompt_cache_options?: {
|
|
59
|
+
ttl: "30m";
|
|
60
|
+
};
|
|
58
61
|
metadata?: Record<string, string>;
|
|
59
62
|
previous_response_id?: string;
|
|
60
63
|
store?: boolean;
|
|
@@ -63,7 +66,12 @@ type OpenAIResponsesRequestParams = {
|
|
|
63
66
|
top_p?: number;
|
|
64
67
|
text?: ResponseCreateParamsStreaming["text"];
|
|
65
68
|
service_tier?: ResponseCreateParamsStreaming["service_tier"];
|
|
66
|
-
tools?: FunctionTool
|
|
69
|
+
tools?: Array<FunctionTool & {
|
|
70
|
+
async?: boolean;
|
|
71
|
+
}>;
|
|
72
|
+
multi_agent?: {
|
|
73
|
+
enabled?: boolean;
|
|
74
|
+
};
|
|
67
75
|
tool_choice?: ResponseCreateParamsStreaming["tool_choice"];
|
|
68
76
|
reasoning?: {
|
|
69
77
|
effort: OpenAIApiReasoningEffort;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { d as stripSystemPromptCacheBoundary } from "./simple-options-
|
|
2
|
-
import { g as sanitizeTransportPayloadText } from "./transport-stream-shared-
|
|
3
|
-
import { S as responsesPromptObserver } from "./openai-responses-compaction-window-
|
|
1
|
+
import { d as stripSystemPromptCacheBoundary } from "./simple-options-BjHCCh4v.mjs";
|
|
2
|
+
import { g as sanitizeTransportPayloadText } from "./transport-stream-shared-CZqMhfIw.mjs";
|
|
3
|
+
import { S as responsesPromptObserver } from "./openai-responses-compaction-window-BMVHFOtq.mjs";
|
|
4
4
|
//#region packages/ai/src/transports/openai-responses-prompt-observer-internal.ts
|
|
5
5
|
function readFinalResponsesPrompt(request) {
|
|
6
6
|
if (typeof request.instructions === "string") return ["instructions", request.instructions];
|