UNPKG

orgo

Version:

Computers for AI agents

1 lines 63.8 kB
{"version":3,"sources":["../node_modules/tsup/assets/esm_shims.js","../src/utils/auth.ts","../src/errors.ts","../src/api/client.ts","../src/providers/anthropic.ts","../src/prompt.ts","../src/computer.ts","../src/index.ts"],"names":["response","fetch","Computer"],"mappings":";;;;;;;;;;;;;;AAAA,IAAA,cAAA,GAAA,KAAA,CAAA;AAAA,EAAA,uCAAA,GAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACIO,SAAS,UAAU,MAAA,EAAyB;AAC/C,EAAA,MAAM,GAAA,GAAM,MAAA,IAAU,OAAA,CAAQ,GAAA,CAAI,YAAA;AAElC,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KAEF;AAAA,EACF;AAEA,EAAA,OAAO,GAAA;AACT;AAfF,IAAA,SAAA,GAAA,KAAA,CAAA;AAAA,EAAA,mBAAA,GAAA;AAAA,IAAA,cAAA,EAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACAA,IAIa,WAQE,QAAA,CAAA,CAaA;AAzBf,IAAA,WAAA,GAAA,KAAA,CAAA;AAAA,EAAA,eAAA,GAAA;AAAA,IAAA,cAAA,EAAA;AAIO,IAAM,SAAA,GAAN,MAAM,UAAA,SAAkB,KAAA,CAAM;AAAA,MACjC,YAAY,OAAA,EAAiB;AAC3B,QAAA,KAAA,CAAM,OAAO,CAAA;AACb,QAAA,IAAA,CAAK,IAAA,GAAO,WAAA;AACZ,QAAA,MAAA,CAAO,cAAA,CAAe,IAAA,EAAM,UAAA,CAAU,SAAS,CAAA;AAAA,MACjD;AAAA,KACF;AAEO,IAAM,QAAA,GAAN,MAAM,SAAA,SAAiB,SAAA,CAAU;AAAA,MAItC,WAAA,CAAY,OAAA,EAAiB,UAAA,EAAqB,QAAA,EAAoB;AACpE,QAAA,KAAA,CAAM,OAAO,CAAA;AACb,QAAA,IAAA,CAAK,IAAA,GAAO,UAAA;AACZ,QAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAClB,QAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAChB,QAAA,MAAA,CAAO,cAAA,CAAe,IAAA,EAAM,SAAA,CAAS,SAAS,CAAA;AAAA,MAChD;AAAA,KACF;AAEO,IAAM,WAAA,GAAN,MAAM,YAAA,SAAoB,SAAA,CAAU;AAAA,MACzC,YAAY,OAAA,EAAiB;AAC3B,QAAA,KAAA,CAAM,OAAO,CAAA;AACb,QAAA,IAAA,CAAK,IAAA,GAAO,aAAA;AACZ,QAAA,MAAA,CAAO,cAAA,CAAe,IAAA,EAAM,YAAA,CAAY,SAAS,CAAA;AAAA,MACnD;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;AC/BF,IAiBa,SAAA;AAjBb,IAAA,WAAA,GAAA,KAAA,CAAA;AAAA,EAAA,mBAAA,GAAA;AAAA,IAAA,cAAA,EAAA;AAKA,IAAA,SAAA,EAAA;AACA,IAAA,WAAA,EAAA;AAWO,IAAM,YAAN,MAAgB;AAAA,MAKrB,WAAA,CAAY,QAAiB,OAAA,EAAkB;AAC7C,QAAA,IAAA,CAAK,MAAA,GAAS,UAAU,MAAM,CAAA;AAC9B,QAAA,IAAA,CAAK,UAAU,OAAA,IAAW,yBAAA;AAC1B,QAAA,IAAA,CAAK,OAAA,GAAU;AAAA,UACb,eAAA,EAAiB,CAAA,OAAA,EAAU,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,UACtC,cAAA,EAAgB,kBAAA;AAAA,UAChB,QAAA,EAAU;AAAA,SACZ;AAAA,MACF;AAAA,MAEA,MAAc,OAAA,CACZ,MAAA,EACA,QAAA,EACA,IAAA,EACY;AACZ,QAAA,MAAM,GAAA,GAAM,CAAA,EAAG,IAAA,CAAK,OAAO,IAAI,QAAQ,CAAA,CAAA;AAEvC,QAAA,IAAI;AACF,UAAA,MAAM,OAAA,GAAuB;AAAA,YAC3B,MAAA;AAAA,YACA,SAAS,IAAA,CAAK;AAAA,WAChB;AAEA,UAAA,IAAI,MAAA,KAAW,SAAS,IAAA,EAAM;AAC5B,YAAA,MAAM,MAAA,GAAS,IAAI,eAAA,CAAgB,IAA8B,CAAA;AACjE,YAAA,MAAM,aAAA,GAAgB,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA;AACtC,YAAA,MAAMA,SAAAA,GAAW,MAAMC,MAAAA,CAAM,aAAA,EAAe,OAAO,CAAA;AACnD,YAAA,OAAO,IAAA,CAAK,eAAkBD,SAAQ,CAAA;AAAA,UACxC,WAAW,IAAA,EAAM;AACf,YAAA,OAAA,CAAQ,IAAA,GAAO,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA;AAAA,UACpC;AAEA,UAAA,MAAM,QAAA,GAAW,MAAMC,MAAAA,CAAM,GAAA,EAAK,OAAO,CAAA;AACzC,UAAA,OAAO,IAAA,CAAK,eAAkB,QAAQ,CAAA;AAAA,QACxC,SAAS,KAAA,EAAO;AACd,UAAA,IAAI,iBAAiB,QAAA,EAAU;AAC7B,YAAA,MAAM,KAAA;AAAA,UACR;AACA,UAAA,MAAM,IAAI,SAAS,CAAA,kBAAA,EAAqB,KAAA,YAAiB,QAAQ,KAAA,CAAM,OAAA,GAAU,eAAe,CAAA,CAAE,CAAA;AAAA,QACpG;AAAA,MACF;AAAA,MAEA,MAAc,eAAkB,QAAA,EAAgC;AAC9D,QAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,UAAA,IAAI,YAAA,GAAe,CAAA,WAAA,EAAc,QAAA,CAAS,MAAM,CAAA,CAAA;AAChD,UAAA,IAAI;AACF,YAAA,MAAM,SAAA,GAAY,MAAM,QAAA,CAAS,IAAA,EAAK;AACtC,YAAA,IAAI,UAAU,KAAA,EAAO;AACnB,cAAA,YAAA,IAAgB,CAAA,GAAA,EAAM,UAAU,KAAK,CAAA,CAAA;AAAA,YACvC;AAAA,UACF,CAAA,CAAA,MAAQ;AAAA,UAER;AACA,UAAA,MAAM,IAAI,QAAA,CAAS,YAAA,EAAc,QAAA,CAAS,QAAQ,QAAQ,CAAA;AAAA,QAC5D;AAEA,QAAA,OAAO,SAAS,IAAA,EAAK;AAAA,MACvB;AAAA;AAAA,MAGA,MAAa,eAAe,MAAA,EAAgD;AAC1E,QAAA,MAAM,UAAe,EAAC;AACtB,QAAA,IAAI,MAAA,EAAQ;AACV,UAAA,OAAA,CAAQ,MAAA,GAAS,MAAA;AAAA,QACnB;AACA,QAAA,OAAO,IAAA,CAAK,OAAA,CAAsB,MAAA,EAAQ,UAAA,EAAY,MAAA,CAAO,IAAA,CAAK,OAAO,CAAA,CAAE,MAAA,GAAS,CAAA,GAAI,OAAA,GAAU,MAAS,CAAA;AAAA,MAC7G;AAAA,MAEA,MAAa,gBAAgB,SAAA,EAA0C;AACrE,QAAA,OAAO,IAAA,CAAK,OAAA,CAAsB,KAAA,EAAO,CAAA,iBAAA,EAAoB,SAAS,CAAA,CAAE,CAAA;AAAA,MAC1E;AAAA,MAEA,MAAa,UAAU,SAAA,EAA4C;AACjE,QAAA,OAAO,IAAA,CAAK,OAAA,CAAwB,KAAA,EAAO,CAAA,iBAAA,EAAoB,SAAS,CAAA,CAAE,CAAA;AAAA,MAC5E;AAAA,MAEA,MAAa,cAAc,WAAA,EAAuC;AAEhE,QAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,SAAA,CAAU,WAAW,CAAA;AAChD,QAAA,MAAM,YAAa,OAAA,CAAgB,EAAA;AACnC,QAAA,IAAI,CAAC,SAAA,EAAW;AACd,UAAA,MAAM,IAAI,KAAA,CAAM,CAAA,8BAAA,EAAiC,WAAW,CAAA,CAAE,CAAA;AAAA,QAChE;AACA,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,MAAA,EAAQ,CAAA,SAAA,EAAY,SAAS,CAAA,MAAA,CAAQ,CAAA;AAAA,MAC3D;AAAA,MAEA,MAAa,aAAa,WAAA,EAAuC;AAE/D,QAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,SAAA,CAAU,WAAW,CAAA;AAChD,QAAA,MAAM,YAAa,OAAA,CAAgB,EAAA;AACnC,QAAA,IAAI,CAAC,SAAA,EAAW;AACd,UAAA,MAAM,IAAI,KAAA,CAAM,CAAA,8BAAA,EAAiC,WAAW,CAAA,CAAE,CAAA;AAAA,QAChE;AACA,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,MAAA,EAAQ,CAAA,SAAA,EAAY,SAAS,CAAA,KAAA,CAAO,CAAA;AAAA,MAC1D;AAAA,MAEA,MAAa,gBAAgB,WAAA,EAAuC;AAElE,QAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,SAAA,CAAU,WAAW,CAAA;AAChD,QAAA,MAAM,YAAa,OAAA,CAAgB,EAAA;AACnC,QAAA,IAAI,CAAC,SAAA,EAAW;AACd,UAAA,MAAM,IAAI,KAAA,CAAM,CAAA,8BAAA,EAAiC,WAAW,CAAA,CAAE,CAAA;AAAA,QAChE;AACA,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,MAAA,EAAQ,CAAA,SAAA,EAAY,SAAS,CAAA,QAAA,CAAU,CAAA;AAAA,MAC7D;AAAA,MAEA,MAAa,eAAe,WAAA,EAAuC;AAEjE,QAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,SAAA,CAAU,WAAW,CAAA;AAChD,QAAA,MAAM,YAAa,OAAA,CAAgB,EAAA;AACnC,QAAA,IAAI,CAAC,SAAA,EAAW;AACd,UAAA,MAAM,IAAI,KAAA,CAAM,CAAA,8BAAA,EAAiC,WAAW,CAAA,CAAE,CAAA;AAAA,QAChE;AACA,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,MAAA,EAAQ,CAAA,SAAA,EAAY,SAAS,CAAA,OAAA,CAAS,CAAA;AAAA,MAC5D;AAAA;AAAA,MAGA,MAAa,SAAA,CAAU,SAAA,EAAmB,CAAA,EAAW,CAAA,EAA6B;AAChF,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,MAAA,EAAQ,CAAA,UAAA,EAAa,SAAS,CAAA,MAAA,CAAA,EAAU;AAAA,UAC1D,MAAA,EAAQ,MAAA;AAAA,UACR,CAAA;AAAA,UACA;AAAA,SACD,CAAA;AAAA,MACH;AAAA,MAEA,MAAa,UAAA,CAAW,SAAA,EAAmB,CAAA,EAAW,CAAA,EAA6B;AACjF,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,MAAA,EAAQ,CAAA,UAAA,EAAa,SAAS,CAAA,MAAA,CAAA,EAAU;AAAA,UAC1D,MAAA,EAAQ,OAAA;AAAA,UACR,CAAA;AAAA,UACA;AAAA,SACD,CAAA;AAAA,MACH;AAAA,MAEA,MAAa,WAAA,CAAY,SAAA,EAAmB,CAAA,EAAW,CAAA,EAA6B;AAClF,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,MAAA,EAAQ,CAAA,UAAA,EAAa,SAAS,CAAA,MAAA,CAAA,EAAU;AAAA,UAC1D,MAAA,EAAQ,MAAA;AAAA,UACR,CAAA;AAAA,UACA,CAAA;AAAA,UACA,MAAA,EAAQ;AAAA,SACT,CAAA;AAAA,MACH;AAAA,MAEA,MAAa,IAAA,CACX,SAAA,EACA,MAAA,EACA,MAAA,EACA,MACA,IAAA,EACA,MAAA,GAA2B,MAAA,EAC3B,QAAA,GAAmB,GAAA,EACD;AAClB,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,MAAA,EAAQ,CAAA,UAAA,EAAa,SAAS,CAAA,KAAA,CAAA,EAAS;AAAA,UACzD,OAAA,EAAS,MAAA;AAAA,UACT,OAAA,EAAS,MAAA;AAAA,UACT,KAAA,EAAO,IAAA;AAAA,UACP,KAAA,EAAO,IAAA;AAAA,UACP,MAAA;AAAA,UACA;AAAA,SACD,CAAA;AAAA,MACH;AAAA,MAEA,MAAa,MAAA,CAAO,SAAA,EAAmB,SAAA,EAAmB,MAAA,EAAkC;AAC1F,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,MAAA,EAAQ,CAAA,UAAA,EAAa,SAAS,CAAA,OAAA,CAAA,EAAW;AAAA,UAC3D,SAAA;AAAA,UACA;AAAA,SACD,CAAA;AAAA,MACH;AAAA,MAEA,MAAa,QAAA,CAAS,SAAA,EAAmB,IAAA,EAAgC;AACvE,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,MAAA,EAAQ,CAAA,UAAA,EAAa,SAAS,CAAA,KAAA,CAAA,EAAS;AAAA,UACzD;AAAA,SACD,CAAA;AAAA,MACH;AAAA,MAEA,MAAa,QAAA,CAAS,SAAA,EAAmB,GAAA,EAA+B;AACtE,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,MAAA,EAAQ,CAAA,UAAA,EAAa,SAAS,CAAA,IAAA,CAAA,EAAQ;AAAA,UACxD;AAAA,SACD,CAAA;AAAA,MACH;AAAA,MAEA,MAAa,cAAc,SAAA,EAAgD;AACzE,QAAA,OAAO,IAAA,CAAK,OAAA,CAA4B,KAAA,EAAO,CAAA,UAAA,EAAa,SAAS,CAAA,WAAA,CAAa,CAAA;AAAA,MACpF;AAAA,MAEA,MAAa,WAAA,CAAY,SAAA,EAAmB,OAAA,EAAwC;AAClF,QAAA,OAAO,IAAA,CAAK,OAAA,CAAsB,MAAA,EAAQ,CAAA,UAAA,EAAa,SAAS,CAAA,KAAA,CAAA,EAAS;AAAA,UACvE;AAAA,SACD,CAAA;AAAA,MACH;AAAA,MAEA,MAAa,aAAA,CAAc,SAAA,EAAmB,IAAA,EAAc,UAAkB,EAAA,EAA2B;AACvG,QAAA,OAAO,IAAA,CAAK,OAAA,CAAsB,MAAA,EAAQ,CAAA,UAAA,EAAa,SAAS,CAAA,KAAA,CAAA,EAAS;AAAA,UACvE,IAAA;AAAA,UACA;AAAA,SACD,CAAA;AAAA,MACH;AAAA,MAEA,MAAa,IAAA,CAAK,SAAA,EAAmB,OAAA,EAAmC;AACtE,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,MAAA,EAAQ,CAAA,UAAA,EAAa,SAAS,CAAA,KAAA,CAAA,EAAS;AAAA,UACzD;AAAA,SACD,CAAA;AAAA,MACH;AAAA;AAAA,MAGA,MAAa,WAAA,CAAY,SAAA,EAAmB,cAAA,EAA0C;AACpF,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,MAAA,EAAQ,CAAA,UAAA,EAAa,SAAS,CAAA,aAAA,CAAA,EAAiB;AAAA,UACjE,eAAA,EAAiB;AAAA,SAClB,CAAA;AAAA,MACH;AAAA,MAEA,MAAa,WAAW,SAAA,EAAqC;AAC3D,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,MAAA,EAAQ,CAAA,UAAA,EAAa,SAAS,CAAA,YAAA,CAAc,CAAA;AAAA,MAClE;AAAA,MAEA,MAAa,gBAAgB,SAAA,EAAqG;AAChI,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,KAAA,EAAO,CAAA,UAAA,EAAa,SAAS,CAAA,cAAA,CAAgB,CAAA;AAAA,MACnE;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;AC/OA,IA8Ca,iBAAA;AA9Cb,IAAA,cAAA,GAAA,KAAA,CAAA;AAAA,EAAA,4BAAA,GAAA;AAAA,IAAA,cAAA,EAAA;AAKA,IAAA,WAAA,EAAA;AAyCO,IAAM,oBAAN,MAAkD;AAAA,MAGvD,WAAA,GAAc;AACZ,QAAA,IAAI;AACF,UAAA,IAAA,CAAK,SAAA,GAAY,SAAA;AAAA,QACnB,SAAS,KAAA,EAAO;AACd,UAAA,MAAM,IAAI,KAAA;AAAA,YACR;AAAA,WACF;AAAA,QACF;AAAA,MACF;AAAA,MAEA,MAAa,QAAQ,OAAA,EAAyD;AAC5E,QAAA,MAAM;AAAA,UACJ,UAAA;AAAA,UACA,WAAA;AAAA,UACA,QAAA;AAAA,UACA,MAAA,GAAS,QAAQ,GAAA,CAAI,iBAAA;AAAA,UACrB,KAAA,GAAQ,4BAAA;AAAA,UACR,YAAA,GAAe,IAAA;AAAA,UACf,aAAA,GAAgB,GAAA;AAAA,UAChB,UAAA;AAAA,UACA,WAAA;AAAA,UACA,mBAAA,GAAsB,CAAA;AAAA,UACtB,eAAA,GAAkB,KAAA;AAAA,UAClB,cAAA,GAAiB,IAAA;AAAA,UACjB,SAAA,GAAY,IAAA;AAAA,UACZ,aAAA,GAAgB;AAAA,SAClB,GAAI,OAAA;AAEJ,QAAA,IAAI,CAAC,MAAA,EAAQ;AACX,UAAA,MAAM,IAAI,KAAA;AAAA,YACR;AAAA,WACF;AAAA,QACF;AAGA,QAAA,MAAM,SAAS,IAAI,IAAA,CAAK,SAAA,CAAU,EAAE,QAAQ,CAAA;AAG5C,QAAA,MAAM,QAAA,GAA4B;AAAA,UAChC,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAA,EAAS,WAAA;AAAY,SACvC;AAGA,QAAA,MAAM,YAAA,GAAe,IAAA,CAAK,eAAA,CAAgB,YAAA,EAAc,aAAa,CAAA;AAErE,QAAA,IAAI;AAEF,UAAA,MAAM,KAAA,GAAQ;AAAA,YACZ;AAAA,cACE,IAAA,EAAM,mBAAA;AAAA,cACN,IAAA,EAAM,UAAA;AAAA,cACN,gBAAA,EAAkB,YAAA;AAAA,cAClB,iBAAA,EAAmB,aAAA;AAAA,cACnB,cAAA,EAAgB;AAAA;AAClB,WACF;AAEA,UAAA,IAAI,QAAA,EAAU;AACZ,YAAA,QAAA,CAAS,UAAU,mCAAmC,CAAA;AAAA,UACxD;AAGA,UAAA,MAAM,SAAA,GAAY,IAAI,SAAA,CAAU,UAAA,EAAY,WAAW,CAAA;AAEvD,UAAA,IAAI,SAAA,GAAY,CAAA;AAChB,UAAA,IAAI,eAAA,GAAkB,CAAA;AAGtB,UAAA,OAAO,YAAY,aAAA,EAAe;AAChC,YAAA,SAAA,EAAA;AAGA,YAAA,IAAI,kBAAkB,mBAAA,EAAqB;AACzC,cAAA,IAAA,CAAK,yBAAA,CAA0B,UAAU,mBAAmB,CAAA;AAC5D,cAAA,eAAA,GAAkB,mBAAA;AAAA,YACpB;AAGA,YAAA,MAAM,aAAA,GAAyC;AAAA,cAC7C,KAAA;AAAA,cACA,UAAA,EAAY,SAAA;AAAA,cACZ,MAAA,EAAQ,YAAA;AAAA,cACR,QAAA;AAAA,cACA,KAAA;AAAA,cACA,KAAA,EAAO,CAAC,yBAAyB;AAAA,aACnC;AAGA,YAAA,IAAI,eAAA,EAAiB;AACnB,cAAA,aAAA,CAAc,QAAA,GAAW;AAAA,gBACvB,IAAA,EAAM,SAAA;AAAA,gBACN,aAAA,EAAe;AAAA,eACjB;AAAA,YACF;AAEA,YAAA,IAAI;AACF,cAAA,MAAM,WAAW,MAAM,MAAA,CAAO,IAAA,CAAK,QAAA,CAAS,OAAO,aAAoB,CAAA;AACvE,cAAA,MAAM,kBAAkB,QAAA,CAAS,OAAA;AAGjC,cAAA,MAAM,gBAAA,GAAkC;AAAA,gBACtC,IAAA,EAAM,WAAA;AAAA,gBACN,OAAA,EAAS;AAAA,eACX;AACA,cAAA,QAAA,CAAS,KAAK,gBAAgB,CAAA;AAG9B,cAAA,KAAA,MAAW,SAAS,eAAA,EAAiB;AACnC,gBAAA,IAAI,KAAA,CAAM,IAAA,KAAS,MAAA,IAAU,QAAA,EAAU;AACrC,kBAAA,QAAA,CAAS,MAAA,EAAQ,MAAM,IAAI,CAAA;AAAA,gBAC7B,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,KAAS,UAAA,IAAc,QAAA,EAAU;AAChD,kBAAA,QAAA,CAAS,UAAA,EAAY,MAAM,QAAQ,CAAA;AAAA,gBACrC,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,KAAS,UAAA,IAAc,QAAA,EAAU;AAChD,kBAAA,MAAM,UAAA,GAAa;AAAA,oBACjB,QAAQ,KAAA,CAAM,IAAA,CAAK,KAAA,CAAM,GAAG,EAAE,GAAA,EAAI;AAAA,oBAClC,GAAG,KAAA,CAAM;AAAA,mBACX;AACA,kBAAA,QAAA,CAAS,YAAY,UAAU,CAAA;AAAA,gBACjC;AAAA,cACF;AAGA,cAAA,MAAM,cAA4B,EAAC;AACnC,cAAA,KAAA,MAAW,SAAS,eAAA,EAAiB;AACnC,gBAAA,IAAI,KAAA,CAAM,SAAS,UAAA,EAAY;AAC7B,kBAAA,MAAM,MAAA,GAAS,MAAM,IAAA,CAAK,WAAA;AAAA,oBACxB,UAAA;AAAA,oBACA,KAAA,CAAM,KAAA;AAAA,oBACN,QAAA;AAAA,oBACA;AAAA,mBACF;AAEA,kBAAA,MAAM,UAAA,GAAyB;AAAA,oBAC7B,IAAA,EAAM,aAAA;AAAA,oBACN,aAAa,KAAA,CAAM,EAAA;AAAA,oBACnB,SAAS;AAAC,mBACZ;AAGA,kBAAA,IACE,OAAO,WAAW,QAAA,IAClB,MAAA,KAAW,QACX,MAAA,IAAU,MAAA,IACV,MAAA,CAAO,IAAA,KAAS,OAAA,EAChB;AACA,oBAAA,UAAA,CAAW,OAAA,GAAU,CAAC,MAAoB,CAAA;AAC1C,oBAAA,IAAI,KAAA,CAAM,KAAA,CAAM,MAAA,KAAW,YAAA,EAAc;AACvC,sBAAA,eAAA,EAAA;AAAA,oBACF;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,UAAA,CAAW,UAAU,CAAC;AAAA,sBACpB,IAAA,EAAM,MAAA;AAAA,sBACN,IAAA,EAAM,OAAO,MAAM;AAAA,qBACpB,CAAA;AAAA,kBACH;AAEA,kBAAA,WAAA,CAAY,KAAK,UAAU,CAAA;AAAA,gBAC7B;AAAA,cACF;AAGA,cAAA,IAAI,WAAA,CAAY,WAAW,CAAA,EAAG;AAC5B,gBAAA,IAAI,QAAA,EAAU;AACZ,kBAAA,QAAA,CAAS,UAAU,gBAAgB,CAAA;AAAA,gBACrC;AACA,gBAAA,OAAO,QAAA;AAAA,cACT;AAGA,cAAA,QAAA,CAAS,IAAA,CAAK;AAAA,gBACZ,IAAA,EAAM,MAAA;AAAA,gBACN,OAAA,EAAS;AAAA,eACV,CAAA;AAAA,YAEH,SAAS,KAAA,EAAO;AAEd,cAAA,IAAI,KAAA,YAAiB,SAAS,KAAA,CAAM,OAAA,CAAQ,aAAY,CAAE,QAAA,CAAS,QAAQ,CAAA,EAAG;AAC5E,gBAAA,IAAI,QAAA,EAAU;AACZ,kBAAA,QAAA,CAAS,SAAS,+CAA+C,CAAA;AAAA,gBACnE;AACA,gBAAA,IAAA,CAAK,yBAAA,CAA0B,UAAU,CAAC,CAAA;AAC1C,gBAAA;AAAA,cACF;AACA,cAAA,MAAM,KAAA;AAAA,YACR;AAAA,UACF;AAGA,UAAA,IAAI,QAAA,EAAU;AACZ,YAAA,QAAA,CAAS,QAAA,EAAU,CAAA,4BAAA,EAA+B,aAAa,CAAA,CAAA,CAAG,CAAA;AAAA,UACpE;AAEA,UAAA,OAAO,QAAA;AAAA,QAET,SAAS,KAAA,EAAO;AACd,UAAA,IAAI,QAAA,EAAU;AACZ,YAAA,QAAA,CAAS,SAAS,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,UAC1E;AACA,UAAA,MAAM,KAAA;AAAA,QACR;AAAA,MACF;AAAA,MAEQ,eAAA,CAAgB,cAAsB,aAAA,EAA+B;AAC3E,QAAA,OAAO,CAAA;;AAAA;AAAA,2EAAA,EAGkE,YAAY,IAAI,aAAa,CAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAA,CAAA;AAAA,MAyBxG;AAAA,MAEQ,yBAAA,CAA0B,UAA2B,SAAA,EAAyB;AACpF,QAAA,MAAM,cAKD,EAAC;AAEN,QAAA,QAAA,CAAS,OAAA,CAAQ,CAAC,GAAA,EAAK,MAAA,KAAW;AAChC,UAAA,IAAI,GAAA,CAAI,SAAS,MAAA,EAAQ;AAEzB,UAAA,MAAM,UAAU,GAAA,CAAI,OAAA;AACpB,UAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,EAAG;AAE7B,UAAA,OAAA,CAAQ,OAAA,CAAQ,CAAC,KAAA,EAAY,UAAA,KAAe;AAC1C,YAAA,IAAI,KAAA,EAAO,SAAS,aAAA,EAAe;AAEnC,YAAA,MAAM,YAAA,GAAe,KAAA,CAAM,OAAA,IAAW,EAAC;AACvC,YAAA,YAAA,CAAa,OAAA,CAAQ,CAAC,IAAA,EAAW,OAAA,KAAoB;AACnD,cAAA,IAAI,IAAA,EAAM,IAAA,KAAS,OAAA,IAAW,IAAA,CAAK,MAAA,EAAQ;AACzC,gBAAA,WAAA,CAAY,IAAA,CAAK;AAAA,kBACf,MAAA;AAAA,kBACA,UAAA;AAAA,kBACA,cAAA,EAAgB,OAAA;AAAA,kBAChB,WAAA,EAAa;AAAA,iBACd,CAAA;AAAA,cACH;AAAA,YACF,CAAC,CAAA;AAAA,UACH,CAAC,CAAA;AAAA,QACH,CAAC,CAAA;AAGD,QAAA,IAAI,WAAA,CAAY,SAAS,SAAA,EAAW;AAClC,UAAA,MAAM,QAAA,GAAW,WAAA,CAAY,KAAA,CAAM,CAAA,EAAG,CAAC,SAAS,CAAA;AAChD,UAAA,QAAA,CAAS,OAAA,CAAQ,CAAC,EAAE,WAAA,EAAY,KAAM;AACpC,YAAA,IAAI,WAAA,CAAY,QAAQ,IAAA,EAAM;AAE5B,cAAA,WAAA,CAAY,OAAO,IAAA,GAAO,kGAAA;AAC1B,cAAA,WAAA,CAAY,OAAO,UAAA,GAAa,WAAA;AAAA,YAClC;AAAA,UACF,CAAC,CAAA;AAAA,QACH;AAAA,MACF;AAAA,MAEA,MAAc,WAAA,CACZ,UAAA,EACA,MAAA,EACA,UACA,SAAA,EAC8B;AAC9B,QAAA,MAAM,SAAS,MAAA,CAAO,MAAA;AAEtB,QAAA,IAAI,QAAA,EAAU;AACZ,UAAA,QAAA,CAAS,gBAAA,EAAkB,EAAE,MAAA,EAAQ,MAAA,EAAQ,CAAA;AAAA,QAC/C;AAEA,QAAA,IAAI;AACF,UAAA,IAAI,CAAC,SAAA,EAAW;AACd,YAAA,SAAA,GAAY,IAAI,SAAA,EAAU;AAAA,UAC5B;AAEA,UAAA,QAAQ,MAAA;AAAQ,YACd,KAAK,YAAA,EAAc;AACjB,cAAA,MAAM,QAAA,GAAW,MAAM,SAAA,CAAU,aAAA,CAAc,UAAU,CAAA;AACzD,cAAA,IAAI,QAAA,EAAU;AACZ,gBAAA,QAAA,CAAS,eAAe,EAAE,IAAA,EAAM,OAAA,EAAS,MAAA,EAAQ,cAAc,CAAA;AAAA,cACjE;AAIA,cAAA,MAAM,WAAW,QAAA,CAAS,KAAA;AAE1B,cAAA,IAAI,CAAC,QAAA,EAAU;AACb,gBAAA,MAAM,IAAI,MAAM,gCAAgC,CAAA;AAAA,cAClD;AAGA,cAAA,MAAM,WAAA,GAAc,MAAM,KAAA,CAAM,QAAQ,CAAA;AACxC,cAAA,IAAI,CAAC,YAAY,EAAA,EAAI;AACnB,gBAAA,MAAM,IAAI,KAAA,CAAM,CAAA,uBAAA,EAA0B,WAAA,CAAY,UAAU,CAAA,CAAE,CAAA;AAAA,cACpE;AAGA,cAAA,MAAM,WAAA,GAAc,MAAM,WAAA,CAAY,WAAA,EAAY;AAClD,cAAA,MAAM,SAAS,MAAA,CAAO,IAAA,CAAK,WAAW,CAAA,CAAE,SAAS,QAAQ,CAAA;AAEzD,cAAA,OAAO;AAAA,gBACL,IAAA,EAAM,OAAA;AAAA,gBACN,MAAA,EAAQ;AAAA,kBACN,IAAA,EAAM,QAAA;AAAA,kBACN,UAAA,EAAY,YAAA;AAAA,kBACZ,IAAA,EAAM;AAAA;AACR,eACF;AAAA,YACF;AAAA,YAEA,KAAK,YAAA,EAAc;AACjB,cAAA,MAAM,QAAQ,MAAA,CAAO,UAAA;AACrB,cAAA,IAAI,CAAC,KAAA,EAAO;AACV,gBAAA,MAAM,IAAI,MAAM,qCAAqC,CAAA;AAAA,cACvD;AACA,cAAA,MAAM,CAAC,CAAA,EAAG,CAAC,CAAA,GAAI,KAAA;AACf,cAAA,MAAM,SAAA,CAAU,SAAA,CAAU,UAAA,EAAY,CAAA,EAAG,CAAC,CAAA;AAC1C,cAAA,IAAI,QAAA,EAAU;AACZ,gBAAA,QAAA,CAAS,eAAe,EAAE,MAAA,EAAQ,YAAA,EAAc,CAAA,EAAG,GAAG,CAAA;AAAA,cACxD;AACA,cAAA,OAAO,CAAA,iBAAA,EAAoB,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,CAAA;AAAA,YACpC;AAAA,YAEA,KAAK,aAAA,EAAe;AAClB,cAAA,MAAM,QAAQ,MAAA,CAAO,UAAA;AACrB,cAAA,IAAI,CAAC,KAAA,EAAO;AACV,gBAAA,MAAM,IAAI,MAAM,sCAAsC,CAAA;AAAA,cACxD;AACA,cAAA,MAAM,CAAC,CAAA,EAAG,CAAC,CAAA,GAAI,KAAA;AACf,cAAA,MAAM,SAAA,CAAU,UAAA,CAAW,UAAA,EAAY,CAAA,EAAG,CAAC,CAAA;AAC3C,cAAA,IAAI,QAAA,EAAU;AACZ,gBAAA,QAAA,CAAS,eAAe,EAAE,MAAA,EAAQ,aAAA,EAAe,CAAA,EAAG,GAAG,CAAA;AAAA,cACzD;AACA,cAAA,OAAO,CAAA,kBAAA,EAAqB,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,CAAA;AAAA,YACrC;AAAA,YAEA,KAAK,cAAA,EAAgB;AACnB,cAAA,MAAM,QAAQ,MAAA,CAAO,UAAA;AACrB,cAAA,IAAI,CAAC,KAAA,EAAO;AACV,gBAAA,MAAM,IAAI,MAAM,uCAAuC,CAAA;AAAA,cACzD;AACA,cAAA,MAAM,CAAC,CAAA,EAAG,CAAC,CAAA,GAAI,KAAA;AACf,cAAA,MAAM,SAAA,CAAU,WAAA,CAAY,UAAA,EAAY,CAAA,EAAG,CAAC,CAAA;AAC5C,cAAA,IAAI,QAAA,EAAU;AACZ,gBAAA,QAAA,CAAS,eAAe,EAAE,MAAA,EAAQ,cAAA,EAAgB,CAAA,EAAG,GAAG,CAAA;AAAA,cAC1D;AACA,cAAA,OAAO,CAAA,mBAAA,EAAsB,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,CAAA;AAAA,YACtC;AAAA,YAEA,KAAK,MAAA,EAAQ;AACX,cAAA,MAAM,OAAO,MAAA,CAAO,IAAA;AACpB,cAAA,IAAI,CAAC,IAAA,EAAM;AACT,gBAAA,MAAM,IAAI,MAAM,0BAA0B,CAAA;AAAA,cAC5C;AACA,cAAA,MAAM,SAAA,CAAU,QAAA,CAAS,UAAA,EAAY,IAAI,CAAA;AACzC,cAAA,IAAI,QAAA,EAAU;AACZ,gBAAA,QAAA,CAAS,aAAA,EAAe,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,CAAA;AAAA,cAClD;AACA,cAAA,OAAO,WAAW,IAAI,CAAA,CAAA,CAAA;AAAA,YACxB;AAAA,YAEA,KAAK,KAAA,EAAO;AACV,cAAA,IAAI,MAAM,MAAA,CAAO,IAAA;AACjB,cAAA,IAAI,CAAC,GAAA,EAAK;AACR,gBAAA,MAAM,IAAI,MAAM,4BAA4B,CAAA;AAAA,cAC9C;AAEA,cAAA,IAAI,GAAA,CAAI,WAAA,EAAY,KAAM,QAAA,EAAU;AAClC,gBAAA,GAAA,GAAM,OAAA;AAAA,cACR;AACA,cAAA,MAAM,SAAA,CAAU,QAAA,CAAS,UAAA,EAAY,GAAG,CAAA;AACxC,cAAA,IAAI,QAAA,EAAU;AACZ,gBAAA,QAAA,CAAS,aAAA,EAAe,EAAE,MAAA,EAAQ,KAAA,EAAO,KAAK,CAAA;AAAA,cAChD;AACA,cAAA,OAAO,gBAAgB,GAAG,CAAA,CAAA;AAAA,YAC5B;AAAA,YAEA,KAAK,QAAA,EAAU;AACb,cAAA,MAAM,YAAY,MAAA,CAAO,gBAAA;AACzB,cAAA,MAAM,SAAS,MAAA,CAAO,aAAA;AACtB,cAAA,IAAI,CAAC,SAAA,IAAa,MAAA,KAAW,KAAA,CAAA,EAAW;AACtC,gBAAA,MAAM,IAAI,MAAM,6CAA6C,CAAA;AAAA,cAC/D;AACA,cAAA,MAAM,SAAA,CAAU,MAAA,CAAO,UAAA,EAAY,SAAA,EAAW,MAAM,CAAA;AACpD,cAAA,IAAI,QAAA,EAAU;AACZ,gBAAA,QAAA,CAAS,eAAe,EAAE,MAAA,EAAQ,QAAA,EAAU,SAAA,EAAW,QAAQ,CAAA;AAAA,cACjE;AACA,cAAA,OAAO,CAAA,SAAA,EAAY,SAAS,CAAA,IAAA,EAAO,MAAM,CAAA,CAAA;AAAA,YAC3C;AAAA,YAEA,KAAK,MAAA,EAAQ;AACX,cAAA,MAAM,QAAA,GAAY,OAAO,QAAA,IAAuB,CAAA;AAChD,cAAA,MAAM,SAAA,CAAU,IAAA,CAAK,UAAA,EAAY,QAAQ,CAAA;AACzC,cAAA,IAAI,QAAA,EAAU;AACZ,gBAAA,QAAA,CAAS,aAAA,EAAe,EAAE,MAAA,EAAQ,MAAA,EAAQ,UAAU,CAAA;AAAA,cACtD;AACA,cAAA,OAAO,cAAc,QAAQ,CAAA,UAAA,CAAA;AAAA,YAC/B;AAAA,YAEA,SAAS;AACP,cAAA,MAAM,KAAA,GAAQ,uBAAuB,MAAM,CAAA,CAAA;AAC3C,cAAA,IAAI,QAAA,EAAU;AACZ,gBAAA,QAAA,CAAS,SAAS,KAAK,CAAA;AAAA,cACzB;AACA,cAAA,MAAM,IAAI,MAAM,KAAK,CAAA;AAAA,YACvB;AAAA;AACF,QACF,SAAS,KAAA,EAAO;AACd,UAAA,MAAM,QAAA,GAAW,CAAA,gBAAA,EAAmB,MAAM,CAAA,EAAA,EAAK,KAAA,YAAiB,QAAQ,KAAA,CAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA,CAAA;AACrG,UAAA,IAAI,QAAA,EAAU;AACZ,YAAA,QAAA,CAAS,SAAS,QAAQ,CAAA;AAAA,UAC5B;AACA,UAAA,OAAO,UAAU,QAAQ,CAAA,CAAA;AAAA,QAC3B;AAAA,MACF;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC/bO,SAAS,WAAA,CAAY,eAAuB,WAAA,EAA6B;AAC9E,EAAA,MAAM,aAAA,GAAgB,iBAAiB,YAAY,CAAA;AAEnD,EAAA,IAAI,CAAC,aAAA,EAAe;AAClB,IAAA,MAAM,YAAY,MAAA,CAAO,IAAA,CAAK,gBAAgB,CAAA,CAAE,KAAK,IAAI,CAAA;AACzD,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,kBAAA,EAAqB,YAAY,CAAA,uBAAA,EAA0B,SAAS,CAAA,CAAE,CAAA;AAAA,EACxF;AAEA,EAAA,OAAO,IAAI,aAAA,EAAc;AAC3B;AA7CA,IA+BM,gBAAA;AA/BN,IAAA,WAAA,GAAA,KAAA,CAAA;AAAA,EAAA,eAAA,GAAA;AAAA,IAAA,cAAA,EAAA;AA4BA,IAAA,cAAA,EAAA;AAGA,IAAM,gBAAA,GAA6D;AAAA,MACjE,SAAA,EAAW;AAAA;AAAA,KAEb;AAAA,EAAA;AAAA,CAAA,CAAA;;;AClCA,IAAA,gBAAA,GAAA,EAAA;AAAA,QAAA,CAAA,gBAAA,EAAA;AAAA,EAAA,QAAA,EAAA,MAAA;AAAA,CAAA,CAAA;AAAA,IAiBa;AAjBb,IAAA,aAAA,GAAA,KAAA,CAAA;AAAA,EAAA,iBAAA,GAAA;AAAA,IAAA,cAAA,EAAA;AAIA,IAAA,WAAA,EAAA;AACA,IAAA,WAAA,EAAA;AAYO,IAAM,QAAA,GAAN,MAAM,SAAA,CAAS;AAAA,MAOZ,WAAA,CACN,MAAA,EACA,UAAA,EACA,SAAA,EACA,IAAA,EACA;AACA,QAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,QAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAClB,QAAA,IAAA,CAAK,MAAM,IAAI,SAAA,CAAU,IAAA,CAAK,MAAA,EAAQ,KAAK,UAAU,CAAA;AACrD,QAAA,IAAI,aAAa,IAAA,EAAM;AACrB,UAAA,IAAA,CAAK,SAAA,GAAY,SAAA;AACjB,UAAA,IAAA,CAAK,KAAA,GAAQ,IAAA;AAAA,QACf;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAgBA,aAAoB,OAAO,OAAA,EAQL;AACpB,QAAA,MAAM,MAAA,GAAS,OAAA,EAAS,MAAA,IAAU,OAAA,CAAQ,IAAI,YAAA,IAAgB,EAAA;AAC9D,QAAA,MAAM,QAAA,GAAW,IAAI,SAAA,CAAS,MAAA,EAAQ,SAAS,UAAU,CAAA;AAGzD,QAAA,IAAI,MAAM,OAAA,EAAS,GAAA;AACnB,QAAA,IAAI,GAAA,KAAQ,MAAA,IAAa,OAAA,EAAS,MAAA,KAAW,MAAA,EAAW;AACtD,UAAA,GAAA,GAAM,OAAA,CAAQ,MAAA;AAAA,QAChB;AAEA,QAAA,MAAM,YAAY,OAAA,EAAS,SAAA;AAE3B,QAAA,IAAI,SAAA,EAAW;AAEb,UAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,GAAA,CAAI,gBAAgB,SAAS,CAAA;AACzD,UAAA,QAAA,CAAS,SAAA,GAAY,SAAA;AACrB,UAAA,QAAA,CAAS,KAAA,GAAQ,IAAA;AAEjB,UAAA,IAAI,QAAQ,MAAA,IAAa,OAAA,EAAS,WAAW,MAAA,IAAa,OAAA,EAAS,QAAQ,MAAA,EAAW;AACpF,YAAA,OAAA,CAAQ,KAAK,wFAAwF,CAAA;AAAA,UACvG;AAAA,QACF,CAAA,MAAO;AAEL,UAAA,MAAM,SAAS,kBAAA,CAAmB,OAAA,EAAS,MAAA,EAAQ,GAAA,EAAK,SAAS,GAAG,CAAA;AAAA,QACtE;AAEA,QAAA,OAAO,QAAA;AAAA,MACT;AAAA,MAEA,MAAc,kBAAA,CACZ,MAAA,EACA,GAAA,EACA,GAAA,EACe;AAEf,QAAA,IAAI,GAAA,KAAQ,MAAA,IAAa,GAAA,KAAQ,CAAA,IAAK,QAAQ,CAAA,EAAG;AAC/C,UAAA,MAAM,IAAI,MAAM,qCAAqC,CAAA;AAAA,QACvD;AACA,QAAA,IAAI,GAAA,KAAQ,MAAA,IAAa,GAAA,KAAQ,CAAA,IAAK,QAAQ,CAAA,EAAG;AAC/C,UAAA,MAAM,IAAI,MAAM,iCAAiC,CAAA;AAAA,QACnD;AAGA,QAAA,IAAI,WAAA,GAAc,MAAA;AAClB,QAAA,IAAI,GAAA,KAAQ,MAAA,IAAa,GAAA,KAAQ,MAAA,EAAW;AAC1C,UAAA,WAAA,GAAc,MAAA,GAAS,EAAE,GAAG,MAAA,KAAW,EAAC;AAGxC,UAAA,IAAI,QAAQ,MAAA,EAAW;AACrB,YAAA,WAAA,CAAY,GAAA,GAAM,GAAA;AAAA,UACpB;AACA,UAAA,IAAI,QAAQ,MAAA,EAAW;AACrB,YAAA,WAAA,CAAY,GAAA,GAAM,GAAA;AAAA,UACpB;AAAA,QACF;AAEA,QAAA,MAAM,QAAA,GAAW,MAAM,IAAA,CAAK,GAAA,CAAI,eAAe,WAAW,CAAA;AAG1D,QAAA,MAAM,SAAA,GAAY,QAAA,CAAS,IAAA,IAAS,QAAA,CAAiB,MAAO,QAAA,CAAiB,SAAA;AAE7E,QAAA,IAAI,OAAO,SAAA,KAAc,QAAA,IAAY,CAAC,SAAA,EAAW;AAC/C,UAAA,MAAM,IAAI,MAAM,uDAAuD,CAAA;AAAA,QACzE;AAEA,QAAA,IAAA,CAAK,SAAA,GAAY,SAAA;AACjB,QAAA,IAAA,CAAK,KAAA,GAAQ,QAAA;AAAA,MACf;AAAA,MAEA,IAAW,IAAA,GAAqB;AAC9B,QAAA,OAAO,IAAA,CAAK,KAAA;AAAA,MACd;AAAA,MAEA,MAAa,MAAA,GAAkC;AAC7C,QAAA,OAAO,IAAA,CAAK,GAAA,CAAI,SAAA,CAAU,IAAA,CAAK,SAAS,CAAA;AAAA,MAC1C;AAAA,MAEA,MAAa,KAAA,GAA0B;AACrC,QAAA,OAAO,IAAA,CAAK,GAAA,CAAI,aAAA,CAAc,IAAA,CAAK,SAAS,CAAA;AAAA,MAC9C;AAAA,MAEA,MAAa,IAAA,GAAyB;AACpC,QAAA,OAAO,IAAA,CAAK,GAAA,CAAI,YAAA,CAAa,IAAA,CAAK,SAAS,CAAA;AAAA,MAC7C;AAAA,MAEA,MAAa,OAAA,GAA4B;AACvC,QAAA,OAAO,IAAA,CAAK,GAAA,CAAI,eAAA,CAAgB,IAAA,CAAK,SAAS,CAAA;AAAA,MAChD;AAAA,MAEA,MAAa,OAAA,GAA4B;AACvC,QAAA,OAAO,IAAA,CAAK,GAAA,CAAI,cAAA,CAAe,IAAA,CAAK,SAAS,CAAA;AAAA,MAC/C;AAAA;AAAA,MAGA,MAAa,SAAA,CAAU,CAAA,EAAW,CAAA,EAA6B;AAC7D,QAAA,OAAO,KAAK,GAAA,CAAI,SAAA,CAAU,IAAA,CAAK,SAAA,EAAW,GAAG,CAAC,CAAA;AAAA,MAChD;AAAA,MAEA,MAAa,UAAA,CAAW,CAAA,EAAW,CAAA,EAA6B;AAC9D,QAAA,OAAO,KAAK,GAAA,CAAI,UAAA,CAAW,IAAA,CAAK,SAAA,EAAW,GAAG,CAAC,CAAA;AAAA,MACjD;AAAA,MAEA,MAAa,WAAA,CAAY,CAAA,EAAW,CAAA,EAA6B;AAC/D,QAAA,OAAO,KAAK,GAAA,CAAI,WAAA,CAAY,IAAA,CAAK,SAAA,EAAW,GAAG,CAAC,CAAA;AAAA,MAClD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAaA,MAAa,KACX,MAAA,EACA,MAAA,EACA,MACA,IAAA,EACA,MAAA,GAA2B,MAAA,EAC3B,QAAA,GAAmB,GAAA,EACD;AAClB,QAAA,OAAO,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,IAAA,CAAK,SAAA,EAAW,QAAQ,MAAA,EAAQ,IAAA,EAAM,IAAA,EAAM,MAAA,EAAQ,QAAQ,CAAA;AAAA,MACnF;AAAA,MAEA,MAAa,MAAA,CAAO,SAAA,GAAwC,MAAA,EAAQ,SAAiB,CAAA,EAAqB;AACxG,QAAA,OAAO,KAAK,GAAA,CAAI,MAAA,CAAO,IAAA,CAAK,SAAA,EAAW,WAAW,MAAM,CAAA;AAAA,MAC1D;AAAA;AAAA,MAGA,MAAa,KAAK,IAAA,EAAgC;AAChD,QAAA,OAAO,IAAA,CAAK,GAAA,CAAI,QAAA,CAAS,IAAA,CAAK,WAAW,IAAI,CAAA;AAAA,MAC/C;AAAA,MAEA,MAAa,IAAI,GAAA,EAA+B;AAC9C,QAAA,OAAO,IAAA,CAAK,GAAA,CAAI,QAAA,CAAS,IAAA,CAAK,WAAW,GAAG,CAAA;AAAA,MAC9C;AAAA;AAAA,MAGA,MAAa,WAAW,OAAA,EAAuD;AAC7E,QAAA,MAAM,WAAW,MAAM,IAAA,CAAK,GAAA,CAAI,aAAA,CAAc,KAAK,SAAS,CAAA;AAC5D,QAAA,MAAM,SAAA,GAAY,SAAS,KAAA,IAAS,EAAA;AAGpC,QAAA,IAAI,UAAU,UAAA,CAAW,SAAS,KAAK,SAAA,CAAU,UAAA,CAAW,UAAU,CAAA,EAAG;AAEvE,UAAA,MAAMA,MAAAA,GAAAA,CAAS,MAAM,OAAO,aAAa,CAAA,EAAG,OAAA;AAC5C,UAAA,MAAM,WAAA,GAAc,MAAMA,MAAAA,CAAM,SAAS,CAAA;AACzC,UAAA,IAAI,CAAC,YAAY,EAAA,EAAI;AACnB,YAAA,MAAM,IAAI,KAAA,CAAM,CAAA,+BAAA,EAAkC,WAAA,CAAY,UAAU,CAAA,CAAE,CAAA;AAAA,UAC5E;AACA,UAAA,MAAM,WAAA,GAAc,MAAM,WAAA,CAAY,WAAA,EAAY;AAClD,UAAA,MAAM,MAAA,GAAS,MAAA,CAAO,IAAA,CAAK,WAAW,CAAA;AAEtC,UAAA,IAAI,OAAA,EAAS,WAAW,QAAA,EAAU;AAChC,YAAA,OAAO,MAAA,CAAO,SAAS,QAAQ,CAAA;AAAA,UACjC;AACA,UAAA,OAAO,MAAA;AAAA,QACT,CAAA,MAAO;AAEL,UAAA,IAAI,OAAA,EAAS,WAAW,QAAA,EAAU;AAChC,YAAA,OAAO,SAAA;AAAA,UACT;AACA,UAAA,OAAO,MAAA,CAAO,IAAA,CAAK,SAAA,EAAW,QAAQ,CAAA;AAAA,QACxC;AAAA,MACF;AAAA,MAEA,MAAa,gBAAA,GAAoC;AAC/C,QAAA,MAAM,WAAW,MAAM,IAAA,CAAK,GAAA,CAAI,aAAA,CAAc,KAAK,SAAS,CAAA;AAC5D,QAAA,MAAM,SAAA,GAAY,SAAS,KAAA,IAAS,EAAA;AAGpC,QAAA,IAAI,UAAU,UAAA,CAAW,SAAS,KAAK,SAAA,CAAU,UAAA,CAAW,UAAU,CAAA,EAAG;AAEvE,UAAA,MAAMA,MAAAA,GAAAA,CAAS,MAAM,OAAO,aAAa,CAAA,EAAG,OAAA;AAC5C,UAAA,MAAM,WAAA,GAAc,MAAMA,MAAAA,CAAM,SAAS,CAAA;AACzC,UAAA,IAAI,CAAC,YAAY,EAAA,EAAI;AACnB,YAAA,MAAM,IAAI,KAAA,CAAM,CAAA,+BAAA,EAAkC,WAAA,CAAY,UAAU,CAAA,CAAE,CAAA;AAAA,UAC5E;AACA,UAAA,MAAM,WAAA,GAAc,MAAM,WAAA,CAAY,WAAA,EAAY;AAClD,UAAA,OAAO,MAAA,CAAO,IAAA,CAAK,WAAW,CAAA,CAAE,SAAS,QAAQ,CAAA;AAAA,QACnD,CAAA,MAAO;AAEL,UAAA,OAAO,SAAA;AAAA,QACT;AAAA,MACF;AAAA;AAAA,MAGA,MAAa,KAAK,OAAA,EAAkC;AAClD,QAAA,MAAM,WAAW,MAAM,IAAA,CAAK,IAAI,WAAA,CAAY,IAAA,CAAK,WAAW,OAAO,CAAA;AACnE,QAAA,OAAO,SAAS,MAAA,IAAU,EAAA;AAAA,MAC5B;AAAA,MAEA,MAAa,IAAA,CAAK,IAAA,EAAc,OAAA,GAAkB,EAAA,EAA2B;AAC3E,QAAA,OAAO,KAAK,GAAA,CAAI,aAAA,CAAc,IAAA,CAAK,SAAA,EAAW,MAAM,OAAO,CAAA;AAAA,MAC7D;AAAA,MAEA,MAAa,KAAK,OAAA,EAAmC;AACnD,QAAA,OAAO,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,IAAA,CAAK,WAAW,OAAO,CAAA;AAAA,MAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAoBA,MAAa,YAAY,UAAA,EAAoG;AAC3H,QAAA,OAAO,IAAA,CAAK,GAAA,CAAI,WAAA,CAAY,IAAA,CAAK,WAAW,UAAU,CAAA;AAAA,MACxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,MAAa,UAAA,GAA+E;AAC1F,QAAA,OAAO,IAAA,CAAK,GAAA,CAAI,UAAA,CAAW,IAAA,CAAK,SAAS,CAAA;AAAA,MAC3C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,MAAa,YAAA,GAAiG;AAC5G,QAAA,OAAO,IAAA,CAAK,GAAA,CAAI,eAAA,CAAgB,IAAA,CAAK,SAAS,CAAA;AAAA,MAChD;AAAA;AAAA,MAGA,MAAa,OAAO,OAAA,EAAkD;AACpE,QAAA,MAAM;AAAA,UACJ,WAAA;AAAA,UACA,QAAA,GAAW,WAAA;AAAA,UACX,KAAA,GAAQ,4BAAA;AAAA,UACR,YAAA,GAAe,IAAA;AAAA,UACf,aAAA,GAAgB,GAAA;AAAA,UAChB,QAAA;AAAA,UACA,eAAA,GAAkB,KAAA;AAAA,UAClB,cAAA,GAAiB,IAAA;AAAA,UACjB,SAAA,GAAY,IAAA;AAAA,UACZ,aAAA,GAAgB,EAAA;AAAA,UAChB,mBAAA,GAAsB,CAAA;AAAA,UACtB;AAAA,SACF,GAAI,OAAA;AAGJ,QAAA,MAAM,gBAAA,GAAmB,YAAY,QAAQ,CAAA;AAG7C,QAAA,OAAO,iBAAiB,OAAA,CAAQ;AAAA,UAC9B,YAAY,IAAA,CAAK,SAAA;AAAA,UACjB,WAAA;AAAA,UACA,QAAA;AAAA,UACA,MAAA;AAAA,UACA,KAAA;AAAA,UACA,YAAA;AAAA,UACA,aAAA;AAAA,UACA,eAAA;AAAA,UACA,cAAA;AAAA,UACA,SAAA;AAAA,UACA,aAAA;AAAA,UACA,mBAAA;AAAA;AAAA,UAEA,YAAY,IAAA,CAAK,MAAA;AAAA,UACjB,aAAa,IAAA,CAAK;AAAA,SACnB,CAAA;AAAA,MACH;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC3VA,cAAA,EAAA;AAIA,aAAA,EAAA;AAEA,WAAA,EAAA;AAGA,eAAsB,eAAe,OAAA,EAKlC;AACD,EAAA,MAAM,EAAE,QAAA,EAAAC,SAAAA,EAAS,GAAI,MAAM,OAAA,CAAA,OAAA,EAAA,CAAA,IAAA,CAAA,OAAA,aAAA,EAAA,EAAA,gBAAA,CAAA,CAAA;AAC3B,EAAA,OAAOA,SAAAA,CAAS,OAAO,OAAO,CAAA;AAChC","file":"index.mjs","sourcesContent":["// Shim globals in esm bundle\nimport path from 'node:path'\nimport { fileURLToPath } from 'node:url'\n\nconst getFilename = () => fileURLToPath(import.meta.url)\nconst getDirname = () => path.dirname(getFilename())\n\nexport const __dirname = /* @__PURE__ */ getDirname()\nexport const __filename = /* @__PURE__ */ getFilename()\n","/**\n * Authentication utilities for Orgo SDK\n */\n\nexport function getApiKey(apiKey?: string): string {\n const key = apiKey || process.env.ORGO_API_KEY;\n \n if (!key) {\n throw new Error(\n 'API key required. Set ORGO_API_KEY environment variable or pass apiKey parameter. ' +\n 'Get a key at https://www.orgo.ai/start'\n );\n }\n \n return key;\n }","/**\n * Custom error types for Orgo SDK\n */\n\nexport class OrgoError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'OrgoError';\n Object.setPrototypeOf(this, OrgoError.prototype);\n }\n }\n \n export class ApiError extends OrgoError {\n public statusCode?: number;\n public response?: unknown;\n \n constructor(message: string, statusCode?: number, response?: unknown) {\n super(message);\n this.name = 'ApiError';\n this.statusCode = statusCode;\n this.response = response;\n Object.setPrototypeOf(this, ApiError.prototype);\n }\n }\n \n export class ConfigError extends OrgoError {\n constructor(message: string) {\n super(message);\n this.name = 'ConfigError';\n Object.setPrototypeOf(this, ConfigError.prototype);\n }\n }","/**\n * API client for Orgo service\n */\n\nimport fetch from 'cross-fetch';\nimport { getApiKey } from '../utils/auth';\nimport { ApiError } from '../errors';\nimport type {\n ComputerConfig,\n ComputerInfo,\n ComputerStatus,\n ApiResponse,\n ScreenshotResponse,\n BashResponse,\n ExecResponse\n} from '../types';\n\nexport class ApiClient {\n private apiKey: string;\n private baseUrl: string;\n private headers: Record<string, string>;\n\n constructor(apiKey?: string, baseUrl?: string) {\n this.apiKey = getApiKey(apiKey);\n this.baseUrl = baseUrl || 'https://www.orgo.ai/api';\n this.headers = {\n 'Authorization': `Bearer ${this.apiKey}`,\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n };\n }\n\n private async request<T = unknown>(\n method: string,\n endpoint: string,\n data?: unknown\n ): Promise<T> {\n const url = `${this.baseUrl}/${endpoint}`;\n\n try {\n const options: RequestInit = {\n method,\n headers: this.headers,\n };\n\n if (method === 'GET' && data) {\n const params = new URLSearchParams(data as Record<string, string>);\n const urlWithParams = `${url}?${params}`;\n const response = await fetch(urlWithParams, options);\n return this.handleResponse<T>(response);\n } else if (data) {\n options.body = JSON.stringify(data);\n }\n\n const response = await fetch(url, options);\n return this.handleResponse<T>(response);\n } catch (error) {\n if (error instanceof ApiError) {\n throw error;\n }\n throw new ApiError(`Connection error: ${error instanceof Error ? error.message : 'Unknown error'}`);\n }\n }\n\n private async handleResponse<T>(response: Response): Promise<T> {\n if (!response.ok) {\n let errorMessage = `API error: ${response.status}`;\n try {\n const errorData = await response.json() as ApiResponse;\n if (errorData.error) {\n errorMessage += ` - ${errorData.error}`;\n }\n } catch {\n // Ignore JSON parse errors\n }\n throw new ApiError(errorMessage, response.status, response);\n }\n\n return response.json() as Promise<T>;\n }\n\n // Computer lifecycle methods\n public async createComputer(config?: ComputerConfig): Promise<ComputerInfo> {\n const payload: any = {};\n if (config) {\n payload.config = config;\n }\n return this.request<ComputerInfo>('POST', 'projects', Object.keys(payload).length > 0 ? payload : undefined);\n }\n\n public async connectComputer(projectId: string): Promise<ComputerInfo> {\n return this.request<ComputerInfo>('GET', `projects/by-name/${projectId}`);\n }\n\n public async getStatus(projectId: string): Promise<ComputerStatus> {\n return this.request<ComputerStatus>('GET', `projects/by-name/${projectId}`);\n }\n\n public async startComputer(projectName: string): Promise<unknown> {\n // Get the actual project ID from the name\n const project = await this.getStatus(projectName);\n const projectId = (project as any).id;\n if (!projectId) {\n throw new Error(`Could not find ID for project ${projectName}`);\n }\n return this.request('POST', `projects/${projectId}/start`);\n }\n\n public async stopComputer(projectName: string): Promise<unknown> {\n // Get the actual project ID from the name\n const project = await this.getStatus(projectName);\n const projectId = (project as any).id;\n if (!projectId) {\n throw new Error(`Could not find ID for project ${projectName}`);\n }\n return this.request('POST', `projects/${projectId}/stop`);\n }\n\n public async restartComputer(projectName: string): Promise<unknown> {\n // Get the actual project ID from the name\n const project = await this.getStatus(projectName);\n const projectId = (project as any).id;\n if (!projectId) {\n throw new Error(`Could not find ID for project ${projectName}`);\n }\n return this.request('POST', `projects/${projectId}/restart`);\n }\n\n public async deleteComputer(projectName: string): Promise<unknown> {\n // Get the actual project ID from the name\n const project = await this.getStatus(projectName);\n const projectId = (project as any).id;\n if (!projectId) {\n throw new Error(`Could not find ID for project ${projectName}`);\n }\n return this.request('POST', `projects/${projectId}/delete`);\n }\n\n // Computer control methods\n public async leftClick(projectId: string, x: number, y: number): Promise<unknown> {\n return this.request('POST', `computers/${projectId}/click`, {\n button: 'left',\n x,\n y\n });\n }\n\n public async rightClick(projectId: string, x: number, y: number): Promise<unknown> {\n return this.request('POST', `computers/${projectId}/click`, {\n button: 'right',\n x,\n y\n });\n }\n\n public async doubleClick(projectId: string, x: number, y: number): Promise<unknown> {\n return this.request('POST', `computers/${projectId}/click`, {\n button: 'left',\n x,\n y,\n double: true\n });\n }\n\n public async drag(\n projectId: string,\n startX: number,\n startY: number,\n endX: number,\n endY: number,\n button: 'left' | 'right' = 'left',\n duration: number = 0.5\n ): Promise<unknown> {\n return this.request('POST', `computers/${projectId}/drag`, {\n start_x: startX,\n start_y: startY,\n end_x: endX,\n end_y: endY,\n button,\n duration\n });\n }\n\n public async scroll(projectId: string, direction: string, amount: number): Promise<unknown> {\n return this.request('POST', `computers/${projectId}/scroll`, {\n direction,\n amount\n });\n }\n\n public async typeText(projectId: string, text: string): Promise<unknown> {\n return this.request('POST', `computers/${projectId}/type`, {\n text\n });\n }\n\n public async keyPress(projectId: string, key: string): Promise<unknown> {\n return this.request('POST', `computers/${projectId}/key`, {\n key\n });\n }\n\n public async getScreenshot(projectId: string): Promise<ScreenshotResponse> {\n return this.request<ScreenshotResponse>('GET', `computers/${projectId}/screenshot`);\n }\n\n public async executeBash(projectId: string, command: string): Promise<BashResponse> {\n return this.request<BashResponse>('POST', `computers/${projectId}/bash`, {\n command\n });\n }\n\n public async executePython(projectId: string, code: string, timeout: number = 10): Promise<ExecResponse> {\n return this.request<ExecResponse>('POST', `computers/${projectId}/exec`, {\n code,\n timeout\n });\n }\n\n public async wait(projectId: string, seconds: number): Promise<unknown> {\n return this.request('POST', `computers/${projectId}/wait`, {\n seconds\n });\n }\n\n // Streaming methods\n public async startStream(projectId: string, connectionName: string): Promise<unknown> {\n return this.request('POST', `computers/${projectId}/stream/start`, {\n connection_name: connectionName\n });\n }\n\n public async stopStream(projectId: string): Promise<unknown> {\n return this.request('POST', `computers/${projectId}/stream/stop`);\n }\n\n public async getStreamStatus(projectId: string): Promise<{ success: boolean; status: string; start_time?: string; pid?: number }> {\n return this.request('GET', `computers/${projectId}/stream/status`);\n }\n}","/**\n * Anthropic Claude-based prompt provider\n */\n\nimport Anthropic from '@anthropic-ai/sdk';\nimport { ApiClient } from '../api/client';\nimport type { \n PromptProvider, \n PromptExecuteOptions \n} from '../prompt';\nimport type { PromptMessage, ScreenshotResponse } from '../types';\n\ninterface ToolUseBlock {\n type: 'tool_use';\n id: string;\n name: string;\n input: Record<string, unknown>;\n}\n\ninterface TextBlock {\n type: 'text';\n text: string;\n}\n\ninterface ThinkingBlock {\n type: 'thinking';\n thinking: string;\n}\n\ninterface ImageBlock {\n type: 'image';\n source: {\n type: 'base64';\n media_type: string;\n data: string;\n };\n}\n\ntype ContentBlock = ToolUseBlock | TextBlock | ThinkingBlock | ImageBlock;\n\ninterface ToolResult {\n type: 'tool_result';\n tool_use_id: string;\n content: Array<TextBlock | ImageBlock>;\n}\n\nexport class AnthropicProvider implements PromptProvider {\n private anthropic: typeof Anthropic;\n\n constructor() {\n try {\n this.anthropic = Anthropic;\n } catch (error) {\n throw new Error(\n \"Anthropic SDK not installed. Please install with 'npm install @anthropic-ai/sdk'\"\n );\n }\n }\n\n public async execute(options: PromptExecuteOptions): Promise<PromptMessage[]> {\n const {\n computerId,\n instruction,\n callback,\n apiKey = process.env.ANTHROPIC_API_KEY,\n model = 'claude-3-7-sonnet-20250219',\n displayWidth = 1024,\n displayHeight = 768,\n orgoApiKey,\n orgoBaseUrl,\n maxSavedScreenshots = 2,\n thinkingEnabled = false,\n thinkingBudget = 1024,\n maxTokens = 4096,\n maxIterations = 20\n } = options;\n\n if (!apiKey) {\n throw new Error(\n 'No Anthropic API key provided. Set ANTHROPIC_API_KEY environment variable or pass apiKey.'\n );\n }\n\n // Initialize the client\n const client = new this.anthropic({ apiKey });\n\n // Prepare the messages\n const messages: PromptMessage[] = [\n { role: 'user', content: instruction }\n ];\n\n // Set up the system prompt\n const systemPrompt = this.getSystemPrompt(displayWidth, displayHeight);\n\n try {\n // Define the computer tool\n const tools = [\n {\n type: 'computer_20250124',\n name: 'computer',\n display_width_px: displayWidth,\n display_height_px: displayHeight,\n display_number: 1\n }\n ];\n\n if (callback) {\n callback('status', 'Starting conversation with Claude');\n }\n\n // Create an API client\n const apiClient = new ApiClient(orgoApiKey, orgoBaseUrl);\n\n let iteration = 0;\n let screenshotCount = 0;\n\n // Start the agent loop\n while (iteration < maxIterations) {\n iteration++;\n\n // Filter screenshots if needed\n if (screenshotCount > maxSavedScreenshots) {\n this.filterToNMostRecentImages(messages, maxSavedScreenshots);\n screenshotCount = maxSavedScreenshots;\n }\n\n // Create request parameters\n const requestParams: Record<string, unknown> = {\n model,\n max_tokens: maxTokens,\n system: systemPrompt,\n messages: messages as unknown[],\n tools,\n betas: ['computer-use-2025-01-24'],\n };\n\n // Add thinking parameter only if enabled\n if (thinkingEnabled) {\n requestParams.thinking = {\n type: 'enabled',\n budget_tokens: thinkingBudget\n };\n }\n\n try {\n const response = await client.beta.messages.create(requestParams as any);\n const responseContent = response.content as ContentBlock[];\n\n // Add Claude's response to conversation\n const assistantMessage: PromptMessage = {\n role: 'assistant',\n content: responseContent as unknown[]\n };\n messages.push(assistantMessage);\n\n // Process response blocks\n for (const block of responseContent) {\n if (block.type === 'text' && callback) {\n callback('text', block.text);\n } else if (block.type === 'thinking' && callback) {\n callback('thinking', block.thinking);\n } else if (block.type === 'tool_use' && callback) {\n const toolParams = {\n action: block.name.split('.').pop(),\n ...block.input\n };\n callback('tool_use', toolParams);\n }\n }\n\n // Execute tool actions\n const toolResults: ToolResult[] = [];\n for (const block of responseContent) {\n if (block.type === 'tool_use') {\n const result = await this.executeTool(\n computerId,\n block.input,\n callback,\n apiClient\n );\n\n const toolResult: ToolResult = {\n type: 'tool_result',\n tool_use_id: block.id,\n content: []\n };\n\n // Handle different result types\n if (\n typeof result === 'object' &&\n result !== null &&\n 'type' in result &&\n result.type === 'image'\n ) {\n toolResult.content = [result as ImageBlock];\n if (block.input.action === 'screenshot') {\n screenshotCount++;\n }\n } else {\n toolResult.content = [{\n type: 'text',\n text: String(result)\n }];\n }\n\n toolResults.push(toolResult);\n }\n }\n\n // If no tools were used, we're done\n if (toolResults.length === 0) {\n if (callback) {\n callback('status', 'Task completed');\n }\n return messages;\n }\n\n // Add tool results for next iteration\n messages.push({\n role: 'user',\n content: toolResults as unknown[]\n });\n\n } catch (error) {\n // Handle base64 errors by reducing screenshots\n if (error instanceof Error && error.message.toLowerCase().includes('base64')) {\n if (callback) {\n callback('error', 'Base64 error detected. Attempting recovery...');\n }\n this.filterToNMostRecentImages(messages, 1);\n continue;\n }\n throw error;\n }\n }\n\n // Max iterations reached\n if (callback) {\n callback('status', `Reached maximum iterations (${maxIterations})`);\n }\n\n return messages;\n\n } catch (error) {\n if (callback) {\n callback('error', error instanceof Error ? error.message : String(error));\n }\n throw error;\n }\n }\n\n private getSystemPrompt(displayWidth: number, displayHeight: number): string {\n return `You are Claude, an AI assistant that controls a virtual Ubuntu computer with internet access.\n\n<SYSTEM_CAPABILITY>\n* You are utilising an Ubuntu virtual machine with a display resolution of ${displayWidth}x${displayHeight}.\n* You can take screenshots to see the current state and control the computer by clicking, typing, pressing keys, and scrolling.\n* The virtual environment is an Ubuntu system with standard applications.\n* Always start by taking a screenshot to see the current state before performing any actions.\n</SYSTEM_CAPABILITY>\n\n<UBUNTU_DESKTOP_GUIDELINES>\n* CRITICAL INSTRUCTION: When opening applications or files on the Ubuntu desktop, you MUST USE DOUBLE-CLICK rather than single-click.\n* Single-click only selects desktop icons but DOES NOT open them. To open desktop icons, you MUST use double-click.\n* Common desktop interactions:\n - Desktop icons: DOUBLE-CLICK to open applications and folders\n - Menu items: SINGLE-CLICK to select options\n - Taskbar icons: SINGLE-CLICK to open applications\n - Window buttons: SINGLE-CLICK to use close, minimize, maximize buttons\n - File browser items: DOUBLE-CLICK to open folders and files\n - When submitting, use the 'Enter' key, not the 'Return' key.\n* If you see an icon on the desktop that you need to open, ALWAYS use the double_click action, never use left_click.\n</UBUNTU_DESKTOP_GUIDELINES>\n\n<SCREENSHOT_GUIDELINES>\n* Be mindful of how many screenshots you take - they consume significant memory.\n* Only take screenshots when you need to see the current state of the screen.\n* Try to batch multiple actions before taking another screenshot.\n* For better performance, limit the number of screenshots you take.\n</SCREENSHOT_GUIDELINES>`;\n }\n\n private filterToNMostRecentImages(messages: PromptMessage[], maxImages: number): void {\n const imageBlocks: Array<{\n msgIdx: number;\n contentIdx: number;\n contentItemIdx: number;\n contentItem: any;\n }> = [];\n\n messages.forEach((msg, msgIdx) => {\n if (msg.role !== 'user') return;\n\n const content = msg.content;\n if (!Array.isArray(content)) return;\n\n content.forEach((block: any, contentIdx) => {\n if (block?.type !== 'tool_result') return;\n\n const blockContent = block.content || [];\n blockContent.forEach((item: any, itemIdx: number) => {\n if (item?.type === 'image' && item.source) {\n imageBlocks.push({\n msgIdx,\n contentIdx,\n contentItemIdx: itemIdx,\n contentItem: item\n });\n }\n });\n });\n });\n\n // Remove oldest images if over limit\n if (imageBlocks.length > maxImages) {\n const toRemove = imageBlocks.slice(0, -maxImages);\n toRemove.forEach(({ contentItem }) => {\n if (contentItem.source?.data) {\n // Replace with a minimal valid base64 image (1x1 transparent PNG)\n contentItem.source.data = 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==';\n contentItem.source.media_type = 'image/png';\n }\n });\n }\n }\n\n private async executeTool(\n computerId: string,\n params: Record<string, unknown>,\n callback?: (type: string, data: unknown) => void,\n apiClient?: ApiClient\n ): Promise<string | ImageBlock> {\n const action = params.action as string;\n\n if (callback) {\n callback('tool_executing', { action, params });\n }\n\n try {\n if (!apiClient) {\n apiClient = new ApiClient();\n }\n\n switch (action) {\n case 'screenshot': {\n const response = await apiClient.getScreenshot(computerId) as ScreenshotResponse;\n if (callback) {\n callback('tool_result', { type: 'image', action: 'screenshot' });\n }\n \n // The API now returns a URL instead of base64 data\n // We need to fetch the image from the URL and convert it to base64\n const imageUrl = response.image;\n \n if (!imageUrl) {\n throw new Error('No image URL received from API');\n }\n \n // Fetch the image from the URL\n const imgResponse = await fetch(imageUrl);\n if (!imgResponse.ok) {\n throw new Error(`Failed to fetch image: ${imgResponse.statusText}`);\n }\n \n // Convert to base64\n const arrayBuffer = await imgResponse.arrayBuffer();\n const base64 = Buffer.from(arrayBuffer).toString('base64');\n \n return {\n type: 'image',\n source: {\n type: 'base64',\n media_type: 'image/jpeg',\n data: base64\n }\n };\n }\n\n case 'left_click': {\n const coord = params.coordinate as number[] | undefined;\n if (!coord) {\n throw new Error('Coordinates required for left click');\n }\n const [x, y] = coord;\n await apiClient.leftClick(computerId, x, y);\n if (callback) {\n callback('tool_result', { action: 'left_click', x, y });\n }\n return `Left-clicked at (${x}, ${y})`;\n }\n\n case 'right_click': {\n const coord = params.coordinate as number[] | undefined;\n if (!coord) {\n throw new Error('Coordinates required for right click');\n }\n const [x, y] = coord;\n await apiClient.rightClick(computerId, x, y);\n if (callback) {\n callback('tool_result', { action: 'right_click', x, y });\n }\n return `Right-clicked at (${x}, ${y})`;\n }\n\n case 'double_click': {\n const coord = params.coordinate as number[] | undefined;\n if (!coord) {\n throw new Error('Coordinates required for double click');\n }\n const [x, y] = coord;\n await apiClient.doubleClick(computerId, x, y);\n if (callback) {\n callback('tool_result', { action: 'double_click', x, y });\n }\n return `Double-clicked at (${x}, ${y})`;\n }\n\n case 'type': {\n const text = params.text as string | undefined;\n if (!text) {\n throw new Error('Text required for typing');\n }\n await apiClient.typeText(computerId, text);\n if (callback) {\n callback('tool_result', { action: 'type', text });\n }\n return `Typed: \"${text}\"`;\n }\n\n case 'key': {\n let key = params.text as string | undefined;\n if (!key) {\n throw new Error('Key required for key press');\n }\n // Handle 'return' as 'enter'\n if (key.toLowerCase() === 'return') {\n key = 'enter';\n }\n await apiClient.keyPress(computerId, key);\n if (callback) {\n callback('tool_result', { action: 'key', key });\n }\n return `Pressed key: ${key}`;\n }\n\n case 'scroll': {\n const direction = params.scroll_direction as string | undefined;\n const amount = params.scroll_amount as number | undefined;\n if (!direction || amount === undefined) {\n throw new Error('Direction and amount required for scrolling');\n }\n await apiClient.scroll(computerId, direction, amount);\n if (callback) {\n callback('tool_result', { action: 'scroll', direction, amount });\n }\n return `Scrolled ${direction} by ${amount}`;\n }\n\n case 'wait': {\n const duration = (params.duration as number) || 1;\n await apiClient.wait(computerId, duration);\n if (callback) {\n callb