hs-code-classifier-mcp 1.0.16 → 1.0.18
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/CHANGELOG.md +6 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +20 -0
- package/dist/constants.js.map +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +729 -0
- package/dist/index.js.map +1 -0
- package/dist/schemas/classify.d.ts.map +1 -0
- package/dist/schemas/classify.js +24 -0
- package/dist/schemas/classify.js.map +1 -0
- package/dist/schemas/validate.d.ts.map +1 -0
- package/dist/schemas/validate.js +26 -0
- package/dist/schemas/validate.js.map +1 -0
- package/dist/services/claude-client.d.ts.map +1 -0
- package/dist/services/claude-client.js +98 -0
- package/dist/services/claude-client.js.map +1 -0
- package/dist/services/hsping-client.d.ts.map +1 -0
- package/dist/services/hsping-client.js +33 -0
- package/dist/services/hsping-client.js.map +1 -0
- package/dist/services/redis.d.ts.map +1 -0
- package/dist/services/redis.js +66 -0
- package/dist/services/redis.js.map +1 -0
- package/dist/tools/classify.d.ts.map +1 -0
- package/dist/tools/classify.js +193 -0
- package/dist/tools/classify.js.map +1 -0
- package/dist/tools/validate.d.ts.map +1 -0
- package/dist/tools/validate.js +104 -0
- package/dist/tools/validate.js.map +1 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,EAAE,eAAe,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACvK,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEpG,OAAO,EAAE,mBAAmB,EAAkB,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,8EAA8E;AAC9E,kEAAkE;AAClE,8EAA8E;AAC9E,IAAI,SAAS,GAAG,WAAW,CAAC;AAC5B,IAAI,aAAa,GAAG,EAAE,CAAC;AACvB,IAAI,gBAAgB,GAAG,EAAE,CAAC;AAE1B,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;AAEjD,SAAS,mBAAmB,CAAC,EAAU,EAAE,QAAgB,EAAE,KAAa;IACtE,MAAM,SAAS,GAAG,EAAE,GAAG,GAAG,GAAG,QAAQ,GAAG,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACpF,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,KAAK,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACjC,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IACzC,IAAI,cAAc,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC;QAChC,MAAM,aAAa,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5D,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,cAAc,EAAE,CAAC;YACnC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC;gBAAE,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAC9E,SAAS,SAAS;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAU,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,gBAAgB;YAAE,MAAM,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAC3D,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,qBAAqB,EAAE,EAAE;YACzB,UAAU,EAAE,CAAC;YACb,WAAW,EAAE,CAAC;YACd,cAAc,EAAE,CAAC;YACjB,cAAc,EAAE,CAAC;YACjB,aAAa,EAAE,EAAE;YACjB,gBAAgB,EAAE,EAAE;SACrB,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,KAAY;IAC7B,IAAI,CAAC;QAAC,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,4BAA4B,CAAC,CAAC;AACvG,CAAC;AAED,IAAI,KAAK,GAAG,SAAS,EAAE,CAAC;AAExB,SAAS,iBAAiB,CAAC,EAAU;IACnC,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnD,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC;QAAE,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;IAC3E,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3F,SAAS,CAAC,KAAK,CAAC,CAAC;IACjB,mBAAmB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAU;IACnC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACtF,OAAO,YAAY,CAAC,CAAC,CAAC,uBAAuB,GAAG,qBAAqB,CAAC,CAAC,CAAC,uBAAuB,CAAC;AAClG,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,MAAc,EAAE,MAAsC;IAClF,MAAM,QAAQ,CAAC,GAAG,YAAY,QAAQ,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC;AAC1D,CAAC;AAED,KAAK,UAAU,oBAAoB;IACjC,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,GAAG,YAAY,QAAQ,CAAC,CAAC;IACtD,KAAK,MAAM,QAAQ,IAAI,IAAI,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,YAAY,OAAO,EAAE,EAAE,CAAC,CAAC;YAC5D,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,MAAwC,CAAC;QACzE,CAAC;IACH,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,eAAe,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,MAAM,sBAAsB,CAAC,CAAC;AAC9F,CAAC;AAED,KAAK,UAAU,qBAAqB;IAClC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,mBAAmB,CAAC,CAAC;QACjD,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,IAA8C,CAAC,CAAC;YAC3F,OAAO,CAAC,KAAK,CAAC,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,MAAM,GAAG,iBAAiB,CAAC,CAAC;QAC5G,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QAAC,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;IAAC,CAAC;AAC9D,CAAC;AAED,KAAK,UAAU,mBAAmB;IAChC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAI,MAAM,QAAQ,CAAC,mBAAmB,CAAmD,IAAI,EAAE,CAAC;QAC9G,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC;YACvE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;YACrC,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpD,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;QACD,MAAM,QAAQ,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QAAC,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;IAAC,CAAC;AAC9D,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC5B,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;AAC1F,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,EAAU,EAAE,OAAe,EAAE,IAAY;IAChE,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAC7C,IAAI,CAAC,SAAS;QAAE,OAAO;IACvB,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,IAAI,CACd,+BAA+B,EAC/B,EAAE,IAAI,EAAE,uCAAuC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAC1E,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,SAAS,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,CAC1F,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC,CAAC,gCAAgC,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,eAAe;IACtB,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnD,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,MAAM,SAAS,GAA2B,EAAE,CAAC;IAC7C,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACvE,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,CAAC;YAChC,cAAc,EAAE,CAAC;YACjB,aAAa,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/B,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IACD,OAAO;QACL,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,UAAU,EAAE,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,UAAU;QAChD,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,oBAAoB,EAAE,cAAc;QACpC,qBAAqB,EAAE,aAAa;QACpC,mBAAmB,EAAE,SAAS;QAC9B,mBAAmB,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,MAAM;QAC5D,wBAAwB,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,MAAM;QACpE,UAAU,EAAE,MAAM,EAAE;KACrB,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAC9E,SAAS,qBAAqB,CAAC,IAAY,EAAE,GAAW,EAAE,MAAc;IACtE,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAA2B,EAAE,IAAI,EAAE,EAAE;YACxE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC;gBAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACvB,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC1C,MAAM,QAAQ,GAAG,MAAM;aACpB,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC;aAC5B,MAAM,CAAC,GAAG,SAAS,IAAI,IAAI,EAAE,EAAE,MAAM,CAAC;aACtC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjB,OAAO,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,KAAK,CAAC;IAAC,CAAC;AAC3B,CAAC;AAED,SAAS,cAAc;IACrB,OAAO,OAAO,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;AACzD,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,KAA8B;IAC7D,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,4BAA4B;QAAE,OAAO;IAE3D,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAwC,CAAC;IACrE,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC,QAAQ,CAAwC,CAAC;IACvE,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,gBAAgB,CAAuB,IAAI,SAAS,CAAC;IACzE,MAAM,IAAI,GAAI,GAAG,EAAE,CAAC,UAAU,CAAwC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC;IAE1F,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;IAChC,MAAM,MAAM,GAAG;QACb,IAAI;QACJ,UAAU,EAAE,MAAM,EAAE;QACpB,KAAK,EAAE,CAAC;QACR,SAAS,EAAE,MAAM,EAAE;QACnB,KAAK;KACN,CAAC;IACF,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IACrC,MAAM,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,SAAS,CAAC,KAAK,CAAC,CAAC;IAEjB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAC7C,IAAI,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,IAAI,CACd,+BAA+B,EAC/B;gBACE,IAAI,EAAE,uCAAuC;gBAC7C,EAAE,EAAE,CAAC,KAAK,CAAC;gBACX,OAAO,EAAE,qCAAqC;gBAC9C,IAAI,EACF,wDAAwD;oBACxD,iBAAiB,MAAM,MAAM;oBAC7B,wEAAwE;oBACxE,wBAAwB;oBACxB,4EAA4E;oBAC5E,mEAAmE;oBACnE,kDAAkD;oBAClD,uBAAuB;aAC1B,EACD,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,SAAS,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,CAC1F,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC,CAAC,gCAAgC,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,gBAAgB,IAAI,wBAAwB,KAAK,EAAE,CAAC,CAAC;AACrE,CAAC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAC9E,SAAS,WAAW;IAClB,MAAM,QAAQ,GAAG,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC9F,CAAC;AAED,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAC9E,KAAK,UAAU,iBAAiB;IAC9B,MAAM,YAAY,GAAG,MAAM,iBAAiB,EAAE,CAAC;IAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC3D,OAAO;QACL;YACE,IAAI,EAAE,6BAA6B;YACnC,EAAE,EAAE,YAAY,CAAC,EAAE;YACnB,UAAU,EAAE,YAAY,CAAC,UAAU;YACnC,MAAM,EAAE,YAAY,CAAC,MAAM;SAC5B;QACD;YACE,IAAI,EAAE,mCAAmC;YACzC,EAAE,EAAE,WAAW;YACf,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,2BAA2B;SAC9D;KACF,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,yCAAyC;AACzC,8EAA8E;AAC9E,MAAM,oBAAoB,GACxB,gGAAgG;IAChG,4EAA4E;IAC5E,4FAA4F;IAC5F,uIAAuI;IACvI,6EAA6E,CAAC;AAEhF,MAAM,oBAAoB,GACxB,gJAAgJ;IAChJ,mFAAmF;IACnF,oEAAoE;IACpE,4JAA4J,CAAC;AAE/J,SAAS,aAAa;IACpB,OAAO;QACL,UAAU,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,OAAO,EAAE;QAC5D,cAAc,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;QACnC,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,qBAAqB;gBAC3B,WAAW,EAAE,oBAAoB;gBACjC,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,mBAAmB,EAAE;4BACnB,IAAI,EAAE,QAAQ;4BACd,SAAS,EAAE,CAAC;4BACZ,SAAS,EAAE,GAAG;4BACd,WAAW,EACT,sGAAsG;gCACtG,yGAAyG;gCACzG,4DAA4D;yBAC/D;wBACD,OAAO,EAAE;4BACP,IAAI,EAAE,QAAQ;4BACd,SAAS,EAAE,CAAC;4BACZ,SAAS,EAAE,CAAC;4BACZ,OAAO,EAAE,IAAI;4BACb,WAAW,EACT,uEAAuE;gCACvE,yFAAyF;gCACzF,wEAAwE;yBAC3E;wBACD,eAAe,EAAE;4BACf,IAAI,EAAE,QAAQ;4BACd,IAAI,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC;4BAC1B,OAAO,EAAE,MAAM;4BACf,WAAW,EAAE,6GAA6G;yBAC3H;qBACF;oBACD,QAAQ,EAAE,CAAC,qBAAqB,CAAC;oBACjC,oBAAoB,EAAE,KAAK;iBAC5B;aACF;YACD;gBACE,IAAI,EAAE,kBAAkB;gBACxB,WAAW,EAAE,oBAAoB;gBACjC,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACV,OAAO,EAAE;4BACP,IAAI,EAAE,QAAQ;4BACd,SAAS,EAAE,CAAC;4BACZ,SAAS,EAAE,EAAE;4BACb,WAAW,EACT,0EAA0E;gCAC1E,oGAAoG;gCACpG,6CAA6C;yBAChD;wBACD,mBAAmB,EAAE;4BACnB,IAAI,EAAE,QAAQ;4BACd,SAAS,EAAE,CAAC;4BACZ,SAAS,EAAE,GAAG;4BACd,WAAW,EACT,oEAAoE;gCACpE,wEAAwE;gCACxE,wEAAwE;yBAC3E;wBACD,OAAO,EAAE;4BACP,IAAI,EAAE,QAAQ;4BACd,SAAS,EAAE,CAAC;4BACZ,SAAS,EAAE,CAAC;4BACZ,OAAO,EAAE,IAAI;4BACb,WAAW,EACT,yFAAyF;gCACzF,2EAA2E;yBAC9E;wBACD,eAAe,EAAE;4BACf,IAAI,EAAE,QAAQ;4BACd,IAAI,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC;4BAC1B,OAAO,EAAE,MAAM;4BACf,WAAW,EAAE,6GAA6G;yBAC3H;qBACF;oBACD,QAAQ,EAAE,CAAC,SAAS,EAAE,qBAAqB,CAAC;oBAC5C,oBAAoB,EAAE,KAAK;iBAC5B;aACF;SACF;QACD,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,EAAE;KACZ,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAC9E,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,+BAA+B;IACrC,OAAO,EAAE,OAAO;CACjB,CAAC,CAAC;AAEH,8BAA8B;AAC9B,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;IACE,KAAK,EAAE,6BAA6B;IACpC,WAAW,EAAE,oBAAoB;IACjC,WAAW,EAAE,mBAAmB;IAChC,WAAW,EAAE;QACX,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,KAAK;QACtB,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,IAAI;KACpB;CACF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;IACf,qFAAqF;IACrF,IAAI,gBAAgB,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACtF,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACtD,OAAO,EAAE,QAAQ;wBACjB,WAAW,EAAE,wCAAwC;wBACrD,UAAU,EAAE,IAAI;wBAChB,MAAM,EAAE,gCAAgC;wBACxC,YAAY,EAAE,SAAS;wBACvB,KAAK,EAAE,gEAAgE;qBACxE,CAAC,EAAE,CAAC;SACN,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,GAAG,SAAS,CAAC;IACrB,IAAI,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,KAAK,MAAM,EAAE,CAAC;QAChE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,uDAAuD,EAAE,YAAY,EAAE,iBAAiB,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACvN,CAAC;IACD,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,qBAAqB,EAAE,CAAC,CAAC,EAAE,CAAC;QACvD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,8HAA8H,EAAE,YAAY,EAAE,iBAAiB,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC1T,CAAC;IACD,MAAM,IAAI,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;IAEtC,KAAK,CAAC,WAAW,EAAE,CAAC;IACpB,KAAK,CAAC,cAAc,EAAE,CAAC;IACvB,IAAI,IAAI,EAAE,CAAC;QACT,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,IAAI,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC;YACvC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;YAC3C,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,SAAS,GAAG,MAAM,EAAE,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC;IAEjF,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,SAAS,CAAC,KAAK,CAAC,CAAC;QACjB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;SACzE,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,iCAAiC;IAC1D,CAAC;SAAM,CAAC;QACN,SAAS,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IACD,gBAAgB,CAAC,EAAE,EAAE,qBAAqB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEpH,MAAM,MAAM,GAAG,MAAM,CAAC,MAAO,CAAC;IAC9B,MAAM,IAAI,GAAG,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,eAAiC,CAAC,CAAC;IACtF,MAAM,SAAS,GACb,IAAI,CAAC,MAAM,GAAG,KAAK;QACjB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,mGAAmG;QAC5H,CAAC,CAAC,IAAI,CAAC;IAEX,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACrD,iBAAiB,EAAE,MAA4C;KAChE,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,2BAA2B;AAC3B,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;IACE,KAAK,EAAE,2BAA2B;IAClC,WAAW,EAAE,oBAAoB;IACjC,WAAW,EAAE,mBAAmB;IAChC,WAAW,EAAE;QACX,YAAY,EAAE,IAAI;QAClB,eAAe,EAAE,KAAK;QACtB,cAAc,EAAE,IAAI;QACpB,aAAa,EAAE,IAAI;KACpB;CACF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;IACf,qFAAqF;IACrF,IAAI,gBAAgB,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACtF,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACtD,KAAK,EAAE,IAAI;wBACX,OAAO,EAAE,QAAQ;wBACjB,WAAW,EAAE,wCAAwC;wBACrD,MAAM,EAAE,gCAAgC;wBACxC,YAAY,EAAE,SAAS;wBACvB,KAAK,EAAE,gEAAgE;qBACxE,CAAC,EAAE,CAAC;SACN,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,KAAK,MAAM,EAAE,CAAC;QAC7D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,uDAAuD,EAAE,YAAY,EAAE,iBAAiB,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACvN,CAAC;IACD,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC,EAAE,CAAC;QAC3D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,8HAA8H,EAAE,YAAY,EAAE,iBAAiB,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC1T,CAAC;IACD,MAAM,IAAI,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;IAEtC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,KAAK,EAAE,sBAAsB;wBAC7B,YAAY,EAAE,+EAA+E;wBAC7F,YAAY,EACV,iEAAiE;4BACjE,4BAA4B,eAAe,mFAAmF;wBAChI,QAAQ,EAAE,eAAe;wBACzB,SAAS,EAAE,KAAK;wBAChB,cAAc,EAAE,IAAI;wBACpB,aAAa,EAAE,qBAAqB;wBACpC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;wBACjD,WAAW,EAAE,eAAe;wBAC5B,WAAW,EAAE,gBAAgB;qBAC9B,CAAC;iBACH;aACF;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,EAAE,CAAC;IACpB,KAAK,CAAC,cAAc,EAAE,CAAC;IACvB,KAAK,CAAC,UAAU,EAAE,CAAC;IACnB,IAAI,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC;QACvC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;QAC3C,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,SAAS,GAAG,MAAM,EAAE,CAAC;IAC1D,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;IAEzC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,SAAS,CAAC,KAAK,CAAC,CAAC;QACjB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;SACzE,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,KAAK,CAAC,CAAC;IACjB,gBAAgB,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,CAAC,CAAC,CAAC,CAAC;IAExH,MAAM,MAAM,GAAG,MAAM,CAAC,MAAO,CAAC;IAC9B,MAAM,IAAI,GAAG,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,eAAiC,CAAC,CAAC;IACtF,MAAM,SAAS,GACb,IAAI,CAAC,MAAM,GAAG,KAAK;QACjB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,2BAA2B;QACpD,CAAC,CAAC,IAAI,CAAC;IAEX,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACrD,iBAAiB,EAAE,MAA4C;KAChE,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAC9E,SAAS,kBAAkB,CAAC,KAAc;IACxC,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,KAAK,EAAE,OAAO;oBACd,YAAY,EAAE,yBAAyB;oBACvC,YAAY,EAAE,0EAA0E;oBACxF,QAAQ,EAAE,sBAAsB;oBAChC,SAAS,EAAE,IAAI;oBACf,cAAc,EAAE,MAAM;oBACtB,aAAa,EAAE,IAAI;oBACnB,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;iBAClD,CAAC;aACH;SACF;KACF,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAC9E,KAAK,UAAU,OAAO;IACpB,WAAW,EAAE,CAAC;IAEd,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IACtB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAExB,MAAM,IAAI,GAAG;QACX,6BAA6B,EAAE,GAAG;QAClC,8BAA8B,EAAE,oBAAoB;QACpD,8BAA8B,EAAE,sCAAsC;KACvE,CAAC;IAEF,qEAAqE;IACrE,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAErE,0DAA0D;IAC1D,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC9B,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC,CAAC;IACnG,CAAC,CAAC,CAAC;IAEH,uDAAuD;IACvD,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QACpG,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC;QAChD,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IACpH,CAAC,CAAC,CAAC;IAEH,2BAA2B;IAC3B,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAClC,MAAM,IAAI,GAAG,MAAM,iBAAiB,EAAE,CAAC;QACvC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,qBAAqB;IACrB,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC7B,IAAI,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACzD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,2BAA2B;IAC3B,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACnC,IAAI,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACzD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QACD,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,GAAG,YAAY,YAAY,CAAC,CAAC;YAC1D,MAAM,QAAQ,GAAmC,EAAE,CAAC;YACpD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,KAAK,GAAI,MAAM,QAAQ,CAAC,GAAG,CAAuD,IAAI,EAAE,CAAC;gBAC/F,IAAI,CAAC,KAAK,CAAC,MAAM;oBAAE,SAAS;gBAC5B,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,YAAY,WAAW,CAAC,MAAM,CAAC,CAAC;gBACnE,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC/C,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBAC/C,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;gBAC9C,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,SAAS,IAAI,EAAE,EAAE,CAAC,CAAC;YACrJ,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAClF,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC,CAAC,EAAE,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,iBAAiB;IACjB,GAAG,CAAC,IAAI,CACN,iBAAiB,EACjB,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,EACzC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACX,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAW,CAAC;QACtD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE,CAAC;QACvD,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC;YAC7D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;YAC/D,OAAO;QACT,CAAC;QACD,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAA4B,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CACxF,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAC9C,CAAC;QACF,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC,CACF,CAAC;IAEF,uBAAuB;IACvB,GAAG,CAAC,GAAG,CAAC,mCAAmC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACxD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,aAAa,EAAE,EAAE,IAAI,EAAE,+BAA+B,EAAE,SAAS,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC7U,CAAC,CAAC,CAAC;IAEH,2BAA2B;IAC3B,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAC9C,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,IAA4D,CAAC;QACnG,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACpB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,6BAA6B,EAAE,YAAY,EAAE,yBAAyB,EAAE,CAAC,CAAC;YAClH,OAAO;QACT,CAAC;QACD,MAAM,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;QACvD,IAAI,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iDAAiD,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,gCAAgC,EAAE,CAAC,CAAC;YAC3K,OAAO;QACT,CAAC;QACD,MAAM,EAAE,GACL,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAwB,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE;YAC7E,GAAG,CAAC,EAAE;YACN,SAAS,CAAC;QACZ,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC;YAAE,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;QAC3E,MAAM,YAAY,GAAG,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjE,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,qBAAqB,CAAC,CAAC;QAC3F,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,IAAI,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC;QACvG,SAAS,CAAC,KAAK,CAAC,CAAC;QACjB,MAAM,SAAS,CACb,uBAAuB,EACvB,yCAAyC,GAAG,IAAI,EAChD,kBAAkB,GAAG,IAAI,GAAG,oBAAoB,GAAG,KAAK,GAAG,uBAAuB,GAAG,CAAC,QAAQ,IAAI,cAAc,CAAC,GAAG,iBAAiB,GAAG,EAAE,GAAG,4BAA4B,GAAG,qBAAqB,GAAG,MAAM,CAC3M,CAAC;QACF,MAAM,SAAS,CACb,KAAK,EACL,qBAAqB,GAAG,mDAAmD,EAC3E,QAAQ,GAAG,IAAI,GAAG,eAAe,GAAG,qBAAqB,GAAG,iLAAiL,GAAG,eAAe,GAAG,qCAAqC,CACxS,CAAC;QACF,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,OAAO,EAAE,qBAAqB,GAAG,6DAA6D,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC,CAAC;IAC/M,CAAC,CAAC,CAAC;IAEH,qDAAqD;IACrD,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAC3C,IAAI,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACzD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC;QACvC,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEnD,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC;YAChE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,uBAAuB;gBAAE,SAAS,EAAE,CAAC;QACnE,CAAC;QAED,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC3D,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,IAAI,QAAQ;gBAAE,UAAU,EAAE,CAAC;QACvE,CAAC;QAED,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;YACxD,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACzE,IAAI,EAAE,IAAI,QAAQ;gBAAE,SAAS,EAAE,CAAC;QAClC,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,GAAG,YAAY,cAAc,KAAK,EAAE,CAAC,CAAC;QAC1E,MAAM,aAAa,GAA2B,EAAE,CAAC;QACjD,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAI,MAAM,QAAQ,CAAC,GAAG,CAAuD,IAAI,EAAE,CAAC;YAC/F,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;gBAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBAAC,QAAQ,EAAE,CAAC;YAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChH,CAAC;QACD,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC;QAErC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;YACjB,MAAM,EAAE,wBAAwB;YAChC,IAAI,EAAE,KAAK;YACX,SAAS,EAAE,QAAQ;YACnB,cAAc,EAAE,SAAS;YACzB,UAAU,EAAE,SAAS;YACrB,gBAAgB,EAAE,UAAU;YAC5B,gBAAgB,EAAE,SAAS;YAC3B,cAAc,EAAE,aAAa;SAC9B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,wFAAwF;IACxF,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAClC,SAAS;YACN,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAwB,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE;gBAC7E,GAAG,CAAC,EAAE;gBACN,WAAW,CAAC;QACd,aAAa,GAAI,GAAG,CAAC,OAAO,CAAC,WAAW,CAAwB,IAAI,EAAE,CAAC;QACvE,gBAAgB,GAAI,GAAG,CAAC,OAAO,CAAC,YAAY,CAAwB,IAAI,EAAE,CAAC;QAE3E,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,SAAS,GAAG,IAAI,6BAA6B,CAAC;YAClD,kBAAkB,EAAE,SAAS;YAC7B,kBAAkB,EAAE,IAAI;SACzB,CAAC,CAAC;QACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChC,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC;IAClD,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;QACpB,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,MAAM,oBAAoB,EAAE,CAAC;YAC7B,MAAM,qBAAqB,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,6DAA6D,IAAI,MAAM,CAAC,CAAC;QACzF,CAAC,CAAC,EAAE,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAC9E,KAAK,UAAU,QAAQ;IACrB,WAAW,EAAE,CAAC;IACd,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;IAC1C,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;AACnE,CAAC;AAED,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAC9E,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM,CAAC;AACtD,IAAI,aAAa,KAAK,OAAO,EAAE,CAAC;IAC9B,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC;KAAM,CAAC;IACN,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classify.d.ts","sourceRoot":"","sources":["../../src/schemas/classify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,oBAAY,cAAc;IACxB,QAAQ,aAAa;IACrB,IAAI,SAAS;CACd;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;EAoBrB,CAAC;AAEZ,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export var ResponseFormat;
|
|
3
|
+
(function (ResponseFormat) {
|
|
4
|
+
ResponseFormat["MARKDOWN"] = "markdown";
|
|
5
|
+
ResponseFormat["JSON"] = "json";
|
|
6
|
+
})(ResponseFormat || (ResponseFormat = {}));
|
|
7
|
+
export const ClassifyInputSchema = z.object({
|
|
8
|
+
product_description: z.string()
|
|
9
|
+
.min(3, 'Product description must be at least 3 characters')
|
|
10
|
+
.max(500, 'Product description must not exceed 500 characters')
|
|
11
|
+
.describe('Description of the product to classify. Be specific -- include material, function, and intended use ' +
|
|
12
|
+
'(e.g. "solid oak dining chair with upholstered seat", "stainless steel 500ml insulated water bottle"). ' +
|
|
13
|
+
'More specific descriptions return higher-confidence codes.'),
|
|
14
|
+
country: z.string()
|
|
15
|
+
.length(2, 'Must be ISO 3166-1 alpha-2 country code (e.g. US, SG, CA, AU)')
|
|
16
|
+
.default('US')
|
|
17
|
+
.describe('2-letter ISO country code for the importing country tariff schedule. ' +
|
|
18
|
+
'Supported: US (USITC), SG (Singapore Customs), CA (CBSA), AU (Australia Border Force). ' +
|
|
19
|
+
'Defaults to US. Use the destination country for import classification.'),
|
|
20
|
+
response_format: z.nativeEnum(ResponseFormat)
|
|
21
|
+
.default(ResponseFormat.JSON)
|
|
22
|
+
.describe("Output format: 'json' for machine-readable agent use (recommended) or 'markdown' for human-readable display")
|
|
23
|
+
}).strict();
|
|
24
|
+
//# sourceMappingURL=classify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classify.js","sourceRoot":"","sources":["../../src/schemas/classify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,uCAAqB,CAAA;IACrB,+BAAa,CAAA;AACf,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE;SAC5B,GAAG,CAAC,CAAC,EAAE,mDAAmD,CAAC;SAC3D,GAAG,CAAC,GAAG,EAAE,oDAAoD,CAAC;SAC9D,QAAQ,CACP,sGAAsG;QACtG,yGAAyG;QACzG,4DAA4D,CAC7D;IACH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;SAChB,MAAM,CAAC,CAAC,EAAE,+DAA+D,CAAC;SAC1E,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,CACP,uEAAuE;QACvE,yFAAyF;QACzF,wEAAwE,CACzE;IACH,eAAe,EAAE,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC;SAC1C,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC;SAC5B,QAAQ,CAAC,6GAA6G,CAAC;CAC3H,CAAC,CAAC,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/schemas/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;EA2BrB,CAAC;AAEZ,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ResponseFormat } from './classify.js';
|
|
3
|
+
export { ResponseFormat };
|
|
4
|
+
export const ValidateInputSchema = z.object({
|
|
5
|
+
hs_code: z.string()
|
|
6
|
+
.min(4, 'HS code must be at least 4 digits')
|
|
7
|
+
.max(14, 'HS code must not exceed 14 characters')
|
|
8
|
+
.describe('The HS code to validate as provided by the supplier or external system. ' +
|
|
9
|
+
'Accepts 6, 8, or 10-digit codes with or without dots (e.g. "940360", "9403.60.80", "9403608093"). ' +
|
|
10
|
+
'Dots and spaces are stripped automatically.'),
|
|
11
|
+
product_description: z.string()
|
|
12
|
+
.min(3, 'Product description must be at least 3 characters')
|
|
13
|
+
.max(500, 'Product description must not exceed 500 characters')
|
|
14
|
+
.describe('Description of the product the supplier assigned this HS code to. ' +
|
|
15
|
+
'Used for AI mismatch detection -- include material, function, and use ' +
|
|
16
|
+
'(e.g. "solid oak dining chair", "stainless steel water bottle 500ml").'),
|
|
17
|
+
country: z.string()
|
|
18
|
+
.length(2, 'Must be ISO 3166-1 alpha-2 country code (e.g. US, SG, CA, AU)')
|
|
19
|
+
.default('US')
|
|
20
|
+
.describe('2-letter ISO country code for the destination country tariff schedule. Defaults to US. ' +
|
|
21
|
+
'Use the importing country to validate against the correct tariff version.'),
|
|
22
|
+
response_format: z.nativeEnum(ResponseFormat)
|
|
23
|
+
.default(ResponseFormat.JSON)
|
|
24
|
+
.describe("Output format: 'json' for machine-readable agent use (recommended) or 'markdown' for human-readable display")
|
|
25
|
+
}).strict();
|
|
26
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/schemas/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;SAChB,GAAG,CAAC,CAAC,EAAE,mCAAmC,CAAC;SAC3C,GAAG,CAAC,EAAE,EAAE,uCAAuC,CAAC;SAChD,QAAQ,CACP,0EAA0E;QAC1E,oGAAoG;QACpG,6CAA6C,CAC9C;IACH,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE;SAC5B,GAAG,CAAC,CAAC,EAAE,mDAAmD,CAAC;SAC3D,GAAG,CAAC,GAAG,EAAE,oDAAoD,CAAC;SAC9D,QAAQ,CACP,oEAAoE;QACpE,wEAAwE;QACxE,wEAAwE,CACzE;IACH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;SAChB,MAAM,CAAC,CAAC,EAAE,+DAA+D,CAAC;SAC1E,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,CACP,yFAAyF;QACzF,2EAA2E,CAC5E;IACH,eAAe,EAAE,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC;SAC1C,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC;SAC5B,QAAQ,CAAC,6GAA6G,CAAC;CAC3H,CAAC,CAAC,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-client.d.ts","sourceRoot":"","sources":["../../src/services/claude-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAQhD,wBAAsB,cAAc,CAClC,kBAAkB,EAAE,MAAM,EAC1B,OAAO,EAAE,YAAY,EAAE,EACvB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,gBAAgB,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,CAAC,CA+CvG;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,MAAM,EAC1B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,YAAY,EAAE,GACtB,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;IACvD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,UAAU,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACtC,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC,CAmED"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import Anthropic from '@anthropic-ai/sdk';
|
|
2
|
+
function getClient() {
|
|
3
|
+
const key = process.env.ANTHROPIC_API_KEY;
|
|
4
|
+
if (!key)
|
|
5
|
+
throw new Error('ANTHROPIC_API_KEY environment variable not set');
|
|
6
|
+
return new Anthropic({ apiKey: key });
|
|
7
|
+
}
|
|
8
|
+
export async function classifyWithAI(productDescription, results, country) {
|
|
9
|
+
const client = getClient();
|
|
10
|
+
const resultsText = results
|
|
11
|
+
.map((r, i) => `${i + 1}. HS: ${r.hscode} | WCO: ${r.wco ?? 'N/A'} | ${r.description_en} | ${r.source} v${r.version}`)
|
|
12
|
+
.join('\n');
|
|
13
|
+
const message = await client.messages.create({
|
|
14
|
+
model: 'claude-sonnet-4-6',
|
|
15
|
+
max_tokens: 512,
|
|
16
|
+
system: 'You are a customs classification expert. Analyze HS code matches against a product description and select the best match. ' +
|
|
17
|
+
'Respond ONLY with valid JSON -- no markdown, no explanation outside the JSON.',
|
|
18
|
+
messages: [
|
|
19
|
+
{
|
|
20
|
+
role: 'user',
|
|
21
|
+
content: `Product: "${productDescription}"\nCountry: ${country}\n\nOfficial tariff results:\n${resultsText}\n\n` +
|
|
22
|
+
'Select the best match and respond with JSON only:\n' +
|
|
23
|
+
'{"best_match_index":0,"confidence_level":"HIGH|MEDIUM|LOW","reasoning":"One sentence explaining why this is the correct classification and any ambiguity."}'
|
|
24
|
+
}
|
|
25
|
+
]
|
|
26
|
+
});
|
|
27
|
+
const raw = message.content[0].type === 'text' ? message.content[0].text.trim() : '{}';
|
|
28
|
+
const cleaned = raw.replace(/^```json\s*/i, '').replace(/\s*```$/, '').trim();
|
|
29
|
+
try {
|
|
30
|
+
const parsed = JSON.parse(cleaned);
|
|
31
|
+
const idx = Math.max(0, Math.min(results.length - 1, parsed.best_match_index ?? 0));
|
|
32
|
+
const level = ['HIGH', 'MEDIUM', 'LOW'].includes(parsed.confidence_level)
|
|
33
|
+
? parsed.confidence_level
|
|
34
|
+
: 'MEDIUM';
|
|
35
|
+
return {
|
|
36
|
+
confidence_level: level,
|
|
37
|
+
reasoning: parsed.reasoning ?? 'Classification based on official tariff schedule match.',
|
|
38
|
+
best_match_index: idx
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return { confidence_level: 'MEDIUM', reasoning: 'Classification based on official tariff schedule match.', best_match_index: 0 };
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export async function validateWithAI(hsCode, productDescription, country, results) {
|
|
46
|
+
const client = getClient();
|
|
47
|
+
const resultsText = results.length > 0
|
|
48
|
+
? results
|
|
49
|
+
.slice(0, 10)
|
|
50
|
+
.map((r, i) => `${i + 1}. HS: ${r.hscode} | WCO: ${r.wco ?? 'N/A'} | ${r.description_en} | ${r.source} v${r.version}`)
|
|
51
|
+
.join('\n')
|
|
52
|
+
: 'No matching codes found in the official tariff schedule for this product description.';
|
|
53
|
+
const message = await client.messages.create({
|
|
54
|
+
model: 'claude-sonnet-4-6',
|
|
55
|
+
max_tokens: 640,
|
|
56
|
+
system: 'You are a customs compliance expert. Validate HS codes against product descriptions and official tariff schedules. ' +
|
|
57
|
+
'Be precise about mismatches -- wrong classifications carry legal liability for the importer. ' +
|
|
58
|
+
'Respond ONLY with valid JSON -- no markdown, no explanation outside the JSON.',
|
|
59
|
+
messages: [
|
|
60
|
+
{
|
|
61
|
+
role: 'user',
|
|
62
|
+
content: `HS code to validate: "${hsCode}"\nProduct: "${productDescription}"\nCountry: ${country}\n\n` +
|
|
63
|
+
`Official tariff results for this product:\n${resultsText}\n\n` +
|
|
64
|
+
'Determine if the HS code is correct. Consider: does the code appear in official results? ' +
|
|
65
|
+
'Is the product description consistent with the code tariff description? Could this be a mismatch or outdated code?\n\n' +
|
|
66
|
+
'Respond with JSON only (omit optional fields if not applicable):\n' +
|
|
67
|
+
'{"verdict":"VALID|INVALID|MISMATCH|OUTDATED","product_match_score":0.0,' +
|
|
68
|
+
'"mismatch_reason":"only if MISMATCH or INVALID","correct_code_suggestion":"HS code if better match exists",' +
|
|
69
|
+
'"risk_level":"LOW|MEDIUM|HIGH","agent_action":"one clear instruction for the agent"}'
|
|
70
|
+
}
|
|
71
|
+
]
|
|
72
|
+
});
|
|
73
|
+
const raw = message.content[0].type === 'text' ? message.content[0].text.trim() : '{}';
|
|
74
|
+
const cleaned = raw.replace(/^```json\s*/i, '').replace(/\s*```$/, '').trim();
|
|
75
|
+
try {
|
|
76
|
+
const parsed = JSON.parse(cleaned);
|
|
77
|
+
const verdicts = ['VALID', 'INVALID', 'MISMATCH', 'OUTDATED'];
|
|
78
|
+
const risks = ['LOW', 'MEDIUM', 'HIGH'];
|
|
79
|
+
return {
|
|
80
|
+
verdict: verdicts.includes(parsed.verdict) ? parsed.verdict : 'INVALID',
|
|
81
|
+
product_match_score: Math.min(1.0, Math.max(0.0, parsed.product_match_score ?? 0.0)),
|
|
82
|
+
mismatch_reason: parsed.mismatch_reason,
|
|
83
|
+
correct_code_suggestion: parsed.correct_code_suggestion,
|
|
84
|
+
risk_level: risks.includes(parsed.risk_level) ? parsed.risk_level : 'HIGH',
|
|
85
|
+
agent_action: parsed.agent_action ?? 'Escalate for manual customs review before approving this shipment.'
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return {
|
|
90
|
+
verdict: 'INVALID',
|
|
91
|
+
product_match_score: 0.0,
|
|
92
|
+
mismatch_reason: 'AI validation failed to parse HS code response',
|
|
93
|
+
risk_level: 'HIGH',
|
|
94
|
+
agent_action: 'Do not approve this shipment. Escalate for manual customs review.'
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=claude-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-client.js","sourceRoot":"","sources":["../../src/services/claude-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hsping-client.d.ts","sourceRoot":"","sources":["../../src/services/hsping-client.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAWzF;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAevG;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import axios, { AxiosError } from 'axios';
|
|
2
|
+
import { HSPING_BASE_URL } from '../constants.js';
|
|
3
|
+
export async function queryHSPing(query, country) {
|
|
4
|
+
const key = process.env.HSPING_API_KEY;
|
|
5
|
+
if (!key)
|
|
6
|
+
throw new Error('HSPING_API_KEY environment variable not set');
|
|
7
|
+
const response = await axios.get(HSPING_BASE_URL, {
|
|
8
|
+
params: { query, country },
|
|
9
|
+
headers: { Authorization: `Bearer ${key}` },
|
|
10
|
+
timeout: 10000
|
|
11
|
+
});
|
|
12
|
+
return response.data;
|
|
13
|
+
}
|
|
14
|
+
export async function checkHSPingHealth() {
|
|
15
|
+
const start = Date.now();
|
|
16
|
+
try {
|
|
17
|
+
const key = process.env.HSPING_API_KEY;
|
|
18
|
+
if (!key)
|
|
19
|
+
return { ok: false, latency_ms: 0, detail: 'HSPING_API_KEY not set' };
|
|
20
|
+
await axios.get(HSPING_BASE_URL, {
|
|
21
|
+
params: { query: 'wooden chair', country: 'US' },
|
|
22
|
+
headers: { Authorization: `Bearer ${key}` },
|
|
23
|
+
timeout: 8000
|
|
24
|
+
});
|
|
25
|
+
return { ok: true, latency_ms: Date.now() - start };
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
const msg = err instanceof AxiosError ? `HTTP ${err.response?.status}` : String(err);
|
|
29
|
+
return { ok: false, latency_ms: Date.now() - start, detail: msg };
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export { AxiosError };
|
|
33
|
+
//# sourceMappingURL=hsping-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hsping-client.js","sourceRoot":"","sources":["../../src/services/hsping-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAa,EAAE,OAAe;IAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IACvC,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAEzE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAiB,eAAe,EAAE;QAChE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;QAC1B,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,GAAG,EAAE,EAAE;QAC3C,OAAO,EAAE,KAAK;KACf,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QACvC,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC;QAChF,MAAM,KAAK,CAAC,GAAG,CAAC,eAAe,EAAE;YAC/B,MAAM,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE;YAChD,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,GAAG,EAAE,EAAE;YAC3C,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QACH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;IACtD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,UAAU,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACrF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IACpE,CAAC;AACH,CAAC;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../src/services/redis.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY,OAAO,CAAC;AAEjC,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAW5D;AAED,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CASzE;AAED,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS7E;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAUlE;AAED,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAU9E"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
const UPSTASH_URL = process.env.UPSTASH_REDIS_REST_URL ?? '';
|
|
2
|
+
const UPSTASH_TOKEN = process.env.UPSTASH_REDIS_REST_TOKEN ?? '';
|
|
3
|
+
export const REDIS_PREFIX = 'hs';
|
|
4
|
+
export async function redisGet(key) {
|
|
5
|
+
try {
|
|
6
|
+
const res = await fetch(`${UPSTASH_URL}/get/${encodeURIComponent(key)}`, { headers: { Authorization: `Bearer ${UPSTASH_TOKEN}` } });
|
|
7
|
+
const data = await res.json();
|
|
8
|
+
if (data.error)
|
|
9
|
+
console.error('[Redis] redisGet error:', data.error, 'key:', key);
|
|
10
|
+
if (!data.result)
|
|
11
|
+
return null;
|
|
12
|
+
return JSON.parse(data.result);
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export async function redisSet(key, value) {
|
|
19
|
+
try {
|
|
20
|
+
const res = await fetch(`${process.env.UPSTASH_REDIS_REST_URL}/set/${encodeURIComponent(key)}/${encodeURIComponent(JSON.stringify(value))}`, { method: 'GET', headers: { Authorization: `Bearer ${process.env.UPSTASH_REDIS_REST_TOKEN}` } });
|
|
21
|
+
const data = await res.json();
|
|
22
|
+
if (data.error)
|
|
23
|
+
console.error('[Redis] redisSet error:', data.error, 'key:', key);
|
|
24
|
+
}
|
|
25
|
+
catch (e) {
|
|
26
|
+
console.error('[Redis] redisSet failed:', e);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export async function redisExpire(key, seconds) {
|
|
30
|
+
try {
|
|
31
|
+
const res = await fetch(`${UPSTASH_URL}/expire/${encodeURIComponent(key)}/${seconds}`, { method: 'POST', headers: { Authorization: `Bearer ${UPSTASH_TOKEN}` } });
|
|
32
|
+
const data = await res.json();
|
|
33
|
+
if (data.error)
|
|
34
|
+
console.error('[Redis] redisExpire error:', data.error, 'key:', key);
|
|
35
|
+
}
|
|
36
|
+
catch (e) {
|
|
37
|
+
console.error('[Redis] redisExpire failed:', e);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export async function redisKeys(pattern) {
|
|
41
|
+
try {
|
|
42
|
+
const res = await fetch(`${UPSTASH_URL}/keys/${encodeURIComponent(pattern)}`, { headers: { Authorization: `Bearer ${UPSTASH_TOKEN}` } });
|
|
43
|
+
const data = await res.json();
|
|
44
|
+
if (data.error)
|
|
45
|
+
console.error('[Redis] redisKeys error:', data.error, 'pattern:', pattern);
|
|
46
|
+
return data.result ?? [];
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return [];
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
export async function appendSessionLog(ip, tool) {
|
|
53
|
+
try {
|
|
54
|
+
const ipSafe = ip.replace(/:/g, '_').replace(/\s/g, '');
|
|
55
|
+
const dayKey = new Date().toISOString().slice(0, 10);
|
|
56
|
+
const key = `${REDIS_PREFIX}:session:${ipSafe}:${dayKey}`;
|
|
57
|
+
const existing = await redisGet(key) ?? [];
|
|
58
|
+
existing.push({ tool, timestamp: new Date().toISOString() });
|
|
59
|
+
await redisSet(key, existing);
|
|
60
|
+
await redisExpire(key, 86400);
|
|
61
|
+
}
|
|
62
|
+
catch (e) {
|
|
63
|
+
console.error('[SessionLog] internal error:', e);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=redis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis.js","sourceRoot":"","sources":["../../src/services/redis.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classify.d.ts","sourceRoot":"","sources":["../../src/tools/classify.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AA0BzD,wBAAsB,WAAW,CAC/B,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,KAAK,EACZ,cAAc,GAAE,MAAgC,GAC/C,OAAO,CAAC;IAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CA4K7E;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,GAAG,MAAM,CAG1F"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { queryHSPing, AxiosError } from '../services/hsping-client.js';
|
|
2
|
+
import { classifyWithAI } from '../services/claude-client.js';
|
|
3
|
+
import { ResponseFormat } from '../schemas/classify.js';
|
|
4
|
+
import { nowISO, LEGAL_DISCLAIMER, FREE_TIER_MONTHLY_LIMIT, FREE_TIER_WARNING_THRESHOLD, PRO_UPGRADE_URL, ENTERPRISE_UPGRADE_URL } from '../constants.js';
|
|
5
|
+
function buildMarkdown(out) {
|
|
6
|
+
const lines = [
|
|
7
|
+
`## HS Code Classification`,
|
|
8
|
+
`**Verdict:** ${out.verdict}`,
|
|
9
|
+
`**HS Code:** ${out.hs_code}`,
|
|
10
|
+
out.wco_6digit ? `**WCO 6-digit:** ${out.wco_6digit}` : '',
|
|
11
|
+
`**Description:** ${out.description}`,
|
|
12
|
+
`**Country:** ${out.country}`,
|
|
13
|
+
`**Source:** ${out.source} (v${out.version}, updated ${out.last_updated})`,
|
|
14
|
+
`**Direction:** ${out.direction}`,
|
|
15
|
+
`**Confidence:** ${out.confidence_level}`,
|
|
16
|
+
`**AI Reasoning:** ${out.classification_reasoning}`,
|
|
17
|
+
`**Total Matches Found:** ${out.total_matches}`,
|
|
18
|
+
`**Agent Action:** ${out.agent_action}`,
|
|
19
|
+
`**Checked At:** ${out.checked_at}`
|
|
20
|
+
].filter(Boolean);
|
|
21
|
+
if (out._upgrade_notice)
|
|
22
|
+
lines.push(`\n> **Upgrade:** ${out._upgrade_notice}`);
|
|
23
|
+
if (out._notice)
|
|
24
|
+
lines.push(`\n> **Notice:** ${out._notice}`);
|
|
25
|
+
lines.push(`\n---\n*${out._disclaimer}*`);
|
|
26
|
+
return lines.join('\n');
|
|
27
|
+
}
|
|
28
|
+
export async function runClassify(params, ip, isPaid, stats, effectiveLimit = FREE_TIER_MONTHLY_LIMIT) {
|
|
29
|
+
if (!isPaid) {
|
|
30
|
+
const month = new Date().toISOString().slice(0, 7);
|
|
31
|
+
const ipMap = stats.free_tier_calls_by_ip[ip] ?? {};
|
|
32
|
+
const used = ipMap[month] ?? 0;
|
|
33
|
+
if (used >= FREE_TIER_MONTHLY_LIMIT) {
|
|
34
|
+
return {
|
|
35
|
+
output: null,
|
|
36
|
+
error: {
|
|
37
|
+
error: 'Free tier limit reached',
|
|
38
|
+
likely_cause: `This IP has used all ${FREE_TIER_MONTHLY_LIMIT} free classify calls for this month`,
|
|
39
|
+
agent_action: `An incorrect HS code on a customs declaration creates a compliance violation regardless of intent — stopping here leaves your filing unverified. Free tier limit of ${FREE_TIER_MONTHLY_LIMIT} calls/month reached. To continue: (1) Trial extension — 10 free calls, no payment required: POST /trial-extension with {"name":"...","email":"...","use_case":"..."}. (2) Pro — 500 calls: ${PRO_UPGRADE_URL}. (3) Enterprise: ${ENTERPRISE_UPGRADE_URL}.`,
|
|
40
|
+
trial_extension: {
|
|
41
|
+
endpoint: '/trial-extension',
|
|
42
|
+
method: 'POST',
|
|
43
|
+
body: { name: 'string', email: 'string', use_case: 'string' }
|
|
44
|
+
},
|
|
45
|
+
upgrade_url: PRO_UPGRADE_URL,
|
|
46
|
+
category: 'rate_limit',
|
|
47
|
+
retryable: false,
|
|
48
|
+
retry_after_ms: null,
|
|
49
|
+
fallback_tool: null,
|
|
50
|
+
trace_id: Math.random().toString(36).slice(2, 10)
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
const wordCount = params.product_description.trim().split(/\s+/).length;
|
|
56
|
+
if (wordCount < 4) {
|
|
57
|
+
return {
|
|
58
|
+
output: null,
|
|
59
|
+
error: {
|
|
60
|
+
error: 'Product description too vague for reliable HS classification',
|
|
61
|
+
likely_cause: `"${params.product_description}" has only ${wordCount} word${wordCount === 1 ? '' : 's'}. Descriptions under 4 words return incorrect or ambiguous HS codes from the tariff database.`,
|
|
62
|
+
agent_action: 'Expand the description to include material + function + intended use. ' +
|
|
63
|
+
'Examples: "solid oak dining chair with upholstered seat" not "chair", ' +
|
|
64
|
+
'"stainless steel 500ml insulated water bottle" not "bottle", ' +
|
|
65
|
+
'"polypropylene injection moulding pellets for automotive parts" not "plastic pellets". ' +
|
|
66
|
+
'Retry with the expanded description.',
|
|
67
|
+
category: 'invalid_input',
|
|
68
|
+
retryable: true,
|
|
69
|
+
retry_after_ms: null,
|
|
70
|
+
fallback_tool: null,
|
|
71
|
+
trace_id: Math.random().toString(36).slice(2, 10)
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
let hspingData;
|
|
76
|
+
try {
|
|
77
|
+
hspingData = await queryHSPing(params.product_description, params.country);
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
if (err instanceof AxiosError) {
|
|
81
|
+
return {
|
|
82
|
+
output: null,
|
|
83
|
+
error: {
|
|
84
|
+
error: `HSPing API error: HTTP ${err.response?.status ?? 'timeout'}`,
|
|
85
|
+
likely_cause: 'HSPing API is temporarily unavailable or HSPING_API_KEY is invalid',
|
|
86
|
+
agent_action: 'Retry once after 30 seconds. If error persists, check service status at kordagencies.com.',
|
|
87
|
+
category: 'upstream_unavailable',
|
|
88
|
+
retryable: true,
|
|
89
|
+
retry_after_ms: 30000,
|
|
90
|
+
fallback_tool: 'hs_classify_product',
|
|
91
|
+
trace_id: Math.random().toString(36).slice(2, 10)
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
output: null,
|
|
97
|
+
error: {
|
|
98
|
+
error: err instanceof Error ? err.message : String(err),
|
|
99
|
+
likely_cause: 'Unexpected error querying tariff database',
|
|
100
|
+
agent_action: 'Retry once. If error persists, contact support at ojas@kordagencies.com.',
|
|
101
|
+
category: 'upstream_unavailable',
|
|
102
|
+
retryable: true,
|
|
103
|
+
retry_after_ms: 120000,
|
|
104
|
+
fallback_tool: 'hs_classify_product',
|
|
105
|
+
trace_id: Math.random().toString(36).slice(2, 10)
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
if (hspingData.count === 0 || hspingData.results.length === 0) {
|
|
110
|
+
const out = {
|
|
111
|
+
verdict: 'NOT_FOUND',
|
|
112
|
+
agent_action: 'No official tariff code found for this product description in the selected country. ' +
|
|
113
|
+
'Try a more specific description including material and function, or try a different country code.',
|
|
114
|
+
hs_code: '',
|
|
115
|
+
wco_6digit: null,
|
|
116
|
+
description: 'No matching tariff entry found',
|
|
117
|
+
country: params.country,
|
|
118
|
+
source: 'HSPing API (api.hsping.com)',
|
|
119
|
+
source_url: 'https://api.hsping.com',
|
|
120
|
+
version: '',
|
|
121
|
+
last_updated: '',
|
|
122
|
+
direction: '',
|
|
123
|
+
confidence_level: 'LOW',
|
|
124
|
+
classification_reasoning: 'No results returned from the official tariff schedule for this product description. ' +
|
|
125
|
+
'Consider using more specific terminology matching official tariff language.',
|
|
126
|
+
total_matches: 0,
|
|
127
|
+
checked_at: nowISO(),
|
|
128
|
+
analysis_type: 'AI-assisted classification -- NOT a simple database lookup',
|
|
129
|
+
token_count: 0,
|
|
130
|
+
_disclaimer: LEGAL_DISCLAIMER
|
|
131
|
+
};
|
|
132
|
+
out.token_count = Math.ceil(JSON.stringify(out).length / 4);
|
|
133
|
+
return { output: out };
|
|
134
|
+
}
|
|
135
|
+
const allResults = hspingData.results;
|
|
136
|
+
const aiResult = await classifyWithAI(params.product_description, allResults, params.country);
|
|
137
|
+
const bestMatch = allResults[aiResult.best_match_index] ?? allResults[0];
|
|
138
|
+
const month = new Date().toISOString().slice(0, 7);
|
|
139
|
+
const used = ((stats.free_tier_calls_by_ip[ip] ?? {})[month] ?? 0) + 1;
|
|
140
|
+
let upgradeNotice;
|
|
141
|
+
if (!isPaid && allResults.length > 1) {
|
|
142
|
+
upgradeNotice =
|
|
143
|
+
`Pro tier shows ${allResults.length - 1} additional classification match${allResults.length - 1 > 1 ? 'es' : ''} for this product -- ` +
|
|
144
|
+
`important when a product could fall under multiple codes. Get 500 calls for $40 at ${PRO_UPGRADE_URL} -- calls never expire.`;
|
|
145
|
+
}
|
|
146
|
+
let notice;
|
|
147
|
+
if (!isPaid && FREE_TIER_MONTHLY_LIMIT - used <= FREE_TIER_MONTHLY_LIMIT - FREE_TIER_WARNING_THRESHOLD) {
|
|
148
|
+
const remaining = Math.max(0, FREE_TIER_MONTHLY_LIMIT - used);
|
|
149
|
+
if (remaining > 0) {
|
|
150
|
+
notice = `Warning: ${remaining} free classify call${remaining !== 1 ? 's' : ''} remaining this month (limit: ${effectiveLimit}). Get 500 calls for $40 at ${PRO_UPGRADE_URL} -- calls never expire.`;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
const out = {
|
|
154
|
+
verdict: aiResult.confidence_level === 'LOW' ? 'AMBIGUOUS' : 'CLASSIFIED',
|
|
155
|
+
agent_action: aiResult.confidence_level === 'HIGH'
|
|
156
|
+
? `Use HS code ${bestMatch.hscode} for ${params.country} customs documentation. Proceed with declaration.`
|
|
157
|
+
: aiResult.confidence_level === 'MEDIUM'
|
|
158
|
+
? `Use HS code ${bestMatch.hscode} for ${params.country} customs documentation. Review AI reasoning before submitting high-value shipments.`
|
|
159
|
+
: `Classification is ambiguous -- ${allResults.length} possible codes identified. Escalate to a licensed customs broker before submitting declaration.`,
|
|
160
|
+
hs_code: bestMatch.hscode,
|
|
161
|
+
wco_6digit: bestMatch.wco,
|
|
162
|
+
description: bestMatch.description_en,
|
|
163
|
+
country: bestMatch.country,
|
|
164
|
+
source: bestMatch.source,
|
|
165
|
+
source_url: 'https://api.hsping.com',
|
|
166
|
+
version: bestMatch.version,
|
|
167
|
+
last_updated: bestMatch.last_updated,
|
|
168
|
+
direction: bestMatch.direction,
|
|
169
|
+
confidence_level: aiResult.confidence_level,
|
|
170
|
+
classification_reasoning: aiResult.reasoning,
|
|
171
|
+
...(isPaid ? { all_matches: allResults } : {}),
|
|
172
|
+
total_matches: allResults.length,
|
|
173
|
+
checked_at: nowISO(),
|
|
174
|
+
analysis_type: 'AI-assisted classification -- NOT a simple database lookup',
|
|
175
|
+
...(upgradeNotice ? { _upgrade_notice: upgradeNotice } : {}),
|
|
176
|
+
...(notice ? { _notice: notice } : {}),
|
|
177
|
+
token_count: 0,
|
|
178
|
+
_disclaimer: LEGAL_DISCLAIMER
|
|
179
|
+
};
|
|
180
|
+
if (out.verdict === 'AMBIGUOUS') {
|
|
181
|
+
out.hold_reason = allResults.length + ' possible HS codes identified for this product -- classification is ambiguous and customs authorities may assess differently';
|
|
182
|
+
out.retry_after = null;
|
|
183
|
+
out.escalation_path = 'Escalate to a licensed customs broker to determine the correct HS code before submitting customs declaration';
|
|
184
|
+
}
|
|
185
|
+
out.token_count = Math.ceil(JSON.stringify(out).length / 4);
|
|
186
|
+
return { output: out };
|
|
187
|
+
}
|
|
188
|
+
export function formatClassifyResponse(out, format) {
|
|
189
|
+
if (format === ResponseFormat.MARKDOWN)
|
|
190
|
+
return buildMarkdown(out);
|
|
191
|
+
return JSON.stringify(out, null, 2);
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=classify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classify.js","sourceRoot":"","sources":["../../src/tools/classify.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/tools/validate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAyBlD,wBAAsB,WAAW,CAC/B,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC;IAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CA+E7E;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,GAAG,MAAM,CAG1F"}
|