langmart-gateway-type3 3.0.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 (75) hide show
  1. package/.env.example +29 -0
  2. package/README.md +480 -0
  3. package/dist/bash-tools.d.ts +56 -0
  4. package/dist/bash-tools.d.ts.map +1 -0
  5. package/dist/bash-tools.js +188 -0
  6. package/dist/bash-tools.js.map +1 -0
  7. package/dist/core-tools.d.ts +94 -0
  8. package/dist/core-tools.d.ts.map +1 -0
  9. package/dist/core-tools.js +694 -0
  10. package/dist/core-tools.js.map +1 -0
  11. package/dist/debug-utils.d.ts +22 -0
  12. package/dist/debug-utils.d.ts.map +1 -0
  13. package/dist/debug-utils.js +37 -0
  14. package/dist/debug-utils.js.map +1 -0
  15. package/dist/devops-tools.d.ts +147 -0
  16. package/dist/devops-tools.d.ts.map +1 -0
  17. package/dist/devops-tools.js +718 -0
  18. package/dist/devops-tools.js.map +1 -0
  19. package/dist/gateway-config.d.ts +56 -0
  20. package/dist/gateway-config.d.ts.map +1 -0
  21. package/dist/gateway-config.js +198 -0
  22. package/dist/gateway-config.js.map +1 -0
  23. package/dist/gateway-mode.d.ts +58 -0
  24. package/dist/gateway-mode.d.ts.map +1 -0
  25. package/dist/gateway-mode.js +240 -0
  26. package/dist/gateway-mode.js.map +1 -0
  27. package/dist/gateway-server.d.ts +208 -0
  28. package/dist/gateway-server.d.ts.map +1 -0
  29. package/dist/gateway-server.js +1811 -0
  30. package/dist/gateway-server.js.map +1 -0
  31. package/dist/headless-session.d.ts +192 -0
  32. package/dist/headless-session.d.ts.map +1 -0
  33. package/dist/headless-session.js +584 -0
  34. package/dist/headless-session.js.map +1 -0
  35. package/dist/index-server.d.ts +4 -0
  36. package/dist/index-server.d.ts.map +1 -0
  37. package/dist/index-server.js +129 -0
  38. package/dist/index-server.js.map +1 -0
  39. package/dist/index.d.ts +6 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +101 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/key-vault.d.ts +102 -0
  44. package/dist/key-vault.d.ts.map +1 -0
  45. package/dist/key-vault.js +365 -0
  46. package/dist/key-vault.js.map +1 -0
  47. package/dist/local-vault.d.ts +195 -0
  48. package/dist/local-vault.d.ts.map +1 -0
  49. package/dist/local-vault.js +571 -0
  50. package/dist/local-vault.js.map +1 -0
  51. package/dist/marketplace-tools.d.ts +104 -0
  52. package/dist/marketplace-tools.d.ts.map +1 -0
  53. package/dist/marketplace-tools.js +2846 -0
  54. package/dist/marketplace-tools.js.map +1 -0
  55. package/dist/mcp-manager.d.ts +114 -0
  56. package/dist/mcp-manager.d.ts.map +1 -0
  57. package/dist/mcp-manager.js +338 -0
  58. package/dist/mcp-manager.js.map +1 -0
  59. package/dist/web-tools.d.ts +86 -0
  60. package/dist/web-tools.d.ts.map +1 -0
  61. package/dist/web-tools.js +431 -0
  62. package/dist/web-tools.js.map +1 -0
  63. package/dist/websocket-handler.d.ts +131 -0
  64. package/dist/websocket-handler.d.ts.map +1 -0
  65. package/dist/websocket-handler.js +596 -0
  66. package/dist/websocket-handler.js.map +1 -0
  67. package/dist/welcome-pages.d.ts +6 -0
  68. package/dist/welcome-pages.d.ts.map +1 -0
  69. package/dist/welcome-pages.js +200 -0
  70. package/dist/welcome-pages.js.map +1 -0
  71. package/package.json +168 -0
  72. package/scripts/install-remote.sh +282 -0
  73. package/scripts/start.sh +85 -0
  74. package/scripts/status.sh +79 -0
  75. package/scripts/stop.sh +67 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-manager.js","sourceRoot":"","sources":["../mcp-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAyC;AACzC;;;GAGG;AAEH,wEAAmE;AACnE,wEAAiF;AACjF,uCAAyB;AACzB,2CAA6B;AAwB7B,MAAa,UAAU;IAOnB,YAAY,UAAmB;QAJvB,YAAO,GAA6D,IAAI,GAAG,EAAE,CAAC;QAC9E,UAAK,GAAyB,IAAI,GAAG,EAAE,CAAC;QACxC,cAAS,GAA6B,IAAI,GAAG,EAAE,CAAC;QAGpD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;QACxC,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;IACxF,CAAC;IAEM,MAAM,CAAC,WAAW;QACrB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YACvB,UAAU,CAAC,QAAQ,GAAG,IAAI,UAAU,EAAE,CAAC;QAC3C,CAAC;QACD,OAAO,UAAU,CAAC,QAAQ,CAAC;IAC/B,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,UAAU;QACnB,IAAI,CAAC;YACD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBAClC,IAAA,sBAAQ,EAAC,4DAA4D,CAAC,CAAC;gBACvE,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC/B,OAAO;YACX,CAAC;YAED,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAEtC,IAAA,sBAAQ,EAAC,gBAAgB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,wBAAwB,CAAC,CAAC;YAE3F,qBAAqB;YACrB,KAAK,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;gBACtE,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,YAA+B,CAAC,CAAC;YACpE,CAAC;QACL,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACjE,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,iBAAiB;QAC3B,MAAM,aAAa,GAAG;YAClB,OAAO,EAAE,KAAK;YACd,OAAO,EAAE;YACL,4BAA4B;YAC5B,+BAA+B;YAC/B,kBAAkB;YAClB,wBAAwB;YACxB,4FAA4F;YAC5F,IAAI;aACP;SACJ,CAAC;QAEF,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,CAAC;QAED,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1E,IAAA,sBAAQ,EAAC,mCAAmC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAC/D,IAAA,sBAAQ,EAAC,0DAA0D,CAAC,CAAC;IACzE,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,aAAa,CAAC,IAAY,EAAE,MAAuB;QAC5D,IAAI,CAAC;YACD,IAAA,sBAAQ,EAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC;YAEhD,MAAM,SAAS,GAAG,IAAI,+BAAoB,CAAC;gBACvC,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;gBACvB,GAAG,EAAE,MAAM,CAAC,GAAG;aAClB,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,IAAI,iBAAM,CAAC;gBACtB,IAAI,EAAE,mBAAmB;gBACzB,OAAO,EAAE,OAAO;aACnB,EAAE;gBACC,YAAY,EAAE;oBACV,KAAK,EAAE,EAAE;iBACZ;aACJ,CAAC,CAAC;YAEH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAEhC,eAAe;YACf,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YAE3C,aAAa;YACb,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;YAC3C,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;gBACjC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;oBACnC,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,UAAU,EAAE,IAAI;iBACnB,CAAC,CAAC;YACP,CAAC;YAED,iBAAiB;YACjB,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;YACnD,KAAK,MAAM,QAAQ,IAAI,aAAa,CAAC,SAAS,EAAE,CAAC;gBAC7C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE;oBAC7B,GAAG,EAAE,QAAQ,CAAC,GAAG;oBACjB,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,WAAW,EAAE,QAAQ,CAAC,WAAW;oBACjC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;oBAC3B,UAAU,EAAE,IAAI;iBACnB,CAAC,CAAC;YACP,CAAC;YAED,IAAA,sBAAQ,EAAC,sBAAsB,IAAI,aAAa,SAAS,CAAC,KAAK,CAAC,MAAM,gBAAgB,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5H,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,OAAO,CAAC,KAAK,CAAC,8BAA8B,IAAI,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACxE,CAAC;IACL,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,gBAAgB,CAAC,IAAY;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC;gBACD,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAE1B,8CAA8C;gBAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;oBAC7C,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;wBAC3B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC3B,CAAC;gBACL,CAAC;gBACD,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;oBACrD,IAAI,QAAQ,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;wBAC/B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC/B,CAAC;gBACL,CAAC;gBAED,IAAA,sBAAQ,EAAC,2BAA2B,IAAI,EAAE,CAAC,CAAC;YAChD,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBAClB,OAAO,CAAC,KAAK,CAAC,kCAAkC,IAAI,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5E,CAAC;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,IAAS;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;gBACxC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,SAAS,EAAE,IAAI;aAClB,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC;QAClB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,qBAAqB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1D,CAAC;IACL,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,YAAY,CAAC,GAAW;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;YACzD,OAAO,MAAM,CAAC;QAClB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9D,CAAC;IACL,CAAC;IAED;;OAEG;IACI,QAAQ;QACX,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACI,YAAY;QACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACI,UAAU;QACb,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACI,UAAU;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACI,oBAAoB;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAElC,MAAM,gBAAgB,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CACtC,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,IAAI,gBAAgB,EAAE,CAC5D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,OAAO,yBAAyB,gBAAgB,4EAA4E,CAAC;IACjI,CAAC;IAED;;;OAGG;IACI,aAAa;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACtB,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE;gBACN,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,gBAAgB;gBACjD,UAAU,EAAE,IAAI,CAAC,WAAW;aAC/B;SACJ,CAAC,CAAC,CAAC;IACR,CAAC;IAED;;;;;OAKG;IACI,aAAa,CAAC,QAAgB;QACjC,IAAI,CAAC;YACD,6CAA6C;YAC7C,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC7D,IAAI,SAAS,EAAE,CAAC;gBACZ,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxC,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;oBAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;gBACpD,CAAC;YACL,CAAC;YAED,0EAA0E;YAC1E,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;YACvF,IAAI,aAAa,EAAE,CAAC;gBAChB,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;gBAClC,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;gBAClC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAElC,4DAA4D;gBAC5D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YACpC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,kBAAkB;QACtB,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,aAAa;QACtB,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACpD,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC7B,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;;AA/SL,gCAgTC;AA/SkB,mBAAQ,GAAsB,IAAI,AAA1B,CAA2B;AAiTtD;;;;;;;;;;;;;;;;;;;;GAoBG"}
@@ -0,0 +1,86 @@
1
+ export interface WebTool {
2
+ name: string;
3
+ description: string;
4
+ inputSchema: {
5
+ type: string;
6
+ properties: Record<string, any>;
7
+ required: string[];
8
+ };
9
+ }
10
+ export interface WebToolResult {
11
+ success: boolean;
12
+ output?: string;
13
+ error?: string;
14
+ }
15
+ export declare class WebTools {
16
+ private static instance;
17
+ private constructor();
18
+ static getInstance(): WebTools;
19
+ /**
20
+ * Get available web tools
21
+ */
22
+ getTools(): WebTool[];
23
+ /**
24
+ * Execute a web tool
25
+ */
26
+ executeTool(toolName: string, args: any): Promise<WebToolResult>;
27
+ /**
28
+ * Search the web using DuckDuckGo
29
+ */
30
+ private toolSearch;
31
+ /**
32
+ * Fetch content from a URL
33
+ */
34
+ private toolFetch;
35
+ /**
36
+ * Scrape structured data from a webpage
37
+ */
38
+ private toolScrape;
39
+ /**
40
+ * Format tools for AI system prompt
41
+ */
42
+ formatToolsForPrompt(): string;
43
+ /**
44
+ * Convert tools to OpenAI tools array format
45
+ * Used when sending tools parameter in chat completion requests
46
+ */
47
+ toOpenAITools(): any[];
48
+ /**
49
+ * Parse tool call from AI response
50
+ * Supports multiple formats:
51
+ * 1. JSON: {"tool": "web.search", "args": {...}}
52
+ * 2. Function tags: <function=web.search={...}</function>
53
+ */
54
+ parseToolCall(response: string): {
55
+ tool: string;
56
+ args: any;
57
+ } | null;
58
+ }
59
+ /**
60
+ * Usage Example:
61
+ *
62
+ * const webTools = WebTools.getInstance();
63
+ *
64
+ * // Search the web
65
+ * const searchResult = await webTools.executeTool('web.search', {
66
+ * query: 'latest TypeScript features',
67
+ * max_results: 5
68
+ * });
69
+ *
70
+ * // Fetch webpage content
71
+ * const fetchResult = await webTools.executeTool('web.fetch', {
72
+ * url: 'https://example.com',
73
+ * selector: 'article'
74
+ * });
75
+ *
76
+ * // Scrape structured data
77
+ * const scrapeResult = await webTools.executeTool('web.scrape', {
78
+ * url: 'https://example.com/products',
79
+ * selectors: {
80
+ * title: 'h1',
81
+ * prices: '.price',
82
+ * descriptions: '.description'
83
+ * }
84
+ * });
85
+ */
86
+ //# sourceMappingURL=web-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-tools.d.ts","sourceRoot":"","sources":["../web-tools.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,OAAO;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACT,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,QAAQ,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;CACL;AAED,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,QAAQ;IACjB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAyB;IAEhD,OAAO;IAEP,MAAM,CAAC,WAAW,IAAI,QAAQ;IAO9B;;OAEG;IACH,QAAQ,IAAI,OAAO,EAAE;IA2DrB;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC;IAuBtE;;OAEG;YACW,UAAU;IAuFxB;;OAEG;YACW,SAAS;IA8EvB;;OAEG;YACW,UAAU;IA8CxB;;OAEG;IACH,oBAAoB,IAAI,MAAM;IAc9B;;;OAGG;IACH,aAAa,IAAI,GAAG,EAAE;IAWtB;;;;;OAKG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAE,GAAG,IAAI;CA4BtE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG"}
@@ -0,0 +1,431 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.WebTools = void 0;
40
+ const debug_utils_1 = require("./debug-utils");
41
+ /**
42
+ * Web Tools for Chat Mode
43
+ * Provides web search and fetch capabilities
44
+ */
45
+ const axios_1 = __importDefault(require("axios"));
46
+ const cheerio = __importStar(require("cheerio"));
47
+ class WebTools {
48
+ constructor() { }
49
+ static getInstance() {
50
+ if (!WebTools.instance) {
51
+ WebTools.instance = new WebTools();
52
+ }
53
+ return WebTools.instance;
54
+ }
55
+ /**
56
+ * Get available web tools
57
+ */
58
+ getTools() {
59
+ return [
60
+ {
61
+ name: 'web.search',
62
+ description: 'Search the web using DuckDuckGo and return summarized results',
63
+ inputSchema: {
64
+ type: 'object',
65
+ properties: {
66
+ query: {
67
+ type: 'string',
68
+ description: 'The search query'
69
+ },
70
+ max_results: {
71
+ type: 'number',
72
+ description: 'Maximum number of results to return (default: 5)'
73
+ }
74
+ },
75
+ required: ['query']
76
+ }
77
+ },
78
+ {
79
+ name: 'web.fetch',
80
+ description: 'Fetch and extract text content from a URL',
81
+ inputSchema: {
82
+ type: 'object',
83
+ properties: {
84
+ url: {
85
+ type: 'string',
86
+ description: 'The URL to fetch'
87
+ },
88
+ selector: {
89
+ type: 'string',
90
+ description: 'Optional CSS selector to extract specific content'
91
+ }
92
+ },
93
+ required: ['url']
94
+ }
95
+ },
96
+ {
97
+ name: 'web.scrape',
98
+ description: 'Scrape structured data from a webpage using CSS selectors',
99
+ inputSchema: {
100
+ type: 'object',
101
+ properties: {
102
+ url: {
103
+ type: 'string',
104
+ description: 'The URL to scrape'
105
+ },
106
+ selectors: {
107
+ type: 'object',
108
+ description: 'Object mapping field names to CSS selectors'
109
+ }
110
+ },
111
+ required: ['url', 'selectors']
112
+ }
113
+ }
114
+ ];
115
+ }
116
+ /**
117
+ * Execute a web tool
118
+ */
119
+ async executeTool(toolName, args) {
120
+ try {
121
+ switch (toolName) {
122
+ case 'web.search':
123
+ return await this.toolSearch(args);
124
+ case 'web.fetch':
125
+ return await this.toolFetch(args);
126
+ case 'web.scrape':
127
+ return await this.toolScrape(args);
128
+ default:
129
+ return {
130
+ success: false,
131
+ error: `Unknown tool: ${toolName}`
132
+ };
133
+ }
134
+ }
135
+ catch (error) {
136
+ return {
137
+ success: false,
138
+ error: `Tool execution failed: ${error.message}`
139
+ };
140
+ }
141
+ }
142
+ /**
143
+ * Search the web using DuckDuckGo
144
+ */
145
+ async toolSearch(args) {
146
+ try {
147
+ const query = args.query;
148
+ const maxResults = args.max_results || 5;
149
+ (0, debug_utils_1.debugLog)(`[WebTools] Searching for: ${query}`);
150
+ // Use DuckDuckGo Instant Answer API
151
+ const response = await axios_1.default.get('https://api.duckduckgo.com/', {
152
+ params: {
153
+ q: query,
154
+ format: 'json',
155
+ no_html: 1,
156
+ skip_disambig: 1
157
+ },
158
+ timeout: 10000
159
+ });
160
+ const data = response.data;
161
+ let results = [];
162
+ // Extract abstract if available
163
+ if (data.Abstract) {
164
+ results.push(`**Summary:** ${data.Abstract}`);
165
+ if (data.AbstractURL) {
166
+ results.push(`Source: ${data.AbstractURL}`);
167
+ }
168
+ }
169
+ // Extract related topics
170
+ if (data.RelatedTopics && data.RelatedTopics.length > 0) {
171
+ results.push('\n**Related Results:**');
172
+ const topics = data.RelatedTopics.slice(0, maxResults);
173
+ topics.forEach((topic, idx) => {
174
+ if (topic.Text && topic.FirstURL) {
175
+ results.push(`${idx + 1}. ${topic.Text}`);
176
+ results.push(` ${topic.FirstURL}`);
177
+ }
178
+ });
179
+ }
180
+ // If no results from DuckDuckGo, try alternative approach
181
+ if (results.length === 0) {
182
+ // Fallback: Use HTML search (less reliable but better than nothing)
183
+ const htmlResponse = await axios_1.default.get('https://html.duckduckgo.com/html/', {
184
+ params: { q: query },
185
+ headers: {
186
+ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
187
+ },
188
+ timeout: 10000
189
+ });
190
+ const $ = cheerio.load(htmlResponse.data);
191
+ const searchResults = [];
192
+ $('.result').slice(0, maxResults).each((idx, element) => {
193
+ const title = $(element).find('.result__title').text().trim();
194
+ const snippet = $(element).find('.result__snippet').text().trim();
195
+ const url = $(element).find('.result__url').text().trim();
196
+ if (title && url) {
197
+ searchResults.push(`${idx + 1}. **${title}**`);
198
+ if (snippet)
199
+ searchResults.push(` ${snippet}`);
200
+ searchResults.push(` ${url}`);
201
+ }
202
+ });
203
+ if (searchResults.length > 0) {
204
+ results = [`**Search Results for "${query}":**`, '', ...searchResults];
205
+ }
206
+ else {
207
+ results = [`No results found for "${query}". Try rephrasing your search.`];
208
+ }
209
+ }
210
+ return {
211
+ success: true,
212
+ output: results.join('\n')
213
+ };
214
+ }
215
+ catch (error) {
216
+ console.error('[WebTools] Search failed:', error.message);
217
+ return {
218
+ success: false,
219
+ error: `Search failed: ${error.message}`
220
+ };
221
+ }
222
+ }
223
+ /**
224
+ * Fetch content from a URL
225
+ */
226
+ async toolFetch(args) {
227
+ try {
228
+ const url = args.url;
229
+ const selector = args.selector;
230
+ (0, debug_utils_1.debugLog)(`[WebTools] Fetching: ${url}`);
231
+ const response = await axios_1.default.get(url, {
232
+ headers: {
233
+ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
234
+ },
235
+ timeout: 15000,
236
+ maxRedirects: 5
237
+ });
238
+ const $ = cheerio.load(response.data);
239
+ // Remove script and style tags
240
+ $('script, style, nav, footer, header').remove();
241
+ let content = '';
242
+ if (selector) {
243
+ // Extract specific content using selector
244
+ content = $(selector).text().trim();
245
+ if (!content) {
246
+ return {
247
+ success: false,
248
+ error: `No content found for selector: ${selector}`
249
+ };
250
+ }
251
+ }
252
+ else {
253
+ // Extract main content (try common content selectors)
254
+ const contentSelectors = [
255
+ 'article',
256
+ 'main',
257
+ '.content',
258
+ '#content',
259
+ '.post',
260
+ '.article'
261
+ ];
262
+ for (const sel of contentSelectors) {
263
+ const text = $(sel).text().trim();
264
+ if (text && text.length > 100) {
265
+ content = text;
266
+ break;
267
+ }
268
+ }
269
+ // Fallback to body
270
+ if (!content) {
271
+ content = $('body').text().trim();
272
+ }
273
+ }
274
+ // Clean up whitespace
275
+ content = content.replace(/\s+/g, ' ').trim();
276
+ // Limit output size
277
+ const maxLength = 5000;
278
+ if (content.length > maxLength) {
279
+ content = content.substring(0, maxLength) + '... (truncated)';
280
+ }
281
+ return {
282
+ success: true,
283
+ output: content
284
+ };
285
+ }
286
+ catch (error) {
287
+ console.error('[WebTools] Fetch failed:', error.message);
288
+ return {
289
+ success: false,
290
+ error: `Fetch failed: ${error.message}`
291
+ };
292
+ }
293
+ }
294
+ /**
295
+ * Scrape structured data from a webpage
296
+ */
297
+ async toolScrape(args) {
298
+ try {
299
+ const url = args.url;
300
+ const selectors = args.selectors;
301
+ (0, debug_utils_1.debugLog)(`[WebTools] Scraping: ${url}`);
302
+ const response = await axios_1.default.get(url, {
303
+ headers: {
304
+ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
305
+ },
306
+ timeout: 15000
307
+ });
308
+ const $ = cheerio.load(response.data);
309
+ const results = {};
310
+ // Extract data using provided selectors
311
+ for (const [field, selector] of Object.entries(selectors)) {
312
+ const elements = $(selector);
313
+ if (elements.length === 1) {
314
+ // Single element - return text
315
+ results[field] = elements.text().trim();
316
+ }
317
+ else if (elements.length > 1) {
318
+ // Multiple elements - return array
319
+ results[field] = elements.map((_, el) => $(el).text().trim()).get();
320
+ }
321
+ else {
322
+ // No elements found
323
+ results[field] = null;
324
+ }
325
+ }
326
+ return {
327
+ success: true,
328
+ output: JSON.stringify(results, null, 2)
329
+ };
330
+ }
331
+ catch (error) {
332
+ console.error('[WebTools] Scrape failed:', error.message);
333
+ return {
334
+ success: false,
335
+ error: `Scrape failed: ${error.message}`
336
+ };
337
+ }
338
+ }
339
+ /**
340
+ * Format tools for AI system prompt
341
+ */
342
+ formatToolsForPrompt() {
343
+ const tools = this.getTools();
344
+ return tools.map(tool => {
345
+ const params = Object.entries(tool.inputSchema.properties)
346
+ .map(([name, schema]) => {
347
+ const required = tool.inputSchema.required.includes(name);
348
+ return ` - ${name}${required ? ' (required)' : ' (optional)'}: ${schema.description}`;
349
+ })
350
+ .join('\n');
351
+ return `- ${tool.name}: ${tool.description}\n${params}`;
352
+ }).join('\n\n');
353
+ }
354
+ /**
355
+ * Convert tools to OpenAI tools array format
356
+ * Used when sending tools parameter in chat completion requests
357
+ */
358
+ toOpenAITools() {
359
+ return this.getTools().map(tool => ({
360
+ type: 'function',
361
+ function: {
362
+ name: tool.name,
363
+ description: tool.description,
364
+ parameters: tool.inputSchema
365
+ }
366
+ }));
367
+ }
368
+ /**
369
+ * Parse tool call from AI response
370
+ * Supports multiple formats:
371
+ * 1. JSON: {"tool": "web.search", "args": {...}}
372
+ * 2. Function tags: <function=web.search={...}</function>
373
+ */
374
+ parseToolCall(response) {
375
+ try {
376
+ // Format 1: JSON with "tool" and "args" keys
377
+ const jsonMatch = response.match(/\{[\s\S]*"tool"[\s\S]*\}/);
378
+ if (jsonMatch) {
379
+ const parsed = JSON.parse(jsonMatch[0]);
380
+ if (parsed.tool && parsed.tool.startsWith('web.') && parsed.args) {
381
+ return { tool: parsed.tool, args: parsed.args };
382
+ }
383
+ }
384
+ // Format 2: XML-like function tags: <function=tool_name={args}</function>
385
+ const functionMatch = response.match(/<function=([\w\.]+)=(\{[\s\S]+?\})<\/function>/);
386
+ if (functionMatch) {
387
+ const toolName = functionMatch[1];
388
+ const argsJson = functionMatch[2];
389
+ const args = JSON.parse(argsJson);
390
+ // Only match web.* tools
391
+ if (toolName.startsWith('web.')) {
392
+ return { tool: toolName, args };
393
+ }
394
+ }
395
+ }
396
+ catch (error) {
397
+ // Not a tool call
398
+ }
399
+ return null;
400
+ }
401
+ }
402
+ exports.WebTools = WebTools;
403
+ WebTools.instance = null;
404
+ /**
405
+ * Usage Example:
406
+ *
407
+ * const webTools = WebTools.getInstance();
408
+ *
409
+ * // Search the web
410
+ * const searchResult = await webTools.executeTool('web.search', {
411
+ * query: 'latest TypeScript features',
412
+ * max_results: 5
413
+ * });
414
+ *
415
+ * // Fetch webpage content
416
+ * const fetchResult = await webTools.executeTool('web.fetch', {
417
+ * url: 'https://example.com',
418
+ * selector: 'article'
419
+ * });
420
+ *
421
+ * // Scrape structured data
422
+ * const scrapeResult = await webTools.executeTool('web.scrape', {
423
+ * url: 'https://example.com/products',
424
+ * selectors: {
425
+ * title: 'h1',
426
+ * prices: '.price',
427
+ * descriptions: '.description'
428
+ * }
429
+ * });
430
+ */
431
+ //# sourceMappingURL=web-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-tools.js","sourceRoot":"","sources":["../web-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,131 @@
1
+ import WebSocket from 'ws';
2
+ import { EventEmitter } from 'events';
3
+ /**
4
+ * Type 3 Gateway WebSocket Client
5
+ * Connects seller's infrastructure to marketplace
6
+ *
7
+ * Key Features:
8
+ * - Persistent WebSocket connection to marketplace
9
+ * - Automatic reconnection with exponential backoff
10
+ * - Heartbeat monitoring
11
+ * - Request/response routing to provider APIs
12
+ * - Version management with auto-upgrade
13
+ */
14
+ export declare class Type3GatewayClient extends EventEmitter {
15
+ ws: WebSocket | null;
16
+ private gatewayId;
17
+ private apiKey;
18
+ private marketplaceUrl;
19
+ private marketplaceApiUrl;
20
+ private reconnectAttempts;
21
+ private maxReconnectAttempts;
22
+ private heartbeatInterval;
23
+ private requestHandlers;
24
+ private currentVersion;
25
+ private nodeId;
26
+ private providerApiKeys;
27
+ private metrics;
28
+ constructor(config: {
29
+ gatewayId: string;
30
+ apiKey: string;
31
+ marketplaceUrl?: string;
32
+ providerKeys: {
33
+ [provider: string]: string;
34
+ };
35
+ });
36
+ /**
37
+ * Connect to marketplace WebSocket
38
+ */
39
+ connect(): Promise<void>;
40
+ /**
41
+ * Send gateway identification after connection
42
+ */
43
+ private sendIdentification;
44
+ /**
45
+ * Handle incoming WebSocket messages
46
+ */
47
+ private handleMessage;
48
+ /**
49
+ * Handle inference request from marketplace
50
+ */
51
+ private handleInferenceRequest;
52
+ /**
53
+ * Forward request to provider API
54
+ */
55
+ private forwardToProvider;
56
+ /**
57
+ * Get provider-specific headers
58
+ */
59
+ private getProviderHeaders;
60
+ /**
61
+ * Report error to marketplace API
62
+ */
63
+ private reportErrorToMarketplace;
64
+ /**
65
+ * Handle heartbeat from marketplace
66
+ */
67
+ private handleHeartbeat;
68
+ /**
69
+ * Handle version update notification
70
+ */
71
+ private handleVersionUpdate;
72
+ /**
73
+ * Handle configuration update
74
+ */
75
+ private handleConfigurationUpdate;
76
+ /**
77
+ * Handle error messages
78
+ */
79
+ private handleError;
80
+ /**
81
+ * Start heartbeat monitoring
82
+ */
83
+ private startHeartbeat;
84
+ /**
85
+ * Stop heartbeat monitoring
86
+ */
87
+ private stopHeartbeat;
88
+ /**
89
+ * Handle disconnection and attempt reconnection
90
+ */
91
+ private handleDisconnection;
92
+ /**
93
+ * Send message to marketplace
94
+ */
95
+ private sendMessage;
96
+ /**
97
+ * Map error codes to standard codes
98
+ */
99
+ private mapErrorCode;
100
+ /**
101
+ * Store learned rate limits
102
+ */
103
+ private storeRateLimits;
104
+ /**
105
+ * Get CPU usage (simplified)
106
+ */
107
+ private getCpuUsage;
108
+ /**
109
+ * Disconnect from marketplace
110
+ */
111
+ disconnect(): void;
112
+ }
113
+ /**
114
+ * Usage Example:
115
+ *
116
+ * const gateway = new Type3GatewayClient({
117
+ * gatewayId: 'gw_abc123',
118
+ * apiKey: 'sk-marketplace-key',
119
+ * providerKeys: {
120
+ * 'openai': 'sk-openai-key',
121
+ * 'anthropic': 'sk-anthropic-key'
122
+ * }
123
+ * });
124
+ *
125
+ * gateway.on('error', (err) => console.error('Gateway error:', err));
126
+ * gateway.on('version_available', (ver) => console.log('Update available:', ver));
127
+ * gateway.on('upgrade_required', (info) => performUpgrade(info));
128
+ *
129
+ * await gateway.connect();
130
+ */
131
+ //# sourceMappingURL=websocket-handler.d.ts.map