@fungi.computer/grove 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/dist/assets/{Effect-BEduymlz.js → Effect-CxgtVs4O.js} +1 -1
  2. package/dist/assets/{anthropic-messages-Bnv5qjAJ.js → anthropic-messages-DVt3Yh9K.js} +3 -3
  3. package/dist/assets/base-face-BaB6vmvy.js +1 -0
  4. package/dist/assets/burger-CoqBXzRV.js +1 -0
  5. package/dist/assets/cat-2dRm7fBw.js +1 -0
  6. package/dist/assets/compat-fz0ZcRJH.js +2 -0
  7. package/dist/assets/document-D5hwZS3o.js +1 -0
  8. package/dist/assets/extension-hook-0UB2lkEs.js +560 -0
  9. package/dist/assets/{extensions-1Fd4Wd8r.js → extensions-CAsZR9ky.js} +1 -1
  10. package/dist/assets/index-Bw6tV9qS.css +1 -0
  11. package/dist/assets/index-DRDNbHYF.js +171 -0
  12. package/dist/assets/mushroom-B9t9hgQE.js +1 -0
  13. package/dist/assets/{node.browser-CwSOSQcL.js → node.browser-hsQQ6fyG.js} +1 -1
  14. package/dist/assets/{openai-codex-responses-BMz-j1hp.js → openai-codex-responses-CA-ivUEd.js} +1 -1
  15. package/dist/assets/parakeet-conversation-w0nznEs9.js +3 -0
  16. package/dist/assets/renderer-s3PB0XrL.js +1 -0
  17. package/dist/assets/runtime-core-GKyHklNK.js +2 -0
  18. package/dist/index.html +6 -4
  19. package/package.json +15 -12
  20. package/dist/assets/base-face-CJPKiwfc.js +0 -1
  21. package/dist/assets/burger-DMbWZ2jd.js +0 -1
  22. package/dist/assets/cat-UfLh6DHG.js +0 -1
  23. package/dist/assets/compat-CvJ9Wfru.js +0 -2
  24. package/dist/assets/extension-hook-DvcdepgP.js +0 -560
  25. package/dist/assets/index-DBHVAvuX.css +0 -1
  26. package/dist/assets/index-hJphFjkO.js +0 -171
  27. package/dist/assets/mushroom-BBaCYNmw.js +0 -1
  28. package/dist/assets/parakeet-conversation-C3pQoKx-.js +0 -3
  29. package/dist/assets/renderer-BdjuCi44.js +0 -1
  30. package/dist/assets/runtime-core-CvcjUkf6.js +0 -2
@@ -0,0 +1 @@
1
+ import{a as e}from"./document-D5hwZS3o.js";import{t}from"./renderer-s3PB0XrL.js";var n={version:1,name:`mushroom`,renderer:`zdog`,controls:{body:{type:`color`,label:`body`,default:`#fff7e4`},cap:{type:`color`,label:`cap`,default:`#f98284`},capSpot:{type:`color`,label:`capSpot`,default:`#ffe6c6`},eye:{type:`color`,label:`eye`,default:`#28282e`},mouth:{type:`color`,label:`mouth`,default:`#28282e`},blush:{type:`color`,label:`blush`,default:`#feaae4`},dead:{type:`color`,label:`dead`,default:`#6c5671`},deadTongue:{type:`color`,label:`deadTongue`,default:`#d9c8bf`},tongue:{type:`color`,label:`tongue`,default:`#f98284`},sweat:{type:`color`,label:`sweat`,default:`#accce4`},white:{type:`color`,label:`white`,default:`#ffffff`}},data:JSON.parse(`{"root":"node-0","nodes":[{"id":"node-0","kind":"group","options":{"name":"root"}},{"id":"node-1","parent":"node-0","kind":"group","options":{"name":"body","updateSort":true}},{"id":"node-2","parent":"node-1","kind":"hemisphere","options":{"name":"body.hemisphere","translate":{"y":2},"rotate":{"x":4.71238898038469},"color":"\\u0000sprite-color:body","stroke":false,"backface":"\\u0000sprite-color:cap","diameter":32}},{"id":"node-3","parent":"node-1","kind":"hemisphere","options":{"name":"cap.hemisphere","translate":{"y":2},"rotate":{"x":1.5707963267948966},"color":"\\u0000sprite-color:cap","stroke":false,"backface":"\\u0000sprite-color:capSpot","diameter":42}},{"id":"node-4","parent":"node-3","kind":"shape","options":{"name":"cap.spot.front","translate":{"x":-8,"y":8,"z":12},"color":"\\u0000sprite-color:capSpot","stroke":12,"path":[{"x":0,"y":0}]}},{"id":"node-5","parent":"node-3","kind":"shape","options":{"name":"cap.spot.top","translate":{"x":8,"y":-4,"z":13},"color":"\\u0000sprite-color:capSpot","stroke":18,"path":[{"x":0,"y":0}]}},{"id":"node-6","parent":"node-1","kind":"group","options":{"name":"face","translate":{"y":7,"z":8}}},{"id":"node-7","parent":"node-6","kind":"group","options":{"name":"eyes"}},{"id":"node-8","parent":"node-7","kind":"group","options":{"name":"eyes.normal"}},{"id":"node-9","parent":"node-8","kind":"group","options":{"translate":{"x":-6,"y":-2}}},{"id":"node-10","parent":"node-9","kind":"ellipse","options":{"color":"\\u0000sprite-color:eye","stroke":1.5,"fill":true,"width":3,"height":5}},{"id":"node-11","parent":"node-9","kind":"ellipse","options":{"translate":{"y":-1,"z":1},"color":"\\u0000sprite-color:white","stroke":0.5,"fill":true,"width":1.5,"height":2}},{"id":"node-12","parent":"node-8","kind":"group","options":{"translate":{"x":6,"y":-2}}},{"id":"node-13","parent":"node-12","kind":"ellipse","options":{"color":"\\u0000sprite-color:eye","stroke":1.5,"fill":true,"width":3,"height":5}},{"id":"node-14","parent":"node-12","kind":"ellipse","options":{"translate":{"y":-1,"z":1},"color":"\\u0000sprite-color:white","stroke":0.5,"fill":true,"width":1.5,"height":2}},{"id":"node-15","parent":"node-7","kind":"group","options":{"name":"eyes.sad"}},{"id":"node-16","parent":"node-15","kind":"group","options":{"translate":{"x":-6,"y":-1},"rotate":{"z":0.2}}},{"id":"node-17","parent":"node-16","kind":"ellipse","options":{"color":"\\u0000sprite-color:eye","stroke":1.5,"fill":true,"width":3,"height":4}},{"id":"node-18","parent":"node-16","kind":"ellipse","options":{"translate":{"y":-1,"z":1},"color":"\\u0000sprite-color:white","stroke":0.5,"fill":true,"width":1.5,"height":2}},{"id":"node-19","parent":"node-15","kind":"group","options":{"translate":{"x":6,"y":-1},"rotate":{"z":-0.2}}},{"id":"node-20","parent":"node-19","kind":"ellipse","options":{"color":"\\u0000sprite-color:eye","stroke":1.5,"fill":true,"width":3,"height":4}},{"id":"node-21","parent":"node-19","kind":"ellipse","options":{"translate":{"y":-1,"z":1},"color":"\\u0000sprite-color:white","stroke":0.5,"fill":true,"width":1.5,"height":2}},{"id":"node-22","parent":"node-7","kind":"group","options":{"name":"eyes.surprised"}},{"id":"node-23","parent":"node-22","kind":"group","options":{"translate":{"x":-6,"y":-2}}},{"id":"node-24","parent":"node-23","kind":"ellipse","options":{"color":"\\u0000sprite-color:eye","stroke":1.5,"fill":true,"width":4,"height":5}},{"id":"node-25","parent":"node-23","kind":"ellipse","options":{"translate":{"y":-1,"z":1},"color":"\\u0000sprite-color:white","stroke":0.5,"fill":true,"width":1.5,"height":2}},{"id":"node-26","parent":"node-22","kind":"group","options":{"translate":{"x":6,"y":-2}}},{"id":"node-27","parent":"node-26","kind":"ellipse","options":{"color":"\\u0000sprite-color:eye","stroke":1.5,"fill":true,"width":4,"height":5}},{"id":"node-28","parent":"node-26","kind":"ellipse","options":{"translate":{"y":-1,"z":1},"color":"\\u0000sprite-color:white","stroke":0.5,"fill":true,"width":1.5,"height":2}},{"id":"node-29","parent":"node-7","kind":"group","options":{"name":"eyes.happy"}},{"id":"node-30","parent":"node-29","kind":"shape","options":{"translate":{"x":-6,"y":-2},"color":"\\u0000sprite-color:eye","stroke":1.5,"path":[{"x":-2.5,"y":2},{"bezier":[{"x":-1,"y":-1.5},{"x":1,"y":-1.5},{"x":2.5,"y":2}]}],"closed":false}},{"id":"node-31","parent":"node-29","kind":"shape","options":{"translate":{"x":6,"y":-2},"color":"\\u0000sprite-color:eye","stroke":1.5,"path":[{"x":-2.5,"y":2},{"bezier":[{"x":-1,"y":-1.5},{"x":1,"y":-1.5},{"x":2.5,"y":2}]}],"closed":false}},{"id":"node-32","parent":"node-7","kind":"group","options":{"name":"eyes.angry"}},{"id":"node-33","parent":"node-32","kind":"group","options":{"translate":{"x":-6,"y":-1},"rotate":{"z":-0.3}}},{"id":"node-34","parent":"node-33","kind":"ellipse","options":{"color":"\\u0000sprite-color:eye","stroke":1.5,"fill":true,"width":3,"height":4}},{"id":"node-35","parent":"node-33","kind":"shape","options":{"translate":{"y":-1},"color":"\\u0000sprite-color:eye","stroke":1.5,"path":[{"x":-3,"y":-3},{"x":3,"y":-2}]}},{"id":"node-36","parent":"node-32","kind":"group","options":{"translate":{"x":6,"y":-1},"rotate":{"z":0.3}}},{"id":"node-37","parent":"node-36","kind":"ellipse","options":{"color":"\\u0000sprite-color:eye","stroke":1.5,"fill":true,"width":3,"height":4}},{"id":"node-38","parent":"node-36","kind":"shape","options":{"translate":{"y":-1},"color":"\\u0000sprite-color:eye","stroke":1.5,"path":[{"x":-3,"y":-3},{"x":3,"y":-2}]}},{"id":"node-39","parent":"node-7","kind":"group","options":{"name":"eyes.dead"}},{"id":"node-40","parent":"node-39","kind":"group","options":{"translate":{"x":-6,"y":-2}}},{"id":"node-41","parent":"node-40","kind":"shape","options":{"color":"\\u0000sprite-color:dead","stroke":1.5,"path":[{"x":-2,"y":-3},{"x":2,"y":3}]}},{"id":"node-42","parent":"node-40","kind":"shape","options":{"color":"\\u0000sprite-color:dead","stroke":1.5,"path":[{"x":2,"y":-3},{"x":-2,"y":3}]}},{"id":"node-43","parent":"node-39","kind":"group","options":{"translate":{"x":6,"y":-2}}},{"id":"node-44","parent":"node-43","kind":"shape","options":{"color":"\\u0000sprite-color:dead","stroke":1.5,"path":[{"x":-2,"y":-3},{"x":2,"y":3}]}},{"id":"node-45","parent":"node-43","kind":"shape","options":{"color":"\\u0000sprite-color:dead","stroke":1.5,"path":[{"x":2,"y":-3},{"x":-2,"y":3}]}},{"id":"node-46","parent":"node-7","kind":"group","options":{"name":"eyes.confused"}},{"id":"node-47","parent":"node-46","kind":"group","options":{"translate":{"x":-6,"y":-2}}},{"id":"node-48","parent":"node-47","kind":"ellipse","options":{"color":"\\u0000sprite-color:eye","stroke":1.5,"fill":true,"width":3,"height":5}},{"id":"node-49","parent":"node-47","kind":"shape","options":{"color":"\\u0000sprite-color:eye","stroke":1.5,"path":[{"x":-3,"y":-4},{"x":3,"y":-2}]}},{"id":"node-50","parent":"node-46","kind":"group","options":{"translate":{"x":6,"y":-2}}},{"id":"node-51","parent":"node-50","kind":"ellipse","options":{"color":"\\u0000sprite-color:eye","stroke":1.5,"fill":true,"width":3,"height":5}},{"id":"node-52","parent":"node-7","kind":"group","options":{"name":"eyes.sleepy"}},{"id":"node-53","parent":"node-52","kind":"shape","options":{"translate":{"x":-6,"y":-1},"color":"\\u0000sprite-color:eye","stroke":1.5,"path":[{"x":-2.5,"y":1},{"bezier":[{"x":-1,"y":0},{"x":1,"y":0},{"x":2.5,"y":1}]}],"closed":false}},{"id":"node-54","parent":"node-52","kind":"shape","options":{"translate":{"x":6,"y":-1},"color":"\\u0000sprite-color:eye","stroke":1.5,"path":[{"x":-2.5,"y":1},{"bezier":[{"x":-1,"y":0},{"x":1,"y":0},{"x":2.5,"y":1}]}],"closed":false}},{"id":"node-55","parent":"node-7","kind":"group","options":{"name":"eyes.nervous"}},{"id":"node-56","parent":"node-55","kind":"group","options":{"translate":{"x":-6,"y":-2}}},{"id":"node-57","parent":"node-56","kind":"ellipse","options":{"color":"\\u0000sprite-color:eye","stroke":1.5,"fill":true,"width":3,"height":5}},{"id":"node-58","parent":"node-55","kind":"group","options":{"translate":{"x":6,"y":-2}}},{"id":"node-59","parent":"node-58","kind":"ellipse","options":{"color":"\\u0000sprite-color:eye","stroke":1.5,"fill":true,"width":3,"height":5}},{"id":"node-60","parent":"node-55","kind":"group","options":{"translate":{"x":10,"y":4}}},{"id":"node-61","parent":"node-60","kind":"shape","options":{"color":"\\u0000sprite-color:sweat","stroke":2,"path":[{"x":0,"y":-4}]}},{"id":"node-62","parent":"node-60","kind":"ellipse","options":{"translate":{"y":2},"color":"\\u0000sprite-color:sweat","stroke":0,"fill":true,"width":3,"height":4}},{"id":"node-63","parent":"node-7","kind":"group","options":{"name":"eyes.shy"}},{"id":"node-64","parent":"node-63","kind":"ellipse","options":{"translate":{"x":-6,"y":-2},"color":"\\u0000sprite-color:eye","stroke":1.5,"fill":true,"width":2.5,"height":2}},{"id":"node-65","parent":"node-63","kind":"ellipse","options":{"translate":{"x":6,"y":-2},"color":"\\u0000sprite-color:eye","stroke":1.5,"fill":true,"width":2.5,"height":2}},{"id":"node-66","parent":"node-7","kind":"group","options":{"name":"eyes.cute"}},{"id":"node-67","parent":"node-66","kind":"group","options":{"translate":{"x":-6,"y":-1}}},{"id":"node-68","parent":"node-67","kind":"ellipse","options":{"color":"\\u0000sprite-color:eye","stroke":1.5,"fill":true,"width":5,"height":6}},{"id":"node-69","parent":"node-67","kind":"ellipse","options":{"translate":{"y":-1.5,"z":1},"color":"\\u0000sprite-color:white","stroke":0,"fill":true,"width":2.5,"height":3}},{"id":"node-70","parent":"node-67","kind":"ellipse","options":{"translate":{"x":-1.5,"y":1.5,"z":1},"color":"\\u0000sprite-color:white","stroke":0,"fill":true,"width":1,"height":1}},{"id":"node-71","parent":"node-66","kind":"group","options":{"translate":{"x":6,"y":-1}}},{"id":"node-72","parent":"node-71","kind":"ellipse","options":{"color":"\\u0000sprite-color:eye","stroke":1.5,"fill":true,"width":5,"height":6}},{"id":"node-73","parent":"node-71","kind":"ellipse","options":{"translate":{"y":-1.5,"z":1},"color":"\\u0000sprite-color:white","stroke":0,"fill":true,"width":2.5,"height":3}},{"id":"node-74","parent":"node-71","kind":"ellipse","options":{"translate":{"x":-1.5,"y":1.5,"z":1},"color":"\\u0000sprite-color:white","stroke":0,"fill":true,"width":1,"height":1}},{"id":"node-75","parent":"node-7","kind":"group","options":{"name":"eyes.wink"}},{"id":"node-76","parent":"node-75","kind":"group","options":{"name":"eyes.wink.left"}},{"id":"node-77","parent":"node-76","kind":"shape","options":{"translate":{"x":-6,"y":-2},"color":"\\u0000sprite-color:eye","stroke":1.5,"path":[{"x":-2.5,"y":2},{"bezier":[{"x":-1,"y":-1.5},{"x":1,"y":-1.5},{"x":2.5,"y":2}]}],"closed":false}},{"id":"node-78","parent":"node-76","kind":"ellipse","options":{"translate":{"x":6,"y":-2},"color":"\\u0000sprite-color:eye","stroke":1.5,"fill":true,"width":3,"height":5}},{"id":"node-79","parent":"node-75","kind":"group","options":{"name":"eyes.wink.right"}},{"id":"node-80","parent":"node-79","kind":"shape","options":{"translate":{"x":6,"y":-2},"color":"\\u0000sprite-color:eye","stroke":1.5,"path":[{"x":-2.5,"y":2},{"bezier":[{"x":-1,"y":-1.5},{"x":1,"y":-1.5},{"x":2.5,"y":2}]}],"closed":false}},{"id":"node-81","parent":"node-79","kind":"ellipse","options":{"translate":{"x":-6,"y":-2},"color":"\\u0000sprite-color:eye","stroke":1.5,"fill":true,"width":3,"height":5}},{"id":"node-82","parent":"node-6","kind":"group","options":{"name":"mouth"}},{"id":"node-83","parent":"node-82","kind":"shape","options":{"name":"mouth.normal","translate":{"y":2},"color":"\\u0000sprite-color:mouth","stroke":1.5,"path":[{"x":-2.5,"y":0},{"x":2.5,"y":0}],"closed":false}},{"id":"node-84","parent":"node-82","kind":"shape","options":{"name":"mouth.happy","translate":{"y":2},"color":"\\u0000sprite-color:mouth","stroke":1.5,"path":[{"x":-2.5,"y":2},{"bezier":[{"x":0,"y":4},{"x":2.5,"y":2},{"x":2.5,"y":2}]}],"closed":false}},{"id":"node-85","parent":"node-82","kind":"shape","options":{"name":"mouth.sad","translate":{"y":2},"color":"\\u0000sprite-color:mouth","stroke":1.5,"path":[{"x":-2.5,"y":2},{"bezier":[{"x":0,"y":0},{"x":2.5,"y":2},{"x":2.5,"y":2}]}],"closed":false}},{"id":"node-86","parent":"node-82","kind":"shape","options":{"name":"mouth.small","translate":{"y":2},"color":"\\u0000sprite-color:mouth","stroke":1,"path":[{"x":-1.5,"y":0},{"x":1.5,"y":0}],"closed":false}},{"id":"node-87","parent":"node-82","kind":"shape","options":{"name":"mouth.worried","translate":{"y":2},"color":"\\u0000sprite-color:mouth","stroke":1,"path":[{"x":-2,"y":1},{"bezier":[{"x":-0.5,"y":0.5},{"x":0.5,"y":0.5},{"x":2,"y":1}]}],"closed":false}},{"id":"node-88","parent":"node-82","kind":"ellipse","options":{"name":"mouth.pout","translate":{"y":3},"color":"\\u0000sprite-color:mouth","stroke":1.5,"fill":true,"width":2,"height":2.5}},{"id":"node-89","parent":"node-82","kind":"ellipse","options":{"name":"mouth.surprised","translate":{"y":3},"color":"\\u0000sprite-color:mouth","stroke":1.5,"fill":true,"width":3,"height":4}},{"id":"node-90","parent":"node-82","kind":"group","options":{"name":"mouth.dead","translate":{"y":5}}},{"id":"node-91","parent":"node-90","kind":"ellipse","options":{"color":"\\u0000sprite-color:dead","stroke":1.5,"fill":true,"width":3,"height":2}},{"id":"node-92","parent":"node-90","kind":"ellipse","options":{"translate":{"y":0.5},"color":"\\u0000sprite-color:deadTongue","stroke":0,"fill":true,"width":1.5,"height":1}},{"id":"node-93","parent":"node-82","kind":"group","options":{"name":"mouth.open","translate":{"y":2}}},{"id":"node-94","parent":"node-93","kind":"ellipse","options":{"color":"\\u0000sprite-color:mouth","stroke":1.5,"fill":true,"width":6,"height":4}},{"id":"node-95","parent":"node-93","kind":"ellipse","options":{"name":"mouth.tongue","translate":{"y":1},"color":"\\u0000sprite-color:tongue","stroke":0,"fill":true,"width":3,"height":1.5}},{"id":"node-96","parent":"node-6","kind":"group","options":{"name":"blush.off"}},{"id":"node-97","parent":"node-6","kind":"group","options":{"name":"blush.medium"}},{"id":"node-98","parent":"node-97","kind":"ellipse","options":{"translate":{"x":-10,"y":4},"color":"\\u0000sprite-color:blush","stroke":1,"fill":true,"width":5,"height":2.5}},{"id":"node-99","parent":"node-97","kind":"ellipse","options":{"translate":{"x":10,"y":4},"color":"\\u0000sprite-color:blush","stroke":1,"fill":true,"width":5,"height":2.5}}],"palette":{"body":"#fff7e4","cap":"#f98284","capSpot":"#ffe6c6","eye":"#28282e","mouth":"#28282e","blush":"#feaae4","dead":"#6c5671","deadTongue":"#d9c8bf","tongue":"#f98284","sweat":"#accce4","white":"#ffffff"},"variants":{"eyes":{"normal":"node-8","happy":"node-29","sad":"node-15","angry":"node-32","surprised":"node-22","dead":"node-39","confused":"node-46","sleepy":"node-52","nervous":"node-55","shy":"node-63","wink":"node-76","cute":"node-66","wink.left":"node-76","wink.right":"node-79"},"mouth":{"normal":"node-83","happy":"node-84","sad":"node-85","angry":"node-85","surprised":"node-89","dead":"node-90","small":"node-86","worried":"node-87","pout":"node-88","open":"node-93"},"blush":{"off":"node-96","small":"node-97","medium":"node-97","big":"node-97"}},"expressions":{"angry":{"variants":{"eyes":"angry","mouth":"angry","blush":"off"},"motion":{"target":"root","translate":{"x":1,"y":0},"durationMs":150,"repeat":"none"}},"confused":{"variants":{"eyes":"confused","mouth":"normal","blush":"off"},"motion":{"target":"root","translate":{"x":0,"y":0.5},"durationMs":150,"repeat":"none"}},"cute":{"variants":{"eyes":"cute","mouth":"happy","blush":"big"},"motion":{"target":"root","translate":{"x":0,"y":-2.5},"durationMs":150,"repeat":"none"}},"dead":{"variants":{"eyes":"dead","mouth":"dead","blush":"off"}},"happy":{"variants":{"eyes":"happy","mouth":"happy","blush":"medium"},"motion":{"target":"root","translate":{"x":0,"y":-2},"durationMs":150,"repeat":"none"}},"nervous":{"variants":{"eyes":"nervous","mouth":"worried","blush":"off"},"motion":{"target":"root","translate":{"x":-0.5,"y":-1},"durationMs":150,"repeat":"none"}},"normal":{"variants":{"eyes":"normal","mouth":"normal","blush":"off"},"motion":{"target":"root","translate":{"x":0,"y":1},"durationMs":150,"repeat":"none"}},"pleading":{"variants":{"eyes":"cute","mouth":"pout","blush":"medium"},"motion":{"target":"root","translate":{"x":0,"y":-1},"durationMs":150,"repeat":"none"}},"sad":{"variants":{"eyes":"sad","mouth":"sad","blush":"off"},"motion":{"target":"root","translate":{"x":0,"y":2},"durationMs":150,"repeat":"none"}},"shy":{"variants":{"eyes":"shy","mouth":"small","blush":"small"},"motion":{"target":"root","translate":{"x":0,"y":1.5},"durationMs":150,"repeat":"none"}},"sleepy":{"variants":{"eyes":"sleepy","mouth":"small","blush":"off"},"motion":{"target":"root","translate":{"x":0,"y":2},"durationMs":150,"repeat":"none"}},"surprised":{"variants":{"eyes":"surprised","mouth":"surprised","blush":"off"},"motion":{"target":"root","translate":{"x":0,"y":-3},"durationMs":150,"repeat":"none"}},"wink":{"variants":{"mouth":"happy","blush":"small"},"variantChoices":{"eyes":["wink.left","wink.right"]},"motion":{"target":"root","translate":{"x":0,"y":-1.5},"durationMs":150,"repeat":"none"}}},"activities":{"idle":{"motion":{"target":"root","translate":{"y":0.5},"durationMs":2000,"repeat":"yoyo"},"mouseInfluence":1},"listening":{"motion":{"target":"root","rotate":{"x":-0.2},"durationMs":300,"repeat":"yoyo"},"mouseInfluence":0.3},"processing":{"mouseInfluence":0.2},"speaking":{"motion":{"target":"root","translate":{"y":0.5},"durationMs":1500,"repeat":"yoyo"},"mouseInfluence":0,"mouthCycle":[{"durationMs":100,"mouth":"open"},{"durationMs":150,"mouth":"base"},{"durationMs":100,"mouth":"open"},{"durationMs":200,"mouth":"base"}]},"thinking":{"motion":{"target":"root","rotate":{"z":0.1},"durationMs":800,"repeat":"yoyo"},"mouseInfluence":0},"error":{"motion":{"target":"root","rotate":{"x":0.9},"durationMs":600,"repeat":"none"},"mouseInfluence":0.1,"geometry":{"eyes":"dead","mouth":"dead"}}},"defaultPresentation":{"activity":"idle","expression":"sleepy"}}`)},r={document:e.parse(n),render:t};export{r as default};
@@ -1 +1 @@
1
- import{a as e}from"./error-CJ3RHG07.js";import{n as t,r as n}from"./anthropic-messages-Bnv5qjAJ.js";function r(t){throw new e(`${t} requires Node.js or a Node-compatible runtime`)}var i=3e4,a=`.anthropic-memory-store`,o=class extends e{constructor(e,t){super(e),this.name=`SessionMemoryError`,t!==void 0&&(this.cause=t)}},s=class{constructor(e,t){r(`SessionMemoryStores`)}get roots(){return r(`SessionMemoryStores`)}get readOnlyRoots(){return r(`SessionMemoryStores`)}download(e){return r(`SessionMemoryStores`)}finish(){return r(`SessionMemoryStores`)}syncAll(e){return r(`SessionMemoryStores`)}syncIfDue(){return r(`SessionMemoryStores`)}flushWrites(e){return r(`SessionMemoryStores`)}dispose(){return r(`SessionMemoryStores`)}};function c(e){return r(`setupSkills`)}function l(e,t){return r(`extractSkillArchive`)}function u(e){return r(`betaAgentToolset20260401`)}function d(e,t){return r(`resolvePath`)}var f=class extends e{constructor(e){super(`bash command timed out after ${e}ms`),this.name=`BashTimeoutError`,this.timeoutMs=e}},p=class{constructor(e,t){r(`BashSession`)}get closed(){return r(`BashSession`)}exec(e,t={}){return r(`BashSession`)}close(){r(`BashSession`)}};function m(e){return r(`betaBashTool`)}function h(e){return r(`betaReadTool`)}function g(e){return r(`betaWriteTool`)}function _(e){return r(`betaEditTool`)}function v(e){return r(`betaGlobTool`)}function y(e){return r(`betaGrepTool`)}export{p as BashSession,f as BashTimeoutError,t as DEFAULT_MEMORY_SYNC_INTERVAL_MS,a as MARKER_PATH,i as MEMORY_FLUSH_TIMEOUT_MS,n as MIN_MEMORY_SYNC_INTERVAL_MS,o as SessionMemoryError,s as SessionMemoryStores,u as betaAgentToolset20260401,m as betaBashTool,_ as betaEditTool,v as betaGlobTool,y as betaGrepTool,h as betaReadTool,g as betaWriteTool,l as extractSkillArchive,d as resolvePath,c as setupSkills};
1
+ import{a as e}from"./error-CJ3RHG07.js";import{n as t,r as n}from"./anthropic-messages-DVt3Yh9K.js";function r(t){throw new e(`${t} requires Node.js or a Node-compatible runtime`)}var i=3e4,a=`.anthropic-memory-store`,o=class extends e{constructor(e,t){super(e),this.name=`SessionMemoryError`,t!==void 0&&(this.cause=t)}},s=class{constructor(e,t){r(`SessionMemoryStores`)}get roots(){return r(`SessionMemoryStores`)}get readOnlyRoots(){return r(`SessionMemoryStores`)}download(e){return r(`SessionMemoryStores`)}finish(){return r(`SessionMemoryStores`)}syncAll(e){return r(`SessionMemoryStores`)}syncIfDue(){return r(`SessionMemoryStores`)}flushWrites(e){return r(`SessionMemoryStores`)}dispose(){return r(`SessionMemoryStores`)}};function c(e){return r(`setupSkills`)}function l(e,t){return r(`extractSkillArchive`)}function u(e){return r(`betaAgentToolset20260401`)}function d(e,t){return r(`resolvePath`)}var f=class extends e{constructor(e){super(`bash command timed out after ${e}ms`),this.name=`BashTimeoutError`,this.timeoutMs=e}},p=class{constructor(e,t){r(`BashSession`)}get closed(){return r(`BashSession`)}exec(e,t={}){return r(`BashSession`)}close(){r(`BashSession`)}};function m(e){return r(`betaBashTool`)}function h(e){return r(`betaReadTool`)}function g(e){return r(`betaWriteTool`)}function _(e){return r(`betaEditTool`)}function v(e){return r(`betaGlobTool`)}function y(e){return r(`betaGrepTool`)}export{p as BashSession,f as BashTimeoutError,t as DEFAULT_MEMORY_SYNC_INTERVAL_MS,a as MARKER_PATH,i as MEMORY_FLUSH_TIMEOUT_MS,n as MIN_MEMORY_SYNC_INTERVAL_MS,o as SessionMemoryError,s as SessionMemoryStores,u as betaAgentToolset20260401,m as betaBashTool,_ as betaEditTool,v as betaGlobTool,y as betaGrepTool,h as betaReadTool,g as betaWriteTool,l as extractSkillArchive,d as resolvePath,c as setupSkills};
@@ -1,4 +1,4 @@
1
- import{_ as e,c as t,d as n,f as r,p as i,s as a}from"./preload-helper-mbhLTglw.js";import{t as o}from"./provider-env-CcCbsTJq.js";import{a as s,i as c,n as l,t as u}from"./diagnostics-CmW2yJSB.js";import{n as d}from"./models-CcNnosqL.js";import{t as f}from"./headers-FK4rgixo.js";import{c as p,p as m,r as h}from"./transform-messages-CrQEqmfx.js";import{n as g,t as _}from"./error-body-pkrba6pf.js";import{t as v}from"./openai-prompt-cache-DXo9f3w5.js";import{n as y,r as b,t as x}from"./openai-responses-shared-DzD8B6NI.js";import{n as S}from"./runtime-core-CvcjUkf6.js";var C=new Set;function w(e){return C.add(e),()=>{C.delete(e)}}function ee(e){let t=e.filter(e=>e!==void 0);if(t.length===0)return{cleanup:()=>{}};if(t.length===1)return{signal:t[0],cleanup:()=>{}};let n=new AbortController,r=[],i=e=>{n.signal.aborted||n.abort(e.reason)};for(let e of t){if(e.aborted){i(e);break}let t=()=>i(e);e.addEventListener(`abort`,t,{once:!0}),r.push({signal:e,listener:t})}return{signal:n.signal,cleanup:()=>{for(let{signal:e,listener:t}of r)e.removeEventListener(`abort`,t)}}}var T={ftp:21,gopher:70,http:80,https:443,ws:80,wss:443};function E(e,t){let n=e.toLowerCase(),r=e.toUpperCase();return t?.[n]||t?.[r]||o(n)||o(r)||``}function D(e){if(e instanceof URL)return e;try{return new URL(e)}catch{return}}function O(e){return e.startsWith(`[`)&&e.endsWith(`]`)?e.slice(1,-1):e}function k(e){let t=e.trim().toLowerCase();if(!t)return;if(t.startsWith(`[`)){let e=t.indexOf(`]`);if(e!==-1){let n=t.slice(1,e),r=t.slice(e+1);if(r.startsWith(`:`)){let e=Number.parseInt(r.slice(1),10);return{host:n,port:Number.isNaN(e)?0:e}}return{host:n,port:0}}}if(t.includes(`:`)&&t.split(`:`).length>2)return{host:t,port:0};let n=t.lastIndexOf(`:`);if(n!==-1&&n===t.indexOf(`:`)){let e=t.slice(0,n),r=Number.parseInt(t.slice(n+1),10);if(!Number.isNaN(r))return{host:e,port:r}}return{host:t,port:0}}function A(e,t,n){let r=E(`no_proxy`,n).toLowerCase();if(!r)return!0;if(r===`*`)return!1;let i=O(e.toLowerCase());return r.split(/[,\s]/).every(e=>{let n=k(e);if(!n||n.port&&n.port!==t)return!0;let r=O(n.host);return r.startsWith(`*.`)?r=r.slice(2):(r.startsWith(`.`)||r.startsWith(`*`))&&(r=r.slice(1)),!r||!(i===r||i.endsWith(`.${r}`))})}function j(e,t){let n=D(e);if(!n?.protocol||!n.host)return``;let r=n.protocol.split(`:`,1)[0];if(!A(O(n.hostname||n.host.replace(/:\d*$/,``)),Number.parseInt(n.port,10)||T[r]||0,t))return``;let i=E(`${r}_proxy`,t)||E(`all_proxy`,t);return i&&!i.includes(`://`)&&(i=`${r}://${i}`),i}var M=`Unsupported proxy protocol. SOCKS and PAC proxy URLs are not supported; use an HTTP or HTTPS proxy URL.`;function te(e,t){let n=j(e,t);if(!n)return;let r;try{r=new URL(n)}catch(e){throw Error(`Invalid proxy URL ${JSON.stringify(n)}: ${e instanceof Error?e.message:String(e)}`)}if(r.protocol!==`http:`&&r.protocol!==`https:`)throw Error(`${M} Got ${r.protocol}`);return r}var ne=`https://chatgpt.com/backend-api`,re=`https://api.openai.com/auth`,ie=0,N=1e3,ae=6e4,oe=15e3,se=3,P=new Set([`openai`,`openai-codex`,`opencode`]),ce=1009,le=`websocket_connection_limit_reached`,ue=`previous_response_not_found`,de=new Set([`completed`,`incomplete`,`failed`,`cancelled`,`queued`,`in_progress`]);function fe(e){if(e.stopReason===`pending`)throw Error(`Codex stream ended without a stop reason`);if(e.stopReason===`error`||e.stopReason===`aborted`)throw Error(e.errorMessage||`An unknown error occurred`)}function pe(e){return/GoUsageLimitError|FreeUsageLimitError|Monthly usage limit reached|available balance|insufficient_quota|out of budget|quota exceeded|billing/i.test(e)}function me(e,t){return e===429&&pe(t)?!1:e===429||e===500||e===502||e===503||e===504||/rate.?limit|overloaded|service.?unavailable|upstream.?connect|connection.?refused/i.test(t)}function he(e){let t=e.get(`retry-after-ms`);if(t!==null){let e=Number(t);if(Number.isFinite(e))return Math.max(0,e)}let n=e.get(`retry-after`);if(!n)return;let r=Number(n);if(Number.isFinite(r))return Math.max(0,r*1e3);let i=Date.parse(n);if(!Number.isNaN(i))return Math.max(0,i-Date.now())}var ge=class extends Error{};function _e(e,t){let n=t?.maxRetryDelayMs??ae;if(n>0&&e>n)throw new ge(`Server requested ${Math.ceil(e/1e3)}s retry delay (max: ${Math.ceil(n/1e3)}s)`);return e}function ve(e,t){return new Promise((n,r)=>{if(t?.aborted){r(Error(`Request was aborted`));return}let i=setTimeout(n,e);t?.addEventListener(`abort`,()=>{clearTimeout(i),r(Error(`Request was aborted`))})})}function F(e){if(e!==void 0){if(!Number.isFinite(e)||e<0)throw Error(`Invalid timeoutMs: ${String(e)}`);return Math.floor(e)}}function ye(){return typeof process>`u`||!(process.versions?.node||process.versions?.bun)?null:process.getBuiltinModule?.(`node:zlib`)??null}function be(e){let t=ye();if(!t||typeof t.zstdCompressSync!=`function`)return null;try{let n=t.zstdCompressSync(e,{params:{[t.constants.ZSTD_c_compressionLevel]:se}});return new Uint8Array(n.buffer,n.byteOffset,n.byteLength)}catch{return null}}var I=(e,t,n)=>{let i=new s,o=r(t,e.compat?.supportsMidConvoSystemMessages);return(async()=>{let t={role:`assistant`,content:[],api:`openai-codex-responses`,provider:e.provider,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`pending`,timestamp:Date.now()};try{let r=n?.apiKey;if(!r)throw Error(`No API key for provider: ${e.provider}`);let s=rt(r),c=p(a(o.messages),e.compat?.supportsOpenAIGrammarTools??!1),d=n?.cacheRetention===`none`?void 0:n?.sessionId,m=v(d),h=Se(e,o,n,m,c),g=await n?.onPayload?.(h,e);g!==void 0&&(h=g);let _=m||S(),y=at(e.headers,n?.headers,s,r,m),b=ot(e.headers,n?.headers,s,r,_),x=JSON.stringify(h),C=F(n?.timeoutMs),w=F(n?.websocketConnectTimeoutMs),T=n?.transport||`auto`,E=!1,D=T!==`sse`&&Y(d);if(D&&Le(d),T!==`sse`&&!D){let r=!1,a=!1,o=!1;for(;;){r=!1;try{if(await tt(we(e.baseUrl),h,b,t,i,e,()=>{r=!0,E||(E=!0,i.push({type:`start`,partial:t}))},C,w,d,s,c,n),n?.signal?.aborted)throw Error(`Request was aborted`);fe(t),i.push({type:`done`,reason:t.stopReason,message:t}),i.end();return}catch(e){let i=n?.signal?.aborted,s=!r&&De(e),c=Oe(e);if(!i&&c&&!o){o=!0;continue}if(!i&&s&&!a){a=!0;continue}if(i||Ee(e)&&!s||(u(t,l(`provider_transport_failure`,e,{configuredTransport:T,...r?{}:{fallbackTransport:`sse`},eventsEmitted:r,phase:r?`after_message_stream_start`:`before_message_stream_start`,requestBytes:new TextEncoder().encode(x).byteLength})),Re(d,e),r))throw e;Le(d);break}}}let O=be(x);O&&y.set(`content-encoding`,`zstd`);let k=O??x,A,j,M=n?.maxRetries??ie;for(let t=0;t<=M;t++){if(n?.signal?.aborted)throw Error(`Request was aborted`);try{let r=C!==void 0&&C>0?AbortSignal.timeout(C):void 0,i=ee([n?.signal,r]);try{A=await(n?.fetch??globalThis.fetch)(z(e.baseUrl),{method:`POST`,headers:y,body:k,signal:i.signal})}catch(e){throw r?.aborted&&!n?.signal?.aborted?Error(`Codex SSE response headers timed out after ${C}ms`):e}finally{i.cleanup()}if(await n?.onResponse?.({status:A.status,headers:f(A.headers)},e),A.ok)break;let a=await A.text();if(t<M&&me(A.status,a)){let e=he(A.headers);await ve(e===void 0?N*2**t:_e(e,n),n?.signal);continue}let o=await nt(new Response(a,{status:A.status,statusText:A.statusText}));throw Error(o.friendlyMessage||o.message)}catch(e){if(e instanceof Error&&(e.name===`AbortError`||e.message===`Request was aborted`))throw Error(`Request was aborted`);if(j=e instanceof Error?e:Error(String(e)),t<M&&!(j instanceof ge)&&!j.message.includes(`usage limit`)){await ve(N*2**t,n?.signal);continue}throw j}}if(!A?.ok)throw j??Error(`Failed after retries`);if(!A.body)throw Error(`No response body`);if(E||(E=!0,i.push({type:`start`,partial:t})),await Te(A,t,i,e,c,n),n?.signal?.aborted)throw Error(`Request was aborted`);fe(t),i.push({type:`done`,reason:t.stopReason,message:t}),i.end()}catch(e){for(let e of t.content)delete e.partialJson,delete e.customInput;t.stopReason=n?.signal?.aborted?`aborted`:`error`,t.errorMessage=_(g(e)),i.push({type:`error`,reason:t.stopReason,error:t}),i.end()}})(),i},xe=(e,t,n)=>{let r=n?.apiKey;if(!r)throw Error(`No API key for provider: ${e.provider}`);let i={...h(e,t,n,r),toolChoice:n?.toolChoice},a=n?.reasoning?d(e,n.reasoning):void 0,o=a===`off`?void 0:a;return I(e,t,{...i,reasoningEffort:o})};function Se(n,r,o,s,c=p(a(r.messages),n.compat?.supportsOpenAIGrammarTools??!1)){let l=n.compat?.supportsStrictMode??!0,u=n.compat?.supportsOpenAIGrammarTools??!1,d=n.compat?.supportsAdditionalTools??!1,f=n.compat?.supportsToolSearch??!1,m=i(r.messages,d||f),h=x(n,r,P,{includeSystemPrompt:!1,grammarToolInputProperties:c,supportsMidConvoSystemMessages:n.compat?.supportsMidConvoSystemMessages??!1,supportsAdditionalTools:d,supportsToolSearch:f,toolOptions:{strict:null,supportsStrictMode:l,supportsOpenAIGrammarTools:u}}),g=t(r.messages),_=g?e(g):``,v={model:n.id,store:!1,stream:!0,instructions:_||`You are a helpful assistant.`,input:h,text:{verbosity:o?.textVerbosity||`low`},include:[`reasoning.encrypted_content`],prompt_cache_key:s,tool_choice:o?.toolChoice??`auto`,parallel_tool_calls:!0};if(o?.temperature!==void 0&&(v.temperature=o.temperature),o?.serviceTier!==void 0&&(v.service_tier=o.serviceTier),m.requestTools.length>0&&(v.tools=y(m.requestTools,{strict:null,supportsStrictMode:l,supportsOpenAIGrammarTools:u})),o?.reasoningEffort!==void 0){let e=o.reasoningEffort===`none`?n.thinkingLevelMap?.off===void 0?`none`:n.thinkingLevelMap.off:n.thinkingLevelMap?.[o.reasoningEffort]??o.reasoningEffort;e!==null&&(v.reasoning={effort:e,summary:o.reasoningSummary??`auto`})}else n.reasoning&&n.thinkingLevelMap?.off!==null&&(v.reasoning={effort:n.thinkingLevelMap?.off??`none`});return v}function Ce(e,t){switch(t){case`flex`:return .5;case`priority`:return e.id===`gpt-5.5`?2.5:2;default:return 1}}function L(e,t,n){let r=Ce(n,t);r!==1&&(e.cost.input*=r,e.cost.output*=r,e.cost.cacheRead*=r,e.cost.cacheWrite*=r,e.cost.total=e.cost.input+e.cost.output+e.cost.cacheRead+e.cost.cacheWrite)}function R(e,t){return e==="default"&&(t===`flex`||t===`priority`)?t:e??t}function z(e){let t=(e&&e.trim().length>0?e:ne).replace(/\/+$/,``);return t.endsWith(`/codex/responses`)?t:t.endsWith(`/codex`)?`${t}/responses`:`${t}/codex/responses`}function we(e){let t=new URL(z(e));return t.protocol===`https:`&&(t.protocol=`wss:`),t.protocol===`http:`&&(t.protocol=`ws:`),t.toString()}async function Te(e,t,n,r,i,a){await b(U(je(e,a?.signal),t,r,a?.onProviderStreamEvent),t,n,r,{serviceTier:a?.serviceTier,grammarToolInputProperties:i,resolveServiceTier:R,applyServiceTierPricing:(e,t)=>L(e,t,r)})}var B=class extends Error{code;payload;constructor(e,t){super(e),this.name=`CodexApiError`,this.code=t?.code,this.payload=t?.payload,this.cause=t?.cause}},V=class extends Error{payload;constructor(e,t){super(e),this.name=`CodexProtocolError`,this.payload=t?.payload,this.cause=t?.cause}},H=class extends Error{constructor(e){super(c(e)),this.name=`ProviderStreamEventCallbackError`,this.cause=e}};function Ee(e){return e instanceof B||e instanceof V||e instanceof H}function De(e){return e instanceof B&&e.code===le}function Oe(e){return e instanceof B&&e.code===ue}function ke(e){let t=e.error&&typeof e.error==`object`?e.error:void 0;return{code:typeof e.code==`string`?e.code:typeof t?.code==`string`?t.code:void 0,message:typeof e.message==`string`?e.message:typeof t?.message==`string`?t.message:void 0}}async function*U(e,t,n,r){for await(let i of e){try{await r?.(i,n)}catch(e){throw new H(e)}let e=typeof i.type==`string`?i.type:void 0;if(e){if(e===`error`){let{code:e,message:t}=ke(i);throw new B(`Codex error: ${t||e||JSON.stringify(i)}`,{code:e,payload:i})}if(e===`response.failed`){let e=i.response,t=e?.error?.code,n=e?.error?.message;throw new B(n||`Codex response failed`,{code:t,payload:i})}if(e===`response.done`||e===`response.completed`||e===`response.incomplete`){let e=i.response;typeof e?.end_turn==`boolean`&&(t.endTurn=e.end_turn);let n=e&&{...e,status:Ae(e.status)};yield{...i,type:`response.completed`,response:n};return}yield i}}}function Ae(e){if(typeof e==`string`)return de.has(e)?e:void 0}async function*je(e,t){if(!e.body)return;let n=e.body.getReader(),r=new TextDecoder,i=``,a=()=>{n.cancel().catch(()=>{})};t?.addEventListener(`abort`,a,{once:!0});try{for(;;){if(t?.aborted)throw Error(`Request was aborted`);let{done:e,value:a}=await n.read();if(t?.aborted)throw Error(`Request was aborted`);i+=e?r.decode():r.decode(a,{stream:!0}),e&&i.trim()&&(i+=`
1
+ import{_ as e,c as t,d as n,f as r,p as i,s as a}from"./preload-helper-mbhLTglw.js";import{t as o}from"./provider-env-CcCbsTJq.js";import{a as s,i as c,n as l,t as u}from"./diagnostics-CmW2yJSB.js";import{n as d}from"./models-CcNnosqL.js";import{t as f}from"./headers-FK4rgixo.js";import{c as p,p as m,r as h}from"./transform-messages-CrQEqmfx.js";import{n as g,t as _}from"./error-body-pkrba6pf.js";import{t as v}from"./openai-prompt-cache-DXo9f3w5.js";import{n as y,r as b,t as x}from"./openai-responses-shared-DzD8B6NI.js";import{n as S}from"./runtime-core-GKyHklNK.js";var C=new Set;function w(e){return C.add(e),()=>{C.delete(e)}}function ee(e){let t=e.filter(e=>e!==void 0);if(t.length===0)return{cleanup:()=>{}};if(t.length===1)return{signal:t[0],cleanup:()=>{}};let n=new AbortController,r=[],i=e=>{n.signal.aborted||n.abort(e.reason)};for(let e of t){if(e.aborted){i(e);break}let t=()=>i(e);e.addEventListener(`abort`,t,{once:!0}),r.push({signal:e,listener:t})}return{signal:n.signal,cleanup:()=>{for(let{signal:e,listener:t}of r)e.removeEventListener(`abort`,t)}}}var T={ftp:21,gopher:70,http:80,https:443,ws:80,wss:443};function E(e,t){let n=e.toLowerCase(),r=e.toUpperCase();return t?.[n]||t?.[r]||o(n)||o(r)||``}function D(e){if(e instanceof URL)return e;try{return new URL(e)}catch{return}}function O(e){return e.startsWith(`[`)&&e.endsWith(`]`)?e.slice(1,-1):e}function k(e){let t=e.trim().toLowerCase();if(!t)return;if(t.startsWith(`[`)){let e=t.indexOf(`]`);if(e!==-1){let n=t.slice(1,e),r=t.slice(e+1);if(r.startsWith(`:`)){let e=Number.parseInt(r.slice(1),10);return{host:n,port:Number.isNaN(e)?0:e}}return{host:n,port:0}}}if(t.includes(`:`)&&t.split(`:`).length>2)return{host:t,port:0};let n=t.lastIndexOf(`:`);if(n!==-1&&n===t.indexOf(`:`)){let e=t.slice(0,n),r=Number.parseInt(t.slice(n+1),10);if(!Number.isNaN(r))return{host:e,port:r}}return{host:t,port:0}}function A(e,t,n){let r=E(`no_proxy`,n).toLowerCase();if(!r)return!0;if(r===`*`)return!1;let i=O(e.toLowerCase());return r.split(/[,\s]/).every(e=>{let n=k(e);if(!n||n.port&&n.port!==t)return!0;let r=O(n.host);return r.startsWith(`*.`)?r=r.slice(2):(r.startsWith(`.`)||r.startsWith(`*`))&&(r=r.slice(1)),!r||!(i===r||i.endsWith(`.${r}`))})}function j(e,t){let n=D(e);if(!n?.protocol||!n.host)return``;let r=n.protocol.split(`:`,1)[0];if(!A(O(n.hostname||n.host.replace(/:\d*$/,``)),Number.parseInt(n.port,10)||T[r]||0,t))return``;let i=E(`${r}_proxy`,t)||E(`all_proxy`,t);return i&&!i.includes(`://`)&&(i=`${r}://${i}`),i}var M=`Unsupported proxy protocol. SOCKS and PAC proxy URLs are not supported; use an HTTP or HTTPS proxy URL.`;function te(e,t){let n=j(e,t);if(!n)return;let r;try{r=new URL(n)}catch(e){throw Error(`Invalid proxy URL ${JSON.stringify(n)}: ${e instanceof Error?e.message:String(e)}`)}if(r.protocol!==`http:`&&r.protocol!==`https:`)throw Error(`${M} Got ${r.protocol}`);return r}var ne=`https://chatgpt.com/backend-api`,re=`https://api.openai.com/auth`,ie=0,N=1e3,ae=6e4,oe=15e3,se=3,P=new Set([`openai`,`openai-codex`,`opencode`]),ce=1009,le=`websocket_connection_limit_reached`,ue=`previous_response_not_found`,de=new Set([`completed`,`incomplete`,`failed`,`cancelled`,`queued`,`in_progress`]);function fe(e){if(e.stopReason===`pending`)throw Error(`Codex stream ended without a stop reason`);if(e.stopReason===`error`||e.stopReason===`aborted`)throw Error(e.errorMessage||`An unknown error occurred`)}function pe(e){return/GoUsageLimitError|FreeUsageLimitError|Monthly usage limit reached|available balance|insufficient_quota|out of budget|quota exceeded|billing/i.test(e)}function me(e,t){return e===429&&pe(t)?!1:e===429||e===500||e===502||e===503||e===504||/rate.?limit|overloaded|service.?unavailable|upstream.?connect|connection.?refused/i.test(t)}function he(e){let t=e.get(`retry-after-ms`);if(t!==null){let e=Number(t);if(Number.isFinite(e))return Math.max(0,e)}let n=e.get(`retry-after`);if(!n)return;let r=Number(n);if(Number.isFinite(r))return Math.max(0,r*1e3);let i=Date.parse(n);if(!Number.isNaN(i))return Math.max(0,i-Date.now())}var ge=class extends Error{};function _e(e,t){let n=t?.maxRetryDelayMs??ae;if(n>0&&e>n)throw new ge(`Server requested ${Math.ceil(e/1e3)}s retry delay (max: ${Math.ceil(n/1e3)}s)`);return e}function ve(e,t){return new Promise((n,r)=>{if(t?.aborted){r(Error(`Request was aborted`));return}let i=setTimeout(n,e);t?.addEventListener(`abort`,()=>{clearTimeout(i),r(Error(`Request was aborted`))})})}function F(e){if(e!==void 0){if(!Number.isFinite(e)||e<0)throw Error(`Invalid timeoutMs: ${String(e)}`);return Math.floor(e)}}function ye(){return typeof process>`u`||!(process.versions?.node||process.versions?.bun)?null:process.getBuiltinModule?.(`node:zlib`)??null}function be(e){let t=ye();if(!t||typeof t.zstdCompressSync!=`function`)return null;try{let n=t.zstdCompressSync(e,{params:{[t.constants.ZSTD_c_compressionLevel]:se}});return new Uint8Array(n.buffer,n.byteOffset,n.byteLength)}catch{return null}}var I=(e,t,n)=>{let i=new s,o=r(t,e.compat?.supportsMidConvoSystemMessages);return(async()=>{let t={role:`assistant`,content:[],api:`openai-codex-responses`,provider:e.provider,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`pending`,timestamp:Date.now()};try{let r=n?.apiKey;if(!r)throw Error(`No API key for provider: ${e.provider}`);let s=rt(r),c=p(a(o.messages),e.compat?.supportsOpenAIGrammarTools??!1),d=n?.cacheRetention===`none`?void 0:n?.sessionId,m=v(d),h=Se(e,o,n,m,c),g=await n?.onPayload?.(h,e);g!==void 0&&(h=g);let _=m||S(),y=at(e.headers,n?.headers,s,r,m),b=ot(e.headers,n?.headers,s,r,_),x=JSON.stringify(h),C=F(n?.timeoutMs),w=F(n?.websocketConnectTimeoutMs),T=n?.transport||`auto`,E=!1,D=T!==`sse`&&Y(d);if(D&&Le(d),T!==`sse`&&!D){let r=!1,a=!1,o=!1;for(;;){r=!1;try{if(await tt(we(e.baseUrl),h,b,t,i,e,()=>{r=!0,E||(E=!0,i.push({type:`start`,partial:t}))},C,w,d,s,c,n),n?.signal?.aborted)throw Error(`Request was aborted`);fe(t),i.push({type:`done`,reason:t.stopReason,message:t}),i.end();return}catch(e){let i=n?.signal?.aborted,s=!r&&De(e),c=Oe(e);if(!i&&c&&!o){o=!0;continue}if(!i&&s&&!a){a=!0;continue}if(i||Ee(e)&&!s||(u(t,l(`provider_transport_failure`,e,{configuredTransport:T,...r?{}:{fallbackTransport:`sse`},eventsEmitted:r,phase:r?`after_message_stream_start`:`before_message_stream_start`,requestBytes:new TextEncoder().encode(x).byteLength})),Re(d,e),r))throw e;Le(d);break}}}let O=be(x);O&&y.set(`content-encoding`,`zstd`);let k=O??x,A,j,M=n?.maxRetries??ie;for(let t=0;t<=M;t++){if(n?.signal?.aborted)throw Error(`Request was aborted`);try{let r=C!==void 0&&C>0?AbortSignal.timeout(C):void 0,i=ee([n?.signal,r]);try{A=await(n?.fetch??globalThis.fetch)(z(e.baseUrl),{method:`POST`,headers:y,body:k,signal:i.signal})}catch(e){throw r?.aborted&&!n?.signal?.aborted?Error(`Codex SSE response headers timed out after ${C}ms`):e}finally{i.cleanup()}if(await n?.onResponse?.({status:A.status,headers:f(A.headers)},e),A.ok)break;let a=await A.text();if(t<M&&me(A.status,a)){let e=he(A.headers);await ve(e===void 0?N*2**t:_e(e,n),n?.signal);continue}let o=await nt(new Response(a,{status:A.status,statusText:A.statusText}));throw Error(o.friendlyMessage||o.message)}catch(e){if(e instanceof Error&&(e.name===`AbortError`||e.message===`Request was aborted`))throw Error(`Request was aborted`);if(j=e instanceof Error?e:Error(String(e)),t<M&&!(j instanceof ge)&&!j.message.includes(`usage limit`)){await ve(N*2**t,n?.signal);continue}throw j}}if(!A?.ok)throw j??Error(`Failed after retries`);if(!A.body)throw Error(`No response body`);if(E||(E=!0,i.push({type:`start`,partial:t})),await Te(A,t,i,e,c,n),n?.signal?.aborted)throw Error(`Request was aborted`);fe(t),i.push({type:`done`,reason:t.stopReason,message:t}),i.end()}catch(e){for(let e of t.content)delete e.partialJson,delete e.customInput;t.stopReason=n?.signal?.aborted?`aborted`:`error`,t.errorMessage=_(g(e)),i.push({type:`error`,reason:t.stopReason,error:t}),i.end()}})(),i},xe=(e,t,n)=>{let r=n?.apiKey;if(!r)throw Error(`No API key for provider: ${e.provider}`);let i={...h(e,t,n,r),toolChoice:n?.toolChoice},a=n?.reasoning?d(e,n.reasoning):void 0,o=a===`off`?void 0:a;return I(e,t,{...i,reasoningEffort:o})};function Se(n,r,o,s,c=p(a(r.messages),n.compat?.supportsOpenAIGrammarTools??!1)){let l=n.compat?.supportsStrictMode??!0,u=n.compat?.supportsOpenAIGrammarTools??!1,d=n.compat?.supportsAdditionalTools??!1,f=n.compat?.supportsToolSearch??!1,m=i(r.messages,d||f),h=x(n,r,P,{includeSystemPrompt:!1,grammarToolInputProperties:c,supportsMidConvoSystemMessages:n.compat?.supportsMidConvoSystemMessages??!1,supportsAdditionalTools:d,supportsToolSearch:f,toolOptions:{strict:null,supportsStrictMode:l,supportsOpenAIGrammarTools:u}}),g=t(r.messages),_=g?e(g):``,v={model:n.id,store:!1,stream:!0,instructions:_||`You are a helpful assistant.`,input:h,text:{verbosity:o?.textVerbosity||`low`},include:[`reasoning.encrypted_content`],prompt_cache_key:s,tool_choice:o?.toolChoice??`auto`,parallel_tool_calls:!0};if(o?.temperature!==void 0&&(v.temperature=o.temperature),o?.serviceTier!==void 0&&(v.service_tier=o.serviceTier),m.requestTools.length>0&&(v.tools=y(m.requestTools,{strict:null,supportsStrictMode:l,supportsOpenAIGrammarTools:u})),o?.reasoningEffort!==void 0){let e=o.reasoningEffort===`none`?n.thinkingLevelMap?.off===void 0?`none`:n.thinkingLevelMap.off:n.thinkingLevelMap?.[o.reasoningEffort]??o.reasoningEffort;e!==null&&(v.reasoning={effort:e,summary:o.reasoningSummary??`auto`})}else n.reasoning&&n.thinkingLevelMap?.off!==null&&(v.reasoning={effort:n.thinkingLevelMap?.off??`none`});return v}function Ce(e,t){switch(t){case`flex`:return .5;case`priority`:return e.id===`gpt-5.5`?2.5:2;default:return 1}}function L(e,t,n){let r=Ce(n,t);r!==1&&(e.cost.input*=r,e.cost.output*=r,e.cost.cacheRead*=r,e.cost.cacheWrite*=r,e.cost.total=e.cost.input+e.cost.output+e.cost.cacheRead+e.cost.cacheWrite)}function R(e,t){return e==="default"&&(t===`flex`||t===`priority`)?t:e??t}function z(e){let t=(e&&e.trim().length>0?e:ne).replace(/\/+$/,``);return t.endsWith(`/codex/responses`)?t:t.endsWith(`/codex`)?`${t}/responses`:`${t}/codex/responses`}function we(e){let t=new URL(z(e));return t.protocol===`https:`&&(t.protocol=`wss:`),t.protocol===`http:`&&(t.protocol=`ws:`),t.toString()}async function Te(e,t,n,r,i,a){await b(U(je(e,a?.signal),t,r,a?.onProviderStreamEvent),t,n,r,{serviceTier:a?.serviceTier,grammarToolInputProperties:i,resolveServiceTier:R,applyServiceTierPricing:(e,t)=>L(e,t,r)})}var B=class extends Error{code;payload;constructor(e,t){super(e),this.name=`CodexApiError`,this.code=t?.code,this.payload=t?.payload,this.cause=t?.cause}},V=class extends Error{payload;constructor(e,t){super(e),this.name=`CodexProtocolError`,this.payload=t?.payload,this.cause=t?.cause}},H=class extends Error{constructor(e){super(c(e)),this.name=`ProviderStreamEventCallbackError`,this.cause=e}};function Ee(e){return e instanceof B||e instanceof V||e instanceof H}function De(e){return e instanceof B&&e.code===le}function Oe(e){return e instanceof B&&e.code===ue}function ke(e){let t=e.error&&typeof e.error==`object`?e.error:void 0;return{code:typeof e.code==`string`?e.code:typeof t?.code==`string`?t.code:void 0,message:typeof e.message==`string`?e.message:typeof t?.message==`string`?t.message:void 0}}async function*U(e,t,n,r){for await(let i of e){try{await r?.(i,n)}catch(e){throw new H(e)}let e=typeof i.type==`string`?i.type:void 0;if(e){if(e===`error`){let{code:e,message:t}=ke(i);throw new B(`Codex error: ${t||e||JSON.stringify(i)}`,{code:e,payload:i})}if(e===`response.failed`){let e=i.response,t=e?.error?.code,n=e?.error?.message;throw new B(n||`Codex response failed`,{code:t,payload:i})}if(e===`response.done`||e===`response.completed`||e===`response.incomplete`){let e=i.response;typeof e?.end_turn==`boolean`&&(t.endTurn=e.end_turn);let n=e&&{...e,status:Ae(e.status)};yield{...i,type:`response.completed`,response:n};return}yield i}}}function Ae(e){if(typeof e==`string`)return de.has(e)?e:void 0}async function*je(e,t){if(!e.body)return;let n=e.body.getReader(),r=new TextDecoder,i=``,a=()=>{n.cancel().catch(()=>{})};t?.addEventListener(`abort`,a,{once:!0});try{for(;;){if(t?.aborted)throw Error(`Request was aborted`);let{done:e,value:a}=await n.read();if(t?.aborted)throw Error(`Request was aborted`);i+=e?r.decode():r.decode(a,{stream:!0}),e&&i.trim()&&(i+=`
2
2
 
3
3
  `);let o=i.indexOf(`
4
4
 
@@ -0,0 +1,3 @@
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{$i as t,Bi as n,Jn as r,fa as i,na as a,oa as o,ra as s,sa as c,ut as l}from"./Effect-CxgtVs4O.js";import{$r as u,Ci as d,Cr as f,Di as p,Fi as m,Fr as h,Hr as ee,Ii as g,Ir as te,Mr as _,Nr as ne,Pi as v,Sr as y,Tr as b,Xr as re,ar as ie,ci as ae,cr as x,di as oe,dr as S,hi as se,hr as C,i as w,ji as T,mr as E,or as D,wr as O,xr as k}from"./extension-hook-0UB2lkEs.js";import{$ as ce,J as le,K as ue,Q as de,X as fe,Y as pe,Z as A,_ as j,a as me,c as M,et as he,g as ge,h as _e,i as ve,l as N,m as ye,nt as be,o as xe,p as Se,q as Ce,r as we,s as Te,tt as Ee,v as P}from"./index-DRDNbHYF.js";import"./extensions-CAsZR9ky.js";function F(e){return b({nextSequence:S.check(ae(0)),omitted:S.check(oe(0)),events:D(b({id:O,sequence:S,at:S,commandId:k(O),event:e}))})}new TextEncoder;var I=te(e=>ge.safeParse(e).success,{representation:{id:`@fungi.computer/whistle/catalog-step/v1`,payload:null}});l(()=>ie());var L=O.pipe(h(p(1)),h(d(4e3)),h(T(/\S/u,{message:`Goal objective is blank`})));O.pipe(h(p(1)),h(d(1e3)),h(T(/\S/u)));var De=O.pipe(h(p(1)),h(d(256))),R=b({revision:O,objective:L,state:C([`active`,`paused`,`complete`,`blocked`]),stopReason:k(O)}),Oe=_([b({action:E(`set`),objective:L,requestId:De,expectedRevision:m(k(O)),confirmed:m(x)}),b({action:C([`pause`,`resume`,`replace`,`clear`])}),b({})]),ke=b({goal:k(R),history:F(R)}),Ae={id:w.make(`botanical-session-goal`),commands:{goal:{scope:`session`,input:Oe,output:I},pause:{scope:`session`,input:b({}),output:R},resume:{scope:`session`,input:b({}),output:R},clear:{scope:`session`,input:b({}),output:b({})},set:{scope:`session`,input:b({objective:L,expectedRevision:k(O),requestId:De}),output:b({goal:R,accepted:b({status:E(`accepted`),commandId:O})})}},projection:{schema:ke}},z=e=>e.state===`blocked`?`error`:e.state===`complete`?`settled`:e.state===`paused`?`muted`:`running`,je=j(Ae,{correlatedPrompts:`note`,contribute:e=>{if(e.status!==`running`||e.value===null)return{chips:[],panel:[],timeline:{cells:[],omitted:0},waiting:null};let{goal:t,history:n}=e.value,r=[];if(t!==null){let e={id:`goal`,title:t.objective,detail:`Goal · ${t.state}`,tone:z(t)};r.push(t.state===`active`||t.state===`paused`?{...e,actions:[{id:`goal`,label:t.state===`active`?`Pause goal`:`Resume goal`,input:{action:t.state===`active`?`pause`:`resume`}}]}:e),t.stopReason!==null&&r.push({id:`reason`,title:t.stopReason.slice(0,4096),tone:`attention`})}return{chips:t===null?[]:[{id:`goal`,order:1,row:{id:`goal`,title:`Goal ${t.state}${t.stopReason?.startsWith(`Stalled:`)?`: stalled`:``}`,tone:z(t)}}],panel:r,timeline:{omitted:n.omitted,cells:n.events.map(({event:e,...t})=>({...t,rows:[{id:`state`,title:`Goal ${e.state}`,tone:z(e)},{id:`objective`,title:e.objective},...e.stopReason===null?[]:[{id:`reason`,title:e.stopReason.slice(0,4096),tone:z(e)}]]}))},waiting:null}}}),B=O.pipe(h(p(1)),h(d(262144))),V=O.pipe(h(p(1)),h(d(200))),Me=b({expression:O.pipe(h(p(1)),h(d(256))),timeZone:O.pipe(h(p(1)),h(d(128)))}),H=b({loopId:O,origin:C([`human`,`model`]),expiresAt:k(S),prompt:B,mode:C([`self_paced`,`fixed_interval`]),cron:k(Me),state:C([`active`,`paused`,`finished`,`failed`,`cancelled`]),commandId:O,reason:k(O),nextDueAt:k(S),lastError:k(O)}),Ne=b({loop:H,accepted:b({status:E(`accepted`),commandId:O})}),Pe=_([b({action:E(`start`),text:B,requestId:V}),b({action:C([`status`,`pause`,`resume`,`stop`,`new`])}),b({})]),Fe=b({loop:k(H),history:F(H)}),Ie={id:w.make(`botanical-session-loop`),commands:{loop:{scope:`session`,input:Pe,output:I},startSelfPaced:{scope:`session`,input:b({prompt:B,requestId:V}),output:Ne},startFixedInterval:{scope:`session`,input:b({prompt:B,requestId:V,...Me.fields}),output:Ne},pause:{scope:`session`,input:b({}),output:H},resume:{scope:`session`,input:b({}),output:H},stop:{scope:`session`,input:b({}),output:H}},projection:{schema:Fe}},U=e=>e.state===`failed`?`error`:e.state===`active`?`running`:e.state===`paused`?`muted`:`settled`,Le=e=>new Intl.DateTimeFormat(void 0,{year:`numeric`,month:`short`,day:`numeric`,hour:`numeric`,minute:`2-digit`,timeZoneName:`short`}).format(e),Re=j(Ie,{contribute:e=>{if(e.status!==`running`||e.value===null)return{chips:[],panel:[],timeline:{cells:[],omitted:0},waiting:null};let{loop:t,history:n}=e.value,r=t!==null&&t.state===`active`&&t.nextDueAt!==null;return{chips:t===null||t.state!==`active`&&t.state!==`paused`?[]:[{id:`loop`,order:2,row:{id:`loop`,title:`Loop ${t.mode===`self_paced`?`self-paced`:`fixed`}${r?` (waiting)`:``}`,tone:U(t)}}],panel:t===null?[]:[{id:`loop`,title:`Loop · ${t.state} · ${t.mode===`self_paced`?`self-paced`:`${t.cron?.expression??`fixed`} ${t.cron?.timeZone??``}`}${t.nextDueAt===null?``:` · Next ${Le(t.nextDueAt)}`}`,detail:t.prompt.slice(0,1024),tone:U(t)},...t.lastError===null?[]:[{id:`error`,title:t.lastError.slice(0,4096),tone:`error`}]],timeline:{omitted:n.omitted,cells:n.events.map(({event:e,...t})=>({...t,rows:[{id:`loop`,title:`Loop ${e.state}`,detail:(e.lastError??e.reason??e.prompt).slice(0,1024),tone:U(e)}]}))},waiting:r?{summary:`Waiting until ${Le(t.nextDueAt)}`,cancel:{id:`loop`,label:`stop loop`,input:{action:`stop`}}}:null}}}),W=b({explanation:g(O.pipe(h(d(2e3)))),steps:D(b({step:O.pipe(h(p(1)),h(d(500))),status:C([`pending`,`in_progress`,`completed`])})).pipe(h(d(50)))});W.pipe(h(v(e=>e.steps.filter(e=>e.status===`in_progress`).length<=1||`At most one plan step may be in progress`)));function ze(e){return e.steps.some(e=>e.status!==`completed`)}var Be=b({plan:W,history:F(W)}),Ve=_([b({action:E(`clear`)}),b({})]),He={id:w.make(`botanical-session-plan`),commands:{plan:{scope:`session`,input:Ve,output:I}},projection:{schema:Be}},Ue=e=>{let t=e.steps.findIndex(e=>e.status===`in_progress`),n=e.steps.filter(e=>e.status===`completed`).length;return{title:(t<0?e.steps.find(e=>e.status===`pending`):e.steps[t])?.step??`Plan complete`,detail:`${String(t<0?n:t+1)}/${String(e.steps.length)}`}},We=e=>e.steps.map((e,t)=>({id:String(t),title:e.step,tone:e.status===`completed`?`settled`:e.status===`in_progress`?`running`:`muted`})),Ge=j(He,{contribute:e=>({chips:[],panel:e.status!==`running`||e.value===null||!ze(e.value.plan)?[]:[{id:`plan`,...Ue(e.value.plan),actions:[{id:`plan`,label:`Clear plan`,input:{action:`clear`}}],inspection:{commandId:`plan`,title:`Plan`,rows:We(e.value.plan)}}],timeline:{cells:[],omitted:0},waiting:null})}),G=e=>O.check(p(1),d(e),T(/\S/u)),Ke=b({id:G(32).check(T(/^[a-z][a-z0-9]*(?:[-_.][a-z0-9]+)*$/u)),header:G(12),question:G(1e3),options:D(b({label:G(60),description:G(300)})).check(p(2),d(4),v(e=>new Set(e.map(e=>e.label)).size===e.length||`Option labels must be unique`,{representation:{id:`botanical/ask/unique-option-labels`,payload:null}})),multiple:g(x)}),qe=D(Ke).check(p(1),d(4),v(e=>new Set(e.map(e=>e.id)).size===e.length||`Question ids must be unique`,{representation:{id:`botanical/ask/unique-question-ids`,payload:null}})),Je=b({askId:O,questions:qe,status:C([`live`,`parked`]),createdAt:y,expiresAt:k(y)}),Ye=b({asks:D(Je).check(d(4))}),K=G(256),q=f(Ke.fields.id,b({selected:D(G(60)).check(d(4)),text:g(O.check(d(4e3)))})),J=b({askId:G(256),requestId:K,answers:q}),Xe=b({askId:G(256),requestId:K,note:g(O.check(d(4e3)))}),Ze=C([`answered`,`declined`,`withdrawn`,`expired`,`cancelled`,`undeliverable`]),Qe=_([b({result:E(`accepted`),via:C([`in_turn`,`follow_up`])}),b({result:E(`closed`),status:Ze}),b({result:E(`not_found`)})]),Y={askId:J.fields.askId,requestId:K,index:y.check(se(),u({minimum:0,maximum:3})),answers:q},$e=_([b({stage:E(`multiple`),...Y,selection:O.check(d(1e3))}),b({stage:E(`selection`),...Y,selection:O.check(d(1e3))}),b({stage:E(`text`),...Y,selected:q.value.fields.selected,text:O.check(d(4e3))}),b({askId:J.fields.askId}),b({})]),et={id:w.make(`botanical-session-question`),commands:{answerFlow:{scope:`session`,input:$e,output:I},answer:{scope:`session`,input:J,output:Qe},decline:{scope:`session`,input:Xe,output:Qe},list:{scope:`session`,input:b({}),output:Ye}},projection:{schema:Ye}},tt=j(et,{contribute:e=>({chips:[],panel:e.status!==`running`||e.value===null?[]:e.value.asks.map(e=>{let t=e.questions[0];return{id:e.askId,title:`${t?.question??`Question`}${e.questions.length>1?` (+${String(e.questions.length-1)} more)`:``}`,detail:t?.options.map(e=>e.label).join(` · `)??``,tone:`attention`,actions:[{id:`answerFlow`,label:`Answer`,input:{askId:e.askId}}]}}),timeline:{cells:[],omitted:0},waiting:null})}),X=O.check(p(1),d(256)),nt=C([`working`,`waiting`,`idle`,`failed`,`unavailable`]),rt=b({agentId:X,name:X,sessionId:k(X),state:nt,attention:g(O.check(d(200)))}),it=b({agents:D(rt).check(d(16)),more:S.check(oe(0))}),at={id:w.make(`botanical-session-subagents`),commands:{},projection:{schema:it}},ot={working:{label:`working`,tone:`running`,status:`info`},waiting:{label:`waiting on you`,tone:`attention`,status:`warning`},idle:{label:`idle`,tone:`settled`,status:`success`},failed:{label:`failed`,tone:`error`,status:`error`},unavailable:{label:`unavailable`,tone:`muted`,status:`neutral`}};function st(e){let t=ot[e.state],n={id:e.agentId,title:`${e.name} · ${t.label}`,tone:t.tone,status:{label:t.label,tone:t.status}},r=e.attention===void 0?n:{...n,detail:e.attention};return e.sessionId===null?{...r,detail:e.attention??`not messaged yet`}:{...r,open:{params:[{key:`agent`,value:e.agentId},{key:`session`,value:e.sessionId}]}}}var ct=j(at,{contribute:e=>({chips:[],panel:e.status!==`running`||e.value===null?[]:[...e.value.agents.map(st),...e.value.more===0?[]:[{id:`more`,title:`${String(e.value.more)} more sub-agent${e.value.more===1?``:`s`}`,tone:`muted`}]],timeline:{cells:[],omitted:0},waiting:null})});function lt(e,t){if(e===null||!URL.canParse(t))return!1;let n=new URL(t);return n.protocol!==`https:`||n.hash!==`#team-billing`?!1:(e.openTeamBilling().catch(t=>(console.error(`Chat Billing navigation failed`,t),e.showToast({message:`Billing could not be opened. Please try again.`,tone:`error`}))),!0)}var Z=e(be(),1),Q=Ee();function ut(e){if(e.name!==`execute`||e.status!==`completed`)return;let t=e.result?.content;if(t?.length!==1||t[0]?.type!==`text`)return;let n=ee(re(ne))(t[0].text);if(r(n))return;let i=_e.safeParse(n.value);return i.success?i.data.file:void 0}function dt({item:e,ui:t}){let n=ut(e),[r,i]=(0,Z.useState)(!1),[a,o]=(0,Z.useState)(!1);if(!n)return null;let s=async()=>{i(!0),o(!1);try{await t.openNavigation(n)}catch(e){console.error(`Chat file navigation failed`,e),o(!0)}finally{i(!1)}};return(0,Q.jsxs)(`div`,{className:`px-3 py-2`,children:[(0,Q.jsx)(P,{variant:`ghost`,size:`sm`,disabled:r,onClick:()=>void s(),type:`button`,children:r?`Opening file…`:`Open ${n.path} in Inkcap`}),a?(0,Q.jsx)(`p`,{role:`alert`,children:`The file could not be opened. Try again.`}):null]})}var ft=o({kind:t(`generated`),file:o({computerId:c().min(1),path:c().min(1)}),format:n([`png`,`jpeg`,`gif`,`webp`,`mp4`]),width:a(),height:a(),bytes:a(),costMilliunits:a(),receipt:c()});function pt(e){if(e.name!==`execute`||e.status!==`completed`)return;let t=e.result?.content??[],n=t.at(0);if(n?.type!==`text`||t.slice(1).some(e=>e.type!==`image`))return;let i=ee(re(ne))(n.text);if(r(i))return;let a=ft.safeParse(i.value);return a.success?a.data:void 0}function mt({item:e,ui:t}){let n=pt(e),[r,i]=(0,Z.useState)(!1),[a,o]=(0,Z.useState)(!1);if(!n)return null;let s=async()=>{i(!0),o(!1);try{await t.openNavigation(n.file)}catch(e){console.error(`Chat image navigation failed`,e),o(!0)}finally{i(!1)}};return(0,Q.jsxs)(`div`,{className:`px-3 py-2`,children:[(0,Q.jsx)(P,{variant:`ghost`,size:`sm`,disabled:r,onClick:()=>void s(),type:`button`,children:r?`Opening file…`:`Open ${n.file.path} in Inkcap`}),a?(0,Q.jsx)(`p`,{role:`alert`,children:`The file could not be opened. Try again.`}):null]})}var ht=(0,Z.forwardRef)(function({heading:e,eyebrow:t,cover:n,action:r,children:i,className:a,...o},s){return(0,Q.jsxs)(Ce,{...o,className:A(`caps-game-share`,a),ref:s,children:[n?(0,Q.jsx)(`div`,{className:`caps-game-share-cover`,children:n}):null,(0,Q.jsxs)(fe,{children:[t,(0,Q.jsx)(`h3`,{className:`caps-game-share-heading`,children:e})]}),(0,Q.jsx)(le,{className:`gap-sm`,children:i}),(0,Q.jsx)(pe,{children:(0,Q.jsx)(P,{asChild:!0,variant:`primary`,className:`caps-game-share-action`,children:r})})]})});function gt(e){let t=0;return e.map(e=>{let n={...e,offset:t};return t+=e.text.length,n})}function _t({value:e,label:t,fieldLabel:n,displayValue:r,layout:i,title:a,tokens:o,className:s,...c}){let l=(0,Z.useId)(),[u,d]=(0,Z.useState)({kind:`ready`}),f=o?o.map(e=>e.text).join(``):e,p=async()=>{d(await navigator.clipboard.writeText(f).then(()=>({kind:`copied`}),e=>({kind:`failed`,cause:e})))};if(n!==void 0)return(0,Q.jsxs)(`div`,{...c,className:A(`caps-copy-field-input`,s),children:[(0,Q.jsx)(Te,{htmlFor:l,children:n}),(0,Q.jsxs)(xe,{children:[(0,Q.jsx)(me,{className:`caps-copy-field-control`,"aria-label":n,id:l,onFocus:e=>{e.currentTarget.select()},readOnly:!0,value:r??f}),(0,Q.jsx)(P,{onClick:()=>void p(),size:`sm`,variant:`outline`,children:u.kind===`copied`?`Copied`:t??`Copy`})]}),u.kind===`failed`?(0,Q.jsx)(`span`,{role:`status`,children:`Could not copy. Select the text to copy it.`}):null]});let m=u.kind===`copied`?`Copied`:u.kind===`failed`?`Copy failed`:t??`Copy`;return i===`block`?(0,Q.jsxs)(`figure`,{...c,className:A(`caps-copy-field-block`,s),"data-state":u.kind,children:[(0,Q.jsxs)(`figcaption`,{className:`caps-copy-field-header`,children:[(0,Q.jsx)(`span`,{className:`caps-copy-field-title`,children:a}),(0,Q.jsxs)(P,{onClick:()=>void p(),size:`sm`,variant:u.kind===`copied`?`ghost`:`outline`,children:[u.kind===`copied`?(0,Q.jsx)(N,{"aria-hidden":`true`,size:15}):(0,Q.jsx)(M,{"aria-hidden":`true`,size:15}),m]}),(0,Q.jsx)(ue,{role:`status`,children:u.kind===`copied`?`Copied to the clipboard`:u.kind===`failed`?`Could not copy. Select the code to copy it.`:``})]}),(0,Q.jsx)(`pre`,{className:`caps-copy-field-code`,tabIndex:0,children:(0,Q.jsx)(`code`,{children:o?gt(o).map(e=>(0,Q.jsx)(`span`,{className:`caps-copy-field-token`,"data-kind":e.kind,children:e.text},e.offset)):f})})]}):(0,Q.jsxs)(`div`,{...c,className:A(`caps-copy-field`,s),children:[(0,Q.jsx)(`code`,{className:`caps-copy-field-value`,children:f}),(0,Q.jsxs)(P,{"aria-label":`${m}: ${f}`,onClick:()=>void p(),size:`sm`,variant:`outline`,children:[u.kind===`copied`?(0,Q.jsx)(N,{size:15}):(0,Q.jsx)(M,{size:15}),m]})]})}var vt=s({game:s({title:c().min(1),summary:c(),coverUrl:i().nullable(),shareUrl:i()})});function $(e){let t=/(?:^|\n)\s*Share:\s*(https?:\/\/[^\s<>]+)/iu.exec(e);if(!t?.[1])return null;let n=t[1].replace(/[.,;!?]+$/u,``);if(!URL.canParse(n))return null;let r=new URL(n);return r.username||r.password||r.hash||r.protocol===`http:`&&![`localhost`,`127.0.0.1`].includes(r.hostname)?null:r.href}function yt(e){return $(e)?e.split(`
2
+ `).filter(e=>!/^\s*Share:\s*/iu.test(e)).join(`
3
+ `).trim():e}function bt(e){let t=new URL(e),n=/^\/([a-z0-9]+(?:-[a-z0-9]+)*)\/?$/u.exec(t.pathname)?.[1];return!n||t.search?null:new URL(`/api/games/${n}`,t.origin)}function xt({reply:e,previewGame:t}){let n=$(e),r=n?bt(n):null,{data:i}=he({queryKey:de.of(null,`game-share`,n),enabled:r!==null&&t===void 0,queryFn:async({signal:e})=>{if(!r)return null;let t=await fetch(r,{signal:e});if(!t.ok)return null;let i=vt.safeParse(await t.json());return i.success&&i.data.game.shareUrl===n?i.data.game:null}}),a=t??i;if(!n)return null;let o=new URL(n),s=`${o.host}${o.pathname.replace(/\/$/u,``)}`,c=a?.coverUrl&&r?t?a.coverUrl:new URL(`${r.pathname}/cover`,r.origin).href:null;return(0,Q.jsxs)(ht,{"data-game-share-card":`true`,"data-theme":`vishnu`,heading:a?.title??`Your game is ready`,eyebrow:(0,Q.jsx)(ve,{tone:`secondary`,variant:`quiet`,children:`Made with your Agent`}),cover:c?(0,Q.jsx)(`img`,{alt:`A scene from ${a?.title??`your game`}`,src:c}):null,action:(0,Q.jsx)(`a`,{href:n,rel:`noopener noreferrer`,target:`_blank`,children:`Play ↗`}),children:[a?.summary?(0,Q.jsx)(`p`,{className:`text-sm`,children:a.summary}):null,(0,Q.jsx)(_t,{displayValue:s,fieldLabel:`Share link`,label:`Copy link`,value:n})]})}var St=[je,Re,Ge,tt,ct],Ct=e=>(0,Q.jsx)(xt,{reply:e});function wt({prefill:e,onPrefilled:t}){let n=ye(),r=(0,Z.useRef)(null);return(0,Z.useEffect)(()=>{!e||r.current===e.requestId||(r.current=e.requestId,n.setDraft(e.text),t())},[n.setDraft,t,e]),null}function Tt({session:e,connection:t,commands:n,prefill:r=null,onPrefilled:i=()=>void 0,onOpen:a}){let o=t?.ui??null,s=(0,Z.useCallback)(e=>lt(o,e),[o]),c=(0,Z.useCallback)(e=>o?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(dt,{item:e,ui:o}),(0,Q.jsx)(mt,{item:e,ui:o})]}):null,[o]);return(0,Q.jsxs)(Se,{session:e,clients:St,authorOf:ce,children:[(0,Q.jsx)(wt,{prefill:r,onPrefilled:i}),(0,Q.jsx)(we,{onLink:s,onOpen:a,composerActionVariant:`outline`,commands:n,renderAssistantAttachment:Ct,formatAssistantText:yt,renderToolActions:c})]})}export{Tt as ParakeetConversation};
@@ -0,0 +1 @@
1
+ import{r as e,t}from"./rolldown-runtime-hePW80VL.js";import{A as n,r,sa as i,t as a,ut as o}from"./Effect-CxgtVs4O.js";import{i as s,t as c}from"./document-D5hwZS3o.js";import{A as l,B as u,C as d,D as f,E as p,F as m,G as h,H as g,I as _,L as v,M as y,N as ee,O as b,P as x,R as S,S as C,T as te,U as w,V as T,W as ne,b as re,j as E,k as ie,w as ae,x as D,y as oe,z as O}from"./index-DRDNbHYF.js";var se=(e,t)=>{if(u(t,`<`)){let n=t[1]===`<`,r=e._tail,i=r?r._offset+r._delay:0;return n?i:i+r.duration}},k=(e,t)=>{let n=e.iterationDuration;if(n===1e-11&&(n=0),v(t))return n;if(x(+t))return+t;let r=t,i=e?e.labels:null,a=!ee(i),o=se(e,r),s=!v(o),c=ne.exec(r);if(c){let e=c[0],t=r.split(e),l=a&&t[0]?i[t[0]]:n,u=s?o:a?l:n,d=+t[1];return f(u,d,e[0])}return s?o:a?v(i[r])?n:i[r]:n};function ce(e){return l((e.iterationDuration+e._loopDelay)*e.iterationCount-e._loopDelay)||1e-11}function A(e,t,n,r,i,a){let o=x(e.duration)&&e.duration<=1e-11?n-w:n;t.composition&&p(t,o,1,1,h.AUTO);let s=r?new oe(r,e,t,o,!1,i,a):new C(e,t,o);return t.composition&&s.init(!0),ie(t,s),E(t,e=>{let n=e._offset+e._delay+e.duration;n>t.iterationDuration&&(t.iterationDuration=n)}),t.duration=ce(t),t}var j=0,M=class extends C{constructor(e={}){super(e,null,0),++j,this.id=v(e.id)?j:e.id,this.duration=0,this.labels={};let t=e.defaults,n=T.defaults;this.defaults=t?S(t,n):n,this.composition=b(e.composition,!0),this.onRender=e.onRender||n.onRender;let r=b(e.playbackEase,n.playbackEase);this._ease=r?re(r):null,this.iterationDuration=0}add(e,t,n){let r=m(t),i=m(e);if(r||i){if(this._hasChildren=!0,r){let r=t,i=T.editor&&T.editor.addTimelineChild,a=n&&n.type===`Stagger`&&T.editor,o=y(n)?n:null;if(o||a){let t=D(e),a=this.duration,s=this.iterationDuration,c=r.id,l=0,u=t.length,d=i?i(e,r,this.id,n,u):null,f=o||T.editor.resolveStagger(n.defaultValue);t.forEach(e=>{let n={...d||r};this.duration=a,this.iterationDuration=s,v(c)||(n.id=c+`-`+l);let i=k(this,f(e,l,t,null,this));A(n,this,i,e,l,t),l++})}else{let t=i?i(e,r,this.id,n):r,a=n&&n.type?n.defaultValue:n;A(t,this,k(this,a),e)}}else A(e,this,k(this,t));return this.composition&&this.init(!0),this}}sync(e,t){if(v(e)||e&&v(e.pause))return this;e.pause();let n=+(e.effect?e.effect.getTiming().duration:e.duration);!v(e)&&!v(e.persist)&&(e.persist=!0);let r=T.editor,i=r&&r.addTimelineChild;r&&r.addTimelineSync&&(t=r.addTimelineSync(e,t,this.id),r.addTimelineChild=null);let a=this.add(e,{currentTime:[0,n],duration:n,delay:0,ease:`linear`,playbackEase:`linear`},t);return r&&(r.addTimelineChild=i),a}set(e,t,n){return v(t)?this:(t.duration=w,t.composition=g.replace,this.add(e,t,n))}call(e,t){return v(e)||e&&!y(e)?this:(T.editor&&T.editor.addTimelineCall&&(t=T.editor.addTimelineCall(e,t,this.id)),this.add({duration:0,delay:0,onComplete:()=>e(this)},t))}label(e,t){return v(e)||e&&!_(e)?this:(T.editor&&T.editor.addTimelineLabel&&(t=T.editor.addTimelineLabel(e,t,this.id)),this.labels[e]=k(this,t),this)}remove(e,t){return ae(D(e),this,t),this}stretch(e){let t=this.duration;if(t===O(e))return this;let n=e/t,r=this.labels;E(this,e=>e.stretch(e.duration*n));for(let e in r)r[e]*=n;return super.stretch(e)}refresh(){return E(this,e=>{e.refresh&&e.refresh()}),this}revert(){return super.revert(),E(this,e=>e.revert,!0),te(this)}then(e){return super.then(e)}},N=e=>T.editor?T.editor.addTimeline(e):new M(e).init(),P=t(((e,t)=>{(function(e,n){typeof t==`object`&&t.exports?t.exports=n():e.Zdog=n()})(e,function(){var e={};e.TAU=Math.PI*2,e.extend=function(e,t){for(var n in t)e[n]=t[n];return e},e.lerp=function(e,t,n){return(t-e)*n+e},e.modulo=function(e,t){return(e%t+t)%t};var t={2:function(e){return e*e},3:function(e){return e*e*e},4:function(e){return e*e*e*e},5:function(e){return e*e*e*e*e}};return e.easeInOut=function(e,n){if(n==1)return e;e=Math.max(0,Math.min(1,e));var r=e<.5,i=r?e:1-e;i/=.5;var a=(t[n]||t[2])(i);return a/=2,r?a:1-a},e})})),F=t(((e,t)=>{(function(e,n){typeof t==`object`&&t.exports?t.exports=n():e.Zdog.CanvasRenderer=n()})(e,function(){var e={isCanvas:!0};return e.begin=function(e){e.beginPath()},e.move=function(e,t,n){e.moveTo(n.x,n.y)},e.line=function(e,t,n){e.lineTo(n.x,n.y)},e.bezier=function(e,t,n,r,i){e.bezierCurveTo(n.x,n.y,r.x,r.y,i.x,i.y)},e.closePath=function(e){e.closePath()},e.setPath=function(){},e.renderPath=function(t,n,r,i){this.begin(t,n),r.forEach(function(r){r.render(t,n,e)}),i&&this.closePath(t,n)},e.stroke=function(e,t,n,r,i){n&&(e.strokeStyle=r,e.lineWidth=i,e.stroke())},e.fill=function(e,t,n,r){n&&(e.fillStyle=r,e.fill())},e.end=function(){},e})})),I=t(((e,t)=>{(function(e,n){typeof t==`object`&&t.exports?t.exports=n():e.Zdog.SvgRenderer=n()})(e,function(){var e={isSvg:!0},t=e.round=function(e){return Math.round(e*1e3)/1e3};function n(e){return t(e.x)+`,`+t(e.y)+` `}return e.begin=function(){},e.move=function(e,t,r){return`M`+n(r)},e.line=function(e,t,r){return`L`+n(r)},e.bezier=function(e,t,r,i,a){return`C`+n(r)+n(i)+n(a)},e.closePath=function(){return`Z`},e.setPath=function(e,t,n){t.setAttribute(`d`,n)},e.renderPath=function(t,n,r,i){var a=``;r.forEach(function(r){a+=r.render(t,n,e)}),i&&(a+=this.closePath(t,n)),this.setPath(t,n,a)},e.stroke=function(e,t,n,r,i){n&&(t.setAttribute(`stroke`,r),t.setAttribute(`stroke-width`,i))},e.fill=function(e,t,n,r){var i=n?r:`none`;t.setAttribute(`fill`,i)},e.end=function(e,t){e.appendChild(t)},e})})),L=t(((e,t)=>{(function(e,n){if(typeof t==`object`&&t.exports)t.exports=n(P());else{var r=e.Zdog;r.Vector=n(r)}})(e,function(e){function t(e){this.set(e)}var n=e.TAU;t.prototype.set=function(e){return this.x=e&&e.x||0,this.y=e&&e.y||0,this.z=e&&e.z||0,this},t.prototype.write=function(e){return e?(this.x=e.x==null?this.x:e.x,this.y=e.y==null?this.y:e.y,this.z=e.z==null?this.z:e.z,this):this},t.prototype.rotate=function(e){if(e)return this.rotateZ(e.z),this.rotateY(e.y),this.rotateX(e.x),this},t.prototype.rotateZ=function(e){r(this,e,`x`,`y`)},t.prototype.rotateX=function(e){r(this,e,`y`,`z`)},t.prototype.rotateY=function(e){r(this,e,`x`,`z`)};function r(e,t,r,i){if(!(!t||t%n===0)){var a=Math.cos(t),o=Math.sin(t),s=e[r],c=e[i];e[r]=s*a-c*o,e[i]=c*a+s*o}}t.prototype.isSame=function(e){return e?this.x===e.x&&this.y===e.y&&this.z===e.z:!1},t.prototype.add=function(e){return e?(this.x+=e.x||0,this.y+=e.y||0,this.z+=e.z||0,this):this},t.prototype.subtract=function(e){return e?(this.x-=e.x||0,this.y-=e.y||0,this.z-=e.z||0,this):this},t.prototype.multiply=function(e){return e==null||(typeof e==`number`?(this.x*=e,this.y*=e,this.z*=e):(this.x*=e.x==null?1:e.x,this.y*=e.y==null?1:e.y,this.z*=e.z==null?1:e.z)),this},t.prototype.transform=function(e,t,n){return this.multiply(n),this.rotate(t),this.add(e),this},t.prototype.lerp=function(t,n){return this.x=e.lerp(this.x,t.x||0,n),this.y=e.lerp(this.y,t.y||0,n),this.z=e.lerp(this.z,t.z||0,n),this},t.prototype.magnitude=function(){return i(this.x*this.x+this.y*this.y+this.z*this.z)};function i(e){return Math.abs(e-1)<1e-8?1:Math.sqrt(e)}return t.prototype.magnitude2d=function(){return i(this.x*this.x+this.y*this.y)},t.prototype.copy=function(){return new t(this)},t})})),R=t(((e,t)=>{(function(e,n){if(typeof t==`object`&&t.exports)t.exports=n(P(),L(),F(),I());else{var r=e.Zdog;r.Anchor=n(r,r.Vector,r.CanvasRenderer,r.SvgRenderer)}})(e,function(e,t,n,r){var i=e.TAU,a={x:1,y:1,z:1};function o(e){this.create(e||{})}o.prototype.create=function(n){this.children=[],e.extend(this,this.constructor.defaults),this.setOptions(n),this.translate=new t(n.translate),this.rotate=new t(n.rotate),this.scale=new t(a).multiply(this.scale),this.origin=new t,this.renderOrigin=new t,this.addTo&&this.addTo.addChild(this)},o.defaults={},o.optionKeys=Object.keys(o.defaults).concat([`rotate`,`translate`,`scale`,`addTo`]),o.prototype.setOptions=function(e){var t=this.constructor.optionKeys;for(var n in e)t.indexOf(n)!=-1&&(this[n]=e[n])},o.prototype.addChild=function(e){this.children.indexOf(e)==-1&&(e.remove(),e.addTo=this,this.children.push(e))},o.prototype.removeChild=function(e){var t=this.children.indexOf(e);t!=-1&&this.children.splice(t,1)},o.prototype.remove=function(){this.addTo&&this.addTo.removeChild(this)},o.prototype.update=function(){this.reset(),this.children.forEach(function(e){e.update()}),this.transform(this.translate,this.rotate,this.scale)},o.prototype.reset=function(){this.renderOrigin.set(this.origin)},o.prototype.transform=function(e,t,n){this.renderOrigin.transform(e,t,n),this.children.forEach(function(r){r.transform(e,t,n)})},o.prototype.updateGraph=function(){this.update(),this.updateFlatGraph(),this.flatGraph.forEach(function(e){e.updateSortValue()}),this.flatGraph.sort(o.shapeSorter)},o.shapeSorter=function(e,t){return e.sortValue-t.sortValue},Object.defineProperty(o.prototype,"flatGraph",{get:function(){return this._flatGraph||this.updateFlatGraph(),this._flatGraph},set:function(e){this._flatGraph=e}}),o.prototype.updateFlatGraph=function(){this.flatGraph=this.getFlatGraph()},o.prototype.getFlatGraph=function(){var e=[this];return this.addChildFlatGraph(e)},o.prototype.addChildFlatGraph=function(e){return this.children.forEach(function(t){var n=t.getFlatGraph();Array.prototype.push.apply(e,n)}),e},o.prototype.updateSortValue=function(){this.sortValue=this.renderOrigin.z},o.prototype.render=function(){},o.prototype.renderGraphCanvas=function(e){if(!e)throw Error(`ctx is `+e+`. Canvas context required for render. Check .renderGraphCanvas( ctx ).`);this.flatGraph.forEach(function(t){t.render(e,n)})},o.prototype.renderGraphSvg=function(e){if(!e)throw Error(`svg is `+e+`. SVG required for render. Check .renderGraphSvg( svg ).`);this.flatGraph.forEach(function(t){t.render(e,r)})},o.prototype.copy=function(t){var n={};this.constructor.optionKeys.forEach(function(e){n[e]=this[e]},this),e.extend(n,t);var r=this.constructor;return new r(n)},o.prototype.copyGraph=function(e){var t=this.copy(e);return this.children.forEach(function(e){e.copyGraph({addTo:t})}),t},o.prototype.normalizeRotate=function(){this.rotate.x=e.modulo(this.rotate.x,i),this.rotate.y=e.modulo(this.rotate.y,i),this.rotate.z=e.modulo(this.rotate.z,i)};function s(t){return function(n){function r(e){this.create(e||{})}return r.prototype=Object.create(t.prototype),r.prototype.constructor=r,r.defaults=e.extend({},t.defaults),e.extend(r.defaults,n),r.optionKeys=t.optionKeys.slice(0),Object.keys(r.defaults).forEach(function(e){!r.optionKeys.indexOf(e)!=1&&r.optionKeys.push(e)}),r.subclass=s(r),r}}return o.subclass=s(o),o})})),z=t(((e,t)=>{(function(e,n){typeof t==`object`&&t.exports?t.exports=n():e.Zdog.Dragger=n()})(e,function(){var e=typeof window<`u`,t=`mousedown`,n=`mousemove`,r=`mouseup`;e&&(window.PointerEvent?(t=`pointerdown`,n=`pointermove`,r=`pointerup`):`ontouchstart`in window&&(t=`touchstart`,n=`touchmove`,r=`touchend`));function i(){}function a(e){this.create(e||{})}return a.prototype.create=function(e){this.onDragStart=e.onDragStart||i,this.onDragMove=e.onDragMove||i,this.onDragEnd=e.onDragEnd||i,this.bindDrag(e.startElement)},a.prototype.bindDrag=function(e){e=this.getQueryElement(e),e&&(e.style.touchAction=`none`,e.addEventListener(t,this))},a.prototype.getQueryElement=function(e){return typeof e==`string`&&(e=document.querySelector(e)),e},a.prototype.handleEvent=function(e){var t=this[`on`+e.type];t&&t.call(this,e)},a.prototype.onmousedown=a.prototype.onpointerdown=function(e){this.dragStart(e,e)},a.prototype.ontouchstart=function(e){this.dragStart(e,e.changedTouches[0])},a.prototype.dragStart=function(t,i){t.preventDefault(),this.dragStartX=i.pageX,this.dragStartY=i.pageY,e&&(window.addEventListener(n,this),window.addEventListener(r,this)),this.onDragStart(i)},a.prototype.ontouchmove=function(e){this.dragMove(e,e.changedTouches[0])},a.prototype.onmousemove=a.prototype.onpointermove=function(e){this.dragMove(e,e)},a.prototype.dragMove=function(e,t){e.preventDefault();var n=t.pageX-this.dragStartX,r=t.pageY-this.dragStartY;this.onDragMove(t,n,r)},a.prototype.onmouseup=a.prototype.onpointerup=a.prototype.ontouchend=a.prototype.dragEnd=function(){window.removeEventListener(n,this),window.removeEventListener(r,this),this.onDragEnd()},a})})),le=t(((e,t)=>{(function(e,n){if(typeof t==`object`&&t.exports)t.exports=n(P(),R(),z());else{var r=e.Zdog;r.Illustration=n(r,r.Anchor,r.Dragger)}})(e,function(e,t,n){function r(){}var i=e.TAU,a=t.subclass({element:void 0,centered:!0,zoom:1,dragRotate:!1,resize:!1,onPrerender:r,onDragStart:r,onDragMove:r,onDragEnd:r,onResize:r});e.extend(a.prototype,n.prototype),a.prototype.create=function(e){t.prototype.create.call(this,e),n.prototype.create.call(this,e),this.setElement(this.element),this.setDragRotate(this.dragRotate),this.setResize(this.resize)},a.prototype.setElement=function(e){if(e=this.getQueryElement(e),!e)throw Error(`Zdog.Illustration element required. Set to `+e);var t=e.nodeName.toLowerCase();t==`canvas`?this.setCanvas(e):t==`svg`&&this.setSvg(e)},a.prototype.setSize=function(e,t){e=Math.round(e),t=Math.round(t),this.isCanvas?this.setSizeCanvas(e,t):this.isSvg&&this.setSizeSvg(e,t)},a.prototype.setResize=function(e){this.resize=e,this.resizeListener||=this.onWindowResize.bind(this),e?(window.addEventListener(`resize`,this.resizeListener),this.onWindowResize()):window.removeEventListener(`resize`,this.resizeListener)},a.prototype.onWindowResize=function(){this.setMeasuredSize(),this.onResize(this.width,this.height)},a.prototype.setMeasuredSize=function(){var e,t;if(this.resize==`fullscreen`)e=window.innerWidth,t=window.innerHeight;else{var n=this.element.getBoundingClientRect();e=n.width,t=n.height}this.setSize(e,t)},a.prototype.renderGraph=function(e){this.isCanvas?this.renderGraphCanvas(e):this.isSvg&&this.renderGraphSvg(e)},a.prototype.updateRenderGraph=function(e){this.updateGraph(),this.renderGraph(e)},a.prototype.setCanvas=function(e){this.element=e,this.isCanvas=!0,this.ctx=this.element.getContext(`2d`),this.setSizeCanvas(e.width,e.height)},a.prototype.setSizeCanvas=function(e,t){this.width=e,this.height=t;var n=this.pixelRatio=window.devicePixelRatio||1;this.element.width=this.canvasWidth=e*n,this.element.height=this.canvasHeight=t*n,n>1&&!this.resize&&(this.element.style.width=e+`px`,this.element.style.height=t+`px`)},a.prototype.renderGraphCanvas=function(e){e||=this,this.prerenderCanvas(),t.prototype.renderGraphCanvas.call(e,this.ctx),this.postrenderCanvas()},a.prototype.prerenderCanvas=function(){var e=this.ctx;if(e.lineCap=`round`,e.lineJoin=`round`,e.clearRect(0,0,this.canvasWidth,this.canvasHeight),e.save(),this.centered){var t=this.width/2*this.pixelRatio,n=this.height/2*this.pixelRatio;e.translate(t,n)}var r=this.pixelRatio*this.zoom;e.scale(r,r),this.onPrerender(e)},a.prototype.postrenderCanvas=function(){this.ctx.restore()},a.prototype.setSvg=function(e){this.element=e,this.isSvg=!0,this.pixelRatio=1;var t=e.getAttribute(`width`),n=e.getAttribute(`height`);this.setSizeSvg(t,n)},a.prototype.setSizeSvg=function(e,t){this.width=e,this.height=t;var n=e/this.zoom,r=t/this.zoom,i=this.centered?-n/2:0,a=this.centered?-r/2:0;this.element.setAttribute(`viewBox`,i+` `+a+` `+n+` `+r),this.resize?(this.element.removeAttribute(`width`),this.element.removeAttribute(`height`)):(this.element.setAttribute(`width`,e),this.element.setAttribute(`height`,t))},a.prototype.renderGraphSvg=function(e){e||=this,o(this.element),this.onPrerender(this.element),t.prototype.renderGraphSvg.call(e,this.element)};function o(e){for(;e.firstChild;)e.removeChild(e.firstChild)}return a.prototype.setDragRotate=function(e){if(e)e===!0&&(e=this);else return;this.dragRotate=e,this.bindDrag(this.element)},a.prototype.dragStart=function(){this.dragStartRX=this.dragRotate.rotate.x,this.dragStartRY=this.dragRotate.rotate.y,n.prototype.dragStart.apply(this,arguments)},a.prototype.dragMove=function(e,t){var r=t.pageX-this.dragStartX,a=t.pageY-this.dragStartY,o=Math.min(this.width,this.height),s=r/o*i,c=a/o*i;this.dragRotate.rotate.x=this.dragStartRX-c,this.dragRotate.rotate.y=this.dragStartRY-s,n.prototype.dragMove.apply(this,arguments)},a})})),B=t(((e,t)=>{(function(e,n){if(typeof t==`object`&&t.exports)t.exports=n(L());else{var r=e.Zdog;r.PathCommand=n(r.Vector)}})(e,function(e){function t(t,i,a){this.method=t,this.points=i.map(n),this.renderPoints=i.map(r),this.previousPoint=a,this.endRenderPoint=this.renderPoints[this.renderPoints.length-1],t==`arc`&&(this.controlPoints=[new e,new e])}function n(t){return t instanceof e?t:new e(t)}function r(t){return new e(t)}t.prototype.reset=function(){var e=this.points;this.renderPoints.forEach(function(t,n){var r=e[n];t.set(r)})},t.prototype.transform=function(e,t,n){this.renderPoints.forEach(function(r){r.transform(e,t,n)})},t.prototype.render=function(e,t,n){return this[this.method](e,t,n)},t.prototype.move=function(e,t,n){return n.move(e,t,this.renderPoints[0])},t.prototype.line=function(e,t,n){return n.line(e,t,this.renderPoints[0])},t.prototype.bezier=function(e,t,n){var r=this.renderPoints[0],i=this.renderPoints[1],a=this.renderPoints[2];return n.bezier(e,t,r,i,a)};var i=9/16;return t.prototype.arc=function(e,t,n){var r=this.previousPoint,a=this.renderPoints[0],o=this.renderPoints[1],s=this.controlPoints[0],c=this.controlPoints[1];return s.set(r).lerp(a,i),c.set(o).lerp(a,i),n.bezier(e,t,s,c,o)},t})})),V=t(((e,t)=>{(function(e,n){if(typeof t==`object`&&t.exports)t.exports=n(P(),L(),B(),R());else{var r=e.Zdog;r.Shape=n(r,r.Vector,r.PathCommand,r.Anchor)}})(e,function(e,t,n,r){var i=r.subclass({stroke:1,fill:!1,color:`#333`,closed:!0,visible:!0,path:[{}],front:{z:1},backface:!0});i.prototype.create=function(e){r.prototype.create.call(this,e),this.updatePath(),this.front=new t(e.front||this.front),this.renderFront=new t(this.front),this.renderNormal=new t};var a=[`move`,`line`,`bezier`,`arc`];i.prototype.updatePath=function(){this.setPath(),this.updatePathCommands()},i.prototype.setPath=function(){},i.prototype.updatePathCommands=function(){var e;this.pathCommands=this.path.map(function(t,r){var i=Object.keys(t),o=i[0],s=t[o];(i.length!=1||a.indexOf(o)==-1)&&(o=`line`,s=t),(o==`line`||o==`move`)&&!Array.isArray(s)&&(s=[s]),o=r===0?`move`:o;var c=new n(o,s,e);return e=c.endRenderPoint,c})},i.prototype.reset=function(){this.renderOrigin.set(this.origin),this.renderFront.set(this.front),this.pathCommands.forEach(function(e){e.reset()})},i.prototype.transform=function(e,t,n){this.renderOrigin.transform(e,t,n),this.renderFront.transform(e,t,n),this.renderNormal.set(this.renderOrigin).subtract(this.renderFront),this.pathCommands.forEach(function(r){r.transform(e,t,n)}),this.children.forEach(function(r){r.transform(e,t,n)})},i.prototype.updateSortValue=function(){var e=this.pathCommands.length,t=this.pathCommands[0].endRenderPoint,n=this.pathCommands[e-1].endRenderPoint;e>2&&t.isSame(n)&&--e;for(var r=0,i=0;i<e;i++)r+=this.pathCommands[i].endRenderPoint.z;this.sortValue=r/e},i.prototype.render=function(e,t){var n=this.pathCommands.length;if(!(!this.visible||!n)&&(this.isFacingBack=this.renderNormal.z>0,!(!this.backface&&this.isFacingBack))){if(!t)throw Error(`Zdog renderer required. Set to `+t);var r=n==1;t.isCanvas&&r?this.renderCanvasDot(e,t):this.renderPath(e,t)}};var o=e.TAU;i.prototype.renderCanvasDot=function(e){var t=this.getLineWidth();if(t){e.fillStyle=this.getRenderColor();var n=this.pathCommands[0].endRenderPoint;e.beginPath();var r=t/2;e.arc(n.x,n.y,r,0,o),e.fill()}},i.prototype.getLineWidth=function(){return this.stroke?this.stroke==1?1:this.stroke:0},i.prototype.getRenderColor=function(){return typeof this.backface==`string`&&this.isFacingBack?this.backface:this.color},i.prototype.renderPath=function(e,t){var n=this.getRenderElement(e,t),r=(this.pathCommands.length!=2||this.pathCommands[1].method!=`line`)&&this.closed,i=this.getRenderColor();t.renderPath(e,n,this.pathCommands,r),t.stroke(e,n,this.stroke,i,this.getLineWidth()),t.fill(e,n,this.fill,i),t.end(e,n)};var s=`http://www.w3.org/2000/svg`;return i.prototype.getRenderElement=function(e,t){if(t.isSvg)return this.svgElement||(this.svgElement=document.createElementNS(s,`path`),this.svgElement.setAttribute(`stroke-linecap`,`round`),this.svgElement.setAttribute(`stroke-linejoin`,`round`)),this.svgElement},i})})),H=t(((e,t)=>{(function(e,n){if(typeof t==`object`&&t.exports)t.exports=n(R());else{var r=e.Zdog;r.Group=n(r.Anchor)}})(e,function(e){var t=e.subclass({updateSort:!1,visible:!0});return t.prototype.updateSortValue=function(){var t=0;this.flatGraph.forEach(function(e){e.updateSortValue(),t+=e.sortValue}),this.sortValue=t/this.flatGraph.length,this.updateSort&&this.flatGraph.sort(e.shapeSorter)},t.prototype.render=function(e,t){this.visible&&this.flatGraph.forEach(function(n){n.render(e,t)})},t.prototype.updateFlatGraph=function(){var e=[];this.flatGraph=this.addChildFlatGraph(e)},t.prototype.getFlatGraph=function(){return[this]},t})})),U=t(((e,t)=>{(function(e,n){if(typeof t==`object`&&t.exports)t.exports=n(V());else{var r=e.Zdog;r.Rect=n(r.Shape)}})(e,function(e){var t=e.subclass({width:1,height:1});return t.prototype.setPath=function(){var e=this.width/2,t=this.height/2;this.path=[{x:-e,y:-t},{x:e,y:-t},{x:e,y:t},{x:-e,y:t}]},t})})),ue=t(((e,t)=>{(function(e,n){if(typeof t==`object`&&t.exports)t.exports=n(V());else{var r=e.Zdog;r.RoundedRect=n(r.Shape)}})(e,function(e){var t=e.subclass({width:1,height:1,cornerRadius:.25,closed:!1});return t.prototype.setPath=function(){var e=this.width/2,t=this.height/2,n=Math.min(e,t),r=Math.min(this.cornerRadius,n),i=e-r,a=t-r,o=[{x:i,y:-t},{arc:[{x:e,y:-t},{x:e,y:-a}]}];a&&o.push({x:e,y:a}),o.push({arc:[{x:e,y:t},{x:i,y:t}]}),i&&o.push({x:-i,y:t}),o.push({arc:[{x:-e,y:t},{x:-e,y:a}]}),a&&o.push({x:-e,y:-a}),o.push({arc:[{x:-e,y:-t},{x:-i,y:-t}]}),i&&o.push({x:i,y:-t}),this.path=o},t})})),W=t(((e,t)=>{(function(e,n){if(typeof t==`object`&&t.exports)t.exports=n(V());else{var r=e.Zdog;r.Ellipse=n(r.Shape)}})(e,function(e){var t=e.subclass({diameter:1,width:void 0,height:void 0,quarters:4,closed:!1});return t.prototype.setPath=function(){var e=this.width==null?this.diameter:this.width,t=this.height==null?this.diameter:this.height,n=e/2,r=t/2;this.path=[{x:0,y:-r},{arc:[{x:n,y:-r},{x:n,y:0}]}],this.quarters>1&&this.path.push({arc:[{x:n,y:r},{x:0,y:r}]}),this.quarters>2&&this.path.push({arc:[{x:-n,y:r},{x:-n,y:0}]}),this.quarters>3&&this.path.push({arc:[{x:-n,y:-r},{x:0,y:-r}]})},t})})),de=t(((e,t)=>{(function(e,n){if(typeof t==`object`&&t.exports)t.exports=n(P(),V());else{var r=e.Zdog;r.Polygon=n(r,r.Shape)}})(e,function(e,t){var n=t.subclass({sides:3,radius:.5}),r=e.TAU;return n.prototype.setPath=function(){this.path=[];for(var e=0;e<this.sides;e++){var t=e/this.sides*r-r/4,n=Math.cos(t)*this.radius,i=Math.sin(t)*this.radius;this.path.push({x:n,y:i})}},n})})),fe=t(((e,t)=>{(function(e,n){if(typeof t==`object`&&t.exports)t.exports=n(P(),L(),R(),W());else{var r=e.Zdog;r.Hemisphere=n(r,r.Vector,r.Anchor,r.Ellipse)}})(e,function(e,t,n,r){var i=r.subclass({fill:!0}),a=e.TAU;i.prototype.create=function(){r.prototype.create.apply(this,arguments),this.apex=new n({addTo:this,translate:{z:this.diameter/2}}),this.renderCentroid=new t},i.prototype.updateSortValue=function(){this.renderCentroid.set(this.renderOrigin).lerp(this.apex.renderOrigin,3/8),this.sortValue=this.renderCentroid.z},i.prototype.render=function(e,t){this.renderDome(e,t),r.prototype.render.apply(this,arguments)},i.prototype.renderDome=function(e,t){if(this.visible){var n=this.getDomeRenderElement(e,t),r=Math.atan2(this.renderNormal.y,this.renderNormal.x),i=this.diameter/2*this.renderNormal.magnitude(),o=this.renderOrigin.x,s=this.renderOrigin.y;if(t.isCanvas){var c=r+a/4,l=r-a/4;e.beginPath(),e.arc(o,s,i,c,l)}else t.isSvg&&(r=(r-a/4)/a*360,this.domeSvgElement.setAttribute(`d`,`M `+-i+`,0 A `+i+`,`+i+` 0 0 1 `+i+`,0`),this.domeSvgElement.setAttribute(`transform`,`translate(`+o+`,`+s+` ) rotate(`+r+`)`));t.stroke(e,n,this.stroke,this.color,this.getLineWidth()),t.fill(e,n,this.fill,this.color),t.end(e,n)}};var o=`http://www.w3.org/2000/svg`;return i.prototype.getDomeRenderElement=function(e,t){if(t.isSvg)return this.domeSvgElement||(this.domeSvgElement=document.createElementNS(o,`path`),this.domeSvgElement.setAttribute(`stroke-linecap`,`round`),this.domeSvgElement.setAttribute(`stroke-linejoin`,`round`)),this.domeSvgElement},i})})),pe=t(((e,t)=>{(function(e,n){if(typeof t==`object`&&t.exports)t.exports=n(P(),B(),V(),H(),W());else{var r=e.Zdog;r.Cylinder=n(r,r.PathCommand,r.Shape,r.Group,r.Ellipse)}})(e,function(e,t,n,r,i){function a(){}var o=r.subclass({color:`#333`,updateSort:!0});o.prototype.create=function(){r.prototype.create.apply(this,arguments),this.pathCommands=[new t(`move`,[{}]),new t(`line`,[{}])]},o.prototype.render=function(e,t){this.renderCylinderSurface(e,t),r.prototype.render.apply(this,arguments)},o.prototype.renderCylinderSurface=function(e,t){if(this.visible){var n=this.getRenderElement(e,t),r=this.frontBase,i=this.rearBase,a=r.renderNormal.magnitude(),o=r.diameter*a+r.getLineWidth();this.pathCommands[0].renderPoints[0].set(r.renderOrigin),this.pathCommands[1].renderPoints[0].set(i.renderOrigin),t.isCanvas&&(e.lineCap=`butt`),t.renderPath(e,n,this.pathCommands),t.stroke(e,n,!0,this.color,o),t.end(e,n),t.isCanvas&&(e.lineCap=`round`)}};var s=`http://www.w3.org/2000/svg`;o.prototype.getRenderElement=function(e,t){if(t.isSvg)return this.svgElement||=document.createElementNS(s,`path`),this.svgElement},o.prototype.copyGraph=a;var c=i.subclass();c.prototype.copyGraph=a;var l=n.subclass({diameter:1,length:1,frontFace:void 0,fill:!0}),u=e.TAU;return l.prototype.create=function(){n.prototype.create.apply(this,arguments),this.group=new o({addTo:this,color:this.color,visible:this.visible});var e=this.length/2,t=this.backface||!0;this.frontBase=this.group.frontBase=new i({addTo:this.group,diameter:this.diameter,translate:{z:e},rotate:{y:u/2},color:this.color,stroke:this.stroke,fill:this.fill,backface:this.frontFace||t,visible:this.visible}),this.rearBase=this.group.rearBase=this.frontBase.copy({translate:{z:-e},rotate:{y:0},backface:t})},l.prototype.render=function(){},[`stroke`,`fill`,`color`,`visible`].forEach(function(e){var t=`_`+e;Object.defineProperty(l.prototype,e,{get:function(){return this[t]},set:function(n){this[t]=n,this.frontBase&&(this.frontBase[e]=n,this.rearBase[e]=n,this.group[e]=n)}})}),l})})),me=t(((e,t)=>{(function(e,n){if(typeof t==`object`&&t.exports)t.exports=n(P(),L(),B(),R(),W());else{var r=e.Zdog;r.Cone=n(r,r.Vector,r.PathCommand,r.Anchor,r.Ellipse)}})(e,function(e,t,n,r,i){var a=i.subclass({length:1,fill:!0}),o=e.TAU;a.prototype.create=function(){i.prototype.create.apply(this,arguments),this.apex=new r({addTo:this,translate:{z:this.length}}),this.renderApex=new t,this.renderCentroid=new t,this.tangentA=new t,this.tangentB=new t,this.surfacePathCommands=[new n(`move`,[{}]),new n(`line`,[{}]),new n(`line`,[{}])]},a.prototype.updateSortValue=function(){this.renderCentroid.set(this.renderOrigin).lerp(this.apex.renderOrigin,1/3),this.sortValue=this.renderCentroid.z},a.prototype.render=function(e,t){this.renderConeSurface(e,t),i.prototype.render.apply(this,arguments)},a.prototype.renderConeSurface=function(e,t){if(this.visible){this.renderApex.set(this.apex.renderOrigin).subtract(this.renderOrigin);var n=this.renderNormal.magnitude(),r=this.renderApex.magnitude2d(),i=this.renderNormal.magnitude2d(),a=Math.acos(i/n),s=Math.sin(a),c=this.diameter/2*n;if(c*s<r){var l=Math.atan2(this.renderNormal.y,this.renderNormal.x)+o/2,u=r/s,d=Math.acos(c/u),f=this.tangentA,p=this.tangentB;f.x=Math.cos(d)*c*s,f.y=Math.sin(d)*c,p.set(this.tangentA),p.y*=-1,f.rotateZ(l),p.rotateZ(l),f.add(this.renderOrigin),p.add(this.renderOrigin),this.setSurfaceRenderPoint(0,f),this.setSurfaceRenderPoint(1,this.apex.renderOrigin),this.setSurfaceRenderPoint(2,p);var m=this.getSurfaceRenderElement(e,t);t.renderPath(e,m,this.surfacePathCommands),t.stroke(e,m,this.stroke,this.color,this.getLineWidth()),t.fill(e,m,this.fill,this.color),t.end(e,m)}}};var s=`http://www.w3.org/2000/svg`;return a.prototype.getSurfaceRenderElement=function(e,t){if(t.isSvg)return this.surfaceSvgElement||(this.surfaceSvgElement=document.createElementNS(s,`path`),this.surfaceSvgElement.setAttribute(`stroke-linecap`,`round`),this.surfaceSvgElement.setAttribute(`stroke-linejoin`,`round`)),this.surfaceSvgElement},a.prototype.setSurfaceRenderPoint=function(e,t){this.surfacePathCommands[e].renderPoints[0].set(t)},a})})),he=t(((e,t)=>{(function(e,n){if(typeof t==`object`&&t.exports)t.exports=n(P(),R(),V(),U());else{var r=e.Zdog;r.Box=n(r,r.Anchor,r.Shape,r.Rect)}})(e,function(e,t,n,r){var i=r.subclass();i.prototype.copyGraph=function(){};var a=e.TAU,o=[`frontFace`,`rearFace`,`leftFace`,`rightFace`,`topFace`,`bottomFace`],s=e.extend({},n.defaults);delete s.path,o.forEach(function(e){s[e]=!0}),e.extend(s,{width:1,height:1,depth:1,fill:!0});var c=t.subclass(s);return c.prototype.create=function(e){t.prototype.create.call(this,e),this.updatePath(),this.fill=this.fill},c.prototype.updatePath=function(){o.forEach(function(e){this[e]=this[e]},this)},o.forEach(function(e){var t=`_`+e;Object.defineProperty(c.prototype,e,{get:function(){return this[t]},set:function(n){this[t]=n,this.setFace(e,n)}})}),c.prototype.setFace=function(e,t){var n=e+`Rect`,r=this[n];if(!t){this.removeChild(r);return}var a=this.getFaceOptions(e);a.color=typeof t==`string`?t:this.color,r?r.setOptions(a):r=this[n]=new i(a),r.updatePath(),this.addChild(r)},c.prototype.getFaceOptions=function(e){return{frontFace:{width:this.width,height:this.height,translate:{z:this.depth/2}},rearFace:{width:this.width,height:this.height,translate:{z:-this.depth/2},rotate:{y:a/2}},leftFace:{width:this.depth,height:this.height,translate:{x:-this.width/2},rotate:{y:-a/4}},rightFace:{width:this.depth,height:this.height,translate:{x:this.width/2},rotate:{y:a/4}},topFace:{width:this.width,height:this.depth,translate:{y:-this.height/2},rotate:{x:-a/4}},bottomFace:{width:this.width,height:this.depth,translate:{y:this.height/2},rotate:{x:a/4}}}[e]},[`color`,`stroke`,`fill`,`backface`,`front`,`visible`].forEach(function(e){var t=`_`+e;Object.defineProperty(c.prototype,e,{get:function(){return this[t]},set:function(n){this[t]=n,o.forEach(function(t){var r=this[t+`Rect`],i=typeof this[t]==`string`;r&&!(e==`color`&&i)&&(r[e]=n)},this)}})}),c})})),G=e(t(((e,t)=>{(function(e,n){typeof t==`object`&&t.exports?t.exports=n(P(),F(),I(),L(),R(),z(),le(),B(),V(),H(),U(),ue(),W(),de(),fe(),pe(),me(),he()):typeof define==`function`&&define.amd&&define(`zdog`,[],e.Zdog)})(e,function(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_){return e.CanvasRenderer=t,e.SvgRenderer=n,e.Vector=r,e.Anchor=i,e.Dragger=a,e.Illustration=o,e.PathCommand=s,e.Shape=c,e.Group=l,e.Rect=u,e.RoundedRect=d,e.Ellipse=f,e.Polygon=p,e.Hemisphere=m,e.Cylinder=h,e.Cone=g,e.Box=_,e})}))(),1),K=new Map([[`idle`,{geometry:{},motion:{target:`root`,translate:{y:.5},durationMs:2e3,repeat:`yoyo`},mouseInfluence:1}],[`listening`,{geometry:{},motion:{target:`root`,rotate:{x:-.2},durationMs:300,repeat:`yoyo`},mouseInfluence:.3}],[`processing`,{geometry:{},mouseInfluence:.2}],[`speaking`,{geometry:{},motion:{target:`root`,translate:{y:.5},durationMs:1500,repeat:`yoyo`},mouseInfluence:0,mouthCycle:[{durationMs:100,mouth:`open`},{durationMs:150,mouth:`base`},{durationMs:100,mouth:`open`},{durationMs:200,mouth:`base`}]}],[`thinking`,{geometry:{},motion:{target:`root`,rotate:{z:.1},durationMs:800,repeat:`yoyo`},mouseInfluence:0}],[`error`,{geometry:{expression:`dead`},mouseInfluence:.1}]]),ge=48,q=(e,t)=>Math.min(e,t)/ge,J=e=>e!==void 0&&e>0?e:1,Y=(e,t,n,r)=>{let i=Math.min(1,Math.sqrt(n/(e*t*r*r)));return[Math.max(1,Math.floor(e*i)),Math.max(1,Math.floor(t*i))]},X=(e,t)=>{if(!Number.isFinite(e))throw Error(`Sprite ${t} must be finite`)},Z=(e,t)=>{let n=e.ownerDocument.defaultView,r=n?.getComputedStyle(e)?.[t]??``,i=Number.parseFloat(r);if(i>0&&r.trim().endsWith(`px`))return i;let a=e.style[t],o=Number.parseFloat(a);if(o>0&&a.trim().endsWith(`px`))return o;let s=e.getBoundingClientRect(),c=t===`width`?s.width:s.height;if(c>0)return c;for(let r=e.parentElement;r;r=r.parentElement){let e=n?.getComputedStyle(r)[t],i=Number.parseFloat(e??``);if(i>0&&e?.trim().endsWith(`px`))return i}return e[t]||48},Q=e=>{if(!e)return{};let t={};return e.x!==void 0&&(t.x=e.x),e.y!==void 0&&(t.y=e.y),e.z!==void 0&&(t.z=e.z),t},$=e=>e?e<=.5?`small`:e<=.8?`medium`:`big`:`off`,_e=e=>{let t=new Map,n=new Map;for(let r of e.nodes){let e=r.parent===void 0?void 0:t.get(r.parent),i={kind:r.kind,name:r.options.name,children:[],options:r.options};t.set(r.id,i),i.name&&n.set(i.name,i),e?.children.push(i)}let r=t.get(e.root);if(!r)throw Error(`Portable Zdog scene has no root`);let i=new Map;for(let[n,r]of Object.entries(e.variants)){let e=new Map;for(let[n,i]of Object.entries(r)){let r=t.get(i);if(!r)throw Error(`Portable Zdog variant node is missing: ${i}`);e.set(n,r)}i.set(n,e)}return{root:r,nodesByName:n,variants:i,palette:e.palette,activities:e.activities,expressions:e.expressions}},ve=class{internals;target;view;onInvalidate;maxPixels;originalStyle;originalHasInlineWidth;originalHasInlineHeight;originalWidthAttribute;originalHeightAttribute;illustration;avatar;animationPivot;items=new Map;variantItems=new Map;palette;mouseListener;resizeObserver;animationTween=null;mouthCycleTimeline=null;entryTween=null;mouseX=0;mouseY=0;mouseInfluence=1;dirty=!0;destroyed=!1;paused=!1;lastRenderTime=0;constructor({target:e,scene:t,onInvalidate:n,palette:r,maxPixels:i}){this.target=e,this.view=e.ownerDocument.defaultView,this.onInvalidate=n,this.maxPixels=i,this.originalStyle=e.getAttribute(`style`),this.originalHasInlineWidth=e.style.width!==``,this.originalHasInlineHeight=e.style.height!==``,this.originalWidthAttribute=e.getAttribute(`width`),this.originalHeightAttribute=e.getAttribute(`height`),this.internals=_e(t),this.palette={...this.internals.palette};for(let[e,t]of Object.entries(r??{})){if(!(e in this.internals.palette))throw Error(`Unknown Sprite palette slot: ${e}`);t!==void 0&&(this.palette[e]=t)}let a=Z(e,`width`),o=Z(e,`height`),[s,c]=Y(a,o,i,J(this.view?.devicePixelRatio));e.width=Math.round(s),e.height=Math.round(c),this.illustration=new G.Illustration({element:e,resize:!1,zoom:q(s,c)}),this.illustration.setSize(s,c),this.preserveCanvasStyle(a,o),this.avatar=new G.Group({addTo:this.illustration,rotate:{x:-G.TAU/1.05}}),this.animationPivot=new G.Group({addTo:this.avatar}),this.createScene(this.internals.root,this.animationPivot),this.indexVariants(),this.mouseListener=e=>{this.onMouseMove(e)},this.view?.addEventListener(`mousemove`,this.mouseListener);let l=globalThis.ResizeObserver;this.resizeObserver=new l(()=>{this.destroyed||this.resize()});try{this.resizeObserver.observe(e),this.present({activity:t.defaultPresentation.activity,expression:t.defaultPresentation.expression})}catch(e){throw this.stopAnimations(),this.view?.removeEventListener(`mousemove`,this.mouseListener),this.resizeObserver.disconnect(),e}}present(e){if(this.assertAlive(),!(e.expression in this.internals.expressions))throw Error(`Unknown Sprite expression: ${e.expression}`);if(!(e.activity in this.internals.activities)&&!K.has(e.activity))throw Error(`Unknown Sprite activity: ${e.activity}`);this.stopAnimations();let t=this.activitySpec(e.activity),n=this.internals.expressions[e.expression],r=t.geometry?.expression??e.expression,i=this.internals.expressions[r]??n;this.mouseInfluence=t.mouseInfluence??1,this.applyVariants(i,t.geometry),this.resetPivot(),t.motion&&this.startMotion(t.motion,!0),i?.motion&&this.startMotion(i.motion,!1),t.mouthCycle&&this.internals.variants.get(`mouth`)?.size&&this.startMouthCycle(t.mouthCycle,i),this.dirty=!0,this.pause(this.paused)}setPalette(e){this.assertAlive();for(let t of Object.keys(e))if(!Object.hasOwn(this.internals.palette,t))throw Error(`Unknown Sprite palette slot: ${t}`);Object.assign(this.palette,this.internals.palette,e);for(let[e,t]of this.items){for(let n of[`color`,`backface`,`frontFace`]){let r=e.options[n],i=s(r);i&&(t[n]=this.palette[i])}e.kind===`cylinder`&&t.frontBase!==void 0&&t.rearBase!==void 0&&(t.frontFace?t.frontBase.backface=t.frontFace:t.backface?t.frontBase.backface=t.backface:t.frontBase.backface=!0,t.backface?t.rearBase.backface=t.backface:t.rearBase.backface=!0)}this.dirty=!0,this.onInvalidate()}pause(e){this.paused=e;for(let t of[this.animationTween,this.mouthCycleTimeline,this.entryTween])e?t?.pause():t?.resume()}tick(e){if(this.destroyed||!this.illustration.ctx)return!1;let t=this.hasActiveTween();return(this.dirty||t||this.mouseNeedsRender())&&e-this.lastRenderTime>=1e3/24&&(this.updateMouseTracking(),this.illustration.updateRenderGraph(),this.lastRenderTime=e,this.dirty=!1),this.dirty||this.hasActiveTween()||this.mouseNeedsRender()}renderStill(){this.destroyed||!this.dirty||!this.illustration.ctx||(this.illustration.updateRenderGraph(),this.dirty=!1)}resize(){this.assertAlive();let e=Z(this.target,`width`),t=Z(this.target,`height`),[n,r]=Y(e,t,this.maxPixels,J(this.view?.devicePixelRatio));this.illustration.zoom=q(n,r),this.illustration.setSize(n,r),this.preserveCanvasStyle(e,t),this.dirty=!0,this.onInvalidate()}destroy(){if(this.destroyed)throw Error(`Sprite instance has already been destroyed`);this.destroyed=!0,this.stopAnimations(),this.view?.removeEventListener(`mousemove`,this.mouseListener),this.resizeObserver.disconnect();let e=this.target.getContext(`2d`);e&&e.clearRect(0,0,this.target.width,this.target.height),this.restoreCanvasAttributes()}createScene(e,t){let n={...e.options};delete n.parent,delete n.name,delete n.x,delete n.y,delete n.z,n.addTo=t,n.translate?n.translate=Q(n.translate):(e.options.x!==void 0||e.options.y!==void 0||e.options.z!==void 0)&&(n.translate=Q({x:e.options.x,y:e.options.y,z:e.options.z}));let r=s(n.color);r&&(n.color=this.palette[r]);let i=s(n.backface);i&&(n.backface=this.palette[i]);let a=s(n.frontFace);a&&(n.frontFace=this.palette[a]);let o;switch(e.kind){case`group`:o=new G.Group(n);break;case`shape`:n.path=n.path??[{}],o=new G.Shape(n);break;case`ellipse`:o=new G.Ellipse(n);break;case`hemisphere`:o=new G.Hemisphere(n);break;case`cylinder`:o=new G.Cylinder(n)}this.items.set(e,o);for(let t of e.children)this.createScene(t,o);return o}indexVariants(){for(let[e,t]of this.internals.variants.entries()){let n=new Map;for(let[e,r]of t.entries()){let t=this.items.get(r);t&&n.set(e,t)}this.variantItems.set(e,n)}}applyVariants(e,t){for(let e of this.variantItems.values())for(let t of e.values())t.visible=!1;let n={...e?.variants};for(let[t,r]of Object.entries(e?.variantChoices??{})){let e=r[Math.min(r.length-1,Math.floor(Math.random()*r.length))];e!==void 0&&(n[t]=e)}t?.eyes&&(n.eyes=t.eyes),t?.mouth&&(n.mouth=t.mouth),t?.blush===void 0?e?.blush!==void 0&&(n.blush=$(e.blush)):n.blush=$(t.blush);for(let[e,t]of Object.entries(n)){let n=this.variantItems.get(e)?.get(t);n&&(n.visible=!0)}}activitySpec(e){let t=K.get(e)??{geometry:{},mouseInfluence:1},n=this.internals.activities[e];if(!n)return t;let r=n.motion??t.motion,i=n.mouthCycle??t.mouthCycle,a={...t,...n,geometry:{...t.geometry,...n.geometry}};return r!==void 0&&(a.motion=r),i!==void 0&&(a.mouthCycle=i),a}startMotion(e,t){let n=this.internals.nodesByName.get(e.target),r=n===this.internals.root?this.animationPivot:n?this.items.get(n):void 0;if(!r)return;let i=N({loop:e.repeat===`loop`||e.repeat===`yoyo`,alternate:e.repeat===`yoyo`}),a=e.durationMs??1e3;e.translate&&i.add(r.translate,{...Q(e.translate),duration:a,ease:`inOutSine`},0),e.rotate&&i.add(r.rotate,{...Q(e.rotate),duration:a,ease:`inOutSine`},0),t?this.animationTween=i:this.entryTween=i}startMouthCycle(e,t){let n=[],r=0;for(let i of e)X(i.durationMs,`mouthCycle.durationMs`),r+=i.durationMs,n.push({until:r,mouth:i.mouth===`open`?`open`:t?.variants?.mouth});let i;this.mouthCycleTimeline=d({duration:r,loop:!0,onUpdate:e=>{let t=n.find(t=>e.iterationCurrentTime<t.until)?.mouth;t&&t!==i&&(i=t,this.showVariant(`mouth`,t))},onLoop:()=>{i=void 0}})}showVariant(e,t){let n=this.variantItems.get(e);if(n===void 0)return;let r=n.get(t);if(r!==void 0){for(let e of n.values())e.visible=!1;r.visible=!0,this.dirty=!0}}resetPivot(){Object.assign(this.animationPivot.rotate,{x:0,y:0,z:0}),Object.assign(this.animationPivot.translate,{x:0,y:0,z:0}),Object.assign(this.avatar.rotate,{x:-G.TAU/1.05,y:0,z:0})}stopAnimations(){this.animationTween?.cancel(),this.mouthCycleTimeline?.cancel(),this.entryTween?.cancel(),this.animationTween=null,this.mouthCycleTimeline=null,this.entryTween=null}hasActiveTween(){return[this.animationTween,this.mouthCycleTimeline,this.entryTween].some(e=>e!==null&&!e.paused&&!e.completed&&!e.cancelled)}onMouseMove(e){if(this.destroyed||this.paused)return;let t=this.target.getBoundingClientRect(),n=t.width||1,r=t.height||1;this.mouseX=Math.max(-1,Math.min(1,(e.clientX-t.left-n/2)/(n/2))),this.mouseY=Math.max(-1,Math.min(1,(e.clientY-t.top-r/2)/(r/2))),this.dirty=!0,this.onInvalidate()}updateMouseTracking(){let e=-this.mouseX*.4*this.mouseInfluence,t=-G.TAU/1.05-this.mouseY*.2*this.mouseInfluence,n=(e-this.avatar.rotate.y)*.08,r=(t-this.avatar.rotate.x)*.08;this.avatar.rotate.y+=n,this.avatar.rotate.x+=r,(Math.abs(n)>.001||Math.abs(r)>.001)&&(this.dirty=!0)}mouseNeedsRender(){return Math.abs(this.avatar.rotate.y+this.mouseX*.4*this.mouseInfluence)>.001||Math.abs(this.avatar.rotate.x+G.TAU/1.05+this.mouseY*.2*this.mouseInfluence)>.001}assertAlive(){if(this.destroyed)throw Error(`Sprite instance has been destroyed`)}restoreCanvasAttributes(){this.originalStyle===null?this.target.removeAttribute(`style`):this.target.setAttribute(`style`,this.originalStyle),this.originalWidthAttribute===null?this.target.removeAttribute(`width`):this.target.setAttribute(`width`,this.originalWidthAttribute),this.originalHeightAttribute===null?this.target.removeAttribute(`height`):this.target.setAttribute(`height`,this.originalHeightAttribute)}preserveCanvasStyle(e,t){this.originalStyle!==null&&this.target.setAttribute(`style`,this.originalStyle),this.originalHasInlineWidth||(this.target.style.width=`${String(Math.round(e))}px`),this.originalHasInlineHeight||(this.target.style.height=`${String(Math.round(t))}px`)}},ye=e=>new ve(e),be=e=>n(function*(){let t=c.parse(e.document.data),n=yield*a(o(()=>e.target.ownerDocument.createElement(`canvas`)),e=>o(()=>{e.remove()}));n.style.cssText=`width:100%;height:100%;display:block`,e.target.replaceChildren(n);let s=e.target.ownerDocument.defaultView;if(!s)throw Error(`Zdog avatar requires a browser window`);let l,u=!0,d=!1,f=()=>{u||d||l!==void 0||(l=s.requestAnimationFrame(e=>{l=void 0,m.tick(e)&&f()}))},p=()=>{d||(u?m.renderStill():f())},m=yield*a(o(()=>ye({target:n,scene:t,onInvalidate:p,maxPixels:e.maxPixels})),e=>o(()=>{e.destroy()}));yield*r(()=>o(()=>{d=!0,l!==void 0&&s.cancelAnimationFrame(l)})),m.pause(!0);let h,g;return{activities:[`idle`,`listening`,`processing`,`speaking`,`thinking`,`error`,...Object.keys(t.activities)],expressions:[t.defaultPresentation.expression,...Object.keys(t.expressions)].filter((e,t,n)=>n.indexOf(e)===t),set(e){let n={};for(let[t,r]of Object.entries(e.appearance)){let e=i().safeParse(r);if(!e.success)throw Error(`Zdog palette value must be a color: ${t}`);n[t]=e.data}let r=JSON.stringify(n);r!==g&&(m.setPalette(n),g=r);let a=e.expression??t.defaultPresentation.expression;if(!a)throw Error(`Zdog avatar needs an expression`);let o=JSON.stringify([e.activity,a]);o!==h&&(m.present({activity:e.activity,expression:a}),h=o),p()},pause(e){u=e,m.pause(e),u&&l!==void 0&&(s.cancelAnimationFrame(l),l=void 0),p()}}});export{be as t};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/compat-fz0ZcRJH.js","assets/extension-hook-0UB2lkEs.js","assets/Effect-CxgtVs4O.js","assets/preload-helper-mbhLTglw.js","assets/provider-env-CcCbsTJq.js","assets/rolldown-runtime-hePW80VL.js","assets/diagnostics-CmW2yJSB.js","assets/models-CcNnosqL.js","assets/json-parse-nqKewMRF.js","assets/openai-codex-responses-CA-ivUEd.js","assets/headers-FK4rgixo.js","assets/transform-messages-CrQEqmfx.js","assets/error-body-pkrba6pf.js","assets/openai-prompt-cache-DXo9f3w5.js","assets/openai-responses-shared-DzD8B6NI.js","assets/sanitize-unicode-DmIE6hZJ.js","assets/hash-yQufAZII.js"])))=>i.map(i=>d[i]);
2
+ import{n as e}from"./rolldown-runtime-hePW80VL.js";import{A as t,Gn as n,I as r,In as i,Jn as a,Kn as o,N as s,Nr as c,P as l,Q as u,U as d,Wn as f,X as p,Xn as m,Z as ee,_ as h,_t as te,a as g,at as _,c as v,ct as y,d as ne,dt as b,er as x,ft as re,g as S,gt as C,h as w,ht as T,i as ie,it as ae,lt as E,m as D,n as O,nr as k,o as oe,p as se,q as ce,r as A,rr as j,s as M,t as le,ui as ue,ut as N,vt as de,w as fe,y as P,yt as F,z as pe}from"./Effect-CxgtVs4O.js";import{$ as me,$t as he,A as ge,An as I,At as _e,B as ve,Bi as L,Bt as ye,C as be,Ca as xe,Ci as Se,Cr as Ce,Ct as we,D as Te,Da as Ee,Di as R,Dn as De,Dt as Oe,E as ke,Ea as Ae,Er as je,Et as Me,F as Ne,Fi as Pe,Fn as Fe,Fr as z,Ft as Ie,G as Le,Gr as Re,Gt as ze,H as Be,Ht as Ve,I as He,Ii as B,It as Ue,J as We,Ji as Ge,Jt as Ke,K as qe,Kr as Je,Kt as Ye,L as Xe,Ln as Ze,Lt as Qe,M as $e,Mn as et,Mr as tt,Mt as nt,N as rt,Nn as V,Nr as it,Nt as at,O as ot,On as st,Or as ct,Ot as lt,P as ut,Pi as dt,Pt as ft,Q as pt,Qn as mt,Qt as ht,R as gt,Ri as _t,Rr as vt,Rt as yt,S as bt,Sa as xt,Sr as St,St as Ct,T as wt,Tn as Tt,Tr as H,Tt as Et,U as Dt,Un as Ot,Ur as U,Vi as kt,Vt as At,W as jt,Wr as Mt,Wt as Nt,X as Pt,Xn as Ft,Xr as It,Xt as Lt,Y as Rt,Yr as zt,Yt as Bt,Z as Vt,Zt as Ht,_ as Ut,_n as Wt,_t as Gt,a as Kt,an as qt,ar as Jt,at as Yt,b as Xt,ba as Zt,bn as Qt,bt as $t,c as en,ca as tn,ci as nn,cr as rn,ct as an,d as on,da as sn,di as cn,dn as ln,dr as un,dt as dn,en as fn,et as pn,f as mn,fn as hn,fr as gn,ft as _n,g as vn,gt as yn,h as bn,hr as xn,ht as Sn,i as Cn,in as W,it as wn,j as Tn,ja as En,ji as Dn,jn as On,jr as kn,jt as G,k as An,kt as jn,l as Mn,la as Nn,lt as Pn,m as Fn,ma as In,mr as Ln,mt as Rn,n as zn,nn as Bn,nt as Vn,o as Hn,on as Un,or as K,ot as Wn,p as Gn,pa as Kn,pn as qn,pr as Jn,pt as Yn,q as Xn,qn as Zn,qr as Qn,qt as $n,r as er,rn as tr,rt as nr,s as rr,sa as ir,sn as ar,sr as or,st as sr,t as cr,tn as lr,tt as ur,u as dr,un as fr,ur as pr,ut as mr,v as hr,vr as gr,vt as _r,w as vr,wa as yr,wr as br,wt as xr,x as Sr,xa as Cr,xt as wr,y as Tr,yi as Er,yr as Dr,yt as Or,z as kr,zi as q,zn as Ar,zr as jr,zt as Mr}from"./extension-hook-0UB2lkEs.js";import{d as Nr,g as Pr,t as Fr}from"./preload-helper-mbhLTglw.js";import{d as Ir,f as Lr,u as Rr}from"./index-DRDNbHYF.js";import{a as zr,i as Br,n as Vr,o as Hr,r as Ur,t as Wr}from"./extensions-CAsZR9ky.js";var Gr=_t(()=>gi),Kr=K(Gr),qr=H({id:Dr,payload:gn}),Jr=H({...qr.fields,schemas:Pe(Kr)});function Yr(e){let t={};for(let[n,r]of Object.entries(e))Ge(r)&&c(t,n,r);return Object.keys(t).length===0?x():k(t)}var Xr=Pe(Ce(br,it)).pipe(Qn(B(Jn),{decode:ir(),encode:Nn(e=>a(e)||e.value===void 0?x():Yr(e.value))})),Zr=_t(()=>ei),Qr=K(Zr),$r={annotations:Xr,checks:Qr},ei=tt([H({_tag:q(`Filter`),representation:Jr,annotations:Xr,aborted:rn}),H({_tag:q(`FilterGroup`),representation:Pe(Jr),annotations:Xr,checks:gr(Zr)})]);function J(e){return H({_tag:q(e),...$r})}var ti=H({_tag:q(`Declaration`),representation:qr,annotations:Xr,typeParameters:Kr,checks:Qr}),ni=H({_tag:q(`Suspend`),annotations:Xr,checks:ct([]),thunk:Gr});function ri(e,t){return t.pipe(Qn(H({type:q(e),value:t}),{decode:tn(e=>e.value),encode:tn(t=>({type:e,value:t}))}))}var ii=ri(`string`,br),ai=ri(`number`,St),oi=H({_tag:q(`Literal`),...$r,literal:tt([ii,ri(`number`,pr),ri(`bigint`,or),ri(`boolean`,rn)])}),si=H({_tag:q(`UniqueSymbol`),...$r,symbol:je}),ci=H({_tag:q(`Enum`),...$r,enums:K(ct([br,tt([ii,ai])]))}),li=H({_tag:q(`TemplateLiteral`),...$r,parts:Kr}),ui=H({isOptional:rn,type:Gr,annotations:Xr}),di=H({_tag:q(`Arrays`),...$r,elements:K(ui),rest:Kr}),fi=H({name:tt([ii,ai,ri(`symbol`,je)]),type:Gr,isOptional:rn,isMutable:rn,annotations:Xr}),pi=H({parameter:Gr,type:Gr}),mi=H({_tag:q(`Objects`),...$r,propertySignatures:K(fi),indexSignatures:K(pi)}),hi=H({_tag:q(`Union`),...$r,types:Kr,options:B(H({mode:B(xn([`anyOf`,`oneOf`]))}))}),gi=tt([ti,H({_tag:q(`Reference`),$ref:Dr}),ni,J(`Null`),J(`Undefined`),J(`Void`),J(`Never`),J(`Unknown`),J(`Any`),J(`String`),J(`Number`),J(`Boolean`),J(`BigInt`),J(`Symbol`),J(`ObjectKeyword`),oi,si,ci,li,di,mi,hi]),_i=Je(L(H({representation:Gr,references:Ce(br,Gr)})));function vi(e){return _i(e)}var yi=Symbol.for(`@fungi.computer/shiitake/extension-definition-reader`);function bi(e){return e[yi]?.()}var xi=0xffffffffffff,Si=(1n<<41n)-1n,Ci=-1,Y;function wi(e){let t=e??Date.now();if(!Number.isInteger(t)||t<0||t>xi)throw RangeError(`UUIDv7 timestamp must be an integer between 0 and ${xi}`);let n=e===void 0?Math.max(t,Ci):e;e===void 0&&(Ci=n);let r=new Uint8Array(16);if(globalThis.crypto.getRandomValues(r),Y===void 0)Y=BigInt(r[1])<<32n|BigInt(r[2])<<24n|BigInt(r[3])<<16n|BigInt(r[4])<<8n|BigInt(r[5]);else{if(Y===Si)throw RangeError(`UUIDv7 generator sequence exhausted`);Y++}let i=BigInt(n);for(let e=5;e>=0;e--)r[e]=Number(i>>BigInt((5-e)*8))&255;r[6]=112|Number(Y>>37n&15n),r[7]=Number(Y>>29n&255n),r[8]=128|Number(Y>>23n&63n),r[9]=Number(Y>>15n&255n),r[10]=Number(Y>>7n&255n),r[11]=Number((Y&127n)<<1n)|r[11]&1;let a=Array.from(r,e=>e.toString(16).padStart(2,`0`));return`${a.slice(0,4).join(``)}-${a.slice(4,6).join(``)}-${a.slice(6,8).join(``)}-${a.slice(8,10).join(``)}-${a.slice(10).join(``)}`}function Ti(e){return xt(e,{onFailure:h,onSuccess:()=>F})}function Ei(e,t){return pe(e,{onFailure:e=>w(t).pipe(g(h(e))),onSuccess:()=>t})}function Di(e,t){let n={_tag:`open`},r=r=>Ei(e,t).pipe(w,P(e=>N(()=>{r.result=e,n={_tag:`closed`}}).pipe(g(r.settled.open),g(Ti(e)))),te);return E(()=>{if(n._tag===`closed`)return F;if(n._tag!==`open`){let e=n;return e.settled.await.pipe(g(E(()=>{let t=e.result;return t===void 0?se(Error(`Agent close settlement was not recorded`)):Ti(t)})))}let e={_tag:`running`,settled:mt(!1)};return n=e,r(e)})}function Oi(e,t,n,r){let i=We(e,t);if(n.state===`idle`)return{facts:{queue:{state:`idle`},cancellationRequested:!1,retry:null,activeTool:null,lastModelChoiceSequence:i,compaction:null},progress:null};if(n.state===`queued`)return{facts:{queue:{state:`queued`,commandId:n.jobId,runningWork:r},cancellationRequested:n.cancellationRequested,retry:null,activeTool:null,lastModelChoiceSequence:i,compaction:null},progress:null};let a=Rt(e,t,n.jobId),o=a?.event.type===`auto_retry_start`?{attempt:a.event.attempt,maxAttempts:a.event.maxAttempts,delayMs:a.event.delayMs,errorMessage:a.event.errorMessage,scheduledAt:a.timestamp}:null;return{facts:{queue:{state:`running`,commandId:n.jobId},cancellationRequested:n.cancellationRequested,retry:o,activeTool:Xn(e,t,n.jobId)??null,lastModelChoiceSequence:i,compaction:gt(e,t)},progress:kr(e,t,n.jobId)}}function ki(e){return new V(`model`,`rejected`,e)}function Ai(e,t){let n={input:e.input+t.input,output:e.output+t.output,cacheRead:e.cacheRead+t.cacheRead,cacheWrite:e.cacheWrite+t.cacheWrite,totalTokens:e.totalTokens+t.totalTokens,cost:{input:e.cost.input+t.cost.input,output:e.cost.output+t.cost.output,cacheRead:e.cost.cacheRead+t.cost.cacheRead,cacheWrite:e.cost.cacheWrite+t.cost.cacheWrite,total:e.cost.total+t.cost.total}};return(e.cacheWrite1h!==void 0||t.cacheWrite1h!==void 0)&&(n.cacheWrite1h=(e.cacheWrite1h??0)+(t.cacheWrite1h??0)),(e.reasoning!==void 0||t.reasoning!==void 0)&&(n.reasoning=(e.reasoning??0)+(t.reasoning??0)),n}function ji(e){let t;for(let n of e)n.kind===`compaction`&&(t=n);let n=t,r=n===void 0?0:Math.max(0,e.findIndex(({id:e})=>e===n.firstKeptEntryId)),i=e.flatMap((e,t)=>e.kind===`message`&&t>=r?[e.message]:[]);return n===void 0?i:[Rn(n.summary,n.timestamp),...i]}function Mi(e,t,n){let r=yn(),i=t[n];if(i?.kind===`compaction`&&i.details!==void 0){for(let e of i.details.readFiles)r.read.add(e);for(let e of i.details.modifiedFiles)r.edited.add(e)}for(let t of e)Or(t,r);return r}function Ni(e){return e.role!==`toolResult`}function Pi(e,t,n,r){let i=e.flatMap((e,r)=>e.kind===`message`&&r>=t&&r<n&&Ni(e.message)?[r]:[]),a=i[0];if(a===void 0)return;let o=0,s=a;for(let a=n-1;a>=t;--a){let t=e[a];if(t?.kind===`message`&&(o+=_r(t.message),o>=r)){s=i.find(e=>e>=a)??i.at(-1)??s;break}}return s}function Fi(e,t,n){let r=e[n],i=r?.kind===`message`&&r.message.role===`user`,a=-1;if(!i)for(let r=n;r>=t;--r){let t=e[r];if(t?.kind===`message`&&t.message.role===`user`){a=r;break}}return{isSplitTurn:!i&&a>=0,turnStartIndex:a}}function Ii(e,t,n,r){let i=Pi(e,t,n,r);return i===void 0?{firstKeptEntryIndex:t,isSplitTurn:!1,turnStartIndex:-1}:{firstKeptEntryIndex:i,...Fi(e,t,i)}}function Li(e,t){if(e.at(-1)?.kind===`compaction`)return;let n,r=-1,i=0;for(let t=e.length-1;t>=0;--t){let a=e[t];if(a?.kind===`compaction`){n=a.summary,r=t;let o=e.findIndex(e=>e.id===a.firstKeptEntryId);i=o>=0?o:t+1;break}}let a=e.flatMap((e,t)=>e.kind===`message`&&t>=i?[e]:[]),o=Gt(ji(e)).tokens,s=Ii(a,0,a.length,t.keepRecentTokens),c=a[s.firstKeptEntryIndex];if(c?.kind!==`message`)return;let l=s.isSplitTurn?s.turnStartIndex:s.firstKeptEntryIndex,u=Object.freeze(a.slice(0,l).map(({message:e})=>e)),d=Object.freeze(s.isSplitTurn?a.slice(s.turnStartIndex,s.firstKeptEntryIndex).map(({message:e})=>e):[]);if(u.length===0&&d.length===0)return;let f=Mi(u,e,r);for(let e of d)Or(e,f);let p={firstKeptEntryId:c.id,messagesToSummarize:u,turnPrefixMessages:d,isSplitTurn:s.isSplitTurn,tokensBefore:o,fileOps:f,settings:t};return n===void 0?p:{...p,previousSummary:n}}var Ri={enabled:!0,maxRetries:3,baseDelayMs:2e3};function zi(e,t,n,r){let i={...n,cacheRetention:`none`,sessionId:n.sessionId??wi()};return Wt(()=>r?Promise.resolve(r(e,Nr(t),i)).then(e=>e.result()):Fr(async()=>{let{completeSimple:e}=await import(`./compat-fz0ZcRJH.js`);return{completeSimple:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16])).then(({completeSimple:n})=>n(e,t,i)),Ri,i.signal)}function Bi(e){return{systemPrompt:dn,messages:[{role:`user`,content:[{type:`text`,text:e}],timestamp:Date.now()}]}}function Vi(e,t,n){let r=e.previousSummary??``,i=t?Yn:mr,a=n===void 0?i:`${i}\n\nAdditional focus: ${n}`;return`<conversation>\n${wr(e.messagesToSummarize)}\n</conversation>\n\n${t?`<previous-summary>\n${r}\n</previous-summary>\n\n`:``}${a}`}function Hi(e){return`# Conversation\n${wr(e.turnPrefixMessages)}\n\n# Instructions\n${_n}`}async function Ui(e,t,n,r,i,a){let o=n===void 0?{maxTokens:t}:{maxTokens:t,signal:n},s=await zi(e,Bi(r),o,a),c=we(s,i);if(c!==void 0)throw Error(c);return s}function Wi(e,t,n,r,i,a){return e.messagesToSummarize.length===0?Promise.resolve(void 0):Ui(t,n,r,Vi(e,e.previousSummary!==void 0&&e.previousSummary.length>0,i),`Summarization`,a)}function Gi(e,t,n,r){return!e.isSplitTurn||e.turnPrefixMessages.length===0?Promise.resolve(void 0):Ui(t,Math.min(Math.floor(.5*e.settings.reserveTokens),t.maxTokens>0?t.maxTokens:1/0),n,Hi(e),`Turn prefix summarization`,r)}function Ki(e,t,n){let r,i;if(e.isSplitTurn){if(n===void 0)throw Error(`Split-turn compaction did not produce a prefix summary`);r=`${t===void 0?e.previousSummary??`No prior history.`:Pr(t.content)}\n\n---\n\n**Turn Context (split turn):**\n\n${Pr(n.content)}`,i=t===void 0?n.usage:Ai(t.usage,n.usage)}else{if(t===void 0)throw Error(`Compaction did not produce a history summary`);r=Pr(t.content),i=t.usage}let a=Sn(e.fileOps);return{summary:r+$t(a.readFiles,a.modifiedFiles),firstKeptEntryId:e.firstKeptEntryId,tokensBefore:e.tokensBefore,usage:i,details:a}}async function qi(e,t,n,r,i){return Ki(e,await Wi(e,t,Math.min(Math.floor(.8*e.settings.reserveTokens),t.maxTokens>0?t.maxTokens:1/0),n,r,i),e.isSplitTurn&&e.turnPrefixMessages.length>0?await Gi(e,t,n,i):void 0)}function Ji(e,t,n,r){return T({try:i=>qi(e,t,i,r,n),catch:e=>ki(e instanceof Error?e.message:String(e))})}function Yi(e,t,n){return{messagesToSummarize:e.messagesToSummarize,turnPrefixMessages:e.turnPrefixMessages,result:t,contextRevision:n}}function Xi(e){return new V(`runtime`,`rejected`,e)}var Zi={handoff:`The compaction handoff failed; the conversation context is unchanged`,conflict:`The Session changed during compaction; the conversation context is unchanged`},Qi=class extends V{phase;constructor(e){super(e===`conflict`?`store`:`runtime`,e===`conflict`?`conflict`:`rejected`,Zi[e]),this.phase=e}get diagnostic(){return Zi[this.phase]}};function $i(e,t){let n=wn(e,t),r=Vn(e),i=[];for(let t of e){let e=$n(t.entry);if(e!==void 0&&!r.has(e.workId)){i.push({id:t.id,kind:`message`,message:Nt(e)});continue}if(t.entry.kind===`operator`){i.push({id:t.id,kind:`message`,message:Ye(t.entry)});continue}if(t.entry.kind===`message`){n.has(t.id)&&i.push({id:t.id,kind:`message`,message:t.entry.value});continue}if(t.entry.kind===`compaction`){let e={id:t.id,kind:`compaction`,timestamp:t.timestamp,firstKeptEntryId:t.entry.firstKeptEntryId,summary:t.entry.summary,usage:t.entry.usage};i.push(t.entry.details===void 0?e:{...e,details:t.entry.details})}}return i}function ea(e,t,n){return C({try:()=>Vt(e,{sessionId:t,workId:n}),catch:e=>e instanceof V&&e.cause===`context_too_large`?e:Xi(`Woodstock selected lineage is unavailable`)})}function ta(e,t){let n=e.reduce((e,t)=>t.entry.kind===`compaction`?t.timestamp:e,void 0),r=Gt(t),i=r.lastUsageIndex,a=i===null?void 0:t[i];return n===void 0||a?.role!==`assistant`||a.timestamp>n?r.tokens:t.reduce((e,t)=>e+_r(t),0)}function na(e,t,n,r){let i={...t,id:`${t.id}:compaction`,parentId:t.id,sequence:t.sequence+1,timestamp:Date.now(),entry:n};return Dt([...e,i],r).reduce((e,t)=>e+_r(t),0)}function ra(e,t,n){return E(()=>(He(e.store,e.sessionId,n.trigger),ia(e,t,n).pipe(D(N(()=>{Xe(e.store,e.sessionId)})))))}function ia(e,n,i){return t(function*(){let t=Li($i(n,e.workId),e.settings);if(t===void 0)return;let a=n.at(-1);if(a===void 0)return;let o=yield*Ji(t,e.model,e.stream,i.instructions);e.handoff!==void 0&&(yield*e.handoff.consume(Yi(t,o,a.id)).pipe(r(()=>new Qi(`handoff`))));let s=na(n,a,{kind:`compaction`,resumesRun:i.resumesRun,trigger:i.trigger,workId:e.workId,firstKeptEntryId:o.firstKeptEntryId,summary:o.summary,tokensBefore:o.tokensBefore,usage:o.usage,contextRevision:a.id},e.workId),c=yield*C({try:()=>on(e.store,{sessionId:e.sessionId,resumesRun:i.resumesRun,trigger:i.trigger,tokensAfter:s,expectedLeafId:a.id,workId:e.workId,firstKeptEntryId:o.firstKeptEntryId,summary:o.summary,tokensBefore:o.tokensBefore,usage:o.usage,contextRevision:a.id,details:o.details}),catch:e=>e instanceof V?e.cause===`conflict`?new Qi(`conflict`):e:Xi(`Woodstock compaction append failed`)}),l=[...n,c];return{path:l,messages:Dt(l,e.workId)}})}function aa(e){return e instanceof Qi?e.diagnostic:e.boundary===`model`?e.message:`Compaction failed (${e.boundary}: ${e.cause})`}function oa(e,t,n){return C({try:()=>{dr(e.store,{sessionId:e.sessionId,workId:e.workId,trigger:t,result:n===void 0?`nothing_to_compact`:`failed`,diagnostic:n===void 0?void 0:aa(n)})},catch:e=>e instanceof V?e:Xi(`Compaction notice could not be recorded`)})}function sa(e,t,n){return u(ra(e,t,n)).pipe(P(t=>t._tag===`Success`?y(t.success):oa(e,n.trigger,t.failure).pipe(M(void 0))))}function ca(e){return e.resuming===!0||!Ct(ta(e.path,e.messages),e.model.contextWindow,e.settings)?y({path:e.path,messages:e.messages}):sa(e,e.path,{trigger:`threshold`,resumesRun:!1}).pipe(l(t=>t??{path:e.path,messages:e.messages}))}function la(e,t){let n=ln(e.message,t.contextWindow),r=Qt(e.message,t.maxTokens);return{triggered:n||r,overflow:n,retry:(n||r)&&e.message.stopReason!==`stop`}}function ua(e){let t=e.at(-1);return t?.role===`assistant`&&(t.stopReason===`error`||t.stopReason===`length`)?e.slice(0,-1):e}function da(e,t,n,r){if(!e.settings.enabled)return y(void 0);let i=Ct(ta(t.path,[...t.messages,...n.messages.slice(t.newMessageCount)]),e.model.contextWindow,e.settings);return r.triggered||i?ea(e.store,e.sessionId,e.workId):y(void 0)}function fa(e,n){return(r,i)=>t(function*(){if(!Ct(ta(n.path,r),e.model.contextWindow,e.settings))return;let t=yield*sa(e,yield*ea(e.store,e.sessionId,e.workId),{trigger:`threshold`,resumesRun:!1});if(t!==void 0)return n.path=t.path,n.messages=t.messages,n.newMessageCount=i,t.messages})}function pa(e,n){return t(function*(){let t=n,r=n.path.some(({entry:t})=>t.kind===`compaction`&&t.workId===e.workId&&t.resumesRun===!0);for(;;){let n={path:t.path,messages:t.messages,newMessageCount:0},i=yield*e.run(n.messages,fa(e,n)),a=la(i,e.model),o=yield*da(e,n,i,a);if(o===void 0||a.retry&&r)return i;let s=yield*sa(e,o,{trigger:a.overflow?`overflow`:`threshold`,resumesRun:a.retry});if(s===void 0||!a.retry)return i;t={path:s.path,messages:ua(s.messages)},r=!0}})}function ma(e){return e.settings.enabled?ca(e).pipe(P(t=>pa(e,t))):pa(e,e)}function ha(e){return e.path.some(({entry:t})=>(t.kind===`compaction`||t.kind===`compaction_notice`)&&t.workId===e.workId)?y(`compacted`):ra(e,e.path,{trigger:`manual`,resumesRun:!1,instructions:e.instructions}).pipe(re(t=>oa(e,`manual`,t)),P(t=>t===void 0?oa(e,`manual`,void 0).pipe(M(`nothing_to_compact`)):y(`compacted`)))}function ga(e,t){let n=Vt(e,{sessionId:t}),r=Dt(n);return r.length===0?null:ta(n,r)}var _a=new WeakMap;function va(e){let t=_a.get(e);if(t!==void 0)return t;let n=new Map;return _a.set(e,n),n}function ya(e,n,r){return t(function*(){let t=yield*u(C({try:()=>({tokens:ga(e.store,r),preference:me(e.store,r)}),catch:e=>e}));if(t._tag===`Failure`||t.success.tokens===null)return;let{tokens:i,preference:a}=t.success,o=va(n),s=JSON.stringify(a),c=o.get(r);if(c?.preference===s)return Object.freeze({tokens:i,window:c.window});let d=e.model.describe;if(d===void 0)return Object.freeze({tokens:i,window:null});let f=yield*d({sessionId:r,preference:a}).pipe(l(({contextWindow:e})=>e),ne(e=>N(()=>{qt(`session-context.describe`,e)})));return f===void 0?Object.freeze({tokens:i,window:null}):(o.set(r,{preference:s,window:f}),Object.freeze({tokens:i,window:f}))})}function ba(e){return Object.freeze({list:e.assertOpen.pipe(l(()=>e.extensions.list())),resume:t=>e.assertOpen.pipe(g(e.extensions.resume(t))),call:(t,n,r)=>e.assertOpen.pipe(g(e.extensions.call({scope:`agent`},t,n,r)))})}function xa(e,t,n){return t.readQueueHead(n).pipe(P(r=>(r.state===`queued`?t.runningWork(r.jobId):y(null)).pipe(l(t=>Oi(e.store,n,r,t)))))}function Sa(e,t){return t===void 0?e:Object.freeze({...e,context:t})}function Ca(e,t,n,r){return xa(e,t,n).pipe(P(i=>bt(e.store,n,i,r,()=>t.extensions.project(n))),P(r=>ya(e,t,n).pipe(l(e=>Sa(r,e)))))}function wa(e,t,n){return e.assertOpen.pipe(g(C({try:()=>n(I(t)),catch:e=>e instanceof V?e:new V(`store`,`rejected`,`Session owner operation failed`)})))}function Ta(e,t){return C({try:()=>{let n=st(t);if(n._tag===`Failure`)throw new V(`contract`,`invalid`,`Session command is invalid`);return Object.freeze({sessionId:I(e),command:n.success})},catch:e=>e instanceof V?e:new V(`contract`,`invalid`,`Session command is invalid`)})}function Ea(e,t){return C({try:()=>Object.freeze({sessionId:I(e),options:On(t)}),catch:e=>e instanceof V?e:new V(`contract`,`invalid`,`Subscribe options are invalid`)})}function Da(e,t,n,r=!1){return t.assertOpen.pipe(g(Ca(e,t,n,{includeSandboxFailures:r})),l(e=>Object.freeze({kind:`reset`,reason:`history_unavailable`,cursor:e.cursor,baseline:e})))}function Oa(e){return[[e],k({after:e.cursor??void 0,delivery:e.baseline.hasMore?`replay`:`live`,awaitSignal:!e.baseline.hasMore})]}function ka(e,t,n,r,i,a,o=!1){return Zn({after:i,delivery:a,awaitSignal:!1},i=>(i.awaitSignal?n.awaitSignal.pipe(P(e=>n.pollSignal.pipe(l(t=>t===void 0?e:Bn(e,t))))):n.pollSignal).pipe(P(n=>n===`closed`?y([[],x()]):n===`reset`?Da(e,t,r,o).pipe(l(Oa)):t.assertOpen.pipe(g(xa(e,t,r)),P(a=>n===`progress`&&i.delivery===`live`&&a.progress!==null?y([[{kind:`progress`,progress:a.progress,activity:a.facts}],k({...i,awaitSignal:!0})]):vr(e.store,r,i.after,i.delivery,a,()=>t.extensions.project(r),o).pipe(P(n=>{if(n.kind===`reset`)return Da(e,t,r,o).pipe(l(Oa));let a={after:n.frames.flatMap(e=>e.kind===`progress`?[]:[e.cursor]).at(-1)??i.after,delivery:n.hasMore?i.delivery:`live`,awaitSignal:!n.hasMore};return(n.frames.some(e=>e.kind===`update`)?ya(e,t,r):y(void 0)).pipe(l(e=>[e===void 0?n.frames:n.frames.map(t=>t.kind===`update`?Object.freeze({...t,context:e}):t),k(a)]))})))))))}function Aa(e,t,n,r,i){return Ft(t.assertOpen.pipe(g(Ea(r,i)),P(r=>le(n.register(r.sessionId),e=>N(e.close)).pipe(l(n=>ka(e,t,n,r.sessionId,r.options.after,`replay`,r.options.includeSandboxFailures===!0))))))}function ja(e,t){return C({try:()=>Object.freeze({sessionId:I(e),options:De(t)}),catch:e=>e instanceof V?e:new V(`contract`,`invalid`,`Watch options are invalid`)})}function Ma(e,n,r,i,a){return n.assertOpen.pipe(g(ja(i,a)),P(i=>de(a=>t(function*(){let t=yield*r.register(i.sessionId);return yield*a(n.assertOpen.pipe(g(Ca(e,n,i.sessionId,i.options)),l(r=>Object.freeze({snapshot:r,changes:ka(e,n,t,i.sessionId,r.cursor??void 0,`live`,i.options.includeSandboxFailures===!0).pipe(Ot(N(t.close))),close:N(t.close)})))).pipe(d(()=>N(t.close)))}))))}function Na(e,t,n,r,i,a){let o={sessionId:t,command:n,when:`now`,origin:{kind:`user`}};return r!==void 0&&(o={...o,meta:r}),i!==void 0&&(o={...o,mail:i}),a!==void 0&&(o={...o,reply:a}),e.assertOpen.pipe(g(e.door.admit(o)),P(e=>e.status===`accepted`?y({status:`accepted`,commandId:e.commandId}):S(new V(`runtime`,`unavailable`,`Session command was not admitted`))))}function Pa(e,t,n,r,i){return t.assertOpen.pipe(g(Gn(e.store,n,r.commandId,r.onlyIfPending,()=>t.readQueueHeadTransactional(n),t.recordAcceptedCancellation,i)),P(e=>e===void 0?y({status:`too_late`,commandId:r.commandId}):(e.active?t.signalCancellation(e.accepted.commandId,e.accepted.entryId):t.requestWake).pipe(M({status:`accepted`,commandId:e.accepted.commandId}))))}function Fa(e,t,n,r){return t.assertOpen.pipe(g(t.commit(Mn(e.store,n,()=>t.readQueueHeadTransactional(n),t.recordAcceptedCancellation,r))),P(e=>e===void 0?t.requestWake:t.signalCancellation(e.commandId,e.entryId)))}function Ia(e,t,n,r){return t.assertOpen.pipe(g(mn(e.store,{sessionId:n,type:`branch`,entryId:r.entryId,assertIdleSession:t.assertIdleSession})),M(void 0))}function La(e,t,n,r){return t.assertOpen.pipe(g(vn(e.store,{sessionId:n,type:`fork`,entryId:r.entryId,assertIdleSession:t.assertIdleSession})))}function Ra(e,t,n,r,i){return t.assertOpen.pipe(g(Ta(n,i)),P(t=>za(e,r).pipe(l(e=>({...t,checked:e})))),P(({sessionId:n,command:r,checked:i})=>{switch(r.type){case`prompt`:case`compact`:return Na(t,n,r,i);case`abort`:return Fa(e,t,n,i).pipe(M(void 0));case`cancel`:return Pa(e,t,n,r,i);case`branch`:return Ia(e,t,n,r);case`fork`:return La(e,t,n,r);case`operator`:return t.assertOpen.pipe(g(ge(e.store,{sessionId:n,requestId:r.requestId,author:r.author,meta:i,text:r.text,assertIdleSession:t.assertIdleSession})),M(void 0));case`title`:return t.commit(wa(t,n,t=>{ur(e.store,t,r.title)})).pipe(M(void 0))}}))}function za(e,t){return C({try:()=>t===void 0?void 0:Ht(e.meta,t),catch:e=>e instanceof V?e:new V(`contract`,`invalid`,`Host metadata is invalid`)})}function Ba(e,t){let n=tr(e.store),i=(i,a)=>{function o(n){return Ra(e,t,i,a,n)}return Object.freeze({command:o,abort:o({type:`abort`}),send:(e,t)=>N(()=>t?.requestId??Jt()).pipe(P(n=>{let i={type:`prompt`,delivery:t?.delivery??`steer`,requestId:n,text:e};return o(t?.images===void 0?i:{...i,images:t.images}).pipe(r(e=>e.requestId===n?e:new V(e.boundary,e.cause,e.message,n)))})),cancel:e=>o({type:`cancel`,...e}),modelPreference:Object.freeze({read:wa(t,i,t=>me(e.store,t)),set:n=>C({try:()=>Fe(n),catch:()=>new V(`contract`,`invalid`,`Model preference is invalid`)}).pipe(P(n=>t.commit(wa(t,i,t=>(pn(e.store,t,n),t))).pipe(b(t=>N(()=>{W(e.store,t)})),v)))}),extension:e=>Object.freeze({call:(n,r)=>t.assertOpen.pipe(g(t.extensions.call({scope:`session`,sessionId:i},e,n,r)))}),read:n=>t.assertOpen.pipe(g(Ca(e,t,i,n))),subscribe:r=>Aa(e,t,n,i,r),watch:r=>Ma(e,t,n,i,r)})},a=Object.freeze({createSession:n=>t.assertOpen.pipe(g(Fn(e.store,n,t.storage.admitNew))),deleteSession:n=>t.assertOpen.pipe(g(bn(e.store,{sessionId:n,assertIdleSession:t.assertIdleSession}))),listSessions:n=>t.assertOpen.pipe(g(be(e.store,n))),extensions:ba(t),session:e=>i(e,void 0),close:t.beginClose.pipe(g(n.close))});return Object.freeze({...a,grants:Object.freeze({deliver:(n,r)=>wa(t,n,t=>e.store.transactionSync(()=>sr(e.store,t,r))),read:n=>wa(t,n,t=>an(e.store,t))}),withMeta:e=>Object.freeze({...a,session:t=>i(t,e)})})}function Va(e,t,n,r){return Na(e,t.to.sessionId,{requestId:t.key,delivery:r===void 0?`followUp`:`steer`,type:`prompt`,text:t.content},n,t,r)}var Ha=H({fork:xn([`inherit-at-fork-point`,`current`,`fresh`]),maxBytes:un.pipe(z(nn(0)),z(Er(2**53-1)))});function Ua(e,t){let n=zt(e.schema)(t);if(n._tag===`Failure`)throw new Br({reason:`encode`,message:`Session document does not match its schema`});let r=U(Un)(n.success);if(r._tag===`Failure`)throw new Br({reason:`encode`,message:`Session document must encode finite JSON`});let i=JSON.stringify(r.success);if(new TextEncoder().encode(i).byteLength>e.maxBytes)throw new Br({reason:`bound`,message:`Session document exceeds maxBytes`});return i}function Wa(e){return{...Mt(Ha)(e),schema:vi(kt(e.schema)),initial:Ua(e,e.initial)}}var Ga=64,Ka=xn([`state`,`attention`,`settled`,`send`,`timers`,`commands`,`projection`,`run_tools`,`files`,`prompt`,`compaction_handoff`]),qa=K(Ka).pipe(z(Se(10))),Ja=H({protocol:Ln(`shiitake.extension/v0`),id:Hn,version:en,requests:qa}),Ya=K(H({id:Hn,capabilities:qa,grantKey:B(Hn)})).pipe(z(Se(Ga))),Xa=br.pipe(z(Dn(/^[a-z][A-Za-z0-9_]{0,63}$/u))),Za=U(Ja,{onExcessProperty:`error`}),Qa=U(Ya,{onExcessProperty:`error`}),$a=U(Xa);function X(e){return new V(`extensions`,`invalid`,e)}function eo(e){return new Set(e).size!==e.length}function to(e){return JSON.stringify(e,(e,t)=>ue(t)?Object.fromEntries(Object.entries(t).sort(([e],[t])=>e<t?-1:+(e>t))):t)}function no(e){return T({try:async()=>{let t=await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(e));return Array.from(new Uint8Array(t),e=>e.toString(16).padStart(2,`0`)).join(``)},catch:()=>new V(`extensions`,`rejected`,`Extension digest failed`)})}function ro(e,t){let{manifest:n,contract:r,state:i,config:a,catalog:o}=e,s={manifest:{protocol:n.protocol,id:n.id,version:n.version,requests:[...n.requests].sort()},commands:Object.fromEntries(Object.entries(r.commands).map(([e,t])=>[e,{scope:t.scope,input:vi(kt(t.input)),output:vi(kt(t.output))}])),projection:r.projection===null?null:vi(kt(r.projection.schema)),state:{version:i.version,collections:Object.fromEntries(Object.entries(i.collections).map(([e,t])=>[e,vi(kt(t.schema))]))},config:a},c=Object.keys(t).length===0?s:{...s,documents:Object.fromEntries(Object.entries(t).map(([e,t])=>[e,Wa(t)]))};return o===void 0?c:{...c,catalog:o}}function io(e){if(Za(e.manifest)._tag===`Failure`)throw X(`Extension manifest is invalid`);let t=e.manifest;if(eo(t.requests))throw X(`Extension capability requests are invalid`);if(e.contract.id!==t.id)throw X(`Extension contract identity does not match its manifest`);if(!Number.isSafeInteger(e.state.version)||e.state.version<1)throw X(`Extension state version is invalid`);for(let t of Object.keys(e.state.collections))if(t===`update`||t===`read`||t===`observe`||$a(t)._tag===`Failure`)throw X(`Extension collection name is invalid`);if(e.catalog!==void 0&&!t.requests.includes(`commands`))throw X(`An extension catalog requires the commands capability`);return t}function ao(e){return t(function*(){let n=e?.roster??[],r=e?.grants??[],i=yield*C({try:()=>{if(n.length>Ga)throw X(`Extension roster is invalid`);let e=n.map(e=>{let t=bi(e);if(t===void 0)throw X(`Extension roster entry was not defined`);let n=t.documents??{};for(let[e,t]of Object.entries(n)){if($a(e)._tag===`Failure`)throw X(`Session document name is invalid`);Wa(t)}let r=io(t);if(Object.keys(n).length>0&&!r.requests.includes(`state`))throw X(`Session documents require the state capability`);return{definition:t,documents:n,manifest:r}});if(eo(e.map(({manifest:e})=>e.id)))throw new V(`extensions`,`conflict`,`Extension identities conflict`);let t=Qa(r);if(t._tag===`Failure`)throw X(`Extension grants are invalid`);if(eo(t.success.map(({id:e})=>e)))throw X(`Extension grant identities are invalid`);let i=new Map;for(let n of t.success){let t=e.find(({manifest:e})=>e.id===n.id);if(t===void 0||eo(n.capabilities)||n.capabilities.some(e=>!t.manifest.requests.includes(e)))throw X(`Extension grant is invalid`);i.set(n.id,n.capabilities)}if(e.filter(({manifest:e})=>i.get(e.id)?.includes(`compaction_handoff`)).length>1)throw new V(`extensions`,`conflict`,`Compaction handoff slot is already owned`);if(e.filter(({manifest:e})=>i.get(e.id)?.includes(`files`)).length>1)throw new V(`extensions`,`conflict`,`Files slot is already owned`);return e.map(e=>({...e,grants:i.get(e.manifest.id)??[]})).sort((e,t)=>e.manifest.id<t.manifest.id?-1:+(e.manifest.id>t.manifest.id))},catch:e=>e instanceof V?e:X(`Extension roster is invalid`)});return yield*fe(i,e=>t(function*(){let t=`sha256:${yield*no(yield*C({try:()=>to(ro(e.definition,e.documents)),catch:()=>X(`Extension schemas cannot be described`)}))}`,n=[...e.grants].sort(),r=`sha256:${yield*no(to([t,n]))}`;return Object.freeze({id:e.manifest.id,manifest:e.manifest,definition:e.definition,documents:e.documents,grants:new Set(n),revision:Mt(rr)(t),fingerprint:Mt(Kt)(r)})}))})}function oo(e){return no(to({protocol:`shiitake.extension/v0`,runContract:1,fileTools:[...e].sort()}))}var so=un.pipe(z(cn(0)),z(Er(2**53-1))),co=H({reserveTokens:B(so),keepRecentTokens:B(so)}),lo=H({enabled:B(rn),reserveTokens:B(so),keepRecentTokens:B(so),modelOverrides:B(Ce(br,co))}),uo=U(lo,{onExcessProperty:`error`});function fo(e){let t=uo(e??{});if(t._tag===`Failure`)throw new V(`contract`,`invalid`,`Compaction settings must be non-negative whole token counts`);let n=t.success;return e=>{let t=n.modelOverrides?.[`${e.provider}/${e.id}`];return{enabled:n.enabled??Pn.enabled,reserveTokens:t?.reserveTokens??n.reserveTokens??Pn.reserveTokens,keepRecentTokens:t?.keepRecentTokens??n.keepRecentTokens??Pn.keepRecentTokens}}}function po(e){return new V(`runtime`,`rejected`,e)}var mo={missing:`Instruction capabilities have no tool runtime`,runtime:`Tool runtime failed`,lease:`Tool lease failed`},ho=class extends V{phase;constructor(e){super(`runtime`,`rejected`,mo[e]),this.phase=e}get diagnostic(){return mo[this.phase]}};function go(e){return e.type===`retry_attempt_started`?{type:`auto_retry_attempt`,run:e.run,attempt:e.attempt}:e.type===`retry_scheduled`?{type:`auto_retry_start`,run:e.run,attempt:e.attempt,maxAttempts:e.maxAttempts,delayMs:e.delayMs,errorMessage:e.errorMessage}:e.finalError===void 0?{type:`auto_retry_end`,run:e.run,attempt:e.attempt,success:e.success}:{type:`auto_retry_end`,run:e.run,attempt:e.attempt,success:e.success,finalError:e.finalError}}function _o(e,n,i,a,o,s,c){let l=e.tools,u=o.modules??[],d=[...u,...s];return l===void 0?u.length>0||c.length>0?S(new ho(`missing`)):y([]):t(function*(){let t={sessionId:n,commandId:i};a!==void 0&&(t={...t,meta:a});let o={sources:l.sources,session:t,sandbox:l.sandbox,onSandboxFailure:t=>Tn(e.store,{sessionId:n,commandId:i},t).pipe(ce),modules:[...l.modules,...d],tools:c,access:{...l.access,sessionGrants:()=>an(e.store,n)?.grants??{}}},s=yield*(yield*fr(l.execution===void 0?o:{...o,execution:l.execution}).pipe(r(()=>new ho(`runtime`)))).acquire().pipe(r(()=>new ho(`lease`)));return[s.executeTool,...s.tools]})}function vo(e,n,i,a,o,s,c){return _(t(function*(){let t=yield*e.instructions.load({sessionId:n.command.sessionId,commandId:n.command.entry.workId}),u=t.release;u!==void 0&&(yield*A(()=>N(u)));let d=yield*Rr(e.model.acquire({sessionId:n.command.sessionId,preference:n.modelPreference})),f=yield*_o(e,n.command.sessionId,n.command.entry.workId,n.command.entry.meta,t,a,o),p=Object.freeze({sessionId:n.command.sessionId,requestId:n.command.entry.requestId,commandId:n.command.entry.workId}),m=yield*hr(e.store,p,i),ee=t=>ut(e.store,{sessionId:p.sessionId,workId:p.commandId,delivery:t}).pipe(l(e=>e.map(({message:e})=>e)),r(e=>({_tag:`MuleError`,phase:`control`,message:e instanceof V?e.message:`Session control delivery failed`}))),h=n.resume,te=fo(e.compaction)(d.model);return yield*ma({store:e.store,sessionId:n.command.sessionId,workId:n.command.entry.workId,model:d.model,stream:d.stream,handoff:s,settings:te,path:n.path,messages:n.messages,resuming:h!==void 0,run:(n,i)=>{let a=h;h=void 0;let o=e=>m(e),s={model:d.model,modelStreamIdleTimeoutMs:e.modelStreamIdleTimeoutMs??3e5,retry:e.retry??qn,retryAfterMs:d.retryAfterMs,systemPrompt:t.text,prepareSystemPrompt:()=>(c===void 0?y([]):c()).pipe(l(e=>t.text+e.map(({name:e,text:t})=>`\n\n[extension:${e}]\n${t}`).join(``)),r(e=>({_tag:`MuleError`,phase:`model`,message:`Extension prompt is unavailable`,cause:e}))),messages:n,resume:a,tools:f,getSteeringMessages:()=>ee(`steer`),prepareNextTurn:e=>i(e.context,e.newMessages.length).pipe(r(e=>({_tag:`MuleError`,phase:`control`,message:e.message}))),onRetry:t=>An(e.store,p,go(t),t.turn)};return hn.run(d.stream===void 0?s:{...s,stream:d.stream},o).pipe(r(e=>po(e.phase===`model`?e.message:`Mule rejected the durable command run`)))}})}))}function yo(e,n,r){return _(t(function*(){let t=yield*Rr(e.model.acquire({sessionId:n.command.sessionId,preference:n.modelPreference})),i=n.command.entry;return yield*ha({store:e.store,sessionId:n.command.sessionId,workId:i.workId,model:t.model,stream:t.stream,handoff:r,settings:fo(e.compaction)(t.model),path:n.path,instructions:ze(i)?i.instructions:void 0})}))}var bo=Object.freeze({maxRecoveries:2});function xo(e){return new V(`runtime`,`rejected`,e)}function So(e){let t=`${e.boundary}:${e.cause}`,n=e instanceof ho||e instanceof Qi?e.diagnostic:e.boundary===`model`?e.message:void 0;return{kind:`failed`,reason:n===void 0?t:`${t}: ${n}`.slice(0,200)}}function Co(e,t){return s(`shiitake_run_failed`,En(t)).pipe(oe({workId:e,reason:`${t.boundary}:${t.cause}`}))}function wo(e,n,r,i){return t(function*(){W(e.store,r.queue);let t=yield*C({try:()=>Lt(r),catch:()=>xo(`Agent work payload is invalid`)}),a=yield*Ut(e.store,t.work);if(a.abnormalTerminal!==void 0)return{kind:a.abnormalTerminal};let o=i?.incompatibleMigrations()[0];if(o!==void 0)return yield*s(`shiitake_run_contract_changed`).pipe(oe({workId:r.jobId,terminal:`contract_changed: ${o}`})),yield*S(xo(`contract_changed: ${o}`));let c=new Set(i?.runParticipants().map(([e])=>e)??[]);if(ze(a.command.entry))return yield*yo(e,a,i?.compactionHandoff(c)),yield*$e(e.store,{sessionId:a.command.sessionId,commandFactId:t.work.commandFactId,workId:a.command.entry.workId,outcome:`completed`}),{kind:`completed`};let u=yield*C({try:()=>Sr(e.store,t.work.sessionId,t.work.commandFactId,a.command.entry.workId),catch:()=>xo(`Accepted run origin is unavailable`)}),d={sessionId:a.command.sessionId,workId:a.command.entry.workId,origin:u===null?null:{extensionId:Mt(Cn)(u.extensionId),correlation:u.correlation}},f=i===void 0?[]:yield*i.filesForRun(d,c),p=i===void 0?[]:yield*fe([...c],t=>i.modulesForRun(d,new Set([t])).pipe(P(n=>C({try:()=>{let r=e.extensions.grants.find(e=>e.id===t)?.grantKey??t;return n.map(e=>ar.grantAs(e,r))},catch:()=>xo(`Extension tools are invalid`)})))).pipe(l(e=>e.flat())),m=i?.compactionHandoff(c);switch((yield*vo(e,a,{core:f.length===0?n:yield*oo(f.map(e=>e.descriptor.name)),extensions:i?.runParticipants()??[]},p,f,m,i===void 0?void 0:()=>i.promptSections(d,c))).status){case`completed`:return{kind:`completed`};case`cancelled`:return{kind:`cancelled`};case`failed`:return{kind:`failed`}}}).pipe(ne(e=>Co(r.jobId,e).pipe(M(So(e)))))}var To=U(ve,{onExcessProperty:`error`}),Eo=U(kn(rn)),Do=U(Ke,{onExcessProperty:`error`});function Oo(e){if(e.reply===void 0)return;let t=et(Do(e.reply),`Verified Agent reply is invalid`),n=e.mail;if(n?.replyTo.length!==0||n.from.agentId!==t.agentId||n.from.sessionId!==t.sessionId||e.command.type!==`prompt`||e.command.delivery!==`steer`)throw new V(`contract`,`invalid`,`Verified Agent reply does not match its mail`);return t}function ko(e){let t=t=>({sessionId:I(t.sessionId),requireExistingSession:et(Eo(t.requireExistingSession),`Session admission condition is invalid`)??!1,command:et(Tt(t.command),`Session command is invalid`),origin:et(To(t.origin),`Session command origin is invalid`),when:t.when,mail:t.mail,reply:Oo(t),meta:t.meta===void 0?void 0:Ht(e.hostMeta,t.meta)}),n=(t,n)=>{let{sessionId:r,origin:i}=t,a=t.command;if(t.requireExistingSession&&!Le(e.owner,r))throw new V(`contract`,`closed`,`Session target is unavailable`);let o=e.readQueueHead(r);if(t.when===`idle`&&o.state!==`idle`&&Pt(e.owner,r,a.requestId)===void 0)return Object.freeze({status:`not_ready`});a.type===`prompt`&&Pt(e.owner,r,a.requestId)===void 0&&e.admitNew();let s=a.type===`prompt`&&a.delivery===`steer`&&o.state===`running`&&!o.cancellationRequested?o.jobId:void 0,c=Be(e.owner,r,a,t.meta,i,e.contract(),s===void 0?n=>{e.enqueue(n,t.mail)}:void 0,s,t.reply);return n.set(r,(n.get(r)??!1)||c.delivery===`new`),Object.freeze({status:`accepted`,commandId:c.accepted.commandId,delivery:c.delivery})},r=(t,r)=>E(()=>{let i=new Map,a=C({try:()=>(i.clear(),e.owner.transactionSync(()=>t(e=>n(e,i)))),catch:e=>e instanceof V?e:new V(`store`,`unavailable`,`Session command admission is unavailable`)});return(r===`request`?e.commit(a):a).pipe(b(()=>N(()=>{for(let[t,n]of i)n&&W(e.owner,t)})),b(()=>i.size>0?e.requestWake:F))});return Object.freeze({transact:(e,n=`request`)=>r(n=>e(e=>n(t(e))),n),admit:(e,n)=>C({try:()=>t(e),catch:e=>e instanceof V?e:new V(`contract`,`invalid`,`Session command is invalid`)}).pipe(P(e=>r(t=>t(e),n??`request`)))})}var Ao=`core`,jo=256,Mo=1048576,No=512,Po=64,Fo=new TextEncoder,Io=U(K(H({name:br.pipe(z(Dn(/^[a-z][A-Za-z0-9_-]{0,63}$/u))),text:br.pipe(z(R(1)),z(dt(e=>Fo.encode(e).byteLength<=8192)))})).pipe(z(Se(16)))),Lo=class extends Error{};function Ro(e){return e.length<=No?e:`${e.slice(0,511)}…`}var zo=jr(It(Un));function Bo(e){return e instanceof zr?e.reason:`${e._tag}: ${e.message}`}function Vo(e){return e instanceof zr||e instanceof Br||e instanceof Wr||e instanceof Vr}function Ho(e,t){let n=Ee(t);if(m(n)){let t=n.value;return t instanceof zr?Ro(t.reason):Ro(Vo(t)?`${e}: ${Bo(t)}`:`${e} failed`)}let r=i(Ae(t));return m(r)?r.value instanceof Error?Ro(r.value.name===`AsyncFiberError`?`${e} crossed an asynchronous boundary inside a core transaction`:`${e} defect: ${r.value.message}`):Ro(`${e} defect`):Ro(`${e} was interrupted`)}function Uo(e){let t=Ee(e);return a(t)||t.value instanceof zr}function Z(e,t){return new Br({reason:e,message:t})}function Wo(e,t){return e.length>=1&&e.length<=jo?y(e):S(Z(`bound`,`${t} must be 1..256 characters`))}function Go(e){let t=Ro(e.message);if(e instanceof Vr)switch(e.reason){case`invalid`:return new V(`contract`,`invalid`,t);case`conflict`:return new V(`store`,`conflict`,t);case`not_found`:return new V(`store`,`rejected`,t);case`rejected`:return new V(`extensions`,`rejected`,t)}if(e instanceof Wr)switch(e.reason){case`invalid`:return new V(`contract`,`invalid`,t);case`conflict`:return new V(`contract`,`conflict`,t);case`closed`:return new V(`runtime`,`closed`,t)}return e.reason===`bound`?new V(`contract`,`invalid`,t):new V(`store`,`unavailable`,t)}function Ko(e){let{owner:r}=e,i=new WeakMap,c=new Map,u=new Set,ee,te=new Set,_=new Set,v,re=e=>Object.freeze({extensionId:e}),T=e=>P(Ur,t=>t.extensionId===e?F:se(Error(`Extension read used another extension's context`))),D=e=>P(Hr,t=>{let n=i.get(t);return n?.extensionId===e?y(n):se(Error(`Extension write used outside its own core transaction`))}),O=e=>C({try:e,catch:()=>Z(`unavailable`,`Extension state is unavailable`)}),A=(e,t)=>e.admitted.grants.has(t)?F:S(Z(`unavailable`,`Extension is not granted ${t}`));function le(e,t,n){let i=e.admitted.id,a=vt(It(n.schema)),o=Re(n.schema),s=e=>{let n=a(e);return n._tag===`Failure`?S(Z(`decode`,`Stored ${t} record is invalid`)):y(n.success)};return Object.freeze({peek:n=>{if(ee!==i||!e.admitted.grants.has(`state`))throw Error(`Extension read used outside its own projection`);let o=at(r,i,t,n);if(o===void 0)return x();let s=a(o);if(s._tag===`Failure`)throw Z(`decode`,`Stored ${t} record is invalid`);return k(s.success)},peekPage:n=>{if(ee!==i||!e.admitted.grants.has(`state`))throw Error(`Extension read used outside its own projection`);if(!Number.isSafeInteger(n.limit)||n.limit<1||n.limit>Po)throw Z(`bound`,`Page limit must be 1..64`);return ft(r,i,t,n).map(e=>{let n=a(e);if(n._tag===`Failure`)throw Z(`decode`,`Stored ${t} record is invalid`);return n.success})},get:n=>T(i).pipe(g(A(e,`state`)),g(O(()=>at(r,i,t,n))),P(e=>e===void 0?y(x()):s(e).pipe(l(k)))),page:n=>T(i).pipe(g(A(e,`state`)),g(Number.isSafeInteger(n.limit)&&n.limit>=1&&n.limit<=Po?F:S(Z(`bound`,`Page limit must be 1..64`))),g(O(()=>ft(r,i,t,n))),P(e=>fe(e,s))),put:a=>D(i).pipe(g(A(e,`state`)),g(E(()=>{let e=o(a);if(e._tag===`Failure`)return S(Z(`encode`,`The ${t} record does not match its schema`));let s=JSON.stringify(e.success);if(Fo.encode(s).byteLength>Mo)return S(Z(`bound`,`The ${t} record exceeds 1 MiB`));let c=n.index?.(a)??null;return ie([Wo(n.key(a),`A record key`),c===null?y(null):Wo(c,`A record index`)]).pipe(P(([e,n])=>O(()=>{Mr(r,i,t,e,n,s)})))}))),remove:n=>D(i).pipe(g(A(e,`state`)),g(O(()=>{Oe(r,i,t,n)})))})}function ue(e,t,n){let i=e.admitted.id,a=vt(It(n.schema)),o=Re(n.schema),s=()=>{if(!te.has(i)||!e.admitted.grants.has(`state`))throw Z(`unavailable`,`Extension state update is unavailable`)},c=e=>{if(e.length<1||e.length>jo)throw Z(`bound`,`A record key must be 1..256 characters`);return e},l=e=>{let n=a(e);if(n._tag===`Failure`)throw Z(`decode`,`Stored ${t} record is invalid`);return n.success};return Object.freeze({get:e=>{s();let n=at(r,i,t,c(e));return n===void 0?x():k(l(n))},page:e=>{if(s(),!Number.isSafeInteger(e.limit)||e.limit<1||e.limit>Po)throw Z(`bound`,`Page limit must be 1..64`);return ft(r,i,t,e).map(l)},put:e=>{s();let a=o(e);if(a._tag===`Failure`)throw Z(`encode`,`The ${t} record does not match its schema`);let l=JSON.stringify(a.success);if(Fo.encode(l).byteLength>Mo)throw Z(`bound`,`The ${t} record exceeds 1 MiB`);let u=n.index?.(e)??null;u!==null&&c(u),Mr(r,i,t,c(n.key(e)),u,l)},remove:e=>{s(),Oe(r,i,t,c(e))}})}function de(e){let t=e.admitted.id;return Object.freeze({set:(n,i)=>D(t).pipe(b(()=>A(e,`timers`)),b(()=>Wo(n,`A timer key`)),b(()=>Number.isSafeInteger(i)&&i>=0?F:S(Z(`bound`,`A timer instant is invalid`))),P(e=>O(()=>{Ve(r,t,n,i),e.timersChanged=!0}))),cancel:n=>D(t).pipe(b(()=>A(e,`timers`)),P(e=>O(()=>{lt(r,t,n),e.timersChanged=!0}))),read:i=>T(t).pipe(g(A(e,`timers`)),g(O(()=>Qe(r,t,i))),l(n))})}function pe(t){let n=t.admitted.id,i=(i,a)=>D(n).pipe(b(()=>A(t,`attention`)),P(t=>C({try:()=>{I(i),a(),Yt(r,i,e.readQueueHead(i)),t.observed.add(i)},catch:e=>e instanceof V&&e.cause===`invalid`?Z(`bound`,e.message):Z(`unavailable`,`Attention update is unavailable`)})));return{set:(e,t)=>{let a=U(Ze,{onExcessProperty:`error`})(t);return a._tag===`Failure`?S(Z(`bound`,`Attention item is invalid`)):i(e,()=>{if(!Le(r,e))throw Error(`Attention Session is unavailable`);lr(r,e,n,a.success)})},clear:(e,t)=>Wo(t,`An attention id`).pipe(g(i(e,()=>{ht(r,e,n,t)})))}}function me(e){let t=e.admitted.id;return n=>D(t).pipe(P(r=>e.admitted.grants.has(`send`)?C({try:()=>{let{requireExistingSession:e=!1}=n,i=r.admit({sessionId:n.sessionId,requireExistingSession:e,command:{type:`prompt`,requestId:n.prompt.requestId,delivery:n.prompt.delivery,text:n.prompt.text},when:n.when,origin:{kind:`extension`,extensionId:t,correlation:n.correlation??null}});return i.status===`accepted`?{_tag:`Accepted`,commandId:i.commandId,delivery:i.delivery}:{_tag:`NotReady`}},catch:e=>new Wr({reason:e instanceof V?e.cause===`conflict`?`conflict`:e.cause===`closed`?`closed`:`invalid`:`invalid`,message:e instanceof V?e.message:`Session command is invalid`})}):S(new Wr({reason:`closed`,message:`Extension is not granted send`}))))}function ge(n,a,o){return E(()=>{let s,c,u=Error(`Extension transaction rolled back`);return e.door.transact(e=>{let t=re(n.admitted.id);c={extensionId:n.admitted.id,admit:e,observed:new Set,timersChanged:!1},i.set(t,c),_.add(n.admitted.id);let r=v;v=c;try{s=ae(a.pipe(p(Hr,t),p(Ur,t)))}finally{v=r,i.delete(t),_.delete(n.admitted.id)}if(Zt(s))throw u;return s.value},o).pipe(l(()=>{if(s===void 0)throw Error(`Extension transaction returned no exit`);return s}),ne(e=>s!==void 0&&Zt(s)?y(s):S(e)),b(n=>Cr(n)&&c!==void 0?t(function*(){for(let e of c?.observed??[])W(r,e);o===`request`&&c?.timersChanged===!0&&(yield*e.requestWake)}):F))})}function ve(t){let n=``;for(let i=0;i<Ar;i+=Po){let i=he(r,t,n);for(let t of i)Yt(r,t,e.readQueueHead(t)),queueMicrotask(()=>{W(r,t)});let a=i.at(-1);if(i.length<Po||a===void 0)return;n=a}}function L(e,n,i,a){let o=Date.now();e.status=`stopped`,e.reason=n,e.stoppedAt=o;let c=C({try:()=>{let t=()=>{At(r,e.admitted.id,{status:`stopped`,reason:n,stoppedAt:o,revision:e.admitted.revision}),ve(e.admitted.id)};a===`own-transaction`?r.transactionSync(t):t()},catch:t=>new V(`store`,`unavailable`,`Extension ${e.admitted.id} stop status is unavailable`,void 0,t)});return t(function*(){let t=yield*w(c);return yield*s(`shiitake_extension_stopped`).pipe(oe({extensionId:e.admitted.id,reason:n,cause:i===void 0?null:En(i),durable:Cr(t)})),yield*t})}function be(e,t,n){e.status=`stopped`,e.reason=t,e.stoppedAt=Date.now();let i=()=>{At(r,e.admitted.id,{status:`stopped`,reason:t,stoppedAt:e.stoppedAt,revision:e.admitted.revision}),ve(e.admitted.id)};try{n===`own-transaction`?r.transactionSync(i):i()}catch(t){throw new V(`store`,`unavailable`,`Extension ${e.admitted.id} stop status is unavailable`,void 0,t)}}function Se(e,t,n){let i=t=>{if(v?.extensionId!==e.admitted.id||!e.admitted.grants.has(`state`))throw Z(`unavailable`,`Session documents require the extension's state transaction`);return I(t),v},a=a=>{i(a);let o=pt(r,a,e.admitted.id,t)??Ua(n,n.initial);if(Fo.encode(o).byteLength>n.maxBytes)throw Z(`bound`,`Session document exceeds maxBytes`);let s=U(It(n.schema))(o);if(s._tag===`Failure`)throw Z(`decode`,`Stored session document does not match its schema`);return s.success};return Object.freeze({read:a,update:(o,s)=>{let c=i(o),l=s(a(o));nr(r,o,e.admitted.id,t,Ua(n,l)),c.observed.add(o)}})}function Ce(e){let t=new Set;return Object.freeze({collection:(t,n)=>le(e,t,n),updateCollection:(t,n)=>ue(e,t,n),document:(t,n)=>Se(e,t,n),update:n=>{let i=e.admitted.id;if(e.status!==`running`||!e.admitted.grants.has(`state`)||te.has(i)||_.has(i)||ee===i)throw Z(`unavailable`,`Extension state update is unavailable`);try{let e=r.transactionSync(()=>{te.add(i);try{return er(n,void 0)}finally{te.delete(i)}});for(let e of t)W(r,e);return e}catch(t){if(!(t instanceof cr))throw t;let n=t.message;throw be(e,n,`own-transaction`),new zr({reason:n})}finally{t.clear()}},observeUpdate:n=>{if(!te.has(e.admitted.id))throw Z(`unavailable`,`Extension observation is unavailable`);t.add(I(n))},context:Object.freeze({manifest:e.admitted.manifest,revision:e.admitted.revision,grants:Object.freeze([...e.admitted.grants]),send:me(e),timers:de(e),attention:pe(e),hasPendingSteer:t=>T(e.admitted.id).pipe(g(A(e,`run_tools`)),g(O(()=>jt(r,I(t.sessionId),t.workId)))),hasSuccessfulToolResult:(t,n)=>T(e.admitted.id).pipe(g(A(e,`run_tools`)),g(O(()=>qe(r,I(t.sessionId),t.workId,n)))),observe:t=>D(e.admitted.id).pipe(l(e=>{e.observed.add(t)})),transact:t=>(e.status===`running`?ge(e,t,`request`).pipe(ce):S(new zr({reason:e.reason??`Extension is stopped`}))).pipe(P(t=>{if(Cr(t))return y(t.value);if(!Uo(t.cause))return h(t.cause);let n=Ho(`transact`,t.cause);return L(e,n,t.cause,`own-transaction`).pipe(P(()=>S(new zr({reason:n}))))}))})})}function we(e){let{id:t,definition:n,revision:i}=e.admitted,a=n.state.version;r.transactionSync(()=>{let e=Ie(r,t);if(e!==void 0&&e.version>a)throw new V(`extensions`,`conflict`,`Stored ${t} state version ${String(e.version)} is newer than ${String(a)}`);if(e!==void 0&&e.version<a){let i=_e(r,t).map(e=>({collection:e.collection,key:e.key,value:zo(e.valueJson)}));for(let r=e.version;r<a;r+=1){let e=n.state.migrations[r];if(e===void 0)throw new Lo(`Missing ${t} state migration from ${String(r)}`);try{i=i.flatMap(t=>e(t))}catch(e){throw new Lo(`Failed ${t} state migration from ${String(r)}`,{cause:e})}}Me(r,t);for(let e of i){let i=n.state.collections[e.collection];if(i===void 0)throw new Lo(`Migrated ${t} record names an undeclared collection`);let a=i.indexFromEncoded(e.value);if(a._tag===`Failure`)throw new Lo(`Migrated ${t} ${e.collection} record is invalid`);Mr(r,t,e.collection,e.key,a.success,JSON.stringify(e.value))}}ye(r,t,a,i)})}function Te(e,t){let n=Ce(e);return E(()=>e.admitted.definition.activate(n)).pipe(p(sn,t),w,P(t=>Cr(t)?(e.hooks=t.value,F):L(e,Ho(`activation`,t.cause),t.cause,`own-transaction`)))}let R=e=>[...c.values()].filter(t=>t.status===`running`&&t.hooks!==void 0&&t.admitted.grants.has(e));function De(e){return Object.freeze({id:e.admitted.id,version:e.admitted.manifest.version,revision:e.admitted.revision,status:e.status,reason:e.reason,stoppedAt:e.stoppedAt})}function ke(e){return e.status===`running`&&e.hooks!==void 0&&(e.admitted.grants.has(`run_tools`)||e.admitted.grants.has(`files`)||e.admitted.grants.has(`prompt`)||e.admitted.grants.has(`compaction_handoff`))}function Ae(e,t,n){return w(n.pipe(p(Ur,re(e.admitted.id)))).pipe(P(n=>Cr(n)?y(k(n.value)):L(e,Ho(t,n.cause),n.cause,`own-transaction`).pipe(M(x()))))}let je=(e,t,n)=>Zt(n)?L(e,Ho(t,n.cause),n.cause,`own-transaction`):F;function Ne(e){return C({try:()=>{we(e),r.transactionSync(()=>{for(let[t,n]of Object.entries(e.admitted.documents))xr(r,{extensionId:e.admitted.id,name:t,initialJson:Ua(n,n.initial),fork:n.fork,maxBytes:n.maxBytes})})},catch:e=>e}).pipe(M(!0),ne(t=>t instanceof V?S(t):(t instanceof Lo&&(e.admitted.grants.has(`run_tools`)||e.admitted.grants.has(`files`)||e.admitted.grants.has(`prompt`)||e.admitted.grants.has(`compaction_handoff`))&&u.add(e.admitted.id),L(e,Ro(t instanceof Error?`migration: ${t.message}`:`migration failed`),yr(t),`own-transaction`).pipe(M(!1)))))}return t(function*(){let n=yield*In();for(let t of e.admitted){let e=Ue(r,t.id),i=e?.status===`stopped`&&e.revision===t.revision,a={admitted:t,hooks:void 0,status:i?`stopped`:`running`,reason:i?e.reason:null,stoppedAt:i?e.stoppedAt:null};c.set(t.id,a),yield*C({try:()=>{t.grants.has(`settled`)&&r.transactionSync(()=>{G(r,t.id)===void 0&&Et(r,t.id,G(r,`core`)??0)})},catch:()=>new V(`store`,`unavailable`,`Settled cursor is unavailable`)}),(yield*Ne(a).pipe(d(()=>Kn(n,xe))))&&(i||(yield*C({try:()=>{r.transactionSync(()=>{At(r,t.id,{status:`running`,reason:null,stoppedAt:null,revision:t.revision}),ve(t.id)})},catch:()=>new V(`store`,`unavailable`,`Extension status is unavailable`)}),yield*Te(a,n)))}yield*C({try:()=>{r.transactionSync(()=>{let t=fn(r,e.admitted.filter(e=>e.grants.has(`attention`)).map(e=>e.id));for(let e of t)ve(e)})},catch:()=>new V(`store`,`unavailable`,`Attention grants are unavailable`)});let i={runParticipants:()=>[...c.values()].filter(ke).map(e=>[e.admitted.id,e.admitted.fingerprint]),incompatibleMigrations:()=>[...u],modulesForRun:(e,t)=>fe(R(`run_tools`),n=>{let r=n.hooks?.moduleForRun;return!t.has(n.admitted.id)||r===void 0?y(x()):Ae(n,`moduleForRun`,E(()=>r(e))).pipe(l(f))}).pipe(l(e=>e.flatMap(j))),filesForRun:(e,n)=>t(function*(){let t=R(`files`).find(e=>n.has(e.admitted.id));if(t===void 0)return[];let r=t.hooks?.filesForRun;if(r===void 0)return yield*L(t,`files: granted capability has no handler`,void 0,`own-transaction`),yield*S(new V(`extensions`,`rejected`,`Extension Files are unavailable`));let i=yield*Ae(t,`filesForRun`,E(()=>r(e)));return a(i)?yield*S(new V(`extensions`,`rejected`,`Extension Files capture failed`)):Object.freeze([...o(i.value,()=>[])])}),promptSections:(e,n)=>t(function*(){let t=[],r=0;for(let i of R(`prompt`)){if(!n.has(i.admitted.id))continue;let a=i.hooks?.prompt;if(a===void 0)return yield*L(i,`prompt: granted capability has no handler`,void 0,`own-transaction`),yield*S(new V(`extensions`,`rejected`,`Extension prompt is unavailable`));let o=yield*w(zn(()=>a(e)).pipe(p(Ur,re(i.admitted.id))));if(Zt(o))return yield*L(i,Ho(`prompt`,o.cause),o.cause,`own-transaction`),yield*S(new V(`extensions`,`rejected`,`Extension prompt failed`));let s=Io(o.value),c=s._tag===`Success`?s.success:[];if(r+=c.reduce((e,t)=>e+Fo.encode(t.text).byteLength,0),s._tag===`Failure`||new Set(c.map(({name:e})=>e)).size!==c.length||r>65536)return yield*L(i,`prompt: section is invalid or exceeds its bound`,void 0,`own-transaction`),yield*S(new V(`extensions`,`rejected`,`Extension prompt is invalid`));t.push(...[...c].sort((e,t)=>e.name<t.name?-1:+(e.name>t.name)).map(e=>({name:`${i.admitted.id}.${e.name}`,text:e.text})))}return t}),compactionHandoff:e=>R(`compaction_handoff`).find(({admitted:t})=>e.has(t.id))?.hooks?.compactionHandoff,settledConsumers:()=>R(`settled`).map(e=>({id:e.admitted.id,cursor:G(r,e.admitted.id)??0})),deliverSettled:(e,t)=>fe(R(`settled`),n=>E(()=>{let i=G(r,n.admitted.id)??0;if(t<=i)return F;let a=e.filter(({sequence:e})=>e>i),o=n.hooks?.onSettled;return ge(n,(o===void 0||a.length===0?F:o(a)).pipe(g(N(()=>{Et(r,n.admitted.id,t)}))),`reconcile`).pipe(P(e=>je(n,`onSettled`,e)))}),{discard:!0}),fireDueTimers:e=>t(function*(){let t=R(`timers`).map(({admitted:e})=>e.id),n=nt(r,t,e,Po);for(let t of n){let n=c.get(t.extensionId);if(n?.status!==`running`)continue;let i=n.hooks?.onTimer,a=yield*ge(n,E(()=>Qe(r,t.extensionId,t.key)===t.dueAt?(lt(r,t.extensionId,t.key),i===void 0?F:i({key:t.key,dueAt:t.dueAt,firedAt:e})):F),`reconcile`);yield*je(n,`onTimer`,a)}return n.length===Po}),timerWake:e=>yt(r,R(`timers`).map(({admitted:e})=>e.id),e),project:e=>{let t={};for(let n of c.values()){let r=n.admitted.grants.has(`projection`),i=n.admitted.grants.has(`commands`)?n.admitted.definition.catalog:void 0;if(!r&&i===void 0)continue;let a=n.admitted.revision,o=n.admitted.definition.contract.projection,s=n.hooks?.project;if(n.status===`running`&&n.hooks!==void 0){let c=!r||s===void 0||o===null?k(null):(()=>{let t=null,r;ee=n.admitted.id;try{let r=er(()=>s(e),void 0);if(m(r)){let e=Re(o.schema)(r.value);if(e._tag===`Failure`)throw Error(`Extension projection is invalid`);let a=U(Un)(e.success);if(a._tag===`Failure`)throw Error(`Extension projection is not JSON`);t=a.success;let s=n.hooks.projectCatalog;i!==void 0&&s!==void 0&&(i=Mt(Un)(er(()=>s(a.success),void 0)))}}catch(e){r=e}finally{ee=void 0}return r===void 0?k(t):(be(n,Ro(r instanceof Error?`project defect: ${r.message}`:`project defect`),`enclosing-transaction`),x())})();if(m(c)){t[n.admitted.id]=Object.freeze(i===void 0?{status:`running`,revision:a,value:c.value}:{status:`running`,revision:a,value:c.value,catalog:i});continue}}t[n.admitted.id]=Object.freeze({status:`stopped`,revision:a,reason:n.reason??`Extension did not activate`})}return Object.freeze(t)},call:(e,n,r,i)=>t(function*(){let t=c.get(n);if(t?.admitted.grants.has(`commands`)!==!0)return yield*S(new V(`extensions`,`unavailable`,`Extension is unavailable`));if(t.status!==`running`||t.hooks===void 0)return yield*S(new V(`extensions`,`unavailable`,`Extension ${n} is stopped: ${t.reason??`not activated`}`));let a=t.admitted.definition.contract.commands,o=Object.hasOwn(a,r)?a[r]:void 0;if(o?.scope!==e.scope)return yield*S(new V(`contract`,`invalid`,`Extension command is unknown`));let s=e.scope===`session`?yield*C({try:()=>I(e.sessionId),catch:()=>new V(`contract`,`invalid`,`Session id is invalid`)}):null,l=t.hooks.commands.get(r);if(l===void 0)return U(o.input,{onExcessProperty:`error`})(i)._tag===`Failure`?yield*S(new V(`contract`,`invalid`,`Extension command input is invalid`)):(yield*L(t,`command ${r} has no handler`,void 0,`own-transaction`),yield*S(new V(`extensions`,`unavailable`,`Extension is stopped`)));let u=l({sessionId:s,input:i});if(u._tag===`Failure`)return yield*S(new V(`contract`,`invalid`,`Extension command input is invalid`));let d=yield*ge(t,u.success(),`request`);if(Cr(d))return d.value;let f=Ee(d.cause);if(m(f)&&!Uo(d.cause))return yield*S(Go(f.value));let p=Ho(`command ${r}`,d.cause);return yield*L(t,p,d.cause,`own-transaction`),yield*S(new V(`extensions`,`unavailable`,`Extension ${n} is stopped: ${p}`))}),list:()=>[...c.values()].map(De),resume:i=>t(function*(){let t=c.get(i);return t===void 0?yield*S(new V(`extensions`,`unavailable`,`Extension is unavailable`)):(t.status===`stopped`&&(yield*C({try:()=>{r.transactionSync(()=>{At(r,t.admitted.id,{status:`running`,reason:null,stoppedAt:null,revision:t.admitted.revision}),ve(t.admitted.id)})},catch:()=>new V(`store`,`unavailable`,`Extension status is unavailable`)}),t.status=`running`,t.reason=null,t.stoppedAt=null,t.hooks===void 0&&(yield*Ne(t))&&(yield*Te(t,n)),yield*e.requestWake),De(t))}),close:Kn(n,xe)};return Object.freeze(i)})}var qo=64;function Q(e){return new V(`runtime`,`rejected`,e)}function Jo(e,n,i){return n===void 0?F:t(function*(){let t=yield*C({try:()=>Lt(i),catch:()=>Q(`Agent work payload is invalid`)}),a=i.outcome===`cancelled`?``:yield*ke(e,t.work),o=yield*ot(e,t.work,i.outcome),s=i.outcome===`completed`||i.outcome===`cancelled`?void 0:yield*Te(e,t.work),c=s===void 0?{job:i,content:a}:{job:i,content:a,diagnostic:s};yield*n.fanOut(o===void 0?c:{...c,meta:o}).pipe(r(()=>Q(`Agent reply fan-out is unavailable`)))})}function Yo(e,n){let r=n.outcome;return r!==`interrupted`&&r!==`cancelled`&&r!==`failed`?F:t(function*(){let t=yield*C({try:()=>Lt(n),catch:()=>Q(`Agent work payload is invalid`)});yield*$e(e,{sessionId:t.work.sessionId,commandFactId:t.work.commandFactId,workId:n.jobId,outcome:r,diagnostic:n.failureReason})})}function Xo(e,n,r){return t(function*(){let t=yield*C({try:()=>Lt(r),catch:()=>Q(`Agent work payload is invalid`)}),i=r.outcome===`outcome_unknown`?`interrupted`:r.outcome;yield*rt(e,{sessionId:t.work.sessionId,parentWorkId:r.jobId,outcome:i,enqueue:e=>{n.transactional.enqueueAcceptedJob(Bt({work:{...e,recovery:bo}}))}})})}function Zo(e){return e===void 0?F:e.drainOutbox().pipe(r(()=>Q(`Agent reply delivery is unavailable`)))}function Qo(e,t){let n=Lt(t.job),r=wt(e,n.work.sessionId,n.work.commandFactId,t.job.jobId);return Object.freeze({sequence:t.sequence,sessionId:n.work.sessionId,workId:t.job.jobId,outcome:t.job.outcome,terminal:r.terminal,toolCalls:r.toolCalls,origin:r.origin===null?null:Object.freeze({extensionId:Mt(Cn)(r.origin.extensionId),correlation:r.origin.correlation})})}function $o(e,n,r,i){return fe(i,i=>t(function*(){W(e,i.job.queue),yield*Yo(e,i.job),yield*Xo(e,n,i.job),yield*Jo(e,r,i.job),yield*C({try:()=>{Et(e,Ao,i.sequence)},catch:()=>Q(`Settled cursor is unavailable`)})}),{discard:!0})}function es(e){return t(function*(){if((yield*e.watchdog.tick()).status===`busy`)return yield*S(Q(`Runtime reconciliation is already active`));let t=yield*C({try:()=>G(e.store,`core`)??0,catch:()=>Q(`Settled cursor is unavailable`)}),n=e.extensions.settledConsumers(),r=Math.min(t,...n.map(({cursor:e})=>e)),i=yield*e.watchdog.readSettled(qo,r),a=yield*w($o(e.store,e.watchdog,e.mailRoom,i.filter(({sequence:e})=>e>t))),o=yield*C({try:()=>{let t=G(e.store,`core`)??0;return i.filter(({sequence:e})=>e<=t).map(t=>Qo(e.store,t))},catch:()=>Q(`Settled run facts are unavailable`)});yield*e.extensions.deliverSettled(o,G(e.store,`core`)??0);let s=yield*e.extensions.fireDueTimers(Date.now());if((i.length===qo||s)&&(yield*e.requestWake),yield*Zo(e.mailRoom),Zt(a))return yield*h(a.cause)}).pipe(r(e=>e instanceof V?e:Q(`Runtime reconciliation failed`)))}function $(e){return new V(`runtime`,`rejected`,e)}function ts(e,n,i,a){return t(function*(){if(e.hostJobs?.lane==="default")return yield*S($(`Host lane conflicts with Agent work`));let o=`open`,s,c,u=mt(!1),f=e=>N(()=>{o===`open`&&(s??=e)}),p=E(()=>o===`open`?(o=`closing`,c=s,u.open):F).pipe(te),m={},_={current:void 0},v=E(()=>m.requestWake??S($(`Runtime host is unavailable`))),x={current:void 0},w=new Set,T=new Map,ae={owner:e.store,isAlive:()=>y(!1),executor:{execute:t=>O(N(()=>{let n=t.lane===e.hostJobs?.lane?{kind:`host`,lane:t.lane,jobId:t.jobId}:{kind:`session`,sessionId:t.queue,commandId:t.jobId};T.set(n.kind===`host`?`host`:`serial`,n),n.kind===`session`&&w.add(t.queue),W(e.store,null)}),()=>t.lane===e.hostJobs?.lane?x.current?.execute(t)??S(new Lr(`execution_failed`)):wo(e,n,t,_.current),()=>N(()=>{t.lane!==e.hostJobs?.lane&&w.delete(t.queue),T.delete(t.lane===e.hostJobs?.lane?`host`:`serial`),W(e.store,null)}))},wake:{recompute:()=>v.pipe(r(()=>new Lr(`wake_unavailable`)))},project:t=>{Wn(e.store,t,Date.now())}},k=yield*(e.hostJobs===void 0?Ir(ae):Ir({...ae,concurrentLane:e.hostJobs.lane}).pipe(b(t=>N(()=>{x.current=e.hostJobs?.open(t)})))).pipe(r(()=>$(`Watchdog is unavailable`))),oe=()=>({core:n,extensions:[..._.current?.runParticipants()??[]]});yield*C({try:()=>fo(e.compaction),catch:e=>e instanceof V?e:$(`Compaction settings are unavailable`)});let se=yield*C({try:()=>Ne(e.storageBudget),catch:e=>e instanceof V?e:$(`Storage budget is unavailable`)}),A=ko({owner:e.store,admitNew:se.admitNew,hostMeta:e.meta,contract:oe,enqueue:(e,t)=>{let n={work:{...e,recovery:bo}};k.transactional.enqueueAcceptedJob(Bt(t===void 0?n:{...n,mail:t}))},readQueueHead:e=>k.transactional.readQueueHead(e),commit:e=>E(()=>m.commit===void 0?S($(`Runtime host is unavailable`)):m.commit(e)),requestWake:v});yield*C({try:()=>{jn(e.store),G(e.store,`core`)===void 0&&e.store.transactionSync(()=>{Et(e.store,Ao,0)})},catch:()=>new V(`store`,`unavailable`,`Extension store is unavailable`)});let j=yield*Ko({owner:e.store,readQueueHead:e=>k.transactional.readQueueHead(e),door:A,admitted:i,requestWake:v});_.current=j;let M=es({watchdog:k,store:e.store,extensions:j,requestWake:v,mailRoom:a}).pipe(re(f)),le=t(function*(){let t=yield*k.hasPendingWork,n=Date.now(),r=yield*C({try:()=>[G(e.store,`core`)??0,...j.settledConsumers().map(({cursor:e})=>e)],catch:()=>$(`Settled cursor is unavailable`)}),i=(yield*k.readSettled(1,Math.min(...r))).length>0,a=yield*C({try:()=>j.timerWake(n),catch:()=>$(`Extension timers are unavailable`)});return{pending:t||i||a.due,nextWakeAt:a.nextWakeAt}}),ue=yield*e.runtime.bind({reconcile:M,pendingWork:le.pipe(r(()=>$(`Pending work is unavailable`)))}).pipe(d(()=>j.close.pipe(ce))),de=E(()=>o===`open`?ee(ue.requestWake.pipe(ne(f)),u.await):F);return m.requestWake=de,m.commit=ue.commit,yield*ue.requestWake.pipe(d(()=>ie([ue.close,j.close]).pipe(ce))),Object.freeze({activeSessions:N(()=>[...w]),runningWork:t=>k.read(t).pipe(l(t=>t.status===`found`?T.get(t.job.lane===e.hostJobs?.lane?`host`:`serial`)??null:null),r(e=>new V(`runtime`,`rejected`,`Running work is unavailable`,void 0,e))),extensions:j,commit:ue.commit,assertOpen:E(()=>o===`open`?F:S(new V(`runtime`,`closed`,`Shiitake is closed`))),beginClose:p,door:A,storage:se,recordAcceptedCancellation:({jobId:e,cancellationId:t,onlyIfPending:n})=>k.transactional.recordCancellationIntent({jobId:e,cancellationId:t,onlyIfQueued:n}),assertIdleSession:e=>{try{if(k.transactional.readQueueHead(e).state!==`idle`)throw new V(`runtime`,`conflict`,`Session branch or fork requires an idle Session`)}catch(e){throw e instanceof V?e:$(`Session status is unavailable`)}},signalCancellation:(e,t)=>k.cancel({jobId:e,cancellationId:t}).pipe(P(e=>e.status===`recorded`||e.status===`replayed`?F:S($(`Cancellation is unavailable`))),r(()=>$(`Cancellation is unavailable`))),readQueueHead:e=>k.readQueueHead(e).pipe(r(()=>$(`Session status is unavailable`))),readQueueHeadTransactional:e=>k.transactional.readQueueHead(e),requestWake:de,close:p.pipe(g(pe(ue.close,{onFailure:e=>j.close.pipe(g(c===void 0?h(e):S(c))),onSuccess:()=>j.close.pipe(g(c===void 0?F:S(c)))})),D(N(()=>{o=`closed`})))})})}var ns=e({openRuntimeCore:()=>rs});function rs(e,n){return t(function*(){let t=yield*ao(e.extensions),r=yield*oo([]);yield*Tr(e.store);let i=yield*ts(e,r,t,n),a=Ba(e,i),o=Object.freeze({session:a.session,createSession:a.createSession,deleteSession:a.deleteSession,listSessions:a.listSessions,extensions:a.extensions,close:Di(a.close,i.close)}),s=Object.freeze({...o,grants:a.grants,withMeta:e=>Object.freeze({...o,session:a.withMeta(e).session})});return Object.freeze({agent:s,readSettlement:(t,n)=>i.assertOpen.pipe(g(Xt(e.store,t,n))),activeSessions:i.activeSessions,acceptMail:(e,t,n)=>Va(i,e,t,n)})})}export{wi as n,rs as openRuntimeCore,ns as t};
package/dist/index.html CHANGED
@@ -4,12 +4,14 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1" />
6
6
  <title>Inbox</title>
7
- <script type="module" crossorigin src="/assets/index-hJphFjkO.js"></script>
7
+ <script type="module" crossorigin src="/assets/index-DRDNbHYF.js"></script>
8
8
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-hePW80VL.js">
9
- <link rel="modulepreload" crossorigin href="/assets/Effect-BEduymlz.js">
9
+ <link rel="modulepreload" crossorigin href="/assets/Effect-CxgtVs4O.js">
10
10
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-mbhLTglw.js">
11
- <link rel="modulepreload" crossorigin href="/assets/extension-hook-DvcdepgP.js">
12
- <link rel="stylesheet" crossorigin href="/assets/index-DBHVAvuX.css">
11
+ <link rel="modulepreload" crossorigin href="/assets/extension-hook-0UB2lkEs.js">
12
+ <link rel="modulepreload" crossorigin href="/assets/document-D5hwZS3o.js">
13
+ <link rel="modulepreload" crossorigin href="/assets/base-face-BaB6vmvy.js">
14
+ <link rel="stylesheet" crossorigin href="/assets/index-Bw6tV9qS.css">
13
15
  </head>
14
16
  <body>
15
17
  <div id="inbox-root"></div>
package/package.json CHANGED
@@ -1,20 +1,22 @@
1
1
  {
2
2
  "name": "@fungi.computer/grove",
3
- "version": "0.0.1",
3
+ "version": "0.1.0",
4
4
  "author": "Levi <levi@technomancy.dev>",
5
5
  "type": "module",
6
6
  "description": "Grove: conversations with agents that call your other Apps, for Oyster",
7
7
  "dependencies": {
8
- "@fungi.computer/agar": "0.1.0",
8
+ "@fungi.computer/agar": "0.2.0",
9
9
  "@fungi.computer/cairn": "0.0.1",
10
- "@fungi.computer/caps": "0.0.2",
11
- "@fungi.computer/knapsack": "0.0.2",
10
+ "@fungi.computer/caps": "0.1.0",
11
+ "@fungi.computer/knapsack": "0.1.0",
12
12
  "@fungi.computer/maosaico": "0.0.1",
13
- "@fungi.computer/parakeet": "0.0.1",
14
- "@fungi.computer/shiitake": "0.1.0",
15
- "@fungi.computer/sigils": "0.0.1",
13
+ "@fungi.computer/parakeet": "0.1.0",
14
+ "@fungi.computer/shiitake": "0.2.0",
15
+ "@fungi.computer/sigils": "0.1.0",
16
+ "@fungi.computer/sprite": "0.1.0",
17
+ "@fungi.computer/sprite-zdog": "0.1.0",
16
18
  "@fungi.computer/stipe": "0.0.1",
17
- "@fungi.computer/whistle": "0.0.1",
19
+ "@fungi.computer/whistle": "0.0.2",
18
20
  "@tanstack/react-query": "5.102.8",
19
21
  "@tanstack/react-router": "1.170.28",
20
22
  "@tanstack/react-virtual": "3.14.10",
@@ -24,12 +26,12 @@
24
26
  "react": "18.3.1",
25
27
  "react-dom": "18.3.1",
26
28
  "zod": "4.4.3",
27
- "@fungi.computer/shiitake-extensions": "0.0.1",
28
- "@fungi.computer/gills": "0.0.1"
29
+ "@fungi.computer/shiitake-extensions": "0.0.2",
30
+ "@fungi.computer/gills": "0.1.0"
29
31
  },
30
32
  "devDependencies": {
31
33
  "@cloudflare/workers-types": "5.20260828.1",
32
- "@fungi.computer/parakeet-testing": "0.0.1",
34
+ "@fungi.computer/parakeet-testing": "0.1.0",
33
35
  "@ladle/react": "5.1.1",
34
36
  "@tailwindcss/vite": "4.2.1",
35
37
  "@types/react": "18.3.3",
@@ -86,6 +88,7 @@
86
88
  "agent.list",
87
89
  "agent.manage",
88
90
  "agent.rename",
91
+ "agent.avatar",
89
92
  "agent.toolPolicy",
90
93
  "agent.read",
91
94
  "agent.send",
@@ -165,7 +168,7 @@
165
168
  "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p backend/tsconfig.json --noEmit",
166
169
  "test": "vitest run",
167
170
  "lint": "eslint src workbench test backend .ladle --max-warnings=0",
168
- "test:workbench": "node test/workbench.browser.mjs && node test/rails.browser.mjs && node test/agents.browser.mjs && node test/inbox-order.browser.mjs",
171
+ "test:workbench": "node test/workbench.browser.mjs && node test/rails.browser.mjs && node test/narrow.browser.mjs && node test/avatars.browser.mjs && node test/agents.browser.mjs && node test/inbox-order.browser.mjs",
169
172
  "test:slash": "node test/slash.browser.mjs",
170
173
  "workbench:build": "ladle build --outDir ../../.botanical/grove-website-ladle",
171
174
  "test:websites": "node --import tsx ../../tooling/repository/scripts/workbench-proofs.mjs --output ../../.botanical/grove-website-ladle --origin-env GROVE_WORKBENCH_URL test/websites.browser.mjs",
@@ -1 +0,0 @@
1
- import{i as e,n as t,r as n}from"./renderer-BdjuCi44.js";import{t as r}from"./index-hJphFjkO.js";var i=new WeakMap,a=new WeakMap,o=(e,t)=>{a.set(e,t)},s=(e,t)=>{i.set(e,t)},c=e=>{let t=i.get(e);if(!t)throw Error(`Invalid Sprite definition`);return t},l=e=>{let t=a.get(e);if(t===void 0)throw Error(`Invalid Sprite scene node`);return t};function u(e){let i=c(e),a=new Map,o=[],s=(e,t)=>{let r=`node-${String(a.size)}`;a.set(e,r);let i=t===void 0?{id:r,kind:e.kind,options:e.options}:{id:r,parent:t,kind:e.kind,options:e.options};o.push(n.parse(i));for(let t of e.children)s(t,r)};s(i.root);let l=Object.fromEntries([...i.variants].map(([e,t])=>[e,Object.fromEntries([...t].map(([e,t])=>{let n=a.get(t);if(!n)throw Error(`Cannot export a variant outside the scene root`);return[e,n]}))])),u=t.parse({root:a.get(i.root),nodes:o,variants:l,palette:i.palette,expressions:i.expressions,activities:i.activities,defaultPresentation:{activity:i.defaultActivity,expression:i.defaultExpression}});return r.parse(JSON.parse(JSON.stringify({version:1,name:e.name,renderer:`zdog`,controls:Object.fromEntries(Object.entries(i.palette).map(([e,t])=>[e,{type:`color`,label:e,default:t.length===4?`#${t.slice(1).split(``).map(e=>e+e).join(``)}`:t}])),data:u})))}var d=Symbol(`Sprite.SceneNode`),f=(e,t)=>{if(!Number.isFinite(e))throw Error(`Sprite ${t} must be finite`)},p=(e,t)=>{if(e)for(let n of[`x`,`y`,`z`]){let r=e[n];r!==void 0&&f(r,`${t}.${n}`)}},m=(e,t)=>{if(!e.target.trim())throw Error(`Sprite ${t}.target cannot be empty`);if(p(e.translate,`${t}.translate`),p(e.rotate,`${t}.rotate`),e.durationMs!==void 0&&(f(e.durationMs,`${t}.durationMs`),e.durationMs<0))throw Error(`Sprite ${t}.durationMs cannot be negative`)};function h(e){return Array.isArray(e)}function g(e,t=new WeakMap){if(e===null||!(e instanceof Object)||e instanceof Function)return e;let n=e,r=t.get(n);if(r!==void 0)return r;if(h(e)){let r=e.map(e=>g(e,t));return t.set(n,r),Object.freeze(r)}let i={};t.set(n,i);for(let[n,r]of Object.entries(e))i[n]=g(r,t);return Object.freeze(i)}var _=(e,t=new Set)=>{if(e==null||!v(e)||t.has(e))return;let n=e;t.add(n);let r=Object.values(e);for(let e of r)_(e,t);Object.freeze(e)},v=e=>Object(e)===e&&!(e instanceof Function),y=e=>{let t=new Set,n=e=>{if(!t.has(e)){t.add(e);for(let t of e.children)n(t);_(e.options),Object.freeze(e.children),Object.freeze(e)}};n(e)},b=(e,t)=>{for(let[n,r]of e.entries())if(`bezier`in r)for(let[e,i]of r.bezier.entries())f(i.x,`${t}[${String(n)}].bezier[${String(e)}].x`),f(i.y,`${t}[${String(n)}].bezier[${String(e)}].y`),i.z!==void 0&&f(i.z,`${t}[${String(n)}].bezier[${String(e)}].z`);else f(r.x,`${t}[${String(n)}].x`),f(r.y,`${t}[${String(n)}].y`),r.z!==void 0&&f(r.z,`${t}[${String(n)}].z`)},x=e=>e?e<=.5?`small`:e<=.8?`medium`:`big`:`off`,S=(e,t,n)=>{let r=e.get(t);if(!r)throw Error(`Unknown Sprite variant channel: ${t}`);if(!r.has(n))throw Error(`Unknown Sprite variant: ${t}.${n}`)},C=(e,t,n,r)=>{if(e){if(e.expression!==void 0&&!(e.expression in n))throw Error(`Unknown Sprite ${t}.expression: ${e.expression}`);e.eyes!==void 0&&S(r,`eyes`,e.eyes),e.mouth!==void 0&&S(r,`mouth`,e.mouth),e.blush!==void 0&&(f(e.blush,`${t}.blush`),S(r,`blush`,x(e.blush)))}},w=[`idle`,`listening`,`processing`,`speaking`,`thinking`,`error`];new Set(w);var T=()=>{let e=Symbol(`sprite-scene`),t=new Map,n=new Map,r=(n,r={})=>{let i=r.name;if(r.name!==void 0&&(!i||i.trim()===``))throw Error(`Sprite node name cannot be empty`);if(i&&t.has(i))throw Error(`Duplicate Sprite node name: ${i}`);let{parent:a,...s}=r,c=a?l(a):void 0;if(c&&c.owner!==e)throw Error(`Sprite nodes cannot cross scene definitions`);p(r.translate,`translate`),p(r.rotate,`rotate`),p(r.scale,`scale`),r.stroke!==void 0&&r.stroke!==!1&&f(r.stroke,`stroke`);let u={owner:e,kind:n,name:i,parent:c,children:[],options:{...s,translate:r.x!==void 0||r.y!==void 0||r.z!==void 0?{...r.translate,x:r.x??r.translate?.x,y:r.y??r.translate?.y,z:r.z??r.translate?.z}:r.translate}};c&&c.children.push(u),i&&t.set(i,u);let m={[d]:!0};return o(m,u),m};return{scene:{group:(e={})=>r(`group`,e),path:e=>(e.path&&b(e.path,`shape.path`),r(`shape`,e)),ellipse:e=>(f(e.width,`ellipse.width`),f(e.height,`ellipse.height`),r(`ellipse`,e)),hemisphere:e=>(f(e.diameter,`hemisphere.diameter`),r(`hemisphere`,e)),cylinder:e=>(f(e.diameter,`cylinder.diameter`),f(e.length,`cylinder.length`),r(`cylinder`,e))},owner:e,nodes:t,variants:n}};function E(t){if(!Object.is(t.apiVersion,1))throw Error(`Sprite definitions must declare apiVersion: 1`);if(!t.name.trim())throw Error(`Sprite definition name cannot be empty`);if(!Object.keys(t.palette).length)throw Error(`Sprite definitions need a palette`);for(let[e,n]of Object.entries(t.palette))if(!e.trim()||!n.trim())throw Error(`Invalid Sprite palette entry: ${e}`);if(!Object.keys(t.expressions).length)throw Error(`Sprite definitions need an expression`);let n=g({...t,palette:t.palette,expressions:t.expressions,activities:t.activities??{}}),r=T(),i=n.build({scene:r.scene,color:t=>{if(!(t in n.palette))throw Error(`Unknown Sprite palette slot: ${t}`);return`${e}${t}`}});if(Object.is(i,null)||Object.is(i,void 0)||!Object.hasOwn(i,`root`)||Object.is(i.root,null)||Object.is(i.root,void 0))throw Error(`Sprite build must return a root node`);let a=l(i.root);if(a.owner!==r.owner)throw Error(`Sprite root belongs to another definition`);for(let[e,t]of Object.entries(i.variants??{})){let n=new Map;for(let[i,a]of Object.entries(t)){let t=l(a);if(t.owner!==r.owner)throw Error(`Sprite variant is from another definition: ${e}.${i}`);n.set(i,t)}r.variants.set(e,n)}for(let[e,t]of Object.entries(n.expressions)){for(let[e,n]of Object.entries(t.variants??{})){let t=r.variants.get(e);if(!t)throw Error(`Unknown Sprite variant channel: ${e}`);if(!t.has(n))throw Error(`Unknown Sprite variant: ${e}.${n}`)}for(let[n,i]of Object.entries(t.variantChoices??{})){let t=r.variants.get(n);if(!t)throw Error(`Unknown Sprite variant channel: ${n}`);if(!i.length)throw Error(`Sprite expression choices cannot be empty: ${e}.${n}`);for(let e of i)if(!t.has(e))throw Error(`Unknown Sprite variant: ${n}.${e}`)}if(!e.trim())throw Error(`Sprite expression name cannot be empty`)}let o=n.activities;for(let[e,t]of Object.entries(o)){if(!e.trim())throw Error(`Sprite activity name cannot be empty`);if(t.motion&&(m(t.motion,`activity.${e}.motion`),!r.nodes.has(t.motion.target)))throw Error(`Unknown Sprite activity target: ${t.motion.target}`);t.mouseInfluence!==void 0&&f(t.mouseInfluence,`activity.${e}.mouseInfluence`),C(t.geometry,`activity.${e}.geometry`,n.expressions,r.variants);for(let[n,r]of(t.mouthCycle??[]).entries())if(f(r.durationMs,`activity.${e}.mouthCycle[${String(n)}].durationMs`),r.durationMs<0)throw Error(`Sprite activity.${e}.mouthCycle[${String(n)}].durationMs cannot be negative`)}for(let[e,t]of Object.entries(n.expressions))if(t.blush!==void 0&&(f(t.blush,`expression.${e}.blush`),S(r.variants,`blush`,x(t.blush))),t.motion&&(m(t.motion,`expression.${e}.motion`),!r.nodes.has(t.motion.target)))throw Error(`Unknown Sprite expression target: ${t.motion.target}`);let c=Object.keys(n.expressions)[0],u=n.defaultPresentation?.expression??c;if(!u||!(u in n.expressions))throw Error(`Unknown Sprite default expression: ${String(u)}`);let d=n.defaultPresentation?.activity??`idle`;if(n.defaultPresentation?.activity!==void 0&&!w.some(e=>e===d)&&!(d in o))throw Error(`Unknown Sprite default activity: ${d}`);for(let e of r.nodes.values())y(e);let p=n,h=new Set;for(let e of r.variants.values())for(let t of e.values())h.add(t);return s(p,{owner:r.owner,root:a,nodesByName:r.nodes,variants:r.variants,variantNodes:h,palette:n.palette,activities:o,expressions:n.expressions,defaultActivity:d,defaultExpression:u}),p}var D=(e,t,n,r={})=>{let i=e.group({parent:n,name:`eyes`}),a={parent:n,name:`mouth`};r.mouthTranslate!==void 0&&Object.assign(a,{translate:r.mouthTranslate});let o=r.hideMouth?void 0:e.group(a),s=(n,r,a,o,s,c,l)=>{let u=e.group({parent:i,name:`eyes.${n}`});for(let n of[-1,1]){let i={parent:u,translate:{x:6*n,y:o}};s&&Object.assign(i,{rotate:{z:s*n}});let d=e.group(i);e.ellipse({parent:d,width:r,height:a,stroke:1.5,fill:!0,color:t(`eye`)}),e.ellipse({parent:d,width:c,height:l,stroke:.5,fill:!0,color:t(`white`),translate:{y:-l/2,z:1}})}return u},c={normal:s(`normal`,3,5,-2,0,1.5,2),sad:s(`sad`,3,4,-1,-.2,1.5,2),surprised:s(`surprised`,4,5,-2,0,1.5,2)},l=e.group({parent:i,name:`eyes.happy`});for(let n of[-1,1])e.path({parent:l,path:[{x:-2.5,y:2},{bezier:[{x:-1,y:-1.5},{x:1,y:-1.5},{x:2.5,y:2}]}],closed:!1,stroke:1.5,color:t(`eye`),translate:{x:6*n,y:-2}});let u=e.group({parent:i,name:`eyes.angry`});for(let n of[-1,1]){let r=e.group({parent:u,rotate:{z:.3*n},translate:{x:6*n,y:-1}});e.ellipse({parent:r,width:3,height:4,stroke:1.5,fill:!0,color:t(`eye`)}),e.path({parent:r,path:[{x:-3,y:-3},{x:3,y:-2}],stroke:1.5,color:t(`eye`),translate:{y:-1}})}let d=e.group({parent:i,name:`eyes.dead`});for(let n of[-1,1]){let r=e.group({parent:d,translate:{x:6*n,y:-2}});e.path({parent:r,path:[{x:-2,y:-3},{x:2,y:3}],stroke:1.5,color:t(`dead`)}),e.path({parent:r,path:[{x:2,y:-3},{x:-2,y:3}],stroke:1.5,color:t(`dead`)})}let f=e.group({parent:i,name:`eyes.confused`}),p=e.group({parent:f,translate:{x:-6,y:-2}});e.ellipse({parent:p,width:3,height:5,stroke:1.5,fill:!0,color:t(`eye`)}),e.path({parent:p,path:[{x:-3,y:-4},{x:3,y:-2}],stroke:1.5,color:t(`eye`)});let m=e.group({parent:f,translate:{x:6,y:-2}});e.ellipse({parent:m,width:3,height:5,stroke:1.5,fill:!0,color:t(`eye`)});let h=e.group({parent:i,name:`eyes.sleepy`});for(let n of[-1,1])e.path({parent:h,path:[{x:-2.5,y:1},{bezier:[{x:-1,y:0},{x:1,y:0},{x:2.5,y:1}]}],closed:!1,stroke:1.5,color:t(`eye`),translate:{x:6*n,y:-1}});let g=e.group({parent:i,name:`eyes.nervous`});for(let n of[-1,1]){let r=e.group({parent:g,translate:{x:6*n,y:-2}});e.ellipse({parent:r,width:3,height:5,stroke:1.5,fill:!0,color:t(`eye`)})}let _=e.group({parent:g,translate:{x:10,y:4}});e.path({parent:_,path:[{x:0,y:-4}],stroke:2,color:t(`sweat`)}),e.ellipse({parent:_,width:3,height:4,stroke:0,fill:!0,color:t(`sweat`),translate:{y:2}});let v=e.group({parent:i,name:`eyes.shy`});for(let n of[-1,1])e.ellipse({parent:v,width:2.5,height:2,stroke:1.5,fill:!0,color:t(`eye`),translate:{x:6*n,y:-2}});let y=e.group({parent:i,name:`eyes.cute`});for(let n of[-1,1]){let r=e.group({parent:y,translate:{x:6*n,y:-1}});e.ellipse({parent:r,width:5,height:6,stroke:1.5,fill:!0,color:t(`eye`)}),e.ellipse({parent:r,width:2.5,height:3,stroke:0,fill:!0,color:t(`white`),translate:{y:-1.5,z:1}}),e.ellipse({parent:r,width:1,height:1,stroke:0,fill:!0,color:t(`white`),translate:{x:-1.5,y:1.5,z:1}})}let b=e.group({parent:i,name:`eyes.wink`}),x=n=>{let r=e.group({parent:b,name:`eyes.wink.${n}`}),i=n===`left`?-1:1;return e.path({parent:r,path:[{x:-2.5,y:2},{bezier:[{x:-1,y:-1.5},{x:1,y:-1.5},{x:2.5,y:2}]}],closed:!1,stroke:1.5,color:t(`eye`),translate:{x:6*i,y:-2}}),e.ellipse({parent:r,width:3,height:5,stroke:1.5,fill:!0,color:t(`eye`),translate:{x:-6*i,y:-2}}),r},S=x(`left`),C=x(`right`),w=(()=>{if(!o)return{};let n=(n,r,i=1.5)=>e.path({parent:o,name:`mouth.${n}`,path:r,closed:!1,stroke:i,color:t(`mouth`),translate:{y:2}}),r={normal:n(`normal`,[{x:-2.5,y:0},{x:2.5,y:0}]),happy:n(`happy`,[{x:-2.5,y:2},{bezier:[{x:0,y:4},{x:2.5,y:2},{x:2.5,y:2}]}]),sad:n(`sad`,[{x:-2.5,y:2},{bezier:[{x:0,y:0},{x:2.5,y:2},{x:2.5,y:2}]}]),small:n(`small`,[{x:-1.5,y:0},{x:1.5,y:0}],1),worried:n(`worried`,[{x:-2,y:1},{bezier:[{x:-.5,y:.5},{x:.5,y:.5},{x:2,y:1}]}],1)},i=e.ellipse({parent:o,name:`mouth.pout`,width:2,height:2.5,stroke:1.5,fill:!0,color:t(`mouth`),translate:{y:3}}),a=e.ellipse({parent:o,name:`mouth.surprised`,width:3,height:4,stroke:1.5,fill:!0,color:t(`mouth`),translate:{y:3}}),s=e.group({parent:o,name:`mouth.dead`,translate:{y:5}});e.ellipse({parent:s,width:3,height:2,stroke:1.5,fill:!0,color:t(`dead`)}),e.ellipse({parent:s,width:1.5,height:1,stroke:0,fill:!0,color:t(`deadTongue`),translate:{y:.5}});let c=e.group({parent:o,name:`mouth.open`,translate:{y:2}});return e.ellipse({parent:c,width:6,height:4,stroke:1.5,fill:!0,color:t(`mouth`)}),e.ellipse({parent:c,name:`mouth.tongue`,width:3,height:1.5,stroke:0,fill:!0,color:t(`tongue`),translate:{y:1}}),{normal:r.normal,happy:r.happy,sad:r.sad,angry:r.sad,surprised:a,dead:s,small:r.small,worried:r.worried,pout:i,open:c}})(),T=(r,i,a,o,s)=>{let c=e.group({parent:n,name:`blush.${r}`});for(let n of[-1,1])e.ellipse({parent:c,width:i,height:a,stroke:o,fill:!0,color:t(`blush`),translate:{x:s*n,y:4}});return c},E=e.group({parent:n,name:`blush.off`}),D=T(`medium`,5,2.5,1,10),O=r.blushMode===`medium-alias`?{off:E,small:D,medium:D,big:D}:{off:E,small:T(`small`,3.5,1.8,1,9),medium:D,big:T(`big`,7,3.5,2,11)};return{eyes:{normal:c.normal,happy:l,sad:c.sad,angry:u,surprised:c.surprised,dead:d,confused:f,sleepy:h,nervous:g,shy:v,wink:S,cute:y,"wink.left":S,"wink.right":C},mouth:w,blush:O}},O={angry:{variants:{eyes:`angry`,mouth:`angry`,blush:`off`},motion:{target:`root`,translate:{x:1,y:0},durationMs:150,repeat:`none`}},confused:{variants:{eyes:`confused`,mouth:`normal`,blush:`off`},motion:{target:`root`,translate:{x:0,y:.5},durationMs:150,repeat:`none`}},cute:{variants:{eyes:`cute`,mouth:`happy`,blush:`big`},motion:{target:`root`,translate:{x:0,y:-2.5},durationMs:150,repeat:`none`}},dead:{variants:{eyes:`dead`,mouth:`dead`,blush:`off`}},happy:{variants:{eyes:`happy`,mouth:`happy`,blush:`medium`},motion:{target:`root`,translate:{x:0,y:-2},durationMs:150,repeat:`none`}},nervous:{variants:{eyes:`nervous`,mouth:`worried`,blush:`off`},motion:{target:`root`,translate:{x:-.5,y:-1},durationMs:150,repeat:`none`}},normal:{variants:{eyes:`normal`,mouth:`normal`,blush:`off`},motion:{target:`root`,translate:{x:0,y:1},durationMs:150,repeat:`none`}},pleading:{variants:{eyes:`cute`,mouth:`pout`,blush:`medium`},motion:{target:`root`,translate:{x:0,y:-1},durationMs:150,repeat:`none`}},sad:{variants:{eyes:`sad`,mouth:`sad`,blush:`off`},motion:{target:`root`,translate:{x:0,y:2},durationMs:150,repeat:`none`}},shy:{variants:{eyes:`shy`,mouth:`small`,blush:`small`},motion:{target:`root`,translate:{x:0,y:1.5},durationMs:150,repeat:`none`}},sleepy:{variants:{eyes:`sleepy`,mouth:`small`,blush:`off`},motion:{target:`root`,translate:{x:0,y:2},durationMs:150,repeat:`none`}},surprised:{variants:{eyes:`surprised`,mouth:`surprised`,blush:`off`},motion:{target:`root`,translate:{x:0,y:-3},durationMs:150,repeat:`none`}},wink:{variants:{mouth:`happy`,blush:`small`},variantChoices:{eyes:[`wink.left`,`wink.right`]},motion:{target:`root`,translate:{x:0,y:-1.5},durationMs:150,repeat:`none`}}},k={idle:{motion:{target:`root`,translate:{y:.5},durationMs:2e3,repeat:`yoyo`},mouseInfluence:1},listening:{motion:{target:`root`,rotate:{x:-.2},durationMs:300,repeat:`yoyo`},mouseInfluence:.3},processing:{mouseInfluence:.2},speaking:{motion:{target:`root`,translate:{y:.5},durationMs:1500,repeat:`yoyo`},mouseInfluence:0,mouthCycle:[{durationMs:100,mouth:`open`},{durationMs:150,mouth:`base`},{durationMs:100,mouth:`open`},{durationMs:200,mouth:`base`}]},thinking:{motion:{target:`root`,rotate:{z:.1},durationMs:800,repeat:`yoyo`},mouseInfluence:0},error:{geometry:{expression:`dead`},mouseInfluence:.1}};export{u as a,E as i,O as n,D as r,k as t};