@tyvm/knowhow 0.0.90 → 0.0.92

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 (272) hide show
  1. package/.depcheckrc +30 -0
  2. package/bin/knowhow.js +1 -1
  3. package/package.json +8 -34
  4. package/src/agents/configurable/ConfigAgent.ts +2 -2
  5. package/src/agents/tools/executeScript/index.ts +5 -0
  6. package/src/agents/tools/googleSearch.ts +2 -2
  7. package/src/agents/tools/index.ts +0 -3
  8. package/src/agents/tools/list.ts +0 -147
  9. package/src/agents/tools/loadWebpage.ts +3 -113
  10. package/src/auth/browserLogin.ts +10 -13
  11. package/src/chat/modules/AgentModule.ts +0 -1
  12. package/src/chat/types.ts +1 -1
  13. package/src/cli.ts +63 -3
  14. package/src/clients/gemini.ts +96 -25
  15. package/src/clients/http.ts +7 -11
  16. package/src/clients/pricing/google.ts +122 -26
  17. package/src/conversion.ts +24 -54
  18. package/src/index.ts +15 -20
  19. package/src/login.ts +5 -6
  20. package/src/plugins/language.ts +0 -4
  21. package/src/plugins/plugins.ts +0 -14
  22. package/src/plugins/url.ts +31 -12
  23. package/src/services/EmbeddingsService.ts +70 -0
  24. package/src/services/KnowhowClient.ts +34 -34
  25. package/src/{plugins/downloader/downloader.ts → services/MediaProcessorService.ts} +109 -267
  26. package/src/services/S3.ts +19 -87
  27. package/src/services/index.ts +8 -8
  28. package/src/services/modules/index.ts +12 -3
  29. package/src/services/modules/types.ts +8 -2
  30. package/src/services/script-execution/ScriptExecutor.ts +29 -10
  31. package/src/services/script-execution/ScriptPolicy.ts +6 -2
  32. package/src/types.ts +1 -0
  33. package/src/utils/http.ts +127 -0
  34. package/src/workers/auth/PasskeySetup.ts +7 -11
  35. package/tests/clients/AIClient.test.ts +24 -21
  36. package/tests/manual/file-edits/figma.test.ts +3 -70
  37. package/tests/plugins/language/languagePlugin-content-triggers.test.ts +2 -0
  38. package/tests/plugins/language/languagePlugin.test.ts +2 -0
  39. package/tests/processors/ToolResponseCache.test.ts +2 -2
  40. package/tests/test.spec.ts +0 -14
  41. package/tests/unit/modules/moduleLoading.test.ts +12 -4
  42. package/tests/unit/plugins/pluginLoading.test.ts +6 -6
  43. package/ts_build/package.json +8 -34
  44. package/ts_build/src/agents/tools/ast/astAppendNode.d.ts +1 -1
  45. package/ts_build/src/agents/tools/ast/astAppendNode.js +2 -90
  46. package/ts_build/src/agents/tools/ast/astAppendNode.js.map +1 -1
  47. package/ts_build/src/agents/tools/ast/astDeleteNode.d.ts +1 -1
  48. package/ts_build/src/agents/tools/ast/astDeleteNode.js +2 -88
  49. package/ts_build/src/agents/tools/ast/astDeleteNode.js.map +1 -1
  50. package/ts_build/src/agents/tools/ast/astEditNode.d.ts +1 -1
  51. package/ts_build/src/agents/tools/ast/astEditNode.js +2 -90
  52. package/ts_build/src/agents/tools/ast/astEditNode.js.map +1 -1
  53. package/ts_build/src/agents/tools/ast/astGetPathForLine.d.ts +1 -1
  54. package/ts_build/src/agents/tools/ast/astGetPathForLine.js +2 -72
  55. package/ts_build/src/agents/tools/ast/astGetPathForLine.js.map +1 -1
  56. package/ts_build/src/agents/tools/ast/astListPaths.d.ts +1 -1
  57. package/ts_build/src/agents/tools/ast/astListPaths.js +2 -72
  58. package/ts_build/src/agents/tools/ast/astListPaths.js.map +1 -1
  59. package/ts_build/src/agents/tools/executeScript/index.d.ts +3 -2
  60. package/ts_build/src/agents/tools/executeScript/index.js +4 -1
  61. package/ts_build/src/agents/tools/executeScript/index.js.map +1 -1
  62. package/ts_build/src/agents/tools/googleSearch.js +2 -2
  63. package/ts_build/src/agents/tools/googleSearch.js.map +1 -1
  64. package/ts_build/src/agents/tools/index.d.ts +0 -3
  65. package/ts_build/src/agents/tools/index.js +0 -3
  66. package/ts_build/src/agents/tools/index.js.map +1 -1
  67. package/ts_build/src/agents/tools/list.js +0 -138
  68. package/ts_build/src/agents/tools/list.js.map +1 -1
  69. package/ts_build/src/agents/tools/loadWebpage.js +1 -89
  70. package/ts_build/src/agents/tools/loadWebpage.js.map +1 -1
  71. package/ts_build/src/agents/tools/textSearch.d.ts +1 -1
  72. package/ts_build/src/auth/browserLogin.js +7 -7
  73. package/ts_build/src/auth/browserLogin.js.map +1 -1
  74. package/ts_build/src/chat/modules/AgentModule.js.map +1 -1
  75. package/ts_build/src/chat/types.d.ts +1 -1
  76. package/ts_build/src/cli.d.ts +1 -1
  77. package/ts_build/src/cli.js +47 -1
  78. package/ts_build/src/cli.js.map +1 -1
  79. package/ts_build/src/clients/gemini.d.ts +1 -73
  80. package/ts_build/src/clients/gemini.js +57 -19
  81. package/ts_build/src/clients/gemini.js.map +1 -1
  82. package/ts_build/src/clients/http.js +5 -9
  83. package/ts_build/src/clients/http.js.map +1 -1
  84. package/ts_build/src/clients/pricing/google.d.ts +17 -73
  85. package/ts_build/src/clients/pricing/google.js +47 -10
  86. package/ts_build/src/clients/pricing/google.js.map +1 -1
  87. package/ts_build/src/conversion.d.ts +1 -4
  88. package/ts_build/src/conversion.js +12 -27
  89. package/ts_build/src/conversion.js.map +1 -1
  90. package/ts_build/src/index.d.ts +4 -0
  91. package/ts_build/src/index.js +15 -14
  92. package/ts_build/src/index.js.map +1 -1
  93. package/ts_build/src/login.js +5 -4
  94. package/ts_build/src/login.js.map +1 -1
  95. package/ts_build/src/plugins/downloader/downloader.js +3 -3
  96. package/ts_build/src/plugins/downloader/downloader.js.map +1 -1
  97. package/ts_build/src/plugins/language.js.map +1 -1
  98. package/ts_build/src/plugins/plugins.js +0 -14
  99. package/ts_build/src/plugins/plugins.js.map +1 -1
  100. package/ts_build/src/plugins/tree-sitter/editor.d.ts +3 -32
  101. package/ts_build/src/plugins/tree-sitter/editor.js +6 -208
  102. package/ts_build/src/plugins/tree-sitter/editor.js.map +1 -1
  103. package/ts_build/src/plugins/tree-sitter/parser.d.ts +19 -54
  104. package/ts_build/src/plugins/tree-sitter/parser.js +19 -293
  105. package/ts_build/src/plugins/tree-sitter/parser.js.map +1 -1
  106. package/ts_build/src/plugins/tree-sitter/simple-paths.d.ts +2 -15
  107. package/ts_build/src/plugins/tree-sitter/simple-paths.js +2 -324
  108. package/ts_build/src/plugins/tree-sitter/simple-paths.js.map +1 -1
  109. package/ts_build/src/plugins/url.js +27 -8
  110. package/ts_build/src/plugins/url.js.map +1 -1
  111. package/ts_build/src/services/EmbeddingsService.d.ts +14 -0
  112. package/ts_build/src/services/EmbeddingsService.js +33 -0
  113. package/ts_build/src/services/EmbeddingsService.js.map +1 -0
  114. package/ts_build/src/services/GitHub.js +2 -2
  115. package/ts_build/src/services/GitHub.js.map +1 -1
  116. package/ts_build/src/services/KnowhowClient.d.ts +29 -29
  117. package/ts_build/src/services/KnowhowClient.js +33 -33
  118. package/ts_build/src/services/KnowhowClient.js.map +1 -1
  119. package/ts_build/src/services/MediaProcessorService.d.ts +22 -0
  120. package/ts_build/src/services/MediaProcessorService.js +215 -0
  121. package/ts_build/src/services/MediaProcessorService.js.map +1 -0
  122. package/ts_build/src/services/S3.d.ts +0 -4
  123. package/ts_build/src/services/S3.js +14 -60
  124. package/ts_build/src/services/S3.js.map +1 -1
  125. package/ts_build/src/services/index.d.ts +6 -5
  126. package/ts_build/src/services/index.js +6 -6
  127. package/ts_build/src/services/index.js.map +1 -1
  128. package/ts_build/src/services/modules/index.js +12 -3
  129. package/ts_build/src/services/modules/index.js.map +1 -1
  130. package/ts_build/src/services/modules/types.d.ts +8 -2
  131. package/ts_build/src/services/script-execution/ScriptExecutor.js +22 -7
  132. package/ts_build/src/services/script-execution/ScriptExecutor.js.map +1 -1
  133. package/ts_build/src/services/script-execution/ScriptPolicy.d.ts +1 -1
  134. package/ts_build/src/services/script-execution/ScriptPolicy.js +4 -2
  135. package/ts_build/src/services/script-execution/ScriptPolicy.js.map +1 -1
  136. package/ts_build/src/types.d.ts +1 -0
  137. package/ts_build/src/types.js +1 -0
  138. package/ts_build/src/types.js.map +1 -1
  139. package/ts_build/src/utils/http.d.ts +27 -0
  140. package/ts_build/src/utils/http.js +98 -0
  141. package/ts_build/src/utils/http.js.map +1 -0
  142. package/ts_build/src/workers/auth/PasskeySetup.js +6 -7
  143. package/ts_build/src/workers/auth/PasskeySetup.js.map +1 -1
  144. package/ts_build/tests/clients/AIClient.test.js +11 -14
  145. package/ts_build/tests/clients/AIClient.test.js.map +1 -1
  146. package/ts_build/tests/manual/file-edits/figma.test.d.ts +0 -1
  147. package/ts_build/tests/manual/file-edits/figma.test.js +1 -46
  148. package/ts_build/tests/manual/file-edits/figma.test.js.map +1 -1
  149. package/ts_build/tests/plugins/language/languagePlugin-content-triggers.test.js +2 -0
  150. package/ts_build/tests/plugins/language/languagePlugin-content-triggers.test.js.map +1 -1
  151. package/ts_build/tests/plugins/language/languagePlugin.test.js +2 -0
  152. package/ts_build/tests/plugins/language/languagePlugin.test.js.map +1 -1
  153. package/ts_build/tests/processors/ToolResponseCache.test.js +2 -2
  154. package/ts_build/tests/processors/ToolResponseCache.test.js.map +1 -1
  155. package/ts_build/tests/test.spec.js +0 -14
  156. package/ts_build/tests/test.spec.js.map +1 -1
  157. package/ts_build/tests/tree-sitter/tree-sitter.test.d.ts +0 -1
  158. package/ts_build/tests/tree-sitter/tree-sitter.test.js +2 -183
  159. package/ts_build/tests/tree-sitter/tree-sitter.test.js.map +1 -1
  160. package/ts_build/tests/unit/modules/moduleLoading.test.js +11 -4
  161. package/ts_build/tests/unit/modules/moduleLoading.test.js.map +1 -1
  162. package/ts_build/tests/unit/plugins/pluginLoading.test.js +4 -4
  163. package/ts_build/tests/unit/plugins/pluginLoading.test.js.map +1 -1
  164. package/benchmarks/.dockerignore +0 -7
  165. package/benchmarks/README.md +0 -166
  166. package/benchmarks/docker/Dockerfile +0 -68
  167. package/benchmarks/example-config.yml +0 -27
  168. package/benchmarks/jest.config.js +0 -13
  169. package/benchmarks/package-lock.json +0 -4297
  170. package/benchmarks/package.json +0 -39
  171. package/benchmarks/results/27b0a06/2025-09-27/xai/xai-grok-code-fast-1.json +0 -2909
  172. package/benchmarks/results/4057aed/2025-08-14/anthropic/anthropic-claude-sonnet-4-20250514.json +0 -1671
  173. package/benchmarks/results/4542435/2025-08-05/lms/lms-openai-gpt-oss-20b.json +0 -2814
  174. package/benchmarks/results/4542435/2025-08-05/lms/lms-qwen-qwen3-30b-a3b-2507.json +0 -2014
  175. package/benchmarks/results/4fb9125/2025-08-07/anthropic/anthropic-claude-sonnet-4-20250514.json +0 -3121
  176. package/benchmarks/results/5766aee/2025-08-02/lms-qwen/qwen3-coder-30b.json +0 -98
  177. package/benchmarks/results/6d73808/2025-08-07/openai/openai-gpt-5.json +0 -3256
  178. package/benchmarks/results/77bf0a6/2025-08-02/lms-qwen/qwen3-30b-a3b-2507.json +0 -4298
  179. package/benchmarks/results/8c0d445/2025-08-03/anthropic/anthropic-claude-sonnet-4-20250514.json +0 -3031
  180. package/benchmarks/results/8c0d445/2025-08-03/openai/openai-gpt-4.1-2025-04-14.json +0 -2990
  181. package/benchmarks/results/ac6b2ab/2025-08-03/anthropic/anthropic-claude-sonnet-4-20250514.json +0 -3256
  182. package/benchmarks/results/ac6b2ab/2025-08-03/lms/lms-qwen-qwen3-coder-30b.json +0 -3007
  183. package/benchmarks/results/ac6b2ab/2025-08-03/openai/openai-gpt-4.1-2025-04-14.json +0 -3256
  184. package/benchmarks/results/ac6b2ab/2025-08-03/openai/openai-gpt-4.1-mini-2025-04-14.json +0 -3036
  185. package/benchmarks/results/ac6b2ab/2025-08-03/openai/openai-gpt-4.1-nano-2025-04-14.json +0 -3280
  186. package/benchmarks/results/adff675/2025-08-04/lms/lms-qwen-qwen3-30b-a3b-2507.json +0 -1920
  187. package/benchmarks/results/adff675/2025-08-04/lms/lms-qwen-qwen3-coder-30b.json +0 -3281
  188. package/benchmarks/results/b502ed9/2025-08-03/lms-qwen/qwen3-coder-30b.json +0 -2896
  189. package/benchmarks/results/d1a8129/2025-08-03/lms/lms-qwen-qwen3-coder-30b.json +0 -3011
  190. package/benchmarks/results/e60471c/2025-08-03/lms/qwen3-30b-a3b-2507.json +0 -3003
  191. package/benchmarks/scripts/build-and-run.sh +0 -47
  192. package/benchmarks/scripts/clone-exercism.sh +0 -92
  193. package/benchmarks/scripts/validate.sh +0 -48
  194. package/benchmarks/src/__tests__/runner.test.ts +0 -27
  195. package/benchmarks/src/cli.ts +0 -90
  196. package/benchmarks/src/evaluators/EvaluatorRegistry.ts +0 -64
  197. package/benchmarks/src/evaluators/JavaScriptEvaluator.ts +0 -183
  198. package/benchmarks/src/evaluators/index.ts +0 -3
  199. package/benchmarks/src/evaluators/types.ts +0 -22
  200. package/benchmarks/src/index.ts +0 -3
  201. package/benchmarks/src/providers.ts +0 -13
  202. package/benchmarks/src/runner.ts +0 -824
  203. package/benchmarks/src/types.ts +0 -63
  204. package/benchmarks/tsconfig.json +0 -19
  205. package/leaderboard/README.md +0 -148
  206. package/leaderboard/app/api/benchmark-data/route.ts +0 -131
  207. package/leaderboard/app/api/benchmark-detail/route.ts +0 -172
  208. package/leaderboard/app/details/[model]/[provider]/[language]/page.tsx +0 -501
  209. package/leaderboard/app/exercise/[model]/[provider]/[language]/[exercise]/page.tsx +0 -375
  210. package/leaderboard/app/globals.css +0 -27
  211. package/leaderboard/app/layout.tsx +0 -21
  212. package/leaderboard/app/page.tsx +0 -170
  213. package/leaderboard/components/LeaderboardTable.tsx +0 -168
  214. package/leaderboard/components/PerformanceChart.tsx +0 -109
  215. package/leaderboard/next-env.d.ts +0 -5
  216. package/leaderboard/next.config.js +0 -4
  217. package/leaderboard/package-lock.json +0 -6363
  218. package/leaderboard/package.json +0 -28
  219. package/leaderboard/postcss.config.js +0 -6
  220. package/leaderboard/tailwind.config.js +0 -17
  221. package/leaderboard/tsconfig.json +0 -28
  222. package/leaderboard/types/benchmark.ts +0 -67
  223. package/leaderboard/utils/dataProcessor.ts +0 -33
  224. package/src/agents/tools/asana/definitions.ts +0 -199
  225. package/src/agents/tools/asana/index.ts +0 -108
  226. package/src/agents/tools/ast/astAppendNode.ts +0 -90
  227. package/src/agents/tools/ast/astDeleteNode.ts +0 -88
  228. package/src/agents/tools/ast/astEditNode.ts +0 -95
  229. package/src/agents/tools/ast/astGetPathForLine.ts +0 -73
  230. package/src/agents/tools/ast/astListPaths.ts +0 -66
  231. package/src/agents/tools/ast/index.ts +0 -7
  232. package/src/agents/tools/github/definitions.ts +0 -89
  233. package/src/agents/tools/github/index.ts +0 -67
  234. package/src/chat-old.ts +0 -446
  235. package/src/plugins/asana.ts +0 -146
  236. package/src/plugins/downloader/plugin.ts +0 -103
  237. package/src/plugins/downloader/types.ts +0 -92
  238. package/src/plugins/figma.ts +0 -158
  239. package/src/plugins/github.ts +0 -219
  240. package/src/plugins/jira.ts +0 -115
  241. package/src/plugins/linear.ts +0 -230
  242. package/src/plugins/notion.ts +0 -179
  243. package/src/plugins/tree-sitter/editor.ts +0 -369
  244. package/src/plugins/tree-sitter/lang-packs/index.ts +0 -23
  245. package/src/plugins/tree-sitter/lang-packs/java.ts +0 -59
  246. package/src/plugins/tree-sitter/lang-packs/javascript.ts +0 -57
  247. package/src/plugins/tree-sitter/lang-packs/python.ts +0 -45
  248. package/src/plugins/tree-sitter/lang-packs/types.ts +0 -79
  249. package/src/plugins/tree-sitter/lang-packs/typescript.ts +0 -49
  250. package/src/plugins/tree-sitter/parser.ts +0 -470
  251. package/src/plugins/tree-sitter/simple-paths.ts +0 -467
  252. package/src/services/GitHub.ts +0 -59
  253. package/tests/tree-sitter/editor.test.ts +0 -113
  254. package/tests/tree-sitter/invalid.test.ts +0 -299
  255. package/tests/tree-sitter/paths/common-edits.test.ts +0 -564
  256. package/tests/tree-sitter/paths/debug-exact-position.test.ts +0 -44
  257. package/tests/tree-sitter/paths/debug-line-indexing.test.ts +0 -49
  258. package/tests/tree-sitter/paths/debug-paths.test.ts +0 -90
  259. package/tests/tree-sitter/paths/paths.test.ts +0 -170
  260. package/tests/tree-sitter/paths/simple-paths.test.ts +0 -367
  261. package/tests/tree-sitter/sample-after.ts +0 -48
  262. package/tests/tree-sitter/sample-before.ts +0 -25
  263. package/tests/tree-sitter/test-files/completely-broken.ts +0 -7
  264. package/tests/tree-sitter/test-files/duplicate-braces.ts +0 -39
  265. package/tests/tree-sitter/test-files/invalid-nesting.ts +0 -39
  266. package/tests/tree-sitter/test-files/malformed-signature.ts +0 -39
  267. package/tests/tree-sitter/test-files/mismatched-parens.ts +0 -39
  268. package/tests/tree-sitter/test-files/missing-semicolon.ts +0 -39
  269. package/tests/tree-sitter/test-files/partially-broken.ts +0 -20
  270. package/tests/tree-sitter/test-files/specific-errors.ts +0 -14
  271. package/tests/tree-sitter/test-files/unclosed-string.ts +0 -39
  272. 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
- });