@tyvm/knowhow 0.0.89 → 0.0.91

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 (344) hide show
  1. package/.depcheckrc +31 -0
  2. package/CONFIG.md +52 -0
  3. package/README.md +344 -29
  4. package/WORKER.md +169 -334
  5. package/autodoc/chat-guide.md +540 -0
  6. package/autodoc/cli-reference.md +765 -0
  7. package/autodoc/config-reference.md +541 -0
  8. package/autodoc/embeddings-guide.md +566 -0
  9. package/autodoc/generate-guide.md +477 -0
  10. package/autodoc/language-plugin-guide.md +443 -0
  11. package/autodoc/modules-guide.md +352 -0
  12. package/autodoc/plugins-guide.md +720 -0
  13. package/autodoc/quickstart-guide.md +129 -0
  14. package/autodoc/skills-guide.md +468 -0
  15. package/autodoc/worker-guide.md +526 -0
  16. package/bin/knowhow.js +1 -1
  17. package/package.json +4 -32
  18. package/src/agents/tools/executeScript/index.ts +5 -0
  19. package/src/agents/tools/googleSearch.ts +2 -2
  20. package/src/agents/tools/index.ts +0 -3
  21. package/src/agents/tools/list.ts +0 -147
  22. package/src/agents/tools/loadWebpage.ts +3 -113
  23. package/src/ai.ts +33 -2
  24. package/src/auth/browserLogin.ts +10 -13
  25. package/src/cli.ts +63 -3
  26. package/src/clients/gemini.ts +96 -25
  27. package/src/clients/http.ts +7 -11
  28. package/src/clients/pricing/google.ts +122 -26
  29. package/src/config.ts +28 -4
  30. package/src/conversion.ts +24 -54
  31. package/src/index.ts +30 -3
  32. package/src/login.ts +5 -6
  33. package/src/plugins/language.ts +0 -4
  34. package/src/plugins/plugins.ts +0 -14
  35. package/src/plugins/url.ts +31 -12
  36. package/src/processors/TokenCompressor.ts +2 -2
  37. package/src/processors/ToolResponseCache.ts +3 -3
  38. package/src/processors/tools/grepToolResponse.ts +9 -4
  39. package/src/processors/tools/jqToolResponse.ts +11 -6
  40. package/src/processors/tools/listStoredToolResponses.ts +1 -1
  41. package/src/processors/tools/tailToolResponse.ts +9 -4
  42. package/src/services/GitHub.ts +2 -2
  43. package/src/services/KnowhowClient.ts +34 -34
  44. package/src/{plugins/downloader/downloader.ts → services/MediaProcessorService.ts} +109 -267
  45. package/src/services/S3.ts +16 -16
  46. package/src/services/index.ts +4 -4
  47. package/src/services/modules/index.ts +10 -2
  48. package/src/services/modules/types.ts +5 -2
  49. package/src/services/script-execution/ScriptExecutor.ts +29 -10
  50. package/src/services/script-execution/ScriptPolicy.ts +6 -2
  51. package/src/types.ts +1 -0
  52. package/src/utils/http.ts +127 -0
  53. package/src/workers/auth/PasskeySetup.ts +7 -11
  54. package/tests/clients/AIClient.test.ts +24 -21
  55. package/tests/manual/file-edits/figma.test.ts +3 -70
  56. package/tests/plugins/language/languagePlugin-content-triggers.test.ts +2 -0
  57. package/tests/plugins/language/languagePlugin.test.ts +2 -0
  58. package/tests/processors/ToolResponseCache.test.ts +2 -2
  59. package/tests/test.spec.ts +0 -14
  60. package/tests/unit/modules/moduleLoading.test.ts +7 -4
  61. package/tests/unit/plugins/pluginLoading.test.ts +6 -6
  62. package/ts_build/package.json +4 -32
  63. package/ts_build/src/agents/tools/ast/astAppendNode.d.ts +1 -1
  64. package/ts_build/src/agents/tools/ast/astAppendNode.js +2 -90
  65. package/ts_build/src/agents/tools/ast/astAppendNode.js.map +1 -1
  66. package/ts_build/src/agents/tools/ast/astDeleteNode.d.ts +1 -1
  67. package/ts_build/src/agents/tools/ast/astDeleteNode.js +2 -88
  68. package/ts_build/src/agents/tools/ast/astDeleteNode.js.map +1 -1
  69. package/ts_build/src/agents/tools/ast/astEditNode.d.ts +1 -1
  70. package/ts_build/src/agents/tools/ast/astEditNode.js +2 -90
  71. package/ts_build/src/agents/tools/ast/astEditNode.js.map +1 -1
  72. package/ts_build/src/agents/tools/ast/astGetPathForLine.d.ts +1 -1
  73. package/ts_build/src/agents/tools/ast/astGetPathForLine.js +2 -72
  74. package/ts_build/src/agents/tools/ast/astGetPathForLine.js.map +1 -1
  75. package/ts_build/src/agents/tools/ast/astListPaths.d.ts +1 -1
  76. package/ts_build/src/agents/tools/ast/astListPaths.js +2 -72
  77. package/ts_build/src/agents/tools/ast/astListPaths.js.map +1 -1
  78. package/ts_build/src/agents/tools/executeScript/index.d.ts +3 -2
  79. package/ts_build/src/agents/tools/executeScript/index.js +4 -1
  80. package/ts_build/src/agents/tools/executeScript/index.js.map +1 -1
  81. package/ts_build/src/agents/tools/googleSearch.js +2 -2
  82. package/ts_build/src/agents/tools/googleSearch.js.map +1 -1
  83. package/ts_build/src/agents/tools/index.d.ts +0 -3
  84. package/ts_build/src/agents/tools/index.js +0 -3
  85. package/ts_build/src/agents/tools/index.js.map +1 -1
  86. package/ts_build/src/agents/tools/list.js +0 -138
  87. package/ts_build/src/agents/tools/list.js.map +1 -1
  88. package/ts_build/src/agents/tools/loadWebpage.js +1 -89
  89. package/ts_build/src/agents/tools/loadWebpage.js.map +1 -1
  90. package/ts_build/src/agents/tools/textSearch.d.ts +1 -1
  91. package/ts_build/src/ai.js +18 -1
  92. package/ts_build/src/ai.js.map +1 -1
  93. package/ts_build/src/auth/browserLogin.js +7 -7
  94. package/ts_build/src/auth/browserLogin.js.map +1 -1
  95. package/ts_build/src/cli.d.ts +1 -1
  96. package/ts_build/src/cli.js +47 -1
  97. package/ts_build/src/cli.js.map +1 -1
  98. package/ts_build/src/clients/gemini.d.ts +1 -73
  99. package/ts_build/src/clients/gemini.js +57 -19
  100. package/ts_build/src/clients/gemini.js.map +1 -1
  101. package/ts_build/src/clients/http.js +5 -9
  102. package/ts_build/src/clients/http.js.map +1 -1
  103. package/ts_build/src/clients/pricing/google.d.ts +17 -73
  104. package/ts_build/src/clients/pricing/google.js +47 -10
  105. package/ts_build/src/clients/pricing/google.js.map +1 -1
  106. package/ts_build/src/config.js +17 -2
  107. package/ts_build/src/config.js.map +1 -1
  108. package/ts_build/src/conversion.d.ts +1 -4
  109. package/ts_build/src/conversion.js +12 -27
  110. package/ts_build/src/conversion.js.map +1 -1
  111. package/ts_build/src/index.d.ts +4 -0
  112. package/ts_build/src/index.js +19 -3
  113. package/ts_build/src/index.js.map +1 -1
  114. package/ts_build/src/login.js +5 -4
  115. package/ts_build/src/login.js.map +1 -1
  116. package/ts_build/src/plugins/downloader/downloader.js +3 -3
  117. package/ts_build/src/plugins/downloader/downloader.js.map +1 -1
  118. package/ts_build/src/plugins/language.js.map +1 -1
  119. package/ts_build/src/plugins/plugins.js +0 -14
  120. package/ts_build/src/plugins/plugins.js.map +1 -1
  121. package/ts_build/src/plugins/tree-sitter/editor.d.ts +3 -32
  122. package/ts_build/src/plugins/tree-sitter/editor.js +6 -208
  123. package/ts_build/src/plugins/tree-sitter/editor.js.map +1 -1
  124. package/ts_build/src/plugins/tree-sitter/parser.d.ts +19 -54
  125. package/ts_build/src/plugins/tree-sitter/parser.js +19 -293
  126. package/ts_build/src/plugins/tree-sitter/parser.js.map +1 -1
  127. package/ts_build/src/plugins/tree-sitter/simple-paths.d.ts +2 -15
  128. package/ts_build/src/plugins/tree-sitter/simple-paths.js +2 -324
  129. package/ts_build/src/plugins/tree-sitter/simple-paths.js.map +1 -1
  130. package/ts_build/src/plugins/url.js +27 -8
  131. package/ts_build/src/plugins/url.js.map +1 -1
  132. package/ts_build/src/processors/TokenCompressor.js +2 -2
  133. package/ts_build/src/processors/TokenCompressor.js.map +1 -1
  134. package/ts_build/src/processors/ToolResponseCache.js +3 -3
  135. package/ts_build/src/processors/ToolResponseCache.js.map +1 -1
  136. package/ts_build/src/processors/tools/grepToolResponse.d.ts +3 -1
  137. package/ts_build/src/processors/tools/grepToolResponse.js +8 -2
  138. package/ts_build/src/processors/tools/grepToolResponse.js.map +1 -1
  139. package/ts_build/src/processors/tools/jqToolResponse.d.ts +3 -1
  140. package/ts_build/src/processors/tools/jqToolResponse.js +10 -4
  141. package/ts_build/src/processors/tools/jqToolResponse.js.map +1 -1
  142. package/ts_build/src/processors/tools/listStoredToolResponses.js +1 -1
  143. package/ts_build/src/processors/tools/listStoredToolResponses.js.map +1 -1
  144. package/ts_build/src/processors/tools/tailToolResponse.d.ts +3 -1
  145. package/ts_build/src/processors/tools/tailToolResponse.js +8 -2
  146. package/ts_build/src/processors/tools/tailToolResponse.js.map +1 -1
  147. package/ts_build/src/services/GitHub.js +2 -2
  148. package/ts_build/src/services/GitHub.js.map +1 -1
  149. package/ts_build/src/services/KnowhowClient.d.ts +29 -29
  150. package/ts_build/src/services/KnowhowClient.js +33 -33
  151. package/ts_build/src/services/KnowhowClient.js.map +1 -1
  152. package/ts_build/src/services/MediaProcessorService.d.ts +22 -0
  153. package/ts_build/src/services/MediaProcessorService.js +215 -0
  154. package/ts_build/src/services/MediaProcessorService.js.map +1 -0
  155. package/ts_build/src/services/S3.js +12 -18
  156. package/ts_build/src/services/S3.js.map +1 -1
  157. package/ts_build/src/services/index.d.ts +3 -2
  158. package/ts_build/src/services/index.js +3 -3
  159. package/ts_build/src/services/index.js.map +1 -1
  160. package/ts_build/src/services/modules/index.js +10 -2
  161. package/ts_build/src/services/modules/index.js.map +1 -1
  162. package/ts_build/src/services/modules/types.d.ts +5 -2
  163. package/ts_build/src/services/script-execution/ScriptExecutor.js +22 -7
  164. package/ts_build/src/services/script-execution/ScriptExecutor.js.map +1 -1
  165. package/ts_build/src/services/script-execution/ScriptPolicy.d.ts +1 -1
  166. package/ts_build/src/services/script-execution/ScriptPolicy.js +4 -2
  167. package/ts_build/src/services/script-execution/ScriptPolicy.js.map +1 -1
  168. package/ts_build/src/types.d.ts +1 -0
  169. package/ts_build/src/types.js +1 -0
  170. package/ts_build/src/types.js.map +1 -1
  171. package/ts_build/src/utils/http.d.ts +27 -0
  172. package/ts_build/src/utils/http.js +98 -0
  173. package/ts_build/src/utils/http.js.map +1 -0
  174. package/ts_build/src/workers/auth/PasskeySetup.js +6 -7
  175. package/ts_build/src/workers/auth/PasskeySetup.js.map +1 -1
  176. package/ts_build/tests/clients/AIClient.test.js +11 -14
  177. package/ts_build/tests/clients/AIClient.test.js.map +1 -1
  178. package/ts_build/tests/manual/file-edits/figma.test.d.ts +0 -1
  179. package/ts_build/tests/manual/file-edits/figma.test.js +1 -46
  180. package/ts_build/tests/manual/file-edits/figma.test.js.map +1 -1
  181. package/ts_build/tests/plugins/language/languagePlugin-content-triggers.test.js +2 -0
  182. package/ts_build/tests/plugins/language/languagePlugin-content-triggers.test.js.map +1 -1
  183. package/ts_build/tests/plugins/language/languagePlugin.test.js +2 -0
  184. package/ts_build/tests/plugins/language/languagePlugin.test.js.map +1 -1
  185. package/ts_build/tests/processors/ToolResponseCache.test.js +2 -2
  186. package/ts_build/tests/processors/ToolResponseCache.test.js.map +1 -1
  187. package/ts_build/tests/test.spec.js +0 -14
  188. package/ts_build/tests/test.spec.js.map +1 -1
  189. package/ts_build/tests/tree-sitter/tree-sitter.test.d.ts +0 -1
  190. package/ts_build/tests/tree-sitter/tree-sitter.test.js +2 -183
  191. package/ts_build/tests/tree-sitter/tree-sitter.test.js.map +1 -1
  192. package/ts_build/tests/unit/modules/moduleLoading.test.js +6 -4
  193. package/ts_build/tests/unit/modules/moduleLoading.test.js.map +1 -1
  194. package/ts_build/tests/unit/plugins/pluginLoading.test.js +4 -4
  195. package/ts_build/tests/unit/plugins/pluginLoading.test.js.map +1 -1
  196. package/autodoc/chat.mdx +0 -20
  197. package/autodoc/cli.mdx +0 -11
  198. package/autodoc/plugins/asana.mdx +0 -47
  199. package/autodoc/plugins/downloader/downloader.mdx +0 -38
  200. package/autodoc/plugins/downloader/plugin.mdx +0 -37
  201. package/autodoc/plugins/downloader/types.mdx +0 -42
  202. package/autodoc/plugins/embedding.mdx +0 -41
  203. package/autodoc/plugins/figma.mdx +0 -45
  204. package/autodoc/plugins/github.mdx +0 -40
  205. package/autodoc/plugins/jira.mdx +0 -46
  206. package/autodoc/plugins/language.mdx +0 -37
  207. package/autodoc/plugins/linear.mdx +0 -35
  208. package/autodoc/plugins/notion.mdx +0 -38
  209. package/autodoc/plugins/plugins.mdx +0 -59
  210. package/autodoc/plugins/types.mdx +0 -51
  211. package/autodoc/plugins/vim.mdx +0 -39
  212. package/autodoc/tools/addInternalTools.mdx +0 -1
  213. package/autodoc/tools/agentCall.mdx +0 -1
  214. package/autodoc/tools/asana/definitions.mdx +0 -10
  215. package/autodoc/tools/asana/index.mdx +0 -12
  216. package/autodoc/tools/askHuman.mdx +0 -1
  217. package/autodoc/tools/callPlugin.mdx +0 -1
  218. package/autodoc/tools/embeddingSearch.mdx +0 -1
  219. package/autodoc/tools/execCommand.mdx +0 -1
  220. package/autodoc/tools/fileSearch.mdx +0 -1
  221. package/autodoc/tools/finalAnswer.mdx +0 -1
  222. package/autodoc/tools/github/definitions.mdx +0 -6
  223. package/autodoc/tools/github/index.mdx +0 -8
  224. package/autodoc/tools/index.mdx +0 -14
  225. package/autodoc/tools/lintFile.mdx +0 -7
  226. package/autodoc/tools/list.mdx +0 -16
  227. package/autodoc/tools/modifyFile.mdx +0 -7
  228. package/autodoc/tools/patch.mdx +0 -9
  229. package/autodoc/tools/readBlocks.mdx +0 -1
  230. package/autodoc/tools/readFile.mdx +0 -1
  231. package/autodoc/tools/scanFile.mdx +0 -1
  232. package/autodoc/tools/textSearch.mdx +0 -6
  233. package/autodoc/tools/types/fileblock.mdx +0 -1
  234. package/autodoc/tools/visionTool.mdx +0 -1
  235. package/autodoc/tools/writeFile.mdx +0 -1
  236. package/benchmarks/.dockerignore +0 -7
  237. package/benchmarks/README.md +0 -166
  238. package/benchmarks/docker/Dockerfile +0 -68
  239. package/benchmarks/example-config.yml +0 -27
  240. package/benchmarks/jest.config.js +0 -13
  241. package/benchmarks/package-lock.json +0 -4297
  242. package/benchmarks/package.json +0 -39
  243. package/benchmarks/results/27b0a06/2025-09-27/xai/xai-grok-code-fast-1.json +0 -2909
  244. package/benchmarks/results/4057aed/2025-08-14/anthropic/anthropic-claude-sonnet-4-20250514.json +0 -1671
  245. package/benchmarks/results/4542435/2025-08-05/lms/lms-openai-gpt-oss-20b.json +0 -2814
  246. package/benchmarks/results/4542435/2025-08-05/lms/lms-qwen-qwen3-30b-a3b-2507.json +0 -2014
  247. package/benchmarks/results/4fb9125/2025-08-07/anthropic/anthropic-claude-sonnet-4-20250514.json +0 -3121
  248. package/benchmarks/results/5766aee/2025-08-02/lms-qwen/qwen3-coder-30b.json +0 -98
  249. package/benchmarks/results/6d73808/2025-08-07/openai/openai-gpt-5.json +0 -3256
  250. package/benchmarks/results/77bf0a6/2025-08-02/lms-qwen/qwen3-30b-a3b-2507.json +0 -4298
  251. package/benchmarks/results/8c0d445/2025-08-03/anthropic/anthropic-claude-sonnet-4-20250514.json +0 -3031
  252. package/benchmarks/results/8c0d445/2025-08-03/openai/openai-gpt-4.1-2025-04-14.json +0 -2990
  253. package/benchmarks/results/ac6b2ab/2025-08-03/anthropic/anthropic-claude-sonnet-4-20250514.json +0 -3256
  254. package/benchmarks/results/ac6b2ab/2025-08-03/lms/lms-qwen-qwen3-coder-30b.json +0 -3007
  255. package/benchmarks/results/ac6b2ab/2025-08-03/openai/openai-gpt-4.1-2025-04-14.json +0 -3256
  256. package/benchmarks/results/ac6b2ab/2025-08-03/openai/openai-gpt-4.1-mini-2025-04-14.json +0 -3036
  257. package/benchmarks/results/ac6b2ab/2025-08-03/openai/openai-gpt-4.1-nano-2025-04-14.json +0 -3280
  258. package/benchmarks/results/adff675/2025-08-04/lms/lms-qwen-qwen3-30b-a3b-2507.json +0 -1920
  259. package/benchmarks/results/adff675/2025-08-04/lms/lms-qwen-qwen3-coder-30b.json +0 -3281
  260. package/benchmarks/results/b502ed9/2025-08-03/lms-qwen/qwen3-coder-30b.json +0 -2896
  261. package/benchmarks/results/d1a8129/2025-08-03/lms/lms-qwen-qwen3-coder-30b.json +0 -3011
  262. package/benchmarks/results/e60471c/2025-08-03/lms/qwen3-30b-a3b-2507.json +0 -3003
  263. package/benchmarks/scripts/build-and-run.sh +0 -47
  264. package/benchmarks/scripts/clone-exercism.sh +0 -92
  265. package/benchmarks/scripts/validate.sh +0 -48
  266. package/benchmarks/src/__tests__/runner.test.ts +0 -27
  267. package/benchmarks/src/cli.ts +0 -90
  268. package/benchmarks/src/evaluators/EvaluatorRegistry.ts +0 -64
  269. package/benchmarks/src/evaluators/JavaScriptEvaluator.ts +0 -183
  270. package/benchmarks/src/evaluators/index.ts +0 -3
  271. package/benchmarks/src/evaluators/types.ts +0 -22
  272. package/benchmarks/src/index.ts +0 -3
  273. package/benchmarks/src/providers.ts +0 -13
  274. package/benchmarks/src/runner.ts +0 -824
  275. package/benchmarks/src/types.ts +0 -63
  276. package/benchmarks/tsconfig.json +0 -19
  277. package/leaderboard/README.md +0 -148
  278. package/leaderboard/app/api/benchmark-data/route.ts +0 -131
  279. package/leaderboard/app/api/benchmark-detail/route.ts +0 -172
  280. package/leaderboard/app/details/[model]/[provider]/[language]/page.tsx +0 -501
  281. package/leaderboard/app/exercise/[model]/[provider]/[language]/[exercise]/page.tsx +0 -375
  282. package/leaderboard/app/globals.css +0 -27
  283. package/leaderboard/app/layout.tsx +0 -21
  284. package/leaderboard/app/page.tsx +0 -170
  285. package/leaderboard/components/LeaderboardTable.tsx +0 -168
  286. package/leaderboard/components/PerformanceChart.tsx +0 -109
  287. package/leaderboard/next-env.d.ts +0 -5
  288. package/leaderboard/next.config.js +0 -4
  289. package/leaderboard/package-lock.json +0 -6363
  290. package/leaderboard/package.json +0 -28
  291. package/leaderboard/postcss.config.js +0 -6
  292. package/leaderboard/tailwind.config.js +0 -17
  293. package/leaderboard/tsconfig.json +0 -28
  294. package/leaderboard/types/benchmark.ts +0 -67
  295. package/leaderboard/utils/dataProcessor.ts +0 -33
  296. package/src/agents/tools/asana/definitions.ts +0 -199
  297. package/src/agents/tools/asana/index.ts +0 -108
  298. package/src/agents/tools/ast/astAppendNode.ts +0 -90
  299. package/src/agents/tools/ast/astDeleteNode.ts +0 -88
  300. package/src/agents/tools/ast/astEditNode.ts +0 -95
  301. package/src/agents/tools/ast/astGetPathForLine.ts +0 -73
  302. package/src/agents/tools/ast/astListPaths.ts +0 -66
  303. package/src/agents/tools/ast/index.ts +0 -7
  304. package/src/agents/tools/github/definitions.ts +0 -89
  305. package/src/agents/tools/github/index.ts +0 -67
  306. package/src/chat-old.ts +0 -446
  307. package/src/plugins/asana.ts +0 -146
  308. package/src/plugins/downloader/plugin.ts +0 -103
  309. package/src/plugins/downloader/types.ts +0 -92
  310. package/src/plugins/figma.ts +0 -158
  311. package/src/plugins/github.ts +0 -219
  312. package/src/plugins/jira.ts +0 -115
  313. package/src/plugins/linear.ts +0 -230
  314. package/src/plugins/notion.ts +0 -179
  315. package/src/plugins/tree-sitter/editor.ts +0 -369
  316. package/src/plugins/tree-sitter/lang-packs/index.ts +0 -23
  317. package/src/plugins/tree-sitter/lang-packs/java.ts +0 -59
  318. package/src/plugins/tree-sitter/lang-packs/javascript.ts +0 -57
  319. package/src/plugins/tree-sitter/lang-packs/python.ts +0 -45
  320. package/src/plugins/tree-sitter/lang-packs/types.ts +0 -79
  321. package/src/plugins/tree-sitter/lang-packs/typescript.ts +0 -49
  322. package/src/plugins/tree-sitter/parser.ts +0 -470
  323. package/src/plugins/tree-sitter/simple-paths.ts +0 -467
  324. package/test-comprehensive.ts +0 -31
  325. package/tests/tree-sitter/editor.test.ts +0 -113
  326. package/tests/tree-sitter/invalid.test.ts +0 -299
  327. package/tests/tree-sitter/paths/common-edits.test.ts +0 -564
  328. package/tests/tree-sitter/paths/debug-exact-position.test.ts +0 -44
  329. package/tests/tree-sitter/paths/debug-line-indexing.test.ts +0 -49
  330. package/tests/tree-sitter/paths/debug-paths.test.ts +0 -90
  331. package/tests/tree-sitter/paths/paths.test.ts +0 -170
  332. package/tests/tree-sitter/paths/simple-paths.test.ts +0 -367
  333. package/tests/tree-sitter/sample-after.ts +0 -48
  334. package/tests/tree-sitter/sample-before.ts +0 -25
  335. package/tests/tree-sitter/test-files/completely-broken.ts +0 -7
  336. package/tests/tree-sitter/test-files/duplicate-braces.ts +0 -39
  337. package/tests/tree-sitter/test-files/invalid-nesting.ts +0 -39
  338. package/tests/tree-sitter/test-files/malformed-signature.ts +0 -39
  339. package/tests/tree-sitter/test-files/mismatched-parens.ts +0 -39
  340. package/tests/tree-sitter/test-files/missing-semicolon.ts +0 -39
  341. package/tests/tree-sitter/test-files/partially-broken.ts +0 -20
  342. package/tests/tree-sitter/test-files/specific-errors.ts +0 -14
  343. package/tests/tree-sitter/test-files/unclosed-string.ts +0 -39
  344. package/tests/tree-sitter/tree-sitter.test.ts +0 -251
@@ -0,0 +1,541 @@
1
+ # `knowhow.json` Configuration Reference
2
+
3
+ This document describes how to configure Knowhow CLI using a `knowhow.json` file (local or global).
4
+
5
+ - **Local path:** `.knowhow/knowhow.json`
6
+ - **Global path:** `~/.knowhow/knowhow.json`
7
+
8
+ > **Format:** JSON object
9
+ > **Purpose:** Configure prompts, generation pipelines, embedding pipelines, plugins/modules, custom agents, MCP servers, model providers, chat UI, the worker sandbox, and language tooling (ycmd).
10
+
11
+ ---
12
+
13
+ ## Top-level keys
14
+
15
+ | Key | Type | Description | Example |
16
+ |---|---|---|---|
17
+ | `promptsDir` | `string` | Directory that contains prompt templates (`{promptName}.mdx`). | `.knowhow/prompts` |
18
+ | `sources` | `SourceConfig[]` | Generation pipeline(s) that turn inputs into generated outputs. | see “sources” section |
19
+ | `embedSources` | `EmbedSourceConfig[]` | Embedding pipeline(s) that turn inputs into embedding artifacts (often JSON). | see “embedSources” section |
20
+ | `embeddingModel` | `string` | Embedding model identifier used by the embedding pipeline. | `openai:EmbeddingAda2` *(value format depends on your setup)* |
21
+ | `plugins` | `PluginsConfig` | Enable/disable built-in plugins. | `{ "enabled": ["embeddings"], "disabled": [] }` |
22
+ | `pluginPackages` | `string[]` | Extra/custom plugin npm packages to load. | `["@myorg/knowhow-plugin-acme"]` |
23
+ | `modules` | `ModuleConfig[]` | Load custom npm modules that can add tools/agents/plugins/clients. | `[{"package":"@myorg/knowhow-module-x"}]` |
24
+ | `agents` | `AgentConfig[]` | Custom agent definitions (for generation/chat). | see “agents/assistants” section |
25
+ | `assistants` | `AgentConfig[]` | Additional/custom agent definitions (same shape as `agents`). | see “agents/assistants” section |
26
+ | `mcps` | `McpServerConfig[]` | MCP server configurations Knowhow can connect to. | see “mcps” section |
27
+ | `modelProviders` | `ModelProviderConfig[]` | Custom model provider endpoints. | see “modelProviders” section |
28
+ | `lintCommands` | `Record<string,string>` | Lint command per file extension. | `{ "ts": "eslint $1" }` |
29
+ | `chat` | `ChatConfig` | Chat runtime configuration (renderer + module wiring). | see “chat” section |
30
+ | `worker` | `WorkerConfig` | Worker execution and networking configuration. | see “worker” section |
31
+ | `skills` | `string[]` | Directories containing “skills” (domain/tool logic). | `[".knowhow/skills"]` |
32
+ | `files` | `FileSyncConfig` | File sync configuration (tooling-specific; schema varies by build). | see “files” section |
33
+ | `ycmd` | `YcmdConfig` | ycmd language-server configuration. | see “ycmd” section |
34
+
35
+ ---
36
+
37
+ ## `promptsDir`
38
+
39
+ - **Type:** `string`
40
+ - **Description:** Directory containing prompt templates as `{promptName}.mdx`.
41
+ - **How it’s used:** When a prompt name is referenced (e.g., `sources[].prompt`), Knowhow loads:
42
+ - `path.join(promptsDir, `${promptName}.mdx`)`
43
+ - **Example:**
44
+ ```json
45
+ {
46
+ "promptsDir": ".knowhow/prompts"
47
+ }
48
+ ```
49
+
50
+ ---
51
+
52
+ ## `sources` (generation pipeline)
53
+
54
+ - **Type:** `SourceConfig[]`
55
+ - **Description:** Defines how Knowhow generates outputs from inputs by selecting a prompt and (optionally) an agent and model.
56
+
57
+ ### `SourceConfig`
58
+
59
+ | Key | Type | Required | Description | Example |
60
+ |---|---|---:|---|---|
61
+ | `input` | `string` | ✅ | Input path/glob/identifier for this stage. | `src/**/*.mdx` |
62
+ | `output` | `string` | ✅ | Output path (file or directory target). | `.knowhow/docs/` |
63
+ | `prompt` | `string` | ✅ | Prompt name (from `promptsDir`) or a prompt reference. | `BasicCodeDocumenter` |
64
+ | `kind` | `string` | ❌ | Generation “kind” (mode/behavior); often tied to plugins. | `summarization` |
65
+ | `agent` | `string` | ❌ | Name of a custom agent used for this source. | `Example agent` |
66
+ | `model` | `string` | ❌ | Model override for this source. | `gpt-4o-2024-08-06` |
67
+ | `outputExt` | `string` | ❌ | Output file extension override. | `.mdx` |
68
+ | `outputName` | `string` | ❌ | Output file/base name override. | `README.mdx` |
69
+
70
+ ### Example
71
+ ```json
72
+ {
73
+ "sources": [
74
+ {
75
+ "input": "src/**/*.mdx",
76
+ "output": ".knowhow/docs/",
77
+ "prompt": "BasicCodeDocumenter"
78
+ },
79
+ {
80
+ "input": ".knowhow/docs/**/*.mdx",
81
+ "output": ".knowhow/docs/README.mdx",
82
+ "prompt": "BasicProjectDocumenter",
83
+ "kind": "project"
84
+ }
85
+ ]
86
+ }
87
+ ```
88
+
89
+ ---
90
+
91
+ ## `embedSources` (embedding pipeline)
92
+
93
+ - **Type:** `EmbedSourceConfig[]`
94
+ - **Description:** Defines how Knowhow creates embeddings from inputs, with optional chunking and optional remote/upload settings.
95
+
96
+ ### `EmbedSourceConfig`
97
+
98
+ | Key | Type | Required | Description | Example |
99
+ |---|---|---:|---|---|
100
+ | `input` | `string` | ✅ | Input path/glob/URL to embed. | `.knowhow/docs/**/*.mdx` |
101
+ | `output` | `string` | ✅ | Embedding artifact location (often JSON file). | `.knowhow/embeddings/docs.json` |
102
+ | `prompt` | `string` | ❌ | Optional preprocessing prompt name. | `BasicEmbeddingExplainer` |
103
+ | `kind` | `string` | ❌ | Embedding strategy/type (often plugin-driven). | `download` |
104
+ | `chunkSize` | `number` | ❌ | Chunk size for splitting content before embedding. | `2000` |
105
+ | `minLength` | `number` | ❌ | Minimum chunk length threshold. | `200` |
106
+ | `remote` | `string` | ❌ | Remote destination name/id (backend-specific). | `micahriggan/knowhow` |
107
+ | `remoteType` | `string` | ❌ | Remote backend type (e.g., `s3`, `github`). | `github` |
108
+ | `remoteId` | `string` | ❌ | Remote identity/index/collection id (backend-specific). | `docs-index-1` |
109
+ | `uploadMode` | `string` | ❌ | Upload/write mode (implementation-specific). | `overwrite` |
110
+
111
+ ### Example
112
+ ```json
113
+ {
114
+ "embedSources": [
115
+ {
116
+ "input": ".knowhow/docs/**/*.mdx",
117
+ "output": ".knowhow/embeddings/docs.json",
118
+ "prompt": "BasicEmbeddingExplainer",
119
+ "chunkSize": 2000
120
+ },
121
+ {
122
+ "input": "src/**/*.ts",
123
+ "output": ".knowhow/embeddings/code.json",
124
+ "chunkSize": 2000
125
+ }
126
+ ]
127
+ }
128
+ ```
129
+
130
+ ### Example: embedding with `download` kind (URL input)
131
+ ```json
132
+ {
133
+ "embedSources": [
134
+ {
135
+ "input": "https://www.youtube.com/shorts/BYuMBK5Ll-s",
136
+ "output": ".knowhow/embeddings/video.json",
137
+ "chunkSize": 2000,
138
+ "kind": "download"
139
+ }
140
+ ]
141
+ }
142
+ ```
143
+
144
+ ---
145
+
146
+ ## `embeddingModel`
147
+
148
+ - **Type:** `string`
149
+ - **Description:** Embedding model identifier used by embedding tasks.
150
+ - **Example:**
151
+ ```json
152
+ {
153
+ "embeddingModel": "openai:EmbeddingAda2"
154
+ }
155
+ ```
156
+
157
+ > Use the exact identifier format your Knowhow build expects (commonly defined by an `EmbeddingModels` enum/constant).
158
+
159
+ ---
160
+
161
+ ## `plugins`
162
+
163
+ - **Type:**
164
+ ```ts
165
+ {
166
+ enabled: string[];
167
+ disabled: string[];
168
+ }
169
+ ```
170
+ - **Description:** Enables/disables built-in plugins by name.
171
+
172
+ | Key | Type | Description | Example |
173
+ |---|---|---|---|
174
+ | `enabled` | `string[]` | List of enabled plugin identifiers. | `["embeddings","git"]` |
175
+ | `disabled` | `string[]` | List of disabled plugin identifiers. | `["github"]` |
176
+
177
+ ### Example
178
+ ```json
179
+ {
180
+ "plugins": {
181
+ "enabled": ["embeddings", "language", "git", "exec"],
182
+ "disabled": []
183
+ }
184
+ }
185
+ ```
186
+
187
+ ---
188
+
189
+ ## `pluginPackages`
190
+
191
+ - **Type:** `string[]`
192
+ - **Description:** NPM package names to load additional/custom plugins from.
193
+
194
+ ### Example
195
+ ```json
196
+ {
197
+ "pluginPackages": ["@myorg/knowhow-plugin-acme"]
198
+ }
199
+ ```
200
+
201
+ ---
202
+
203
+ ## `modules`
204
+
205
+ - **Type:** `ModuleConfig[]` *(commonly represented as `{ package: string }` objects)*
206
+ - **Description:** Load custom npm modules that can provide tools/agents/plugins/clients.
207
+
208
+ ### `ModuleConfig` (representative)
209
+ | Key | Type | Required | Description | Example |
210
+ |---|---|---:|---|---|
211
+ | `package` | `string` | ✅ | NPM package name (or module identifier) to load. | `@myorg/knowhow-module-mycopilot` |
212
+
213
+ ### Example
214
+ ```json
215
+ {
216
+ "modules": [
217
+ { "package": "@myorg/knowhow-module-custom-tools" },
218
+ { "package": "@myorg/knowhow-module-chat-ui" }
219
+ ]
220
+ }
221
+ ```
222
+
223
+ ---
224
+
225
+ ## `agents` / `assistants`
226
+
227
+ - **Type:** `AgentConfig[]`
228
+ - **Description:** Custom agent definitions usable by generation/chat.
229
+ - **Note:** Both keys typically share the same schema; `assistants` may be treated as an alias/parallel list.
230
+
231
+ ### `AgentConfig`
232
+
233
+ | Key | Type | Required | Description | Example |
234
+ |---|---|---:|---|---|
235
+ | `name` | `string` | ✅ | Agent identifier referenced by `sources[].agent`. | `Example agent` |
236
+ | `description` | `string` | ❌ | Short human-readable description. | `Docs writer` |
237
+ | `instructions` | `string` | ✅ | Agent system/developer instructions. | `Reply with ...` |
238
+ | `model` | `string` | ❌ | Model override used by this agent. | `gpt-4o-2024-08-06` |
239
+ | `provider` | `string` | ❌/✅ | Model provider key used by this agent. | `openai` |
240
+ | `tools` | `string[]` | ❌ | Tool names the agent is allowed to use. | `["git","exec"]` |
241
+ | `files` | `string[]` | ❌ | Files/dirs/globs provided as context for this agent. | `[".knowhow/docs/"]` |
242
+
243
+ ### Example
244
+ ```json
245
+ {
246
+ "agents": [
247
+ {
248
+ "name": "Example agent",
249
+ "description": "You can define agents in the config. They will have access to all tools.",
250
+ "instructions": "Reply to the user saying 'Hello, world!'",
251
+ "model": "gpt-4o-2024-08-06",
252
+ "provider": "openai"
253
+ }
254
+ ]
255
+ }
256
+ ```
257
+
258
+ ### Example: agent with `tools` and `files`
259
+ ```json
260
+ {
261
+ "agents": [
262
+ {
263
+ "name": "Docs agent",
264
+ "description": "Writes and updates project documentation.",
265
+ "instructions": "Summarize changes and update docs with a clear changelog.",
266
+ "model": "gpt-4o-2024-08-06",
267
+ "provider": "openai",
268
+ "tools": ["git", "exec"],
269
+ "files": [".knowhow/docs/"]
270
+ }
271
+ ]
272
+ }
273
+ ```
274
+
275
+ ---
276
+
277
+ ## `mcps` (MCP servers)
278
+
279
+ - **Type:** `McpServerConfig[]`
280
+ - **Description:** Configure MCP servers Knowhow can spawn or connect to.
281
+
282
+ ### `McpServerConfig`
283
+
284
+ | Key | Type | Required | Description | Example |
285
+ |---|---|---:|---|---|
286
+ | `name` | `string` | ✅ | MCP server name. | `browser` |
287
+ | `command` | `string` | ❌ | Command used to start the MCP server. | `npx` |
288
+ | `args` | `string[]` | ❌ | Arguments for `command`. | `["-y","@playwright/mcp@latest", "..."]` |
289
+ | `url` | `string` | ❌ | Remote MCP URL (if applicable). | `http://localhost:3000` |
290
+ | `autoConnect` | `boolean` | ❌ | Whether Knowhow connects automatically. | `true` |
291
+
292
+ ### Example
293
+ ```json
294
+ {
295
+ "mcps": [
296
+ {
297
+ "name": "browser",
298
+ "command": "npx",
299
+ "args": ["-y", "@playwright/mcp@latest", "--browser", "chrome"],
300
+ "autoConnect": true
301
+ }
302
+ ]
303
+ }
304
+ ```
305
+
306
+ ---
307
+
308
+ ## `modelProviders`
309
+
310
+ - **Type:** `ModelProviderConfig[]`
311
+ - **Description:** Register custom model providers/endpoints.
312
+
313
+ ### `ModelProviderConfig`
314
+
315
+ | Key | Type | Required | Description | Example |
316
+ |---|---|---:|---|---|
317
+ | `url` | `string` | ✅ | Base URL of the provider endpoint. | `http://localhost:1234` |
318
+ | `provider` | `string` | ✅ | Provider key/name used by `agents.provider`. | `lms` |
319
+ | `jwtFile` | `string` | ❌ | Path to a JWT file for auth. | `~/.knowhow/.jwt/myprovider.jwt` |
320
+
321
+ ### Example
322
+ ```json
323
+ {
324
+ "modelProviders": [
325
+ { "url": "http://localhost:1234", "provider": "lms" }
326
+ ]
327
+ }
328
+ ```
329
+
330
+ ---
331
+
332
+ ## `lintCommands`
333
+
334
+ - **Type:** `Record<string,string>`
335
+ - **Description:** Map file extensions to lint commands.
336
+ - Common behavior: keys are extensions like `"ts"`, and the command is run with `$1` replaced by the patched file path.
337
+
338
+ ### Example
339
+ ```json
340
+ {
341
+ "lintCommands": {
342
+ "js": "eslint $1",
343
+ "ts": "eslint $1"
344
+ }
345
+ }
346
+ ```
347
+
348
+ ---
349
+
350
+ ## `chat`
351
+
352
+ - **Type:** `ChatConfig`
353
+ - **Description:** Configure chat renderer and module wiring.
354
+
355
+ ### `ChatConfig`
356
+
357
+ | Key | Type | Required | Description | Example |
358
+ |---|---|---:|---|---|
359
+ | `renderer` | `string` | ❌ | Renderer module name/path. | `default` |
360
+ | `modules` | `string[]` | ❌ | Chat modules to load. | `["@myorg/knowhow-chat-ui"]` |
361
+ | `rootModule` | `string` | ❌ | Root module entry. | `knowhow-chat` |
362
+
363
+ ### Example
364
+ ```json
365
+ {
366
+ "chat": {
367
+ "renderer": "default",
368
+ "modules": ["@myorg/knowhow-chat-ui"],
369
+ "rootModule": "knowhow-chat"
370
+ }
371
+ }
372
+ ```
373
+
374
+ ---
375
+
376
+ ## `worker`
377
+
378
+ - **Type:** `WorkerConfig`
379
+ - **Description:** Worker execution/sandbox/tunnel configuration for tools.
380
+
381
+ ### `worker` keys
382
+
383
+ | Key | Type | Required | Description | Example |
384
+ |---|---|---:|---|---|
385
+ | `allowedTools` | `string[]` | ❌ | Tool names permitted to run in the worker. | `["exec","download"]` |
386
+ | `sandbox` | `boolean` | ❌ | Enable/disable sandboxing for tool execution. | `true` |
387
+ | `volumes` | `string[]` | ❌ | Volume mounts (implementation-dependent). | `[".:/workspace"]` |
388
+ | `envFile` | `string` | ❌ | Path to an env file loaded by the worker. | `.env.worker` |
389
+ | `tunnel` | `WorkerTunnelConfig` | ❌ | Network tunnel configuration. | see below |
390
+
391
+ ### `worker.tunnel`
392
+
393
+ - **Type:**
394
+ ```ts
395
+ {
396
+ enabled: boolean;
397
+ allowedPorts: number[];
398
+ }
399
+ ```
400
+
401
+ ### Example
402
+ ```json
403
+ {
404
+ "worker": {
405
+ "allowedTools": ["exec", "download"],
406
+ "sandbox": true,
407
+ "volumes": [".:/workspace"],
408
+ "envFile": ".env.worker",
409
+ "tunnel": {
410
+ "enabled": true,
411
+ "allowedPorts": [3000, 8080]
412
+ }
413
+ }
414
+ }
415
+ ```
416
+
417
+ ---
418
+
419
+ ## `skills`
420
+
421
+ - **Type:** `string[]`
422
+ - **Description:** Directories to scan for “skills” definitions.
423
+
424
+ ### Example
425
+ ```json
426
+ {
427
+ "skills": [".knowhow/skills", "skills"]
428
+ }
429
+ ```
430
+
431
+ ---
432
+
433
+ ## `files` (file sync config)
434
+
435
+ - **Type:** `FileSyncConfig` *(schema varies by Knowhow build/version)*
436
+ - **Description:** Configure how files are synced between local filesystem and Knowhow’s filesystem/runtime.
437
+
438
+ ### Example (illustrative shape)
439
+ ```json
440
+ {
441
+ "files": {
442
+ "syncDir": ".knowhow/sync",
443
+ "include": ["src/**/*", ".knowhow/docs/**/*"],
444
+ "exclude": ["**/node_modules/**", "**/.git/**"]
445
+ }
446
+ }
447
+ ```
448
+
449
+ > If you paste your `Config`/`FileSyncConfig` type from `src/types.ts`, I can replace this “illustrative shape” with the exact keys/types.
450
+
451
+ ---
452
+
453
+ ## `ycmd` (language server)
454
+
455
+ - **Type:** `YcmdConfig`
456
+ - **Description:** Configure the ycmd language server.
457
+
458
+ ### `YcmdConfig`
459
+
460
+ | Key | Type | Required | Description | Example |
461
+ |---|---|---:|---|---|
462
+ | `enabled` | `boolean` | ❌ | Whether ycmd is enabled. | `true` |
463
+ | `installPath` | `string` | ❌ | ycmd install path. | `~/.knowhow/ycmd` |
464
+ | `port` | `number` | ❌ | Listening port (`0` may mean “auto”). | `0` |
465
+ | `logLevel` | `string` | ❌ | Logging verbosity. | `info` |
466
+ | `completionTimeout` | `number` | ❌ | Completion request timeout (ms). | `5000` |
467
+
468
+ ### Example
469
+ ```json
470
+ {
471
+ "ycmd": {
472
+ "enabled": true,
473
+ "installPath": "~/.knowhow/ycmd",
474
+ "port": 0,
475
+ "logLevel": "debug",
476
+ "completionTimeout": 10000
477
+ }
478
+ }
479
+ ```
480
+
481
+ ---
482
+
483
+ ## Minimal `knowhow.json` example
484
+
485
+ ```json
486
+ {
487
+ "promptsDir": ".knowhow/prompts",
488
+ "plugins": {
489
+ "enabled": ["embeddings", "language", "git", "exec"],
490
+ "disabled": []
491
+ },
492
+ "lintCommands": {
493
+ "ts": "eslint $1",
494
+ "js": "eslint $1"
495
+ },
496
+ "sources": [
497
+ {
498
+ "input": "src/**/*.mdx",
499
+ "output": ".knowhow/docs/",
500
+ "prompt": "BasicCodeDocumenter"
501
+ }
502
+ ],
503
+ "embedSources": [
504
+ {
505
+ "input": ".knowhow/docs/**/*.mdx",
506
+ "output": ".knowhow/embeddings/docs.json",
507
+ "prompt": "BasicEmbeddingExplainer",
508
+ "chunkSize": 2000
509
+ }
510
+ ],
511
+ "embeddingModel": "openai:EmbeddingAda2",
512
+ "agents": [
513
+ {
514
+ "name": "Example agent",
515
+ "instructions": "Reply to the user saying 'Hello, world!'",
516
+ "model": "gpt-4o-2024-08-06",
517
+ "provider": "openai"
518
+ }
519
+ ],
520
+ "mcps": [
521
+ {
522
+ "name": "browser",
523
+ "command": "npx",
524
+ "args": ["-y", "@playwright/mcp@latest", "--browser", "chrome"]
525
+ }
526
+ ],
527
+ "modelProviders": [{ "url": "http://localhost:1234", "provider": "lms" }],
528
+ "worker": {
529
+ "tunnel": { "enabled": false, "allowedPorts": [] }
530
+ }
531
+ }
532
+ ```
533
+
534
+ ---
535
+
536
+ ### Want this to be 100% exact to your codebase?
537
+ If you paste `src/config.ts` and `src/types.ts` (the actual `Config`, `SourceConfig`, `EmbedSourceConfig`, `WorkerConfig`, `FileSyncConfig`, and `YcmdConfig` type definitions), I can regenerate this reference with:
538
+ - exact field names (no illustrative placeholders),
539
+ - exact optional/required fields,
540
+ - exact union literal types (e.g., allowed `uploadMode` values, `logLevel` enum values),
541
+ - and the real list of built-in plugin names + what each one does.