@tyvm/knowhow 0.0.90 → 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 (262) hide show
  1. package/.depcheckrc +31 -0
  2. package/bin/knowhow.js +1 -1
  3. package/package.json +4 -32
  4. package/src/agents/tools/executeScript/index.ts +5 -0
  5. package/src/agents/tools/googleSearch.ts +2 -2
  6. package/src/agents/tools/index.ts +0 -3
  7. package/src/agents/tools/list.ts +0 -147
  8. package/src/agents/tools/loadWebpage.ts +3 -113
  9. package/src/auth/browserLogin.ts +10 -13
  10. package/src/cli.ts +63 -3
  11. package/src/clients/gemini.ts +96 -25
  12. package/src/clients/http.ts +7 -11
  13. package/src/clients/pricing/google.ts +122 -26
  14. package/src/conversion.ts +24 -54
  15. package/src/index.ts +8 -1
  16. package/src/login.ts +5 -6
  17. package/src/plugins/language.ts +0 -4
  18. package/src/plugins/plugins.ts +0 -14
  19. package/src/plugins/url.ts +31 -12
  20. package/src/services/GitHub.ts +2 -2
  21. package/src/services/KnowhowClient.ts +34 -34
  22. package/src/{plugins/downloader/downloader.ts → services/MediaProcessorService.ts} +109 -267
  23. package/src/services/S3.ts +16 -16
  24. package/src/services/index.ts +4 -4
  25. package/src/services/modules/index.ts +10 -2
  26. package/src/services/modules/types.ts +5 -2
  27. package/src/services/script-execution/ScriptExecutor.ts +29 -10
  28. package/src/services/script-execution/ScriptPolicy.ts +6 -2
  29. package/src/types.ts +1 -0
  30. package/src/utils/http.ts +127 -0
  31. package/src/workers/auth/PasskeySetup.ts +7 -11
  32. package/tests/clients/AIClient.test.ts +24 -21
  33. package/tests/manual/file-edits/figma.test.ts +3 -70
  34. package/tests/plugins/language/languagePlugin-content-triggers.test.ts +2 -0
  35. package/tests/plugins/language/languagePlugin.test.ts +2 -0
  36. package/tests/processors/ToolResponseCache.test.ts +2 -2
  37. package/tests/test.spec.ts +0 -14
  38. package/tests/unit/modules/moduleLoading.test.ts +7 -4
  39. package/tests/unit/plugins/pluginLoading.test.ts +6 -6
  40. package/ts_build/package.json +4 -32
  41. package/ts_build/src/agents/tools/ast/astAppendNode.d.ts +1 -1
  42. package/ts_build/src/agents/tools/ast/astAppendNode.js +2 -90
  43. package/ts_build/src/agents/tools/ast/astAppendNode.js.map +1 -1
  44. package/ts_build/src/agents/tools/ast/astDeleteNode.d.ts +1 -1
  45. package/ts_build/src/agents/tools/ast/astDeleteNode.js +2 -88
  46. package/ts_build/src/agents/tools/ast/astDeleteNode.js.map +1 -1
  47. package/ts_build/src/agents/tools/ast/astEditNode.d.ts +1 -1
  48. package/ts_build/src/agents/tools/ast/astEditNode.js +2 -90
  49. package/ts_build/src/agents/tools/ast/astEditNode.js.map +1 -1
  50. package/ts_build/src/agents/tools/ast/astGetPathForLine.d.ts +1 -1
  51. package/ts_build/src/agents/tools/ast/astGetPathForLine.js +2 -72
  52. package/ts_build/src/agents/tools/ast/astGetPathForLine.js.map +1 -1
  53. package/ts_build/src/agents/tools/ast/astListPaths.d.ts +1 -1
  54. package/ts_build/src/agents/tools/ast/astListPaths.js +2 -72
  55. package/ts_build/src/agents/tools/ast/astListPaths.js.map +1 -1
  56. package/ts_build/src/agents/tools/executeScript/index.d.ts +3 -2
  57. package/ts_build/src/agents/tools/executeScript/index.js +4 -1
  58. package/ts_build/src/agents/tools/executeScript/index.js.map +1 -1
  59. package/ts_build/src/agents/tools/googleSearch.js +2 -2
  60. package/ts_build/src/agents/tools/googleSearch.js.map +1 -1
  61. package/ts_build/src/agents/tools/index.d.ts +0 -3
  62. package/ts_build/src/agents/tools/index.js +0 -3
  63. package/ts_build/src/agents/tools/index.js.map +1 -1
  64. package/ts_build/src/agents/tools/list.js +0 -138
  65. package/ts_build/src/agents/tools/list.js.map +1 -1
  66. package/ts_build/src/agents/tools/loadWebpage.js +1 -89
  67. package/ts_build/src/agents/tools/loadWebpage.js.map +1 -1
  68. package/ts_build/src/agents/tools/textSearch.d.ts +1 -1
  69. package/ts_build/src/auth/browserLogin.js +7 -7
  70. package/ts_build/src/auth/browserLogin.js.map +1 -1
  71. package/ts_build/src/cli.d.ts +1 -1
  72. package/ts_build/src/cli.js +47 -1
  73. package/ts_build/src/cli.js.map +1 -1
  74. package/ts_build/src/clients/gemini.d.ts +1 -73
  75. package/ts_build/src/clients/gemini.js +57 -19
  76. package/ts_build/src/clients/gemini.js.map +1 -1
  77. package/ts_build/src/clients/http.js +5 -9
  78. package/ts_build/src/clients/http.js.map +1 -1
  79. package/ts_build/src/clients/pricing/google.d.ts +17 -73
  80. package/ts_build/src/clients/pricing/google.js +47 -10
  81. package/ts_build/src/clients/pricing/google.js.map +1 -1
  82. package/ts_build/src/conversion.d.ts +1 -4
  83. package/ts_build/src/conversion.js +12 -27
  84. package/ts_build/src/conversion.js.map +1 -1
  85. package/ts_build/src/index.d.ts +4 -0
  86. package/ts_build/src/index.js +7 -1
  87. package/ts_build/src/index.js.map +1 -1
  88. package/ts_build/src/login.js +5 -4
  89. package/ts_build/src/login.js.map +1 -1
  90. package/ts_build/src/plugins/downloader/downloader.js +3 -3
  91. package/ts_build/src/plugins/downloader/downloader.js.map +1 -1
  92. package/ts_build/src/plugins/language.js.map +1 -1
  93. package/ts_build/src/plugins/plugins.js +0 -14
  94. package/ts_build/src/plugins/plugins.js.map +1 -1
  95. package/ts_build/src/plugins/tree-sitter/editor.d.ts +3 -32
  96. package/ts_build/src/plugins/tree-sitter/editor.js +6 -208
  97. package/ts_build/src/plugins/tree-sitter/editor.js.map +1 -1
  98. package/ts_build/src/plugins/tree-sitter/parser.d.ts +19 -54
  99. package/ts_build/src/plugins/tree-sitter/parser.js +19 -293
  100. package/ts_build/src/plugins/tree-sitter/parser.js.map +1 -1
  101. package/ts_build/src/plugins/tree-sitter/simple-paths.d.ts +2 -15
  102. package/ts_build/src/plugins/tree-sitter/simple-paths.js +2 -324
  103. package/ts_build/src/plugins/tree-sitter/simple-paths.js.map +1 -1
  104. package/ts_build/src/plugins/url.js +27 -8
  105. package/ts_build/src/plugins/url.js.map +1 -1
  106. package/ts_build/src/services/GitHub.js +2 -2
  107. package/ts_build/src/services/GitHub.js.map +1 -1
  108. package/ts_build/src/services/KnowhowClient.d.ts +29 -29
  109. package/ts_build/src/services/KnowhowClient.js +33 -33
  110. package/ts_build/src/services/KnowhowClient.js.map +1 -1
  111. package/ts_build/src/services/MediaProcessorService.d.ts +22 -0
  112. package/ts_build/src/services/MediaProcessorService.js +215 -0
  113. package/ts_build/src/services/MediaProcessorService.js.map +1 -0
  114. package/ts_build/src/services/S3.js +12 -18
  115. package/ts_build/src/services/S3.js.map +1 -1
  116. package/ts_build/src/services/index.d.ts +3 -2
  117. package/ts_build/src/services/index.js +3 -3
  118. package/ts_build/src/services/index.js.map +1 -1
  119. package/ts_build/src/services/modules/index.js +10 -2
  120. package/ts_build/src/services/modules/index.js.map +1 -1
  121. package/ts_build/src/services/modules/types.d.ts +5 -2
  122. package/ts_build/src/services/script-execution/ScriptExecutor.js +22 -7
  123. package/ts_build/src/services/script-execution/ScriptExecutor.js.map +1 -1
  124. package/ts_build/src/services/script-execution/ScriptPolicy.d.ts +1 -1
  125. package/ts_build/src/services/script-execution/ScriptPolicy.js +4 -2
  126. package/ts_build/src/services/script-execution/ScriptPolicy.js.map +1 -1
  127. package/ts_build/src/types.d.ts +1 -0
  128. package/ts_build/src/types.js +1 -0
  129. package/ts_build/src/types.js.map +1 -1
  130. package/ts_build/src/utils/http.d.ts +27 -0
  131. package/ts_build/src/utils/http.js +98 -0
  132. package/ts_build/src/utils/http.js.map +1 -0
  133. package/ts_build/src/workers/auth/PasskeySetup.js +6 -7
  134. package/ts_build/src/workers/auth/PasskeySetup.js.map +1 -1
  135. package/ts_build/tests/clients/AIClient.test.js +11 -14
  136. package/ts_build/tests/clients/AIClient.test.js.map +1 -1
  137. package/ts_build/tests/manual/file-edits/figma.test.d.ts +0 -1
  138. package/ts_build/tests/manual/file-edits/figma.test.js +1 -46
  139. package/ts_build/tests/manual/file-edits/figma.test.js.map +1 -1
  140. package/ts_build/tests/plugins/language/languagePlugin-content-triggers.test.js +2 -0
  141. package/ts_build/tests/plugins/language/languagePlugin-content-triggers.test.js.map +1 -1
  142. package/ts_build/tests/plugins/language/languagePlugin.test.js +2 -0
  143. package/ts_build/tests/plugins/language/languagePlugin.test.js.map +1 -1
  144. package/ts_build/tests/processors/ToolResponseCache.test.js +2 -2
  145. package/ts_build/tests/processors/ToolResponseCache.test.js.map +1 -1
  146. package/ts_build/tests/test.spec.js +0 -14
  147. package/ts_build/tests/test.spec.js.map +1 -1
  148. package/ts_build/tests/tree-sitter/tree-sitter.test.d.ts +0 -1
  149. package/ts_build/tests/tree-sitter/tree-sitter.test.js +2 -183
  150. package/ts_build/tests/tree-sitter/tree-sitter.test.js.map +1 -1
  151. package/ts_build/tests/unit/modules/moduleLoading.test.js +6 -4
  152. package/ts_build/tests/unit/modules/moduleLoading.test.js.map +1 -1
  153. package/ts_build/tests/unit/plugins/pluginLoading.test.js +4 -4
  154. package/ts_build/tests/unit/plugins/pluginLoading.test.js.map +1 -1
  155. package/benchmarks/.dockerignore +0 -7
  156. package/benchmarks/README.md +0 -166
  157. package/benchmarks/docker/Dockerfile +0 -68
  158. package/benchmarks/example-config.yml +0 -27
  159. package/benchmarks/jest.config.js +0 -13
  160. package/benchmarks/package-lock.json +0 -4297
  161. package/benchmarks/package.json +0 -39
  162. package/benchmarks/results/27b0a06/2025-09-27/xai/xai-grok-code-fast-1.json +0 -2909
  163. package/benchmarks/results/4057aed/2025-08-14/anthropic/anthropic-claude-sonnet-4-20250514.json +0 -1671
  164. package/benchmarks/results/4542435/2025-08-05/lms/lms-openai-gpt-oss-20b.json +0 -2814
  165. package/benchmarks/results/4542435/2025-08-05/lms/lms-qwen-qwen3-30b-a3b-2507.json +0 -2014
  166. package/benchmarks/results/4fb9125/2025-08-07/anthropic/anthropic-claude-sonnet-4-20250514.json +0 -3121
  167. package/benchmarks/results/5766aee/2025-08-02/lms-qwen/qwen3-coder-30b.json +0 -98
  168. package/benchmarks/results/6d73808/2025-08-07/openai/openai-gpt-5.json +0 -3256
  169. package/benchmarks/results/77bf0a6/2025-08-02/lms-qwen/qwen3-30b-a3b-2507.json +0 -4298
  170. package/benchmarks/results/8c0d445/2025-08-03/anthropic/anthropic-claude-sonnet-4-20250514.json +0 -3031
  171. package/benchmarks/results/8c0d445/2025-08-03/openai/openai-gpt-4.1-2025-04-14.json +0 -2990
  172. package/benchmarks/results/ac6b2ab/2025-08-03/anthropic/anthropic-claude-sonnet-4-20250514.json +0 -3256
  173. package/benchmarks/results/ac6b2ab/2025-08-03/lms/lms-qwen-qwen3-coder-30b.json +0 -3007
  174. package/benchmarks/results/ac6b2ab/2025-08-03/openai/openai-gpt-4.1-2025-04-14.json +0 -3256
  175. package/benchmarks/results/ac6b2ab/2025-08-03/openai/openai-gpt-4.1-mini-2025-04-14.json +0 -3036
  176. package/benchmarks/results/ac6b2ab/2025-08-03/openai/openai-gpt-4.1-nano-2025-04-14.json +0 -3280
  177. package/benchmarks/results/adff675/2025-08-04/lms/lms-qwen-qwen3-30b-a3b-2507.json +0 -1920
  178. package/benchmarks/results/adff675/2025-08-04/lms/lms-qwen-qwen3-coder-30b.json +0 -3281
  179. package/benchmarks/results/b502ed9/2025-08-03/lms-qwen/qwen3-coder-30b.json +0 -2896
  180. package/benchmarks/results/d1a8129/2025-08-03/lms/lms-qwen-qwen3-coder-30b.json +0 -3011
  181. package/benchmarks/results/e60471c/2025-08-03/lms/qwen3-30b-a3b-2507.json +0 -3003
  182. package/benchmarks/scripts/build-and-run.sh +0 -47
  183. package/benchmarks/scripts/clone-exercism.sh +0 -92
  184. package/benchmarks/scripts/validate.sh +0 -48
  185. package/benchmarks/src/__tests__/runner.test.ts +0 -27
  186. package/benchmarks/src/cli.ts +0 -90
  187. package/benchmarks/src/evaluators/EvaluatorRegistry.ts +0 -64
  188. package/benchmarks/src/evaluators/JavaScriptEvaluator.ts +0 -183
  189. package/benchmarks/src/evaluators/index.ts +0 -3
  190. package/benchmarks/src/evaluators/types.ts +0 -22
  191. package/benchmarks/src/index.ts +0 -3
  192. package/benchmarks/src/providers.ts +0 -13
  193. package/benchmarks/src/runner.ts +0 -824
  194. package/benchmarks/src/types.ts +0 -63
  195. package/benchmarks/tsconfig.json +0 -19
  196. package/leaderboard/README.md +0 -148
  197. package/leaderboard/app/api/benchmark-data/route.ts +0 -131
  198. package/leaderboard/app/api/benchmark-detail/route.ts +0 -172
  199. package/leaderboard/app/details/[model]/[provider]/[language]/page.tsx +0 -501
  200. package/leaderboard/app/exercise/[model]/[provider]/[language]/[exercise]/page.tsx +0 -375
  201. package/leaderboard/app/globals.css +0 -27
  202. package/leaderboard/app/layout.tsx +0 -21
  203. package/leaderboard/app/page.tsx +0 -170
  204. package/leaderboard/components/LeaderboardTable.tsx +0 -168
  205. package/leaderboard/components/PerformanceChart.tsx +0 -109
  206. package/leaderboard/next-env.d.ts +0 -5
  207. package/leaderboard/next.config.js +0 -4
  208. package/leaderboard/package-lock.json +0 -6363
  209. package/leaderboard/package.json +0 -28
  210. package/leaderboard/postcss.config.js +0 -6
  211. package/leaderboard/tailwind.config.js +0 -17
  212. package/leaderboard/tsconfig.json +0 -28
  213. package/leaderboard/types/benchmark.ts +0 -67
  214. package/leaderboard/utils/dataProcessor.ts +0 -33
  215. package/src/agents/tools/asana/definitions.ts +0 -199
  216. package/src/agents/tools/asana/index.ts +0 -108
  217. package/src/agents/tools/ast/astAppendNode.ts +0 -90
  218. package/src/agents/tools/ast/astDeleteNode.ts +0 -88
  219. package/src/agents/tools/ast/astEditNode.ts +0 -95
  220. package/src/agents/tools/ast/astGetPathForLine.ts +0 -73
  221. package/src/agents/tools/ast/astListPaths.ts +0 -66
  222. package/src/agents/tools/ast/index.ts +0 -7
  223. package/src/agents/tools/github/definitions.ts +0 -89
  224. package/src/agents/tools/github/index.ts +0 -67
  225. package/src/chat-old.ts +0 -446
  226. package/src/plugins/asana.ts +0 -146
  227. package/src/plugins/downloader/plugin.ts +0 -103
  228. package/src/plugins/downloader/types.ts +0 -92
  229. package/src/plugins/figma.ts +0 -158
  230. package/src/plugins/github.ts +0 -219
  231. package/src/plugins/jira.ts +0 -115
  232. package/src/plugins/linear.ts +0 -230
  233. package/src/plugins/notion.ts +0 -179
  234. package/src/plugins/tree-sitter/editor.ts +0 -369
  235. package/src/plugins/tree-sitter/lang-packs/index.ts +0 -23
  236. package/src/plugins/tree-sitter/lang-packs/java.ts +0 -59
  237. package/src/plugins/tree-sitter/lang-packs/javascript.ts +0 -57
  238. package/src/plugins/tree-sitter/lang-packs/python.ts +0 -45
  239. package/src/plugins/tree-sitter/lang-packs/types.ts +0 -79
  240. package/src/plugins/tree-sitter/lang-packs/typescript.ts +0 -49
  241. package/src/plugins/tree-sitter/parser.ts +0 -470
  242. package/src/plugins/tree-sitter/simple-paths.ts +0 -467
  243. package/tests/tree-sitter/editor.test.ts +0 -113
  244. package/tests/tree-sitter/invalid.test.ts +0 -299
  245. package/tests/tree-sitter/paths/common-edits.test.ts +0 -564
  246. package/tests/tree-sitter/paths/debug-exact-position.test.ts +0 -44
  247. package/tests/tree-sitter/paths/debug-line-indexing.test.ts +0 -49
  248. package/tests/tree-sitter/paths/debug-paths.test.ts +0 -90
  249. package/tests/tree-sitter/paths/paths.test.ts +0 -170
  250. package/tests/tree-sitter/paths/simple-paths.test.ts +0 -367
  251. package/tests/tree-sitter/sample-after.ts +0 -48
  252. package/tests/tree-sitter/sample-before.ts +0 -25
  253. package/tests/tree-sitter/test-files/completely-broken.ts +0 -7
  254. package/tests/tree-sitter/test-files/duplicate-braces.ts +0 -39
  255. package/tests/tree-sitter/test-files/invalid-nesting.ts +0 -39
  256. package/tests/tree-sitter/test-files/malformed-signature.ts +0 -39
  257. package/tests/tree-sitter/test-files/mismatched-parens.ts +0 -39
  258. package/tests/tree-sitter/test-files/missing-semicolon.ts +0 -39
  259. package/tests/tree-sitter/test-files/partially-broken.ts +0 -20
  260. package/tests/tree-sitter/test-files/specific-errors.ts +0 -14
  261. package/tests/tree-sitter/test-files/unclosed-string.ts +0 -39
  262. package/tests/tree-sitter/tree-sitter.test.ts +0 -251
@@ -1,217 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TreeEditor = void 0;
4
- const simple_paths_1 = require("./simple-paths");
5
- const fs_1 = require("fs");
6
- const diff_1 = require("diff");
7
4
  class TreeEditor {
8
- parser;
9
- originalText;
10
- tree;
11
- pathResolver;
12
- constructor(parser, sourceCode, originalText, existingTree) {
13
- this.parser = parser;
14
- this.originalText = originalText || sourceCode;
15
- this.tree = existingTree || parser.parseString(sourceCode);
16
- this.pathResolver = new simple_paths_1.SimplePathResolver(parser);
5
+ constructor(..._args) {
6
+ throw new Error("Tree-sitter TreeEditor has been moved to @tyvm/knowhow-module-ast. Install that package and add it to your knowhow.json modules.");
17
7
  }
18
- createModified(newText) {
19
- return new TreeEditor(this.parser, newText, this.originalText);
8
+ static fromFile(..._args) {
9
+ throw new Error("Tree-sitter TreeEditor has been moved to @tyvm/knowhow-module-ast.");
20
10
  }
21
- static fromFile(parser, filePath) {
22
- const sourceCode = (0, fs_1.readFileSync)(filePath, "utf8");
23
- return new TreeEditor(parser, sourceCode);
24
- }
25
- static fromTree(parser, tree) {
26
- const sourceCode = tree.rootNode.text;
27
- return new TreeEditor(parser, sourceCode, sourceCode, tree);
28
- }
29
- addLines(path, content, afterLine) {
30
- const lines = this.getCurrentText().split("\n");
31
- const insertIndex = afterLine !== undefined ? afterLine : lines.length;
32
- const contentLines = content.split("\n");
33
- lines.splice(insertIndex, 0, ...contentLines);
34
- const newText = lines.join("\n");
35
- return this.createModified(newText);
36
- }
37
- removeLines(startLine, endLine) {
38
- const lines = this.getCurrentText().split("\n");
39
- const end = endLine !== undefined ? endLine : startLine;
40
- lines.splice(startLine, end - startLine + 1);
41
- const newText = lines.join("\n");
42
- return this.createModified(newText);
43
- }
44
- updateLine(lineNumber, newContent) {
45
- const lines = this.getCurrentText().split("\n");
46
- if (lineNumber >= 0 && lineNumber < lines.length) {
47
- lines[lineNumber] = newContent;
48
- }
49
- const newText = lines.join("\n");
50
- return this.createModified(newText);
51
- }
52
- updateNodeByPath(path, newContent) {
53
- const node = this.resolvePathToNode(path);
54
- if (!node) {
55
- throw new Error(`Node not found at path: ${path}`);
56
- }
57
- const currentText = this.getCurrentText();
58
- const lines = currentText.split("\n");
59
- const startLine = node.startPosition.row;
60
- const endLine = node.endPosition.row;
61
- const startCol = node.startPosition.column;
62
- const endCol = node.endPosition.column;
63
- if (startLine === endLine) {
64
- const line = lines[startLine];
65
- lines[startLine] =
66
- line.substring(0, startCol) + newContent + line.substring(endCol);
67
- }
68
- else {
69
- const firstLine = lines[startLine].substring(0, startCol) + newContent;
70
- const lastLine = lines[endLine].substring(endCol);
71
- lines.splice(startLine, endLine - startLine + 1, firstLine + lastLine);
72
- }
73
- const newText = lines.join("\n");
74
- return this.createModified(newText);
75
- }
76
- deleteNodeByPath(path) {
77
- return this.updateNodeByPath(path, "");
78
- }
79
- updateNodeBySimplePath(simplePath, newContent) {
80
- return this.updateNodeByPath(simplePath, newContent);
81
- }
82
- findNodesBySimplePath(simplePath) {
83
- return this.pathResolver.findBySimplePath(this.tree, simplePath);
84
- }
85
- getAllSimplePaths() {
86
- return this.pathResolver.getAllSimplePaths(this.tree);
87
- }
88
- resolvePathToNode(path) {
89
- const simpleMatches = this.pathResolver.findBySimplePath(this.tree, path);
90
- if (simpleMatches.length > 0) {
91
- if (simpleMatches.length > 1) {
92
- throw new Error(`Multiple nodes found for path: ${path}. Found: ${simpleMatches
93
- .map((m) => m.description)
94
- .join(", ")}`);
95
- }
96
- return simpleMatches[0].node;
97
- }
98
- return this.findNodeByPath(path);
99
- }
100
- insertBefore(parentPath, content, beforeKinds) {
101
- const parentNode = this.resolvePathToNode(parentPath);
102
- if (!parentNode) {
103
- throw new Error(`No nodes found for path: ${parentPath}`);
104
- }
105
- const bodyNode = this.parser.getBodyNode(parentNode);
106
- if (!bodyNode) {
107
- throw new Error(`Cannot find body node for path: ${parentPath}`);
108
- }
109
- for (const child of bodyNode.children) {
110
- if (beforeKinds.includes(this.parser.nodeKind(child))) {
111
- return this.addLines("", content, child.startPosition.row);
112
- }
113
- }
114
- return this.appendChild(parentPath, content);
115
- }
116
- appendChild(parentPath, content) {
117
- if (parentPath === "") {
118
- const current = this.getCurrentText();
119
- const newText = current + "\n\n" + content;
120
- return this.createModified(newText);
121
- }
122
- const parentNode = this.resolvePathToNode(parentPath);
123
- if (!parentNode) {
124
- throw new Error(`No nodes found for path: ${parentPath}`);
125
- }
126
- const bodyNode = this.parser.getBodyNode(parentNode);
127
- if (!bodyNode) {
128
- throw new Error(`Cannot find body node for path: ${parentPath}`);
129
- }
130
- const currentText = this.getCurrentText();
131
- const lines = currentText.split("\n");
132
- const endLine = bodyNode.endPosition.row;
133
- const endCol = bodyNode.endPosition.column;
134
- const insertLine = endLine;
135
- const contentLines = content.split("\n");
136
- const firstNonEmptyLine = contentLines.find((line) => line.trim() !== "");
137
- const isAlreadyIndented = firstNonEmptyLine && firstNonEmptyLine.startsWith(" ");
138
- const indentedContent = contentLines
139
- .map((line, index) => {
140
- if (line.trim() === "")
141
- return line;
142
- if (isAlreadyIndented) {
143
- return line;
144
- }
145
- else {
146
- return " " + line;
147
- }
148
- })
149
- .join("\n");
150
- lines.splice(insertLine, 0, indentedContent);
151
- const newText = lines.join("\n");
152
- return this.createModified(newText);
153
- }
154
- addMethodToClass(className, methodContent) {
155
- return this.appendChild(className, methodContent);
156
- }
157
- addPropertyToClass(className, propertyContent) {
158
- return this.insertBefore(className, propertyContent, [
159
- "method",
160
- "constructor",
161
- ]);
162
- }
163
- appendToBlock(blockPath, content) {
164
- return this.appendChild(blockPath, content);
165
- }
166
- updateBlock(blockPath, content) {
167
- return this.updateNodeByPath(blockPath, content);
168
- }
169
- deleteBlock(blockPath) {
170
- return this.deleteNodeByPath(blockPath);
171
- }
172
- getAllNodes(node) {
173
- const nodes = [node];
174
- for (let i = 0; i < node.childCount; i++) {
175
- const child = node.child(i);
176
- if (child) {
177
- nodes.push(...this.getAllNodes(child));
178
- }
179
- }
180
- return nodes;
181
- }
182
- findPathsForLine(tree, searchText) {
183
- return this.parser.findPathsForLine(tree, searchText);
184
- }
185
- findNodeByPath(path) {
186
- const parts = path.split("/");
187
- if (parts.length === 0)
188
- return null;
189
- let current = this.tree.rootNode;
190
- for (const part of parts) {
191
- const match = part.match(/^(.+)\[(\d+)\]$/);
192
- if (!match)
193
- return null;
194
- const [, nodeType, indexStr] = match;
195
- const index = parseInt(indexStr, 10);
196
- if (index >= current.children.length ||
197
- current.children[index].type !== nodeType) {
198
- return null;
199
- }
200
- current = current.children[index];
201
- }
202
- return current;
203
- }
204
- getCurrentText() {
205
- if (!this.tree || !this.tree.rootNode) {
206
- throw new Error("Failed to parse source code. Tree:" + this.tree);
207
- }
208
- return this.tree.rootNode.text;
209
- }
210
- getTree() {
211
- return this.tree;
212
- }
213
- generateDiff() {
214
- return (0, diff_1.createPatch)("original", this.originalText, this.getCurrentText(), "original", "modified");
11
+ static fromTree(..._args) {
12
+ throw new Error("Tree-sitter TreeEditor has been moved to @tyvm/knowhow-module-ast.");
215
13
  }
216
14
  }
217
15
  exports.TreeEditor = TreeEditor;
@@ -1 +1 @@
1
- {"version":3,"file":"editor.js","sourceRoot":"","sources":["../../../../src/plugins/tree-sitter/editor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"editor.js","sourceRoot":"","sources":["../../../../src/plugins/tree-sitter/editor.ts"],"names":[],"mappings":";;;AAKA,MAAa,UAAU;IACrB,YAAY,GAAG,KAAY;QACzB,MAAM,IAAI,KAAK,CACb,kIAAkI,CACnI,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAY;QAC7B,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAY;QAC7B,MAAM,IAAI,KAAK,CACb,oEAAoE,CACrE,CAAC;IACJ,CAAC;CACF;AAhBD,gCAgBC"}
@@ -1,25 +1,21 @@
1
- import Parser from "tree-sitter";
2
- import { LanguagePackConfig, BodyRule, NormalizedKind } from "./lang-packs/types";
3
- export type Tree = Parser.Tree;
4
- export type SyntaxNode = Parser.SyntaxNode;
1
+ export declare class LanguageAgnosticParser {
2
+ static supportsFile(_filePath: string): boolean;
3
+ static supportsLanguage(_language: string): boolean;
4
+ static createParserForFile(_filePath: string): never;
5
+ static createTypeScriptParser(): never;
6
+ static createJavaScriptParser(): never;
7
+ static suportedLanguages(): string[];
8
+ static resolveLanguageName(name: string): string;
9
+ }
10
+ export type Tree = any;
11
+ export type SyntaxNode = any;
5
12
  export interface TreeNode {
6
13
  type: string;
7
14
  text: string;
8
- startPosition: {
9
- row: number;
10
- column: number;
11
- };
12
- endPosition: {
13
- row: number;
14
- column: number;
15
- };
15
+ startPosition: any;
16
+ endPosition: any;
16
17
  children: TreeNode[];
17
18
  }
18
- export interface LanguageConfig {
19
- language: any;
20
- methodDeclarationTypes: string[];
21
- classDeclarationTypes: string[];
22
- }
23
19
  export interface PathLocation {
24
20
  path: string;
25
21
  row: number;
@@ -32,44 +28,13 @@ export interface TreeEdit {
32
28
  content?: string;
33
29
  lineNumber?: number;
34
30
  }
35
- export declare function getLanguagePackForLanguage(languageName: string): LanguagePackConfig | undefined;
36
- export declare class LanguageAgnosticParser {
37
- parser: Parser;
38
- currentLanguagePack?: LanguagePackConfig;
39
- constructor(language: string);
40
- static resolveLanguageName(extOrName: string): string;
41
- static suportedLanguages(): string[];
42
- static createParserForFile(filePath: string): LanguageAgnosticParser;
43
- static createTypeScriptParser(): LanguageAgnosticParser;
44
- static createJavaScriptParser(): LanguageAgnosticParser;
45
- static supportsLanguage(languageName: string): boolean;
46
- static supportsFile(filePath: string): boolean;
47
- private setupFromLanguageName;
48
- private setupParserForLanguage;
49
- setLanguagePack(languageName: string): void;
50
- getLanguagePack(): LanguagePackConfig | undefined;
51
- getLanguage(): string | undefined;
52
- nodeKind(node: Parser.SyntaxNode): NormalizedKind;
53
- applyRule(node: Parser.SyntaxNode, rule: BodyRule, pack: LanguagePackConfig): Parser.SyntaxNode | undefined;
54
- getBodyNodeWithLanguagePack(node: Parser.SyntaxNode, pack: LanguagePackConfig): Parser.SyntaxNode | undefined;
55
- getBodyNode(node: Parser.SyntaxNode): Parser.SyntaxNode | null;
56
- getBodyNodeForLanguage(node: Parser.SyntaxNode, language: string): Parser.SyntaxNode | undefined;
57
- getNodeKindForLanguage(node: Parser.SyntaxNode, language: string): NormalizedKind;
58
- parseFile(filePath: string): Parser.Tree;
59
- parseString(sourceCode: string): Parser.Tree;
60
- getFileText(tree: Parser.Tree): string;
61
- findPathsForLine(tree: Parser.Tree, searchText: string): PathLocation[];
62
- getNodePath(rootNode: Parser.SyntaxNode, targetNode: Parser.SyntaxNode): string;
63
- nodeToObject(node: Parser.SyntaxNode): TreeNode;
64
- findNodesByType(tree: Parser.Tree, nodeType: string): Parser.SyntaxNode[];
65
- getTypesForKind(kind: NormalizedKind): string[];
66
- findNodesByKind(tree: Parser.Tree, kind: NormalizedKind): Parser.SyntaxNode[];
67
- findClassDeclarations(tree: Parser.Tree): Parser.SyntaxNode[];
68
- findMethodDeclarations(tree: Parser.Tree): Parser.SyntaxNode[];
69
- printTree(node: Parser.SyntaxNode, indent?: string): string;
70
- findErrorNodes(node: Parser.SyntaxNode): Parser.SyntaxNode[];
31
+ export interface LanguageConfig {
32
+ language: any;
33
+ methodDeclarationTypes: string[];
34
+ classDeclarationTypes: string[];
71
35
  }
72
- export declare function compareTreeStructures(tree1: Parser.Tree, tree2: Parser.Tree): {
36
+ export declare function getLanguagePackForLanguage(_languageName: string): undefined;
37
+ export declare function compareTreeStructures(_tree1: any, _tree2: any): {
73
38
  differences: string[];
74
39
  summary: string;
75
40
  };
@@ -1,310 +1,36 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.compareTreeStructures = exports.LanguageAgnosticParser = exports.getLanguagePackForLanguage = void 0;
7
- const tree_sitter_1 = __importDefault(require("tree-sitter"));
8
- const tree_sitter_typescript_1 = __importDefault(require("tree-sitter-typescript"));
9
- const tree_sitter_javascript_1 = __importDefault(require("tree-sitter-javascript"));
10
- const fs_1 = require("fs");
11
- const lang_packs_1 = require("./lang-packs");
12
- function getLanguagePackForLanguage(languageName) {
13
- const normalizedName = LanguageAgnosticParser.resolveLanguageName(languageName);
14
- return (0, lang_packs_1.getLanguagePack)(normalizedName);
15
- }
16
- exports.getLanguagePackForLanguage = getLanguagePackForLanguage;
3
+ exports.compareTreeStructures = exports.getLanguagePackForLanguage = exports.LanguageAgnosticParser = void 0;
17
4
  class LanguageAgnosticParser {
18
- parser;
19
- currentLanguagePack;
20
- constructor(language) {
21
- this.parser = new tree_sitter_1.default();
22
- this.setupFromLanguageName(language);
5
+ static supportsFile(_filePath) {
6
+ return false;
23
7
  }
24
- static resolveLanguageName(extOrName) {
25
- const aliases = {
26
- js: "javascript",
27
- jsx: "javascript",
28
- ts: "typescript",
29
- tsx: "typescript",
30
- javascript: "javascript",
31
- typescript: "typescript",
32
- };
33
- return aliases[extOrName.toLowerCase()] || extOrName;
34
- }
35
- static suportedLanguages() {
36
- return Array.from(new Set(Object.keys(lang_packs_1.languagePacks)));
8
+ static supportsLanguage(_language) {
9
+ return false;
37
10
  }
38
- static createParserForFile(filePath) {
39
- const ext = filePath.split(".").pop()?.toLowerCase();
40
- return new LanguageAgnosticParser(ext);
11
+ static createParserForFile(_filePath) {
12
+ throw new Error("Tree-sitter parser has been moved to @tyvm/knowhow-module-ast. Install that package and add it to your knowhow.json modules.");
41
13
  }
42
14
  static createTypeScriptParser() {
43
- return new LanguageAgnosticParser("typescript");
15
+ throw new Error("Tree-sitter parser has been moved to @tyvm/knowhow-module-ast. Install that package and add it to your knowhow.json modules.");
44
16
  }
45
17
  static createJavaScriptParser() {
46
- return new LanguageAgnosticParser("javascript");
47
- }
48
- static supportsLanguage(languageName) {
49
- return !!getLanguagePackForLanguage(languageName);
50
- }
51
- static supportsFile(filePath) {
52
- const ext = filePath.split(".").pop()?.toLowerCase();
53
- return !!getLanguagePackForLanguage(ext || "");
54
- }
55
- setupFromLanguageName(languageName) {
56
- this.setLanguagePack(languageName);
57
- this.setupParserForLanguage(languageName);
58
- }
59
- setupParserForLanguage(languageName) {
60
- const normalizedName = LanguageAgnosticParser.resolveLanguageName(languageName);
61
- switch (normalizedName) {
62
- case "javascript":
63
- this.parser.setLanguage(tree_sitter_javascript_1.default);
64
- break;
65
- case "typescript":
66
- this.parser.setLanguage(tree_sitter_typescript_1.default.typescript);
67
- break;
68
- default:
69
- throw new Error(`Unsupported language: ${languageName}`);
70
- }
71
- }
72
- setLanguagePack(languageName) {
73
- const pack = getLanguagePackForLanguage(languageName);
74
- if (pack) {
75
- this.currentLanguagePack = pack;
76
- }
77
- }
78
- getLanguagePack() {
79
- return this.currentLanguagePack;
80
- }
81
- getLanguage() {
82
- return this.currentLanguagePack?.language;
83
- }
84
- nodeKind(node) {
85
- const pack = this.currentLanguagePack;
86
- return pack.kindMap[node.type] || "unknown";
87
- }
88
- applyRule(node, rule, pack) {
89
- switch (rule.kind) {
90
- case "self":
91
- return node;
92
- case "child":
93
- if (!rule.nodeType)
94
- return undefined;
95
- return node.children.find((child) => child.type === rule.nodeType);
96
- case "field":
97
- if (!rule.field)
98
- return undefined;
99
- return node.childForFieldName(rule.field);
100
- case "functionBody":
101
- return node.children.find((child) => child.type === "statement_block");
102
- case "callCallbackBody":
103
- const args = node.childForFieldName("arguments");
104
- if (!args)
105
- return undefined;
106
- const lastArg = args.children[args.children.length - 1];
107
- if (!lastArg)
108
- return undefined;
109
- if (lastArg.type === "arrow_function" ||
110
- lastArg.type === "function_expression") {
111
- return this.applyRule(lastArg, { kind: "functionBody" }, pack);
112
- }
113
- return lastArg;
114
- default:
115
- return undefined;
116
- }
117
- }
118
- getBodyNodeWithLanguagePack(node, pack) {
119
- const rules = pack.bodyMap[node.type];
120
- if (!rules || rules.length === 0) {
121
- return undefined;
122
- }
123
- for (const rule of rules) {
124
- const result = this.applyRule(node, rule, pack);
125
- if (result) {
126
- return result;
127
- }
128
- }
129
- return undefined;
130
- }
131
- getBodyNode(node) {
132
- if (!this.currentLanguagePack) {
133
- return null;
134
- }
135
- const result = this.getBodyNodeWithLanguagePack(node, this.currentLanguagePack);
136
- return result || null;
137
- }
138
- getBodyNodeForLanguage(node, language) {
139
- const pack = getLanguagePackForLanguage(language.toLowerCase());
140
- if (!pack)
141
- return undefined;
142
- return this.getBodyNodeWithLanguagePack(node, pack);
18
+ throw new Error("Tree-sitter parser has been moved to @tyvm/knowhow-module-ast. Install that package and add it to your knowhow.json modules.");
143
19
  }
144
- getNodeKindForLanguage(node, language) {
145
- const pack = getLanguagePackForLanguage(language.toLowerCase());
146
- if (!pack)
147
- return "unknown";
148
- return this.nodeKind(node);
149
- }
150
- parseFile(filePath) {
151
- const sourceCode = (0, fs_1.readFileSync)(filePath, "utf8");
152
- return this.parser.parse(sourceCode);
153
- }
154
- parseString(sourceCode) {
155
- return this.parser.parse(sourceCode);
156
- }
157
- getFileText(tree) {
158
- return tree.rootNode.text;
159
- }
160
- findPathsForLine(tree, searchText) {
161
- const results = [];
162
- if (!tree.rootNode)
163
- return results;
164
- const sourceText = tree.rootNode.text;
165
- const lines = sourceText.split("\n");
166
- lines.forEach((line, lineIndex) => {
167
- let columnIndex = line.indexOf(searchText);
168
- while (columnIndex !== -1) {
169
- const node = tree.rootNode.descendantForPosition({ row: lineIndex, column: columnIndex }, { row: lineIndex, column: columnIndex + searchText.length });
170
- if (node) {
171
- const path = this.getNodePath(tree.rootNode, node);
172
- results.push({
173
- path,
174
- row: lineIndex,
175
- column: columnIndex,
176
- text: searchText,
177
- });
178
- }
179
- columnIndex = line.indexOf(searchText, columnIndex + 1);
180
- }
181
- });
182
- return results;
183
- }
184
- getNodePath(rootNode, targetNode) {
185
- const path = [];
186
- let current = targetNode;
187
- while (current && current !== rootNode) {
188
- if (current.parent) {
189
- const siblings = current.parent.children;
190
- const index = siblings.indexOf(current);
191
- path.unshift(`${current.type}[${index}]`);
192
- current = current.parent;
193
- }
194
- else {
195
- break;
196
- }
197
- }
198
- return path.join("/");
199
- }
200
- nodeToObject(node) {
201
- return {
202
- type: node.type,
203
- text: node.text,
204
- startPosition: {
205
- row: node.startPosition.row,
206
- column: node.startPosition.column,
207
- },
208
- endPosition: {
209
- row: node.endPosition.row,
210
- column: node.endPosition.column,
211
- },
212
- children: node.children.map((child) => this.nodeToObject(child)),
213
- };
214
- }
215
- findNodesByType(tree, nodeType) {
216
- const results = [];
217
- if (!tree.rootNode)
218
- return results;
219
- function traverse(node) {
220
- if (node.type === nodeType) {
221
- results.push(node);
222
- }
223
- for (const child of node.children) {
224
- traverse(child);
225
- }
226
- }
227
- traverse(tree.rootNode);
228
- return results;
229
- }
230
- getTypesForKind(kind) {
231
- if (!this.currentLanguagePack)
232
- return [];
233
- return Object.entries(this.currentLanguagePack.kindMap)
234
- .filter(([_, v]) => v === kind)
235
- .map(([k, _]) => k);
236
- }
237
- findNodesByKind(tree, kind) {
238
- const types = this.getTypesForKind(kind);
239
- const results = [];
240
- for (const type of types) {
241
- results.push(...this.findNodesByType(tree, type));
242
- }
243
- return results;
244
- }
245
- findClassDeclarations(tree) {
246
- return this.findNodesByKind(tree, "class");
247
- }
248
- findMethodDeclarations(tree) {
249
- return this.findNodesByKind(tree, "method");
250
- }
251
- printTree(node, indent = "") {
252
- let result = `${indent}${node.type}`;
253
- if (node.isNamed && node.text.length < 50) {
254
- result += `: "${node.text.replace(/\n/g, "\\n")}"`;
255
- }
256
- result += "\n";
257
- for (const child of node.children) {
258
- result += this.printTree(child, indent + " ");
259
- }
260
- return result;
20
+ static suportedLanguages() {
21
+ return [];
261
22
  }
262
- findErrorNodes(node) {
263
- const errorNodes = [];
264
- function traverse(n) {
265
- if (n.type === "ERROR" || n.hasError) {
266
- errorNodes.push(n);
267
- }
268
- for (const child of n.children || []) {
269
- traverse(child);
270
- }
271
- }
272
- traverse(node);
273
- return errorNodes;
23
+ static resolveLanguageName(name) {
24
+ return name;
274
25
  }
275
26
  }
276
27
  exports.LanguageAgnosticParser = LanguageAgnosticParser;
277
- function compareTreeStructures(tree1, tree2) {
278
- const differences = [];
279
- function compareNodes(node1, node2, path = "root") {
280
- if (!node1 && !node2)
281
- return;
282
- if (!node1) {
283
- differences.push(`Node removed at ${path}: ${node2.type}`);
284
- return;
285
- }
286
- if (!node2) {
287
- differences.push(`Node added at ${path}: ${node1.type}`);
288
- return;
289
- }
290
- if (node1.type !== node2.type) {
291
- differences.push(`Node type changed at ${path}: ${node1.type} -> ${node2.type}`);
292
- }
293
- if (node1.text !== node2.text && node1.text.length < 100) {
294
- differences.push(`Node text changed at ${path} (${node1.type}): "${node1.text}" -> "${node2.text}"`);
295
- }
296
- const maxChildren = Math.max(node1.children.length, node2.children.length);
297
- for (let i = 0; i < maxChildren; i++) {
298
- const child1 = node1.children[i] || null;
299
- const child2 = node2.children[i] || null;
300
- compareNodes(child1, child2, `${path}.${i}`);
301
- }
302
- }
303
- compareNodes(tree1.rootNode, tree2.rootNode);
304
- return {
305
- differences,
306
- summary: `Found ${differences.length} differences between the two trees`,
307
- };
28
+ function getLanguagePackForLanguage(_languageName) {
29
+ return undefined;
30
+ }
31
+ exports.getLanguagePackForLanguage = getLanguagePackForLanguage;
32
+ function compareTreeStructures(_tree1, _tree2) {
33
+ throw new Error("Tree-sitter has been moved to @tyvm/knowhow-module-ast.");
308
34
  }
309
35
  exports.compareTreeStructures = compareTreeStructures;
310
36
  //# sourceMappingURL=parser.js.map