tjs-lang 0.6.27 → 0.6.28

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/demo/docs.json CHANGED
@@ -115,7 +115,7 @@
115
115
  "type": "example",
116
116
  "group": "basics",
117
117
  "order": 15,
118
- "code": "TjsEquals\n\n/*#\n## The Problem with JavaScript ==\n\nJavaScript's `==` does type coercion, producing surprises:\n\n 0 == '' // true in JS (!)\n false == [] // true in JS (!)\n '' == false // true in JS (!)\n null == 0 // false in JS (but null == undefined is true)\n\nJavaScript's `===` fixes coercion but can't compare values:\n\n new String('hi') === 'hi' // false in JS (different types)\n new Boolean(false) === false // false in JS (object vs primitive)\n\n## TJS Equality (TjsEquals)\n\n`==` becomes **honest equality**: no coercion, but unwraps\nboxed primitives. Fast O(1) — no deep comparison.\n\n`Is` / `IsNot` are **structural equality**: deep comparison\nfor when you explicitly need it. O(n) cost is visible.\n*/\n\n// --- Honest equality (==) fixes coercion ---\nconsole.log('== fixes JS coercion:')\nconsole.log(' 0 == \"\":', 0 == '') // false (JS: true)\nconsole.log(' false == []:', false == []) // false (JS: true)\nconsole.log(' false == \"\":', false == '') // false (JS: true)\nconsole.log(' 1 == \"1\":', 1 == '1') // false (JS: true)\n\n// --- Boxed primitives unwrap ---\nconsole.log('')\nconsole.log('== unwraps boxed primitives:')\nconsole.log(' new String(\"hi\") == \"hi\":', new String('hi') == 'hi') // true\nconsole.log(' new Boolean(false) == false:', new Boolean(false) == false) // true\nconsole.log(' new Number(42) == 42:', new Number(42) == 42) // true\n\n// --- Nullish equality preserved ---\nconsole.log('')\nconsole.log('Nullish equality (useful pattern preserved):')\nconsole.log(' null == undefined:', null == undefined) // true\nconsole.log(' null == 0:', null == 0) // false\nconsole.log(' null == \"\":', null == '') // false\n\n// --- Objects/arrays: reference equality (fast, O(1)) ---\nconsole.log('')\nconsole.log('== on objects/arrays is reference equality (fast):')\nconst obj = {x: 1}\nconsole.log(' obj == obj:', obj == obj) // true (same ref)\nconsole.log(' {x:1} == {x:1}:', {x: 1} == {x: 1}) // false (different refs)\nconsole.log(' [1,2] == [1,2]:', [1, 2] == [1, 2]) // false (different refs)\n\n// --- Is/IsNot: explicit deep structural comparison ---\nconsole.log('')\nconsole.log('Is/IsNot for deep structural comparison (explicit):')\nconsole.log(' {x:1} Is {x:1}:', Is({x: 1}, {x: 1})) // true\nconsole.log(' [1,2,3] Is [1,2,3]:', Is([1,2,3], [1,2,3])) // true\nconsole.log(' [1,2] Is [2,1]:', Is([1,2], [2,1])) // false (order matters)\n\n// Sets compare by membership, not order\nconsole.log(' Set([1,2]) Is Set([2,1]):', Is(new Set([1,2]), new Set([2,1]))) // true\n\n// --- typeof null fixed ---\nconsole.log('')\nconsole.log('typeof null fixed:')\nconsole.log(' typeof null:', typeof null) // 'null' (JS: 'object')\nconsole.log(' typeof undefined:', typeof undefined) // 'undefined'\nconsole.log(' typeof 42:', typeof 42) // 'number' (unchanged)\n\n// --- === unchanged: identity comparison ---\nconsole.log('')\nconsole.log('=== is unchanged (identity):')\nconsole.log(' obj === obj:', obj === obj) // true\nconsole.log(' {x:1} === {x:1}:', {x: 1} === {x: 1}) // false\n\ntest 'typeof null is null, not object' {\n expect(TypeOf(null)).toBe('null')\n expect(TypeOf(undefined)).toBe('undefined')\n expect(TypeOf(42)).toBe('number')\n expect(TypeOf('hi')).toBe('string')\n expect(TypeOf(true)).toBe('boolean')\n expect(TypeOf({})).toBe('object')\n}\n\ntest 'Eq fixes coercion' {\n expect(Eq(0, '')).toBe(false)\n expect(Eq(false, [])).toBe(false)\n expect(Eq('', false)).toBe(false)\n}\n\ntest 'Eq unwraps boxed primitives' {\n expect(Eq(new String('hi'), 'hi')).toBe(true)\n expect(Eq(new Boolean(false), false)).toBe(true)\n expect(Eq(new Number(42), 42)).toBe(true)\n}\n\ntest 'Eq preserves nullish equality' {\n expect(Eq(null, undefined)).toBe(true)\n expect(Eq(null, 0)).toBe(false)\n}\n\ntest 'Is does deep structural comparison' {\n expect(Is({a: 1, b: 2}, {a: 1, b: 2})).toBe(true)\n expect(Is([1, 2, 3], [1, 2, 3])).toBe(true)\n expect(Is([1, 2], [2, 1])).toBe(false)\n}",
118
+ "code": "TjsEquals\n\n/*#\n## The Problem with JavaScript ==\n\nJavaScript's `==` does type coercion, producing surprises:\n\n 0 == '' // true in JS (!)\n false == [] // true in JS (!)\n '' == false // true in JS (!)\n null == 0 // false in JS (but null == undefined is true)\n\nJavaScript's `===` fixes coercion but can't compare values:\n\n new String('hi') === 'hi' // false in JS (different types)\n new Boolean(false) === false // false in JS (object vs primitive)\n\n## TJS Equality (TjsEquals)\n\n`==` becomes **honest equality**: no coercion, but unwraps\nboxed primitives. Fast O(1) — no deep comparison.\n\n`Is` / `IsNot` are **structural equality**: deep comparison\nfor when you explicitly need it. O(n) cost is visible.\n*/\n\n// --- Honest equality (==) fixes coercion ---\nconsole.log('== fixes JS coercion:')\nconsole.log(' [] == ![]:', [] == ![]) // false (JS: true!)\nconsole.log(' 0 == \"\":', 0 == '') // false (JS: true)\nconsole.log(' false == []:', false == []) // false (JS: true)\nconsole.log(' false == \"\":', false == '') // false (JS: true)\nconsole.log(' 1 == \"1\":', 1 == '1') // false (JS: true)\n\n// --- Boxed primitives unwrap ---\nconsole.log('')\nconsole.log('== unwraps boxed primitives:')\nconsole.log(' new String(\"hi\") == \"hi\":', new String('hi') == 'hi') // true\nconsole.log(' new Boolean(false) == false:', new Boolean(false) == false) // true\nconsole.log(' new Number(42) == 42:', new Number(42) == 42) // true\n\n// --- Nullish equality preserved ---\nconsole.log('')\nconsole.log('Nullish equality (useful pattern preserved):')\nconsole.log(' null == undefined:', null == undefined) // true\nconsole.log(' null == 0:', null == 0) // false\nconsole.log(' null == \"\":', null == '') // false\n\n// --- Objects/arrays: reference equality (fast, O(1)) ---\nconsole.log('')\nconsole.log('== on objects/arrays is reference equality (fast):')\nconst obj = {x: 1}\nconsole.log(' obj == obj:', obj == obj) // true (same ref)\nconsole.log(' {x:1} == {x:1}:', {x: 1} == {x: 1}) // false (different refs)\nconsole.log(' [1,2] == [1,2]:', [1, 2] == [1, 2]) // false (different refs)\n\n// --- Is/IsNot: explicit deep structural comparison ---\nconsole.log('')\nconsole.log('Is/IsNot for deep structural comparison (explicit):')\nconsole.log(' {x:1} Is {x:1}:', Is({x: 1}, {x: 1})) // true\nconsole.log(' [1,2,3] Is [1,2,3]:', Is([1,2,3], [1,2,3])) // true\nconsole.log(' [1,2] Is [2,1]:', Is([1,2], [2,1])) // false (order matters)\n\n// Sets compare by membership, not order\nconsole.log(' Set([1,2]) Is Set([2,1]):', Is(new Set([1,2]), new Set([2,1]))) // true\n\n// --- typeof null fixed ---\nconsole.log('')\nconsole.log('typeof null fixed:')\nconsole.log(' typeof null:', typeof null) // 'null' (JS: 'object')\nconsole.log(' typeof undefined:', typeof undefined) // 'undefined'\nconsole.log(' typeof 42:', typeof 42) // 'number' (unchanged)\n\n// --- === unchanged: identity comparison ---\nconsole.log('')\nconsole.log('=== is unchanged (identity):')\nconsole.log(' obj === obj:', obj === obj) // true\nconsole.log(' {x:1} === {x:1}:', {x: 1} === {x: 1}) // false\n\ntest 'typeof null is null, not object' {\n expect(TypeOf(null)).toBe('null')\n expect(TypeOf(undefined)).toBe('undefined')\n expect(TypeOf(42)).toBe('number')\n expect(TypeOf('hi')).toBe('string')\n expect(TypeOf(true)).toBe('boolean')\n expect(TypeOf({})).toBe('object')\n}\n\ntest 'Eq fixes coercion' {\n expect(Eq(0, '')).toBe(false)\n expect(Eq(false, [])).toBe(false)\n expect(Eq('', false)).toBe(false)\n}\n\ntest 'Eq unwraps boxed primitives' {\n expect(Eq(new String('hi'), 'hi')).toBe(true)\n expect(Eq(new Boolean(false), false)).toBe(true)\n expect(Eq(new Number(42), 42)).toBe(true)\n}\n\ntest 'Eq preserves nullish equality' {\n expect(Eq(null, undefined)).toBe(true)\n expect(Eq(null, 0)).toBe(false)\n}\n\ntest 'Is does deep structural comparison' {\n expect(Is({a: 1, b: 2}, {a: 1, b: 2})).toBe(true)\n expect(Is([1, 2, 3], [1, 2, 3])).toBe(true)\n expect(Is([1, 2], [2, 1])).toBe(false)\n}",
119
119
  "language": "tjs",
120
120
  "description": "JavaScript `==` is broken. TJS fixes it without breaking anything."
121
121
  },
@@ -357,6 +357,42 @@
357
357
  "language": "tjs",
358
358
  "description": "Named types with runtime validation. Type, Generic, FunctionPredicate, Enum, Union."
359
359
  },
360
+ {
361
+ "title": "Inline WASM",
362
+ "filename": "wasm-basics.md",
363
+ "path": "guides/examples/tjs/wasm-basics.md",
364
+ "section": "tjs",
365
+ "type": "example",
366
+ "group": "patterns",
367
+ "order": 25,
368
+ "code": "/*#\n## The Problem\n\nUsing WebAssembly in JavaScript requires:\n1. Write WAT or compile from C/Rust\n2. Load a separate .wasm file\n3. Instantiate the module async\n4. Marshal data between JS and WASM heaps\n\nTJS does all of this for you. Write WASM inline using JS-like\nsyntax, it compiles at transpile time and embeds as base64.\n\n## Syntax\n\n function fast(x: 0, y: 0) {\n wasm {\n // JS-like syntax compiled to WASM bytecode\n } fallback {\n // JS fallback if WASM unavailable\n return x + y\n }\n }\n\n // Or with a return value:\n function compute(x: 0) {\n return wasm {\n x * x + 1\n } fallback {\n return x * x + 1\n }\n }\n\nParam types: `i32` (integer), `f32`/`f64` (float), `Float32Array`, etc.\n*/\n\n// --- Basic: integer math in WASM ---\n\nfunction addInts(! a: 0, b: 0) -! 0 {\n return wasm {\n a + b\n } fallback {\n return a + b\n }\n}\n\nfunction factorial(! n: 0) -! 0 {\n return wasm {\n let result = 1\n for (let i = 2; i <= n; i++) {\n result = result * i\n }\n } fallback {\n let result = 1\n for (let i = 2; i <= n; i++) result *= i\n return result\n }\n}\n\n// --- Float math ---\n\nfunction lerp(! a: 0.0, b: 0.0, t: 0.0) -! 0.0 {\n return wasm {\n a + (b - a) * t\n } fallback {\n return a + (b - a) * t\n }\n}\n\n// --- Array processing ---\n\nfunction sumArray(! arr: Float32Array, len: 0) -! 0.0 {\n return wasm {\n let sum = 0.0\n for (let i = 0; i < len; i++) {\n let off = i * 4\n sum = sum + f32x4_extract_lane(f32x4_load(arr, off), 0)\n }\n } fallback {\n let sum = 0\n for (let i = 0; i < len; i++) sum += arr[i]\n return sum\n }\n}\n\nconsole.log('addInts(3, 4):', addInts(3, 4))\nconsole.log('factorial(10):', factorial(10))\nconsole.log('lerp(0, 100, 0.25):', lerp(0.0, 100.0, 0.25))\nconsole.log('sumArray([1,2,3,4]):', sumArray(new Float32Array([1, 2, 3, 4]), 4))",
369
+ "language": "tjs",
370
+ "description": "Write WebAssembly inline — compiled at transpile time, embedded in the output."
371
+ },
372
+ {
373
+ "title": "WASM SIMD",
374
+ "filename": "wasm-simd.md",
375
+ "path": "guides/examples/tjs/wasm-simd.md",
376
+ "section": "tjs",
377
+ "type": "example",
378
+ "group": "patterns",
379
+ "order": 26,
380
+ "code": "/*#\n## SIMD: Single Instruction, Multiple Data\n\nSIMD processes 4 float values per instruction — a 4x throughput\nimprovement for vectorized math. TJS provides SIMD via `f32x4_*`\nintrinsics that compile directly to WASM SIMD opcodes.\n\n### Available Intrinsics\n\n| Intrinsic | Operation |\n|-----------|-----------|\n| `f32x4_load(arr, offset)` | Load 4 floats from array |\n| `f32x4_store(arr, offset, vec)` | Store 4 floats to array |\n| `f32x4_splat(value)` | Fill all 4 lanes with one value |\n| `f32x4_add(a, b)` | Add 4 pairs |\n| `f32x4_sub(a, b)` | Subtract 4 pairs |\n| `f32x4_mul(a, b)` | Multiply 4 pairs |\n| `f32x4_div(a, b)` | Divide 4 pairs |\n| `f32x4_neg(a)` | Negate 4 values |\n| `f32x4_sqrt(a)` | Square root of 4 values |\n| `f32x4_extract_lane(vec, lane)` | Get one float (0-3) |\n| `f32x4_replace_lane(vec, lane, val)` | Set one float |\n*/\n\n// --- Scale an array by a constant (SIMD: 4 elements per step) ---\n\nfunction scale(! arr: Float32Array, len: 0, factor: 0.0) {\n wasm {\n let s = f32x4_splat(factor)\n for (let i = 0; i < len; i += 4) {\n let off = i * 4\n let v = f32x4_load(arr, off)\n f32x4_store(arr, off, f32x4_mul(v, s))\n }\n } fallback {\n for (let i = 0; i < len; i++) arr[i] *= factor\n }\n}\n\n// --- Dot product (sum of element-wise products) ---\n\nfunction dot(! a: Float32Array, b: Float32Array, len: 0) -! 0.0 {\n return wasm {\n let acc = f32x4_splat(0.0)\n for (let i = 0; i < len; i += 4) {\n let off = i * 4\n let va = f32x4_load(a, off)\n let vb = f32x4_load(b, off)\n acc = f32x4_add(acc, f32x4_mul(va, vb))\n }\n // Sum the 4 lanes\n f32x4_extract_lane(acc, 0)\n + f32x4_extract_lane(acc, 1)\n + f32x4_extract_lane(acc, 2)\n + f32x4_extract_lane(acc, 3)\n } fallback {\n let sum = 0\n for (let i = 0; i < len; i++) sum += a[i] * b[i]\n return sum\n }\n}\n\n// --- Demo ---\n\nconst SIZE = 1024\n\n// Create test arrays\nconst arr = new Float32Array(SIZE)\nconst a = new Float32Array(SIZE)\nconst b = new Float32Array(SIZE)\n\nfor (let i = 0; i < SIZE; i++) {\n arr[i] = i + 1\n a[i] = 1.0\n b[i] = 2.0\n}\n\n// Scale\nscale(arr, SIZE, 0.5)\nconsole.log('scale([1..1024], 0.5) first 4:', arr[0], arr[1], arr[2], arr[3])\n\n// Dot product: 1.0 * 2.0 * 1024 = 2048\nconst d = dot(a, b, SIZE)\nconsole.log('dot([1,1,...], [2,2,...], 1024):', d)\n\n// Benchmark\nconst iters = 1000\nconst t0 = performance.now()\nfor (let i = 0; i < iters; i++) scale(arr, SIZE, 1.001)\nconst elapsed = performance.now() - t0\nconsole.log(`${iters} scale ops on ${SIZE} floats: ${elapsed.toFixed(1)}ms`)",
381
+ "language": "tjs",
382
+ "description": "Process 4 floats per instruction. No setup, no toolchain."
383
+ },
384
+ {
385
+ "title": "WASM Memory",
386
+ "filename": "wasm-memory.md",
387
+ "path": "guides/examples/tjs/wasm-memory.md",
388
+ "section": "tjs",
389
+ "type": "example",
390
+ "group": "patterns",
391
+ "order": 27,
392
+ "code": "/*#\n## How Data Moves Between JS and WASM\n\nThe #1 WebAssembly question: \"How do I get my data into WASM?\"\nTJS handles it automatically. Three modes:\n\n### 1. Scalars — pass through\n`i32`, `f32`, `f64` go directly as WASM parameters. No marshaling.\n\n### 2. Regular typed arrays — transparent copy\nPass a normal `Float32Array` and TJS copies it into WASM memory\nbefore the call, then copies results back out after. You don't\nhave to think about it.\n\n### 3. `wasmBuffer()` — zero-copy shared memory\nAllocate directly in WASM memory. Both JS and WASM see the same\nbytes. No copy in, no copy out. Mutations are instantly visible.\n\n const xs = wasmBuffer(Float32Array, 50000)\n xs[0] = 3.14 // JS writes to WASM memory\n wasmFunction(xs) // WASM reads/writes the same memory\n console.log(xs[0]) // JS sees WASM's mutations immediately\n\n### Supported types\n`Float32Array`, `Float64Array`, `Int32Array`, `Uint8Array`\n\n### How it works internally\nAll WASM blocks in a file share one `WebAssembly.Memory` (64MB).\n`wasmBuffer` is a bump allocator — it hands out slices of this memory.\nWhen a typed array argument's `.buffer === wasmMemory.buffer`, the\nwrapper skips the copy and passes the byte offset directly.\n*/\n\n// --- Regular arrays: transparent copy ---\n\nfunction addOne(! arr: Float32Array, len: 0) {\n wasm {\n for (let i = 0; i < len; i += 4) {\n let off = i * 4\n let v = f32x4_load(arr, off)\n let ones = f32x4_splat(1.0)\n f32x4_store(arr, off, f32x4_add(v, ones))\n }\n } fallback {\n for (let i = 0; i < len; i++) arr[i] += 1\n }\n}\n\n// Regular Float32Array — TJS copies in before, copies out after\nconst regular = new Float32Array([10, 20, 30, 40])\naddOne(regular, 4)\nconsole.log('Regular array after WASM:', Array.from(regular))\n// [11, 21, 31, 41] — changes visible in JS\n\n// --- wasmBuffer: zero-copy shared memory ---\n\nconst shared = wasmBuffer(Float32Array, 4)\nshared[0] = 100\nshared[1] = 200\nshared[2] = 300\nshared[3] = 400\n\naddOne(shared, 4)\nconsole.log('wasmBuffer after WASM:', Array.from(shared))\n// [101, 201, 301, 401] — zero copy, same memory\n\n// --- Practical: large array processing ---\n\nconst SIZE = 10000\nconst data = wasmBuffer(Float32Array, SIZE)\nfor (let i = 0; i < SIZE; i++) data[i] = i * 0.01\n\n// Process in WASM — no marshaling overhead\nfunction normalize(! arr: Float32Array, len: 0) {\n wasm {\n // Find max (scalar — SIMD max needs horizontal reduction)\n let max = 0.0\n for (let i = 0; i < len; i++) {\n let off = i * 4\n let v = f32x4_extract_lane(f32x4_load(arr, off), 0)\n if (v > max) { max = v }\n }\n // Scale to [0, 1]\n if (max > 0.0) {\n let inv = f32x4_splat(1.0 / max)\n for (let i = 0; i < len; i += 4) {\n let off = i * 4\n f32x4_store(arr, off, f32x4_mul(f32x4_load(arr, off), inv))\n }\n }\n } fallback {\n let max = 0\n for (let i = 0; i < len; i++) if (arr[i] > max) max = arr[i]\n if (max > 0) for (let i = 0; i < len; i++) arr[i] /= max\n }\n}\n\nconst t0 = performance.now()\nnormalize(data, SIZE)\nconst elapsed = performance.now() - t0\n\nconsole.log(`Normalized ${SIZE} floats in ${elapsed.toFixed(2)}ms`)\nconsole.log('First 4:', data[0].toFixed(4), data[1].toFixed(4), data[2].toFixed(4), data[3].toFixed(4))\nconsole.log('Last:', data[SIZE - 1].toFixed(4))",
393
+ "language": "tjs",
394
+ "description": "Zero-copy arrays and automatic data marshaling between JS and WASM."
395
+ },
360
396
  {
361
397
  "title": "React Todo (Comparison)",
362
398
  "filename": "react-todo-comparison.md",
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- var f8=Object.defineProperty;var y8=(Z,$)=>()=>($||Z(($={exports:{}}).exports,$),$.exports);var h8=(Z)=>Z;function x8(Z,$){this[Z]=h8.bind(null,$)}var u8=(Z,$)=>{for(var X in $)f8(Z,X,{get:$[X],enumerable:!0,configurable:!0,set:x8.bind($,X)})};var d8=(Z,$)=>()=>(Z&&($=Z(Z=0)),$);var T4=((Z)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(Z,{get:($,X)=>(typeof require<"u"?require:$)[X]}):Z)(function(Z){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+Z+'" is not supported')});var G7=y8((WH,CZ)=>{CZ.exports={name:"tjs-lang",version:"0.6.27",description:"Type-safe JavaScript dialect with runtime validation, sandboxed VM execution, and AI agent orchestration. Transpiles TypeScript to validated JS with fuel-metered execution for untrusted code.",keywords:["typescript","transpiler","runtime-validation","type-safety","sandbox","virtual-machine","wasm-alternative","ai-agents","llm","orchestration","security","fuel-metering","capability-based","json-ast","untrusted-code"],license:"Apache-2.0",main:"./dist/index.js",exports:{".":{bun:"./src/index.ts",default:"./dist/index.js"},"./eval":{bun:"./src/lang/eval.ts",default:"./dist/lang/eval.js"},"./lang":{bun:"./src/lang/index.ts",default:"./dist/lang/index.js"},"./lang/eval":{bun:"./src/lang/eval.ts",default:"./dist/lang/eval.js"},"./lang/from-ts":{bun:"./src/lang/emitters/from-ts.ts",default:"./dist/lang/emitters/from-ts.js"},"./src":"./src/index.ts","./editors/monaco":"./editors/monaco/ajs-monarch.js","./editors/codemirror":"./editors/codemirror/ajs-language.js","./editors/ace":"./editors/ace/ajs-mode.js"},bin:{tjs:"./src/cli/tjs.ts",tjsx:"./src/cli/tjsx.ts","tjs-playground":"./src/cli/playground.ts","create-tjs-app":"./src/cli/create-app.ts","ajs-install-vscode":"./bin/install-vscode.sh","ajs-install-cursor":"./bin/install-cursor.sh"},type:"module",files:["dist","src","docs","editors","bin","demo","tjs-lang.svg","CONTEXT.md","CLAUDE.md"],sideEffects:!1,repository:{type:"git",url:"https://github.com/tonioloewald/tjs-lang.git"},devDependencies:{"@codemirror/lang-css":"^6.3.1","@codemirror/lang-html":"^6.4.11","@codemirror/lang-javascript":"^6.2.4","@codemirror/lang-markdown":"^6.5.0","@codemirror/state":"^6.5.3","@codemirror/theme-one-dark":"^6.1.3","@codemirror/view":"^6.39.9","@happy-dom/global-registrator":"^20.1.0","@types/bun":"latest","@types/jsdom":"^21.1.7","@typescript-eslint/eslint-plugin":"^5.62.0","@typescript-eslint/parser":"^5.62.0","acorn-walk":"^8.3.4",chokidar:"^4.0.3",codemirror:"^6.0.2",eslint:"^8.57.1",firebase:"^10.12.0","firebase-admin":"^13.6.0","firebase-functions":"^7.0.5",marked:"^9.1.6",prettier:"^2.8.8",tosijs:"^1.2.0","tosijs-ui":"^1.2.0",typescript:"^5.6.2",valibot:"^0.36.0",vitest:"^2.0.5"},scripts:{format:"bun eslint src --fix && bun prettier --write .",lint:"eslint src","build:grammars":"bun editors/build-grammars.ts","test:fast":"SKIP_LLM_TESTS=1 SKIP_BENCHMARKS=1 bun test","test:llm":"bun test src/batteries/models.integration.test.ts",bench:"bun bin/benchmarks.ts",make:"rm -rf dist && bun format && bun run build:grammars && tsc -p tsconfig.build.json && bun scripts/build.ts","build:bundles":"bun scripts/build.ts",typecheck:"tsc --noEmit",latest:"rm -rf node_modules && bun install",docs:"node bin/docs.js",dev:"bun run bin/dev.ts","build:demo":"bun scripts/build-demo.ts","build:cli":"bun build src/cli/tjs.ts --compile --outfile=dist/tjs && bun build src/cli/tjsx.ts --compile --outfile=dist/tjsx","functions:build":"cd functions && npm run build","functions:deploy":"cd functions && npm run deploy","functions:serve":"cd functions && npm run serve","deploy:hosting":"firebase deploy --only hosting",deploy:"npm run build:demo && npm run functions:deploy && firebase deploy --only hosting",start:"bun run build:demo && bun run dev"},dependencies:{acorn:"^8.15.0","acorn-walk":"^8.3.4","tosijs-schema":"^1.2.0"}}});var D6={};u8(D6,{sep:()=>B8,resolve:()=>F4,relative:()=>_8,posix:()=>M8,parse:()=>I8,normalize:()=>q6,join:()=>J8,isAbsolute:()=>G8,format:()=>A8,extname:()=>D8,dirname:()=>U8,delimiter:()=>R8,default:()=>RX,basename:()=>q8,_makeLong:()=>L8});function M1(Z){if(typeof Z!=="string")throw TypeError("Path must be a string. Received "+JSON.stringify(Z))}function W8(Z,$){var X="",Q=0,H=-1,K=0,Y;for(var z=0;z<=Z.length;++z){if(z<Z.length)Y=Z.charCodeAt(z);else if(Y===47)break;else Y=47;if(Y===47){if(H===z-1||K===1);else if(H!==z-1&&K===2){if(X.length<2||Q!==2||X.charCodeAt(X.length-1)!==46||X.charCodeAt(X.length-2)!==46){if(X.length>2){var W=X.lastIndexOf("/");if(W!==X.length-1){if(W===-1)X="",Q=0;else X=X.slice(0,W),Q=X.length-1-X.lastIndexOf("/");H=z,K=0;continue}}else if(X.length===2||X.length===1){X="",Q=0,H=z,K=0;continue}}if($){if(X.length>0)X+="/..";else X="..";Q=2}}else{if(X.length>0)X+="/"+Z.slice(H+1,z);else X=Z.slice(H+1,z);Q=z-H-1}H=z,K=0}else if(Y===46&&K!==-1)++K;else K=-1}return X}function BX(Z,$){var X=$.dir||$.root,Q=$.base||($.name||"")+($.ext||"");if(!X)return Q;if(X===$.root)return X+Q;return X+Z+Q}function F4(){var Z="",$=!1,X;for(var Q=arguments.length-1;Q>=-1&&!$;Q--){var H;if(Q>=0)H=arguments[Q];else{if(X===void 0)X=process.cwd();H=X}if(M1(H),H.length===0)continue;Z=H+"/"+Z,$=H.charCodeAt(0)===47}if(Z=W8(Z,!$),$)if(Z.length>0)return"/"+Z;else return"/";else if(Z.length>0)return Z;else return"."}function q6(Z){if(M1(Z),Z.length===0)return".";var $=Z.charCodeAt(0)===47,X=Z.charCodeAt(Z.length-1)===47;if(Z=W8(Z,!$),Z.length===0&&!$)Z=".";if(Z.length>0&&X)Z+="/";if($)return"/"+Z;return Z}function G8(Z){return M1(Z),Z.length>0&&Z.charCodeAt(0)===47}function J8(){if(arguments.length===0)return".";var Z;for(var $=0;$<arguments.length;++$){var X=arguments[$];if(M1(X),X.length>0)if(Z===void 0)Z=X;else Z+="/"+X}if(Z===void 0)return".";return q6(Z)}function _8(Z,$){if(M1(Z),M1($),Z===$)return"";if(Z=F4(Z),$=F4($),Z===$)return"";var X=1;for(;X<Z.length;++X)if(Z.charCodeAt(X)!==47)break;var Q=Z.length,H=Q-X,K=1;for(;K<$.length;++K)if($.charCodeAt(K)!==47)break;var Y=$.length,z=Y-K,W=H<z?H:z,G=-1,J=0;for(;J<=W;++J){if(J===W){if(z>W){if($.charCodeAt(K+J)===47)return $.slice(K+J+1);else if(J===0)return $.slice(K+J)}else if(H>W){if(Z.charCodeAt(X+J)===47)G=J;else if(J===0)G=0}break}var L=Z.charCodeAt(X+J),_=$.charCodeAt(K+J);if(L!==_)break;else if(L===47)G=J}var U="";for(J=X+G+1;J<=Q;++J)if(J===Q||Z.charCodeAt(J)===47)if(U.length===0)U+="..";else U+="/..";if(U.length>0)return U+$.slice(K+G);else{if(K+=G,$.charCodeAt(K)===47)++K;return $.slice(K)}}function L8(Z){return Z}function U8(Z){if(M1(Z),Z.length===0)return".";var $=Z.charCodeAt(0),X=$===47,Q=-1,H=!0;for(var K=Z.length-1;K>=1;--K)if($=Z.charCodeAt(K),$===47){if(!H){Q=K;break}}else H=!1;if(Q===-1)return X?"/":".";if(X&&Q===1)return"//";return Z.slice(0,Q)}function q8(Z,$){if($!==void 0&&typeof $!=="string")throw TypeError('"ext" argument must be a string');M1(Z);var X=0,Q=-1,H=!0,K;if($!==void 0&&$.length>0&&$.length<=Z.length){if($.length===Z.length&&$===Z)return"";var Y=$.length-1,z=-1;for(K=Z.length-1;K>=0;--K){var W=Z.charCodeAt(K);if(W===47){if(!H){X=K+1;break}}else{if(z===-1)H=!1,z=K+1;if(Y>=0)if(W===$.charCodeAt(Y)){if(--Y===-1)Q=K}else Y=-1,Q=z}}if(X===Q)Q=z;else if(Q===-1)Q=Z.length;return Z.slice(X,Q)}else{for(K=Z.length-1;K>=0;--K)if(Z.charCodeAt(K)===47){if(!H){X=K+1;break}}else if(Q===-1)H=!1,Q=K+1;if(Q===-1)return"";return Z.slice(X,Q)}}function D8(Z){M1(Z);var $=-1,X=0,Q=-1,H=!0,K=0;for(var Y=Z.length-1;Y>=0;--Y){var z=Z.charCodeAt(Y);if(z===47){if(!H){X=Y+1;break}continue}if(Q===-1)H=!1,Q=Y+1;if(z===46){if($===-1)$=Y;else if(K!==1)K=1}else if($!==-1)K=-1}if($===-1||Q===-1||K===0||K===1&&$===Q-1&&$===X+1)return"";return Z.slice($,Q)}function A8(Z){if(Z===null||typeof Z!=="object")throw TypeError('The "pathObject" argument must be of type Object. Received type '+typeof Z);return BX("/",Z)}function I8(Z){M1(Z);var $={root:"",dir:"",base:"",ext:"",name:""};if(Z.length===0)return $;var X=Z.charCodeAt(0),Q=X===47,H;if(Q)$.root="/",H=1;else H=0;var K=-1,Y=0,z=-1,W=!0,G=Z.length-1,J=0;for(;G>=H;--G){if(X=Z.charCodeAt(G),X===47){if(!W){Y=G+1;break}continue}if(z===-1)W=!1,z=G+1;if(X===46){if(K===-1)K=G;else if(J!==1)J=1}else if(K!==-1)J=-1}if(K===-1||z===-1||J===0||J===1&&K===z-1&&K===Y+1){if(z!==-1)if(Y===0&&Q)$.base=$.name=Z.slice(1,z);else $.base=$.name=Z.slice(Y,z)}else{if(Y===0&&Q)$.name=Z.slice(1,K),$.base=Z.slice(1,z);else $.name=Z.slice(Y,K),$.base=Z.slice(Y,z);$.ext=Z.slice(K,z)}if(Y>0)$.dir=Z.slice(0,Y-1);else if(Q)$.dir="/";return $}var B8="/",R8=":",M8,RX;var A6=d8(()=>{M8=((Z)=>(Z.posix=Z,Z))({resolve:F4,normalize:q6,isAbsolute:G8,join:J8,relative:_8,_makeLong:L8,dirname:U8,basename:q8,extname:D8,format:A8,parse:I8,sep:B8,delimiter:R8,win32:null,posix:null}),RX=M8});import*as Z7 from"acorn";class i extends Error{line;column;source;filename;constructor(Z,$,X,Q){let H=`${Q||"<source>"}:${$.line}:${$.column}`;super(`${Z} at ${H}`);this.name="TranspileError",this.line=$.line,this.column=$.column,this.source=X,this.filename=Q}}class X1 extends i{constructor(Z,$,X,Q){super(Z,$,X,Q);this.name="SyntaxError"}formatWithContext(Z=2){if(!this.source)return this.message;let $=this.source.split(`
1
+ var f8=Object.defineProperty;var y8=(Z,$)=>()=>($||Z(($={exports:{}}).exports,$),$.exports);var h8=(Z)=>Z;function x8(Z,$){this[Z]=h8.bind(null,$)}var u8=(Z,$)=>{for(var X in $)f8(Z,X,{get:$[X],enumerable:!0,configurable:!0,set:x8.bind($,X)})};var d8=(Z,$)=>()=>(Z&&($=Z(Z=0)),$);var T4=((Z)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(Z,{get:($,X)=>(typeof require<"u"?require:$)[X]}):Z)(function(Z){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+Z+'" is not supported')});var G7=y8((WH,CZ)=>{CZ.exports={name:"tjs-lang",version:"0.6.28",description:"Type-safe JavaScript dialect with runtime validation, sandboxed VM execution, and AI agent orchestration. Transpiles TypeScript to validated JS with fuel-metered execution for untrusted code.",keywords:["typescript","transpiler","runtime-validation","type-safety","sandbox","virtual-machine","wasm-alternative","ai-agents","llm","orchestration","security","fuel-metering","capability-based","json-ast","untrusted-code"],license:"Apache-2.0",main:"./dist/index.js",exports:{".":{bun:"./src/index.ts",default:"./dist/index.js"},"./eval":{bun:"./src/lang/eval.ts",default:"./dist/lang/eval.js"},"./lang":{bun:"./src/lang/index.ts",default:"./dist/lang/index.js"},"./lang/eval":{bun:"./src/lang/eval.ts",default:"./dist/lang/eval.js"},"./lang/from-ts":{bun:"./src/lang/emitters/from-ts.ts",default:"./dist/lang/emitters/from-ts.js"},"./src":"./src/index.ts","./editors/monaco":"./editors/monaco/ajs-monarch.js","./editors/codemirror":"./editors/codemirror/ajs-language.js","./editors/ace":"./editors/ace/ajs-mode.js"},bin:{tjs:"./src/cli/tjs.ts",tjsx:"./src/cli/tjsx.ts","tjs-playground":"./src/cli/playground.ts","create-tjs-app":"./src/cli/create-app.ts","ajs-install-vscode":"./bin/install-vscode.sh","ajs-install-cursor":"./bin/install-cursor.sh"},type:"module",files:["dist","src","docs","editors","bin","demo","tjs-lang.svg","CONTEXT.md","CLAUDE.md"],sideEffects:!1,repository:{type:"git",url:"https://github.com/tonioloewald/tjs-lang.git"},devDependencies:{"@codemirror/lang-css":"^6.3.1","@codemirror/lang-html":"^6.4.11","@codemirror/lang-javascript":"^6.2.4","@codemirror/lang-markdown":"^6.5.0","@codemirror/state":"^6.5.3","@codemirror/theme-one-dark":"^6.1.3","@codemirror/view":"^6.39.9","@happy-dom/global-registrator":"^20.1.0","@types/bun":"latest","@types/jsdom":"^21.1.7","@typescript-eslint/eslint-plugin":"^5.62.0","@typescript-eslint/parser":"^5.62.0","acorn-walk":"^8.3.4",chokidar:"^4.0.3",codemirror:"^6.0.2",eslint:"^8.57.1",firebase:"^10.12.0","firebase-admin":"^13.6.0","firebase-functions":"^7.0.5",marked:"^9.1.6",prettier:"^2.8.8",tosijs:"^1.2.0","tosijs-ui":"^1.2.0",typescript:"^5.6.2",valibot:"^0.36.0",vitest:"^2.0.5"},scripts:{format:"bun eslint src --fix && bun prettier --write .",lint:"eslint src","build:grammars":"bun editors/build-grammars.ts","test:fast":"SKIP_LLM_TESTS=1 SKIP_BENCHMARKS=1 bun test","test:llm":"bun test src/batteries/models.integration.test.ts",bench:"bun bin/benchmarks.ts",make:"rm -rf dist && bun format && bun run build:grammars && tsc -p tsconfig.build.json && bun scripts/build.ts","build:bundles":"bun scripts/build.ts",typecheck:"tsc --noEmit",latest:"rm -rf node_modules && bun install",docs:"node bin/docs.js",dev:"bun run bin/dev.ts","build:demo":"bun scripts/build-demo.ts","build:cli":"bun build src/cli/tjs.ts --compile --outfile=dist/tjs && bun build src/cli/tjsx.ts --compile --outfile=dist/tjsx","functions:build":"cd functions && npm run build","functions:deploy":"cd functions && npm run deploy","functions:serve":"cd functions && npm run serve","deploy:hosting":"firebase deploy --only hosting",deploy:"npm run build:demo && npm run functions:deploy && firebase deploy --only hosting",start:"bun run build:demo && bun run dev"},dependencies:{acorn:"^8.15.0","acorn-walk":"^8.3.4","tosijs-schema":"^1.2.0"}}});var D6={};u8(D6,{sep:()=>B8,resolve:()=>F4,relative:()=>_8,posix:()=>M8,parse:()=>I8,normalize:()=>q6,join:()=>J8,isAbsolute:()=>G8,format:()=>A8,extname:()=>D8,dirname:()=>U8,delimiter:()=>R8,default:()=>RX,basename:()=>q8,_makeLong:()=>L8});function M1(Z){if(typeof Z!=="string")throw TypeError("Path must be a string. Received "+JSON.stringify(Z))}function W8(Z,$){var X="",Q=0,H=-1,K=0,Y;for(var z=0;z<=Z.length;++z){if(z<Z.length)Y=Z.charCodeAt(z);else if(Y===47)break;else Y=47;if(Y===47){if(H===z-1||K===1);else if(H!==z-1&&K===2){if(X.length<2||Q!==2||X.charCodeAt(X.length-1)!==46||X.charCodeAt(X.length-2)!==46){if(X.length>2){var W=X.lastIndexOf("/");if(W!==X.length-1){if(W===-1)X="",Q=0;else X=X.slice(0,W),Q=X.length-1-X.lastIndexOf("/");H=z,K=0;continue}}else if(X.length===2||X.length===1){X="",Q=0,H=z,K=0;continue}}if($){if(X.length>0)X+="/..";else X="..";Q=2}}else{if(X.length>0)X+="/"+Z.slice(H+1,z);else X=Z.slice(H+1,z);Q=z-H-1}H=z,K=0}else if(Y===46&&K!==-1)++K;else K=-1}return X}function BX(Z,$){var X=$.dir||$.root,Q=$.base||($.name||"")+($.ext||"");if(!X)return Q;if(X===$.root)return X+Q;return X+Z+Q}function F4(){var Z="",$=!1,X;for(var Q=arguments.length-1;Q>=-1&&!$;Q--){var H;if(Q>=0)H=arguments[Q];else{if(X===void 0)X=process.cwd();H=X}if(M1(H),H.length===0)continue;Z=H+"/"+Z,$=H.charCodeAt(0)===47}if(Z=W8(Z,!$),$)if(Z.length>0)return"/"+Z;else return"/";else if(Z.length>0)return Z;else return"."}function q6(Z){if(M1(Z),Z.length===0)return".";var $=Z.charCodeAt(0)===47,X=Z.charCodeAt(Z.length-1)===47;if(Z=W8(Z,!$),Z.length===0&&!$)Z=".";if(Z.length>0&&X)Z+="/";if($)return"/"+Z;return Z}function G8(Z){return M1(Z),Z.length>0&&Z.charCodeAt(0)===47}function J8(){if(arguments.length===0)return".";var Z;for(var $=0;$<arguments.length;++$){var X=arguments[$];if(M1(X),X.length>0)if(Z===void 0)Z=X;else Z+="/"+X}if(Z===void 0)return".";return q6(Z)}function _8(Z,$){if(M1(Z),M1($),Z===$)return"";if(Z=F4(Z),$=F4($),Z===$)return"";var X=1;for(;X<Z.length;++X)if(Z.charCodeAt(X)!==47)break;var Q=Z.length,H=Q-X,K=1;for(;K<$.length;++K)if($.charCodeAt(K)!==47)break;var Y=$.length,z=Y-K,W=H<z?H:z,G=-1,J=0;for(;J<=W;++J){if(J===W){if(z>W){if($.charCodeAt(K+J)===47)return $.slice(K+J+1);else if(J===0)return $.slice(K+J)}else if(H>W){if(Z.charCodeAt(X+J)===47)G=J;else if(J===0)G=0}break}var L=Z.charCodeAt(X+J),_=$.charCodeAt(K+J);if(L!==_)break;else if(L===47)G=J}var U="";for(J=X+G+1;J<=Q;++J)if(J===Q||Z.charCodeAt(J)===47)if(U.length===0)U+="..";else U+="/..";if(U.length>0)return U+$.slice(K+G);else{if(K+=G,$.charCodeAt(K)===47)++K;return $.slice(K)}}function L8(Z){return Z}function U8(Z){if(M1(Z),Z.length===0)return".";var $=Z.charCodeAt(0),X=$===47,Q=-1,H=!0;for(var K=Z.length-1;K>=1;--K)if($=Z.charCodeAt(K),$===47){if(!H){Q=K;break}}else H=!1;if(Q===-1)return X?"/":".";if(X&&Q===1)return"//";return Z.slice(0,Q)}function q8(Z,$){if($!==void 0&&typeof $!=="string")throw TypeError('"ext" argument must be a string');M1(Z);var X=0,Q=-1,H=!0,K;if($!==void 0&&$.length>0&&$.length<=Z.length){if($.length===Z.length&&$===Z)return"";var Y=$.length-1,z=-1;for(K=Z.length-1;K>=0;--K){var W=Z.charCodeAt(K);if(W===47){if(!H){X=K+1;break}}else{if(z===-1)H=!1,z=K+1;if(Y>=0)if(W===$.charCodeAt(Y)){if(--Y===-1)Q=K}else Y=-1,Q=z}}if(X===Q)Q=z;else if(Q===-1)Q=Z.length;return Z.slice(X,Q)}else{for(K=Z.length-1;K>=0;--K)if(Z.charCodeAt(K)===47){if(!H){X=K+1;break}}else if(Q===-1)H=!1,Q=K+1;if(Q===-1)return"";return Z.slice(X,Q)}}function D8(Z){M1(Z);var $=-1,X=0,Q=-1,H=!0,K=0;for(var Y=Z.length-1;Y>=0;--Y){var z=Z.charCodeAt(Y);if(z===47){if(!H){X=Y+1;break}continue}if(Q===-1)H=!1,Q=Y+1;if(z===46){if($===-1)$=Y;else if(K!==1)K=1}else if($!==-1)K=-1}if($===-1||Q===-1||K===0||K===1&&$===Q-1&&$===X+1)return"";return Z.slice($,Q)}function A8(Z){if(Z===null||typeof Z!=="object")throw TypeError('The "pathObject" argument must be of type Object. Received type '+typeof Z);return BX("/",Z)}function I8(Z){M1(Z);var $={root:"",dir:"",base:"",ext:"",name:""};if(Z.length===0)return $;var X=Z.charCodeAt(0),Q=X===47,H;if(Q)$.root="/",H=1;else H=0;var K=-1,Y=0,z=-1,W=!0,G=Z.length-1,J=0;for(;G>=H;--G){if(X=Z.charCodeAt(G),X===47){if(!W){Y=G+1;break}continue}if(z===-1)W=!1,z=G+1;if(X===46){if(K===-1)K=G;else if(J!==1)J=1}else if(K!==-1)J=-1}if(K===-1||z===-1||J===0||J===1&&K===z-1&&K===Y+1){if(z!==-1)if(Y===0&&Q)$.base=$.name=Z.slice(1,z);else $.base=$.name=Z.slice(Y,z)}else{if(Y===0&&Q)$.name=Z.slice(1,K),$.base=Z.slice(1,z);else $.name=Z.slice(Y,K),$.base=Z.slice(Y,z);$.ext=Z.slice(K,z)}if(Y>0)$.dir=Z.slice(0,Y-1);else if(Q)$.dir="/";return $}var B8="/",R8=":",M8,RX;var A6=d8(()=>{M8=((Z)=>(Z.posix=Z,Z))({resolve:F4,normalize:q6,isAbsolute:G8,join:J8,relative:_8,_makeLong:L8,dirname:U8,basename:q8,extname:D8,format:A8,parse:I8,sep:B8,delimiter:R8,win32:null,posix:null}),RX=M8});import*as Z7 from"acorn";class i extends Error{line;column;source;filename;constructor(Z,$,X,Q){let H=`${Q||"<source>"}:${$.line}:${$.column}`;super(`${Z} at ${H}`);this.name="TranspileError",this.line=$.line,this.column=$.column,this.source=X,this.filename=Q}}class X1 extends i{constructor(Z,$,X,Q){super(Z,$,X,Q);this.name="SyntaxError"}formatWithContext(Z=2){if(!this.source)return this.message;let $=this.source.split(`
2
2
  `),X=this.line-1,Q=Math.max(0,X-Z),H=Math.min($.length-1,X+Z),K=[],Y=String(H+1).length;for(let z=Q;z<=H;z++){let W=String(z+1).padStart(Y),G=z===X?">":" ";if(K.push(`${G} ${W} | ${$[z]}`),z===X){let J=" ".repeat(Y+4+this.column);K.push(`${J}^ ${this.message.split(" at ")[0]}`)}}return K.join(`
3
3
  `)}}class l8 extends i{expected;received;suggestion;constructor(Z,$,X){super(Z,$,X?.source,X?.filename);this.name="TypeError",this.expected=X?.expected,this.received=X?.received,this.suggestion=X?.suggestion}}function W1(Z){return{depth:Z.depth+1,locals:new Map,parent:Z,parameters:Z.parameters,atoms:Z.atoms,warnings:Z.warnings,source:Z.source,filename:Z.filename,options:Z.options}}function m8(Z,$){if($.locals.has(Z))return $.locals.get(Z);if($.parameters.has(Z))return $.parameters.get(Z)?.type;if($.parent)return m8(Z,$.parent);return}function p(Z){if(Z.loc)return{line:Z.loc.start.line,column:Z.loc.start.column};return{line:1,column:0}}function b0(Z,$){let X="",Q=0,H,K,Y="normal",z=[],W=[{type:"top-level",braceDepth:0}],G=0,J=()=>W[W.length-1]?.type||"top-level",L=()=>{let _=W[W.length-1];return _?.type==="class-body"&&G===_.braceDepth+1};while(Q<Z.length){let _=Z[Q],U=Z[Q+1];switch(Y){case"single-string":if(X+=_,_==="\\"&&Q+1<Z.length){X+=U,Q+=2;continue}if(_==="'")Y="normal";Q++;continue;case"double-string":if(X+=_,_==="\\"&&Q+1<Z.length){X+=U,Q+=2;continue}if(_==='"')Y="normal";Q++;continue;case"template-string":if(X+=_,_==="\\"&&Q+1<Z.length){X+=U,Q+=2;continue}if(_==="$"&&U==="{"){X+=U,Q+=2,z.push(1),Y="normal";continue}if(_==="`")Y="normal";Q++;continue;case"line-comment":if(X+=_,_===`
4
4
  `)Y="normal";Q++;continue;case"block-comment":if(X+=_,_==="*"&&U==="/"){X+=U,Q+=2,Y="normal";continue}Q++;continue;case"regex":if(X+=_,_==="\\"&&Q+1<Z.length){X+=U,Q+=2;continue}if(_==="["){Q++;while(Q<Z.length&&Z[Q]!=="]")if(X+=Z[Q],Z[Q]==="\\"&&Q+1<Z.length)X+=Z[Q+1],Q+=2;else Q++;if(Q<Z.length)X+=Z[Q],Q++;continue}if(_==="/"){Q++;while(Q<Z.length&&/[gimsuy]/.test(Z[Q]))X+=Z[Q],Q++;Y="normal";continue}Q++;continue;case"normal":if(z.length>0){if(_==="{")z[z.length-1]++;else if(_==="}"){if(z[z.length-1]--,z[z.length-1]===0){z.pop(),X+=_,Q++,Y="template-string";continue}}}if(_==="'"){X+=_,Q++,Y="single-string";continue}if(_==='"'){X+=_,Q++,Y="double-string";continue}if(_==="`"){X+=_,Q++,Y="template-string";continue}if(_==="/"&&U==="/"){X+=_+U,Q+=2,Y="line-comment";continue}if(_==="/"&&U==="*"){X+=_+U,Q+=2,Y="block-comment";continue}if(_==="/"){let R=X.trimEnd();if(!R[R.length-1]||/[=(!,;:{[&|?+\-*%<>~^]$/.test(R)||/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)\s*$/.test(R)){X+=_,Q++,Y="regex";continue}}break}if(_==="{"){G++,X+=_,Q++;continue}if(_==="}"){G--;let R=W[W.length-1];if(R&&G===R.braceDepth)W.pop();X+=_,Q++;continue}let q=Z.slice(Q).match(/^class\s+\w+(?:\s+extends\s+\w+)?\s*\{/);if(q){let R=q[0].slice(0,-1);X+=R,Q+=R.length,W.push({type:"class-body",braceDepth:G});continue}let I=Z.slice(Q).match(/^function\s+(\w+)\s*\(/);if(I){let R=I[1],P=I[0].length,B=Z[Q+P],F=null,N=Q+P;if(B==="?"||B==="!")if(F=B,N++,F==="!")$.unsafeFunctions.add(R);else $.safeFunctions.add(R);X+=`function ${R}(`,Q=N;let V=S0(Z,Q,"(",")");if(!V){X+=Z[Q],Q++;continue}let{content:w,endPos:C}=V;Q=C;let O=S4(w,$,!0);X+=O+")";let k=Q;while(k<Z.length&&/\s/.test(Z[k]))k++;let S=Z.slice(k,k+2);if(S==="->"||S==="-?"||S==="-!"){k+=2;while(k<Z.length&&/\s/.test(Z[k]))k++;let b=T0(Z,k);if(b){let{type:h,endPos:d}=b;if(H===void 0){if(H=h,S==="-?")K="safe";else if(S==="-!")K="unsafe"}Q=d}}continue}let M=Z.slice(Q).match(/^(constructor|(?:get|set)\s+\w+|async\s+\w+|\w+)\s*\(/);if(M&&L()){let R=M[1],P=M[0].length,B=Q+P;X+=R+"(",Q=B;let F=S0(Z,Q,"(",")");if(!F){X+=Z[Q],Q++;continue}let{content:N,endPos:V}=F;Q=V;let w=S4(N,$,!0);X+=w+")";let C=Q;while(C<Z.length&&/\s/.test(Z[C]))C++;let O=Z.slice(C,C+2);if(O==="->"||O==="-!"||O==="-?"){C+=2;while(C<Z.length&&/\s/.test(Z[C]))C++;let k=T0(Z,C);if(k)Q=k.endPos}else if(Z[C]===":"){C++;while(C<Z.length&&/\s/.test(Z[C]))C++;let k=T0(Z,C);if(k)Q=k.endPos}continue}if(Z[Q]==="("){let R=S0(Z,Q+1,"(",")");if(!R){X+=Z[Q],Q++;continue}let{content:P,endPos:B}=R,F=B;while(F<Z.length&&/\s/.test(Z[F]))F++;let N,V=Z.slice(F,F+2);if(V==="->"||V==="-?"||V==="-!"){F+=2;while(F<Z.length&&/\s/.test(Z[F]))F++;let w=T0(Z,F);if(w){N=w.type,F=w.endPos;while(F<Z.length&&/\s/.test(Z[F]))F++}}if(Z.slice(F,F+2)==="=>"){let w=null,C=P,O=P.trimStart();if(O.startsWith("?")&&(O.length===1||/\s/.test(O[1])))w="?",C=O.slice(1);else if(O.startsWith("!")&&(O.length===1||/\s/.test(O[1])))w="!",C=O.slice(1);let k=S4(C,$,!1);X+=`(${w==="?"?"/* safe */ ":w==="!"?"/* unsafe */ ":""}${k})`,Q=B;while(Q<F&&/\s/.test(Z[Q]))X+=Z[Q],Q++;if(N)Q=F}else{let w=b0(P,$);X+=`(${w.source})`,Q=B}continue}X+=Z[Q],Q++}return{source:X,returnType:H,returnSafety:K}}function S0(Z,$,X,Q){let H=1,K=$,Y=!1,z="";while(K<Z.length&&H>0){let W=Z[K];if(!Y&&(W==="'"||W==='"'||W==="`"))Y=!0,z=W;else if(Y&&W===z&&Z[K-1]!=="\\")Y=!1;else if(!Y){if(W===X)H++;else if(W===Q)H--}K++}if(H!==0)return null;return{content:Z.slice($,K-1),endPos:K}}function S6(Z,$){let X=$;while(X<Z.length&&/\s/.test(Z[X]))X++;if(X>=Z.length)return null;let Q=X,H=Z[X];if(H==="{"||H==="["){let Y=H==="{"?"}":"]",z=S0(Z,X+1,H,Y);if(!z)return null;return{value:Z.slice(Q,z.endPos),endPos:z.endPos}}if(H==="'"||H==='"'||H==="`"){X++;while(X<Z.length){if(Z[X]===H&&Z[X-1]!=="\\")return X++,{value:Z.slice(Q,X),endPos:X};X++}return null}if(/[-+\d]/.test(H)){while(X<Z.length&&/[\d.eE+-]/.test(Z[X]))X++;return{value:Z.slice(Q,X),endPos:X}}let K=Z.slice(X).match(/^(true|false|null|undefined)\b/);if(K)return{value:K[1],endPos:X+K[1].length};return null}function K0(Z){return Z.replace(/(?<!\|)\|(?!\|)/g," || ")}function T0(Z,$){let X=$,Q=0,H=!1,K="",Y=!1,z=(W)=>({type:K0(Z.slice($,W).trim()),endPos:W});while(X<Z.length){let W=Z[X];if(!H&&(W==="'"||W==='"'||W==="`")){H=!0,K=W,Y=!0,X++;continue}if(H){if(W===K&&Z[X-1]!=="\\"){if(H=!1,X++,Q===0){let G=X;while(G<Z.length&&/\s/.test(Z[G]))G++;if(Z[G]==="{"){if(!Z.slice(G+1).match(/^\s*(\w+)\s*:/))return z(X)}if(Z[G]!=="|"&&Z[G]!=="&")return z(X)}continue}X++;continue}if(W==="{"||W==="["||W==="("){Q++,Y=!0,X++;continue}if(W==="}"||W==="]"||W===")"){if(Q--,Q===0){X++;let G=X;while(G<Z.length&&/\s/.test(Z[G]))G++;if(Z[G]==="|"||Z[G]==="&")continue;return z(X)}X++;continue}if(Q===0&&W==="{"){if(Y)return z(X);if(Z.slice(X+1).match(/^\s*(\w+)\s*:/)){Q++,Y=!0,X++;continue}return z(X)}if(Q===0&&(W==="|"||W==="&")){if(X++,X<Z.length&&Z[X]==="|")X++;while(X<Z.length&&/\s/.test(Z[X]))X++;continue}if(Q===0&&(/\d/.test(W)||W==="-"&&/\d/.test(Z[X+1]))){let G=X;if(Z[G]==="-")G++;while(G<Z.length&&/\d/.test(Z[G]))G++;if(G<Z.length&&Z[G]==="."&&/\d/.test(Z[G+1])){G++;while(G<Z.length&&/\d/.test(Z[G]))G++}if(G<Z.length&&(Z[G]==="e"||Z[G]==="E")){if(G++,G<Z.length&&(Z[G]==="+"||Z[G]==="-"))G++;while(G<Z.length&&/\d/.test(Z[G]))G++}Y=!0,X=G;while(X<Z.length&&/\s/.test(Z[X]))X++;if(X<Z.length&&Z[X]==="{")return{type:K0(Z.slice($,G).trim()),endPos:G};if(Z[X]!=="|"&&Z[X]!=="&")return{type:K0(Z.slice($,G).trim()),endPos:G};continue}if(Q===0&&/[a-zA-Z_]/.test(W)){let G=X;while(G<Z.length&&/\w/.test(Z[G]))G++;Y=!0,X=G;while(X<Z.length&&/\s/.test(Z[X]))X++;if(X<Z.length&&Z[X]==="("){Q++,X++;continue}if(X<Z.length&&Z[X]==="{"){if(!Z.slice(X+1).match(/^\s*(\w+)\s*:/)){let L=G;while(L>$&&/\s/.test(Z[L-1]))L--;return{type:K0(Z.slice($,L).trim()),endPos:G}}}if(Z[X]!=="|"&&Z[X]!=="&")return{type:K0(Z.slice($,G).trim()),endPos:G};continue}X++}if(Y)return z(X);return null}function v0(Z){let $=[],X="",Q=0,H=!1,K=!1,Y=0;while(Y<Z.length){let z=Z[Y],W=Z[Y+1];if(!K&&z==="/"&&W==="/"){H=!0,X+="//",Y+=2;continue}if(!H&&z==="/"&&W==="*"){K=!0,X+="/*",Y+=2;continue}if(H&&z===`
@@ -420,4 +420,4 @@ ${H.signature}
420
420
  Supported: comparisons, &&, ||, !, arithmetic, member access (a.b), literals`)}return Q.node}function YX(Z){let $=[],X=0;while(X<Z.length){while(X<Z.length&&/\s/.test(Z[X]))X++;if(X>=Z.length)break;if(Z[X]==='"'||Z[X]==="'"){let Q=Z[X++],H="";while(X<Z.length&&Z[X]!==Q)if(Z[X]==="\\"&&X+1<Z.length)X++,H+=Z[X++];else H+=Z[X++];X++,$.push(JSON.stringify(H));continue}if(Z.slice(X,X+2).match(/^(&&|\|\||==|!=|>=|<=)$/)){$.push(Z.slice(X,X+2)),X+=2;continue}if("+-*/%><!().?:[]".includes(Z[X])){$.push(Z[X]),X++;continue}if(/\d/.test(Z[X])){let Q="";while(X<Z.length&&/[\d.]/.test(Z[X]))Q+=Z[X++];$.push(Q);continue}if(/[a-zA-Z_]/.test(Z[X])){let Q="";while(X<Z.length&&/[a-zA-Z0-9_]/.test(Z[X]))Q+=Z[X++];$.push(Q);continue}X++}return $}function t7(Z,$,X){return zX(Z,$,X)}function zX(Z,$,X){let{node:Q,pos:H}=o7(Z,$,X);while(Z[H]==="||"){H++;let{node:K,pos:Y}=o7(Z,H,X);Q={$expr:"logical",op:"||",left:Q,right:K},H=Y}return{node:Q,pos:H}}function o7(Z,$,X){let{node:Q,pos:H}=s7(Z,$,X);while(Z[H]==="&&"){H++;let{node:K,pos:Y}=s7(Z,H,X);Q={$expr:"logical",op:"&&",left:Q,right:K},H=Y}return{node:Q,pos:H}}function s7(Z,$,X){let{node:Q,pos:H}=a7(Z,$,X),K=["==","!=",">","<",">=","<="];while(K.includes(Z[H])){let Y=Z[H++],{node:z,pos:W}=a7(Z,H,X);Q={$expr:"binary",op:Y,left:Q,right:z},H=W}return{node:Q,pos:H}}function a7(Z,$,X){let{node:Q,pos:H}=r7(Z,$,X);while(Z[H]==="+"||Z[H]==="-"){let K=Z[H++],{node:Y,pos:z}=r7(Z,H,X);Q={$expr:"binary",op:K,left:Q,right:Y},H=z}return{node:Q,pos:H}}function r7(Z,$,X){let{node:Q,pos:H}=_6(Z,$,X);while(Z[H]==="*"||Z[H]==="/"||Z[H]==="%"){let K=Z[H++],{node:Y,pos:z}=_6(Z,H,X);Q={$expr:"binary",op:K,left:Q,right:Y},H=z}return{node:Q,pos:H}}function _6(Z,$,X){if(Z[$]==="!"||Z[$]==="-"){let Q=Z[$++],{node:H,pos:K}=_6(Z,$,X);return{node:{$expr:"unary",op:Q,argument:H},pos:K}}return WX(Z,$,X)}function WX(Z,$,X){let Q=Z[$];if(Q==="("){let{node:H,pos:K}=t7(Z,$+1,X);return{node:H,pos:K+1}}if(Q&&Q.startsWith('"'))return{node:{$expr:"literal",value:JSON.parse(Q)},pos:$+1};if(Q&&/^\d/.test(Q))return{node:{$expr:"literal",value:parseFloat(Q)},pos:$+1};if(Q==="true")return{node:{$expr:"literal",value:!0},pos:$+1};if(Q==="false")return{node:{$expr:"literal",value:!1},pos:$+1};if(Q==="null")return{node:{$expr:"literal",value:null},pos:$+1};if(Q&&/^[a-zA-Z_]/.test(Q)){let H={$expr:"ident",name:Q},K=$+1;while(Z[K]==="."){K++;let Y=Z[K++];H={$expr:"member",object:H,property:Y}}return{node:H,pos:K}}return{node:{$expr:"literal",value:null},pos:$+1}}class e{steps=[];atoms;proxy;constructor(Z){return this.atoms=Z,this.proxy=new Proxy(this,{get:($,X,Q)=>{if(X in $)return $[X];if(typeof X==="string"&&X in $.atoms)return(H)=>{let K=$.atoms[X];return $.add(K.create(H)),Q};return}}),this.proxy}add(Z){return this.steps.push(Z),this.proxy}as(Z){if(this.steps.length===0)throw Error("No step to capture");let $=this.steps[this.steps.length-1];return $.result=Z,this.proxy}step(Z){return this.add(Z)}return(Z){let $=this.atoms.return;if(!$)throw Error("Atom 'return' not found");let X=Z.schema??Z;return this.add($.create({schema:X}))}toJSON(){return{op:"seq",steps:[...this.steps]}}varsImport(Z){return this.add(this.atoms.varsImport.create({keys:Z}))}varsExport(Z){return this.add(this.atoms.varsExport.create({keys:Z}))}if(Z,$,X,Q){let H=new e(this.atoms);X(H);let K;if(Q){let W=new e(this.atoms);Q(W),K=W.steps}let Y=R4(Z,$),z=this.atoms.if;return this.add(z.create({condition:Y,then:H.steps,else:K}))}while(Z,$,X){let Q=new e(this.atoms);X(Q);let H=R4(Z,$),K=this.atoms.while;return this.add(K.create({condition:H,body:Q.steps}))}scope(Z){let $=new e(this.atoms);Z($);let X=this.atoms.scope;return this.add(X.create({steps:$.steps}))}map(Z,$,X){let Q=new e(this.atoms);X(Q);let H=this.atoms.map;return this.add(H.create({items:Z,as:$,steps:Q.steps}))}filter(Z,$,X,Q={}){let H=R4(X,Q),K=this.atoms.filter;return this.add(K.create({items:Z,as:$,condition:H}))}find(Z,$,X,Q={}){let H=R4(X,Q),K=this.atoms.find;return this.add(K.create({items:Z,as:$,condition:H}))}reduce(Z,$,X,Q,H){let K=new e(this.atoms);H(K);let Y=this.atoms.reduce;return this.add(Y.create({items:Z,as:$,accumulator:X,initial:Q,steps:K.steps}))}memoize(Z,$){let X=new e(this.atoms);Z(X);let Q=this.atoms.memoize;return this.add(Q.create({key:$,steps:X.steps}))}cache(Z,$,X){let Q=new e(this.atoms);Z(Q);let H=this.atoms.cache;return this.add(H.create({key:$,steps:Q.steps,ttlMs:X}))}try(Z){let $=new e(this.atoms);Z.try($);let X;if(Z.catch){let H=new e(this.atoms);Z.catch(H),X=H.steps}let Q=this.atoms.try;return this.add(Q.create({try:$.steps,catch:X}))}}var GX={take(Z){return new e(B4)},custom(Z){return new e(Z)},args(Z){return{$kind:"arg",path:Z}},val(Z){return Z}},dH=GX;import{validate as JX}from"tosijs-schema";function F0(Z,$={}){let{ast:X,returnType:Q,originalSource:H,requiredParams:K}=j1(Z,{filename:$.filename,colonShorthand:!0,vmTarget:!0}),Y=h0(X,$.filename),{ast:z,signature:W,warnings:G}=L0(Y,H,Q,$,K);return{ast:z,signature:W,warnings:G}}var _X=10;class L6{atoms;constructor(Z={}){this.atoms={...B4,...Z}}get builder(){return new e(this.atoms)}get Agent(){return new e(this.atoms)}get A99(){return this.Agent}resolve(Z){return this.atoms[Z]}getTools(Z="all"){let $=Object.values(this.atoms);if(Array.isArray(Z))$=$.filter((X)=>Z.includes(X.op));else if(Z==="flow"){let X=["seq","if","while","return","try","varSet","varGet","scope"];$=$.filter((Q)=>X.includes(Q.op))}return $.map((X)=>({type:"function",function:{name:X.op,description:X.docs,parameters:X.inputSchema?.schema??{}}}))}async run(Z,$={},X={}){let Q;if(typeof Z==="string")if(W6(Z))Q=G6(Z);else try{Q=F0(Z).ast}catch(U){throw Error(`AJS transpilation failed: ${U.message}`)}else Q=Z;let H=X.fuel??1000,K=X.timeoutMs??H*_X,Y=X.capabilities??{},z=[];if(!Y.store){let U=new Map,q=!1;Y.store={get:async(I)=>{if(!q)q=!0,z.push("Using default in-memory store (not suitable for production)");return U.get(I)},set:async(I,M)=>{if(!q)q=!0,z.push("Using default in-memory store (not suitable for production)");U.set(I,M)}}}let W=new AbortController,G=setTimeout(()=>W.abort(),K);if(X.signal)X.signal.addEventListener("abort",()=>W.abort());let J={fuel:{current:H},args:$,state:{},consts:new Set,capabilities:Y,resolver:(U)=>this.resolve(U),output:void 0,signal:W.signal,costOverrides:X.costOverrides,context:X.context,warnings:z};if(X.trace)J.trace=[];if(Q.op!=="seq")throw Error("Root AST must be 'seq'. Ensure you're passing a transpiled agent (use ajs`...` or transpile()).");let L=Q.inputSchema;if(L&&!JX($,L)){let U=new K1("Input validation failed: args do not match expected schema","vm.run");return{result:U,error:U,fuelUsed:0,trace:J.trace,warnings:z.length>0?z:void 0}}try{await Promise.race([this.resolve("seq")?.exec(Q,J),new Promise((U,q)=>{if(W.signal.addEventListener("abort",()=>{q(Error(`Execution timeout after ${K}ms (fuel: ${H}). Consider increasing fuel or optimizing your agent.`))}),W.signal.aborted)q(Error(`Execution timeout after ${K}ms (fuel: ${H}). Consider increasing fuel or optimizing your agent.`))})])}catch(U){if(U.message?.includes("timeout")||U.message?.includes("aborted")||W.signal.aborted)J.error=new K1(`Execution timeout after ${K}ms (fuel: ${H}). Consider increasing fuel or optimizing your agent.`,"vm.run");else throw U}finally{clearTimeout(G)}if(J.error&&J.output===void 0)J.output=J.error;let _=[...z,...J.warnings??[]];return{result:J.output,error:J.error,fuelUsed:H-J.fuel.current,trace:J.trace,warnings:_.length>0?_:void 0}}}var LX=null,e7=()=>LX??=new L6;function d1(Z){if(!Z||typeof Z!=="object")return;if(Array.isArray(Z)){for(let $ of Z)d1($);return}if(Z.op==="return"&&"value"in Z)Z.value={__result:Z.value};if(Z.steps)d1(Z.steps);if(Z.then)d1(Z.then);if(Z.else)d1(Z.else);if(Z.body)d1(Z.body)}async function UX(Z){let{code:$,context:X={},fuel:Q=1000,timeoutMs:H,capabilities:K={}}=Z,Y=e7(),W=/\breturn\b/.test($)?`function __eval() { ${$} }`:`function __eval() { return (${$}) }`;try{let{ast:G}=F0(W);d1(G);let J=await Y.run(G,X,{fuel:Q,timeoutMs:H,capabilities:K}),L=J.result;return{result:L&&typeof L==="object"&&"__result"in L?L.__result:L,fuelUsed:J.fuelUsed,error:J.error?{message:J.error.message||String(J.error)}:void 0}}catch(G){return{result:void 0,fuelUsed:Q,error:{message:G.message||String(G)}}}}async function qX(Z){let{body:$,params:X=[],fuel:Q=1000,timeoutMs:H,capabilities:K={}}=Z,Y=e7(),W=`function __safeFn(${X.join(", ")}) { ${$} }`,{ast:G}=F0(W);return d1(G),async(...J)=>{let L={};for(let _=0;_<X.length;_++)L[X[_]]=J[_];try{let _=await Y.run(G,L,{fuel:Q,timeoutMs:H,capabilities:K}),U=_.result;return{result:U&&typeof U==="object"&&"__result"in U?U.__result:U,fuelUsed:_.fuelUsed,error:_.error?{message:_.error.message||String(_.error)}:void 0}}catch(_){return{result:void 0,fuelUsed:Q,error:{message:_.message||String(_)}}}}}function w4(Z,$={}){let{ast:X,returnType:Q,originalSource:H,requiredParams:K}=j1(Z,{filename:$.filename,colonShorthand:!0,vmTarget:!0}),Y=h0(X,$.filename),{ast:z,signature:W,warnings:G}=L0(Y,H,Q,$,K);return{ast:z,signature:W,warnings:G}}function KK(Z,...$){if(typeof Z==="string")return w4(Z).ast;let X=Z.reduce((Q,H,K)=>Q+H+($[K]!==void 0?String($[K]):""),"");return w4(X).ast}function zK(Z,$,...X){if(typeof Z==="string")return w0(Z,$);let Q=$!==void 0?[$,...X]:X,H=Z.reduce((K,Y,z)=>K+Y+(Q[z]!==void 0?String(Q[z]):""),"");return w0(H)}async function WK(Z,$={},X){let Q=X??await U4(),H=await Q.getTranspile(Z);if(H)return{ast:H.ast,signature:H.signature,warnings:H.warnings};let K=w4(Z,$);return Q.setTranspile(Z,{ast:K.ast,signature:K.signature,warnings:K.warnings}),K}async function GK(Z,$={},X){let Q=X??await U4(),H=await Q.getTJS(Z);if(H)return{code:H.code,types:H.types,metadata:H.types,testRunner:H.testRunner,testCount:H.testCount,warnings:H.warnings};let K=w0(Z,$);return Q.setTJS(Z,{code:K.code,types:K.types,testRunner:K.testRunner,testCount:K.testCount,warnings:K.warnings}),K}function JK(Z,$,X){let{ast:Q,signature:H}=w4(Z),K=async(Y)=>{return(await $.run(Q,Y,X)).result};return K.signature=H,K.ast=Q,K}function _K(Z){return Object.entries(Z).map(([$,X])=>{let Q=X.signature,H={},K=[];for(let[Y,z]of Object.entries(Q.parameters)){if(H[Y]=M4(z.type),z.description)H[Y].description=z.description;if(z.required)K.push(Y)}return{type:"function",function:{name:Q.name||$,description:Q.description,parameters:{type:"object",properties:H,required:K}}}})}function M4(Z){switch(Z.kind){case"string":return{type:"string"};case"number":return{type:"number"};case"boolean":return{type:"boolean"};case"null":return{type:"null"};case"array":return{type:"array",items:Z.items?M4(Z.items):{}};case"object":if(!Z.shape)return{type:"object"};return{type:"object",properties:Object.fromEntries(Object.entries(Z.shape).map(([$,X])=>[$,M4(X)]))};case"union":if(!Z.members)return{};return{anyOf:Z.members.map(M4)};case"any":default:return{}}}import{s as v}from"tosijs-schema";var Z8=g("storeVectorize",v.object({text:v.string,model:v.string.optional}),v.array(v.number),async({text:Z},$)=>{let X=$.capabilities.vector;if(!X)throw Error("Capability 'vector' missing. Ensure vector battery is loaded.");let Q=E(Z,$);return X.embed(Q)},{docs:"Generate embeddings using vector battery",cost:20}),$8=g("storeCreateCollection",v.object({collection:v.string,dimension:v.number.optional}),void 0,async({collection:Z,dimension:$},X)=>{let Q=X.capabilities.store;if(!Q?.createCollection)throw Error("Capability 'store' missing or does not support createCollection.");let H=E(Z,X),K=E($,X);return Q.createCollection(H,void 0,K)},{docs:"Create a vector store collection",cost:5}),X8=g("storeVectorAdd",v.object({collection:v.string,doc:v.any}),void 0,async({collection:Z,doc:$},X)=>{let Q=X.capabilities.store;if(!Q?.vectorAdd)throw Error("Capability 'store' missing or does not support vectorAdd.");let H=E(Z,X),K=E($,X);return Q.vectorAdd(H,K)},{docs:"Add a document to a vector store collection",cost:5}),Q8=g("storeSearch",v.object({collection:v.string,queryVector:v.array(v.number),k:v.number.optional,filter:v.record(v.any).optional}),v.array(v.any),async({collection:Z,queryVector:$,k:X,filter:Q},H)=>{let K=H.capabilities.store;if(!K?.vectorSearch)throw Error("Capability 'store' missing or does not support vectorSearch.");let Y=E(Z,H),z=E($,H),W=E(X,H)??5,G=E(Q,H);return K.vectorSearch(Y,z,W,G)},{docs:"Search vector store",cost:(Z,$)=>5+(E(Z.k,$)??5)}),H8=g("llmPredictBattery",v.object({system:v.string.optional,user:v.string,tools:v.array(v.any).optional,responseFormat:v.any.optional}),v.object({role:v.string.optional,content:v.string.optional,tool_calls:v.array(v.any).optional}),async({system:Z,user:$,tools:X,responseFormat:Q},H)=>{let K=H.capabilities.llmBattery;if(!K?.predict)throw Error("Capability 'llmBattery' missing or invalid.");let Y=E(Z,H)??"You are a helpful agent.",z=E($,H),W=E(X,H),G=E(Q,H);return K.predict(Y,z,W,G)},{docs:"Generate completion using LLM battery",cost:100}),K8=g("llmVision",v.object({system:v.string.optional,prompt:v.string,images:v.array(v.string),responseFormat:v.any.optional}),v.object({role:v.string.optional,content:v.string.optional,tool_calls:v.array(v.any).optional}),async({system:Z,prompt:$,images:X,responseFormat:Q},H)=>{let K=H.capabilities.llmBattery;if(!K?.predict)throw Error("Capability 'llmBattery' missing or invalid.");let Y=E(Z,H)??"You analyze images accurately and concisely.",z=E($,H),W=E(X,H)??[],G=E(Q,H);return K.predict(Y,{text:z,images:W},void 0,G)},{docs:"Analyze images using a vision model",timeoutMs:120000,cost:150});var gK={storeCreateCollection:$8,storeSearch:Q8,storeVectorAdd:X8,storeVectorize:Z8,llmPredictBattery:H8,llmVision:K8};var Y8=new Map,j4=new Map;function DX(Z,$){if(Z.length!==$.length)throw Error("Vectors must have the same length for cosine similarity.");let X=0,Q=0,H=0;for(let K=0;K<Z.length;K++)X+=Z[K]*$[K],Q+=Z[K]*Z[K],H+=$[K]*$[K];if(Q=Math.sqrt(Q),H=Math.sqrt(H),Q===0||H===0)return 0;return X/(Q*H)}function U6(){return{async get(Z){return Y8.get(Z)},async set(Z,$){Y8.set(Z,$)},async createCollection(Z,$,X){if(j4.has(Z))console.warn(`Collection '${Z}' already exists. Overwriting.`);j4.set(Z,[])},async vectorAdd(Z,$){let X=j4.get(Z);if(!X)throw Error(`Collection '${Z}' not found. Create it first.`);if(!$.embedding||!Array.isArray($.embedding))throw Error("Document must have an 'embedding' property that is an array of numbers.");X.push($)},async vectorSearch(Z,$,X=5){let Q=j4.get(Z);if(!Q)throw Error(`Collection '${Z}' not found. Create it first.`);let H=Q.map((K)=>({doc:K,score:DX($,K.embedding)}));return H.sort((K,Y)=>Y.score-K.score),H.slice(0,X).map((K)=>K.doc)}}}function AX(Z){if(typeof Z==="string")return{role:"user",content:Z};let $=[{type:"text",text:Z.text}];for(let X of Z.images||[])$.push({type:"image_url",image_url:{url:X}});return{role:"user",content:$}}var IX="http://localhost:1234/v1";function z8(Z,$=IX){return{async predict(X,Q,H,K){try{let Y=K?Z.getStructuredLLM():Z.getLLM(),z=[{role:"system",content:X},AX(Q)],W=await fetch(`${$}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:Y.id,messages:z,temperature:0.7,tools:H,response_format:K})});if(!W.ok)throw Error(`LLM Error: ${W.status} ${W.statusText}`);return(await W.json()).choices[0]?.message??{content:""}}catch(Y){if(Y.cause?.code==="ECONNREFUSED")throw Error("No LLM provider configured. Please start LM Studio or provide an API key.");throw Y}},async embed(X){try{let Q=Z.getEmbedding(),H=await fetch(`${$}/embeddings`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:Q.id,input:X})});if(!H.ok)throw Error(`Embedding Error: ${H.status}`);return(await H.json()).data[0]?.embedding??[]}catch(Q){if(Q.cause?.code==="ECONNREFUSED")throw Error("No LLM provider configured. Please start LM Studio or provide an API key.");throw Q}}}}var P0=typeof window<"u"&&typeof window.localStorage<"u";async function MX(Z){try{if(P0){let $=window.localStorage.getItem(".models.cache.json");if(!$)return null;let X=JSON.parse($);if(X.baseUrl!==Z)return null;if(Date.now()-X.timestamp>86400000)return null;return X.models}else{let $=await import("node:fs/promises"),Q=(await Promise.resolve().then(() => (A6(),D6))).join(process.cwd(),".models.cache.json");try{let H=await $.readFile(Q,"utf-8"),K=JSON.parse(H);if(K.baseUrl!==Z)return null;if(Date.now()-K.timestamp>86400000)return null;return K.models}catch{return null}}}catch($){return console.warn("⚠️ Error reading model cache:",$),null}}async function wX(Z,$){let X={timestamp:Date.now(),baseUrl:Z,models:$};try{if(P0)window.localStorage.setItem(".models.cache.json",JSON.stringify(X));else{let Q=await import("node:fs/promises"),K=(await Promise.resolve().then(() => (A6(),D6))).join(process.cwd(),".models.cache.json");await Q.writeFile(K,JSON.stringify(X,null,2))}}catch(Q){console.error("❌ Error writing model cache:",Q)}}var V0=async(Z,$)=>{let X=new AbortController,Q=setTimeout(()=>X.abort(),60000);try{let H=await fetch(Z,{...$,signal:X.signal});return clearTimeout(Q),H}catch(H){throw clearTimeout(Q),H}};async function jX(Z,$){try{let X={type:"json_schema",json_schema:{name:"test",strict:!1,schema:{type:"object",properties:{status:{type:"string"}}}}},Q=await V0(`${Z}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:$,messages:[{role:"system",content:"You respond in JSON."},{role:"user",content:'Return JSON: {"status": "ok"}'}],response_format:X,max_tokens:20})});if(!Q.ok){if(Q.status===400)return FX(Z,$);return{ok:!1,msg:`HTTP ${Q.status}`}}let H=await Q.json();return JSON.parse(H.choices[0].message.content),{ok:!0,msg:"OK (Schema)"}}catch(X){return{ok:!1,msg:X.message||"Error"}}}async function FX(Z,$){try{if((await V0(`${Z}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:$,messages:[{role:"user",content:'JSON: {"a":1}'}],response_format:{type:"json_object"},max_tokens:10})})).ok)return{ok:!0,msg:"OK (Legacy Mode)"};return{ok:!1,msg:"Not Supported"}}catch{return{ok:!1,msg:"Legacy Fail"}}}async function PX(Z,$){try{return(await V0(`${Z}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:$,messages:[{role:"user",content:"hi"}],max_tokens:1})})).ok}catch{return!1}}async function VX(Z,$){try{let X=await V0(`${Z}/embeddings`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:$,input:"test"})});if(!X.ok)return null;return(await X.json()).data[0]?.embedding?.length??null}catch{return null}}var CX="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8DwHwAFBQIAX8jx0gAAAABJRU5ErkJggg==";async function OX(Z,$){try{return(await V0(`${Z}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:$,messages:[{role:"user",content:[{type:"text",text:"What color is this?"},{type:"image_url",image_url:{url:CX}}]}],max_tokens:10})})).ok}catch{return!1}}async function w8(Z){let $=await MX(Z),X=[];try{let Y=await fetch(`${Z}/models`);if(!Y.ok)throw Error("Could not connect");X=(await Y.json()).data.map((W)=>W.id).sort()}catch(Y){if($)return console.log("⚠️ LM Studio unavailable, using cached model audit."),$;return console.error("❌ Failed to connect to LM Studio."),[]}if($){let Y=$.map((z)=>z.id).sort();if(JSON.stringify(X)===JSON.stringify(Y))return console.log("✅ Using cached model audit."),$;console.log("\uD83D\uDD0D Model list changed. Re-running audit...")}console.log("\uD83D\uDD0D Scanning models (this may take a moment)...");let Q=[],H=X.map((Y)=>({id:Y})),K;if(!P0)K=await import("node:readline");for(let Y of H){if(!P0&&K)K.cursorTo(process.stdout,0),process.stdout.write(`\uD83D\uDC49 Testing: ${Y.id}...`),K.clearLine(process.stdout,1);let z="Unknown",W=!1,G=!1,J="",L=void 0,_=await PX(Z,Y.id),U=await VX(Z,Y.id);if(U)L=U;if(_){z="LLM";let q=await jX(Z,Y.id);if(W=q.ok,G=await OX(Z,Y.id),J=W?q.msg:`Fail: ${q.msg}`,G)J+=" +Vision"}else if(U)z="Embedding",J=`OK (Dim: ${U})`;else J="LLM Fail";Q.push({id:Y.id,type:z,structuredOutput:W,vision:G,dimension:L,status:J})}if(!P0&&K)K.cursorTo(process.stdout,0),K.clearLine(process.stdout,0);return console.log(`
421
421
  `),console.table(Q),await wX(Z,Q),console.log("\uD83D\uDCDD Audit results saved to cache."),Q}var NX="http://localhost:1234/v1";class I6{baseUrl;models=[];defaultLLM=null;defaultEmbedding=null;defaultStructuredLLM=null;constructor(Z=NX){this.baseUrl=Z}async audit(){this.models=await w8(this.baseUrl),this.selectDefaults()}selectDefaults(){if(this.defaultEmbedding=this.models.find((Z)=>Z.type==="Embedding")||null,this.defaultLLM=this.models.find((Z)=>Z.type==="LLM")||null,this.defaultStructuredLLM=this.models.find((Z)=>Z.type==="LLM"&&Z.structuredOutput)||null,!this.defaultEmbedding)console.warn("⚠️ No embedding model found.");if(!this.defaultLLM)console.warn("⚠️ No LLM found.");if(!this.defaultStructuredLLM)console.warn("⚠️ No LLM with structured output support found.")}getModels(){return this.models}_setDefaultModel(Z,$,X,Q){let H=this.models.find((K)=>K.id===Z&&X(K));if(!H)throw Error(`Model '${Z}' not found or is not ${Q}.`);this[$]=H}setDefaultLLM(Z){this._setDefaultModel(Z,"defaultLLM",($)=>$.type==="LLM","an LLM")}setDefaultEmbedding(Z){this._setDefaultModel(Z,"defaultEmbedding",($)=>$.dimension!==void 0,"an embedding model")}setDefaultStructuredLLM(Z){this._setDefaultModel(Z,"defaultStructuredLLM",($)=>$.type==="LLM"&&$.structuredOutput,"a structured-output LLM")}getLLM(){if(!this.defaultLLM)throw Error("No LLM available.");return this.defaultLLM}getEmbedding(){if(!this.defaultEmbedding)throw Error("No embedding model available.");return this.defaultEmbedding}getStructuredLLM(){if(!this.defaultStructuredLLM)throw Error("No structured-output LLM available.");return this.defaultStructuredLLM}}var EX=typeof window<"u",TX=EX&&window.location.protocol==="https:",C0=null,B6=null,j8=!1;async function SX(){if(j8)return{localModels:C0,llm:B6};if(j8=!0,TX)return console.log("\uD83D\uDCE1 HTTPS detected - local LLM endpoints disabled. Use HTTP for local LLM support."),{localModels:null,llm:null};try{C0=new I6,await C0.audit(),B6=z8(C0)}catch(Z){console.warn("⚠️ Could not connect to local LLM:",Z)}return{localModels:C0,llm:B6}}async function kX(){let{localModels:Z,llm:$}=await SX();return{vector:$?{embed:$.embed}:void 0,store:U6(),llmBattery:$,models:Z}}async function mK(){return kX()}var iK={store:U6(),llmBattery:null,vector:void 0,models:null};function gX(Z){if(typeof Z!=="string")return!1;let $=new Date(Z);return!isNaN($.getTime())&&Z.includes("T")}function bX(){return new Date().toISOString()}function $0(Z,$,X,Q=0,H=0,K=0,Y=0){return new Date(Date.UTC(Z,$-1,X,Q,H,K,Y)).toISOString()}function F8(Z){let $=new Date(Z);if(isNaN($.getTime()))throw Error(`Invalid date string: ${Z}`);return $.toISOString()}function vX(Z){try{return F8(Z)}catch{return null}}function O0(Z,$){let X=new Date(Z);return X.setTime(X.getTime()+$),X.toISOString()}function fX(Z,$){return O0(Z,$*1000)}function yX(Z,$){return O0(Z,$*60*1000)}function hX(Z,$){return O0(Z,$*60*60*1000)}function P8(Z,$){return O0(Z,$*24*60*60*1000)}function xX(Z,$){return P8(Z,$*7)}function uX(Z,$){let X=new Date(Z),Q=X.getUTCMonth()+$;if(X.setUTCMonth(Q),X.getUTCMonth()!==(Q%12+12)%12)X.setUTCDate(0);return X.toISOString()}function dX(Z,$){let X=new Date(Z),Q=X.getUTCDate();if(X.setUTCFullYear(X.getUTCFullYear()+$),X.getUTCDate()!==Q)X.setUTCDate(0);return X.toISOString()}function T1(Z,$){return new Date(Z).getTime()-new Date($).getTime()}function lX(Z,$){return Math.floor(T1(Z,$)/1000)}function mX(Z,$){return Math.floor(T1(Z,$)/60000)}function iX(Z,$){return Math.floor(T1(Z,$)/3600000)}function pX(Z,$){return Math.floor(T1(Z,$)/86400000)}function X0(Z){return new Date(Z).getUTCFullYear()}function P4(Z){return new Date(Z).getUTCMonth()+1}function R6(Z){return new Date(Z).getUTCDate()}function nX(Z){return new Date(Z).getUTCHours()}function cX(Z){return new Date(Z).getUTCMinutes()}function oX(Z){return new Date(Z).getUTCSeconds()}function sX(Z){return new Date(Z).getUTCMilliseconds()}function aX(Z){let $=new Date(Z).getUTCDay();return $===0?7:$}function V4(Z,$,X){let Q=new Date(Z),H={timeZone:$,...X};return new Intl.DateTimeFormat(void 0,H).format(Q)}function rX(Z,$){return V4(Z,$,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"})}function tX(Z,$){return V4(Z,$,{year:"numeric",month:"short",day:"numeric"})}function eX(Z,$){return V4(Z,$,{hour:"2-digit",minute:"2-digit",second:"2-digit"})}function ZQ(Z){return Z.slice(0,10)}function V8(Z,$){return T1(Z,$)<0}function C8(Z,$){return T1(Z,$)>0}function $Q(Z,$){return T1(Z,$)===0}function XQ(Z,$){return V8(Z,$)?Z:$}function QQ(Z,$){return C8(Z,$)?Z:$}function HQ(Z){return $0(X0(Z),P4(Z),R6(Z))}function KQ(Z){return $0(X0(Z),P4(Z),R6(Z),23,59,59,999)}function YQ(Z){return $0(X0(Z),P4(Z),1)}function zQ(Z){let $=new Date(Z);return $.setUTCMonth($.getUTCMonth()+1,0),$.setUTCHours(23,59,59,999),$.toISOString()}function WQ(Z){return $0(X0(Z),1,1)}function GQ(Z){return $0(X0(Z),12,31,23,59,59,999)}var Q0={isValid:gX,now:bX,from:$0,parse:F8,tryParse:vX,addMilliseconds:O0,addSeconds:fX,addMinutes:yX,addHours:hX,addDays:P8,addWeeks:xX,addMonths:uX,addYears:dX,diff:T1,diffSeconds:lX,diffMinutes:mX,diffHours:iX,diffDays:pX,year:X0,month:P4,day:R6,hour:nX,minute:cX,second:oX,millisecond:sX,dayOfWeek:aX,toLocal:V4,format:rX,formatDate:tX,formatTime:eX,toDate:ZQ,isBefore:V8,isAfter:C8,isEqual:$Q,min:XQ,max:QQ,startOfDay:HQ,endOfDay:KQ,startOfMonth:YQ,endOfMonth:zQ,startOfYear:WQ,endOfYear:GQ};function M6(Z){if(typeof Z!=="string")return!1;if(!/^\d{4}-\d{2}-\d{2}$/.test(Z))return!1;let $=parseInt(Z.slice(0,4),10),X=parseInt(Z.slice(5,7),10),Q=parseInt(Z.slice(8,10),10);if(X<1||X>12)return!1;if(Q<1)return!1;let H=[31,28,31,30,31,30,31,31,30,31,30,31],K=X===2&&($%4===0&&$%100!==0||$%400===0)?29:H[X-1];return Q<=K}function JQ(){return Q0.toDate(Q0.now())}function _Q(Z){let $=new Date;return new Intl.DateTimeFormat("en-CA",{timeZone:Z,year:"numeric",month:"2-digit",day:"2-digit"}).format($)}function _1(Z,$,X){let Q=String(Z).padStart(4,"0"),H=String($).padStart(2,"0"),K=String(X).padStart(2,"0"),Y=`${Q}-${H}-${K}`;if(!M6(Y))throw Error(`Invalid date: ${Z}-${$}-${X}`);return Y}function O8(Z){if(/^\d{4}-\d{2}-\d{2}$/.test(Z)){if(!M6(Z))throw Error(`Invalid date: ${Z}`);return Z}let $=new Date(Z);if(isNaN($.getTime()))throw Error(`Invalid date string: ${Z}`);let X=$.getUTCFullYear(),Q=$.getUTCMonth()+1,H=$.getUTCDate();return _1(X,Q,H)}function LQ(Z){try{return O8(Z)}catch{return null}}function C4(Z,$){let X=E8(Z);return Q0.toDate(Q0.addDays(X,$))}function UQ(Z,$){return C4(Z,$*7)}function qQ(Z,$){let X=$1(Z),Q=S1(Z),H=w6(Z),K=X*12+(Q-1)+$,Y=Math.floor(K/12),z=K%12+1,W=N0(Y,z),G=Math.min(H,W);return _1(Y,z,G)}function DQ(Z,$){let X=$1(Z),Q=S1(Z),H=w6(Z),K=X+$,Y=N0(K,Q),z=Math.min(H,Y);return _1(K,Q,z)}function N8(Z,$){let Q=new Date(Z+"T00:00:00Z").getTime(),H=new Date($+"T00:00:00Z").getTime();return Math.round((Q-H)/86400000)}function AQ(Z,$){let X=$1(Z),Q=S1(Z),H=$1($),K=S1($);return(X-H)*12+(Q-K)}function IQ(Z,$){return $1(Z)-$1($)}function $1(Z){return parseInt(Z.slice(0,4),10)}function S1(Z){return parseInt(Z.slice(5,7),10)}function w6(Z){return parseInt(Z.slice(8,10),10)}function j6(Z){let $=new Date(Z+"T00:00:00Z").getUTCDay();return $===0?7:$}function BQ(Z){let $=new Date(Z+"T00:00:00Z"),X=$.getUTCDay()||7;$.setUTCDate($.getUTCDate()+4-X);let Q=new Date(Date.UTC($.getUTCFullYear(),0,1));return Math.ceil((($.getTime()-Q.getTime())/86400000+1)/7)}function RQ(Z){let $=_1($1(Z),1,1);return N8(Z,$)+1}function F6(Z){return Math.ceil(S1(Z)/3)}function P6(Z){return Z%4===0&&Z%100!==0||Z%400===0}function N0(Z,$){let X=[31,28,31,30,31,30,31,31,30,31,30,31];if($===2&&P6(Z))return 29;return X[$-1]}function MQ(Z){return P6(Z)?366:365}function E8(Z){return Z+"T00:00:00.000Z"}function wQ(Z){return Math.floor(new Date(Z+"T00:00:00Z").getTime()/1000)}function jQ(Z){let $=new Date(Z*1000);return _1($.getUTCFullYear(),$.getUTCMonth()+1,$.getUTCDate())}function V6(Z,$){let X=new Date(Z+"T00:00:00Z"),Q={timeZone:"UTC",...$};return new Intl.DateTimeFormat(void 0,Q).format(X)}function FQ(Z){return V6(Z,{year:"numeric",month:"long",day:"numeric"})}function PQ(Z){return V6(Z,{year:"numeric",month:"short",day:"numeric"})}function VQ(Z,$){return Z<$}function CQ(Z,$){return Z>$}function OQ(Z,$){return Z===$}function NQ(Z,$){return Z<$?Z:$}function EQ(Z,$){return Z>$?Z:$}function TQ(Z,$,X){return Z>=$&&Z<=X}function SQ(Z){return _1($1(Z),S1(Z),1)}function kQ(Z){let $=$1(Z),X=S1(Z);return _1($,X,N0($,X))}function gQ(Z){let X=(F6(Z)-1)*3+1;return _1($1(Z),X,1)}function bQ(Z){let X=F6(Z)*3;return _1($1(Z),X,N0($1(Z),X))}function vQ(Z){return _1($1(Z),1,1)}function fQ(Z){return _1($1(Z),12,31)}function yQ(Z){let $=j6(Z);return C4(Z,-($-1))}function hQ(Z){let $=j6(Z);return C4(Z,7-$)}var xQ={isValid:M6,today:JQ,todayIn:_Q,from:_1,parse:O8,tryParse:LQ,addDays:C4,addWeeks:UQ,addMonths:qQ,addYears:DQ,diff:N8,diffMonths:AQ,diffYears:IQ,year:$1,month:S1,day:w6,dayOfWeek:j6,weekOfYear:BQ,dayOfYear:RQ,quarter:F6,isLeapYear:P6,daysInMonth:N0,daysInYear:MQ,toTimestamp:E8,toUnix:wQ,fromUnix:jQ,format:V6,formatLong:FQ,formatShort:PQ,isBefore:VQ,isAfter:CQ,isEqual:OQ,min:NQ,max:EQ,isBetween:TQ,startOfMonth:SQ,endOfMonth:kQ,startOfQuarter:gQ,endOfQuarter:bQ,startOfYear:vQ,endOfYear:fQ,startOfWeek:yQ,endOfWeek:hQ};export{c$ as xmlParse,o4 as wrap,J$ as whileLoop,u$ as vectorSearch,B$ as varsLet,I$ as varsImport,R$ as varsExport,q$ as varSet,A$ as varGet,c4 as validateArgs,r$ as uuid,g4 as typeToString,c1 as typeOf,a1 as typeDescriptorToTS,L$ as tryCatch,WK as transpileWithCache,w0 as transpileToJS,m$ as transpileCode,w4 as transpile,L0 as transformFunction,GK as tjsWithCache,zK as tjs,MZ as testUtils,E$ as template,M7 as stripTjsPreamble,Y4 as stripModuleSyntax,h$ as storeSet,x$ as storeQuery,$X as storeProcedure,y$ as storeGet,O$ as split,n5 as setGlobalCache,J1 as seq,M$ as scope,b1 as runtime,i$ as runCode,_$ as ret,E as resolveValue,G6 as resolveProcedureToken,XX as releaseProcedure,O7 as registerWasmBlock,T$ as regexMatch,F$ as reduce,a$ as random,V$ as push,Z0 as procedureStore,y0 as preprocess,S$ as pick,$7 as parseReturnType,C1 as parseParameter,j1 as parse,k$ as omit,g$ as merge,o$ as memoize,w$ as map,m8 as lookupVariable,d$ as llmPredict,s5 as lint,C$ as len,b$ as keys,n$ as jsonStringify,p$ as jsonParse,N$ as join,y4 as isValidUrl,h4 as isValidTimestamp,x4 as isValidLegalDate,O1 as isRuntimeType,W6 as isProcedureToken,F1 as isError,e5 as isAgentError,C7 as instantiateWasm,s4 as installRuntime,Q1 as inferTypeFromValue,G$ as iff,m5 as hashSourceSync,L4 as hashSource,J6 as hash,_K as getToolDefinitions,U6 as getStoreCapabilityDefault,mK as getStandardCapabilities,p as getLocation,z8 as getLLMCapability,U4 as getGlobalCache,kX as getBatteries,t5 as generateDocsMarkdown,x7 as generateDocs,F5 as generateDTS,d5 as fromTS,P$ as find,j$ as filter,f$ as fetch,v4 as extractTests,G0 as extractTDoc,I1 as extractLiteralValue,z7 as expectFunction,o as evaluateExpr,U$ as errorAtom,R1 as error,fZ as emitRuntimeWrapper,g as defineAtom,E1 as createChildScope,W1 as createChildContext,JK as createAgent,B4 as coreAtoms,D$ as constSet,e$ as consoleWarn,t$ as consoleLog,ZX as consoleError,z5 as compileWasmBlocks,G4 as compileToWasm,QX as clearExpiredProcedures,v1 as checkType,s$ as cache,V1 as builtins,gK as batteryAtoms,iK as batteries,Y7 as assertFunction,KK as ajs,l$ as agentRun,t0 as Union,e as TypedBuilder,l8 as TypeError,s as Type,i as TranspileError,u4 as TimestampType,Q0 as Timestamp,s0 as TUuid,o0 as TUrl,d0 as TString,$4 as TRecord,p0 as TPositiveInt,Z4 as TPair,l0 as TNumber,n0 as TNonEmptyString,Z1 as TJS_VERSION,i0 as TInteger,c0 as TEmail,m0 as TBoolean,e0 as TArray,X1 as SyntaxError,l5 as Schema,qX as SafeFunction,z6 as PROCEDURE_TOKEN_PREFIX,r0 as Optional,a0 as Nullable,H6 as MetadataCache,I6 as LocalModels,d4 as LegalDateType,xQ as LegalDate,p1 as Generic,U0 as FunctionPredicate,UX as Eval,X4 as Enum,Z$ as DEFAULT_PROCEDURE_TTL,$$ as DEFAULT_MAX_AST_SIZE,L6 as AgentVM,K1 as AgentError,GX as Agent,dH as A99};
422
422
 
423
- //# debugId=6603A54D749F96B464756E2164756E21
423
+ //# debugId=D984975DD4F12ABE64756E2164756E21