@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.
- package/.depcheckrc +31 -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/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/conversion.ts +24 -54
- package/src/index.ts +8 -1
- 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/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/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/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 +7 -1
- 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/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/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/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,185 +1,4 @@
|
|
|
1
|
-
"
|
|
2
|
-
|
|
3
|
-
const parser_1 = require("../../src/plugins/tree-sitter/parser");
|
|
4
|
-
const path_1 = require("path");
|
|
5
|
-
describe("Tree-sitter TypeScript Parser", () => {
|
|
6
|
-
let parser;
|
|
7
|
-
const beforeFilePath = (0, path_1.join)(__dirname, "sample-before.ts");
|
|
8
|
-
const afterFilePath = (0, path_1.join)(__dirname, "sample-after.ts");
|
|
9
|
-
beforeEach(() => {
|
|
10
|
-
parser = parser_1.LanguageAgnosticParser.createTypeScriptParser();
|
|
11
|
-
const testTree = parser.parseString("class Test {}");
|
|
12
|
-
console.log("Test parse successful:", !!testTree);
|
|
13
|
-
console.log("Test tree has rootNode:", !!testTree.rootNode);
|
|
14
|
-
console.log(testTree);
|
|
15
|
-
console.log("Test rootNode type:", testTree.rootNode ? testTree.rootNode.type : "undefined");
|
|
16
|
-
});
|
|
17
|
-
test("should parse TypeScript files", () => {
|
|
18
|
-
const beforeTree = parser.parseFile(beforeFilePath);
|
|
19
|
-
const afterTree = parser.parseFile(afterFilePath);
|
|
20
|
-
expect(beforeTree).toBeDefined();
|
|
21
|
-
expect(beforeTree.rootNode).toBeDefined();
|
|
22
|
-
expect(afterTree).toBeDefined();
|
|
23
|
-
expect(afterTree.rootNode).toBeDefined();
|
|
24
|
-
});
|
|
25
|
-
test("should find class declarations", () => {
|
|
26
|
-
const beforeTree = parser.parseFile(beforeFilePath);
|
|
27
|
-
const afterTree = parser.parseFile(afterFilePath);
|
|
28
|
-
const beforeClasses = parser.findClassDeclarations(beforeTree);
|
|
29
|
-
const afterClasses = parser.findClassDeclarations(afterTree);
|
|
30
|
-
expect(beforeClasses).toHaveLength(1);
|
|
31
|
-
expect(afterClasses).toHaveLength(1);
|
|
32
|
-
expect(beforeClasses[0].text).toContain("Calculator");
|
|
33
|
-
expect(afterClasses[0].text).toContain("Calculator");
|
|
34
|
-
});
|
|
35
|
-
test("should find method declarations", () => {
|
|
36
|
-
const beforeTree = parser.parseFile(beforeFilePath);
|
|
37
|
-
const afterTree = parser.parseFile(afterFilePath);
|
|
38
|
-
const beforeMethods = parser.findMethodDeclarations(beforeTree);
|
|
39
|
-
const afterMethods = parser.findMethodDeclarations(afterTree);
|
|
40
|
-
expect(beforeMethods.length).toBeGreaterThan(0);
|
|
41
|
-
expect(afterMethods.length).toBeGreaterThan(0);
|
|
42
|
-
const methodNames = beforeMethods.map((method) => {
|
|
43
|
-
const nameNode = method.children.find((child) => child.type === "property_identifier");
|
|
44
|
-
return nameNode ? nameNode.text : "unknown";
|
|
45
|
-
});
|
|
46
|
-
expect(methodNames).toContain("add");
|
|
47
|
-
expect(methodNames).toContain("multiply");
|
|
48
|
-
});
|
|
49
|
-
test("should convert nodes to objects", () => {
|
|
50
|
-
const beforeTree = parser.parseFile(beforeFilePath);
|
|
51
|
-
const rootObj = parser.nodeToObject(beforeTree.rootNode);
|
|
52
|
-
expect(rootObj).toHaveProperty("type");
|
|
53
|
-
expect(rootObj).toHaveProperty("text");
|
|
54
|
-
expect(rootObj).toHaveProperty("startPosition");
|
|
55
|
-
expect(rootObj).toHaveProperty("endPosition");
|
|
56
|
-
expect(rootObj).toHaveProperty("children");
|
|
57
|
-
expect(Array.isArray(rootObj.children)).toBe(true);
|
|
58
|
-
});
|
|
59
|
-
test("should print tree structure", () => {
|
|
60
|
-
const beforeTree = parser.parseFile(beforeFilePath);
|
|
61
|
-
const treeString = parser.printTree(beforeTree.rootNode);
|
|
62
|
-
expect(typeof treeString).toBe("string");
|
|
63
|
-
expect(treeString.length).toBeGreaterThan(0);
|
|
64
|
-
expect(treeString).toContain("program");
|
|
65
|
-
expect(treeString).toContain("export_statement");
|
|
66
|
-
});
|
|
67
|
-
test("should compare tree structures and find differences", () => {
|
|
68
|
-
const beforeTree = parser.parseFile(beforeFilePath);
|
|
69
|
-
const afterTree = parser.parseFile(afterFilePath);
|
|
70
|
-
const comparison = (0, parser_1.compareTreeStructures)(beforeTree, afterTree);
|
|
71
|
-
expect(comparison).toHaveProperty("differences");
|
|
72
|
-
expect(comparison).toHaveProperty("summary");
|
|
73
|
-
expect(Array.isArray(comparison.differences)).toBe(true);
|
|
74
|
-
expect(typeof comparison.summary).toBe("string");
|
|
75
|
-
expect(comparison.differences.length).toBeGreaterThan(0);
|
|
76
|
-
console.log("\n=== Tree Comparison Results ===");
|
|
77
|
-
console.log(comparison.summary);
|
|
78
|
-
console.log("\nDifferences:");
|
|
79
|
-
comparison.differences.forEach((diff, index) => {
|
|
80
|
-
console.log(`${index + 1}. ${diff}`);
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
test("should display tree structures for visual inspection", () => {
|
|
84
|
-
const beforeTree = parser.parseFile(beforeFilePath);
|
|
85
|
-
const afterTree = parser.parseFile(afterFilePath);
|
|
86
|
-
console.log("\n=== BEFORE FILE TREE STRUCTURE ===");
|
|
87
|
-
console.log(parser.printTree(beforeTree.rootNode));
|
|
88
|
-
console.log("\n=== AFTER FILE TREE STRUCTURE ===");
|
|
89
|
-
console.log(parser.printTree(afterTree.rootNode));
|
|
90
|
-
const beforeMethods = parser.findMethodDeclarations(beforeTree);
|
|
91
|
-
const afterMethods = parser.findMethodDeclarations(afterTree);
|
|
92
|
-
console.log("\n=== BEFORE FILE METHODS ===");
|
|
93
|
-
beforeMethods.forEach((method, index) => {
|
|
94
|
-
console.log(`Method ${index + 1}:`);
|
|
95
|
-
console.log(parser.printTree(method));
|
|
96
|
-
});
|
|
97
|
-
console.log("\n=== AFTER FILE METHODS ===");
|
|
98
|
-
afterMethods.forEach((method, index) => {
|
|
99
|
-
console.log(`Method ${index + 1}:`);
|
|
100
|
-
console.log(parser.printTree(method));
|
|
101
|
-
});
|
|
102
|
-
});
|
|
103
|
-
test("should parse string content directly", () => {
|
|
104
|
-
const simpleClass = `
|
|
105
|
-
class Test {
|
|
106
|
-
method(): string {
|
|
107
|
-
return "hello";
|
|
108
|
-
}
|
|
109
|
-
}`;
|
|
110
|
-
const tree = parser.parseString(simpleClass);
|
|
111
|
-
const methods = parser.findMethodDeclarations(tree);
|
|
112
|
-
expect(tree).toBeDefined();
|
|
113
|
-
expect(methods).toHaveLength(1);
|
|
114
|
-
expect(methods[0].text).toContain("method");
|
|
115
|
-
});
|
|
116
|
-
});
|
|
117
|
-
describe("Language Agnostic Parser", () => {
|
|
118
|
-
let parser;
|
|
119
|
-
const beforeFilePath = (0, path_1.join)(__dirname, "sample-before.ts");
|
|
120
|
-
const afterFilePath = (0, path_1.join)(__dirname, "sample-after.ts");
|
|
121
|
-
afterEach(() => {
|
|
122
|
-
parser = null;
|
|
123
|
-
});
|
|
124
|
-
beforeEach(() => {
|
|
125
|
-
parser = parser_1.LanguageAgnosticParser.createTypeScriptParser();
|
|
126
|
-
console.log("Language Agnostic Parser created:", !!parser);
|
|
127
|
-
const testTree = parser.parseString("class Test {}");
|
|
128
|
-
console.log("Language Agnostic test parse successful:", !!testTree && !!testTree.rootNode);
|
|
129
|
-
});
|
|
130
|
-
test("should create TypeScript parser", () => {
|
|
131
|
-
const tsParser = parser_1.LanguageAgnosticParser.createTypeScriptParser();
|
|
132
|
-
expect(tsParser).toBeInstanceOf(parser_1.LanguageAgnosticParser);
|
|
133
|
-
const tree = tsParser.parseString("class Test { method() {} }");
|
|
134
|
-
expect(tree).toBeDefined();
|
|
135
|
-
});
|
|
136
|
-
test("should create JavaScript parser", () => {
|
|
137
|
-
const jsParser = parser_1.LanguageAgnosticParser.createJavaScriptParser();
|
|
138
|
-
expect(jsParser).toBeInstanceOf(parser_1.LanguageAgnosticParser);
|
|
139
|
-
const tree = jsParser.parseString("class Test { method() {} }");
|
|
140
|
-
expect(tree).toBeDefined();
|
|
141
|
-
});
|
|
142
|
-
test("should get file text from tree", () => {
|
|
143
|
-
const sourceCode = 'class Test { method() { return "hello"; } }';
|
|
144
|
-
const tree = parser.parseString(sourceCode);
|
|
145
|
-
const fileText = parser.getFileText(tree);
|
|
146
|
-
expect(fileText).toBe(sourceCode);
|
|
147
|
-
});
|
|
148
|
-
test("should find paths for a given line/text", () => {
|
|
149
|
-
const tree = parser.parseFile(beforeFilePath);
|
|
150
|
-
const paths = parser.findPathsForLine(tree, "add");
|
|
151
|
-
expect(paths.length).toBeGreaterThan(0);
|
|
152
|
-
const addMethodPath = paths.find((p) => p.text === "add");
|
|
153
|
-
expect(addMethodPath).toBeDefined();
|
|
154
|
-
expect(addMethodPath.path).toBeDefined();
|
|
155
|
-
expect(addMethodPath.row).toBeGreaterThanOrEqual(0);
|
|
156
|
-
expect(addMethodPath.column).toBeGreaterThanOrEqual(0);
|
|
157
|
-
console.log('Found paths for "add":', paths);
|
|
158
|
-
});
|
|
159
|
-
test("should find multiple occurrences of text", () => {
|
|
160
|
-
const sourceCode = `
|
|
161
|
-
class Test {
|
|
162
|
-
method test() { return test; }
|
|
163
|
-
test() { return "test"; }
|
|
164
|
-
}`;
|
|
165
|
-
const tree = parser.parseString(sourceCode);
|
|
166
|
-
const paths = parser.findPathsForLine(tree, "test");
|
|
167
|
-
expect(paths.length).toBeGreaterThan(1);
|
|
168
|
-
console.log('Multiple "test" occurrences:', paths);
|
|
169
|
-
});
|
|
170
|
-
test("should find method and class declarations with configurable types", () => {
|
|
171
|
-
const tree = parser.parseFile(beforeFilePath);
|
|
172
|
-
const methods = parser.findMethodDeclarations(tree);
|
|
173
|
-
const classes = parser.findClassDeclarations(tree);
|
|
174
|
-
expect(methods.length).toBeGreaterThan(0);
|
|
175
|
-
expect(classes.length).toBe(1);
|
|
176
|
-
const methodNames = methods.map((method) => {
|
|
177
|
-
const nameNode = method.children.find((child) => child.type === "property_identifier");
|
|
178
|
-
return nameNode ? nameNode.text : "unknown";
|
|
179
|
-
});
|
|
180
|
-
console.log("Found methods:", methodNames);
|
|
181
|
-
expect(methodNames).toContain("add");
|
|
182
|
-
expect(methodNames).toContain("multiply");
|
|
183
|
-
});
|
|
1
|
+
describe("Tree-sitter tests (moved to @tyvm/knowhow-module-ast)", () => {
|
|
2
|
+
it.skip("tests have moved to @tyvm/knowhow-module-ast package", () => { });
|
|
184
3
|
});
|
|
185
4
|
//# sourceMappingURL=tree-sitter.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree-sitter.test.js","sourceRoot":"","sources":["../../../tests/tree-sitter/tree-sitter.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tree-sitter.test.js","sourceRoot":"","sources":["../../../tests/tree-sitter/tree-sitter.test.ts"],"names":[],"mappings":"AAEA,QAAQ,CAAC,uDAAuD,EAAE,GAAG,EAAE;IACrE,EAAE,CAAC,IAAI,CAAC,sDAAsD,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AAC5E,CAAC,CAAC,CAAC"}
|
|
@@ -108,7 +108,7 @@ describe("ModulesService.loadModulesFromConfig", () => {
|
|
|
108
108
|
spy.mockRestore();
|
|
109
109
|
});
|
|
110
110
|
it("should load plugins from a module", async () => {
|
|
111
|
-
const
|
|
111
|
+
const mockPluginInstance = {
|
|
112
112
|
meta: { key: "test-plugin", name: "Test Plugin" },
|
|
113
113
|
isEnabled: () => true,
|
|
114
114
|
enable: () => { },
|
|
@@ -117,8 +117,9 @@ describe("ModulesService.loadModulesFromConfig", () => {
|
|
|
117
117
|
callMany: () => Promise.resolve(""),
|
|
118
118
|
embed: () => Promise.resolve([]),
|
|
119
119
|
};
|
|
120
|
+
const MockPluginClass = jest.fn().mockImplementation(() => mockPluginInstance);
|
|
120
121
|
const mockModule = makeModule({
|
|
121
|
-
plugins: [{ name: "test-plugin", plugin:
|
|
122
|
+
plugins: [{ name: "test-plugin", plugin: MockPluginClass }],
|
|
122
123
|
});
|
|
123
124
|
const service = new modules_1.ModulesService();
|
|
124
125
|
const context = makeContext();
|
|
@@ -127,11 +128,12 @@ describe("ModulesService.loadModulesFromConfig", () => {
|
|
|
127
128
|
const resolvedCtx = ctx || context;
|
|
128
129
|
await mockModule.init({ config: {}, cwd: process.cwd() });
|
|
129
130
|
for (const plugin of mockModule.plugins) {
|
|
130
|
-
|
|
131
|
+
const instance = new plugin.plugin(resolvedCtx);
|
|
132
|
+
resolvedCtx.Plugins.registerPlugin(plugin.name, instance);
|
|
131
133
|
}
|
|
132
134
|
});
|
|
133
135
|
await service.loadModulesFromConfig(context);
|
|
134
|
-
expect(context.Plugins.registerPlugin).toHaveBeenCalledWith("test-plugin",
|
|
136
|
+
expect(context.Plugins.registerPlugin).toHaveBeenCalledWith("test-plugin", mockPluginInstance);
|
|
135
137
|
spy.mockRestore();
|
|
136
138
|
});
|
|
137
139
|
it("should call loadPluginsFromConfig with both global and local configs", async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moduleLoading.test.js","sourceRoot":"","sources":["../../../../tests/unit/modules/moduleLoading.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"moduleLoading.test.js","sourceRoot":"","sources":["../../../../tests/unit/modules/moduleLoading.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ function makeContext() {
|
|
|
8
8
|
emit: jest.fn(),
|
|
9
9
|
emitBlocking: jest.fn(),
|
|
10
10
|
emitNonBlocking: jest.fn(),
|
|
11
|
+
log: jest.fn(),
|
|
11
12
|
},
|
|
12
13
|
};
|
|
13
14
|
}
|
|
@@ -92,8 +93,8 @@ describe("PluginService.loadPluginsFromConfig", () => {
|
|
|
92
93
|
expect(service.loadPlugin).not.toHaveBeenCalled();
|
|
93
94
|
});
|
|
94
95
|
it("should log a warning and not crash when a plugin fails to load", async () => {
|
|
95
|
-
const
|
|
96
|
-
const
|
|
96
|
+
const context = makeContext();
|
|
97
|
+
const service = new plugins_1.PluginService(context);
|
|
97
98
|
service.loadPlugin = jest.fn().mockRejectedValue(new Error("Module not found"));
|
|
98
99
|
const config = {
|
|
99
100
|
pluginPackages: {
|
|
@@ -101,8 +102,7 @@ describe("PluginService.loadPluginsFromConfig", () => {
|
|
|
101
102
|
},
|
|
102
103
|
};
|
|
103
104
|
await expect(service.loadPluginsFromConfig(config)).resolves.toBeUndefined();
|
|
104
|
-
expect(
|
|
105
|
-
warnSpy.mockRestore();
|
|
105
|
+
expect(context.Events.log).toHaveBeenCalledWith("PluginService", expect.stringContaining("broken"), "warn");
|
|
106
106
|
});
|
|
107
107
|
it("should load each plugin with the correct spec string", async () => {
|
|
108
108
|
const service = new plugins_1.PluginService(makeContext());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pluginLoading.test.js","sourceRoot":"","sources":["../../../../tests/unit/plugins/pluginLoading.test.ts"],"names":[],"mappings":";;AAAA,0DAA6D;AAM7D,SAAS,WAAW;IAClB,OAAO;QACL,MAAM,EAAE;YACN,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;YACb,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;YACf,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE;YACvB,eAAe,EAAE,IAAI,CAAC,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"pluginLoading.test.js","sourceRoot":"","sources":["../../../../tests/unit/plugins/pluginLoading.test.ts"],"names":[],"mappings":"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"}
|
package/benchmarks/.dockerignore
DELETED
package/benchmarks/README.md
DELETED
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
# Knowhow Benchmarks
|
|
2
|
-
|
|
3
|
-
A benchmarking framework for testing the Knowhow terminal agent against coding exercises from Exercism.
|
|
4
|
-
|
|
5
|
-
## Overview
|
|
6
|
-
|
|
7
|
-
This package provides tools to:
|
|
8
|
-
- Clone and setup Exercism coding exercises
|
|
9
|
-
- Run the Knowhow agent against these exercises in a controlled environment
|
|
10
|
-
- Collect metrics (turns, time, cost) and success rates
|
|
11
|
-
- Generate detailed reports
|
|
12
|
-
|
|
13
|
-
## Quick Start
|
|
14
|
-
|
|
15
|
-
### 1. Build the Docker Container
|
|
16
|
-
|
|
17
|
-
From the main Knowhow repository root:
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
docker build -f benchmarks/docker/Dockerfile -t knowhow-bench .
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
### 2. Run Benchmarks
|
|
24
|
-
|
|
25
|
-
```bash
|
|
26
|
-
# Run 5 JavaScript exercises with GPT-4o-mini
|
|
27
|
-
docker run --rm -v $(pwd)/benchmarks/results:/app/knowhow/benchmarks/results \
|
|
28
|
-
knowhow-bench run --language javascript --count 5 --model gpt-4o-mini
|
|
29
|
-
|
|
30
|
-
# Setup exercises only (without running)
|
|
31
|
-
docker run --rm knowhow-bench setup --language javascript --count 10
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
## Configuration Options
|
|
35
|
-
|
|
36
|
-
### Command Line Arguments
|
|
37
|
-
|
|
38
|
-
- `--language <lang>`: Programming language to test (default: javascript)
|
|
39
|
-
- `--count <num>`: Maximum number of exercises to run (default: 10)
|
|
40
|
-
- `--model <model>`: AI model to use (default: gpt-4o-mini)
|
|
41
|
-
- `--provider <provider>`: AI provider (default: openai)
|
|
42
|
-
- `--max-turns <num>`: Maximum turns per exercise (default: 20)
|
|
43
|
-
- `--max-time <seconds>`: Maximum time per exercise (default: 300)
|
|
44
|
-
- `--max-cost <dollars>`: Maximum cost per exercise (default: 1.0)
|
|
45
|
-
- `--output <file>`: Output file for results (default: results.json)
|
|
46
|
-
|
|
47
|
-
### Example Commands
|
|
48
|
-
|
|
49
|
-
```bash
|
|
50
|
-
# Run Python exercises with custom limits
|
|
51
|
-
docker run --rm knowhow-bench run \
|
|
52
|
-
--language python \
|
|
53
|
-
--count 15 \
|
|
54
|
-
--model gpt-4 \
|
|
55
|
-
--max-turns 30 \
|
|
56
|
-
--max-time 600 \
|
|
57
|
-
--output python-results.json
|
|
58
|
-
|
|
59
|
-
# Run with Claude
|
|
60
|
-
docker run --rm knowhow-bench run \
|
|
61
|
-
--provider anthropic \
|
|
62
|
-
--model claude-3-sonnet-20240229 \
|
|
63
|
-
--count 10
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
## Results Format
|
|
67
|
-
|
|
68
|
-
The benchmark generates a JSON file with detailed results:
|
|
69
|
-
|
|
70
|
-
```json
|
|
71
|
-
{
|
|
72
|
-
"config": {
|
|
73
|
-
"language": "javascript",
|
|
74
|
-
"maxExercises": 5,
|
|
75
|
-
"model": "gpt-4o-mini",
|
|
76
|
-
"provider": "openai"
|
|
77
|
-
},
|
|
78
|
-
"exercises": [
|
|
79
|
-
{
|
|
80
|
-
"exerciseName": "hello-world",
|
|
81
|
-
"status": "success",
|
|
82
|
-
"turns": 3,
|
|
83
|
-
"timeElapsed": 45.2,
|
|
84
|
-
"cost": 0.025,
|
|
85
|
-
"startTime": "2024-01-15T10:00:00Z",
|
|
86
|
-
"endTime": "2024-01-15T10:00:45Z"
|
|
87
|
-
}
|
|
88
|
-
],
|
|
89
|
-
"summary": {
|
|
90
|
-
"totalExercises": 5,
|
|
91
|
-
"successCount": 4,
|
|
92
|
-
"failureCount": 1,
|
|
93
|
-
"successRate": 0.8,
|
|
94
|
-
"averageTurns": 4.2,
|
|
95
|
-
"averageTime": 62.5,
|
|
96
|
-
"totalCost": 0.15
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
## Supported Languages
|
|
102
|
-
|
|
103
|
-
Currently supports any language available in Exercism. Start with one language for initial testing:
|
|
104
|
-
|
|
105
|
-
- `javascript` (recommended for initial testing)
|
|
106
|
-
- `python`
|
|
107
|
-
- `java`
|
|
108
|
-
- `typescript`
|
|
109
|
-
- `go`
|
|
110
|
-
- `rust`
|
|
111
|
-
- And many more...
|
|
112
|
-
|
|
113
|
-
## Development
|
|
114
|
-
|
|
115
|
-
### Local Development
|
|
116
|
-
|
|
117
|
-
```bash
|
|
118
|
-
cd benchmarks
|
|
119
|
-
npm install
|
|
120
|
-
npm run dev setup --language javascript --count 5
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
### Building
|
|
124
|
-
|
|
125
|
-
```bash
|
|
126
|
-
npm run build
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
### Testing
|
|
130
|
-
|
|
131
|
-
```bash
|
|
132
|
-
npm test
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
## Architecture
|
|
136
|
-
|
|
137
|
-
- **Docker Container**: Isolated environment with Node.js, Git, and all dependencies
|
|
138
|
-
- **Exercise Cloning**: Based on Aider's approach, clones from Exercism repositories
|
|
139
|
-
- **Agent Integration**: Instantiates Knowhow agents programmatically
|
|
140
|
-
- **Metrics Collection**: Tracks turns, time, cost, and success rates
|
|
141
|
-
- **Result Recording**: Outputs detailed JSON reports
|
|
142
|
-
|
|
143
|
-
## Limitations (MVP)
|
|
144
|
-
|
|
145
|
-
This is an MVP implementation with the following limitations:
|
|
146
|
-
- Single language support per run
|
|
147
|
-
- Basic metrics collection
|
|
148
|
-
- Simple failure detection
|
|
149
|
-
- Minimal configuration options
|
|
150
|
-
|
|
151
|
-
Future versions will expand these capabilities based on initial results.
|
|
152
|
-
|
|
153
|
-
## Troubleshooting
|
|
154
|
-
|
|
155
|
-
### Container Build Issues
|
|
156
|
-
- Ensure Docker has enough memory allocated
|
|
157
|
-
- Check that the Knowhow codebase is properly copied into the container
|
|
158
|
-
|
|
159
|
-
### Exercise Setup Issues
|
|
160
|
-
- Verify internet connectivity for cloning repositories
|
|
161
|
-
- Check that the specified language track exists in Exercism
|
|
162
|
-
|
|
163
|
-
### Agent Execution Issues
|
|
164
|
-
- Review the output logs for specific error messages
|
|
165
|
-
- Verify model and provider configuration
|
|
166
|
-
- Check API key availability in the container environment
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
# Use Node.js 18 as base image
|
|
2
|
-
FROM node:18-bullseye
|
|
3
|
-
|
|
4
|
-
# Install system dependencies (cached layer - rarely changes)
|
|
5
|
-
RUN apt-get update && apt-get install -y \
|
|
6
|
-
git \
|
|
7
|
-
curl \
|
|
8
|
-
wget \
|
|
9
|
-
python3 \
|
|
10
|
-
python3-pip \
|
|
11
|
-
build-essential \
|
|
12
|
-
&& rm -rf /var/lib/apt/lists/*
|
|
13
|
-
|
|
14
|
-
# Set working directory
|
|
15
|
-
WORKDIR /app
|
|
16
|
-
|
|
17
|
-
# Copy package files for dependency caching
|
|
18
|
-
COPY package*.json ./
|
|
19
|
-
# Install main dependencies (cached until package.json changes)
|
|
20
|
-
RUN npm install
|
|
21
|
-
|
|
22
|
-
# Copy build configuration (cached until config changes)
|
|
23
|
-
COPY tsconfig.json ./
|
|
24
|
-
|
|
25
|
-
# Copy source code (this layer will be invalidated on source changes)
|
|
26
|
-
COPY src/ ./src/
|
|
27
|
-
|
|
28
|
-
# Build the main project (will rebuild when source changes)
|
|
29
|
-
RUN npm run compile
|
|
30
|
-
|
|
31
|
-
COPY . .
|
|
32
|
-
|
|
33
|
-
# Now set up benchmarks in a subdirectory
|
|
34
|
-
WORKDIR /app/benchmarks
|
|
35
|
-
|
|
36
|
-
# Copy benchmarks package.json for dependency caching
|
|
37
|
-
COPY benchmarks/package*.json ./
|
|
38
|
-
|
|
39
|
-
# Create a symlink to make @tyvm/knowhow available
|
|
40
|
-
RUN mkdir -p node_modules/@tyvm && \
|
|
41
|
-
ln -sf /app/dist node_modules/@tyvm/knowhow
|
|
42
|
-
|
|
43
|
-
# Install benchmarks dependencies (cached until benchmarks package.json changes)
|
|
44
|
-
RUN npm install
|
|
45
|
-
|
|
46
|
-
# Copy benchmarks source and build configuration
|
|
47
|
-
COPY benchmarks/src/ ./src/
|
|
48
|
-
COPY benchmarks/tsconfig.json ./
|
|
49
|
-
|
|
50
|
-
# Build benchmarks (will rebuild when benchmarks source changes)
|
|
51
|
-
RUN npm run build
|
|
52
|
-
|
|
53
|
-
# Make CLI executable
|
|
54
|
-
RUN chmod +x dist/cli.js
|
|
55
|
-
|
|
56
|
-
# Environment variables for AI providers
|
|
57
|
-
ENV OPENAI_API_KEY=""
|
|
58
|
-
ENV ANTHROPIC_API_KEY=""
|
|
59
|
-
ENV GEMINI_API_KEY=""
|
|
60
|
-
ENV XAI_API_KEY=""
|
|
61
|
-
ENV CONTAINER=true
|
|
62
|
-
|
|
63
|
-
# Create exercises directory and set working directory
|
|
64
|
-
RUN mkdir -p /app/exercises
|
|
65
|
-
WORKDIR /app/exercises
|
|
66
|
-
|
|
67
|
-
# Default command
|
|
68
|
-
CMD ["node", "/app/benchmarks/dist/cli.js"]
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
# Example configuration for Knowhow benchmarks
|
|
2
|
-
# This shows the available options - CLI arguments override these values
|
|
3
|
-
|
|
4
|
-
language: javascript
|
|
5
|
-
maxExercises: 10
|
|
6
|
-
model: gpt-4o-mini
|
|
7
|
-
provider: openai
|
|
8
|
-
|
|
9
|
-
limits:
|
|
10
|
-
maxTurns: 20
|
|
11
|
-
maxTime: 300 # seconds
|
|
12
|
-
maxCost: 1.0 # dollars
|
|
13
|
-
|
|
14
|
-
output:
|
|
15
|
-
file: results.json
|
|
16
|
-
format: json
|
|
17
|
-
|
|
18
|
-
# Future configuration options (not yet implemented)
|
|
19
|
-
# filters:
|
|
20
|
-
# difficulty: ["easy", "medium"]
|
|
21
|
-
# topics: ["arrays", "strings"]
|
|
22
|
-
#
|
|
23
|
-
# agents:
|
|
24
|
-
# - name: "developer"
|
|
25
|
-
# config: {}
|
|
26
|
-
# - name: "patcher"
|
|
27
|
-
# config: {}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
module.exports = {
|
|
2
|
-
preset: 'ts-jest',
|
|
3
|
-
testEnvironment: 'node',
|
|
4
|
-
roots: ['<rootDir>/src'],
|
|
5
|
-
testMatch: ['**/__tests__/**/*.ts', '**/?(*.)+(spec|test).ts'],
|
|
6
|
-
transform: {
|
|
7
|
-
'^.+\\.ts$': 'ts-jest',
|
|
8
|
-
},
|
|
9
|
-
collectCoverageFrom: [
|
|
10
|
-
'src/**/*.ts',
|
|
11
|
-
'!src/**/*.d.ts',
|
|
12
|
-
],
|
|
13
|
-
};
|