@ctxprotocol/sdk 0.9.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -9
- package/dist/client/index.cjs +66 -8
- package/dist/client/index.cjs.map +1 -1
- package/dist/client/index.d.cts +5 -635
- package/dist/client/index.d.ts +5 -635
- package/dist/client/index.js +66 -8
- package/dist/client/index.js.map +1 -1
- package/dist/contrib/search/index.cjs +703 -0
- package/dist/contrib/search/index.cjs.map +1 -0
- package/dist/contrib/search/index.d.cts +33 -0
- package/dist/contrib/search/index.d.ts +33 -0
- package/dist/contrib/search/index.js +690 -0
- package/dist/contrib/search/index.js.map +1 -0
- package/dist/index.cjs +66 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +9 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.js +66 -8
- package/dist/index.js.map +1 -1
- package/dist/types-Bgjq3OBR.d.cts +1071 -0
- package/dist/types-Bgjq3OBR.d.ts +1071 -0
- package/package.json +11 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/contrib/search/types.ts","../../../src/contrib/search/core.ts","../../../src/contrib/search/trace.ts","../../../src/contrib/search/validation.ts"],"names":[],"mappings":";AAAO,IAAM,mCAAA,GACX;AACK,IAAM,qCAAA,GACX;AAuOK,IAAM,oCAAA,GAAN,cAAmD,KAAA,CAAM;AAAA,EAC9D,WAAA,CAAY,UAAU,oCAAA,EAAsC;AAC1D,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,IAAA,GAAO,sCAAA;AAAA,EACd;AACF;;;ACtNA,IAAM,0BAAA,GAA6B,CAAA;AACnC,IAAM,+BAAA,GAAkC,kBAAA;AACxC,IAAM,+BAAA,GAAkC,CAAA;AACxC,IAAM,2BAAA,GAA8B,CAAA;AACpC,IAAM,iBAAA,GAAoB,GAAA;AAE1B,IAAM,6BAAA,GAAN,cAA4C,KAAA,CAAM;AAAA,EAChD,WAAA,CAAY,UAAU,oCAAA,EAAsC;AAC1D,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,IAAA,GAAO,+BAAA;AAAA,EACd;AACF,CAAA;AAeA,SAAS,gBAAgB,KAAA,EAAiD;AACxE,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,MAAM,UAAA,GAAa,MAAM,IAAA,EAAK;AAC9B,EAAA,OAAO,UAAA,CAAW,MAAA,GAAS,CAAA,GAAI,UAAA,GAAa,IAAA;AAC9C;AAEA,SAAS,cAAc,MAAA,EAAqC;AAC1D,EAAA,MAAM,OAAA,uBAAc,GAAA,EAAY;AAChC,EAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,IAAA,MAAM,UAAA,GAAa,gBAAgB,KAAK,CAAA;AACxC,IAAA,IAAI,CAAC,UAAA,EAAY;AACf,MAAA;AAAA,IACF;AACA,IAAA,OAAA,CAAQ,IAAI,UAAU,CAAA;AAAA,EACxB;AACA,EAAA,OAAO,CAAC,GAAG,OAAO,CAAA;AACpB;AAEA,SAAS,eAAe,MAAA,EAAwB;AAC9C,EAAA,OAAO,MAAA,CAAO,UAAU,iBAAA,GACpB,MAAA,GACA,GAAG,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,iBAAiB,CAAC,CAAA,GAAA,CAAA;AAC3C;AAEA,SAAS,uBAAuB,UAAA,EAA+C;AAC7E,EAAA,OAAO;AAAA,IACL,UAAA,CAAW,MAAA;AAAA,IACX,UAAA,CAAW,KAAA;AAAA,IACX,WAAW,IAAA,IAAQ,EAAA;AAAA,IACnB,WAAW,SAAA,IAAa,EAAA;AAAA,IACxB,IAAA,CAAK,SAAA,CAAU,UAAA,CAAW,QAAA,IAAY,EAAE;AAAA,GAC1C,CAAE,KAAK,IAAI,CAAA;AACb;AAEA,SAAS,eAAA,CACP,OACA,MAAA,EAC6B;AAC7B,EAAA,MAAM,MAAA,uBAAa,GAAA,EAAuC;AAC1D,EAAA,KAAA,MAAW,cAAc,CAAC,GAAG,KAAA,EAAO,GAAG,MAAM,CAAA,EAAG;AAC9C,IAAA,MAAA,CAAO,GAAA,CAAI,sBAAA,CAAuB,UAAU,CAAA,EAAG,UAAU,CAAA;AAAA,EAC3D;AACA,EAAA,OAAO,CAAC,GAAG,MAAA,CAAO,MAAA,EAAQ,CAAA;AAC5B;AAEA,SAAS,eAAA,CACP,OACA,MAAA,EACiB;AACjB,EAAA,OAAO;AAAA,IACL,GAAG,KAAA;AAAA,IACH,WAAA,EAAa,KAAA,CAAM,WAAA,IAAe,MAAA,CAAO,WAAA,IAAe,IAAA;AAAA,IACxD,MAAA,EAAQ;AAAA,MACN,GAAI,MAAA,CAAO,MAAA,IAAU,EAAC;AAAA,MACtB,GAAI,KAAA,CAAM,MAAA,IAAU;AAAC,KACvB;AAAA,IACA,YAAA,EAAc;AAAA,MACZ,GAAI,MAAA,CAAO,YAAA,IAAgB,EAAC;AAAA,MAC5B,GAAI,KAAA,CAAM,YAAA,IAAgB;AAAC,KAC7B;AAAA,IACA,UAAA,EAAY,eAAA,CAAgB,KAAA,CAAM,UAAA,EAAY,OAAO,UAAU,CAAA;AAAA,IAC/D,QAAA,EAAU;AAAA,MACR,GAAI,MAAA,CAAO,QAAA,IAAY,EAAC;AAAA,MACxB,GAAI,KAAA,CAAM,QAAA,IAAY;AAAC;AACzB,GACF;AACF;AAEA,SAAS,qBAAA,CACP,WACA,iBAAA,EACS;AACT,EAAA,OAAO,kBAAkB,SAAS,CAAA;AACpC;AAEA,SAAS,oBACP,UAAA,EACmC;AACnC,EAAA,MAAM,OAAA,uBAAc,GAAA,EAOlB;AAEF,EAAA,KAAA,MAAW,aAAa,UAAA,EAAY;AAClC,IAAA,KAAA,MAAW,UAAA,IAAc,UAAU,UAAA,EAAY;AAC7C,MAAA,MAAM,MAAM,CAAA,EAAG,UAAA,CAAW,MAAM,CAAA,EAAA,EAAK,WAAW,KAAK,CAAA,CAAA;AACrD,MAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,GAAA,CAAI,GAAG,CAAA;AAChC,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,QAAA,CAAS,YAAA,CAAa,GAAA,CAAI,SAAA,CAAU,WAAW,CAAA;AAC/C,QAAA;AAAA,MACF;AACA,MAAA,OAAA,CAAQ,IAAI,GAAA,EAAK;AAAA,QACf,QAAQ,UAAA,CAAW,MAAA;AAAA,QACnB,OAAO,UAAA,CAAW,KAAA;AAAA,QAClB,8BAAc,IAAI,GAAA,CAAI,CAAC,SAAA,CAAU,WAAW,CAAC;AAAA,OAC9C,CAAA;AAAA,IACH;AAAA,EACF;AAEA,EAAA,OAAO,CAAC,GAAG,OAAA,CAAQ,MAAA,EAAQ,CAAA,CACxB,GAAA,CAAI,CAAC,KAAA,MAAW;AAAA,IACf,QAAQ,KAAA,CAAM,MAAA;AAAA,IACd,OAAO,KAAA,CAAM,KAAA;AAAA,IACb,cAAA,EAAgB,MAAM,YAAA,CAAa;AAAA,GACrC,CAAE,CAAA,CACD,KAAA,CAAM,CAAA,EAAG,+BAA+B,CAAA;AAC7C;AAEA,SAAS,mBAAmB,MAAA,EAIO;AACjC,EAAA,OAAO;AAAA,IACL,QAAA,EAAU,OAAO,MAAA,CAAO,QAAA;AAAA,IACxB,KAAA,EAAO,OAAO,MAAA,CAAO,KAAA;AAAA,IACrB,SAAA,EAAW,OAAO,MAAA,CAAO,SAAA;AAAA,IACzB,SAAA,EAAW,OAAO,MAAA,CAAO,SAAA;AAAA,IACzB,QAAA,EAAU,OAAO,MAAA,CAAO,YAAA;AAAA,IACxB,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,OAAO,MAAA,CAAO;AAAA,GAChB;AACF;AAEA,SAAS,kBAAkB,MAAA,EAKO;AAChC,EAAA,OAAO;AAAA,IACL,2BAA2B,MAAA,CAAO,yBAAA;AAAA,IAClC,iBAAiB,MAAA,CAAO,eAAA;AAAA,IACxB,qBAAqB,MAAA,CAAO,mBAAA;AAAA,IAC5B,iBAAiB,MAAA,CAAO;AAAA,GAC1B;AACF;AAEA,SAAS,oBAAoB,MAAA,EAYC;AAC5B,EAAA,MAAM,aAAA,GAAgB,aAAA,CAAc,MAAA,CAAO,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAW,MAAA,CAAO,KAAK,CAAC,CAAA,CAC7E,KAAA,CAAM,GAAG,2BAA2B,CAAA;AAEvC,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,mCAAA;AAAA,IACT,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,YAAY,MAAA,CAAO,UAAA;AAAA,IACnB,mBAAA,EAAqB,MAAA,CAAO,iBAAA,EAAmB,WAAA,IAAe,IAAA;AAAA,IAC9D,uBAAuB,MAAA,CAAO,SAAA,CAAU,IAAI,CAAC,SAAA,KAAc,UAAU,WAAW,CAAA;AAAA,IAChF,mBAAA,EAAqB,OAAO,iBAAA,CAAkB,GAAA;AAAA,MAC5C,CAAC,cAAc,SAAA,CAAU;AAAA,KAC3B;AAAA,IACA,oBAAA,EAAsB,OAAO,kBAAA,CAAmB,GAAA;AAAA,MAC9C,CAAC,cAAc,SAAA,CAAU;AAAA,KAC3B;AAAA,IACA,cAAA,EAAgB,OAAO,UAAA,CAAW,MAAA;AAAA,IAClC,cAAA,EAAgB,OAAO,SAAA,CAAU,MAAA;AAAA,IACjC,aAAA;AAAA,IACA,UAAU,MAAA,CAAO,QAAA;AAAA,IACjB,OAAO,MAAA,CAAO,aAAA;AAAA,IACd,UAAA,EAAY,mBAAA,CAAoB,MAAA,CAAO,UAAU,CAAA;AAAA,IACjD,OAAO,MAAA,CAAO;AAAA,GAChB;AACF;AAEA,SAAS,gBAAgB,MAAA,EAaO;AAC9B,EAAA,MAAM,iBAAiB,mBAAA,CAAoB;AAAA,IACzC,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,YAAY,MAAA,CAAO,UAAA;AAAA,IACnB,WAAW,MAAA,CAAO,SAAA;AAAA,IAClB,mBAAmB,MAAA,CAAO,iBAAA;AAAA,IAC1B,mBAAmB,MAAA,CAAO,iBAAA;AAAA,IAC1B,oBAAoB,MAAA,CAAO,kBAAA;AAAA,IAC3B,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,YAAY,MAAA,CAAO,UAAA;AAAA,IACnB,UAAU,MAAA,CAAO,QAAA;AAAA,IACjB,eAAe,MAAA,CAAO,aAAA;AAAA,IACtB,OAAO,MAAA,CAAO;AAAA,GACf,CAAA;AAED,EAAA,OAAO;AAAA,IACL,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,mBAAmB,MAAA,CAAO,iBAAA;AAAA,IAC1B,SAAA,EAAW,CAAC,GAAG,MAAA,CAAO,SAAS,CAAA;AAAA,IAC/B,iBAAA,EAAmB,CAAC,GAAG,MAAA,CAAO,iBAAiB,CAAA;AAAA,IAC/C,kBAAA,EAAoB,CAAC,GAAG,MAAA,CAAO,kBAAkB,CAAA;AAAA,IACjD,YAAY,MAAA,CAAO,UAAA;AAAA,IACnB,MAAA,EAAQ,cAAA,CAAe,MAAA,CAAO,MAAM,CAAA;AAAA,IACpC,UAAU,MAAA,CAAO,QAAA;AAAA,IACjB;AAAA,GACF;AACF;AAEA,SAAS,mBAAmB,GAAA,EAG1B;AACA,EAAA,MAAM,UAAoB,EAAC;AAC3B,EAAA,MAAM,IAAA,uBAAW,GAAA,EAAY;AAC7B,EAAA,IAAI,aAAA,GAAgB,KAAA;AAEpB,EAAA,KAAA,MAAW,MAAM,GAAA,EAAK;AACpB,IAAA,MAAM,UAAA,GAAa,gBAAgB,EAAE,CAAA;AACrC,IAAA,IAAI,CAAC,UAAA,EAAY;AACf,MAAA;AAAA,IACF;AACA,IAAA,IAAI,IAAA,CAAK,GAAA,CAAI,UAAU,CAAA,EAAG;AACxB,MAAA,aAAA,GAAgB,IAAA;AAChB,MAAA;AAAA,IACF;AACA,IAAA,IAAA,CAAK,IAAI,UAAU,CAAA;AACnB,IAAA,OAAA,CAAQ,KAAK,UAAU,CAAA;AAAA,EACzB;AAEA,EAAA,OAAO;AAAA,IACL,GAAA,EAAK,OAAA;AAAA,IACL;AAAA,GACF;AACF;AAEA,SAAS,uBAAuB,MAAA,EAML;AACzB,EAAA,MAAM,aAAA,uBAAoB,GAAA,EAA6B;AACvD,EAAA,KAAA,MAAW,SAAA,IAAa,OAAO,SAAA,EAAW;AACxC,IAAA,aAAA,CAAc,GAAA,CAAI,SAAA,CAAU,WAAA,EAAa,SAAS,CAAA;AAAA,EACpD;AAEA,EAAA,MAAM,4BAAA,GAA+B,eAAA,CAAgB,MAAA,CAAO,kBAAkB,CAAA;AAC9E,EAAA,MAAM,mBAAA,GAAsB,kBAAA,CAAmB,MAAA,CAAO,mBAAmB,CAAA;AACzE,EAAA,MAAM,oBAAA,GAAuB,kBAAA,CAAmB,MAAA,CAAO,oBAAoB,CAAA;AAE3E,EAAA,IACE,mBAAA,CAAoB,aAAA,IACpB,oBAAA,CAAqB,aAAA,EACrB;AACA,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,UAAA,EAAY,sBAAA;AAAA,MACZ,MAAA,EAAQ;AAAA,KACV;AAAA,EACF;AAEA,EAAA,MAAM,aAAA,uBAAoB,GAAA,EAAY;AACtC,EAAA,IAAI,4BAAA,EAA8B;AAChC,IAAA,aAAA,CAAc,IAAI,4BAA4B,CAAA;AAAA,EAChD;AACA,EAAA,KAAA,MAAW,EAAA,IAAM,CAAC,GAAG,mBAAA,CAAoB,KAAK,GAAG,oBAAA,CAAqB,GAAG,CAAA,EAAG;AAC1E,IAAA,IAAI,aAAA,CAAc,GAAA,CAAI,EAAE,CAAA,EAAG;AACzB,MAAA,OAAO;AAAA,QACL,EAAA,EAAI,KAAA;AAAA,QACJ,UAAA,EAAY,oBAAA;AAAA,QACZ,MAAA,EAAQ;AAAA,OACV;AAAA,IACF;AACA,IAAA,aAAA,CAAc,IAAI,EAAE,CAAA;AAAA,EACtB;AAEA,EAAA,IACE,4BAAA,IACA,CAAC,aAAA,CAAc,GAAA,CAAI,4BAA4B,CAAA,EAC/C;AACA,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,UAAA,EAAY,oBAAA;AAAA,MACZ,MAAA,EAAQ;AAAA,KACV;AAAA,EACF;AAEA,EAAA,KAAA,MAAW,EAAA,IAAM,CAAC,GAAG,mBAAA,CAAoB,KAAK,GAAG,oBAAA,CAAqB,GAAG,CAAA,EAAG;AAC1E,IAAA,IAAI,CAAC,aAAA,CAAc,GAAA,CAAI,EAAE,CAAA,EAAG;AAC1B,MAAA,OAAO;AAAA,QACL,EAAA,EAAI,KAAA;AAAA,QACJ,UAAA,EAAY,oBAAA;AAAA,QACZ,MAAA,EAAQ;AAAA,OACV;AAAA,IACF;AAAA,EACF;AAEA,EAAA,MAAM,oBAAoB,4BAAA,GACtB,aAAA,CAAc,GAAA,CAAI,4BAA4B,KAAK,IAAA,GACnD,IAAA;AAEJ,EAAA,IACE,qBACA,CAAC,qBAAA,CAAsB,iBAAA,EAAmB,MAAA,CAAO,iBAAiB,CAAA,EAClE;AACA,IAAA,OAAO;AAAA,MACL,EAAA,EAAI,KAAA;AAAA,MACJ,UAAA,EAAY,oBAAA;AAAA,MACZ,MAAA,EACE;AAAA,KACJ;AAAA,EACF;AAEA,EAAA,OAAO;AAAA,IACL,EAAA,EAAI,IAAA;AAAA,IACJ,iBAAA;AAAA,IACA,mBAAmB,mBAAA,CAAoB,GAAA,CACpC,GAAA,CAAI,CAAC,OAAO,aAAA,CAAc,GAAA,CAAI,EAAE,CAAC,EACjC,MAAA,CAAO,CAAC,SAAA,KAA4C,OAAA,CAAQ,SAAS,CAAC,CAAA;AAAA,IACzE,oBAAoB,oBAAA,CAAqB,GAAA,CACtC,GAAA,CAAI,CAAC,OAAO,aAAA,CAAc,GAAA,CAAI,EAAE,CAAC,EACjC,MAAA,CAAO,CAAC,SAAA,KAA4C,OAAA,CAAQ,SAAS,CAAC;AAAA,GAC3E;AACF;AAEA,eAAe,cAAc,MAAA,EAK+B;AAC1D,EAAA,IAAI,CAAC,MAAA,CAAO,SAAA,IAAa,MAAA,CAAO,aAAa,CAAA,EAAG;AAC9C,IAAA,OAAO,OAAO,KAAA,CAAM,QAAA,CAAS,MAAA,CAAO,KAAA,EAAO,OAAO,OAAO,CAAA;AAAA,EAC3D;AAEA,EAAA,IAAI,SAAA;AACJ,EAAA,IAAI;AACF,IAAA,OAAO,MAAM,QAAQ,IAAA,CAAK;AAAA,MACxB,OAAO,KAAA,CAAM,QAAA,CAAS,MAAA,CAAO,KAAA,EAAO,OAAO,OAAO,CAAA;AAAA,MAClD,IAAI,OAAA,CAAe,CAAC,CAAA,EAAG,MAAA,KAAW;AAChC,QAAA,SAAA,GAAY,WAAW,MAAM;AAC3B,UAAA,MAAA,CAAO,IAAI,+BAA+B,CAAA;AAAA,QAC5C,CAAA,EAAG,MAAA,CAAO,SAAA,IAAa,CAAC,CAAA;AAAA,MAC1B,CAAC;AAAA,KACF,CAAA;AAAA,EACH,CAAA,SAAE;AACA,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,YAAA,CAAa,SAAS,CAAA;AAAA,IACxB;AAAA,EACF;AACF;AAEA,SAAS,wBAAwB,MAAA,EAYD;AAC9B,EAAA,IAAI,MAAA,CAAO,cAAA,CAAe,MAAA,KAAW,CAAA,EAAG;AACtC,IAAA,OAAO,eAAA,CAAgB;AAAA,MACrB,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,YAAY,MAAA,CAAO,UAAA;AAAA,MACnB,WAAW,EAAC;AAAA,MACZ,iBAAA,EAAmB,IAAA;AAAA,MACnB,mBAAmB,EAAC;AAAA,MACpB,oBAAoB,EAAC;AAAA,MACrB,OAAA,EAAS,iBAAA;AAAA,MACT,UAAA,EAAY,KAAA;AAAA,MACZ,QAAQ,MAAA,CAAO,MAAA;AAAA,MACf,QAAA,EAAU;AAAA,QACR,UAAA,EAAY,sBAAA;AAAA,QACZ,OAAA,EAAS,cAAA,CAAe,MAAA,CAAO,MAAM;AAAA,OACvC;AAAA,MACA,eAAe,kBAAA,CAAmB;AAAA,QAChC,QAAQ,MAAA,CAAO,MAAA;AAAA,QACf,SAAS,MAAA,CAAO,YAAA;AAAA,QAChB,OAAO,MAAA,CAAO;AAAA,OACf,CAAA;AAAA,MACD,OAAO,iBAAA,CAAkB;AAAA,QACvB,yBAAA,EAA2B,IAAA;AAAA,QAC3B,iBAAiB,MAAA,CAAO,eAAA;AAAA,QACxB,qBAAqB,MAAA,CAAO,mBAAA;AAAA,QAC5B,iBAAiB,MAAA,CAAO;AAAA,OACzB;AAAA,KACF,CAAA;AAAA,EACH;AAEA,EAAA,IACE,OAAO,cAAA,CAAe,MAAA,KAAW,KACjC,MAAA,CAAO,MAAA,CAAO,0BAA0B,+BAAA,EACxC;AACA,IAAA,OAAO,eAAA,CAAgB;AAAA,MACrB,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,YAAY,MAAA,CAAO,UAAA;AAAA,MACnB,WAAW,MAAA,CAAO,cAAA;AAAA,MAClB,iBAAA,EAAmB,MAAA,CAAO,cAAA,CAAe,CAAC,CAAA,IAAK,IAAA;AAAA,MAC/C,mBAAmB,EAAC;AAAA,MACpB,oBAAoB,EAAC;AAAA,MACrB,OAAA,EAAS,UAAA;AAAA,MACT,UAAA,EAAY,KAAA;AAAA,MACZ,QAAQ,MAAA,CAAO,MAAA;AAAA,MACf,QAAA,EAAU;AAAA,QACR,YAAY,MAAA,CAAO,UAAA;AAAA,QACnB,OAAA,EAAS,cAAA,CAAe,MAAA,CAAO,MAAM;AAAA,OACvC;AAAA,MACA,eAAe,kBAAA,CAAmB;AAAA,QAChC,QAAQ,MAAA,CAAO,MAAA;AAAA,QACf,SAAS,MAAA,CAAO,YAAA;AAAA,QAChB,OAAO,MAAA,CAAO;AAAA,OACf,CAAA;AAAA,MACD,OAAO,iBAAA,CAAkB;AAAA,QACvB,yBAAA,EAA2B,IAAA;AAAA,QAC3B,iBAAiB,MAAA,CAAO,eAAA;AAAA,QACxB,qBAAqB,MAAA,CAAO,mBAAA;AAAA,QAC5B,iBAAiB,MAAA,CAAO;AAAA,OACzB;AAAA,KACF,CAAA;AAAA,EACH;AAEA,EAAA,OAAO,eAAA,CAAgB;AAAA,IACrB,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,YAAY,MAAA,CAAO,UAAA;AAAA,IACnB,WAAW,MAAA,CAAO,cAAA;AAAA,IAClB,iBAAA,EAAmB,IAAA;AAAA,IACnB,mBAAmB,EAAC;AAAA,IACpB,oBAAoB,EAAC;AAAA,IACrB,OAAA,EAAS,gBAAA;AAAA,IACT,UAAA,EAAY,KAAA;AAAA,IACZ,QAAQ,MAAA,CAAO,MAAA;AAAA,IACf,QAAA,EAAU;AAAA,MACR,YAAY,MAAA,CAAO,UAAA;AAAA,MACnB,OAAA,EAAS,cAAA,CAAe,MAAA,CAAO,MAAM;AAAA,KACvC;AAAA,IACA,eAAe,kBAAA,CAAmB;AAAA,MAChC,QAAQ,MAAA,CAAO,MAAA;AAAA,MACf,SAAS,MAAA,CAAO,YAAA;AAAA,MAChB,OAAO,MAAA,CAAO;AAAA,KACf,CAAA;AAAA,IACD,OAAO,iBAAA,CAAkB;AAAA,MACvB,yBAAA,EAA2B,IAAA;AAAA,MAC3B,iBAAiB,MAAA,CAAO,eAAA;AAAA,MACxB,qBAAqB,MAAA,CAAO,mBAAA;AAAA,MAC5B,iBAAiB,MAAA,CAAO;AAAA,KACzB;AAAA,GACF,CAAA;AACH;AAEO,SAAS,mBAAmB,MAAA,EAMlB;AACf,EAAA,MAAM,kBAAkB,eAAA,CAAgB,MAAA,CAAO,KAAK,CAAA,IAAK,MAAA,CAAO,WAAW,IAAA,EAAK;AAChF,EAAA,MAAM,gBAAA,GAAmB,eAAA,CACtB,WAAA,EAAY,CACZ,QAAQ,aAAA,EAAe,GAAG,CAAA,CAC1B,OAAA,CAAQ,UAAA,EAAY,EAAE,CAAA,CACtB,KAAA,CAAM,GAAG,EAAE,CAAA;AAEd,EAAA,OAAO;AAAA,IACL,QAAA,EAAA,CAAW,MAAA,CAAO,QAAA,IAAY,gBAAA,KAAqB,eAAA;AAAA,IACnD,UAAA,EAAY,MAAA,CAAO,UAAA,CAAW,IAAA,EAAK;AAAA,IACnC,KAAA,EAAO,eAAA;AAAA,IACP,MAAA,EAAQ,eAAA,CAAgB,MAAA,CAAO,MAAM,CAAA;AAAA,IACrC,GAAI,OAAO,QAAA,GAAW,EAAE,UAAU,MAAA,CAAO,QAAA,KAAa;AAAC,GACzD;AACF;AAEO,SAAS,uBACd,UAAA,EACmB;AACnB,EAAA,MAAM,OAAA,uBAAc,GAAA,EAA6B;AACjD,EAAA,KAAA,MAAW,aAAa,UAAA,EAAY;AAClC,IAAA,MAAM,qBAAA,GAAwB,eAAA,CAAgB,SAAA,CAAU,WAAW,CAAA;AACnE,IAAA,IAAI,CAAC,qBAAA,EAAuB;AAC1B,MAAA;AAAA,IACF;AACA,IAAA,MAAM,mBAAA,GAAuC;AAAA,MAC3C,GAAG,SAAA;AAAA,MACH,WAAA,EAAa,qBAAA;AAAA,MACb,KAAA,EAAO,SAAA,CAAU,KAAA,CAAM,IAAA,EAAK;AAAA,MAC5B,WAAA,EAAa,eAAA,CAAgB,SAAA,CAAU,WAAW,CAAA;AAAA,MAClD,MAAA,EAAQ,SAAA,CAAU,MAAA,IAAU,EAAC;AAAA,MAC7B,YAAA,EAAc,SAAA,CAAU,YAAA,IAAgB,EAAC;AAAA,MACzC,UAAA,EAAY,SAAA,CAAU,UAAA,IAAc,EAAC;AAAA,MACrC,QAAA,EAAU,SAAA,CAAU,QAAA,IAAY;AAAC,KACnC;AACA,IAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,GAAA,CAAI,qBAAqB,CAAA;AAClD,IAAA,OAAA,CAAQ,GAAA;AAAA,MACN,qBAAA;AAAA,MACA,QAAA,GACI,eAAA,CAAgB,QAAA,EAAU,mBAAmB,CAAA,GAC7C;AAAA,KACN;AAAA,EACF;AACA,EAAA,OAAO,CAAC,GAAG,OAAA,CAAQ,MAAA,EAAQ,CAAA;AAC7B;AAEO,SAAS,oBAAA,CACd,UAAA,EACA,gBAAA,GAAmB,0BAAA,EACF;AACjB,EAAA,MAAM,aAAa,IAAA,CAAK,GAAA,CAAI,GAAG,IAAA,CAAK,KAAA,CAAM,gBAAgB,CAAC,CAAA;AAC3D,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,UAAA;AAAA,IACT,YAAY,sBAAA,CAAuB,UAAU,CAAA,CAAE,KAAA,CAAM,GAAG,UAAU;AAAA,GACpE;AACF;AAEO,SAAS,gCACX,OAAA,EAC8B;AACjC,EAAA,MAAM,QAAA,GAA4C;AAAA,IAChD,QAAA,EAAU,IAAA;AAAA,IACV,KAAA,EAAO,IAAA;AAAA,IACP,SAAA,EAAW,IAAA;AAAA,IACX,SAAA,EAAW,IAAA;AAAA,IACX,YAAA,EAAc,KAAA;AAAA,IACd,qBAAA,EAAuB,+BAAA;AAAA,IACvB,gBAAA,EAAkB;AAAA,GACpB;AAEA,EAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA;AAAA,IACF;AACA,IAAA,IAAI,cAAc,MAAA,EAAQ;AACxB,MAAA,QAAA,CAAS,QAAA,GAAW,eAAA,CAAgB,MAAA,CAAO,QAAQ,CAAA;AAAA,IACrD;AACA,IAAA,IAAI,WAAW,MAAA,EAAQ;AACrB,MAAA,QAAA,CAAS,KAAA,GAAQ,eAAA,CAAgB,MAAA,CAAO,KAAK,CAAA;AAAA,IAC/C;AACA,IAAA,IAAI,eAAe,MAAA,EAAQ;AACzB,MAAA,QAAA,CAAS,YACP,OAAO,MAAA,CAAO,cAAc,QAAA,IAAY,MAAA,CAAO,SAAS,MAAA,CAAO,SAAS,CAAA,GACpE,IAAA,CAAK,IAAI,CAAA,EAAG,IAAA,CAAK,MAAM,MAAA,CAAO,SAAS,CAAC,CAAA,GACxC,IAAA;AAAA,IACR;AACA,IAAA,IAAI,eAAe,MAAA,EAAQ;AACzB,MAAA,QAAA,CAAS,SAAA,GAAY,eAAA,CAAgB,MAAA,CAAO,SAAS,CAAA;AAAA,IACvD;AACA,IAAA,IAAI,cAAA,IAAkB,MAAA,IAAU,OAAO,MAAA,CAAO,iBAAiB,SAAA,EAAW;AACxE,MAAA,QAAA,CAAS,eAAe,MAAA,CAAO,YAAA;AAAA,IACjC;AACA,IAAA,IACE,MAAA,CAAO,qBAAA,KAA0B,kBAAA,IACjC,MAAA,CAAO,0BAA0B,+BAAA,EACjC;AACA,MAAA,QAAA,CAAS,wBAAwB,MAAA,CAAO,qBAAA;AAAA,IAC1C;AACA,IAAA,IACE,OAAO,OAAO,gBAAA,KAAqB,QAAA,IACnC,OAAO,QAAA,CAAS,MAAA,CAAO,gBAAgB,CAAA,EACvC;AACA,MAAA,QAAA,CAAS,gBAAA,GAAmB,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,KAAA,CAAM,MAAA,CAAO,gBAAgB,CAAC,CAAA;AAAA,IAC7E;AAAA,EACF;AAEA,EAAA,OAAO,QAAA;AACT;AAEO,SAAS,+BAAA,CACd,MACA,UAAA,EACmD;AACnD,EAAA,OAAO;AAAA,IACL,GAAG,IAAA;AAAA,IACH,gBAAgB,UAAA,CAAW;AAAA,GAC7B;AACF;AAEA,eAAsB,yBACpB,MAAA,EACsC;AACtC,EAAA,MAAM,MAAA,GAAS,4BAAA;AAAA,IACb,MAAA,CAAO,YAAA;AAAA,IACP,MAAA,CAAO,iBAAA;AAAA,IACP,MAAA,CAAO;AAAA,GACT;AACA,EAAA,MAAM,UAAA,GAAa,sBAAA,CAAuB,MAAA,CAAO,UAAU,CAAA;AAC3D,EAAA,MAAM,SAAA,GAAY,oBAAA,CAAqB,UAAA,EAAY,MAAA,CAAO,gBAAgB,CAAA,CAAE,UAAA;AAC5E,EAAA,MAAM,iBAAA,GAAoB,MAAA,CAAO,gBAAA,KAAqB,MAAM,IAAA,CAAA;AAC5D,EAAA,MAAM,iBAAiB,SAAA,CAAU,MAAA;AAAA,IAAO,CAAC,SAAA,KACvC,qBAAA,CAAsB,SAAA,EAAW,iBAAiB;AAAA,GACpD;AACA,EAAA,MAAM,QAAQ,MAAA,CAAO,KAAA;AAErB,EAAA,IAAI,SAAA,CAAU,WAAW,CAAA,EAAG;AAC1B,IAAA,OAAO,uBAAA,CAAwB;AAAA,MAC7B,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,UAAA;AAAA,MACA,cAAA;AAAA,MACA,UAAA,EAAY,sBAAA;AAAA,MACZ,MAAA,EACE,uEAAA;AAAA,MACF,MAAA;AAAA,MACA,YAAA,EAAc,KAAA;AAAA,MACd,UAAA,EAAY,IAAA;AAAA,MACZ,eAAA,EAAiB,SAAA;AAAA,MACjB,mBAAA,EAAqB,IAAA;AAAA,MACrB,eAAA,EAAiB;AAAA,KAClB,CAAA;AAAA,EACH;AAEA,EAAA,IAAI,MAAA,CAAO,YAAA,IAAgB,CAAC,KAAA,EAAO;AACjC,IAAA,OAAO,uBAAA,CAAwB;AAAA,MAC7B,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,UAAA;AAAA,MACA,cAAA;AAAA,MACA,UAAA,EAAY,CAAC,KAAA,GAAQ,eAAA,GAAkB,gBAAA;AAAA,MACvC,MAAA,EAAQ,CAAC,KAAA,GACL,iEAAA,GACA,4DAAA;AAAA,MACJ,MAAA;AAAA,MACA,YAAA,EAAc,KAAA;AAAA,MACd,UAAA,EAAY,IAAA;AAAA,MACZ,eAAA,EAAiB,SAAA;AAAA,MACjB,mBAAA,EAAqB,IAAA;AAAA,MACrB,eAAA,EAAiB;AAAA,KAClB,CAAA;AAAA,EACH;AAEA,EAAA,MAAM,UAAA,GAA0C;AAAA,IAC9C,YAAY,MAAA,CAAO,UAAA;AAAA,IACnB,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,SAAA,EAAW;AAAA,MACT,SAAS,MAAA,CAAO,gBAAA;AAAA,MAChB,UAAA,EAAY;AAAA,KACd;AAAA,IACA,GAAI,OAAO,YAAA,GAAe,EAAE,cAAc,MAAA,CAAO,YAAA,KAAiB,EAAC;AAAA,IACnE,MAAA,EAAQ;AAAA,GACV;AACA,EAAA,MAAM,YAAA,GAA8C;AAAA,IAClD,UAAU,MAAA,CAAO,QAAA;AAAA,IACjB,OAAO,MAAA,CAAO,KAAA;AAAA,IACd,WAAW,MAAA,CAAO,SAAA;AAAA,IAClB,WAAW,MAAA,CAAO,SAAA;AAAA,IAClB,UAAA,EAAY,OAAO,UAAA,IAAc;AAAA,GACnC;AAEA,EAAA,IAAI,UAAA,GAAiD,IAAA;AACrD,EAAA,IAAI;AACF,IAAA,MAAM,WAAA,GAAc,MAAM,aAAA,CAAc;AAAA,MACtC,KAAA;AAAA,MACA,KAAA,EAAO,UAAA;AAAA,MACP,OAAA,EAAS,YAAA;AAAA,MACT,WAAW,MAAA,CAAO;AAAA,KACnB,CAAA;AACD,IAAA,UAAA,GAAa,YAAY,KAAA,IAAS,IAAA;AAElC,IAAA,MAAM,aAAa,sBAAA,CAAuB;AAAA,MACxC,SAAA;AAAA,MACA,oBAAoB,WAAA,CAAY,kBAAA;AAAA,MAChC,qBAAqB,WAAA,CAAY,mBAAA;AAAA,MACjC,sBAAsB,WAAA,CAAY,oBAAA;AAAA,MAClC;AAAA,KACD,CAAA;AAED,IAAA,IAAI,CAAC,WAAW,EAAA,EAAI;AAClB,MAAA,OAAO,uBAAA,CAAwB;AAAA,QAC7B,SAAS,MAAA,CAAO,OAAA;AAAA,QAChB,UAAA;AAAA,QACA,cAAA;AAAA,QACA,YAAY,UAAA,CAAW,UAAA;AAAA,QACvB,QAAQ,UAAA,CAAW,MAAA;AAAA,QACnB,MAAA;AAAA,QACA,YAAA,EAAc,IAAA;AAAA,QACd,UAAA;AAAA,QACA,eAAA,EAAiB,UAAA;AAAA,QACjB,qBAAqB,UAAA,CAAW,UAAA;AAAA,QAChC,iBAAiB,UAAA,CAAW;AAAA,OAC7B,CAAA;AAAA,IACH;AAEA,IAAA,IAAI,CAAC,WAAW,iBAAA,EAAmB;AACjC,MAAA,OAAO,uBAAA,CAAwB;AAAA,QAC7B,SAAS,MAAA,CAAO,OAAA;AAAA,QAChB,UAAA;AAAA,QACA,cAAA;AAAA,QACA,UAAA,EAAY,qBAAA;AAAA,QACZ,MAAA,EACE,eAAA,CAAgB,WAAA,CAAY,MAAM,CAAA,IAClC,uDAAA;AAAA,QACF,MAAA;AAAA,QACA,YAAA,EAAc,IAAA;AAAA,QACd,UAAA;AAAA,QACA,eAAA,EAAiB,UAAA;AAAA,QACjB,mBAAA,EAAqB,IAAA;AAAA,QACrB,eAAA,EAAiB;AAAA,OAClB,CAAA;AAAA,IACH;AAEA,IAAA,OAAO,eAAA,CAAgB;AAAA,MACrB,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,UAAA;AAAA,MACA,SAAA;AAAA,MACA,mBAAmB,UAAA,CAAW,iBAAA;AAAA,MAC9B,mBAAmB,UAAA,CAAW,iBAAA;AAAA,MAC9B,oBAAoB,UAAA,CAAW,kBAAA;AAAA,MAC/B,OAAA,EAAS,UAAA;AAAA,MACT,YAAY,WAAA,CAAY,UAAA;AAAA,MACxB,MAAA,EAAQ,eAAA,CAAgB,WAAA,CAAY,MAAM,CAAA,IAAK,6BAAA;AAAA,MAC/C,QAAA,EAAU,IAAA;AAAA,MACV,eAAe,kBAAA,CAAmB;AAAA,QAChC,MAAA;AAAA,QACA,OAAA,EAAS,IAAA;AAAA,QACT,KAAA,EAAO;AAAA,OACR,CAAA;AAAA,MACD,OAAO,iBAAA,CAAkB;AAAA,QACvB,yBAAA,EAA2B,KAAA;AAAA,QAC3B,eAAA,EAAiB,UAAA;AAAA,QACjB,mBAAA,EAAqB,IAAA;AAAA,QACrB,eAAA,EAAiB;AAAA,OAClB;AAAA,KACF,CAAA;AAAA,EACH,SAAS,KAAA,EAAO;AACd,IAAA,MAAM,aACJ,KAAA,YAAiB,oCAAA,GACb,uBAAA,GACA,KAAA,YAAiB,gCACf,eAAA,GACA,aAAA;AACR,IAAA,MAAM,MAAA,GACJ,KAAA,YAAiB,KAAA,GACb,KAAA,CAAM,OAAA,GACN,yDAAA;AAEN,IAAA,OAAO,uBAAA,CAAwB;AAAA,MAC7B,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,UAAA;AAAA,MACA,cAAA;AAAA,MACA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,YAAA,EAAc,IAAA;AAAA,MACd,UAAA;AAAA,MACA,eAAA,EAAiB,SAAA;AAAA,MACjB,mBAAA,EAAqB,IAAA;AAAA,MACrB,eAAA,EAAiB;AAAA,KAClB,CAAA;AAAA,EACH;AACF;;;AC1yBA,SAAS,SAAS,KAAA,EAAkD;AAClE,EAAA,OAAO,OAAO,UAAU,QAAA,IAAY,KAAA,KAAU,QAAQ,CAAC,KAAA,CAAM,QAAQ,KAAK,CAAA;AAC5E;AAEA,SAAS,cAAc,KAAA,EAAmC;AACxD,EAAA,OACE,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,IACnB,KAAA,CAAM,MAAM,CAAC,IAAA,KAAS,OAAO,IAAA,KAAS,QAAQ,CAAA;AAElD;AAEA,SAAS,4BACP,KAAA,EACoC;AACpC,EAAA,IAAI,CAAC,QAAA,CAAS,KAAK,CAAA,EAAG;AACpB,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,OACE,KAAA,CAAM,OAAA,KAAY,mCAAA,KACjB,KAAA,CAAM,OAAA,KAAY,UAAA,IACjB,KAAA,CAAM,OAAA,KAAY,gBAAA,IAClB,KAAA,CAAM,OAAA,KAAY,iBAAA,CAAA,KACnB,KAAA,CAAM,UAAA,KAAe,MAAA,IACpB,KAAA,CAAM,UAAA,KAAe,QAAA,IACrB,KAAA,CAAM,UAAA,KAAe,KAAA,CAAA,KACtB,KAAA,CAAM,mBAAA,KAAwB,IAAA,IAC7B,OAAO,KAAA,CAAM,mBAAA,KAAwB,QAAA,CAAA,IACvC,cAAc,KAAA,CAAM,qBAAqB,CAAA,IACzC,aAAA,CAAc,KAAA,CAAM,mBAAmB,CAAA,IACvC,aAAA,CAAc,KAAA,CAAM,oBAAoB,CAAA,IACxC,OAAO,KAAA,CAAM,cAAA,KAAmB,QAAA,IAChC,OAAO,MAAM,cAAA,KAAmB,QAAA,IAChC,aAAA,CAAc,KAAA,CAAM,aAAa,CAAA,IACjC,QAAA,CAAS,KAAA,CAAM,KAAK,CAAA,IACpB,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM,UAAU,CAAA,IAC9B,QAAA,CAAS,MAAM,KAAK,CAAA;AAExB;AAEA,SAAS,2BACP,KAAA,EACkC;AAClC,EAAA,IAAI,2BAAA,CAA4B,KAAK,CAAA,EAAG;AACtC,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,IAAI,CAAC,QAAA,CAAS,KAAK,CAAA,EAAG;AACpB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,uBAAuB,KAAA,CAAM,cAAA;AACnC,EAAA,IAAI,2BAAA,CAA4B,oBAAoB,CAAA,EAAG;AACrD,IAAA,OAAO,oBAAA;AAAA,EACT;AAEA,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,+BACP,KAAA,EACuC;AACvC,EAAA,IAAI,CAAC,QAAA,CAAS,KAAK,CAAA,EAAG;AACpB,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,OAAA,CACG,KAAA,CAAM,WAAW,IAAA,IAAQ,OAAO,MAAM,MAAA,KAAW,QAAA,MACjD,KAAA,CAAM,QAAA,KAAa,IAAA,IAAQ,OAAO,MAAM,QAAA,KAAa,QAAA,CAAA,KACrD,KAAA,CAAM,WAAA,KAAgB,IAAA,IAAQ,OAAO,MAAM,WAAA,KAAgB,QAAA,CAAA,IAC5D,2BAAA,CAA4B,KAAA,CAAM,cAAc,CAAA;AAEpD;AAEO,SAAS,iCACd,MAAA,EACkC;AAClC,EAAA,OAAO,2BAA2B,MAAM,CAAA;AAC1C;AAEO,SAAS,6CACd,KAAA,EACgC;AAChC,EAAA,MAAM,cAAc,KAAA,EAAO,WAAA;AAC3B,EAAA,IACE,eACA,qBAAA,IAAyB,WAAA,IACzB,MAAM,OAAA,CAAQ,WAAA,CAAY,mBAAmB,CAAA,EAC7C;AACA,IAAA,OAAO,YAAY,mBAAA,CAAoB,MAAA;AAAA,MACrC;AAAA,KACF;AAAA,EACF;AAEA,EAAA,MAAM,YAA4C,EAAC;AACnD,EAAA,KAAA,MAAW,IAAA,IAAQ,KAAA,EAAO,QAAA,IAAY,EAAC,EAAG;AACxC,IAAA,MAAM,WAAW,IAAA,CAAK,QAAA;AACtB,IAAA,IAAI,CAAC,QAAA,CAAS,QAAQ,CAAA,EAAG;AACvB,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,cAAA,GAAiB,0BAAA,CAA2B,QAAA,CAAS,iBAAiB,CAAA;AAC5E,IAAA,MAAM,cAAA,GAAiB,0BAAA,CAA2B,QAAA,CAAS,MAAM,CAAA;AACjE,IAAA,MAAM,iBAAiB,cAAA,IAAkB,cAAA;AACzC,IAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,MAAA;AAAA,IACF;AAEA,IAAA,SAAA,CAAU,IAAA,CAAK;AAAA,MACb,MAAA,EAAQ,IAAA,CAAK,IAAA,EAAM,EAAA,IAAM,IAAA;AAAA,MACzB,QAAA,EAAU,IAAA,CAAK,IAAA,EAAM,IAAA,IAAQ,IAAA;AAAA,MAC7B,aACE,OAAO,IAAA,CAAK,WAAA,KAAgB,QAAA,GAAW,KAAK,WAAA,GAAc,IAAA;AAAA,MAC5D;AAAA,KACD,CAAA;AAAA,EACH;AAEA,EAAA,OAAO,SAAA;AACT;;;ACnHO,SAAS,yCAAyC,MAAA,EASjB;AACtC,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,qCAAA;AAAA,IACT,aAAa,MAAA,CAAO,WAAA,IAAA,iBAAe,IAAI,IAAA,IAAO,WAAA,EAAY;AAAA,IAC1D,QAAQ,MAAA,CAAO,MAAA;AAAA,IACf,UAAU,MAAA,CAAO,QAAA;AAAA,IACjB,YAAY,MAAA,CAAO,UAAA;AAAA,IACnB,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,YAAY,MAAA,CAAO,UAAA;AAAA,IACnB,UAAA,EAAY;AAAA,MACV,OAAA,EAAS,OAAO,UAAA,CAAW,OAAA;AAAA,MAC3B,mBAAA,EACE,MAAA,CAAO,UAAA,CAAW,iBAAA,EAAmB,WAAA,IAAe,IAAA;AAAA,MACtD,qBAAA,EAAuB,MAAA,CAAO,UAAA,CAAW,SAAA,CAAU,GAAA;AAAA,QACjD,CAAC,cAAc,SAAA,CAAU;AAAA,OAC3B;AAAA,MACA,mBAAA,EAAqB,MAAA,CAAO,UAAA,CAAW,iBAAA,CAAkB,GAAA;AAAA,QACvD,CAAC,cAAc,SAAA,CAAU;AAAA,OAC3B;AAAA,MACA,oBAAA,EAAsB,MAAA,CAAO,UAAA,CAAW,kBAAA,CAAmB,GAAA;AAAA,QACzD,CAAC,cAAc,SAAA,CAAU;AAAA,OAC3B;AAAA,MACA,UAAA,EAAY,OAAO,UAAA,CAAW,UAAA;AAAA,MAC9B,MAAA,EAAQ,OAAO,UAAA,CAAW,MAAA;AAAA,MAC1B,kBAAA,EAAoB,MAAA,CAAO,UAAA,CAAW,QAAA,EAAU,UAAA,IAAc;AAAA,KAChE;AAAA,IACA,cAAA,EAAgB,OAAO,UAAA,CAAW,cAAA;AAAA,IAClC,GAAI,OAAO,WAAA,GAAc,EAAE,aAAa,MAAA,CAAO,WAAA,KAAgB;AAAC,GAClE;AACF","file":"index.js","sourcesContent":["export const CONTRIBUTOR_SEARCH_METADATA_VERSION =\n \"ctx-contributor-search/v1\" as const;\nexport const CONTRIBUTOR_SEARCH_VALIDATION_VERSION =\n \"ctx-contributor-search-validation/v1\" as const;\n\nexport type ContributorSearchOutcome =\n | \"selected\"\n | \"shortlist_only\"\n | \"capability_miss\";\n\nexport type ContributorSearchConfidence = \"high\" | \"medium\" | \"low\";\n\nexport type ContributorSearchDegradedOutcomePolicy =\n | \"return_shortlist\"\n | \"allow_low_confidence_selected\";\n\nexport type ContributorSearchDegradedReasonCode =\n | \"judge_disabled\"\n | \"judge_missing\"\n | \"judge_timeout\"\n | \"judge_budget_exceeded\"\n | \"judge_invalid_output\"\n | \"judge_error\"\n | \"validator_rejected\"\n | \"ambiguous_shortlist\"\n | \"no_viable_candidates\";\n\nexport type ContributorSearchValidationCaseKind =\n | \"named_regression\"\n | \"generic_overlap\"\n | \"still_ambiguous\"\n | \"capability_miss\";\n\nexport type ContributorSearchValidatorStatus =\n | \"accepted\"\n | \"rejected\"\n | \"not_run\";\n\nexport interface SearchIntent {\n intentId: string;\n rawRequest: string;\n query: string;\n clause: string | null;\n metadata?: Record<string, unknown>;\n}\n\nexport interface SearchCandidateProvenance {\n source: string;\n query: string;\n rank: number | null;\n fetchedAt: string | null;\n metadata?: Record<string, unknown>;\n}\n\nexport interface SearchCandidate {\n candidateId: string;\n title: string;\n description?: string | null;\n rawIds?: Record<string, string>;\n rankFeatures?: Record<string, boolean | number | string | null>;\n provenance: SearchCandidateProvenance[];\n metadata?: Record<string, unknown>;\n}\n\nexport interface SearchShortlist {\n maxSize: number;\n candidates: SearchCandidate[];\n}\n\nexport interface ContributorSearchConfig {\n provider?: string | null;\n model?: string | null;\n timeoutMs?: number | null;\n budgetUsd?: string | null;\n disableJudge?: boolean;\n degradedOutcomePolicy?: ContributorSearchDegradedOutcomePolicy;\n maxShortlistSize?: number;\n}\n\nexport interface ContributorSearchResolvedConfig {\n provider: string | null;\n model: string | null;\n timeoutMs: number | null;\n budgetUsd: string | null;\n disableJudge: boolean;\n degradedOutcomePolicy: ContributorSearchDegradedOutcomePolicy;\n maxShortlistSize: number;\n}\n\nexport interface ContributorSearchJudgeUsage {\n promptTokens?: number;\n completionTokens?: number;\n totalTokens?: number;\n costUsd?: string | null;\n latencyMs?: number | null;\n}\n\nexport interface ContributorSearchJudgeInput {\n rawRequest: string;\n intents: SearchIntent[];\n shortlist: SearchShortlist;\n instructions?: string;\n policy: ContributorSearchResolvedConfig;\n}\n\nexport interface ContributorSearchJudgeContext {\n provider: string | null;\n model: string | null;\n timeoutMs: number | null;\n budgetUsd: string | null;\n traceLabel: string | null;\n}\n\nexport interface ContributorSearchJudgeResult {\n primaryCandidateId: string | null;\n relatedCandidateIds: string[];\n rejectedCandidateIds: string[];\n confidence: ContributorSearchConfidence;\n reason: string;\n usage?: ContributorSearchJudgeUsage;\n}\n\nexport interface ContributorSearchJudge {\n evaluate(\n input: ContributorSearchJudgeInput,\n context: ContributorSearchJudgeContext\n ): Promise<ContributorSearchJudgeResult>;\n}\n\nexport interface ContributorSearchDegradedOutcome {\n reasonCode: ContributorSearchDegradedReasonCode;\n message: string;\n}\n\nexport interface ContributorSearchMetadataSource {\n source: string;\n query: string;\n candidateCount: number;\n}\n\nexport interface ContributorSearchJudgeSnapshot {\n provider: string | null;\n model: string | null;\n timeoutMs: number | null;\n budgetUsd: string | null;\n disabled: boolean;\n applied: boolean;\n usage: ContributorSearchJudgeUsage | null;\n}\n\nexport interface ContributorSearchTraceSummary {\n usedDeterministicFallback: boolean;\n validatorStatus: ContributorSearchValidatorStatus;\n validatorReasonCode: string | null;\n validatorReason: string | null;\n}\n\nexport interface ContributorSearchMetadata {\n version: typeof CONTRIBUTOR_SEARCH_METADATA_VERSION;\n outcome: ContributorSearchOutcome;\n confidence: ContributorSearchConfidence;\n selectedCandidateId: string | null;\n shortlistCandidateIds: string[];\n relatedCandidateIds: string[];\n rejectedCandidateIds: string[];\n candidateCount: number;\n shortlistCount: number;\n intentQueries: string[];\n degraded: ContributorSearchDegradedOutcome | null;\n judge: ContributorSearchJudgeSnapshot;\n provenance: ContributorSearchMetadataSource[];\n trace: ContributorSearchTraceSummary;\n}\n\nexport interface ContributorSearchTraceRecord {\n toolId: string | null;\n toolName: string | null;\n timestampMs: number | null;\n searchMetadata: ContributorSearchMetadata;\n}\n\nexport interface ContributorSearchResolution {\n outcome: ContributorSearchOutcome;\n selectedCandidate: SearchCandidate | null;\n shortlist: SearchCandidate[];\n relatedCandidates: SearchCandidate[];\n rejectedCandidates: SearchCandidate[];\n confidence: ContributorSearchConfidence;\n reason: string;\n degraded: ContributorSearchDegradedOutcome | null;\n searchMetadata: ContributorSearchMetadata;\n}\n\nexport interface ContributorSearchValidationExpectation {\n outcome: ContributorSearchOutcome;\n selectedCandidateId?: string | null;\n degradedReasonCode?: ContributorSearchDegradedReasonCode | null;\n}\n\nexport interface ContributorSearchValidationArtifact {\n version: typeof CONTRIBUTOR_SEARCH_VALIDATION_VERSION;\n generatedAt: string;\n caseId: string;\n caseKind: ContributorSearchValidationCaseKind;\n rawRequest: string;\n intents: SearchIntent[];\n candidates: SearchCandidate[];\n resolution: {\n outcome: ContributorSearchOutcome;\n selectedCandidateId: string | null;\n shortlistCandidateIds: string[];\n relatedCandidateIds: string[];\n rejectedCandidateIds: string[];\n confidence: ContributorSearchConfidence;\n reason: string;\n degradedReasonCode: ContributorSearchDegradedReasonCode | null;\n };\n searchMetadata: ContributorSearchMetadata;\n expectation?: ContributorSearchValidationExpectation;\n}\n\nexport interface ResolveContributorSearchParams {\n rawRequest: string;\n intents: SearchIntent[];\n candidates: SearchCandidate[];\n judge?: ContributorSearchJudge;\n helperConfig?: ContributorSearchConfig;\n contributorConfig?: ContributorSearchConfig;\n overrides?: ContributorSearchConfig;\n instructions?: string;\n isCandidateValid?: (candidate: SearchCandidate) => boolean;\n traceLabel?: string | null;\n}\n\nexport class ContributorSearchBudgetExceededError extends Error {\n constructor(message = \"Contributor search budget exceeded\") {\n super(message);\n this.name = \"ContributorSearchBudgetExceededError\";\n }\n}\n","import {\n ContributorSearchBudgetExceededError,\n CONTRIBUTOR_SEARCH_METADATA_VERSION,\n type ContributorSearchConfig,\n type ContributorSearchConfidence,\n type ContributorSearchDegradedOutcome,\n type ContributorSearchDegradedReasonCode,\n type ContributorSearchJudge,\n type ContributorSearchJudgeContext,\n type ContributorSearchJudgeInput,\n type ContributorSearchJudgeSnapshot,\n type ContributorSearchJudgeUsage,\n type ContributorSearchMetadata,\n type ContributorSearchMetadataSource,\n type ContributorSearchResolution,\n type ContributorSearchResolvedConfig,\n type ContributorSearchTraceSummary,\n type ContributorSearchValidatorStatus,\n type ResolveContributorSearchParams,\n type SearchCandidate,\n type SearchCandidateProvenance,\n type SearchIntent,\n type SearchShortlist,\n} from \"./types.js\";\n\nconst DEFAULT_MAX_SHORTLIST_SIZE = 8;\nconst DEFAULT_DEGRADED_OUTCOME_POLICY = \"return_shortlist\";\nconst MAX_METADATA_PROVENANCE_ENTRIES = 8;\nconst MAX_METADATA_INTENT_QUERIES = 6;\nconst MAX_REASON_LENGTH = 240;\n\nclass ContributorSearchTimeoutError extends Error {\n constructor(message = \"Contributor search judge timed out\") {\n super(message);\n this.name = \"ContributorSearchTimeoutError\";\n }\n}\n\ntype JudgeValidationOutcome =\n | {\n ok: true;\n selectedCandidate: SearchCandidate | null;\n relatedCandidates: SearchCandidate[];\n rejectedCandidates: SearchCandidate[];\n }\n | {\n ok: false;\n reasonCode: \"judge_invalid_output\" | \"validator_rejected\";\n reason: string;\n };\n\nfunction normalizeString(value: string | null | undefined): string | null {\n if (typeof value !== \"string\") {\n return null;\n }\n const normalized = value.trim();\n return normalized.length > 0 ? normalized : null;\n}\n\nfunction uniqueStrings(values: readonly string[]): string[] {\n const deduped = new Set<string>();\n for (const value of values) {\n const normalized = normalizeString(value);\n if (!normalized) {\n continue;\n }\n deduped.add(normalized);\n }\n return [...deduped];\n}\n\nfunction truncateReason(reason: string): string {\n return reason.length <= MAX_REASON_LENGTH\n ? reason\n : `${reason.slice(0, MAX_REASON_LENGTH)}...`;\n}\n\nfunction candidateProvenanceKey(provenance: SearchCandidateProvenance): string {\n return [\n provenance.source,\n provenance.query,\n provenance.rank ?? \"\",\n provenance.fetchedAt ?? \"\",\n JSON.stringify(provenance.metadata ?? {}),\n ].join(\"::\");\n}\n\nfunction mergeProvenance(\n first: readonly SearchCandidateProvenance[],\n second: readonly SearchCandidateProvenance[]\n): SearchCandidateProvenance[] {\n const merged = new Map<string, SearchCandidateProvenance>();\n for (const provenance of [...first, ...second]) {\n merged.set(candidateProvenanceKey(provenance), provenance);\n }\n return [...merged.values()];\n}\n\nfunction mergeCandidates(\n first: SearchCandidate,\n second: SearchCandidate\n): SearchCandidate {\n return {\n ...first,\n description: first.description ?? second.description ?? null,\n rawIds: {\n ...(second.rawIds ?? {}),\n ...(first.rawIds ?? {}),\n },\n rankFeatures: {\n ...(second.rankFeatures ?? {}),\n ...(first.rankFeatures ?? {}),\n },\n provenance: mergeProvenance(first.provenance, second.provenance),\n metadata: {\n ...(second.metadata ?? {}),\n ...(first.metadata ?? {}),\n },\n };\n}\n\nfunction isCandidateSelectable(\n candidate: SearchCandidate,\n validateCandidate: (candidate: SearchCandidate) => boolean\n): boolean {\n return validateCandidate(candidate);\n}\n\nfunction summarizeProvenance(\n candidates: readonly SearchCandidate[]\n): ContributorSearchMetadataSource[] {\n const grouped = new Map<\n string,\n {\n source: string;\n query: string;\n candidateIds: Set<string>;\n }\n >();\n\n for (const candidate of candidates) {\n for (const provenance of candidate.provenance) {\n const key = `${provenance.source}::${provenance.query}`;\n const existing = grouped.get(key);\n if (existing) {\n existing.candidateIds.add(candidate.candidateId);\n continue;\n }\n grouped.set(key, {\n source: provenance.source,\n query: provenance.query,\n candidateIds: new Set([candidate.candidateId]),\n });\n }\n }\n\n return [...grouped.values()]\n .map((entry) => ({\n source: entry.source,\n query: entry.query,\n candidateCount: entry.candidateIds.size,\n }))\n .slice(0, MAX_METADATA_PROVENANCE_ENTRIES);\n}\n\nfunction buildJudgeSnapshot(params: {\n config: ContributorSearchResolvedConfig;\n applied: boolean;\n usage: ContributorSearchJudgeUsage | null;\n}): ContributorSearchJudgeSnapshot {\n return {\n provider: params.config.provider,\n model: params.config.model,\n timeoutMs: params.config.timeoutMs,\n budgetUsd: params.config.budgetUsd,\n disabled: params.config.disableJudge,\n applied: params.applied,\n usage: params.usage,\n };\n}\n\nfunction buildTraceSummary(params: {\n usedDeterministicFallback: boolean;\n validatorStatus: ContributorSearchValidatorStatus;\n validatorReasonCode: string | null;\n validatorReason: string | null;\n}): ContributorSearchTraceSummary {\n return {\n usedDeterministicFallback: params.usedDeterministicFallback,\n validatorStatus: params.validatorStatus,\n validatorReasonCode: params.validatorReasonCode,\n validatorReason: params.validatorReason,\n };\n}\n\nfunction buildSearchMetadata(params: {\n intents: readonly SearchIntent[];\n candidates: readonly SearchCandidate[];\n shortlist: readonly SearchCandidate[];\n selectedCandidate: SearchCandidate | null;\n relatedCandidates: readonly SearchCandidate[];\n rejectedCandidates: readonly SearchCandidate[];\n outcome: ContributorSearchResolution[\"outcome\"];\n confidence: ContributorSearchConfidence;\n degraded: ContributorSearchDegradedOutcome | null;\n judgeSnapshot: ContributorSearchJudgeSnapshot;\n trace: ContributorSearchTraceSummary;\n}): ContributorSearchMetadata {\n const intentQueries = uniqueStrings(params.intents.map((intent) => intent.query))\n .slice(0, MAX_METADATA_INTENT_QUERIES);\n\n return {\n version: CONTRIBUTOR_SEARCH_METADATA_VERSION,\n outcome: params.outcome,\n confidence: params.confidence,\n selectedCandidateId: params.selectedCandidate?.candidateId ?? null,\n shortlistCandidateIds: params.shortlist.map((candidate) => candidate.candidateId),\n relatedCandidateIds: params.relatedCandidates.map(\n (candidate) => candidate.candidateId\n ),\n rejectedCandidateIds: params.rejectedCandidates.map(\n (candidate) => candidate.candidateId\n ),\n candidateCount: params.candidates.length,\n shortlistCount: params.shortlist.length,\n intentQueries,\n degraded: params.degraded,\n judge: params.judgeSnapshot,\n provenance: summarizeProvenance(params.candidates),\n trace: params.trace,\n };\n}\n\nfunction buildResolution(params: {\n intents: readonly SearchIntent[];\n candidates: readonly SearchCandidate[];\n shortlist: readonly SearchCandidate[];\n selectedCandidate: SearchCandidate | null;\n relatedCandidates: readonly SearchCandidate[];\n rejectedCandidates: readonly SearchCandidate[];\n outcome: ContributorSearchResolution[\"outcome\"];\n confidence: ContributorSearchConfidence;\n reason: string;\n degraded: ContributorSearchDegradedOutcome | null;\n judgeSnapshot: ContributorSearchJudgeSnapshot;\n trace: ContributorSearchTraceSummary;\n}): ContributorSearchResolution {\n const searchMetadata = buildSearchMetadata({\n intents: params.intents,\n candidates: params.candidates,\n shortlist: params.shortlist,\n selectedCandidate: params.selectedCandidate,\n relatedCandidates: params.relatedCandidates,\n rejectedCandidates: params.rejectedCandidates,\n outcome: params.outcome,\n confidence: params.confidence,\n degraded: params.degraded,\n judgeSnapshot: params.judgeSnapshot,\n trace: params.trace,\n });\n\n return {\n outcome: params.outcome,\n selectedCandidate: params.selectedCandidate,\n shortlist: [...params.shortlist],\n relatedCandidates: [...params.relatedCandidates],\n rejectedCandidates: [...params.rejectedCandidates],\n confidence: params.confidence,\n reason: truncateReason(params.reason),\n degraded: params.degraded,\n searchMetadata,\n };\n}\n\nfunction dedupeCandidateIds(ids: readonly string[]): {\n ids: string[];\n hadDuplicates: boolean;\n} {\n const deduped: string[] = [];\n const seen = new Set<string>();\n let hadDuplicates = false;\n\n for (const id of ids) {\n const normalized = normalizeString(id);\n if (!normalized) {\n continue;\n }\n if (seen.has(normalized)) {\n hadDuplicates = true;\n continue;\n }\n seen.add(normalized);\n deduped.push(normalized);\n }\n\n return {\n ids: deduped,\n hadDuplicates,\n };\n}\n\nfunction validateJudgeSelection(params: {\n shortlist: readonly SearchCandidate[];\n primaryCandidateId: string | null;\n relatedCandidateIds: readonly string[];\n rejectedCandidateIds: readonly string[];\n validateCandidate: (candidate: SearchCandidate) => boolean;\n}): JudgeValidationOutcome {\n const shortlistById = new Map<string, SearchCandidate>();\n for (const candidate of params.shortlist) {\n shortlistById.set(candidate.candidateId, candidate);\n }\n\n const normalizedPrimaryCandidateId = normalizeString(params.primaryCandidateId);\n const relatedCandidateIds = dedupeCandidateIds(params.relatedCandidateIds);\n const rejectedCandidateIds = dedupeCandidateIds(params.rejectedCandidateIds);\n\n if (\n relatedCandidateIds.hadDuplicates ||\n rejectedCandidateIds.hadDuplicates\n ) {\n return {\n ok: false,\n reasonCode: \"judge_invalid_output\",\n reason: \"Judge returned duplicate candidate ids within a bucket.\",\n };\n }\n\n const referencedIds = new Set<string>();\n if (normalizedPrimaryCandidateId) {\n referencedIds.add(normalizedPrimaryCandidateId);\n }\n for (const id of [...relatedCandidateIds.ids, ...rejectedCandidateIds.ids]) {\n if (referencedIds.has(id)) {\n return {\n ok: false,\n reasonCode: \"validator_rejected\",\n reason: \"Judge referenced the same candidate across multiple buckets.\",\n };\n }\n referencedIds.add(id);\n }\n\n if (\n normalizedPrimaryCandidateId &&\n !shortlistById.has(normalizedPrimaryCandidateId)\n ) {\n return {\n ok: false,\n reasonCode: \"validator_rejected\",\n reason: \"Judge selected a candidate outside the bounded shortlist.\",\n };\n }\n\n for (const id of [...relatedCandidateIds.ids, ...rejectedCandidateIds.ids]) {\n if (!shortlistById.has(id)) {\n return {\n ok: false,\n reasonCode: \"validator_rejected\",\n reason: \"Judge referenced a candidate outside the bounded shortlist.\",\n };\n }\n }\n\n const selectedCandidate = normalizedPrimaryCandidateId\n ? shortlistById.get(normalizedPrimaryCandidateId) ?? null\n : null;\n\n if (\n selectedCandidate &&\n !isCandidateSelectable(selectedCandidate, params.validateCandidate)\n ) {\n return {\n ok: false,\n reasonCode: \"validator_rejected\",\n reason:\n \"Judge selected a candidate that failed deterministic contributor validation.\",\n };\n }\n\n return {\n ok: true,\n selectedCandidate,\n relatedCandidates: relatedCandidateIds.ids\n .map((id) => shortlistById.get(id))\n .filter((candidate): candidate is SearchCandidate => Boolean(candidate)),\n rejectedCandidates: rejectedCandidateIds.ids\n .map((id) => shortlistById.get(id))\n .filter((candidate): candidate is SearchCandidate => Boolean(candidate)),\n };\n}\n\nasync function evaluateJudge(params: {\n judge: ContributorSearchJudge;\n input: ContributorSearchJudgeInput;\n context: ContributorSearchJudgeContext;\n timeoutMs: number | null;\n}): Promise<ReturnType<ContributorSearchJudge[\"evaluate\"]>> {\n if (!params.timeoutMs || params.timeoutMs <= 0) {\n return params.judge.evaluate(params.input, params.context);\n }\n\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n try {\n return await Promise.race([\n params.judge.evaluate(params.input, params.context),\n new Promise<never>((_, reject) => {\n timeoutId = setTimeout(() => {\n reject(new ContributorSearchTimeoutError());\n }, params.timeoutMs ?? 0);\n }),\n ]);\n } finally {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n }\n}\n\nfunction buildFallbackResolution(params: {\n intents: readonly SearchIntent[];\n candidates: readonly SearchCandidate[];\n validShortlist: readonly SearchCandidate[];\n reasonCode: ContributorSearchDegradedReasonCode;\n reason: string;\n config: ContributorSearchResolvedConfig;\n judgeApplied: boolean;\n judgeUsage: ContributorSearchJudgeUsage | null;\n validatorStatus: ContributorSearchValidatorStatus;\n validatorReasonCode: string | null;\n validatorReason: string | null;\n}): ContributorSearchResolution {\n if (params.validShortlist.length === 0) {\n return buildResolution({\n intents: params.intents,\n candidates: params.candidates,\n shortlist: [],\n selectedCandidate: null,\n relatedCandidates: [],\n rejectedCandidates: [],\n outcome: \"capability_miss\",\n confidence: \"low\",\n reason: params.reason,\n degraded: {\n reasonCode: \"no_viable_candidates\",\n message: truncateReason(params.reason),\n },\n judgeSnapshot: buildJudgeSnapshot({\n config: params.config,\n applied: params.judgeApplied,\n usage: params.judgeUsage,\n }),\n trace: buildTraceSummary({\n usedDeterministicFallback: true,\n validatorStatus: params.validatorStatus,\n validatorReasonCode: params.validatorReasonCode,\n validatorReason: params.validatorReason,\n }),\n });\n }\n\n if (\n params.validShortlist.length === 1 &&\n params.config.degradedOutcomePolicy === \"allow_low_confidence_selected\"\n ) {\n return buildResolution({\n intents: params.intents,\n candidates: params.candidates,\n shortlist: params.validShortlist,\n selectedCandidate: params.validShortlist[0] ?? null,\n relatedCandidates: [],\n rejectedCandidates: [],\n outcome: \"selected\",\n confidence: \"low\",\n reason: params.reason,\n degraded: {\n reasonCode: params.reasonCode,\n message: truncateReason(params.reason),\n },\n judgeSnapshot: buildJudgeSnapshot({\n config: params.config,\n applied: params.judgeApplied,\n usage: params.judgeUsage,\n }),\n trace: buildTraceSummary({\n usedDeterministicFallback: true,\n validatorStatus: params.validatorStatus,\n validatorReasonCode: params.validatorReasonCode,\n validatorReason: params.validatorReason,\n }),\n });\n }\n\n return buildResolution({\n intents: params.intents,\n candidates: params.candidates,\n shortlist: params.validShortlist,\n selectedCandidate: null,\n relatedCandidates: [],\n rejectedCandidates: [],\n outcome: \"shortlist_only\",\n confidence: \"low\",\n reason: params.reason,\n degraded: {\n reasonCode: params.reasonCode,\n message: truncateReason(params.reason),\n },\n judgeSnapshot: buildJudgeSnapshot({\n config: params.config,\n applied: params.judgeApplied,\n usage: params.judgeUsage,\n }),\n trace: buildTraceSummary({\n usedDeterministicFallback: true,\n validatorStatus: params.validatorStatus,\n validatorReasonCode: params.validatorReasonCode,\n validatorReason: params.validatorReason,\n }),\n });\n}\n\nexport function createSearchIntent(params: {\n rawRequest: string;\n query: string;\n intentId?: string;\n clause?: string | null;\n metadata?: Record<string, unknown>;\n}): SearchIntent {\n const normalizedQuery = normalizeString(params.query) ?? params.rawRequest.trim();\n const fallbackIntentId = normalizedQuery\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\")\n .slice(0, 80);\n\n return {\n intentId: (params.intentId ?? fallbackIntentId) || \"search-intent\",\n rawRequest: params.rawRequest.trim(),\n query: normalizedQuery,\n clause: normalizeString(params.clause),\n ...(params.metadata ? { metadata: params.metadata } : {}),\n };\n}\n\nexport function dedupeSearchCandidates(\n candidates: readonly SearchCandidate[]\n): SearchCandidate[] {\n const deduped = new Map<string, SearchCandidate>();\n for (const candidate of candidates) {\n const normalizedCandidateId = normalizeString(candidate.candidateId);\n if (!normalizedCandidateId) {\n continue;\n }\n const normalizedCandidate: SearchCandidate = {\n ...candidate,\n candidateId: normalizedCandidateId,\n title: candidate.title.trim(),\n description: normalizeString(candidate.description),\n rawIds: candidate.rawIds ?? {},\n rankFeatures: candidate.rankFeatures ?? {},\n provenance: candidate.provenance ?? [],\n metadata: candidate.metadata ?? {},\n };\n const existing = deduped.get(normalizedCandidateId);\n deduped.set(\n normalizedCandidateId,\n existing\n ? mergeCandidates(existing, normalizedCandidate)\n : normalizedCandidate\n );\n }\n return [...deduped.values()];\n}\n\nexport function buildSearchShortlist(\n candidates: readonly SearchCandidate[],\n maxShortlistSize = DEFAULT_MAX_SHORTLIST_SIZE\n): SearchShortlist {\n const cappedSize = Math.max(1, Math.floor(maxShortlistSize));\n return {\n maxSize: cappedSize,\n candidates: dedupeSearchCandidates(candidates).slice(0, cappedSize),\n };\n}\n\nexport function mergeContributorSearchConfig(\n ...configs: ReadonlyArray<ContributorSearchConfig | undefined>\n): ContributorSearchResolvedConfig {\n const resolved: ContributorSearchResolvedConfig = {\n provider: null,\n model: null,\n timeoutMs: null,\n budgetUsd: null,\n disableJudge: false,\n degradedOutcomePolicy: DEFAULT_DEGRADED_OUTCOME_POLICY,\n maxShortlistSize: DEFAULT_MAX_SHORTLIST_SIZE,\n };\n\n for (const config of configs) {\n if (!config) {\n continue;\n }\n if (\"provider\" in config) {\n resolved.provider = normalizeString(config.provider);\n }\n if (\"model\" in config) {\n resolved.model = normalizeString(config.model);\n }\n if (\"timeoutMs\" in config) {\n resolved.timeoutMs =\n typeof config.timeoutMs === \"number\" && Number.isFinite(config.timeoutMs)\n ? Math.max(0, Math.floor(config.timeoutMs))\n : null;\n }\n if (\"budgetUsd\" in config) {\n resolved.budgetUsd = normalizeString(config.budgetUsd);\n }\n if (\"disableJudge\" in config && typeof config.disableJudge === \"boolean\") {\n resolved.disableJudge = config.disableJudge;\n }\n if (\n config.degradedOutcomePolicy === \"return_shortlist\" ||\n config.degradedOutcomePolicy === \"allow_low_confidence_selected\"\n ) {\n resolved.degradedOutcomePolicy = config.degradedOutcomePolicy;\n }\n if (\n typeof config.maxShortlistSize === \"number\" &&\n Number.isFinite(config.maxShortlistSize)\n ) {\n resolved.maxShortlistSize = Math.max(1, Math.floor(config.maxShortlistSize));\n }\n }\n\n return resolved;\n}\n\nexport function attachContributorSearchMetadata<T extends Record<string, unknown>>(\n data: T,\n resolution: ContributorSearchResolution\n): T & { searchMetadata: ContributorSearchMetadata } {\n return {\n ...data,\n searchMetadata: resolution.searchMetadata,\n };\n}\n\nexport async function resolveContributorSearch(\n params: ResolveContributorSearchParams\n): Promise<ContributorSearchResolution> {\n const config = mergeContributorSearchConfig(\n params.helperConfig,\n params.contributorConfig,\n params.overrides\n );\n const candidates = dedupeSearchCandidates(params.candidates);\n const shortlist = buildSearchShortlist(candidates, config.maxShortlistSize).candidates;\n const validateCandidate = params.isCandidateValid ?? (() => true);\n const validShortlist = shortlist.filter((candidate) =>\n isCandidateSelectable(candidate, validateCandidate)\n );\n const judge = params.judge;\n\n if (shortlist.length === 0) {\n return buildFallbackResolution({\n intents: params.intents,\n candidates,\n validShortlist,\n reasonCode: \"no_viable_candidates\",\n reason:\n \"No viable candidates survived deterministic gathering before judging.\",\n config,\n judgeApplied: false,\n judgeUsage: null,\n validatorStatus: \"not_run\",\n validatorReasonCode: null,\n validatorReason: null,\n });\n }\n\n if (config.disableJudge || !judge) {\n return buildFallbackResolution({\n intents: params.intents,\n candidates,\n validShortlist,\n reasonCode: !judge ? \"judge_missing\" : \"judge_disabled\",\n reason: !judge\n ? \"No contributor search judge was configured for this resolution.\"\n : \"Contributor search judge was disabled for this resolution.\",\n config,\n judgeApplied: false,\n judgeUsage: null,\n validatorStatus: \"not_run\",\n validatorReasonCode: null,\n validatorReason: null,\n });\n }\n\n const judgeInput: ContributorSearchJudgeInput = {\n rawRequest: params.rawRequest,\n intents: params.intents,\n shortlist: {\n maxSize: config.maxShortlistSize,\n candidates: shortlist,\n },\n ...(params.instructions ? { instructions: params.instructions } : {}),\n policy: config,\n };\n const judgeContext: ContributorSearchJudgeContext = {\n provider: config.provider,\n model: config.model,\n timeoutMs: config.timeoutMs,\n budgetUsd: config.budgetUsd,\n traceLabel: params.traceLabel ?? null,\n };\n\n let judgeUsage: ContributorSearchJudgeUsage | null = null;\n try {\n const judgeResult = await evaluateJudge({\n judge,\n input: judgeInput,\n context: judgeContext,\n timeoutMs: config.timeoutMs,\n });\n judgeUsage = judgeResult.usage ?? null;\n\n const validation = validateJudgeSelection({\n shortlist,\n primaryCandidateId: judgeResult.primaryCandidateId,\n relatedCandidateIds: judgeResult.relatedCandidateIds,\n rejectedCandidateIds: judgeResult.rejectedCandidateIds,\n validateCandidate,\n });\n\n if (!validation.ok) {\n return buildFallbackResolution({\n intents: params.intents,\n candidates,\n validShortlist,\n reasonCode: validation.reasonCode,\n reason: validation.reason,\n config,\n judgeApplied: true,\n judgeUsage,\n validatorStatus: \"rejected\",\n validatorReasonCode: validation.reasonCode,\n validatorReason: validation.reason,\n });\n }\n\n if (!validation.selectedCandidate) {\n return buildFallbackResolution({\n intents: params.intents,\n candidates,\n validShortlist,\n reasonCode: \"ambiguous_shortlist\",\n reason:\n normalizeString(judgeResult.reason) ??\n \"Judge declined to select a single grounded candidate.\",\n config,\n judgeApplied: true,\n judgeUsage,\n validatorStatus: \"accepted\",\n validatorReasonCode: null,\n validatorReason: null,\n });\n }\n\n return buildResolution({\n intents: params.intents,\n candidates,\n shortlist,\n selectedCandidate: validation.selectedCandidate,\n relatedCandidates: validation.relatedCandidates,\n rejectedCandidates: validation.rejectedCandidates,\n outcome: \"selected\",\n confidence: judgeResult.confidence,\n reason: normalizeString(judgeResult.reason) ?? \"Judge selected a candidate.\",\n degraded: null,\n judgeSnapshot: buildJudgeSnapshot({\n config,\n applied: true,\n usage: judgeUsage,\n }),\n trace: buildTraceSummary({\n usedDeterministicFallback: false,\n validatorStatus: \"accepted\",\n validatorReasonCode: null,\n validatorReason: null,\n }),\n });\n } catch (error) {\n const reasonCode: ContributorSearchDegradedReasonCode =\n error instanceof ContributorSearchBudgetExceededError\n ? \"judge_budget_exceeded\"\n : error instanceof ContributorSearchTimeoutError\n ? \"judge_timeout\"\n : \"judge_error\";\n const reason =\n error instanceof Error\n ? error.message\n : \"Contributor search judge failed with a non-Error value.\";\n\n return buildFallbackResolution({\n intents: params.intents,\n candidates,\n validShortlist,\n reasonCode,\n reason,\n config,\n judgeApplied: true,\n judgeUsage,\n validatorStatus: \"not_run\",\n validatorReasonCode: null,\n validatorReason: null,\n });\n }\n}\n","import type { QueryDeveloperTrace } from \"../../client/types.js\";\nimport {\n CONTRIBUTOR_SEARCH_METADATA_VERSION,\n type ContributorSearchMetadata,\n type ContributorSearchTraceRecord,\n} from \"./types.js\";\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction isStringArray(value: unknown): value is string[] {\n return (\n Array.isArray(value) &&\n value.every((item) => typeof item === \"string\")\n );\n}\n\nfunction isContributorSearchMetadata(\n value: unknown\n): value is ContributorSearchMetadata {\n if (!isRecord(value)) {\n return false;\n }\n\n return (\n value.version === CONTRIBUTOR_SEARCH_METADATA_VERSION &&\n (value.outcome === \"selected\" ||\n value.outcome === \"shortlist_only\" ||\n value.outcome === \"capability_miss\") &&\n (value.confidence === \"high\" ||\n value.confidence === \"medium\" ||\n value.confidence === \"low\") &&\n (value.selectedCandidateId === null ||\n typeof value.selectedCandidateId === \"string\") &&\n isStringArray(value.shortlistCandidateIds) &&\n isStringArray(value.relatedCandidateIds) &&\n isStringArray(value.rejectedCandidateIds) &&\n typeof value.candidateCount === \"number\" &&\n typeof value.shortlistCount === \"number\" &&\n isStringArray(value.intentQueries) &&\n isRecord(value.judge) &&\n Array.isArray(value.provenance) &&\n isRecord(value.trace)\n );\n}\n\nfunction extractMetadataFromUnknown(\n value: unknown\n): ContributorSearchMetadata | null {\n if (isContributorSearchMetadata(value)) {\n return value;\n }\n\n if (!isRecord(value)) {\n return null;\n }\n\n const nestedSearchMetadata = value.searchMetadata;\n if (isContributorSearchMetadata(nestedSearchMetadata)) {\n return nestedSearchMetadata;\n }\n\n return null;\n}\n\nfunction isContributorSearchTraceRecord(\n value: unknown\n): value is ContributorSearchTraceRecord {\n if (!isRecord(value)) {\n return false;\n }\n\n return (\n (value.toolId === null || typeof value.toolId === \"string\") &&\n (value.toolName === null || typeof value.toolName === \"string\") &&\n (value.timestampMs === null || typeof value.timestampMs === \"number\") &&\n isContributorSearchMetadata(value.searchMetadata)\n );\n}\n\nexport function extractContributorSearchMetadata(\n result: unknown\n): ContributorSearchMetadata | null {\n return extractMetadataFromUnknown(result);\n}\n\nexport function extractContributorSearchesFromDeveloperTrace(\n trace: QueryDeveloperTrace | undefined\n): ContributorSearchTraceRecord[] {\n const diagnostics = trace?.diagnostics;\n if (\n diagnostics &&\n \"contributorSearches\" in diagnostics &&\n Array.isArray(diagnostics.contributorSearches)\n ) {\n return diagnostics.contributorSearches.filter(\n isContributorSearchTraceRecord\n );\n }\n\n const extracted: ContributorSearchTraceRecord[] = [];\n for (const step of trace?.timeline ?? []) {\n const metadata = step.metadata;\n if (!isRecord(metadata)) {\n continue;\n }\n\n const directMetadata = extractMetadataFromUnknown(metadata.contributorSearch);\n const resultMetadata = extractMetadataFromUnknown(metadata.result);\n const searchMetadata = directMetadata ?? resultMetadata;\n if (!searchMetadata) {\n continue;\n }\n\n extracted.push({\n toolId: step.tool?.id ?? null,\n toolName: step.tool?.name ?? null,\n timestampMs:\n typeof step.timestampMs === \"number\" ? step.timestampMs : null,\n searchMetadata,\n });\n }\n\n return extracted;\n}\n","import {\n CONTRIBUTOR_SEARCH_VALIDATION_VERSION,\n type ContributorSearchValidationArtifact,\n type ContributorSearchValidationCaseKind,\n type ContributorSearchValidationExpectation,\n type ContributorSearchResolution,\n type SearchCandidate,\n type SearchIntent,\n} from \"./types.js\";\n\nexport function buildContributorSearchValidationArtifact(params: {\n caseId: string;\n caseKind: ContributorSearchValidationCaseKind;\n rawRequest: string;\n intents: SearchIntent[];\n candidates: SearchCandidate[];\n resolution: ContributorSearchResolution;\n expectation?: ContributorSearchValidationExpectation;\n generatedAt?: string;\n}): ContributorSearchValidationArtifact {\n return {\n version: CONTRIBUTOR_SEARCH_VALIDATION_VERSION,\n generatedAt: params.generatedAt ?? new Date().toISOString(),\n caseId: params.caseId,\n caseKind: params.caseKind,\n rawRequest: params.rawRequest,\n intents: params.intents,\n candidates: params.candidates,\n resolution: {\n outcome: params.resolution.outcome,\n selectedCandidateId:\n params.resolution.selectedCandidate?.candidateId ?? null,\n shortlistCandidateIds: params.resolution.shortlist.map(\n (candidate) => candidate.candidateId\n ),\n relatedCandidateIds: params.resolution.relatedCandidates.map(\n (candidate) => candidate.candidateId\n ),\n rejectedCandidateIds: params.resolution.rejectedCandidates.map(\n (candidate) => candidate.candidateId\n ),\n confidence: params.resolution.confidence,\n reason: params.resolution.reason,\n degradedReasonCode: params.resolution.degraded?.reasonCode ?? null,\n },\n searchMetadata: params.resolution.searchMetadata,\n ...(params.expectation ? { expectation: params.expectation } : {}),\n };\n}\n"]}
|
package/dist/index.cjs
CHANGED
|
@@ -238,6 +238,47 @@ var Query = class {
|
|
|
238
238
|
constructor(client) {
|
|
239
239
|
this.client = client;
|
|
240
240
|
}
|
|
241
|
+
normalizeResult(result) {
|
|
242
|
+
const candidate = result;
|
|
243
|
+
if (candidate.outcomeType === "clarification_required" && "clarification" in candidate && candidate.clarification) {
|
|
244
|
+
return candidate;
|
|
245
|
+
}
|
|
246
|
+
if (candidate.outcomeType === "capability_miss" && "capabilityMiss" in candidate && candidate.capabilityMiss) {
|
|
247
|
+
return candidate;
|
|
248
|
+
}
|
|
249
|
+
return {
|
|
250
|
+
...candidate,
|
|
251
|
+
outcomeType: "answer"
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
buildPolicyErrorEvent(params) {
|
|
255
|
+
if (params.clarificationPolicy !== "error") {
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
if (params.result.outcomeType === "clarification_required") {
|
|
259
|
+
return {
|
|
260
|
+
type: "error",
|
|
261
|
+
error: params.result.response,
|
|
262
|
+
code: "clarification_required",
|
|
263
|
+
reasonCode: "clarification_required",
|
|
264
|
+
outcomeType: "clarification_required",
|
|
265
|
+
clarification: params.result.clarification,
|
|
266
|
+
querySession: params.result.querySession
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
if (params.result.outcomeType === "capability_miss") {
|
|
270
|
+
return {
|
|
271
|
+
type: "error",
|
|
272
|
+
error: params.result.response,
|
|
273
|
+
code: "capability_miss",
|
|
274
|
+
reasonCode: "capability_miss",
|
|
275
|
+
outcomeType: "capability_miss",
|
|
276
|
+
capabilityMiss: params.result.capabilityMiss,
|
|
277
|
+
querySession: params.result.querySession
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
return void 0;
|
|
281
|
+
}
|
|
241
282
|
buildSyntheticTraceFromRunResult(params) {
|
|
242
283
|
const timeline = params.toolsUsed.map((tool, index) => ({
|
|
243
284
|
stepType: "tool-call",
|
|
@@ -380,6 +421,7 @@ var Query = class {
|
|
|
380
421
|
async run(options) {
|
|
381
422
|
const opts = typeof options === "string" ? { query: options } : options;
|
|
382
423
|
let terminalError;
|
|
424
|
+
let finalResult;
|
|
383
425
|
for await (const event of this.stream(opts)) {
|
|
384
426
|
if (event.type === "error") {
|
|
385
427
|
terminalError = {
|
|
@@ -391,9 +433,12 @@ var Query = class {
|
|
|
391
433
|
continue;
|
|
392
434
|
}
|
|
393
435
|
if (event.type === "done") {
|
|
394
|
-
|
|
436
|
+
finalResult = event.result;
|
|
395
437
|
}
|
|
396
438
|
}
|
|
439
|
+
if (finalResult) {
|
|
440
|
+
return finalResult;
|
|
441
|
+
}
|
|
397
442
|
if (terminalError) {
|
|
398
443
|
throw new ContextError(terminalError.error, terminalError.code);
|
|
399
444
|
}
|
|
@@ -445,7 +490,11 @@ var Query = class {
|
|
|
445
490
|
body: JSON.stringify({
|
|
446
491
|
query: opts.query,
|
|
447
492
|
tools: opts.tools,
|
|
448
|
-
|
|
493
|
+
resumeFrom: opts.resumeFrom,
|
|
494
|
+
forkFrom: opts.forkFrom,
|
|
495
|
+
clarificationPolicy: opts.clarificationPolicy,
|
|
496
|
+
answerModelId: opts.answerModelId,
|
|
497
|
+
responseShape: opts.responseShape,
|
|
449
498
|
includeData: opts.includeData,
|
|
450
499
|
includeDataUrl: opts.includeDataUrl,
|
|
451
500
|
includeDeveloperTrace: opts.includeDeveloperTrace,
|
|
@@ -483,22 +532,31 @@ var Query = class {
|
|
|
483
532
|
return event;
|
|
484
533
|
}
|
|
485
534
|
if (event.type === "done") {
|
|
535
|
+
const normalizedResult = this.normalizeResult(event.result);
|
|
486
536
|
let mergedTrace = this.mergeDeveloperTrace(
|
|
487
537
|
aggregatedTrace,
|
|
488
|
-
|
|
538
|
+
normalizedResult.developerTrace
|
|
489
539
|
);
|
|
490
540
|
if (!mergedTrace && opts.includeDeveloperTrace) {
|
|
491
541
|
mergedTrace = statusTimeline.length > 0 ? this.buildSyntheticTraceFromStreamStatus({
|
|
492
542
|
statusTimeline,
|
|
493
|
-
toolsUsed:
|
|
494
|
-
durationMs:
|
|
543
|
+
toolsUsed: normalizedResult.toolsUsed,
|
|
544
|
+
durationMs: normalizedResult.durationMs
|
|
495
545
|
}) : this.buildSyntheticTraceFromRunResult({
|
|
496
|
-
toolsUsed:
|
|
497
|
-
durationMs:
|
|
546
|
+
toolsUsed: normalizedResult.toolsUsed,
|
|
547
|
+
durationMs: normalizedResult.durationMs
|
|
498
548
|
});
|
|
499
549
|
}
|
|
500
550
|
if (mergedTrace) {
|
|
501
|
-
|
|
551
|
+
normalizedResult.developerTrace = mergedTrace;
|
|
552
|
+
}
|
|
553
|
+
event.result = normalizedResult;
|
|
554
|
+
const policyErrorEvent = this.buildPolicyErrorEvent({
|
|
555
|
+
result: normalizedResult,
|
|
556
|
+
clarificationPolicy: opts.clarificationPolicy
|
|
557
|
+
});
|
|
558
|
+
if (policyErrorEvent) {
|
|
559
|
+
return policyErrorEvent;
|
|
502
560
|
}
|
|
503
561
|
}
|
|
504
562
|
return event;
|