feat(acp): extract and stream plan events from agent thoughts

- Updated default model configurations (Gemini 3/3.1) to enforce `includeThoughts: true` and `ThinkingLevel.HIGH` and updated schema, doc and tests to reflect this.
- Extended the code assist converters to safely extract and format the `thought` field, preventing type errors during `CountToken` API calls.
- Implemented real-time `extractPlanEntries` parsing using regex that gracefully extracts markdown task lists (e.g., `[TODO]`, `[x]`, `[]`) while safely ignoring content inside code blocks.
- Added logic in the ACP client that incrementally reads the agent's thought buffer and emits `sessionUpdate: 'plan'` events directly to the IDE whenever the tracked tasks change.
- Formatted `agent_thought_chunk` outputs to replace escaped literal newlines (`\n`) with actual native newlines, ensuring the IDE chat displays main thought sections cleanly without visual artifacts.
- Added comprehensive unit tests for the plan parser and ACP integration.
This commit is contained in:
Sri Pasumarthi
2026-03-10 15:51:41 -07:00
parent fc51e50bc6
commit 4d5c85ac8b
13 changed files with 657 additions and 133 deletions
+59 -6
View File
@@ -444,9 +444,6 @@ their corresponding top-level category object in your `settings.json` file.
"extends": "base",
"modelConfig": {
"generateContentConfig": {
"thinkingConfig": {
"includeThoughts": true
},
"temperature": 1,
"topP": 0.95,
"topK": 64
@@ -458,6 +455,7 @@ their corresponding top-level category object in your `settings.json` file.
"modelConfig": {
"generateContentConfig": {
"thinkingConfig": {
"includeThoughts": true,
"thinkingBudget": 8192
}
}
@@ -468,6 +466,31 @@ their corresponding top-level category object in your `settings.json` file.
"modelConfig": {
"generateContentConfig": {
"thinkingConfig": {
"includeThoughts": true,
"thinkingLevel": "HIGH"
}
}
}
},
"gemini-3.1-pro-preview": {
"extends": "chat-base-3",
"modelConfig": {
"model": "gemini-3.1-pro-preview",
"generateContentConfig": {
"thinkingConfig": {
"includeThoughts": true,
"thinkingLevel": "HIGH"
}
}
}
},
"gemini-3.1-pro-preview-customtools": {
"extends": "chat-base-3",
"modelConfig": {
"model": "gemini-3.1-pro-preview-customtools",
"generateContentConfig": {
"thinkingConfig": {
"includeThoughts": true,
"thinkingLevel": "HIGH"
}
}
@@ -476,13 +499,37 @@ their corresponding top-level category object in your `settings.json` file.
"gemini-3-pro-preview": {
"extends": "chat-base-3",
"modelConfig": {
"model": "gemini-3-pro-preview"
"model": "gemini-3-pro-preview",
"generateContentConfig": {
"thinkingConfig": {
"includeThoughts": true,
"thinkingLevel": "HIGH"
}
}
}
},
"gemini-3-flash-preview": {
"extends": "chat-base-3",
"modelConfig": {
"model": "gemini-3-flash-preview"
"model": "gemini-3-flash-preview",
"generateContentConfig": {
"thinkingConfig": {
"includeThoughts": true,
"thinkingLevel": "HIGH"
}
}
}
},
"gemini-3.1-flash-lite-preview": {
"extends": "chat-base-3",
"modelConfig": {
"model": "gemini-3.1-flash-lite-preview",
"generateContentConfig": {
"thinkingConfig": {
"includeThoughts": true,
"thinkingLevel": "HIGH"
}
}
}
},
"gemini-2.5-pro": {
@@ -512,7 +559,13 @@ their corresponding top-level category object in your `settings.json` file.
"gemini-3-flash-base": {
"extends": "base",
"modelConfig": {
"model": "gemini-3-flash-preview"
"model": "gemini-3-flash-preview",
"generateContentConfig": {
"thinkingConfig": {
"includeThoughts": true,
"thinkingLevel": "HIGH"
}
}
}
},
"classifier": {