minovative-mind-cli 2.14.0 → 2.14.1

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/README.md CHANGED
@@ -139,7 +139,7 @@ Background tasks automatically route to dedicated auxiliary models with native `
139
139
  - **History Summarizer**: `Gemini 3.7 Flash` (Temp 0.2, `MINIMAL` invariant) — 3-part structured conversation compression preserving recent history.
140
140
  - **Commit Generator**: `Gemini 3.5 Flash Lite` (`MINIMAL` invariant) — conventional commit message synthesis.
141
141
  - **Micro-Agent Safety Invariants & Normalization**: All internal background micro-agents enforce a hardcoded `MINIMAL` invariant to guarantee zero-latency execution without conversational token burn. The generation pipeline's `normalizeGenerationConfig` automatically strips unsupported internal minimal payloads before dispatching to Google's API, preventing `400 Bad Request` schema errors while ensuring user-selected thinking levels never pollute lightweight background micro-agents.
142
- - **Subsystem Reasoning Budgets**: Orchestrated subsystems maintain tailored reasoning allocations: **PM Kernel Task Decomposition** operates at `HIGH` reasoning depth for optimal topological dependency sorting; **Investigation & Context Sub-Agents** operate at `MEDIUM` reasoning depth for comprehensive repository reconnaissance; **Syntax Repair Agents** operate at `LOW` reasoning depth for precise AST corrections; and **Execution Sub-Agents / Main Agent** dynamically inherit your configured model thinking level (`LOW` | `MEDIUM` | `HIGH`).
142
+ - **Subsystem Reasoning Budgets**: Orchestrated subsystems maintain tailored reasoning allocations: **PM Kernel Task Decomposition** operates at `HIGH` reasoning depth for optimal topological dependency sorting; **Investigation & Context Sub-Agents** dynamically inherit your configured model thinking level (default: `MEDIUM`) for comprehensive repository reconnaissance; **Syntax Repair Agents** operate at `LOW` reasoning depth for precise AST corrections; and **Execution Sub-Agents / Main Agent** dynamically inherit your configured model thinking level (`LOW` | `MEDIUM` | `HIGH`).
143
143
 
144
144
  > You pay for auxiliary model background AI operations and for your selected model during chat and code execution. Use `/debug` to inspect real-time routing diagnostics.
145
145
 
@@ -173,6 +173,7 @@ Minovative Mind CLI features real-time, interactive **@ Context Mentions** direc
173
173
  ### Interactive Autocomplete & Keyboard Navigation
174
174
 
175
175
  When typing `@`, the interactive terminal autocomplete popup immediately renders:
176
+
176
177
  - **10-Option Pagination**: Displays up to 10 ranked suggestions per page with dynamic page indexing `(1/10)`.
177
178
  - **Cyan Navigation Helper**: Highlights the action footer in light blue (`Tab to insert • ↑/↓ navigate • Esc dismiss`) for clear guidance.
178
179
  - **Keyboard Controls**:
@@ -183,25 +184,26 @@ When typing `@`, the interactive terminal autocomplete popup immediately renders
183
184
 
184
185
  ### Supported Mention Types
185
186
 
186
- | Mention Syntax | Category Badge | Type | What it Resolves & Injects |
187
- | :--- | :--- | :--- | :--- |
188
- | `@<path>` or `@file:<path>` | `[file]` | **File** | Injects the complete content of a workspace file (e.g. `@src/index.ts` or `@file:package.json`). |
189
- | `@<path>:<start>-<end>` | `[lines]` | **Line Range Slicing** | Surgically slices and injects only the specified line numbers (e.g. `@src/utils/config.ts:10-50`), saving tokens. |
190
- | `@symbol:<name>` or `@#<name>` | `[sym]` | **AST Symbol** | Injects exact definitions of functions, classes, interfaces, types, methods, or structs (e.g. `@symbol:getUser` or `@#AuthService`) using polyglot AST extraction. |
191
- | `@symbol:<path>:<name>` | `[sym]` | **Scoped Symbol** | Injects a specific symbol definition directly from a designated source file (e.g. `@symbol:src/services/auth.ts:validateToken`). |
192
- | `@git:diff` or `@diff` | `[git]` | **Git Diff** | Injects the active unstaged working tree diff. |
193
- | `@git:staged` | `[git]` | **Git Staged** | Injects currently staged git changes (`git diff --staged`). |
194
- | `@git:status` | `[git]` | **Git Status** | Injects the current branch state and working tree status (`git status --short`). |
195
- | `@git:branch` | `[git]` | **Git Branch** | Injects the current active Git branch and upstream tracking info. |
196
- | `@git:log` | `[git]` | **Git Commit Log** | Injects the recent commit history (last 10 commits with hashes, authors, and messages). |
197
- | `@diagnostics` / `@problems` / `@errors` | `[diag]` / `[prob]` | **Diagnostics** | Injects active compiler, linter, or syntax error diagnostics. |
198
- | `@terminal` / `@console` | `[term]` | **Terminal Context** | Injects recent terminal environment context, shell environment, and command execution state. |
199
- | `@<alias>/<path>` | `[ws]` | **Cross-Workspace File** | Injects file contents from registered external workspaces (e.g. `@backend/src/routes.ts` or `@frontend/src/App.tsx`). |
200
- | `@<alias>` | `[ws]` | **Workspace Summary** | Injects configuration, manifest overview, and path details for a registered external workspace. |
187
+ | Mention Syntax | Category Badge | Type | What it Resolves & Injects |
188
+ | :--------------------------------------- | :------------------ | :----------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
189
+ | `@<path>` or `@file:<path>` | `[file]` | **File** | Injects the complete content of a workspace file (e.g. `@src/index.ts` or `@file:package.json`). |
190
+ | `@<path>:<start>-<end>` | `[lines]` | **Line Range Slicing** | Surgically slices and injects only the specified line numbers (e.g. `@src/utils/config.ts:10-50`), saving tokens. |
191
+ | `@symbol:<name>` or `@#<name>` | `[sym]` | **AST Symbol** | Injects exact definitions of functions, classes, interfaces, types, methods, or structs (e.g. `@symbol:getUser` or `@#AuthService`) using polyglot AST extraction. |
192
+ | `@symbol:<path>:<name>` | `[sym]` | **Scoped Symbol** | Injects a specific symbol definition directly from a designated source file (e.g. `@symbol:src/services/auth.ts:validateToken`). |
193
+ | `@git:diff` or `@diff` | `[git]` | **Git Diff** | Injects the active unstaged working tree diff. |
194
+ | `@git:staged` | `[git]` | **Git Staged** | Injects currently staged git changes (`git diff --staged`). |
195
+ | `@git:status` | `[git]` | **Git Status** | Injects the current branch state and working tree status (`git status --short`). |
196
+ | `@git:branch` | `[git]` | **Git Branch** | Injects the current active Git branch and upstream tracking info. |
197
+ | `@git:log` | `[git]` | **Git Commit Log** | Injects the recent commit history (last 10 commits with hashes, authors, and messages). |
198
+ | `@diagnostics` / `@problems` / `@errors` | `[diag]` / `[prob]` | **Diagnostics** | Injects active compiler, linter, or syntax error diagnostics. |
199
+ | `@terminal` / `@console` | `[term]` | **Terminal Context** | Injects recent terminal environment context, shell environment, and command execution state. |
200
+ | `@<alias>/<path>` | `[ws]` | **Cross-Workspace File** | Injects file contents from registered external workspaces (e.g. `@backend/src/routes.ts` or `@frontend/src/App.tsx`). |
201
+ | `@<alias>` | `[ws]` | **Workspace Summary** | Injects configuration, manifest overview, and path details for a registered external workspace. |
201
202
 
202
203
  ### Visual Terminal Indicators & Status Tracking
203
204
 
204
205
  When a prompt with `@` context mentions is submitted, the CLI provides real-time, high-contrast visual confirmation indicators in the terminal:
206
+
205
207
  - **Success Indicators (`✔`)**: High-contrast green checkmark with dim status summary confirming successful extraction (e.g. `✔ Context @src/index.ts:1-25 (lines 1-25, 420 chars)`, `✔ Context @symbol:startServer (src/index.ts, 12 lines)`, `✔ Context @git:status (short status, clean)`, `✔ Context @diagnostics (syntax scan clean)`, `✔ Context @terminal (Darwin arm64, node v20.x)`, `✔ Context @backend (external workspace)`).
206
208
  - **Failure Indicators (`✖`)**: Clear red indicator with explicit error reasoning when resolution fails (e.g. `✖ Context @missing.ts (File does not exist)`, `✖ Context @symbol:unknownFunc (Could not find declaration for symbol)`).
207
209
  - **Structured Metadata Status Tracking**: Every resolved mention produces a rich `metadata` envelope (capturing line counts, char counts, symbol kind, git diff stats, and syntax scan metrics) powering both visual indicators and token-budgeted prompt injection.
@@ -15,7 +15,7 @@ import { readPaste } from '../../utils/paste.js';
15
15
  import { setApprovalMode, getApprovalMode, isSubAgentsEnabled, setSubAgentsEnabled } from '../agent-tools.js';
16
16
  import { ProxyClient, getAndResetTurnUsage } from '../proxyClient.js';
17
17
  import { checkByokSubscription } from '../auth.js';
18
- import { GEMINI_MODELS, isByokEnabled } from '../../utils/config.js';
18
+ import { GEMINI_MODELS, isByokEnabled, DEFAULT_MODEL_THINKING_LEVELS } from '../../utils/config.js';
19
19
  import { loadCredentials, updateCredentialField } from '../../utils/credentialStore.js';
20
20
  import { getGlobalActiveModel, setGlobalActiveModel, getModelThinkingLevel, setModelThinkingLevel, ProxyChatSession } from '../ai.js';
21
21
  import { loadUserProfile, deleteSideNote, clearUserProfile, getUserProfilePath } from '../userProfileService.js';
@@ -139,40 +139,49 @@ export async function handleSlashCommand(command, context) {
139
139
  if (!p.isCancel(selectedModel)) {
140
140
  chat.setModel(selectedModel);
141
141
  setGlobalActiveModel(selectedModel);
142
- const activeModelThinking = getModelThinkingLevel(selectedModel);
143
- const selectedThinking = await p['select']({
144
- message: `Configure Thinking Level for ${pc.cyan(selectedModel)} (Current: ${pc.cyan(activeModelThinking)})`,
145
- initialValue: activeModelThinking,
146
- options: [
147
- {
148
- value: 'LOW',
149
- label: 'Low',
150
- hint: 'Quick reasoning with low token overhead',
151
- },
152
- {
153
- value: 'MEDIUM',
154
- label: 'Medium',
155
- hint: 'Balanced reasoning for everyday coding and debugging',
156
- },
157
- {
158
- value: 'HIGH',
159
- label: 'High',
160
- hint: 'Deepest reasoning for complex architectural tasks',
161
- },
162
- ],
163
- });
164
- if (!p.isCancel(selectedThinking)) {
165
- setModelThinkingLevel(selectedModel, selectedThinking);
142
+ if (selectedModel === 'auto') {
143
+ const defaultAutoThinking = DEFAULT_MODEL_THINKING_LEVELS[GEMINI_MODELS.AUTO] || 'MEDIUM';
166
144
  if (typeof chat.setThinkingLevel === 'function') {
167
- chat.setThinkingLevel(selectedThinking);
145
+ chat.setThinkingLevel(defaultAutoThinking);
168
146
  }
169
- p.log.success(`Model successfully switched to ${pc.cyan(selectedModel)} with thinking level ${pc.cyan(selectedThinking)}`);
147
+ p.log.success(`Model successfully switched to ${pc.cyan('Auto (Smart Routing & Reasoning)')}`);
170
148
  }
171
149
  else {
172
- if (typeof chat.setThinkingLevel === 'function') {
173
- chat.setThinkingLevel(activeModelThinking);
150
+ const activeModelThinking = getModelThinkingLevel(selectedModel);
151
+ const selectedThinking = await p['select']({
152
+ message: `Configure Thinking Level for ${pc.cyan(selectedModel)} (Current: ${pc.cyan(activeModelThinking)})`,
153
+ initialValue: activeModelThinking,
154
+ options: [
155
+ {
156
+ value: 'LOW',
157
+ label: 'Low',
158
+ hint: 'Quick reasoning with low token overhead',
159
+ },
160
+ {
161
+ value: 'MEDIUM',
162
+ label: 'Medium',
163
+ hint: 'Balanced reasoning for everyday coding and debugging',
164
+ },
165
+ {
166
+ value: 'HIGH',
167
+ label: 'High',
168
+ hint: 'Deepest reasoning for complex architectural tasks',
169
+ },
170
+ ],
171
+ });
172
+ if (!p.isCancel(selectedThinking)) {
173
+ setModelThinkingLevel(selectedModel, selectedThinking);
174
+ if (typeof chat.setThinkingLevel === 'function') {
175
+ chat.setThinkingLevel(selectedThinking);
176
+ }
177
+ p.log.success(`Model successfully switched to ${pc.cyan(selectedModel)} with thinking level ${pc.cyan(selectedThinking)}`);
178
+ }
179
+ else {
180
+ if (typeof chat.setThinkingLevel === 'function') {
181
+ chat.setThinkingLevel(activeModelThinking);
182
+ }
183
+ p.log.success(`Model successfully switched to ${pc.cyan(selectedModel)}`);
174
184
  }
175
- p.log.success(`Model successfully switched to ${pc.cyan(selectedModel)}`);
176
185
  }
177
186
  }
178
187
  return { shouldContinue: true };
@@ -757,13 +757,14 @@ export function createContextAgentSession() {
757
757
  let model = contextModelOverride || getGlobalActiveModel();
758
758
  if (model === 'auto' || model.includes('claude'))
759
759
  model = GEMINI_MODELS.FLASH;
760
+ const thinkingLevel = getModelThinkingLevel(model);
760
761
  return new ProxyChatSession(model, CONTEXT_SYSTEM_INSTRUCTION.replace('{{MULTI_WORKSPACE_BLOCK}}', getMultiWorkspaceBlock()), contextTools, {
761
762
  maxOutputTokens: MAX_OUTPUT_TOKENS,
762
763
  temperature: contextTempOverride !== null ? contextTempOverride : 1,
763
764
  topP: 0.95,
764
765
  topK: 40,
765
766
  thinkingConfig: {
766
- thinkingLevel: 'MEDIUM',
767
+ thinkingLevel,
767
768
  },
768
769
  }, {
769
770
  functionCallingConfig: {
@@ -11,7 +11,7 @@
11
11
  * components" + "Auth UI styling") and produces an `InvestigationResult` containing
12
12
  * the files it found and a summary of its findings.
13
13
  */
14
- import { ProxyChatSession, getContextToolDeclarations, getGlobalActiveModel, getMultiWorkspaceBlock } from '../ai.js';
14
+ import { ProxyChatSession, getContextToolDeclarations, getGlobalActiveModel, getModelThinkingLevel, getMultiWorkspaceBlock } from '../ai.js';
15
15
  import { GEMINI_MODELS, MAX_OUTPUT_TOKENS } from '../../utils/config.js';
16
16
  import { CONTEXT_SYSTEM_INSTRUCTION } from '../../utils/systemPrompts.js';
17
17
  import { debugLog } from '../../utils/logger.js';
@@ -54,13 +54,14 @@ export class InvestigationAgentRunner {
54
54
  let model = getGlobalActiveModel();
55
55
  if (model === GEMINI_MODELS.AUTO || model.includes('claude'))
56
56
  model = GEMINI_MODELS.FLASH;
57
+ const thinkingLevel = getModelThinkingLevel(model);
57
58
  this.chat = new ProxyChatSession(model, this.buildSystemInstruction(), getContextToolDeclarations(), {
58
59
  maxOutputTokens: MAX_OUTPUT_TOKENS,
59
60
  temperature: 1,
60
61
  topP: 0.95,
61
62
  topK: 40,
62
63
  thinkingConfig: {
63
- thinkingLevel: 'MEDIUM',
64
+ thinkingLevel,
64
65
  },
65
66
  }, {
66
67
  functionCallingConfig: {
@@ -201,5 +201,5 @@
201
201
  ]
202
202
  }
203
203
  },
204
- "version": "2.14.0"
204
+ "version": "2.14.1"
205
205
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "minovative-mind-cli",
3
3
  "description": "An automated AI agent powered by Vertex AI that helps you write software",
4
- "version": "2.14.0",
4
+ "version": "2.14.1",
5
5
  "author": "Daniel Ward",
6
6
  "bin": {
7
7
  "minovative-mind-cli": "bin/run.js"