jazz-ai 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 (143) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +182 -0
  3. package/dist/cli/commands/auth.d.ts +18 -0
  4. package/dist/cli/commands/auth.d.ts.map +1 -0
  5. package/dist/cli/commands/auth.js +128 -0
  6. package/dist/cli/commands/auth.js.map +1 -0
  7. package/dist/cli/commands/chat-agent.d.ts +18 -0
  8. package/dist/cli/commands/chat-agent.d.ts.map +1 -0
  9. package/dist/cli/commands/chat-agent.js +421 -0
  10. package/dist/cli/commands/chat-agent.js.map +1 -0
  11. package/dist/cli/commands/edit-agent.d.ts +10 -0
  12. package/dist/cli/commands/edit-agent.d.ts.map +1 -0
  13. package/dist/cli/commands/edit-agent.js +310 -0
  14. package/dist/cli/commands/edit-agent.js.map +1 -0
  15. package/dist/cli/commands/task-agent.d.ts +126 -0
  16. package/dist/cli/commands/task-agent.d.ts.map +1 -0
  17. package/dist/cli/commands/task-agent.js +345 -0
  18. package/dist/cli/commands/task-agent.js.map +1 -0
  19. package/dist/core/agent/agent-prompt.d.ts +47 -0
  20. package/dist/core/agent/agent-prompt.d.ts.map +1 -0
  21. package/dist/core/agent/agent-prompt.js +146 -0
  22. package/dist/core/agent/agent-prompt.js.map +1 -0
  23. package/dist/core/agent/agent-runner.d.ts +63 -0
  24. package/dist/core/agent/agent-runner.d.ts.map +1 -0
  25. package/dist/core/agent/agent-runner.js +346 -0
  26. package/dist/core/agent/agent-runner.js.map +1 -0
  27. package/dist/core/agent/agent-service.d.ts +164 -0
  28. package/dist/core/agent/agent-service.d.ts.map +1 -0
  29. package/dist/core/agent/agent-service.js +463 -0
  30. package/dist/core/agent/agent-service.js.map +1 -0
  31. package/dist/core/agent/gmail-agent.d.ts +17 -0
  32. package/dist/core/agent/gmail-agent.d.ts.map +1 -0
  33. package/dist/core/agent/gmail-agent.js +191 -0
  34. package/dist/core/agent/gmail-agent.js.map +1 -0
  35. package/dist/core/agent/prompts/default/v1.d.ts +2 -0
  36. package/dist/core/agent/prompts/default/v1.d.ts.map +1 -0
  37. package/dist/core/agent/prompts/default/v1.js +202 -0
  38. package/dist/core/agent/prompts/default/v1.js.map +1 -0
  39. package/dist/core/agent/prompts/default/v2.d.ts +2 -0
  40. package/dist/core/agent/prompts/default/v2.d.ts.map +1 -0
  41. package/dist/core/agent/prompts/default/v2.js +72 -0
  42. package/dist/core/agent/prompts/default/v2.js.map +1 -0
  43. package/dist/core/agent/prompts/gmail/v1.d.ts +2 -0
  44. package/dist/core/agent/prompts/gmail/v1.d.ts.map +1 -0
  45. package/dist/core/agent/prompts/gmail/v1.js +206 -0
  46. package/dist/core/agent/prompts/gmail/v1.js.map +1 -0
  47. package/dist/core/agent/prompts/gmail/v2.d.ts +2 -0
  48. package/dist/core/agent/prompts/gmail/v2.d.ts.map +1 -0
  49. package/dist/core/agent/prompts/gmail/v2.js +59 -0
  50. package/dist/core/agent/prompts/gmail/v2.js.map +1 -0
  51. package/dist/core/agent/tools/base-tool.d.ts +161 -0
  52. package/dist/core/agent/tools/base-tool.d.ts.map +1 -0
  53. package/dist/core/agent/tools/base-tool.js +153 -0
  54. package/dist/core/agent/tools/base-tool.js.map +1 -0
  55. package/dist/core/agent/tools/fs-tools.d.ts +21 -0
  56. package/dist/core/agent/tools/fs-tools.d.ts.map +1 -0
  57. package/dist/core/agent/tools/fs-tools.js +1210 -0
  58. package/dist/core/agent/tools/fs-tools.js.map +1 -0
  59. package/dist/core/agent/tools/git-tools.d.ts +63 -0
  60. package/dist/core/agent/tools/git-tools.d.ts.map +1 -0
  61. package/dist/core/agent/tools/git-tools.js +600 -0
  62. package/dist/core/agent/tools/git-tools.js.map +1 -0
  63. package/dist/core/agent/tools/gmail-tools.d.ts +22 -0
  64. package/dist/core/agent/tools/gmail-tools.d.ts.map +1 -0
  65. package/dist/core/agent/tools/gmail-tools.js +779 -0
  66. package/dist/core/agent/tools/gmail-tools.js.map +1 -0
  67. package/dist/core/agent/tools/register-tools.d.ts +13 -0
  68. package/dist/core/agent/tools/register-tools.d.ts.map +1 -0
  69. package/dist/core/agent/tools/register-tools.js +169 -0
  70. package/dist/core/agent/tools/register-tools.js.map +1 -0
  71. package/dist/core/agent/tools/shell-tools.d.ts +19 -0
  72. package/dist/core/agent/tools/shell-tools.d.ts.map +1 -0
  73. package/dist/core/agent/tools/shell-tools.js +367 -0
  74. package/dist/core/agent/tools/shell-tools.js.map +1 -0
  75. package/dist/core/agent/tools/tool-registry.d.ts +62 -0
  76. package/dist/core/agent/tools/tool-registry.d.ts.map +1 -0
  77. package/dist/core/agent/tools/tool-registry.js +187 -0
  78. package/dist/core/agent/tools/tool-registry.js.map +1 -0
  79. package/dist/core/agent/tools/web-search-tools.d.ts +39 -0
  80. package/dist/core/agent/tools/web-search-tools.d.ts.map +1 -0
  81. package/dist/core/agent/tools/web-search-tools.js +220 -0
  82. package/dist/core/agent/tools/web-search-tools.js.map +1 -0
  83. package/dist/core/types/errors.d.ts +300 -0
  84. package/dist/core/types/errors.d.ts.map +1 -0
  85. package/dist/core/types/errors.js +115 -0
  86. package/dist/core/types/errors.js.map +1 -0
  87. package/dist/core/types/index.d.ts +208 -0
  88. package/dist/core/types/index.d.ts.map +1 -0
  89. package/dist/core/types/index.js +30 -0
  90. package/dist/core/types/index.js.map +1 -0
  91. package/dist/core/utils/error-handler.d.ts +114 -0
  92. package/dist/core/utils/error-handler.d.ts.map +1 -0
  93. package/dist/core/utils/error-handler.js +551 -0
  94. package/dist/core/utils/error-handler.js.map +1 -0
  95. package/dist/core/utils/markdown-renderer.d.ts +52 -0
  96. package/dist/core/utils/markdown-renderer.d.ts.map +1 -0
  97. package/dist/core/utils/markdown-renderer.js +134 -0
  98. package/dist/core/utils/markdown-renderer.js.map +1 -0
  99. package/dist/main.d.ts +3 -0
  100. package/dist/main.d.ts.map +1 -0
  101. package/dist/main.js +255 -0
  102. package/dist/main.js.map +1 -0
  103. package/dist/services/config.d.ts +29 -0
  104. package/dist/services/config.d.ts.map +1 -0
  105. package/dist/services/config.js +204 -0
  106. package/dist/services/config.js.map +1 -0
  107. package/dist/services/gmail.d.ts +197 -0
  108. package/dist/services/gmail.d.ts.map +1 -0
  109. package/dist/services/gmail.js +592 -0
  110. package/dist/services/gmail.js.map +1 -0
  111. package/dist/services/llm/ai-sdk-service.d.ts +5 -0
  112. package/dist/services/llm/ai-sdk-service.d.ts.map +1 -0
  113. package/dist/services/llm/ai-sdk-service.js +326 -0
  114. package/dist/services/llm/ai-sdk-service.js.map +1 -0
  115. package/dist/services/llm/context-manager.d.ts +51 -0
  116. package/dist/services/llm/context-manager.d.ts.map +1 -0
  117. package/dist/services/llm/context-manager.js +269 -0
  118. package/dist/services/llm/context-manager.js.map +1 -0
  119. package/dist/services/llm/types.d.ts +114 -0
  120. package/dist/services/llm/types.d.ts.map +1 -0
  121. package/dist/services/llm/types.js +51 -0
  122. package/dist/services/llm/types.js.map +1 -0
  123. package/dist/services/logger.d.ts +28 -0
  124. package/dist/services/logger.d.ts.map +1 -0
  125. package/dist/services/logger.js +267 -0
  126. package/dist/services/logger.js.map +1 -0
  127. package/dist/services/shell.d.ts +37 -0
  128. package/dist/services/shell.d.ts.map +1 -0
  129. package/dist/services/shell.js +197 -0
  130. package/dist/services/shell.js.map +1 -0
  131. package/dist/services/storage/file.d.ts +37 -0
  132. package/dist/services/storage/file.d.ts.map +1 -0
  133. package/dist/services/storage/file.js +221 -0
  134. package/dist/services/storage/file.js.map +1 -0
  135. package/dist/services/storage/inMemory.d.ts +25 -0
  136. package/dist/services/storage/inMemory.d.ts.map +1 -0
  137. package/dist/services/storage/inMemory.js +106 -0
  138. package/dist/services/storage/inMemory.js.map +1 -0
  139. package/dist/services/storage/service.d.ts +26 -0
  140. package/dist/services/storage/service.d.ts.map +1 -0
  141. package/dist/services/storage/service.js +48 -0
  142. package/dist/services/storage/service.js.map +1 -0
  143. package/package.json +92 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell-tools.js","sourceRoot":"","sources":["../../../../src/core/agent/tools/shell-tools.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCA,4DA8FC;AAKD,4EA6QC;AAnZD,mCAAgC;AAChC,6BAAwB;AAExB,mDAAsE;AACtE,2CAA8D;AAoB9D;;;;;;;;;;GAUG;AACH,SAAgB,wBAAwB;IACtC,OAAO,IAAA,sBAAU,EAA+C;QAC9D,IAAI,EAAE,gBAAgB;QACtB,WAAW,EACT,+FAA+F;QACjG,UAAU,EAAE,IAAA,+BAAmB,EAC7B,OAAC;aACE,MAAM,CAAC;YACN,OAAO,EAAE,OAAC;iBACP,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,EAAE,yBAAyB,CAAC;iBACjC,QAAQ,CAAC,4EAA4E,CAAC;YACzF,gBAAgB,EAAE,OAAC;iBAChB,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,4GAA4G,CAC7G;YACH,OAAO,EAAE,OAAC;iBACP,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,QAAQ,EAAE;iBACV,QAAQ,EAAE;iBACV,QAAQ,CACP,kGAAkG,CACnG;SACJ,CAAC;aACD,MAAM,EAAE,CACZ;QACD,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;YACjB,MAAM,MAAM,GAAG,OAAC;iBACb,MAAM,CAAC;gBACN,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1B,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE;gBACpB,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBACvC,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;aAChD,CAAC;iBACD,MAAM,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAW,CAAC;YACtF,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,IAA0B,EAAW,CAAC;QAC5E,CAAC;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,CAAC,IAAwB,EAAE,OAA6B,EAAE,EAAE,CACnE,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAClB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,mCAA2B,CAAC;gBACjD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;oBAC9B,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC;iBAC1E,CAAC,CAAC;gBAEH,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,IAAI,GAAG,CAAC;gBAChD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC;gBAEtC,OAAO;;WAEN,IAAI,CAAC,OAAO;qBACF,UAAU;WACpB,OAAO;SACT,OAAO,CAAC,OAAO;;;;mGAI2E,CAAC;YAC5F,CAAC,CAAC;YACJ,YAAY,EAAE,yEAAyE;YACvF,OAAO,EAAE;gBACP,QAAQ,EAAE,wBAAwB;gBAClC,SAAS,EAAE,CAAC,IAA6B,EAA2B,EAAE;oBACpE,MAAM,SAAS,GAAG,IAA0B,CAAC;oBAC7C,OAAO;wBACL,OAAO,EAAE,SAAS,CAAC,OAAO;wBAC1B,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;wBAC5C,OAAO,EAAE,SAAS,CAAC,OAAO;qBAC3B,CAAC;gBACJ,CAAC;aACF;SACF;QACD,OAAO,EAAE,CAAC,KAA8B,EAAE,QAA8B,EAAE,EAAE,CAC1E,eAAM,CAAC,OAAO,CAAC;YACb,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,IAAI;YACZ,KAAK,EACH,oGAAoG;SAChF,CAAC;QAC3B,aAAa,EAAE,CAAC,MAA2B,EAAE,EAAE;YAC7C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,qCAAqC,CAAC;YAC/C,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAgB,gCAAgC;IAC9C,OAAO,IAAA,sBAAU,EAAuD;QACtE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EACT,0FAA0F;QAC5F,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE,OAAC;aACV,MAAM,CAAC;YACN,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC;YACnE,gBAAgB,EAAE,OAAC;iBAChB,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,6CAA6C,CAAC;YAC1D,OAAO,EAAE,OAAC;iBACP,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,QAAQ,EAAE;iBACV,QAAQ,EAAE;iBACV,QAAQ,CAAC,0CAA0C,CAAC;SACxD,CAAC;aACD,MAAM,EAAE;QACX,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;YACjB,MAAM,MAAM,GAAG,OAAC;iBACb,MAAM,CAAC;gBACN,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1B,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBACvC,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;aAChD,CAAC;iBACD,MAAM,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAW,CAAC;YACtF,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,IAAkC,EAAW,CAAC;QACpF,CAAC;QACD,OAAO,EAAE,CAAC,IAAgC,EAAE,OAA6B,EAAE,EAAE,CAC3E,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,mCAA2B,CAAC;YAEjD,4BAA4B;YAC5B,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC9B,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC;aAC1E,CAAC,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,IAAI,GAAG,CAAC;YAChD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC;YAEtC,sBAAsB;YACtB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACpC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,IAAI;oBACZ,KAAK,EAAE,yBAAyB;iBACV,CAAC;YAC3B,CAAC;YAED,8DAA8D;YAC9D,MAAM,iBAAiB,GAAG;gBACxB,0BAA0B;gBAC1B,aAAa,EAAE,oBAAoB;gBACnC,cAAc,EAAE,oBAAoB;gBACpC,aAAa,EAAE,yBAAyB;gBACxC,cAAc,EAAE,oBAAoB;gBAEpC,kBAAkB;gBAClB,SAAS,EAAE,gBAAgB;gBAC3B,OAAO,EAAE,cAAc;gBACvB,QAAQ,EAAE,oBAAoB;gBAC9B,sBAAsB,EAAE,eAAe;gBACvC,UAAU,EAAE,oBAAoB;gBAChC,QAAQ,EAAE,kBAAkB;gBAC5B,MAAM,EAAE,gBAAgB;gBACxB,UAAU,EAAE,oBAAoB;gBAChC,cAAc,EAAE,wBAAwB;gBAExC,6BAA6B;gBAC7B,gBAAgB,EAAE,iBAAiB;gBACnC,gBAAgB,EAAE,iBAAiB;gBACnC,aAAa,EAAE,wBAAwB;gBACvC,WAAW,EAAE,sBAAsB;gBACnC,WAAW,EAAE,sBAAsB;gBACnC,SAAS,EAAE,uBAAuB;gBAElC,uBAAuB;gBACvB,WAAW,EAAE,uBAAuB;gBACpC,UAAU,EAAE,yBAAyB;gBACrC,YAAY,EAAE,qBAAqB;gBAEnC,qCAAqC;gBACrC,WAAW,EAAE,oBAAoB;gBACjC,cAAc,EAAE,iBAAiB;gBACjC,qCAAqC,EAAE,cAAc;gBAErD,2BAA2B;gBAC3B,aAAa,EAAE,gCAAgC;gBAC/C,cAAc,EAAE,6BAA6B;gBAC7C,UAAU,EAAE,uBAAuB;gBACnC,WAAW,EAAE,yBAAyB;gBAEtC,uBAAuB;gBACvB,UAAU,EAAE,wBAAwB;gBACpC,QAAQ,EAAE,kBAAkB;gBAC5B,kBAAkB,EAAE,gCAAgC;gBACpD,aAAa,EAAE,oBAAoB;gBAEnC,+BAA+B;gBAC/B,qBAAqB,EAAE,wBAAwB;gBAC/C,qBAAqB,EAAE,sBAAsB;gBAC7C,oBAAoB,EAAE,qBAAqB;gBAC3C,UAAU,EAAE,kBAAkB;gBAC9B,SAAS,EAAE,iBAAiB;gBAC5B,UAAU,EAAE,iBAAiB;aAC9B,CAAC;YAEF,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAC/E,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,IAAI;oBACZ,KAAK,EACH,sIAAsI;iBAClH,CAAC;YAC3B,CAAC;YAED,IAAI,CAAC;gBACH,kDAAkD;gBAClD,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,eAAM,CAAC,OAAO,CAAC,GAAG,EAAE,mDAAQ,eAAe,GAAC,CAAC,CAAC;gBAEvE,8CAA8C;gBAC9C,MAAM,YAAY,GAAG;oBACnB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,8BAA8B;oBAC3D,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,MAAM;oBACnC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,MAAM;oBACnC,KAAK,EAAE,SAAS;oBAChB,qDAAqD;oBACrD,GAAG,MAAM,CAAC,WAAW,CACnB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAChC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CACR,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;wBACpB,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;wBACpB,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;wBACvB,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;wBACtB,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;wBACzB,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC;wBAC3B,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CACxB,CACF;iBACF,CAAC;gBAEF,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,eAAM,CAAC,OAAO,CAKlC,GAAG,EAAE,CACH,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;wBACzC,GAAG,EAAE,UAAU;wBACf,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;wBACjC,OAAO,EAAE,OAAO;wBAChB,GAAG,EAAE,YAAY;wBACjB,8BAA8B;wBAC9B,QAAQ,EAAE,KAAK;wBACf,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS;wBAClD,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS;qBACnD,CAAC,CAAC;oBAEH,IAAI,MAAM,GAAG,EAAE,CAAC;oBAChB,IAAI,MAAM,GAAG,EAAE,CAAC;oBAEhB,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;wBACjB,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;4BACvC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;wBAC5B,CAAC,CAAC,CAAC;oBACL,CAAC;oBAED,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;wBACjB,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;4BACvC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;wBAC5B,CAAC,CAAC,CAAC;oBACL,CAAC;oBAED,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;wBACzB,OAAO,CAAC;4BACN,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;4BACrB,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;4BACrB,QAAQ,EAAE,IAAI,IAAI,CAAC;yBACpB,CAAC,CAAC;oBACL,CAAC,CAAC,CAAC;oBAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;wBAC1B,MAAM,CAAC,KAAK,CAAC,CAAC;oBAChB,CAAC,CAAC,CAAC;oBAEH,iBAAiB;oBACjB,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;wBAChC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;wBACtB,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,OAAO,IAAI,CAAC,CAAC,CAAC;oBAC5D,CAAC,EAAE,OAAO,CAAC,CAAC;oBAEZ,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;wBACrB,YAAY,CAAC,SAAS,CAAC,CAAC;oBAC1B,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CACL,CAAC,IAAI,CACJ,eAAM,CAAC,QAAQ,CAAC,CAAC,KAAc,EAAE,EAAE,CACjC,eAAM,CAAC,OAAO,CAAC;oBACb,MAAM,EAAE,EAAE;oBACV,MAAM,EAAE,EAAE;oBACV,QAAQ,EAAE,CAAC,CAAC;oBACZ,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC9D,CAAC,CACH,CACF,CAAC;gBAEF,6CAA6C;gBAC7C,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;oBACtB,OAAO;wBACL,OAAO,EAAE,KAAK;wBACd,MAAM,EAAE,IAAI;wBACZ,KAAK,EAAE,MAAM,CAAC,KAAK;qBACG,CAAC;gBAC3B,CAAC;gBAED,8CAA8C;gBAC9C,OAAO,CAAC,IAAI,CAAC,8CAA8C,OAAO,CAAC,OAAO,GAAG,EAAE;oBAC7E,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,gBAAgB,EAAE,UAAU;oBAC5B,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,cAAc,EAAE,OAAO,CAAC,cAAc;iBACvC,CAAC,CAAC;gBAEH,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,MAAM,EAAE;wBACN,OAAO,EAAE,IAAI,CAAC,OAAO;wBACrB,gBAAgB,EAAE,UAAU;wBAC5B,QAAQ,EAAE,MAAM,CAAC,QAAQ;wBACzB,MAAM,EAAE,MAAM,CAAC,MAAM;wBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;wBACrB,OAAO,EAAE,MAAM,CAAC,QAAQ,KAAK,CAAC;qBAC/B;iBACqB,CAAC;YAC3B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC5E,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,IAAI;oBACZ,KAAK,EAAE,6BAA6B,YAAY,EAAE;iBAC5B,CAAC;YAC3B,CAAC;QACH,CAAC,CAAC;QACJ,aAAa,EAAE,CAAC,MAA2B,EAAE,EAAE;YAC7C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,0BAA0B,CAAC;YACpC,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;YAC3B,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,SAAS,IAAI,IAAI,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;gBAChF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAiB,CAAC;gBACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAkB,CAAC;gBACzC,MAAM,OAAO,GAAG,QAAQ,KAAK,CAAC,CAAC;gBAC/B,OAAO,YAAY,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,gBAAgB,QAAQ,GAAG,CAAC;YAC7F,CAAC;YACD,OAAO,kBAAkB,CAAC;QAC5B,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,62 @@
1
+ import { Context, Effect, Layer } from "effect";
2
+ import type z from "zod";
3
+ import type { ConfigService } from "../../../services/config";
4
+ import { type ToolDefinition } from "../../../services/llm/types";
5
+ import { type LoggerService } from "../../../services/logger";
6
+ /**
7
+ * Tool registry for managing agent tools
8
+ */
9
+ export interface ToolExecutionContext {
10
+ readonly agentId: string;
11
+ readonly conversationId?: string;
12
+ readonly userId?: string;
13
+ readonly [key: string]: unknown;
14
+ }
15
+ export interface ToolExecutionResult {
16
+ readonly success: boolean;
17
+ readonly result: unknown;
18
+ readonly error?: string;
19
+ }
20
+ export interface Tool<R = never> {
21
+ readonly name: string;
22
+ readonly description: string;
23
+ readonly parameters: z.ZodTypeAny;
24
+ /** If true, this tool is hidden from UI listings (but still usable programmatically). */
25
+ readonly hidden: boolean;
26
+ readonly execute: (args: Record<string, unknown>, context: ToolExecutionContext) => Effect.Effect<ToolExecutionResult, Error, R>;
27
+ /** Optional function to create a summary of the tool execution result */
28
+ readonly createSummary: ((result: ToolExecutionResult) => string | undefined) | undefined;
29
+ }
30
+ export interface ToolRegistry {
31
+ readonly registerTool: (tool: Tool<unknown>, category?: string) => Effect.Effect<void, never>;
32
+ readonly registerForCategory: (category: string) => (tool: Tool<unknown>) => Effect.Effect<void, never>;
33
+ readonly getTool: (name: string) => Effect.Effect<Tool<unknown>, Error>;
34
+ readonly listTools: () => Effect.Effect<readonly string[], never>;
35
+ readonly getToolDefinitions: () => Effect.Effect<readonly ToolDefinition[], never>;
36
+ readonly listToolsByCategory: () => Effect.Effect<Record<string, readonly string[]>, never>;
37
+ readonly getToolsInCategory: (category: string) => Effect.Effect<readonly string[], never>;
38
+ readonly listCategories: () => Effect.Effect<readonly string[], never>;
39
+ readonly executeTool: (name: string, args: Record<string, unknown>, context: ToolExecutionContext) => Effect.Effect<ToolExecutionResult, Error, ToolRegistry | LoggerService | ConfigService>;
40
+ }
41
+ export declare const ToolRegistryTag: Context.Tag<ToolRegistry, ToolRegistry>;
42
+ export declare function createToolRegistryLayer(): Layer.Layer<ToolRegistry>;
43
+ export declare function registerTool(tool: Tool<unknown>): Effect.Effect<void, never, ToolRegistry>;
44
+ /**
45
+ * Create a category-scoped tool registration function
46
+ *
47
+ * Returns a function that registers tools under a specific category.
48
+ * This provides a clean API for registering multiple tools in the same category
49
+ * without having to pass the category to each registration call.
50
+ *
51
+ * @param category - The category name for the tools
52
+ * @returns A function that registers tools under the specified category
53
+ *
54
+ * @example
55
+ * ```typescript
56
+ * const registerTool = yield* registerForCategory("Email");
57
+ * yield* registerTool(createListEmailsTool());
58
+ * yield* registerTool(createSendEmailTool());
59
+ * ```
60
+ */
61
+ export declare function registerForCategory(category: string): Effect.Effect<(tool: Tool<unknown>) => Effect.Effect<void, never>, never, ToolRegistry>;
62
+ //# sourceMappingURL=tool-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../../../../src/core/agent/tools/tool-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ToolRegistryTag = void 0;
4
+ exports.createToolRegistryLayer = createToolRegistryLayer;
5
+ exports.registerTool = registerTool;
6
+ exports.registerForCategory = registerForCategory;
7
+ const effect_1 = require("effect");
8
+ const logger_1 = require("../../../services/logger");
9
+ class DefaultToolRegistry {
10
+ tools;
11
+ toolCategories;
12
+ constructor() {
13
+ this.tools = new Map();
14
+ this.toolCategories = new Map();
15
+ }
16
+ registerTool(tool, category) {
17
+ return effect_1.Effect.sync(() => {
18
+ this.tools.set(tool.name, tool);
19
+ if (category) {
20
+ this.toolCategories.set(tool.name, category);
21
+ }
22
+ });
23
+ }
24
+ registerForCategory(category) {
25
+ return (tool) => this.registerTool(tool, category);
26
+ }
27
+ getTool(name) {
28
+ return effect_1.Effect.try({
29
+ try: () => {
30
+ const tool = this.tools.get(name);
31
+ if (!tool) {
32
+ throw new Error(`Tool not found: ${name}`);
33
+ }
34
+ return tool;
35
+ },
36
+ catch: (error) => (error instanceof Error ? error : new Error(String(error))),
37
+ });
38
+ }
39
+ listTools() {
40
+ return effect_1.Effect.sync(() => {
41
+ const names = [];
42
+ this.tools.forEach((tool) => {
43
+ if (!tool.hidden)
44
+ names.push(tool.name);
45
+ });
46
+ return names;
47
+ });
48
+ }
49
+ getToolDefinitions() {
50
+ return effect_1.Effect.sync(() => {
51
+ const definitions = [];
52
+ this.tools.forEach((tool) => {
53
+ definitions.push({
54
+ type: "function",
55
+ function: {
56
+ name: tool.name,
57
+ description: tool.description,
58
+ parameters: tool.parameters,
59
+ },
60
+ });
61
+ });
62
+ return definitions;
63
+ });
64
+ }
65
+ listToolsByCategory() {
66
+ return effect_1.Effect.sync(() => {
67
+ const categories = {};
68
+ this.tools.forEach((tool, toolName) => {
69
+ if (!tool.hidden) {
70
+ const category = this.toolCategories.get(toolName) || "Other";
71
+ if (!categories[category]) {
72
+ categories[category] = [];
73
+ }
74
+ categories[category].push(toolName);
75
+ }
76
+ });
77
+ // Sort tool names within each category
78
+ Object.keys(categories).forEach((category) => {
79
+ const tools = categories[category];
80
+ if (tools) {
81
+ tools.sort();
82
+ }
83
+ });
84
+ return categories;
85
+ });
86
+ }
87
+ getToolsInCategory(category) {
88
+ return effect_1.Effect.sync(() => {
89
+ const tools = [];
90
+ this.tools.forEach((tool, toolName) => {
91
+ if (!tool.hidden && this.toolCategories.get(toolName) === category) {
92
+ tools.push(toolName);
93
+ }
94
+ });
95
+ return tools.sort();
96
+ });
97
+ }
98
+ listCategories() {
99
+ return effect_1.Effect.sync(() => {
100
+ const categories = new Set();
101
+ this.tools.forEach((tool, toolName) => {
102
+ if (!tool.hidden) {
103
+ const category = this.toolCategories.get(toolName) || "Other";
104
+ categories.add(category);
105
+ }
106
+ });
107
+ return Array.from(categories).sort();
108
+ });
109
+ }
110
+ executeTool(name, args, context) {
111
+ return effect_1.Effect.gen(function* () {
112
+ const start = Date.now();
113
+ const tool = yield* this.getTool(name);
114
+ // Log tool execution start
115
+ yield* (0, logger_1.logToolExecutionStart)(name, context.agentId, context.conversationId).pipe(effect_1.Effect.catchAll(() => effect_1.Effect.void));
116
+ try {
117
+ const exec = tool.execute;
118
+ const result = yield* exec(args, context);
119
+ const durationMs = Date.now() - start;
120
+ if (result.success) {
121
+ // Create a summary of the result for better logging
122
+ const resultSummary = tool.createSummary?.(result);
123
+ // Log successful execution with improved formatting
124
+ yield* (0, logger_1.logToolExecutionSuccess)(name, context.agentId, durationMs, context.conversationId, resultSummary).pipe(effect_1.Effect.catchAll(() => effect_1.Effect.void));
125
+ }
126
+ else {
127
+ // If this is an approval-required response, log as warning with special label
128
+ const resultObj = result.result;
129
+ const isApproval = resultObj?.approvalRequired === true;
130
+ if (isApproval) {
131
+ const approvalMsg = resultObj?.message || result.error || "Approval required";
132
+ yield* (0, logger_1.logToolExecutionApproval)(name, context.agentId, durationMs, approvalMsg, context.conversationId).pipe(effect_1.Effect.catchAll(() => effect_1.Effect.void));
133
+ }
134
+ else {
135
+ const errorMessage = result.error || "Tool returned success=false";
136
+ yield* (0, logger_1.logToolExecutionError)(name, context.agentId, durationMs, errorMessage, context.conversationId).pipe(effect_1.Effect.catchAll(() => effect_1.Effect.void));
137
+ }
138
+ }
139
+ return result;
140
+ }
141
+ catch (err) {
142
+ const durationMs = Date.now() - start;
143
+ const errorMessage = err instanceof Error ? err.message : String(err);
144
+ // Log error with improved formatting
145
+ yield* (0, logger_1.logToolExecutionError)(name, context.agentId, durationMs, errorMessage, context.conversationId).pipe(effect_1.Effect.catchAll(() => effect_1.Effect.void));
146
+ throw err;
147
+ }
148
+ }.bind(this));
149
+ }
150
+ }
151
+ // Create a service tag for dependency injection
152
+ exports.ToolRegistryTag = effect_1.Context.GenericTag("ToolRegistry");
153
+ // Create a layer for providing the tool registry
154
+ function createToolRegistryLayer() {
155
+ return effect_1.Layer.succeed(exports.ToolRegistryTag, new DefaultToolRegistry());
156
+ }
157
+ // Helper functions for common tool registry operations
158
+ function registerTool(tool) {
159
+ return effect_1.Effect.gen(function* () {
160
+ const registry = yield* exports.ToolRegistryTag;
161
+ return yield* registry.registerTool(tool);
162
+ });
163
+ }
164
+ /**
165
+ * Create a category-scoped tool registration function
166
+ *
167
+ * Returns a function that registers tools under a specific category.
168
+ * This provides a clean API for registering multiple tools in the same category
169
+ * without having to pass the category to each registration call.
170
+ *
171
+ * @param category - The category name for the tools
172
+ * @returns A function that registers tools under the specified category
173
+ *
174
+ * @example
175
+ * ```typescript
176
+ * const registerTool = yield* registerForCategory("Email");
177
+ * yield* registerTool(createListEmailsTool());
178
+ * yield* registerTool(createSendEmailTool());
179
+ * ```
180
+ */
181
+ function registerForCategory(category) {
182
+ return effect_1.Effect.gen(function* () {
183
+ const registry = yield* exports.ToolRegistryTag;
184
+ return registry.registerForCategory(category);
185
+ });
186
+ }
187
+ //# sourceMappingURL=tool-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../../../src/core/agent/tools/tool-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { type SearchDepth, type SearchOutputType } from "linkup-sdk";
2
+ import { type ConfigService } from "../../../services/config";
3
+ import { defineTool } from "./base-tool";
4
+ /**
5
+ * Unified web search tool that provides fallback from Linkup to web search options
6
+ * This tool maintains a consistent interface while switching between search providers
7
+ */
8
+ export interface WebSearchArgs extends Record<string, unknown> {
9
+ readonly query: string;
10
+ readonly depth?: SearchDepth;
11
+ readonly outputType?: SearchOutputType;
12
+ readonly includeImages?: boolean;
13
+ }
14
+ export interface WebSearchResult {
15
+ readonly answer?: string;
16
+ readonly results: readonly WebSearchItem[];
17
+ readonly totalResults: number;
18
+ readonly query: string;
19
+ readonly timestamp: string;
20
+ readonly provider: "linkup" | "web_search";
21
+ }
22
+ export interface WebSearchItem {
23
+ readonly title: string;
24
+ readonly url: string;
25
+ readonly snippet: string;
26
+ readonly publishedDate?: string;
27
+ readonly source?: string;
28
+ readonly metadata?: Record<string, unknown>;
29
+ }
30
+ export interface LinkupConfig {
31
+ readonly apiKey: string;
32
+ }
33
+ /**
34
+ * Create a unified web search tool that tries Linkup first, then falls back to web search options
35
+ *
36
+ * @returns A tool that can search the web using Linkup or web search fallback
37
+ */
38
+ export declare function createWebSearchTool(): ReturnType<typeof defineTool<ConfigService, WebSearchArgs>>;
39
+ //# sourceMappingURL=web-search-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-search-tools.d.ts","sourceRoot":"","sources":["../../../../src/core/agent/tools/web-search-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,gBAAgB,EAGtB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC;;;GAGG;AAEH,MAAM,WAAW,aAAc,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC5D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IACvC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,CAAC;IAC3C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,YAAY,CAAC;CAC5C;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,UAAU,CAAC,OAAO,UAAU,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,CA4FjG"}
@@ -0,0 +1,220 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createWebSearchTool = createWebSearchTool;
4
+ const effect_1 = require("effect");
5
+ const linkup_sdk_1 = require("linkup-sdk");
6
+ const zod_1 = require("zod");
7
+ const config_1 = require("../../../services/config");
8
+ const base_tool_1 = require("./base-tool");
9
+ /**
10
+ * Create a unified web search tool that tries Linkup first, then falls back to web search options
11
+ *
12
+ * @returns A tool that can search the web using Linkup or web search fallback
13
+ */
14
+ function createWebSearchTool() {
15
+ return (0, base_tool_1.defineTool)({
16
+ name: "web_search",
17
+ description: "Search the web for current information. Uses Linkup search engine by default. Provides high-quality, factual search results to enrich AI responses with current information from the internet.",
18
+ parameters: zod_1.z
19
+ .object({
20
+ query: zod_1.z
21
+ .string()
22
+ .min(1, "query cannot be empty")
23
+ .describe("The search query to execute. Be specific and detailed for better results."),
24
+ depth: zod_1.z
25
+ .enum(["standard", "deep"])
26
+ .optional()
27
+ .describe("Search depth - 'standard' for quick results, 'deep' for comprehensive search (default: 'standard')"),
28
+ outputType: zod_1.z
29
+ .enum(["sourcedAnswer", "searchResults", "structured"])
30
+ .optional()
31
+ .describe("Output format - 'sourcedAnswer' for AI-friendly format, 'searchResults' for raw results, 'structured' for structured data (default: 'sourcedAnswer')"),
32
+ includeImages: zod_1.z
33
+ .boolean()
34
+ .optional()
35
+ .describe("Whether to include images in search results (default: false)"),
36
+ })
37
+ .strict(),
38
+ validate: (args) => {
39
+ const result = zod_1.z
40
+ .object({
41
+ query: zod_1.z.string().min(1),
42
+ depth: zod_1.z.enum(["standard", "deep"]).optional(),
43
+ outputType: zod_1.z.enum(["sourcedAnswer", "searchResults", "structured"]).optional(),
44
+ includeImages: zod_1.z.boolean().optional(),
45
+ })
46
+ .strict().safeParse(args);
47
+ if (!result.success) {
48
+ return { valid: false, errors: result.error.issues.map((i) => i.message) };
49
+ }
50
+ return { valid: true, value: result.data };
51
+ },
52
+ handler: function webSearchHandler(args, context) {
53
+ return effect_1.Effect.gen(function* () {
54
+ const config = yield* config_1.AgentConfigService;
55
+ // Try Linkup first
56
+ const linkupResult = yield* tryLinkupSearch(args, config).pipe(effect_1.Effect.catchAll((error) => {
57
+ // Log the error but don't fail - we'll fall back to web search
58
+ console.warn(`Linkup search failed, falling back to web search: ${error.message}`);
59
+ return effect_1.Effect.succeed(null);
60
+ }));
61
+ if (linkupResult) {
62
+ return {
63
+ success: true,
64
+ result: linkupResult,
65
+ };
66
+ }
67
+ // Fallback to web search options
68
+ const webSearchResult = yield* performWebSearchFallback(args, context);
69
+ return {
70
+ success: true,
71
+ result: webSearchResult,
72
+ };
73
+ }).pipe(effect_1.Effect.catchAll((error) => effect_1.Effect.succeed({
74
+ success: false,
75
+ result: null,
76
+ error: error.message,
77
+ })));
78
+ },
79
+ createSummary: function createSearchSummary(result) {
80
+ if (!result.success || !result.result)
81
+ return undefined;
82
+ const searchResult = result.result;
83
+ return `Found ${searchResult.totalResults} results for "${searchResult.query}" using ${searchResult.provider}`;
84
+ },
85
+ });
86
+ }
87
+ /**
88
+ * Try to perform a Linkup search
89
+ */
90
+ function tryLinkupSearch(args, config) {
91
+ return effect_1.Effect.gen(function* () {
92
+ // Get Linkup configuration
93
+ const linkupConfig = yield* getLinkupConfig(config);
94
+ // Create Linkup client
95
+ const client = new linkup_sdk_1.LinkupClient({
96
+ apiKey: linkupConfig.apiKey,
97
+ });
98
+ // Prepare search parameters
99
+ const searchParams = {
100
+ query: args.query,
101
+ depth: args.depth ?? "standard",
102
+ outputType: args.outputType ?? "sourcedAnswer",
103
+ includeImages: args.includeImages ?? false,
104
+ };
105
+ const searchResult = yield* performLinkupSearch(client, searchParams);
106
+ return {
107
+ ...(searchResult.answer && { answer: searchResult.answer }),
108
+ results: searchResult.results,
109
+ totalResults: searchResult.totalResults,
110
+ query: searchResult.query,
111
+ timestamp: searchResult.timestamp,
112
+ provider: "linkup",
113
+ };
114
+ });
115
+ }
116
+ /**
117
+ * Perform web search fallback using web_search_options
118
+ * This function returns a placeholder result since the actual web search
119
+ * is handled by the LLM service with web_search_options
120
+ */
121
+ function performWebSearchFallback(args, _context) {
122
+ // Return a placeholder result indicating web search fallback
123
+ // The actual web search is handled by the LLM service with web_search_options
124
+ const fallbackResult = {
125
+ results: [
126
+ {
127
+ title: "Web Search Fallback",
128
+ url: "https://example.com",
129
+ snippet: `Web search fallback activated for query: "${args.query}". This indicates that Linkup search was unavailable and the system fell back to web search options.`,
130
+ source: "web_search_fallback",
131
+ },
132
+ ],
133
+ totalResults: 1,
134
+ query: args.query,
135
+ timestamp: new Date().toISOString(),
136
+ provider: "web_search",
137
+ };
138
+ return effect_1.Effect.succeed(fallbackResult);
139
+ }
140
+ /**
141
+ * Get Linkup configuration from the config service
142
+ */
143
+ function getLinkupConfig(config) {
144
+ return effect_1.Effect.gen(function* () {
145
+ const apiKey = yield* config
146
+ .getOrFail("linkup.apiKey")
147
+ .pipe(effect_1.Effect.catchAll(() => effect_1.Effect.fail(new Error("Linkup API key is required. Please set linkup.apiKey in your configuration."))));
148
+ if (!apiKey || typeof apiKey !== "string") {
149
+ return yield* effect_1.Effect.fail(new Error("Linkup API key is required. Please set linkup.apiKey in your configuration."));
150
+ }
151
+ return {
152
+ apiKey: apiKey,
153
+ };
154
+ });
155
+ }
156
+ function performLinkupSearch(client, params) {
157
+ return effect_1.Effect.tryPromise({
158
+ try: async () => {
159
+ const response = await client.search({
160
+ query: params.query,
161
+ depth: params.depth,
162
+ outputType: params.outputType,
163
+ includeImages: params.includeImages,
164
+ });
165
+ let searchResult;
166
+ if (params.outputType === "sourcedAnswer") {
167
+ const sourcedAnswer = response;
168
+ searchResult = {
169
+ answer: sourcedAnswer.answer,
170
+ results: sourcedAnswer.sources.map((source) => {
171
+ if ("snippet" in source) {
172
+ return {
173
+ title: source.name || "",
174
+ url: source.url || "",
175
+ snippet: source.snippet || "",
176
+ source: source.name,
177
+ };
178
+ }
179
+ else {
180
+ return {
181
+ title: source.name || "",
182
+ url: source.url || "",
183
+ snippet: source.type === "text" ? source.content : "",
184
+ source: source.name,
185
+ };
186
+ }
187
+ }),
188
+ totalResults: sourcedAnswer.sources.length,
189
+ query: params.query,
190
+ timestamp: new Date().toISOString(),
191
+ };
192
+ }
193
+ else if (params.outputType === "searchResults") {
194
+ const searchResults = response;
195
+ searchResult = {
196
+ results: searchResults.results.map((result) => ({
197
+ title: result.name || "",
198
+ url: result.url || "",
199
+ snippet: result.type === "text" ? result.content : "",
200
+ source: result.name,
201
+ })),
202
+ totalResults: searchResults.results.length,
203
+ query: params.query,
204
+ timestamp: new Date().toISOString(),
205
+ };
206
+ }
207
+ else {
208
+ return {
209
+ results: [],
210
+ totalResults: 0,
211
+ query: params.query,
212
+ timestamp: new Date().toISOString(),
213
+ };
214
+ }
215
+ return searchResult;
216
+ },
217
+ catch: (error) => new Error(`Linkup search failed: ${error instanceof Error ? error.message : String(error)}`),
218
+ });
219
+ }
220
+ //# sourceMappingURL=web-search-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-search-tools.js","sourceRoot":"","sources":["../../../../src/core/agent/tools/web-search-tools.ts"],"names":[],"mappings":"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"}