@adhd/apigen-engine-runtime 0.3.3 β†’ 0.3.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/CHANGELOG.md CHANGED
@@ -1,3 +1,22 @@
1
+ ## 0.3.5 (2026-10-21)
2
+
3
+ ### 🩹 Fixes
4
+
5
+ - **apigen-engine-runtime:** attach the run-mode $ref cause without ErrorOptions and clear spec type errors ([e5d386b0](https://github.com/PseudoSky/adhd/commit/e5d386b0))
6
+ - **apigen-engine-runtime:** let rootRefResolver own run-mode $ref diagnosis and keep the cause ([f4a42a90](https://github.com/PseudoSky/adhd/commit/f4a42a90))
7
+ - **apigen-base-logical:** detect run-mode cycles and align emit with batch encoding ([5fcf5ade](https://github.com/PseudoSky/adhd/commit/5fcf5ade))
8
+ - **apigen-engine-runtime:** distinguish unsupported $ref forms; document batch chunk and stream-identity semantics ([a901ab8b](https://github.com/PseudoSky/adhd/commit/a901ab8b))
9
+ - **apigen-engine-runtime:** encode streaming chunks instead of transcoding the stream object ([5701848e](https://github.com/PseudoSky/adhd/commit/5701848e))
10
+ - **apigen-engine-runtime:** resolve $ref against the op schema root in run-mode dispatch ([373f1b0f](https://github.com/PseudoSky/adhd/commit/373f1b0f))
11
+
12
+ ### ❀️ Thank You
13
+
14
+ - pseudosky
15
+
16
+ ## 0.3.4 (2026-10-15)
17
+
18
+ This was a version bump only for apigen-engine-runtime to align it with other projects, there were no code changes.
19
+
1
20
  ## 0.3.3 (2026-10-09)
2
21
 
3
22
  ### 🩹 Fixes
package/README.md CHANGED
@@ -13,7 +13,7 @@ import { dispatch, buildFnTable, describeParams, needsEnvelopeField, dataParamNa
13
13
  import type { Logger, LogFormat, CreateLoggerOptions, ParamInfo, AnyFn, BatchOptions, BatchItemResult } from '@adhd/apigen-engine-runtime';
14
14
  ```
15
15
 
16
- - **`dispatch(fns, ctx, schema, fnName, envelope, data)`** β€” the one dispatch path. No plugin
16
+ - **`dispatch(fns, createClient, schema, fnName, envelope, domainArgs)`** β€” the one dispatch path. No plugin
17
17
  inlines this; all import it here.
18
18
  - **`buildFnTable(mod)`** β€” normalize an imported module into a callable table, recursively
19
19
  unwrapping `default` / CommonJS `module.exports` layers and keying functions by their
package/index.js CHANGED
@@ -1 +1,12 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,s)=>(s=n==null?{}:e(i(n)),o(r||!n||!n.__esModule||!a.call(n,`default`)?t(s,`default`,{value:n,enumerable:!0}):s,n));require("node:fs");let c=require("node:module");require("node:path");let l=require("pino");l=s(l);let u=require("ajv");u=s(u);let d=require("ajv-formats");d=s(d);var f=`$apigen`,p=class extends Error{constructor(e){super(e),this.code=`E_DUP_CODEC`,this.name=`CodecRegistryError`}};function m(e){e?.wellKnown;let t=new Map;return{register(e,n){if(t.has(e.id)&&!n?.override)throw new p(`E_DUP_CODEC: a codec is already registered for id "${e.id}"`);t.set(e.id,e)},resolve(e){for(let n of t.values())if(n.matches(e))return n},get(e){return t.get(e)},ids(){return[...t.keys()]},freeze(){let e=new Map(t),n={register(){throw new p(`E_DUP_CODEC: registry is frozen and cannot accept new codecs`)},resolve(t){for(let n of e.values())if(n.matches(t))return n},get(t){return e.get(t)},ids(){return[...e.keys()]},freeze(){return n}};return n}}}var ee=`x-apigen-logical`,h=`x-apigen-codec`,te=`x-apigen-ctor`,ne=`x-apigen-tojson`,re=`0.1.0`;function ie(e,t){return{registry:e,resolve:e=>{throw Error(`[apigen-logical] $ref "${e}" cannot be resolved in run-mode without a descriptor root. Supply a resolve() in the ctx override to handle $ref.`)},seen:new WeakSet,path:``,mode:`strict`,...t}}function g(e,t,n){let r=n.registry.resolve(t);if(r)return r.encode(e,t,n);let i=t.$ref;if(typeof i==`string`)return g(e,n.resolve(i),n);let a=t.oneOf;if(Array.isArray(a))return g(e,ae(e,a,t,n),n);let o=t.type;if(o===`array`){if(!Array.isArray(e))return b(e,t,n);let r=t.items;if(!r)return e.map(e=>S(e));let i=n.path;return Array.isArray(r)?e.map((e,t)=>{let a=r[t];return a===void 0?S(e):g(e,a,{...n,path:`${i}/${t}`})}):e.map((e,t)=>g(e,r,{...n,path:`${i}/${t}`}))}if(o===`object`){if(typeof e!=`object`||!e||Array.isArray(e))return b(e,t,n);let r=t.properties;if(!r)return S(e);let i=n.path,a={};for(let[t,o]of Object.entries(r)){let r=e[t];r!==void 0&&(a[t]=g(r,o,{...n,path:`${i}/${t}`}))}return a}return o==null?b(e,t,n):S(e)}function _(e,t,n){let r=n.registry.resolve(t);if(r)return r.decode(e,t,n);let i=t.$ref;if(typeof i==`string`)return _(e,n.resolve(i),n);let a=t.oneOf;if(Array.isArray(a))return _(e,ae(e,a,t,n),n);let o=t.type;if(o===`array`){if(!Array.isArray(e))return e;let r=t.items;if(!r)return e;let i=n.path;return Array.isArray(r)?e.map((e,t)=>{let a=r[t];return a===void 0?e:_(e,a,{...n,path:`${i}/${t}`})}):e.map((e,t)=>_(e,r,{...n,path:`${i}/${t}`}))}if(o===`object`){if(typeof e!=`object`||!e||Array.isArray(e))return e;let r=t.properties;if(!r)return e;let i=n.path,a={};for(let[t,o]of Object.entries(r)){let r=e[t];r!==void 0&&(a[t]=_(r,o,{...n,path:`${i}/${t}`}))}for(let[t,n]of Object.entries(e))!(t in r)&&n!==void 0&&(a[t]=n);return a}return o==null?x(e,n):e}function ae(e,t,n,r){let i=n.discriminator;if(i?.propertyName){let n=i.propertyName,a=typeof e==`object`&&e?e[n]:void 0;if(typeof a==`string`){if(i.mapping){let e=i.mapping[a];if(e){let n=t.find(t=>t.$ref===e);if(n)return n}}for(let e of t){let t=v(e,r).properties?.[n];if(!t)continue;let i=t.enum;if(t.const===a||Array.isArray(i)&&i.includes(a))return e}}}let a=se(e,t,r);if(a)return a;let o,s=-1;for(let n of t){let t=y(e,v(n,r),r);t!==null&&t>s&&(s=t,o=n)}return o===void 0?t[0]??{}:o}function v(e,t){let n=e.$ref;return typeof n==`string`?t.resolve(n):e}function oe(e){if(`const`in e)return e.const;let t=e.enum;if(Array.isArray(t)&&t.length===1)return t[0]}function se(e,t,n){if(typeof e!=`object`||!e||Array.isArray(e))return;let r=e,i=t.map(e=>v(e,n)),a=new Set;for(let e of i){let t=e.properties;if(t)for(let[e,n]of Object.entries(t))oe(n)!==void 0&&a.add(e)}for(let o of a){let a=i.map(e=>{let t=e.properties?.[o];return t?oe(t):void 0}),s=a.filter(e=>e!==void 0),c=new Set(s);if(s.length<2||c.size!==s.length)continue;let l=r[o];if(l===void 0)continue;let u=a.findIndex(e=>e===l);if(u!==-1&&y(e,i[u],n)!==null)return t[u]}}function ce(e){if(e===null)return`null`;if(Array.isArray(e))return`array`;let t=typeof e;return t===`number`?Number.isInteger(e)?`integer`:`number`:t}function y(e,t,n){let r=t.oneOf;if(Array.isArray(r)){let t=null;for(let i of r){let r=y(e,v(i,n),n);r!==null&&(t===null||r>t)&&(t=r)}return t}let i=t.type,a=ce(e);if(typeof i==`string`){if(!(i===a||i===`number`&&a===`integer`))return null}else if(Array.isArray(i)&&!i.some(e=>e===a||e===`number`&&a===`integer`))return null;if(typeof e!=`object`||!e||Array.isArray(e))return+(typeof i==`string`);let o=e,s=t.required,c=0;if(Array.isArray(s)){for(let e of s)if(typeof e==`string`){if(o[e]===void 0)return null;c+=2}}let l=t.properties;if(l){for(let e of Object.keys(l))o[e]!==void 0&&(c+=1);for(let e of Object.keys(o))l[e]===void 0&&--c}return c}function b(e,t,n){for(let t of n.registry.ids()){let r=n.registry.get(t);if(r?.ownsValue?.(e))return{[f]:t,v:r.encode(e,r.schema,n)}}if(Array.isArray(e))return e.map(e=>b(e,{},n));if(le(e)){let t={};for(let[r,i]of Object.entries(e))i!==void 0&&(t[r]=b(i,{},n));return t}return S(e)}function le(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function x(e,t){if(typeof e==`object`&&e&&!Array.isArray(e)&&`$apigen`in e){let n=e,r=n[f],i=t.registry.get(r);if(i)return i.decode(n.v,i.schema,t)}if(Array.isArray(e))return e.map(e=>x(e,t));if(le(e)){let n={};for(let[r,i]of Object.entries(e))n[r]=x(i,t);return n}return e}function S(e){if(e===null||typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return e;if(Array.isArray(e))return e.map(S);if(typeof e==`object`){let t={};for(let[n,r]of Object.entries(e))r!==void 0&&(t[n]=S(r));return t}return null}function ue(e,t){let n=new Set,r=[e];for(;r.length>0;){let e=r.pop();if(!e||n.has(e))continue;n.add(e);let i=e.$ref;if(typeof i==`string`){if(t){let e=t[i];if(!e){let e=Object.keys(t).join(`, `)||`(none)`;throw Error(`[apigen-logical] $ref "${i}" cannot be resolved. Available $defs: ${e}`)}r.push(e)}continue}let a=e.oneOf;if(Array.isArray(a))for(let e of a)typeof e==`object`&&e&&r.push(e);let o=e.properties;if(o)for(let e of Object.values(o))r.push(e);let s=e.items;if(Array.isArray(s))for(let e of s)typeof e==`object`&&e&&r.push(e);else typeof s==`object`&&s&&r.push(s);let c=e.additionalProperties;typeof c==`object`&&c&&r.push(c);let l=e.propertyNames;typeof l==`object`&&l&&r.push(l)}}function de(e){return{encode(t,n,r){return g(t,n,ie(e,r))},decode(t,n,r){return _(t,n,ie(e,r))}}}var C={id:`date-time`,kind:`scalar`,schema:{type:`string`,format:`date-time`},matches(e){return e.type===`string`&&e.format===`date-time`},ownsValue(e){return e instanceof Date},encode(e,t,n){return e.toISOString()},decode(e,t,n){if(typeof e!=`string`){if(n.mode===`strict`)throw TypeError(`[date-time] expected a string on the wire at "${n.path}", got ${typeof e}`);return new Date(String(e))}if(n.mode===`strict`&&Number.isNaN(new Date(e).getTime()))throw TypeError(`[date-time] invalid date-time string at "${n.path}": ${JSON.stringify(e)}`);return new Date(e)}},w={id:`int64`,kind:`scalar`,schema:{type:`string`,format:`int64`},matches(e){return e.type===`string`&&e.format===`int64`},ownsValue(e){return typeof e==`bigint`},encode(e,t,n){return String(e)},decode(e,t,n){if(typeof e!=`string`){if(n.mode===`strict`)throw TypeError(`[int64] expected a string on the wire at "${n.path}", got ${typeof e}`);try{return BigInt(Math.trunc(Number(e)))}catch{return BigInt(0)}}if(n.mode===`strict`)return BigInt(e);if(/^-?\d+$/.test(e))try{return BigInt(e)}catch{return BigInt(0)}return BigInt(0)}};function fe(e){return e}var T={id:`decimal`,kind:`scalar`,schema:{type:`string`,format:`decimal`},matches(e){return e.type===`string`&&e.format===`decimal`},encode(e,t,n){return e},decode(e,t,n){if(typeof e!=`string`){if(n.mode===`strict`)throw TypeError(`[decimal] expected a string on the wire at "${n.path}", got ${typeof e}`);return fe(String(e))}if(n.mode===`strict`&&!/^-?\d+(\.\d+)?$/.test(e))throw TypeError(`[decimal] wire value "${e}" at "${n.path}" is not a valid decimal string`);return fe(e)}},E={id:`byte`,kind:`scalar`,schema:{type:`string`,format:`byte`},matches(e){return e.type===`string`&&e.format===`byte`},ownsValue(e){return e instanceof Uint8Array},encode(e,t,n){return Buffer.from(e).toString(`base64`)},decode(e,t,n){if(typeof e!=`string`){if(n.mode===`strict`)throw TypeError(`[byte] expected a base64 string on the wire at "${n.path}", got ${typeof e}`);return new Uint8Array}if(n.mode===`strict`&&!/^[A-Za-z0-9+/]*={0,2}$/.test(e))throw TypeError(`[byte] wire value at "${n.path}" is not standard base64 (format:byte): "${e}"`);return new Uint8Array(Buffer.from(e,`base64`))}},pe=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,D={id:`uuid`,kind:`scalar`,schema:{type:`string`,format:`uuid`},matches(e){return e.type===`string`&&e.format===`uuid`},encode(e,t,n){return e.toLowerCase()},decode(e,t,n){if(typeof e!=`string`){if(n.mode===`strict`)throw TypeError(`[uuid] expected a string on the wire at "${n.path}", got ${typeof e}`);return String(e).toLowerCase()}if(n.mode===`strict`&&!pe.test(e))throw TypeError(`[uuid] wire value "${e}" at "${n.path}" is not a lowercase-hyphenated RFC 4122 UUID`);return e}},O=`NaN`,k=`Infinity`,A=`-Infinity`,me=new Set([O,k,A]),j={id:`number-special`,kind:`scalar`,schema:{type:`number`},matches(e){return e.type===`number`&&e.format===void 0},ownsValue(e){return typeof e==`number`&&!Number.isFinite(e)},encode(e,t,n){return Number.isNaN(e)?O:e===1/0?k:e===-1/0?A:e},decode(e,t,n){if(typeof e==`number`)return e;if(typeof e==`string`){if(e===O)return NaN;if(e===k)return 1/0;if(e===A)return-1/0;let t=Number(e);if(!Number.isNaN(t))return t}if(n.mode===`strict`)throw TypeError(`[number-special] unrecognized wire value at "${n.path}": ${JSON.stringify(e)}. Expected a number or one of ${[...me].join(`, `)}.`);return NaN}},he=[C,w,T,E,D,j];function ge(e,t={}){for(let n of he)e.register(n,{override:t.override??!1})}var _e=12;function ve(e,t){let n=/^#\/(definitions|\$defs)\/(.+)$/.exec(e);if(!n)return;let[,r,i]=n;return(r===`$defs`?t.$defs:t.definitions)?.[decodeURIComponent(i)]}function ye(e){return Array.isArray(e)&&e.length>0?e[0]:void 0}function be(e){if(Array.isArray(e.type))return e.type.find(e=>e!==`null`)??e.type[0];if(typeof e.type==`string`)return e.type;if(e.properties)return`object`}function xe(e){switch(e.format){case`date-time`:return`1970-01-01T00:00:00.000Z`;case`date`:return`1970-01-01`;case`time`:return`00:00:00Z`;case`uuid`:return`00000000-0000-0000-0000-000000000000`;case`email`:return`user@example.com`;case`uri`:case`url`:case`uri-reference`:return`https://example.com`;case`hostname`:return`example.com`;case`ipv4`:return`127.0.0.1`;case`ipv6`:return`::1`;case`decimal`:return`0`;case`int64`:return`0`;case`byte`:return``;default:return`<string>`}}function Se(e,t,n){let r=e.properties??{},i=e.required??[],a={};for(let e of i){let i=r[e];a[e]=i===void 0?`<${e}>`:M(i,t,n+1)}return a}function Ce(e,t,n){let r=Array.isArray(e.items)?e.items[0]:e.items;return r?[M(r,t,n+1)]:[]}function M(e,t=e??{},n=0){if(!e||n>_e)return null;if(typeof e.$ref==`string`){let r=ve(e.$ref,t);return r===void 0?null:M(r,t,n+1)}if(e.const!==void 0)return e.const;if(Array.isArray(e.enum)&&e.enum.length>0)return e.enum[0];if(Array.isArray(e.allOf)&&e.allOf.length>0){let r={},i=[];for(let t of e.allOf){Object.assign(r,t.properties??{});for(let e of t.required??[])i.includes(e)||i.push(e)}return Se({...e,properties:r,required:i},t,n)}let r=ye(e.oneOf)??ye(e.anyOf);if(r)return M(r,t,n+1);switch(be(e)){case`object`:return Se(e,t,n);case`array`:return Ce(e,t,n);case`string`:return xe(e);case`integer`:case`number`:return 0;case`boolean`:return!1;case`null`:return null;default:return null}}function we(e){if(!e)return;let t=M(e);return`Example: ${JSON.stringify(t)}`}C.id,w.id,T.id,E.id,D.id,j.id,Object.freeze({typescript:{"date-time":{encode:`$.toISOString()`,decode:`new Date($)`,mode:`native`},int64:{encode:`String($)`,decode:`BigInt($)`,mode:`native`},decimal:{encode:`$.toString()`,decode:`new Decimal($)`,imports:[],dep:{name:`decimal.js`,version:`^10`},mode:`branded`},byte:{encode:`Buffer.from($).toString('base64')`,decode:`new Uint8Array(Buffer.from($, 'base64'))`,mode:`native`},uuid:{encode:`$.toLowerCase()`,decode:`$`,mode:`native`},"number-special":{encode:`numToWire($)`,decode:`wireToNum($)`,mode:`native`}},python:{"date-time":{encode:`$.isoformat()`,decode:`datetime.fromisoformat($)`,imports:[`from datetime import datetime`],mode:`native`},int64:{encode:`str($)`,decode:`int($)`,mode:`native`},decimal:{encode:`str($)`,decode:`Decimal($)`,imports:[`from decimal import Decimal`],mode:`native`},byte:{encode:`b64encode($).decode()`,decode:`b64decode($)`,imports:[`from base64 import b64encode, b64decode`],mode:`native`},uuid:{encode:`str($)`,decode:`UUID($)`,imports:[`from uuid import UUID`],mode:`native`},"number-special":{encode:`num_to_wire($)`,decode:`wire_to_num($)`,mode:`native`}},rust:{"date-time":{encode:`__SCAFFOLD_RUST_DATETIME_ENCODE__`,decode:`__SCAFFOLD_RUST_DATETIME_DECODE__`,imports:[`use chrono::{DateTime, Utc};`],dep:{name:`chrono`,version:`^0.4`},mode:`lib`},int64:{encode:`__SCAFFOLD_RUST_INT64_ENCODE__`,decode:`__SCAFFOLD_RUST_INT64_DECODE__`,imports:[`use serde_with::DisplayFromStr;`],dep:{name:`serde_with`,version:`^3`},mode:`lib`},decimal:{encode:`__SCAFFOLD_RUST_DECIMAL_ENCODE__`,decode:`__SCAFFOLD_RUST_DECIMAL_DECODE__`,imports:[`use rust_decimal::Decimal;`],dep:{name:`rust_decimal`,version:`^1`},mode:`lib`},byte:{encode:`__SCAFFOLD_RUST_BYTE_ENCODE__`,decode:`__SCAFFOLD_RUST_BYTE_DECODE__`,imports:[`use serde_with::base64::Base64;`],dep:{name:`serde_with`,version:`^3`},mode:`lib`},uuid:{encode:`__SCAFFOLD_RUST_UUID_ENCODE__`,decode:`__SCAFFOLD_RUST_UUID_DECODE__`,imports:[`use uuid::Uuid;`],dep:{name:`uuid`,version:`^1`},mode:`lib`},"number-special":{encode:`__SCAFFOLD_RUST_NUMSPECIAL_ENCODE__`,decode:`__SCAFFOLD_RUST_NUMSPECIAL_DECODE__`,mode:`native`}},go:{"date-time":{encode:`__SCAFFOLD_GO_DATETIME_ENCODE__`,decode:`__SCAFFOLD_GO_DATETIME_DECODE__`,imports:[`"time"`],mode:`native`},int64:{encode:`__SCAFFOLD_GO_INT64_ENCODE__`,decode:`__SCAFFOLD_GO_INT64_DECODE__`,imports:[`"strconv"`],mode:`native`},decimal:{encode:`__SCAFFOLD_GO_DECIMAL_ENCODE__`,decode:`__SCAFFOLD_GO_DECIMAL_DECODE__`,imports:[`"github.com/shopspring/decimal"`],dep:{name:`github.com/shopspring/decimal`,version:`v1`},mode:`lib`},byte:{encode:`__SCAFFOLD_GO_BYTE_ENCODE__`,decode:`__SCAFFOLD_GO_BYTE_DECODE__`,imports:[`"encoding/base64"`],mode:`native`},uuid:{encode:`__SCAFFOLD_GO_UUID_ENCODE__`,decode:`__SCAFFOLD_GO_UUID_DECODE__`,imports:[`"github.com/google/uuid"`],dep:{name:`github.com/google/uuid`,version:`v1`},mode:`lib`},"number-special":{encode:`__SCAFFOLD_GO_NUMSPECIAL_ENCODE__`,decode:`__SCAFFOLD_GO_NUMSPECIAL_DECODE__`,mode:`native`}},java:{"date-time":{encode:`$.toString()`,decode:`Instant.parse($)`,imports:[`import java.time.Instant;`],dep:{name:`jackson-datatype-jsr310`,version:`2.x`},mode:`lib`},int64:{encode:`@JsonFormat(shape = JsonFormat.Shape.STRING)`,decode:`@JsonFormat(shape = JsonFormat.Shape.STRING)`,imports:[`import com.fasterxml.jackson.annotation.JsonFormat;`],mode:`native`},decimal:{encode:`@JsonSerialize(using = ToStringSerializer.class)`,decode:`new BigDecimal($)`,imports:[`import java.math.BigDecimal;`,`import com.fasterxml.jackson.databind.annotation.JsonSerialize;`,`import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;`],mode:`native`},byte:{encode:`$`,decode:`$`,mode:`native`},uuid:{encode:`$.toString()`,decode:`UUID.fromString($)`,imports:[`import java.util.UUID;`],mode:`native`},"number-special":{encode:`@JsonSerialize(using = NumberSpecialSerializer.class)`,decode:`@JsonDeserialize(using = NumberSpecialDeserializer.class)`,imports:[`import com.fasterxml.jackson.databind.annotation.JsonSerialize;`,`import com.fasterxml.jackson.databind.annotation.JsonDeserialize;`],mode:`native`}}});var Te=m();ge(Te);var Ee=de(Te.freeze());function De(e,t){return t in(e.input?.properties??{})}function Oe(e){let t=e.input?.properties?.data;return Object.keys(t?.properties??{})}function ke(e,t){let n=e.input?.properties?.data?.properties?.[t];return n===void 0?void 0:n}function Ae(e,t){return t===void 0||e===void 0?e:Ee.decode(e,t)}function N(e,t){let n=t.output;return!n||Object.keys(n).length===0?e:Ee.encode(e,n)}async function je(e,t,n,r,i,a){let o=Oe(n).map(e=>Ae(a[e],ke(n,e)));if(De(n,`session`)&&t){let a=await t({session:i.session});return N(await e[r](a,...o),n)}if(n.hasCtx){let a=t?await t(i):void 0;return N(await e[r](a,...o),n)}return N(await e[r](...o),n)}var Me=class{constructor(){this._map=new Map}set(e,t){this._map.set(e,t)}get(e){return this._map.get(e)}has(e){return this._map.has(e)}};function P(e=[]){return async function(t,n,r){let i=r.schemas[t];if(!i)throw Error(`apigen/invoke: no schema found for operation "${t}"`);return e.reduceRight((e,t)=>()=>t(n,e),()=>je(r.fns,r.createClient,i,t,n.envelope,n.domainArgs))()}}function Ne(e){return e}var F=class{constructor(){this.handlers=new Map}on(e,t){let n=this.handlers.get(e)??[];return this.handlers.set(e,[...n,t]),()=>this.off(e,t)}off(e,t){let n=this.handlers.get(e);if(!n)return;let r=n.filter(e=>e!==t);r.length===0?this.handlers.delete(e):this.handlers.set(e,r)}clear(){this.handlers.clear()}async emit(e){for(let[t,n]of this.handlers)if(Pe(t,e))for(let t of n)await t(e)}};function Pe(e,t){let[n,r,i]=e.split(`:`);return!(n!==`*`&&n!==t.module||r&&r!==`*`&&r!==t.method||i&&i!==`*`&&i!==t.lifecycle)}function I(e,t){for(let n of e)if(n.eventMapping)for(let[e,r]of Object.entries(n.eventMapping))t.on(e,r)}async function L(e,t,n){let r={...t};for(let t of e)if(t.createContext){await n.emit({module:t.id,method:`createContext`,lifecycle:`start`,ctx:r});try{let e=await t.createContext(r);r={...r,...e},await n.emit({module:t.id,method:`createContext`,lifecycle:`complete`,ctx:r})}catch(e){throw await n.emit({module:t.id,method:`createContext`,lifecycle:`error`,ctx:r,error:e}),e}}return r}(0,c.createRequire)(require("node:url").pathToFileURL(__filename).href);var R=new Set([`string`,`number`,`boolean`,`integer`]);function Fe(e){if(typeof e!=`object`||!e)return!1;let t=e;if(t.$ref!==void 0||t.oneOf||t.anyOf||t.allOf)return!1;let{type:n}=t;return typeof n==`string`?R.has(n):Array.isArray(n)?n.every(e=>R.has(e)||e===`null`):Array.isArray(t.enum)&&t.enum.length>0?t.enum.every(e=>[`string`,`number`,`boolean`].includes(typeof e)):!1}function z(e){if(!e||typeof e!=`object`)return!1;let t=e.properties;return t===void 0||typeof t!=`object`||!t?!1:Object.values(t).every(Fe)}function Ie(e){let t={},n=e=>{for(let n of[`definitions`,`$defs`]){let r=e[n];if(r)for(let[e,i]of Object.entries(r)){let r=e.startsWith(`#/`)?e:`#/${n}/${e}`;t[r]=i}}};for(let t of Object.values(e.schemas))n(t.input),n(t.output);if(Object.keys(t).length!==0)for(let[n,r]of Object.entries(e.schemas))try{ue(r.input,t),ue(r.output,t)}catch(e){throw Error(`[apigen-core-client] Schema validation failed for function "${n}": ${e.message}`)}}function Le(e,t){let n=[`apigen calling convention: all domain parameters go inside a "data" envelope β€” e.g. { "data": { ... } }`+(t?`.`:` (an empty object for this zero-parameter tool).`)];return e.length>0&&n.push(`Field(s) ${e.map(e=>`"${e}"`).join(`, `)} are transport-level envelope metadata, NOT domain data β€” do not nest them under "data". Over MCP they are read from arguments._meta["x-<pluginId>-<field>"] (default pluginId "adhd"); see @adhd/apigen-engine-naming's envelopeMetaKey/envelopeCliFlag/envelopeEnvVar for the HTTP-header / CLI-flag / env-var equivalents.`),n.join(` `)}function Re(e,t,n){Ie(e);let r={};for(let[i,a]of Object.entries(e.schemas)){let e=n?.[i]??{},o=a.input.properties??{},s=a.input.required??[],c={},l=[],u={};for(let n of t)if(n.envelope&&e[n.id]!==!1)for(let[e,t]of Object.entries(n.envelope))c[e]=t,u[e]=n.id,l.includes(e)||l.push(e);let d={type:`object`,properties:o,additionalProperties:!1,...s.length>0?{required:s}:{}},f=a.safe===!0||z(a.input),p=a.input.definitions,m=a.input.$defs;r[i]={input:{type:`object`,properties:{...c,data:d},required:[...l,...s.length>0?[`data`]:[]],additionalProperties:!1,description:Le(Object.keys(c),Object.keys(o).length>0),...p?{definitions:p}:{},...m?{$defs:m}:{}},output:a.output,...a.hasCtx?{hasCtx:!0}:{},"x-apigen-safe":f,...Object.keys(u).length>0?{"x-apigen-envelope":u}:{}}}return r}var ze={"decimal.js":`Decimal`};function Be(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}Object.entries(ze).map(([e,t])=>({pattern:RegExp(`import\\(["'][^"']*${Be(e)}[^"']*["']\\)\\.\\w+`,`g`),key:t}));var B=class extends Error{constructor(e){super(e),this.name=`ConfigurationError`}};function Ve(e){for(let t of e)for(let e of Object.keys(t.eventMapping??{})){let[n]=e.split(`:`);if(n!==`*`&&n===t.id)throw new B(`Middleware "${t.id}" subscribes to its own events via "${e}". This would cause infinite recursion.`)}}function He(e){let{domainSchemas:t,middlewares:n,overrides:r={},strict:i=!1}=e;Ve(n);for(let e of Object.keys(r))if(!(e in t.schemas)){let t=`Override key "${e}" not found in domain schemas.`;if(i)throw new B(t);console.warn(`[apigen-runtime]`,t)}let a=new Set(n.map(e=>e.id));for(let[e,t]of Object.entries(r))for(let n of Object.keys(t??{}))if(!a.has(n)){let t=`Override key "${e}.${n}" does not match any declared middleware id.`;if(i)throw new B(t);console.warn(`[apigen-runtime]`,t)}let o=Re(t,n,r),s=new F;return I(n,s),{schemas:o,createClient:async e=>L(n,e,s),dispose:()=>s.clear()}}function Ue(e={}){let t=e.level??`info`,n=typeof e.destination==`string`&&e.destination.length>0,r=!n&&!!process.stderr.isTTY,i=e.format??(r?`pretty`:`json`),a={level:t};if(i===`pretty`)return a.transport={target:`pino-pretty`,options:{colorize:!n,translateTime:`SYS:HH:MM:ss.l`,ignore:`pid,hostname`,...n?{destination:e.destination,mkdir:!0}:{destination:2}}},(0,l.default)(a);let o=n?l.default.destination({dest:e.destination,mkdir:!0,sync:!0}):l.default.destination(2);return(0,l.default)(a,o)}function We(e){if(e?.type!==`object`||!e.properties)return;let t=Object.entries(e.properties);if(t.length===0)return;let n=new Set(e.required??[]);return`{ ${t.map(([e,t])=>`${e}${n.has(e)?``:`?`}: ${V(t)}`).join(`, `)} }`}function Ge(e){return typeof e==`string`?`'${e}'`:JSON.stringify(e)}function Ke(e){let t=e.enum??[];return t.length===0?`unknown`:t.map(Ge).join(`|`)}function qe(e,t){return e.map(e=>V(e,t)).join(` | `)}function V(e,t=0){if(!e)return`unknown`;if(e.type===`array`)return`${V(e.items,0)}[]`;if(e.enum)return Ke(e);if(e.$ref)return String(e.$ref).split(`/`).pop()||`object`;let n=e.anyOf??e.oneOf;return n?n.length===0?`unknown`:t>=2?qe(n,t-1):`union`:t>=1&&e.type===`object`?We(e)??`object`:e.type??`object`}function Je(e){let t=(e?.input??{}).properties?.data,n=t?.properties??{},r=new Set(t?.required??[]),i=Object.entries(n).map(([e,t])=>({name:e,type:V(t,2),required:r.has(e)}));return{params:i,text:i.map(e=>`${e.name}${e.required?``:`?`}: ${e.type}`).join(`, `)}}function Ye(e){let t;return t=Array.isArray(e)?e:e?[e]:[],t.find(e=>e===`number`||e===`integer`||e===`boolean`)}function Xe(e,t){let n=(t?.input??{}).properties?.data?.properties??{},r={...e};for(let[e,t]of Object.entries(n)){let n=r[e];if(typeof n!=`string`)continue;let i=Ye(t?.type);if(i===`number`||i===`integer`){let t=Number(n);!Number.isNaN(t)&&n.trim()!==``&&(r[e]=t)}else i===`boolean`&&(n===`true`?r[e]=!0:n===`false`&&(r[e]=!1))}return r}var Ze=new Set([`default`,`module.exports`,`__esModule`]);function Qe(e){let t={},n=(e,r)=>{for(let[i,a]of Object.entries(e))if(typeof a==`function`){!Ze.has(i)&&!(i in t)&&(t[i]=a);let e=a.name;e&&!(e in t)&&(t[e]=a)}else a&&typeof a==`object`&&r<2&&Ze.has(i)&&n(a,r+1)};return n(e,0),t}var $e=[`invalid_argument`,`unauthenticated`,`permission_denied`,`not_found`,`internal`],H=class extends Error{constructor(e,t,n){super(t),this.name=`ApiError`,this.code=e,this.details=n,Object.setPrototypeOf(this,new.target.prototype)}toJSON(){let e={code:this.code,message:this.message};return this.details!==void 0&&(e.details=this.details),e}};function et(e){return typeof e==`object`&&!!e&&e.name===`ApiError`&&$e.includes(e.code)&&typeof e.toJSON==`function`}function tt(e,t,n=0){return e===`before-first-chunk`?{phase:e,error:t}:{phase:e,error:t,chunksDelivered:n}}var U=new u.default({allErrors:!0,verbose:!0});(0,d.default)(U);for(let e of[ee,h,te,ne,`discriminator`])U.addKeyword({keyword:e,valid:!0});U.addFormat(`decimal`,/^[+-]?(?:\d+(?:\.\d+)?|\.\d+)$/);function nt(e){return e?e.replace(/^\//,``).split(`/`).map(e=>e.replace(/~1/g,`/`).replace(/~0/g,`~`)).join(`.`):`(root)`}function rt(e){let t=e?.properties;return t?Object.keys(t):[]}function it(e,t){let n=e.length,r=t.length;if(n===0)return r;if(r===0)return n;let i=Array.from({length:r+1},(e,t)=>t);for(let a=1;a<=n;a++){let n=[a];for(let o=1;o<=r;o++){let r=e[a-1]===t[o-1]?0:1;n[o]=Math.min(i[o]+1,n[o-1]+1,i[o-1]+r)}i=n}return i[r]}function at(e,t){let n,r=1/0;for(let i of t){let t=it(e.toLowerCase(),i.toLowerCase());t<r&&(r=t,n=i)}let i=Math.max(2,Math.floor(e.length/3));return n!==void 0&&r<=i?n:void 0}function ot(e){return e===null?`null`:Array.isArray(e)?`array`:typeof e}function st(e){let t=nt(e.instancePath),n=e.params??{};switch(e.keyword){case`additionalProperties`:{let r=String(n.additionalProperty??`?`),i=rt(e.parentSchema),a=at(r,i);return`unknown key '${r}' at ${t}${i.length?`; allowed keys: ${i.join(`, `)}`:``}${a?` (did you mean '${a}'?)`:``}`}case`required`:{let r=String(n.missingProperty??`?`),i=rt(e.parentSchema);return`missing required key '${r}' at ${t}${i.length?`; allowed keys: ${i.join(`, `)}`:``}`}case`enum`:{let r=Array.isArray(n.allowedValues)?n.allowedValues:[],i=e.data;return`value ${JSON.stringify(i)} at ${t} is not one of: ${r.map(e=>JSON.stringify(e)).join(`, `)}`}case`type`:{let r=e.data;return`${t} must be ${String(n.type)} (got ${ot(r)})`}default:return`${t} ${e.message??`failed schema check`}`}}var W=12;function ct(e){let t=e.slice(0,W).map(st);return e.length>W&&t.push(`…and ${e.length-W} more`),t.join(`; `)}function G(e){return e===null?!1:Array.isArray(e)?e.some(G):typeof e!=`object`||Object.values(e).some(G)}function lt(e,t){let n=[`Validation failed: ${ct(e)}`],r=M(t);return G(r)&&n.push(`Example: ${JSON.stringify(r)}`),n.join(` β€” `)}var ut=async(e,t)=>{let n=e.ctx.get(dt);if(n===void 0)return t();let r=n[e.operation.id];if(r===void 0)return t();let i={data:e.domainArgs,...e.envelope},a=U.compile(r.input);if(!a(i)){let e=a.errors??[];throw new H(`invalid_argument`,lt(e,r.input),e)}return t()},dt=Symbol(`ValidateSchemasToken`);function ft(e){return async function(t,n){let r=e[t.operation.id];if(r===void 0)return n();let i={data:t.domainArgs,...t.envelope},a=U.compile(r.input);if(!a(i)){let e=a.errors??[];throw new H(`invalid_argument`,lt(e,r.input),e)}return n()}}function pt(){return`xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`.replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e===`x`?t:t&3|8).toString(16)})}var mt=class{constructor(e={}){this._store=new Map,this._sweeper=null,this._defaultTtlMs=e.defaultTtlMs;let t=null;t=e.sweepIntervalMs===0?null:e.sweepIntervalMs===void 0?this._defaultTtlMs===void 0?null:Math.max(1e3,Math.floor(this._defaultTtlMs/4)):e.sweepIntervalMs,t!==null&&t>0&&(this._sweeper=setInterval(()=>this._sweep(),t),this._sweeper.unref?.())}create(e,t=[],n){let r=new e(...t),i=pt(),a=n??this._defaultTtlMs,o=a===void 0?null:Date.now()+a;return this._store.set(i,{instance:r,expiresAt:o}),{instanceId:i}}get(e){let t=this._store.get(e);if(!t)throw Error(`[instance-registry] Unknown instanceId: "${e}"`);if(t.expiresAt!==null&&Date.now()>t.expiresAt)throw this._evict(e,t),Error(`[instance-registry] Instance "${e}" has expired`);return t.instance}async dispatch(e,t,n=[]){let r=this.get(e),i=r[t];if(typeof i!=`function`)throw Error(`[instance-registry] Method "${t}" not found on instance "${e}"`);return i.call(r,...n)}async dispose(e){let t=this._store.get(e);t&&(this._store.delete(e),await K(t.instance))}async disposeAll(){this._sweeper!==null&&(clearInterval(this._sweeper),this._sweeper=null);let e=[...this._store.entries()];this._store.clear(),await Promise.all(e.map(([,e])=>K(e.instance)))}get size(){return this._store.size}_sweep(){let e=Date.now();for(let[t,n]of this._store)n.expiresAt!==null&&e>n.expiresAt&&this._evict(t,n)}_evict(e,t){this._store.delete(e),K(t.instance)}};async function K(e){if(typeof e==`object`&&e&&`dispose`in e){let t=e.dispose;typeof t==`function`&&await t.call(e)}}function ht(e){let{produce:t,signal:n}=e,r=n??new AbortController().signal;return{[Symbol.asyncIterator](){let e=t(r);return{async next(){return r.aborted?(await e.return(void 0),{done:!0,value:void 0}):e.next()},async return(t){return await e.return(t),{done:!0,value:void 0}},async throw(t){return await e.throw(t),{done:!0,value:void 0}}}}}}async function gt(e){let t=[];for await(let n of e)t.push(n);return t}async function _t(e){let t=[];try{for await(let n of e)t.push(n);return{ok:!0,chunks:t}}catch(e){let n=et(e)?e:new H(`internal`,e instanceof Error?e.message:String(e));return t.length===0?{ok:!1,carrier:tt(`before-first-chunk`,n)}:{ok:!1,carrier:tt(`after-first-chunk`,n,t.length)}}}function vt(e){return typeof e==`object`&&!!e&&Symbol.asyncIterator in e}var q=class extends Error{constructor(e,t){super(t),this.name=`UnionCodecError`,this.code=e}};function J(e){let t=e.discriminator;if(typeof t!=`object`||!t||Array.isArray(t))return;let n=t;if(typeof n.propertyName!=`string`)return;let r=n.mapping;if(typeof r==`object`&&r&&!Array.isArray(r))return{propertyName:n.propertyName,mapping:r}}function yt(e,t){let n=e[h];if(typeof n==`string`){let e=t.registry.get(n);if(e)return e}return t.registry.resolve(e)}function bt(e,t,n){let r=yt(t,n);return r?r.encode(e,t,n):e}function xt(e,t,n){let r=yt(t,n);return r?r.decode(e,t,n):e}function St(e){let{id:t,schema:n}=e;return{id:t,kind:`union`,schema:n,matches(e){if(e[`x-apigen-logical`]===`union`)return!0;let t=e.oneOf;return!Array.isArray(t)||t.length===0?!1:J(e)!==void 0},encode(e,n,r){let i=J(n);if(!i)throw new q(`E_UNION_NO_DISCRIMINATOR`,`[${t}] schema node at "${r.path}" has no discriminator.propertyName; cannot dispatch union branch.`);let{propertyName:a,mapping:o}=i,s=e[a];if(s==null)throw new q(`E_UNION_NO_DISCRIMINATOR`,`[${t}] value at "${r.path}" is missing the discriminator property "${a}".`);let c=String(s),l=o[c];if(!l)throw new q(`E_UNION_UNKNOWN_TAG`,`[${t}] discriminator tag "${c}" at "${r.path}" is not in the mapping (known: ${Object.keys(o).join(`, `)}).`);return bt(e,r.resolve(l),{...r,path:`${r.path}[${c}]`})},decode(e,n,r){if(typeof e!=`object`||!e||Array.isArray(e)){let n;throw n=e===null?`null`:Array.isArray(e)?`array`:typeof e,new q(`E_UNION_INVALID_WIRE`,`[${t}] expected a JSON object on the wire at "${r.path}", got ${n}.`)}let i=e,a=J(n);if(!a)throw new q(`E_UNION_NO_DISCRIMINATOR`,`[${t}] schema node at "${r.path}" has no discriminator.propertyName; cannot dispatch union branch.`);let{propertyName:o,mapping:s}=a,c=i[o];if(c==null)throw new q(`E_UNION_NO_DISCRIMINATOR`,`[${t}] wire object at "${r.path}" is missing the discriminator property "${o}".`);let l=String(c),u=s[l];if(!u)throw new q(`E_UNION_UNKNOWN_TAG`,`[${t}] discriminator tag "${l}" on the wire at "${r.path}" is not in the mapping (known: ${Object.keys(s).join(`, `)}).`);return xt(e,r.resolve(u),{...r,path:`${r.path}[${l}]`})}}}var Y=class extends Error{constructor(e,t){super(t),this.name=`NominalCodecError`,this.code=e}};function Ct(e){let t=e.properties;return t&&typeof t==`object`&&!Array.isArray(t)?t:{}}function wt(e){let t=e.required;return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}function Tt(e,t,n){if(t){let r=n.registry.resolve(t);if(r)return r.encode(e,t,n)}return e}function Et(e,t,n){if(t){let r=n.registry.resolve(t);if(r)return r.decode(e,t,n)}return e}function Dt(e){let{id:t,schema:n,ctor:r}=e;return{id:t,kind:`nominal`,schema:n,matches(e){return e[`x-apigen-logical`]===`nominal`||e[h]===t},encode(e,n,r){if(typeof e!=`object`||!e)return e;if(r.seen.has(e)){if(r.mode===`strict`)throw new Y(`E_NOMINAL_CYCLE`,`[${t}] cycle detected at "${r.path}": a nominal instance references itself. Strict mode rejects cycles (DESIGN Β§8.3); break the cycle or use 'lossy' mode.`);return null}r.seen.add(e);try{let t=Ct(n),i=e[typeof n[`x-apigen-tojson`]==`string`?n[ne]:`toJSON`];if(typeof i==`function`){let n=i.call(e);if(typeof n==`object`&&n&&!Array.isArray(n)){let e={};for(let[i,a]of Object.entries(n))e[i]=Tt(a,t[i],{...r,path:`${r.path}/${i}`});return e}return n}let a={},o=Object.keys(t),s=e,c=o.length>0?o:Object.keys(s);for(let e of c){let n=s[e];n!==void 0&&(a[e]=Tt(n,t[e],{...r,path:`${r.path}/${e}`}))}return a}finally{r.seen.delete(e)}},decode(e,n,i){if(typeof e!=`object`||!e||Array.isArray(e)){let n;throw n=e===null?`null`:Array.isArray(e)?`array`:typeof e,new Y(`E_NOMINAL_INVALID_WIRE`,`[${t}] expected a JSON object on the wire at "${i.path}", got ${n}.`)}let a=e;for(let e of wt(n))if(!(e in a))throw new Y(`E_NOMINAL_INVALID_WIRE`,`[${t}] required field "${e}" missing on the wire at "${i.path}".`);if(n[`x-apigen-instances`]===!1)throw new Y(`E_NOMINAL_NONRECONSTRUCTABLE`,`[${t}] is encode-only: the extractor marked it non-reconstructable (x-apigen-instances:false). It cannot be decoded back to a live instance.`);let o=Ct(n),s={};for(let[e,t]of Object.entries(a))s[e]=Et(t,o[e],{...i,path:`${i.path}/${e}`});if(r){let e=typeof n[`x-apigen-ctor`]==`string`?n[te]:`fromJSON`,t=r[e];return typeof t==`function`?t.call(r,s):new r(s)}return s}}}var Ot=[C,w,T,E,D,j],kt=Dt({id:`ts.NominalSentinel`,schema:{type:`object`,"x-apigen-logical":`nominal`,"x-apigen-codec":`ts.NominalSentinel`}}),At=St({id:`ts.UnionSentinel`,schema:{oneOf:[],discriminator:{propertyName:`kind`,mapping:{}},"x-apigen-logical":`union`,"x-apigen-codec":`ts.UnionSentinel`}});function jt(){let e=[...Ot.map(e=>[e.id,e]),[kt.id,kt],[At.id,At]];return Object.freeze(new Map(e))}var Mt=Object.freeze({host:`ts`,logicalTypeVersion:re,codecs:jt()});function Nt(e,t,n){let r=[n,typeof t?.input?.description==`string`?t.input.description:void 0,we(t?.input)].filter(e=>typeof e==`string`&&e.length>0);return r.length>0?r.join(` β€” `):e}function Pt(e){if(!e||typeof e!=`object`||Array.isArray(e)||Object.keys(e).length===0)return{outputSchema:void 0,wrapped:!1};let t=e;return t.type===`object`?{outputSchema:t,wrapped:!0}:{outputSchema:void 0,wrapped:!1}}function Ft(e,t){if(e)return t&&typeof t==`object`&&!Array.isArray(t)?t:void 0}var It=4,Lt=32;function X(e){return et(e)?e:e instanceof Error?new H(`internal`,e.message):e}function Rt(e,t){if(e===`serial`||e===`chained`)return 1;let n=t??4;return!Number.isFinite(n)||n<1?1:Math.min(Math.floor(n),32)}function zt(){}function Bt(e,t){if(!e&&!t)return{signal:void 0,dispose:zt};let n=new AbortController,r=()=>{n.abort(e?.reason)};e&&(e.aborted?n.abort(e.reason):e.addEventListener(`abort`,r,{once:!0}));let i;return t!==void 0&&!n.signal.aborted&&(i=setTimeout(()=>{n.abort(new DOMException(`apigen/invokeBatch: item timed out after ${t}ms`,`TimeoutError`))},t),i.unref?.()),{signal:n.signal,dispose(){e&&e.removeEventListener(`abort`,r),i&&clearTimeout(i)}}}async function Z(e,t,n,r,i,a){let o=Bt(r.signal,a);try{let a=await e(t,o.signal?{...r,signal:o.signal}:r,i);if(vt(a)){let e=await _t(a);if(!e.ok){let t=e.carrier;return{index:n,status:`rejected`,reason:X(t.error),...t.phase===`after-first-chunk`?{chunksDelivered:t.chunksDelivered}:{}}}return{index:n,status:`fulfilled`,chunks:e.chunks}}return{index:n,status:`fulfilled`,value:a}}catch(e){return{index:n,status:`rejected`,reason:X(e)}}finally{o.dispose()}}async function Vt(e,t,n,r,i={}){let a=i.mode??`parallel`,o=i.onItemError??`continue`,s=Rt(a,i.concurrency),c=Array(n.length),l=e=>({index:e,status:`rejected`,reason:X(Error(`apigen/invokeBatch: not attempted β€” an earlier item failed and `+(a===`chained`?`mode is "chained"`:`onItemError is "abort"`)))});if(a===`serial`||a===`chained`){let s=!1;for(let u=0;u<n.length;u++){if(s){c[u]=l(u);continue}let d=await Z(e,t,u,n[u],r,i.itemTimeoutMs);c[u]=d,d.status===`rejected`&&(a===`chained`||o===`abort`)&&(s=!0)}return c}let u=0,d=!1,f=Math.max(1,Math.min(s,n.length)),p=Array.from({length:f},async()=>{for(;;){let a=u++;if(a>=n.length)return;if(d){c[a]=l(a);continue}let s=await Z(e,t,a,n[a],r,i.itemTimeoutMs);c[a]=s,s.status===`rejected`&&o===`abort`&&(d=!0)}});return await Promise.all(p),c}function Ht(e){return e.words.join(`-`)}function Ut(e){return e.words.map(Yt).join(``)}function Wt(e){return e.words.join(`_`)}function Gt(e,t={}){let n=[e.namespace,...e.path],r=e.safe||z(e.input)?`GET`:`POST`,i=t.http?.verb?.[e.id]??r,a=`/`+n.map(e=>Ht(e)).join(`/`),o=n.map(e=>Wt(e)).join(`_`),s=n.map(e=>Wt(e)).slice(0,-1).join(`.`),c=Ut(n[n.length-2]??n[0]),l=Ut(n[n.length-1]),u=n.map(e=>Ht(e));return{http:{verb:i,route:a},mcp:{name:o},grpc:{package:s,service:c,method:l},cli:{path:u}}}function Kt(e,t){return`x-${e}-${t}`}function qt(e,t){return`--${e}-${t}`}function Jt(e,t){let n=e=>e.toUpperCase().replace(/-/g,`_`);return e===`adhd`?`APIGEN_${n(t)}`:`APIGEN_${n(e)}_${n(t)}`}function Yt(e){return e.length===0?e:e[0].toUpperCase()+e.slice(1)}function Q(e){return e.anyOf??e.oneOf}function Xt(e){if(!e)return!1;if(e.type===`array`||e.type===`object`)return!0;let t=Q(e);if(t){let e=t.filter(e=>e.type!==`null`);return e.length>0&&e.every(e=>e.type===`array`||e.type===`object`)}return!1}function Zt(e){if(!e)return!1;if(e.type===`boolean`)return!0;let t=Q(e);if(t){let e=t.filter(e=>e.type!==`null`);return e.length>0&&e.every(e=>e.type===`boolean`)}return!1}function Qt(e){if(!e)return!1;if(e.type===`number`||e.type===`integer`)return!0;let t=Q(e);if(t){let e=t.filter(e=>e.type!==`null`);return e.length>0&&e.every(e=>e.type===`number`||e.type===`integer`)}return!1}function $t(e){return e.replace(/[A-Z]/g,e=>`-`+e.toLowerCase())}function en(e){let t=e.input?.properties?.data;return{props:t?.properties??{},required:t?.required??[]}}function tn(e){return typeof e.handler==`function`}function nn(e){let t=e.input?.properties??{},n=e[`x-apigen-envelope`],r=[];for(let e of Object.keys(t)){if(e===`data`)continue;let t=n?.[e]??`adhd`,i=Kt(t,e);r.push({field:e,pluginId:t,httpHeader:i,mcpMetaKey:i,cliFlag:qt(t,e),envVar:Jt(t,e)})}return r}function rn(e,t,n,r){t===n||e.has(t)||e.set(t,{...r,aliasOf:n})}function an(e,t){let n=new Map,{props:r}=en(e);for(let[e,t]of Object.entries(r)){let r=`string`;Zt(t)?r=`boolean`:(Xt(t)||Qt(t))&&(r=`json`);let i=$t(e),a={camelKey:e,kind:`domain`,valueKind:r};n.set(i,a),rn(n,e,i,a)}for(let e of t){let t=e.cliFlag.replace(/^--/,``),r={camelKey:e.field,kind:`envelope`,valueKind:`string`,envVar:e.envVar};n.set(t,r)}return n}function on(e){let{op:t,schema:n,transport:r,projection:i}=e,a=Gt(t,i),o=n?nn(n):[],s=n?an(n,o):new Map,c=n?Je(n).params:void 0,l={op:t,transport:r,http:a.http,mcp:a.mcp,cli:a.cli,grpc:a.grpc,params:c,envelope:o,cliFlags:s,streaming:t.streaming,isMount:tn(t)};if(tn(t)){let e=t.handler;l.mountHandler=async t=>e(t)}return l}function sn(e){let t=e.usePlugins;return Array.isArray(t)?t:[]}function cn(e){let t=e.exitCode;return typeof t==`function`?t:void 0}function ln(e){let t=e.useOptions;return t&&typeof t==`object`?t:{}}function un(e){return async function(t,n){let r=Object.assign(t,{data:t.domainArgs});return await e.layer(r,n)}}function dn(e,t){let n=[];for(let e of t){let t=e.capabilities?.layer;t&&n.push(un(t))}return n.push(ft(e)),P(n)}function fn(){let e=new Map;return{get:t=>e.get(t),set:(t,n)=>{e.set(t,n)}}}var pn={input:{type:`object`,properties:{data:{type:`object`,properties:{}}}},output:{}};async function mn(e,t,n,r){let i={...n,operation:{id:e.op.id},ctx:new Me,transport:e.transport};if(e.isMount){let a=e.mountHandler;if(!a)throw Error(`apigen-engine-runtime/dispatchForPlan: OpPlan for mount op "${e.op.id}" has isMount=true but no mountHandler`);let o={operation:e.op,data:n.domainArgs,envelope:n.envelope,ctx:fn(),transport:e.transport,signal:n.signal??new AbortController().signal},s={...r,fns:{[e.op.id]:()=>a(o)},schemas:{[e.op.id]:pn}};return t(e.op.id,i,s)}return t(e.op.id,i,r)}var $=`127.0.0.1`;function hn(e){let t=e.trim().toLowerCase().replace(/^\[|\]$/g,``);if(t===`localhost`||t===`::1`)return!0;let n=t.startsWith(`::ffff:`)?t.slice(7):t;return/^127(\.\d{1,3}){3}$/.test(n)}function gn(e){if(typeof e!=`string`)return $;let t=e.trim();return t===``?$:t}function _n(e,t,n){return!hn(e)&&(n?.warn({host:e,host_kind:t},`${t} binding non-loopback host "${e}": the server will be reachable from the network. Omit the host option to bind ${$}.`),!0)}exports.BATCH_DEFAULT_CONCURRENCY=It,exports.BATCH_MAX_CONCURRENCY=Lt,exports.DEFAULT_LISTEN_HOST=$,exports.EventBus=F,exports.InstanceRegistry=mt,exports.LayerContext=Me,exports.UnionCodecError=q,exports.ValidateSchemasToken=dt,exports.WELL_KNOWN_TS_CODECS=Ot,exports.adaptCoreLayer=un,exports.assertNoSelfSubscription=Ve,exports.buildContext=L,exports.buildFnTable=Qe,exports.buildMcpOutputSchema=Pt,exports.buildOpPlan=on,exports.buildToolDescription=Nt,exports.coerceQueryParams=Xe,exports.collectWithPhase=_t,exports.createApiPackage=He,exports.createInvoker=P,exports.createLogger=Ue,exports.createPackageInvoker=dn,exports.createStream=ht,exports.createUnionCodec=St,exports.dataParamNames=Oe,exports.defineMiddleware=Ne,exports.describeParams=Je,exports.dispatch=je,exports.dispatchForPlan=mn,exports.drainStream=gt,exports.invokeBatch=Vt,exports.isApiStream=vt,exports.isLoopbackListenHost=hn,exports.makeValidateLayer=ft,exports.needsEnvelopeField=De,exports.readExitCodeHook=cn,exports.readUseOptions=ln,exports.readUsePlugins=sn,exports.resolveListenHost=gn,exports.tsHostBinding=Mt,exports.validateLayer=ut,exports.warnIfNonLoopbackListen=_n,exports.wireObservers=I,exports.wrapMcpStructuredContent=Ft;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,s)=>(s=n==null?{}:e(i(n)),o(r||!n||!n.__esModule||!a.call(n,`default`)?t(s,`default`,{value:n,enumerable:!0}):s,n));require("node:fs");let c=require("node:module");require("node:path");let l=require("pino");l=s(l);let u=require("ajv");u=s(u);let d=require("ajv-formats");d=s(d);var f=`$apigen`,p=class extends Error{constructor(e){super(e),this.code=`E_DUP_CODEC`,this.name=`CodecRegistryError`}};function m(e){e?.wellKnown;let t=new Map;return{register(e,n){if(t.has(e.id)&&!n?.override)throw new p(`E_DUP_CODEC: a codec is already registered for id "${e.id}"`);t.set(e.id,e)},resolve(e){for(let n of t.values())if(n.matches(e))return n},get(e){return t.get(e)},ids(){return[...t.keys()]},freeze(){let e=new Map(t),n={register(){throw new p(`E_DUP_CODEC: registry is frozen and cannot accept new codecs`)},resolve(t){for(let n of e.values())if(n.matches(t))return n},get(t){return e.get(t)},ids(){return[...e.keys()]},freeze(){return n}};return n}}}var ee=`x-apigen-logical`,h=`x-apigen-codec`,te=`x-apigen-ctor`,ne=`x-apigen-tojson`,re=`0.1.0`,g=[];function ie(e,t){return{registry:e,resolve:e=>{throw Error(`[apigen-logical] $ref "${e}" cannot be resolved in run-mode without a descriptor root. Supply a resolve() in the ctx override to handle $ref.`)},seen:new WeakSet,path:``,mode:`strict`,...t}}function _(e,t,n,r=g){let i=n.registry.resolve(t);if(i)return i.encode(e,t,n);let a=t.$ref;if(typeof a==`string`)return le(a,r,n),_(e,ae(a,n),n,[...r,a]);let o=t.oneOf;if(Array.isArray(o))return _(e,se(e,o,t,n,r),n,r);let s=t.type;return s===`array`?Array.isArray(e)?oe(e,n,()=>{let r=t.items;if(!r)return e.map(e=>C(e));let i=n.path;return Array.isArray(r)?e.map((e,t)=>{let a=r[t];return a===void 0?C(e):_(e,a,{...n,path:`${i}/${t}`})}):e.map((e,t)=>_(e,r,{...n,path:`${i}/${t}`}))}):x(e,t,n):s===`object`?typeof e!=`object`||!e||Array.isArray(e)?x(e,t,n):oe(e,n,()=>{let r=t.properties;if(!r)return C(e);let i=n.path,a={};for(let[t,o]of Object.entries(r)){let r=e[t];r!==void 0&&(a[t]=_(r,o,{...n,path:`${i}/${t}`}))}return a}):s==null?x(e,t,n):C(e)}function v(e,t,n,r=g){let i=n.registry.resolve(t);if(i)return i.decode(e,t,n);let a=t.$ref;if(typeof a==`string`)return le(a,r,n),v(e,ae(a,n),n,[...r,a]);let o=t.oneOf;if(Array.isArray(o))return v(e,se(e,o,t,n,r),n,r);let s=t.type;if(s===`array`){if(!Array.isArray(e))return e;let r=t.items;if(!r)return e;let i=n.path;return Array.isArray(r)?e.map((e,t)=>{let a=r[t];return a===void 0?e:v(e,a,{...n,path:`${i}/${t}`})}):e.map((e,t)=>v(e,r,{...n,path:`${i}/${t}`}))}if(s===`object`){if(typeof e!=`object`||!e||Array.isArray(e))return e;let r=t.properties;if(!r)return e;let i=n.path,a={};for(let[t,o]of Object.entries(r)){let r=e[t];r!==void 0&&(a[t]=v(r,o,{...n,path:`${i}/${t}`}))}for(let[t,n]of Object.entries(e))!(t in r)&&n!==void 0&&(a[t]=n);return a}return s==null?S(e,n):e}function ae(e,t){let n=[e],r=t.resolve(e);for(;typeof r.$ref==`string`&&t.registry.resolve(r)===void 0;){let e=r.$ref;if(n.includes(e))throw Error(`[apigen-logical] $ref "${e}" at "${t.path||`#`}" is an alias cycle (${[...n,e].join(` -> `)}); a $ref chain must end at a definition that is not itself a $ref`);n.push(e),r=t.resolve(e)}return r}function oe(e,t,n){if(t.seen.has(e))throw Error(`[apigen-logical] cyclic host value at "${t.path||`#`}": the value contains a reference to one of its own ancestors, which cannot be encoded to JSON`);t.seen.add(e);try{return n()}finally{t.seen.delete(e)}}function se(e,t,n,r,i=g){let a=n.discriminator;if(a?.propertyName){let n=a.propertyName,i=typeof e==`object`&&e?e[n]:void 0;if(typeof i==`string`){if(a.mapping){let e=a.mapping[i];if(e){let n=t.find(t=>t.$ref===e);if(n)return n}}for(let e of t){let t=ce(e,r).properties?.[n];if(!t)continue;let a=t.enum;if(t.const===i||Array.isArray(a)&&a.includes(i))return e}}}let o=de(e,t,r,i);if(o)return o;let s,c=-1;for(let n of t){let t=y(n,r,i);if(t===void 0)continue;let a=b(e,t.node,r,t.viaRefs);a!==null&&a>c&&(c=a,s=n)}return s===void 0?t[0]??{}:s}function ce(e,t){let n=e.$ref;return typeof n==`string`?t.resolve(n):e}function y(e,t,n){let r=e.$ref;if(typeof r!=`string`)return{node:e,viaRefs:n};if(!n.includes(r))return{node:t.resolve(r),viaRefs:[...n,r]}}function le(e,t,n){let r=t.indexOf(e);if(r===-1)return;let i=[...t.slice(r),e].join(` -> `);throw Error(`[apigen-logical] E_RUNMODE_CYCLE: $ref "${e}" at "${n.path||`#`}" re-enters itself while transcoding the same value (chain ${i}); a $ref/oneOf cycle that never descends into a property or item cannot terminate`)}function ue(e){if(`const`in e)return e.const;let t=e.enum;if(Array.isArray(t)&&t.length===1)return t[0]}function de(e,t,n,r=g){if(typeof e!=`object`||!e||Array.isArray(e))return;let i=e,a=t.map(e=>ce(e,n)),o=new Set;for(let e of a){let t=e.properties;if(t)for(let[e,n]of Object.entries(t))ue(n)!==void 0&&o.add(e)}for(let s of o){let o=a.map(e=>{let t=e.properties?.[s];return t?ue(t):void 0}),c=o.filter(e=>e!==void 0),l=new Set(c);if(c.length<2||l.size!==c.length)continue;let u=i[s];if(u===void 0)continue;let d=o.findIndex(e=>e===u);if(d===-1)continue;let f=y(t[d],n,r);if(f!==void 0&&b(e,f.node,n,f.viaRefs)!==null)return t[d]}}function fe(e){if(e===null)return`null`;if(Array.isArray(e))return`array`;let t=typeof e;return t===`number`?Number.isInteger(e)?`integer`:`number`:t}function b(e,t,n,r=g){let i=t.oneOf;if(Array.isArray(i)){let t=null;for(let a of i){let i=y(a,n,r);if(i===void 0)continue;let o=b(e,i.node,n,i.viaRefs);o!==null&&(t===null||o>t)&&(t=o)}return t}let a=t.type,o=fe(e);if(typeof a==`string`){if(!(a===o||a===`number`&&o===`integer`))return null}else if(Array.isArray(a)&&!a.some(e=>e===o||e===`number`&&o===`integer`))return null;if(typeof e!=`object`||!e||Array.isArray(e))return+(typeof a==`string`);let s=e,c=t.required,l=0;if(Array.isArray(c)){for(let e of c)if(typeof e==`string`){if(s[e]===void 0)return null;l+=2}}let u=t.properties;if(u){for(let e of Object.keys(u))s[e]!==void 0&&(l+=1);for(let e of Object.keys(s))u[e]===void 0&&--l}return l}function x(e,t,n){for(let t of n.registry.ids()){let r=n.registry.get(t);if(r?.ownsValue?.(e))return{[f]:t,v:r.encode(e,r.schema,n)}}if(Array.isArray(e))return e.map(e=>x(e,{},n));if(pe(e)){let t={};for(let[r,i]of Object.entries(e))i!==void 0&&(t[r]=x(i,{},n));return t}return C(e)}function pe(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function S(e,t){if(typeof e==`object`&&e&&!Array.isArray(e)&&`$apigen`in e){let n=e,r=n[f],i=t.registry.get(r);if(i)return i.decode(n.v,i.schema,t)}if(Array.isArray(e))return e.map(e=>S(e,t));if(pe(e)){let n={};for(let[r,i]of Object.entries(e))n[r]=S(i,t);return n}return e}function C(e){if(e===null||typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return e;if(Array.isArray(e))return e.map(C);if(typeof e==`object`){let t={};for(let[n,r]of Object.entries(e))r!==void 0&&(t[n]=C(r));return t}return null}function me(e,t){let n=new Set,r=[e];for(;r.length>0;){let e=r.pop();if(!e||n.has(e))continue;n.add(e);let i=e.$ref;if(typeof i==`string`){if(t){let e=t[i];if(!e){let e=Object.keys(t).join(`, `)||`(none)`;throw Error(`[apigen-logical] $ref "${i}" cannot be resolved. Available $defs: ${e}`)}r.push(e)}continue}let a=e.oneOf;if(Array.isArray(a))for(let e of a)typeof e==`object`&&e&&r.push(e);let o=e.properties;if(o)for(let e of Object.values(o))r.push(e);let s=e.items;if(Array.isArray(s))for(let e of s)typeof e==`object`&&e&&r.push(e);else typeof s==`object`&&s&&r.push(s);let c=e.additionalProperties;typeof c==`object`&&c&&r.push(c);let l=e.propertyNames;typeof l==`object`&&l&&r.push(l)}}function he(e){return{encode(t,n,r){return _(t,n,ie(e,r))},decode(t,n,r){return v(t,n,ie(e,r))}}}var ge=class extends Error{constructor(e,t){super(`${e} (at ${t||`#`})`),this.code=`E_EMIT`,this.name=`EmitError`,this.path=t}};function _e(e){return t=>{let n=/^#\/(\$defs|definitions)\/([^/]+)$/.exec(t);if(!n)throw new ge(`E_EMIT: unsupported $ref form "${t}"; supported forms are "#/$defs/<name>" and "#/definitions/<name>"`,``);let r=e[n[1]],i=w(r,ve(n[2]))??w(r,t);if(typeof i!=`object`||!i)throw new ge(`E_EMIT: $ref "${t}" has no $def target`,``);return i}}function w(e,t){if(typeof e==`object`&&e)return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0}function ve(e){return e.replace(/~1/g,`/`).replace(/~0/g,`~`)}`
2
+ function __apigenEnvelopeEncode(v) {
3
+ // Schema-less position: pass typed JSON through unchanged. A richer host
4
+ // prelude may wrap recognized runtime types as { ${JSON.stringify(f)}: id, v }.
5
+ return v;
6
+ }
7
+ function __apigenEnvelopeDecode(w) {
8
+ return w != null && typeof w === 'object' && ${JSON.stringify(f)} in w
9
+ ? w.v
10
+ : w;
11
+ }
12
+ `.trim(),Object.freeze({"date-time":{encode:`$.toISOString()`,decode:`new Date($)`,mode:`native`},int64:{encode:`String($)`,decode:`BigInt($)`,mode:`native`},byte:{encode:`Buffer.from($).toString('base64')`,decode:`new Uint8Array(Buffer.from($, 'base64'))`,mode:`native`}});var T={id:`date-time`,kind:`scalar`,schema:{type:`string`,format:`date-time`},matches(e){return e.type===`string`&&e.format===`date-time`},ownsValue(e){return e instanceof Date},encode(e,t,n){return e.toISOString()},decode(e,t,n){if(typeof e!=`string`){if(n.mode===`strict`)throw TypeError(`[date-time] expected a string on the wire at "${n.path}", got ${typeof e}`);return new Date(String(e))}if(n.mode===`strict`&&Number.isNaN(new Date(e).getTime()))throw TypeError(`[date-time] invalid date-time string at "${n.path}": ${JSON.stringify(e)}`);return new Date(e)}},E={id:`int64`,kind:`scalar`,schema:{type:`string`,format:`int64`},matches(e){return e.type===`string`&&e.format===`int64`},ownsValue(e){return typeof e==`bigint`},encode(e,t,n){return String(e)},decode(e,t,n){if(typeof e!=`string`){if(n.mode===`strict`)throw TypeError(`[int64] expected a string on the wire at "${n.path}", got ${typeof e}`);try{return BigInt(Math.trunc(Number(e)))}catch{return BigInt(0)}}if(n.mode===`strict`)return BigInt(e);if(/^-?\d+$/.test(e))try{return BigInt(e)}catch{return BigInt(0)}return BigInt(0)}};function ye(e){return e}var D={id:`decimal`,kind:`scalar`,schema:{type:`string`,format:`decimal`},matches(e){return e.type===`string`&&e.format===`decimal`},encode(e,t,n){return e},decode(e,t,n){if(typeof e!=`string`){if(n.mode===`strict`)throw TypeError(`[decimal] expected a string on the wire at "${n.path}", got ${typeof e}`);return ye(String(e))}if(n.mode===`strict`&&!/^-?\d+(\.\d+)?$/.test(e))throw TypeError(`[decimal] wire value "${e}" at "${n.path}" is not a valid decimal string`);return ye(e)}},O={id:`byte`,kind:`scalar`,schema:{type:`string`,format:`byte`},matches(e){return e.type===`string`&&e.format===`byte`},ownsValue(e){return e instanceof Uint8Array},encode(e,t,n){return Buffer.from(e).toString(`base64`)},decode(e,t,n){if(typeof e!=`string`){if(n.mode===`strict`)throw TypeError(`[byte] expected a base64 string on the wire at "${n.path}", got ${typeof e}`);return new Uint8Array}if(n.mode===`strict`&&!/^[A-Za-z0-9+/]*={0,2}$/.test(e))throw TypeError(`[byte] wire value at "${n.path}" is not standard base64 (format:byte): "${e}"`);return new Uint8Array(Buffer.from(e,`base64`))}},be=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,k={id:`uuid`,kind:`scalar`,schema:{type:`string`,format:`uuid`},matches(e){return e.type===`string`&&e.format===`uuid`},encode(e,t,n){return e.toLowerCase()},decode(e,t,n){if(typeof e!=`string`){if(n.mode===`strict`)throw TypeError(`[uuid] expected a string on the wire at "${n.path}", got ${typeof e}`);return String(e).toLowerCase()}if(n.mode===`strict`&&!be.test(e))throw TypeError(`[uuid] wire value "${e}" at "${n.path}" is not a lowercase-hyphenated RFC 4122 UUID`);return e}},A=`NaN`,j=`Infinity`,M=`-Infinity`,xe=new Set([A,j,M]),N={id:`number-special`,kind:`scalar`,schema:{type:`number`},matches(e){return e.type===`number`&&e.format===void 0},ownsValue(e){return typeof e==`number`&&!Number.isFinite(e)},encode(e,t,n){return Number.isNaN(e)?A:e===1/0?j:e===-1/0?M:e},decode(e,t,n){if(typeof e==`number`)return e;if(typeof e==`string`){if(e===A)return NaN;if(e===j)return 1/0;if(e===M)return-1/0;let t=Number(e);if(!Number.isNaN(t))return t}if(n.mode===`strict`)throw TypeError(`[number-special] unrecognized wire value at "${n.path}": ${JSON.stringify(e)}. Expected a number or one of ${[...xe].join(`, `)}.`);return NaN}},Se=[T,E,D,O,k,N];function Ce(e,t={}){for(let n of Se)e.register(n,{override:t.override??!1})}var we=12;function Te(e,t){let n=/^#\/(definitions|\$defs)\/(.+)$/.exec(e);if(!n)return;let[,r,i]=n;return(r===`$defs`?t.$defs:t.definitions)?.[decodeURIComponent(i)]}function Ee(e){return Array.isArray(e)&&e.length>0?e[0]:void 0}function De(e){if(Array.isArray(e.type))return e.type.find(e=>e!==`null`)??e.type[0];if(typeof e.type==`string`)return e.type;if(e.properties)return`object`}function Oe(e){switch(e.format){case`date-time`:return`1970-01-01T00:00:00.000Z`;case`date`:return`1970-01-01`;case`time`:return`00:00:00Z`;case`uuid`:return`00000000-0000-0000-0000-000000000000`;case`email`:return`user@example.com`;case`uri`:case`url`:case`uri-reference`:return`https://example.com`;case`hostname`:return`example.com`;case`ipv4`:return`127.0.0.1`;case`ipv6`:return`::1`;case`decimal`:return`0`;case`int64`:return`0`;case`byte`:return``;default:return`<string>`}}function ke(e,t,n){let r=e.properties??{},i=e.required??[],a={};for(let e of i){let i=r[e];a[e]=i===void 0?`<${e}>`:P(i,t,n+1)}return a}function Ae(e,t,n){let r=Array.isArray(e.items)?e.items[0]:e.items;return r?[P(r,t,n+1)]:[]}function P(e,t=e??{},n=0){if(!e||n>we)return null;if(typeof e.$ref==`string`){let r=Te(e.$ref,t);return r===void 0?null:P(r,t,n+1)}if(e.const!==void 0)return e.const;if(Array.isArray(e.enum)&&e.enum.length>0)return e.enum[0];if(Array.isArray(e.allOf)&&e.allOf.length>0){let r={},i=[];for(let t of e.allOf){Object.assign(r,t.properties??{});for(let e of t.required??[])i.includes(e)||i.push(e)}return ke({...e,properties:r,required:i},t,n)}let r=Ee(e.oneOf)??Ee(e.anyOf);if(r)return P(r,t,n+1);switch(De(e)){case`object`:return ke(e,t,n);case`array`:return Ae(e,t,n);case`string`:return Oe(e);case`integer`:case`number`:return 0;case`boolean`:return!1;case`null`:return null;default:return null}}function je(e){if(!e)return;let t=P(e);return`Example: ${JSON.stringify(t)}`}T.id,E.id,D.id,O.id,k.id,N.id,Object.freeze({typescript:{"date-time":{encode:`$.toISOString()`,decode:`new Date($)`,mode:`native`},int64:{encode:`String($)`,decode:`BigInt($)`,mode:`native`},decimal:{encode:`$.toString()`,decode:`new Decimal($)`,imports:[],dep:{name:`decimal.js`,version:`^10`},mode:`branded`},byte:{encode:`Buffer.from($).toString('base64')`,decode:`new Uint8Array(Buffer.from($, 'base64'))`,mode:`native`},uuid:{encode:`$.toLowerCase()`,decode:`$`,mode:`native`},"number-special":{encode:`numToWire($)`,decode:`wireToNum($)`,mode:`native`}},python:{"date-time":{encode:`$.isoformat()`,decode:`datetime.fromisoformat($)`,imports:[`from datetime import datetime`],mode:`native`},int64:{encode:`str($)`,decode:`int($)`,mode:`native`},decimal:{encode:`str($)`,decode:`Decimal($)`,imports:[`from decimal import Decimal`],mode:`native`},byte:{encode:`b64encode($).decode()`,decode:`b64decode($)`,imports:[`from base64 import b64encode, b64decode`],mode:`native`},uuid:{encode:`str($)`,decode:`UUID($)`,imports:[`from uuid import UUID`],mode:`native`},"number-special":{encode:`num_to_wire($)`,decode:`wire_to_num($)`,mode:`native`}},rust:{"date-time":{encode:`__SCAFFOLD_RUST_DATETIME_ENCODE__`,decode:`__SCAFFOLD_RUST_DATETIME_DECODE__`,imports:[`use chrono::{DateTime, Utc};`],dep:{name:`chrono`,version:`^0.4`},mode:`lib`},int64:{encode:`__SCAFFOLD_RUST_INT64_ENCODE__`,decode:`__SCAFFOLD_RUST_INT64_DECODE__`,imports:[`use serde_with::DisplayFromStr;`],dep:{name:`serde_with`,version:`^3`},mode:`lib`},decimal:{encode:`__SCAFFOLD_RUST_DECIMAL_ENCODE__`,decode:`__SCAFFOLD_RUST_DECIMAL_DECODE__`,imports:[`use rust_decimal::Decimal;`],dep:{name:`rust_decimal`,version:`^1`},mode:`lib`},byte:{encode:`__SCAFFOLD_RUST_BYTE_ENCODE__`,decode:`__SCAFFOLD_RUST_BYTE_DECODE__`,imports:[`use serde_with::base64::Base64;`],dep:{name:`serde_with`,version:`^3`},mode:`lib`},uuid:{encode:`__SCAFFOLD_RUST_UUID_ENCODE__`,decode:`__SCAFFOLD_RUST_UUID_DECODE__`,imports:[`use uuid::Uuid;`],dep:{name:`uuid`,version:`^1`},mode:`lib`},"number-special":{encode:`__SCAFFOLD_RUST_NUMSPECIAL_ENCODE__`,decode:`__SCAFFOLD_RUST_NUMSPECIAL_DECODE__`,mode:`native`}},go:{"date-time":{encode:`__SCAFFOLD_GO_DATETIME_ENCODE__`,decode:`__SCAFFOLD_GO_DATETIME_DECODE__`,imports:[`"time"`],mode:`native`},int64:{encode:`__SCAFFOLD_GO_INT64_ENCODE__`,decode:`__SCAFFOLD_GO_INT64_DECODE__`,imports:[`"strconv"`],mode:`native`},decimal:{encode:`__SCAFFOLD_GO_DECIMAL_ENCODE__`,decode:`__SCAFFOLD_GO_DECIMAL_DECODE__`,imports:[`"github.com/shopspring/decimal"`],dep:{name:`github.com/shopspring/decimal`,version:`v1`},mode:`lib`},byte:{encode:`__SCAFFOLD_GO_BYTE_ENCODE__`,decode:`__SCAFFOLD_GO_BYTE_DECODE__`,imports:[`"encoding/base64"`],mode:`native`},uuid:{encode:`__SCAFFOLD_GO_UUID_ENCODE__`,decode:`__SCAFFOLD_GO_UUID_DECODE__`,imports:[`"github.com/google/uuid"`],dep:{name:`github.com/google/uuid`,version:`v1`},mode:`lib`},"number-special":{encode:`__SCAFFOLD_GO_NUMSPECIAL_ENCODE__`,decode:`__SCAFFOLD_GO_NUMSPECIAL_DECODE__`,mode:`native`}},java:{"date-time":{encode:`$.toString()`,decode:`Instant.parse($)`,imports:[`import java.time.Instant;`],dep:{name:`jackson-datatype-jsr310`,version:`2.x`},mode:`lib`},int64:{encode:`@JsonFormat(shape = JsonFormat.Shape.STRING)`,decode:`@JsonFormat(shape = JsonFormat.Shape.STRING)`,imports:[`import com.fasterxml.jackson.annotation.JsonFormat;`],mode:`native`},decimal:{encode:`@JsonSerialize(using = ToStringSerializer.class)`,decode:`new BigDecimal($)`,imports:[`import java.math.BigDecimal;`,`import com.fasterxml.jackson.databind.annotation.JsonSerialize;`,`import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;`],mode:`native`},byte:{encode:`$`,decode:`$`,mode:`native`},uuid:{encode:`$.toString()`,decode:`UUID.fromString($)`,imports:[`import java.util.UUID;`],mode:`native`},"number-special":{encode:`@JsonSerialize(using = NumberSpecialSerializer.class)`,decode:`@JsonDeserialize(using = NumberSpecialDeserializer.class)`,imports:[`import com.fasterxml.jackson.databind.annotation.JsonSerialize;`,`import com.fasterxml.jackson.databind.annotation.JsonDeserialize;`],mode:`native`}}});var Me=[`invalid_argument`,`unauthenticated`,`permission_denied`,`not_found`,`internal`],F=class extends Error{constructor(e,t,n){super(t),this.name=`ApiError`,this.code=e,this.details=n,Object.setPrototypeOf(this,new.target.prototype)}toJSON(){let e={code:this.code,message:this.message};return this.details!==void 0&&(e.details=this.details),e}};function Ne(e){return typeof e==`object`&&!!e&&e.name===`ApiError`&&Me.includes(e.code)&&typeof e.toJSON==`function`}function Pe(e,t,n=0){return e===`before-first-chunk`?{phase:e,error:t}:{phase:e,error:t,chunksDelivered:n}}function Fe(e){let{produce:t,signal:n}=e,r=n??new AbortController().signal;return{[Symbol.asyncIterator](){let e=t(r);return{async next(){return r.aborted?(await e.return(void 0),{done:!0,value:void 0}):e.next()},async return(t){return await e.return(t),{done:!0,value:void 0}},async throw(t){return await e.throw(t),{done:!0,value:void 0}}}}}}async function Ie(e){let t=[];for await(let n of e)t.push(n);return t}async function Le(e){let t=[];try{for await(let n of e)t.push(n);return{ok:!0,chunks:t}}catch(e){let n=Ne(e)?e:new F(`internal`,e instanceof Error?e.message:String(e));return t.length===0?{ok:!1,carrier:Pe(`before-first-chunk`,n)}:{ok:!1,carrier:Pe(`after-first-chunk`,n,t.length)}}}function I(e){return typeof e==`object`&&!!e&&Symbol.asyncIterator in e}var L=m();Ce(L);var R=he(L.freeze());function Re(e,t){return t in(e.input?.properties??{})}function ze(e){let t=e.input?.properties?.data;return Object.keys(t?.properties??{})}function Be(e,t){let n=e.input?.properties?.data?.properties?.[t];return n===void 0?void 0:n}function Ve(e,t,n){return t===void 0||e===void 0?e:R.decode(e,t,n)}function He(e,t){let n=_e(e);return{resolve:e=>{try{return n(e)}catch(e){let n=e instanceof Error?e.message:String(e),r=Error(`[apigen-engine-runtime] op "${t}": ${n}`);throw r.cause=e,r}}}}function Ue(e,t,n){return{[Symbol.asyncIterator]:async function*(){for await(let r of e)yield R.encode(r,t,n)}}}function z(e,t,n){let r=n.output;if(!r||Object.keys(r).length===0)return e;let i=He(r,t);return I(e)?Ue(e,r,i):R.encode(e,r,i)}async function We(e,t,n,r,i,a){let o=ze(n),s=He(n.input,r),c=o.map(e=>Ve(a[e],Be(n,e),s));if(Re(n,`session`)&&t){let a=await t({session:i.session});return z(await e[r](a,...c),r,n)}if(n.hasCtx){let a=t?await t(i):void 0;return z(await e[r](a,...c),r,n)}return z(await e[r](...c),r,n)}var Ge=class{constructor(){this._map=new Map}set(e,t){this._map.set(e,t)}get(e){return this._map.get(e)}has(e){return this._map.has(e)}};function Ke(e=[]){return async function(t,n,r){let i=r.schemas[t];if(!i)throw Error(`apigen/invoke: no schema found for operation "${t}"`);return e.reduceRight((e,t)=>()=>t(n,e),()=>We(r.fns,r.createClient,i,t,n.envelope,n.domainArgs))()}}function qe(e){return e}var Je=class{constructor(){this.handlers=new Map}on(e,t){let n=this.handlers.get(e)??[];return this.handlers.set(e,[...n,t]),()=>this.off(e,t)}off(e,t){let n=this.handlers.get(e);if(!n)return;let r=n.filter(e=>e!==t);r.length===0?this.handlers.delete(e):this.handlers.set(e,r)}clear(){this.handlers.clear()}async emit(e){for(let[t,n]of this.handlers)if(Ye(t,e))for(let t of n)await t(e)}};function Ye(e,t){let[n,r,i]=e.split(`:`);return!(n!==`*`&&n!==t.module||r&&r!==`*`&&r!==t.method||i&&i!==`*`&&i!==t.lifecycle)}function Xe(e,t){for(let n of e)if(n.eventMapping)for(let[e,r]of Object.entries(n.eventMapping))t.on(e,r)}async function Ze(e,t,n){let r={...t};for(let t of e)if(t.createContext){await n.emit({module:t.id,method:`createContext`,lifecycle:`start`,ctx:r});try{let e=await t.createContext(r);r={...r,...e},await n.emit({module:t.id,method:`createContext`,lifecycle:`complete`,ctx:r})}catch(e){throw await n.emit({module:t.id,method:`createContext`,lifecycle:`error`,ctx:r,error:e}),e}}return r}(0,c.createRequire)(require("node:url").pathToFileURL(__filename).href);var B=new Set([`string`,`number`,`boolean`,`integer`]);function Qe(e){if(!Array.isArray(e)||e.length<2)return!1;let t=0;for(let n of e){if(typeof n!=`object`||!n)return!1;let{type:e,$ref:r,oneOf:i,anyOf:a,allOf:o}=n;if(r!==void 0||i||a||o)return!1;if(e!==`null`){if(typeof e==`string`&&B.has(e)){t++;continue}return!1}}return t===1}function $e(e){if(typeof e!=`object`||!e)return!1;let t=e;if(t.$ref!==void 0||t.allOf)return!1;if(t.oneOf||t.anyOf)return Qe(t.oneOf??t.anyOf);let{type:n}=t;return typeof n==`string`?B.has(n):Array.isArray(n)?n.every(e=>B.has(e)||e===`null`):Array.isArray(t.enum)&&t.enum.length>0?t.enum.every(e=>[`string`,`number`,`boolean`].includes(typeof e)):!1}function V(e){if(!e||typeof e!=`object`)return!1;let t=e.properties;return t===void 0||typeof t!=`object`||!t?!1:Object.values(t).every($e)}function et(e){let t={},n=e=>{for(let n of[`definitions`,`$defs`]){let r=e[n];if(r)for(let[e,i]of Object.entries(r)){let r=e.startsWith(`#/`)?e:`#/${n}/${e}`;t[r]=i}}};for(let t of Object.values(e.schemas))n(t.input),n(t.output);if(Object.keys(t).length!==0)for(let[n,r]of Object.entries(e.schemas))try{me(r.input,t),me(r.output,t)}catch(e){throw Error(`[apigen-core-client] Schema validation failed for function "${n}": ${e.message}`)}}function tt(e,t){let n=[`apigen calling convention: all domain parameters go inside a "data" envelope β€” e.g. { "data": { ... } }`+(t?`.`:` (an empty object for this zero-parameter tool).`)];return e.length>0&&n.push(`Field(s) ${e.map(e=>`"${e}"`).join(`, `)} are transport-level envelope metadata, NOT domain data β€” do not nest them under "data". Over MCP they are read from arguments._meta["x-<pluginId>-<field>"] (default pluginId "adhd"); see @adhd/apigen-engine-naming's envelopeMetaKey/envelopeCliFlag/envelopeEnvVar for the HTTP-header / CLI-flag / env-var equivalents.`),n.join(` `)}function nt(e,t,n){et(e);let r={};for(let[i,a]of Object.entries(e.schemas)){let e=n?.[i]??{},o=a.input.properties??{},s=a.input.required??[],c={},l=[],u={};for(let n of t)if(n.envelope&&e[n.id]!==!1)for(let[e,t]of Object.entries(n.envelope))c[e]=t,u[e]=n.id,l.includes(e)||l.push(e);let d={type:`object`,properties:o,additionalProperties:!1,...s.length>0?{required:s}:{}},f=a.safe===!0||V(a.input),p=a.input.definitions,m=a.input.$defs;r[i]={input:{type:`object`,properties:{...c,data:d},required:[...l,...s.length>0?[`data`]:[]],additionalProperties:!1,description:tt(Object.keys(c),Object.keys(o).length>0),...p?{definitions:p}:{},...m?{$defs:m}:{}},output:a.output,...a.hasCtx?{hasCtx:!0}:{},"x-apigen-safe":f,...Object.keys(u).length>0?{"x-apigen-envelope":u}:{}}}return r}var rt={"decimal.js":`Decimal`};function it(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}Object.entries(rt).map(([e,t])=>({pattern:RegExp(`import\\(["'][^"']*${it(e)}[^"']*["']\\)\\.\\w+`,`g`),key:t}));var H=class extends Error{constructor(e){super(e),this.name=`ConfigurationError`}};function at(e){for(let t of e)for(let e of Object.keys(t.eventMapping??{})){let[n]=e.split(`:`);if(n!==`*`&&n===t.id)throw new H(`Middleware "${t.id}" subscribes to its own events via "${e}". This would cause infinite recursion.`)}}function ot(e){let{domainSchemas:t,middlewares:n,overrides:r={},strict:i=!1}=e;at(n);for(let e of Object.keys(r))if(!(e in t.schemas)){let t=`Override key "${e}" not found in domain schemas.`;if(i)throw new H(t);console.warn(`[apigen-runtime]`,t)}let a=new Set(n.map(e=>e.id));for(let[e,t]of Object.entries(r))for(let n of Object.keys(t??{}))if(!a.has(n)){let t=`Override key "${e}.${n}" does not match any declared middleware id.`;if(i)throw new H(t);console.warn(`[apigen-runtime]`,t)}let o=nt(t,n,r),s=new Je;return Xe(n,s),{schemas:o,createClient:async e=>Ze(n,e,s),dispose:()=>s.clear()}}function st(e={}){let t=e.level??`info`,n=typeof e.destination==`string`&&e.destination.length>0,r=!n&&!!process.stderr.isTTY,i=e.format??(r?`pretty`:`json`),a={level:t};if(i===`pretty`)return a.transport={target:`pino-pretty`,options:{colorize:!n,translateTime:`SYS:HH:MM:ss.l`,ignore:`pid,hostname`,...n?{destination:e.destination,mkdir:!0}:{destination:2}}},(0,l.default)(a);let o=n?l.default.destination({dest:e.destination,mkdir:!0,sync:!0}):l.default.destination(2);return(0,l.default)(a,o)}function ct(e){if(e?.type!==`object`||!e.properties)return;let t=Object.entries(e.properties);if(t.length===0)return;let n=new Set(e.required??[]);return`{ ${t.map(([e,t])=>`${e}${n.has(e)?``:`?`}: ${U(t)}`).join(`, `)} }`}function lt(e){return typeof e==`string`?`'${e}'`:JSON.stringify(e)}function ut(e){let t=e.enum??[];return t.length===0?`unknown`:t.map(lt).join(`|`)}function dt(e,t){return e.map(e=>U(e,t)).join(` | `)}function U(e,t=0){if(!e)return`unknown`;if(e.type===`array`)return`${U(e.items,0)}[]`;if(e.enum)return ut(e);if(e.$ref)return String(e.$ref).split(`/`).pop()||`object`;let n=e.anyOf??e.oneOf;return n?n.length===0?`unknown`:t>=2?dt(n,t-1):`union`:t>=1&&e.type===`object`?ct(e)??`object`:e.type??`object`}function ft(e){let t=(e?.input??{}).properties?.data,n=t?.properties??{},r=new Set(t?.required??[]),i=Object.entries(n).map(([e,t])=>({name:e,type:U(t,2),required:r.has(e)}));return{params:i,text:i.map(e=>`${e.name}${e.required?``:`?`}: ${e.type}`).join(`, `)}}function pt(e){let t;return t=Array.isArray(e)?e:e?[e]:[],t.find(e=>e===`number`||e===`integer`||e===`boolean`)}function mt(e,t){let n=(t?.input??{}).properties?.data?.properties??{},r={...e};for(let[e,t]of Object.entries(n)){let n=r[e];if(typeof n!=`string`)continue;let i=pt(t?.type);if(i===`number`||i===`integer`){let t=Number(n);!Number.isNaN(t)&&n.trim()!==``&&(r[e]=t)}else i===`boolean`&&(n===`true`?r[e]=!0:n===`false`&&(r[e]=!1))}return r}var ht=new Set([`default`,`module.exports`,`__esModule`]);function gt(e){let t={},n=(e,r)=>{for(let[i,a]of Object.entries(e))if(typeof a==`function`){!ht.has(i)&&!(i in t)&&(t[i]=a);let e=a.name;e&&!(e in t)&&(t[e]=a)}else a&&typeof a==`object`&&r<2&&ht.has(i)&&n(a,r+1)};return n(e,0),t}var W=new u.default({allErrors:!0,verbose:!0});(0,d.default)(W);for(let e of[ee,h,te,ne,`discriminator`])W.addKeyword({keyword:e,valid:!0});W.addFormat(`decimal`,/^[+-]?(?:\d+(?:\.\d+)?|\.\d+)$/);function _t(e){return e?e.replace(/^\//,``).split(`/`).map(e=>e.replace(/~1/g,`/`).replace(/~0/g,`~`)).join(`.`):`(root)`}function vt(e){let t=e?.properties;return t?Object.keys(t):[]}function yt(e,t){let n=e.length,r=t.length;if(n===0)return r;if(r===0)return n;let i=Array.from({length:r+1},(e,t)=>t);for(let a=1;a<=n;a++){let n=[a];for(let o=1;o<=r;o++){let r=e[a-1]===t[o-1]?0:1;n[o]=Math.min(i[o]+1,n[o-1]+1,i[o-1]+r)}i=n}return i[r]}function bt(e,t){let n,r=1/0;for(let i of t){let t=yt(e.toLowerCase(),i.toLowerCase());t<r&&(r=t,n=i)}let i=Math.max(2,Math.floor(e.length/3));return n!==void 0&&r<=i?n:void 0}function xt(e){return e===null?`null`:Array.isArray(e)?`array`:typeof e}function St(e){let t=_t(e.instancePath),n=e.params??{};switch(e.keyword){case`additionalProperties`:{let r=String(n.additionalProperty??`?`),i=vt(e.parentSchema),a=bt(r,i);return`unknown key '${r}' at ${t}${i.length?`; allowed keys: ${i.join(`, `)}`:``}${a?` (did you mean '${a}'?)`:``}`}case`required`:{let r=String(n.missingProperty??`?`),i=vt(e.parentSchema);return`missing required key '${r}' at ${t}${i.length?`; allowed keys: ${i.join(`, `)}`:``}`}case`enum`:{let r=Array.isArray(n.allowedValues)?n.allowedValues:[],i=e.data;return`value ${JSON.stringify(i)} at ${t} is not one of: ${r.map(e=>JSON.stringify(e)).join(`, `)}`}case`type`:{let r=e.data;return`${t} must be ${String(n.type)} (got ${xt(r)})`}default:return`${t} ${e.message??`failed schema check`}`}}var G=12;function Ct(e){let t=e.slice(0,G).map(St);return e.length>G&&t.push(`…and ${e.length-G} more`),t.join(`; `)}function K(e){return e===null?!1:Array.isArray(e)?e.some(K):typeof e!=`object`||Object.values(e).some(K)}function wt(e,t){let n=[`Validation failed: ${Ct(e)}`],r=P(t);return K(r)&&n.push(`Example: ${JSON.stringify(r)}`),n.join(` β€” `)}var Tt=async(e,t)=>{let n=e.ctx.get(Et);if(n===void 0)return t();let r=n[e.operation.id];if(r===void 0)return t();let i={data:e.domainArgs,...e.envelope},a=W.compile(r.input);if(!a(i)){let e=a.errors??[];throw new F(`invalid_argument`,wt(e,r.input),e)}return t()},Et=Symbol(`ValidateSchemasToken`);function Dt(e){return async function(t,n){let r=e[t.operation.id];if(r===void 0)return n();let i={data:t.domainArgs,...t.envelope},a=W.compile(r.input);if(!a(i)){let e=a.errors??[];throw new F(`invalid_argument`,wt(e,r.input),e)}return n()}}function Ot(){return`xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`.replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e===`x`?t:t&3|8).toString(16)})}var kt=class{constructor(e={}){this._store=new Map,this._sweeper=null,this._defaultTtlMs=e.defaultTtlMs;let t=null;t=e.sweepIntervalMs===0?null:e.sweepIntervalMs===void 0?this._defaultTtlMs===void 0?null:Math.max(1e3,Math.floor(this._defaultTtlMs/4)):e.sweepIntervalMs,t!==null&&t>0&&(this._sweeper=setInterval(()=>this._sweep(),t),this._sweeper.unref?.())}create(e,t=[],n){let r=new e(...t),i=Ot(),a=n??this._defaultTtlMs,o=a===void 0?null:Date.now()+a;return this._store.set(i,{instance:r,expiresAt:o}),{instanceId:i}}get(e){let t=this._store.get(e);if(!t)throw Error(`[instance-registry] Unknown instanceId: "${e}"`);if(t.expiresAt!==null&&Date.now()>t.expiresAt)throw this._evict(e,t),Error(`[instance-registry] Instance "${e}" has expired`);return t.instance}async dispatch(e,t,n=[]){let r=this.get(e),i=r[t];if(typeof i!=`function`)throw Error(`[instance-registry] Method "${t}" not found on instance "${e}"`);return i.call(r,...n)}async dispose(e){let t=this._store.get(e);t&&(this._store.delete(e),await q(t.instance))}async disposeAll(){this._sweeper!==null&&(clearInterval(this._sweeper),this._sweeper=null);let e=[...this._store.entries()];this._store.clear(),await Promise.all(e.map(([,e])=>q(e.instance)))}get size(){return this._store.size}_sweep(){let e=Date.now();for(let[t,n]of this._store)n.expiresAt!==null&&e>n.expiresAt&&this._evict(t,n)}_evict(e,t){this._store.delete(e),q(t.instance)}};async function q(e){if(typeof e==`object`&&e&&`dispose`in e){let t=e.dispose;typeof t==`function`&&await t.call(e)}}var J=class extends Error{constructor(e,t){super(t),this.name=`UnionCodecError`,this.code=e}};function Y(e){let t=e.discriminator;if(typeof t!=`object`||!t||Array.isArray(t))return;let n=t;if(typeof n.propertyName!=`string`)return;let r=n.mapping;if(typeof r==`object`&&r&&!Array.isArray(r))return{propertyName:n.propertyName,mapping:r}}function At(e,t){let n=e[h];if(typeof n==`string`){let e=t.registry.get(n);if(e)return e}return t.registry.resolve(e)}function jt(e,t,n){let r=At(t,n);return r?r.encode(e,t,n):e}function Mt(e,t,n){let r=At(t,n);return r?r.decode(e,t,n):e}function Nt(e){let{id:t,schema:n}=e;return{id:t,kind:`union`,schema:n,matches(e){if(e[`x-apigen-logical`]===`union`)return!0;let t=e.oneOf;return!Array.isArray(t)||t.length===0?!1:Y(e)!==void 0},encode(e,n,r){let i=Y(n);if(!i)throw new J(`E_UNION_NO_DISCRIMINATOR`,`[${t}] schema node at "${r.path}" has no discriminator.propertyName; cannot dispatch union branch.`);let{propertyName:a,mapping:o}=i,s=e[a];if(s==null)throw new J(`E_UNION_NO_DISCRIMINATOR`,`[${t}] value at "${r.path}" is missing the discriminator property "${a}".`);let c=String(s),l=o[c];if(!l)throw new J(`E_UNION_UNKNOWN_TAG`,`[${t}] discriminator tag "${c}" at "${r.path}" is not in the mapping (known: ${Object.keys(o).join(`, `)}).`);return jt(e,r.resolve(l),{...r,path:`${r.path}[${c}]`})},decode(e,n,r){if(typeof e!=`object`||!e||Array.isArray(e)){let n;throw n=e===null?`null`:Array.isArray(e)?`array`:typeof e,new J(`E_UNION_INVALID_WIRE`,`[${t}] expected a JSON object on the wire at "${r.path}", got ${n}.`)}let i=e,a=Y(n);if(!a)throw new J(`E_UNION_NO_DISCRIMINATOR`,`[${t}] schema node at "${r.path}" has no discriminator.propertyName; cannot dispatch union branch.`);let{propertyName:o,mapping:s}=a,c=i[o];if(c==null)throw new J(`E_UNION_NO_DISCRIMINATOR`,`[${t}] wire object at "${r.path}" is missing the discriminator property "${o}".`);let l=String(c),u=s[l];if(!u)throw new J(`E_UNION_UNKNOWN_TAG`,`[${t}] discriminator tag "${l}" on the wire at "${r.path}" is not in the mapping (known: ${Object.keys(s).join(`, `)}).`);return Mt(e,r.resolve(u),{...r,path:`${r.path}[${l}]`})}}}var X=class extends Error{constructor(e,t){super(t),this.name=`NominalCodecError`,this.code=e}};function Pt(e){let t=e.properties;return t&&typeof t==`object`&&!Array.isArray(t)?t:{}}function Ft(e){let t=e.required;return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}function It(e,t,n){if(t){let r=n.registry.resolve(t);if(r)return r.encode(e,t,n)}return e}function Lt(e,t,n){if(t){let r=n.registry.resolve(t);if(r)return r.decode(e,t,n)}return e}function Rt(e){let{id:t,schema:n,ctor:r}=e;return{id:t,kind:`nominal`,schema:n,matches(e){return e[`x-apigen-logical`]===`nominal`||e[h]===t},encode(e,n,r){if(typeof e!=`object`||!e)return e;if(r.seen.has(e)){if(r.mode===`strict`)throw new X(`E_NOMINAL_CYCLE`,`[${t}] cycle detected at "${r.path}": a nominal instance references itself. Strict mode rejects cycles (DESIGN Β§8.3); break the cycle or use 'lossy' mode.`);return null}r.seen.add(e);try{let t=Pt(n),i=e[typeof n[`x-apigen-tojson`]==`string`?n[ne]:`toJSON`];if(typeof i==`function`){let n=i.call(e);if(typeof n==`object`&&n&&!Array.isArray(n)){let e={};for(let[i,a]of Object.entries(n))e[i]=It(a,t[i],{...r,path:`${r.path}/${i}`});return e}return n}let a={},o=Object.keys(t),s=e,c=o.length>0?o:Object.keys(s);for(let e of c){let n=s[e];n!==void 0&&(a[e]=It(n,t[e],{...r,path:`${r.path}/${e}`}))}return a}finally{r.seen.delete(e)}},decode(e,n,i){if(typeof e!=`object`||!e||Array.isArray(e)){let n;throw n=e===null?`null`:Array.isArray(e)?`array`:typeof e,new X(`E_NOMINAL_INVALID_WIRE`,`[${t}] expected a JSON object on the wire at "${i.path}", got ${n}.`)}let a=e;for(let e of Ft(n))if(!(e in a))throw new X(`E_NOMINAL_INVALID_WIRE`,`[${t}] required field "${e}" missing on the wire at "${i.path}".`);if(n[`x-apigen-instances`]===!1)throw new X(`E_NOMINAL_NONRECONSTRUCTABLE`,`[${t}] is encode-only: the extractor marked it non-reconstructable (x-apigen-instances:false). It cannot be decoded back to a live instance.`);let o=Pt(n),s={};for(let[e,t]of Object.entries(a))s[e]=Lt(t,o[e],{...i,path:`${i.path}/${e}`});if(r){let e=typeof n[`x-apigen-ctor`]==`string`?n[te]:`fromJSON`,t=r[e];return typeof t==`function`?t.call(r,s):new r(s)}return s}}}var zt=[T,E,D,O,k,N],Bt=Rt({id:`ts.NominalSentinel`,schema:{type:`object`,"x-apigen-logical":`nominal`,"x-apigen-codec":`ts.NominalSentinel`}}),Vt=Nt({id:`ts.UnionSentinel`,schema:{oneOf:[],discriminator:{propertyName:`kind`,mapping:{}},"x-apigen-logical":`union`,"x-apigen-codec":`ts.UnionSentinel`}});function Ht(){let e=[...zt.map(e=>[e.id,e]),[Bt.id,Bt],[Vt.id,Vt]];return Object.freeze(new Map(e))}var Ut=Object.freeze({host:`ts`,logicalTypeVersion:re,codecs:Ht()});function Wt(e,t,n){let r=[n,typeof t?.input?.description==`string`?t.input.description:void 0,je(t?.input)].filter(e=>typeof e==`string`&&e.length>0);return r.length>0?r.join(` β€” `):e}function Gt(e){if(!e||typeof e!=`object`||Array.isArray(e)||Object.keys(e).length===0)return{outputSchema:void 0,wrapped:!1};let t=e;return t.type===`object`?{outputSchema:t,wrapped:!0}:{outputSchema:void 0,wrapped:!1}}function Kt(e,t){if(e)return t&&typeof t==`object`&&!Array.isArray(t)?t:void 0}var qt=4,Jt=32;function Z(e){return Ne(e)?e:e instanceof Error?new F(`internal`,e.message):e}function Yt(e,t){if(e===`serial`||e===`chained`)return 1;let n=t??4;return!Number.isFinite(n)||n<1?1:Math.min(Math.floor(n),32)}function Xt(){}function Zt(e,t){if(!e&&!t)return{signal:void 0,dispose:Xt};let n=new AbortController,r=()=>{n.abort(e?.reason)};e&&(e.aborted?n.abort(e.reason):e.addEventListener(`abort`,r,{once:!0}));let i;return t!==void 0&&!n.signal.aborted&&(i=setTimeout(()=>{n.abort(new DOMException(`apigen/invokeBatch: item timed out after ${t}ms`,`TimeoutError`))},t),i.unref?.()),{signal:n.signal,dispose(){e&&e.removeEventListener(`abort`,r),i&&clearTimeout(i)}}}async function Qt(e,t,n,r,i,a){let o=Zt(r.signal,a);try{let a=await e(t,o.signal?{...r,signal:o.signal}:r,i);if(I(a)){let e=await Le(a);if(!e.ok){let t=e.carrier;return{index:n,status:`rejected`,reason:Z(t.error),...t.phase===`after-first-chunk`?{chunksDelivered:t.chunksDelivered}:{}}}return{index:n,status:`fulfilled`,chunks:e.chunks}}return{index:n,status:`fulfilled`,value:a}}catch(e){return{index:n,status:`rejected`,reason:Z(e)}}finally{o.dispose()}}async function $t(e,t,n,r,i={}){let a=i.mode??`parallel`,o=i.onItemError??`continue`,s=Yt(a,i.concurrency),c=Array(n.length),l=e=>({index:e,status:`rejected`,reason:Z(Error(`apigen/invokeBatch: not attempted β€” an earlier item failed and `+(a===`chained`?`mode is "chained"`:`onItemError is "abort"`)))});if(a===`serial`||a===`chained`){let s=!1;for(let u=0;u<n.length;u++){if(s){c[u]=l(u);continue}let d=await Qt(e,t,u,n[u],r,i.itemTimeoutMs);c[u]=d,d.status===`rejected`&&(a===`chained`||o===`abort`)&&(s=!0)}return c}let u=0,d=!1,f=Math.max(1,Math.min(s,n.length)),p=Array.from({length:f},async()=>{for(;;){let a=u++;if(a>=n.length)return;if(d){c[a]=l(a);continue}let s=await Qt(e,t,a,n[a],r,i.itemTimeoutMs);c[a]=s,s.status===`rejected`&&o===`abort`&&(d=!0)}});return await Promise.all(p),c}function en(e){return e.words.join(`-`)}function tn(e){return e.words.map(cn).join(``)}function nn(e){return e.words.join(`_`)}function rn(e,t={}){let n=[e.namespace,...e.path],r=e.safe||V(e.input)?`GET`:`POST`,i=t.http?.verb?.[e.id]??r,a=`/`+n.map(e=>en(e)).join(`/`),o=n.map(e=>nn(e)).join(`_`),s=n.map(e=>nn(e)).slice(0,-1).join(`.`),c=tn(n[n.length-2]??n[0]),l=tn(n[n.length-1]),u=n.map(e=>en(e));return{http:{verb:i,route:a},mcp:{name:o},grpc:{package:s,service:c,method:l},cli:{path:u}}}function an(e,t){return`x-${e}-${t}`}function on(e,t){return`--${e}-${t}`}function sn(e,t){let n=e=>e.toUpperCase().replace(/-/g,`_`);return e===`adhd`?`APIGEN_${n(t)}`:`APIGEN_${n(e)}_${n(t)}`}function cn(e){return e.length===0?e:e[0].toUpperCase()+e.slice(1)}function Q(e){return e.anyOf??e.oneOf}function ln(e){if(!e)return!1;if(e.type===`array`||e.type===`object`)return!0;let t=Q(e);if(t){let e=t.filter(e=>e.type!==`null`);return e.length>0&&e.every(e=>e.type===`array`||e.type===`object`)}return!1}function un(e){if(!e)return!1;if(e.type===`boolean`)return!0;let t=Q(e);if(t){let e=t.filter(e=>e.type!==`null`);return e.length>0&&e.every(e=>e.type===`boolean`)}return!1}function dn(e){if(!e)return!1;if(e.type===`number`||e.type===`integer`)return!0;let t=Q(e);if(t){let e=t.filter(e=>e.type!==`null`);return e.length>0&&e.every(e=>e.type===`number`||e.type===`integer`)}return!1}function fn(e){return e.replace(/[A-Z]/g,e=>`-`+e.toLowerCase())}function pn(e){let t=e.input?.properties?.data;return{props:t?.properties??{},required:t?.required??[]}}function mn(e){return typeof e.handler==`function`}function hn(e){let t=e.input?.properties??{},n=e[`x-apigen-envelope`],r=[];for(let e of Object.keys(t)){if(e===`data`)continue;let t=n?.[e]??`adhd`,i=an(t,e);r.push({field:e,pluginId:t,httpHeader:i,mcpMetaKey:i,cliFlag:on(t,e),envVar:sn(t,e)})}return r}function gn(e,t,n,r){t===n||e.has(t)||e.set(t,{...r,aliasOf:n})}function _n(e,t){let n=new Map,{props:r}=pn(e);for(let[e,t]of Object.entries(r)){let r=`string`;un(t)?r=`boolean`:(ln(t)||dn(t))&&(r=`json`);let i=fn(e),a={camelKey:e,kind:`domain`,valueKind:r};n.set(i,a),gn(n,e,i,a)}for(let e of t){let t=e.cliFlag.replace(/^--/,``),r={camelKey:e.field,kind:`envelope`,valueKind:`string`,envVar:e.envVar};n.set(t,r)}return n}function vn(e){let{op:t,schema:n,transport:r,projection:i}=e,a=rn(t,i),o=n?hn(n):[],s=n?_n(n,o):new Map,c=n?ft(n).params:void 0,l={op:t,transport:r,http:a.http,mcp:a.mcp,cli:a.cli,grpc:a.grpc,params:c,envelope:o,cliFlags:s,streaming:t.streaming,isMount:mn(t)};if(mn(t)){let e=t.handler;l.mountHandler=async t=>e(t)}return l}function yn(e){let t=e.usePlugins;return Array.isArray(t)?t:[]}function bn(e){let t=e.exitCode;return typeof t==`function`?t:void 0}function xn(e){let t=e.useOptions;return t&&typeof t==`object`?t:{}}function Sn(e){return async function(t,n){let r=Object.assign(t,{data:t.domainArgs});return await e.layer(r,n)}}function Cn(e,t){let n=[];for(let e of t){let t=e.capabilities?.layer;t&&n.push(Sn(t))}return n.push(Dt(e)),Ke(n)}function wn(){let e=new Map;return{get:t=>e.get(t),set:(t,n)=>{e.set(t,n)}}}var Tn={input:{type:`object`,properties:{data:{type:`object`,properties:{}}}},output:{}};async function En(e,t,n,r){let i={...n,operation:{id:e.op.id},ctx:new Ge,transport:e.transport};if(e.isMount){let a=e.mountHandler;if(!a)throw Error(`apigen-engine-runtime/dispatchForPlan: OpPlan for mount op "${e.op.id}" has isMount=true but no mountHandler`);let o={operation:e.op,data:n.domainArgs,envelope:n.envelope,ctx:wn(),transport:e.transport,signal:n.signal??new AbortController().signal},s={...r,fns:{[e.op.id]:()=>a(o)},schemas:{[e.op.id]:Tn}};return t(e.op.id,i,s)}return t(e.op.id,i,r)}var $=`127.0.0.1`;function Dn(e){let t=e.trim().toLowerCase().replace(/^\[|\]$/g,``);if(t===`localhost`||t===`::1`)return!0;let n=t.startsWith(`::ffff:`)?t.slice(7):t;return/^127(\.\d{1,3}){3}$/.test(n)}function On(e){if(typeof e!=`string`)return $;let t=e.trim();return t===``?$:t}function kn(e,t,n){return!Dn(e)&&(n?.warn({host:e,host_kind:t},`${t} binding non-loopback host "${e}": the server will be reachable from the network. Omit the host option to bind ${$}.`),!0)}exports.BATCH_DEFAULT_CONCURRENCY=qt,exports.BATCH_MAX_CONCURRENCY=Jt,exports.DEFAULT_LISTEN_HOST=$,exports.EventBus=Je,exports.InstanceRegistry=kt,exports.LayerContext=Ge,exports.UnionCodecError=J,exports.ValidateSchemasToken=Et,exports.WELL_KNOWN_TS_CODECS=zt,exports.adaptCoreLayer=Sn,exports.assertNoSelfSubscription=at,exports.buildContext=Ze,exports.buildFnTable=gt,exports.buildMcpOutputSchema=Gt,exports.buildOpPlan=vn,exports.buildToolDescription=Wt,exports.coerceQueryParams=mt,exports.collectWithPhase=Le,exports.createApiPackage=ot,exports.createInvoker=Ke,exports.createLogger=st,exports.createPackageInvoker=Cn,exports.createStream=Fe,exports.createUnionCodec=Nt,exports.dataParamNames=ze,exports.defineMiddleware=qe,exports.describeParams=ft,exports.dispatch=We,exports.dispatchForPlan=En,exports.drainStream=Ie,exports.invokeBatch=$t,exports.isApiStream=I,exports.isLoopbackListenHost=Dn,exports.makeValidateLayer=Dt,exports.needsEnvelopeField=Re,exports.readExitCodeHook=bn,exports.readUseOptions=xn,exports.readUsePlugins=yn,exports.resolveListenHost=On,exports.tsHostBinding=Ut,exports.validateLayer=Tt,exports.warnIfNonLoopbackListen=kn,exports.wireObservers=Xe,exports.wrapMcpStructuredContent=Kt;