@tyvm/knowhow 0.0.1

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 (492) hide show
  1. package/.vscode/launch.json +14 -0
  2. package/CONFIG.md +336 -0
  3. package/README.md +49 -0
  4. package/autodoc/chat.mdx +20 -0
  5. package/autodoc/cli.mdx +11 -0
  6. package/autodoc/plugins/asana.mdx +47 -0
  7. package/autodoc/plugins/downloader/downloader.mdx +38 -0
  8. package/autodoc/plugins/downloader/plugin.mdx +37 -0
  9. package/autodoc/plugins/downloader/types.mdx +42 -0
  10. package/autodoc/plugins/embedding.mdx +41 -0
  11. package/autodoc/plugins/figma.mdx +45 -0
  12. package/autodoc/plugins/github.mdx +40 -0
  13. package/autodoc/plugins/jira.mdx +46 -0
  14. package/autodoc/plugins/language.mdx +37 -0
  15. package/autodoc/plugins/linear.mdx +35 -0
  16. package/autodoc/plugins/notion.mdx +38 -0
  17. package/autodoc/plugins/plugins.mdx +59 -0
  18. package/autodoc/plugins/types.mdx +51 -0
  19. package/autodoc/plugins/vim.mdx +39 -0
  20. package/autodoc/tools/addInternalTools.mdx +1 -0
  21. package/autodoc/tools/agentCall.mdx +1 -0
  22. package/autodoc/tools/asana/definitions.mdx +10 -0
  23. package/autodoc/tools/asana/index.mdx +12 -0
  24. package/autodoc/tools/askHuman.mdx +1 -0
  25. package/autodoc/tools/callPlugin.mdx +1 -0
  26. package/autodoc/tools/embeddingSearch.mdx +1 -0
  27. package/autodoc/tools/execCommand.mdx +1 -0
  28. package/autodoc/tools/fileSearch.mdx +1 -0
  29. package/autodoc/tools/finalAnswer.mdx +1 -0
  30. package/autodoc/tools/github/definitions.mdx +6 -0
  31. package/autodoc/tools/github/index.mdx +8 -0
  32. package/autodoc/tools/index.mdx +14 -0
  33. package/autodoc/tools/lintFile.mdx +7 -0
  34. package/autodoc/tools/list.mdx +16 -0
  35. package/autodoc/tools/modifyFile.mdx +7 -0
  36. package/autodoc/tools/patch.mdx +9 -0
  37. package/autodoc/tools/readBlocks.mdx +1 -0
  38. package/autodoc/tools/readFile.mdx +1 -0
  39. package/autodoc/tools/scanFile.mdx +1 -0
  40. package/autodoc/tools/textSearch.mdx +6 -0
  41. package/autodoc/tools/types/fileblock.mdx +1 -0
  42. package/autodoc/tools/visionTool.mdx +1 -0
  43. package/autodoc/tools/writeFile.mdx +1 -0
  44. package/jest.config.js +18 -0
  45. package/package.json +89 -0
  46. package/src/agents/base/base.ts +619 -0
  47. package/src/agents/base/prompt.ts +26 -0
  48. package/src/agents/configurable/ConfigAgent.ts +23 -0
  49. package/src/agents/developer/developer.ts +69 -0
  50. package/src/agents/index.ts +8 -0
  51. package/src/agents/interface.ts +11 -0
  52. package/src/agents/patcher/codebase.md +27 -0
  53. package/src/agents/patcher/patcher.ts +110 -0
  54. package/src/agents/researcher/researcher.ts +109 -0
  55. package/src/agents/tools/addInternalTools.ts +21 -0
  56. package/src/agents/tools/agentCall.ts +18 -0
  57. package/src/agents/tools/aiClient.ts +36 -0
  58. package/src/agents/tools/asana/definitions.ts +199 -0
  59. package/src/agents/tools/asana/index.ts +108 -0
  60. package/src/agents/tools/askHuman.ts +8 -0
  61. package/src/agents/tools/callPlugin.ts +4 -0
  62. package/src/agents/tools/embeddingSearch.ts +5 -0
  63. package/src/agents/tools/execCommand.ts +26 -0
  64. package/src/agents/tools/fileSearch.ts +33 -0
  65. package/src/agents/tools/finalAnswer.ts +4 -0
  66. package/src/agents/tools/github/definitions.ts +89 -0
  67. package/src/agents/tools/github/index.ts +67 -0
  68. package/src/agents/tools/googleSearch.ts +242 -0
  69. package/src/agents/tools/index.ts +24 -0
  70. package/src/agents/tools/language/definitions.ts +97 -0
  71. package/src/agents/tools/language/index.ts +19 -0
  72. package/src/agents/tools/lintFile.ts +17 -0
  73. package/src/agents/tools/list.ts +514 -0
  74. package/src/agents/tools/loadWebpage.ts +129 -0
  75. package/src/agents/tools/modifyFile.ts +53 -0
  76. package/src/agents/tools/patch.ts +672 -0
  77. package/src/agents/tools/readBlocks.ts +41 -0
  78. package/src/agents/tools/readFile.ts +39 -0
  79. package/src/agents/tools/scanFile.ts +16 -0
  80. package/src/agents/tools/textSearch.ts +21 -0
  81. package/src/agents/tools/types/fileblock.ts +5 -0
  82. package/src/agents/tools/visionTool.ts +5 -0
  83. package/src/agents/tools/writeFile.ts +46 -0
  84. package/src/agents/vim/vim.ts +153 -0
  85. package/src/ai.ts +167 -0
  86. package/src/chat.ts +412 -0
  87. package/src/cli.ts +85 -0
  88. package/src/clients/anthropic.ts +399 -0
  89. package/src/clients/gemini.ts +486 -0
  90. package/src/clients/http.ts +107 -0
  91. package/src/clients/index.ts +183 -0
  92. package/src/clients/knowhow.ts +33 -0
  93. package/src/clients/openai.ts +253 -0
  94. package/src/clients/types.ts +91 -0
  95. package/src/clients/xai.ts +132 -0
  96. package/src/config.ts +211 -0
  97. package/src/conversion.ts +140 -0
  98. package/src/dataset/diffs/README.md +12 -0
  99. package/src/dataset/diffs/debug-errors.ts +29 -0
  100. package/src/dataset/diffs/debug.ts +64 -0
  101. package/src/dataset/diffs/generate.ts +71 -0
  102. package/src/dataset/diffs/jsonl.ts +54 -0
  103. package/src/dataset/diffs/test.ts +193 -0
  104. package/src/embeddings.ts +411 -0
  105. package/src/hashes.ts +67 -0
  106. package/src/index.ts +376 -0
  107. package/src/login.ts +78 -0
  108. package/src/microphone.ts +136 -0
  109. package/src/modules/index.ts +37 -0
  110. package/src/modules/types.ts +48 -0
  111. package/src/plugins/asana.ts +134 -0
  112. package/src/plugins/downloader/downloader.ts +204 -0
  113. package/src/plugins/downloader/plugin.ts +85 -0
  114. package/src/plugins/downloader/types.ts +85 -0
  115. package/src/plugins/embedding.ts +42 -0
  116. package/src/plugins/figma.ts +137 -0
  117. package/src/plugins/github.ts +153 -0
  118. package/src/plugins/jira.ts +104 -0
  119. package/src/plugins/language.ts +100 -0
  120. package/src/plugins/linear.ts +219 -0
  121. package/src/plugins/notion.ts +170 -0
  122. package/src/plugins/plugins.ts +56 -0
  123. package/src/plugins/types.ts +5 -0
  124. package/src/plugins/url.ts +63 -0
  125. package/src/plugins/vim.ts +73 -0
  126. package/src/prompts/BasicCodeDocumenter.ts +1 -0
  127. package/src/prompts/BasicProjectDocumenter.ts +1 -0
  128. package/src/prompts/EmbeddingSeachHelper.ts +1 -0
  129. package/src/prompts/index.ts +9 -0
  130. package/src/server/index.ts +14 -0
  131. package/src/services/AgentService.ts +98 -0
  132. package/src/services/EmbeddingService.ts +410 -0
  133. package/src/services/EventService.ts +20 -0
  134. package/src/services/GitHub.ts +60 -0
  135. package/src/services/KnowhowClient.ts +113 -0
  136. package/src/services/Mcp.ts +270 -0
  137. package/src/services/McpServer.ts +119 -0
  138. package/src/services/McpWebsocketTransport.ts +64 -0
  139. package/src/services/S3.ts +126 -0
  140. package/src/services/Tools.ts +65 -0
  141. package/src/services/flags.ts +52 -0
  142. package/src/services/index.ts +8 -0
  143. package/src/types.ts +225 -0
  144. package/src/utils/index.ts +108 -0
  145. package/src/worker.ts +80 -0
  146. package/tests/integration/figma.test.ts +70 -0
  147. package/tests/integration/fileblocks/readwrite.test.ts +95 -0
  148. package/tests/integration/patching/input.txt +145 -0
  149. package/tests/integration/patching/output.txt +145 -0
  150. package/tests/integration/patching/patch.txt +15 -0
  151. package/tests/integration/patching/unseen.txt +80 -0
  152. package/tests/integration/patching.test.ts +136 -0
  153. package/tests/languagePlugin.test.ts +74 -0
  154. package/tests/patching/corrupted.test.ts +78 -0
  155. package/tests/patching/imports.patch.txt +11 -0
  156. package/tests/patching/imports.test.ts +43 -0
  157. package/tests/patching/imports.txt +11 -0
  158. package/tests/patching/interface.patch.txt +15 -0
  159. package/tests/patching/interface.txt +7 -0
  160. package/tests/test.spec.ts +132 -0
  161. package/ts_build/src/agents/base/base.d.ts +88 -0
  162. package/ts_build/src/agents/base/base.js +464 -0
  163. package/ts_build/src/agents/base/base.js.map +1 -0
  164. package/ts_build/src/agents/base/prompt.d.ts +1 -0
  165. package/ts_build/src/agents/base/prompt.js +30 -0
  166. package/ts_build/src/agents/base/prompt.js.map +1 -0
  167. package/ts_build/src/agents/configurable/ConfigAgent.d.ts +10 -0
  168. package/ts_build/src/agents/configurable/ConfigAgent.js +25 -0
  169. package/ts_build/src/agents/configurable/ConfigAgent.js.map +1 -0
  170. package/ts_build/src/agents/configurable/OpenAIAgent.d.ts +0 -0
  171. package/ts_build/src/agents/configurable/OpenAIAgent.js +1 -0
  172. package/ts_build/src/agents/configurable/OpenAIAgent.js.map +1 -0
  173. package/ts_build/src/agents/developer/developer.d.ts +9 -0
  174. package/ts_build/src/agents/developer/developer.js +69 -0
  175. package/ts_build/src/agents/developer/developer.js.map +1 -0
  176. package/ts_build/src/agents/index.d.ts +7 -0
  177. package/ts_build/src/agents/index.js +38 -0
  178. package/ts_build/src/agents/index.js.map +1 -0
  179. package/ts_build/src/agents/interface.d.ts +10 -0
  180. package/ts_build/src/agents/interface.js +3 -0
  181. package/ts_build/src/agents/interface.js.map +1 -0
  182. package/ts_build/src/agents/patcher/patcher.d.ts +9 -0
  183. package/ts_build/src/agents/patcher/patcher.js +106 -0
  184. package/ts_build/src/agents/patcher/patcher.js.map +1 -0
  185. package/ts_build/src/agents/researcher/researcher.d.ts +9 -0
  186. package/ts_build/src/agents/researcher/researcher.js +107 -0
  187. package/ts_build/src/agents/researcher/researcher.js.map +1 -0
  188. package/ts_build/src/agents/tools/addInternalTools.d.ts +5 -0
  189. package/ts_build/src/agents/tools/addInternalTools.js +18 -0
  190. package/ts_build/src/agents/tools/addInternalTools.js.map +1 -0
  191. package/ts_build/src/agents/tools/agentCall.d.ts +1 -0
  192. package/ts_build/src/agents/tools/agentCall.js +21 -0
  193. package/ts_build/src/agents/tools/agentCall.js.map +1 -0
  194. package/ts_build/src/agents/tools/aiClient.d.ts +6 -0
  195. package/ts_build/src/agents/tools/aiClient.js +25 -0
  196. package/ts_build/src/agents/tools/aiClient.js.map +1 -0
  197. package/ts_build/src/agents/tools/asana/definitions.d.ts +202 -0
  198. package/ts_build/src/agents/tools/asana/definitions.js +197 -0
  199. package/ts_build/src/agents/tools/asana/definitions.js.map +1 -0
  200. package/ts_build/src/agents/tools/asana/index.d.ts +8 -0
  201. package/ts_build/src/agents/tools/asana/index.js +98 -0
  202. package/ts_build/src/agents/tools/asana/index.js.map +1 -0
  203. package/ts_build/src/agents/tools/askHuman.d.ts +1 -0
  204. package/ts_build/src/agents/tools/askHuman.js +15 -0
  205. package/ts_build/src/agents/tools/askHuman.js.map +1 -0
  206. package/ts_build/src/agents/tools/callPlugin.d.ts +1 -0
  207. package/ts_build/src/agents/tools/callPlugin.js +9 -0
  208. package/ts_build/src/agents/tools/callPlugin.js.map +1 -0
  209. package/ts_build/src/agents/tools/client.d.ts +5 -0
  210. package/ts_build/src/agents/tools/client.js +21 -0
  211. package/ts_build/src/agents/tools/client.js.map +1 -0
  212. package/ts_build/src/agents/tools/embeddingSearch.d.ts +1 -0
  213. package/ts_build/src/agents/tools/embeddingSearch.js +9 -0
  214. package/ts_build/src/agents/tools/embeddingSearch.js.map +1 -0
  215. package/ts_build/src/agents/tools/execCommand.d.ts +1 -0
  216. package/ts_build/src/agents/tools/execCommand.js +25 -0
  217. package/ts_build/src/agents/tools/execCommand.js.map +1 -0
  218. package/ts_build/src/agents/tools/fileSearch.d.ts +1 -0
  219. package/ts_build/src/agents/tools/fileSearch.js +31 -0
  220. package/ts_build/src/agents/tools/fileSearch.js.map +1 -0
  221. package/ts_build/src/agents/tools/finalAnswer.d.ts +1 -0
  222. package/ts_build/src/agents/tools/finalAnswer.js +8 -0
  223. package/ts_build/src/agents/tools/finalAnswer.js.map +1 -0
  224. package/ts_build/src/agents/tools/github/definitions.d.ts +47 -0
  225. package/ts_build/src/agents/tools/github/definitions.js +86 -0
  226. package/ts_build/src/agents/tools/github/definitions.js.map +1 -0
  227. package/ts_build/src/agents/tools/github/index.d.ts +789 -0
  228. package/ts_build/src/agents/tools/github/index.js +56 -0
  229. package/ts_build/src/agents/tools/github/index.js.map +1 -0
  230. package/ts_build/src/agents/tools/googleSearch.d.ts +93 -0
  231. package/ts_build/src/agents/tools/googleSearch.js +117 -0
  232. package/ts_build/src/agents/tools/googleSearch.js.map +1 -0
  233. package/ts_build/src/agents/tools/googleSearchTypes.d.ts +74 -0
  234. package/ts_build/src/agents/tools/googleSearchTypes.js +3 -0
  235. package/ts_build/src/agents/tools/googleSearchTypes.js.map +1 -0
  236. package/ts_build/src/agents/tools/index.d.ts +24 -0
  237. package/ts_build/src/agents/tools/index.js +41 -0
  238. package/ts_build/src/agents/tools/index.js.map +1 -0
  239. package/ts_build/src/agents/tools/language/definitions.d.ts +89 -0
  240. package/ts_build/src/agents/tools/language/definitions.js +95 -0
  241. package/ts_build/src/agents/tools/language/definitions.js.map +1 -0
  242. package/ts_build/src/agents/tools/language/index.d.ts +4 -0
  243. package/ts_build/src/agents/tools/language/index.js +22 -0
  244. package/ts_build/src/agents/tools/language/index.js.map +1 -0
  245. package/ts_build/src/agents/tools/lintFile.d.ts +1 -0
  246. package/ts_build/src/agents/tools/lintFile.js +22 -0
  247. package/ts_build/src/agents/tools/lintFile.js.map +1 -0
  248. package/ts_build/src/agents/tools/list.d.ts +2 -0
  249. package/ts_build/src/agents/tools/list.js +505 -0
  250. package/ts_build/src/agents/tools/list.js.map +1 -0
  251. package/ts_build/src/agents/tools/loadWebpage.d.ts +8 -0
  252. package/ts_build/src/agents/tools/loadWebpage.js +97 -0
  253. package/ts_build/src/agents/tools/loadWebpage.js.map +1 -0
  254. package/ts_build/src/agents/tools/modifyFile.d.ts +2 -0
  255. package/ts_build/src/agents/tools/modifyFile.js +74 -0
  256. package/ts_build/src/agents/tools/modifyFile.js.map +1 -0
  257. package/ts_build/src/agents/tools/patch.d.ts +21 -0
  258. package/ts_build/src/agents/tools/patch.js +443 -0
  259. package/ts_build/src/agents/tools/patch.js.map +1 -0
  260. package/ts_build/src/agents/tools/readBlocks.d.ts +2 -0
  261. package/ts_build/src/agents/tools/readBlocks.js +59 -0
  262. package/ts_build/src/agents/tools/readBlocks.js.map +1 -0
  263. package/ts_build/src/agents/tools/readFile.d.ts +1 -0
  264. package/ts_build/src/agents/tools/readFile.js +46 -0
  265. package/ts_build/src/agents/tools/readFile.js.map +1 -0
  266. package/ts_build/src/agents/tools/scanFile.d.ts +1 -0
  267. package/ts_build/src/agents/tools/scanFile.js +36 -0
  268. package/ts_build/src/agents/tools/scanFile.js.map +1 -0
  269. package/ts_build/src/agents/tools/textSearch.d.ts +1 -0
  270. package/ts_build/src/agents/tools/textSearch.js +22 -0
  271. package/ts_build/src/agents/tools/textSearch.js.map +1 -0
  272. package/ts_build/src/agents/tools/types/fileblock.d.ts +5 -0
  273. package/ts_build/src/agents/tools/types/fileblock.js +3 -0
  274. package/ts_build/src/agents/tools/types/fileblock.js.map +1 -0
  275. package/ts_build/src/agents/tools/visionTool.d.ts +1 -0
  276. package/ts_build/src/agents/tools/visionTool.js +9 -0
  277. package/ts_build/src/agents/tools/visionTool.js.map +1 -0
  278. package/ts_build/src/agents/tools/writeFile.d.ts +2 -0
  279. package/ts_build/src/agents/tools/writeFile.js +61 -0
  280. package/ts_build/src/agents/tools/writeFile.js.map +1 -0
  281. package/ts_build/src/agents/vim/vim.d.ts +14 -0
  282. package/ts_build/src/agents/vim/vim.js +171 -0
  283. package/ts_build/src/agents/vim/vim.js.map +1 -0
  284. package/ts_build/src/ai.d.ts +10 -0
  285. package/ts_build/src/ai.js +102 -0
  286. package/ts_build/src/ai.js.map +1 -0
  287. package/ts_build/src/chat.d.ts +13 -0
  288. package/ts_build/src/chat.js +319 -0
  289. package/ts_build/src/chat.js.map +1 -0
  290. package/ts_build/src/cli.d.ts +2 -0
  291. package/ts_build/src/cli.js +98 -0
  292. package/ts_build/src/cli.js.map +1 -0
  293. package/ts_build/src/clients/anthropic.d.ts +31 -0
  294. package/ts_build/src/clients/anthropic.js +344 -0
  295. package/ts_build/src/clients/anthropic.js.map +1 -0
  296. package/ts_build/src/clients/gemini.d.ts +20 -0
  297. package/ts_build/src/clients/gemini.js +347 -0
  298. package/ts_build/src/clients/gemini.js.map +1 -0
  299. package/ts_build/src/clients/http.d.ts +12 -0
  300. package/ts_build/src/clients/http.js +91 -0
  301. package/ts_build/src/clients/http.js.map +1 -0
  302. package/ts_build/src/clients/index.d.ts +47 -0
  303. package/ts_build/src/clients/index.js +143 -0
  304. package/ts_build/src/clients/index.js.map +1 -0
  305. package/ts_build/src/clients/knowhow.d.ts +10 -0
  306. package/ts_build/src/clients/knowhow.js +24 -0
  307. package/ts_build/src/clients/knowhow.js.map +1 -0
  308. package/ts_build/src/clients/openai.d.ts +20 -0
  309. package/ts_build/src/clients/openai.js +221 -0
  310. package/ts_build/src/clients/openai.js.map +1 -0
  311. package/ts_build/src/clients/types.d.ts +89 -0
  312. package/ts_build/src/clients/types.js +3 -0
  313. package/ts_build/src/clients/types.js.map +1 -0
  314. package/ts_build/src/clients/xai.d.ts +22 -0
  315. package/ts_build/src/clients/xai.js +108 -0
  316. package/ts_build/src/clients/xai.js.map +1 -0
  317. package/ts_build/src/config.d.ts +9 -0
  318. package/ts_build/src/config.js +216 -0
  319. package/ts_build/src/config.js.map +1 -0
  320. package/ts_build/src/conversion.d.ts +7 -0
  321. package/ts_build/src/conversion.js +114 -0
  322. package/ts_build/src/conversion.js.map +1 -0
  323. package/ts_build/src/dataset/diffs/debug-errors.d.ts +1 -0
  324. package/ts_build/src/dataset/diffs/debug-errors.js +28 -0
  325. package/ts_build/src/dataset/diffs/debug-errors.js.map +1 -0
  326. package/ts_build/src/dataset/diffs/debug.d.ts +1 -0
  327. package/ts_build/src/dataset/diffs/debug.js +50 -0
  328. package/ts_build/src/dataset/diffs/debug.js.map +1 -0
  329. package/ts_build/src/dataset/diffs/generate.d.ts +1 -0
  330. package/ts_build/src/dataset/diffs/generate.js +70 -0
  331. package/ts_build/src/dataset/diffs/generate.js.map +1 -0
  332. package/ts_build/src/dataset/diffs/jsonl.d.ts +1 -0
  333. package/ts_build/src/dataset/diffs/jsonl.js +47 -0
  334. package/ts_build/src/dataset/diffs/jsonl.js.map +1 -0
  335. package/ts_build/src/dataset/diffs/test.d.ts +1 -0
  336. package/ts_build/src/dataset/diffs/test.js +114 -0
  337. package/ts_build/src/dataset/diffs/test.js.map +1 -0
  338. package/ts_build/src/embeddings.d.ts +19 -0
  339. package/ts_build/src/embeddings.js +322 -0
  340. package/ts_build/src/embeddings.js.map +1 -0
  341. package/ts_build/src/hashes.d.ts +6 -0
  342. package/ts_build/src/hashes.js +78 -0
  343. package/ts_build/src/hashes.js.map +1 -0
  344. package/ts_build/src/index.d.ts +14 -0
  345. package/ts_build/src/index.js +258 -0
  346. package/ts_build/src/index.js.map +1 -0
  347. package/ts_build/src/login.d.ts +2 -0
  348. package/ts_build/src/login.js +63 -0
  349. package/ts_build/src/login.js.map +1 -0
  350. package/ts_build/src/microphone.d.ts +9 -0
  351. package/ts_build/src/microphone.js +131 -0
  352. package/ts_build/src/microphone.js.map +1 -0
  353. package/ts_build/src/modules/index.d.ts +3 -0
  354. package/ts_build/src/modules/index.js +34 -0
  355. package/ts_build/src/modules/index.js.map +1 -0
  356. package/ts_build/src/modules/types.d.ts +37 -0
  357. package/ts_build/src/modules/types.js +3 -0
  358. package/ts_build/src/modules/types.js.map +1 -0
  359. package/ts_build/src/plugins/asana.d.ts +16 -0
  360. package/ts_build/src/plugins/asana.js +114 -0
  361. package/ts_build/src/plugins/asana.js.map +1 -0
  362. package/ts_build/src/plugins/downloader/downloader.d.ts +12 -0
  363. package/ts_build/src/plugins/downloader/downloader.js +174 -0
  364. package/ts_build/src/plugins/downloader/downloader.js.map +1 -0
  365. package/ts_build/src/plugins/downloader/index.d.ts +3 -0
  366. package/ts_build/src/plugins/downloader/index.js +41 -0
  367. package/ts_build/src/plugins/downloader/index.js.map +1 -0
  368. package/ts_build/src/plugins/downloader/plugin.d.ts +8 -0
  369. package/ts_build/src/plugins/downloader/plugin.js +83 -0
  370. package/ts_build/src/plugins/downloader/plugin.js.map +1 -0
  371. package/ts_build/src/plugins/downloader/types.d.ts +82 -0
  372. package/ts_build/src/plugins/downloader/types.js +79 -0
  373. package/ts_build/src/plugins/downloader/types.js.map +1 -0
  374. package/ts_build/src/plugins/embedding.d.ts +5 -0
  375. package/ts_build/src/plugins/embedding.js +28 -0
  376. package/ts_build/src/plugins/embedding.js.map +1 -0
  377. package/ts_build/src/plugins/figma.d.ts +20 -0
  378. package/ts_build/src/plugins/figma.js +94 -0
  379. package/ts_build/src/plugins/figma.js.map +1 -0
  380. package/ts_build/src/plugins/github.d.ts +1223 -0
  381. package/ts_build/src/plugins/github.js +115 -0
  382. package/ts_build/src/plugins/github.js.map +1 -0
  383. package/ts_build/src/plugins/jira.d.ts +15 -0
  384. package/ts_build/src/plugins/jira.js +94 -0
  385. package/ts_build/src/plugins/jira.js.map +1 -0
  386. package/ts_build/src/plugins/language.d.ts +8 -0
  387. package/ts_build/src/plugins/language.js +69 -0
  388. package/ts_build/src/plugins/language.js.map +1 -0
  389. package/ts_build/src/plugins/linear.d.ts +23 -0
  390. package/ts_build/src/plugins/linear.js +184 -0
  391. package/ts_build/src/plugins/linear.js.map +1 -0
  392. package/ts_build/src/plugins/notion.d.ts +32 -0
  393. package/ts_build/src/plugins/notion.js +131 -0
  394. package/ts_build/src/plugins/notion.js.map +1 -0
  395. package/ts_build/src/plugins/plugins.d.ts +11 -0
  396. package/ts_build/src/plugins/plugins.js +51 -0
  397. package/ts_build/src/plugins/plugins.js.map +1 -0
  398. package/ts_build/src/plugins/types.d.ts +5 -0
  399. package/ts_build/src/plugins/types.js +3 -0
  400. package/ts_build/src/plugins/types.js.map +1 -0
  401. package/ts_build/src/plugins/url.d.ts +8 -0
  402. package/ts_build/src/plugins/url.js +50 -0
  403. package/ts_build/src/plugins/url.js.map +1 -0
  404. package/ts_build/src/plugins/vim.d.ts +11 -0
  405. package/ts_build/src/plugins/vim.js +63 -0
  406. package/ts_build/src/plugins/vim.js.map +1 -0
  407. package/ts_build/src/prompts/BasicCodeDocumenter.d.ts +2 -0
  408. package/ts_build/src/prompts/BasicCodeDocumenter.js +4 -0
  409. package/ts_build/src/prompts/BasicCodeDocumenter.js.map +1 -0
  410. package/ts_build/src/prompts/BasicProjectDocumenter.d.ts +2 -0
  411. package/ts_build/src/prompts/BasicProjectDocumenter.js +4 -0
  412. package/ts_build/src/prompts/BasicProjectDocumenter.js.map +1 -0
  413. package/ts_build/src/prompts/EmbeddingSeachHelper.d.ts +2 -0
  414. package/ts_build/src/prompts/EmbeddingSeachHelper.js +4 -0
  415. package/ts_build/src/prompts/EmbeddingSeachHelper.js.map +1 -0
  416. package/ts_build/src/prompts/index.d.ts +13 -0
  417. package/ts_build/src/prompts/index.js +15 -0
  418. package/ts_build/src/prompts/index.js.map +1 -0
  419. package/ts_build/src/server/index.d.ts +1 -0
  420. package/ts_build/src/server/index.js +17 -0
  421. package/ts_build/src/server/index.js.map +1 -0
  422. package/ts_build/src/services/AgentService.d.ts +14 -0
  423. package/ts_build/src/services/AgentService.js +87 -0
  424. package/ts_build/src/services/AgentService.js.map +1 -0
  425. package/ts_build/src/services/EmbeddingService.d.ts +39 -0
  426. package/ts_build/src/services/EmbeddingService.js +307 -0
  427. package/ts_build/src/services/EmbeddingService.js.map +1 -0
  428. package/ts_build/src/services/EventService.d.ts +9 -0
  429. package/ts_build/src/services/EventService.js +20 -0
  430. package/ts_build/src/services/EventService.js.map +1 -0
  431. package/ts_build/src/services/GitHub.d.ts +11 -0
  432. package/ts_build/src/services/GitHub.js +52 -0
  433. package/ts_build/src/services/GitHub.js.map +1 -0
  434. package/ts_build/src/services/KnowhowClient.d.ts +18 -0
  435. package/ts_build/src/services/KnowhowClient.js +85 -0
  436. package/ts_build/src/services/KnowhowClient.js.map +1 -0
  437. package/ts_build/src/services/Mcp.d.ts +377 -0
  438. package/ts_build/src/services/Mcp.js +221 -0
  439. package/ts_build/src/services/Mcp.js.map +1 -0
  440. package/ts_build/src/services/McpServer.d.ts +19 -0
  441. package/ts_build/src/services/McpServer.js +104 -0
  442. package/ts_build/src/services/McpServer.js.map +1 -0
  443. package/ts_build/src/services/McpWebsocketTransport.d.ts +13 -0
  444. package/ts_build/src/services/McpWebsocketTransport.js +59 -0
  445. package/ts_build/src/services/McpWebsocketTransport.js.map +1 -0
  446. package/ts_build/src/services/S3.d.ts +9 -0
  447. package/ts_build/src/services/S3.js +116 -0
  448. package/ts_build/src/services/S3.js.map +1 -0
  449. package/ts_build/src/services/Tools.d.ts +19 -0
  450. package/ts_build/src/services/Tools.js +51 -0
  451. package/ts_build/src/services/Tools.js.map +1 -0
  452. package/ts_build/src/services/flags.d.ts +13 -0
  453. package/ts_build/src/services/flags.js +48 -0
  454. package/ts_build/src/services/flags.js.map +1 -0
  455. package/ts_build/src/services/index.d.ts +8 -0
  456. package/ts_build/src/services/index.js +38 -0
  457. package/ts_build/src/services/index.js.map +1 -0
  458. package/ts_build/src/terminal.d.ts +1 -0
  459. package/ts_build/src/terminal.js +35 -0
  460. package/ts_build/src/terminal.js.map +1 -0
  461. package/ts_build/src/types.d.ts +181 -0
  462. package/ts_build/src/types.js +94 -0
  463. package/ts_build/src/types.js.map +1 -0
  464. package/ts_build/src/utils/index.d.ts +24 -0
  465. package/ts_build/src/utils/index.js +116 -0
  466. package/ts_build/src/utils/index.js.map +1 -0
  467. package/ts_build/src/worker.d.ts +1 -0
  468. package/ts_build/src/worker.js +68 -0
  469. package/ts_build/src/worker.js.map +1 -0
  470. package/ts_build/tests/integration/figma.test.d.ts +1 -0
  471. package/ts_build/tests/integration/figma.test.js +47 -0
  472. package/ts_build/tests/integration/figma.test.js.map +1 -0
  473. package/ts_build/tests/integration/fileblocks/readwrite.test.d.ts +1 -0
  474. package/ts_build/tests/integration/fileblocks/readwrite.test.js +95 -0
  475. package/ts_build/tests/integration/fileblocks/readwrite.test.js.map +1 -0
  476. package/ts_build/tests/integration/patching.test.d.ts +1 -0
  477. package/ts_build/tests/integration/patching.test.js +117 -0
  478. package/ts_build/tests/integration/patching.test.js.map +1 -0
  479. package/ts_build/tests/languagePlugin.test.d.ts +1 -0
  480. package/ts_build/tests/languagePlugin.test.js +78 -0
  481. package/ts_build/tests/languagePlugin.test.js.map +1 -0
  482. package/ts_build/tests/patching/corrupted.test.d.ts +1 -0
  483. package/ts_build/tests/patching/corrupted.test.js +53 -0
  484. package/ts_build/tests/patching/corrupted.test.js.map +1 -0
  485. package/ts_build/tests/patching/imports.test.d.ts +1 -0
  486. package/ts_build/tests/patching/imports.test.js +61 -0
  487. package/ts_build/tests/patching/imports.test.js.map +1 -0
  488. package/ts_build/tests/test.spec.d.ts +1 -0
  489. package/ts_build/tests/test.spec.js +101 -0
  490. package/ts_build/tests/test.spec.js.map +1 -0
  491. package/tsconfig.json +31 -0
  492. package/tslint.json +11 -0
@@ -0,0 +1,26 @@
1
+ export const BASE_PROMPT = `
2
+ #Knowhow Codebase Agent.
3
+ You use the tools to read and write code, to help the developer implement features faster.
4
+
5
+ # Completing your work
6
+
7
+ You always call finalAnswer once you have finished implementing or answering what is requested.
8
+ As an agent you will receive multiple rounds of input until you call finalAnswer.
9
+ You are not able to request feedback from the user, so proceed with your plans and the developer will contact you afterwards if they need more help.
10
+
11
+ ## Modification Guidelines
12
+
13
+ After modifying files, you will read them to ensure they look correct before calling finalAnswer.
14
+ You always check your modifications for syntax errors or bugs.
15
+ You always use writeFileChunk for small files, and for larger files you use the patchFile tool, if available, to make the smallest modifications required to files, rather than outputting the entire file.
16
+ You think step by step about the blocks of code you're modifying.
17
+ You may use the execCommand tool to navigate the filesystem and to create new folders if needed.
18
+ You may use the execCommand tool to use git to view which changes have been made so far via git diff and git status.
19
+
20
+ # PLUGINS REMINDER:
21
+
22
+ Plugins are used to automatically expand user input with more context.
23
+ The additional context could be from embeddings, files, pull requests, tickets etc.
24
+ Do not assume the plugin information contains all the information you require to accomplish a task.
25
+ Be sure to consider tools that you may use to supplement what the plugins initially provided.
26
+ `;
@@ -0,0 +1,23 @@
1
+ import { BaseAgent } from "../base/base";
2
+ import { Message } from "../../clients/types";
3
+ import { Assistant, Config } from "../../types";
4
+
5
+ export class ConfigAgent extends BaseAgent {
6
+ name: string;
7
+ description: string;
8
+
9
+ constructor(private config: Assistant) {
10
+ super();
11
+ this.name = config.name;
12
+ this.setModelPreferences([
13
+ { model: config.model, provider: config.provider },
14
+ ]);
15
+ }
16
+
17
+ async getInitialMessages(userInput: string) {
18
+ return [
19
+ { role: "system", content: this.config.instructions },
20
+ { role: "user", content: userInput },
21
+ ] as Message[];
22
+ }
23
+ }
@@ -0,0 +1,69 @@
1
+ import { Models } from "../../ai";
2
+ import { Message } from "../../clients/types";
3
+ import { BaseAgent } from "../base/base";
4
+ import { BASE_PROMPT } from "../base/prompt";
5
+ export class DeveloperAgent extends BaseAgent {
6
+ name = "Developer";
7
+ description = `This agent manages requests and uses tools and delegation via agentCall to accomplish things`;
8
+
9
+ constructor() {
10
+ super();
11
+ this.disableTool("patchFile");
12
+ this.disableTool("openFileInVim");
13
+ this.disableTool("sendVimInput");
14
+ this.disableTool("saveVimFile");
15
+
16
+ this.setModelPreferences([
17
+ {
18
+ model: Models.google.Gemini_20_Flash,
19
+ provider: "google",
20
+ },
21
+ ]);
22
+ }
23
+
24
+ async getInitialMessages(userInput: string) {
25
+ return [
26
+ {
27
+ role: "system",
28
+ content: `
29
+ ${BASE_PROMPT}
30
+
31
+ Specialization: Developer, ${this.description}
32
+
33
+ # Description
34
+ You are a helpful developer assistant that is capable of using tools to assist the user.
35
+ You delegate some tasks to specialized agents. If a request doesn't require the use of a specialized agent, you can handle it yourself.
36
+
37
+ # How to call other agents
38
+ You can use the agentCall tool to call other agents.
39
+ Do not try to use VIM/ or Patching tools directly. If you must write to a file yourself use writeFileChunk
40
+
41
+ # Which Agent to Use:
42
+ Researcher -
43
+ - For answering questions about the codebase
44
+ - For providing context to modifications
45
+ - For figuring out which files to modify
46
+ - General Questions about codebase or file structure
47
+
48
+ Patcher
49
+ - For making modifications to files / code
50
+ - Great for big files
51
+
52
+ # Thought process
53
+ 1. Is the user asking you a question about the codebase or files? Foreward the question to the Researcher.
54
+ 2. Do you need to make changes to files?
55
+ 2.a Do we have enough information to know exactly what to modify? If not, ask the Researcher.
56
+ 2.b If we know what to modify, ask Patcher to make the changes with all the context required.
57
+ 3. If the agent you call has declared it has completed a task, you may need to check it's modifications to see if there's some follow up work required.
58
+ 4. If the user is asking for a general task, like webbrowsing or terminal commands, or general questions you may accomplish this yourself.
59
+ `,
60
+ },
61
+ {
62
+ role: "user",
63
+ content: userInput,
64
+ },
65
+ ] as Message[];
66
+ }
67
+ }
68
+
69
+ export const Developer = new DeveloperAgent();
@@ -0,0 +1,8 @@
1
+ export * from "./base/base";
2
+ export * from "./configurable/ConfigAgent";
3
+ export * from "./developer/developer";
4
+ export * from "./patcher/patcher";
5
+ export * from "./researcher/researcher";
6
+
7
+ export * as tools from "./tools";
8
+ export { includedTools } from "./tools/list";
@@ -0,0 +1,11 @@
1
+ import { Message } from "../clients/types";
2
+
3
+ export interface IAgent {
4
+ name: string;
5
+ description: string;
6
+ call: (userInput: string, messages?: Message[]) => Promise<string>;
7
+ getModel(): string;
8
+ getProvider(): string;
9
+ setModel(model: string): void;
10
+ setProvider(provider: string): void;
11
+ }
@@ -0,0 +1,27 @@
1
+ # Agent Goals
2
+ This agent should receive a user request, collect relevant files that should be read, and then research the request in context of the files, and then output a plan, of which files need to be modified.
3
+
4
+ The agent should also plan to test it's changes. The testing phase can be accomplished through writing automated tests, executing terminal commands to verify things worked etc.
5
+
6
+ # Simple Example Usage
7
+ Codebase Agent: Write a plugin that takes in a user prompt, and then determines a good thing to google would be for that prompt, and then execute the google search returning the top 5 results.
8
+
9
+ The agent should analzye the folder structure via RAG, perhaps multiple shots to find the plugins hiearchy.
10
+
11
+ Once the examples are found the agent should contstruct a development plan for how the plugin should wbe written. Then the agent should use some tools to read/write the files.
12
+
13
+ Search Files - Does a RAG search to try and find relevant files to the AI's goal.
14
+
15
+ Read File - Opens a file and provides the full file as context to the LLM. If the file is too long, then it will be truncated at some point.
16
+
17
+ Scan File - Opens a file, and reads from line A to line B, returning the contents to the LLM, also tells the LLM how many lines there are
18
+
19
+ Write File - Writes the full contents of a file
20
+
21
+ Patch File - The LLM outputs a patchfile which can be applied. This reduces output tokens
22
+
23
+ Exec Command - The LLM should be able to call the cli to test it's changes, perhaps by running npm test (filename), to verify the tests it wrote pass
24
+
25
+
26
+ # Implementation
27
+ Implement the tools using the fs node module and the patch file tool should use the diff node module to apply the patches. Some configuration may be used to help the Agent know how to test it's work. For instance the agent could read the package.json for the test commands, or we could specify how changes can be tested in the knowhow config, since many projects have different testing patterns.
@@ -0,0 +1,110 @@
1
+ import { Message } from "../../clients/types";
2
+ import { BaseAgent } from "../base/base";
3
+ import { BASE_PROMPT } from "../base/prompt";
4
+ import { Models } from "../../ai";
5
+
6
+ const example = `
7
+ Index: ./src/agents/base/base.ts
8
+ ===================================================================
9
+ --- ./src/agents/base/base.ts
10
+ +++ ./src/agents/base/base.ts
11
+ @@ -186,9 +186,14 @@
12
+ startIndex: number,
13
+ endIndex: number
14
+ ) {
15
+ const toCompress = messages.slice(startIndex, endIndex);
16
+ - const toCompressPrompt = \`Summarize what this agent was tasked with, what has been tried so far, and what we're about to do next. This summary will become the agent's only memory of the past, all other messages will be dropped: \n\n\${JSON.stringify(
17
+ + const toCompressPrompt = \`Summarize:
18
+ + 1. Initial Request - what this agent was tasked with.
19
+ + 2. Progress - what has been tried so far,
20
+ + 3. Next Steps - what we're about to do next to continue the user's original request.
21
+ +
22
+ + This summary will become the agent's only memory of the past, all other messages will be dropped: \n\n\${JSON.stringify(
23
+ toCompress
24
+ )}\`;
25
+
26
+ const model = this.getModel();
27
+ @@ -202,9 +207,12 @@
28
+ },
29
+ ],
30
+ });
31
+
32
+ + const systemMesasges = toCompress.filter((m) => m.role === "system");
33
+ +
34
+ const newMessages = [
35
+ + ...systemMesasges,
36
+ ...response.choices.map((c) => c.message),
37
+ ...messages.slice(endIndex),
38
+ ];
39
+
40
+ `;
41
+
42
+ const systemReminder = `# Patch Tool Rules:
43
+ Here's an example of a correctly formatted patch:
44
+ ${example}
45
+
46
+ Be sure to preserve sytanx, delete the correct lines of code, and insert new lines of code in the correct locations.
47
+
48
+ The user's patch tool needs CORRECT patches that apply cleanly against the current contents of the file!
49
+ Think carefully and make sure you include and mark all lines that need to be removed or changed as \`-\` lines.
50
+ Make sure you mark all new or modified lines with \`+\`.
51
+ Don't leave out any lines or the diff patch won't apply correctly.
52
+
53
+ Indentation matters in the diffs!
54
+
55
+ Start a new hunk for each section of the file that needs changes.
56
+
57
+ Only output hunks that specify changes with \`+\` or \`-\` lines.
58
+ Skip any hunks that are entirely unchanging \` \` lines.
59
+
60
+ Output hunks in whatever order makes the most sense.
61
+ Hunks don't need to be in any particular order.
62
+
63
+ Hunks should have a context of 3 lines before and after the change, which match exactly from the source.
64
+
65
+ When editing a function, method, loop, etc use a hunk to replace the *entire* code block.
66
+ Delete the entire existing version with \`-\` lines and then add a new, updated version with \`+\` lines.
67
+ This will help you generate correct code and correct diffs.
68
+
69
+ To move code within a file, use 2 hunks: 1 to delete it from its current location, 1 to insert it in the new location.
70
+
71
+ You should attempt to apply one hunk at a time, as an error in one hunk can cause the entire patch to fail to apply.
72
+ `;
73
+
74
+ export class PatchingAgent extends BaseAgent {
75
+ name = "Patcher";
76
+ description = `This agent is prepared to work on the codebase by leveraging patches`;
77
+
78
+ constructor() {
79
+ super();
80
+ this.disableTool("sendVimInput");
81
+ this.disableTool("openFileInVim");
82
+
83
+ this.setModelPreferences([
84
+ { model: Models.anthropic.Sonnet4, provider: "anthropic" },
85
+ {
86
+ model: Models.openai.GPT_41,
87
+ provider: "openai",
88
+ },
89
+ ]);
90
+ }
91
+
92
+ async getInitialMessages(userInput: string) {
93
+ return [
94
+ {
95
+ role: "system",
96
+ content: `${BASE_PROMPT}
97
+
98
+ ${systemReminder}
99
+
100
+ Specialization: Patcher Agent, ${this.description}
101
+ IF you fail twice to patch a file, you may switch using writeFileChunk to rewrite the whole file.
102
+ `,
103
+ },
104
+ // { role: "user", content: systemReminder },
105
+ { role: "user", content: userInput },
106
+ ] as Message[];
107
+ }
108
+ }
109
+
110
+ export const Patcher = new PatchingAgent();
@@ -0,0 +1,109 @@
1
+ import { Models } from "../../ai";
2
+ import { Message } from "../../clients/types";
3
+ import { BaseAgent } from "../base/base";
4
+
5
+ export class ResearcherAgent extends BaseAgent {
6
+ name = "Researcher";
7
+ description = `This agent is prepared to research a request using the tools available to them. Great for finding answers to questions about the codebase`;
8
+
9
+ constructor() {
10
+ super();
11
+ this.setModel(Models.google.Gemini_20_Flash);
12
+ this.setProvider("google");
13
+
14
+ this.disableTool("patchFile");
15
+ }
16
+
17
+ async getInitialMessages(userInput: string) {
18
+ return [
19
+ {
20
+ role: "system",
21
+ content: `
22
+ # Researcher Agent
23
+
24
+ You are a sophisticated research agent designed to investigate and provide comprehensive context for user requests. Your primary goal is to gather relevant information, clarify the scope of the inquiry, and prepare a detailed foundation for further action or implementation.
25
+
26
+ ## Core Responsibilities:
27
+
28
+ 1. Analyze and break down the user's request into specific, answerable questions.
29
+ 2. Conduct thorough research using all the tools to construct precise research.
30
+ 3. Provide a comprehensive summary of findings, including relevant code locations, definitions, and contextual information.
31
+
32
+ ## Research Process:
33
+
34
+ Follow these steps for each research task:
35
+
36
+ 1. **Term and Concept Identification:**
37
+ - Identify key terms and concepts in the request.
38
+ - Use available tools to find and provide clear definitions for unfamiliar terms.
39
+ - This step is crucial for understanding the full scope of the request.
40
+
41
+ 2. **Request Breakdown:**
42
+ - Break down the request into specific, answerable questions.
43
+ - Prioritize questions that will lead to a comprehensive understanding of the task.
44
+
45
+ 3. **Information Gathering:**
46
+ - For each question, use appropriate tools to find relevant information.
47
+ - Prioritize finding:
48
+ - Main implementation files
49
+ - Related models or data structures
50
+ - Associated services or utilities
51
+ - Relevant configuration files
52
+ - Provide file paths and brief descriptions of their roles in the system.
53
+
54
+ 4. **Summarization:**
55
+ - Summarize findings for each question.
56
+ - Cite specific file paths or code snippets where applicable.
57
+
58
+ 5. **Synthesis:**
59
+ - Synthesize the information to provide a comprehensive overview of the request's scope and implications.
60
+
61
+ ## Scope Clarification:
62
+
63
+ After initial research, clearly outline:
64
+ - The apparent scope of the request based on findings
65
+ - Any ambiguities or areas needing further clarification
66
+ - Potential implications or dependencies not explicitly mentioned in the original request
67
+
68
+ ## Tool Usage and Transparency:
69
+
70
+ - For each research step, briefly mention which tools you're using and why.
71
+
72
+ ## Iterative Refinement:
73
+
74
+ - After initial research, if the scope or requirements remain unclear, propose follow-up questions or areas for further investigation.
75
+ - Be prepared to iterate on your research based on additional input or clarifications.
76
+
77
+ ## Final Answer Format:
78
+
79
+ When calling finalAnswer, provide a structured summary including:
80
+ 1. Initial Request: Restate the original task or question.
81
+ 2. Key Terms and Definitions: List important terms and their definitions.
82
+ 3. Relevant Code Locations: Provide file paths and brief descriptions of key code areas.
83
+ 4. Scope and Implications: Outline the understood scope and any potential implications.
84
+ 5. Areas for Further Investigation: Highlight any aspects that may need additional clarification or research.
85
+
86
+ ## Important Guidelines:
87
+
88
+ - Use all available search tools to ensure a robust set of references.
89
+ - Do not perform modifications; focus solely on research and information gathering.
90
+ - Aim for thoroughness and accuracy in your findings.
91
+ - Call finalAnswer after completing your research, but do not exceed 5 rounds of research without calling finalAnswer.
92
+ - You cannot request feedback from the user during your research process.
93
+
94
+ Remember, your role is to provide a comprehensive foundation of information to facilitate further action or implementation by other agents or developers.
95
+ Expect to use the tools, read files, etc. to construct a precise detailed analysis.
96
+ `,
97
+ },
98
+
99
+ {
100
+ role: "user",
101
+ content: `The user has asked: ${userInput}
102
+ Do not do more than 5 rounds of research without calling finalAnswer.
103
+ `,
104
+ },
105
+ ] as Message[];
106
+ }
107
+ }
108
+
109
+ export const Researcher = new ResearcherAgent();
@@ -0,0 +1,21 @@
1
+ // Add new internal tools to the existing suite
2
+ export function addInternalTools(fns: {
3
+ [fnName: string]: (...args: any) => any;
4
+ }) {
5
+ const callParallel = (
6
+ fnsToCall: { recipient_name: string; parameters: any }[]
7
+ ) => {
8
+ const promises = fnsToCall.map((param) => {
9
+ const name = param.recipient_name.split(".").pop();
10
+ const fn = fns[name];
11
+ const args = Object.values(param.parameters);
12
+ return fn(...args);
13
+ });
14
+
15
+ return Promise.all(promises);
16
+ };
17
+
18
+ fns["multi_tool_use.parallel"] = callParallel;
19
+
20
+ return fns;
21
+ }
@@ -0,0 +1,18 @@
1
+ import { Agents } from "../../services/AgentService";
2
+ import { Events } from "../../services/EventService";
3
+ import { Plugins } from "../../plugins/plugins";
4
+ import { getConfig } from "../../config";
5
+
6
+ export async function agentCall(agentName: string, userInput: string) {
7
+ return new Promise(async (resolve, reject) => {
8
+ const config = await getConfig();
9
+ const pluginText = await Plugins.callMany(config.plugins, userInput);
10
+ const fullPrompt = `${userInput} \n ${pluginText}`;
11
+ Events.emit("agents:call", {
12
+ name: agentName,
13
+ query: fullPrompt,
14
+ resolve,
15
+ reject,
16
+ });
17
+ });
18
+ }
@@ -0,0 +1,36 @@
1
+ import { Clients } from "../../clients";
2
+ import {
3
+ GenericClient,
4
+ CompletionOptions,
5
+ CompletionResponse,
6
+ EmbeddingOptions,
7
+ EmbeddingResponse,
8
+ } from "../../clients/types";
9
+
10
+ export function createAiCompletion(
11
+ provider: string,
12
+ options: CompletionOptions
13
+ ): Promise<CompletionResponse> {
14
+ return Clients.createCompletion(provider, options);
15
+ }
16
+
17
+ export function createEmbedding(
18
+ provider: string,
19
+ options: EmbeddingOptions
20
+ ): Promise<EmbeddingResponse> {
21
+ return Clients.createEmbedding(provider, options);
22
+ }
23
+
24
+ export async function listModelsForProvider(
25
+ provider: string
26
+ ): Promise<string[]> {
27
+ return Clients.getRegisteredModels(provider);
28
+ }
29
+
30
+ export async function listAllModels(): Promise<Record<string, string[]>> {
31
+ return Clients.listAllModels();
32
+ }
33
+
34
+ export async function listAllProviders(): Promise<string[]> {
35
+ return Clients.listAllProviders();
36
+ }
@@ -0,0 +1,199 @@
1
+ export const definitions = [
2
+ {
3
+ type: "function",
4
+ function: {
5
+ name: "createTask",
6
+ description: "Create a new task in Asana",
7
+ parameters: {
8
+ type: "object",
9
+ positional: true,
10
+ properties: {
11
+ projectId: {
12
+ type: "string",
13
+ description: "The ID of the project where the task will be created",
14
+ },
15
+ taskName: {
16
+ type: "string",
17
+ description: "The name of the task to be created",
18
+ },
19
+ taskNotes: {
20
+ type: "string",
21
+ description: "The notes or description of the task",
22
+ },
23
+ },
24
+ required: ["projectId", "taskName", "taskNotes"],
25
+ },
26
+ returns: {
27
+ type: "object",
28
+ description: "The created task object",
29
+ },
30
+ },
31
+ },
32
+ {
33
+ type: "function",
34
+ function: {
35
+ name: "updateTask",
36
+ description: "Update an existing task in Asana",
37
+ parameters: {
38
+ type: "object",
39
+ positional: true,
40
+ properties: {
41
+ taskId: {
42
+ type: "string",
43
+ description: "The ID of the task to be updated",
44
+ },
45
+ updates: {
46
+ type: "object",
47
+ description:
48
+ "An object containing the updates to be applied to the task",
49
+ },
50
+ },
51
+ required: ["taskId", "updates"],
52
+ },
53
+ returns: {
54
+ type: "object",
55
+ description: "The updated task object",
56
+ },
57
+ },
58
+ },
59
+ {
60
+ type: "function",
61
+ function: {
62
+ name: "searchTasks",
63
+ description: "Search for tasks in Asana based on a search term",
64
+ parameters: {
65
+ type: "object",
66
+ positional: true,
67
+ properties: {
68
+ searchTerm: {
69
+ type: "string",
70
+ description: "The term to search for in task names and notes",
71
+ },
72
+ },
73
+ required: ["searchTerm"],
74
+ },
75
+ returns: {
76
+ type: "array",
77
+ description: "An array of tasks that match the search term",
78
+ },
79
+ },
80
+ },
81
+ {
82
+ type: "function",
83
+ function: {
84
+ name: "listProjects",
85
+ description: "List all projects in Asana",
86
+ parameters: {
87
+ type: "object",
88
+ positional: true,
89
+ properties: {},
90
+ required: [],
91
+ },
92
+ returns: {
93
+ type: "array",
94
+ description: "An array of project objects",
95
+ },
96
+ },
97
+ },
98
+
99
+ {
100
+ type: "function",
101
+ function: {
102
+ name: "findTask",
103
+ description: "Find a specific task in Asana by its ID",
104
+ parameters: {
105
+ type: "object",
106
+ positional: true,
107
+ properties: {
108
+ taskId: {
109
+ type: "string",
110
+ description: "The ID of the task to be found",
111
+ },
112
+ },
113
+ required: ["taskId"],
114
+ },
115
+ returns: {
116
+ type: "object",
117
+ description: "The task object that matches the given ID",
118
+ },
119
+ },
120
+ },
121
+ {
122
+ type: "function",
123
+ function: {
124
+ name: "myTasks",
125
+ description:
126
+ "Retrieve tasks assigned to the current user in Asana, only shows the uncompleted ones",
127
+ parameters: {
128
+ type: "object",
129
+ positional: true,
130
+ properties: {
131
+ project: {
132
+ type: "string",
133
+ description: "The ID of the project to filter tasks by (optional)",
134
+ },
135
+ },
136
+ required: [],
137
+ },
138
+ returns: {
139
+ type: "array",
140
+ description: "An array of tasks assigned to the current user",
141
+ },
142
+ },
143
+ },
144
+ {
145
+ type: "function",
146
+ function: {
147
+ name: "getSubtasks",
148
+ description: "Retrieve all subtasks for a given Asana task.",
149
+ parameters: {
150
+ type: "object",
151
+ positional: true,
152
+ properties: {
153
+ taskId: {
154
+ type: "string",
155
+ description:
156
+ "The ID of the parent task for which to retrieve subtasks.",
157
+ },
158
+ },
159
+ required: ["taskId"],
160
+ },
161
+ returns: {
162
+ type: "array",
163
+ description:
164
+ "An array of subtasks associated with the specified parent task.",
165
+ },
166
+ },
167
+ },
168
+ {
169
+ type: "function",
170
+ function: {
171
+ name: "createSubtask",
172
+ description: "Create a new subtask under a given Asana task.",
173
+ parameters: {
174
+ type: "object",
175
+ positional: true,
176
+ properties: {
177
+ taskId: {
178
+ type: "string",
179
+ description:
180
+ "The ID of the parent task under which the subtask will be created.",
181
+ },
182
+ taskName: {
183
+ type: "string",
184
+ description: "The name of the subtask to be created.",
185
+ },
186
+ taskNotes: {
187
+ type: "string",
188
+ description: "The optional notes or description of the subtask.",
189
+ },
190
+ },
191
+ required: ["taskId", "taskName"],
192
+ },
193
+ returns: {
194
+ type: "object",
195
+ description: "The created subtask object.",
196
+ },
197
+ },
198
+ },
199
+ ];