@vertesia/tools-sdk 0.82.0 → 0.82.2

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 (80) hide show
  1. package/lib/cjs/InteractionCollection.js +164 -0
  2. package/lib/cjs/InteractionCollection.js.map +1 -0
  3. package/lib/cjs/SkillCollection.js +318 -0
  4. package/lib/cjs/SkillCollection.js.map +1 -0
  5. package/lib/cjs/ToolCollection.js +192 -0
  6. package/lib/cjs/ToolCollection.js.map +1 -0
  7. package/lib/cjs/ToolRegistry.js +44 -0
  8. package/lib/cjs/ToolRegistry.js.map +1 -0
  9. package/lib/cjs/auth.js +89 -0
  10. package/lib/cjs/auth.js.map +1 -0
  11. package/lib/cjs/build/validate.js +7 -0
  12. package/lib/cjs/build/validate.js.map +1 -0
  13. package/lib/cjs/copy-assets.js +84 -0
  14. package/lib/cjs/copy-assets.js.map +1 -0
  15. package/lib/cjs/index.js +30 -0
  16. package/lib/cjs/index.js.map +1 -0
  17. package/lib/cjs/package.json +3 -0
  18. package/lib/cjs/server.js +327 -0
  19. package/lib/cjs/server.js.map +1 -0
  20. package/lib/cjs/site/styles.js +621 -0
  21. package/lib/cjs/site/styles.js.map +1 -0
  22. package/lib/cjs/site/templates.js +932 -0
  23. package/lib/cjs/site/templates.js.map +1 -0
  24. package/lib/cjs/types.js +3 -0
  25. package/lib/cjs/types.js.map +1 -0
  26. package/lib/cjs/utils.js +7 -0
  27. package/lib/cjs/utils.js.map +1 -0
  28. package/lib/esm/InteractionCollection.js +125 -0
  29. package/lib/esm/InteractionCollection.js.map +1 -0
  30. package/lib/esm/SkillCollection.js +311 -0
  31. package/lib/esm/SkillCollection.js.map +1 -0
  32. package/lib/esm/ToolCollection.js +154 -0
  33. package/lib/esm/ToolCollection.js.map +1 -0
  34. package/lib/esm/ToolRegistry.js +39 -0
  35. package/lib/esm/ToolRegistry.js.map +1 -0
  36. package/lib/esm/auth.js +82 -0
  37. package/lib/esm/auth.js.map +1 -0
  38. package/lib/esm/build/validate.js +4 -0
  39. package/lib/esm/build/validate.js.map +1 -0
  40. package/lib/esm/copy-assets.js +81 -0
  41. package/lib/esm/copy-assets.js.map +1 -0
  42. package/lib/esm/index.js +10 -0
  43. package/lib/esm/index.js.map +1 -0
  44. package/lib/esm/server.js +323 -0
  45. package/lib/esm/server.js.map +1 -0
  46. package/lib/esm/site/styles.js +618 -0
  47. package/lib/esm/site/styles.js.map +1 -0
  48. package/lib/esm/site/templates.js +920 -0
  49. package/lib/esm/site/templates.js.map +1 -0
  50. package/lib/esm/types.js +2 -0
  51. package/lib/esm/types.js.map +1 -0
  52. package/lib/esm/utils.js +4 -0
  53. package/lib/esm/utils.js.map +1 -0
  54. package/lib/types/InteractionCollection.d.ts +48 -0
  55. package/lib/types/InteractionCollection.d.ts.map +1 -0
  56. package/lib/types/SkillCollection.d.ts +111 -0
  57. package/lib/types/SkillCollection.d.ts.map +1 -0
  58. package/lib/types/ToolCollection.d.ts +61 -0
  59. package/lib/types/ToolCollection.d.ts.map +1 -0
  60. package/lib/types/ToolRegistry.d.ts +15 -0
  61. package/lib/types/ToolRegistry.d.ts.map +1 -0
  62. package/lib/types/auth.d.ts +20 -0
  63. package/lib/types/auth.d.ts.map +1 -0
  64. package/lib/types/build/validate.d.ts +2 -0
  65. package/lib/types/build/validate.d.ts.map +1 -0
  66. package/lib/types/copy-assets.d.ts +14 -0
  67. package/lib/types/copy-assets.d.ts.map +1 -0
  68. package/lib/types/index.d.ts +10 -0
  69. package/lib/types/index.d.ts.map +1 -0
  70. package/lib/types/server.d.ts +72 -0
  71. package/lib/types/server.d.ts.map +1 -0
  72. package/lib/types/site/styles.d.ts +5 -0
  73. package/lib/types/site/styles.d.ts.map +1 -0
  74. package/lib/types/site/templates.d.ts +54 -0
  75. package/lib/types/site/templates.d.ts.map +1 -0
  76. package/lib/types/types.d.ts +262 -0
  77. package/lib/types/types.d.ts.map +1 -0
  78. package/lib/types/utils.d.ts +2 -0
  79. package/lib/types/utils.d.ts.map +1 -0
  80. package/package.json +4 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../src/site/templates.ts"],"names":[],"mappings":";;AA6ZA,wCAQC;AAKD,4BASC;AAKD,0CAMC;AAKD,wCA0DC;AAKD,8BAWC;AAKD,0CAqEC;AAkCD,8BAuLC;AAKD,gDAsCC;AAKD,kDAsCC;AAKD,8DAgDC;AAv7BD,2CAAyC;AAOzC;;GAEG;AACH,MAAM,WAAW,GAAG,QAAQ,CAAA;;;OAGrB,CAAC;AAER,MAAM,SAAS,GAAG,QAAQ,CAAA;;;OAGnB,CAAC;AAER;;GAEG;AACH,MAAM,YAAY,GAAG,OAAO,CAAA;EAC1B,sBAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqVX,CAAC;AAEF;;GAEG;AACH,SAAS,aAAa,CAAC,GAAY;IAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC1C,OAAO,IAAI;SACN,OAAO,CAAC,aAAa,EAAE,gCAAgC,CAAC;SACxD,OAAO,CAAC,qBAAqB,EAAE,sCAAsC,CAAC;SACtE,OAAO,CAAC,iBAAiB,EAAE,oCAAoC,CAAC;SAChE,OAAO,CAAC,wBAAwB,EAAE,qCAAqC,CAAC;SACxE,OAAO,CAAC,kBAAkB,EAAE,kCAAkC,CAAC,CAAC;AACzE,CAAC;AAED;;GAEG;AACH,MAAM,SAAS,GAAG,QAAQ,CAAA;;;OAGnB,CAAC;AAER;;GAEG;AACH,MAAM,QAAQ,GAAG,QAAQ,CAAA;;;;OAIlB,CAAC;AAER;;GAEG;AACH,MAAM,QAAQ,GAAG,QAAQ,CAAA;;;;OAIlB,CAAC;AAER;;GAEG;AACH,SAAgB,cAAc,CAAC,UAAuB,EAAE,UAAkB,EAAE,IAAa;IACrF,OAAO,QAAQ,CAAA;yBACM,UAAU,IAAI,UAAU,CAAC,IAAI,2BAA2B,UAAU,2BAA2B,UAAU,CAAC,IAAI;6BACxG,UAAU,CAAC,IAAI,IAAI,WAAW;8BAC7B,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,IAAI;6BACpC,UAAU,CAAC,WAAW,IAAI,EAAE;MACnD,IAAI,CAAC,CAAC,CAAC,0BAA0B,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE;KACnD,CAAC;AACN,CAAC;AAED;;GAEG;AACH,SAAgB,QAAQ,CAAC,IAAmC;IACxD,OAAO,QAAQ,CAAA;;6BAEU,IAAI,CAAC,IAAI;6BACT,IAAI,CAAC,WAAW,IAAI,EAAE;MAC7C,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAA;+BACH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;KACpE,CAAC,CAAC,CAAC,EAAE;OACH,CAAC;AACR,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,QAAyB;IACvD,OAAO,QAAQ,CAAA;iCACgB,QAAQ,CAAC,IAAI;8BAChB,QAAQ,CAAC,IAAI;6BACd,QAAQ,CAAC,WAAW,IAAI,EAAE;KAClD,CAAC;AACN,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,IAAmC,EAAE,cAAsB;IACtF,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;IACjC,MAAM,UAAU,GAAI,MAAkC,EAAE,UAAiD,CAAC;IAC1G,MAAM,QAAQ,GAAI,MAAkC,EAAE,QAAgC,CAAC;IAEvF,OAAO,QAAQ,CAAA;;;;uCAIoB,IAAI,CAAC,IAAI;qCACX,IAAI,CAAC,WAAW,IAAI,gBAAgB;;;;;;;;;;wCAUjC,cAAc;8FACwC,cAAc;sBACtF,QAAQ;;;;;UAKpB,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAA;;;cAGb,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAA;;kBAEjB,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAC9C,MAAM,IAAI,GAAG,KAAgC,CAAC;QAC9C,MAAM,UAAU,GAAG,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC3C,OAAO,QAAQ,CAAA;;kDAEe,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;;oCAE1C,IAAI,CAAC,IAAI,IAAI,KAAK;8BACxB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,yDAAyD,IAAI,CAAC,WAAW,SAAS,CAAC,CAAC,CAAC,EAAE;;2BAE7G,CAAC;IACZ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;aAEd,CAAC,CAAC,CAAC,EAAE;;;yEAGuD,aAAa,CAAC,MAAM,CAAC;;;SAGrF,CAAC,CAAC,CAAC,QAAQ,CAAA;;;;SAIX;;OAEF,CAAC;AACR,CAAC;AAED;;GAEG;AACH,SAAgB,SAAS,CAAC,KAAsB;IAC5C,OAAO,QAAQ,CAAA;;6BAEU,KAAK,CAAC,IAAI;6BACV,KAAK,CAAC,WAAW,IAAI,EAAE;;6BAEvB,KAAK,CAAC,SAAS,EAAE,QAAQ,IAAI,EAAE,KAAK,KAAK,CAAC,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;UAC1G,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,sBAAsB,KAAK,CAAC,SAAS,CAAC,QAAQ,KAAK,KAAK,CAAC,SAAS,CAAC,QAAQ,SAAS,CAAC,CAAC,CAAC,EAAE;UACrH,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,uBAAuB,KAAK,CAAC,OAAO,CAAC,MAAM,UAAU,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE;;OAEjI,CAAC;AACR,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,KAAsB;IAClD,MAAM,WAAW,GAAG,KAAK,CAAC,gBAAgB,EAAE,QAAQ,EAAE,MAAM,CAAC;IAC7D,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC;IACtD,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzC,OAAO,QAAQ,CAAA;;;;uCAIoB,KAAK,CAAC,IAAI;qCACZ,KAAK,CAAC,WAAW,IAAI,gBAAgB;;;;cAI5D,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,sBAAsB,KAAK,CAAC,SAAS,CAAC,QAAQ,KAAK,KAAK,CAAC,SAAS,CAAC,QAAQ,SAAS,CAAC,CAAC,CAAC,EAAE;;;;;;;0CAOzF,KAAK,CAAC,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,mBAAmB;;cAEzG,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAA;;;gDAGF,KAAK,CAAC,SAAS,CAAC,QAAQ;;aAE3D,CAAC,CAAC,CAAC,EAAE;;;UAGR,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAA;;;;kBAId,KAAK,CAAC,gBAAgB,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,6BAA6B,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;;SAGvG,CAAC,CAAC,CAAC,EAAE;;UAEJ,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAA;;;;kBAId,KAAK,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,6BAA6B,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;;SAGlG,CAAC,CAAC,CAAC,EAAE;;UAEJ,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAA;;;;kBAIb,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAA;;sBAEjC,QAAQ;gDACkB,MAAM,CAAC,IAAI;;iBAE1C,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;;SAGlB,CAAC,CAAC,CAAC,EAAE;;;;gDAIkC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;;;OAGtI,CAAC;AACR,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,GAAW;IAC3B,OAAO,GAAG;SACL,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,KAAa;IAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxD,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,QAAQ,GAAG,KAAK;SACjB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;SAC3C,IAAI,CAAC,EAAE,CAAC,CAAC;IACd,OAAO,QAAQ,IAAI,IAAI,CAAC;AAC5B,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,SAAS,CACrB,KAAuB,EACvB,MAAyB,EACzB,YAAqC,EACrC,mBAAgD,EAChD,UAAmB;IAEnB,IAAI,YAAY,GAAsB,EAAE,CAAC;IACzC,IAAI,KAAK,GAAG,cAAc,CAAC;IAE3B,IAAI,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACrC,YAAY,GAAG,mBAAmB,CAAC;QACnC,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1D,KAAK,GAAG,UAAU,CAAC;QACvB,CAAC;IACL,CAAC;SAAM,IAAI,OAAO,mBAAmB,KAAK,QAAQ,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnF,KAAK,GAAG,mBAAmB,CAAC;IAChC,CAAC;SAAM,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjE,KAAK,GAAG,UAAU,CAAC;IACvB,CAAC;IAED,OAAO,QAAQ,CAAA;;;;;;aAMN,KAAK;aACL,sBAAU;;;;;;;sDAO+B,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;;;;6CAIvC,KAAK;;;;;0BAKxB,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAA,qBAAqB,KAAK,CAAC,MAAM,mBAAmB,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE;0BACtH,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAA,qBAAqB,MAAM,CAAC,MAAM,oBAAoB,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE;0BAC1H,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAA,qBAAqB,YAAY,CAAC,MAAM,0BAA0B,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE;0BAClJ,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAA,qBAAqB,YAAY,CAAC,MAAM,gBAAgB,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA+BxJ,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;;;;;;;kBAOnB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;;SAG5D,CAAC,CAAC,CAAC,EAAE;;UAEJ,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;;;;;;;;kBAQpB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QACb,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACnC,OAAO,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;;SAGlB,CAAC,CAAC,CAAC,EAAE;;UAEJ,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;;;;;;;;kBAQ1B,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;;SAG1E,CAAC,CAAC,CAAC,EAAE;;UAEJ,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;;;;;;;;kBAQ1B,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;;SAG3D,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAoDN,CAAC;AACT,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAAC,UAA0B;IACzD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1C,OAAO,QAAQ,CAAA;;;;;;aAMN,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,IAAI;aACnC,YAAY;;;;sBAIH,SAAS;;;;mCAII,UAAU,CAAC,IAAI,IAAI,WAAW;;kBAE/C,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,IAAI;gEACW,UAAU,CAAC,WAAW,IAAI,EAAE;;mCAEzD,UAAU,CAAC,IAAI;uHACqE,UAAU,CAAC,IAAI;sBAChH,QAAQ;;;;;;UAMpB,UAAU,CAAC,MAAM,QAAQ,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;;MAE/D,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACrB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACxE,4DACJ;;QAEI,CAAC;AACT,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,UAA2B;IAC3D,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3C,OAAO,QAAQ,CAAA;;;;;;aAMN,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,IAAI;aACnC,YAAY;;;;sBAIH,SAAS;;;;mCAII,UAAU,CAAC,IAAI,IAAI,SAAS;;kBAE7C,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,IAAI;gEACW,UAAU,CAAC,WAAW,IAAI,EAAE;;oCAExD,UAAU,CAAC,IAAI;wHACqE,UAAU,CAAC,IAAI;sBACjH,QAAQ;;;;;;UAMpB,WAAW,CAAC,MAAM,SAAS,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;;MAElE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACtB,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3D,6DACJ;;QAEI,CAAC;AACT,CAAC;AAED;;GAEG;AACH,SAAgB,yBAAyB,CAAC,UAAiC;IACvE,OAAO,QAAQ,CAAA;;;;;;aAMN,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,IAAI;aACnC,YAAY;;;;sBAIH,SAAS;;;;mCAII,UAAU,CAAC,IAAI,IAAI,WAAW;;kBAE/C,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,IAAI;gEACW,UAAU,CAAC,WAAW,IAAI,EAAE;;0CAElD,UAAU,CAAC,IAAI;8HACqE,UAAU,CAAC,IAAI;sBACvH,QAAQ;;;;;;UAMpB,UAAU,CAAC,YAAY,CAAC,MAAM,eAAe,UAAU,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;;;UAG5F,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAA;;;;+CAIR,KAAK,CAAC,IAAI;6CACZ,KAAK,CAAC,WAAW,IAAI,gBAAgB;;;sBAG5D,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,uBAAuB,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE;;;;SAIvF,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;;QAGX,CAAC;AACT,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.kebabCaseToTitle = kebabCaseToTitle;
4
+ function kebabCaseToTitle(name) {
5
+ return name.split('-').map(p => p[0].toUpperCase() + p.substring(1)).join(' ');
6
+ }
7
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;AAAA,4CAEC;AAFD,SAAgB,gBAAgB,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnF,CAAC"}
@@ -0,0 +1,125 @@
1
+ import { readdirSync, statSync, existsSync, readFileSync } from "fs";
2
+ import { join } from "path";
3
+ import { pathToFileURL } from "url";
4
+ import { kebabCaseToTitle } from "./utils.js";
5
+ export class InteractionCollection {
6
+ interactions;
7
+ name;
8
+ title;
9
+ icon;
10
+ description;
11
+ constructor({ name, title, icon, description, interactions }) {
12
+ this.name = name;
13
+ this.title = title || kebabCaseToTitle(name);
14
+ this.icon = icon;
15
+ this.description = description;
16
+ this.interactions = interactions;
17
+ }
18
+ addInteraction(interaction) {
19
+ this.interactions.push(interaction);
20
+ }
21
+ getInteractions() {
22
+ return this.interactions;
23
+ }
24
+ [Symbol.iterator]() {
25
+ let index = 0;
26
+ const interactions = this.interactions;
27
+ return {
28
+ next() {
29
+ if (index < interactions.length) {
30
+ return { value: interactions[index++], done: false };
31
+ }
32
+ else {
33
+ return { done: true, value: undefined };
34
+ }
35
+ }
36
+ };
37
+ }
38
+ map(callback) {
39
+ return this.interactions.map(callback);
40
+ }
41
+ getInteractionByName(name) {
42
+ return this.interactions.find(interaction => interaction.name === name);
43
+ }
44
+ }
45
+ /**
46
+ * Load all interactions from a directory.
47
+ * Scans for subdirectories containing index.ts/index.js files.
48
+ *
49
+ * Directory structure:
50
+ * ```
51
+ * interactions/
52
+ * nagare/
53
+ * extract-fund-actuals/
54
+ * index.ts # exports default InteractionSpec
55
+ * prompt.jst # prompt template (read via readPromptFile helper)
56
+ * parse-fund-document/
57
+ * index.ts
58
+ * prompt.md
59
+ * ```
60
+ *
61
+ * @param interactionsDir - Path to the interactions collection directory
62
+ * @returns Promise resolving to array of InteractionSpec objects
63
+ */
64
+ export async function loadInteractionsFromDirectory(interactionsDir) {
65
+ const interactions = [];
66
+ if (!existsSync(interactionsDir)) {
67
+ console.warn(`Interactions directory not found: ${interactionsDir}`);
68
+ return interactions;
69
+ }
70
+ let entries;
71
+ try {
72
+ entries = readdirSync(interactionsDir);
73
+ }
74
+ catch {
75
+ console.warn(`Could not read interactions directory: ${interactionsDir}`);
76
+ return interactions;
77
+ }
78
+ for (const entry of entries) {
79
+ // Skip hidden files and index files
80
+ if (entry.startsWith('.'))
81
+ continue;
82
+ if (entry === 'index.ts' || entry === 'index.js')
83
+ continue;
84
+ const entryPath = join(interactionsDir, entry);
85
+ try {
86
+ const stat = statSync(entryPath);
87
+ if (!stat.isDirectory())
88
+ continue;
89
+ // Look for index.ts or index.js in the subdirectory
90
+ const indexTs = join(entryPath, 'index.ts');
91
+ const indexJs = join(entryPath, 'index.js');
92
+ const indexPath = existsSync(indexTs) ? indexTs : existsSync(indexJs) ? indexJs : null;
93
+ if (!indexPath) {
94
+ continue; // No index file, skip
95
+ }
96
+ // Dynamic import
97
+ const fileUrl = pathToFileURL(indexPath).href;
98
+ const module = await import(fileUrl);
99
+ const interaction = module.default || module.interaction;
100
+ if (interaction && typeof interaction.name === 'string') {
101
+ interactions.push(interaction);
102
+ }
103
+ else {
104
+ console.warn(`No valid InteractionSpec export found in ${entry}/index`);
105
+ }
106
+ }
107
+ catch (err) {
108
+ console.warn(`Error loading interaction from ${entry}:`, err);
109
+ }
110
+ }
111
+ return interactions;
112
+ }
113
+ /**
114
+ * Helper to read a prompt file from the same directory as the interaction.
115
+ * Use this in interaction index.ts files to load prompt templates.
116
+ *
117
+ * @param dirname - Pass __dirname or dirname(fileURLToPath(import.meta.url))
118
+ * @param filename - Prompt filename (e.g., 'prompt.jst' or 'prompt.md')
119
+ * @returns File contents as string
120
+ */
121
+ export function readPromptFile(dirname, filename) {
122
+ const filePath = join(dirname, filename);
123
+ return readFileSync(filePath, 'utf-8');
124
+ }
125
+ //# sourceMappingURL=InteractionCollection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InteractionCollection.js","sourceRoot":"","sources":["../../src/InteractionCollection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,311 @@
1
+ import { readdirSync, statSync, existsSync, readFileSync } from "fs";
2
+ import { join } from "path";
3
+ import { HTTPException } from "hono/http-exception";
4
+ import { kebabCaseToTitle } from "./utils.js";
5
+ /**
6
+ * Implements a skills collection endpoint.
7
+ * Skills provide contextual instructions to agents.
8
+ * They can be static (markdown) or dynamic (JST templates).
9
+ */
10
+ export class SkillCollection {
11
+ /**
12
+ * A kebab case collection name
13
+ */
14
+ name;
15
+ /**
16
+ * Optional title for UI display
17
+ */
18
+ title;
19
+ /**
20
+ * Optional icon for UI display
21
+ */
22
+ icon;
23
+ /**
24
+ * A short description
25
+ */
26
+ description;
27
+ /**
28
+ * The skills in this collection
29
+ */
30
+ skills;
31
+ constructor({ name, title, icon, description, skills }) {
32
+ this.name = name;
33
+ this.title = title || kebabCaseToTitle(name);
34
+ this.icon = icon;
35
+ this.description = description;
36
+ this.skills = new Map(skills.map(s => [s.name, s]));
37
+ }
38
+ [Symbol.iterator]() {
39
+ return this.skills.values();
40
+ }
41
+ map(callback) {
42
+ return Array.from(this.skills.values()).map(callback);
43
+ }
44
+ /**
45
+ * Get a skill by name
46
+ */
47
+ getSkill(name) {
48
+ return this.skills.get(name);
49
+ }
50
+ /**
51
+ * Get all skill definitions
52
+ */
53
+ getSkillDefinitions() {
54
+ return Array.from(this.skills.values());
55
+ }
56
+ /**
57
+ * Get skills exposed as tool definitions.
58
+ * This allows skills to appear alongside regular tools.
59
+ * When called, they return rendered instructions.
60
+ */
61
+ getToolDefinitions() {
62
+ const defaultSchema = {
63
+ type: 'object',
64
+ properties: {
65
+ context: {
66
+ type: "string",
67
+ description: "Additional context or specific requirements for this task"
68
+ }
69
+ }
70
+ };
71
+ return Array.from(this.skills.values()).map(skill => ({
72
+ name: `skill_${skill.name}`,
73
+ description: `[Skill] ${skill.description}. Returns contextual instructions for this task.`,
74
+ input_schema: skill.input_schema || defaultSchema
75
+ }));
76
+ }
77
+ /**
78
+ * Get as a tool collection definition (for listing alongside tools)
79
+ */
80
+ getAsToolCollection(baseUrl) {
81
+ return {
82
+ title: this.title || this.name,
83
+ description: this.description || `Skills: ${this.name}`,
84
+ src: `${baseUrl}/api/skills/${this.name}`,
85
+ tools: this.getToolDefinitions()
86
+ };
87
+ }
88
+ /**
89
+ * Execute a skill - accepts standard tool execution payload.
90
+ * Returns rendered instructions in tool result format.
91
+ */
92
+ async execute(ctx) {
93
+ let payload;
94
+ try {
95
+ payload = await ctx.req.json();
96
+ const toolName = payload.tool_use.tool_name;
97
+ // Extract skill name from tool name (remove "skill_" prefix if present)
98
+ const skillName = toolName.startsWith('skill_')
99
+ ? toolName.slice(6)
100
+ : toolName;
101
+ const skill = this.skills.get(skillName);
102
+ if (!skill) {
103
+ throw new HTTPException(404, {
104
+ message: `Skill not found: ${skillName}`
105
+ });
106
+ }
107
+ const data = payload.tool_use.tool_input || {};
108
+ const result = await this.renderSkill(skill, data);
109
+ // TODO: If skill.execution is set, run via Daytona
110
+ // Return in tool result format
111
+ return ctx.json({
112
+ tool_use_id: payload.tool_use.id,
113
+ is_error: false,
114
+ content: result.instructions,
115
+ meta: {
116
+ skill_name: skill.name,
117
+ content_type: skill.content_type,
118
+ execution: skill.execution,
119
+ }
120
+ });
121
+ }
122
+ catch (err) {
123
+ const status = err.status || 500;
124
+ return ctx.json({
125
+ tool_use_id: payload?.tool_use?.id || "unknown",
126
+ is_error: true,
127
+ content: err.message || "Error executing skill",
128
+ }, status);
129
+ }
130
+ }
131
+ /**
132
+ * Render skill instructions (static or dynamic)
133
+ */
134
+ async renderSkill(skill, _data) {
135
+ const instructions = skill.instructions;
136
+ if (skill.content_type === 'jst') {
137
+ // JST templates are not currently supported
138
+ throw new HTTPException(501, {
139
+ message: `JST templates are not currently supported. Use 'md' content type instead.`
140
+ });
141
+ }
142
+ return {
143
+ name: skill.name,
144
+ instructions,
145
+ };
146
+ }
147
+ }
148
+ /**
149
+ * Parse a SKILL.md or SKILL.jst file content into a SkillDefinition.
150
+ *
151
+ * Format:
152
+ * ```
153
+ * ---
154
+ * name: skill-name
155
+ * description: Short description
156
+ * keywords: [keyword1, keyword2]
157
+ * tools: [tool1, tool2]
158
+ * language: python
159
+ * packages: [numpy, pandas]
160
+ * ---
161
+ *
162
+ * # Instructions
163
+ *
164
+ * Your markdown/jst content here...
165
+ * ```
166
+ */
167
+ export function parseSkillFile(content, contentType) {
168
+ // Parse YAML frontmatter
169
+ const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/);
170
+ if (!frontmatterMatch) {
171
+ throw new Error("Invalid skill file: missing YAML frontmatter");
172
+ }
173
+ const [, yamlContent, body] = frontmatterMatch;
174
+ const frontmatter = parseYamlFrontmatter(yamlContent);
175
+ const instructions = body.trim();
176
+ if (!frontmatter.name) {
177
+ throw new Error("Skill file missing required 'name' field");
178
+ }
179
+ if (!frontmatter.description) {
180
+ throw new Error("Skill file missing required 'description' field");
181
+ }
182
+ const skill = {
183
+ name: frontmatter.name,
184
+ title: frontmatter.title,
185
+ description: frontmatter.description,
186
+ instructions,
187
+ content_type: contentType,
188
+ };
189
+ // Build context triggers
190
+ if (frontmatter.keywords || frontmatter.tools || frontmatter.data_patterns) {
191
+ skill.context_triggers = {
192
+ keywords: frontmatter.keywords,
193
+ tool_names: frontmatter.tools,
194
+ data_patterns: frontmatter.data_patterns,
195
+ };
196
+ }
197
+ // Build execution config
198
+ if (frontmatter.language) {
199
+ skill.execution = {
200
+ language: frontmatter.language,
201
+ packages: frontmatter.packages,
202
+ system_packages: frontmatter.system_packages,
203
+ };
204
+ // Extract code template from instructions if present
205
+ const codeBlockMatch = instructions.match(/```(?:python|javascript|typescript|js|ts|py)\n([\s\S]*?)```/);
206
+ if (codeBlockMatch) {
207
+ skill.execution.template = codeBlockMatch[1].trim();
208
+ }
209
+ }
210
+ // Related tools from frontmatter
211
+ if (frontmatter.tools) {
212
+ skill.related_tools = frontmatter.tools;
213
+ }
214
+ return skill;
215
+ }
216
+ /**
217
+ * Simple YAML frontmatter parser (handles basic key: value and arrays)
218
+ */
219
+ function parseYamlFrontmatter(yaml) {
220
+ const result = {};
221
+ const lines = yaml.split('\n');
222
+ for (const line of lines) {
223
+ const trimmed = line.trim();
224
+ if (!trimmed || trimmed.startsWith('#'))
225
+ continue;
226
+ const colonIndex = trimmed.indexOf(':');
227
+ if (colonIndex === -1)
228
+ continue;
229
+ const key = trimmed.slice(0, colonIndex).trim();
230
+ let value = trimmed.slice(colonIndex + 1).trim();
231
+ // Handle array syntax: [item1, item2]
232
+ if (value.startsWith('[') && value.endsWith(']')) {
233
+ const items = value.slice(1, -1).split(',').map(s => s.trim());
234
+ result[key] = items.filter(s => s.length > 0);
235
+ }
236
+ else {
237
+ // Remove quotes if present
238
+ if ((value.startsWith('"') && value.endsWith('"')) ||
239
+ (value.startsWith("'") && value.endsWith("'"))) {
240
+ value = value.slice(1, -1);
241
+ }
242
+ result[key] = value;
243
+ }
244
+ }
245
+ return result;
246
+ }
247
+ /**
248
+ * Helper to load skill from file path (for Node.js usage)
249
+ */
250
+ export async function loadSkillFromFile(filePath, fs) {
251
+ const content = await fs.readFile(filePath, 'utf-8');
252
+ const contentType = filePath.endsWith('.jst') ? 'jst' : 'md';
253
+ return parseSkillFile(content, contentType);
254
+ }
255
+ /**
256
+ * Load all skills from a directory.
257
+ * Scans for subdirectories containing SKILL.md files.
258
+ *
259
+ * Directory structure:
260
+ * ```
261
+ * skills/
262
+ * nagare/
263
+ * fund-onboarding/
264
+ * SKILL.md
265
+ * monte-carlo/
266
+ * SKILL.md
267
+ * ```
268
+ *
269
+ * @param dirPath - Path to the skills collection directory
270
+ * @returns Array of parsed skill definitions
271
+ */
272
+ export function loadSkillsFromDirectory(dirPath) {
273
+ const skills = [];
274
+ let entries;
275
+ try {
276
+ entries = readdirSync(dirPath);
277
+ }
278
+ catch {
279
+ console.warn(`Could not read skills directory: ${dirPath}`);
280
+ return skills;
281
+ }
282
+ for (const entry of entries) {
283
+ const entryPath = join(dirPath, entry);
284
+ try {
285
+ const stat = statSync(entryPath);
286
+ if (!stat.isDirectory())
287
+ continue;
288
+ // Look for SKILL.md or SKILL.jst
289
+ const mdPath = join(entryPath, "SKILL.md");
290
+ const jstPath = join(entryPath, "SKILL.jst");
291
+ let content;
292
+ let contentType = 'md';
293
+ if (existsSync(mdPath)) {
294
+ content = readFileSync(mdPath, "utf-8");
295
+ contentType = 'md';
296
+ }
297
+ else if (existsSync(jstPath)) {
298
+ content = readFileSync(jstPath, "utf-8");
299
+ contentType = 'jst';
300
+ }
301
+ if (content) {
302
+ skills.push(parseSkillFile(content, contentType));
303
+ }
304
+ }
305
+ catch (err) {
306
+ console.warn(`Error loading skill from ${entryPath}:`, err);
307
+ }
308
+ }
309
+ return skills;
310
+ }
311
+ //# sourceMappingURL=SkillCollection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SkillCollection.js","sourceRoot":"","sources":["../../src/SkillCollection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,154 @@
1
+ import { readdirSync, statSync, existsSync } from "fs";
2
+ import { join } from "path";
3
+ import { pathToFileURL } from "url";
4
+ import { HTTPException } from "hono/http-exception";
5
+ import { authorize } from "./auth.js";
6
+ import { ToolRegistry } from "./ToolRegistry.js";
7
+ import { kebabCaseToTitle } from "./utils.js";
8
+ /**
9
+ * Implements a tools collection endpoint
10
+ */
11
+ export class ToolCollection {
12
+ /**
13
+ * A kebab case collection name. Must only contains alphanumeric and dash characters,
14
+ * The name can be used to generate the path where the collection is exposed.
15
+ * Example: my-collection
16
+ */
17
+ name;
18
+ /**
19
+ * Optional title for UI display.
20
+ * If not provided the title will be generated form the kebab case name by replacing - with spaces and upper casing first letter in words.
21
+ */
22
+ title;
23
+ /**
24
+ * Optional icon for UI display
25
+ */
26
+ icon;
27
+ /**
28
+ * A short description
29
+ */
30
+ description;
31
+ /**
32
+ * The tool registry
33
+ */
34
+ tools;
35
+ constructor({ name, title, icon, description, tools }) {
36
+ this.name = name;
37
+ this.title = title || kebabCaseToTitle(name);
38
+ this.icon = icon;
39
+ this.description = description;
40
+ this.tools = new ToolRegistry(tools);
41
+ }
42
+ [Symbol.iterator]() {
43
+ let index = 0;
44
+ const tools = this.tools.getTools();
45
+ return {
46
+ next() {
47
+ if (index < tools.length) {
48
+ return { value: tools[index++], done: false };
49
+ }
50
+ else {
51
+ return { done: true, value: undefined };
52
+ }
53
+ }
54
+ };
55
+ }
56
+ map(callback) {
57
+ return this.tools.getTools().map(callback);
58
+ }
59
+ async execute(ctx) {
60
+ let payload;
61
+ try {
62
+ payload = await readPayload(ctx);
63
+ const session = await authorize(ctx);
64
+ const r = await this.tools.runTool(payload, session);
65
+ return ctx.json({
66
+ ...r,
67
+ tool_use_id: payload.tool_use.id
68
+ });
69
+ }
70
+ catch (err) { // HTTPException ?
71
+ const status = err.status || 500;
72
+ return ctx.json({
73
+ tool_use_id: payload?.tool_use.id || "undefined",
74
+ error: err.message || "Error executing tool",
75
+ status
76
+ }, status);
77
+ }
78
+ }
79
+ getToolDefinitions() {
80
+ return this.tools.getDefinitions();
81
+ }
82
+ }
83
+ async function readPayload(ctx) {
84
+ try {
85
+ return await ctx.req.json();
86
+ }
87
+ catch (err) {
88
+ throw new HTTPException(500, {
89
+ message: "Failed to load execution request payload: " + err.message
90
+ });
91
+ }
92
+ }
93
+ /**
94
+ * Load all tools from a directory.
95
+ * Scans for .js files and imports tools that match naming convention.
96
+ *
97
+ * Directory structure:
98
+ * ```
99
+ * collection/
100
+ * tools/
101
+ * SearchFundsTool.js # exports SearchFundsTool
102
+ * GetFundDetailsTool.js # exports GetFundDetailsTool
103
+ * ```
104
+ *
105
+ * Naming convention: File should export a Tool with name matching *Tool pattern.
106
+ *
107
+ * @param toolsDir - Path to the tools directory (e.g., /path/to/collection/tools)
108
+ * @returns Promise resolving to array of Tool objects
109
+ */
110
+ export async function loadToolsFromDirectory(toolsDir) {
111
+ const tools = [];
112
+ if (!existsSync(toolsDir)) {
113
+ console.warn(`Tools directory not found: ${toolsDir}`);
114
+ return tools;
115
+ }
116
+ let entries;
117
+ try {
118
+ entries = readdirSync(toolsDir);
119
+ }
120
+ catch {
121
+ console.warn(`Could not read tools directory: ${toolsDir}`);
122
+ return tools;
123
+ }
124
+ for (const entry of entries) {
125
+ // Only process .js and .ts files that end with Tool
126
+ if (!entry.endsWith('Tool.js') && !entry.endsWith('Tool.ts'))
127
+ continue;
128
+ if (entry.endsWith('.d.ts'))
129
+ continue;
130
+ const entryPath = join(toolsDir, entry);
131
+ try {
132
+ const stat = statSync(entryPath);
133
+ if (!stat.isFile())
134
+ continue;
135
+ // Dynamic import - need file:// URL for ESM
136
+ const fileUrl = pathToFileURL(entryPath).href;
137
+ const module = await import(fileUrl);
138
+ // Find exported Tool (named export matching filename or any Tool export)
139
+ const baseName = entry.replace(/\.(js|ts)$/, '');
140
+ const tool = module[baseName] || module.default;
141
+ if (tool && typeof tool.name === 'string' && typeof tool.run === 'function') {
142
+ tools.push(tool);
143
+ }
144
+ else {
145
+ console.warn(`No valid Tool export found in ${entry}`);
146
+ }
147
+ }
148
+ catch (err) {
149
+ console.warn(`Error loading tool from ${entry}:`, err);
150
+ }
151
+ }
152
+ return tools;
153
+ }
154
+ //# sourceMappingURL=ToolCollection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolCollection.js","sourceRoot":"","sources":["../../src/ToolCollection.ts"],"names":[],"mappings":"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"}