@google/gemini-cli-core 0.24.0-nightly.20260103.30f5c4af4 → 0.24.0-preview.1

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 (298) hide show
  1. package/dist/docs/cli/settings.md +1 -0
  2. package/dist/docs/cli/skills.md +156 -0
  3. package/dist/docs/cli/telemetry.md +3 -3
  4. package/dist/docs/cli/tutorials/skills-getting-started.md +124 -0
  5. package/dist/docs/cli/tutorials.md +4 -0
  6. package/dist/docs/get-started/configuration.md +32 -5
  7. package/dist/docs/sidebar.json +4 -0
  8. package/dist/google-gemini-cli-core-0.24.0-preview.0.tgz +0 -0
  9. package/dist/src/agents/a2a-client-manager.d.ts +5 -0
  10. package/dist/src/agents/a2a-client-manager.js +130 -0
  11. package/dist/src/agents/a2a-client-manager.js.map +1 -1
  12. package/dist/src/agents/a2a-client-manager.test.js +27 -1
  13. package/dist/src/agents/a2a-client-manager.test.js.map +1 -1
  14. package/dist/src/agents/a2aUtils.d.ts +28 -0
  15. package/dist/src/agents/a2aUtils.js +111 -0
  16. package/dist/src/agents/a2aUtils.js.map +1 -0
  17. package/dist/src/agents/a2aUtils.test.js +147 -0
  18. package/dist/src/agents/a2aUtils.test.js.map +1 -0
  19. package/dist/src/agents/delegate-to-agent-tool.d.ts +2 -2
  20. package/dist/src/agents/delegate-to-agent-tool.js +6 -6
  21. package/dist/src/agents/delegate-to-agent-tool.js.map +1 -1
  22. package/dist/src/agents/delegate-to-agent-tool.test.js +37 -7
  23. package/dist/src/agents/delegate-to-agent-tool.test.js.map +1 -1
  24. package/dist/src/agents/introspection-agent.js +2 -2
  25. package/dist/src/agents/introspection-agent.js.map +1 -1
  26. package/dist/src/agents/introspection-agent.test.js +2 -2
  27. package/dist/src/agents/introspection-agent.test.js.map +1 -1
  28. package/dist/src/agents/local-executor.js +1 -1
  29. package/dist/src/agents/local-executor.js.map +1 -1
  30. package/dist/src/agents/local-executor.test.js +2 -2
  31. package/dist/src/agents/local-executor.test.js.map +1 -1
  32. package/dist/src/agents/local-invocation.d.ts +2 -2
  33. package/dist/src/agents/local-invocation.js +3 -3
  34. package/dist/src/agents/local-invocation.js.map +1 -1
  35. package/dist/src/agents/local-invocation.test.js +7 -5
  36. package/dist/src/agents/local-invocation.test.js.map +1 -1
  37. package/dist/src/agents/remote-invocation.d.ts +17 -3
  38. package/dist/src/agents/remote-invocation.js +104 -6
  39. package/dist/src/agents/remote-invocation.js.map +1 -1
  40. package/dist/src/agents/remote-invocation.test.js +184 -18
  41. package/dist/src/agents/remote-invocation.test.js.map +1 -1
  42. package/dist/src/agents/subagent-tool-wrapper.d.ts +2 -2
  43. package/dist/src/agents/subagent-tool-wrapper.js +6 -5
  44. package/dist/src/agents/subagent-tool-wrapper.js.map +1 -1
  45. package/dist/src/agents/subagent-tool-wrapper.test.js +17 -10
  46. package/dist/src/agents/subagent-tool-wrapper.test.js.map +1 -1
  47. package/dist/src/agents/types.d.ts +6 -0
  48. package/dist/src/code_assist/oauth2.js +31 -1
  49. package/dist/src/code_assist/oauth2.js.map +1 -1
  50. package/dist/src/code_assist/oauth2.test.js +75 -3
  51. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  52. package/dist/src/code_assist/server.d.ts +5 -0
  53. package/dist/src/code_assist/server.js +19 -4
  54. package/dist/src/code_assist/server.js.map +1 -1
  55. package/dist/src/code_assist/server.test.js +19 -0
  56. package/dist/src/code_assist/server.test.js.map +1 -1
  57. package/dist/src/code_assist/setup.js +6 -4
  58. package/dist/src/code_assist/setup.js.map +1 -1
  59. package/dist/src/code_assist/setup.test.js +63 -0
  60. package/dist/src/code_assist/setup.test.js.map +1 -1
  61. package/dist/src/code_assist/types.d.ts +18 -0
  62. package/dist/src/config/config.d.ts +19 -3
  63. package/dist/src/config/config.js +49 -25
  64. package/dist/src/config/config.js.map +1 -1
  65. package/dist/src/config/config.test.js +81 -4
  66. package/dist/src/config/config.test.js.map +1 -1
  67. package/dist/src/config/models.js +6 -4
  68. package/dist/src/config/models.js.map +1 -1
  69. package/dist/src/config/models.test.js +21 -1
  70. package/dist/src/config/models.test.js.map +1 -1
  71. package/dist/src/core/client.js +39 -7
  72. package/dist/src/core/client.js.map +1 -1
  73. package/dist/src/core/client.test.js +93 -0
  74. package/dist/src/core/client.test.js.map +1 -1
  75. package/dist/src/core/contentGenerator.js +1 -1
  76. package/dist/src/core/contentGenerator.js.map +1 -1
  77. package/dist/src/core/contentGenerator.test.js +1 -1
  78. package/dist/src/core/contentGenerator.test.js.map +1 -1
  79. package/dist/src/core/coreToolHookTriggers.test.js +11 -9
  80. package/dist/src/core/coreToolHookTriggers.test.js.map +1 -1
  81. package/dist/src/core/coreToolScheduler.d.ts +1 -0
  82. package/dist/src/core/coreToolScheduler.js +30 -106
  83. package/dist/src/core/coreToolScheduler.js.map +1 -1
  84. package/dist/src/core/coreToolScheduler.test.js +21 -21
  85. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  86. package/dist/src/core/loggingContentGenerator.js +14 -2
  87. package/dist/src/core/loggingContentGenerator.js.map +1 -1
  88. package/dist/src/core/prompts.js +1 -1
  89. package/dist/src/core/prompts.js.map +1 -1
  90. package/dist/src/core/sessionHookTriggers.d.ts +3 -2
  91. package/dist/src/core/sessionHookTriggers.js +8 -1
  92. package/dist/src/core/sessionHookTriggers.js.map +1 -1
  93. package/dist/src/core/turn.d.ts +16 -2
  94. package/dist/src/core/turn.js +2 -0
  95. package/dist/src/core/turn.js.map +1 -1
  96. package/dist/src/generated/git-commit.d.ts +2 -2
  97. package/dist/src/generated/git-commit.js +2 -2
  98. package/dist/src/generated/git-commit.js.map +1 -1
  99. package/dist/src/hooks/hookEventHandler.d.ts +6 -2
  100. package/dist/src/hooks/hookEventHandler.js +24 -3
  101. package/dist/src/hooks/hookEventHandler.js.map +1 -1
  102. package/dist/src/hooks/hookEventHandler.test.js +31 -8
  103. package/dist/src/hooks/hookEventHandler.test.js.map +1 -1
  104. package/dist/src/hooks/hookRunner.d.ts +2 -2
  105. package/dist/src/hooks/hookRunner.js +12 -4
  106. package/dist/src/hooks/hookRunner.js.map +1 -1
  107. package/dist/src/hooks/hookRunner.test.js +33 -0
  108. package/dist/src/hooks/hookRunner.test.js.map +1 -1
  109. package/dist/src/index.d.ts +3 -1
  110. package/dist/src/index.js +3 -2
  111. package/dist/src/index.js.map +1 -1
  112. package/dist/src/policy/config.js +60 -22
  113. package/dist/src/policy/config.js.map +1 -1
  114. package/dist/src/policy/config.test.js +21 -0
  115. package/dist/src/policy/config.test.js.map +1 -1
  116. package/dist/src/policy/persistence.test.js +1 -1
  117. package/dist/src/policy/persistence.test.js.map +1 -1
  118. package/dist/src/policy/policy-engine.js +22 -6
  119. package/dist/src/policy/policy-engine.js.map +1 -1
  120. package/dist/src/policy/policy-engine.test.js +206 -1
  121. package/dist/src/policy/policy-engine.test.js.map +1 -1
  122. package/dist/src/policy/toml-loader.d.ts +0 -8
  123. package/dist/src/policy/toml-loader.js +7 -70
  124. package/dist/src/policy/toml-loader.js.map +1 -1
  125. package/dist/src/policy/toml-loader.test.js +16 -6
  126. package/dist/src/policy/toml-loader.test.js.map +1 -1
  127. package/dist/src/policy/utils.d.ts +21 -0
  128. package/dist/src/policy/utils.js +42 -0
  129. package/dist/src/policy/utils.js.map +1 -0
  130. package/dist/src/policy/utils.test.js +64 -0
  131. package/dist/src/policy/utils.test.js.map +1 -0
  132. package/dist/src/scheduler/tool-executor.d.ts +22 -0
  133. package/dist/src/scheduler/tool-executor.js +198 -0
  134. package/dist/src/scheduler/tool-executor.js.map +1 -0
  135. package/dist/src/scheduler/tool-executor.test.d.ts +6 -0
  136. package/dist/src/scheduler/tool-executor.test.js +231 -0
  137. package/dist/src/scheduler/tool-executor.test.js.map +1 -0
  138. package/dist/src/skills/skillLoader.d.ts +28 -0
  139. package/dist/src/skills/skillLoader.js +77 -0
  140. package/dist/src/skills/skillLoader.js.map +1 -0
  141. package/dist/src/skills/skillLoader.test.d.ts +6 -0
  142. package/dist/src/skills/skillLoader.test.js +73 -0
  143. package/dist/src/skills/skillLoader.test.js.map +1 -0
  144. package/dist/src/{services → skills}/skillManager.d.ts +10 -20
  145. package/dist/src/skills/skillManager.js +89 -0
  146. package/dist/src/skills/skillManager.js.map +1 -0
  147. package/dist/src/skills/skillManager.test.d.ts +6 -0
  148. package/dist/src/skills/skillManager.test.js +128 -0
  149. package/dist/src/skills/skillManager.test.js.map +1 -0
  150. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +5 -5
  151. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +8 -8
  152. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  153. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +2 -2
  154. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +4 -4
  155. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  156. package/dist/src/telemetry/loggers.d.ts +3 -3
  157. package/dist/src/telemetry/loggers.js +4 -4
  158. package/dist/src/telemetry/loggers.js.map +1 -1
  159. package/dist/src/telemetry/loggers.test.js +6 -5
  160. package/dist/src/telemetry/loggers.test.js.map +1 -1
  161. package/dist/src/telemetry/types.d.ts +7 -7
  162. package/dist/src/telemetry/types.js +10 -10
  163. package/dist/src/telemetry/types.js.map +1 -1
  164. package/dist/src/test-utils/mock-message-bus.d.ts +1 -0
  165. package/dist/src/test-utils/mock-message-bus.js +29 -0
  166. package/dist/src/test-utils/mock-message-bus.js.map +1 -1
  167. package/dist/src/test-utils/mock-tool.d.ts +5 -3
  168. package/dist/src/test-utils/mock-tool.js +11 -10
  169. package/dist/src/test-utils/mock-tool.js.map +1 -1
  170. package/dist/src/tools/activate-skill.d.ts +2 -2
  171. package/dist/src/tools/activate-skill.js +6 -1
  172. package/dist/src/tools/activate-skill.js.map +1 -1
  173. package/dist/src/tools/activate-skill.test.js +7 -5
  174. package/dist/src/tools/activate-skill.test.js.map +1 -1
  175. package/dist/src/tools/confirmation-policy.test.js +2 -12
  176. package/dist/src/tools/confirmation-policy.test.js.map +1 -1
  177. package/dist/src/tools/edit.d.ts +27 -5
  178. package/dist/src/tools/edit.js +444 -137
  179. package/dist/src/tools/edit.js.map +1 -1
  180. package/dist/src/tools/edit.test.js +257 -525
  181. package/dist/src/tools/edit.test.js.map +1 -1
  182. package/dist/src/tools/get-internal-docs.d.ts +2 -2
  183. package/dist/src/tools/get-internal-docs.js +6 -6
  184. package/dist/src/tools/get-internal-docs.js.map +1 -1
  185. package/dist/src/tools/get-internal-docs.test.js +2 -1
  186. package/dist/src/tools/get-internal-docs.test.js.map +1 -1
  187. package/dist/src/tools/glob.d.ts +2 -2
  188. package/dist/src/tools/glob.js +1 -1
  189. package/dist/src/tools/glob.js.map +1 -1
  190. package/dist/src/tools/glob.test.js +2 -1
  191. package/dist/src/tools/glob.test.js.map +1 -1
  192. package/dist/src/tools/grep.d.ts +2 -2
  193. package/dist/src/tools/grep.js +1 -1
  194. package/dist/src/tools/grep.js.map +1 -1
  195. package/dist/src/tools/grep.test.js +5 -4
  196. package/dist/src/tools/grep.test.js.map +1 -1
  197. package/dist/src/tools/ls.d.ts +2 -2
  198. package/dist/src/tools/ls.js +2 -2
  199. package/dist/src/tools/ls.js.map +1 -1
  200. package/dist/src/tools/ls.test.js +2 -1
  201. package/dist/src/tools/ls.test.js.map +1 -1
  202. package/dist/src/tools/mcp-client.d.ts +2 -2
  203. package/dist/src/tools/mcp-client.js +2 -1
  204. package/dist/src/tools/mcp-client.js.map +1 -1
  205. package/dist/src/tools/mcp-tool.d.ts +2 -2
  206. package/dist/src/tools/mcp-tool.js +7 -7
  207. package/dist/src/tools/mcp-tool.js.map +1 -1
  208. package/dist/src/tools/mcp-tool.test.js +11 -6
  209. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  210. package/dist/src/tools/memoryTool.d.ts +3 -3
  211. package/dist/src/tools/memoryTool.js +2 -2
  212. package/dist/src/tools/memoryTool.js.map +1 -1
  213. package/dist/src/tools/memoryTool.test.js +5 -2
  214. package/dist/src/tools/memoryTool.test.js.map +1 -1
  215. package/dist/src/tools/message-bus-integration.test.js +10 -37
  216. package/dist/src/tools/message-bus-integration.test.js.map +1 -1
  217. package/dist/src/tools/read-file.d.ts +2 -2
  218. package/dist/src/tools/read-file.js +1 -1
  219. package/dist/src/tools/read-file.js.map +1 -1
  220. package/dist/src/tools/read-file.test.js +3 -2
  221. package/dist/src/tools/read-file.test.js.map +1 -1
  222. package/dist/src/tools/read-many-files.d.ts +2 -2
  223. package/dist/src/tools/read-many-files.js +2 -3
  224. package/dist/src/tools/read-many-files.js.map +1 -1
  225. package/dist/src/tools/read-many-files.test.js +3 -2
  226. package/dist/src/tools/read-many-files.test.js.map +1 -1
  227. package/dist/src/tools/ripGrep.d.ts +2 -2
  228. package/dist/src/tools/ripGrep.js +3 -4
  229. package/dist/src/tools/ripGrep.js.map +1 -1
  230. package/dist/src/tools/ripGrep.test.js +7 -6
  231. package/dist/src/tools/ripGrep.test.js.map +1 -1
  232. package/dist/src/tools/shell.d.ts +3 -4
  233. package/dist/src/tools/shell.js +9 -35
  234. package/dist/src/tools/shell.js.map +1 -1
  235. package/dist/src/tools/shell.test.js +40 -57
  236. package/dist/src/tools/shell.test.js.map +1 -1
  237. package/dist/src/tools/tool-registry.d.ts +11 -6
  238. package/dist/src/tools/tool-registry.js +13 -8
  239. package/dist/src/tools/tool-registry.js.map +1 -1
  240. package/dist/src/tools/tool-registry.test.js +14 -10
  241. package/dist/src/tools/tool-registry.test.js.map +1 -1
  242. package/dist/src/tools/tools.d.ts +5 -5
  243. package/dist/src/tools/tools.js +15 -17
  244. package/dist/src/tools/tools.js.map +1 -1
  245. package/dist/src/tools/tools.test.js +3 -1
  246. package/dist/src/tools/tools.test.js.map +1 -1
  247. package/dist/src/tools/web-fetch.d.ts +2 -2
  248. package/dist/src/tools/web-fetch.js +4 -4
  249. package/dist/src/tools/web-fetch.js.map +1 -1
  250. package/dist/src/tools/web-fetch.test.js +17 -19
  251. package/dist/src/tools/web-fetch.test.js.map +1 -1
  252. package/dist/src/tools/web-search.d.ts +2 -2
  253. package/dist/src/tools/web-search.js +3 -4
  254. package/dist/src/tools/web-search.js.map +1 -1
  255. package/dist/src/tools/web-search.test.js +2 -1
  256. package/dist/src/tools/web-search.test.js.map +1 -1
  257. package/dist/src/tools/write-file.d.ts +2 -2
  258. package/dist/src/tools/write-file.js +3 -3
  259. package/dist/src/tools/write-file.js.map +1 -1
  260. package/dist/src/tools/write-file.test.js +4 -1
  261. package/dist/src/tools/write-file.test.js.map +1 -1
  262. package/dist/src/tools/write-todos.d.ts +2 -2
  263. package/dist/src/tools/write-todos.js +5 -4
  264. package/dist/src/tools/write-todos.js.map +1 -1
  265. package/dist/src/tools/write-todos.test.js +2 -1
  266. package/dist/src/tools/write-todos.test.js.map +1 -1
  267. package/dist/src/utils/editCorrector.test.js +1 -1
  268. package/dist/src/utils/editCorrector.test.js.map +1 -1
  269. package/dist/src/utils/events.d.ts +46 -1
  270. package/dist/src/utils/events.js +21 -0
  271. package/dist/src/utils/events.js.map +1 -1
  272. package/dist/src/utils/events.test.js +25 -0
  273. package/dist/src/utils/events.test.js.map +1 -1
  274. package/dist/src/utils/shell-permissions.test.js +27 -0
  275. package/dist/src/utils/shell-permissions.test.js.map +1 -1
  276. package/dist/src/utils/terminal.d.ts +2 -0
  277. package/dist/src/utils/terminal.js +6 -0
  278. package/dist/src/utils/terminal.js.map +1 -1
  279. package/dist/src/utils/tokenCalculation.js +20 -5
  280. package/dist/src/utils/tokenCalculation.js.map +1 -1
  281. package/dist/src/utils/tokenCalculation.test.js +11 -2
  282. package/dist/src/utils/tokenCalculation.test.js.map +1 -1
  283. package/dist/src/utils/tool-utils.test.js +2 -1
  284. package/dist/src/utils/tool-utils.test.js.map +1 -1
  285. package/dist/tsconfig.tsbuildinfo +1 -1
  286. package/package.json +1 -1
  287. package/dist/google-gemini-cli-core-0.24.0-nightly.20251227.37be16243.tgz +0 -0
  288. package/dist/src/services/skillManager.js +0 -157
  289. package/dist/src/services/skillManager.js.map +0 -1
  290. package/dist/src/services/skillManager.test.js +0 -169
  291. package/dist/src/services/skillManager.test.js.map +0 -1
  292. package/dist/src/tools/smart-edit.d.ts +0 -78
  293. package/dist/src/tools/smart-edit.js +0 -722
  294. package/dist/src/tools/smart-edit.js.map +0 -1
  295. package/dist/src/tools/smart-edit.test.js +0 -591
  296. package/dist/src/tools/smart-edit.test.js.map +0 -1
  297. /package/dist/src/{services/skillManager.test.d.ts → agents/a2aUtils.test.d.ts} +0 -0
  298. /package/dist/src/{tools/smart-edit.test.d.ts → policy/utils.test.d.ts} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@google/gemini-cli-core",
3
- "version": "0.24.0-nightly.20260103.30f5c4af4",
3
+ "version": "0.24.0-preview.1",
4
4
  "description": "Gemini CLI Core",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -1,157 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import * as fs from 'node:fs/promises';
7
- import * as path from 'node:path';
8
- import { glob } from 'glob';
9
- import yaml from 'js-yaml';
10
- import { debugLogger } from '../utils/debugLogger.js';
11
- import { Storage } from '../config/storage.js';
12
- const FRONTMATTER_REGEX = /^---\r?\n([\s\S]*?)\r?\n---\r?\n([\s\S]*)/;
13
- export class SkillManager {
14
- skills = [];
15
- activeSkillNames = new Set();
16
- /**
17
- * Clears all discovered skills.
18
- */
19
- clearSkills() {
20
- this.skills = [];
21
- }
22
- /**
23
- * Discovers skills from standard user and project locations.
24
- * Project skills take precedence over user skills.
25
- */
26
- async discoverSkills(storage) {
27
- this.clearSkills();
28
- // User skills first
29
- const userPaths = [Storage.getUserSkillsDir()];
30
- const userSkills = await this.discoverSkillsInternal(userPaths);
31
- this.addSkillsWithPrecedence(userSkills);
32
- // Project skills second (overwrites user skills with same name)
33
- const projectPaths = [storage.getProjectSkillsDir()];
34
- const projectSkills = await this.discoverSkillsInternal(projectPaths);
35
- this.addSkillsWithPrecedence(projectSkills);
36
- }
37
- addSkillsWithPrecedence(newSkills) {
38
- const skillMap = new Map();
39
- for (const skill of [...this.skills, ...newSkills]) {
40
- skillMap.set(skill.name, skill);
41
- }
42
- this.skills = Array.from(skillMap.values());
43
- }
44
- /**
45
- * Discovered skills in the provided paths and adds them to the manager.
46
- * Internal helper for tiered discovery.
47
- */
48
- async discoverSkillsInternal(paths) {
49
- const discoveredSkills = [];
50
- const seenLocations = new Set(this.skills.map((s) => s.location));
51
- for (const searchPath of paths) {
52
- try {
53
- const absoluteSearchPath = path.resolve(searchPath);
54
- debugLogger.debug(`Discovering skills in: ${absoluteSearchPath}`);
55
- const stats = await fs.stat(absoluteSearchPath).catch(() => null);
56
- if (!stats || !stats.isDirectory()) {
57
- debugLogger.debug(`Search path is not a directory: ${absoluteSearchPath}`);
58
- continue;
59
- }
60
- const skillFiles = await glob('*/SKILL.md', {
61
- cwd: absoluteSearchPath,
62
- absolute: true,
63
- nodir: true,
64
- });
65
- debugLogger.debug(`Found ${skillFiles.length} potential skill files in ${absoluteSearchPath}`);
66
- for (const skillFile of skillFiles) {
67
- if (seenLocations.has(skillFile)) {
68
- continue;
69
- }
70
- const metadata = await this.parseSkillFile(skillFile);
71
- if (metadata) {
72
- debugLogger.debug(`Discovered skill: ${metadata.name} at ${skillFile}`);
73
- discoveredSkills.push(metadata);
74
- seenLocations.add(skillFile);
75
- }
76
- }
77
- }
78
- catch (error) {
79
- debugLogger.log(`Error discovering skills in ${searchPath}:`, error);
80
- }
81
- }
82
- return discoveredSkills;
83
- }
84
- /**
85
- * Returns the list of enabled discovered skills.
86
- */
87
- getSkills() {
88
- return this.skills.filter((s) => !s.disabled);
89
- }
90
- /**
91
- * Returns all discovered skills, including disabled ones.
92
- */
93
- getAllSkills() {
94
- return this.skills;
95
- }
96
- /**
97
- * Filters discovered skills by name.
98
- */
99
- filterSkills(predicate) {
100
- this.skills = this.skills.filter(predicate);
101
- }
102
- /**
103
- * Sets the list of disabled skill names.
104
- */
105
- setDisabledSkills(disabledNames) {
106
- for (const skill of this.skills) {
107
- skill.disabled = disabledNames.includes(skill.name);
108
- }
109
- }
110
- /**
111
- * Reads the full content (metadata + body) of a skill by name.
112
- */
113
- getSkill(name) {
114
- return this.skills.find((s) => s.name === name) ?? null;
115
- }
116
- /**
117
- * Activates a skill by name.
118
- */
119
- activateSkill(name) {
120
- this.activeSkillNames.add(name);
121
- }
122
- /**
123
- * Checks if a skill is active.
124
- */
125
- isSkillActive(name) {
126
- return this.activeSkillNames.has(name);
127
- }
128
- async parseSkillFile(filePath) {
129
- try {
130
- const content = await fs.readFile(filePath, 'utf-8');
131
- const match = content.match(FRONTMATTER_REGEX);
132
- if (!match) {
133
- return null;
134
- }
135
- // Use yaml.load() which is safe in js-yaml v4.
136
- const frontmatter = yaml.load(match[1]);
137
- if (!frontmatter || typeof frontmatter !== 'object') {
138
- return null;
139
- }
140
- const { name, description } = frontmatter;
141
- if (typeof name !== 'string' || typeof description !== 'string') {
142
- return null;
143
- }
144
- return {
145
- name,
146
- description,
147
- location: filePath,
148
- body: match[2].trim(),
149
- };
150
- }
151
- catch (error) {
152
- debugLogger.log(`Error parsing skill file ${filePath}:`, error);
153
- return null;
154
- }
155
- }
156
- }
157
- //# sourceMappingURL=skillManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skillManager.js","sourceRoot":"","sources":["../../../src/services/skillManager.ts"],"names":[],"mappings":"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"}
@@ -1,169 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
7
- import * as fs from 'node:fs/promises';
8
- import * as os from 'node:os';
9
- import * as path from 'node:path';
10
- import { SkillManager } from './skillManager.js';
11
- import { Storage } from '../config/storage.js';
12
- describe('SkillManager', () => {
13
- let testRootDir;
14
- beforeEach(async () => {
15
- testRootDir = await fs.mkdtemp(path.join(os.tmpdir(), 'skill-manager-test-'));
16
- });
17
- afterEach(async () => {
18
- await fs.rm(testRootDir, { recursive: true, force: true });
19
- vi.restoreAllMocks();
20
- });
21
- it('should discover skills with valid SKILL.md and frontmatter', async () => {
22
- const skillDir = path.join(testRootDir, 'my-skill');
23
- await fs.mkdir(skillDir, { recursive: true });
24
- const skillFile = path.join(skillDir, 'SKILL.md');
25
- await fs.writeFile(skillFile, `---
26
- name: my-skill
27
- description: A test skill
28
- ---
29
- # Instructions
30
- Do something.
31
- `);
32
- const service = new SkillManager();
33
- const skills = await service.discoverSkillsInternal([testRootDir]);
34
- expect(skills).toHaveLength(1);
35
- expect(skills[0].name).toBe('my-skill');
36
- expect(skills[0].description).toBe('A test skill');
37
- expect(skills[0].location).toBe(skillFile);
38
- expect(skills[0].body).toBe('# Instructions\nDo something.');
39
- });
40
- it('should ignore directories without SKILL.md', async () => {
41
- const notASkillDir = path.join(testRootDir, 'not-a-skill');
42
- await fs.mkdir(notASkillDir, { recursive: true });
43
- const service = new SkillManager();
44
- const skills = await service.discoverSkillsInternal([testRootDir]);
45
- expect(skills).toHaveLength(0);
46
- });
47
- it('should ignore SKILL.md without valid frontmatter', async () => {
48
- const skillDir = path.join(testRootDir, 'invalid-skill');
49
- await fs.mkdir(skillDir, { recursive: true });
50
- const skillFile = path.join(skillDir, 'SKILL.md');
51
- await fs.writeFile(skillFile, '# No frontmatter here');
52
- const service = new SkillManager();
53
- const skills = await service.discoverSkillsInternal([testRootDir]);
54
- expect(skills).toHaveLength(0);
55
- });
56
- it('should ignore SKILL.md with missing required frontmatter fields', async () => {
57
- const skillDir = path.join(testRootDir, 'missing-fields');
58
- await fs.mkdir(skillDir, { recursive: true });
59
- const skillFile = path.join(skillDir, 'SKILL.md');
60
- await fs.writeFile(skillFile, `---
61
- name: missing-fields
62
- ---
63
- `);
64
- const service = new SkillManager();
65
- const skills = await service.discoverSkillsInternal([testRootDir]);
66
- expect(skills).toHaveLength(0);
67
- });
68
- it('should handle multiple search paths', async () => {
69
- const path1 = path.join(testRootDir, 'path1');
70
- const path2 = path.join(testRootDir, 'path2');
71
- await fs.mkdir(path1, { recursive: true });
72
- await fs.mkdir(path2, { recursive: true });
73
- const skill1Dir = path.join(path1, 'skill1');
74
- await fs.mkdir(skill1Dir, { recursive: true });
75
- await fs.writeFile(path.join(skill1Dir, 'SKILL.md'), `---
76
- name: skill1
77
- description: Skill 1
78
- ---
79
- `);
80
- const skill2Dir = path.join(path2, 'skill2');
81
- await fs.mkdir(skill2Dir, { recursive: true });
82
- await fs.writeFile(path.join(skill2Dir, 'SKILL.md'), `---
83
- name: skill2
84
- description: Skill 2
85
- ---
86
- `);
87
- const service = new SkillManager();
88
- const skills = await service.discoverSkillsInternal([path1, path2]);
89
- expect(skills).toHaveLength(2);
90
- expect(skills.map((s) => s.name).sort()).toEqual(['skill1', 'skill2']);
91
- });
92
- it('should deduplicate skills by name (last wins)', async () => {
93
- const path1 = path.join(testRootDir, 'path1');
94
- const path2 = path.join(testRootDir, 'path2');
95
- await fs.mkdir(path1, { recursive: true });
96
- await fs.mkdir(path2, { recursive: true });
97
- await fs.mkdir(path.join(path1, 'skill'), { recursive: true });
98
- await fs.writeFile(path.join(path1, 'skill', 'SKILL.md'), `---
99
- name: same-name
100
- description: First
101
- ---
102
- `);
103
- await fs.mkdir(path.join(path2, 'skill'), { recursive: true });
104
- await fs.writeFile(path.join(path2, 'skill', 'SKILL.md'), `---
105
- name: same-name
106
- description: Second
107
- ---
108
- `);
109
- const service = new SkillManager();
110
- // In our tiered discovery logic, we call discoverSkillsInternal for each tier
111
- // and then add them with precedence.
112
- const skills1 = await service.discoverSkillsInternal([path1]);
113
- service['addSkillsWithPrecedence'](skills1);
114
- const skills2 = await service.discoverSkillsInternal([path2]);
115
- service['addSkillsWithPrecedence'](skills2);
116
- const skills = service.getSkills();
117
- expect(skills).toHaveLength(1);
118
- expect(skills[0].description).toBe('Second');
119
- });
120
- it('should discover skills from Storage with project precedence', async () => {
121
- const userDir = path.join(testRootDir, 'user');
122
- const projectDir = path.join(testRootDir, 'project');
123
- await fs.mkdir(path.join(userDir, 'skill-a'), { recursive: true });
124
- await fs.mkdir(path.join(projectDir, 'skill-a'), { recursive: true });
125
- await fs.writeFile(path.join(userDir, 'skill-a', 'SKILL.md'), `---
126
- name: skill-a
127
- description: user-desc
128
- ---
129
- `);
130
- await fs.writeFile(path.join(projectDir, 'skill-a', 'SKILL.md'), `---
131
- name: skill-a
132
- description: project-desc
133
- ---
134
- `);
135
- vi.spyOn(Storage, 'getUserSkillsDir').mockReturnValue(userDir);
136
- const storage = new Storage('/dummy');
137
- vi.spyOn(storage, 'getProjectSkillsDir').mockReturnValue(projectDir);
138
- const service = new SkillManager();
139
- await service.discoverSkills(storage);
140
- const skills = service.getSkills();
141
- expect(skills).toHaveLength(1);
142
- expect(skills[0].description).toBe('project-desc');
143
- });
144
- it('should filter disabled skills in getSkills but not in getAllSkills', async () => {
145
- const skill1Dir = path.join(testRootDir, 'skill1');
146
- const skill2Dir = path.join(testRootDir, 'skill2');
147
- await fs.mkdir(skill1Dir, { recursive: true });
148
- await fs.mkdir(skill2Dir, { recursive: true });
149
- await fs.writeFile(path.join(skill1Dir, 'SKILL.md'), `---
150
- name: skill1
151
- description: desc1
152
- ---
153
- `);
154
- await fs.writeFile(path.join(skill2Dir, 'SKILL.md'), `---
155
- name: skill2
156
- description: desc2
157
- ---
158
- `);
159
- const service = new SkillManager();
160
- const discovered = await service.discoverSkillsInternal([testRootDir]);
161
- service['addSkillsWithPrecedence'](discovered);
162
- service.setDisabledSkills(['skill1']);
163
- expect(service.getSkills()).toHaveLength(1);
164
- expect(service.getSkills()[0].name).toBe('skill2');
165
- expect(service.getAllSkills()).toHaveLength(2);
166
- expect(service.getAllSkills().find((s) => s.name === 'skill1')?.disabled).toBe(true);
167
- });
168
- });
169
- //# sourceMappingURL=skillManager.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skillManager.test.js","sourceRoot":"","sources":["../../../src/services/skillManager.test.ts"],"names":[],"mappings":"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"}
@@ -1,78 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import { BaseDeclarativeTool, type ToolInvocation, type ToolResult } from './tools.js';
7
- import type { MessageBus } from '../confirmation-bus/message-bus.js';
8
- import { ToolErrorType } from './tool-error.js';
9
- import type { Config } from '../config/config.js';
10
- import { type ModifiableDeclarativeTool, type ModifyContext } from './modifiable-tool.js';
11
- interface ReplacementContext {
12
- params: EditToolParams;
13
- currentContent: string;
14
- abortSignal: AbortSignal;
15
- }
16
- interface ReplacementResult {
17
- newContent: string;
18
- occurrences: number;
19
- finalOldString: string;
20
- finalNewString: string;
21
- }
22
- export declare function calculateReplacement(config: Config, context: ReplacementContext): Promise<ReplacementResult>;
23
- export declare function getErrorReplaceResult(params: EditToolParams, occurrences: number, expectedReplacements: number, finalOldString: string, finalNewString: string): {
24
- display: string;
25
- raw: string;
26
- type: ToolErrorType;
27
- } | undefined;
28
- /**
29
- * Parameters for the Edit tool
30
- */
31
- export interface EditToolParams {
32
- /**
33
- * The path to the file to modify
34
- */
35
- file_path: string;
36
- /**
37
- * The text to replace
38
- */
39
- old_string: string;
40
- /**
41
- * The text to replace it with
42
- */
43
- new_string: string;
44
- /**
45
- * Number of replacements expected. Defaults to 1 if not specified.
46
- * Use when you want to replace multiple occurrences.
47
- */
48
- expected_replacements?: number;
49
- /**
50
- * The instruction for what needs to be done.
51
- */
52
- instruction: string;
53
- /**
54
- * Whether the edit was modified manually by the user.
55
- */
56
- modified_by_user?: boolean;
57
- /**
58
- * Initially proposed string.
59
- */
60
- ai_proposed_string?: string;
61
- }
62
- /**
63
- * Implementation of the Edit tool logic
64
- */
65
- export declare class SmartEditTool extends BaseDeclarativeTool<EditToolParams, ToolResult> implements ModifiableDeclarativeTool<EditToolParams> {
66
- private readonly config;
67
- static readonly Name = "replace";
68
- constructor(config: Config, messageBus?: MessageBus);
69
- /**
70
- * Validates the parameters for the Edit tool
71
- * @param params Parameters to validate
72
- * @returns Error message string or null if valid
73
- */
74
- protected validateToolParamValues(params: EditToolParams): string | null;
75
- protected createInvocation(params: EditToolParams): ToolInvocation<EditToolParams, ToolResult>;
76
- getModifyContext(_: AbortSignal): ModifyContext<EditToolParams>;
77
- }
78
- export {};