@mochabug/adapt-sdk 0.4.2 → 0.4.5
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/anthropic-roundtrip.test.d.ts +2 -0
- package/dist/anthropic/anthropic-roundtrip.test.d.ts.map +1 -0
- package/dist/anthropic/anthropic.test.d.ts +2 -0
- package/dist/anthropic/anthropic.test.d.ts.map +1 -0
- package/dist/anthropic/index.d.ts +40 -65
- package/dist/anthropic/index.d.ts.map +1 -1
- package/dist/api/api.spec.d.ts +2 -0
- package/dist/api/api.spec.d.ts.map +1 -0
- package/dist/api/signal-api.spec.d.ts +17 -0
- package/dist/api/signal-api.spec.d.ts.map +1 -0
- package/dist/cel/cel.test.d.ts +2 -0
- package/dist/cel/cel.test.d.ts.map +1 -0
- package/dist/cjs/anthropic.cjs +1 -1
- package/dist/cjs/anthropic.cjs.map +4 -4
- package/dist/cjs/gemini.cjs +1 -1
- package/dist/cjs/gemini.cjs.map +4 -4
- package/dist/cjs/openai.cjs +1 -1
- package/dist/cjs/openai.cjs.map +4 -4
- package/dist/esm/anthropic.mjs +1 -1
- package/dist/esm/anthropic.mjs.map +4 -4
- package/dist/esm/gemini.mjs +1 -1
- package/dist/esm/gemini.mjs.map +4 -4
- package/dist/esm/openai.mjs +1 -1
- package/dist/esm/openai.mjs.map +4 -4
- package/dist/gemini/gemini-roundtrip.test.d.ts +2 -0
- package/dist/gemini/gemini-roundtrip.test.d.ts.map +1 -0
- package/dist/gemini/gemini.test.d.ts +2 -0
- package/dist/gemini/gemini.test.d.ts.map +1 -0
- package/dist/gemini/index.d.ts +40 -63
- package/dist/gemini/index.d.ts.map +1 -1
- package/dist/multi-format-regression.test.d.ts +2 -0
- package/dist/multi-format-regression.test.d.ts.map +1 -0
- package/dist/openai/index.d.ts +46 -67
- package/dist/openai/index.d.ts.map +1 -1
- package/dist/openai/openai-roundtrip.test.d.ts +2 -0
- package/dist/openai/openai-roundtrip.test.d.ts.map +1 -0
- package/dist/openai/openai.test.d.ts +2 -0
- package/dist/openai/openai.test.d.ts.map +1 -0
- package/dist/router/router.spec.d.ts +2 -0
- package/dist/router/router.spec.d.ts.map +1 -0
- package/dist/schema-utils.d.ts +80 -0
- package/dist/schema-utils.d.ts.map +1 -0
- package/dist/schema-utils.test.d.ts +2 -0
- package/dist/schema-utils.test.d.ts.map +1 -0
- package/dist/signals/signals.test.d.ts +2 -0
- package/dist/signals/signals.test.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic-roundtrip.test.d.ts","sourceRoot":"","sources":["../../src/anthropic/anthropic-roundtrip.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic.test.d.ts","sourceRoot":"","sources":["../../src/anthropic/anthropic.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { JTDSchemaJson, SignalDescriptorJson } from '../api';
|
|
2
|
+
import { type ConvertSuccessJson, type ConvertSuccessBinary, type ConvertSuccessSignals, type ConvertFailure, type ConvertSuccess } from '../schema-utils';
|
|
2
3
|
/**
|
|
3
4
|
* JSON Schema subset accepted by the Anthropic structured-output API.
|
|
4
5
|
*
|
|
@@ -22,54 +23,7 @@ export interface AnthropicSchema {
|
|
|
22
23
|
$defs?: Record<string, AnthropicSchema>;
|
|
23
24
|
$ref?: string;
|
|
24
25
|
}
|
|
25
|
-
|
|
26
|
-
* Successful conversion result for a JTD format.
|
|
27
|
-
*
|
|
28
|
-
* Returned when the raw LLM output has been coerced to match the JTD schema
|
|
29
|
-
* and passes JTD validation. `data` contains the deserialized, coerced, and
|
|
30
|
-
* JTD-validated JSON value.
|
|
31
|
-
*/
|
|
32
|
-
export interface ConvertSuccessJson {
|
|
33
|
-
success: true;
|
|
34
|
-
kind: 'json';
|
|
35
|
-
/** The deserialized, coerced, and JTD-validated JSON value. */
|
|
36
|
-
data: unknown;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Successful conversion result for a MIME (binary) format.
|
|
40
|
-
*
|
|
41
|
-
* Returned when the raw LLM output matches a MIME format. The base64 string
|
|
42
|
-
* produced by the model is decoded into raw binary bytes.
|
|
43
|
-
*/
|
|
44
|
-
export interface ConvertSuccessBinary {
|
|
45
|
-
success: true;
|
|
46
|
-
kind: 'binary';
|
|
47
|
-
/** The concrete MIME type of the binary content (e.g. `"image/png"`). */
|
|
48
|
-
mimeType: string;
|
|
49
|
-
/** The raw binary data decoded from the base64 string returned by the LLM. */
|
|
50
|
-
data: Uint8Array;
|
|
51
|
-
/** Optional filename, provided by the caller if available. */
|
|
52
|
-
filename?: string;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Failed conversion result.
|
|
56
|
-
*
|
|
57
|
-
* `errors` contains one or more human-readable strings describing validation
|
|
58
|
-
* or coercion failures. Each entry uses a JSON Pointer path prefix
|
|
59
|
-
* (e.g. `"/foo/bar: ..."`) to locate the problem within the data.
|
|
60
|
-
*/
|
|
61
|
-
export interface ConvertFailure {
|
|
62
|
-
success: false;
|
|
63
|
-
/** Array of human-readable error messages with JSON Pointer path prefixes. */
|
|
64
|
-
errors: string[];
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Discriminated union of conversion outcomes.
|
|
68
|
-
*
|
|
69
|
-
* Check `success` first, then narrow on `kind` (`'json'` or `'binary'`)
|
|
70
|
-
* for successful results.
|
|
71
|
-
*/
|
|
72
|
-
export type ConvertResult = ConvertSuccessJson | ConvertSuccessBinary | ConvertFailure;
|
|
26
|
+
export type { ConvertSuccessJson, ConvertSuccessBinary, ConvertSuccessSignals, ConvertFailure, ConvertSuccess, ConvertResult, } from '../schema-utils';
|
|
73
27
|
/**
|
|
74
28
|
* Converts JTD schemas or Adapt signal descriptors into Anthropic-compatible
|
|
75
29
|
* JSON Schema, and converts raw LLM output back into validated data.
|
|
@@ -124,7 +78,7 @@ export type ConvertResult = ConvertSuccessJson | ConvertSuccessBinary | ConvertF
|
|
|
124
78
|
* const restored = AnthropicConversion.fromJSON(cached);
|
|
125
79
|
* ```
|
|
126
80
|
*/
|
|
127
|
-
export declare class AnthropicConversion {
|
|
81
|
+
export declare class AnthropicConversion<T extends ConvertSuccess = ConvertSuccess> {
|
|
128
82
|
/** The Anthropic-specific JSON Schema to pass to the Anthropic API as the tool input schema. */
|
|
129
83
|
readonly schema: AnthropicSchema;
|
|
130
84
|
/**
|
|
@@ -146,6 +100,11 @@ export declare class AnthropicConversion {
|
|
|
146
100
|
* Set when created via {@link fromSignal}; `undefined` when created via {@link fromJTD}.
|
|
147
101
|
*/
|
|
148
102
|
readonly descriptor?: SignalDescriptorJson;
|
|
103
|
+
/**
|
|
104
|
+
* The original signal descriptors used to build this conversion.
|
|
105
|
+
* Set when created via {@link fromSignals}; `undefined` otherwise.
|
|
106
|
+
*/
|
|
107
|
+
readonly descriptors?: SignalDescriptorJson[];
|
|
149
108
|
/**
|
|
150
109
|
* Build a conversion from a JTD schema.
|
|
151
110
|
*
|
|
@@ -162,7 +121,7 @@ export declare class AnthropicConversion {
|
|
|
162
121
|
* nesting exceeding 32 levels, or **any circular reference** among
|
|
163
122
|
* definitions (Anthropic does not support recursive schemas).
|
|
164
123
|
*/
|
|
165
|
-
static fromJTD(jtdSchema: JTDSchemaJson): AnthropicConversion
|
|
124
|
+
static fromJTD(jtdSchema: JTDSchemaJson): AnthropicConversion<ConvertSuccessJson>;
|
|
166
125
|
/**
|
|
167
126
|
* Build a conversion from an Adapt signal descriptor.
|
|
168
127
|
*
|
|
@@ -177,7 +136,33 @@ export declare class AnthropicConversion {
|
|
|
177
136
|
* @throws If the descriptor has no formats, or a format has neither
|
|
178
137
|
* `jtdSchema` nor `mimeType`.
|
|
179
138
|
*/
|
|
180
|
-
static fromSignal(descriptor: SignalDescriptorJson): AnthropicConversion
|
|
139
|
+
static fromSignal(descriptor: SignalDescriptorJson, sharedDefs?: Record<string, JTDSchemaJson>): AnthropicConversion<ConvertSuccessJson | ConvertSuccessBinary>;
|
|
140
|
+
/**
|
|
141
|
+
* Build a conversion from multiple signal descriptors.
|
|
142
|
+
*
|
|
143
|
+
* Produces an object schema with one property per signal, suitable for
|
|
144
|
+
* use as structured output parameters. Each signal's schema is built via
|
|
145
|
+
* {@link fromSignal} internally.
|
|
146
|
+
*
|
|
147
|
+
* For Anthropic, optional signals are genuinely optional -- they are NOT
|
|
148
|
+
* added to `required` (no nullable wrapping needed).
|
|
149
|
+
*
|
|
150
|
+
* Receiver/transceiver compatible:
|
|
151
|
+
* ```ts
|
|
152
|
+
* const conv = AnthropicConversion.fromSignals(
|
|
153
|
+
* receiver.signals!,
|
|
154
|
+
* receiver.description,
|
|
155
|
+
* receiver.name
|
|
156
|
+
* );
|
|
157
|
+
* ```
|
|
158
|
+
*
|
|
159
|
+
* @param signals - Array of signal descriptors.
|
|
160
|
+
* @param description - Optional description for the compound schema.
|
|
161
|
+
* @param label - Optional label (reserved for other providers).
|
|
162
|
+
* @returns A new {@link AnthropicConversion} with `descriptors` set.
|
|
163
|
+
* @throws If any signal has no formats or an invalid format.
|
|
164
|
+
*/
|
|
165
|
+
static fromSignals(signals: SignalDescriptorJson[], description?: string, label?: string): AnthropicConversion<ConvertSuccessSignals>;
|
|
181
166
|
/**
|
|
182
167
|
* Restore an {@link AnthropicConversion} from its serialized form.
|
|
183
168
|
*
|
|
@@ -216,7 +201,7 @@ export declare class AnthropicConversion {
|
|
|
216
201
|
* @param json - The raw value returned by the Anthropic API (typically parsed JSON).
|
|
217
202
|
* @returns A {@link ConvertResult} indicating success or failure with errors.
|
|
218
203
|
*/
|
|
219
|
-
convert: (json: unknown) =>
|
|
204
|
+
convert: (json: unknown) => T | ConvertFailure;
|
|
220
205
|
/**
|
|
221
206
|
* Produce a JSON-serializable representation of this conversion.
|
|
222
207
|
*
|
|
@@ -227,17 +212,7 @@ export declare class AnthropicConversion {
|
|
|
227
212
|
*
|
|
228
213
|
* Called automatically by `JSON.stringify(conv)`.
|
|
229
214
|
*/
|
|
230
|
-
toJSON():
|
|
231
|
-
schema: AnthropicSchema;
|
|
232
|
-
strict: boolean;
|
|
233
|
-
descriptor: SignalDescriptorJson;
|
|
234
|
-
jtdSchema?: undefined;
|
|
235
|
-
} | {
|
|
236
|
-
schema: AnthropicSchema;
|
|
237
|
-
strict: boolean;
|
|
238
|
-
jtdSchema: JTDSchemaJson | undefined;
|
|
239
|
-
descriptor?: undefined;
|
|
240
|
-
};
|
|
215
|
+
toJSON(): Record<string, unknown>;
|
|
241
216
|
}
|
|
242
217
|
/**
|
|
243
218
|
* Convenience alias for {@link AnthropicConversion.fromJTD}.
|
|
@@ -245,12 +220,12 @@ export declare class AnthropicConversion {
|
|
|
245
220
|
* @param jtdSchema - A valid JTD schema (RFC 8927).
|
|
246
221
|
* @returns A new {@link AnthropicConversion}.
|
|
247
222
|
*/
|
|
248
|
-
export declare function convertToAnthropicSchema(jtdSchema: JTDSchemaJson): AnthropicConversion
|
|
223
|
+
export declare function convertToAnthropicSchema(jtdSchema: JTDSchemaJson): AnthropicConversion<ConvertSuccessJson>;
|
|
249
224
|
/**
|
|
250
225
|
* Convenience alias for {@link AnthropicConversion.fromSignal}.
|
|
251
226
|
*
|
|
252
227
|
* @param descriptor - An Adapt signal descriptor.
|
|
253
228
|
* @returns A new {@link AnthropicConversion}.
|
|
254
229
|
*/
|
|
255
|
-
export declare function convertSignalToAnthropicSchema(descriptor: SignalDescriptorJson): AnthropicConversion
|
|
230
|
+
export declare function convertSignalToAnthropicSchema(descriptor: SignalDescriptorJson): AnthropicConversion<ConvertSuccessJson | ConvertSuccessBinary>;
|
|
256
231
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/anthropic/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EAErB,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/anthropic/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,aAAa,EACb,oBAAoB,EAErB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAcL,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,cAAc,EAEpB,MAAM,iBAAiB,CAAC;AAMzB;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC7C,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,oBAAoB,CAAC,EAAE,KAAK,CAAC;IAC7B,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC;IAC5C,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,KAAK,CAAC,EAAE,eAAe,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAGD,YAAY,EACV,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,aAAa,GACd,MAAM,iBAAiB,CAAC;AAggBzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,qBAAa,mBAAmB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc;IACxE,gGAAgG;IAChG,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC;IACnC;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAC3C;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAI9C;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,OAAO,CACZ,SAAS,EAAE,aAAa,GACvB,mBAAmB,CAAC,kBAAkB,CAAC;IAmC1C;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,UAAU,CACf,UAAU,EAAE,oBAAoB,EAChC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GACzC,mBAAmB,CAAC,kBAAkB,GAAG,oBAAoB,CAAC;IAKjE;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,MAAM,CAAC,WAAW,CAChB,OAAO,EAAE,oBAAoB,EAAE,EAC/B,WAAW,CAAC,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,MAAM,GACb,mBAAmB,CAAC,qBAAqB,CAAC;IAsD7C;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,mBAAmB;IAwB5E,OAAO;IAgBP;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,OAAO,GAAI,MAAM,OAAO,KAAG,CAAC,GAAG,cAAc,CAY3C;IAIF;;;;;;;;;OASG;IACH,MAAM;CAuBP;AAyHD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,aAAa,GACvB,mBAAmB,CAAC,kBAAkB,CAAC,CAEzC;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,oBAAoB,GAC/B,mBAAmB,CAAC,kBAAkB,GAAG,oBAAoB,CAAC,CAEhE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.spec.d.ts","sourceRoot":"","sources":["../../src/api/api.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2025 Mochabug Ltd.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=signal-api.spec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal-api.spec.d.ts","sourceRoot":"","sources":["../../src/api/signal-api.spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cel.test.d.ts","sourceRoot":"","sources":["../../src/cel/cel.test.ts"],"names":[],"mappings":""}
|
package/dist/cjs/anthropic.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var J=Object.defineProperty;var O=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var x=Object.prototype.hasOwnProperty;var E=(e,t)=>{for(var n in t)J(e,n,{get:t[n],enumerable:!0})},N=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of P(t))!x.call(e,r)&&r!==n&&J(e,r,{get:()=>t[r],enumerable:!(o=O(t,r))||o.enumerable});return e};var C=e=>N(J({},"__esModule",{value:!0}),e);var te={};E(te,{AnthropicConversion:()=>y,convertSignalToAnthropicSchema:()=>ee,convertToAnthropicSchema:()=>Q});module.exports=C(te);var S=require("jtd");var I=new Set(["int8","uint8","int16","uint16","int32","uint32"]);function M(e){return e.length===0?"/":e.map(t=>/^\d+$/.test(t)?`[${t}]`:`.${t}`).join("")}function k(e,t){let n=e;for(let o=0;o<t.length-1&&(n&&typeof n=="object"&&t[o]in n);o++)n=n[t[o]];return n}function F(e,t){let n=e;for(let o of t)if(n&&typeof n=="object")n=n[o];else return;return n}function _(e,t,n){let{instancePath:o,schemaPath:r}=e,i=M(o),s=r[r.length-1];if(s==="type"){let c=k(t,r)?.type;return c==="boolean"?`${i}: expected boolean`:c==="string"?`${i}: expected string`:c==="timestamp"?`${i}: expected timestamp string`:I.has(c)?`${i}: expected integer`:`${i}: expected number`}if(s==="enum"){let c=k(t,r)?.enum;return`${i}: expected one of [${c.join(", ")}]`}if(r.length>=2&&r[r.length-2]==="properties"&&s)return`${i==="/"?"":i}.${s}: missing required property`;if(s==="elements")return`${i}: expected array`;if(s==="properties"||s==="optionalProperties"||s==="values")return`${i}: expected object`;if(s==="discriminator")return`${i}: expected string discriminator`;if(s==="mapping"){let a=F(n,o);return`${i}: unknown variant "${a}"`}return r.length===0?`${i}: unexpected property`:`${i}: validation error at /${r.join("/")}`}function D(e,t,n){let o=n??e.definitions,r=o?{...e,definitions:o}:e;return(0,S.isValidSchema)(r)?(0,S.validate)(r,t,{maxDepth:U,maxErrors:q}).map(s=>_(s,r,t)):e.ref?[`/: unknown ref "${e.ref}"`]:["/: invalid schema"]}var U=32,q=100;var h=32,T=`Must be a valid JSON value encoded as a string. For objects: '{"key": "value"}', for arrays: '[1, 2]', for primitives: '"hello"' or '42' or 'true' or 'null'.`,V=`The variant data encoded as a valid JSON string (e.g. '{"key": "value"}').`,B="Array of key-value entries representing a map/dictionary. Each entry has a string 'key' (the property name) and a 'value' (the property value).",j={int8:{minimum:-128,maximum:127},uint8:{minimum:0,maximum:255},int16:{minimum:-32768,maximum:32767},uint16:{minimum:0,maximum:65535},int32:{minimum:-2147483648,maximum:2147483647},uint32:{minimum:0,maximum:4294967295}},A={minimum:-34028235e31,maximum:34028235e31};function b(e){return!e||typeof e!="object"?!0:e.type||e.enum||e.elements||e.values||e.discriminator||e.ref||e.properties&&Object.keys(e.properties).length>0||e.optionalProperties&&Object.keys(e.optionalProperties).length>0?!1:(e.properties!==void 0||e.optionalProperties!==void 0)&&e.additionalProperties===!0?!0:!(e.properties!==void 0||e.optionalProperties!==void 0)}function K(e,t){let n=e,o=0;for(;n.ref&&o<h;){let r=t?.[n.ref];if(!r)return!1;n=r,o++}return o>=h?!1:b(n)}function g(e){let t=[];if(!e||typeof e!="object")return t;if(e.ref&&t.push(e.ref),e.properties)for(let n of Object.values(e.properties))t.push(...g(n));if(e.optionalProperties)for(let n of Object.values(e.optionalProperties))t.push(...g(n));if(e.elements&&t.push(...g(e.elements)),e.values&&t.push(...g(e.values)),e.mapping)for(let n of Object.values(e.mapping))t.push(...g(n));return t}function G(e){let r=new Map;for(let s of Object.keys(e))r.set(s,0);function i(s){r.set(s,1);let a=e[s];if(a){for(let c of g(a))if(r.has(c)){if(r.get(c)===1)return c;if(r.get(c)===0){let p=i(c);if(p)return p}}}return r.set(s,2),null}for(let s of Object.keys(e))if(r.get(s)===0){let a=i(s);if(a)return a}return null}function f(e,t){return t?[e,"null"]:e}function H(e,t){e.description=e.description?`${e.description} ${t}`:t}var Y=new Set(["title","label","name","description"]);function l(e,t){let n=t.metadata;if(!n)return;let o=[],r=typeof n.title=="string"&&n.title.trim()||typeof n.label=="string"&&n.label.trim()||typeof n.name=="string"&&n.name.trim(),i=typeof n.description=="string"?n.description.trim():"";r&&i?o.push(`${r}. ${i}`):r?o.push(r):i&&o.push(i);let s=[];for(let[a,c]of Object.entries(n))Y.has(a)||(typeof c=="string"&&c.trim()?s.push(`[${a}: ${c.trim()}]`):(typeof c=="number"||typeof c=="boolean")&&s.push(`[${a}: ${c}]`));if(s.length>0&&o.push(s.join(" ")),o.length>0){let a=o.join(" ");e.description=e.description?`${e.description} ${a}`:a}}function m(e,t,n){if(n>h)throw new Error(`Schema nesting exceeded ${h} levels`);if(!e||typeof e!="object")return{type:"string",description:T};if(b(e)){let r={type:f("string",e.nullable===!0),description:T};return l(r,e),r}let o=e.nullable===!0;if(e.ref){let r=e.ref;if(!t?.[r])throw new Error(`Unresolved ref "${r}"`);if(o){let i={anyOf:[{$ref:`#/$defs/${r}`},{type:"null"}]};return l(i,e),i}return{$ref:`#/$defs/${r}`}}if(e.type){let r={},i,s=j[e.type];if(s)r.type=f("integer",o),i=`Value range: [${s.minimum}, ${s.maximum}].`;else switch(e.type){case"boolean":r.type=f("boolean",o);break;case"string":r.type=f("string",o);break;case"timestamp":r.type=f("string",o),r.format="date-time";break;case"float32":r.type=f("number",o),i=`Value range: [${A.minimum}, ${A.maximum}].`;break;case"float64":r.type=f("number",o);break;default:throw new Error(`Unknown JTD type "${e.type}"`)}return l(r,e),i&&H(r,i),r}if(e.enum){let r={type:f("string",o),enum:o?[...e.enum,null]:e.enum};return l(r,e),r}if(e.elements){let r={type:f("array",o),items:m(e.elements,t,n+1)};return l(r,e),r}if(e.properties||e.optionalProperties){let r={},i=[];if(e.properties)for(let[a,c]of Object.entries(e.properties))r[a]=m(c,t,n+1),i.push(a);if(e.optionalProperties)for(let[a,c]of Object.entries(e.optionalProperties))r[a]=m(c,t,n+1);let s={type:f("object",o),properties:r,additionalProperties:!1};return i.length>0&&(s.required=i),l(s,e),s}if(e.values){let r=m(e.values,t,n+1),i={type:f("array",o),description:B,items:{type:"object",properties:{key:{type:"string",description:"The property name."},value:r},required:["key","value"],additionalProperties:!1}};return l(i,e),i}if(e.discriminator&&e.mapping){let r=e.discriminator,i=e.mapping,s=[];for(let[c,p]of Object.entries(i)){let u;b(p)?u={type:"object",properties:{[r]:{const:c},_data:{type:"string",description:V}},required:[r,"_data"],additionalProperties:!1}:(u=m(p,t,n+1),u.properties[r]={const:c},(u.required??=[]).unshift(r),u.additionalProperties=!1),l(u,p),s.push(u)}o&&s.push({type:"null"});let a={anyOf:s};return l(a,e),a}return{type:"string",description:T}}var L=new Set(Object.keys(j));function d(e,t,n,o){if(o>h||e==null)return e;if(t.ref){let r=n?.[t.ref];return r?d(e,r,n,o+1):e}if(b(t)){if(typeof e=="string")try{return JSON.parse(e)}catch{return e}return e}if(t.type&&L.has(t.type))return typeof e=="number"&&!Number.isInteger(e)?Math.round(e):e;if(t.elements&&Array.isArray(e)){let r=t.elements;return e.map(i=>d(i,r,n,o+1))}if((t.properties||t.optionalProperties)&&typeof e=="object"&&e!==null){let r={...e};if(t.properties)for(let[i,s]of Object.entries(t.properties))i in r&&(r[i]=d(r[i],s,n,o+1));if(t.optionalProperties)for(let[i,s]of Object.entries(t.optionalProperties))i in r&&(r[i]=d(r[i],s,n,o+1));return r}if(t.values&&Array.isArray(e)){let r={};for(let i of e)if(typeof i=="object"&&i!==null){let s=i,a=s.key;r[a]=d(s.value,t.values,n,o+1)}return r}if(t.discriminator&&t.mapping&&typeof e=="object"&&e!==null){let r=e,i=t.discriminator,s=r[i];if(typeof s!="string")return e;let a=t.mapping[s];if(!a)return e;if(b(a)){let p=r._data;if(typeof p=="string")try{let u=JSON.parse(p);if(typeof u=="object"&&u!==null)return{[i]:s,...u}}catch{}return{[i]:s}}let c={[i]:s};if(a.properties)for(let[p,u]of Object.entries(a.properties))p in r&&(c[p]=d(r[p],u,n,o+1));if(a.optionalProperties)for(let[p,u]of Object.entries(a.optionalProperties))p in r&&(c[p]=d(r[p],u,n,o+1));return c}return e}function W(e){return{type:"object",description:`Binary content (MIME type: ${e}).`,properties:{data:{type:"string",description:`The base64-encoded binary content (MIME type: ${e}).`},filename:{type:"string",description:'Optional filename for the binary content (e.g. "report.pdf", "image.png").'}},required:["data"],additionalProperties:!1}}var y=class e{schema;strict;jtdSchema;descriptor;static fromJTD(t){let n=t.definitions;if(n&&Object.keys(n).length>0){let i=G(n);if(i)throw new Error(`Anthropic structured output does not support recursive schemas. Definition "${i}" contains a circular reference.`)}let o=!K(t,n),r;return o?(r=m(t,n,0),n&&Object.keys(n).length>0&&(r.$defs=Object.fromEntries(Object.entries(n).map(([i,s])=>[i,m(s,n,0)])))):(r={},l(r,t)),new e(r,o,t,void 0)}static fromSignal(t){let{schema:n,strict:o}=Z(t);return new e(n,o,void 0,t)}static fromJSON(t){let n=typeof t=="string"?JSON.parse(t):t;if(n.descriptor)return e.fromSignal(n.descriptor);if(n.jtdSchema)return e.fromJTD(n.jtdSchema);throw new Error("Cannot deserialize: missing jtdSchema or descriptor")}constructor(t,n,o,r){this.schema=t,this.strict=n,this.jtdSchema=o,this.descriptor=r}convert=t=>this.jtdSchema?R(this.jtdSchema,t):this.descriptor?z(this.descriptor,t):{success:!1,errors:["No source schema available"]};toJSON(){return this.descriptor?{schema:this.schema,strict:this.strict,descriptor:this.descriptor}:{schema:this.schema,strict:this.strict,jtdSchema:this.jtdSchema}}};function R(e,t){let n=e.definitions,o=d(t,e,n,0),r=D(e,o,n);return r.length>0?{success:!1,errors:r}:{success:!0,kind:"json",data:o}}function X(e,t){if(typeof t!="object"||t===null)return{success:!1,errors:[`/: expected object with 'data' field for MIME type ${e}, got ${typeof t}`]};let n=t;if(typeof n.data!="string")return{success:!1,errors:[`/data: expected base64 string for MIME type ${e}, got ${typeof n.data}`]};let o={success:!0,kind:"binary",mimeType:e,data:new Uint8Array(Buffer.from(n.data,"base64"))};return typeof n.filename=="string"&&n.filename&&(o.filename=n.filename),o}function $(e,t){return e.mimeType?X(e.mimeType,t):e.jtdSchema?R(e.jtdSchema,t):{success:!1,errors:["Signal format has neither jtdSchema nor mimeType"]}}function z(e,t){let n=e.formats;if(!n||n.length===0)return{success:!1,errors:["Signal descriptor has no formats"]};if(n.length===1)return $(n[0],t);if(typeof t!="object"||t===null)return{success:!1,errors:[`/: expected object with format properties, got ${typeof t}`]};let o=t;for(let i=0;i<n.length;i++){let s=`format_${i}`;if(o[s]!==void 0&&o[s]!==null)return $(n[i],o[s])}if(e.optional)return{success:!0,kind:"json",data:null};let r=n.map((i,s)=>`format_${s}`);return{success:!1,errors:[`Signal '${e.name??"unnamed"}' is required but no format was provided. Set exactly one of: ${r.join(", ")}.`]}}function Z(e){let t=e.formats;if(!t||t.length===0)throw new Error("Signal descriptor has no formats");if(t.length===1){let[a]=t,{schema:c,strict:p}=w(a);if(e.label||e.description){let u=[];e.label&&u.push(e.label),e.description&&u.push(e.description);let v=u.join(". ");c.description=c.description?`${v} ${c.description}`:v}return{schema:c,strict:p}}let n={};for(let[a,c]of t.entries()){let{schema:p}=w(c);c.jtdSchema&&(p.description=p.description?`Structured JSON data. ${p.description}`:"Structured JSON data."),n[`format_${a}`]=p}let o=Object.keys(n),r=e.description??"",i=e.optional?"Provide at most ONE of the following format properties. All are optional.":`You MUST provide exactly ONE of the following format properties: ${o.join(", ")}.`;return{schema:{type:"object",description:r?`${r} ${i}`:i,properties:n,additionalProperties:!1},strict:!0}}function w(e){if(e.jtdSchema){let t=y.fromJTD(e.jtdSchema);return{schema:t.schema,strict:t.strict}}if(e.mimeType)return{schema:W(e.mimeType),strict:!0};throw new Error("Signal format has neither jtdSchema nor mimeType")}function Q(e){return y.fromJTD(e)}function ee(e){return y.fromSignal(e)}0&&(module.exports={AnthropicConversion,convertSignalToAnthropicSchema,convertToAnthropicSchema});
|
|
1
|
+
"use strict";var w=Object.defineProperty;var B=Object.getOwnPropertyDescriptor;var V=Object.getOwnPropertyNames;var G=Object.prototype.hasOwnProperty;var H=(e,t)=>{for(var n in t)w(e,n,{get:t[n],enumerable:!0})},K=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of V(t))!G.call(e,r)&&r!==n&&w(e,r,{get:()=>t[r],enumerable:!(o=B(t,r))||o.enumerable});return e};var L=e=>K(w({},"__esModule",{value:!0}),e);var ce={};H(ce,{AnthropicConversion:()=>D,convertSignalToAnthropicSchema:()=>ae,convertToAnthropicSchema:()=>se});module.exports=L(ce);var T=require("jtd");var Y=new Set(["int8","uint8","int16","uint16","int32","uint32"]);function W(e){return e.length===0?"/":e.map(t=>/^\d+$/.test(t)?`[${t}]`:`.${t}`).join("")}function E(e,t){let n=e;for(let o=0;o<t.length-1&&(n&&typeof n=="object"&&t[o]in n);o++)n=n[t[o]];return n}function X(e,t){let n=e;for(let o of t)if(n&&typeof n=="object")n=n[o];else return;return n}function z(e,t,n){let{instancePath:o,schemaPath:r}=e,i=W(o),s=r[r.length-1];if(s==="type"){let c=E(t,r)?.type;return c==="boolean"?`${i}: expected boolean`:c==="string"?`${i}: expected string`:c==="timestamp"?`${i}: expected timestamp string`:Y.has(c)?`${i}: expected integer`:`${i}: expected number`}if(s==="enum"){let c=E(t,r)?.enum;return`${i}: expected one of [${c.join(", ")}]`}if(r.length>=2&&r[r.length-2]==="properties"&&s)return`${i==="/"?"":i}.${s}: missing required property`;if(s==="elements")return`${i}: expected array`;if(s==="properties"||s==="optionalProperties"||s==="values")return`${i}: expected object`;if(s==="discriminator")return`${i}: expected string discriminator`;if(s==="mapping"){let a=X(n,o);return`${i}: unknown variant "${a}"`}return r.length===0?`${i}: unexpected property`:`${i}: validation error at /${r.join("/")}`}function P(e,t,n){let o=n??e.definitions,r=o?{...e,definitions:o}:e;return(0,T.isValidSchema)(r)?(0,T.validate)(r,t,{maxDepth:Z,maxErrors:Q}).map(s=>z(s,r,t)):e.ref?[`/: unknown ref "${e.ref}"`]:["/: invalid schema"]}var Z=32,Q=100;var J=32,R={int8:{minimum:-128,maximum:127},uint8:{minimum:0,maximum:255},int16:{minimum:-32768,maximum:32767},uint16:{minimum:0,maximum:65535},int32:{minimum:-2147483648,maximum:2147483647},uint32:{minimum:0,maximum:4294967295}},$={minimum:-34028235e31,maximum:34028235e31},j=`Must be a valid JSON value encoded as a string. For objects: '{"key": "value"}', for arrays: '[1, 2]', for primitives: '"hello"' or '42' or 'true' or 'null'.`,F=`The variant data encoded as a valid JSON string (e.g. '{"key": "value"}').`,M="Array of key-value entries representing a map/dictionary. Each entry has a string 'key' (the property name) and a 'value' (the property value).";function l(e,t){return t?[e,"null"]:e}function k(e,t){if(e===t)return!0;if(e==null||t==null||typeof e!=typeof t||typeof e!="object")return!1;if(Array.isArray(e))return Array.isArray(t)&&e.length===t.length&&e.every((i,s)=>k(i,t[s]));if(Array.isArray(t))return!1;let n=e,o=t,r=Object.keys(n);if(r.length!==Object.keys(o).length)return!1;for(let i of r)if(!(i in o)||!k(n[i],o[i]))return!1;return!0}function b(e){return!e||typeof e!="object"?!0:e.type||e.enum||e.elements||e.values||e.discriminator||e.ref||e.properties&&Object.keys(e.properties).length>0||e.optionalProperties&&Object.keys(e.optionalProperties).length>0?!1:(e.properties!==void 0||e.optionalProperties!==void 0)&&e.additionalProperties===!0?!0:!(e.properties!==void 0||e.optionalProperties!==void 0)}function A(e,t){let n=e,o=0;for(;n.ref&&o<J;){let r=t?.[n.ref];if(!r)return!1;n=r,o++}return o>=J?!1:b(n)}function O(e,t,n){let o=e.definitions,r=n(t,e,o,0),i=P(e,r,o);return i.length>0?{success:!1,errors:i}:{success:!0,kind:"json",data:r}}function ee(e,t){if(typeof t!="object"||t===null)return{success:!1,errors:[`/: expected object with 'data' field for MIME type ${e}, got ${typeof t}`]};let n=t;if(typeof n.data!="string")return{success:!1,errors:[`/data: expected base64 string for MIME type ${e}, got ${typeof n.data}`]};let o={success:!0,kind:"binary",mimeType:e,data:new Uint8Array(Buffer.from(n.data,"base64"))};return typeof n.filename=="string"&&n.filename&&(o.filename=n.filename),o}function N(e,t,n){return e.mimeType?ee(e.mimeType,t):e.jtdSchema?O(e.jtdSchema,t,n):{success:!1,errors:["Signal format has neither jtdSchema nor mimeType"]}}function x(e,t,n){let o=e.formats;if(!o||o.length===0)return{success:!1,errors:["Signal descriptor has no formats"]};if(o.length===1)return N(o[0],t,n);if(typeof t!="object"||t===null)return{success:!1,errors:[`/: expected object with format properties, got ${typeof t}`]};let r=t;for(let s=0;s<o.length;s++){let a=`format_${s}`;if(r[a]!==void 0&&r[a]!==null)return N(o[s],r[a],n)}if(e.optional)return{success:!0,kind:"json",data:null};let i=o.map((s,a)=>`format_${a}`);return{success:!1,errors:[`Signal '${e.name??"unnamed"}' is required but no format was provided. Set exactly one of: ${i.join(", ")}.`]}}function U(e,t,n){if(typeof t!="object"||t===null)return{success:!1,errors:["/: expected object with signal properties, got "+typeof t]};let o=t,r={},i=[];for(let s of e){if(!s.name)continue;let a=o[s.name];if(a==null)continue;let c=x(s,a,n);if(c.success)c.kind==="binary"?r[s.name]={data:c.data,mimeType:c.mimeType,filename:c.filename}:c.kind==="json"&&(r[s.name]=c.data);else for(let u of c.errors)i.push(`/${s.name}${u.startsWith("/")?"":": "}${u}`)}return i.length>0?{success:!1,errors:i}:{success:!0,kind:"signals",signals:r}}function S(e,t){if(!e||typeof e!="object")return e;let n={...e};return n.ref&&t.has(n.ref)&&(n.ref=t.get(n.ref)),n.properties&&(n.properties=Object.fromEntries(Object.entries(n.properties).map(([o,r])=>[o,S(r,t)]))),n.optionalProperties&&(n.optionalProperties=Object.fromEntries(Object.entries(n.optionalProperties).map(([o,r])=>[o,S(r,t)]))),n.elements&&(n.elements=S(n.elements,t)),n.values&&(n.values=S(n.values,t)),n.mapping&&(n.mapping=Object.fromEntries(Object.entries(n.mapping).map(([o,r])=>[o,S(r,t)]))),n.definitions&&delete n.definitions,n}function I(e){let t={},n=new Map;for(let r=0;r<e.length;r++){let i=e[r].formats;if(i)for(let s=0;s<i.length;s++){let a=i[s].jtdSchema?.definitions;if(!a||Object.keys(a).length===0)continue;let c=new Map,u=!1;for(let[p,f]of Object.entries(a)){let d=t[p];if(d&&!k(d,f)){u=!0;break}}if(u)for(let[p,f]of Object.entries(a)){let d=t[p];if(!(d&&k(d,f)))if(d){let h=1;for(;t[`${p}_${h}`];)h++;let C=`${p}_${h}`;c.set(p,C),t[C]=f}else t[p]=f}else for(let[p,f]of Object.entries(a))t[p]||(t[p]=f);c.size>0&&n.set(`${r}:${s}`,c)}}for(let[,r]of n)for(let[,i]of r)t[i]=S(t[i],r);let o=e.map((r,i)=>{let s=r.formats;if(!s)return r;let a=!1,c=s.map((u,p)=>{if(!u.jtdSchema)return u;let f=n.get(`${i}:${p}`),d=u.jtdSchema.definitions&&Object.keys(u.jtdSchema.definitions).length>0;if(!f&&!d)return u;a=!0;let h=f?S(u.jtdSchema,f):{...u.jtdSchema};return delete h.definitions,{...u,jtdSchema:h}});return a?{...r,formats:c}:r});return{mergedDefs:t,signalsCopy:o}}function v(e){let t=[];if(!e||typeof e!="object")return t;if(e.ref&&t.push(e.ref),e.properties)for(let n of Object.values(e.properties))t.push(...v(n));if(e.optionalProperties)for(let n of Object.values(e.optionalProperties))t.push(...v(n));if(e.elements&&t.push(...v(e.elements)),e.values&&t.push(...v(e.values)),e.mapping)for(let n of Object.values(e.mapping))t.push(...v(n));return t}function q(e){let r=new Map;for(let s of Object.keys(e))r.set(s,0);function i(s){r.set(s,1);let a=e[s];if(a){for(let c of v(a))if(r.has(c)){if(r.get(c)===1)return c;if(r.get(c)===0){let u=i(c);if(u)return u}}}return r.set(s,2),null}for(let s of Object.keys(e))if(r.get(s)===0){let a=i(s);if(a)return a}return null}function te(e,t){e.description=e.description?`${e.description} ${t}`:t}var ne=new Set(["title","label","name","description"]);function m(e,t){let n=t.metadata;if(!n)return;let o=[],r=typeof n.title=="string"&&n.title.trim()||typeof n.label=="string"&&n.label.trim()||typeof n.name=="string"&&n.name.trim(),i=typeof n.description=="string"?n.description.trim():"";r&&i?o.push(`${r}. ${i}`):r?o.push(r):i&&o.push(i);let s=[];for(let[a,c]of Object.entries(n))ne.has(a)||(typeof c=="string"&&c.trim()?s.push(`[${a}: ${c.trim()}]`):(typeof c=="number"||typeof c=="boolean")&&s.push(`[${a}: ${c}]`));if(s.length>0&&o.push(s.join(" ")),o.length>0){let a=o.join(" ");e.description=e.description?`${e.description} ${a}`:a}}function y(e,t,n){if(n>J)throw new Error(`Schema nesting exceeded ${J} levels`);if(!e||typeof e!="object")return{type:"string",description:j};if(b(e)){let r={type:l("string",e.nullable===!0),description:j};return m(r,e),r}let o=e.nullable===!0;if(e.ref){let r=e.ref;if(!t?.[r])throw new Error(`Unresolved ref "${r}"`);if(o){let i={anyOf:[{$ref:`#/$defs/${r}`},{type:"null"}]};return m(i,e),i}return{$ref:`#/$defs/${r}`}}if(e.type){let r={},i,s=R[e.type];if(s)r.type=l("integer",o),i=`Value range: [${s.minimum}, ${s.maximum}].`;else switch(e.type){case"boolean":r.type=l("boolean",o);break;case"string":r.type=l("string",o);break;case"timestamp":r.type=l("string",o),r.format="date-time";break;case"float32":r.type=l("number",o),i=`Value range: [${$.minimum}, ${$.maximum}].`;break;case"float64":r.type=l("number",o);break;default:throw new Error(`Unknown JTD type "${e.type}"`)}return m(r,e),i&&te(r,i),r}if(e.enum){let r={type:l("string",o),enum:o?[...e.enum,null]:e.enum};return m(r,e),r}if(e.elements){let r={type:l("array",o),items:y(e.elements,t,n+1)};return m(r,e),r}if(e.properties||e.optionalProperties){let r={},i=[];if(e.properties)for(let[a,c]of Object.entries(e.properties))r[a]=y(c,t,n+1),i.push(a);if(e.optionalProperties)for(let[a,c]of Object.entries(e.optionalProperties))r[a]=y(c,t,n+1);let s={type:l("object",o),properties:r,additionalProperties:!1};return i.length>0&&(s.required=i),m(s,e),s}if(e.values){let r=y(e.values,t,n+1),i={type:l("array",o),description:M,items:{type:"object",properties:{key:{type:"string",description:"The property name."},value:r},required:["key","value"],additionalProperties:!1}};return m(i,e),i}if(e.discriminator&&e.mapping){let r=e.discriminator,i=e.mapping,s=[];for(let[c,u]of Object.entries(i)){let p;b(u)?p={type:"object",properties:{[r]:{const:c},_data:{type:"string",description:F}},required:[r,"_data"],additionalProperties:!1}:(p=y(u,t,n+1),p.properties[r]={const:c},(p.required??=[]).unshift(r),p.additionalProperties=!1),m(p,u),s.push(p)}o&&s.push({type:"null"});let a={anyOf:s};return m(a,e),a}return{type:"string",description:j}}var re=new Set(Object.keys(R));function g(e,t,n,o){if(o>J||e==null)return e;if(t.ref){let r=n?.[t.ref];return r?g(e,r,n,o+1):e}if(b(t)){if(typeof e=="string")try{return JSON.parse(e)}catch{return e}return e}if(t.type&&re.has(t.type))return typeof e=="number"&&!Number.isInteger(e)?Math.round(e):e;if(t.elements&&Array.isArray(e)){let r=t.elements;return e.map(i=>g(i,r,n,o+1))}if((t.properties||t.optionalProperties)&&typeof e=="object"&&e!==null){let r={...e};if(t.properties)for(let[i,s]of Object.entries(t.properties))i in r&&(r[i]=g(r[i],s,n,o+1));if(t.optionalProperties)for(let[i,s]of Object.entries(t.optionalProperties))i in r&&(r[i]=g(r[i],s,n,o+1));return r}if(t.values&&Array.isArray(e)){let r={};for(let i of e)if(typeof i=="object"&&i!==null){let s=i,a=s.key;r[a]=g(s.value,t.values,n,o+1)}return r}if(t.discriminator&&t.mapping&&typeof e=="object"&&e!==null){let r=e,i=t.discriminator,s=r[i];if(typeof s!="string")return e;let a=t.mapping[s];if(!a)return e;if(b(a)){let u=r._data;if(typeof u=="string")try{let p=JSON.parse(u);if(typeof p=="object"&&p!==null)return{[i]:s,...p}}catch{}return{[i]:s}}let c={[i]:s};if(a.properties)for(let[u,p]of Object.entries(a.properties))u in r&&(c[u]=g(r[u],p,n,o+1));if(a.optionalProperties)for(let[u,p]of Object.entries(a.optionalProperties))u in r&&(c[u]=g(r[u],p,n,o+1));return c}return e}function ie(e){return{type:"object",description:`Binary content (MIME type: ${e}).`,properties:{data:{type:"string",description:`The base64-encoded binary content (MIME type: ${e}).`},filename:{type:"string",description:'Optional filename for the binary content (e.g. "report.pdf", "image.png").'}},required:["data"],additionalProperties:!1}}var D=class e{schema;strict;jtdSchema;descriptor;descriptors;static fromJTD(t){let n=t.definitions;if(n&&Object.keys(n).length>0){let i=q(n);if(i)throw new Error(`Anthropic structured output does not support recursive schemas. Definition "${i}" contains a circular reference.`)}let o=!A(t,n),r;return o?(r=y(t,n,0),n&&Object.keys(n).length>0&&(r.$defs=Object.fromEntries(Object.entries(n).map(([i,s])=>[i,y(s,n,0)])))):(r={},m(r,t)),new e(r,o,t,void 0)}static fromSignal(t,n){let{schema:o,strict:r}=oe(t,n);return new e(o,r,void 0,t)}static fromSignals(t,n,o){let{mergedDefs:r,signalsCopy:i}=I(t),s={},a=[],c=!0;for(let p of i){if(!p.name)continue;let f=e.fromSignal(p,r);f.strict||(c=!1),s[p.name]=f.schema,p.optional||a.push(p.name)}let u={type:"object",properties:s,required:a.length>0?a:void 0,additionalProperties:!1};return Object.keys(r).length>0&&(u.$defs=Object.fromEntries(Object.entries(r).map(([p,f])=>[p,y(f,r,0)]))),o&&n?u.description=`${o}. ${n}`:o?u.description=o:n&&(u.description=n),new e(u,c,void 0,void 0,t)}static fromJSON(t){let n=typeof t=="string"?JSON.parse(t):t;if(n.descriptors)return e.fromSignals(n.descriptors,n.description,n.label);if(n.descriptor)return e.fromSignal(n.descriptor);if(n.jtdSchema)return e.fromJTD(n.jtdSchema);throw new Error("Cannot deserialize: missing jtdSchema, descriptor, or descriptors")}constructor(t,n,o,r,i){this.schema=t,this.strict=n,this.jtdSchema=o,this.descriptor=r,this.descriptors=i}convert=t=>this.descriptors?U(this.descriptors,t,g):this.jtdSchema?O(this.jtdSchema,t,g):this.descriptor?x(this.descriptor,t,g):{success:!1,errors:["No source schema available"]};toJSON(){if(this.descriptors){let t={schema:this.schema,strict:this.strict,descriptors:this.descriptors};return this.schema.description&&(t.description=this.schema.description),t}return this.descriptor?{schema:this.schema,strict:this.strict,descriptor:this.descriptor}:{schema:this.schema,strict:this.strict,jtdSchema:this.jtdSchema}}};function oe(e,t){let n=e.formats;if(!n||n.length===0)throw new Error("Signal descriptor has no formats");if(n.length===1){let[c]=n,{schema:u,strict:p}=_(c,t);if(e.label||e.description){let f=[];e.label&&f.push(e.label),e.description&&f.push(e.description);let d=f.join(". ");u.description=u.description?`${d} ${u.description}`:d}return{schema:u,strict:p}}let o={};for(let[c,u]of n.entries()){let{schema:p}=_(u,t);u.jtdSchema&&(p.description=p.description?`Structured JSON data. ${p.description}`:"Structured JSON data."),o[`format_${c}`]=p}let r=Object.keys(o),i=e.description??"",s=e.optional?"Provide at most ONE of the following format properties. All are optional.":`You MUST provide exactly ONE of the following format properties: ${r.join(", ")}.`;return{schema:{type:"object",description:i?`${i} ${s}`:s,properties:o,additionalProperties:!1},strict:!0}}function _(e,t){if(e.jtdSchema){let n=t??e.jtdSchema.definitions;if(n&&Object.keys(n).length>0){let i=q(n);if(i)throw new Error(`Anthropic structured output does not support recursive schemas. Definition "${i}" contains a circular reference.`)}let o=!A(e.jtdSchema,n),r;return o?(r=y(e.jtdSchema,n,0),!t&&n&&Object.keys(n).length>0&&(r.$defs=Object.fromEntries(Object.entries(n).map(([i,s])=>[i,y(s,n,0)])))):(r={},m(r,e.jtdSchema)),{schema:r,strict:o}}if(e.mimeType)return{schema:ie(e.mimeType),strict:!0};throw new Error("Signal format has neither jtdSchema nor mimeType")}function se(e){return D.fromJTD(e)}function ae(e){return D.fromSignal(e)}0&&(module.exports={AnthropicConversion,convertSignalToAnthropicSchema,convertToAnthropicSchema});
|
|
2
2
|
//# sourceMappingURL=anthropic.cjs.map
|