{"version":3,"sources":["../typescript/src/toon/index.ts","../typescript/src/mcp/index.ts"],"names":["encode"],"mappings":";;;;;AAqEA,SAAS,cAAc,IAAA,EAAsC;AAC3D,EAAA,OAAO;AAAA,IACL,IAAI,IAAA,CAAK,EAAA;AAAA,IACT,MAAM,IAAA,CAAK,IAAA;AAAA,IACX,OAAO,IAAA,CAAK,KAAA;AAAA,IACZ,QAAQ,IAAA,CAAK,MAAA;AAAA,IACb,OAAO,IAAA,CAAK,KAAA;AAAA,IACZ,UAAU,IAAA,CAAK,QAAA;AAAA,IACf,OAAO,IAAA,CAAK,KAAA;AAAA,IACZ,IAAA,EAAM;AAAA,MACJ,IAAA,EAAM,KAAK,IAAA,CAAK,IAAA;AAAA,MAChB,SAAA,EAAW,KAAK,IAAA,CAAK,SAAA;AAAA,MACrB,UAAA,EAAY,KAAK,IAAA,CAAK,UAAA;AAAA,MACtB,KAAA,EAAO,KAAK,IAAA,CAAK;AAAA,KACnB;AAAA,IACA,QAAA,EAAU,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,aAAa,CAAA;AAAA,IACzC,OAAO,IAAA,CAAK;AAAA,GACd;AACF;AAKA,SAAS,kBAAkB,GAAA,EAA6C;AACtE,EAAA,MAAM,kBAAsD,EAAC;AAE7D,EAAA,GAAA,CAAI,UAAA,CAAW,OAAA,CAAQ,CAAC,OAAA,EAAS,EAAA,KAAO;AACtC,IAAA,eAAA,CAAgB,IAAA,CAAK;AAAA,MACnB,EAAA;AAAA,MACA,OAAO,OAAA,CAAQ,YAAA;AAAA,MACf,WAAA,EAAa,OAAA,CAAQ,WAAA,CAAY,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,QAC3C,MAAM,CAAA,CAAE,IAAA;AAAA,QACR,IAAI,CAAA,CAAE,EAAA;AAAA,QACN,OAAA,EAAS,OAAO,CAAA,CAAE,OAAA,KAAY,WAAW,CAAA,CAAE,OAAA,GAAU,MAAA,CAAO,CAAA,CAAE,OAAO;AAAA,OACvE,CAAE;AAAA,KACH,CAAA;AAAA,EACH,CAAC,CAAA;AAED,EAAA,OAAO;AAAA,IACL,SAAS,GAAA,CAAI,OAAA;AAAA,IACb,UAAU,GAAA,CAAI,QAAA;AAAA,IACd,KAAK,GAAA,CAAI,GAAA;AAAA,IACT,OAAO,GAAA,CAAI,KAAA;AAAA,IACX,UAAU,GAAA,CAAI,QAAA;AAAA,IACd,aAAa,GAAA,CAAI,WAAA;AAAA,IACjB,UAAA,EAAY;AAAA,MACV,KAAA,EAAO,IAAI,UAAA,CAAW,KAAA;AAAA,MACtB,KAAA,EAAO,IAAI,UAAA,CAAW,KAAA;AAAA,MACtB,QAAQ,GAAA,CAAI,UAAA,CAAW,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,QACxC,IAAI,CAAA,CAAE,EAAA;AAAA,QACN,MAAM,CAAA,CAAE,IAAA;AAAA,QACR,QAAQ,CAAA,CAAE;AAAA,OACZ,CAAE,CAAA;AAAA,MACF,UAAU,GAAA,CAAI,UAAA,CAAW,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,QAC5C,IAAI,CAAA,CAAE,EAAA;AAAA,QACN,MAAM,CAAA,CAAE,IAAA;AAAA,QACR,SAAS,CAAA,CAAE,OAAA;AAAA,QACX,UAAU,CAAA,CAAE;AAAA,OACd,CAAE;AAAA,KACJ;AAAA,IACA,IAAA,EAAM,aAAA,CAAc,GAAA,CAAI,IAAI,CAAA;AAAA,IAC5B,SAAA,EAAW,GAAA,CAAI,SAAA,CAAU,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,MACnC,IAAI,CAAA,CAAE,EAAA;AAAA,MACN,MAAM,CAAA,CAAE,IAAA;AAAA,MACR,OAAO,CAAA,CAAE;AAAA,KACX,CAAE,CAAA;AAAA,IACF,aAAA,EAAe,GAAA,CAAI,aAAA,CAAc,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,MAC3C,IAAI,CAAA,CAAE,EAAA;AAAA,MACN,MAAM,CAAA,CAAE,IAAA;AAAA,MACR,OAAO,CAAA,CAAE,KAAA;AAAA,MACT,QAAQ,CAAA,CAAE;AAAA,KACZ,CAAE,CAAA;AAAA,IACF,UAAA,EAAY;AAAA,GACd;AACF;AAeO,SAAS,MAAA,CAAO,UAA4B,OAAA,EAAiC;AAClF,EAAA,MAAM,YAAA,GAAe,kBAAkB,QAAQ,CAAA;AAC/C,EAAA,OAAOA,YAAO,YAAA,EAAc;AAAA,IAC1B,MAAA,EAAQ,CAAA;AAAA,IACR,UAAA,EAAY,MAAA;AAAA,IACZ,GAAG;AAAA,GACJ,CAAA;AACH;AA2BO,SAAS,UAAA,CAAW,MAAoB,OAAA,EAAiC;AAC9E,EAAA,OAAOA,WAAA,CAAO,aAAA,CAAc,IAAI,CAAA,EAAG;AAAA,IACjC,MAAA,EAAQ,CAAA;AAAA,IACR,UAAA,EAAY,MAAA;AAAA,IACZ,GAAG;AAAA,GACJ,CAAA;AACH;AAQO,SAAS,eAAA,CAAgB,WAA2B,OAAA,EAAiC;AAC1F,EAAA,MAAM,IAAA,GAAO,SAAA,CAAU,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,IACjC,IAAI,CAAA,CAAE,EAAA;AAAA,IACN,MAAM,CAAA,CAAE,IAAA;AAAA,IACR,OAAO,CAAA,CAAE,KAAA;AAAA,IACT,UAAU,CAAA,CAAE;AAAA,GACd,CAAE,CAAA;AACF,EAAA,OAAOA,WAAA,CAAO,EAAE,SAAA,EAAW,IAAA,IAAQ,OAAO,CAAA;AAC5C;AAQO,SAAS,mBAAA,CAAoB,eAA+B,OAAA,EAAiC;AAClG,EAAA,MAAM,IAAA,GAAO,aAAA,CAAc,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,IACrC,IAAI,CAAA,CAAE,EAAA;AAAA,IACN,MAAM,CAAA,CAAE,IAAA;AAAA,IACR,OAAO,CAAA,CAAE,KAAA;AAAA,IACT,QAAQ,CAAA,CAAE,MAAA;AAAA,IACV,OAAO,CAAA,CAAE,KAAA;AAAA,IACT,UAAU,CAAA,CAAE;AAAA,GACd,CAAE,CAAA;AACF,EAAA,OAAOA,WAAA,CAAO,EAAE,aAAA,EAAe,IAAA,IAAQ,OAAO,CAAA;AAChD;AAQO,SAAS,gBAAA,CACd,YACA,OAAA,EACQ;AACR,EAAA,MAAM,QAID,EAAC;AAEN,EAAA,UAAA,CAAW,OAAA,CAAQ,CAAC,IAAA,EAAM,EAAA,KAAO;AAC/B,IAAA,KAAA,CAAM,IAAA,CAAK;AAAA,MACT,EAAA;AAAA,MACA,OAAO,IAAA,CAAK,YAAA;AAAA,MACZ,WAAA,EAAa,IAAA,CAAK,WAAA,CAAY,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,QACxC,MAAM,CAAA,CAAE,IAAA;AAAA,QACR,IAAI,CAAA,CAAE,EAAA;AAAA,QACN,OAAA,EAAS,MAAA,CAAO,CAAA,CAAE,OAAO;AAAA,OAC3B,CAAE;AAAA,KACH,CAAA;AAAA,EACH,CAAC,CAAA;AAED,EAAA,OAAOA,WAAA,CAAO,EAAE,UAAA,EAAY,KAAA,IAAS,OAAO,CAAA;AAC9C;;;AC3LO,SAAS,cAAA,CACd,QAAA,EACA,MAAA,GAA0B,MAAA,EACb;AACb,EAAA,OAAO;AAAA,IACL,GAAA,EAAK,CAAA,eAAA,EAAkB,IAAI,GAAA,CAAI,SAAS,GAAG,CAAA,CAAE,QAAQ,CAAA,EAAG,IAAI,GAAA,CAAI,QAAA,CAAS,GAAG,EAAE,QAAQ,CAAA,CAAA;AAAA,IACtF,QAAA,EAAU,MAAA,KAAW,MAAA,GAAS,kBAAA,GAAqB,kBAAA;AAAA,IACnD,IAAA,EAAM,SAAS,KAAA,IAAS,sBAAA;AAAA,IACxB,aAAa,CAAA,2BAAA,EAA8B,QAAA,CAAS,SAAA,CAAU,MAAM,eAAe,QAAA,CAAS,aAAA,CAAc,MAAM,CAAA,qCAAA,EAAwC,SAAS,UAAA,CAAW,KAAK,CAAA,EAAA,EAAK,QAAA,CAAS,WAAW,KAAK,CAAA,KAAA;AAAA,GACjN;AACF;AAKO,SAAS,QAAA,GAAsB;AACpC,EAAA,OAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,gBAAA;AAAA,MACN,WAAA,EAAa,mIAAA;AAAA,MACb,WAAA,EAAa;AAAA,QACX,IAAA,EAAM,QAAA;AAAA,QACN,UAAA,EAAY;AAAA,UACV,EAAA,EAAI;AAAA,YACF,IAAA,EAAM,QAAA;AAAA,YACN,WAAA,EAAa;AAAA;AACf,SACF;AAAA,QACA,QAAA,EAAU,CAAC,IAAI;AAAA;AACjB,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAM,mBAAA;AAAA,MACN,WAAA,EAAa,uFAAA;AAAA,MACb,WAAA,EAAa;AAAA,QACX,IAAA,EAAM,QAAA;AAAA,QACN,UAAA,EAAY;AAAA,UACV,QAAA,EAAU;AAAA,YACR,IAAA,EAAM,QAAA;AAAA,YACN,WAAA,EAAa;AAAA;AACf,SACF;AAAA,QACA,QAAA,EAAU,CAAC,UAAU;AAAA;AACvB,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAM,mBAAA;AAAA,MACN,WAAA,EAAa,oHAAA;AAAA,MACb,WAAA,EAAa;AAAA,QACX,IAAA,EAAM,QAAA;AAAA,QACN,UAAA,EAAY;AAAA,UACV,EAAA,EAAI;AAAA,YACF,IAAA,EAAM,QAAA;AAAA,YACN,WAAA,EAAa;AAAA;AACf,SACF;AAAA,QACA,QAAA,EAAU,CAAC,IAAI;AAAA;AACjB,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAM,yBAAA;AAAA,MACN,WAAA,EAAa,gEAAA;AAAA,MACb,WAAA,EAAa;AAAA,QACX,IAAA,EAAM,QAAA;AAAA,QACN,YAAY;AAAC;AACf,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAM,6BAAA;AAAA,MACN,WAAA,EAAa,4EAAA;AAAA,MACb,WAAA,EAAa;AAAA,QACX,IAAA,EAAM,QAAA;AAAA,QACN,UAAA,EAAY;AAAA,UACV,MAAA,EAAQ;AAAA,YACN,IAAA,EAAM,QAAA;AAAA,YACN,WAAA,EAAa;AAAA;AACf;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAM,sBAAA;AAAA,MACN,WAAA,EAAa,kGAAA;AAAA,MACb,WAAA,EAAa;AAAA,QACX,IAAA,EAAM,QAAA;AAAA,QACN,UAAA,EAAY;AAAA,UACV,EAAA,EAAI;AAAA,YACF,IAAA,EAAM,QAAA;AAAA,YACN,WAAA,EAAa;AAAA;AACf;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAM,wBAAA;AAAA,MACN,WAAA,EAAa,+EAAA;AAAA,MACb,WAAA,EAAa;AAAA,QACX,IAAA,EAAM,QAAA;AAAA,QACN,YAAY;AAAC;AACf;AACF,GACF;AACF;AAKO,SAAS,UAAA,GAA0B;AACxC,EAAA,OAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,cAAA;AAAA,MACN,WAAA,EAAa,wDAAA;AAAA,MACb,SAAA,EAAW;AAAA,QACT;AAAA,UACE,IAAA,EAAM,MAAA;AAAA,UACN,WAAA,EAAa,gDAAA;AAAA,UACb,QAAA,EAAU;AAAA;AACZ;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAM,cAAA;AAAA,MACN,WAAA,EAAa,yDAAA;AAAA,MACb,SAAA,EAAW;AAAA,QACT;AAAA,UACE,IAAA,EAAM,MAAA;AAAA,UACN,WAAA,EAAa,sFAAA;AAAA,UACb,QAAA,EAAU;AAAA;AACZ;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAM,iBAAA;AAAA,MACN,WAAA,EAAa,4DAAA;AAAA,MACb,SAAA,EAAW;AAAA,QACT;AAAA,UACE,IAAA,EAAM,UAAA;AAAA,UACN,WAAA,EAAa,yCAAA;AAAA,UACb,QAAA,EAAU;AAAA;AACZ;AACF;AACF,GACF;AACF;AAKO,SAAS,WAAA,CACd,QAAA,EACA,QAAA,EACA,IAAA,EACe;AACf,EAAA,QAAQ,QAAA;AAAU,IAChB,KAAK,gBAAA,EAAkB;AACrB,MAAA,MAAM,KAAK,IAAA,CAAK,EAAA;AAChB,MAAA,MAAM,IAAA,GAAO,QAAA,CAAS,KAAA,CAAM,GAAA,CAAI,EAAgB,CAAA;AAChD,MAAA,IAAI,CAAC,IAAA,EAAM;AACT,QAAA,OAAO;AAAA,UACL,OAAA,EAAS,CAAC,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,CAAA,mBAAA,EAAsB,EAAE,CAAA,CAAA,EAAI,CAAA;AAAA,UAC5D,OAAA,EAAS;AAAA,SACX;AAAA,MACF;AACA,MAAA,OAAO;AAAA,QACL,SAAS,CAAC;AAAA,UACR,IAAA,EAAM,MAAA;AAAA,UACN,IAAA,EAAM,WAAW,IAAI;AAAA,SACtB;AAAA,OACH;AAAA,IACF;AAAA,IAEA,KAAK,mBAAA,EAAqB;AACxB,MAAA,MAAM,WAAW,IAAA,CAAK,QAAA;AACtB,MAAA,MAAM,KAAA,GAAQ,SAAS,SAAA,CAAU,IAAA;AAAA,QAC/B,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,KAAS,QAAA,IAAY,EAAE,EAAA,KAAO;AAAA,OACzC;AACA,MAAA,IAAI,CAAC,KAAA,EAAO;AACV,QAAA,OAAO;AAAA,UACL,OAAA,EAAS,CAAC,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,CAAA,oBAAA,EAAuB,QAAQ,CAAA,CAAA,EAAI,CAAA;AAAA,UACnE,OAAA,EAAS;AAAA,SACX;AAAA,MACF;AACA,MAAA,OAAO;AAAA,QACL,SAAS,CAAC;AAAA,UACR,IAAA,EAAM,MAAA;AAAA,UACN,IAAA,EAAM,WAAW,KAAK;AAAA,SACvB;AAAA,OACH;AAAA,IACF;AAAA,IAEA,KAAK,mBAAA,EAAqB;AACxB,MAAA,MAAM,KAAK,IAAA,CAAK,EAAA;AAChB,MAAA,MAAM,IAAA,GAAO,QAAA,CAAS,KAAA,CAAM,GAAA,CAAI,EAAgB,CAAA;AAChD,MAAA,IAAI,CAAC,IAAA,EAAM;AACT,QAAA,OAAO;AAAA,UACL,OAAA,EAAS,CAAC,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,CAAA,mBAAA,EAAsB,EAAE,CAAA,CAAA,EAAI,CAAA;AAAA,UAC5D,OAAA,EAAS;AAAA,SACX;AAAA,MACF;AACA,MAAA,MAAM,OAAA,GAAU,QAAA,CAAS,UAAA,CAAW,GAAA,CAAI,EAAgB,CAAA;AACxD,MAAA,OAAO;AAAA,QACL,SAAS,CAAC;AAAA,UACR,IAAA,EAAM,MAAA;AAAA,UACN,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,YACnB,IAAI,IAAA,CAAK,EAAA;AAAA,YACT,MAAM,IAAA,CAAK,IAAA;AAAA,YACX,OAAO,IAAA,CAAK,KAAA;AAAA,YACZ,QAAQ,IAAA,CAAK,MAAA;AAAA,YACb,OAAO,IAAA,CAAK,KAAA;AAAA,YACZ,UAAU,IAAA,CAAK,QAAA;AAAA,YACf,OAAO,IAAA,CAAK,KAAA;AAAA,YACZ,MAAM,IAAA,CAAK,IAAA;AAAA,YACX,YAAY,OAAA,GAAU;AAAA,cACpB,cAAc,OAAA,CAAQ,YAAA;AAAA,cACtB,aAAa,OAAA,CAAQ;AAAA,aACvB,GAAI;AAAA,WACN,EAAG,MAAM,CAAC;AAAA,SACX;AAAA,OACH;AAAA,IACF;AAAA,IAEA,KAAK,yBAAA,EAA2B;AAC9B,MAAA,OAAO;AAAA,QACL,SAAS,CAAC;AAAA,UACR,IAAA,EAAM,MAAA;AAAA,UACN,IAAA,EAAM,eAAA,CAAgB,QAAA,CAAS,SAAS;AAAA,SACzC;AAAA,OACH;AAAA,IACF;AAAA,IAEA,KAAK,6BAAA,EAA+B;AAClC,MAAA,MAAM,SAAS,IAAA,CAAK,MAAA;AACpB,MAAA,IAAI,gBAAgB,QAAA,CAAS,aAAA;AAC7B,MAAA,IAAI,MAAA,EAAQ;AACV,QAAA,aAAA,GAAgB,cAAc,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,SAAS,MAAM,CAAA;AAAA,MAC/D;AACA,MAAA,OAAO;AAAA,QACL,SAAS,CAAC;AAAA,UACR,IAAA,EAAM,MAAA;AAAA,UACN,IAAA,EAAM,oBAAoB,aAAa;AAAA,SACxC;AAAA,OACH;AAAA,IACF;AAAA,IAEA,KAAK,sBAAA,EAAwB;AAC3B,MAAA,MAAM,KAAK,IAAA,CAAK,EAAA;AAChB,MAAA,IAAI,EAAA,EAAI;AACN,QAAA,MAAM,IAAA,GAAO,QAAA,CAAS,UAAA,CAAW,GAAA,CAAI,EAAE,CAAA;AACvC,QAAA,IAAI,CAAC,IAAA,EAAM;AACT,UAAA,OAAO;AAAA,YACL,OAAA,EAAS,CAAC,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,CAAA,4BAAA,EAA+B,EAAE,CAAA,CAAA,EAAI,CAAA;AAAA,YACrE,OAAA,EAAS;AAAA,WACX;AAAA,QACF;AACA,QAAA,OAAO;AAAA,UACL,SAAS,CAAC;AAAA,YACR,IAAA,EAAM,MAAA;AAAA,YACN,IAAA,EAAM,KAAK,SAAA,CAAU;AAAA,cACnB,EAAA;AAAA,cACA,cAAc,IAAA,CAAK,YAAA;AAAA,cACnB,aAAa,IAAA,CAAK;AAAA,aACpB,EAAG,MAAM,CAAC;AAAA,WACX;AAAA,SACH;AAAA,MACF;AACA,MAAA,OAAO;AAAA,QACL,SAAS,CAAC;AAAA,UACR,IAAA,EAAM,MAAA;AAAA,UACN,IAAA,EAAM,gBAAA,CAAiB,QAAA,CAAS,UAAU;AAAA,SAC3C;AAAA,OACH;AAAA,IACF;AAAA,IAEA,KAAK,wBAAA,EAA0B;AAC7B,MAAA,OAAO;AAAA,QACL,SAAS,CAAC;AAAA,UACR,IAAA,EAAM,MAAA;AAAA,UACN,MAAM,IAAA,CAAK,SAAA,CAAU,QAAA,CAAS,UAAA,EAAY,MAAM,CAAC;AAAA,SAClD;AAAA,OACH;AAAA,IACF;AAAA,IAEA;AACE,MAAA,OAAO;AAAA,QACL,OAAA,EAAS,CAAC,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,CAAA,cAAA,EAAiB,QAAQ,CAAA,CAAA,EAAI,CAAA;AAAA,QAC7D,OAAA,EAAS;AAAA,OACX;AAAA;AAEN;AAKO,SAAS,gBAAgB,QAAA,EAAwD;AACtF,EAAA,OAAO;AAAA,IACL,SAAA,EAAW,CAAC,cAAA,CAAe,QAAA,EAAU,MAAM,CAAC,CAAA;AAAA,IAC5C,OAAO,QAAA,EAAS;AAAA,IAChB,SAAS,UAAA;AAAW,GACtB;AACF;AAKO,SAAS,eAAA,CACd,QAAA,EACA,MAAA,GAA0B,MAAA,EAClB;AACR,EAAA,IAAI,WAAW,MAAA,EAAQ;AACrB,IAAA,OAAO,OAAO,QAAQ,CAAA;AAAA,EACxB;AACA,EAAA,OAAO,KAAK,SAAA,CAAU;AAAA,IACpB,SAAS,QAAA,CAAS,OAAA;AAAA,IAClB,UAAU,QAAA,CAAS,QAAA;AAAA,IACnB,KAAK,QAAA,CAAS,GAAA;AAAA,IACd,OAAO,QAAA,CAAS,KAAA;AAAA,IAChB,YAAY,QAAA,CAAS,UAAA;AAAA,IACrB,WAAW,QAAA,CAAS,SAAA,CAAU,GAAA,CAAI,CAAC,OAAO,EAAE,EAAA,EAAI,CAAA,CAAE,EAAA,EAAI,MAAM,CAAA,CAAE,IAAA,EAAM,KAAA,EAAO,CAAA,CAAE,OAAM,CAAE,CAAA;AAAA,IACrF,aAAA,EAAe,QAAA,CAAS,aAAA,CAAc,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,MAChD,IAAI,CAAA,CAAE,EAAA;AAAA,MACN,MAAM,CAAA,CAAE,IAAA;AAAA,MACR,OAAO,CAAA,CAAE,KAAA;AAAA,MACT,QAAQ,CAAA,CAAE;AAAA,KACZ,CAAE;AAAA,GACJ,EAAG,MAAM,CAAC,CAAA;AACZ;AAKO,IAAM,WAAA,GAAc;AAAA,EACzB,IAAA,EAAM,kBAAA;AAAA,EACN,OAAA,EAAS,OAAA;AAAA,EACT,eAAA,EAAiB,YAAA;AAAA,EACjB,YAAA,EAAc;AAAA,IACZ,SAAA,EAAW,EAAE,SAAA,EAAW,KAAA,EAAO,aAAa,IAAA,EAAK;AAAA,IACjD,OAAO,EAAC;AAAA,IACR,OAAA,EAAS,EAAE,WAAA,EAAa,KAAA;AAAM;AAElC","file":"mcp.cjs","sourcesContent":["/**\n * TOON Serialization for SemanticDOM\n * Token-Oriented Object Notation for LLM-efficient semantic document encoding\n *\n * TOON reduces token usage by ~40-50% compared to JSON, making it ideal\n * for passing SemanticDOM documents to AI agents.\n *\n * @packageDocumentation\n */\n\nimport { encode, decode, type EncodeOptions, type DecodeOptions } from '@toon-format/toon';\nimport type {\n  SemanticDocument,\n  SemanticNode,\n  SemanticId,\n  SSGNode,\n  AgentCertification,\n} from '../core/types.js';\n\n/**\n * Serializable representation of SemanticNode (without circular refs)\n */\ninterface SerializableNode {\n  id: string;\n  role: string;\n  label: string;\n  intent?: string;\n  state: string;\n  selector: string;\n  xpath: string;\n  a11y: {\n    name: string;\n    focusable: boolean;\n    inTabOrder: boolean;\n    level?: number;\n  };\n  children: SerializableNode[];\n  value?: string | number | boolean;\n}\n\n/**\n * Serializable document format for TOON encoding\n */\ninterface SerializableDocument {\n  version: string;\n  standard: string;\n  url: string;\n  title: string;\n  language: string;\n  generatedAt: number;\n  agentReady: {\n    level: string;\n    score: number;\n    checks: Array<{ id: string; name: string; passed: boolean }>;\n    failures: Array<{ id: string; name: string; message: string; severity?: string }>;\n  };\n  root: SerializableNode;\n  landmarks: Array<{ id: string; role: string; label: string }>;\n  interactables: Array<{ id: string; role: string; label: string; intent?: string }>;\n  stateGraph: Array<{\n    id: string;\n    state: string;\n    transitions: Array<{ from: string; to: string; trigger: string }>;\n  }>;\n}\n\n/**\n * Convert SemanticNode to serializable format\n */\nfunction serializeNode(node: SemanticNode): SerializableNode {\n  return {\n    id: node.id,\n    role: node.role,\n    label: node.label,\n    intent: node.intent,\n    state: node.state,\n    selector: node.selector,\n    xpath: node.xpath,\n    a11y: {\n      name: node.a11y.name,\n      focusable: node.a11y.focusable,\n      inTabOrder: node.a11y.inTabOrder,\n      level: node.a11y.level,\n    },\n    children: node.children.map(serializeNode),\n    value: node.value,\n  };\n}\n\n/**\n * Convert SemanticDocument to serializable format\n */\nfunction serializeDocument(doc: SemanticDocument): SerializableDocument {\n  const stateGraphArray: SerializableDocument['stateGraph'] = [];\n\n  doc.stateGraph.forEach((ssgNode, id) => {\n    stateGraphArray.push({\n      id,\n      state: ssgNode.currentState,\n      transitions: ssgNode.transitions.map((t) => ({\n        from: t.from,\n        to: t.to,\n        trigger: typeof t.trigger === 'string' ? t.trigger : String(t.trigger),\n      })),\n    });\n  });\n\n  return {\n    version: doc.version,\n    standard: doc.standard,\n    url: doc.url,\n    title: doc.title,\n    language: doc.language,\n    generatedAt: doc.generatedAt,\n    agentReady: {\n      level: doc.agentReady.level,\n      score: doc.agentReady.score,\n      checks: doc.agentReady.checks.map((c) => ({\n        id: c.id,\n        name: c.name,\n        passed: c.passed,\n      })),\n      failures: doc.agentReady.failures.map((f) => ({\n        id: f.id,\n        name: f.name,\n        message: f.message,\n        severity: f.severity,\n      })),\n    },\n    root: serializeNode(doc.root),\n    landmarks: doc.landmarks.map((l) => ({\n      id: l.id,\n      role: l.role,\n      label: l.label,\n    })),\n    interactables: doc.interactables.map((i) => ({\n      id: i.id,\n      role: i.role,\n      label: i.label,\n      intent: i.intent,\n    })),\n    stateGraph: stateGraphArray,\n  };\n}\n\n/**\n * Encode SemanticDocument to TOON format\n *\n * @param document - SemanticDocument to encode\n * @param options - TOON encoding options\n * @returns TOON formatted string\n *\n * @example\n * ```ts\n * const toon = toTOON(document);\n * // Saves ~40-50% tokens vs JSON\n * ```\n */\nexport function toTOON(document: SemanticDocument, options?: EncodeOptions): string {\n  const serializable = serializeDocument(document);\n  return encode(serializable, {\n    indent: 2,\n    keyFolding: 'safe',\n    ...options,\n  });\n}\n\n/**\n * Decode TOON string to partial SemanticDocument data\n *\n * Note: Returns plain object structure, not full SemanticDocument with Map indexes.\n * Use this for reading TOON data; create fresh SemanticDocument via parse() for full functionality.\n *\n * @param toon - TOON formatted string\n * @param options - TOON decoding options\n * @returns Decoded document data\n */\nexport function fromTOON(toon: string, options?: DecodeOptions): SerializableDocument {\n  return decode(toon, {\n    strict: true,\n    expandPaths: 'safe',\n    ...options,\n  }) as unknown as SerializableDocument;\n}\n\n/**\n * Encode just the semantic tree (nodes only) to TOON\n * Useful for passing to LLMs when you only need structure\n *\n * @param root - Root SemanticNode\n * @returns TOON formatted string of just the tree\n */\nexport function treeToTOON(root: SemanticNode, options?: EncodeOptions): string {\n  return encode(serializeNode(root), {\n    indent: 2,\n    keyFolding: 'safe',\n    ...options,\n  });\n}\n\n/**\n * Encode landmarks array to TOON (compact format)\n *\n * @param landmarks - Array of landmark nodes\n * @returns TOON formatted string\n */\nexport function landmarksToTOON(landmarks: SemanticNode[], options?: EncodeOptions): string {\n  const data = landmarks.map((l) => ({\n    id: l.id,\n    role: l.role,\n    label: l.label,\n    selector: l.selector,\n  }));\n  return encode({ landmarks: data }, options);\n}\n\n/**\n * Encode interactables array to TOON (compact format)\n *\n * @param interactables - Array of interactive nodes\n * @returns TOON formatted string\n */\nexport function interactablesToTOON(interactables: SemanticNode[], options?: EncodeOptions): string {\n  const data = interactables.map((i) => ({\n    id: i.id,\n    role: i.role,\n    label: i.label,\n    intent: i.intent,\n    state: i.state,\n    selector: i.selector,\n  }));\n  return encode({ interactables: data }, options);\n}\n\n/**\n * Encode state graph to TOON\n *\n * @param stateGraph - Map of SSG nodes\n * @returns TOON formatted string\n */\nexport function stateGraphToTOON(\n  stateGraph: Map<SemanticId, SSGNode>,\n  options?: EncodeOptions\n): string {\n  const nodes: Array<{\n    id: string;\n    state: string;\n    transitions: Array<{ from: string; to: string; trigger: string }>;\n  }> = [];\n\n  stateGraph.forEach((node, id) => {\n    nodes.push({\n      id,\n      state: node.currentState,\n      transitions: node.transitions.map((t) => ({\n        from: t.from,\n        to: t.to,\n        trigger: String(t.trigger),\n      })),\n    });\n  });\n\n  return encode({ stateGraph: nodes }, options);\n}\n\n/**\n * Encode certification report to TOON\n *\n * @param certification - AgentCertification object\n * @returns TOON formatted string\n */\nexport function certificationToTOON(\n  certification: AgentCertification,\n  options?: EncodeOptions\n): string {\n  return encode(\n    {\n      level: certification.level,\n      score: certification.score,\n      passed: certification.checks.map((c) => c.name),\n      failed: certification.failures.map((f) => ({\n        name: f.name,\n        severity: f.severity,\n        message: f.message,\n      })),\n    },\n    options\n  );\n}\n\n/**\n * Calculate token savings estimate\n *\n * @param document - SemanticDocument to analyze\n * @returns Token comparison stats\n */\nexport function estimateTokenSavings(document: SemanticDocument): {\n  jsonTokens: number;\n  toonTokens: number;\n  savings: number;\n  savingsPercent: number;\n} {\n  const serializable = serializeDocument(document);\n  const jsonStr = JSON.stringify(serializable, null, 2);\n  const toonStr = toTOON(document);\n\n  // Rough token estimate: ~4 chars per token for English text\n  const jsonTokens = Math.ceil(jsonStr.length / 4);\n  const toonTokens = Math.ceil(toonStr.length / 4);\n  const savings = jsonTokens - toonTokens;\n  const savingsPercent = Math.round((savings / jsonTokens) * 100);\n\n  return {\n    jsonTokens,\n    toonTokens,\n    savings,\n    savingsPercent,\n  };\n}\n\n// Re-export TOON types for convenience\nexport type { EncodeOptions, DecodeOptions } from '@toon-format/toon';\n","/**\n * MCP (Model Context Protocol) Server for SemanticDOM\n * Exposes SemanticDOM/SSG as MCP Resources and Tools\n *\n * Compatible with the Linux Foundation's Model Context Protocol standard\n * @see https://modelcontextprotocol.io/specification\n *\n * @packageDocumentation\n */\n\nimport type {\n  SemanticDocument,\n  SemanticId,\n} from '../core/types.js';\nimport { toTOON, treeToTOON, landmarksToTOON, interactablesToTOON, stateGraphToTOON } from '../toon/index.js';\n\n/**\n * MCP Resource descriptor for SemanticDOM\n */\nexport interface MCPResource {\n  uri: string;\n  mimeType: string;\n  name: string;\n  description?: string;\n}\n\n/**\n * MCP Tool descriptor\n */\nexport interface MCPTool {\n  name: string;\n  description: string;\n  inputSchema: {\n    type: 'object';\n    properties: Record<string, { type: string; description: string }>;\n    required?: string[];\n  };\n}\n\n/**\n * MCP Tool call result\n */\nexport interface MCPToolResult {\n  content: Array<{\n    type: 'text' | 'resource';\n    text?: string;\n    resource?: MCPResource;\n  }>;\n  isError?: boolean;\n}\n\n/**\n * MCP Prompt descriptor\n */\nexport interface MCPPrompt {\n  name: string;\n  description: string;\n  arguments?: Array<{\n    name: string;\n    description: string;\n    required?: boolean;\n  }>;\n}\n\n/**\n * SemanticDOM MCP Server capabilities\n */\nexport interface SemanticDOMMCPCapabilities {\n  resources: MCPResource[];\n  tools: MCPTool[];\n  prompts: MCPPrompt[];\n}\n\n/**\n * Create MCP resource from SemanticDocument\n */\nexport function createResource(\n  document: SemanticDocument,\n  format: 'json' | 'toon' = 'toon'\n): MCPResource {\n  return {\n    uri: `semantic-dom://${new URL(document.url).hostname}${new URL(document.url).pathname}`,\n    mimeType: format === 'toon' ? 'application/toon' : 'application/json',\n    name: document.title || 'SemanticDOM Document',\n    description: `SemanticDOM structure with ${document.landmarks.length} landmarks, ${document.interactables.length} interactables. Agent certification: ${document.agentReady.level} (${document.agentReady.score}/100)`,\n  };\n}\n\n/**\n * Get available MCP tools for SemanticDOM operations\n */\nexport function getTools(): MCPTool[] {\n  return [\n    {\n      name: 'semantic_query',\n      description: 'Query element by semantic ID with O(1) lookup time. Returns element details including role, label, state, and accessibility info.',\n      inputSchema: {\n        type: 'object',\n        properties: {\n          id: {\n            type: 'string',\n            description: 'Semantic ID of the element (e.g., \"nav-main\", \"btn-submit\")',\n          },\n        },\n        required: ['id'],\n      },\n    },\n    {\n      name: 'semantic_navigate',\n      description: 'Navigate to a landmark region. Returns landmark details and its interactive children.',\n      inputSchema: {\n        type: 'object',\n        properties: {\n          landmark: {\n            type: 'string',\n            description: 'Landmark role or ID (e.g., \"main\", \"navigation\", \"nav-primary\")',\n          },\n        },\n        required: ['landmark'],\n      },\n    },\n    {\n      name: 'semantic_interact',\n      description: 'Get interaction details for an element. Returns intent, state, available actions, and CSS selector for automation.',\n      inputSchema: {\n        type: 'object',\n        properties: {\n          id: {\n            type: 'string',\n            description: 'Semantic ID of the interactive element',\n          },\n        },\n        required: ['id'],\n      },\n    },\n    {\n      name: 'semantic_list_landmarks',\n      description: 'List all landmark regions on the page for navigation overview.',\n      inputSchema: {\n        type: 'object',\n        properties: {},\n      },\n    },\n    {\n      name: 'semantic_list_interactables',\n      description: 'List all interactive elements (buttons, links, inputs) with their intents.',\n      inputSchema: {\n        type: 'object',\n        properties: {\n          filter: {\n            type: 'string',\n            description: 'Optional filter by role (e.g., \"button\", \"link\", \"textbox\")',\n          },\n        },\n      },\n    },\n    {\n      name: 'semantic_state_graph',\n      description: 'Get the Semantic State Graph showing all stateful elements and their possible state transitions.',\n      inputSchema: {\n        type: 'object',\n        properties: {\n          id: {\n            type: 'string',\n            description: 'Optional: filter to specific element ID',\n          },\n        },\n      },\n    },\n    {\n      name: 'semantic_certification',\n      description: 'Get agent certification status including level, score, and any failed checks.',\n      inputSchema: {\n        type: 'object',\n        properties: {},\n      },\n    },\n  ];\n}\n\n/**\n * Get available MCP prompts for SemanticDOM\n */\nexport function getPrompts(): MCPPrompt[] {\n  return [\n    {\n      name: 'analyze_page',\n      description: 'Analyze page structure and provide navigation guidance',\n      arguments: [\n        {\n          name: 'goal',\n          description: 'What the user wants to accomplish on this page',\n          required: true,\n        },\n      ],\n    },\n    {\n      name: 'find_element',\n      description: 'Find the best element to interact with for a given task',\n      arguments: [\n        {\n          name: 'task',\n          description: 'Description of what you want to do (e.g., \"submit the form\", \"navigate to settings\")',\n          required: true,\n        },\n      ],\n    },\n    {\n      name: 'automation_plan',\n      description: 'Generate a step-by-step automation plan using semantic IDs',\n      arguments: [\n        {\n          name: 'workflow',\n          description: 'Description of the workflow to automate',\n          required: true,\n        },\n      ],\n    },\n  ];\n}\n\n/**\n * Execute MCP tool call\n */\nexport function executeTool(\n  document: SemanticDocument,\n  toolName: string,\n  args: Record<string, unknown>\n): MCPToolResult {\n  switch (toolName) {\n    case 'semantic_query': {\n      const id = args.id as string;\n      const node = document.index.get(id as SemanticId);\n      if (!node) {\n        return {\n          content: [{ type: 'text', text: `Element not found: ${id}` }],\n          isError: true,\n        };\n      }\n      return {\n        content: [{\n          type: 'text',\n          text: treeToTOON(node),\n        }],\n      };\n    }\n\n    case 'semantic_navigate': {\n      const landmark = args.landmark as string;\n      const found = document.landmarks.find(\n        (l) => l.role === landmark || l.id === landmark\n      );\n      if (!found) {\n        return {\n          content: [{ type: 'text', text: `Landmark not found: ${landmark}` }],\n          isError: true,\n        };\n      }\n      return {\n        content: [{\n          type: 'text',\n          text: treeToTOON(found),\n        }],\n      };\n    }\n\n    case 'semantic_interact': {\n      const id = args.id as string;\n      const node = document.index.get(id as SemanticId);\n      if (!node) {\n        return {\n          content: [{ type: 'text', text: `Element not found: ${id}` }],\n          isError: true,\n        };\n      }\n      const ssgNode = document.stateGraph.get(id as SemanticId);\n      return {\n        content: [{\n          type: 'text',\n          text: JSON.stringify({\n            id: node.id,\n            role: node.role,\n            label: node.label,\n            intent: node.intent,\n            state: node.state,\n            selector: node.selector,\n            xpath: node.xpath,\n            a11y: node.a11y,\n            stateGraph: ssgNode ? {\n              currentState: ssgNode.currentState,\n              transitions: ssgNode.transitions,\n            } : null,\n          }, null, 2),\n        }],\n      };\n    }\n\n    case 'semantic_list_landmarks': {\n      return {\n        content: [{\n          type: 'text',\n          text: landmarksToTOON(document.landmarks),\n        }],\n      };\n    }\n\n    case 'semantic_list_interactables': {\n      const filter = args.filter as string | undefined;\n      let interactables = document.interactables;\n      if (filter) {\n        interactables = interactables.filter((i) => i.role === filter);\n      }\n      return {\n        content: [{\n          type: 'text',\n          text: interactablesToTOON(interactables),\n        }],\n      };\n    }\n\n    case 'semantic_state_graph': {\n      const id = args.id as SemanticId | undefined;\n      if (id) {\n        const node = document.stateGraph.get(id);\n        if (!node) {\n          return {\n            content: [{ type: 'text', text: `State graph node not found: ${id}` }],\n            isError: true,\n          };\n        }\n        return {\n          content: [{\n            type: 'text',\n            text: JSON.stringify({\n              id,\n              currentState: node.currentState,\n              transitions: node.transitions,\n            }, null, 2),\n          }],\n        };\n      }\n      return {\n        content: [{\n          type: 'text',\n          text: stateGraphToTOON(document.stateGraph),\n        }],\n      };\n    }\n\n    case 'semantic_certification': {\n      return {\n        content: [{\n          type: 'text',\n          text: JSON.stringify(document.agentReady, null, 2),\n        }],\n      };\n    }\n\n    default:\n      return {\n        content: [{ type: 'text', text: `Unknown tool: ${toolName}` }],\n        isError: true,\n      };\n  }\n}\n\n/**\n * Get full MCP capabilities for SemanticDOM\n */\nexport function getCapabilities(document: SemanticDocument): SemanticDOMMCPCapabilities {\n  return {\n    resources: [createResource(document, 'toon')],\n    tools: getTools(),\n    prompts: getPrompts(),\n  };\n}\n\n/**\n * Serialize document for MCP resource response\n */\nexport function serializeForMCP(\n  document: SemanticDocument,\n  format: 'json' | 'toon' = 'toon'\n): string {\n  if (format === 'toon') {\n    return toTOON(document);\n  }\n  return JSON.stringify({\n    version: document.version,\n    standard: document.standard,\n    url: document.url,\n    title: document.title,\n    agentReady: document.agentReady,\n    landmarks: document.landmarks.map((l) => ({ id: l.id, role: l.role, label: l.label })),\n    interactables: document.interactables.map((i) => ({\n      id: i.id,\n      role: i.role,\n      label: i.label,\n      intent: i.intent,\n    })),\n  }, null, 2);\n}\n\n/**\n * MCP Server Info for SemanticDOM\n */\nexport const SERVER_INFO = {\n  name: 'semantic-dom-ssg',\n  version: '0.1.0',\n  protocolVersion: '2024-11-05',\n  capabilities: {\n    resources: { subscribe: false, listChanged: true },\n    tools: {},\n    prompts: { listChanged: false },\n  },\n};\n"]}