@tyvm/knowhow 0.0.90 → 0.0.92

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (272) hide show
  1. package/.depcheckrc +30 -0
  2. package/bin/knowhow.js +1 -1
  3. package/package.json +8 -34
  4. package/src/agents/configurable/ConfigAgent.ts +2 -2
  5. package/src/agents/tools/executeScript/index.ts +5 -0
  6. package/src/agents/tools/googleSearch.ts +2 -2
  7. package/src/agents/tools/index.ts +0 -3
  8. package/src/agents/tools/list.ts +0 -147
  9. package/src/agents/tools/loadWebpage.ts +3 -113
  10. package/src/auth/browserLogin.ts +10 -13
  11. package/src/chat/modules/AgentModule.ts +0 -1
  12. package/src/chat/types.ts +1 -1
  13. package/src/cli.ts +63 -3
  14. package/src/clients/gemini.ts +96 -25
  15. package/src/clients/http.ts +7 -11
  16. package/src/clients/pricing/google.ts +122 -26
  17. package/src/conversion.ts +24 -54
  18. package/src/index.ts +15 -20
  19. package/src/login.ts +5 -6
  20. package/src/plugins/language.ts +0 -4
  21. package/src/plugins/plugins.ts +0 -14
  22. package/src/plugins/url.ts +31 -12
  23. package/src/services/EmbeddingsService.ts +70 -0
  24. package/src/services/KnowhowClient.ts +34 -34
  25. package/src/{plugins/downloader/downloader.ts → services/MediaProcessorService.ts} +109 -267
  26. package/src/services/S3.ts +19 -87
  27. package/src/services/index.ts +8 -8
  28. package/src/services/modules/index.ts +12 -3
  29. package/src/services/modules/types.ts +8 -2
  30. package/src/services/script-execution/ScriptExecutor.ts +29 -10
  31. package/src/services/script-execution/ScriptPolicy.ts +6 -2
  32. package/src/types.ts +1 -0
  33. package/src/utils/http.ts +127 -0
  34. package/src/workers/auth/PasskeySetup.ts +7 -11
  35. package/tests/clients/AIClient.test.ts +24 -21
  36. package/tests/manual/file-edits/figma.test.ts +3 -70
  37. package/tests/plugins/language/languagePlugin-content-triggers.test.ts +2 -0
  38. package/tests/plugins/language/languagePlugin.test.ts +2 -0
  39. package/tests/processors/ToolResponseCache.test.ts +2 -2
  40. package/tests/test.spec.ts +0 -14
  41. package/tests/unit/modules/moduleLoading.test.ts +12 -4
  42. package/tests/unit/plugins/pluginLoading.test.ts +6 -6
  43. package/ts_build/package.json +8 -34
  44. package/ts_build/src/agents/tools/ast/astAppendNode.d.ts +1 -1
  45. package/ts_build/src/agents/tools/ast/astAppendNode.js +2 -90
  46. package/ts_build/src/agents/tools/ast/astAppendNode.js.map +1 -1
  47. package/ts_build/src/agents/tools/ast/astDeleteNode.d.ts +1 -1
  48. package/ts_build/src/agents/tools/ast/astDeleteNode.js +2 -88
  49. package/ts_build/src/agents/tools/ast/astDeleteNode.js.map +1 -1
  50. package/ts_build/src/agents/tools/ast/astEditNode.d.ts +1 -1
  51. package/ts_build/src/agents/tools/ast/astEditNode.js +2 -90
  52. package/ts_build/src/agents/tools/ast/astEditNode.js.map +1 -1
  53. package/ts_build/src/agents/tools/ast/astGetPathForLine.d.ts +1 -1
  54. package/ts_build/src/agents/tools/ast/astGetPathForLine.js +2 -72
  55. package/ts_build/src/agents/tools/ast/astGetPathForLine.js.map +1 -1
  56. package/ts_build/src/agents/tools/ast/astListPaths.d.ts +1 -1
  57. package/ts_build/src/agents/tools/ast/astListPaths.js +2 -72
  58. package/ts_build/src/agents/tools/ast/astListPaths.js.map +1 -1
  59. package/ts_build/src/agents/tools/executeScript/index.d.ts +3 -2
  60. package/ts_build/src/agents/tools/executeScript/index.js +4 -1
  61. package/ts_build/src/agents/tools/executeScript/index.js.map +1 -1
  62. package/ts_build/src/agents/tools/googleSearch.js +2 -2
  63. package/ts_build/src/agents/tools/googleSearch.js.map +1 -1
  64. package/ts_build/src/agents/tools/index.d.ts +0 -3
  65. package/ts_build/src/agents/tools/index.js +0 -3
  66. package/ts_build/src/agents/tools/index.js.map +1 -1
  67. package/ts_build/src/agents/tools/list.js +0 -138
  68. package/ts_build/src/agents/tools/list.js.map +1 -1
  69. package/ts_build/src/agents/tools/loadWebpage.js +1 -89
  70. package/ts_build/src/agents/tools/loadWebpage.js.map +1 -1
  71. package/ts_build/src/agents/tools/textSearch.d.ts +1 -1
  72. package/ts_build/src/auth/browserLogin.js +7 -7
  73. package/ts_build/src/auth/browserLogin.js.map +1 -1
  74. package/ts_build/src/chat/modules/AgentModule.js.map +1 -1
  75. package/ts_build/src/chat/types.d.ts +1 -1
  76. package/ts_build/src/cli.d.ts +1 -1
  77. package/ts_build/src/cli.js +47 -1
  78. package/ts_build/src/cli.js.map +1 -1
  79. package/ts_build/src/clients/gemini.d.ts +1 -73
  80. package/ts_build/src/clients/gemini.js +57 -19
  81. package/ts_build/src/clients/gemini.js.map +1 -1
  82. package/ts_build/src/clients/http.js +5 -9
  83. package/ts_build/src/clients/http.js.map +1 -1
  84. package/ts_build/src/clients/pricing/google.d.ts +17 -73
  85. package/ts_build/src/clients/pricing/google.js +47 -10
  86. package/ts_build/src/clients/pricing/google.js.map +1 -1
  87. package/ts_build/src/conversion.d.ts +1 -4
  88. package/ts_build/src/conversion.js +12 -27
  89. package/ts_build/src/conversion.js.map +1 -1
  90. package/ts_build/src/index.d.ts +4 -0
  91. package/ts_build/src/index.js +15 -14
  92. package/ts_build/src/index.js.map +1 -1
  93. package/ts_build/src/login.js +5 -4
  94. package/ts_build/src/login.js.map +1 -1
  95. package/ts_build/src/plugins/downloader/downloader.js +3 -3
  96. package/ts_build/src/plugins/downloader/downloader.js.map +1 -1
  97. package/ts_build/src/plugins/language.js.map +1 -1
  98. package/ts_build/src/plugins/plugins.js +0 -14
  99. package/ts_build/src/plugins/plugins.js.map +1 -1
  100. package/ts_build/src/plugins/tree-sitter/editor.d.ts +3 -32
  101. package/ts_build/src/plugins/tree-sitter/editor.js +6 -208
  102. package/ts_build/src/plugins/tree-sitter/editor.js.map +1 -1
  103. package/ts_build/src/plugins/tree-sitter/parser.d.ts +19 -54
  104. package/ts_build/src/plugins/tree-sitter/parser.js +19 -293
  105. package/ts_build/src/plugins/tree-sitter/parser.js.map +1 -1
  106. package/ts_build/src/plugins/tree-sitter/simple-paths.d.ts +2 -15
  107. package/ts_build/src/plugins/tree-sitter/simple-paths.js +2 -324
  108. package/ts_build/src/plugins/tree-sitter/simple-paths.js.map +1 -1
  109. package/ts_build/src/plugins/url.js +27 -8
  110. package/ts_build/src/plugins/url.js.map +1 -1
  111. package/ts_build/src/services/EmbeddingsService.d.ts +14 -0
  112. package/ts_build/src/services/EmbeddingsService.js +33 -0
  113. package/ts_build/src/services/EmbeddingsService.js.map +1 -0
  114. package/ts_build/src/services/GitHub.js +2 -2
  115. package/ts_build/src/services/GitHub.js.map +1 -1
  116. package/ts_build/src/services/KnowhowClient.d.ts +29 -29
  117. package/ts_build/src/services/KnowhowClient.js +33 -33
  118. package/ts_build/src/services/KnowhowClient.js.map +1 -1
  119. package/ts_build/src/services/MediaProcessorService.d.ts +22 -0
  120. package/ts_build/src/services/MediaProcessorService.js +215 -0
  121. package/ts_build/src/services/MediaProcessorService.js.map +1 -0
  122. package/ts_build/src/services/S3.d.ts +0 -4
  123. package/ts_build/src/services/S3.js +14 -60
  124. package/ts_build/src/services/S3.js.map +1 -1
  125. package/ts_build/src/services/index.d.ts +6 -5
  126. package/ts_build/src/services/index.js +6 -6
  127. package/ts_build/src/services/index.js.map +1 -1
  128. package/ts_build/src/services/modules/index.js +12 -3
  129. package/ts_build/src/services/modules/index.js.map +1 -1
  130. package/ts_build/src/services/modules/types.d.ts +8 -2
  131. package/ts_build/src/services/script-execution/ScriptExecutor.js +22 -7
  132. package/ts_build/src/services/script-execution/ScriptExecutor.js.map +1 -1
  133. package/ts_build/src/services/script-execution/ScriptPolicy.d.ts +1 -1
  134. package/ts_build/src/services/script-execution/ScriptPolicy.js +4 -2
  135. package/ts_build/src/services/script-execution/ScriptPolicy.js.map +1 -1
  136. package/ts_build/src/types.d.ts +1 -0
  137. package/ts_build/src/types.js +1 -0
  138. package/ts_build/src/types.js.map +1 -1
  139. package/ts_build/src/utils/http.d.ts +27 -0
  140. package/ts_build/src/utils/http.js +98 -0
  141. package/ts_build/src/utils/http.js.map +1 -0
  142. package/ts_build/src/workers/auth/PasskeySetup.js +6 -7
  143. package/ts_build/src/workers/auth/PasskeySetup.js.map +1 -1
  144. package/ts_build/tests/clients/AIClient.test.js +11 -14
  145. package/ts_build/tests/clients/AIClient.test.js.map +1 -1
  146. package/ts_build/tests/manual/file-edits/figma.test.d.ts +0 -1
  147. package/ts_build/tests/manual/file-edits/figma.test.js +1 -46
  148. package/ts_build/tests/manual/file-edits/figma.test.js.map +1 -1
  149. package/ts_build/tests/plugins/language/languagePlugin-content-triggers.test.js +2 -0
  150. package/ts_build/tests/plugins/language/languagePlugin-content-triggers.test.js.map +1 -1
  151. package/ts_build/tests/plugins/language/languagePlugin.test.js +2 -0
  152. package/ts_build/tests/plugins/language/languagePlugin.test.js.map +1 -1
  153. package/ts_build/tests/processors/ToolResponseCache.test.js +2 -2
  154. package/ts_build/tests/processors/ToolResponseCache.test.js.map +1 -1
  155. package/ts_build/tests/test.spec.js +0 -14
  156. package/ts_build/tests/test.spec.js.map +1 -1
  157. package/ts_build/tests/tree-sitter/tree-sitter.test.d.ts +0 -1
  158. package/ts_build/tests/tree-sitter/tree-sitter.test.js +2 -183
  159. package/ts_build/tests/tree-sitter/tree-sitter.test.js.map +1 -1
  160. package/ts_build/tests/unit/modules/moduleLoading.test.js +11 -4
  161. package/ts_build/tests/unit/modules/moduleLoading.test.js.map +1 -1
  162. package/ts_build/tests/unit/plugins/pluginLoading.test.js +4 -4
  163. package/ts_build/tests/unit/plugins/pluginLoading.test.js.map +1 -1
  164. package/benchmarks/.dockerignore +0 -7
  165. package/benchmarks/README.md +0 -166
  166. package/benchmarks/docker/Dockerfile +0 -68
  167. package/benchmarks/example-config.yml +0 -27
  168. package/benchmarks/jest.config.js +0 -13
  169. package/benchmarks/package-lock.json +0 -4297
  170. package/benchmarks/package.json +0 -39
  171. package/benchmarks/results/27b0a06/2025-09-27/xai/xai-grok-code-fast-1.json +0 -2909
  172. package/benchmarks/results/4057aed/2025-08-14/anthropic/anthropic-claude-sonnet-4-20250514.json +0 -1671
  173. package/benchmarks/results/4542435/2025-08-05/lms/lms-openai-gpt-oss-20b.json +0 -2814
  174. package/benchmarks/results/4542435/2025-08-05/lms/lms-qwen-qwen3-30b-a3b-2507.json +0 -2014
  175. package/benchmarks/results/4fb9125/2025-08-07/anthropic/anthropic-claude-sonnet-4-20250514.json +0 -3121
  176. package/benchmarks/results/5766aee/2025-08-02/lms-qwen/qwen3-coder-30b.json +0 -98
  177. package/benchmarks/results/6d73808/2025-08-07/openai/openai-gpt-5.json +0 -3256
  178. package/benchmarks/results/77bf0a6/2025-08-02/lms-qwen/qwen3-30b-a3b-2507.json +0 -4298
  179. package/benchmarks/results/8c0d445/2025-08-03/anthropic/anthropic-claude-sonnet-4-20250514.json +0 -3031
  180. package/benchmarks/results/8c0d445/2025-08-03/openai/openai-gpt-4.1-2025-04-14.json +0 -2990
  181. package/benchmarks/results/ac6b2ab/2025-08-03/anthropic/anthropic-claude-sonnet-4-20250514.json +0 -3256
  182. package/benchmarks/results/ac6b2ab/2025-08-03/lms/lms-qwen-qwen3-coder-30b.json +0 -3007
  183. package/benchmarks/results/ac6b2ab/2025-08-03/openai/openai-gpt-4.1-2025-04-14.json +0 -3256
  184. package/benchmarks/results/ac6b2ab/2025-08-03/openai/openai-gpt-4.1-mini-2025-04-14.json +0 -3036
  185. package/benchmarks/results/ac6b2ab/2025-08-03/openai/openai-gpt-4.1-nano-2025-04-14.json +0 -3280
  186. package/benchmarks/results/adff675/2025-08-04/lms/lms-qwen-qwen3-30b-a3b-2507.json +0 -1920
  187. package/benchmarks/results/adff675/2025-08-04/lms/lms-qwen-qwen3-coder-30b.json +0 -3281
  188. package/benchmarks/results/b502ed9/2025-08-03/lms-qwen/qwen3-coder-30b.json +0 -2896
  189. package/benchmarks/results/d1a8129/2025-08-03/lms/lms-qwen-qwen3-coder-30b.json +0 -3011
  190. package/benchmarks/results/e60471c/2025-08-03/lms/qwen3-30b-a3b-2507.json +0 -3003
  191. package/benchmarks/scripts/build-and-run.sh +0 -47
  192. package/benchmarks/scripts/clone-exercism.sh +0 -92
  193. package/benchmarks/scripts/validate.sh +0 -48
  194. package/benchmarks/src/__tests__/runner.test.ts +0 -27
  195. package/benchmarks/src/cli.ts +0 -90
  196. package/benchmarks/src/evaluators/EvaluatorRegistry.ts +0 -64
  197. package/benchmarks/src/evaluators/JavaScriptEvaluator.ts +0 -183
  198. package/benchmarks/src/evaluators/index.ts +0 -3
  199. package/benchmarks/src/evaluators/types.ts +0 -22
  200. package/benchmarks/src/index.ts +0 -3
  201. package/benchmarks/src/providers.ts +0 -13
  202. package/benchmarks/src/runner.ts +0 -824
  203. package/benchmarks/src/types.ts +0 -63
  204. package/benchmarks/tsconfig.json +0 -19
  205. package/leaderboard/README.md +0 -148
  206. package/leaderboard/app/api/benchmark-data/route.ts +0 -131
  207. package/leaderboard/app/api/benchmark-detail/route.ts +0 -172
  208. package/leaderboard/app/details/[model]/[provider]/[language]/page.tsx +0 -501
  209. package/leaderboard/app/exercise/[model]/[provider]/[language]/[exercise]/page.tsx +0 -375
  210. package/leaderboard/app/globals.css +0 -27
  211. package/leaderboard/app/layout.tsx +0 -21
  212. package/leaderboard/app/page.tsx +0 -170
  213. package/leaderboard/components/LeaderboardTable.tsx +0 -168
  214. package/leaderboard/components/PerformanceChart.tsx +0 -109
  215. package/leaderboard/next-env.d.ts +0 -5
  216. package/leaderboard/next.config.js +0 -4
  217. package/leaderboard/package-lock.json +0 -6363
  218. package/leaderboard/package.json +0 -28
  219. package/leaderboard/postcss.config.js +0 -6
  220. package/leaderboard/tailwind.config.js +0 -17
  221. package/leaderboard/tsconfig.json +0 -28
  222. package/leaderboard/types/benchmark.ts +0 -67
  223. package/leaderboard/utils/dataProcessor.ts +0 -33
  224. package/src/agents/tools/asana/definitions.ts +0 -199
  225. package/src/agents/tools/asana/index.ts +0 -108
  226. package/src/agents/tools/ast/astAppendNode.ts +0 -90
  227. package/src/agents/tools/ast/astDeleteNode.ts +0 -88
  228. package/src/agents/tools/ast/astEditNode.ts +0 -95
  229. package/src/agents/tools/ast/astGetPathForLine.ts +0 -73
  230. package/src/agents/tools/ast/astListPaths.ts +0 -66
  231. package/src/agents/tools/ast/index.ts +0 -7
  232. package/src/agents/tools/github/definitions.ts +0 -89
  233. package/src/agents/tools/github/index.ts +0 -67
  234. package/src/chat-old.ts +0 -446
  235. package/src/plugins/asana.ts +0 -146
  236. package/src/plugins/downloader/plugin.ts +0 -103
  237. package/src/plugins/downloader/types.ts +0 -92
  238. package/src/plugins/figma.ts +0 -158
  239. package/src/plugins/github.ts +0 -219
  240. package/src/plugins/jira.ts +0 -115
  241. package/src/plugins/linear.ts +0 -230
  242. package/src/plugins/notion.ts +0 -179
  243. package/src/plugins/tree-sitter/editor.ts +0 -369
  244. package/src/plugins/tree-sitter/lang-packs/index.ts +0 -23
  245. package/src/plugins/tree-sitter/lang-packs/java.ts +0 -59
  246. package/src/plugins/tree-sitter/lang-packs/javascript.ts +0 -57
  247. package/src/plugins/tree-sitter/lang-packs/python.ts +0 -45
  248. package/src/plugins/tree-sitter/lang-packs/types.ts +0 -79
  249. package/src/plugins/tree-sitter/lang-packs/typescript.ts +0 -49
  250. package/src/plugins/tree-sitter/parser.ts +0 -470
  251. package/src/plugins/tree-sitter/simple-paths.ts +0 -467
  252. package/src/services/GitHub.ts +0 -59
  253. package/tests/tree-sitter/editor.test.ts +0 -113
  254. package/tests/tree-sitter/invalid.test.ts +0 -299
  255. package/tests/tree-sitter/paths/common-edits.test.ts +0 -564
  256. package/tests/tree-sitter/paths/debug-exact-position.test.ts +0 -44
  257. package/tests/tree-sitter/paths/debug-line-indexing.test.ts +0 -49
  258. package/tests/tree-sitter/paths/debug-paths.test.ts +0 -90
  259. package/tests/tree-sitter/paths/paths.test.ts +0 -170
  260. package/tests/tree-sitter/paths/simple-paths.test.ts +0 -367
  261. package/tests/tree-sitter/sample-after.ts +0 -48
  262. package/tests/tree-sitter/sample-before.ts +0 -25
  263. package/tests/tree-sitter/test-files/completely-broken.ts +0 -7
  264. package/tests/tree-sitter/test-files/duplicate-braces.ts +0 -39
  265. package/tests/tree-sitter/test-files/invalid-nesting.ts +0 -39
  266. package/tests/tree-sitter/test-files/malformed-signature.ts +0 -39
  267. package/tests/tree-sitter/test-files/mismatched-parens.ts +0 -39
  268. package/tests/tree-sitter/test-files/missing-semicolon.ts +0 -39
  269. package/tests/tree-sitter/test-files/partially-broken.ts +0 -20
  270. package/tests/tree-sitter/test-files/specific-errors.ts +0 -14
  271. package/tests/tree-sitter/test-files/unclosed-string.ts +0 -39
  272. package/tests/tree-sitter/tree-sitter.test.ts +0 -251
@@ -1,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 mockPlugin = {
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: mockPlugin as any }],
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
- resolvedCtx.Plugins.registerPlugin(plugin.name, plugin.plugin);
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", mockPlugin);
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 service = new PluginService(makeContext());
114
- const warnSpy = jest.spyOn(console, "warn").mockImplementation(() => {});
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(warnSpy).toHaveBeenCalledWith(
126
+ expect(context.Events.log).toHaveBeenCalledWith(
127
+ "PluginService",
126
128
  expect.stringContaining("broken"),
127
- expect.any(String)
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 () => {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tyvm/knowhow",
3
- "version": "0.0.90",
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(filePath: string, parentPath: string, newContent: string): Promise<string>;
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
- const fs = __importStar(require("fs"));
28
- const utils_1 = require("../../../utils");
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":"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"}
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(filePath: string, path: string): Promise<string>;
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
- const fs = __importStar(require("fs"));
28
- const utils_1 = require("../../../utils");
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":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,0CAA4C;AAC5C,gDAA2D;AAC3D,gEAA6E;AAC7E,gEAAiE;AAK1D,KAAK,UAAU,aAAa,CAAC,QAAgB,EAAE,IAAY;IAEhE,MAAM,WAAW,GAAG,CAClB,IAAI,YAAY,uBAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,mBAAQ,GAAE,CAAC,KAAK,CACvC,CAAC;IAElB,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,EAAE,CAAC;IAEzC,MAAM,MAAM,GAAG,MAAM,IAAA,kBAAU,EAAC,QAAQ,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;KAChD;IAGD,IAAI,eAAe,GAAG,EAAE,CAAC;IACzB,IAAI;QACF,eAAe,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;KACrD;IAAC,OAAO,KAAK,EAAE;QACd,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;KACtE;IAGD,IAAI,OAAO,CAAC,MAAM,EAAE;QAClB,MAAM,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,eAAe,EAAE;YACjD,QAAQ;YACR,SAAS,EAAE,iBAAiB;YAC5B,eAAe;YACf,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;KACJ;IAED,IAAI;QACF,IAAI,CAAC,+BAAsB,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;YAClD,MAAM,IAAI,KAAK,CAAC,0CAA0C,QAAQ,EAAE,CAAC,CAAC;SACvE;QAED,MAAM,MAAM,GAAG,+BAAsB,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,IAAI,mBAAU,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QACvD,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,cAAc,GAAG,aAAa,CAAC,cAAc,EAAE,CAAC;QAGtD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;QAGnD,IAAI,YAAY,GAAU,EAAE,CAAC;QAC7B,IAAI,OAAO,CAAC,MAAM,EAAE;YAClB,YAAY,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,gBAAgB,EAAE;gBACjE,QAAQ;gBACR,SAAS,EAAE,iBAAiB;gBAC5B,eAAe;gBACf,cAAc;gBACd,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;SACJ;QAED,MAAM,MAAM,GAAG;YACb,IAAI,EAAE,QAAQ;YACd,IAAI;YACJ,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,sCAAsC,IAAI,EAAE;SACtD,CAAC;QAGF,IAAI,gBAAgB,GAAG,EAAE,CAAC;QAC1B,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3C,gBAAgB;gBACd,+BAA+B;oBAC/B,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;SACzC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,gBAAgB,CAAC;KAC3D;IAAC,OAAO,KAAU,EAAE;QAEnB,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;KAC3E;AACH,CAAC;AA9ED,sCA8EC"}
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(filePath: string, path: string, newContent: string): Promise<string>;
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
- const fs = __importStar(require("fs"));
28
- const utils_1 = require("../../../utils");
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":"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"}
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(filePath: string, searchText: string): Promise<string>;
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
- const fs = __importStar(require("fs"));
28
- const utils_1 = require("../../../utils");
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":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,0CAA4C;AAC5C,gDAA2D;AAC3D,gEAA6E;AAMtE,KAAK,UAAU,iBAAiB,CACrC,QAAgB,EAChB,UAAkB;IAGlB,MAAM,WAAW,GAAG,CAClB,IAAI,YAAY,uBAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,mBAAQ,GAAE,CAAC,KAAK,CACvC,CAAC;IAElB,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,EAAE,CAAC;IAGzC,IAAI,OAAO,CAAC,MAAM,EAAE;QAClB,MAAM,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,2BAA2B,EAAE;YAC7D,QAAQ;YACR,UAAU;SACX,CAAC,CAAC;KACJ;IAED,MAAM,MAAM,GAAG,MAAM,IAAA,kBAAU,EAAC,QAAQ,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;KAChD;IAED,IAAI;QACF,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAElD,IAAI,CAAC,+BAAsB,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;YAClD,MAAM,IAAI,KAAK,CAAC,0CAA0C,QAAQ,EAAE,CAAC,CAAC;SACvE;QAED,MAAM,MAAM,GAAG,+BAAsB,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACpE,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAGhE,IAAI,OAAO,CAAC,MAAM,EAAE;YAClB,MAAM,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,4BAA4B,EAAE;gBACjE,QAAQ;gBACR,UAAU;gBACV,SAAS,EAAE,aAAa,CAAC,MAAM;aAChC,CAAC,CAAC;SACJ;QAED,MAAM,MAAM,GAAG;YACb,IAAI,EAAE,QAAQ;YACd,UAAU;YACV,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE;YAC9B,YAAY,EAAE,aAAa,CAAC,MAAM;YAClC,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACnC,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC;gBACjB,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC;gBACtB,IAAI,EAAE,GAAG,CAAC,IAAI;aACf,CAAC,CAAC;SACJ,CAAC;QAEF,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;KACxC;IAAC,OAAO,KAAU,EAAE;QACnB,MAAM,IAAI,KAAK,CACb,kCAAkC,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE,CAC/D,CAAC;KACH;AACH,CAAC;AA/DD,8CA+DC"}
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(filePath: string): Promise<string>;
1
+ export declare function astListPaths(...args: any[]): Promise<string>;