@adhd/apigen-engine-runtime 0.3.1 β†’ 0.3.3

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,25 @@
1
+ ## 0.3.3 (2026-10-09)
2
+
3
+ ### 🩹 Fixes
4
+
5
+ - **agent-mcp:** bind loopback 127.0.0.1 by default; apigen hosts and generated servers too (5989ed90) ([c079e826](https://github.com/PseudoSky/adhd/commit/c079e826))
6
+
7
+ ### ❀️ Thank You
8
+
9
+ - pseudosky
10
+
11
+ ## 0.3.2 (2026-10-03)
12
+
13
+ ### 🩹 Fixes
14
+
15
+ - **apigen:** engine-supplied Call.transport + real-transport tracing e2e ([509ee4c7](https://github.com/PseudoSky/adhd/commit/509ee4c7))
16
+ - **apigen-engine-runtime:** make validation errors actionable ([37847eb7](https://github.com/PseudoSky/adhd/commit/37847eb7))
17
+ - **workspace:** restore the publish gate's heavy lane and canonicalise the gate ([45532731](https://github.com/PseudoSky/adhd/commit/45532731))
18
+
19
+ ### ❀️ Thank You
20
+
21
+ - pseudosky
22
+
1
23
  ## 0.3.0 (2026-09-26)
2
24
 
3
25
  ### πŸš€ Features
package/README.md CHANGED
@@ -36,13 +36,30 @@ import type { Logger, LogFormat, CreateLoggerOptions, ParamInfo, AnyFn, BatchOpt
36
36
  `apigen-plugin-mcp`'s dynamic server, so every apigen-mounted tool's description carries a
37
37
  concrete example of its own real shape, not just a generic convention sentence.
38
38
 
39
- ## Validation error messages include a worked example
39
+ ## Validation error messages are actionable
40
40
 
41
- The validate-Layer's AJV validation-failure errors append the same schema-synthesized
42
- example described above (`invalid_argument`, `Validation failed: ... β€” Example: {...}`) β€”
43
- so a rejected call comes back with both what was structurally wrong and a shape that would
44
- actually pass. This closes a real discoverability gap: previously an error only named the
45
- missing/invalid property, never what a correct call looked like.
41
+ The validate-Layer's AJV validation-failure errors (`invalid_argument`) are built so a
42
+ caller β€” including an LLM β€” can correct the call in one round-trip:
43
+
44
+ - **`additionalProperties`** names the offending key, lists the keys that *would* have been
45
+ accepted, and adds a nearest-key "did you mean" hint β€” e.g.
46
+ `unknown key 'agge' at data; allowed keys: name, age (did you mean 'age'?)`.
47
+ - **`required`** names the missing key and the accepted set.
48
+ - **`enum`** echoes the rejected value and lists the allowed values.
49
+
50
+ This closes the discoverability gap where AJV's raw message was the bare
51
+ "must NOT have additional properties" β€” which named neither the offending key nor the
52
+ accepted set, so a caller could only guess again. Violations are listed one per line and
53
+ capped (with an `…and N more` tail) rather than concatenated into an unreadable run.
54
+
55
+ The message still appends the schema-synthesized worked example described above,
56
+ **except** when that example would synthesize to nested empty objects (an all-optional
57
+ input, e.g. `{"data":{"input":{}}}`) β€” then it is dropped rather than shown, because it
58
+ reads as "pass an empty object" and teaches nothing.
59
+
60
+ > Requires AJV `verbose: true`: the formatter reads `parentSchema` (the accepted-key set)
61
+ > and `data` (the rejected value) off each `ErrorObject`, neither of which is present on
62
+ > AJV's default error shape.
46
63
 
47
64
  ## Request envelope
48
65
 
package/index.d.ts CHANGED
@@ -34,3 +34,4 @@ export type { TransportAdapter } from './lib/transport-adapter';
34
34
  export { createPackageInvoker, readUsePlugins, readExitCodeHook, readUseOptions, adaptCoreLayer, } from './lib/package-invoker';
35
35
  export type { UsePlugin, UseOptions } from './lib/package-invoker';
36
36
  export { dispatchForPlan } from './lib/dispatch-for-plan';
37
+ export { DEFAULT_LISTEN_HOST, isLoopbackListenHost, resolveListenHost, warnIfNonLoopbackListen, } from './lib/bind-host';
package/index.js CHANGED
@@ -1 +1 @@
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`,g=`x-apigen-ctor`,te=`x-apigen-tojson`,ne=`0.1.0`;function re(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){let r=n.registry.resolve(t);if(r)return r.encode(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,ie(e,a,t,n),n);let o=t.type;if(o===`array`){if(!Array.isArray(e))return x(e,t,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}`}))}if(o===`object`){if(typeof e!=`object`||!e||Array.isArray(e))return x(e,t,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}return o==null?x(e,t,n):C(e)}function v(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 v(e,n.resolve(i),n);let a=t.oneOf;if(Array.isArray(a))return v(e,ie(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:v(e,a,{...n,path:`${i}/${t}`})}):e.map((e,t)=>v(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]=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 o==null?S(e,n):e}function ie(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=y(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=oe(e,t,r);if(a)return a;let o,s=-1;for(let n of t){let t=b(e,y(n,r),r);t!==null&&t>s&&(s=t,o=n)}return o===void 0?t[0]??{}:o}function y(e,t){let n=e.$ref;return typeof n==`string`?t.resolve(n):e}function ae(e){if(`const`in e)return e.const;let t=e.enum;if(Array.isArray(t)&&t.length===1)return t[0]}function oe(e,t,n){if(typeof e!=`object`||!e||Array.isArray(e))return;let r=e,i=t.map(e=>y(e,n)),a=new Set;for(let e of i){let t=e.properties;if(t)for(let[e,n]of Object.entries(t))ae(n)!==void 0&&a.add(e)}for(let o of a){let a=i.map(e=>{let t=e.properties?.[o];return t?ae(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&&b(e,i[u],n)!==null)return t[u]}}function se(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){let r=t.oneOf;if(Array.isArray(r)){let t=null;for(let i of r){let r=b(e,y(i,n),n);r!==null&&(t===null||r>t)&&(t=r)}return t}let i=t.type,a=se(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 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(ce(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 ce(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(ce(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 w(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 le(e){return{encode(t,n,r){return _(t,n,re(e,r))},decode(t,n,r){return v(t,n,re(e,r))}}}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 ue(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 ue(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 ue(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`))}},de=/^[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`&&!de.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`,fe=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 ${[...fe].join(`, `)}.`);return NaN}},pe=[T,E,D,O,k,N];function me(e,t={}){for(let n of pe)e.register(n,{override:t.override??!1})}var he=12;function ge(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 P(e){return Array.isArray(e)&&e.length>0?e[0]:void 0}function _e(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 ve(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 F(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}>`:I(i,t,n+1)}return a}function ye(e,t,n){let r=Array.isArray(e.items)?e.items[0]:e.items;return r?[I(r,t,n+1)]:[]}function I(e,t=e??{},n=0){if(!e||n>he)return null;if(typeof e.$ref==`string`){let r=ge(e.$ref,t);return r===void 0?null:I(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 F({...e,properties:r,required:i},t,n)}let r=P(e.oneOf)??P(e.anyOf);if(r)return I(r,t,n+1);switch(_e(e)){case`object`:return F(e,t,n);case`array`:return ye(e,t,n);case`string`:return ve(e);case`integer`:case`number`:return 0;case`boolean`:return!1;case`null`:return null;default:return null}}function L(e){if(!e)return;let t=I(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 R=m();me(R);var z=le(R.freeze());function B(e,t){return t in(e.input?.properties??{})}function V(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 xe(e,t){return t===void 0||e===void 0?e:z.decode(e,t)}function H(e,t){let n=t.output;return!n||Object.keys(n).length===0?e:z.encode(e,n)}async function Se(e,t,n,r,i,a){let o=V(n).map(e=>xe(a[e],be(n,e)));if(B(n,`session`)&&t){let a=await t({session:i.session});return H(await e[r](a,...o),n)}if(n.hasCtx){let a=t?await t(i):void 0;return H(await e[r](a,...o),n)}return H(await e[r](...o),n)}var Ce=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 we(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),()=>Se(r.fns,r.createClient,i,t,n.envelope,n.domainArgs))()}}function Te(e){return e}var Ee=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(De(t,e))for(let t of n)await t(e)}};function De(e,t){let[n,r,i]=e.split(`:`);return!(n!==`*`&&n!==t.module||r&&r!==`*`&&r!==t.method||i&&i!==`*`&&i!==t.lifecycle)}function Oe(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 ke(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 Ae=new Set([`string`,`number`,`boolean`,`integer`]);function je(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`?Ae.has(n):Array.isArray(n)?n.every(e=>Ae.has(e)||e===`null`):Array.isArray(t.enum)&&t.enum.length>0?t.enum.every(e=>[`string`,`number`,`boolean`].includes(typeof e)):!1}function Me(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(je)}function Ne(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{w(r.input,t),w(r.output,t)}catch(e){throw Error(`[apigen-core-client] Schema validation failed for function "${n}": ${e.message}`)}}function Pe(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 Fe(e,t,n){Ne(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||Me(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:Pe(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 Ie={"decimal.js":`Decimal`};function Le(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}Object.entries(Ie).map(([e,t])=>({pattern:RegExp(`import\\(["'][^"']*${Le(e)}[^"']*["']\\)\\.\\w+`,`g`),key:t}));var U=class extends Error{constructor(e){super(e),this.name=`ConfigurationError`}};function Re(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 U(`Middleware "${t.id}" subscribes to its own events via "${e}". This would cause infinite recursion.`)}}function ze(e){let{domainSchemas:t,middlewares:n,overrides:r={},strict:i=!1}=e;Re(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 U(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 U(t);console.warn(`[apigen-runtime]`,t)}let o=Fe(t,n,r),s=new Ee;return Oe(n,s),{schemas:o,createClient:async e=>ke(n,e,s),dispose:()=>s.clear()}}function Be(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 Ve(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)?``:`?`}: ${W(t)}`).join(`, `)} }`}function He(e){return typeof e==`string`?`'${e}'`:JSON.stringify(e)}function Ue(e){let t=e.enum??[];return t.length===0?`unknown`:t.map(He).join(`|`)}function We(e,t){return e.map(e=>W(e,t)).join(` | `)}function W(e,t=0){if(!e)return`unknown`;if(e.type===`array`)return`${W(e.items,0)}[]`;if(e.enum)return Ue(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?We(n,t-1):`union`:t>=1&&e.type===`object`?Ve(e)??`object`:e.type??`object`}function Ge(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:W(t,2),required:r.has(e)}));return{params:i,text:i.map(e=>`${e.name}${e.required?``:`?`}: ${e.type}`).join(`, `)}}function Ke(e){let t;return t=Array.isArray(e)?e:e?[e]:[],t.find(e=>e===`number`||e===`integer`||e===`boolean`)}function qe(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=Ke(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 Je=new Set([`default`,`module.exports`,`__esModule`]);function Ye(e){let t={},n=(e,r)=>{for(let[i,a]of Object.entries(e))if(typeof a==`function`){!Je.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&&Je.has(i)&&n(a,r+1)};return n(e,0),t}var Xe=[`invalid_argument`,`unauthenticated`,`permission_denied`,`not_found`,`internal`],G=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 Ze(e){return typeof e==`object`&&!!e&&e.name===`ApiError`&&Xe.includes(e.code)&&typeof e.toJSON==`function`}function Qe(e,t,n=0){return e===`before-first-chunk`?{phase:e,error:t}:{phase:e,error:t,chunksDelivered:n}}var K=new u.default({allErrors:!0});(0,d.default)(K);for(let e of[ee,h,g,te,`discriminator`])K.addKeyword({keyword:e,valid:!0});K.addFormat(`decimal`,/^[+-]?(?:\d+(?:\.\d+)?|\.\d+)$/);function $e(e){return e.map(e=>`${e.instancePath||`(root)`} ${e.message??`failed schema check`}`).join(`; `)}function et(e,t){let n=L(t),r=[`Validation failed: ${$e(e)}`];return n&&r.push(n),r.join(` β€” `)}var tt=async(e,t)=>{let n=e.ctx.get(nt);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=K.compile(r.input);if(!a(i)){let e=a.errors??[];throw new G(`invalid_argument`,et(e,r.input),e)}return t()},nt=Symbol(`ValidateSchemasToken`);function rt(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=K.compile(r.input);if(!a(i)){let e=a.errors??[];throw new G(`invalid_argument`,et(e,r.input),e)}return n()}}function it(){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 at=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=it(),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)}}function ot(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 st(e){let t=[];for await(let n of e)t.push(n);return t}async function ct(e){let t=[];try{for await(let n of e)t.push(n);return{ok:!0,chunks:t}}catch(e){let n=Ze(e)?e:new G(`internal`,e instanceof Error?e.message:String(e));return t.length===0?{ok:!1,carrier:Qe(`before-first-chunk`,n)}:{ok:!1,carrier:Qe(`after-first-chunk`,n,t.length)}}}function lt(e){return typeof e==`object`&&!!e&&Symbol.asyncIterator in 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 ut(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 dt(e,t,n){let r=ut(t,n);return r?r.encode(e,t,n):e}function ft(e,t,n){let r=ut(t,n);return r?r.decode(e,t,n):e}function pt(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 dt(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 ft(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 mt(e){let t=e.properties;return t&&typeof t==`object`&&!Array.isArray(t)?t:{}}function ht(e){let t=e.required;return Array.isArray(t)?t.filter(e=>typeof e==`string`):[]}function gt(e,t,n){if(t){let r=n.registry.resolve(t);if(r)return r.encode(e,t,n)}return e}function _t(e,t,n){if(t){let r=n.registry.resolve(t);if(r)return r.decode(e,t,n)}return e}function vt(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=mt(n),i=e[typeof n[`x-apigen-tojson`]==`string`?n[te]:`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]=gt(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]=gt(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 ht(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=mt(n),s={};for(let[e,t]of Object.entries(a))s[e]=_t(t,o[e],{...i,path:`${i.path}/${e}`});if(r){let e=typeof n[`x-apigen-ctor`]==`string`?n[g]:`fromJSON`,t=r[e];return typeof t==`function`?t.call(r,s):new r(s)}return s}}}var yt=[T,E,D,O,k,N],bt=vt({id:`ts.NominalSentinel`,schema:{type:`object`,"x-apigen-logical":`nominal`,"x-apigen-codec":`ts.NominalSentinel`}}),xt=pt({id:`ts.UnionSentinel`,schema:{oneOf:[],discriminator:{propertyName:`kind`,mapping:{}},"x-apigen-logical":`union`,"x-apigen-codec":`ts.UnionSentinel`}});function St(){let e=[...yt.map(e=>[e.id,e]),[bt.id,bt],[xt.id,xt]];return Object.freeze(new Map(e))}var Ct=Object.freeze({host:`ts`,logicalTypeVersion:ne,codecs:St()});function wt(e,t,n){let r=[n,typeof t?.input?.description==`string`?t.input.description:void 0,L(t?.input)].filter(e=>typeof e==`string`&&e.length>0);return r.length>0?r.join(` β€” `):e}function Tt(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 Et(e,t){if(e)return t&&typeof t==`object`&&!Array.isArray(t)?t:void 0}var Dt=4,Ot=32;function Z(e){return Ze(e)?e:e instanceof Error?new G(`internal`,e.message):e}function kt(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 At(){}function jt(e,t){if(!e&&!t)return{signal:void 0,dispose:At};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 Mt(e,t,n,r,i,a){let o=jt(r.signal,a);try{let a=await e(t,o.signal?{...r,signal:o.signal}:r,i);if(lt(a)){let e=await ct(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 Nt(e,t,n,r,i={}){let a=i.mode??`parallel`,o=i.onItemError??`continue`,s=kt(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 Mt(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 Mt(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 Pt(e){return e.words.join(`-`)}function Ft(e){return e.words.map(Vt).join(``)}function It(e){return e.words.join(`_`)}function Lt(e,t={}){let n=[e.namespace,...e.path],r=e.safe||Me(e.input)?`GET`:`POST`,i=t.http?.verb?.[e.id]??r,a=`/`+n.map(e=>Pt(e)).join(`/`),o=n.map(e=>It(e)).join(`_`),s=n.map(e=>It(e)).slice(0,-1).join(`.`),c=Ft(n[n.length-2]??n[0]),l=Ft(n[n.length-1]),u=n.map(e=>Pt(e));return{http:{verb:i,route:a},mcp:{name:o},grpc:{package:s,service:c,method:l},cli:{path:u}}}function Rt(e,t){return`x-${e}-${t}`}function zt(e,t){return`--${e}-${t}`}function Bt(e,t){let n=e=>e.toUpperCase().replace(/-/g,`_`);return e===`adhd`?`APIGEN_${n(t)}`:`APIGEN_${n(e)}_${n(t)}`}function Vt(e){return e.length===0?e:e[0].toUpperCase()+e.slice(1)}function Q(e){return e.anyOf??e.oneOf}function Ht(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 Ut(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 Wt(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 Gt(e){return e.replace(/[A-Z]/g,e=>`-`+e.toLowerCase())}function Kt(e){let t=e.input?.properties?.data;return{props:t?.properties??{},required:t?.required??[]}}function $(e){return typeof e.handler==`function`}function qt(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=Rt(t,e);r.push({field:e,pluginId:t,httpHeader:i,mcpMetaKey:i,cliFlag:zt(t,e),envVar:Bt(t,e)})}return r}function Jt(e,t,n,r){t===n||e.has(t)||e.set(t,{...r,aliasOf:n})}function Yt(e,t){let n=new Map,{props:r}=Kt(e);for(let[e,t]of Object.entries(r)){let r=`string`;Ut(t)?r=`boolean`:(Ht(t)||Wt(t))&&(r=`json`);let i=Gt(e),a={camelKey:e,kind:`domain`,valueKind:r};n.set(i,a),Jt(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 Xt(e){let{op:t,schema:n,transport:r,projection:i}=e,a=Lt(t,i),o=n?qt(n):[],s=n?Yt(n,o):new Map,c=n?Ge(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:$(t)};if($(t)){let e=t.handler;l.mountHandler=async t=>e(t)}return l}function Zt(e){let t=e.usePlugins;return Array.isArray(t)?t:[]}function Qt(e){let t=e.exitCode;return typeof t==`function`?t:void 0}function $t(e){let t=e.useOptions;return t&&typeof t==`object`?t:{}}function en(e){return async function(t,n){let r=Object.assign(t,{data:t.domainArgs});return await e.layer(r,n)}}function tn(e,t){let n=[];for(let e of t){let t=e.capabilities?.layer;t&&n.push(en(t))}return n.push(rt(e)),we(n)}function nn(){let e=new Map;return{get:t=>e.get(t),set:(t,n)=>{e.set(t,n)}}}var rn={input:{type:`object`,properties:{data:{type:`object`,properties:{}}}},output:{}};async function an(e,t,n,r){let i={...n,operation:{id:e.op.id},ctx:new Ce};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:nn(),transport:e.transport,signal:n.signal??new AbortController().signal},s={...r,fns:{[e.op.id]:()=>a(o)},schemas:{[e.op.id]:rn}};return t(e.op.id,i,s)}return t(e.op.id,i,r)}exports.BATCH_DEFAULT_CONCURRENCY=Dt,exports.BATCH_MAX_CONCURRENCY=Ot,exports.EventBus=Ee,exports.InstanceRegistry=at,exports.LayerContext=Ce,exports.UnionCodecError=J,exports.ValidateSchemasToken=nt,exports.WELL_KNOWN_TS_CODECS=yt,exports.adaptCoreLayer=en,exports.assertNoSelfSubscription=Re,exports.buildContext=ke,exports.buildFnTable=Ye,exports.buildMcpOutputSchema=Tt,exports.buildOpPlan=Xt,exports.buildToolDescription=wt,exports.coerceQueryParams=qe,exports.collectWithPhase=ct,exports.createApiPackage=ze,exports.createInvoker=we,exports.createLogger=Be,exports.createPackageInvoker=tn,exports.createStream=ot,exports.createUnionCodec=pt,exports.dataParamNames=V,exports.defineMiddleware=Te,exports.describeParams=Ge,exports.dispatch=Se,exports.dispatchForPlan=an,exports.drainStream=st,exports.invokeBatch=Nt,exports.isApiStream=lt,exports.makeValidateLayer=rt,exports.needsEnvelopeField=B,exports.readExitCodeHook=Qt,exports.readUseOptions=$t,exports.readUsePlugins=Zt,exports.tsHostBinding=Ct,exports.validateLayer=tt,exports.wireObservers=Oe,exports.wrapMcpStructuredContent=Et;
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;