@mochabug/adapt-sdk 0.4.3 → 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.
Files changed (47) hide show
  1. package/dist/anthropic/anthropic-roundtrip.test.d.ts +2 -0
  2. package/dist/anthropic/anthropic-roundtrip.test.d.ts.map +1 -0
  3. package/dist/anthropic/anthropic.test.d.ts +2 -0
  4. package/dist/anthropic/anthropic.test.d.ts.map +1 -0
  5. package/dist/anthropic/index.d.ts +3 -70
  6. package/dist/anthropic/index.d.ts.map +1 -1
  7. package/dist/api/api.spec.d.ts +2 -0
  8. package/dist/api/api.spec.d.ts.map +1 -0
  9. package/dist/api/signal-api.spec.d.ts +17 -0
  10. package/dist/api/signal-api.spec.d.ts.map +1 -0
  11. package/dist/cel/cel.test.d.ts +2 -0
  12. package/dist/cel/cel.test.d.ts.map +1 -0
  13. package/dist/cjs/anthropic.cjs +1 -1
  14. package/dist/cjs/anthropic.cjs.map +4 -4
  15. package/dist/cjs/gemini.cjs +1 -1
  16. package/dist/cjs/gemini.cjs.map +4 -4
  17. package/dist/cjs/openai.cjs +1 -1
  18. package/dist/cjs/openai.cjs.map +4 -4
  19. package/dist/esm/anthropic.mjs +1 -1
  20. package/dist/esm/anthropic.mjs.map +4 -4
  21. package/dist/esm/gemini.mjs +1 -1
  22. package/dist/esm/gemini.mjs.map +4 -4
  23. package/dist/esm/openai.mjs +1 -1
  24. package/dist/esm/openai.mjs.map +4 -4
  25. package/dist/gemini/gemini-roundtrip.test.d.ts +2 -0
  26. package/dist/gemini/gemini-roundtrip.test.d.ts.map +1 -0
  27. package/dist/gemini/gemini.test.d.ts +2 -0
  28. package/dist/gemini/gemini.test.d.ts.map +1 -0
  29. package/dist/gemini/index.d.ts +2 -69
  30. package/dist/gemini/index.d.ts.map +1 -1
  31. package/dist/multi-format-regression.test.d.ts +2 -0
  32. package/dist/multi-format-regression.test.d.ts.map +1 -0
  33. package/dist/openai/index.d.ts +3 -76
  34. package/dist/openai/index.d.ts.map +1 -1
  35. package/dist/openai/openai-roundtrip.test.d.ts +2 -0
  36. package/dist/openai/openai-roundtrip.test.d.ts.map +1 -0
  37. package/dist/openai/openai.test.d.ts +2 -0
  38. package/dist/openai/openai.test.d.ts.map +1 -0
  39. package/dist/router/router.spec.d.ts +2 -0
  40. package/dist/router/router.spec.d.ts.map +1 -0
  41. package/dist/schema-utils.d.ts +80 -0
  42. package/dist/schema-utils.d.ts.map +1 -0
  43. package/dist/schema-utils.test.d.ts +2 -0
  44. package/dist/schema-utils.test.d.ts.map +1 -0
  45. package/dist/signals/signals.test.d.ts +2 -0
  46. package/dist/signals/signals.test.d.ts.map +1 -0
  47. package/package.json +1 -1
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=anthropic-roundtrip.test.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=anthropic.test.d.ts.map
@@ -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,75 +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
- * Successful conversion result for multiple signal descriptors.
68
- *
69
- * Returned when the conversion was created via {@link AnthropicConversion.fromSignals}.
70
- * Contains per-signal results keyed by signal name.
71
- */
72
- export interface ConvertSuccessSignals {
73
- success: true;
74
- kind: 'signals';
75
- /**
76
- * Per-signal values in dispatch-ready format.
77
- *
78
- * JSON signals are raw values (the JTD-validated data).
79
- * Binary signals are `{ data: Uint8Array, mimeType: string, filename?: string }`.
80
- *
81
- * This record can be passed directly to `dispatchExchange()` or `send()`.
82
- */
83
- signals: Record<string, unknown>;
84
- }
85
- /** Union of all successful conversion outcomes. */
86
- export type ConvertSuccess = ConvertSuccessJson | ConvertSuccessBinary | ConvertSuccessSignals;
87
- /**
88
- * Discriminated union of conversion outcomes.
89
- *
90
- * Check `success` first, then narrow on `kind` (`'json'`, `'binary'`, or
91
- * `'signals'`) for successful results.
92
- */
93
- export type ConvertResult = ConvertSuccess | ConvertFailure;
26
+ export type { ConvertSuccessJson, ConvertSuccessBinary, ConvertSuccessSignals, ConvertFailure, ConvertSuccess, ConvertResult, } from '../schema-utils';
94
27
  /**
95
28
  * Converts JTD schemas or Adapt signal descriptors into Anthropic-compatible
96
29
  * JSON Schema, and converts raw LLM output back into validated data.
@@ -203,7 +136,7 @@ export declare class AnthropicConversion<T extends ConvertSuccess = ConvertSucce
203
136
  * @throws If the descriptor has no formats, or a format has neither
204
137
  * `jtdSchema` nor `mimeType`.
205
138
  */
206
- static fromSignal(descriptor: SignalDescriptorJson): AnthropicConversion<ConvertSuccessJson | ConvertSuccessBinary>;
139
+ static fromSignal(descriptor: SignalDescriptorJson, sharedDefs?: Record<string, JTDSchemaJson>): AnthropicConversion<ConvertSuccessJson | ConvertSuccessBinary>;
207
140
  /**
208
141
  * Build a conversion from multiple signal descriptors.
209
142
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/anthropic/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/anthropic/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=api.spec.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cel.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cel.test.d.ts","sourceRoot":"","sources":["../../src/cel/cel.test.ts"],"names":[],"mappings":""}
@@ -1,2 +1,2 @@
1
- "use strict";var J=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var E=Object.prototype.hasOwnProperty;var C=(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))!E.call(e,r)&&r!==n&&J(e,r,{get:()=>t[r],enumerable:!(o=x(t,r))||o.enumerable});return e};var F=e=>N(J({},"__esModule",{value:!0}),e);var re={};C(re,{AnthropicConversion:()=>y,convertSignalToAnthropicSchema:()=>te,convertToAnthropicSchema:()=>ee});module.exports=F(re);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 q(e,t){let n=e;for(let o of t)if(n&&typeof n=="object")n=n[o];else return;return n}function U(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=q(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:V,maxErrors:_}).map(s=>U(s,r,t)):e.ref?[`/: unknown ref "${e.ref}"`]:["/: invalid schema"]}var V=32,_=100;var h=32,v=`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'.`,B=`The variant data encoded as a valid JSON string (e.g. '{"key": "value"}').`,K="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}},w={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 G(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 H(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 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 f(e,t){return t?[e,"null"]:e}function Y(e,t){e.description=e.description?`${e.description} ${t}`:t}var L=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))L.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:v};if(b(e)){let r={type:f("string",e.nullable===!0),description:v};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: [${w.minimum}, ${w.maximum}].`;break;case"float64":r.type=f("number",o);break;default:throw new Error(`Unknown JTD type "${e.type}"`)}return l(r,e),i&&Y(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:K,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,u]of Object.entries(i)){let p;b(u)?p={type:"object",properties:{[r]:{const:c},_data:{type:"string",description:B}},required:[r,"_data"],additionalProperties:!1}:(p=m(u,t,n+1),p.properties[r]={const:c},(p.required??=[]).unshift(r),p.additionalProperties=!1),l(p,u),s.push(p)}o&&s.push({type:"null"});let a={anyOf:s};return l(a,e),a}return{type:"string",description:v}}var W=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&&W.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 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]=d(r[u],p,n,o+1));if(a.optionalProperties)for(let[u,p]of Object.entries(a.optionalProperties))u in r&&(c[u]=d(r[u],p,n,o+1));return c}return e}function X(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;descriptors;static fromJTD(t){let n=t.definitions;if(n&&Object.keys(n).length>0){let i=H(n);if(i)throw new Error(`Anthropic structured output does not support recursive schemas. Definition "${i}" contains a circular reference.`)}let o=!G(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}=Q(t);return new e(n,o,void 0,t)}static fromSignals(t,n,o){let r={},i=[],s=!0;for(let c of t){if(!c.name)continue;let u=e.fromSignal(c);u.strict||(s=!1),r[c.name]=u.schema,c.optional||i.push(c.name)}let a={type:"object",properties:r,required:i.length>0?i:void 0,additionalProperties:!1};return o&&n?a.description=`${o}. ${n}`:o?a.description=o:n&&(a.description=n),new e(a,s,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?Z(this.descriptors,t):this.jtdSchema?R(this.jtdSchema,t):this.descriptor?O(this.descriptor,t):{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 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 z(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?z(e.mimeType,t):e.jtdSchema?R(e.jtdSchema,t):{success:!1,errors:["Signal format has neither jtdSchema nor mimeType"]}}function O(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,t){if(typeof t!="object"||t===null)return{success:!1,errors:["/: expected object with signal properties, got "+typeof t]};let n=t,o={},r=[];for(let i of e){if(!i.name)continue;let s=n[i.name];if(s==null)continue;let a=O(i,s);if(a.success)a.kind==="binary"?o[i.name]={data:a.data,mimeType:a.mimeType,filename:a.filename}:a.kind==="json"&&(o[i.name]=a.data);else for(let c of a.errors)r.push(`/${i.name}${c.startsWith("/")?"":": "}${c}`)}return r.length>0?{success:!1,errors:r}:{success:!0,kind:"signals",signals:o}}function Q(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:u}=A(a);if(e.label||e.description){let p=[];e.label&&p.push(e.label),e.description&&p.push(e.description);let T=p.join(". ");c.description=c.description?`${T} ${c.description}`:T}return{schema:c,strict:u}}let n={};for(let[a,c]of t.entries()){let{schema:u}=A(c);c.jtdSchema&&(u.description=u.description?`Structured JSON data. ${u.description}`:"Structured JSON data."),n[`format_${a}`]=u}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 A(e){if(e.jtdSchema){let t=y.fromJTD(e.jtdSchema);return{schema:t.schema,strict:t.strict}}if(e.mimeType)return{schema:X(e.mimeType),strict:!0};throw new Error("Signal format has neither jtdSchema nor mimeType")}function ee(e){return y.fromJTD(e)}function te(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