@google/gemini-cli-core 0.24.0-nightly.20251227.37be16243 → 0.24.0-nightly.20251231.05049b5ab

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 (115) hide show
  1. package/dist/docs/cli/settings.md +0 -1
  2. package/dist/docs/get-started/configuration.md +12 -8
  3. package/dist/google-gemini-cli-core-0.24.0-nightly.20251227.37be16243.tgz +0 -0
  4. package/dist/src/agents/registry.d.ts +9 -1
  5. package/dist/src/agents/registry.js +74 -34
  6. package/dist/src/agents/registry.js.map +1 -1
  7. package/dist/src/agents/registry.test.js +79 -30
  8. package/dist/src/agents/registry.test.js.map +1 -1
  9. package/dist/src/agents/toml-loader.d.ts +14 -5
  10. package/dist/src/agents/toml-loader.js +98 -26
  11. package/dist/src/agents/toml-loader.js.map +1 -1
  12. package/dist/src/agents/toml-loader.test.js +121 -2
  13. package/dist/src/agents/toml-loader.test.js.map +1 -1
  14. package/dist/src/config/config.d.ts +22 -3
  15. package/dist/src/config/config.js +22 -22
  16. package/dist/src/config/config.js.map +1 -1
  17. package/dist/src/config/config.test.js +2 -1
  18. package/dist/src/config/config.test.js.map +1 -1
  19. package/dist/src/config/storage.d.ts +2 -0
  20. package/dist/src/config/storage.js +6 -0
  21. package/dist/src/config/storage.js.map +1 -1
  22. package/dist/src/config/storage.test.js +8 -0
  23. package/dist/src/config/storage.test.js.map +1 -1
  24. package/dist/src/confirmation-bus/message-bus.js +2 -1
  25. package/dist/src/confirmation-bus/message-bus.js.map +1 -1
  26. package/dist/src/core/client.d.ts +4 -0
  27. package/dist/src/core/client.js +156 -70
  28. package/dist/src/core/client.js.map +1 -1
  29. package/dist/src/core/client.test.js +110 -5
  30. package/dist/src/core/client.test.js.map +1 -1
  31. package/dist/src/core/coreToolHookTriggers.d.ts +2 -2
  32. package/dist/src/core/coreToolHookTriggers.js +74 -14
  33. package/dist/src/core/coreToolHookTriggers.js.map +1 -1
  34. package/dist/src/core/coreToolHookTriggers.test.d.ts +6 -0
  35. package/dist/src/core/coreToolHookTriggers.test.js +189 -0
  36. package/dist/src/core/coreToolHookTriggers.test.js.map +1 -0
  37. package/dist/src/core/coreToolScheduler.js +20 -22
  38. package/dist/src/core/coreToolScheduler.js.map +1 -1
  39. package/dist/src/core/coreToolScheduler.test.js +1 -2
  40. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  41. package/dist/src/core/nonInteractiveToolExecutor.test.js +0 -1
  42. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  43. package/dist/src/generated/git-commit.d.ts +2 -2
  44. package/dist/src/generated/git-commit.js +2 -2
  45. package/dist/src/hooks/hookAggregator.js +7 -0
  46. package/dist/src/hooks/hookAggregator.js.map +1 -1
  47. package/dist/src/hooks/hookRunner.js +11 -0
  48. package/dist/src/hooks/hookRunner.js.map +1 -1
  49. package/dist/src/hooks/types.d.ts +5 -0
  50. package/dist/src/hooks/types.js +17 -1
  51. package/dist/src/hooks/types.js.map +1 -1
  52. package/dist/src/hooks/types.test.js +5 -1
  53. package/dist/src/hooks/types.test.js.map +1 -1
  54. package/dist/src/ide/ide-client.js +1 -1
  55. package/dist/src/ide/ide-client.js.map +1 -1
  56. package/dist/src/mcp/oauth-utils.js +1 -1
  57. package/dist/src/mcp/oauth-utils.js.map +1 -1
  58. package/dist/src/mcp/token-storage/keychain-token-storage.js +1 -1
  59. package/dist/src/mcp/token-storage/keychain-token-storage.js.map +1 -1
  60. package/dist/src/policy/config.js +2 -1
  61. package/dist/src/policy/config.js.map +1 -1
  62. package/dist/src/routing/strategies/compositeStrategy.js +4 -2
  63. package/dist/src/routing/strategies/compositeStrategy.js.map +1 -1
  64. package/dist/src/routing/strategies/compositeStrategy.test.js +11 -10
  65. package/dist/src/routing/strategies/compositeStrategy.test.js.map +1 -1
  66. package/dist/src/services/skillManager.d.ts +61 -0
  67. package/dist/src/services/skillManager.js +157 -0
  68. package/dist/src/services/skillManager.js.map +1 -0
  69. package/dist/src/services/skillManager.test.d.ts +6 -0
  70. package/dist/src/services/skillManager.test.js +169 -0
  71. package/dist/src/services/skillManager.test.js.map +1 -0
  72. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +4 -6
  73. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  74. package/dist/src/telemetry/sdk.js +3 -4
  75. package/dist/src/telemetry/sdk.js.map +1 -1
  76. package/dist/src/tools/edit.test.js +1 -1
  77. package/dist/src/tools/edit.test.js.map +1 -1
  78. package/dist/src/tools/memoryTool.js +0 -2
  79. package/dist/src/tools/memoryTool.js.map +1 -1
  80. package/dist/src/tools/smart-edit.test.js +1 -1
  81. package/dist/src/tools/smart-edit.test.js.map +1 -1
  82. package/dist/src/tools/tool-error.d.ts +2 -1
  83. package/dist/src/tools/tool-error.js +2 -0
  84. package/dist/src/tools/tool-error.js.map +1 -1
  85. package/dist/src/tools/tool-registry.js +1 -1
  86. package/dist/src/tools/tool-registry.js.map +1 -1
  87. package/dist/src/tools/web-search.js +2 -1
  88. package/dist/src/tools/web-search.js.map +1 -1
  89. package/dist/src/tools/write-file.js +2 -1
  90. package/dist/src/tools/write-file.js.map +1 -1
  91. package/dist/src/utils/debugLogger.js +1 -0
  92. package/dist/src/utils/debugLogger.js.map +1 -1
  93. package/dist/src/utils/editCorrector.js +5 -4
  94. package/dist/src/utils/editCorrector.js.map +1 -1
  95. package/dist/src/utils/errorReporting.d.ts +1 -1
  96. package/dist/src/utils/errorReporting.js +13 -12
  97. package/dist/src/utils/errorReporting.js.map +1 -1
  98. package/dist/src/utils/errorReporting.test.js +17 -14
  99. package/dist/src/utils/errorReporting.test.js.map +1 -1
  100. package/dist/src/utils/getFolderStructure.js +1 -1
  101. package/dist/src/utils/getFolderStructure.js.map +1 -1
  102. package/dist/src/utils/googleQuotaErrors.d.ts +3 -3
  103. package/dist/src/utils/googleQuotaErrors.js +9 -6
  104. package/dist/src/utils/googleQuotaErrors.js.map +1 -1
  105. package/dist/src/utils/googleQuotaErrors.test.js +7 -7
  106. package/dist/src/utils/googleQuotaErrors.test.js.map +1 -1
  107. package/dist/src/utils/memoryDiscovery.js +1 -1
  108. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  109. package/dist/src/utils/retry.js +8 -5
  110. package/dist/src/utils/retry.js.map +1 -1
  111. package/dist/src/utils/summarizer.test.js +3 -2
  112. package/dist/src/utils/summarizer.test.js.map +1 -1
  113. package/dist/tsconfig.tsbuildinfo +1 -1
  114. package/package.json +4 -1
  115. package/dist/google-gemini-cli-core-0.24.0-nightly.20251226.546baf993.tgz +0 -0
@@ -20,8 +20,13 @@ export class AgentLoadError extends Error {
20
20
  this.name = 'AgentLoadError';
21
21
  }
22
22
  }
23
- const tomlSchema = z.object({
24
- name: z.string().regex(/^[a-z0-9-_]+$/, 'Name must be a valid slug'),
23
+ const nameSchema = z
24
+ .string()
25
+ .regex(/^[a-z0-9-_]+$/, 'Name must be a valid slug');
26
+ const localAgentSchema = z
27
+ .object({
28
+ kind: z.literal('local').optional().default('local'),
29
+ name: nameSchema,
25
30
  description: z.string().min(1),
26
31
  display_name: z.string().optional(),
27
32
  tools: z
@@ -45,12 +50,59 @@ const tomlSchema = z.object({
45
50
  timeout_mins: z.number().int().positive().optional(),
46
51
  })
47
52
  .optional(),
48
- });
53
+ })
54
+ .strict();
55
+ const remoteAgentSchema = z
56
+ .object({
57
+ kind: z.literal('remote').optional().default('remote'),
58
+ name: nameSchema,
59
+ description: z.string().optional(),
60
+ display_name: z.string().optional(),
61
+ agent_card_url: z.string().url(),
62
+ })
63
+ .strict();
64
+ const remoteAgentsConfigSchema = z
65
+ .object({
66
+ remote_agents: z.array(remoteAgentSchema),
67
+ })
68
+ .strict();
69
+ // Use a Zod union to automatically discriminate between local and remote
70
+ // agent types. This is more robust than manually checking the 'kind' field,
71
+ // as it correctly handles cases where 'kind' is omitted by relying on
72
+ // the presence of unique fields like `agent_card_url` or `prompts`.
73
+ const agentUnionOptions = [
74
+ { schema: localAgentSchema, label: 'Local Agent' },
75
+ { schema: remoteAgentSchema, label: 'Remote Agent' },
76
+ ];
77
+ const singleAgentSchema = z.union([
78
+ agentUnionOptions[0].schema,
79
+ agentUnionOptions[1].schema,
80
+ ]);
81
+ function formatZodError(error, context) {
82
+ const issues = error.issues
83
+ .map((i) => {
84
+ // Handle union errors specifically to give better context
85
+ if (i.code === z.ZodIssueCode.invalid_union) {
86
+ return i.unionErrors
87
+ .map((unionError, index) => {
88
+ const label = agentUnionOptions[index]?.label ?? `Agent type #${index + 1}`;
89
+ const unionIssues = unionError.issues
90
+ .map((u) => `${u.path.join('.')}: ${u.message}`)
91
+ .join(', ');
92
+ return `(${label}) ${unionIssues}`;
93
+ })
94
+ .join('\n');
95
+ }
96
+ return `${i.path.join('.')}: ${i.message}`;
97
+ })
98
+ .join('\n');
99
+ return `${context}:\n${issues}`;
100
+ }
49
101
  /**
50
- * Parses and validates an agent TOML file.
102
+ * Parses and validates an agent TOML file. Returns a validated array of RemoteAgentDefinitions or a single LocalAgentDefinition.
51
103
  *
52
104
  * @param filePath Path to the TOML file.
53
- * @returns The parsed and validated TomlAgentDefinition.
105
+ * @returns An array of parsed and validated TomlAgentDefinitions.
54
106
  * @throws AgentLoadError if parsing or validation fails.
55
107
  */
56
108
  export async function parseAgentToml(filePath) {
@@ -68,19 +120,27 @@ export async function parseAgentToml(filePath) {
68
120
  catch (error) {
69
121
  throw new AgentLoadError(filePath, `TOML parsing failed: ${error.message}`);
70
122
  }
71
- const result = tomlSchema.safeParse(raw);
123
+ // Check for `remote_agents` array
124
+ if (typeof raw === 'object' &&
125
+ raw !== null &&
126
+ 'remote_agents' in raw) {
127
+ const result = remoteAgentsConfigSchema.safeParse(raw);
128
+ if (!result.success) {
129
+ throw new AgentLoadError(filePath, `Validation failed: ${formatZodError(result.error, 'Remote Agents Config')}`);
130
+ }
131
+ return result.data.remote_agents;
132
+ }
133
+ // Single Agent Logic
134
+ const result = singleAgentSchema.safeParse(raw);
72
135
  if (!result.success) {
73
- const issues = result.error.issues
74
- .map((i) => `${i.path.join('.')}: ${i.message}`)
75
- .join(', ');
76
- throw new AgentLoadError(filePath, `Validation failed: ${issues}`);
136
+ throw new AgentLoadError(filePath, `Validation failed: ${formatZodError(result.error, 'Agent Definition')}`);
77
137
  }
78
- const definition = result.data;
138
+ const toml = result.data;
79
139
  // Prevent sub-agents from delegating to other agents (to prevent recursion/complexity)
80
- if (definition.tools?.includes(DELEGATE_TO_AGENT_TOOL_NAME)) {
140
+ if ('tools' in toml && toml.tools?.includes(DELEGATE_TO_AGENT_TOOL_NAME)) {
81
141
  throw new AgentLoadError(filePath, `Validation failed: tools list cannot include '${DELEGATE_TO_AGENT_TOOL_NAME}'. Sub-agents cannot delegate to other agents.`);
82
142
  }
83
- return definition;
143
+ return [toml];
84
144
  }
85
145
  /**
86
146
  * Converts a TomlAgentDefinition DTO to the internal AgentDefinition structure.
@@ -89,6 +149,25 @@ export async function parseAgentToml(filePath) {
89
149
  * @returns The internal AgentDefinition.
90
150
  */
91
151
  export function tomlToAgentDefinition(toml) {
152
+ const inputConfig = {
153
+ inputs: {
154
+ query: {
155
+ type: 'string',
156
+ description: 'The task for the agent.',
157
+ required: false,
158
+ },
159
+ },
160
+ };
161
+ if (toml.kind === 'remote') {
162
+ return {
163
+ kind: 'remote',
164
+ name: toml.name,
165
+ description: toml.description || '(Loading description...)',
166
+ displayName: toml.display_name,
167
+ agentCardUrl: toml.agent_card_url,
168
+ inputConfig,
169
+ };
170
+ }
92
171
  // If a model is specified, use it. Otherwise, inherit
93
172
  const modelName = toml.model?.model || 'inherit';
94
173
  return {
@@ -114,16 +193,7 @@ export function tomlToAgentDefinition(toml) {
114
193
  tools: toml.tools,
115
194
  }
116
195
  : undefined,
117
- // Default input config for MVA
118
- inputConfig: {
119
- inputs: {
120
- query: {
121
- type: 'string',
122
- description: 'The task for the agent.',
123
- required: false,
124
- },
125
- },
126
- },
196
+ inputConfig,
127
197
  };
128
198
  }
129
199
  /**
@@ -158,9 +228,11 @@ export async function loadAgentsFromDirectory(dir) {
158
228
  for (const file of files) {
159
229
  const filePath = path.join(dir, file);
160
230
  try {
161
- const toml = await parseAgentToml(filePath);
162
- const agent = tomlToAgentDefinition(toml);
163
- result.agents.push(agent);
231
+ const tomls = await parseAgentToml(filePath);
232
+ for (const toml of tomls) {
233
+ const agent = tomlToAgentDefinition(toml);
234
+ result.agents.push(agent);
235
+ }
164
236
  }
165
237
  catch (error) {
166
238
  if (error instanceof AgentLoadError) {
@@ -1 +1 @@
1
- {"version":3,"file":"toml-loader.js","sourceRoot":"","sources":["../../../src/agents/toml-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"toml-loader.js","sourceRoot":"","sources":["../../../src/agents/toml-loader.ts"],"names":[],"mappings":"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"}
@@ -33,7 +33,8 @@ describe('toml-loader', () => {
33
33
  system_prompt = "You are a test agent."
34
34
  `);
35
35
  const result = await parseAgentToml(filePath);
36
- expect(result).toEqual({
36
+ expect(result).toHaveLength(1);
37
+ expect(result[0]).toMatchObject({
37
38
  name: 'test-agent',
38
39
  description: 'A test agent',
39
40
  prompts: {
@@ -41,6 +42,99 @@ describe('toml-loader', () => {
41
42
  },
42
43
  });
43
44
  });
45
+ it('should parse a valid remote agent TOML file', async () => {
46
+ const filePath = await writeAgentToml(`
47
+ kind = "remote"
48
+ name = "remote-agent"
49
+ description = "A remote agent"
50
+ agent_card_url = "https://example.com/card"
51
+ `);
52
+ const result = await parseAgentToml(filePath);
53
+ expect(result).toHaveLength(1);
54
+ expect(result[0]).toEqual({
55
+ kind: 'remote',
56
+ name: 'remote-agent',
57
+ description: 'A remote agent',
58
+ agent_card_url: 'https://example.com/card',
59
+ });
60
+ });
61
+ it('should infer remote agent kind from agent_card_url', async () => {
62
+ const filePath = await writeAgentToml(`
63
+ name = "inferred-remote"
64
+ description = "Inferred"
65
+ agent_card_url = "https://example.com/inferred"
66
+ `);
67
+ const result = await parseAgentToml(filePath);
68
+ expect(result).toHaveLength(1);
69
+ expect(result[0]).toEqual({
70
+ kind: 'remote',
71
+ name: 'inferred-remote',
72
+ description: 'Inferred',
73
+ agent_card_url: 'https://example.com/inferred',
74
+ });
75
+ });
76
+ it('should parse a remote agent without description', async () => {
77
+ const filePath = await writeAgentToml(`
78
+ kind = "remote"
79
+ name = "no-description-remote"
80
+ agent_card_url = "https://example.com/card"
81
+ `);
82
+ const result = await parseAgentToml(filePath);
83
+ expect(result).toHaveLength(1);
84
+ expect(result[0]).toEqual({
85
+ kind: 'remote',
86
+ name: 'no-description-remote',
87
+ agent_card_url: 'https://example.com/card',
88
+ });
89
+ expect(result[0].description).toBeUndefined();
90
+ // defined after conversion to AgentDefinition
91
+ const agentDef = tomlToAgentDefinition(result[0]);
92
+ expect(agentDef.description).toBe('(Loading description...)');
93
+ });
94
+ it('should parse multiple agents in one file', async () => {
95
+ const filePath = await writeAgentToml(`
96
+ [[remote_agents]]
97
+ kind = "remote"
98
+ name = "agent-1"
99
+ description = "Remote 1"
100
+ agent_card_url = "https://example.com/1"
101
+
102
+ [[remote_agents]]
103
+ kind = "remote"
104
+ name = "agent-2"
105
+ description = "Remote 2"
106
+ agent_card_url = "https://example.com/2"
107
+ `);
108
+ const result = await parseAgentToml(filePath);
109
+ expect(result).toHaveLength(2);
110
+ expect(result[0].name).toBe('agent-1');
111
+ expect(result[0].kind).toBe('remote');
112
+ expect(result[1].name).toBe('agent-2');
113
+ expect(result[1].kind).toBe('remote');
114
+ });
115
+ it('should allow omitting kind in remote_agents block', async () => {
116
+ const filePath = await writeAgentToml(`
117
+ [[remote_agents]]
118
+ name = "implicit-remote-1"
119
+ agent_card_url = "https://example.com/1"
120
+
121
+ [[remote_agents]]
122
+ name = "implicit-remote-2"
123
+ agent_card_url = "https://example.com/2"
124
+ `);
125
+ const result = await parseAgentToml(filePath);
126
+ expect(result).toHaveLength(2);
127
+ expect(result[0]).toMatchObject({
128
+ kind: 'remote',
129
+ name: 'implicit-remote-1',
130
+ agent_card_url: 'https://example.com/1',
131
+ });
132
+ expect(result[1]).toMatchObject({
133
+ kind: 'remote',
134
+ name: 'implicit-remote-2',
135
+ agent_card_url: 'https://example.com/2',
136
+ });
137
+ });
44
138
  it('should throw AgentLoadError if file reading fails', async () => {
45
139
  const filePath = path.join(tempDir, 'non-existent.toml');
46
140
  await expect(parseAgentToml(filePath)).rejects.toThrow(AgentLoadError);
@@ -85,12 +179,35 @@ describe('toml-loader', () => {
85
179
  [prompts]
86
180
  system_prompt = "You are a test agent."
87
181
  `);
88
- await expect(parseAgentToml(filePath)).rejects.toThrow(/Validation failed: tools.0: Invalid tool name/);
182
+ await expect(parseAgentToml(filePath)).rejects.toThrow(/Validation failed:[\s\S]*tools.0: Invalid tool name/);
183
+ });
184
+ it('should throw AgentLoadError if file contains both single and multiple agents', async () => {
185
+ const filePath = await writeAgentToml(`
186
+ name = "top-level-agent"
187
+ description = "I should not be here"
188
+ [prompts]
189
+ system_prompt = "..."
190
+
191
+ [[remote_agents]]
192
+ kind = "remote"
193
+ name = "array-agent"
194
+ description = "I am in an array"
195
+ agent_card_url = "https://example.com/card"
196
+ `);
197
+ await expect(parseAgentToml(filePath)).rejects.toThrow(/Validation failed/);
198
+ });
199
+ it('should show both options in error message when validation fails ambiguously', async () => {
200
+ const filePath = await writeAgentToml(`
201
+ name = "ambiguous-agent"
202
+ description = "I have neither prompts nor card"
203
+ `);
204
+ await expect(parseAgentToml(filePath)).rejects.toThrow(/Validation failed: Agent Definition:\n\(Local Agent\) prompts: Required\n\(Remote Agent\) agent_card_url: Required/);
89
205
  });
90
206
  });
91
207
  describe('tomlToAgentDefinition', () => {
92
208
  it('should convert valid TOML to AgentDefinition with defaults', () => {
93
209
  const toml = {
210
+ kind: 'local',
94
211
  name: 'test-agent',
95
212
  description: 'A test agent',
96
213
  prompts: {
@@ -123,6 +240,7 @@ describe('toml-loader', () => {
123
240
  });
124
241
  it('should pass through model aliases', () => {
125
242
  const toml = {
243
+ kind: 'local',
126
244
  name: 'test-agent',
127
245
  description: 'A test agent',
128
246
  model: {
@@ -137,6 +255,7 @@ describe('toml-loader', () => {
137
255
  });
138
256
  it('should pass through unknown model names (e.g. auto)', () => {
139
257
  const toml = {
258
+ kind: 'local',
140
259
  name: 'test-agent',
141
260
  description: 'A test agent',
142
261
  model: {
@@ -1 +1 @@
1
- {"version":3,"file":"toml-loader.test.js","sourceRoot":"","sources":["../../../src/agents/toml-loader.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"toml-loader.test.js","sourceRoot":"","sources":["../../../src/agents/toml-loader.test.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,7 @@ import type { UserTierId } from '../code_assist/types.js';
39
39
  import type { RetrieveUserQuotaResponse } from '../code_assist/types.js';
40
40
  import type { Experiments } from '../code_assist/experiments/experiments.js';
41
41
  import { AgentRegistry } from '../agents/registry.js';
42
+ import { SkillManager } from '../services/skillManager.js';
42
43
  import { ApprovalMode } from '../policy/types.js';
43
44
  export interface AccessibilitySettings {
44
45
  disableLoadingPhrases?: boolean;
@@ -70,6 +71,18 @@ export interface CodebaseInvestigatorSettings {
70
71
  thinkingBudget?: number;
71
72
  model?: string;
72
73
  }
74
+ export interface ExtensionSetting {
75
+ name: string;
76
+ description: string;
77
+ envVar: string;
78
+ sensitive?: boolean;
79
+ }
80
+ export interface ResolvedExtensionSetting {
81
+ name: string;
82
+ envVar: string;
83
+ value: string;
84
+ sensitive: boolean;
85
+ }
73
86
  export interface IntrospectionAgentSettings {
74
87
  enabled?: boolean;
75
88
  }
@@ -92,6 +105,8 @@ export interface GeminiCLIExtension {
92
105
  hooks?: {
93
106
  [K in HookEventName]?: HookDefinition[];
94
107
  };
108
+ settings?: ExtensionSetting[];
109
+ resolvedSettings?: ResolvedExtensionSetting[];
95
110
  }
96
111
  export interface ExtensionInstallMetadata {
97
112
  source: string;
@@ -214,7 +229,6 @@ export interface ConfigParameters {
214
229
  useWriteTodos?: boolean;
215
230
  policyEngineConfig?: PolicyEngineConfig;
216
231
  output?: OutputSettings;
217
- enableMessageBusIntegration?: boolean;
218
232
  disableModelRouterForAuth?: AuthType[];
219
233
  codebaseInvestigatorSettings?: CodebaseInvestigatorSettings;
220
234
  introspectionAgentSettings?: IntrospectionAgentSettings;
@@ -241,6 +255,8 @@ export interface ConfigParameters {
241
255
  };
242
256
  previewFeatures?: boolean;
243
257
  enableAgents?: boolean;
258
+ skillsSupport?: boolean;
259
+ disabledSkills?: string[];
244
260
  experimentalJitContext?: boolean;
245
261
  onModelChange?: (model: string) => void;
246
262
  }
@@ -255,6 +271,7 @@ export declare class Config {
255
271
  private promptRegistry;
256
272
  private resourceRegistry;
257
273
  private agentRegistry;
274
+ private skillManager;
258
275
  private sessionId;
259
276
  private fileSystemService;
260
277
  private contentGeneratorConfig;
@@ -334,7 +351,6 @@ export declare class Config {
334
351
  private readonly messageBus;
335
352
  private readonly policyEngine;
336
353
  private readonly outputSettings;
337
- private readonly enableMessageBusIntegration;
338
354
  private readonly codebaseInvestigatorSettings;
339
355
  private readonly introspectionAgentSettings;
340
356
  private readonly continueOnFailedApiCall;
@@ -354,6 +370,8 @@ export declare class Config {
354
370
  private hookSystem?;
355
371
  private readonly onModelChange;
356
372
  private readonly enableAgents;
373
+ private readonly skillsSupport;
374
+ private readonly disabledSkills;
357
375
  private readonly experimentalJitContext;
358
376
  private contextManager?;
359
377
  private terminalBackground;
@@ -397,6 +415,7 @@ export declare class Config {
397
415
  getAgentRegistry(): AgentRegistry;
398
416
  getToolRegistry(): ToolRegistry;
399
417
  getPromptRegistry(): PromptRegistry;
418
+ getSkillManager(): SkillManager;
400
419
  getResourceRegistry(): ResourceRegistry;
401
420
  getDebugMode(): boolean;
402
421
  getQuestion(): string | undefined;
@@ -516,6 +535,7 @@ export declare class Config {
516
535
  getBannerTextCapacityIssues(): Promise<string>;
517
536
  private ensureExperimentsLoaded;
518
537
  isInteractiveShellEnabled(): boolean;
538
+ isSkillsSupportEnabled(): boolean;
519
539
  isInteractive(): boolean;
520
540
  getUseRipgrep(): boolean;
521
541
  getEnableInteractiveShell(): boolean;
@@ -538,7 +558,6 @@ export declare class Config {
538
558
  getFileExclusions(): FileExclusions;
539
559
  getMessageBus(): MessageBus;
540
560
  getPolicyEngine(): PolicyEngine;
541
- getEnableMessageBusIntegration(): boolean;
542
561
  getEnableHooks(): boolean;
543
562
  getCodebaseInvestigatorSettings(): CodebaseInvestigatorSettings;
544
563
  getIntrospectionAgentSettings(): IntrospectionAgentSettings;
@@ -56,6 +56,7 @@ import { DELEGATE_TO_AGENT_TOOL_NAME } from '../tools/tool-names.js';
56
56
  import { getExperiments } from '../code_assist/experiments/experiments.js';
57
57
  import { ExperimentFlags } from '../code_assist/experiments/flagNames.js';
58
58
  import { debugLogger } from '../utils/debugLogger.js';
59
+ import { SkillManager } from '../services/skillManager.js';
59
60
  import { startupProfiler } from '../telemetry/startupProfiler.js';
60
61
  import { ApprovalMode } from '../policy/types.js';
61
62
  import { DEFAULT_FILE_FILTERING_OPTIONS, DEFAULT_MEMORY_FILE_FILTERING_OPTIONS, } from './constants.js';
@@ -148,6 +149,7 @@ export class Config {
148
149
  promptRegistry;
149
150
  resourceRegistry;
150
151
  agentRegistry;
152
+ skillManager;
151
153
  sessionId;
152
154
  fileSystemService;
153
155
  contentGeneratorConfig;
@@ -227,7 +229,6 @@ export class Config {
227
229
  messageBus;
228
230
  policyEngine;
229
231
  outputSettings;
230
- enableMessageBusIntegration;
231
232
  codebaseInvestigatorSettings;
232
233
  introspectionAgentSettings;
233
234
  continueOnFailedApiCall;
@@ -247,6 +248,8 @@ export class Config {
247
248
  hookSystem;
248
249
  onModelChange;
249
250
  enableAgents;
251
+ skillsSupport;
252
+ disabledSkills;
250
253
  experimentalJitContext;
251
254
  contextManager;
252
255
  terminalBackground = undefined;
@@ -307,9 +310,11 @@ export class Config {
307
310
  this.model = params.model;
308
311
  this._activeModel = params.model;
309
312
  this.enableAgents = params.enableAgents ?? false;
310
- this.experimentalJitContext = params.experimentalJitContext ?? false;
313
+ this.skillsSupport = params.skillsSupport ?? false;
314
+ this.disabledSkills = params.disabledSkills ?? [];
311
315
  this.modelAvailabilityService = new ModelAvailabilityService();
312
316
  this.previewFeatures = params.previewFeatures ?? undefined;
317
+ this.experimentalJitContext = params.experimentalJitContext ?? false;
313
318
  this.maxSessionTurns = params.maxSessionTurns ?? -1;
314
319
  this.experimentalZedIntegration =
315
320
  params.experimentalZedIntegration ?? false;
@@ -357,14 +362,6 @@ export class Config {
357
362
  (params.hooks && 'disabled' in params.hooks
358
363
  ? params.hooks.disabled
359
364
  : undefined) ?? [];
360
- // Enable MessageBus integration if:
361
- // 1. Explicitly enabled via setting, OR
362
- // 2. Hooks are enabled and hooks are configured
363
- const hasHooks = params.hooks && Object.keys(params.hooks).length > 0;
364
- const hooksNeedMessageBus = this.enableHooks && hasHooks;
365
- this.enableMessageBusIntegration =
366
- params.enableMessageBusIntegration ??
367
- (hooksNeedMessageBus ? true : false);
368
365
  this.codebaseInvestigatorSettings = {
369
366
  enabled: params.codebaseInvestigatorSettings?.enabled ?? true,
370
367
  maxNumTurns: params.codebaseInvestigatorSettings?.maxNumTurns ?? 10,
@@ -394,6 +391,7 @@ export class Config {
394
391
  approvalMode: params.approvalMode ?? params.policyEngineConfig?.approvalMode,
395
392
  });
396
393
  this.messageBus = new MessageBus(this.policyEngine, this.debugMode);
394
+ this.skillManager = new SkillManager();
397
395
  this.outputSettings = {
398
396
  format: params.output?.format ?? OutputFormat.TEXT,
399
397
  };
@@ -472,6 +470,11 @@ export class Config {
472
470
  await this.getExtensionLoader().start(this),
473
471
  ]);
474
472
  initMcpHandle?.end();
473
+ // Discover skills if enabled
474
+ if (this.skillsSupport) {
475
+ await this.getSkillManager().discoverSkills(this.storage);
476
+ this.getSkillManager().setDisabledSkills(this.disabledSkills);
477
+ }
475
478
  // Initialize hook system if enabled
476
479
  if (this.enableHooks) {
477
480
  this.hookSystem = new HookSystem(this);
@@ -663,6 +666,9 @@ export class Config {
663
666
  getPromptRegistry() {
664
667
  return this.promptRegistry;
665
668
  }
669
+ getSkillManager() {
670
+ return this.skillManager;
671
+ }
666
672
  getResourceRegistry() {
667
673
  return this.resourceRegistry;
668
674
  }
@@ -1067,6 +1073,9 @@ export class Config {
1067
1073
  this.ptyInfo !== 'child_process' &&
1068
1074
  this.enableInteractiveShell);
1069
1075
  }
1076
+ isSkillsSupportEnabled() {
1077
+ return this.skillsSupport;
1078
+ }
1070
1079
  isInteractive() {
1071
1080
  return this.interactive;
1072
1081
  }
@@ -1149,9 +1158,6 @@ export class Config {
1149
1158
  getPolicyEngine() {
1150
1159
  return this.policyEngine;
1151
1160
  }
1152
- getEnableMessageBusIntegration() {
1153
- return this.enableMessageBusIntegration;
1154
- }
1155
1161
  getEnableHooks() {
1156
1162
  return this.enableHooks;
1157
1163
  }
@@ -1164,9 +1170,7 @@ export class Config {
1164
1170
  async createToolRegistry() {
1165
1171
  const registry = new ToolRegistry(this);
1166
1172
  // Set message bus on tool registry before discovery so MCP tools can access it
1167
- if (this.getEnableMessageBusIntegration()) {
1168
- registry.setMessageBus(this.messageBus);
1169
- }
1173
+ registry.setMessageBus(this.messageBus);
1170
1174
  // helper to create & register core tools that are enabled
1171
1175
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
1172
1176
  const registerCoreTool = (ToolClass, ...args) => {
@@ -1186,10 +1190,7 @@ export class Config {
1186
1190
  // Pass message bus to tools when feature flag is enabled
1187
1191
  // This first implementation is only focused on the general case of
1188
1192
  // the tool registry.
1189
- const messageBusEnabled = this.getEnableMessageBusIntegration();
1190
- const toolArgs = messageBusEnabled
1191
- ? [...args, this.getMessageBus()]
1192
- : args;
1193
+ const toolArgs = [...args, this.getMessageBus()];
1193
1194
  registry.registerTool(new ToolClass(...toolArgs));
1194
1195
  }
1195
1196
  };
@@ -1238,8 +1239,7 @@ export class Config {
1238
1239
  const allowedTools = this.getAllowedTools();
1239
1240
  const isAllowed = !allowedTools || allowedTools.includes(DELEGATE_TO_AGENT_TOOL_NAME);
1240
1241
  if (isAllowed) {
1241
- const messageBusEnabled = this.getEnableMessageBusIntegration();
1242
- const delegateTool = new DelegateToAgentTool(this.agentRegistry, this, messageBusEnabled ? this.getMessageBus() : undefined);
1242
+ const delegateTool = new DelegateToAgentTool(this.agentRegistry, this, this.getMessageBus());
1243
1243
  registry.registerTool(delegateTool);
1244
1244
  }
1245
1245
  }