@tyvm/knowhow 0.0.89 → 0.0.91
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.depcheckrc +31 -0
- package/CONFIG.md +52 -0
- package/README.md +344 -29
- package/WORKER.md +169 -334
- package/autodoc/chat-guide.md +540 -0
- package/autodoc/cli-reference.md +765 -0
- package/autodoc/config-reference.md +541 -0
- package/autodoc/embeddings-guide.md +566 -0
- package/autodoc/generate-guide.md +477 -0
- package/autodoc/language-plugin-guide.md +443 -0
- package/autodoc/modules-guide.md +352 -0
- package/autodoc/plugins-guide.md +720 -0
- package/autodoc/quickstart-guide.md +129 -0
- package/autodoc/skills-guide.md +468 -0
- package/autodoc/worker-guide.md +526 -0
- package/bin/knowhow.js +1 -1
- package/package.json +4 -32
- package/src/agents/tools/executeScript/index.ts +5 -0
- package/src/agents/tools/googleSearch.ts +2 -2
- package/src/agents/tools/index.ts +0 -3
- package/src/agents/tools/list.ts +0 -147
- package/src/agents/tools/loadWebpage.ts +3 -113
- package/src/ai.ts +33 -2
- package/src/auth/browserLogin.ts +10 -13
- package/src/cli.ts +63 -3
- package/src/clients/gemini.ts +96 -25
- package/src/clients/http.ts +7 -11
- package/src/clients/pricing/google.ts +122 -26
- package/src/config.ts +28 -4
- package/src/conversion.ts +24 -54
- package/src/index.ts +30 -3
- package/src/login.ts +5 -6
- package/src/plugins/language.ts +0 -4
- package/src/plugins/plugins.ts +0 -14
- package/src/plugins/url.ts +31 -12
- package/src/processors/TokenCompressor.ts +2 -2
- package/src/processors/ToolResponseCache.ts +3 -3
- package/src/processors/tools/grepToolResponse.ts +9 -4
- package/src/processors/tools/jqToolResponse.ts +11 -6
- package/src/processors/tools/listStoredToolResponses.ts +1 -1
- package/src/processors/tools/tailToolResponse.ts +9 -4
- package/src/services/GitHub.ts +2 -2
- package/src/services/KnowhowClient.ts +34 -34
- package/src/{plugins/downloader/downloader.ts → services/MediaProcessorService.ts} +109 -267
- package/src/services/S3.ts +16 -16
- package/src/services/index.ts +4 -4
- package/src/services/modules/index.ts +10 -2
- package/src/services/modules/types.ts +5 -2
- package/src/services/script-execution/ScriptExecutor.ts +29 -10
- package/src/services/script-execution/ScriptPolicy.ts +6 -2
- package/src/types.ts +1 -0
- package/src/utils/http.ts +127 -0
- package/src/workers/auth/PasskeySetup.ts +7 -11
- package/tests/clients/AIClient.test.ts +24 -21
- package/tests/manual/file-edits/figma.test.ts +3 -70
- package/tests/plugins/language/languagePlugin-content-triggers.test.ts +2 -0
- package/tests/plugins/language/languagePlugin.test.ts +2 -0
- package/tests/processors/ToolResponseCache.test.ts +2 -2
- package/tests/test.spec.ts +0 -14
- package/tests/unit/modules/moduleLoading.test.ts +7 -4
- package/tests/unit/plugins/pluginLoading.test.ts +6 -6
- package/ts_build/package.json +4 -32
- package/ts_build/src/agents/tools/ast/astAppendNode.d.ts +1 -1
- package/ts_build/src/agents/tools/ast/astAppendNode.js +2 -90
- package/ts_build/src/agents/tools/ast/astAppendNode.js.map +1 -1
- package/ts_build/src/agents/tools/ast/astDeleteNode.d.ts +1 -1
- package/ts_build/src/agents/tools/ast/astDeleteNode.js +2 -88
- package/ts_build/src/agents/tools/ast/astDeleteNode.js.map +1 -1
- package/ts_build/src/agents/tools/ast/astEditNode.d.ts +1 -1
- package/ts_build/src/agents/tools/ast/astEditNode.js +2 -90
- package/ts_build/src/agents/tools/ast/astEditNode.js.map +1 -1
- package/ts_build/src/agents/tools/ast/astGetPathForLine.d.ts +1 -1
- package/ts_build/src/agents/tools/ast/astGetPathForLine.js +2 -72
- package/ts_build/src/agents/tools/ast/astGetPathForLine.js.map +1 -1
- package/ts_build/src/agents/tools/ast/astListPaths.d.ts +1 -1
- package/ts_build/src/agents/tools/ast/astListPaths.js +2 -72
- package/ts_build/src/agents/tools/ast/astListPaths.js.map +1 -1
- package/ts_build/src/agents/tools/executeScript/index.d.ts +3 -2
- package/ts_build/src/agents/tools/executeScript/index.js +4 -1
- package/ts_build/src/agents/tools/executeScript/index.js.map +1 -1
- package/ts_build/src/agents/tools/googleSearch.js +2 -2
- package/ts_build/src/agents/tools/googleSearch.js.map +1 -1
- package/ts_build/src/agents/tools/index.d.ts +0 -3
- package/ts_build/src/agents/tools/index.js +0 -3
- package/ts_build/src/agents/tools/index.js.map +1 -1
- package/ts_build/src/agents/tools/list.js +0 -138
- package/ts_build/src/agents/tools/list.js.map +1 -1
- package/ts_build/src/agents/tools/loadWebpage.js +1 -89
- package/ts_build/src/agents/tools/loadWebpage.js.map +1 -1
- package/ts_build/src/agents/tools/textSearch.d.ts +1 -1
- package/ts_build/src/ai.js +18 -1
- package/ts_build/src/ai.js.map +1 -1
- package/ts_build/src/auth/browserLogin.js +7 -7
- package/ts_build/src/auth/browserLogin.js.map +1 -1
- package/ts_build/src/cli.d.ts +1 -1
- package/ts_build/src/cli.js +47 -1
- package/ts_build/src/cli.js.map +1 -1
- package/ts_build/src/clients/gemini.d.ts +1 -73
- package/ts_build/src/clients/gemini.js +57 -19
- package/ts_build/src/clients/gemini.js.map +1 -1
- package/ts_build/src/clients/http.js +5 -9
- package/ts_build/src/clients/http.js.map +1 -1
- package/ts_build/src/clients/pricing/google.d.ts +17 -73
- package/ts_build/src/clients/pricing/google.js +47 -10
- package/ts_build/src/clients/pricing/google.js.map +1 -1
- package/ts_build/src/config.js +17 -2
- package/ts_build/src/config.js.map +1 -1
- package/ts_build/src/conversion.d.ts +1 -4
- package/ts_build/src/conversion.js +12 -27
- package/ts_build/src/conversion.js.map +1 -1
- package/ts_build/src/index.d.ts +4 -0
- package/ts_build/src/index.js +19 -3
- package/ts_build/src/index.js.map +1 -1
- package/ts_build/src/login.js +5 -4
- package/ts_build/src/login.js.map +1 -1
- package/ts_build/src/plugins/downloader/downloader.js +3 -3
- package/ts_build/src/plugins/downloader/downloader.js.map +1 -1
- package/ts_build/src/plugins/language.js.map +1 -1
- package/ts_build/src/plugins/plugins.js +0 -14
- package/ts_build/src/plugins/plugins.js.map +1 -1
- package/ts_build/src/plugins/tree-sitter/editor.d.ts +3 -32
- package/ts_build/src/plugins/tree-sitter/editor.js +6 -208
- package/ts_build/src/plugins/tree-sitter/editor.js.map +1 -1
- package/ts_build/src/plugins/tree-sitter/parser.d.ts +19 -54
- package/ts_build/src/plugins/tree-sitter/parser.js +19 -293
- package/ts_build/src/plugins/tree-sitter/parser.js.map +1 -1
- package/ts_build/src/plugins/tree-sitter/simple-paths.d.ts +2 -15
- package/ts_build/src/plugins/tree-sitter/simple-paths.js +2 -324
- package/ts_build/src/plugins/tree-sitter/simple-paths.js.map +1 -1
- package/ts_build/src/plugins/url.js +27 -8
- package/ts_build/src/plugins/url.js.map +1 -1
- package/ts_build/src/processors/TokenCompressor.js +2 -2
- package/ts_build/src/processors/TokenCompressor.js.map +1 -1
- package/ts_build/src/processors/ToolResponseCache.js +3 -3
- package/ts_build/src/processors/ToolResponseCache.js.map +1 -1
- package/ts_build/src/processors/tools/grepToolResponse.d.ts +3 -1
- package/ts_build/src/processors/tools/grepToolResponse.js +8 -2
- package/ts_build/src/processors/tools/grepToolResponse.js.map +1 -1
- package/ts_build/src/processors/tools/jqToolResponse.d.ts +3 -1
- package/ts_build/src/processors/tools/jqToolResponse.js +10 -4
- package/ts_build/src/processors/tools/jqToolResponse.js.map +1 -1
- package/ts_build/src/processors/tools/listStoredToolResponses.js +1 -1
- package/ts_build/src/processors/tools/listStoredToolResponses.js.map +1 -1
- package/ts_build/src/processors/tools/tailToolResponse.d.ts +3 -1
- package/ts_build/src/processors/tools/tailToolResponse.js +8 -2
- package/ts_build/src/processors/tools/tailToolResponse.js.map +1 -1
- package/ts_build/src/services/GitHub.js +2 -2
- package/ts_build/src/services/GitHub.js.map +1 -1
- package/ts_build/src/services/KnowhowClient.d.ts +29 -29
- package/ts_build/src/services/KnowhowClient.js +33 -33
- package/ts_build/src/services/KnowhowClient.js.map +1 -1
- package/ts_build/src/services/MediaProcessorService.d.ts +22 -0
- package/ts_build/src/services/MediaProcessorService.js +215 -0
- package/ts_build/src/services/MediaProcessorService.js.map +1 -0
- package/ts_build/src/services/S3.js +12 -18
- package/ts_build/src/services/S3.js.map +1 -1
- package/ts_build/src/services/index.d.ts +3 -2
- package/ts_build/src/services/index.js +3 -3
- package/ts_build/src/services/index.js.map +1 -1
- package/ts_build/src/services/modules/index.js +10 -2
- package/ts_build/src/services/modules/index.js.map +1 -1
- package/ts_build/src/services/modules/types.d.ts +5 -2
- package/ts_build/src/services/script-execution/ScriptExecutor.js +22 -7
- package/ts_build/src/services/script-execution/ScriptExecutor.js.map +1 -1
- package/ts_build/src/services/script-execution/ScriptPolicy.d.ts +1 -1
- package/ts_build/src/services/script-execution/ScriptPolicy.js +4 -2
- package/ts_build/src/services/script-execution/ScriptPolicy.js.map +1 -1
- package/ts_build/src/types.d.ts +1 -0
- package/ts_build/src/types.js +1 -0
- package/ts_build/src/types.js.map +1 -1
- package/ts_build/src/utils/http.d.ts +27 -0
- package/ts_build/src/utils/http.js +98 -0
- package/ts_build/src/utils/http.js.map +1 -0
- package/ts_build/src/workers/auth/PasskeySetup.js +6 -7
- package/ts_build/src/workers/auth/PasskeySetup.js.map +1 -1
- package/ts_build/tests/clients/AIClient.test.js +11 -14
- package/ts_build/tests/clients/AIClient.test.js.map +1 -1
- package/ts_build/tests/manual/file-edits/figma.test.d.ts +0 -1
- package/ts_build/tests/manual/file-edits/figma.test.js +1 -46
- package/ts_build/tests/manual/file-edits/figma.test.js.map +1 -1
- package/ts_build/tests/plugins/language/languagePlugin-content-triggers.test.js +2 -0
- package/ts_build/tests/plugins/language/languagePlugin-content-triggers.test.js.map +1 -1
- package/ts_build/tests/plugins/language/languagePlugin.test.js +2 -0
- package/ts_build/tests/plugins/language/languagePlugin.test.js.map +1 -1
- package/ts_build/tests/processors/ToolResponseCache.test.js +2 -2
- package/ts_build/tests/processors/ToolResponseCache.test.js.map +1 -1
- package/ts_build/tests/test.spec.js +0 -14
- package/ts_build/tests/test.spec.js.map +1 -1
- package/ts_build/tests/tree-sitter/tree-sitter.test.d.ts +0 -1
- package/ts_build/tests/tree-sitter/tree-sitter.test.js +2 -183
- package/ts_build/tests/tree-sitter/tree-sitter.test.js.map +1 -1
- package/ts_build/tests/unit/modules/moduleLoading.test.js +6 -4
- package/ts_build/tests/unit/modules/moduleLoading.test.js.map +1 -1
- package/ts_build/tests/unit/plugins/pluginLoading.test.js +4 -4
- package/ts_build/tests/unit/plugins/pluginLoading.test.js.map +1 -1
- package/autodoc/chat.mdx +0 -20
- package/autodoc/cli.mdx +0 -11
- package/autodoc/plugins/asana.mdx +0 -47
- package/autodoc/plugins/downloader/downloader.mdx +0 -38
- package/autodoc/plugins/downloader/plugin.mdx +0 -37
- package/autodoc/plugins/downloader/types.mdx +0 -42
- package/autodoc/plugins/embedding.mdx +0 -41
- package/autodoc/plugins/figma.mdx +0 -45
- package/autodoc/plugins/github.mdx +0 -40
- package/autodoc/plugins/jira.mdx +0 -46
- package/autodoc/plugins/language.mdx +0 -37
- package/autodoc/plugins/linear.mdx +0 -35
- package/autodoc/plugins/notion.mdx +0 -38
- package/autodoc/plugins/plugins.mdx +0 -59
- package/autodoc/plugins/types.mdx +0 -51
- package/autodoc/plugins/vim.mdx +0 -39
- package/autodoc/tools/addInternalTools.mdx +0 -1
- package/autodoc/tools/agentCall.mdx +0 -1
- package/autodoc/tools/asana/definitions.mdx +0 -10
- package/autodoc/tools/asana/index.mdx +0 -12
- package/autodoc/tools/askHuman.mdx +0 -1
- package/autodoc/tools/callPlugin.mdx +0 -1
- package/autodoc/tools/embeddingSearch.mdx +0 -1
- package/autodoc/tools/execCommand.mdx +0 -1
- package/autodoc/tools/fileSearch.mdx +0 -1
- package/autodoc/tools/finalAnswer.mdx +0 -1
- package/autodoc/tools/github/definitions.mdx +0 -6
- package/autodoc/tools/github/index.mdx +0 -8
- package/autodoc/tools/index.mdx +0 -14
- package/autodoc/tools/lintFile.mdx +0 -7
- package/autodoc/tools/list.mdx +0 -16
- package/autodoc/tools/modifyFile.mdx +0 -7
- package/autodoc/tools/patch.mdx +0 -9
- package/autodoc/tools/readBlocks.mdx +0 -1
- package/autodoc/tools/readFile.mdx +0 -1
- package/autodoc/tools/scanFile.mdx +0 -1
- package/autodoc/tools/textSearch.mdx +0 -6
- package/autodoc/tools/types/fileblock.mdx +0 -1
- package/autodoc/tools/visionTool.mdx +0 -1
- package/autodoc/tools/writeFile.mdx +0 -1
- package/benchmarks/.dockerignore +0 -7
- package/benchmarks/README.md +0 -166
- package/benchmarks/docker/Dockerfile +0 -68
- package/benchmarks/example-config.yml +0 -27
- package/benchmarks/jest.config.js +0 -13
- package/benchmarks/package-lock.json +0 -4297
- package/benchmarks/package.json +0 -39
- package/benchmarks/results/27b0a06/2025-09-27/xai/xai-grok-code-fast-1.json +0 -2909
- package/benchmarks/results/4057aed/2025-08-14/anthropic/anthropic-claude-sonnet-4-20250514.json +0 -1671
- package/benchmarks/results/4542435/2025-08-05/lms/lms-openai-gpt-oss-20b.json +0 -2814
- package/benchmarks/results/4542435/2025-08-05/lms/lms-qwen-qwen3-30b-a3b-2507.json +0 -2014
- package/benchmarks/results/4fb9125/2025-08-07/anthropic/anthropic-claude-sonnet-4-20250514.json +0 -3121
- package/benchmarks/results/5766aee/2025-08-02/lms-qwen/qwen3-coder-30b.json +0 -98
- package/benchmarks/results/6d73808/2025-08-07/openai/openai-gpt-5.json +0 -3256
- package/benchmarks/results/77bf0a6/2025-08-02/lms-qwen/qwen3-30b-a3b-2507.json +0 -4298
- package/benchmarks/results/8c0d445/2025-08-03/anthropic/anthropic-claude-sonnet-4-20250514.json +0 -3031
- package/benchmarks/results/8c0d445/2025-08-03/openai/openai-gpt-4.1-2025-04-14.json +0 -2990
- package/benchmarks/results/ac6b2ab/2025-08-03/anthropic/anthropic-claude-sonnet-4-20250514.json +0 -3256
- package/benchmarks/results/ac6b2ab/2025-08-03/lms/lms-qwen-qwen3-coder-30b.json +0 -3007
- package/benchmarks/results/ac6b2ab/2025-08-03/openai/openai-gpt-4.1-2025-04-14.json +0 -3256
- package/benchmarks/results/ac6b2ab/2025-08-03/openai/openai-gpt-4.1-mini-2025-04-14.json +0 -3036
- package/benchmarks/results/ac6b2ab/2025-08-03/openai/openai-gpt-4.1-nano-2025-04-14.json +0 -3280
- package/benchmarks/results/adff675/2025-08-04/lms/lms-qwen-qwen3-30b-a3b-2507.json +0 -1920
- package/benchmarks/results/adff675/2025-08-04/lms/lms-qwen-qwen3-coder-30b.json +0 -3281
- package/benchmarks/results/b502ed9/2025-08-03/lms-qwen/qwen3-coder-30b.json +0 -2896
- package/benchmarks/results/d1a8129/2025-08-03/lms/lms-qwen-qwen3-coder-30b.json +0 -3011
- package/benchmarks/results/e60471c/2025-08-03/lms/qwen3-30b-a3b-2507.json +0 -3003
- package/benchmarks/scripts/build-and-run.sh +0 -47
- package/benchmarks/scripts/clone-exercism.sh +0 -92
- package/benchmarks/scripts/validate.sh +0 -48
- package/benchmarks/src/__tests__/runner.test.ts +0 -27
- package/benchmarks/src/cli.ts +0 -90
- package/benchmarks/src/evaluators/EvaluatorRegistry.ts +0 -64
- package/benchmarks/src/evaluators/JavaScriptEvaluator.ts +0 -183
- package/benchmarks/src/evaluators/index.ts +0 -3
- package/benchmarks/src/evaluators/types.ts +0 -22
- package/benchmarks/src/index.ts +0 -3
- package/benchmarks/src/providers.ts +0 -13
- package/benchmarks/src/runner.ts +0 -824
- package/benchmarks/src/types.ts +0 -63
- package/benchmarks/tsconfig.json +0 -19
- package/leaderboard/README.md +0 -148
- package/leaderboard/app/api/benchmark-data/route.ts +0 -131
- package/leaderboard/app/api/benchmark-detail/route.ts +0 -172
- package/leaderboard/app/details/[model]/[provider]/[language]/page.tsx +0 -501
- package/leaderboard/app/exercise/[model]/[provider]/[language]/[exercise]/page.tsx +0 -375
- package/leaderboard/app/globals.css +0 -27
- package/leaderboard/app/layout.tsx +0 -21
- package/leaderboard/app/page.tsx +0 -170
- package/leaderboard/components/LeaderboardTable.tsx +0 -168
- package/leaderboard/components/PerformanceChart.tsx +0 -109
- package/leaderboard/next-env.d.ts +0 -5
- package/leaderboard/next.config.js +0 -4
- package/leaderboard/package-lock.json +0 -6363
- package/leaderboard/package.json +0 -28
- package/leaderboard/postcss.config.js +0 -6
- package/leaderboard/tailwind.config.js +0 -17
- package/leaderboard/tsconfig.json +0 -28
- package/leaderboard/types/benchmark.ts +0 -67
- package/leaderboard/utils/dataProcessor.ts +0 -33
- package/src/agents/tools/asana/definitions.ts +0 -199
- package/src/agents/tools/asana/index.ts +0 -108
- package/src/agents/tools/ast/astAppendNode.ts +0 -90
- package/src/agents/tools/ast/astDeleteNode.ts +0 -88
- package/src/agents/tools/ast/astEditNode.ts +0 -95
- package/src/agents/tools/ast/astGetPathForLine.ts +0 -73
- package/src/agents/tools/ast/astListPaths.ts +0 -66
- package/src/agents/tools/ast/index.ts +0 -7
- package/src/agents/tools/github/definitions.ts +0 -89
- package/src/agents/tools/github/index.ts +0 -67
- package/src/chat-old.ts +0 -446
- package/src/plugins/asana.ts +0 -146
- package/src/plugins/downloader/plugin.ts +0 -103
- package/src/plugins/downloader/types.ts +0 -92
- package/src/plugins/figma.ts +0 -158
- package/src/plugins/github.ts +0 -219
- package/src/plugins/jira.ts +0 -115
- package/src/plugins/linear.ts +0 -230
- package/src/plugins/notion.ts +0 -179
- package/src/plugins/tree-sitter/editor.ts +0 -369
- package/src/plugins/tree-sitter/lang-packs/index.ts +0 -23
- package/src/plugins/tree-sitter/lang-packs/java.ts +0 -59
- package/src/plugins/tree-sitter/lang-packs/javascript.ts +0 -57
- package/src/plugins/tree-sitter/lang-packs/python.ts +0 -45
- package/src/plugins/tree-sitter/lang-packs/types.ts +0 -79
- package/src/plugins/tree-sitter/lang-packs/typescript.ts +0 -49
- package/src/plugins/tree-sitter/parser.ts +0 -470
- package/src/plugins/tree-sitter/simple-paths.ts +0 -467
- package/test-comprehensive.ts +0 -31
- package/tests/tree-sitter/editor.test.ts +0 -113
- package/tests/tree-sitter/invalid.test.ts +0 -299
- package/tests/tree-sitter/paths/common-edits.test.ts +0 -564
- package/tests/tree-sitter/paths/debug-exact-position.test.ts +0 -44
- package/tests/tree-sitter/paths/debug-line-indexing.test.ts +0 -49
- package/tests/tree-sitter/paths/debug-paths.test.ts +0 -90
- package/tests/tree-sitter/paths/paths.test.ts +0 -170
- package/tests/tree-sitter/paths/simple-paths.test.ts +0 -367
- package/tests/tree-sitter/sample-after.ts +0 -48
- package/tests/tree-sitter/sample-before.ts +0 -25
- package/tests/tree-sitter/test-files/completely-broken.ts +0 -7
- package/tests/tree-sitter/test-files/duplicate-braces.ts +0 -39
- package/tests/tree-sitter/test-files/invalid-nesting.ts +0 -39
- package/tests/tree-sitter/test-files/malformed-signature.ts +0 -39
- package/tests/tree-sitter/test-files/mismatched-parens.ts +0 -39
- package/tests/tree-sitter/test-files/missing-semicolon.ts +0 -39
- package/tests/tree-sitter/test-files/partially-broken.ts +0 -20
- package/tests/tree-sitter/test-files/specific-errors.ts +0 -14
- package/tests/tree-sitter/test-files/unclosed-string.ts +0 -39
- package/tests/tree-sitter/tree-sitter.test.ts +0 -251
|
@@ -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,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
|
-
});
|