web-access-cli 0.1.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.
Files changed (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +270 -0
  3. package/README_CN.md +268 -0
  4. package/THIRD_PARTY_NOTICES.md +48 -0
  5. package/dist/cli.js +197 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/config/config.js +463 -0
  8. package/dist/config/config.js.map +1 -0
  9. package/dist/config/edit.js +126 -0
  10. package/dist/config/edit.js.map +1 -0
  11. package/dist/core/diagnostics.js +94 -0
  12. package/dist/core/diagnostics.js.map +1 -0
  13. package/dist/core/errors.js +47 -0
  14. package/dist/core/errors.js.map +1 -0
  15. package/dist/core/router.js +320 -0
  16. package/dist/core/router.js.map +1 -0
  17. package/dist/core/schema.js +120 -0
  18. package/dist/core/schema.js.map +1 -0
  19. package/dist/core/types.js +22 -0
  20. package/dist/core/types.js.map +1 -0
  21. package/dist/providers/anysearch.js +225 -0
  22. package/dist/providers/anysearch.js.map +1 -0
  23. package/dist/providers/common.js +210 -0
  24. package/dist/providers/common.js.map +1 -0
  25. package/dist/providers/extract.js +155 -0
  26. package/dist/providers/extract.js.map +1 -0
  27. package/dist/providers/registry.js +31 -0
  28. package/dist/providers/registry.js.map +1 -0
  29. package/dist/providers/rsc.js +109 -0
  30. package/dist/providers/rsc.js.map +1 -0
  31. package/dist/providers/search.js +178 -0
  32. package/dist/providers/search.js.map +1 -0
  33. package/dist/providers/xcrawl.js +170 -0
  34. package/dist/providers/xcrawl.js.map +1 -0
  35. package/dist/transport/http.js +175 -0
  36. package/dist/transport/http.js.map +1 -0
  37. package/dist/version.js +2 -0
  38. package/dist/version.js.map +1 -0
  39. package/package.json +61 -0
  40. package/schemas/config.schema.json +210 -0
  41. package/schemas/extractRequest.schema.json +21 -0
  42. package/schemas/output.schema.json +435 -0
  43. package/schemas/searchRequest.schema.json +57 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/core/router.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAsB,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAqC3E,SAAS,OAAO,CAAC,KAAa,EAAE,GAAiB;IAChD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,YAAY,CACpB,KAAqB,EACrB,QAA0B;IAE1B,IAAI,KAAK,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IACjC,OAAO,IAAI,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE;QACpD,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC;QACvB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,GAAG,EAAE,KAAK,CAAC,GAAG;KACd,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CAAC,GAAY,EAAE,SAA6B;IAC3D,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC7D,MAAM,SAAS,GACd,+IAA+I,CAAC;IACjJ,MAAM,MAAM,GAAG,CAAC,KAAc,EAAW,EAAE;QAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACjE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACxC,MAAM,MAAM,GAA4B,EAAE,CAAC;YAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;gBAC9C,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACjE,OAAO,MAAM,CAAC;QACf,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC,CAAC;IACF,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC;YACJ,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;IACF,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACpB,CAAC;AAED,SAAS,gBAAgB,CACxB,MAAoB,EACpB,UAAsB,EACtB,QAAgB;IAEhB,MAAM,KAAK,GACV,UAAU,KAAK,QAAQ;QACtB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS;QAC7B,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC;IACjC,MAAM,IAAI,GAAG,IAAI,GAAG,CACnB,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAC3D,CAAC;IACF,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ;YACZ,MAAM,IAAI,cAAc,CACvB,kBAAkB,EAClB,yBAAyB,QAAQ,EAAE,CACnC,CAAC;QACH,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;YACjD,MAAM,IAAI,cAAc,CACvB,kBAAkB,EAClB,GAAG,QAAQ,QAAQ,UAAU,EAAE,EAC/B,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAC3B,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC5B,MAAM,IAAI,cAAc,CACvB,mBAAmB,EACnB,GAAG,QAAQ,OAAO,UAAU,sBAAsB,EAClD,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAC3B,CAAC;QACH,OAAO,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACpD,CAAC;IACD,OAAO;QACN,SAAS,EAAE,KAAK;aACd,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;aACzB,MAAM,CAAC,CAAC,QAAQ,EAAgC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QAChE,SAAS,EAAE,IAAI;KACf,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,QAA2B;IAChD,OAAO,IAAI,cAAc,CAAC,SAAS,EAAE,WAAW,EAAE;QACjD,SAAS,EAAE,IAAI;QACf,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChD,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CACxB,QAA0B,EAC1B,UAAsB;IAEtB,OAAO,IAAI,cAAc,CACxB,sBAAsB,EACtB,GAAG,QAAQ,CAAC,EAAE,QAAQ,UAAU,OAAO,EACvC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAC5C,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CACtB,KAAqB,EACrB,MAA+B,EAC/B,QAA0B;IAE1B,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACnE,IAAI,MAAM,EAAE,OAAO;QAClB,OAAO,IAAI,cAAc,CAAC,SAAS,EAAE,OAAO,EAAE;YAC7C,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC;SACvB,CAAC,CAAC;IACJ,OAAO,IAAI,cAAc,CAAC,SAAS,EAAE,GAAG,QAAQ,CAAC,EAAE,OAAO,EAAE;QAC3D,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC;QACvB,SAAS,EAAE,IAAI;KACf,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,YAAY,CAAI,OAe9B;IACA,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACrE,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC;IACtB,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,oBAAoB,EAAE,CAAC;IAC1E,IAAI,QAA+D,CAAC;IACpE,IAAI,CAAC;QACJ,QAAQ,GAAG,gBAAgB,CAC1B,OAAO,CAAC,OAAO,CAAC,MAAM,EACtB,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,QAAQ,CAChB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,EAAE,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACzD,CAAC;IACD,MAAM,QAAQ,GAAsB,EAAE,CAAC;IACvC,IAAI,SAAqC,CAAC;IAC1C,IAAI,OAAgB,CAAC;IACrB,IAAI,OAA8B,CAAC;IAEnC,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACjE,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;YACpB,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;YACnC,MAAM;QACP,CAAC;QACD,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;QAC9D,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;YAC7D,QAAQ,CAAC,IAAI,CAAC;gBACb,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC;gBACvB,MAAM,EAAE,QAAQ;gBAChB,UAAU,EAAE,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;gBACxC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE;aACrB,CAAC,CAAC;YACH,SAAS,GAAG,KAAK,CAAC;YAClB,IAAI,QAAQ,CAAC,SAAS;gBAAE,SAAS;YACjC,MAAM;QACP,CAAC;QAED,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC;YACrC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,WAAW,CAAC,OAAO,CAClB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAC1D;SACD,CAAC,CAAC;QACH,IAAI,CAAC;YACJ,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,MAAM,CACrC,QAAQ,EACR,aAAa,EACb,SAAS,CACT,CAAC;YACF,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC7D,IAAI,YAAY,EAAE,CAAC;gBAClB,SAAS,GAAG,YAAY,CAAC;gBACzB,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC;gBACxB,MAAM,SAAS,GAAG,SAAS,CAAC,IAAmB,CAAC;gBAChD,IACC,CAAC,OAAO;oBACR,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;wBAChC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EACpC,CAAC;oBACF,OAAO,GAAG;wBACT,QAAQ,EAAE,QAAQ;wBAClB,IAAI,EAAE,SAAS;wBACf,GAAG,EAAE,SAAS,CAAC,GAAG;qBAClB,CAAC;gBACH,CAAC;gBACD,QAAQ,CAAC,IAAI,CAAC;oBACb,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC;oBACvB,MAAM,EAAE,QAAQ;oBAChB,UAAU,EAAE,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;oBACxC,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE;iBAC5B,CAAC,CAAC;gBACH,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,CAAC,YAAY,CAAC,SAAS;oBAAE,MAAM;gBAC1D,SAAS;YACV,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC;gBACb,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC;gBACvB,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;aACxC,CAAC,CAAC;YACH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;QACpD,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,cAAc,CAC3B,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAC1C,OAAO,CAAC,OAAO,CAAC,MAAM,EACtB,QAAQ,CACR,CAAC;YACF,SAAS,GAAG,KAAK,CAAC;YAClB,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC;YACpB,QAAQ,CAAC,IAAI,CAAC;gBACb,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC;gBACvB,MAAM,EAAE,QAAQ;gBAChB,UAAU,EAAE,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;gBACxC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE;aACrB,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,SAAS;gBAAE,MAAM;QACpD,CAAC;IACF,CAAC;IAED,IAAI,CAAC,SAAS;QACb,SAAS,GAAG,IAAI,cAAc,CAC7B,oBAAoB,EACpB,SAAS,OAAO,CAAC,UAAU,WAAW,CACtC,CAAC;SACE,IACJ,QAAQ,CAAC,SAAS;QAClB,QAAQ,CAAC,MAAM,GAAG,CAAC;QACnB,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC;QACxD,SAAS,CAAC,SAAS,EAClB,CAAC;QACF,SAAS,GAAG,IAAI,cAAc,CAC7B,oBAAoB,EACpB,MAAM,OAAO,CAAC,UAAU,eAAe,EACvC;YACC,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,EAAE;YAC1C,GAAG,EAAE,OAAO;SACZ,CACD,CAAC;IACH,CAAC;IACD,OAAO;QACN,KAAK,EAAE,SAAS;QAChB,QAAQ;QACR,GAAG,EAAE,OAAO;QACZ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/B,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CACvB,OAA6B,EAC7B,OAAuC,EACvC,OAAe,EACf,GAAiB,EACjB,MAAkB,EAClB,SAA6B;IAE7B,OAAO;QACN,aAAa,EAAE,CAAC;QAChB,EAAE,EAAE,KAAK;QACT,OAAO;QACP,UAAU,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;QACjC,OAAO;QACP,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;QAC5B,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,SAAS;YAC3B,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE;YACzC,CAAC,CAAC,EAAE,CAAC;QACN,GAAG,CAAC,MAAM,CAAC,OAAO;YACjB,CAAC,CAAC;gBACA,OAAO,EAAE;oBACR,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;oBACtC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI;oBACzB,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC;iBAC3C;aACD;YACF,CAAC,CAAC,EAAE,CAAC;KACN,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAClC,OAAsB,EACtB,OAAyB;IAEzB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC;IACtB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;IACzC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAa;QAC7C,UAAU,EAAE,QAAQ;QACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,OAAO;QACP,cAAc,EAAE,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS;QACrD,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE;YACvC,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACpD,IAAI,CAAC,OAAO,EAAE,MAAM;gBAAE,MAAM,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACjE,OAAO,OAAO,CAAC,MAAM,CAAC;gBACrB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,MAAM;gBACN,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;gBACzC,QAAQ;gBACR,SAAS;aACT,CAAC,CAAC;QACJ,CAAC;KACD,CAAC,CAAC;IACH,IAAI,OAAO,IAAI,MAAM;QACpB,OAAO,eAAe,CACrB,QAAQ,EACR,OAAO,EACP,OAAO,EACP,GAAG,EACH,MAAM,EACN,OAAO,CAAC,MAAM,CAAC,SAAS,CACxB,CAAC;IACH,MAAM,QAAQ,GAA0B;QACvC,aAAa,EAAE,CAAC;QAChB,EAAE,EAAE,IAAI;QACR,OAAO,EAAE,QAAQ;QACjB,UAAU,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;QACjC,OAAO;QACP,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC9B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI;QAC3B,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;KAC5D,CAAC;IACF,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CACnC,OAAuB,EACvB,OAAyB;IAEzB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC;IACtB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;IAC1C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAc;QAC9C,UAAU,EAAE,SAAS;QACrB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,OAAO;QACP,cAAc,EAAE,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS;QACrD,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE;YACvC,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACrD,IAAI,CAAC,OAAO,EAAE,OAAO;gBAAE,MAAM,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YACnE,OAAO,OAAO,CAAC,OAAO,CAAC;gBACtB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,MAAM;gBACN,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;gBACzC,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;gBACjD,QAAQ;gBACR,SAAS;aACT,CAAC,CAAC;QACJ,CAAC;QACD,QAAQ,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE;YACjC,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;YACjE,IAAI,UAAU,IAAI,MAAM,CAAC,oBAAoB;gBAAE,OAAO,SAAS,CAAC;YAChE,OAAO,IAAI,cAAc,CACxB,mBAAmB,EACnB,GAAG,QAAQ,CAAC,EAAE,UAAU,EACxB;gBACC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC;gBACvB,SAAS,EAAE,IAAI;gBACf,OAAO,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,oBAAoB,EAAE;gBAC7D,GAAG,EAAE,SAAS,CAAC,GAAG;aAClB,CACD,CAAC;QACH,CAAC;KACD,CAAC,CAAC;IACH,IAAI,OAAO,IAAI,MAAM;QACpB,OAAO,eAAe,CACrB,SAAS,EACT,OAAO,EACP,OAAO,EACP,GAAG,EACH,MAAM,EACN,OAAO,CAAC,MAAM,CAAC,SAAS,CACxB,CAAC;IACH,MAAM,QAAQ,GAA2B;QACxC,aAAa,EAAE,CAAC;QAChB,EAAE,EAAE,IAAI;QACR,OAAO,EAAE,SAAS;QAClB,UAAU,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;QACjC,OAAO;QACP,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC9B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI;QAC3B,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;KAC5D,CAAC;IACF,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,aAAa,CAC5B,KAAc,EACd,UAA0B,IAAI;IAE9B,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC3C,OAAO;QACN,aAAa,EAAE,CAAC;QAChB,EAAE,EAAE,KAAK;QACT,OAAO;QACP,UAAU,EAAE,CAAC;QACb,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE;KAC1B,CAAC;AACH,CAAC"}
@@ -0,0 +1,120 @@
1
+ import { Type } from "typebox";
2
+ import { CAPABILITIES, COMMANDS, FRESHNESS_VALUES, PROVIDER_TYPES, SEARCH_FILTER_MODES, } from "./types.js";
3
+ const literalUnion = (values) => Type.Union(values.map((value) => Type.Literal(value)));
4
+ export const ProviderTypeSchema = literalUnion(PROVIDER_TYPES);
5
+ const NonSearchFilterProviderTypeSchema = literalUnion(PROVIDER_TYPES.filter((value) => value !== "anysearch" && value !== "xcrawl"));
6
+ const SearchFilterProviderTypeSchema = Type.Union([
7
+ Type.Literal("anysearch"),
8
+ Type.Literal("xcrawl"),
9
+ ]);
10
+ export const CapabilitySchema = literalUnion(CAPABILITIES);
11
+ export const CommandSchema = literalUnion(COMMANDS);
12
+ export const FreshnessSchema = literalUnion(FRESHNESS_VALUES);
13
+ export const SearchFilterModeSchema = literalUnion(SEARCH_FILTER_MODES);
14
+ const ProviderInstanceFields = {
15
+ id: Type.String({ pattern: "^[a-z][a-z0-9_-]{0,63}$" }),
16
+ apiKey: Type.Optional(Type.String()),
17
+ apiKeyEnv: Type.Optional(Type.String({ pattern: "^[A-Za-z_][A-Za-z0-9_]*$" })),
18
+ baseUrl: Type.Optional(Type.String({ format: "uri" })),
19
+ baseUrlEnv: Type.Optional(Type.String({ pattern: "^[A-Za-z_][A-Za-z0-9_]*$" })),
20
+ headers: Type.Optional(Type.Record(Type.String({ pattern: "^[^\\r\\n]+$" }), Type.String({ pattern: "^[^\\r\\n]*$" }), { additionalProperties: false })),
21
+ };
22
+ export const ProviderInstanceConfigSchema = Type.Union([
23
+ Type.Object({
24
+ ...ProviderInstanceFields,
25
+ type: NonSearchFilterProviderTypeSchema,
26
+ }, { additionalProperties: false }),
27
+ Type.Object({
28
+ ...ProviderInstanceFields,
29
+ type: SearchFilterProviderTypeSchema,
30
+ searchFilterMode: Type.Optional(SearchFilterModeSchema),
31
+ }, { additionalProperties: false }),
32
+ ]);
33
+ export const SearchConfigSchema = Type.Object({
34
+ providers: Type.Optional(Type.Array(Type.String({ pattern: "^[a-z][a-z0-9_-]{0,63}$" }))),
35
+ limit: Type.Optional(Type.Integer({ minimum: 1, maximum: 20 })),
36
+ timeoutMs: Type.Optional(Type.Integer({ minimum: 1 })),
37
+ attemptTimeoutMs: Type.Optional(Type.Integer({ minimum: 1 })),
38
+ maxResponseBytes: Type.Optional(Type.Integer({ minimum: 1 })),
39
+ }, { additionalProperties: false });
40
+ export const ExtractConfigSchema = Type.Object({
41
+ providers: Type.Optional(Type.Array(Type.String({ pattern: "^[a-z][a-z0-9_-]{0,63}$" }))),
42
+ timeoutMs: Type.Optional(Type.Integer({ minimum: 1 })),
43
+ attemptTimeoutMs: Type.Optional(Type.Integer({ minimum: 1 })),
44
+ maxResponseBytes: Type.Optional(Type.Integer({ minimum: 1 })),
45
+ minContentCharacters: Type.Optional(Type.Integer({ minimum: 1 })),
46
+ }, { additionalProperties: false });
47
+ export const AppConfigSchema = Type.Object({
48
+ $schema: Type.Optional(Type.String({ format: "uri-reference" })),
49
+ providers: Type.Optional(Type.Array(ProviderInstanceConfigSchema)),
50
+ search: Type.Optional(SearchConfigSchema),
51
+ extract: Type.Optional(ExtractConfigSchema),
52
+ }, { additionalProperties: false });
53
+ export const SearchRequestSchema = Type.Object({
54
+ query: Type.String({ minLength: 1 }),
55
+ provider: Type.String({ minLength: 1 }),
56
+ limit: Type.Integer({ minimum: 1, maximum: 20 }),
57
+ freshness: Type.Optional(FreshnessSchema),
58
+ includeDomains: Type.Array(Type.String()),
59
+ excludeDomains: Type.Array(Type.String()),
60
+ timeoutMs: Type.Optional(Type.Integer({ minimum: 1 })),
61
+ });
62
+ export const ExtractRequestSchema = Type.Object({
63
+ url: Type.String({ format: "uri" }),
64
+ provider: Type.String({ minLength: 1 }),
65
+ timeoutMs: Type.Optional(Type.Integer({ minimum: 1 })),
66
+ });
67
+ export const ProviderRefSchema = Type.Object({
68
+ id: Type.String(),
69
+ type: ProviderTypeSchema,
70
+ });
71
+ export const SearchHitSchema = Type.Object({
72
+ rank: Type.Integer({ minimum: 1 }),
73
+ title: Type.String(),
74
+ url: Type.String({ format: "uri" }),
75
+ snippet: Type.String(),
76
+ });
77
+ export const DocumentSchema = Type.Object({
78
+ sourceUrl: Type.String({ format: "uri" }),
79
+ title: Type.String(),
80
+ content: Type.String(),
81
+ contentType: Type.Literal("text/markdown"),
82
+ });
83
+ export const ErrorInfoSchema = Type.Object({
84
+ code: Type.String(),
85
+ message: Type.String(),
86
+ retryable: Type.Boolean(),
87
+ provider: Type.Optional(ProviderRefSchema),
88
+ httpStatus: Type.Optional(Type.Integer()),
89
+ details: Type.Optional(Type.Unknown()),
90
+ });
91
+ export const AttemptSchema = Type.Object({
92
+ provider: ProviderRefSchema,
93
+ status: Type.Union([Type.Literal("success"), Type.Literal("failed")]),
94
+ durationMs: Type.Integer({ minimum: 0 }),
95
+ error: Type.Optional(ErrorInfoSchema),
96
+ });
97
+ export const OutputEnvelopeSchema = Type.Object({
98
+ schemaVersion: Type.Literal(1),
99
+ ok: Type.Boolean(),
100
+ command: Type.Union([CommandSchema, Type.Null()]),
101
+ durationMs: Type.Integer({ minimum: 0 }),
102
+ request: Type.Optional(Type.Unknown()),
103
+ provider: Type.Optional(ProviderRefSchema),
104
+ attempts: Type.Optional(Type.Array(AttemptSchema)),
105
+ data: Type.Optional(Type.Unknown()),
106
+ raw: Type.Optional(Type.Unknown()),
107
+ error: Type.Optional(ErrorInfoSchema),
108
+ partial: Type.Optional(Type.Object({
109
+ provider: ProviderRefSchema,
110
+ data: Type.Object({ document: DocumentSchema }),
111
+ raw: Type.Unknown(),
112
+ })),
113
+ });
114
+ export const SchemaDocuments = {
115
+ config: AppConfigSchema,
116
+ output: OutputEnvelopeSchema,
117
+ searchRequest: SearchRequestSchema,
118
+ extractRequest: ExtractRequestSchema,
119
+ };
120
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/core/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ export const PROVIDER_TYPES = [
2
+ "tavily",
3
+ "exa",
4
+ "brave",
5
+ "searxng",
6
+ "firecrawl",
7
+ "jina",
8
+ "http",
9
+ "anysearch",
10
+ "xcrawl",
11
+ ];
12
+ export const SEARCH_FILTER_MODES = ["strict", "best_effort"];
13
+ export const CAPABILITIES = ["search", "extract"];
14
+ export const COMMANDS = [
15
+ "search",
16
+ "extract",
17
+ "providers",
18
+ "doctor",
19
+ "config.edit",
20
+ ];
21
+ export const FRESHNESS_VALUES = ["day", "month", "year"];
22
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG;IAC7B,QAAQ;IACR,KAAK;IACL,OAAO;IACP,SAAS;IACT,WAAW;IACX,MAAM;IACN,MAAM;IACN,WAAW;IACX,QAAQ;CACC,CAAC;AAGX,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAU,CAAC;AAGtE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAU,CAAC;AAG3D,MAAM,CAAC,MAAM,QAAQ,GAAG;IACvB,QAAQ;IACR,SAAS;IACT,WAAW;IACX,QAAQ;IACR,aAAa;CACJ,CAAC;AAGX,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC"}
@@ -0,0 +1,225 @@
1
+ import { redactText, WebAccessError } from "../core/errors.js";
2
+ import { buildEndpoint } from "../transport/http.js";
3
+ import { VERSION } from "../version.js";
4
+ import { freshnessStartDate, normalizeHits, parseJsonResponse, providerHeaders, ref, requireBaseUrl, searchQueryWithDomains, } from "./common.js";
5
+ function requestBody(data) {
6
+ return JSON.stringify(data);
7
+ }
8
+ function queryWithFilters(request) {
9
+ const parts = [
10
+ searchQueryWithDomains(request.query, request.includeDomains, request.excludeDomains),
11
+ ];
12
+ if (request.instance.searchFilterMode === "best_effort" && request.freshness)
13
+ parts.push(`after:${freshnessStartDate(request.freshness)}`);
14
+ return parts.join(" ");
15
+ }
16
+ function upstreamMessage(value) {
17
+ if (typeof value === "string")
18
+ return value.slice(0, 500);
19
+ if (value && typeof value === "object" && !Array.isArray(value)) {
20
+ const record = value;
21
+ for (const key of ["message", "error", "msg"]) {
22
+ if (typeof record[key] === "string")
23
+ return record[key].slice(0, 500);
24
+ }
25
+ }
26
+ return "上游返回错误";
27
+ }
28
+ function sensitiveValues(value) {
29
+ const values = [];
30
+ const sensitive = /^(?:auto[_-]?registered|api[_-]?key|apikey|password|username|user|email|access[_-]?token|accesstoken|refresh[_-]?token|refreshtoken|authorization|cookie|client[_-]?secret|clientsecret)$/i;
31
+ const visit = (current, key = "") => {
32
+ if (typeof current === "string" &&
33
+ sensitive.test(key) &&
34
+ current.length >= 4)
35
+ values.push(current);
36
+ else if (Array.isArray(current)) {
37
+ for (const item of current)
38
+ visit(item, key);
39
+ }
40
+ else if (current && typeof current === "object") {
41
+ for (const [name, item] of Object.entries(current))
42
+ visit(item, name);
43
+ }
44
+ };
45
+ visit(value);
46
+ return values;
47
+ }
48
+ function statusFailure(status, body, request) {
49
+ let parsedBody = body;
50
+ try {
51
+ parsedBody = JSON.parse(body);
52
+ }
53
+ catch {
54
+ // 保留非 JSON 错误文本。
55
+ }
56
+ const message = redactText(upstreamMessage(parsedBody), [
57
+ ...sensitiveValues(parsedBody),
58
+ request.instance.apiKey,
59
+ ]);
60
+ let code;
61
+ let retryable = false;
62
+ if (status === 401 || status === 403)
63
+ code = "auth_error";
64
+ else if (status === 402) {
65
+ code = "quota_exceeded";
66
+ retryable = true;
67
+ }
68
+ else if (status === 429) {
69
+ code = "rate_limited";
70
+ retryable = true;
71
+ }
72
+ else if (status === 504) {
73
+ code = "timeout";
74
+ retryable = true;
75
+ }
76
+ else if (status === 415)
77
+ code = "unsupported_content";
78
+ else {
79
+ code = "provider_error";
80
+ retryable = status >= 500;
81
+ }
82
+ return new WebAccessError(code, `${request.instance.id} 返回 HTTP ${status}${message ? `: ${message}` : ""}`, {
83
+ provider: ref(request.instance),
84
+ httpStatus: status,
85
+ retryable,
86
+ raw: parsedBody,
87
+ });
88
+ }
89
+ function assertHttp(response, request) {
90
+ if (response.status < 200 || response.status >= 300)
91
+ throw statusFailure(response.status, response.body, request);
92
+ }
93
+ function resultData(parsed, request) {
94
+ const data = parsed.data;
95
+ if (!data || typeof data !== "object" || Array.isArray(data))
96
+ throw new WebAccessError("invalid_response", "AnySearch 返回缺少 data", {
97
+ provider: ref(request.instance),
98
+ retryable: true,
99
+ raw: parsed,
100
+ });
101
+ return data;
102
+ }
103
+ function businessFailure(parsed, request) {
104
+ const codeValue = parsed.code;
105
+ const status = typeof codeValue === "number" ? codeValue : undefined;
106
+ let code = "provider_error";
107
+ let retryable = true;
108
+ if (status === 401 || status === 403) {
109
+ code = "auth_error";
110
+ retryable = false;
111
+ }
112
+ else if (status === 402)
113
+ code = "quota_exceeded";
114
+ else if (status === 429)
115
+ code = "rate_limited";
116
+ else if (status === 504)
117
+ code = "timeout";
118
+ const message = redactText(upstreamMessage(parsed.message ?? parsed.error), [
119
+ ...sensitiveValues(parsed),
120
+ request.instance.apiKey,
121
+ ]);
122
+ throw new WebAccessError(code, `${request.instance.id} 返回业务错误${status !== undefined ? ` ${status}` : ""}: ${message}`, { provider: ref(request.instance), retryable, raw: parsed });
123
+ }
124
+ const anysearch = {
125
+ type: "anysearch",
126
+ capabilities: ["search", "extract"],
127
+ isConfigured: (instance) => !!instance.baseUrl,
128
+ async search(request) {
129
+ if (request.freshness &&
130
+ (request.instance.searchFilterMode ?? "strict") === "strict")
131
+ throw new WebAccessError("provider_unavailable", "AnySearch 严格模式不支持 freshness", { provider: ref(request.instance), retryable: true });
132
+ const maxResults = request.includeDomains.length || request.excludeDomains.length
133
+ ? 20
134
+ : request.limit;
135
+ const headers = providerHeaders(request.instance, {
136
+ "Content-Type": "application/json",
137
+ Accept: "application/json",
138
+ "X-Anysearch-Client": `web-access-cli/${VERSION}`,
139
+ });
140
+ headers["X-Anysearch-Client"] = `web-access-cli/${VERSION}`;
141
+ if (request.instance.apiKey)
142
+ headers.Authorization = `Bearer ${request.instance.apiKey}`;
143
+ const response = await request.transport.request(buildEndpoint(requireBaseUrl(request.instance), "v1/search"), {
144
+ method: "POST",
145
+ headers,
146
+ body: requestBody({
147
+ query: queryWithFilters(request),
148
+ max_results: maxResults,
149
+ format: "json",
150
+ }),
151
+ signal: request.signal,
152
+ maxResponseBytes: request.maxResponseBytes,
153
+ });
154
+ assertHttp(response, request);
155
+ const parsed = parseJsonResponse(response, request.instance);
156
+ if (parsed.code !== 0)
157
+ businessFailure(parsed, request);
158
+ const data = resultData(parsed, request);
159
+ if (!Array.isArray(data.results))
160
+ throw new WebAccessError("invalid_response", "AnySearch 返回缺少 data.results", { provider: ref(request.instance), retryable: true, raw: parsed });
161
+ return {
162
+ data: {
163
+ results: normalizeHits(data.results, request.limit, request.includeDomains, request.excludeDomains),
164
+ },
165
+ raw: parsed,
166
+ };
167
+ },
168
+ async extract(request) {
169
+ const headers = providerHeaders(request.instance, {
170
+ "Content-Type": "application/json",
171
+ Accept: "application/json",
172
+ "X-Anysearch-Client": `web-access-cli/${VERSION}`,
173
+ });
174
+ headers["X-Anysearch-Client"] = `web-access-cli/${VERSION}`;
175
+ if (request.instance.apiKey)
176
+ headers.Authorization = `Bearer ${request.instance.apiKey}`;
177
+ const response = await request.transport.request(buildEndpoint(requireBaseUrl(request.instance), "mcp"), {
178
+ method: "POST",
179
+ headers,
180
+ body: requestBody({
181
+ jsonrpc: "2.0",
182
+ id: 1,
183
+ method: "tools/call",
184
+ params: { name: "extract", arguments: { url: request.url } },
185
+ }),
186
+ signal: request.signal,
187
+ maxResponseBytes: request.maxResponseBytes,
188
+ });
189
+ assertHttp(response, request);
190
+ const parsed = parseJsonResponse(response, request.instance);
191
+ if (parsed.jsonrpc !== "2.0" || parsed.id !== 1)
192
+ throw new WebAccessError("invalid_response", "AnySearch JSON-RPC 响应格式无效", { provider: ref(request.instance), retryable: true, raw: parsed });
193
+ if (parsed.error !== undefined)
194
+ businessFailure(parsed, request);
195
+ const result = parsed.result;
196
+ if (!result || typeof result !== "object" || Array.isArray(result))
197
+ throw new WebAccessError("invalid_response", "AnySearch JSON-RPC 缺少 result", { provider: ref(request.instance), retryable: true, raw: parsed });
198
+ const resultRecord = result;
199
+ if (resultRecord.isError === true)
200
+ throw new WebAccessError("provider_error", `AnySearch extract 工具错误: ${upstreamMessage(resultRecord)}`, { provider: ref(request.instance), retryable: true, raw: parsed });
201
+ if (!Array.isArray(resultRecord.content))
202
+ throw new WebAccessError("invalid_response", "AnySearch JSON-RPC 缺少 content", { provider: ref(request.instance), retryable: true, raw: parsed });
203
+ const content = resultRecord.content
204
+ .filter((block) => !!block && typeof block === "object" && !Array.isArray(block))
205
+ .map((block) => (typeof block.text === "string" ? block.text.trim() : ""))
206
+ .filter(Boolean)
207
+ .join("\n\n");
208
+ if (!content)
209
+ throw new WebAccessError("no_usable_content", "AnySearch extract 没有返回正文", { provider: ref(request.instance), retryable: true, raw: parsed });
210
+ const title = /^#\s+(.+)$/m.exec(content)?.[1]?.trim() ?? "";
211
+ return {
212
+ data: {
213
+ document: {
214
+ sourceUrl: request.url,
215
+ title,
216
+ content,
217
+ contentType: "text/markdown",
218
+ },
219
+ },
220
+ raw: parsed,
221
+ };
222
+ },
223
+ };
224
+ export const ANYSEARCH_ADAPTER = anysearch;
225
+ //# sourceMappingURL=anysearch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anysearch.js","sourceRoot":"","sources":["../../src/providers/anysearch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,210 @@
1
+ import { redactText, WebAccessError } from "../core/errors.js";
2
+ export function ref(instance) {
3
+ return { id: instance.id, type: instance.type };
4
+ }
5
+ export function requireCredential(instance) {
6
+ if (!instance.apiKey)
7
+ throw new WebAccessError("provider_unavailable", `${instance.id} 缺少 API key`, { provider: ref(instance) });
8
+ return instance.apiKey;
9
+ }
10
+ export function requireBaseUrl(instance) {
11
+ if (!instance.baseUrl)
12
+ throw new WebAccessError("provider_unavailable", `${instance.id} 缺少 baseUrl`, { provider: ref(instance) });
13
+ return instance.baseUrl;
14
+ }
15
+ export function classifyHttpFailure(response, instance, secrets = []) {
16
+ const status = response.status;
17
+ const body = redactText(response.body.slice(0, 500), secrets);
18
+ if (status === 401 || status === 403) {
19
+ return new WebAccessError("auth_error", `${instance.id} 返回 HTTP ${status}${body ? `: ${body}` : ""}`, {
20
+ provider: ref(instance),
21
+ httpStatus: status,
22
+ raw: parseRawBody(response.body),
23
+ });
24
+ }
25
+ if (status === 402) {
26
+ return new WebAccessError("quota_exceeded", `${instance.id} 返回 HTTP 402${body ? `: ${body}` : ""}`, {
27
+ provider: ref(instance),
28
+ httpStatus: status,
29
+ retryable: true,
30
+ raw: parseRawBody(response.body),
31
+ });
32
+ }
33
+ if (status === 408 || status === 425 || status === 429) {
34
+ return new WebAccessError("rate_limited", `${instance.id} 返回 HTTP ${status}${body ? `: ${body}` : ""}`, {
35
+ provider: ref(instance),
36
+ httpStatus: status,
37
+ retryable: true,
38
+ raw: parseRawBody(response.body),
39
+ });
40
+ }
41
+ return new WebAccessError(status >= 500 ? "provider_error" : "provider_error", `${instance.id} 返回 HTTP ${status}${body ? `: ${body}` : ""}`, {
42
+ provider: ref(instance),
43
+ httpStatus: status,
44
+ retryable: status >= 500,
45
+ raw: parseRawBody(response.body),
46
+ });
47
+ }
48
+ export function parseRawBody(text) {
49
+ try {
50
+ return JSON.parse(text);
51
+ }
52
+ catch {
53
+ return text;
54
+ }
55
+ }
56
+ export function parseJsonResponse(response, instance) {
57
+ if (!response.body.trim())
58
+ throw new WebAccessError("invalid_response", `${instance.id} 返回空响应`, {
59
+ provider: ref(instance),
60
+ httpStatus: response.status,
61
+ raw: response.body,
62
+ });
63
+ try {
64
+ const value = JSON.parse(response.body);
65
+ if (!value || typeof value !== "object" || Array.isArray(value))
66
+ throw new Error("JSON 根节点必须是对象");
67
+ return value;
68
+ }
69
+ catch (error) {
70
+ throw new WebAccessError("invalid_response", `${instance.id} 返回无效 JSON: ${error instanceof Error ? error.message : String(error)}`, {
71
+ provider: ref(instance),
72
+ httpStatus: response.status,
73
+ retryable: true,
74
+ raw: response.body,
75
+ });
76
+ }
77
+ }
78
+ export function assertOk(response, instance) {
79
+ if (!response.status || response.status < 200 || response.status >= 300)
80
+ throw classifyHttpFailure(response, instance, instance.apiKey ? [instance.apiKey] : []);
81
+ }
82
+ export function normalizeDomain(raw) {
83
+ let value = raw.trim().toLowerCase();
84
+ if (!value || /\s/.test(value))
85
+ throw new WebAccessError("invalid_input", `域名无效: ${raw}`);
86
+ try {
87
+ value = new URL(value.includes("://") ? value : `https://${value}`).hostname.toLowerCase();
88
+ }
89
+ catch {
90
+ throw new WebAccessError("invalid_input", `域名无效: ${raw}`);
91
+ }
92
+ value = value.replace(/^\.+|\.+$/g, "");
93
+ if (!value || value.includes("/") || value.includes(":"))
94
+ throw new WebAccessError("invalid_input", `域名无效: ${raw}`);
95
+ return value;
96
+ }
97
+ export function normalizeDomains(values) {
98
+ const result = [];
99
+ for (const value of values) {
100
+ const domain = normalizeDomain(value);
101
+ if (!result.includes(domain))
102
+ result.push(domain);
103
+ }
104
+ return result;
105
+ }
106
+ export function searchQueryWithDomains(query, includeDomains, excludeDomains) {
107
+ const parts = [query];
108
+ if (includeDomains.length === 1)
109
+ parts.push(`site:${includeDomains[0]}`);
110
+ else if (includeDomains.length > 1)
111
+ parts.push(`(${includeDomains.map((domain) => `site:${domain}`).join(" OR ")})`);
112
+ for (const domain of excludeDomains)
113
+ parts.push(`-site:${domain}`);
114
+ return parts.join(" ");
115
+ }
116
+ export function hostMatches(hostname, domain) {
117
+ const host = hostname.toLowerCase().replace(/\.$/, "");
118
+ return host === domain || host.endsWith(`.${domain}`);
119
+ }
120
+ export function urlMatchesDomains(url, includeDomains, excludeDomains) {
121
+ let hostname;
122
+ try {
123
+ const parsed = new URL(url);
124
+ if (parsed.protocol !== "http:" && parsed.protocol !== "https:")
125
+ return false;
126
+ hostname = parsed.hostname;
127
+ }
128
+ catch {
129
+ return false;
130
+ }
131
+ if (includeDomains.length > 0 &&
132
+ !includeDomains.some((domain) => hostMatches(hostname, domain)))
133
+ return false;
134
+ return !excludeDomains.some((domain) => hostMatches(hostname, domain));
135
+ }
136
+ export function normalizeHits(items, limit, includeDomains, excludeDomains) {
137
+ if (!Array.isArray(items))
138
+ return [];
139
+ const seen = new Set();
140
+ const result = [];
141
+ for (const item of items) {
142
+ if (!item || typeof item !== "object" || Array.isArray(item))
143
+ continue;
144
+ const raw = item;
145
+ if (typeof raw.url !== "string" ||
146
+ !urlMatchesDomains(raw.url, includeDomains, excludeDomains))
147
+ continue;
148
+ let url;
149
+ try {
150
+ const parsed = new URL(raw.url);
151
+ parsed.hash = "";
152
+ url = parsed.toString();
153
+ }
154
+ catch {
155
+ continue;
156
+ }
157
+ if (seen.has(url))
158
+ continue;
159
+ seen.add(url);
160
+ const title = typeof raw.title === "string" && raw.title.trim()
161
+ ? raw.title.trim()
162
+ : url;
163
+ const snippet = typeof raw.snippet === "string"
164
+ ? raw.snippet
165
+ : typeof raw.description === "string"
166
+ ? raw.description
167
+ : typeof raw.content === "string"
168
+ ? raw.content
169
+ : typeof raw.text === "string"
170
+ ? raw.text
171
+ : Array.isArray(raw.highlights)
172
+ ? raw.highlights
173
+ .filter((value) => typeof value === "string")
174
+ .join(" ")
175
+ : "";
176
+ result.push({
177
+ rank: result.length + 1,
178
+ title,
179
+ url,
180
+ snippet: snippet.replace(/\s+/g, " ").trim(),
181
+ });
182
+ if (result.length >= limit)
183
+ break;
184
+ }
185
+ return result;
186
+ }
187
+ export function freshnessStartDate(value, now = new Date()) {
188
+ const date = new Date(now);
189
+ if (value === "day")
190
+ date.setUTCDate(date.getUTCDate() - 1);
191
+ if (value === "month")
192
+ date.setUTCMonth(date.getUTCMonth() - 1);
193
+ if (value === "year")
194
+ date.setUTCFullYear(date.getUTCFullYear() - 1);
195
+ return date.toISOString().slice(0, 10);
196
+ }
197
+ export function providerHeaders(instance, generated) {
198
+ return { ...generated, ...instance.headers };
199
+ }
200
+ export function providerHeadersWithCredential(instance, generated) {
201
+ const headers = providerHeaders(instance, generated);
202
+ if (instance.apiKey) {
203
+ if (instance.type === "brave")
204
+ headers["X-Subscription-Token"] = instance.apiKey;
205
+ else
206
+ headers.Authorization = `Bearer ${instance.apiKey}`;
207
+ }
208
+ return headers;
209
+ }
210
+ //# sourceMappingURL=common.js.map