@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,7 +0,0 @@
1
-
2
- class {{{ invalid syntax here
3
- function missing_name() {
4
- return "broken"
5
- missing closing brace
6
- export const = undefined;
7
-
@@ -1,39 +0,0 @@
1
- export class Calculator {
2
- private result: number = 0;
3
-
4
- add(value: number): Calculator {
5
- this.result += value;
6
- return this;
7
- }
8
-
9
- subtract(value: number): Calculator {
10
- this.result -= value;
11
- return this;
12
- }
13
-
14
- multiply(value: number): Calculator {
15
- this.result *= value;
16
- return this;
17
- }
18
-
19
- getResult(): number {
20
- return this.result;
21
- }}
22
- }
23
-
24
- export function createCalculator(): Calculator {
25
- return new Calculator();
26
- }
27
-
28
- describe("Calculator Tests", () => {
29
- it("should perform basic arithmetic", () => {
30
- const calc = createCalculator();
31
- const result = calc.add(5).multiply(2).subtract(3).getResult();
32
- expect(result).toBe(7);
33
- });
34
-
35
- it("should chain operations correctly", () => {
36
- const calc = new Calculator();
37
- expect(calc.add(10).add(5).getResult()).toBe(15);
38
- });
39
- });
@@ -1,39 +0,0 @@
1
- export class Calculator {
2
- private result: number = 0;
3
-
4
- add(value: number): Calculator {
5
- this.result += value;
6
- return this;
7
- }
8
-
9
- subtract(value: number): Calculator {
10
- this.result -= value;
11
- return this;
12
- }
13
-
14
- multiply(value: number): Calculator {
15
- this.result *= value;
16
- return this;
17
- }
18
-
19
- getResult(): number {
20
- return this.result;
21
- }
22
- }
23
-
24
- export function createCalculator(): Calculator {
25
- return new Calculator();
26
- }
27
-
28
- describe("Calculator Tests", (() => {
29
- it("should perform basic arithmetic", () => {
30
- const calc = createCalculator();
31
- const result = calc.add(5).multiply(2).subtract(3).getResult();
32
- expect(result).toBe(7);
33
- });
34
-
35
- it("should chain operations correctly", () => {
36
- const calc = new Calculator();
37
- expect(calc.add(10).add(5).getResult()).toBe(15);
38
- });
39
- });
@@ -1,39 +0,0 @@
1
- export class Calculator {
2
- private result: number = 0;
3
-
4
- add(value: number): Calculator {
5
- this.result += value;
6
- return this;
7
- }
8
-
9
- subtract(value number): Calculator {
10
- this.result -= value;
11
- return this;
12
- }
13
-
14
- multiply(value: number): Calculator {
15
- this.result *= value;
16
- return this;
17
- }
18
-
19
- getResult(): number {
20
- return this.result;
21
- }
22
- }
23
-
24
- export function createCalculator(): Calculator {
25
- return new Calculator();
26
- }
27
-
28
- describe("Calculator Tests", () => {
29
- it("should perform basic arithmetic", () => {
30
- const calc = createCalculator();
31
- const result = calc.add(5).multiply(2).subtract(3).getResult();
32
- expect(result).toBe(7);
33
- });
34
-
35
- it("should chain operations correctly", () => {
36
- const calc = new Calculator();
37
- expect(calc.add(10).add(5).getResult()).toBe(15);
38
- });
39
- });
@@ -1,39 +0,0 @@
1
- export class Calculator {
2
- private result: number = 0;
3
-
4
- add(value: number: Calculator {
5
- this.result += value;
6
- return this;
7
- }
8
-
9
- subtract(value: number): Calculator {
10
- this.result -= value;
11
- return this;
12
- }
13
-
14
- multiply(value: number): Calculator {
15
- this.result *= value;
16
- return this;
17
- }
18
-
19
- getResult(): number {
20
- return this.result;
21
- }
22
- }
23
-
24
- export function createCalculator(): Calculator {
25
- return new Calculator();
26
- }
27
-
28
- describe("Calculator Tests", () => {
29
- it("should perform basic arithmetic", () => {
30
- const calc = createCalculator();
31
- const result = calc.add(5).multiply(2).subtract(3).getResult();
32
- expect(result).toBe(7);
33
- });
34
-
35
- it("should chain operations correctly", () => {
36
- const calc = new Calculator();
37
- expect(calc.add(10).add(5).getResult()).toBe(15);
38
- });
39
- });
@@ -1,39 +0,0 @@
1
- export class Calculator {
2
- private result: number = 0
3
-
4
- add(value: number): Calculator {
5
- this.result += value;
6
- return this;
7
- }
8
-
9
- subtract(value: number): Calculator {
10
- this.result -= value;
11
- return this;
12
- }
13
-
14
- multiply(value: number): Calculator {
15
- this.result *= value;
16
- return this;
17
- }
18
-
19
- getResult(): number {
20
- return this.result;
21
- }
22
- }
23
-
24
- export function createCalculator(): Calculator {
25
- return new Calculator();
26
- }
27
-
28
- describe("Calculator Tests", () => {
29
- it("should perform basic arithmetic", () => {
30
- const calc = createCalculator();
31
- const result = calc.add(5).multiply(2).subtract(3).getResult();
32
- expect(result).toBe(7);
33
- });
34
-
35
- it("should chain operations correctly", () => {
36
- const calc = new Calculator();
37
- expect(calc.add(10).add(5).getResult()).toBe(15);
38
- });
39
- });
@@ -1,20 +0,0 @@
1
-
2
- export class Calculator {
3
- private result: number = 0;
4
-
5
- add(value: number): Calculator {
6
- this.result += value;
7
- return this;
8
- }
9
-
10
- // This method has broken syntax
11
- subtract(value number): Calculator { // Missing colon
12
- this.result -= value;
13
- return this;
14
- }
15
-
16
- multiply(value: number): Calculator {
17
- this.result *= value;
18
- return this;
19
- }
20
- }
@@ -1,14 +0,0 @@
1
-
2
- export class TestClass {
3
- method1() {
4
- return "valid";
5
- }
6
-
7
- method2( { // Missing parameter, extra opening brace
8
- return "broken";
9
- }
10
-
11
- method3() {
12
- return "valid again";
13
- }
14
- }
@@ -1,39 +0,0 @@
1
- export class Calculator {
2
- private result: number = 0;
3
-
4
- add(value: number): Calculator {
5
- this.result += value;
6
- return this;
7
- }
8
-
9
- subtract(value: number): Calculator {
10
- this.result -= value;
11
- return this;
12
- }
13
-
14
- multiply(value: number): Calculator {
15
- this.result *= value;
16
- return this;
17
- }
18
-
19
- getResult(): number {
20
- return this.result;
21
- }
22
- }
23
-
24
- export function createCalculator(): Calculator {
25
- return new Calculator();
26
- }
27
-
28
- describe("Calculator Tests", () => {
29
- it("should perform basic arithmetic", () => {
30
- const calc = createCalculator();
31
- const result = calc.add(5).multiply(2).subtract(3).getResult();
32
- expect(result).toBe("unclosed string;
33
- });
34
-
35
- it("should chain operations correctly", () => {
36
- const calc = new Calculator();
37
- expect(calc.add(10).add(5).getResult()).toBe(15);
38
- });
39
- });
@@ -1,251 +0,0 @@
1
- import {
2
- LanguageAgnosticParser,
3
- compareTreeStructures,
4
- } from "../../src/plugins/tree-sitter/parser";
5
- import { join } from "path";
6
-
7
- describe("Tree-sitter TypeScript Parser", () => {
8
- let parser: LanguageAgnosticParser;
9
- const beforeFilePath = join(__dirname, "sample-before.ts");
10
- const afterFilePath = join(__dirname, "sample-after.ts");
11
-
12
- beforeEach(() => {
13
- parser = LanguageAgnosticParser.createTypeScriptParser();
14
-
15
- // Debug: Check if parser is properly initialized
16
- const testTree = parser.parseString("class Test {}");
17
- console.log("Test parse successful:", !!testTree);
18
- console.log("Test tree has rootNode:", !!testTree.rootNode);
19
- console.log(testTree);
20
- console.log(
21
- "Test rootNode type:",
22
- testTree.rootNode ? testTree.rootNode.type : "undefined"
23
- );
24
- });
25
-
26
- test("should parse TypeScript files", () => {
27
- const beforeTree = parser.parseFile(beforeFilePath);
28
- const afterTree = parser.parseFile(afterFilePath);
29
-
30
- expect(beforeTree).toBeDefined();
31
- expect(beforeTree.rootNode).toBeDefined();
32
- expect(afterTree).toBeDefined();
33
- expect(afterTree.rootNode).toBeDefined();
34
- });
35
-
36
- test("should find class declarations", () => {
37
- const beforeTree = parser.parseFile(beforeFilePath);
38
- const afterTree = parser.parseFile(afterFilePath);
39
-
40
- const beforeClasses = parser.findClassDeclarations(beforeTree);
41
- const afterClasses = parser.findClassDeclarations(afterTree);
42
-
43
- expect(beforeClasses).toHaveLength(1);
44
- expect(afterClasses).toHaveLength(1);
45
- expect(beforeClasses[0].text).toContain("Calculator");
46
- expect(afterClasses[0].text).toContain("Calculator");
47
- });
48
-
49
- test("should find method declarations", () => {
50
- const beforeTree = parser.parseFile(beforeFilePath);
51
- const afterTree = parser.parseFile(afterFilePath);
52
-
53
- const beforeMethods = parser.findMethodDeclarations(beforeTree);
54
- const afterMethods = parser.findMethodDeclarations(afterTree);
55
-
56
- // Both should have methods, but after might have more
57
- expect(beforeMethods.length).toBeGreaterThan(0);
58
- expect(afterMethods.length).toBeGreaterThan(0);
59
-
60
- const methodNames = beforeMethods.map((method) => {
61
- const nameNode = method.children.find(
62
- (child) => child.type === "property_identifier"
63
- );
64
- return nameNode ? nameNode.text : "unknown";
65
- });
66
-
67
- expect(methodNames).toContain("add");
68
- expect(methodNames).toContain("multiply");
69
- });
70
-
71
- test("should convert nodes to objects", () => {
72
- const beforeTree = parser.parseFile(beforeFilePath);
73
- const rootObj = parser.nodeToObject(beforeTree.rootNode);
74
-
75
- expect(rootObj).toHaveProperty("type");
76
- expect(rootObj).toHaveProperty("text");
77
- expect(rootObj).toHaveProperty("startPosition");
78
- expect(rootObj).toHaveProperty("endPosition");
79
- expect(rootObj).toHaveProperty("children");
80
- expect(Array.isArray(rootObj.children)).toBe(true);
81
- });
82
-
83
- test("should print tree structure", () => {
84
- const beforeTree = parser.parseFile(beforeFilePath);
85
- const treeString = parser.printTree(beforeTree.rootNode);
86
-
87
- expect(typeof treeString).toBe("string");
88
- expect(treeString.length).toBeGreaterThan(0);
89
- expect(treeString).toContain("program");
90
- expect(treeString).toContain("export_statement");
91
- });
92
-
93
- test("should compare tree structures and find differences", () => {
94
- const beforeTree = parser.parseFile(beforeFilePath);
95
- const afterTree = parser.parseFile(afterFilePath);
96
-
97
- const comparison = compareTreeStructures(beforeTree, afterTree);
98
-
99
- expect(comparison).toHaveProperty("differences");
100
- expect(comparison).toHaveProperty("summary");
101
- expect(Array.isArray(comparison.differences)).toBe(true);
102
- expect(typeof comparison.summary).toBe("string");
103
-
104
- // We expect differences since the files have different content
105
- expect(comparison.differences.length).toBeGreaterThan(0);
106
-
107
- console.log("\n=== Tree Comparison Results ===");
108
- console.log(comparison.summary);
109
- console.log("\nDifferences:");
110
- comparison.differences.forEach((diff, index) => {
111
- console.log(`${index + 1}. ${diff}`);
112
- });
113
- });
114
-
115
- test("should display tree structures for visual inspection", () => {
116
- const beforeTree = parser.parseFile(beforeFilePath);
117
- const afterTree = parser.parseFile(afterFilePath);
118
-
119
- console.log("\n=== BEFORE FILE TREE STRUCTURE ===");
120
- console.log(parser.printTree(beforeTree.rootNode));
121
-
122
- console.log("\n=== AFTER FILE TREE STRUCTURE ===");
123
- console.log(parser.printTree(afterTree.rootNode));
124
-
125
- // Focus on method nodes specifically
126
- const beforeMethods = parser.findMethodDeclarations(beforeTree);
127
- const afterMethods = parser.findMethodDeclarations(afterTree);
128
-
129
- console.log("\n=== BEFORE FILE METHODS ===");
130
- beforeMethods.forEach((method, index) => {
131
- console.log(`Method ${index + 1}:`);
132
- console.log(parser.printTree(method));
133
- });
134
-
135
- console.log("\n=== AFTER FILE METHODS ===");
136
- afterMethods.forEach((method, index) => {
137
- console.log(`Method ${index + 1}:`);
138
- console.log(parser.printTree(method));
139
- });
140
- });
141
-
142
- test("should parse string content directly", () => {
143
- const simpleClass = `
144
- class Test {
145
- method(): string {
146
- return "hello";
147
- }
148
- }`;
149
-
150
- const tree = parser.parseString(simpleClass);
151
- const methods = parser.findMethodDeclarations(tree);
152
-
153
- expect(tree).toBeDefined();
154
- expect(methods).toHaveLength(1);
155
- expect(methods[0].text).toContain("method");
156
- });
157
- });
158
-
159
- describe("Language Agnostic Parser", () => {
160
- let parser: LanguageAgnosticParser;
161
- const beforeFilePath = join(__dirname, "sample-before.ts");
162
- const afterFilePath = join(__dirname, "sample-after.ts");
163
-
164
- afterEach(() => {
165
- // Clean up parser instance
166
- parser = null as any;
167
- });
168
-
169
- beforeEach(() => {
170
- parser = LanguageAgnosticParser.createTypeScriptParser();
171
- console.log("Language Agnostic Parser created:", !!parser);
172
- const testTree = parser.parseString("class Test {}");
173
- console.log(
174
- "Language Agnostic test parse successful:",
175
- !!testTree && !!testTree.rootNode
176
- );
177
- });
178
-
179
- test("should create TypeScript parser", () => {
180
- const tsParser = LanguageAgnosticParser.createTypeScriptParser();
181
- expect(tsParser).toBeInstanceOf(LanguageAgnosticParser);
182
-
183
- const tree = tsParser.parseString("class Test { method() {} }");
184
- expect(tree).toBeDefined();
185
- });
186
-
187
- test("should create JavaScript parser", () => {
188
- const jsParser = LanguageAgnosticParser.createJavaScriptParser();
189
- expect(jsParser).toBeInstanceOf(LanguageAgnosticParser);
190
-
191
- const tree = jsParser.parseString("class Test { method() {} }");
192
- expect(tree).toBeDefined();
193
- });
194
-
195
- test("should get file text from tree", () => {
196
- const sourceCode = 'class Test { method() { return "hello"; } }';
197
- const tree = parser.parseString(sourceCode);
198
- const fileText = parser.getFileText(tree);
199
-
200
- expect(fileText).toBe(sourceCode);
201
- });
202
-
203
- test("should find paths for a given line/text", () => {
204
- const tree = parser.parseFile(beforeFilePath);
205
- const paths = parser.findPathsForLine(tree, "add");
206
-
207
- expect(paths.length).toBeGreaterThan(0);
208
-
209
- const addMethodPath = paths.find((p) => p.text === "add");
210
- expect(addMethodPath).toBeDefined();
211
- expect(addMethodPath!.path).toBeDefined();
212
- expect(addMethodPath!.row).toBeGreaterThanOrEqual(0);
213
- expect(addMethodPath!.column).toBeGreaterThanOrEqual(0);
214
-
215
- console.log('Found paths for "add":', paths);
216
- });
217
-
218
- test("should find multiple occurrences of text", () => {
219
- const sourceCode = `
220
- class Test {
221
- method test() { return test; }
222
- test() { return "test"; }
223
- }`;
224
- const tree = parser.parseString(sourceCode);
225
- const paths = parser.findPathsForLine(tree, "test");
226
-
227
- expect(paths.length).toBeGreaterThan(1);
228
- console.log('Multiple "test" occurrences:', paths);
229
- });
230
-
231
- test("should find method and class declarations with configurable types", () => {
232
- const tree = parser.parseFile(beforeFilePath);
233
-
234
- const methods = parser.findMethodDeclarations(tree);
235
- const classes = parser.findClassDeclarations(tree);
236
-
237
- expect(methods.length).toBeGreaterThan(0);
238
- expect(classes.length).toBe(1);
239
-
240
- const methodNames = methods.map((method) => {
241
- const nameNode = method.children.find(
242
- (child) => child.type === "property_identifier"
243
- );
244
- return nameNode ? nameNode.text : "unknown";
245
- });
246
-
247
- console.log("Found methods:", methodNames);
248
- expect(methodNames).toContain("add");
249
- expect(methodNames).toContain("multiply");
250
- });
251
- });