@promptscore/core 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.cjs +1038 -0
- package/dist/browser.cjs.map +1 -0
- package/dist/browser.d.cts +14 -0
- package/dist/browser.d.ts +14 -0
- package/dist/browser.js +1024 -0
- package/dist/browser.js.map +1 -0
- package/dist/index-5jqZSlgq.d.cts +142 -0
- package/dist/index-5jqZSlgq.d.ts +142 -0
- package/dist/index.cjs +1136 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +35 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.js +1120 -0
- package/dist/index.js.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/parser/index.ts","../src/profiles/builtin.ts","../src/rules/deterministic/min-length.ts","../src/rules/deterministic/max-length.ts","../src/rules/deterministic/no-output-format.ts","../src/rules/deterministic/no-examples.ts","../src/rules/deterministic/no-role.ts","../src/rules/deterministic/no-context.ts","../src/rules/deterministic/ambiguous-negation.ts","../src/rules/deterministic/no-constraints.ts","../src/rules/deterministic/all-caps-abuse.ts","../src/rules/deterministic/vague-instruction.ts","../src/rules/deterministic/missing-task.ts","../src/rules/deterministic/no-structured-format.ts","../src/rules/deterministic/index.ts","../src/rules/registry.ts","../src/scorer/index.ts","../src/reporter/index.ts","../src/browser.ts"],"names":["c"],"mappings":";;;AAIA,IAAM,aAAA,GAA0B;AAAA,EAC9B,yBAAA;AAAA,EACA,wBAAA;AAAA,EACA,wBAAA;AAAA,EACA,8BAAA;AAAA,EACA,oCAAA;AAAA,EACA,iCAAA;AAAA,EACA;AACF,CAAA;AAEA,IAAM,aAAA,GAA0B;AAAA,EAC9B,mBAAA;AAAA,EACA,kBAAA;AAAA,EACA,mBAAA;AAAA,EACA,oHAAA;AAAA,EACA;AACF,CAAA;AAEA,IAAM,mBAAA,GAAgC;AAAA,EACpC,kHAAA;AAAA,EACA;AACF,CAAA;AAEA,IAAM,sBAAA,GAAmC;AAAA,EACvC,+JAAA;AAAA,EACA,kEAAA;AAAA,EACA,oDAAA;AAAA,EACA;AACF,CAAA;AAEA,IAAM,gBAAA,GAA6B;AAAA,EACjC,kBAAA;AAAA,EACA,eAAA;AAAA,EACA,WAAA;AAAA,EACA,yCAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA;AAEA,IAAM,aAAA,GAA0B;AAAA,EAC9B,aAAA;AAAA,EACA,iIAAA;AAAA,EACA,yFAAA;AAAA,EACA;AACF,CAAA;AAEA,IAAM,iBAAA,GAA8B;AAAA,EAClC,4FAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA;AACF,CAAA;AAEA,IAAM,gBAAA,GAA6B;AAAA,EACjC,gBAAA;AAAA,EACA,mBAAA;AAAA,EACA,iBAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAA;AAEA,IAAM,aAAA,GAAgB,4CAAA;AACtB,IAAM,qBAAA,GAAwB,eAAA;AAC9B,IAAM,sBAAA,GAAyB,gCAAA;AAE/B,SAAS,WAAW,IAAA,EAAsB;AACxC,EAAA,MAAM,OAAA,GAAU,KAAK,IAAA,EAAK;AAC1B,EAAA,IAAI,CAAC,SAAS,OAAO,CAAA;AACrB,EAAA,OAAO,OAAA,CAAQ,KAAA,CAAM,KAAK,CAAA,CAAE,MAAA;AAC9B;AAEA,SAAS,eAAe,IAAA,EAAsB;AAG5C,EAAA,MAAM,SAAS,IAAA,CAAK,WAAA,EAAY,CAAE,KAAA,CAAM,GAAG,GAAI,CAAA;AAC/C,EAAA,MAAM,cAAA,GAAiB,sDAAA;AACvB,EAAA,MAAM,OAAA,GAAU,MAAA,CAAO,KAAA,CAAM,cAAc,CAAA;AAC3C,EAAA,IAAI,OAAA,IAAW,OAAA,CAAQ,MAAA,IAAU,CAAA,EAAG,OAAO,IAAA;AAC3C,EAAA,OAAO,SAAA;AACT;AAEA,SAAS,iBAAA,CAAkB,MAAc,QAAA,EAAwC;AAC/E,EAAA,KAAA,MAAW,WAAW,QAAA,EAAU;AAC9B,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,OAAO,CAAA;AAChC,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,OAAO,KAAA,CAAM,CAAC,CAAA,CAAE,IAAA,EAAK;AAAA,IACvB;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,YAAY,IAAA,EAAkC;AAErD,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA,CAAE,MAAM,CAAA,EAAG,CAAC,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA;AACzD,EAAA,KAAA,MAAW,WAAW,aAAA,EAAe;AACnC,IAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,KAAA,CAAM,OAAO,CAAA;AACtC,IAAA,IAAI,KAAA,EAAO,OAAO,KAAA,CAAM,CAAC,EAAE,IAAA,EAAK;AAAA,EAClC;AAEA,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,KAAA,CAAM,mDAAmD,CAAA;AAC/E,EAAA,IAAI,QAAA,IAAY,SAAS,CAAC,CAAA,SAAU,QAAA,CAAS,CAAC,EAAE,IAAA,EAAK;AACrD,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,WAAA,CAAY,MAAc,IAAA,EAAmC;AAEpE,EAAA,MAAM,WAAW,IAAA,CAAK,KAAA;AAAA,IACpB;AAAA,GACF;AACA,EAAA,IAAI,QAAA,IAAY,SAAS,CAAC,CAAA,SAAU,QAAA,CAAS,CAAC,EAAE,IAAA,EAAK;AAErD,EAAA,MAAM,cAAc,IAAA,GAAO,IAAA,CAAK,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAA,GAAI,IAAA;AACpD,EAAA,MAAM,KAAA,GAAQ,iBAAA,CAAkB,WAAA,EAAa,aAAa,CAAA;AAC1D,EAAA,IAAI,KAAA,EAAO;AAET,IAAA,MAAM,MAAM,WAAA,CAAY,WAAA,GAAc,OAAA,CAAQ,KAAA,CAAM,aAAa,CAAA;AACjE,IAAA,IAAI,OAAO,CAAA,EAAG;AACZ,MAAA,MAAM,IAAA,GAAO,WAAA,CAAY,KAAA,CAAM,GAAG,CAAA;AAClC,MAAA,MAAM,GAAA,GAAM,IAAA,CAAK,MAAA,CAAO,SAAS,CAAA;AACjC,MAAA,OAAO,GAAA,GAAM,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,GAAG,GAAA,GAAM,CAAC,CAAA,CAAE,IAAA,KAAS,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,GAAG,EAAE,IAAA,EAAK;AAAA,IAC3E;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,eAAe,IAAA,EAAkC;AACxD,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,KAAA,CAAM,iCAAiC,CAAA;AAC7D,EAAA,IAAI,QAAA,IAAY,SAAS,CAAC,CAAA,SAAU,QAAA,CAAS,CAAC,EAAE,IAAA,EAAK;AAErD,EAAA,KAAA,MAAW,WAAW,gBAAA,EAAkB;AACtC,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,OAAO,CAAA;AAChC,IAAA,IAAI,KAAA,IAAS,KAAA,CAAM,KAAA,KAAU,MAAA,EAAW;AACtC,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,KAAA,CAAM,KAAK,CAAA;AACnC,MAAA,MAAM,GAAA,GAAM,IAAA,CAAK,MAAA,CAAO,MAAM,CAAA;AAC9B,MAAA,OAAO,GAAA,GAAM,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,GAAG,GAAG,CAAA,CAAE,IAAA,EAAK,GAAI,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,GAAG,EAAE,IAAA,EAAK;AAAA,IACvE;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,mBAAmB,IAAA,EAAwB;AAClD,EAAA,MAAM,cAAwB,EAAC;AAC/B,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,KAAA,CAAM,2CAA2C,CAAA;AACvE,EAAA,IAAI,QAAA,IAAY,QAAA,CAAS,CAAC,CAAA,EAAG;AAC3B,IAAA,QAAA,CAAS,CAAC,CAAA,CACP,KAAA,CAAM,IAAI,CAAA,CACV,IAAI,CAAC,IAAA,KAAS,IAAA,CAAK,OAAA,CAAQ,eAAA,EAAiB,EAAE,EAAE,IAAA,EAAM,CAAA,CACtD,MAAA,CAAO,OAAO,CAAA,CACd,OAAA,CAAQ,CAAC,IAAA,KAAS,WAAA,CAAY,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,EAC7C;AAEA,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA;AAC7B,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAM,OAAA,GAAU,KAAK,IAAA,EAAK;AAC1B,IAAA,IAAI,CAAC,OAAA,EAAS;AACd,IAAA,KAAA,MAAW,WAAW,mBAAA,EAAqB;AACzC,MAAA,IAAI,QAAQ,IAAA,CAAK,OAAO,CAAA,IAAK,OAAA,CAAQ,SAAS,GAAA,EAAK;AACjD,QAAA,WAAA,CAAY,KAAK,OAAO,CAAA;AACxB,QAAA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAGA,EAAA,OAAO,KAAA,CAAM,IAAA,CAAK,IAAI,GAAA,CAAI,WAAW,CAAC,CAAA;AACxC;AAEA,SAAS,gBAAgB,IAAA,EAAyB;AAChD,EAAA,MAAM,WAAsB,EAAC;AAC7B,EAAA,MAAM,QAAA,GAAW,kCAAA;AACjB,EAAA,IAAI,QAAA;AACJ,EAAA,OAAA,CAAQ,QAAA,GAAW,QAAA,CAAS,IAAA,CAAK,IAAI,OAAO,IAAA,EAAM;AAChD,IAAA,MAAM,IAAA,GAAO,QAAA,CAAS,CAAC,CAAA,EAAG,MAAK,IAAK,EAAA;AACpC,IAAA,MAAM,UAAA,GAAa,IAAA,CAAK,KAAA,CAAM,yCAAyC,CAAA;AACvE,IAAA,MAAM,WAAA,GAAc,IAAA,CAAK,KAAA,CAAM,yBAAyB,CAAA;AACxD,IAAA,QAAA,CAAS,IAAA,CAAK;AAAA,MACZ,GAAA,EAAK,IAAA;AAAA,MACL,KAAA,EAAO,UAAA,GAAa,CAAC,CAAA,EAAG,IAAA,EAAK;AAAA,MAC7B,MAAA,EAAQ,WAAA,GAAc,CAAC,CAAA,EAAG,IAAA;AAAK,KAChC,CAAA;AAAA,EACH;AAEA,EAAA,IAAI,QAAA,CAAS,WAAW,CAAA,EAAG;AACzB,IAAA,MAAM,OAAA,GAAU,+EAAA;AAChB,IAAA,IAAI,OAAA;AACJ,IAAA,OAAA,CAAQ,OAAA,GAAU,OAAA,CAAQ,IAAA,CAAK,IAAI,OAAO,IAAA,EAAM;AAC9C,MAAA,QAAA,CAAS,IAAA,CAAK;AAAA,QACZ,GAAA,EAAK,OAAA,CAAQ,CAAC,CAAA,CAAE,IAAA,EAAK;AAAA,QACrB,KAAA,EAAO,OAAA,CAAQ,CAAC,CAAA,EAAG,IAAA,EAAK;AAAA,QACxB,MAAA,EAAQ,OAAA,CAAQ,CAAC,CAAA,EAAG,IAAA;AAAK,OAC1B,CAAA;AAAA,IACH;AAAA,EACF;AAEA,EAAA,IAAI,QAAA,CAAS,WAAW,CAAA,EAAG;AACzB,IAAA,KAAA,MAAW,WAAW,gBAAA,EAAkB;AACtC,MAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,OAAO,CAAA;AAChC,MAAA,IAAI,KAAA,IAAS,KAAA,CAAM,KAAA,KAAU,MAAA,EAAW;AACtC,QAAA,MAAM,UAAU,IAAA,CAAK,KAAA,CAAM,MAAM,KAAA,EAAO,KAAA,CAAM,QAAQ,GAAG,CAAA;AACzD,QAAA,QAAA,CAAS,KAAK,EAAE,GAAA,EAAK,OAAA,CAAQ,IAAA,IAAQ,CAAA;AACrC,QAAA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,EAAA,OAAO,QAAA;AACT;AAEA,SAAS,oBAAoB,IAAA,EAAkC;AAC7D,EAAA,MAAM,WAAW,IAAA,CAAK,KAAA;AAAA,IACpB;AAAA,GACF;AACA,EAAA,IAAI,QAAA,IAAY,SAAS,CAAC,CAAA,SAAU,QAAA,CAAS,CAAC,EAAE,IAAA,EAAK;AACrD,EAAA,OAAO,iBAAA,CAAkB,MAAM,sBAAsB,CAAA;AACvD;AAEA,SAAS,YAAY,IAAA,EAAkC;AACrD,EAAA,OAAO,iBAAA,CAAkB,MAAM,aAAa,CAAA;AAC9C;AAEA,SAAS,gBAAgB,IAAA,EAAkC;AACzD,EAAA,OAAO,iBAAA,CAAkB,MAAM,iBAAiB,CAAA;AAClD;AAEO,SAAS,YAAY,GAAA,EAAwB;AAClD,EAAA,MAAM,IAAA,GAAO,GAAA;AACb,EAAA,MAAM,IAAA,GAAO,YAAY,IAAI,CAAA;AAC7B,EAAA,MAAM,IAAA,GAAO,WAAA,CAAY,IAAA,EAAM,IAAI,CAAA;AACnC,EAAA,MAAM,OAAA,GAAU,eAAe,IAAI,CAAA;AACnC,EAAA,MAAM,WAAA,GAAc,mBAAmB,IAAI,CAAA;AAC3C,EAAA,MAAM,QAAA,GAAW,gBAAgB,IAAI,CAAA;AACrC,EAAA,MAAM,YAAA,GAAe,oBAAoB,IAAI,CAAA;AAC7C,EAAA,MAAM,IAAA,GAAO,YAAY,IAAI,CAAA;AAC7B,EAAA,MAAM,QAAA,GAAW,gBAAgB,IAAI,CAAA;AAErC,EAAA,MAAM,UAAA,GAA+B;AAAA,IACnC,IAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA;AAAA,IACA,WAAA,EAAa,WAAA,CAAY,MAAA,GAAS,CAAA,GAAI,WAAA,GAAc,MAAA;AAAA,IACpD,QAAA,EAAU,QAAA,CAAS,MAAA,GAAS,CAAA,GAAI,QAAA,GAAW,MAAA;AAAA,IAC3C,YAAA;AAAA,IACA,IAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,MAAM,UAAA,GAAa,aAAA,CAAc,IAAA,CAAK,IAAI,CAAA;AAC1C,EAAA,MAAM,kBAAA,GAAqB,qBAAA,CAAsB,IAAA,CAAK,IAAI,CAAA;AAC1D,EAAA,MAAM,mBAAA,GAAsB,sBAAA,CAAuB,IAAA,CAAK,IAAI,CAAA;AAE5D,EAAA,MAAM,QAAA,GAA2B;AAAA,IAC/B,SAAA,EAAW,WAAW,IAAI,CAAA;AAAA,IAC1B,WAAW,IAAA,CAAK,MAAA;AAAA,IAChB,SAAA,EAAW,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA,CAAE,MAAA;AAAA,IAC5B,QAAA,EAAU,eAAe,IAAI,CAAA;AAAA,IAC7B,mBAAA,EAAqB,cAAc,kBAAA,IAAsB,mBAAA;AAAA,IACzD,UAAA;AAAA,IACA,kBAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,OAAO;AAAA,IACL,GAAA,EAAK,IAAA;AAAA,IACL,UAAA;AAAA,IACA;AAAA,GACF;AACF;;;ACxQA,SAAS,cAAA,CACP,MACA,QAAA,EACqB;AACrB,EAAA,OAAO;AAAA,IACL,QAAA,EAAU,QAAA,EAAU,QAAA,IAAY,IAAA,EAAM,QAAA;AAAA,IACtC,MAAA,EAAQ,QAAA,EAAU,MAAA,IAAU,IAAA,EAAM,MAAA;AAAA,IAClC,UAAA,EAAY,QAAA,EAAU,UAAA,IAAc,IAAA,EAAM,UAAA;AAAA,IAC1C,SAAA,EAAW,QAAA,EAAU,SAAA,IAAa,IAAA,EAAM,SAAA;AAAA,IACxC,OAAA,EAAS,QAAA,EAAU,OAAA,IAAW,IAAA,EAAM;AAAA,GACtC;AACF;AAEA,SAAS,aAAA,CAAc,MAAe,KAAA,EAAgC;AACpE,EAAA,MAAM,0BAAU,IAAI,GAAA,CAAY,CAAC,GAAG,OAAO,IAAA,CAAK,IAAA,CAAK,KAAK,CAAA,EAAG,GAAG,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,KAAK,CAAC,CAAC,CAAA;AACzF,EAAA,MAAM,QAA6C,EAAC;AAEpD,EAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,IAAA,KAAA,CAAM,MAAM,CAAA,GAAI,cAAA,CAAe,IAAA,CAAK,KAAA,CAAM,MAAM,CAAA,EAAG,KAAA,CAAM,KAAA,CAAM,MAAM,CAAC,CAAA;AAAA,EACxE;AAEA,EAAA,OAAO;AAAA,IACL,MAAM,KAAA,CAAM,IAAA;AAAA,IACZ,aAAa,KAAA,CAAM,WAAA;AAAA,IACnB,OAAA,EAAS,KAAA,CAAM,OAAA,IAAW,IAAA,CAAK,OAAA;AAAA,IAC/B,MAAM,KAAA,CAAM,IAAA;AAAA,IACZ,KAAA;AAAA,IACA,eAAe,CAAC,GAAG,KAAK,aAAA,EAAe,GAAG,MAAM,aAAa;AAAA,GAC/D;AACF;AAEA,IAAM,WAAA,GAAuB;AAAA,EAC3B,IAAA,EAAM,OAAA;AAAA,EACN,WAAA,EAAa,yBAAA;AAAA,EACb,OAAA,EAAS,SAAA;AAAA,EACT,IAAA,EAAM,MAAA;AAAA,EACN,KAAA,EAAO;AAAA,IACL,YAAA,EAAc;AAAA,MACZ,QAAA,EAAU,SAAA;AAAA,MACV,MAAA,EAAQ;AAAA,KACV;AAAA,IACA,YAAA,EAAc;AAAA,MACZ,QAAA,EAAU,MAAA;AAAA,MACV,MAAA,EAAQ;AAAA,KACV;AAAA,IACA,kBAAA,EAAoB;AAAA,MAClB,QAAA,EAAU,SAAA;AAAA,MACV,MAAA,EAAQ,GAAA;AAAA,MACR,UAAA,EACE;AAAA,KACJ;AAAA,IACA,aAAA,EAAe;AAAA,MACb,QAAA,EAAU,SAAA;AAAA,MACV,MAAA,EAAQ,CAAA;AAAA,MACR,UAAA,EAAY;AAAA,KACd;AAAA,IACA,SAAA,EAAW;AAAA,MACT,QAAA,EAAU,MAAA;AAAA,MACV,MAAA,EAAQ;AAAA,KACV;AAAA,IACA,YAAA,EAAc;AAAA,MACZ,QAAA,EAAU,MAAA;AAAA,MACV,MAAA,EAAQ;AAAA,KACV;AAAA,IACA,oBAAA,EAAsB;AAAA,MACpB,QAAA,EAAU,MAAA;AAAA,MACV,MAAA,EAAQ;AAAA,KACV;AAAA,IACA,gBAAA,EAAkB;AAAA,MAChB,QAAA,EAAU,MAAA;AAAA,MACV,MAAA,EAAQ;AAAA,KACV;AAAA,IACA,gBAAA,EAAkB;AAAA,MAChB,QAAA,EAAU,MAAA;AAAA,MACV,MAAA,EAAQ;AAAA,KACV;AAAA,IACA,mBAAA,EAAqB;AAAA,MACnB,QAAA,EAAU,SAAA;AAAA,MACV,MAAA,EAAQ;AAAA,KACV;AAAA,IACA,cAAA,EAAgB;AAAA,MACd,QAAA,EAAU,OAAA;AAAA,MACV,MAAA,EAAQ;AAAA,KACV;AAAA,IACA,sBAAA,EAAwB;AAAA,MACtB,QAAA,EAAU,SAAA;AAAA,MACV,MAAA,EAAQ;AAAA;AACV,GACF;AAAA,EACA,aAAA,EAAe;AAAA,IACb,mFAAA;AAAA,IACA,uEAAA;AAAA,IACA,0EAAA;AAAA,IACA,0DAAA;AAAA,IACA;AAAA;AAEJ,CAAA;AAEA,IAAM,eAAA,GAAkC;AAAA,EACtC,IAAA,EAAM,QAAA;AAAA,EACN,WAAA,EAAa,kBAAA;AAAA,EACb,OAAA,EAAS,SAAA;AAAA,EACT,IAAA,EAAM,OAAA;AAAA,EACN,KAAA,EAAO;AAAA,IACL,kBAAA,EAAoB;AAAA,MAClB,QAAA,EAAU,SAAA;AAAA,MACV,MAAA,EAAQ,GAAA;AAAA,MACR,UAAA,EACE,qFAAA;AAAA,MACF,SAAA,EAAW;AAAA,KACb;AAAA,IACA,aAAA,EAAe;AAAA,MACb,QAAA,EAAU,SAAA;AAAA,MACV,MAAA,EAAQ,GAAA;AAAA,MACR,UAAA,EAAY,sFAAA;AAAA,MACZ,SAAA,EACE;AAAA,KACJ;AAAA,IACA,sBAAA,EAAwB;AAAA,MACtB,QAAA,EAAU,SAAA;AAAA,MACV,MAAA,EAAQ,GAAA;AAAA,MACR,UAAA,EAAY,oEAAA;AAAA,MACZ,SAAA,EACE;AAAA,KACJ;AAAA,IACA,oBAAA,EAAsB;AAAA,MACpB,QAAA,EAAU,SAAA;AAAA,MACV,MAAA,EAAQ,GAAA;AAAA,MACR,UAAA,EAAY;AAAA;AACd,GACF;AAAA,EACA,aAAA,EAAe;AAAA,IACb,2FAAA;AAAA,IACA,sFAAA;AAAA,IACA,yEAAA;AAAA,IACA,0DAAA;AAAA,IACA;AAAA;AAEJ,CAAA;AAEA,IAAM,YAAA,GAA+B;AAAA,EACnC,IAAA,EAAM,KAAA;AAAA,EACN,WAAA,EAAa,YAAA;AAAA,EACb,OAAA,EAAS,SAAA;AAAA,EACT,IAAA,EAAM,OAAA;AAAA,EACN,KAAA,EAAO;AAAA,IACL,kBAAA,EAAoB;AAAA,MAClB,QAAA,EAAU,SAAA;AAAA,MACV,MAAA,EAAQ,GAAA;AAAA,MACR,UAAA,EACE,8GAAA;AAAA,MACF,SAAA,EAAW;AAAA,KACb;AAAA,IACA,aAAA,EAAe;AAAA,MACb,QAAA,EAAU,SAAA;AAAA,MACV,MAAA,EAAQ,GAAA;AAAA,MACR,UAAA,EAAY;AAAA,KACd;AAAA,IACA,sBAAA,EAAwB;AAAA,MACtB,QAAA,EAAU,SAAA;AAAA,MACV,MAAA,EAAQ,GAAA;AAAA,MACR,UAAA,EAAY;AAAA,KACd;AAAA,IACA,SAAA,EAAW;AAAA,MACT,QAAA,EAAU,MAAA;AAAA,MACV,MAAA,EAAQ,CAAA;AAAA,MACR,UAAA,EAAY;AAAA;AACd,GACF;AAAA,EACA,aAAA,EAAe;AAAA,IACb,kEAAA;AAAA,IACA,gFAAA;AAAA,IACA,4EAAA;AAAA,IACA,2DAAA;AAAA,IACA;AAAA;AAEJ,CAAA;AAEO,IAAM,eAAA,GAAkB;AAAA,EAC7B,KAAA,EAAO,WAAA;AAAA,EACP,MAAA,EAAQ,aAAA,CAAc,WAAA,EAAa,eAAe,CAAA;AAAA,EAClD,GAAA,EAAK,aAAA,CAAc,WAAA,EAAa,YAAY;AAC9C;AAIO,SAAS,kBAAkB,IAAA,EAAmC;AACnE,EAAA,OAAO,eAAA,CAAgB,eAAA,CAAgB,IAAI,CAAC,CAAA;AAC9C;;;ACjMA,IAAM,SAAA,GAAY,EAAA;AAEX,IAAM,aAAA,GAAsB;AAAA,EACjC,EAAA,EAAI,YAAA;AAAA,EACJ,IAAA,EAAM,gBAAA;AAAA,EACN,WAAA,EAAa,wEAAA;AAAA,EACb,QAAA,EAAU,aAAA;AAAA,EACV,eAAA,EAAiB,SAAA;AAAA,EACjB,IAAA,EAAM,eAAA;AAAA,EACN,KAAA,EAAO,CAAC,EAAE,GAAA,EAAI,KAAM;AAClB,IAAA,MAAM,EAAA,GAAK,IAAI,QAAA,CAAS,SAAA;AACxB,IAAA,MAAM,SAAS,EAAA,IAAM,SAAA;AACrB,IAAA,MAAM,QAAQ,MAAA,GAAS,GAAA,GAAM,KAAK,KAAA,CAAO,EAAA,GAAK,YAAa,GAAG,CAAA;AAC9D,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ,YAAA;AAAA,MACR,MAAA;AAAA,MACA,KAAA;AAAA,MACA,SAAS,MAAA,GACL,CAAA,eAAA,EAAkB,EAAE,CAAA,sBAAA,CAAA,GACpB,yBAAyB,EAAE,CAAA,oDAAA,CAAA;AAAA,MAC/B,UAAA,EAAY,SACR,MAAA,GACA,2EAAA;AAAA,MACJ,QAAA,EAAU,SAAA;AAAA,MACV,QAAA,EAAU,aAAA;AAAA,MACV,MAAA,EAAQ;AAAA,KACV;AAAA,EACF;AACF,CAAA;;;AC5BA,IAAM,QAAA,GAAW,IAAA;AACjB,IAAM,QAAA,GAAW,GAAA;AAEV,IAAM,aAAA,GAAsB;AAAA,EACjC,EAAA,EAAI,YAAA;AAAA,EACJ,IAAA,EAAM,gBAAA;AAAA,EACN,WAAA,EAAa,sFAAA;AAAA,EACb,QAAA,EAAU,WAAA;AAAA,EACV,eAAA,EAAiB,MAAA;AAAA,EACjB,IAAA,EAAM,eAAA;AAAA,EACN,KAAA,EAAO,CAAC,EAAE,GAAA,EAAI,KAAM;AAClB,IAAA,MAAM,EAAA,GAAK,IAAI,QAAA,CAAS,SAAA;AACxB,IAAA,IAAI,KAAA,GAAQ,GAAA;AACZ,IAAA,IAAI,KAAK,QAAA,EAAU;AACjB,MAAA,MAAM,OAAO,IAAA,CAAK,GAAA,CAAI,EAAA,GAAK,QAAA,EAAU,WAAW,QAAQ,CAAA;AACxD,MAAA,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,GAAA,GAAM,IAAA,CAAK,MAAO,IAAA,IAAQ,QAAA,GAAW,QAAA,CAAA,GAAa,GAAG,CAAC,CAAA;AAAA,IAC5E;AACA,IAAA,MAAM,SAAS,EAAA,IAAM,QAAA;AACrB,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ,YAAA;AAAA,MACR,MAAA;AAAA,MACA,KAAA;AAAA,MACA,SAAS,MAAA,GACL,CAAA,eAAA,EAAkB,EAAE,CAAA,sCAAA,CAAA,GACpB,mBAAmB,EAAE,CAAA,wEAAA,CAAA;AAAA,MACzB,UAAA,EAAY,SACR,MAAA,GACA,8FAAA;AAAA,MACJ,QAAA,EAAU,MAAA;AAAA,MACV,QAAA,EAAU,WAAA;AAAA,MACV,MAAA,EAAQ;AAAA,KACV;AAAA,EACF;AACF,CAAA;;;ACjCO,IAAM,kBAAA,GAA2B;AAAA,EACtC,EAAA,EAAI,kBAAA;AAAA,EACJ,IAAA,EAAM,yBAAA;AAAA,EACN,WAAA,EAAa,oEAAA;AAAA,EACb,QAAA,EAAU,aAAA;AAAA,EACV,eAAA,EAAiB,SAAA;AAAA,EACjB,IAAA,EAAM,eAAA;AAAA,EACN,KAAA,EAAO,CAAC,EAAE,GAAA,EAAI,KAAM;AAClB,IAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,GAAA,CAAI,UAAA,CAAW,YAAY,CAAA;AAClD,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ,kBAAA;AAAA,MACR,MAAA;AAAA,MACA,KAAA,EAAO,SAAS,GAAA,GAAM,CAAA;AAAA,MACtB,OAAA,EAAS,SACL,gCAAA,GACA,oEAAA;AAAA,MACJ,UAAA,EAAY,SACR,MAAA,GACA,yFAAA;AAAA,MACJ,QAAA,EAAU,SAAA;AAAA,MACV,QAAA,EAAU,aAAA;AAAA,MACV,MAAA,EAAQ;AAAA,KACV;AAAA,EACF;AACF,CAAA;;;ACxBO,IAAM,cAAA,GAAuB;AAAA,EAClC,EAAA,EAAI,aAAA;AAAA,EACJ,IAAA,EAAM,mBAAA;AAAA,EACN,WAAA,EAAa,wEAAA;AAAA,EACb,QAAA,EAAU,eAAA;AAAA,EACV,eAAA,EAAiB,SAAA;AAAA,EACjB,IAAA,EAAM,eAAA;AAAA,EACN,KAAA,EAAO,CAAC,EAAE,GAAA,EAAI,KAAM;AAClB,IAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,UAAA,CAAW,QAAA,EAAU,MAAA,IAAU,CAAA;AACjD,IAAA,MAAM,SAAS,KAAA,GAAQ,CAAA;AACvB,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ,aAAA;AAAA,MACR,MAAA;AAAA,MACA,KAAA,EAAO,SAAS,GAAA,GAAM,CAAA;AAAA,MACtB,OAAA,EAAS,SACL,CAAA,gBAAA,EAAmB,KAAK,WAAW,KAAA,KAAU,CAAA,GAAI,EAAA,GAAK,GAAG,CAAA,CAAA,CAAA,GACzD,yEAAA;AAAA,MACJ,UAAA,EAAY,SACR,MAAA,GACA,2EAAA;AAAA,MACJ,QAAA,EAAU,SAAA;AAAA,MACV,QAAA,EAAU,eAAA;AAAA,MACV,MAAA,EAAQ;AAAA,KACV;AAAA,EACF;AACF,CAAA;;;ACzBO,IAAM,UAAA,GAAmB;AAAA,EAC9B,EAAA,EAAI,SAAA;AAAA,EACJ,IAAA,EAAM,0BAAA;AAAA,EACN,WAAA,EAAa,kFAAA;AAAA,EACb,QAAA,EAAU,eAAA;AAAA,EACV,eAAA,EAAiB,MAAA;AAAA,EACjB,IAAA,EAAM,eAAA;AAAA,EACN,KAAA,EAAO,CAAC,EAAE,GAAA,EAAI,KAAM;AAClB,IAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,GAAA,CAAI,UAAA,CAAW,IAAI,CAAA;AAC1C,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ,SAAA;AAAA,MACR,MAAA;AAAA,MACA,KAAA,EAAO,SAAS,GAAA,GAAM,CAAA;AAAA,MACtB,OAAA,EAAS,SACL,gCAAA,GACA,8EAAA;AAAA,MACJ,UAAA,EAAY,SACR,MAAA,GACA,0EAAA;AAAA,MACJ,QAAA,EAAU,MAAA;AAAA,MACV,QAAA,EAAU,eAAA;AAAA,MACV,MAAA,EAAQ;AAAA,KACV;AAAA,EACF;AACF,CAAA;;;ACxBO,IAAM,aAAA,GAAsB;AAAA,EACjC,EAAA,EAAI,YAAA;AAAA,EACJ,IAAA,EAAM,6BAAA;AAAA,EACN,WAAA,EAAa,8EAAA;AAAA,EACb,QAAA,EAAU,aAAA;AAAA,EACV,eAAA,EAAiB,MAAA;AAAA,EACjB,IAAA,EAAM,eAAA;AAAA,EACN,KAAA,EAAO,CAAC,EAAE,GAAA,EAAI,KAAM;AAClB,IAAA,MAAM,MAAA,GAAS,QAAQ,GAAA,CAAI,UAAA,CAAW,OAAO,CAAA,IAAK,GAAA,CAAI,SAAS,SAAA,IAAa,EAAA;AAC5E,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ,YAAA;AAAA,MACR,MAAA;AAAA,MACA,KAAA,EAAO,SAAS,GAAA,GAAM,EAAA;AAAA,MACtB,OAAA,EAAS,SACL,4DAAA,GACA,gFAAA;AAAA,MACJ,UAAA,EAAY,SACR,MAAA,GACA,2FAAA;AAAA,MACJ,QAAA,EAAU,MAAA;AAAA,MACV,QAAA,EAAU,aAAA;AAAA,MACV,MAAA,EAAQ;AAAA,KACV;AAAA,EACF;AACF,CAAA;;;ACxBA,IAAM,gBAAA,GAAmB,0EAAA;AAElB,IAAM,qBAAA,GAA8B;AAAA,EACzC,EAAA,EAAI,oBAAA;AAAA,EACJ,IAAA,EAAM,iCAAA;AAAA,EACN,WAAA,EACE,CAAA,oFAAA,CAAA;AAAA,EACF,QAAA,EAAU,SAAA;AAAA,EACV,eAAA,EAAiB,MAAA;AAAA,EACjB,IAAA,EAAM,eAAA;AAAA,EACN,KAAA,EAAO,CAAC,EAAE,GAAA,EAAI,KAAM;AAClB,IAAA,MAAM,UAAU,GAAA,CAAI,GAAA,CAAI,KAAA,CAAM,gBAAgB,KAAK,EAAC;AACpD,IAAA,MAAM,EAAA,GAAK,GAAA,CAAI,QAAA,CAAS,SAAA,IAAa,CAAA;AACrC,IAAA,MAAM,KAAA,GAAQ,QAAQ,MAAA,GAAS,EAAA;AAC/B,IAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,MAAA,GAAS,CAAA,IAAK,KAAA,GAAQ,IAAA;AAC7C,IAAA,MAAM,KAAA,GAAQ,SAAS,GAAA,GAAM,IAAA,CAAK,IAAI,EAAA,EAAI,GAAA,GAAM,OAAA,CAAQ,MAAA,GAAS,EAAE,CAAA;AACnE,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ,oBAAA;AAAA,MACR,MAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA,EAAS,SACL,CAAA,0CAAA,EAA6C,OAAA,CAAQ,MAAM,CAAA,QAAA,CAAA,GAC3D,CAAA,oCAAA,EAAuC,QAAQ,MAAM,CAAA,2DAAA,CAAA;AAAA,MACzD,UAAA,EAAY,SACR,MAAA,GACA,CAAA,oFAAA,CAAA;AAAA,MACJ,QAAA,EAAU,MAAA;AAAA,MACV,QAAA,EAAU,SAAA;AAAA,MACV,MAAA,EAAQ;AAAA,KACV;AAAA,EACF;AACF,CAAA;;;AC/BO,IAAM,iBAAA,GAA0B;AAAA,EACrC,EAAA,EAAI,gBAAA;AAAA,EACJ,IAAA,EAAM,qBAAA;AAAA,EACN,WAAA,EAAa,uEAAA;AAAA,EACb,QAAA,EAAU,aAAA;AAAA,EACV,eAAA,EAAiB,MAAA;AAAA,EACjB,IAAA,EAAM,eAAA;AAAA,EACN,KAAA,EAAO,CAAC,EAAE,GAAA,EAAI,KAAM;AAClB,IAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,UAAA,CAAW,WAAA,EAAa,MAAA,IAAU,CAAA;AACpD,IAAA,MAAM,SAAS,KAAA,GAAQ,CAAA;AACvB,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ,gBAAA;AAAA,MACR,MAAA;AAAA,MACA,KAAA,EAAO,SAAS,GAAA,GAAM,CAAA;AAAA,MACtB,OAAA,EAAS,SACL,CAAA,eAAA,EAAkB,KAAK,cAAc,KAAA,KAAU,CAAA,GAAI,EAAA,GAAK,GAAG,CAAA,CAAA,CAAA,GAC3D,kFAAA;AAAA,MACJ,UAAA,EAAY,SACR,MAAA,GACA,0FAAA;AAAA,MACJ,QAAA,EAAU,MAAA;AAAA,MACV,QAAA,EAAU,aAAA;AAAA,MACV,MAAA,EAAQ;AAAA,KACV;AAAA,EACF;AACF,CAAA;;;ACzBA,IAAM,iBAAA,GAAoB,gBAAA;AAEnB,IAAM,gBAAA,GAAyB;AAAA,EACpC,EAAA,EAAI,gBAAA;AAAA,EACJ,IAAA,EAAM,gBAAA;AAAA,EACN,WAAA,EAAa,iFAAA;AAAA,EACb,QAAA,EAAU,SAAA;AAAA,EACV,eAAA,EAAiB,MAAA;AAAA,EACjB,IAAA,EAAM,eAAA;AAAA,EACN,KAAA,EAAO,CAAC,EAAE,GAAA,EAAI,KAAM;AAClB,IAAA,MAAM,OAAO,GAAA,CAAI,GAAA,CAAI,KAAA,CAAM,iBAAiB,KAAK,EAAC;AAClD,IAAA,MAAM,EAAA,GAAK,GAAA,CAAI,QAAA,CAAS,SAAA,IAAa,CAAA;AACrC,IAAA,MAAM,KAAA,GAAQ,KAAK,MAAA,GAAS,EAAA;AAC5B,IAAA,MAAM,MAAA,GAAS,KAAA,GAAQ,IAAA,IAAQ,IAAA,CAAK,MAAA,GAAS,CAAA;AAC7C,IAAA,MAAM,KAAA,GAAQ,MAAA,GAAS,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,GAAA,GAAM,IAAA,CAAK,KAAA,CAAM,KAAA,GAAQ,GAAI,CAAC,CAAA;AACxE,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ,gBAAA;AAAA,MACR,MAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA,EAAS,MAAA,GACL,6CAAA,GACA,CAAA,oBAAA,EAAuB,KAAK,MAAM,CAAA,4CAAA,CAAA;AAAA,MACtC,UAAA,EAAY,SACR,MAAA,GACA,4EAAA;AAAA,MACJ,QAAA,EAAU,MAAA;AAAA,MACV,QAAA,EAAU,SAAA;AAAA,MACV,MAAA,EAAQ;AAAA,KACV;AAAA,EACF;AACF,CAAA;;;AC9BA,IAAM,WAAA,GAAc;AAAA,EAClB,MAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA;AAEA,SAAS,iBAAA,GAA4B;AACnC,EAAA,MAAM,OAAA,GAAU,YAAY,GAAA,CAAI,CAAC,MAAM,CAAA,CAAE,OAAA,CAAQ,qBAAA,EAAuB,MAAM,CAAC,CAAA;AAC/E,EAAA,OAAO,IAAI,OAAO,CAAA,MAAA,EAAS,OAAA,CAAQ,KAAK,GAAG,CAAC,QAAQ,IAAI,CAAA;AAC1D;AAEA,IAAM,gBAAgB,iBAAA,EAAkB;AAEjC,IAAM,oBAAA,GAA6B;AAAA,EACxC,EAAA,EAAI,mBAAA;AAAA,EACJ,IAAA,EAAM,oBAAA;AAAA,EACN,WAAA,EACE,8FAAA;AAAA,EACF,QAAA,EAAU,SAAA;AAAA,EACV,eAAA,EAAiB,SAAA;AAAA,EACjB,IAAA,EAAM,eAAA;AAAA,EACN,KAAA,EAAO,CAAC,EAAE,GAAA,EAAI,KAAM;AAClB,IAAA,MAAM,UAAU,GAAA,CAAI,GAAA,CAAI,KAAA,CAAM,aAAa,KAAK,EAAC;AACjD,IAAA,MAAM,MAAA,GAAS,KAAA,CAAM,IAAA,CAAK,IAAI,GAAA,CAAI,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,WAAA,EAAa,CAAC,CAAC,CAAA;AACtE,IAAA,MAAM,MAAA,GAAS,QAAQ,MAAA,KAAW,CAAA;AAClC,IAAA,MAAM,KAAA,GAAQ,SAAS,GAAA,GAAM,IAAA,CAAK,IAAI,EAAA,EAAI,GAAA,GAAM,OAAA,CAAQ,MAAA,GAAS,EAAE,CAAA;AACnE,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ,mBAAA;AAAA,MACR,MAAA;AAAA,MACA,KAAA;AAAA,MACA,SAAS,MAAA,GACL,+BAAA,GACA,0BAA0B,MAAA,CAAO,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA,CAAA;AAAA,MAC/C,UAAA,EAAY,SACR,MAAA,GACA,gHAAA;AAAA,MACJ,QAAA,EAAU,SAAA;AAAA,MACV,QAAA,EAAU,SAAA;AAAA,MACV,MAAA,EAAQ;AAAA,KACV;AAAA,EACF;AACF,CAAA;;;ACjDO,IAAM,eAAA,GAAwB;AAAA,EACnC,EAAA,EAAI,cAAA;AAAA,EACJ,IAAA,EAAM,2BAAA;AAAA,EACN,WAAA,EAAa,mFAAA;AAAA,EACb,QAAA,EAAU,SAAA;AAAA,EACV,eAAA,EAAiB,OAAA;AAAA,EACjB,IAAA,EAAM,eAAA;AAAA,EACN,KAAA,EAAO,CAAC,EAAE,GAAA,EAAI,KAAM;AAClB,IAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,GAAA,CAAI,UAAA,CAAW,IAAI,CAAA;AAC1C,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ,cAAA;AAAA,MACR,MAAA;AAAA,MACA,KAAA,EAAO,SAAS,GAAA,GAAM,CAAA;AAAA,MACtB,OAAA,EAAS,SACL,0BAAA,GACA,2EAAA;AAAA,MACJ,UAAA,EAAY,SACR,MAAA,GACA,8EAAA;AAAA,MACJ,QAAA,EAAU,OAAA;AAAA,MACV,QAAA,EAAU,SAAA;AAAA,MACV,MAAA,EAAQ;AAAA,KACV;AAAA,EACF;AACF,CAAA;;;ACxBA,IAAM,qBAAA,GAAwB,GAAA;AAEvB,IAAM,sBAAA,GAA+B;AAAA,EAC1C,EAAA,EAAI,sBAAA;AAAA,EACJ,IAAA,EAAM,uBAAA;AAAA,EACN,WAAA,EACE,qGAAA;AAAA,EACF,QAAA,EAAU,WAAA;AAAA,EACV,eAAA,EAAiB,SAAA;AAAA,EACjB,IAAA,EAAM,eAAA;AAAA,EACN,KAAA,EAAO,CAAC,EAAE,GAAA,EAAI,KAAM;AAClB,IAAA,MAAM,EAAA,GAAK,IAAI,QAAA,CAAS,SAAA;AACxB,IAAA,MAAM,UAAA,GAAa,IAAI,QAAA,CAAS,mBAAA;AAChC,IAAA,MAAM,MAAA,GAAS,KAAK,qBAAA,IAAyB,UAAA;AAC7C,IAAA,MAAM,KAAA,GAAQ,SAAS,GAAA,GAAM,EAAA;AAC7B,IAAA,OAAO;AAAA,MACL,MAAA,EAAQ,sBAAA;AAAA,MACR,MAAA;AAAA,MACA,KAAA;AAAA,MACA,SAAS,MAAA,GACL,UAAA,GACE,oCAAA,GACA,2DAAA,GACF,gBAAgB,EAAE,CAAA,gFAAA,CAAA;AAAA,MACtB,UAAA,EAAY,SACR,MAAA,GACA,iGAAA;AAAA,MACJ,QAAA,EAAU,SAAA;AAAA,MACV,QAAA,EAAU,WAAA;AAAA,MACV,MAAA,EAAQ;AAAA,KACV;AAAA,EACF;AACF,CAAA;;;ACpBO,IAAM,kBAAA,GAA6B;AAAA,EACxC,aAAA;AAAA,EACA,aAAA;AAAA,EACA,kBAAA;AAAA,EACA,cAAA;AAAA,EACA,UAAA;AAAA,EACA,aAAA;AAAA,EACA,qBAAA;AAAA,EACA,iBAAA;AAAA,EACA,gBAAA;AAAA,EACA,oBAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF;;;ACxBO,IAAM,eAAN,MAAmB;AAAA,EACP,KAAA,uBAAY,GAAA,EAAkB;AAAA,EAE/C,WAAA,CAAY,YAAA,GAAuB,EAAC,EAAG;AACrC,IAAA,KAAA,MAAW,QAAQ,YAAA,EAAc;AAC/B,MAAA,IAAA,CAAK,SAAS,IAAI,CAAA;AAAA,IACpB;AAAA,EACF;AAAA,EAEA,SAAS,IAAA,EAAkB;AACzB,IAAA,IAAI,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,IAAA,CAAK,EAAE,CAAA,EAAG;AAC3B,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,cAAA,EAAiB,IAAA,CAAK,EAAE,CAAA,uBAAA,CAAyB,CAAA;AAAA,IACnE;AACA,IAAA,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,IAAA,CAAK,EAAA,EAAI,IAAI,CAAA;AAAA,EAC9B;AAAA,EAEA,IAAI,EAAA,EAA8B;AAChC,IAAA,OAAO,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,EAAE,CAAA;AAAA,EAC1B;AAAA,EAEA,IAAI,EAAA,EAAqB;AACvB,IAAA,OAAO,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,EAAE,CAAA;AAAA,EAC1B;AAAA,EAEA,GAAA,GAAc;AACZ,IAAA,OAAO,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,QAAQ,CAAA;AAAA,EACvC;AAAA,EAEA,OAAO,IAAA,EAAuC;AAC5C,IAAA,OAAO,IAAA,CAAK,KAAI,CAAE,MAAA,CAAO,CAAC,IAAA,KAAS,IAAA,CAAK,SAAS,IAAI,CAAA;AAAA,EACvD;AAAA,EAEA,MAAM,GAAA,EAAuB;AAC3B,IAAA,MAAM,MAAc,EAAC;AACrB,IAAA,KAAA,MAAW,MAAM,GAAA,EAAK;AACpB,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,GAAA,CAAI,EAAE,CAAA;AAC9B,MAAA,IAAI,IAAA,EAAM,GAAA,CAAI,IAAA,CAAK,IAAI,CAAA;AAAA,IACzB;AACA,IAAA,OAAO,GAAA;AAAA,EACT;AACF;AAEO,SAAS,qBAAA,GAAsC;AACpD,EAAA,OAAO,IAAI,aAAa,kBAAkB,CAAA;AAC5C;;;ACXA,SAAS,aAAA,CAAc,MAAY,OAAA,EAA2B;AAC5D,EAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,KAAA,CAAM,IAAA,CAAK,EAAE,CAAA;AACtC,EAAA,IAAI,QAAA,EAAU,OAAA,KAAY,KAAA,EAAO,OAAO,KAAA;AACxC,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,aAAA,CAAc,QAAoB,OAAA,EAA8B;AACvE,EAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,KAAA,CAAM,MAAA,CAAO,MAAM,CAAA;AAC5C,EAAA,IAAI,CAAC,UAAU,OAAO,MAAA;AACtB,EAAA,OAAO;AAAA,IACL,GAAG,MAAA;AAAA,IACH,QAAA,EAAU,QAAA,CAAS,QAAA,IAAY,MAAA,CAAO,QAAA;AAAA,IACtC,MAAA,EAAQ,QAAA,CAAS,MAAA,IAAU,MAAA,CAAO,MAAA;AAAA,IAClC,UAAA,EAAY,QAAA,CAAS,UAAA,IAAc,MAAA,CAAO,UAAA;AAAA,IAC1C,SAAA,EAAW,QAAA,CAAS,SAAA,IAAa,MAAA,CAAO;AAAA,GAC1C;AACF;AAEA,eAAsB,SAAS,OAAA,EAAiD;AAC9E,EAAA,MAAM,EAAE,KAAA,EAAO,OAAA,EAAS,GAAA,EAAK,IAAA,EAAM,YAAW,GAAI,OAAA;AAClD,EAAA,MAAM,UAAwB,EAAC;AAC/B,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,IAAI,QAAQ,CAAC,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,EAAE,CAAA,EAAG;AACrC,IAAA,IAAI,CAAC,aAAA,CAAc,IAAA,EAAM,OAAO,CAAA,EAAG;AACnC,IAAA,IAAI,IAAA,CAAK,IAAA,KAAS,KAAA,IAAS,CAAC,UAAA,EAAY;AACxC,IAAA,MAAM,OAAO,MAAM,IAAA,CAAK,MAAM,EAAE,GAAA,EAAK,SAAS,CAAA;AAC9C,IAAA,OAAA,CAAQ,IAAA,CAAK,aAAA,CAAc,IAAA,EAAM,OAAO,CAAC,CAAA;AAAA,EAC3C;AACA,EAAA,OAAO,OAAA;AACT;AAEA,SAAS,gBAAgB,OAAA,EAAwD;AAC/E,EAAA,MAAM,OAAA,uBAAc,GAAA,EAAgC;AACpD,EAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,IAAA,MAAM,WAAW,OAAA,CAAQ,GAAA,CAAI,MAAA,CAAO,QAAQ,KAAK,EAAC;AAClD,IAAA,QAAA,CAAS,KAAK,MAAM,CAAA;AACpB,IAAA,OAAA,CAAQ,GAAA,CAAI,MAAA,CAAO,QAAA,EAAU,QAAQ,CAAA;AAAA,EACvC;AACA,EAAA,OAAO,OAAA;AACT;AAEA,SAAS,eAAA,CAAgB,QAAkB,OAAA,EAA2B;AACpE,EAAA,MAAM,WAAA,GAAc,QAAQ,MAAA,CAAO,CAAC,GAAG,CAAA,KAAM,CAAA,GAAI,GAAG,CAAC,CAAA;AACrD,EAAA,IAAI,WAAA,KAAgB,GAAG,OAAO,CAAA;AAC9B,EAAA,MAAM,GAAA,GAAM,MAAA,CAAO,MAAA,CAAO,CAAC,GAAA,EAAK,CAAA,EAAG,CAAA,KAAM,GAAA,GAAM,CAAA,IAAK,OAAA,CAAQ,CAAC,CAAA,IAAK,IAAI,CAAC,CAAA;AACvE,EAAA,OAAO,GAAA,GAAM,WAAA;AACf;AAEA,SAAS,YAAA,CAAa,SAAiB,OAAA,EAA+B;AACpE,EAAA,MAAM,SAAS,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,KAAM,CAAC,EAAE,MAAM,CAAA;AAC9C,EAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG,OAAO,SAAS,IAAA,CAAK,KAAA,CAAM,OAAO,CAAC,CAAA,0BAAA,CAAA;AAC5D,EAAA,MAAM,MAAA,GAAS,OAAO,MAAA,CAAO,CAAC,MAAM,CAAA,CAAE,QAAA,KAAa,OAAO,CAAA,CAAE,MAAA;AAC5D,EAAA,MAAM,QAAA,GAAW,OAAO,MAAA,CAAO,CAAC,MAAM,CAAA,CAAE,QAAA,KAAa,SAAS,CAAA,CAAE,MAAA;AAChE,EAAA,MAAM,SAAmB,EAAC;AAC1B,EAAA,IAAI,MAAA,EAAQ,MAAA,CAAO,IAAA,CAAK,CAAA,EAAG,MAAM,SAAS,MAAA,KAAW,CAAA,GAAI,EAAA,GAAK,GAAG,CAAA,CAAE,CAAA;AACnE,EAAA,IAAI,QAAA,EAAU,MAAA,CAAO,IAAA,CAAK,CAAA,EAAG,QAAQ,WAAW,QAAA,KAAa,CAAA,GAAI,EAAA,GAAK,GAAG,CAAA,CAAE,CAAA;AAC3E,EAAA,MAAM,MAAA,GAAS,MAAA,CAAO,MAAA,GAAS,MAAA,GAAS,QAAA;AACxC,EAAA,IAAI,SAAS,CAAA,EAAG,MAAA,CAAO,IAAA,CAAK,CAAA,EAAG,MAAM,CAAA,KAAA,CAAO,CAAA;AAC5C,EAAA,OAAO,CAAA,MAAA,EAAS,KAAK,KAAA,CAAM,OAAO,CAAC,CAAA,YAAA,EAAU,MAAA,CAAO,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA,CAAA;AAChE;AAEA,SAAS,iBAAiB,OAAA,EAAqC;AAC7D,EAAA,MAAM,YAAA,GAAuD;AAAA,IAC3D,KAAA,EAAO,CAAA;AAAA,IACP,OAAA,EAAS,CAAA;AAAA,IACT,IAAA,EAAM;AAAA,GACR;AACA,EAAA,OAAO,OAAA,CACJ,MAAA,CAAO,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,MAAA,IAAU,CAAA,CAAE,UAAU,CAAA,CACvC,GAAA,CAAgB,CAAC,CAAA,MAAO;AAAA,IACvB,QAAQ,CAAA,CAAE,MAAA;AAAA,IACV,UAAU,CAAA,CAAE,QAAA;AAAA,IACZ,SAAS,CAAA,CAAE,OAAA;AAAA,IACX,YAAY,CAAA,CAAE,UAAA;AAAA,IACd,WAAW,CAAA,CAAE,SAAA;AAAA,IACb,MAAA,EAAA,CAAS,MAAM,CAAA,CAAE,KAAA,IAAS,EAAE,MAAA,GAAS,YAAA,CAAa,EAAE,QAAQ;AAAA,GAC9D,CAAE,EACD,IAAA,CAAK,CAAC,GAAG,CAAA,KAAM,CAAA,CAAE,MAAA,GAAS,CAAA,CAAE,MAAM,CAAA;AACvC;AAEO,SAAS,WAAA,CAAY,SAAuB,OAAA,EAA+B;AAChF,EAAA,MAAM,OAAA,GAAU,gBAAgB,OAAO,CAAA;AACvC,EAAA,MAAM,aAA8B,EAAC;AACrC,EAAA,KAAA,MAAW,CAAC,QAAA,EAAU,EAAE,CAAA,IAAK,OAAA,EAAS;AACpC,IAAA,MAAM,KAAA,GAAQ,eAAA;AAAA,MACZ,EAAA,CAAG,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,KAAK,CAAA;AAAA,MACrB,EAAA,CAAG,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,MAAM;AAAA,KACxB;AACA,IAAA,UAAA,CAAW,KAAK,EAAE,QAAA,EAAU,KAAA,EAAO,KAAA,EAAO,IAAI,CAAA;AAAA,EAChD;AACA,EAAA,MAAM,OAAA,GAAU,eAAA;AAAA,IACd,UAAA,CAAW,GAAA,CAAI,CAACA,EAAAA,KAAMA,GAAE,KAAK,CAAA;AAAA,IAC7B,UAAA,CAAW,GAAA,CAAI,CAACA,EAAAA,KAAMA,GAAE,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,GAAI,CAAA,CAAE,MAAA,EAAQ,CAAC,CAAC;AAAA,GACjE;AACA,EAAA,OAAO;AAAA,IACL,OAAA;AAAA,IACA,UAAA;AAAA,IACA,OAAA,EAAS,YAAA,CAAa,OAAA,EAAS,OAAO,CAAA;AAAA,IACtC,WAAA,EAAa,iBAAiB,OAAO,CAAA;AAAA,IACrC,OAAA;AAAA,IACA,aAAa,OAAA,CAAQ;AAAA,GACvB;AACF;;;ACrIA,IAAM,MAAA,GAAS;AAAA,EACb,KAAA,EAAO,SAAA;AAAA,EACP,IAAA,EAAM,SAAA;AAAA,EACN,GAAA,EAAK,SAAA;AAAA,EACL,GAAA,EAAK,UAAA;AAAA,EACL,KAAA,EAAO,UAAA;AAAA,EACP,MAAA,EAAQ,UAAA;AAAA,EACR,IAAA,EAAM,UAAA;AAAA,EACN,OAAA,EAAS,UAAA;AAAA,EACT,IAAA,EAAM,UAAA;AAAA,EACN,IAAA,EAAM;AACR,CAAA;AAEA,SAAS,CAAA,CAAE,KAAA,EAA4B,IAAA,EAAc,OAAA,EAA0B;AAC7E,EAAA,IAAI,CAAC,SAAS,OAAO,IAAA;AACrB,EAAA,OAAO,CAAA,EAAG,OAAO,KAAK,CAAC,GAAG,IAAI,CAAA,EAAG,OAAO,KAAK,CAAA,CAAA;AAC/C;AAEA,SAAS,cAAc,GAAA,EAAkD;AACvE,EAAA,IAAI,GAAA,KAAQ,SAAS,OAAO,KAAA;AAC5B,EAAA,IAAI,GAAA,KAAQ,WAAW,OAAO,QAAA;AAC9B,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,cAAc,GAAA,EAAqC;AAC1D,EAAA,IAAI,GAAA,KAAQ,SAAS,OAAO,OAAA;AAC5B,EAAA,IAAI,GAAA,KAAQ,WAAW,OAAO,OAAA;AAC9B,EAAA,OAAO,OAAA;AACT;AAEA,SAAS,WAAW,KAAA,EAAoC;AACtD,EAAA,IAAI,KAAA,IAAS,IAAI,OAAO,OAAA;AACxB,EAAA,IAAI,KAAA,IAAS,IAAI,OAAO,QAAA;AACxB,EAAA,OAAO,KAAA;AACT;AAMO,SAAS,UAAA,CAAW,MAAA,EAAqB,OAAA,GAA+B,EAAC,EAAW;AACzF,EAAA,MAAM,KAAA,GAAQ,QAAQ,KAAA,IAAS,IAAA;AAC/B,EAAA,MAAM,MAAgB,EAAC;AACvB,EAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,OAAO,CAAA;AAChD,EAAA,MAAM,GAAA,GAAM,QAAA,CAAS,cAAA,EAAgB,EAAE,CAAA;AAEvC,EAAA,GAAA,CAAI,IAAA,CAAK,EAAE,MAAA,EAAQ,CAAA,4BAAA,EAA0B,OAAO,WAAW,CAAA,CAAA,EAAI,KAAK,CAAC,CAAA;AACzE,EAAA,GAAA,CAAI,KAAK,EAAE,CAAA;AACX,EAAA,GAAA,CAAI,IAAA;AAAA,IACF,GAAG,CAAA,CAAE,MAAA,EAAQ,SAAA,EAAW,KAAK,CAAC,CAAA,EAAA,EAAK,CAAA,CAAE,UAAA,CAAW,cAAc,GAAG,CAAA,EAAG,cAAc,QAAQ,KAAK,CAAC,KAAK,GAAG,CAAA;AAAA,GAC1G;AACA,EAAA,GAAA,CAAI,KAAK,CAAA,CAAE,KAAA,EAAO,MAAA,CAAO,OAAA,EAAS,KAAK,CAAC,CAAA;AACxC,EAAA,GAAA,CAAI,KAAK,EAAE,CAAA;AAEX,EAAA,GAAA,CAAI,IAAA,CAAK,CAAA,CAAE,MAAA,EAAQ,YAAA,EAAc,KAAK,CAAC,CAAA;AACvC,EAAA,KAAA,MAAW,QAAA,IAAY,OAAO,UAAA,EAAY;AACxC,IAAA,MAAM,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,QAAA,CAAS,KAAK,CAAA;AACnC,IAAA,GAAA,CAAI,IAAA;AAAA,MACF,CAAA,EAAA,EAAK,QAAA,CAAS,QAAA,CAAS,MAAA,CAAO,EAAE,CAAC,CAAA,CAAA,EAAI,CAAA,CAAE,UAAA,CAAW,CAAC,CAAA,EAAG,CAAA,EAAG,OAAO,CAAC,CAAA,CAAE,QAAA,CAAS,CAAC,CAAC,CAAA,IAAA,CAAA,EAAQ,KAAK,CAAC,CAAA,CAAA,EAAI,CAAA,CAAE,KAAA,EAAO,CAAA,CAAA,EAAI,QAAA,CAAS,KAAA,CAAM,MAAM,CAAA,OAAA,CAAA,EAAW,KAAK,CAAC,CAAA;AAAA,KACrJ;AAAA,EACF;AACA,EAAA,GAAA,CAAI,KAAK,EAAE,CAAA;AAEX,EAAA,MAAM,MAAA,GAAS,OAAO,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,KAAM,CAAC,EAAE,MAAM,CAAA;AACrD,EAAA,IAAI,MAAA,CAAO,SAAS,CAAA,EAAG;AACrB,IAAA,GAAA,CAAI,IAAA,CAAK,CAAA,CAAE,MAAA,EAAQ,UAAA,EAAY,KAAK,CAAC,CAAA;AACrC,IAAA,KAAA,MAAW,UAAU,MAAA,EAAQ;AAC3B,MAAA,MAAM,KAAA,GAAQ,CAAA,CAAE,aAAA,CAAc,MAAA,CAAO,QAAQ,GAAG,aAAA,CAAc,MAAA,CAAO,QAAQ,CAAA,EAAG,KAAK,CAAA;AACrF,MAAA,GAAA,CAAI,IAAA,CAAK,CAAA,EAAA,EAAK,KAAK,CAAA,EAAA,EAAK,CAAA,CAAE,MAAA,EAAQ,MAAA,CAAO,MAAA,EAAQ,KAAK,CAAC,CAAA,EAAA,EAAK,MAAA,CAAO,OAAO,CAAA,CAAE,CAAA;AAC5E,MAAA,IAAI,OAAO,UAAA,EAAY;AACrB,QAAA,GAAA,CAAI,IAAA,CAAK,EAAE,KAAA,EAAO,CAAA,gBAAA,EAAc,OAAO,UAAU,CAAA,CAAA,EAAI,KAAK,CAAC,CAAA;AAAA,MAC7D;AACA,MAAA,IAAI,OAAO,SAAA,EAAW;AACpB,QAAA,GAAA,CAAI,IAAA,CAAK,EAAE,KAAA,EAAO,CAAA,cAAA,EAAiB,OAAO,SAAS,CAAA,CAAA,EAAI,KAAK,CAAC,CAAA;AAAA,MAC/D;AAAA,IACF;AACA,IAAA,GAAA,CAAI,KAAK,EAAE,CAAA;AAAA,EACb;AAEA,EAAA,MAAM,SAAS,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAC,CAAA,KAAM,EAAE,MAAM,CAAA;AACpD,EAAA,IAAI,MAAA,CAAO,SAAS,CAAA,EAAG;AACrB,IAAA,GAAA,CAAI,IAAA,CAAK,CAAA,CAAE,KAAA,EAAO,CAAA,EAAG,OAAO,MAAM,CAAA,KAAA,EAAQ,MAAA,CAAO,MAAA,KAAW,CAAA,GAAI,EAAA,GAAK,GAAG,CAAA,QAAA,CAAA,EAAY,KAAK,CAAC,CAAA;AAAA,EAC5F;AAEA,EAAA,OAAO,GAAA,CAAI,KAAK,IAAI,CAAA;AACtB;AAEA,SAAS,QAAA,CAAS,OAAe,KAAA,EAAuB;AACtD,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CAAO,KAAA,GAAQ,MAAO,KAAK,CAAA;AAC/C,EAAA,MAAM,QAAQ,KAAA,GAAQ,MAAA;AACtB,EAAA,OAAO,CAAA,CAAA,EAAI,SAAI,MAAA,CAAO,MAAM,CAAC,CAAA,EAAG,QAAA,CAAI,MAAA,CAAO,KAAK,CAAC,CAAA,CAAA,CAAA;AACnD;AAEO,SAAS,UAAA,CAAW,MAAA,EAAqB,MAAA,GAAS,IAAA,EAAc;AACrE,EAAA,OAAO,KAAK,SAAA,CAAU,MAAA,EAAQ,IAAA,EAAM,MAAA,GAAS,IAAI,CAAC,CAAA;AACpD;AAEO,SAAS,eAAe,MAAA,EAA6B;AAC1D,EAAA,MAAM,MAAgB,EAAC;AACvB,EAAA,GAAA,CAAI,IAAA,CAAK,CAAA,qBAAA,EAAmB,MAAA,CAAO,WAAW,CAAA,CAAE,CAAA;AAChD,EAAA,GAAA,CAAI,KAAK,EAAE,CAAA;AACX,EAAA,GAAA,CAAI,KAAK,CAAA,aAAA,EAAgB,IAAA,CAAK,MAAM,MAAA,CAAO,OAAO,CAAC,CAAA,IAAA,CAAM,CAAA;AACzD,EAAA,GAAA,CAAI,KAAK,EAAE,CAAA;AACX,EAAA,GAAA,CAAI,IAAA,CAAK,CAAA,EAAA,EAAK,MAAA,CAAO,OAAO,CAAA,CAAE,CAAA;AAC9B,EAAA,GAAA,CAAI,KAAK,EAAE,CAAA;AACX,EAAA,GAAA,CAAI,KAAK,eAAe,CAAA;AACxB,EAAA,GAAA,CAAI,KAAK,EAAE,CAAA;AACX,EAAA,GAAA,CAAI,KAAK,8BAA8B,CAAA;AACvC,EAAA,GAAA,CAAI,KAAK,qBAAqB,CAAA;AAC9B,EAAA,KAAA,MAAW,QAAA,IAAY,OAAO,UAAA,EAAY;AACxC,IAAA,GAAA,CAAI,IAAA;AAAA,MACF,CAAA,EAAA,EAAK,QAAA,CAAS,QAAQ,CAAA,GAAA,EAAM,IAAA,CAAK,KAAA,CAAM,QAAA,CAAS,KAAK,CAAC,CAAA,OAAA,EAAU,QAAA,CAAS,KAAA,CAAM,MAAM,CAAA,EAAA;AAAA,KACvF;AAAA,EACF;AACA,EAAA,GAAA,CAAI,KAAK,EAAE,CAAA;AAEX,EAAA,MAAM,MAAA,GAAS,OAAO,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,KAAM,CAAC,EAAE,MAAM,CAAA;AACrD,EAAA,IAAI,MAAA,CAAO,SAAS,CAAA,EAAG;AACrB,IAAA,GAAA,CAAI,KAAK,aAAa,CAAA;AACtB,IAAA,GAAA,CAAI,KAAK,EAAE,CAAA;AACX,IAAA,KAAA,MAAW,UAAU,MAAA,EAAQ;AAC3B,MAAA,GAAA,CAAI,KAAK,CAAA,MAAA,EAAS,MAAA,CAAO,MAAM,CAAA,UAAA,EAAQ,MAAA,CAAO,QAAQ,CAAA,CAAE,CAAA;AACxD,MAAA,GAAA,CAAI,KAAK,EAAE,CAAA;AACX,MAAA,GAAA,CAAI,IAAA,CAAK,OAAO,OAAO,CAAA;AACvB,MAAA,IAAI,OAAO,UAAA,EAAY;AACrB,QAAA,GAAA,CAAI,KAAK,EAAE,CAAA;AACX,QAAA,GAAA,CAAI,IAAA,CAAK,CAAA,gBAAA,EAAmB,MAAA,CAAO,UAAU,CAAA,CAAE,CAAA;AAAA,MACjD;AACA,MAAA,IAAI,OAAO,SAAA,EAAW;AACpB,QAAA,GAAA,CAAI,KAAK,EAAE,CAAA;AACX,QAAA,GAAA,CAAI,IAAA,CAAK,CAAA,eAAA,EAAkB,MAAA,CAAO,SAAS,CAAA,CAAE,CAAA;AAAA,MAC/C;AACA,MAAA,GAAA,CAAI,KAAK,EAAE,CAAA;AAAA,IACb;AAAA,EACF;AACA,EAAA,OAAO,GAAA,CAAI,KAAK,IAAI,CAAA;AACtB;AAEO,SAAS,MAAA,CACd,MAAA,EACA,GAAA,EACA,OAAA,GAA+B,EAAC,EACxB;AACR,EAAA,IAAI,GAAA,KAAQ,MAAA,EAAQ,OAAO,UAAA,CAAW,MAAM,CAAA;AAC5C,EAAA,IAAI,GAAA,KAAQ,UAAA,EAAY,OAAO,cAAA,CAAe,MAAM,CAAA;AACpD,EAAA,OAAO,UAAA,CAAW,QAAQ,OAAO,CAAA;AACnC;;;AC9GA,eAAsB,kBAAA,CACpB,MAAA,EACA,OAAA,GAAiC,EAAC,EACZ;AACtB,EAAA,MAAM,GAAA,GAAM,YAAY,MAAM,CAAA;AAC9B,EAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,QAAA,IAAY,qBAAA,EAAsB;AAE3D,EAAA,IAAI,QAAQ,UAAA,EAAY;AACtB,IAAA,KAAA,MAAW,IAAA,IAAQ,QAAQ,UAAA,EAAY;AACrC,MAAA,IAAI,CAAC,SAAS,GAAA,CAAI,IAAA,CAAK,EAAE,CAAA,EAAG,QAAA,CAAS,SAAS,IAAI,CAAA;AAAA,IACpD;AAAA,EACF;AAEA,EAAA,MAAM,UAAU,OAAA,CAAQ,OAAA,IAAW,iBAAA,CAAkB,OAAA,CAAQ,eAAe,OAAO,CAAA;AACnF,EAAA,MAAM,OAAA,GAAU,MAAM,QAAA,CAAS;AAAA,IAC7B,KAAA,EAAO,SAAS,GAAA,EAAI;AAAA,IACpB,OAAA;AAAA,IACA,GAAA;AAAA,IACA,MAAM,OAAA,CAAQ,IAAA;AAAA,IACd,YAAY,OAAA,CAAQ;AAAA,GACrB,CAAA;AAED,EAAA,OAAO,WAAA,CAAY,SAAS,OAAO,CAAA;AACrC","file":"browser.cjs","sourcesContent":["import type { Example, PromptAST, PromptComponents, PromptMetadata } from './types.js';\n\nexport type { Example, PromptAST, PromptComponents, PromptMetadata } from './types.js';\n\nconst ROLE_PATTERNS: RegExp[] = [\n /^you are\\b[^.\\n]*[.\\n]/i,\n /^you're\\b[^.\\n]*[.\\n]/i,\n /^act as\\b[^.\\n]*[.\\n]/i,\n /^your role is\\b[^.\\n]*[.\\n]/i,\n /^assume the role of\\b[^.\\n]*[.\\n]/i,\n /^imagine you are\\b[^.\\n]*[.\\n]/i,\n /^pretend to be\\b[^.\\n]*[.\\n]/i,\n];\n\nconst TASK_KEYWORDS: RegExp[] = [\n /\\byour task is\\b/i,\n /\\byour job is\\b/i,\n /\\byour goal is\\b/i,\n /\\bplease\\s+(?:write|explain|generate|analyze|summarize|translate|classify|extract|create|produce|list|describe)\\b/i,\n /\\b(?:write|explain|generate|analyze|summarize|translate|classify|extract|create|produce|list|describe) (?:a|an|the)\\b/i,\n];\n\nconst CONSTRAINT_KEYWORDS: RegExp[] = [\n /\\b(?:must|should|should not|shouldn't|must not|mustn't|never|always|do not|don't|avoid|ensure|make sure|only)\\b/i,\n /\\b(?:maximum|minimum|at most|at least|no more than|no less than|exactly)\\b/i,\n];\n\nconst OUTPUT_FORMAT_KEYWORDS: RegExp[] = [\n /\\b(?:output|respond|return|reply|answer)\\s+(?:in|as|with|using)\\s+(?:json|xml|yaml|markdown|html|csv|a list|a table|bullet points?|plain text|paragraphs?)\\b/i,\n /\\bformat\\s*:\\s*(?:json|xml|yaml|markdown|html|csv|list|table)\\b/i,\n /\\bin (?:json|xml|yaml|markdown|html|csv) format\\b/i,\n /\\b(?:output|response|answer) format\\b/i,\n];\n\nconst EXAMPLE_KEYWORDS: RegExp[] = [\n /\\bfor example\\b/i,\n /\\bexamples?:/i,\n /\\be\\.g\\./i,\n /\\bhere (?:is|are) (?:an? )?examples?\\b/i,\n /<example>/i,\n /\\binput\\s*:[\\s\\S]*?output\\s*:/i,\n];\n\nconst TONE_KEYWORDS: RegExp[] = [\n /\\btone\\s*:/i,\n /\\b(?:in a|use a) (?:formal|casual|friendly|professional|concise|humorous|playful|serious|polite) (?:tone|voice|style|manner)\\b/i,\n /\\bbe (?:formal|casual|friendly|professional|concise|humorous|playful|serious|polite)\\b/i,\n /\\bwrite in a .{1,20} (?:tone|voice|style)\\b/i,\n];\n\nconst FALLBACK_KEYWORDS: RegExp[] = [\n /\\bif (?:you (?:are )?(?:unsure|don't know|cannot|can't)|unsure|unclear|not sure|unable)\\b/i,\n /\\bif you cannot\\b/i,\n /\\bwhen in doubt\\b/i,\n /\\bas a fallback\\b/i,\n /\\bedge cases?\\b/i,\n];\n\nconst CONTEXT_KEYWORDS: RegExp[] = [\n /^context\\s*:/im,\n /^background\\s*:/im,\n /^scenario\\s*:/im,\n /^given\\s*:/im,\n /<context>/i,\n];\n\nconst XML_TAG_REGEX = /<([a-z][a-z0-9_-]*)\\b[^>]*>[\\s\\S]*?<\\/\\1>/i;\nconst MARKDOWN_HEADER_REGEX = /^#{1,6}\\s+\\S/m;\nconst NUMBERED_SECTION_REGEX = /^\\s*(?:\\d+[.)]\\s+|-\\s+|\\*\\s+)/m;\n\nfunction countWords(text: string): number {\n const trimmed = text.trim();\n if (!trimmed) return 0;\n return trimmed.split(/\\s+/).length;\n}\n\nfunction detectLanguage(text: string): string {\n // Very naive: just check for common English stopwords; default to 'en'.\n // A proper implementation would use a library, but v0.1 ships without it.\n const sample = text.toLowerCase().slice(0, 2000);\n const englishMarkers = /\\b(?:the|and|you|your|that|this|with|for|are|not)\\b/g;\n const matches = sample.match(englishMarkers);\n if (matches && matches.length >= 3) return 'en';\n return 'unknown';\n}\n\nfunction extractFirstMatch(text: string, patterns: RegExp[]): string | undefined {\n for (const pattern of patterns) {\n const match = text.match(pattern);\n if (match) {\n return match[0].trim();\n }\n }\n return undefined;\n}\n\nfunction extractRole(text: string): string | undefined {\n // Role is usually at the very start of the prompt.\n const firstLines = text.split(/\\n/).slice(0, 3).join('\\n');\n for (const pattern of ROLE_PATTERNS) {\n const match = firstLines.match(pattern);\n if (match) return match[0].trim();\n }\n // Also check via XML tag\n const xmlMatch = text.match(/<(?:role|persona)>([\\s\\S]*?)<\\/(?:role|persona)>/i);\n if (xmlMatch && xmlMatch[1]) return xmlMatch[1].trim();\n return undefined;\n}\n\nfunction extractTask(text: string, role?: string): string | undefined {\n // Try XML tag first\n const xmlMatch = text.match(\n /<(?:task|instructions?|goal)>([\\s\\S]*?)<\\/(?:task|instructions?|goal)>/i,\n );\n if (xmlMatch && xmlMatch[1]) return xmlMatch[1].trim();\n\n const withoutRole = role ? text.replace(role, '') : text;\n const found = extractFirstMatch(withoutRole, TASK_KEYWORDS);\n if (found) {\n // Expand to full sentence\n const idx = withoutRole.toLowerCase().indexOf(found.toLowerCase());\n if (idx >= 0) {\n const rest = withoutRole.slice(idx);\n const end = rest.search(/[.!?\\n]/);\n return end > 0 ? rest.slice(0, end + 1).trim() : rest.slice(0, 200).trim();\n }\n }\n return undefined;\n}\n\nfunction extractContext(text: string): string | undefined {\n const xmlMatch = text.match(/<context>([\\s\\S]*?)<\\/context>/i);\n if (xmlMatch && xmlMatch[1]) return xmlMatch[1].trim();\n\n for (const pattern of CONTEXT_KEYWORDS) {\n const match = text.match(pattern);\n if (match && match.index !== undefined) {\n const rest = text.slice(match.index);\n const end = rest.search(/\\n\\n/);\n return end > 0 ? rest.slice(0, end).trim() : rest.slice(0, 300).trim();\n }\n }\n return undefined;\n}\n\nfunction extractConstraints(text: string): string[] {\n const constraints: string[] = [];\n const xmlMatch = text.match(/<constraints?>([\\s\\S]*?)<\\/constraints?>/i);\n if (xmlMatch && xmlMatch[1]) {\n xmlMatch[1]\n .split(/\\n/)\n .map((line) => line.replace(/^[\\s\\-*\\d.)]+/, '').trim())\n .filter(Boolean)\n .forEach((line) => constraints.push(line));\n }\n\n const lines = text.split(/\\n/);\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed) continue;\n for (const pattern of CONSTRAINT_KEYWORDS) {\n if (pattern.test(trimmed) && trimmed.length < 300) {\n constraints.push(trimmed);\n break;\n }\n }\n }\n\n // Deduplicate preserving order\n return Array.from(new Set(constraints));\n}\n\nfunction extractExamples(text: string): Example[] {\n const examples: Example[] = [];\n const xmlRegex = /<example>([\\s\\S]*?)<\\/example>/gi;\n let xmlMatch: RegExpExecArray | null;\n while ((xmlMatch = xmlRegex.exec(text)) !== null) {\n const body = xmlMatch[1]?.trim() ?? '';\n const inputMatch = body.match(/input\\s*:\\s*([\\s\\S]*?)(?=output\\s*:|$)/i);\n const outputMatch = body.match(/output\\s*:\\s*([\\s\\S]*)/i);\n examples.push({\n raw: body,\n input: inputMatch?.[1]?.trim(),\n output: outputMatch?.[1]?.trim(),\n });\n }\n\n if (examples.length === 0) {\n const ioRegex = /input\\s*:\\s*([\\s\\S]*?)\\n\\s*output\\s*:\\s*([\\s\\S]*?)(?=\\n\\s*input\\s*:|\\n\\n|$)/gi;\n let ioMatch: RegExpExecArray | null;\n while ((ioMatch = ioRegex.exec(text)) !== null) {\n examples.push({\n raw: ioMatch[0].trim(),\n input: ioMatch[1]?.trim(),\n output: ioMatch[2]?.trim(),\n });\n }\n }\n\n if (examples.length === 0) {\n for (const pattern of EXAMPLE_KEYWORDS) {\n const match = text.match(pattern);\n if (match && match.index !== undefined) {\n const snippet = text.slice(match.index, match.index + 300);\n examples.push({ raw: snippet.trim() });\n break;\n }\n }\n }\n\n return examples;\n}\n\nfunction extractOutputFormat(text: string): string | undefined {\n const xmlMatch = text.match(\n /<(?:output|format|output_format)>([\\s\\S]*?)<\\/(?:output|format|output_format)>/i,\n );\n if (xmlMatch && xmlMatch[1]) return xmlMatch[1].trim();\n return extractFirstMatch(text, OUTPUT_FORMAT_KEYWORDS);\n}\n\nfunction extractTone(text: string): string | undefined {\n return extractFirstMatch(text, TONE_KEYWORDS);\n}\n\nfunction extractFallback(text: string): string | undefined {\n return extractFirstMatch(text, FALLBACK_KEYWORDS);\n}\n\nexport function parsePrompt(raw: string): PromptAST {\n const text = raw;\n const role = extractRole(text);\n const task = extractTask(text, role);\n const context = extractContext(text);\n const constraints = extractConstraints(text);\n const examples = extractExamples(text);\n const outputFormat = extractOutputFormat(text);\n const tone = extractTone(text);\n const fallback = extractFallback(text);\n\n const components: PromptComponents = {\n role,\n task,\n context,\n constraints: constraints.length > 0 ? constraints : undefined,\n examples: examples.length > 0 ? examples : undefined,\n outputFormat,\n tone,\n fallback,\n };\n\n const hasXmlTags = XML_TAG_REGEX.test(text);\n const hasMarkdownHeaders = MARKDOWN_HEADER_REGEX.test(text);\n const hasNumberedSections = NUMBERED_SECTION_REGEX.test(text);\n\n const metadata: PromptMetadata = {\n wordCount: countWords(text),\n charCount: text.length,\n lineCount: text.split(/\\n/).length,\n language: detectLanguage(text),\n hasStructuredFormat: hasXmlTags || hasMarkdownHeaders || hasNumberedSections,\n hasXmlTags,\n hasMarkdownHeaders,\n hasNumberedSections,\n };\n\n return {\n raw: text,\n components,\n metadata,\n };\n}\n","import type { Profile, ProfileRuleOverride } from './types.js';\n\ntype PartialProfile = Omit<Profile, 'rules' | 'bestPractices'> & {\n rules: Record<string, ProfileRuleOverride>;\n bestPractices: string[];\n};\n\nfunction mergeOverrides(\n base: ProfileRuleOverride | undefined,\n override: ProfileRuleOverride | undefined,\n): ProfileRuleOverride {\n return {\n severity: override?.severity ?? base?.severity,\n weight: override?.weight ?? base?.weight,\n suggestion: override?.suggestion ?? base?.suggestion,\n reference: override?.reference ?? base?.reference,\n enabled: override?.enabled ?? base?.enabled,\n };\n}\n\nfunction mergeProfiles(base: Profile, child: PartialProfile): Profile {\n const ruleIds = new Set<string>([...Object.keys(base.rules), ...Object.keys(child.rules)]);\n const rules: Record<string, ProfileRuleOverride> = {};\n\n for (const ruleId of ruleIds) {\n rules[ruleId] = mergeOverrides(base.rules[ruleId], child.rules[ruleId]);\n }\n\n return {\n name: child.name,\n displayName: child.displayName,\n version: child.version ?? base.version,\n base: child.base,\n rules,\n bestPractices: [...base.bestPractices, ...child.bestPractices],\n };\n}\n\nconst baseProfile: Profile = {\n name: '_base',\n displayName: 'Model-agnostic baseline',\n version: '2026-04',\n base: undefined,\n rules: {\n 'min-length': {\n severity: 'warning',\n weight: 1,\n },\n 'max-length': {\n severity: 'info',\n weight: 0.8,\n },\n 'no-output-format': {\n severity: 'warning',\n weight: 1.2,\n suggestion:\n 'Tell the model the exact format you want (JSON schema, bullet list, single sentence, etc.).',\n },\n 'no-examples': {\n severity: 'warning',\n weight: 1,\n suggestion: 'Add 1–3 concrete examples showing the input and the expected output.',\n },\n 'no-role': {\n severity: 'info',\n weight: 0.8,\n },\n 'no-context': {\n severity: 'info',\n weight: 0.9,\n },\n 'ambiguous-negation': {\n severity: 'info',\n weight: 0.8,\n },\n 'no-constraints': {\n severity: 'info',\n weight: 0.9,\n },\n 'all-caps-abuse': {\n severity: 'info',\n weight: 0.6,\n },\n 'vague-instruction': {\n severity: 'warning',\n weight: 1.1,\n },\n 'missing-task': {\n severity: 'error',\n weight: 2,\n },\n 'no-structured-format': {\n severity: 'warning',\n weight: 1,\n },\n },\n bestPractices: [\n 'Be explicit about the task — one clear instruction beats several vague ones.',\n 'Include at least one concrete example when the output format matters.',\n \"Prefer positive instructions ('do Y') over negative ones ('don't do X').\",\n 'Specify the exact output format the model should return.',\n 'Break long prompts into labeled sections.',\n ],\n};\n\nconst claudeOverrides: PartialProfile = {\n name: 'claude',\n displayName: 'Anthropic Claude',\n version: '2026-04',\n base: '_base',\n rules: {\n 'no-output-format': {\n severity: 'warning',\n weight: 1.2,\n suggestion:\n 'Claude responds well to XML-tagged output format instructions like <output_format>.',\n reference: 'https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering',\n },\n 'no-examples': {\n severity: 'warning',\n weight: 1.5,\n suggestion: 'Claude benefits significantly from 2–3 few-shot examples inside <example> tags.',\n reference:\n 'https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/multishot-prompting',\n },\n 'no-structured-format': {\n severity: 'warning',\n weight: 1.3,\n suggestion: 'Claude handles XML tags particularly well for separating sections.',\n reference:\n 'https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/use-xml-tags',\n },\n 'ambiguous-negation': {\n severity: 'warning',\n weight: 1.1,\n suggestion: 'Claude follows positive framings more reliably than negations.',\n },\n },\n bestPractices: [\n 'Use XML tags to separate sections: <instructions>, <context>, <example>, <output_format>.',\n 'Put the most important instructions at both the beginning and the end of the prompt.',\n \"Use positive instructions ('do X') rather than negative ('don't do Y').\",\n 'Provide 2–3 examples of the expected output format.',\n 'For long prompts, wrap each section in an XML tag so Claude can refer back to it.',\n ],\n};\n\nconst gptOverrides: PartialProfile = {\n name: 'gpt',\n displayName: 'OpenAI GPT',\n version: '2026-04',\n base: '_base',\n rules: {\n 'no-output-format': {\n severity: 'warning',\n weight: 1.3,\n suggestion:\n 'GPT responds well to explicit format instructions — mention JSON schema or a numbered list if relevant.',\n reference: 'https://platform.openai.com/docs/guides/prompt-engineering',\n },\n 'no-examples': {\n severity: 'warning',\n weight: 1.3,\n suggestion: 'Use a system + user pattern with few-shot examples to anchor GPT’s behavior.',\n },\n 'no-structured-format': {\n severity: 'warning',\n weight: 1.1,\n suggestion: 'Markdown headers and numbered sections work well for GPT.',\n },\n 'no-role': {\n severity: 'info',\n weight: 1,\n suggestion: 'GPT responds well when given an explicit persona via a system message.',\n },\n },\n bestPractices: [\n 'Use a system message to set the persona and global instructions.',\n 'Structure long prompts with markdown headers (## Context, ## Task, ## Output).',\n 'For structured output, prefer JSON schema or response_format: json_object.',\n 'Include a handful of few-shot examples if format matters.',\n 'Be explicit about what the model should not do, but always pair with what it should do.',\n ],\n};\n\nexport const builtinProfiles = {\n _base: baseProfile,\n claude: mergeProfiles(baseProfile, claudeOverrides),\n gpt: mergeProfiles(baseProfile, gptOverrides),\n} as const satisfies Record<string, Profile>;\n\nexport type BuiltinProfileName = keyof typeof builtinProfiles;\n\nexport function getBuiltinProfile(name: BuiltinProfileName): Profile {\n return structuredClone(builtinProfiles[name]);\n}\n","import type { Rule } from '../types.js';\n\nconst MIN_WORDS = 20;\n\nexport const minLengthRule: Rule = {\n id: 'min-length',\n name: 'Minimum length',\n description: 'Prompts shorter than 20 words rarely give a model enough to work with.',\n category: 'specificity',\n defaultSeverity: 'warning',\n type: 'deterministic',\n check: ({ ast }) => {\n const wc = ast.metadata.wordCount;\n const passed = wc >= MIN_WORDS;\n const score = passed ? 100 : Math.round((wc / MIN_WORDS) * 100);\n return {\n ruleId: 'min-length',\n passed,\n score,\n message: passed\n ? `Prompt length (${wc} words) is sufficient.`\n : `Prompt is very short (${wc} words). Models need enough context to respond well.`,\n suggestion: passed\n ? undefined\n : 'Add more detail about what you want, why, and how the output should look.',\n severity: 'warning',\n category: 'specificity',\n weight: 1,\n };\n },\n};\n","import type { Rule } from '../types.js';\n\nconst SOFT_MAX = 1500;\nconst HARD_MAX = 3000;\n\nexport const maxLengthRule: Rule = {\n id: 'max-length',\n name: 'Maximum length',\n description: 'Excessively long prompts often contain redundancy and dilute the model’s focus.',\n category: 'structure',\n defaultSeverity: 'info',\n type: 'deterministic',\n check: ({ ast }) => {\n const wc = ast.metadata.wordCount;\n let score = 100;\n if (wc > SOFT_MAX) {\n const over = Math.min(wc - SOFT_MAX, HARD_MAX - SOFT_MAX);\n score = Math.max(0, 100 - Math.round((over / (HARD_MAX - SOFT_MAX)) * 100));\n }\n const passed = wc <= SOFT_MAX;\n return {\n ruleId: 'max-length',\n passed,\n score,\n message: passed\n ? `Prompt length (${wc} words) is within a comfortable range.`\n : `Prompt is long (${wc} words). Consider trimming redundancy or splitting into smaller prompts.`,\n suggestion: passed\n ? undefined\n : 'Look for repeated instructions, bundled unrelated tasks, or sections that can be summarized.',\n severity: 'info',\n category: 'structure',\n weight: 1,\n };\n },\n};\n","import type { Rule } from '../types.js';\n\nexport const noOutputFormatRule: Rule = {\n id: 'no-output-format',\n name: 'Output format specified',\n description: 'The prompt should tell the model exactly how to format its answer.',\n category: 'specificity',\n defaultSeverity: 'warning',\n type: 'deterministic',\n check: ({ ast }) => {\n const passed = Boolean(ast.components.outputFormat);\n return {\n ruleId: 'no-output-format',\n passed,\n score: passed ? 100 : 0,\n message: passed\n ? 'An output format is specified.'\n : 'No output format is specified. The model will guess what you want.',\n suggestion: passed\n ? undefined\n : 'State the exact format: JSON schema, bullet list, markdown table, single sentence, etc.',\n severity: 'warning',\n category: 'specificity',\n weight: 1,\n };\n },\n};\n","import type { Rule } from '../types.js';\n\nexport const noExamplesRule: Rule = {\n id: 'no-examples',\n name: 'Examples provided',\n description: 'Few-shot examples dramatically improve output quality and consistency.',\n category: 'best-practice',\n defaultSeverity: 'warning',\n type: 'deterministic',\n check: ({ ast }) => {\n const count = ast.components.examples?.length ?? 0;\n const passed = count > 0;\n return {\n ruleId: 'no-examples',\n passed,\n score: passed ? 100 : 0,\n message: passed\n ? `Prompt includes ${count} example${count === 1 ? '' : 's'}.`\n : 'No examples provided. Few-shot examples usually improve output quality.',\n suggestion: passed\n ? undefined\n : 'Add 1–3 concrete examples showing the input and the expected output.',\n severity: 'warning',\n category: 'best-practice',\n weight: 1,\n };\n },\n};\n","import type { Rule } from '../types.js';\n\nexport const noRoleRule: Rule = {\n id: 'no-role',\n name: 'Role or persona assigned',\n description: 'Assigning a role focuses the model and sets expectations for expertise and tone.',\n category: 'best-practice',\n defaultSeverity: 'info',\n type: 'deterministic',\n check: ({ ast }) => {\n const passed = Boolean(ast.components.role);\n return {\n ruleId: 'no-role',\n passed,\n score: passed ? 100 : 0,\n message: passed\n ? 'A role or persona is assigned.'\n : 'No role assigned. Consider giving the model a persona aligned with the task.',\n suggestion: passed\n ? undefined\n : 'Start with something like \"You are a senior <X> who specializes in <Y>.\"',\n severity: 'info',\n category: 'best-practice',\n weight: 1,\n };\n },\n};\n","import type { Rule } from '../types.js';\n\nexport const noContextRule: Rule = {\n id: 'no-context',\n name: 'Background context provided',\n description: 'Context helps the model understand the situation, audience, and constraints.',\n category: 'specificity',\n defaultSeverity: 'info',\n type: 'deterministic',\n check: ({ ast }) => {\n const passed = Boolean(ast.components.context) || ast.metadata.wordCount >= 80;\n return {\n ruleId: 'no-context',\n passed,\n score: passed ? 100 : 40,\n message: passed\n ? 'Prompt provides context or is detailed enough to imply it.'\n : 'No background context detected. The model may miss important situational cues.',\n suggestion: passed\n ? undefined\n : 'Explain the situation: who the user is, why they’re asking, and what the stakes are.',\n severity: 'info',\n category: 'specificity',\n weight: 1,\n };\n },\n};\n","import type { Rule } from '../types.js';\n\nconst NEGATION_PATTERN = /\\b(?:don't|do not|never|avoid|shouldn't|should not|must not|mustn't)\\b/gi;\n\nexport const ambiguousNegationRule: Rule = {\n id: 'ambiguous-negation',\n name: 'Ambiguous negative instructions',\n description:\n 'Negative instructions (\"don\\'t do X\") are less effective than positive ones (\"do Y\").',\n category: 'clarity',\n defaultSeverity: 'info',\n type: 'deterministic',\n check: ({ ast }) => {\n const matches = ast.raw.match(NEGATION_PATTERN) ?? [];\n const wc = ast.metadata.wordCount || 1;\n const ratio = matches.length / wc;\n const passed = matches.length < 3 || ratio < 0.05;\n const score = passed ? 100 : Math.max(20, 100 - matches.length * 10);\n return {\n ruleId: 'ambiguous-negation',\n passed,\n score,\n message: passed\n ? `Negative instructions are used sparingly (${matches.length} found).`\n : `Heavy use of negative instructions (${matches.length} found). Models follow positive instructions more reliably.`,\n suggestion: passed\n ? undefined\n : 'Rewrite \"don\\'t do X\" as \"do Y instead\". Tell the model what the desired behavior is.',\n severity: 'info',\n category: 'clarity',\n weight: 1,\n };\n },\n};\n","import type { Rule } from '../types.js';\n\nexport const noConstraintsRule: Rule = {\n id: 'no-constraints',\n name: 'Constraints defined',\n description: 'Explicit constraints keep the model on track and prevent scope drift.',\n category: 'specificity',\n defaultSeverity: 'info',\n type: 'deterministic',\n check: ({ ast }) => {\n const count = ast.components.constraints?.length ?? 0;\n const passed = count > 0;\n return {\n ruleId: 'no-constraints',\n passed,\n score: passed ? 100 : 0,\n message: passed\n ? `Prompt defines ${count} constraint${count === 1 ? '' : 's'}.`\n : 'No constraints detected. The model has no guardrails on length, scope, or style.',\n suggestion: passed\n ? undefined\n : 'Add constraints like length limits, scope boundaries, or things the answer must include.',\n severity: 'info',\n category: 'specificity',\n weight: 1,\n };\n },\n};\n","import type { Rule } from '../types.js';\n\nconst CAPS_WORD_PATTERN = /\\b[A-Z]{4,}\\b/g;\n\nexport const allCapsAbuseRule: Rule = {\n id: 'all-caps-abuse',\n name: 'All-caps abuse',\n description: 'Excessive ALL CAPS is noisy and rarely the clearest way to emphasize something.',\n category: 'clarity',\n defaultSeverity: 'info',\n type: 'deterministic',\n check: ({ ast }) => {\n const caps = ast.raw.match(CAPS_WORD_PATTERN) ?? [];\n const wc = ast.metadata.wordCount || 1;\n const ratio = caps.length / wc;\n const passed = ratio < 0.05 && caps.length < 8;\n const score = passed ? 100 : Math.max(30, 100 - Math.round(ratio * 1000));\n return {\n ruleId: 'all-caps-abuse',\n passed,\n score,\n message: passed\n ? 'All-caps usage is within reasonable limits.'\n : `Excessive ALL CAPS (${caps.length} words). This rarely improves comprehension.`,\n suggestion: passed\n ? undefined\n : 'Use bold (**word**), quotes, or XML tags for emphasis instead of ALL CAPS.',\n severity: 'info',\n category: 'clarity',\n weight: 1,\n };\n },\n};\n","import type { Rule } from '../types.js';\n\nconst VAGUE_WORDS = [\n 'good',\n 'nice',\n 'proper',\n 'appropriate',\n 'correct',\n 'better',\n 'high quality',\n 'high-quality',\n 'reasonable',\n 'decent',\n 'suitable',\n];\n\nfunction buildVaguePattern(): RegExp {\n const escaped = VAGUE_WORDS.map((w) => w.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'));\n return new RegExp(`\\\\b(?:${escaped.join('|')})\\\\b`, 'gi');\n}\n\nconst VAGUE_PATTERN = buildVaguePattern();\n\nexport const vagueInstructionRule: Rule = {\n id: 'vague-instruction',\n name: 'Vague instructions',\n description:\n 'Vague words like \"good\", \"proper\", or \"appropriate\" do not give the model a concrete target.',\n category: 'clarity',\n defaultSeverity: 'warning',\n type: 'deterministic',\n check: ({ ast }) => {\n const matches = ast.raw.match(VAGUE_PATTERN) ?? [];\n const unique = Array.from(new Set(matches.map((m) => m.toLowerCase())));\n const passed = matches.length === 0;\n const score = passed ? 100 : Math.max(25, 100 - matches.length * 15);\n return {\n ruleId: 'vague-instruction',\n passed,\n score,\n message: passed\n ? 'No vague qualifiers detected.'\n : `Vague qualifiers used: ${unique.join(', ')}.`,\n suggestion: passed\n ? undefined\n : 'Replace vague words with measurable criteria. \"Good\" → \"concise (≤ 3 sentences) and citing sources\".',\n severity: 'warning',\n category: 'clarity',\n weight: 1,\n };\n },\n};\n","import type { Rule } from '../types.js';\n\nexport const missingTaskRule: Rule = {\n id: 'missing-task',\n name: 'Clear task or instruction',\n description: 'Every prompt should have an unambiguous instruction telling the model what to do.',\n category: 'clarity',\n defaultSeverity: 'error',\n type: 'deterministic',\n check: ({ ast }) => {\n const passed = Boolean(ast.components.task);\n return {\n ruleId: 'missing-task',\n passed,\n score: passed ? 100 : 0,\n message: passed\n ? 'A clear task is present.'\n : 'No explicit task detected. The model may not know what you want it to do.',\n suggestion: passed\n ? undefined\n : 'State the task explicitly: \"Your task is to...\" or \"Please <verb> <object>\".',\n severity: 'error',\n category: 'clarity',\n weight: 1.5,\n };\n },\n};\n","import type { Rule } from '../types.js';\n\nconst LONG_PROMPT_THRESHOLD = 100;\n\nexport const noStructuredFormatRule: Rule = {\n id: 'no-structured-format',\n name: 'Structured formatting',\n description:\n 'Long prompts are easier for a model to follow when broken into sections (XML tags, headers, lists).',\n category: 'structure',\n defaultSeverity: 'warning',\n type: 'deterministic',\n check: ({ ast }) => {\n const wc = ast.metadata.wordCount;\n const structured = ast.metadata.hasStructuredFormat;\n const passed = wc < LONG_PROMPT_THRESHOLD || structured;\n const score = passed ? 100 : 40;\n return {\n ruleId: 'no-structured-format',\n passed,\n score,\n message: passed\n ? structured\n ? 'Prompt uses structured formatting.'\n : 'Prompt is short enough to not need structural formatting.'\n : `Long prompt (${wc} words) without structural markers like XML tags, headers, or numbered sections.`,\n suggestion: passed\n ? undefined\n : 'Split the prompt into labeled sections: <instructions>, <context>, <examples>, <output_format>.',\n severity: 'warning',\n category: 'structure',\n weight: 1,\n };\n },\n};\n","import type { Rule } from '../types.js';\nimport { minLengthRule } from './min-length.js';\nimport { maxLengthRule } from './max-length.js';\nimport { noOutputFormatRule } from './no-output-format.js';\nimport { noExamplesRule } from './no-examples.js';\nimport { noRoleRule } from './no-role.js';\nimport { noContextRule } from './no-context.js';\nimport { ambiguousNegationRule } from './ambiguous-negation.js';\nimport { noConstraintsRule } from './no-constraints.js';\nimport { allCapsAbuseRule } from './all-caps-abuse.js';\nimport { vagueInstructionRule } from './vague-instruction.js';\nimport { missingTaskRule } from './missing-task.js';\nimport { noStructuredFormatRule } from './no-structured-format.js';\n\nexport const deterministicRules: Rule[] = [\n minLengthRule,\n maxLengthRule,\n noOutputFormatRule,\n noExamplesRule,\n noRoleRule,\n noContextRule,\n ambiguousNegationRule,\n noConstraintsRule,\n allCapsAbuseRule,\n vagueInstructionRule,\n missingTaskRule,\n noStructuredFormatRule,\n];\n\nexport {\n minLengthRule,\n maxLengthRule,\n noOutputFormatRule,\n noExamplesRule,\n noRoleRule,\n noContextRule,\n ambiguousNegationRule,\n noConstraintsRule,\n allCapsAbuseRule,\n vagueInstructionRule,\n missingTaskRule,\n noStructuredFormatRule,\n};\n","import type { Rule } from './types.js';\nimport { deterministicRules } from './deterministic/index.js';\n\nexport class RuleRegistry {\n private readonly rules = new Map<string, Rule>();\n\n constructor(initialRules: Rule[] = []) {\n for (const rule of initialRules) {\n this.register(rule);\n }\n }\n\n register(rule: Rule): void {\n if (this.rules.has(rule.id)) {\n throw new Error(`Rule with id \"${rule.id}\" is already registered`);\n }\n this.rules.set(rule.id, rule);\n }\n\n get(id: string): Rule | undefined {\n return this.rules.get(id);\n }\n\n has(id: string): boolean {\n return this.rules.has(id);\n }\n\n all(): Rule[] {\n return Array.from(this.rules.values());\n }\n\n byType(type: 'deterministic' | 'llm'): Rule[] {\n return this.all().filter((rule) => rule.type === type);\n }\n\n byIds(ids: string[]): Rule[] {\n const out: Rule[] = [];\n for (const id of ids) {\n const rule = this.rules.get(id);\n if (rule) out.push(rule);\n }\n return out;\n }\n}\n\nexport function createDefaultRegistry(): RuleRegistry {\n return new RuleRegistry(deterministicRules);\n}\n","import type { PromptAST } from '../parser/types.js';\nimport type { Profile } from '../profiles/types.js';\nimport type { Rule, RuleCategory, RuleResult } from '../rules/types.js';\n\nexport interface CategoryScore {\n category: RuleCategory;\n score: number;\n rules: RuleResult[];\n}\n\nexport interface Suggestion {\n ruleId: string;\n severity: RuleResult['severity'];\n message: string;\n suggestion: string;\n reference?: string;\n impact: number;\n}\n\nexport interface ScoreReport {\n overall: number;\n categories: CategoryScore[];\n summary: string;\n suggestions: Suggestion[];\n results: RuleResult[];\n profileName: string;\n}\n\nexport interface RunRulesOptions {\n rules: Rule[];\n profile: Profile;\n ast: PromptAST;\n only?: string[];\n includeLlm?: boolean;\n}\n\nfunction isRuleEnabled(rule: Rule, profile: Profile): boolean {\n const override = profile.rules[rule.id];\n if (override?.enabled === false) return false;\n return true;\n}\n\nfunction applyOverride(result: RuleResult, profile: Profile): RuleResult {\n const override = profile.rules[result.ruleId];\n if (!override) return result;\n return {\n ...result,\n severity: override.severity ?? result.severity,\n weight: override.weight ?? result.weight,\n suggestion: override.suggestion ?? result.suggestion,\n reference: override.reference ?? result.reference,\n };\n}\n\nexport async function runRules(options: RunRulesOptions): Promise<RuleResult[]> {\n const { rules, profile, ast, only, includeLlm } = options;\n const results: RuleResult[] = [];\n for (const rule of rules) {\n if (only && !only.includes(rule.id)) continue;\n if (!isRuleEnabled(rule, profile)) continue;\n if (rule.type === 'llm' && !includeLlm) continue;\n const base = await rule.check({ ast, profile });\n results.push(applyOverride(base, profile));\n }\n return results;\n}\n\nfunction groupByCategory(results: RuleResult[]): Map<RuleCategory, RuleResult[]> {\n const grouped = new Map<RuleCategory, RuleResult[]>();\n for (const result of results) {\n const existing = grouped.get(result.category) ?? [];\n existing.push(result);\n grouped.set(result.category, existing);\n }\n return grouped;\n}\n\nfunction weightedAverage(values: number[], weights: number[]): number {\n const totalWeight = weights.reduce((a, b) => a + b, 0);\n if (totalWeight === 0) return 0;\n const sum = values.reduce((acc, v, i) => acc + v * (weights[i] ?? 1), 0);\n return sum / totalWeight;\n}\n\nfunction buildSummary(overall: number, results: RuleResult[]): string {\n const failed = results.filter((r) => !r.passed);\n if (failed.length === 0) return `Score ${Math.round(overall)}/100 — strong prompt.`;\n const errors = failed.filter((r) => r.severity === 'error').length;\n const warnings = failed.filter((r) => r.severity === 'warning').length;\n const pieces: string[] = [];\n if (errors) pieces.push(`${errors} error${errors === 1 ? '' : 's'}`);\n if (warnings) pieces.push(`${warnings} warning${warnings === 1 ? '' : 's'}`);\n const extras = failed.length - errors - warnings;\n if (extras > 0) pieces.push(`${extras} info`);\n return `Score ${Math.round(overall)}/100 — ${pieces.join(', ')}.`;\n}\n\nfunction buildSuggestions(results: RuleResult[]): Suggestion[] {\n const severityRank: Record<RuleResult['severity'], number> = {\n error: 3,\n warning: 2,\n info: 1,\n };\n return results\n .filter((r) => !r.passed && r.suggestion)\n .map<Suggestion>((r) => ({\n ruleId: r.ruleId,\n severity: r.severity,\n message: r.message,\n suggestion: r.suggestion!,\n reference: r.reference,\n impact: (100 - r.score) * r.weight * severityRank[r.severity],\n }))\n .sort((a, b) => b.impact - a.impact);\n}\n\nexport function buildReport(results: RuleResult[], profile: Profile): ScoreReport {\n const grouped = groupByCategory(results);\n const categories: CategoryScore[] = [];\n for (const [category, rs] of grouped) {\n const score = weightedAverage(\n rs.map((r) => r.score),\n rs.map((r) => r.weight),\n );\n categories.push({ category, score, rules: rs });\n }\n const overall = weightedAverage(\n categories.map((c) => c.score),\n categories.map((c) => c.rules.reduce((a, r) => a + r.weight, 0)),\n );\n return {\n overall,\n categories,\n summary: buildSummary(overall, results),\n suggestions: buildSuggestions(results),\n results,\n profileName: profile.name,\n };\n}\n","import type { ScoreReport } from '../scorer/index.js';\nimport type { RuleResult } from '../rules/types.js';\n\nexport type ReportFormat = 'text' | 'json' | 'markdown';\n\nconst COLORS = {\n reset: '\\x1b[0m',\n bold: '\\x1b[1m',\n dim: '\\x1b[2m',\n red: '\\x1b[31m',\n green: '\\x1b[32m',\n yellow: '\\x1b[33m',\n blue: '\\x1b[34m',\n magenta: '\\x1b[35m',\n cyan: '\\x1b[36m',\n gray: '\\x1b[90m',\n};\n\nfunction c(color: keyof typeof COLORS, text: string, enabled: boolean): string {\n if (!enabled) return text;\n return `${COLORS[color]}${text}${COLORS.reset}`;\n}\n\nfunction severityColor(sev: RuleResult['severity']): keyof typeof COLORS {\n if (sev === 'error') return 'red';\n if (sev === 'warning') return 'yellow';\n return 'blue';\n}\n\nfunction severityLabel(sev: RuleResult['severity']): string {\n if (sev === 'error') return 'error';\n if (sev === 'warning') return 'warn ';\n return 'info ';\n}\n\nfunction scoreColor(score: number): keyof typeof COLORS {\n if (score >= 80) return 'green';\n if (score >= 50) return 'yellow';\n return 'red';\n}\n\nexport interface TextReporterOptions {\n color?: boolean;\n}\n\nexport function formatText(report: ScoreReport, options: TextReporterOptions = {}): string {\n const color = options.color ?? true;\n const out: string[] = [];\n const overallRounded = Math.round(report.overall);\n const bar = buildBar(overallRounded, 30);\n\n out.push(c('bold', `PromptScore — profile: ${report.profileName}`, color));\n out.push('');\n out.push(\n `${c('bold', 'Overall', color)} ${c(scoreColor(overallRounded), `${overallRounded}/100`, color)} ${bar}`,\n );\n out.push(c('dim', report.summary, color));\n out.push('');\n\n out.push(c('bold', 'Categories', color));\n for (const category of report.categories) {\n const s = Math.round(category.score);\n out.push(\n ` ${category.category.padEnd(16)} ${c(scoreColor(s), `${String(s).padStart(3)}/100`, color)} ${c('dim', `(${category.rules.length} rules)`, color)}`,\n );\n }\n out.push('');\n\n const failed = report.results.filter((r) => !r.passed);\n if (failed.length > 0) {\n out.push(c('bold', 'Findings', color));\n for (const result of failed) {\n const label = c(severityColor(result.severity), severityLabel(result.severity), color);\n out.push(` ${label} ${c('bold', result.ruleId, color)} ${result.message}`);\n if (result.suggestion) {\n out.push(c('dim', ` → ${result.suggestion}`, color));\n }\n if (result.reference) {\n out.push(c('dim', ` see: ${result.reference}`, color));\n }\n }\n out.push('');\n }\n\n const passed = report.results.filter((r) => r.passed);\n if (passed.length > 0) {\n out.push(c('dim', `${passed.length} rule${passed.length === 1 ? '' : 's'} passed.`, color));\n }\n\n return out.join('\\n');\n}\n\nfunction buildBar(score: number, width: number): string {\n const filled = Math.round((score / 100) * width);\n const empty = width - filled;\n return `[${'█'.repeat(filled)}${'░'.repeat(empty)}]`;\n}\n\nexport function formatJson(report: ScoreReport, pretty = true): string {\n return JSON.stringify(report, null, pretty ? 2 : 0);\n}\n\nexport function formatMarkdown(report: ScoreReport): string {\n const out: string[] = [];\n out.push(`# PromptScore — ${report.profileName}`);\n out.push('');\n out.push(`**Overall:** ${Math.round(report.overall)}/100`);\n out.push('');\n out.push(`> ${report.summary}`);\n out.push('');\n out.push('## Categories');\n out.push('');\n out.push('| Category | Score | Rules |');\n out.push('| --- | --- | --- |');\n for (const category of report.categories) {\n out.push(\n `| ${category.category} | ${Math.round(category.score)}/100 | ${category.rules.length} |`,\n );\n }\n out.push('');\n\n const failed = report.results.filter((r) => !r.passed);\n if (failed.length > 0) {\n out.push('## Findings');\n out.push('');\n for (const result of failed) {\n out.push(`### \\`${result.ruleId}\\` — ${result.severity}`);\n out.push('');\n out.push(result.message);\n if (result.suggestion) {\n out.push('');\n out.push(`**Suggestion:** ${result.suggestion}`);\n }\n if (result.reference) {\n out.push('');\n out.push(`**Reference:** ${result.reference}`);\n }\n out.push('');\n }\n }\n return out.join('\\n');\n}\n\nexport function format(\n report: ScoreReport,\n fmt: ReportFormat,\n options: TextReporterOptions = {},\n): string {\n if (fmt === 'json') return formatJson(report);\n if (fmt === 'markdown') return formatMarkdown(report);\n return formatText(report, options);\n}\n","import { parsePrompt } from './parser/index.js';\nimport { getBuiltinProfile, type BuiltinProfileName } from './profiles/builtin.js';\nimport type { Profile } from './profiles/types.js';\nimport { createDefaultRegistry, type RuleRegistry } from './rules/registry.js';\nimport type { Rule } from './rules/types.js';\nimport { buildReport, runRules, type ScoreReport } from './scorer/index.js';\n\nexport { parsePrompt } from './parser/index.js';\nexport type { PromptAST, PromptComponents, PromptMetadata, Example } from './parser/types.js';\n\nexport { RuleRegistry, createDefaultRegistry } from './rules/registry.js';\nexport type {\n Rule,\n RuleCategory,\n RuleContext,\n RuleResult,\n RuleSeverity,\n RuleType,\n} from './rules/types.js';\n\nexport { builtinProfiles, getBuiltinProfile } from './profiles/builtin.js';\nexport type { BuiltinProfileName } from './profiles/builtin.js';\nexport type { Profile, ProfileRuleOverride } from './profiles/types.js';\n\nexport { runRules, buildReport } from './scorer/index.js';\nexport type { ScoreReport, CategoryScore, Suggestion, RunRulesOptions } from './scorer/index.js';\n\nexport { format, formatText, formatJson, formatMarkdown } from './reporter/index.js';\nexport type { ReportFormat, TextReporterOptions } from './reporter/index.js';\n\nexport { deterministicRules } from './rules/deterministic/index.js';\n\nexport interface AnalyzeBrowserOptions {\n profile?: Profile;\n profileName?: BuiltinProfileName;\n only?: string[];\n includeLlm?: boolean;\n registry?: RuleRegistry;\n extraRules?: Rule[];\n}\n\nexport async function analyzeWithProfile(\n prompt: string,\n options: AnalyzeBrowserOptions = {},\n): Promise<ScoreReport> {\n const ast = parsePrompt(prompt);\n const registry = options.registry ?? createDefaultRegistry();\n\n if (options.extraRules) {\n for (const rule of options.extraRules) {\n if (!registry.has(rule.id)) registry.register(rule);\n }\n }\n\n const profile = options.profile ?? getBuiltinProfile(options.profileName ?? '_base');\n const results = await runRules({\n rules: registry.all(),\n profile,\n ast,\n only: options.only,\n includeLlm: options.includeLlm,\n });\n\n return buildReport(results, profile);\n}\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { P as Profile, B as BuiltinProfileName, R as RuleRegistry, a as Rule, S as ScoreReport } from './index-5jqZSlgq.cjs';
|
|
2
|
+
export { C as CategoryScore, E as Example, b as ProfileRuleOverride, c as PromptAST, d as PromptComponents, e as PromptMetadata, f as ReportFormat, g as RuleCategory, h as RuleContext, i as RuleResult, j as RuleSeverity, k as RuleType, l as RunRulesOptions, m as Suggestion, T as TextReporterOptions, n as buildReport, o as builtinProfiles, p as createDefaultRegistry, q as deterministicRules, r as format, s as formatJson, t as formatMarkdown, u as formatText, v as getBuiltinProfile, w as parsePrompt, x as runRules } from './index-5jqZSlgq.cjs';
|
|
3
|
+
|
|
4
|
+
interface AnalyzeBrowserOptions {
|
|
5
|
+
profile?: Profile;
|
|
6
|
+
profileName?: BuiltinProfileName;
|
|
7
|
+
only?: string[];
|
|
8
|
+
includeLlm?: boolean;
|
|
9
|
+
registry?: RuleRegistry;
|
|
10
|
+
extraRules?: Rule[];
|
|
11
|
+
}
|
|
12
|
+
declare function analyzeWithProfile(prompt: string, options?: AnalyzeBrowserOptions): Promise<ScoreReport>;
|
|
13
|
+
|
|
14
|
+
export { type AnalyzeBrowserOptions, BuiltinProfileName, Profile, Rule, RuleRegistry, ScoreReport, analyzeWithProfile };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { P as Profile, B as BuiltinProfileName, R as RuleRegistry, a as Rule, S as ScoreReport } from './index-5jqZSlgq.js';
|
|
2
|
+
export { C as CategoryScore, E as Example, b as ProfileRuleOverride, c as PromptAST, d as PromptComponents, e as PromptMetadata, f as ReportFormat, g as RuleCategory, h as RuleContext, i as RuleResult, j as RuleSeverity, k as RuleType, l as RunRulesOptions, m as Suggestion, T as TextReporterOptions, n as buildReport, o as builtinProfiles, p as createDefaultRegistry, q as deterministicRules, r as format, s as formatJson, t as formatMarkdown, u as formatText, v as getBuiltinProfile, w as parsePrompt, x as runRules } from './index-5jqZSlgq.js';
|
|
3
|
+
|
|
4
|
+
interface AnalyzeBrowserOptions {
|
|
5
|
+
profile?: Profile;
|
|
6
|
+
profileName?: BuiltinProfileName;
|
|
7
|
+
only?: string[];
|
|
8
|
+
includeLlm?: boolean;
|
|
9
|
+
registry?: RuleRegistry;
|
|
10
|
+
extraRules?: Rule[];
|
|
11
|
+
}
|
|
12
|
+
declare function analyzeWithProfile(prompt: string, options?: AnalyzeBrowserOptions): Promise<ScoreReport>;
|
|
13
|
+
|
|
14
|
+
export { type AnalyzeBrowserOptions, BuiltinProfileName, Profile, Rule, RuleRegistry, ScoreReport, analyzeWithProfile };
|