|
1 | | -const MODE_TO_REQUIREMENTS = { |
2 | | - plan: ["chat", "reasoning", "structured_output"], |
3 | | - implement: ["repo_context", "file_read", "file_edit"], |
4 | | - debug: ["repo_context", "file_read", "shell_execution", "test_execution"], |
5 | | - review: ["repo_context", "file_read", "reasoning", "structured_output"], |
6 | | - summarize: ["chat", "structured_output"], |
7 | | - agent_workflow: ["chat", "reasoning", "structured_output"], |
8 | | - out_of_domain: ["chat"] |
9 | | -}; |
10 | | - |
11 | | -const MODE_VALUES = new Set(Object.keys(MODE_TO_REQUIREMENTS)); |
| 1 | +import { MODE_TO_REQUIREMENTS, resolveSessionMode } from "./session_controller.js"; |
12 | 2 |
|
13 | 3 | const MODE_TO_CLASS = { |
14 | 4 | plan: "medium_reasoning", |
@@ -153,56 +143,6 @@ export function classifyPrompt(input) { |
153 | 143 | }; |
154 | 144 | } |
155 | 145 |
|
156 | | -function resolveSessionMode(session = {}, classification = {}) { |
157 | | - const currentMode = MODE_VALUES.has(session.mode) ? session.mode : null; |
158 | | - const proposedMode = MODE_VALUES.has(classification.proposedMode) |
159 | | - ? classification.proposedMode |
160 | | - : "plan"; |
161 | | - |
162 | | - if (!currentMode) { |
163 | | - return { |
164 | | - previousMode: null, |
165 | | - proposedMode, |
166 | | - resolvedMode: proposedMode, |
167 | | - transitionReason: "no_previous_mode" |
168 | | - }; |
169 | | - } |
170 | | - |
171 | | - if (classification.explicitModeShift) { |
172 | | - return { |
173 | | - previousMode: currentMode, |
174 | | - proposedMode, |
175 | | - resolvedMode: proposedMode, |
176 | | - transitionReason: "explicit_task_signal" |
177 | | - }; |
178 | | - } |
179 | | - |
180 | | - if (proposedMode === "summarize") { |
181 | | - return { |
182 | | - previousMode: currentMode, |
183 | | - proposedMode, |
184 | | - resolvedMode: proposedMode, |
185 | | - transitionReason: "acknowledgement_summary" |
186 | | - }; |
187 | | - } |
188 | | - |
189 | | - if (!classification.modeStrongSignal && ["implement", "debug", "review"].includes(currentMode)) { |
190 | | - return { |
191 | | - previousMode: currentMode, |
192 | | - proposedMode, |
193 | | - resolvedMode: currentMode, |
194 | | - transitionReason: "preserve_current_mode_for_ambiguous_turn" |
195 | | - }; |
196 | | - } |
197 | | - |
198 | | - return { |
199 | | - previousMode: currentMode, |
200 | | - proposedMode, |
201 | | - resolvedMode: proposedMode, |
202 | | - transitionReason: "default_mode_resolution" |
203 | | - }; |
204 | | -} |
205 | | - |
206 | 146 | function buildRequiredCapabilities(resolvedMode, taskType) { |
207 | 147 | const modeRequirements = MODE_TO_REQUIREMENTS[resolvedMode] || ["chat"]; |
208 | 148 | const additionalRequirements = TASK_TYPE_TO_ADDITIONAL_REQUIREMENTS[taskType] || []; |
|
0 commit comments