@particle-academy/prism 0.2.1 → 0.4.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 +8 -1
- package/dist/errors.d.ts +10 -2
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +9 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/public-url.d.ts +10 -0
- package/dist/internal/public-url.d.ts.map +1 -0
- package/dist/internal/public-url.js +103 -0
- package/dist/internal/public-url.js.map +1 -0
- package/dist/providers/anthropic/maps/message-map.d.ts.map +1 -1
- package/dist/providers/anthropic/maps/message-map.js +12 -1
- package/dist/providers/anthropic/maps/message-map.js.map +1 -1
- package/dist/providers/anthropic/parse-response.d.ts.map +1 -1
- package/dist/providers/anthropic/parse-response.js +12 -4
- package/dist/providers/anthropic/parse-response.js.map +1 -1
- package/dist/providers/anthropic/replay.d.ts +7 -0
- package/dist/providers/anthropic/replay.d.ts.map +1 -0
- package/dist/providers/anthropic/replay.js +37 -0
- package/dist/providers/anthropic/replay.js.map +1 -0
- package/dist/providers/openai/maps/message-map.d.ts.map +1 -1
- package/dist/providers/openai/maps/message-map.js +6 -0
- package/dist/providers/openai/maps/message-map.js.map +1 -1
- package/dist/providers/openai/parse-response.d.ts.map +1 -1
- package/dist/providers/openai/parse-response.js +3 -0
- package/dist/providers/openai/parse-response.js.map +1 -1
- package/dist/providers/openai/replay.d.ts +6 -0
- package/dist/providers/openai/replay.d.ts.map +1 -0
- package/dist/providers/openai/replay.js +25 -0
- package/dist/providers/openai/replay.js.map +1 -0
- package/dist/providers/openai/structured-mode-resolver.d.ts.map +1 -1
- package/dist/providers/openai/structured-mode-resolver.js +21 -6
- package/dist/providers/openai/structured-mode-resolver.js.map +1 -1
- package/dist/value-objects/media/media.d.ts +17 -0
- package/dist/value-objects/media/media.d.ts.map +1 -1
- package/dist/value-objects/media/media.js +93 -1
- package/dist/value-objects/media/media.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -14,6 +14,13 @@ wire, and what comes back, is identical.
|
|
|
14
14
|
|
|
15
15
|
## Scope
|
|
16
16
|
|
|
17
|
+
Stored assistant messages retain provider replay state in `additionalContent`:
|
|
18
|
+
OpenAI Responses uses `output_items`; Anthropic uses ordered `content_blocks`,
|
|
19
|
+
with `thinking_blocks` as a fallback. Keep that metadata when sending history
|
|
20
|
+
back. Signatures, redacted thinking and encrypted reasoning remain opaque and
|
|
21
|
+
unchanged; avoid logging these values. The legacy thinking/signature pair still
|
|
22
|
+
works when full replay metadata is absent.
|
|
23
|
+
|
|
17
24
|
**Every capability the reference has**, and three of its eighteen providers.
|
|
18
25
|
That is the shape of the remaining drift: one axis, not two.
|
|
19
26
|
|
|
@@ -53,7 +60,7 @@ contract and will change; the code will not.
|
|
|
53
60
|
npm install @particle-academy/prism
|
|
54
61
|
```
|
|
55
62
|
|
|
56
|
-
Node
|
|
63
|
+
Node 22 or newer.
|
|
57
64
|
|
|
58
65
|
## Usage
|
|
59
66
|
|
package/dist/errors.d.ts
CHANGED
|
@@ -7,9 +7,12 @@
|
|
|
7
7
|
* code is the contract and the message is not: treat `PrismError.code` as
|
|
8
8
|
* stable and `PrismError.message` as free to change in any release.
|
|
9
9
|
*/
|
|
10
|
-
export type
|
|
10
|
+
export type UrlRefusalCode = 'scheme_not_allowed' | 'private_address_refused' | 'host_did_not_resolve' | 'redirect_refused' | 'too_many_redirects'
|
|
11
|
+
/** The answer was larger than `maxBytes` (G-90). */
|
|
12
|
+
| 'media_too_large';
|
|
13
|
+
export type PrismErrorCode = UrlRefusalCode
|
|
11
14
|
/** `prompt` and `messages` were both set on the same pending request. */
|
|
12
|
-
'prompt_and_messages'
|
|
15
|
+
| 'prompt_and_messages'
|
|
13
16
|
/** The provider stopped because it ran out of output tokens. */
|
|
14
17
|
| 'max_tokens_exceeded'
|
|
15
18
|
/** The provider returned a payload that is missing, empty or carries an error. */
|
|
@@ -116,4 +119,9 @@ export declare class PrismError extends Error {
|
|
|
116
119
|
static toolLoopNotSupported(): PrismError;
|
|
117
120
|
static canonicalJsonUnencodable(path: string, value: unknown): PrismError;
|
|
118
121
|
}
|
|
122
|
+
/** A public-media fetch refusal; the code is stable and the message is not. */
|
|
123
|
+
export declare class PrismUrlRefused extends PrismError {
|
|
124
|
+
readonly code: UrlRefusalCode;
|
|
125
|
+
constructor(code: UrlRefusalCode, message: string);
|
|
126
|
+
}
|
|
119
127
|
//# sourceMappingURL=errors.d.ts.map
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,MAAM,cAAc;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.js
CHANGED
|
@@ -112,4 +112,13 @@ export class PrismError extends Error {
|
|
|
112
112
|
return new PrismError('canonical_json_unencodable', `Cannot canonically encode ${typeof value} at ${path}: JSON.stringify would drop or rewrite it. Use an explicit null if the key should carry null, or omit the key entirely.`);
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
|
+
/** A public-media fetch refusal; the code is stable and the message is not. */
|
|
116
|
+
export class PrismUrlRefused extends PrismError {
|
|
117
|
+
code;
|
|
118
|
+
constructor(code, message) {
|
|
119
|
+
super(code, message);
|
|
120
|
+
this.code = code;
|
|
121
|
+
this.name = 'PrismUrlRefused';
|
|
122
|
+
}
|
|
123
|
+
}
|
|
115
124
|
//# sourceMappingURL=errors.js.map
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { Prism } from './prism.js';
|
|
2
|
-
export { PrismError } from './errors.js';
|
|
3
|
-
export type { PrismErrorCode, PrismErrorOptions } from './errors.js';
|
|
2
|
+
export { PrismError, PrismUrlRefused } from './errors.js';
|
|
3
|
+
export type { PrismErrorCode, PrismErrorOptions, UrlRefusalCode } from './errors.js';
|
|
4
4
|
export { FinishReason, StructuredMode, ToolChoice, finishReasonFromValue, toolChoiceFromName } from './enums.js';
|
|
5
5
|
export { Tool } from './tool.js';
|
|
6
6
|
export type { ToolHandler } from './tool.js';
|
|
@@ -25,6 +25,7 @@ export type { ProviderFactory } from './providers/registry.js';
|
|
|
25
25
|
export { OpenAI } from './providers/openai/openai.js';
|
|
26
26
|
export type { OpenAIConfig } from './providers/openai/openai.js';
|
|
27
27
|
export { buildRequestBody, buildTools } from './providers/openai/build-request-body.js';
|
|
28
|
+
export { buildRequestBody as buildAnthropicRequestBody } from './providers/anthropic/build-request-body.js';
|
|
28
29
|
export { parseTextResponse } from './providers/openai/parse-response.js';
|
|
29
30
|
export { parseTextResponse as parseAnthropicTextResponse } from './providers/anthropic/parse-response.js';
|
|
30
31
|
export type { ParseTextResponseOptions } from './providers/openai/parse-response.js';
|
|
@@ -76,6 +77,8 @@ export { ModerationResult } from './value-objects/moderation-result.js';
|
|
|
76
77
|
export { buildModerationBody, parseModerationResponse } from './providers/openai/moderation.js';
|
|
77
78
|
export { Media, guessMimeType } from './value-objects/media/media.js';
|
|
78
79
|
export type { MediaKind } from './value-objects/media/media.js';
|
|
80
|
+
export type { PublicFetchOptions } from './value-objects/media/media.js';
|
|
81
|
+
export type { HostResolver } from './internal/public-url.js';
|
|
79
82
|
export { Image } from './value-objects/media/image.js';
|
|
80
83
|
export { Audio } from './value-objects/media/audio.js';
|
|
81
84
|
export { Document } from './value-objects/media/document.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { Prism } from './prism.js';
|
|
2
|
-
export { PrismError } from './errors.js';
|
|
2
|
+
export { PrismError, PrismUrlRefused } from './errors.js';
|
|
3
3
|
export { FinishReason, StructuredMode, ToolChoice, finishReasonFromValue, toolChoiceFromName } from './enums.js';
|
|
4
4
|
export { Tool } from './tool.js';
|
|
5
5
|
export { BooleanSchema, NumberSchema, StringSchema } from './schema/index.js';
|
|
@@ -16,6 +16,7 @@ export { OpenAI } from './providers/openai/openai.js';
|
|
|
16
16
|
// The seams a conformance runner needs: build a body without sending it, and
|
|
17
17
|
// parse a stored payload without a network.
|
|
18
18
|
export { buildRequestBody, buildTools } from './providers/openai/build-request-body.js';
|
|
19
|
+
export { buildRequestBody as buildAnthropicRequestBody } from './providers/anthropic/build-request-body.js';
|
|
19
20
|
export { parseTextResponse } from './providers/openai/parse-response.js';
|
|
20
21
|
// Named for its provider, because the unqualified `parseTextResponse` above
|
|
21
22
|
// is OpenAI's. A conformance runner has to be able to ask for a SPECIFIC
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Override resolution for a service mesh or tests; every address is checked. */
|
|
2
|
+
export interface HostResolver {
|
|
3
|
+
resolve(host: string): readonly string[] | Promise<readonly string[]>;
|
|
4
|
+
}
|
|
5
|
+
export declare const dnsHostResolver: HostResolver;
|
|
6
|
+
/** Validate the literal and every DNS answer before the caller sends HTTP.
|
|
7
|
+
* Resolution is not connection pinning: DNS rebinding remains possible.
|
|
8
|
+
*/
|
|
9
|
+
export declare function assertPublicUrl(url: string, resolver: HostResolver): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=public-url.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-url.d.ts","sourceRoot":"","sources":["../../src/internal/public-url.ts"],"names":[],"mappings":"AAIA,iFAAiF;AACjF,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;CACvE;AAED,eAAO,MAAM,eAAe,EAAE,YAQ7B,CAAC;AAoEF;;GAEG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBxF"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { lookup } from 'node:dns/promises';
|
|
2
|
+
import { BlockList, isIP } from 'node:net';
|
|
3
|
+
import { PrismUrlRefused } from '../errors.js';
|
|
4
|
+
export const dnsHostResolver = {
|
|
5
|
+
async resolve(host) {
|
|
6
|
+
try {
|
|
7
|
+
return (await lookup(host, { all: true, verbatim: true })).map(record => record.address);
|
|
8
|
+
}
|
|
9
|
+
catch {
|
|
10
|
+
return [];
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
// Every range a guarded fetch refuses, spelled identically in all three
|
|
15
|
+
// languages rather than delegated to a language's IP helpers (G-89): PHP's
|
|
16
|
+
// filter_var flags missed CGNAT, where Alibaba Cloud's metadata endpoint lives.
|
|
17
|
+
// All IPv4-compatible IPv6 spellings are refused consistently.
|
|
18
|
+
// Keep lists separate: Node maps IPv4 into IPv6 for BlockList comparisons, so
|
|
19
|
+
// blocking mapped IPv6 in a shared list would also block public IPv4.
|
|
20
|
+
const ipv4 = new BlockList();
|
|
21
|
+
for (const [address, prefix] of [
|
|
22
|
+
['0.0.0.0', 8], ['10.0.0.0', 8], ['100.64.0.0', 10], ['127.0.0.0', 8],
|
|
23
|
+
['169.254.0.0', 16], ['172.16.0.0', 12], ['192.0.0.0', 24], ['192.0.2.0', 24],
|
|
24
|
+
['192.168.0.0', 16], ['198.18.0.0', 15], ['198.51.100.0', 24], ['203.0.113.0', 24],
|
|
25
|
+
['224.0.0.0', 4], ['240.0.0.0', 4],
|
|
26
|
+
])
|
|
27
|
+
ipv4.addSubnet(address, prefix, 'ipv4');
|
|
28
|
+
const ipv6 = new BlockList();
|
|
29
|
+
for (const [address, prefix] of [
|
|
30
|
+
['::', 96], ['::ffff:0:0', 96], ['64:ff9b:1::', 48], ['100::', 64],
|
|
31
|
+
['2001::', 32], ['2001:db8::', 32], ['fc00::', 7], ['fe80::', 10],
|
|
32
|
+
['fec0::', 10], ['ff00::', 8],
|
|
33
|
+
])
|
|
34
|
+
ipv6.addSubnet(address, prefix, 'ipv6');
|
|
35
|
+
// NAT64 and 6to4 carry an IPv4 address inside an IPv6 one, and the embedded
|
|
36
|
+
// address is where the packet goes: 64:ff9b::a9fe:a9fe IS the metadata endpoint
|
|
37
|
+
// on a NAT64 network. The embedded address is judged. Not refused outright,
|
|
38
|
+
// because a DNS64 resolver hands an IPv6-only host 64:ff9b:: addresses for
|
|
39
|
+
// perfectly public sites. [prefix, bits, byte offset of the embedded IPv4]
|
|
40
|
+
const EMBEDDING = [
|
|
41
|
+
['64:ff9b::', 96, 12],
|
|
42
|
+
['2002::', 16, 2],
|
|
43
|
+
];
|
|
44
|
+
function assertPublicAddress(address) {
|
|
45
|
+
const family = isIP(address);
|
|
46
|
+
if (family === 6 && !address.includes('%')) {
|
|
47
|
+
for (const [prefix, bits, offset] of EMBEDDING) {
|
|
48
|
+
const range = new BlockList();
|
|
49
|
+
range.addSubnet(prefix, bits, 'ipv6');
|
|
50
|
+
if (range.check(address, 'ipv6')) {
|
|
51
|
+
assertPublicAddress(ipv6Bytes(address).slice(offset, offset + 4).join('.'));
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (address.includes('%') || family === 0 ||
|
|
57
|
+
(family === 4 ? ipv4.check(address, 'ipv4') : ipv6.check(address, 'ipv6'))) {
|
|
58
|
+
throw new PrismUrlRefused('private_address_refused', 'A guarded fetch refuses private, reserved or invalid addresses.');
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/** The sixteen bytes of a valid IPv6 address, including a dotted IPv4 tail. */
|
|
62
|
+
function ipv6Bytes(address) {
|
|
63
|
+
let text = address;
|
|
64
|
+
const dotted = /(\d+\.\d+\.\d+\.\d+)$/.exec(text);
|
|
65
|
+
if (dotted !== null) {
|
|
66
|
+
const [a, b, c, d] = dotted[1].split('.').map(Number);
|
|
67
|
+
text = text.slice(0, -dotted[1].length) + `${((a << 8) | b).toString(16)}:${((c << 8) | d).toString(16)}`;
|
|
68
|
+
}
|
|
69
|
+
const [head = '', tail] = text.split('::');
|
|
70
|
+
const left = head === '' ? [] : head.split(':');
|
|
71
|
+
const right = tail === undefined || tail === '' ? [] : tail.split(':');
|
|
72
|
+
const groups = tail === undefined ? left : [...left, ...Array(8 - left.length - right.length).fill('0'), ...right];
|
|
73
|
+
return groups.flatMap((group) => {
|
|
74
|
+
const value = parseInt(group, 16);
|
|
75
|
+
return [value >> 8, value & 0xff];
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
/** Validate the literal and every DNS answer before the caller sends HTTP.
|
|
79
|
+
* Resolution is not connection pinning: DNS rebinding remains possible.
|
|
80
|
+
*/
|
|
81
|
+
export async function assertPublicUrl(url, resolver) {
|
|
82
|
+
let parsed;
|
|
83
|
+
try {
|
|
84
|
+
if (!/^https?:\/\//i.test(url))
|
|
85
|
+
throw new Error('Not an absolute HTTP URL');
|
|
86
|
+
parsed = new URL(url);
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
throw new PrismUrlRefused('scheme_not_allowed', 'A guarded fetch needs an absolute http or https URL.');
|
|
90
|
+
}
|
|
91
|
+
const host = parsed.hostname.replace(/^\[|\]$/g, '');
|
|
92
|
+
if (isIP(host) !== 0) {
|
|
93
|
+
assertPublicAddress(host);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const addresses = await resolver.resolve(host);
|
|
97
|
+
if (addresses.length === 0) {
|
|
98
|
+
throw new PrismUrlRefused('host_did_not_resolve', 'The hostname did not resolve to a verifiable public address.');
|
|
99
|
+
}
|
|
100
|
+
for (const address of addresses)
|
|
101
|
+
assertPublicAddress(address);
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=public-url.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-url.js","sourceRoot":"","sources":["../../src/internal/public-url.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-map.d.ts","sourceRoot":"","sources":["../../../../src/providers/anthropic/maps/message-map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG9D,OAAO,KAAK,EAAoB,OAAO,EAAE,aAAa,EAAqB,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"message-map.d.ts","sourceRoot":"","sources":["../../../../src/providers/anthropic/maps/message-map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG9D,OAAO,KAAK,EAAoB,OAAO,EAAE,aAAa,EAAqB,MAAM,0CAA0C,CAAC;AAK5H;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,EAAE,CAiCrE;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,aAAa,EAAE,SAAS,aAAa,EAAE,GAAG,MAAM,GAAG,IAAI,CAIhF"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { canonicalJson, isJsonObject } from '../../../json.js';
|
|
2
2
|
import { PrismError } from '../../../errors.js';
|
|
3
3
|
import { mapDocument, mapImage } from './media-map.js';
|
|
4
|
+
import { replayContentBlocks } from '../replay.js';
|
|
4
5
|
/**
|
|
5
6
|
* Map messages onto Anthropic's `messages` array.
|
|
6
7
|
*
|
|
@@ -64,12 +65,22 @@ export function mapSystem(systemPrompts) {
|
|
|
64
65
|
return parts.length > 0 ? parts.join('\n\n') : null;
|
|
65
66
|
}
|
|
66
67
|
function mapAssistantMessage(message, items) {
|
|
68
|
+
const replay = message.additionalContent.content_blocks;
|
|
69
|
+
if (Array.isArray(replay)) {
|
|
70
|
+
const content = replayContentBlocks(replay);
|
|
71
|
+
if (content.length > 0)
|
|
72
|
+
items.push({ role: 'assistant', content });
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
67
75
|
const content = [];
|
|
68
76
|
const { thinking, thinking_signature: signature } = message.additionalContent;
|
|
69
77
|
// The thinking block goes back FIRST, with its signature. Anthropic requires
|
|
70
78
|
// it on a tool-use turn with thinking on, and refuses a thinking block that
|
|
71
79
|
// has no signature, so without both it is left out (G-57).
|
|
72
|
-
if (
|
|
80
|
+
if (Array.isArray(message.additionalContent.thinking_blocks)) {
|
|
81
|
+
content.push(...message.additionalContent.thinking_blocks);
|
|
82
|
+
}
|
|
83
|
+
else if (typeof thinking === 'string' && typeof signature === 'string') {
|
|
73
84
|
content.push({ type: 'thinking', thinking, signature });
|
|
74
85
|
}
|
|
75
86
|
// Text first. Anthropic reads content blocks in order, and a tool_use ahead
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-map.js","sourceRoot":"","sources":["../../../../src/providers/anthropic/maps/message-map.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"message-map.js","sourceRoot":"","sources":["../../../../src/providers/anthropic/maps/message-map.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-response.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/parse-response.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAG3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;
|
|
1
|
+
{"version":3,"file":"parse-response.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/parse-response.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAG3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAMpF,MAAM,WAAW,wBAAwB;IACvC,UAAU,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC3C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,wBAA6B,GACrC,YAAY,CAmCd"}
|
|
@@ -8,6 +8,7 @@ import { Meta } from '../../value-objects/meta.js';
|
|
|
8
8
|
import { ToolCall } from '../../value-objects/tool-call.js';
|
|
9
9
|
import { Usage } from '../../value-objects/usage.js';
|
|
10
10
|
import { mapFinishReason } from './maps/finish-reason-map.js';
|
|
11
|
+
import { responseContentBlocks, thinkingBlocks } from './replay.js';
|
|
11
12
|
/**
|
|
12
13
|
* Turn a raw Anthropic Messages payload into a `TextResponse`.
|
|
13
14
|
*
|
|
@@ -67,6 +68,7 @@ function validateResponse(rawBody) {
|
|
|
67
68
|
}
|
|
68
69
|
function buildStep(data, request, finishReason, rateLimits) {
|
|
69
70
|
const content = readArray(data.content);
|
|
71
|
+
const replay = responseContentBlocks(content, data.stop_reason === 'pause_turn');
|
|
70
72
|
const usage = readObject(data.usage) ?? {};
|
|
71
73
|
return new TextStep({
|
|
72
74
|
text: outputText(content),
|
|
@@ -87,7 +89,9 @@ function buildStep(data, request, finishReason, rateLimits) {
|
|
|
87
89
|
messages: request.messages(),
|
|
88
90
|
systemPrompts: request.systemPrompts(),
|
|
89
91
|
additionalContent: whereNotNull({
|
|
90
|
-
...thinking(
|
|
92
|
+
...thinking(replay),
|
|
93
|
+
content_blocks: Array.isArray(data.content) ? replay : null,
|
|
94
|
+
stop_reason: data.stop_reason ?? null,
|
|
91
95
|
stopSequence: typeof data.stop_sequence === 'string' ? data.stop_sequence : null,
|
|
92
96
|
}),
|
|
93
97
|
raw: data,
|
|
@@ -121,12 +125,16 @@ function mapToolCalls(content) {
|
|
|
121
125
|
* The signature is what lets the block be sent back on a later tool-use turn
|
|
122
126
|
* (G-57). It covers one block's text exactly, so the text kept beside it is that
|
|
123
127
|
* block's, not every block joined: joined text under one signature is a block
|
|
124
|
-
* Anthropic would refuse.
|
|
125
|
-
*
|
|
128
|
+
* Anthropic would refuse. The convenience pair describes the first thinking
|
|
129
|
+
* block; thinking_blocks retains every signed or redacted block for replay.
|
|
126
130
|
*/
|
|
127
131
|
function thinking(content) {
|
|
128
|
-
const
|
|
132
|
+
const blocks = thinkingBlocks(content);
|
|
133
|
+
if (blocks.length === 0)
|
|
134
|
+
return {};
|
|
135
|
+
const block = blocks.find((candidate) => candidate.type === 'thinking');
|
|
129
136
|
return {
|
|
137
|
+
thinking_blocks: blocks,
|
|
130
138
|
thinking: typeof block?.thinking === 'string' ? block.thinking : null,
|
|
131
139
|
thinking_signature: typeof block?.signature === 'string' ? block.signature : null,
|
|
132
140
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-response.js","sourceRoot":"","sources":["../../../src/providers/anthropic/parse-response.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EACL,wBAAwB,EACxB,SAAS,EACT,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,UAAU,EACV,YAAY,GACb,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"parse-response.js","sourceRoot":"","sources":["../../../src/providers/anthropic/parse-response.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EACL,wBAAwB,EACxB,SAAS,EACT,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,UAAU,EACV,YAAY,GACb,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAMpE;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAoB,EACpB,OAAgB,EAChB,UAAoC,EAAE;IAEtC,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAE3C,IAAI,YAAY,KAAK,YAAY,CAAC,SAAS,EAAE,CAAC;QAC5C,MAAM,UAAU,CAAC,oBAAoB,EAAE,CAAC;IAC1C,CAAC;IAED,uEAAuE;IACvE,EAAE;IACF,+EAA+E;IAC/E,4EAA4E;IAC5E,6EAA6E;IAC7E,6EAA6E;IAC7E,iBAAiB;IACjB,EAAE;IACF,+EAA+E;IAC/E,8EAA8E;IAC9E,+EAA+E;IAC/E,+EAA+E;IAC/E,gCAAgC;IAChC,EAAE;IACF,oEAAoE;IACpE,4EAA4E;IAC5E,8DAA8D;IAC9D,EAAE;IACF,6EAA6E;IAC7E,qEAAqE;IACrE,qBAAqB;IAErB,MAAM,OAAO,GAAG,IAAI,eAAe,EAAE,CAAC;IAEtC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;IAElF,OAAO,OAAO,CAAC,UAAU,EAAE,CAAC;AAC9B,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAgB;IACxC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChE,MAAM,UAAU,CAAC,qBAAqB,CAAC,0DAA0D,CAAC,CAAC;IACrG,CAAC;IAED,4EAA4E;IAC5E,0EAA0E;IAC1E,iDAAiD;IACjD,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,wBAAwB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAE9C,MAAM,UAAU,CAAC,qBAAqB,CACpC,oBAAoB,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAClG,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,SAAS,CAChB,IAAgB,EAChB,OAAoB,EACpB,YAA0B,EAC1B,UAAwC;IAExC,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,KAAK,YAAY,CAAC,CAAC;IACjF,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAE3C,OAAO,IAAI,QAAQ,CAAC;QAClB,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC;QACzB,YAAY;QACZ,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC;QAChC,KAAK,EAAE,IAAI,KAAK;QACd,0EAA0E;QAC1E,wEAAwE;QACxE,6CAA6C;QAC7C,UAAU,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,EACjC,UAAU,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,EAClC,kBAAkB,CAAC,KAAK,CAAC,2BAA2B,CAAC,EACrD,kBAAkB,CAAC,KAAK,CAAC,uBAAuB,CAAC;QACjD,oEAAoE;QACpE,oEAAoE;QACpE,wEAAwE;QACxE,0EAA0E;QAC1E,sDAAsD;QACtD,kBAAkB,CAAC,UAAU,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAE,eAAe,CAAC,CAC7E;QACD,IAAI,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC;QACrF,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;QAC5B,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE;QACtC,iBAAiB,EAAE,YAAY,CAAC;YAC9B,GAAG,QAAQ,CAAC,MAAM,CAAC;YACnB,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;YAC3D,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI;YACrC,YAAY,EAAE,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI;SACjF,CAAC;QACF,GAAG,EAAE,IAAI;KACV,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,SAAS,UAAU,CAAC,OAA6B;IAC/C,OAAO,OAAO;SACX,MAAM,CAAC,YAAY,CAAC;SACpB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC;SACxC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;SAC1C,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED,SAAS,YAAY,CAAC,OAA6B;IACjD,OAAO,OAAO;SACX,MAAM,CAAC,YAAY,CAAC;SACpB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC;SAC5C,GAAG,CACF,CAAC,KAAK,EAAE,EAAE,CACR,IAAI,QAAQ,CACV,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EACxB,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;IAC1B,iEAAiE;IACjE,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAC5C,IAAI,CACL,CACJ,CAAC;AACN,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,QAAQ,CAAC,OAA6B;IAC7C,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;IAExE,OAAO;QACL,eAAe,EAAE,MAAM;QACvB,QAAQ,EAAE,OAAO,KAAK,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;QACrE,kBAAkB,EAAE,OAAO,KAAK,EAAE,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;KAClF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type JsonObject, type JsonValue } from '../../json.js';
|
|
2
|
+
export declare function thinkingBlocks(blocks: readonly JsonValue[]): JsonObject[];
|
|
3
|
+
/** Only content whose tools were answered can be stored as completed replay state. */
|
|
4
|
+
export declare function responseContentBlocks(blocks: readonly JsonValue[], keepServerToolUse?: boolean): JsonObject[];
|
|
5
|
+
/** Follow the reference's fallback echo rules without interpreting signed data. */
|
|
6
|
+
export declare function replayContentBlocks(blocks: readonly JsonValue[]): JsonObject[];
|
|
7
|
+
//# sourceMappingURL=replay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replay.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/replay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAI9E,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,GAAG,UAAU,EAAE,CAIzE;AAED,sFAAsF;AACtF,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,EAAE,iBAAiB,UAAQ,GAAG,UAAU,EAAE,CAK3G;AAED,mFAAmF;AACnF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,GAAG,UAAU,EAAE,CAQ9E"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { isJsonObject } from '../../json.js';
|
|
2
|
+
const thinkingTypes = ['thinking', 'redacted_thinking'];
|
|
3
|
+
export function thinkingBlocks(blocks) {
|
|
4
|
+
const objects = blocks.filter(isJsonObject);
|
|
5
|
+
const fallback = lastFallbackIndex(objects);
|
|
6
|
+
return objects.slice(fallback + 1).filter((block) => thinkingTypes.includes(String(block.type)));
|
|
7
|
+
}
|
|
8
|
+
/** Only content whose tools were answered can be stored as completed replay state. */
|
|
9
|
+
export function responseContentBlocks(blocks, keepServerToolUse = false) {
|
|
10
|
+
const objects = blocks.filter(isJsonObject);
|
|
11
|
+
const answered = resultIds(objects);
|
|
12
|
+
return objects.filter((block) => block.type !== 'tool_use'
|
|
13
|
+
&& (keepServerToolUse || !['server_tool_use', 'mcp_tool_use'].includes(String(block.type)) || answered.has(block.id)));
|
|
14
|
+
}
|
|
15
|
+
/** Follow the reference's fallback echo rules without interpreting signed data. */
|
|
16
|
+
export function replayContentBlocks(blocks) {
|
|
17
|
+
const objects = blocks.filter(isJsonObject);
|
|
18
|
+
const fallback = lastFallbackIndex(objects);
|
|
19
|
+
const answered = resultIds(objects);
|
|
20
|
+
return objects.filter((block, index) => index >= fallback
|
|
21
|
+
|| (!['thinking', 'redacted_thinking', 'connector_text', 'tool_use'].includes(String(block.type))
|
|
22
|
+
&& (block.type !== 'server_tool_use' || answered.has(block.id))))
|
|
23
|
+
.map((block) => Array.isArray(block.input) && block.input.length === 0 ? { ...block, input: {} } : block);
|
|
24
|
+
}
|
|
25
|
+
function resultIds(blocks) {
|
|
26
|
+
return new Set(blocks.filter((block) => typeof block.type === 'string' && block.type.endsWith('_tool_result'))
|
|
27
|
+
.map((block) => block.tool_use_id).filter((id) => id !== undefined && id !== null));
|
|
28
|
+
}
|
|
29
|
+
function lastFallbackIndex(blocks) {
|
|
30
|
+
let index = -1;
|
|
31
|
+
for (const [candidate, block] of blocks.entries()) {
|
|
32
|
+
if (block.type === 'fallback')
|
|
33
|
+
index = candidate;
|
|
34
|
+
}
|
|
35
|
+
return index;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=replay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replay.js","sourceRoot":"","sources":["../../../src/providers/anthropic/replay.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-map.d.ts","sourceRoot":"","sources":["../../../../src/providers/openai/maps/message-map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,OAAO,KAAK,EAAoB,OAAO,EAAE,aAAa,EAAqB,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"message-map.d.ts","sourceRoot":"","sources":["../../../../src/providers/openai/maps/message-map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,OAAO,KAAK,EAAoB,OAAO,EAAE,aAAa,EAAqB,MAAM,0CAA0C,CAAC;AAM5H;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,aAAa,GAAE,SAAS,aAAa,EAAO,GAC3C,SAAS,EAAE,CAgCb"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { canonicalJson, isJsonObject } from '../../../json.js';
|
|
2
2
|
import { PrismError } from '../../../errors.js';
|
|
3
3
|
import { mapDocument, mapImage } from './media-map.js';
|
|
4
|
+
import { replayableItems } from '../replay.js';
|
|
4
5
|
/**
|
|
5
6
|
* Map messages onto the Responses API's flat `input` array.
|
|
6
7
|
*
|
|
@@ -50,6 +51,11 @@ export function mapMessages(messages, systemPrompts = []) {
|
|
|
50
51
|
return items;
|
|
51
52
|
}
|
|
52
53
|
function mapAssistantMessage(message, items) {
|
|
54
|
+
const replay = message.additionalContent.output_items;
|
|
55
|
+
if (Array.isArray(replay) && replay.length > 0) {
|
|
56
|
+
items.push(...replayableItems(replay));
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
53
59
|
if (message.toolCalls.length > 0) {
|
|
54
60
|
for (const [reasoningId, toolCalls] of groupByReasoningId(message.toolCalls)) {
|
|
55
61
|
const first = toolCalls[0];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-map.js","sourceRoot":"","sources":["../../../../src/providers/openai/maps/message-map.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIhD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"message-map.js","sourceRoot":"","sources":["../../../../src/providers/openai/maps/message-map.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-response.d.ts","sourceRoot":"","sources":["../../../src/providers/openai/parse-response.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAI3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;
|
|
1
|
+
{"version":3,"file":"parse-response.d.ts","sourceRoot":"","sources":["../../../src/providers/openai/parse-response.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAI3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAMpF,MAAM,WAAW,wBAAwB;IACvC,UAAU,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC3C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,wBAA6B,GACrC,YAAY,CAmBd"}
|
|
@@ -9,6 +9,7 @@ import { Meta } from '../../value-objects/meta.js';
|
|
|
9
9
|
import { ToolCall } from '../../value-objects/tool-call.js';
|
|
10
10
|
import { Usage } from '../../value-objects/usage.js';
|
|
11
11
|
import { lastOutputItem, mapFinishReason } from './maps/finish-reason-map.js';
|
|
12
|
+
import { responseReplayItems } from './replay.js';
|
|
12
13
|
/**
|
|
13
14
|
* Turn a raw OpenAI Responses payload into a `TextResponse`.
|
|
14
15
|
*
|
|
@@ -51,6 +52,7 @@ function buildStep(data, request, finishReason, rateLimits) {
|
|
|
51
52
|
const usage = readObject(data.usage) ?? {};
|
|
52
53
|
const inputTokenDetails = readObject(usage.input_tokens_details) ?? {};
|
|
53
54
|
const outputTokenDetails = readObject(usage.output_tokens_details) ?? {};
|
|
55
|
+
const replay = responseReplayItems(output);
|
|
54
56
|
return new TextStep({
|
|
55
57
|
text: outputText(data),
|
|
56
58
|
finishReason,
|
|
@@ -69,6 +71,7 @@ function buildStep(data, request, finishReason, rateLimits) {
|
|
|
69
71
|
reasoningSummaries: reasoningSummaries(output),
|
|
70
72
|
generatedImages: generatedImages(output),
|
|
71
73
|
imageGenerationCalls: imageGenerationCalls(output),
|
|
74
|
+
output_items: replay.length > 0 ? replay : null,
|
|
72
75
|
}),
|
|
73
76
|
raw: data,
|
|
74
77
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-response.js","sourceRoot":"","sources":["../../../src/providers/openai/parse-response.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EACL,wBAAwB,EACxB,SAAS,EACT,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,UAAU,EACV,YAAY,GACb,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"parse-response.js","sourceRoot":"","sources":["../../../src/providers/openai/parse-response.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EACL,wBAAwB,EACxB,SAAS,EACT,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,UAAU,EACV,YAAY,GACb,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAEnD,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAMlD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAoB,EACpB,OAAgB,EAChB,UAAoC,EAAE;IAEtC,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAE3C,IAAI,YAAY,KAAK,YAAY,CAAC,SAAS,EAAE,CAAC;QAC5C,MAAM,UAAU,CAAC,oBAAoB,EAAE,CAAC;IAC1C,CAAC;IAED,IAAI,YAAY,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAExC,MAAM,UAAU,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IAC7F,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,eAAe,EAAE,CAAC;IAEtC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;IAElF,OAAO,OAAO,CAAC,UAAU,EAAE,CAAC;AAC9B,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAgB;IACxC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChE,MAAM,UAAU,CAAC,qBAAqB,CAAC,uDAAuD,CAAC,CAAC;IAClG,CAAC;IAED,IAAI,wBAAwB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAE9C,MAAM,UAAU,CAAC,qBAAqB,CACpC,iBAAiB,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAC/F,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,SAAS,CAChB,IAAgB,EAChB,OAAoB,EACpB,YAA0B,EAC1B,UAAwC;IAExC,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC3C,MAAM,iBAAiB,GAAG,UAAU,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;IACvE,MAAM,kBAAkB,GAAG,UAAU,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;IACzE,MAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAE3C,OAAO,IAAI,QAAQ,CAAC;QAClB,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC;QACtB,YAAY;QACZ,SAAS,EAAE,YAAY,CAAC,MAAM,CAAC;QAC/B,KAAK,EAAE,IAAI,KAAK;QACd,0EAA0E;QAC1E,wEAAwE;QACxE,UAAU,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,CAAC,EAClF,UAAU,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,EAClC,IAAI,EACJ,kBAAkB,CAAC,iBAAiB,CAAC,aAAa,CAAC,EACnD,kBAAkB,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CACxD;QACD,IAAI,EAAE,IAAI,IAAI,CACZ,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,EACvB,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,EAC1B,UAAU,EACV,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CACjE;QACD,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;QAC5B,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE;QACtC,iBAAiB,EAAE,YAAY,CAAC;YAC9B,aAAa,EAAE,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC;YACzD,YAAY,EAAE,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC;YACzD,kBAAkB,EAAE,eAAe,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,CAAC;YACtE,kBAAkB,EAAE,kBAAkB,CAAC,MAAM,CAAC;YAC9C,eAAe,EAAE,eAAe,CAAC,MAAM,CAAC;YACxC,oBAAoB,EAAE,oBAAoB,CAAC,MAAM,CAAC;YAClD,YAAY,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;SAChD,CAAC;QACF,GAAG,EAAE,IAAI;KACV,CAAC,CAAC;AACL,CAAC;AAED,kFAAkF;AAClF,SAAS,UAAU,CAAC,IAAgB;IAClC,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAE9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAEzB,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/D,CAAC;AAED,SAAS,YAAY,CAAC,MAA4B;IAChD,OAAO,MAAM;SACV,MAAM,CAAC,YAAY,CAAC;SACpB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe,CAAC;SAC/C,GAAG,CACF,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,QAAQ,CACV,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,EACvB,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EACzB,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EACxF,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CACvD,CACJ,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CACtB,MAA4B,EAC5B,UAAkB,EAClB,KAAa;IAEb,MAAM,MAAM,GAAG,MAAM;SAClB,MAAM,CAAC,YAAY,CAAC;SACpB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC;SACjD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;SAC5C,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC;SAC9C,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC9B,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;IAEjF,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAEpC,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3C,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAS,eAAe,CAAC,MAA4B;IACnD,MAAM,MAAM,GAAG,MAAM;SAClB,MAAM,CAAC,YAAY,CAAC;SACpB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,uBAAuB,CAAC;SACvD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC;SACvE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACZ,IAAI,cAAc,CAChB,IAAI,EACJ,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAC3B,OAAO,IAAI,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CACrE,CAAC,QAAQ,EAAE,CACb,CAAC;IAEJ,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3C,CAAC;AAED;;;;;;GAMG;AACH,SAAS,oBAAoB,CAAC,MAA4B;IACxD,MAAM,KAAK,GAAG,MAAM;SACjB,MAAM,CAAC,YAAY,CAAC;SACpB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,uBAAuB,CAAC;SACvD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACZ,YAAY,CAAC;QACX,EAAE,EAAE,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;QAChD,MAAM,EAAE,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;QAC5D,cAAc,EAAE,OAAO,IAAI,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI;QACpF,IAAI,EAAE,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;QACtD,OAAO,EAAE,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;QAC/D,UAAU,EAAE,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI;QACxE,aAAa,EAAE,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI;KAClF,CAAC,CACH,CAAC;IAEJ,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,CAAC;AAED,8EAA8E;AAC9E,SAAS,kBAAkB,CAAC,MAA4B;IACtD,OAAO,MAAM;SACV,MAAM,CAAC,YAAY,CAAC;SACpB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC;SAC3C,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAC1C,MAAM,CAAC,YAAY,CAAC;SACpB,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;SAC9B,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC;AAC/E,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type JsonObject, type JsonValue } from '../../json.js';
|
|
2
|
+
/** Replay state is opaque; keep item order and all provider fields. */
|
|
3
|
+
export declare function replayableItems(output: readonly JsonValue[]): JsonObject[];
|
|
4
|
+
/** A completed non-tool turn must not replay unanswered calls or their reasoning. */
|
|
5
|
+
export declare function responseReplayItems(output: readonly JsonValue[]): JsonObject[];
|
|
6
|
+
//# sourceMappingURL=replay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replay.d.ts","sourceRoot":"","sources":["../../../src/providers/openai/replay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAE9E,uEAAuE;AACvE,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,GAAG,UAAU,EAAE,CAK1E;AAED,qFAAqF;AACrF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,GAAG,UAAU,EAAE,CAa9E"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { isJsonObject } from '../../json.js';
|
|
2
|
+
/** Replay state is opaque; keep item order and all provider fields. */
|
|
3
|
+
export function replayableItems(output) {
|
|
4
|
+
return output.filter(isJsonObject)
|
|
5
|
+
.filter((item) => ['message', 'reasoning', 'function_call'].includes(String(item.type)))
|
|
6
|
+
.map((item) => item.type === 'reasoning' && !Array.isArray(item.summary) && !isJsonObject(item.summary)
|
|
7
|
+
? { ...item, summary: [] } : item);
|
|
8
|
+
}
|
|
9
|
+
/** A completed non-tool turn must not replay unanswered calls or their reasoning. */
|
|
10
|
+
export function responseReplayItems(output) {
|
|
11
|
+
const kept = [];
|
|
12
|
+
let followedByKeptItem = false;
|
|
13
|
+
for (const item of replayableItems(output).reverse()) {
|
|
14
|
+
if (item.type === 'function_call') {
|
|
15
|
+
followedByKeptItem = false;
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
18
|
+
if (item.type === 'reasoning' && !followedByKeptItem)
|
|
19
|
+
continue;
|
|
20
|
+
followedByKeptItem = true;
|
|
21
|
+
kept.push(item);
|
|
22
|
+
}
|
|
23
|
+
return kept.reverse();
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=replay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replay.js","sourceRoot":"","sources":["../../../src/providers/openai/replay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAmC,MAAM,eAAe,CAAC;AAE9E,uEAAuE;AACvE,MAAM,UAAU,eAAe,CAAC,MAA4B;IAC1D,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;SAC/B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SACvF,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;QACrG,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,mBAAmB,CAAC,MAA4B;IAC9D,MAAM,IAAI,GAAiB,EAAE,CAAC;IAC9B,IAAI,kBAAkB,GAAG,KAAK,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QACrD,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAClC,kBAAkB,GAAG,KAAK,CAAC;YAC3B,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,kBAAkB;YAAE,SAAS;QAC/D,kBAAkB,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;AACxB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structured-mode-resolver.d.ts","sourceRoot":"","sources":["../../../src/providers/openai/structured-mode-resolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"structured-mode-resolver.d.ts","sourceRoot":"","sources":["../../../src/providers/openai/structured-mode-resolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AA4BhD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,CAQnE"}
|
|
@@ -5,14 +5,18 @@ import { StructuredMode } from '../../enums.js';
|
|
|
5
5
|
*
|
|
6
6
|
* CAPABILITY INFERRED FROM THE MODEL NAME, which is a compromise worth naming
|
|
7
7
|
* rather than hiding: OpenAI publishes no endpoint that answers "does this model
|
|
8
|
-
* support strict schemas", so the reference
|
|
9
|
-
* The cost is that a model released tomorrow is treated as JSON-only until this
|
|
10
|
-
* list learns about it — a conservative failure, but a failure.
|
|
8
|
+
* support strict schemas", so the reference infers it, and so does this.
|
|
11
9
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
10
|
+
* A list alone goes stale in the unsafe direction: the newest models fall back
|
|
11
|
+
* to JSON mode, where the schema is not enforced, and nothing says so. gpt-6.x
|
|
12
|
+
* and o1/o3/o4 did exactly that until prism#83. So families are also recognised
|
|
13
|
+
* by OpenAI's naming, gpt-N for N >= 5 and the oN reasoning series. A name only
|
|
14
|
+
* has to LOOK like a family to be caught, so custom models served through this
|
|
15
|
+
* provider under other names keep the JSON-mode default.
|
|
14
16
|
*/
|
|
15
17
|
const STRUCTURED_PREFIXES = ['gpt-4o', 'gpt-4.1', 'gpt-4.5', 'gpt-5', 'chatgpt-4o', 'o3-mini'];
|
|
18
|
+
const GPT_FAMILY = /^gpt-(\d+)(?:[.-]|$)/;
|
|
19
|
+
const O_SERIES = /^o\d+(?:-|$)/;
|
|
16
20
|
/** Models that cannot do structured output at all, by exact name. */
|
|
17
21
|
const UNSUPPORTED = [
|
|
18
22
|
'o1-mini',
|
|
@@ -25,7 +29,18 @@ export function resolveStructuredMode(model) {
|
|
|
25
29
|
if (UNSUPPORTED.includes(base)) {
|
|
26
30
|
throw PrismError.unsupportedStructuredModel(model);
|
|
27
31
|
}
|
|
28
|
-
return
|
|
32
|
+
return supportsStructured(base) ? StructuredMode.Structured : StructuredMode.Json;
|
|
33
|
+
}
|
|
34
|
+
function supportsStructured(base) {
|
|
35
|
+
if (STRUCTURED_PREFIXES.some((prefix) => base.startsWith(prefix))) {
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
const family = GPT_FAMILY.exec(base);
|
|
39
|
+
if (family !== null) {
|
|
40
|
+
return Number(family[1]) >= 5;
|
|
41
|
+
}
|
|
42
|
+
// o1-mini and o1-preview never supported it; UNSUPPORTED refused them above.
|
|
43
|
+
return O_SERIES.test(base);
|
|
29
44
|
}
|
|
30
45
|
/**
|
|
31
46
|
* A fine-tune is named `ft:<base>:<org>:<name>:<hash>`, and its capability is
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structured-mode-resolver.js","sourceRoot":"","sources":["../../../src/providers/openai/structured-mode-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD
|
|
1
|
+
{"version":3,"file":"structured-mode-resolver.js","sourceRoot":"","sources":["../../../src/providers/openai/structured-mode-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;;;;;;;;;;GAaG;AACH,MAAM,mBAAmB,GAAsB,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;AAClH,MAAM,UAAU,GAAG,sBAAsB,CAAC;AAC1C,MAAM,QAAQ,GAAG,cAAc,CAAC;AAEhC,qEAAqE;AACrE,MAAM,WAAW,GAAsB;IACrC,SAAS;IACT,oBAAoB;IACpB,YAAY;IACZ,uBAAuB;CACxB,CAAC;AAEF,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,MAAM,IAAI,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAErC,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,MAAM,UAAU,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC;AACpF,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY;IACtC,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,6EAA6E;IAC7E,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,KAAa;IACrC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;AACzC,CAAC"}
|
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
import type { JsonObject } from '../../json.js';
|
|
2
|
+
import type { HostResolver } from '../../internal/public-url.js';
|
|
3
|
+
export interface PublicFetchOptions {
|
|
4
|
+
resolver?: HostResolver;
|
|
5
|
+
/** Number of redirect hops allowed after the initial request. Default: 5. */
|
|
6
|
+
maxRedirects?: number;
|
|
7
|
+
/**
|
|
8
|
+
* The largest body accepted, in bytes. Default: 32 MiB, the largest inline document the providers take. Refused with
|
|
9
|
+
* `media_too_large` while the body streams, so an oversized answer is never held whole (G-90).
|
|
10
|
+
*/
|
|
11
|
+
maxBytes?: number;
|
|
12
|
+
}
|
|
2
13
|
/** The kinds of payload a message part can be, minus text. */
|
|
3
14
|
export type MediaKind = 'image' | 'audio' | 'document' | 'video';
|
|
4
15
|
/**
|
|
@@ -85,6 +96,12 @@ export declare abstract class Media {
|
|
|
85
96
|
* replays it is the hazard, not the fetch itself.
|
|
86
97
|
*/
|
|
87
98
|
fetch(): Promise<this>;
|
|
99
|
+
/**
|
|
100
|
+
* Opt-in URL guard: check the literal and all DNS answers before each hop.
|
|
101
|
+
* Redirects are followed manually so their destinations are checked too.
|
|
102
|
+
* DNS resolution is not pinned to the connection; this is not a sandbox.
|
|
103
|
+
*/
|
|
104
|
+
fetchPublic(options?: PublicFetchOptions): Promise<this>;
|
|
88
105
|
/**
|
|
89
106
|
* The serialized form.
|
|
90
107
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../../src/value-objects/media/media.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../../src/value-objects/media/media.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { readFileSync } from 'node:fs';
|
|
2
2
|
import { extname } from 'node:path';
|
|
3
|
-
import { PrismError } from '../../errors.js';
|
|
3
|
+
import { PrismError, PrismUrlRefused } from '../../errors.js';
|
|
4
|
+
import { assertPublicUrl, dnsHostResolver } from '../../internal/public-url.js';
|
|
4
5
|
/**
|
|
5
6
|
* A binary payload, however it was given to us.
|
|
6
7
|
*
|
|
@@ -171,6 +172,62 @@ export class Media {
|
|
|
171
172
|
this.setRawContent(new Uint8Array(await response.arrayBuffer()), this.#mimeType ?? response.headers.get('content-type'));
|
|
172
173
|
return this;
|
|
173
174
|
}
|
|
175
|
+
/**
|
|
176
|
+
* Opt-in URL guard: check the literal and all DNS answers before each hop.
|
|
177
|
+
* Redirects are followed manually so their destinations are checked too.
|
|
178
|
+
* DNS resolution is not pinned to the connection; this is not a sandbox.
|
|
179
|
+
*/
|
|
180
|
+
async fetchPublic(options = {}) {
|
|
181
|
+
if (this.url === null) {
|
|
182
|
+
throw PrismError.unfetchableMedia('this payload has no url');
|
|
183
|
+
}
|
|
184
|
+
const maxRedirects = options.maxRedirects ?? 5;
|
|
185
|
+
if (!Number.isSafeInteger(maxRedirects) || maxRedirects < 0) {
|
|
186
|
+
throw new RangeError('maxRedirects must be a nonnegative safe integer.');
|
|
187
|
+
}
|
|
188
|
+
const maxBytes = options.maxBytes ?? 32 * 1024 * 1024;
|
|
189
|
+
if (!Number.isSafeInteger(maxBytes) || maxBytes < 0) {
|
|
190
|
+
throw new RangeError('maxBytes must be a nonnegative safe integer.');
|
|
191
|
+
}
|
|
192
|
+
const resolver = options.resolver ?? dnsHostResolver;
|
|
193
|
+
let url = this.url;
|
|
194
|
+
for (let hop = 0; hop <= maxRedirects; hop++) {
|
|
195
|
+
try {
|
|
196
|
+
await assertPublicUrl(url, resolver);
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
if (hop > 0 && error instanceof PrismUrlRefused) {
|
|
200
|
+
throw new PrismUrlRefused('redirect_refused', `${safeUrl(this.url)} redirected to a refused destination.`);
|
|
201
|
+
}
|
|
202
|
+
throw error;
|
|
203
|
+
}
|
|
204
|
+
const response = await globalThis.fetch(url, { redirect: 'manual' });
|
|
205
|
+
const location = response.headers.get('location');
|
|
206
|
+
if (response.status >= 300 && response.status < 400 && location !== null && location !== '') {
|
|
207
|
+
// We do not consume redirect bodies; release their transport before
|
|
208
|
+
// following another hop or refusing the redirect chain.
|
|
209
|
+
await response.body?.cancel();
|
|
210
|
+
if (hop === maxRedirects) {
|
|
211
|
+
throw new PrismUrlRefused('too_many_redirects', `${safeUrl(this.url)} redirected more than ${maxRedirects} times.`);
|
|
212
|
+
}
|
|
213
|
+
try {
|
|
214
|
+
url = new URL(location, url).href;
|
|
215
|
+
}
|
|
216
|
+
catch {
|
|
217
|
+
throw new PrismUrlRefused('redirect_refused', `${safeUrl(this.url)} redirected to an invalid URL.`);
|
|
218
|
+
}
|
|
219
|
+
continue;
|
|
220
|
+
}
|
|
221
|
+
if (!response.ok) {
|
|
222
|
+
await response.body?.cancel();
|
|
223
|
+
throw PrismError.unfetchableMedia(`${safeUrl(url)} responded ${response.status}`);
|
|
224
|
+
}
|
|
225
|
+
this.setRawContent(await boundedBody(response, maxBytes, safeUrl(url)), this.#mimeType ?? response.headers.get('content-type'));
|
|
226
|
+
return this;
|
|
227
|
+
}
|
|
228
|
+
// Every redirect at the bound throws above; this is unreachable.
|
|
229
|
+
throw new PrismUrlRefused('too_many_redirects', 'The guarded fetch exhausted its redirect bound.');
|
|
230
|
+
}
|
|
174
231
|
/**
|
|
175
232
|
* The serialized form.
|
|
176
233
|
*
|
|
@@ -288,4 +345,39 @@ function safeUrl(url) {
|
|
|
288
345
|
}
|
|
289
346
|
return `${parsed.protocol}//${parsed.host}${parsed.pathname}${parsed.search === '' ? '' : '?[redacted]'}`;
|
|
290
347
|
}
|
|
348
|
+
/**
|
|
349
|
+
* The body, read chunk by chunk and refused the moment it passes `maxBytes`, so an oversized answer is never held
|
|
350
|
+
* whole. A declared content-length over the cap is refused before anything is read. The URL was one the caller does
|
|
351
|
+
* not trust, so the size of its answer is not theirs to choose either (G-90).
|
|
352
|
+
*/
|
|
353
|
+
async function boundedBody(response, maxBytes, label) {
|
|
354
|
+
const declared = response.headers.get('content-length');
|
|
355
|
+
if (declared !== null && /^\d+$/.test(declared) && Number(declared) > maxBytes) {
|
|
356
|
+
await response.body?.cancel();
|
|
357
|
+
throw new PrismUrlRefused('media_too_large', `${label} declares ${declared} bytes, over the ${maxBytes}-byte cap.`);
|
|
358
|
+
}
|
|
359
|
+
if (response.body === null)
|
|
360
|
+
return new Uint8Array(0);
|
|
361
|
+
const reader = response.body.getReader();
|
|
362
|
+
const chunks = [];
|
|
363
|
+
let size = 0;
|
|
364
|
+
for (;;) {
|
|
365
|
+
const { done, value } = await reader.read();
|
|
366
|
+
if (done)
|
|
367
|
+
break;
|
|
368
|
+
size += value.byteLength;
|
|
369
|
+
if (size > maxBytes) {
|
|
370
|
+
await reader.cancel();
|
|
371
|
+
throw new PrismUrlRefused('media_too_large', `${label} sent more than the ${maxBytes}-byte cap.`);
|
|
372
|
+
}
|
|
373
|
+
chunks.push(value);
|
|
374
|
+
}
|
|
375
|
+
const body = new Uint8Array(size);
|
|
376
|
+
let offset = 0;
|
|
377
|
+
for (const chunk of chunks) {
|
|
378
|
+
body.set(chunk, offset);
|
|
379
|
+
offset += chunk.byteLength;
|
|
380
|
+
}
|
|
381
|
+
return body;
|
|
382
|
+
}
|
|
291
383
|
//# sourceMappingURL=media.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media.js","sourceRoot":"","sources":["../../../src/value-objects/media/media.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"media.js","sourceRoot":"","sources":["../../../src/value-objects/media/media.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@particle-academy/prism",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "TypeScript port of Prism — a unified API layer over LLM providers.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"private": false,
|
|
12
12
|
"sideEffects": false,
|
|
13
13
|
"engines": {
|
|
14
|
-
"node": ">=
|
|
14
|
+
"node": ">=22"
|
|
15
15
|
},
|
|
16
16
|
"main": "./dist/index.js",
|
|
17
17
|
"types": "./dist/index.d.ts",
|
|
@@ -42,6 +42,6 @@
|
|
|
42
42
|
"globals": "^17.11.0",
|
|
43
43
|
"typescript": "^5.9.3",
|
|
44
44
|
"typescript-eslint": "^8.68.0",
|
|
45
|
-
"vitest": "^4.1.
|
|
45
|
+
"vitest": "^4.1.12"
|
|
46
46
|
}
|
|
47
47
|
}
|