Skip to content

Commit e271970

Browse files
fix(patch): cherry-pick 7ec7845 to release/v0.15.0-preview.1-pr-12905 [CONFLICTS] (#12962)
Co-authored-by: anj-s <32556631+anj-s@users.noreply.github.com> Co-authored-by: Anjali Sridhar <anjsridhar@gmail.com>
1 parent 48fa48c commit e271970

8 files changed

Lines changed: 48 additions & 13 deletions

File tree

docs/get-started/configuration.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -480,8 +480,8 @@ their corresponding top-level category object in your `settings.json` file.
480480
#### `useWriteTodos`
481481

482482
- **`useWriteTodos`** (boolean):
483-
- **Description:** Enable the write_todos_list tool.
484-
- **Default:** `false`
483+
- **Description:** Enable the write_todos tool.
484+
- **Default:** `true`
485485

486486
#### `security`
487487

docs/tools/todos.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ This document describes the `write_todos` tool for the Gemini CLI.
66

77
The `write_todos` tool allows the Gemini agent to create and manage a list of
88
subtasks for complex user requests. This provides you, the user, with greater
9-
visibility into the agent's plan and its current progress.
9+
visibility into the agent's plan and its current progress. It also helps with
10+
alignment where the agent is less likely to lose track of its current goal.
1011

1112
### Arguments
1213

@@ -49,8 +50,8 @@ write_todos({
4950

5051
## Important notes
5152

52-
- **Enabling:** This tool is disabled by default. To use it, you must enable it
53-
in your `settings.json` file by setting `"useWriteTodos": true`.
53+
- **Enabling:** This tool is enabled by default. You can disable it in your
54+
`settings.json` file by setting `"useWriteTodos": false`.
5455

5556
- **Intended Use:** This tool is primarily used by the agent for complex,
5657
multi-turn tasks. It is generally not used for simple, single-turn questions.

packages/cli/src/config/settingsSchema.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1080,8 +1080,8 @@ const SETTINGS_SCHEMA = {
10801080
label: 'Use Write Todos',
10811081
category: 'Advanced',
10821082
requiresRestart: false,
1083-
default: false,
1084-
description: 'Enable the write_todos_list tool.',
1083+
default: true,
1084+
description: 'Enable the write_todos tool.',
10851085
showInDialog: false,
10861086
},
10871087
security: {

packages/cli/src/ui/components/messages/Todo.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ const createTodoHistoryItem = (todos: Todo[]): HistoryItem =>
2020
id: '1',
2121
tools: [
2222
{
23-
name: 'write_todos_list',
23+
name: 'write_todos',
2424
callId: 'tool-1',
2525
status: ToolCallStatus.Success,
2626
resultDisplay: {

packages/cli/src/ui/hooks/usePhraseCycler.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ export const INFORMATIVE_TIPS = [
200200
'Set the number of lines to keep when truncating outputs (/settings)...',
201201
'Enable policy-based tool confirmation via message bus (/settings)...',
202202
'Enable smart-edit tool for more precise editing (/settings)...',
203-
'Enable write_todos_list tool to generate task lists (/settings)...',
203+
'Enable write_todos tool to generate task lists (/settings)...',
204204
'Enable model routing based on complexity (/settings)...',
205205
'Enable experimental subagents for task delegation (/settings)...',
206206
//Settings tips end here

packages/core/src/config/config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -514,7 +514,7 @@ export class Config {
514514
params.truncateToolOutputLines ?? DEFAULT_TRUNCATE_TOOL_OUTPUT_LINES;
515515
this.enableToolOutputTruncation = params.enableToolOutputTruncation ?? true;
516516
this.useSmartEdit = params.useSmartEdit ?? true;
517-
this.useWriteTodos = params.useWriteTodos ?? false;
517+
this.useWriteTodos = params.useWriteTodos ?? true;
518518
this.initialUseModelRouter = params.useModelRouter ?? false;
519519
this.useModelRouter = this.initialUseModelRouter;
520520
this.disableModelRouterForAuth = params.disableModelRouterForAuth ?? [];

packages/core/src/tools/write-todos.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,14 +173,48 @@ export class WriteTodosTool extends BaseDeclarativeTool<
173173
},
174174
},
175175
required: ['description', 'status'],
176+
additionalProperties: false,
176177
},
177178
},
178179
},
179180
required: ['todos'],
181+
additionalProperties: false,
180182
},
181183
);
182184
}
183185

186+
override get schema() {
187+
return {
188+
name: this.name,
189+
description: this.description,
190+
parametersJsonSchema: this.parameterSchema,
191+
responseJsonSchema: {
192+
type: 'object',
193+
properties: {
194+
todos: {
195+
type: 'array',
196+
items: {
197+
type: 'object',
198+
properties: {
199+
description: {
200+
type: 'string',
201+
},
202+
status: {
203+
type: 'string',
204+
enum: TODO_STATUSES,
205+
},
206+
},
207+
required: ['description', 'status'],
208+
additionalProperties: false,
209+
},
210+
},
211+
},
212+
required: ['todos'],
213+
additionalProperties: false,
214+
},
215+
};
216+
}
217+
184218
protected override validateToolParamValues(
185219
params: WriteTodosToolParams,
186220
): string | null {

schemas/settings.schema.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -978,9 +978,9 @@
978978
},
979979
"useWriteTodos": {
980980
"title": "Use Write Todos",
981-
"description": "Enable the write_todos_list tool.",
982-
"markdownDescription": "Enable the write_todos_list tool.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `false`",
983-
"default": false,
981+
"description": "Enable the write_todos tool.",
982+
"markdownDescription": "Enable the write_todos tool.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `true`",
983+
"default": true,
984984
"type": "boolean"
985985
},
986986
"security": {

0 commit comments

Comments
 (0)