Skip to content

Commit 6644be7

Browse files
committed
Merge origin/main into brandon/upgrade-opentui-2025-10-28
Resolved merge conflicts following the guidance: - Preferred our theming/UI work (theme system, Separator component) - Preferred their engineering/systems work (PLAN mode, BuildModeButtons) Key changes: - Added PLAN mode support to agent mode toggle with theme system - Added BuildModeButtons component for plan mode workflow - Updated theme types to include modePlanBg and modePlanText - Fixed TypeScript errors in BuildModeButtons (wrap -> wrapMode) All type checks and builds pass successfully.
2 parents 0368c6d + 29821bc commit 6644be7

File tree

15 files changed

+295
-78
lines changed

15 files changed

+295
-78
lines changed

.agents/base2/base2.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ export function createBase2(
4949
toolNames: buildArray(
5050
'spawn_agents',
5151
'read_files',
52+
'read_subtree',
5253
'write_todos',
5354
'str_replace',
5455
'write_file',
@@ -192,10 +193,10 @@ The user asks you to implement a new feature. You respond in multiple steps:
192193
${buildArray(
193194
`- Spawn file pickers, code-searcher, directory-lister, glob-matcher, commanders, and web/docs researchers to gather context as needed. The file-picker-max agent in particular is very useful to use to find relevant files. Read all the relevant files using the read_files tool. Read as many files as possible so that you have a comprehensive context on the user's request.`,
194195
`- Important: Read as many files as could possibly be relevant to the task to improve your understanding of the user's request and produce the best possible code changes. This is frequently 12-20 files, depending on the task.`,
195-
`- Use the write_todos tool to write out your step-by-step implementation plan.${hasNoValidation ? '' : ' You should include at least one step to validate/test your changes: be specific about whether to typecheck, run tests, run lints, etc.'}`,
196+
`- Use the write_todos tool to write out your step-by-step implementation plan. Include ALL of the applicable tasks in the list.${hasNoValidation ? '' : ' You should include at least one step to validate/test your changes: be specific about whether to typecheck, run tests, run lints, etc.'}`,
196197
`- You must spawn the ${isGpt5 ? 'best-of-n-editor-gpt-5' : 'best-of-n-editor'} agent to implement non-trivial code changes, since it will generate the best code changes from multiple implementation proposals. This is the best way to make high quality code changes -- strongly prefer using this agent over the str_replace or write_file tools, unless the change is very small and trivial.`,
197198
!hasNoValidation &&
198-
`- Test your changes${isFast ? ' briefly' : ''} by running appropriate validation commands for the project (e.g. typechecks, tests, lints, etc.). You may have to explore the project to find the appropriate commands. Don't skip this step!`,
199+
`- Test your changes${isFast ? ' briefly' : ''} by running appropriate validation commands for the project (e.g. typechecks, tests, lints, etc.).${isFast ? ' If you can, only typecheck/test the area of the project that you are editing, rather than the entire project.' : ' Start by type checking the specific area of the project that you are editing and then test the entire project if necessary.'} You may have to explore the project to find the appropriate commands. Don't skip this step!`,
199200
`- Inform the user that you have completed the task in one sentence or a few short bullet points. Don't create any markdown summary files or example documentation files, unless asked by the user. If you already finished the user request and said you're done, then don't say anything else.`,
200201
isGpt5 && `- Use the task_completed tool.`,
201202
).join('\n')}`

.agents/base2/best-of-n/best-of-n-implementor.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,6 @@ export const createBestOfNImplementor = (options: {
1212
return {
1313
publisher,
1414
model: isSonnet ? 'anthropic/claude-sonnet-4.5' : 'openai/gpt-5',
15-
...(isGpt5 && {
16-
reasoningOptions: {
17-
effort: 'high',
18-
},
19-
}),
2015
displayName: 'Implementation Generator',
2116
spawnerPrompt:
2217
'Generates a complete implementation plan with all code changes',

.agents/file-explorer/file-lister.ts

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,37 @@
11
import { publisher } from '../constants'
2-
import {
3-
PLACEHOLDER,
4-
type SecretAgentDefinition,
5-
} from '../types/secret-agent-definition'
2+
import { type SecretAgentDefinition } from '../types/secret-agent-definition'
63

74
const definition: SecretAgentDefinition = {
85
id: 'file-lister',
96
displayName: 'Liszt the File Lister',
107
publisher,
118
model: 'anthropic/claude-haiku-4.5',
12-
spawnerPrompt: 'Lists files that are relevant to the prompt',
9+
spawnerPrompt:
10+
'Lists up to 12 files that are relevant to the prompt within the given directories. Unless you know which directories are relevant, omit the directories parameter. This agent is great for finding files that could be relevant to the prompt.',
1311
inputSchema: {
1412
prompt: {
1513
type: 'string',
1614
description: 'A coding task to complete',
1715
},
16+
params: {
17+
type: 'object' as const,
18+
properties: {
19+
directories: {
20+
type: 'array' as const,
21+
items: { type: 'string' as const },
22+
description:
23+
'Optional list of paths to directories to look within. If omitted, the entire project tree is used.',
24+
},
25+
},
26+
required: [],
27+
},
1828
},
1929
outputMode: 'last_message',
2030
includeMessageHistory: false,
21-
toolNames: [],
31+
toolNames: ['read_subtree'],
2232
spawnableAgents: [],
2333

24-
systemPrompt: `You are an expert at finding relevant files in a codebase and listing them out. ${PLACEHOLDER.FILE_TREE_PROMPT_LARGE}`,
34+
systemPrompt: `You are an expert at finding relevant files in a codebase and listing them out.`,
2535
instructionsPrompt: `Instructions:
2636
- Do not use any tools.
2737
- Do not write any analysis.
@@ -44,6 +54,19 @@ README.md
4454
4555
Do not write an introduction. Do not use any tools. Do not write anything else other than the file paths.
4656
`.trim(),
57+
58+
handleSteps: function* ({ params }) {
59+
const directories = params?.directories ?? []
60+
yield {
61+
toolName: 'read_subtree',
62+
input: {
63+
paths: directories,
64+
maxTokens: 200_000,
65+
},
66+
}
67+
68+
yield 'STEP_ALL'
69+
},
4770
}
4871

4972
export default definition

.agents/file-explorer/file-picker-max.ts

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,24 @@ const definition: SecretAgentDefinition = {
1717
exclude: false,
1818
},
1919
spawnerPrompt:
20-
'Spawn to find relevant files in a codebase related to the prompt. Cannot do string searches on the codebase.',
20+
'Spawn to find relevant files in a codebase related to the prompt. Cannot do string searches on the codebase, but does a fuzzy search. Unless you know which directories are relevant, omit the directories parameter. This agent is extremely effective at finding files in the codebase that could be relevant to the prompt.',
2121
inputSchema: {
2222
prompt: {
2323
type: 'string',
2424
description: 'A coding task to complete',
2525
},
26+
params: {
27+
type: 'object' as const,
28+
properties: {
29+
directories: {
30+
type: 'array' as const,
31+
items: { type: 'string' as const },
32+
description:
33+
'Optional list of paths to directories to look within. If omitted, the entire project tree is used.',
34+
},
35+
},
36+
required: [],
37+
},
2638
},
2739
outputMode: 'last_message',
2840
includeMessageHistory: false,
@@ -35,14 +47,15 @@ Provide an extremely short report of the locations in the codebase that could be
3547
In your report, please give a very concise analysis that includes the full paths of files that are relevant and (extremely briefly) how they could be useful.
3648
`.trim(),
3749

38-
handleSteps: function* ({ prompt, logger }) {
50+
handleSteps: function* ({ prompt, params }) {
3951
const { toolResult: fileListerResults } = yield {
4052
toolName: 'spawn_agents',
4153
input: {
4254
agents: [
4355
{
4456
agent_type: 'file-lister',
4557
prompt: prompt ?? '',
58+
params: params ?? {},
4659
},
4760
],
4861
},
@@ -62,7 +75,7 @@ In your report, please give a very concise analysis that includes the full paths
6275
},
6376
}
6477

65-
yield 'STEP_ALL'
78+
yield 'STEP'
6679
},
6780
}
6881

0 commit comments

Comments
 (0)