@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.
- package/dist/docs/cli/settings.md +0 -1
- package/dist/docs/get-started/configuration.md +12 -8
- package/dist/google-gemini-cli-core-0.24.0-nightly.20251227.37be16243.tgz +0 -0
- package/dist/src/agents/registry.d.ts +9 -1
- package/dist/src/agents/registry.js +74 -34
- package/dist/src/agents/registry.js.map +1 -1
- package/dist/src/agents/registry.test.js +79 -30
- package/dist/src/agents/registry.test.js.map +1 -1
- package/dist/src/agents/toml-loader.d.ts +14 -5
- package/dist/src/agents/toml-loader.js +98 -26
- package/dist/src/agents/toml-loader.js.map +1 -1
- package/dist/src/agents/toml-loader.test.js +121 -2
- package/dist/src/agents/toml-loader.test.js.map +1 -1
- package/dist/src/config/config.d.ts +22 -3
- package/dist/src/config/config.js +22 -22
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +2 -1
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/config/storage.d.ts +2 -0
- package/dist/src/config/storage.js +6 -0
- package/dist/src/config/storage.js.map +1 -1
- package/dist/src/config/storage.test.js +8 -0
- package/dist/src/config/storage.test.js.map +1 -1
- package/dist/src/confirmation-bus/message-bus.js +2 -1
- package/dist/src/confirmation-bus/message-bus.js.map +1 -1
- package/dist/src/core/client.d.ts +4 -0
- package/dist/src/core/client.js +156 -70
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/client.test.js +110 -5
- package/dist/src/core/client.test.js.map +1 -1
- package/dist/src/core/coreToolHookTriggers.d.ts +2 -2
- package/dist/src/core/coreToolHookTriggers.js +74 -14
- package/dist/src/core/coreToolHookTriggers.js.map +1 -1
- package/dist/src/core/coreToolHookTriggers.test.d.ts +6 -0
- package/dist/src/core/coreToolHookTriggers.test.js +189 -0
- package/dist/src/core/coreToolHookTriggers.test.js.map +1 -0
- package/dist/src/core/coreToolScheduler.js +20 -22
- package/dist/src/core/coreToolScheduler.js.map +1 -1
- package/dist/src/core/coreToolScheduler.test.js +1 -2
- package/dist/src/core/coreToolScheduler.test.js.map +1 -1
- package/dist/src/core/nonInteractiveToolExecutor.test.js +0 -1
- package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/hooks/hookAggregator.js +7 -0
- package/dist/src/hooks/hookAggregator.js.map +1 -1
- package/dist/src/hooks/hookRunner.js +11 -0
- package/dist/src/hooks/hookRunner.js.map +1 -1
- package/dist/src/hooks/types.d.ts +5 -0
- package/dist/src/hooks/types.js +17 -1
- package/dist/src/hooks/types.js.map +1 -1
- package/dist/src/hooks/types.test.js +5 -1
- package/dist/src/hooks/types.test.js.map +1 -1
- package/dist/src/ide/ide-client.js +1 -1
- package/dist/src/ide/ide-client.js.map +1 -1
- package/dist/src/mcp/oauth-utils.js +1 -1
- package/dist/src/mcp/oauth-utils.js.map +1 -1
- package/dist/src/mcp/token-storage/keychain-token-storage.js +1 -1
- package/dist/src/mcp/token-storage/keychain-token-storage.js.map +1 -1
- package/dist/src/policy/config.js +2 -1
- package/dist/src/policy/config.js.map +1 -1
- package/dist/src/routing/strategies/compositeStrategy.js +4 -2
- package/dist/src/routing/strategies/compositeStrategy.js.map +1 -1
- package/dist/src/routing/strategies/compositeStrategy.test.js +11 -10
- package/dist/src/routing/strategies/compositeStrategy.test.js.map +1 -1
- package/dist/src/services/skillManager.d.ts +61 -0
- package/dist/src/services/skillManager.js +157 -0
- package/dist/src/services/skillManager.js.map +1 -0
- package/dist/src/services/skillManager.test.d.ts +6 -0
- package/dist/src/services/skillManager.test.js +169 -0
- package/dist/src/services/skillManager.test.js.map +1 -0
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +4 -6
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
- package/dist/src/telemetry/sdk.js +3 -4
- package/dist/src/telemetry/sdk.js.map +1 -1
- package/dist/src/tools/edit.test.js +1 -1
- package/dist/src/tools/edit.test.js.map +1 -1
- package/dist/src/tools/memoryTool.js +0 -2
- package/dist/src/tools/memoryTool.js.map +1 -1
- package/dist/src/tools/smart-edit.test.js +1 -1
- package/dist/src/tools/smart-edit.test.js.map +1 -1
- package/dist/src/tools/tool-error.d.ts +2 -1
- package/dist/src/tools/tool-error.js +2 -0
- package/dist/src/tools/tool-error.js.map +1 -1
- package/dist/src/tools/tool-registry.js +1 -1
- package/dist/src/tools/tool-registry.js.map +1 -1
- package/dist/src/tools/web-search.js +2 -1
- package/dist/src/tools/web-search.js.map +1 -1
- package/dist/src/tools/write-file.js +2 -1
- package/dist/src/tools/write-file.js.map +1 -1
- package/dist/src/utils/debugLogger.js +1 -0
- package/dist/src/utils/debugLogger.js.map +1 -1
- package/dist/src/utils/editCorrector.js +5 -4
- package/dist/src/utils/editCorrector.js.map +1 -1
- package/dist/src/utils/errorReporting.d.ts +1 -1
- package/dist/src/utils/errorReporting.js +13 -12
- package/dist/src/utils/errorReporting.js.map +1 -1
- package/dist/src/utils/errorReporting.test.js +17 -14
- package/dist/src/utils/errorReporting.test.js.map +1 -1
- package/dist/src/utils/getFolderStructure.js +1 -1
- package/dist/src/utils/getFolderStructure.js.map +1 -1
- package/dist/src/utils/googleQuotaErrors.d.ts +3 -3
- package/dist/src/utils/googleQuotaErrors.js +9 -6
- package/dist/src/utils/googleQuotaErrors.js.map +1 -1
- package/dist/src/utils/googleQuotaErrors.test.js +7 -7
- package/dist/src/utils/googleQuotaErrors.test.js.map +1 -1
- package/dist/src/utils/memoryDiscovery.js +1 -1
- package/dist/src/utils/memoryDiscovery.js.map +1 -1
- package/dist/src/utils/retry.js +8 -5
- package/dist/src/utils/retry.js.map +1 -1
- package/dist/src/utils/summarizer.test.js +3 -2
- package/dist/src/utils/summarizer.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -1
- 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
|
|
24
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
138
|
+
const toml = result.data;
|
|
79
139
|
// Prevent sub-agents from delegating to other agents (to prevent recursion/complexity)
|
|
80
|
-
if (
|
|
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
|
|
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
|
-
|
|
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
|
|
162
|
-
const
|
|
163
|
-
|
|
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":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,aAAa,CAAC;AAC/B,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAe,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,eAAe,EACf,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;
|
|
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).
|
|
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:
|
|
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":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,uBAAuB,EACvB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAG7D,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,IAAI,OAAe,CAAC;IAEpB,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,KAAK,UAAU,cAAc,CAAC,OAAe,EAAE,QAAQ,GAAG,WAAW;QACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC9C,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACtC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC;;;;;OAKrC,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,
|
|
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.
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
}
|