@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.
- package/.depcheckrc +30 -0
- package/bin/knowhow.js +1 -1
- package/package.json +8 -34
- package/src/agents/configurable/ConfigAgent.ts +2 -2
- 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/chat/modules/AgentModule.ts +0 -1
- package/src/chat/types.ts +1 -1
- 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 +15 -20
- 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/EmbeddingsService.ts +70 -0
- package/src/services/KnowhowClient.ts +34 -34
- package/src/{plugins/downloader/downloader.ts → services/MediaProcessorService.ts} +109 -267
- package/src/services/S3.ts +19 -87
- package/src/services/index.ts +8 -8
- package/src/services/modules/index.ts +12 -3
- package/src/services/modules/types.ts +8 -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 +12 -4
- package/tests/unit/plugins/pluginLoading.test.ts +6 -6
- package/ts_build/package.json +8 -34
- 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/chat/modules/AgentModule.js.map +1 -1
- package/ts_build/src/chat/types.d.ts +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 +15 -14
- 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/EmbeddingsService.d.ts +14 -0
- package/ts_build/src/services/EmbeddingsService.js +33 -0
- package/ts_build/src/services/EmbeddingsService.js.map +1 -0
- 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.d.ts +0 -4
- package/ts_build/src/services/S3.js +14 -60
- package/ts_build/src/services/S3.js.map +1 -1
- package/ts_build/src/services/index.d.ts +6 -5
- package/ts_build/src/services/index.js +6 -6
- package/ts_build/src/services/index.js.map +1 -1
- package/ts_build/src/services/modules/index.js +12 -3
- package/ts_build/src/services/modules/index.js.map +1 -1
- package/ts_build/src/services/modules/types.d.ts +8 -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 +11 -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/src/services/GitHub.ts +0 -59
- 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
package/tests/test.spec.ts
CHANGED
|
@@ -1,18 +1,4 @@
|
|
|
1
1
|
// Global mocks that need to be hoisted before any imports
|
|
2
|
-
jest.mock("tree-sitter", () => {
|
|
3
|
-
return jest.fn().mockImplementation(() => ({
|
|
4
|
-
setLanguage: jest.fn(),
|
|
5
|
-
parse: jest.fn(() => ({ rootNode: { toString: () => "mock tree" } })),
|
|
6
|
-
}));
|
|
7
|
-
});
|
|
8
|
-
jest.mock("tree-sitter-typescript", () => ({ typescript: jest.fn() }));
|
|
9
|
-
jest.mock("tree-sitter-javascript", () => ({ javascript: jest.fn() }));
|
|
10
|
-
jest.mock("../src/plugins/tree-sitter/parser", () => ({
|
|
11
|
-
LanguageAgnosticParser: jest.fn(),
|
|
12
|
-
}));
|
|
13
|
-
jest.mock("../src/plugins/tree-sitter/editor", () => ({
|
|
14
|
-
TreeEditor: jest.fn(),
|
|
15
|
-
}));
|
|
16
2
|
jest.mock("../src/services/S3", () => ({
|
|
17
3
|
S3Service: jest.fn().mockImplementation(() => ({
|
|
18
4
|
uploadFile: jest.fn(),
|
|
@@ -47,6 +47,11 @@ function makeContext(overrides?: Partial<ModuleContext>): ModuleContext {
|
|
|
47
47
|
addTool: jest.fn(),
|
|
48
48
|
setFunction: jest.fn(),
|
|
49
49
|
} as any,
|
|
50
|
+
Embeddings: {
|
|
51
|
+
registerDownloader: jest.fn(),
|
|
52
|
+
hasDownloader: jest.fn(),
|
|
53
|
+
download: jest.fn(),
|
|
54
|
+
} as any,
|
|
50
55
|
...overrides,
|
|
51
56
|
};
|
|
52
57
|
}
|
|
@@ -132,7 +137,7 @@ describe("ModulesService.loadModulesFromConfig", () => {
|
|
|
132
137
|
});
|
|
133
138
|
|
|
134
139
|
it("should load plugins from a module", async () => {
|
|
135
|
-
const
|
|
140
|
+
const mockPluginInstance = {
|
|
136
141
|
meta: { key: "test-plugin", name: "Test Plugin" },
|
|
137
142
|
isEnabled: () => true,
|
|
138
143
|
enable: () => {},
|
|
@@ -141,8 +146,10 @@ describe("ModulesService.loadModulesFromConfig", () => {
|
|
|
141
146
|
callMany: () => Promise.resolve(""),
|
|
142
147
|
embed: () => Promise.resolve([]),
|
|
143
148
|
};
|
|
149
|
+
// ModulePlugin expects a constructor (class), not an instance
|
|
150
|
+
const MockPluginClass = jest.fn().mockImplementation(() => mockPluginInstance);
|
|
144
151
|
const mockModule = makeModule({
|
|
145
|
-
plugins: [{ name: "test-plugin", plugin:
|
|
152
|
+
plugins: [{ name: "test-plugin", plugin: MockPluginClass as any }],
|
|
146
153
|
});
|
|
147
154
|
|
|
148
155
|
const service = new ModulesService();
|
|
@@ -153,13 +160,14 @@ describe("ModulesService.loadModulesFromConfig", () => {
|
|
|
153
160
|
const resolvedCtx = ctx || context;
|
|
154
161
|
await mockModule.init({ config: {} as Config, cwd: process.cwd() });
|
|
155
162
|
for (const plugin of mockModule.plugins) {
|
|
156
|
-
|
|
163
|
+
const instance = new (plugin.plugin as any)(resolvedCtx);
|
|
164
|
+
resolvedCtx.Plugins.registerPlugin(plugin.name, instance);
|
|
157
165
|
}
|
|
158
166
|
});
|
|
159
167
|
|
|
160
168
|
await service.loadModulesFromConfig(context);
|
|
161
169
|
|
|
162
|
-
expect(context.Plugins.registerPlugin).toHaveBeenCalledWith("test-plugin",
|
|
170
|
+
expect(context.Plugins.registerPlugin).toHaveBeenCalledWith("test-plugin", mockPluginInstance);
|
|
163
171
|
spy.mockRestore();
|
|
164
172
|
});
|
|
165
173
|
|
|
@@ -11,6 +11,7 @@ function makeContext(): PluginContext {
|
|
|
11
11
|
emit: jest.fn(),
|
|
12
12
|
emitBlocking: jest.fn(),
|
|
13
13
|
emitNonBlocking: jest.fn(),
|
|
14
|
+
log: jest.fn(),
|
|
14
15
|
} as any,
|
|
15
16
|
} as PluginContext;
|
|
16
17
|
}
|
|
@@ -110,8 +111,8 @@ describe("PluginService.loadPluginsFromConfig", () => {
|
|
|
110
111
|
});
|
|
111
112
|
|
|
112
113
|
it("should log a warning and not crash when a plugin fails to load", async () => {
|
|
113
|
-
const
|
|
114
|
-
const
|
|
114
|
+
const context = makeContext();
|
|
115
|
+
const service = new PluginService(context);
|
|
115
116
|
|
|
116
117
|
service.loadPlugin = jest.fn().mockRejectedValue(new Error("Module not found"));
|
|
117
118
|
|
|
@@ -122,12 +123,11 @@ describe("PluginService.loadPluginsFromConfig", () => {
|
|
|
122
123
|
} as unknown as Config;
|
|
123
124
|
|
|
124
125
|
await expect(service.loadPluginsFromConfig(config)).resolves.toBeUndefined();
|
|
125
|
-
expect(
|
|
126
|
+
expect(context.Events.log).toHaveBeenCalledWith(
|
|
127
|
+
"PluginService",
|
|
126
128
|
expect.stringContaining("broken"),
|
|
127
|
-
|
|
129
|
+
"warn"
|
|
128
130
|
);
|
|
129
|
-
|
|
130
|
-
warnSpy.mockRestore();
|
|
131
131
|
});
|
|
132
132
|
|
|
133
133
|
it("should load each plugin with the correct spec string", async () => {
|
package/ts_build/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tyvm/knowhow",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.92",
|
|
4
4
|
"description": "ai cli with plugins and agents",
|
|
5
5
|
"main": "ts_build/src/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -14,18 +14,18 @@
|
|
|
14
14
|
"dataset:diffs:generate": "ts-node src/dataset/diffs/generate.ts",
|
|
15
15
|
"dataset:diffs:jsonl": "ts-node src/dataset/diffs/jsonl.ts",
|
|
16
16
|
"prepublishOnly": "npm run compile",
|
|
17
|
-
"lint": "tslint ./src/**/*.ts"
|
|
17
|
+
"lint": "tslint ./src/**/*.ts",
|
|
18
|
+
"lint:deps": "depcheck --config=.depcheckrc",
|
|
19
|
+
"lint:all": "npm run lint && npm run lint:deps"
|
|
18
20
|
},
|
|
19
21
|
"keywords": [],
|
|
20
22
|
"author": "Micah Riggan",
|
|
21
23
|
"license": "MIT",
|
|
22
24
|
"devDependencies": {
|
|
23
25
|
"@babel/preset-typescript": "^7.23.3",
|
|
24
|
-
"@types/asana": "^0.18.16",
|
|
25
26
|
"@types/diff": "^5.2.1",
|
|
26
27
|
"@types/express": "^4.17.13",
|
|
27
28
|
"@types/jest": "^29.5.13",
|
|
28
|
-
"@types/jira-client": "^7.1.9",
|
|
29
29
|
"@types/mocha": "^10.0.8",
|
|
30
30
|
"@types/node": "^20.6.3",
|
|
31
31
|
"@types/pdf-parse": "^1.1.4",
|
|
@@ -39,55 +39,26 @@
|
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
41
|
"@anthropic-ai/sdk": "^0.39.0",
|
|
42
|
-
"@aws-sdk/client-s3": "^3.588.0",
|
|
43
42
|
"@google/genai": "^0.14.1",
|
|
44
43
|
"@inquirer/editor": "^4.2.18",
|
|
45
|
-
"@linear/sdk": "^12.0.0",
|
|
46
44
|
"@modelcontextprotocol/sdk": "^1.13.3",
|
|
47
|
-
"@notionhq/client": "^2.2.14",
|
|
48
|
-
"@octokit/rest": "^20.0.2",
|
|
49
45
|
"@simplewebauthn/server": "^13.3.0",
|
|
50
|
-
"@types/react": "^19.1.8",
|
|
51
46
|
"@tyvm/knowhow-tunnel": "0.0.4",
|
|
52
|
-
"asana": "^3.0.16",
|
|
53
|
-
"axios": "^1.5.0",
|
|
54
|
-
"cheerio": "^1.0.0",
|
|
55
47
|
"commander": "^14.0.0",
|
|
56
48
|
"diff": "^5.2.0",
|
|
57
|
-
"esbuild": "^0.25.8",
|
|
58
49
|
"express": "^4.19.2",
|
|
59
|
-
"figma-js": "^1.16.1-0",
|
|
60
50
|
"gitignore-to-glob": "^0.3.0",
|
|
61
51
|
"glob": "11.0.3",
|
|
62
|
-
"ink": "^6.0.1",
|
|
63
52
|
"isolated-vm": "^5.0.4",
|
|
64
|
-
"jira-client": "^8.2.2",
|
|
65
53
|
"jiti": "^2.6.1",
|
|
66
54
|
"marked": "^10.0.0",
|
|
67
55
|
"marked-terminal": "^6.2.0",
|
|
68
56
|
"minimatch": "^10.1.2",
|
|
69
|
-
"morgan": "^1.10.0",
|
|
70
|
-
"node-fetch": "^3.2.3",
|
|
71
57
|
"node-jq": "^6.0.1",
|
|
72
|
-
"node-pty": "^1.0.0",
|
|
73
|
-
"node-record-lpcm16": "^1.0.1",
|
|
74
58
|
"openai": "4.89.1",
|
|
75
|
-
"ora": "^5.4.1",
|
|
76
|
-
"parse-diff": "^0.11.1",
|
|
77
59
|
"pdf-parse": "^1.1.1",
|
|
78
|
-
"playwright": "^1.52.0",
|
|
79
|
-
"playwright-extra": "^4.3.6",
|
|
80
|
-
"progress-estimator": "^0.3.1",
|
|
81
|
-
"puppeteer": "^24.4.0",
|
|
82
|
-
"puppeteer-extra-plugin-stealth": "^2.11.2",
|
|
83
|
-
"react": "^19.1.0",
|
|
84
|
-
"source-map-support": "^0.5.21",
|
|
85
|
-
"tree-sitter": "^0.21.1",
|
|
86
|
-
"tree-sitter-javascript": "^0.23.1",
|
|
87
|
-
"tree-sitter-typescript": "^0.23.1",
|
|
88
60
|
"typescript": "^4.6.3",
|
|
89
61
|
"ws": "^8.18.1",
|
|
90
|
-
"youtube-dl-exec": "^2.5.5",
|
|
91
62
|
"zod": "^3.24.2"
|
|
92
63
|
},
|
|
93
64
|
"directories": {
|
|
@@ -101,5 +72,8 @@
|
|
|
101
72
|
"bugs": {
|
|
102
73
|
"url": "https://github.com/tyvm-ai/knowhow/issues"
|
|
103
74
|
},
|
|
104
|
-
"homepage": "https://github.com/tyvm-ai/knowhow#readme"
|
|
75
|
+
"homepage": "https://github.com/tyvm-ai/knowhow#readme",
|
|
76
|
+
"optionalDependencies": {
|
|
77
|
+
"esbuild-register": "^3.0.0"
|
|
78
|
+
}
|
|
105
79
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function astAppendNode(
|
|
1
|
+
export declare function astAppendNode(...args: any[]): Promise<string>;
|
|
@@ -1,96 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
3
|
exports.astAppendNode = void 0;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
const services_1 = require("../../../services");
|
|
30
|
-
const parser_1 = require("../../../plugins/tree-sitter/parser");
|
|
31
|
-
const editor_1 = require("../../../plugins/tree-sitter/editor");
|
|
32
|
-
async function astAppendNode(filePath, parentPath, newContent) {
|
|
33
|
-
const toolService = (this instanceof services_1.ToolsService ? this : (0, services_1.services)().Tools);
|
|
34
|
-
const context = toolService.getContext();
|
|
35
|
-
const exists = await (0, utils_1.fileExists)(filePath);
|
|
36
|
-
if (!exists) {
|
|
37
|
-
throw new Error(`File not found: ${filePath}`);
|
|
38
|
-
}
|
|
39
|
-
let originalContent = "";
|
|
40
|
-
try {
|
|
41
|
-
originalContent = fs.readFileSync(filePath, "utf8");
|
|
42
|
-
}
|
|
43
|
-
catch (error) {
|
|
44
|
-
throw new Error(`Failed to read file ${filePath}: ${error.message}`);
|
|
45
|
-
}
|
|
46
|
-
if (context.Events) {
|
|
47
|
-
await context.Events.emitBlocking("file:pre-edit", {
|
|
48
|
-
filePath,
|
|
49
|
-
operation: "ast-append-node",
|
|
50
|
-
content: newContent,
|
|
51
|
-
originalContent,
|
|
52
|
-
astParentPath: parentPath,
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
try {
|
|
56
|
-
if (!parser_1.LanguageAgnosticParser.supportsFile(filePath)) {
|
|
57
|
-
throw new Error(`Unsupported file type for AST parsing: ${filePath}`);
|
|
58
|
-
}
|
|
59
|
-
const parser = parser_1.LanguageAgnosticParser.createParserForFile(filePath);
|
|
60
|
-
const editor = new editor_1.TreeEditor(parser, originalContent);
|
|
61
|
-
const updatedEditor = editor.appendChild(parentPath, newContent);
|
|
62
|
-
const updatedContent = updatedEditor.getCurrentText();
|
|
63
|
-
fs.writeFileSync(filePath, updatedContent, "utf8");
|
|
64
|
-
let eventResults = [];
|
|
65
|
-
if (context.Events) {
|
|
66
|
-
eventResults = await context.Events.emitBlocking("file:post-edit", {
|
|
67
|
-
filePath,
|
|
68
|
-
operation: "ast-append-node",
|
|
69
|
-
content: newContent,
|
|
70
|
-
originalContent,
|
|
71
|
-
updatedContent,
|
|
72
|
-
astParentPath: parentPath,
|
|
73
|
-
success: true,
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
const result = {
|
|
77
|
-
file: filePath,
|
|
78
|
-
parentPath,
|
|
79
|
-
action: "appendChild",
|
|
80
|
-
success: true,
|
|
81
|
-
message: `Successfully appended child node to path: ${parentPath}`,
|
|
82
|
-
};
|
|
83
|
-
let eventResultsText = "";
|
|
84
|
-
if (eventResults && eventResults.length > 0) {
|
|
85
|
-
eventResultsText =
|
|
86
|
-
"\n\nAdditional Information:\n" +
|
|
87
|
-
JSON.stringify(eventResults, null, 2);
|
|
88
|
-
}
|
|
89
|
-
return JSON.stringify(result, null, 2) + eventResultsText;
|
|
90
|
-
}
|
|
91
|
-
catch (error) {
|
|
92
|
-
throw new Error(`Failed to append node in ${filePath}: ${error.message}`);
|
|
93
|
-
}
|
|
4
|
+
async function astAppendNode(...args) {
|
|
5
|
+
throw new Error("AST tools require @tyvm/knowhow-module-ast to be installed and configured in knowhow.json modules.");
|
|
94
6
|
}
|
|
95
7
|
exports.astAppendNode = astAppendNode;
|
|
96
8
|
//# sourceMappingURL=astAppendNode.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"astAppendNode.js","sourceRoot":"","sources":["../../../../../src/agents/tools/ast/astAppendNode.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"astAppendNode.js","sourceRoot":"","sources":["../../../../../src/agents/tools/ast/astAppendNode.ts"],"names":[],"mappings":";;;AAIO,KAAK,UAAU,aAAa,CAAC,GAAG,IAAW;IAChD,MAAM,IAAI,KAAK,CACb,oGAAoG,CACrG,CAAC;AACJ,CAAC;AAJD,sCAIC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function astDeleteNode(
|
|
1
|
+
export declare function astDeleteNode(...args: any[]): Promise<string>;
|
|
@@ -1,94 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
3
|
exports.astDeleteNode = void 0;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
const services_1 = require("../../../services");
|
|
30
|
-
const parser_1 = require("../../../plugins/tree-sitter/parser");
|
|
31
|
-
const editor_1 = require("../../../plugins/tree-sitter/editor");
|
|
32
|
-
async function astDeleteNode(filePath, path) {
|
|
33
|
-
const toolService = (this instanceof services_1.ToolsService ? this : (0, services_1.services)().Tools);
|
|
34
|
-
const context = toolService.getContext();
|
|
35
|
-
const exists = await (0, utils_1.fileExists)(filePath);
|
|
36
|
-
if (!exists) {
|
|
37
|
-
throw new Error(`File not found: ${filePath}`);
|
|
38
|
-
}
|
|
39
|
-
let originalContent = "";
|
|
40
|
-
try {
|
|
41
|
-
originalContent = fs.readFileSync(filePath, "utf8");
|
|
42
|
-
}
|
|
43
|
-
catch (error) {
|
|
44
|
-
throw new Error(`Failed to read file ${filePath}: ${error.message}`);
|
|
45
|
-
}
|
|
46
|
-
if (context.Events) {
|
|
47
|
-
await context.Events.emitBlocking("file:pre-edit", {
|
|
48
|
-
filePath,
|
|
49
|
-
operation: "ast-delete-node",
|
|
50
|
-
originalContent,
|
|
51
|
-
astPath: path,
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
try {
|
|
55
|
-
if (!parser_1.LanguageAgnosticParser.supportsFile(filePath)) {
|
|
56
|
-
throw new Error(`Unsupported file type for AST parsing: ${filePath}`);
|
|
57
|
-
}
|
|
58
|
-
const parser = parser_1.LanguageAgnosticParser.createParserForFile(filePath);
|
|
59
|
-
const editor = new editor_1.TreeEditor(parser, originalContent);
|
|
60
|
-
const updatedEditor = editor.deleteNodeByPath(path);
|
|
61
|
-
const updatedContent = updatedEditor.getCurrentText();
|
|
62
|
-
fs.writeFileSync(filePath, updatedContent, "utf8");
|
|
63
|
-
let eventResults = [];
|
|
64
|
-
if (context.Events) {
|
|
65
|
-
eventResults = await context.Events.emitBlocking("file:post-edit", {
|
|
66
|
-
filePath,
|
|
67
|
-
operation: "ast-delete-node",
|
|
68
|
-
originalContent,
|
|
69
|
-
updatedContent,
|
|
70
|
-
astPath: path,
|
|
71
|
-
success: true,
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
const result = {
|
|
75
|
-
file: filePath,
|
|
76
|
-
path,
|
|
77
|
-
action: "delete",
|
|
78
|
-
success: true,
|
|
79
|
-
message: `Successfully deleted node at path: ${path}`,
|
|
80
|
-
};
|
|
81
|
-
let eventResultsText = "";
|
|
82
|
-
if (eventResults && eventResults.length > 0) {
|
|
83
|
-
eventResultsText =
|
|
84
|
-
"\n\nAdditional Information:\n" +
|
|
85
|
-
JSON.stringify(eventResults, null, 2);
|
|
86
|
-
}
|
|
87
|
-
return JSON.stringify(result, null, 2) + eventResultsText;
|
|
88
|
-
}
|
|
89
|
-
catch (error) {
|
|
90
|
-
throw new Error(`Failed to delete node in ${filePath}: ${error.message}`);
|
|
91
|
-
}
|
|
4
|
+
async function astDeleteNode(...args) {
|
|
5
|
+
throw new Error("AST tools require @tyvm/knowhow-module-ast to be installed and configured in knowhow.json modules.");
|
|
92
6
|
}
|
|
93
7
|
exports.astDeleteNode = astDeleteNode;
|
|
94
8
|
//# sourceMappingURL=astDeleteNode.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"astDeleteNode.js","sourceRoot":"","sources":["../../../../../src/agents/tools/ast/astDeleteNode.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"astDeleteNode.js","sourceRoot":"","sources":["../../../../../src/agents/tools/ast/astDeleteNode.ts"],"names":[],"mappings":";;;AAIO,KAAK,UAAU,aAAa,CAAC,GAAG,IAAW;IAChD,MAAM,IAAI,KAAK,CACb,oGAAoG,CACrG,CAAC;AACJ,CAAC;AAJD,sCAIC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function astEditNode(
|
|
1
|
+
export declare function astEditNode(...args: any[]): Promise<string>;
|
|
@@ -1,96 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
3
|
exports.astEditNode = void 0;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
const services_1 = require("../../../services");
|
|
30
|
-
const parser_1 = require("../../../plugins/tree-sitter/parser");
|
|
31
|
-
const editor_1 = require("../../../plugins/tree-sitter/editor");
|
|
32
|
-
async function astEditNode(filePath, path, newContent) {
|
|
33
|
-
const toolService = (this instanceof services_1.ToolsService ? this : (0, services_1.services)().Tools);
|
|
34
|
-
const context = toolService.getContext();
|
|
35
|
-
const exists = await (0, utils_1.fileExists)(filePath);
|
|
36
|
-
if (!exists) {
|
|
37
|
-
throw new Error(`File not found: ${filePath}`);
|
|
38
|
-
}
|
|
39
|
-
let originalContent = "";
|
|
40
|
-
try {
|
|
41
|
-
originalContent = fs.readFileSync(filePath, "utf8");
|
|
42
|
-
}
|
|
43
|
-
catch (error) {
|
|
44
|
-
throw new Error(`Failed to read file ${filePath}: ${error.message}`);
|
|
45
|
-
}
|
|
46
|
-
if (context.Events) {
|
|
47
|
-
await context.Events.emitBlocking("file:pre-edit", {
|
|
48
|
-
filePath,
|
|
49
|
-
operation: "ast-edit-node",
|
|
50
|
-
content: newContent,
|
|
51
|
-
originalContent,
|
|
52
|
-
astPath: path,
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
try {
|
|
56
|
-
if (!parser_1.LanguageAgnosticParser.supportsFile(filePath)) {
|
|
57
|
-
throw new Error(`Unsupported file type for AST parsing: ${filePath}`);
|
|
58
|
-
}
|
|
59
|
-
const parser = parser_1.LanguageAgnosticParser.createParserForFile(filePath);
|
|
60
|
-
const editor = new editor_1.TreeEditor(parser, originalContent);
|
|
61
|
-
const updatedEditor = editor.updateNodeByPath(path, newContent);
|
|
62
|
-
const updatedContent = updatedEditor.getCurrentText();
|
|
63
|
-
fs.writeFileSync(filePath, updatedContent, "utf8");
|
|
64
|
-
let eventResults = [];
|
|
65
|
-
if (context.Events) {
|
|
66
|
-
eventResults = await context.Events.emitBlocking("file:post-edit", {
|
|
67
|
-
filePath,
|
|
68
|
-
operation: "ast-edit-node",
|
|
69
|
-
content: newContent,
|
|
70
|
-
originalContent,
|
|
71
|
-
updatedContent,
|
|
72
|
-
astPath: path,
|
|
73
|
-
success: true,
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
const result = {
|
|
77
|
-
file: filePath,
|
|
78
|
-
path,
|
|
79
|
-
action: "update",
|
|
80
|
-
success: true,
|
|
81
|
-
message: `Successfully updated node at path: ${path}`,
|
|
82
|
-
};
|
|
83
|
-
let eventResultsText = "";
|
|
84
|
-
if (eventResults && eventResults.length > 0) {
|
|
85
|
-
eventResultsText =
|
|
86
|
-
"\n\nAdditional Information:\n" +
|
|
87
|
-
JSON.stringify(eventResults, null, 2);
|
|
88
|
-
}
|
|
89
|
-
return JSON.stringify(result, null, 2) + eventResultsText;
|
|
90
|
-
}
|
|
91
|
-
catch (error) {
|
|
92
|
-
throw new Error(`Failed to edit node in ${filePath}: ${error.message}`);
|
|
93
|
-
}
|
|
4
|
+
async function astEditNode(...args) {
|
|
5
|
+
throw new Error("AST tools require @tyvm/knowhow-module-ast to be installed and configured in knowhow.json modules.");
|
|
94
6
|
}
|
|
95
7
|
exports.astEditNode = astEditNode;
|
|
96
8
|
//# sourceMappingURL=astEditNode.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"astEditNode.js","sourceRoot":"","sources":["../../../../../src/agents/tools/ast/astEditNode.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"astEditNode.js","sourceRoot":"","sources":["../../../../../src/agents/tools/ast/astEditNode.ts"],"names":[],"mappings":";;;AAIO,KAAK,UAAU,WAAW,CAAC,GAAG,IAAW;IAC9C,MAAM,IAAI,KAAK,CACb,oGAAoG,CACrG,CAAC;AACJ,CAAC;AAJD,kCAIC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function astGetPathForLine(
|
|
1
|
+
export declare function astGetPathForLine(...args: any[]): Promise<string>;
|
|
@@ -1,78 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
3
|
exports.astGetPathForLine = void 0;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
const services_1 = require("../../../services");
|
|
30
|
-
const parser_1 = require("../../../plugins/tree-sitter/parser");
|
|
31
|
-
async function astGetPathForLine(filePath, searchText) {
|
|
32
|
-
const toolService = (this instanceof services_1.ToolsService ? this : (0, services_1.services)().Tools);
|
|
33
|
-
const context = toolService.getContext();
|
|
34
|
-
if (context.Events) {
|
|
35
|
-
await context.Events.emitBlocking("ast:pre-get-path-for-line", {
|
|
36
|
-
filePath,
|
|
37
|
-
searchText,
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
const exists = await (0, utils_1.fileExists)(filePath);
|
|
41
|
-
if (!exists) {
|
|
42
|
-
throw new Error(`File not found: ${filePath}`);
|
|
43
|
-
}
|
|
44
|
-
try {
|
|
45
|
-
const content = fs.readFileSync(filePath, "utf8");
|
|
46
|
-
if (!parser_1.LanguageAgnosticParser.supportsFile(filePath)) {
|
|
47
|
-
throw new Error(`Unsupported file type for AST parsing: ${filePath}`);
|
|
48
|
-
}
|
|
49
|
-
const parser = parser_1.LanguageAgnosticParser.createParserForFile(filePath);
|
|
50
|
-
const tree = parser.parseString(content);
|
|
51
|
-
const pathLocations = parser.findPathsForLine(tree, searchText);
|
|
52
|
-
if (context.Events) {
|
|
53
|
-
await context.Events.emitNonBlocking("ast:post-get-path-for-line", {
|
|
54
|
-
filePath,
|
|
55
|
-
searchText,
|
|
56
|
-
pathCount: pathLocations.length,
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
const result = {
|
|
60
|
-
file: filePath,
|
|
61
|
-
searchText,
|
|
62
|
-
language: parser.getLanguage(),
|
|
63
|
-
totalMatches: pathLocations.length,
|
|
64
|
-
matches: pathLocations.map((loc) => ({
|
|
65
|
-
path: loc.path,
|
|
66
|
-
line: loc.row + 1,
|
|
67
|
-
column: loc.column + 1,
|
|
68
|
-
text: loc.text,
|
|
69
|
-
})),
|
|
70
|
-
};
|
|
71
|
-
return JSON.stringify(result, null, 2);
|
|
72
|
-
}
|
|
73
|
-
catch (error) {
|
|
74
|
-
throw new Error(`Failed to get path for line in ${filePath}: ${error.message}`);
|
|
75
|
-
}
|
|
4
|
+
async function astGetPathForLine(...args) {
|
|
5
|
+
throw new Error("AST tools require @tyvm/knowhow-module-ast to be installed and configured in knowhow.json modules.");
|
|
76
6
|
}
|
|
77
7
|
exports.astGetPathForLine = astGetPathForLine;
|
|
78
8
|
//# sourceMappingURL=astGetPathForLine.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"astGetPathForLine.js","sourceRoot":"","sources":["../../../../../src/agents/tools/ast/astGetPathForLine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"astGetPathForLine.js","sourceRoot":"","sources":["../../../../../src/agents/tools/ast/astGetPathForLine.ts"],"names":[],"mappings":";;;AAIO,KAAK,UAAU,iBAAiB,CAAC,GAAG,IAAW;IACpD,MAAM,IAAI,KAAK,CACb,oGAAoG,CACrG,CAAC;AACJ,CAAC;AAJD,8CAIC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function astListPaths(
|
|
1
|
+
export declare function astListPaths(...args: any[]): Promise<string>;
|