@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,97 @@
1
+ import { Plugins } from "../../../plugins/plugins";
2
+ export const definitions = [
3
+ {
4
+ type: "function",
5
+ function: {
6
+ name: "addLanguageTerm",
7
+ description:
8
+ "Add a new language term to the language config, which can help load context for given terms in the future.",
9
+ parameters: {
10
+ type: "object",
11
+ positional: true,
12
+ properties: {
13
+ term: {
14
+ type: "string",
15
+ description:
16
+ "The trigger word(s) that should load the given context",
17
+ },
18
+ sources: {
19
+ type: "array",
20
+ items: {
21
+ type: "object",
22
+ properties: {
23
+ kind: {
24
+ type: "string",
25
+ description: `The type of datasource, options are "file", "url", "text" or the name of a plugin: ${Plugins.listPlugins()}
26
+ For files you must use the full relative path. For plugins you must use the name of the plugin associated with the data.
27
+ Always use a plugin as the kind, if a plugin name is in the url.
28
+ `,
29
+ },
30
+ data: {
31
+ type: "array",
32
+ items: {
33
+ type: "string",
34
+ },
35
+ description:
36
+ "An array of strings that will be loaded when a language term is used in a user prompt. If the kind was a plugin, then we'll call the plugin with each string as input. Strings of the same kind should be grouped together in one array of data.",
37
+ },
38
+ },
39
+ required: ["kind", "data"],
40
+ },
41
+ description: "The sources to be loaded for the given term",
42
+ },
43
+ },
44
+ required: ["term"],
45
+ },
46
+ returns: {
47
+ type: "string",
48
+ description: "The response from the human.",
49
+ },
50
+ },
51
+ },
52
+ {
53
+ type: "function",
54
+ function: {
55
+ name: "getAllLanguageTerms",
56
+ description:
57
+ "Retrieves all language terms from the language configuration.",
58
+ parameters: {
59
+ type: "object",
60
+ positional: true,
61
+ properties: {},
62
+ required: [],
63
+ },
64
+ returns: {
65
+ type: "array",
66
+ items: {
67
+ type: "string",
68
+ },
69
+ description: "An array of all language terms in the configuration.",
70
+ },
71
+ },
72
+ },
73
+ {
74
+ type: "function",
75
+ function: {
76
+ name: "lookupLanguageTerm",
77
+ description:
78
+ "Looks up a specific language term and calls the language plugin with it.",
79
+ parameters: {
80
+ type: "object",
81
+ positional: true,
82
+ properties: {
83
+ term: {
84
+ type: "string",
85
+ description: "The language term to look up",
86
+ },
87
+ },
88
+ required: ["term"],
89
+ },
90
+ returns: {
91
+ type: "any",
92
+ description:
93
+ "The result of calling the language plugin with the specified term.",
94
+ },
95
+ },
96
+ },
97
+ ];
@@ -0,0 +1,19 @@
1
+ import { Plugins } from "../../../plugins/plugins";
2
+ import { getLanguageConfig, updateLanguageConfig } from "../../../config";
3
+ import { IDatasource } from "../../../types";
4
+
5
+ export async function addLanguageTerm(term: string, sources: IDatasource[]) {
6
+ const language = await getLanguageConfig();
7
+ language[term] = { sources };
8
+ await updateLanguageConfig(language);
9
+ }
10
+
11
+ export async function getAllLanguageTerms() {
12
+ const language = await getLanguageConfig();
13
+ return Object.keys(language);
14
+ }
15
+
16
+ export async function lookupLanguageTerm(term: string) {
17
+ const language = await getLanguageConfig();
18
+ return Plugins.call("language", term);
19
+ }
@@ -0,0 +1,17 @@
1
+ import { getConfig } from "../../config";
2
+ import { execCommand } from ".";
3
+ export async function lintFile(filePath: string) {
4
+ const config = await getConfig();
5
+ const extension = filePath.split(".").pop();
6
+ let lintResult = "";
7
+ if (config.lintCommands && config.lintCommands[extension]) {
8
+ let lintCommand = config.lintCommands[extension];
9
+ if (lintCommand.includes("$1")) {
10
+ lintCommand = lintCommand.replace("$1", filePath);
11
+ }
12
+ lintResult = await execCommand(`${lintCommand}`);
13
+ console.log("Lint Result:", lintResult);
14
+ return lintResult;
15
+ }
16
+ return "";
17
+ }
@@ -0,0 +1,514 @@
1
+ import { Tool } from "../../clients/types";
2
+ import { ChatCompletionTool } from "openai/resources/chat";
3
+ import { Plugins } from "../../plugins/plugins";
4
+
5
+ const pluginNames = Plugins.listPlugins().join(", ");
6
+ import * as github from "./github/definitions";
7
+ import * as asana from "./asana/definitions";
8
+ import * as language from "./language/definitions";
9
+ import { googleSearchDefinition } from './googleSearch';
10
+ import { Agents } from "../../services/AgentService";
11
+
12
+ export const includedTools = [
13
+ {
14
+ type: "function",
15
+ function: {
16
+ name: "embeddingSearch",
17
+ description:
18
+ "Fuzzy search with cosine similarity for files related to the user's goal. Uses embeddings. Use textSearch for exact matches. Use fileSearch for file paths.",
19
+ parameters: {
20
+ type: "object",
21
+ positional: true,
22
+ properties: {
23
+ keyword: {
24
+ type: "string",
25
+ description:
26
+ "The code, keyword or phrase to search for via embedding search",
27
+ },
28
+ },
29
+ required: ["keyword"],
30
+ },
31
+ returns: {
32
+ type: "string",
33
+ description: "A string containing a JSON of all the matched files",
34
+ },
35
+ },
36
+ },
37
+ {
38
+ type: "function",
39
+ function: {
40
+ name: "execCommand",
41
+ description:
42
+ "Execute a command in the system's command line interface. Use this to run tests and things in the terminal",
43
+ parameters: {
44
+ type: "object",
45
+ positional: true,
46
+ properties: {
47
+ command: {
48
+ type: "string",
49
+ description: "The command to execute",
50
+ },
51
+ },
52
+ required: ["command"],
53
+ },
54
+ returns: {
55
+ type: "object",
56
+ properties: {
57
+ stdout: {
58
+ type: "string",
59
+ description: "The standard output of the executed command",
60
+ },
61
+ stderr: {
62
+ type: "string",
63
+ description: "The standard error output of the executed command",
64
+ },
65
+ },
66
+ description:
67
+ "The result of the command execution, including any output and errors",
68
+ },
69
+ },
70
+ },
71
+ {
72
+ type: "function",
73
+ function: {
74
+ name: "finalAnswer",
75
+ description:
76
+ "Finalize the AI's task and return the answer to the user. You are required to call this at the end to send the response to the user",
77
+ parameters: {
78
+ type: "object",
79
+ positional: true,
80
+ properties: {
81
+ answer: {
82
+ type: "string",
83
+ description:
84
+ "The AI's answer to be displayed to the user as the full explanation of the task and what was done",
85
+ },
86
+ },
87
+ required: ["answer"],
88
+ },
89
+ returns: {
90
+ type: "string",
91
+ description:
92
+ "The final answer string that will be displayed to the user",
93
+ },
94
+ },
95
+ },
96
+ {
97
+ type: "function",
98
+ function: {
99
+ name: "callPlugin",
100
+ description: `Call a specified plugin with given input. Plugins provide additional context from supported URLs or words. This is a read-only operation. Currently available plugins: ${pluginNames}`,
101
+ parameters: {
102
+ type: "object",
103
+ positional: true,
104
+ properties: {
105
+ pluginName: {
106
+ type: "string",
107
+ description: "The name of the plugin to be called",
108
+ },
109
+ userInput: {
110
+ type: "string",
111
+ description: "The input to pass to the plugin",
112
+ },
113
+ },
114
+ required: ["pluginName", "userInput"],
115
+ },
116
+ returns: {
117
+ type: "string",
118
+ description: "The result of the plugin call",
119
+ },
120
+ },
121
+ },
122
+ {
123
+ type: "function",
124
+ function: {
125
+ name: "visionTool",
126
+ description: "Ask the vision API a question about an image url",
127
+ parameters: {
128
+ type: "object",
129
+ positional: true,
130
+ properties: {
131
+ imageUrl: {
132
+ type: "string",
133
+ description: "The url of the image to load",
134
+ },
135
+ question: {
136
+ type: "string",
137
+ description: "The prompt related to the image",
138
+ },
139
+ },
140
+ required: ["imageUrl", "question"],
141
+ },
142
+ returns: {
143
+ type: "string",
144
+ description:
145
+ "The results of the vision API call as an answer to the prompt question",
146
+ },
147
+ },
148
+ },
149
+ {
150
+ type: "function",
151
+ function: {
152
+ name: "readFile",
153
+ description:
154
+ "Read the contents of a file and return them as an array of blocks",
155
+ parameters: {
156
+ type: "object",
157
+ positional: true,
158
+ properties: {
159
+ filePath: {
160
+ type: "string",
161
+ description: "The path to the file to be read",
162
+ },
163
+ },
164
+ required: ["filePath"],
165
+ },
166
+ returns: {
167
+ type: "string",
168
+ description: "The file contents in diff format",
169
+ },
170
+ },
171
+ },
172
+ {
173
+ type: "function",
174
+ function: {
175
+ name: "readBlocks",
176
+ description:
177
+ "Read specific blocks from a file based on block numbers. Blocks are numbered blocks of text, containing a few lines of content",
178
+ parameters: {
179
+ type: "object",
180
+ positional: true,
181
+ properties: {
182
+ filePath: {
183
+ type: "string",
184
+ description:
185
+ "The path to the file from which blocks are to be read",
186
+ },
187
+ blockNumbers: {
188
+ type: "array",
189
+ items: {
190
+ type: "number",
191
+ },
192
+ description: "An array of block numbers to be read from the file",
193
+ },
194
+ },
195
+ required: ["filePath", "blockNumbers"],
196
+ },
197
+ returns: {
198
+ type: "array",
199
+ description:
200
+ "An array of file blocks corresponding to the specified block numbers",
201
+ },
202
+ },
203
+ },
204
+ {
205
+ type: "function",
206
+ function: {
207
+ name: "patchFile",
208
+ description:
209
+ "Modify file with patch. Can also create new files. Use GNU diffutils syntax with - in front of removals and + in front of additions. Always check your work after applying a patch to ensure the patch did what you expected. Think step by step while constructing the patch, of which lines your will add and remove. Make sure that your patch is maintaining proper syntax. Do not modify lines unrelated to the goal. Patches should contain 3 to 6 lines of context before and after changes. No omissions of lines for removals are allowed. Use multiple small patches over one large patch that affects multiple places in the file.",
210
+ parameters: {
211
+ type: "object",
212
+ positional: true,
213
+ properties: {
214
+ filePath: {
215
+ type: "string",
216
+ description: "The path to the file to be patched",
217
+ },
218
+ patch: {
219
+ type: "string",
220
+ description: "The patch to apply in unified diff format",
221
+ },
222
+ },
223
+ required: ["filePath", "patch"],
224
+ },
225
+ },
226
+ },
227
+
228
+ {
229
+ type: "function",
230
+ function: {
231
+ name: "lintFile",
232
+ description:
233
+ "Lint a file based on the file extension using predefined linting commands from the configuration.",
234
+ parameters: {
235
+ type: "object",
236
+ positional: true,
237
+ properties: {
238
+ filePath: {
239
+ type: "string",
240
+ description: "The path to the file to be linted.",
241
+ },
242
+ },
243
+ required: ["filePath"],
244
+ },
245
+ returns: {
246
+ type: "string",
247
+ description:
248
+ "The result of the linting process or an empty string if no lint command is configured for the file extension.",
249
+ },
250
+ },
251
+ },
252
+ {
253
+ type: "function",
254
+ function: {
255
+ name: "textSearch",
256
+ description:
257
+ "Exact Search. Search for exact matches of text across files. Use embeddingSearch for fuzzy search. Use fileSearch for file paths",
258
+ parameters: {
259
+ type: "object",
260
+ positional: true,
261
+ properties: {
262
+ searchTerm: {
263
+ type: "string",
264
+ description: "The text string to search for across files",
265
+ },
266
+ },
267
+ required: ["searchTerm"],
268
+ },
269
+ returns: {
270
+ type: "string",
271
+ description: "The result of the text search, including any matches",
272
+ },
273
+ },
274
+ },
275
+ {
276
+ type: "function",
277
+ function: {
278
+ name: "fileSearch",
279
+ description: "Search for files where the filepath includes a searchTerm",
280
+ parameters: {
281
+ type: "object",
282
+ positional: true,
283
+ properties: {
284
+ searchTerm: {
285
+ type: "string",
286
+ description: "a string to search for in file paths",
287
+ },
288
+ },
289
+ required: ["searchTerm"],
290
+ },
291
+ returns: {
292
+ type: "string",
293
+ description: "The result of the file search, including any matches",
294
+ },
295
+ },
296
+ },
297
+ {
298
+ type: "function",
299
+ function: {
300
+ name: "askHuman",
301
+ description: "Ask a human a question and get a response.",
302
+ parameters: {
303
+ type: "object",
304
+ positional: true,
305
+ properties: {
306
+ question: {
307
+ type: "string",
308
+ description: "The question to ask the human. Can be in markdown",
309
+ },
310
+ },
311
+ required: ["question"],
312
+ },
313
+ returns: {
314
+ type: "string",
315
+ description: "The response from the human.",
316
+ },
317
+ },
318
+ },
319
+
320
+ {
321
+ type: "function",
322
+ function: {
323
+ name: "writeFileChunk",
324
+ description:
325
+ "Update or create files by writing in smaller chunks. Suitable for larger files, this tool allows incremental writing by calling it multiple times.",
326
+ parameters: {
327
+ type: "object",
328
+ positional: true,
329
+ properties: {
330
+ filePath: {
331
+ type: "string",
332
+ description:
333
+ "The path to the file where the content will be written",
334
+ },
335
+ content: {
336
+ type: "string",
337
+ description: "The chunk of content to write to the file",
338
+ },
339
+ isContinuing: {
340
+ type: "boolean",
341
+ description:
342
+ "Flag indicating whether to append the content to an existing file (`true`) or start a new file (`false`)",
343
+ },
344
+ isDone: {
345
+ type: "boolean",
346
+ description:
347
+ "Flag indicating whether this is the final chunk of content",
348
+ },
349
+ },
350
+ required: ["filePath", "content", "isContinuing", "isDone"],
351
+ },
352
+ returns: {
353
+ type: "string",
354
+ description:
355
+ "A message indicating the status of the file writing process",
356
+ },
357
+ },
358
+ },
359
+
360
+ {
361
+ type: "function",
362
+ function: {
363
+ name: "createAiCompletion",
364
+ description: "Create a completion using the knowhow ai client",
365
+ parameters: {
366
+ type: "object",
367
+ positional: true,
368
+ properties: {
369
+ provider: {
370
+ type: "string",
371
+ description:
372
+ "The AI provider to use (e.g., 'openai', 'anthropic'). Use listAllModels to figure out which provider to use if you don't know",
373
+ },
374
+ options: {
375
+ type: "object",
376
+ description: "The completion options",
377
+ properties: {
378
+ model: { type: "string", description: "The model to use" },
379
+ messages: {
380
+ type: "array",
381
+ description: "The messages for the completion",
382
+ items: {
383
+ type: "object",
384
+ properties: {
385
+ role: { type: "string" },
386
+ content: { type: "string" },
387
+ },
388
+ },
389
+ },
390
+ max_tokens: {
391
+ type: "number",
392
+ description: "Maximum number of tokens to generate",
393
+ },
394
+ },
395
+ required: ["model", "messages"],
396
+ },
397
+ },
398
+ required: ["provider"],
399
+ },
400
+ returns: {
401
+ type: "object",
402
+ description: "The completion response from the AI provider",
403
+ },
404
+ },
405
+ },
406
+
407
+ {
408
+ type: "function",
409
+ function: {
410
+ name: "listAllModels",
411
+ description: "List all available models using the knowhow ai client",
412
+ parameters: {
413
+ type: "object",
414
+ properties: {},
415
+ required: [],
416
+ },
417
+ returns: {
418
+ type: "object",
419
+ description: "A dictionary of all available models for each provider",
420
+ },
421
+ },
422
+ },
423
+
424
+ {
425
+ type: "function",
426
+ function: {
427
+ name: "listAllProviders",
428
+ description: "List all available providers using the knowhow ai client",
429
+ parameters: {
430
+ type: "object",
431
+ properties: {},
432
+ required: [],
433
+ },
434
+ returns: {
435
+ type: "array",
436
+ description: "An array of all available providers",
437
+ },
438
+ },
439
+ },
440
+
441
+ {
442
+ type: "function",
443
+ function: {
444
+ name: "createEmbedding",
445
+ description: "Create an embedding using the knowhow ai client",
446
+ parameters: {
447
+ type: "object",
448
+ positional: true,
449
+ properties: {
450
+ provider: {
451
+ type: "string",
452
+ description:
453
+ "The AI provider to use (e.g., 'openai', 'anthropic'). Use listAllModels to figure out which provider to use if you don't know",
454
+ },
455
+ options: {
456
+ type: "object",
457
+ description: "The embedding options",
458
+ properties: {
459
+ input: { type: "string", description: "The text to embed" },
460
+ model: { type: "string", description: "The model to use (optional)" },
461
+ },
462
+ required: ["input"],
463
+ },
464
+ },
465
+ required: ["provider", "options"],
466
+ },
467
+ returns: {
468
+ type: "object",
469
+ description: "The embedding response from the AI provider",
470
+ },
471
+ },
472
+ },
473
+
474
+ googleSearchDefinition,
475
+ {
476
+ type: "function",
477
+ function: {
478
+ name: "loadWebpage",
479
+ description:
480
+ "Load a webpage using a stealth browser to avoid bot detection. Can return either text content with console logs or a screenshot.",
481
+ parameters: {
482
+ type: "object",
483
+ positional: true,
484
+ properties: {
485
+ url: {
486
+ type: "string",
487
+ description: "The URL of the webpage to load",
488
+ },
489
+ mode: {
490
+ type: "string",
491
+ description: "The mode for content extraction: 'text' for text content with console logs, 'screenshot' for a base64 encoded screenshot",
492
+ enum: ["text", "screenshot"],
493
+ },
494
+ waitForSelector: {
495
+ type: "string",
496
+ description: "Optional CSS selector to wait for before extracting content",
497
+ },
498
+ timeout: {
499
+ type: "number",
500
+ description: "Timeout in milliseconds for page loading (default: 30000)",
501
+ },
502
+ },
503
+ required: ["url"],
504
+ },
505
+ returns: {
506
+ type: "string",
507
+ description: "The webpage content as text with console logs, or a base64 encoded screenshot",
508
+ },
509
+ },
510
+ },
511
+ ...asana.definitions,
512
+ ...github.definitions,
513
+ ...language.definitions,
514
+ ] as Tool[];