codehere 0.4.0 → 0.5.0-alpha.0

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.
Files changed (231) hide show
  1. package/README.md +7 -0
  2. package/dist/application/agents/execution-agent.js +2 -2
  3. package/dist/application/agents/execution-agent.js.map +1 -1
  4. package/dist/application/agents/planning-agent.d.ts.map +1 -1
  5. package/dist/application/agents/planning-agent.js +16 -8
  6. package/dist/application/agents/planning-agent.js.map +1 -1
  7. package/dist/application/agents/validation-agent.js +2 -2
  8. package/dist/application/agents/validation-agent.js.map +1 -1
  9. package/dist/application/services/dependency-container.d.ts +30 -6
  10. package/dist/application/services/dependency-container.d.ts.map +1 -1
  11. package/dist/application/services/dependency-container.js +75 -43
  12. package/dist/application/services/dependency-container.js.map +1 -1
  13. package/dist/application/services/intelligent-router.d.ts.map +1 -1
  14. package/dist/application/services/intelligent-router.js +6 -3
  15. package/dist/application/services/intelligent-router.js.map +1 -1
  16. package/dist/domain/entities/task.d.ts.map +1 -1
  17. package/dist/domain/entities/task.js +1 -1
  18. package/dist/domain/entities/task.js.map +1 -1
  19. package/dist/domain/errors/embeddings-not-found-error.d.ts +9 -0
  20. package/dist/domain/errors/embeddings-not-found-error.d.ts.map +1 -0
  21. package/dist/domain/errors/embeddings-not-found-error.js +13 -0
  22. package/dist/domain/errors/embeddings-not-found-error.js.map +1 -0
  23. package/dist/domain/interfaces/embedding-repository.interface.d.ts +5 -0
  24. package/dist/domain/interfaces/embedding-repository.interface.d.ts.map +1 -1
  25. package/dist/domain/services/environment-mode-manager.d.ts +4 -10
  26. package/dist/domain/services/environment-mode-manager.d.ts.map +1 -1
  27. package/dist/domain/services/environment-mode-manager.js +7 -22
  28. package/dist/domain/services/environment-mode-manager.js.map +1 -1
  29. package/dist/domain/services/risk-tier-detector.d.ts +8 -9
  30. package/dist/domain/services/risk-tier-detector.d.ts.map +1 -1
  31. package/dist/domain/services/risk-tier-detector.js +53 -40
  32. package/dist/domain/services/risk-tier-detector.js.map +1 -1
  33. package/dist/embed.d.ts.map +1 -1
  34. package/dist/embed.js +18 -8
  35. package/dist/embed.js.map +1 -1
  36. package/dist/index.js +308 -48
  37. package/dist/index.js.map +1 -1
  38. package/dist/infrastructure/ai/cohere-ai-service.js +3 -3
  39. package/dist/infrastructure/ai/cohere-ai-service.js.map +1 -1
  40. package/dist/infrastructure/ai/provider-ai-service.d.ts.map +1 -1
  41. package/dist/infrastructure/ai/provider-ai-service.js +6 -6
  42. package/dist/infrastructure/ai/provider-ai-service.js.map +1 -1
  43. package/dist/infrastructure/cache/query-result-cache.d.ts +14 -55
  44. package/dist/infrastructure/cache/query-result-cache.d.ts.map +1 -1
  45. package/dist/infrastructure/cache/query-result-cache.js +40 -112
  46. package/dist/infrastructure/cache/query-result-cache.js.map +1 -1
  47. package/dist/infrastructure/cache/response-cache.d.ts +10 -78
  48. package/dist/infrastructure/cache/response-cache.d.ts.map +1 -1
  49. package/dist/infrastructure/cache/response-cache.js +22 -198
  50. package/dist/infrastructure/cache/response-cache.js.map +1 -1
  51. package/dist/infrastructure/cache/security-scan-cache.d.ts +8 -49
  52. package/dist/infrastructure/cache/security-scan-cache.d.ts.map +1 -1
  53. package/dist/infrastructure/cache/security-scan-cache.js +25 -102
  54. package/dist/infrastructure/cache/security-scan-cache.js.map +1 -1
  55. package/dist/infrastructure/completion/bash-completion.d.ts +2 -3
  56. package/dist/infrastructure/completion/bash-completion.d.ts.map +1 -1
  57. package/dist/infrastructure/completion/bash-completion.js +11 -87
  58. package/dist/infrastructure/completion/bash-completion.js.map +1 -1
  59. package/dist/infrastructure/completion/fish-completion.d.ts +2 -3
  60. package/dist/infrastructure/completion/fish-completion.d.ts.map +1 -1
  61. package/dist/infrastructure/completion/fish-completion.js +15 -58
  62. package/dist/infrastructure/completion/fish-completion.js.map +1 -1
  63. package/dist/infrastructure/completion/zsh-completion.d.ts +2 -3
  64. package/dist/infrastructure/completion/zsh-completion.d.ts.map +1 -1
  65. package/dist/infrastructure/completion/zsh-completion.js +18 -73
  66. package/dist/infrastructure/completion/zsh-completion.js.map +1 -1
  67. package/dist/infrastructure/config/config-manager.js +2 -2
  68. package/dist/infrastructure/config/config-manager.js.map +1 -1
  69. package/dist/infrastructure/context/conversation-context.d.ts +27 -31
  70. package/dist/infrastructure/context/conversation-context.d.ts.map +1 -1
  71. package/dist/infrastructure/context/conversation-context.js +94 -136
  72. package/dist/infrastructure/context/conversation-context.js.map +1 -1
  73. package/dist/infrastructure/context/session-manager.d.ts +27 -11
  74. package/dist/infrastructure/context/session-manager.d.ts.map +1 -1
  75. package/dist/infrastructure/context/session-manager.js +69 -73
  76. package/dist/infrastructure/context/session-manager.js.map +1 -1
  77. package/dist/infrastructure/providers/cohere-provider.d.ts.map +1 -1
  78. package/dist/infrastructure/providers/cohere-provider.js +102 -17
  79. package/dist/infrastructure/providers/cohere-provider.js.map +1 -1
  80. package/dist/infrastructure/providers/openrouter-provider.d.ts +42 -0
  81. package/dist/infrastructure/providers/openrouter-provider.d.ts.map +1 -0
  82. package/dist/infrastructure/providers/openrouter-provider.js +399 -0
  83. package/dist/infrastructure/providers/openrouter-provider.js.map +1 -0
  84. package/dist/infrastructure/serialization/toon-serializer.d.ts +45 -0
  85. package/dist/infrastructure/serialization/toon-serializer.d.ts.map +1 -0
  86. package/dist/infrastructure/serialization/toon-serializer.js +119 -0
  87. package/dist/infrastructure/serialization/toon-serializer.js.map +1 -0
  88. package/dist/infrastructure/storage/embeddings-path.d.ts +18 -0
  89. package/dist/infrastructure/storage/embeddings-path.d.ts.map +1 -0
  90. package/dist/infrastructure/storage/embeddings-path.js +37 -0
  91. package/dist/infrastructure/storage/embeddings-path.js.map +1 -0
  92. package/dist/infrastructure/storage/plan-repository.d.ts +2 -0
  93. package/dist/infrastructure/storage/plan-repository.d.ts.map +1 -1
  94. package/dist/infrastructure/storage/plan-repository.js +36 -73
  95. package/dist/infrastructure/storage/plan-repository.js.map +1 -1
  96. package/dist/infrastructure/storage/sqlite-embedding-repository.d.ts +10 -1
  97. package/dist/infrastructure/storage/sqlite-embedding-repository.d.ts.map +1 -1
  98. package/dist/infrastructure/storage/sqlite-embedding-repository.js +37 -3
  99. package/dist/infrastructure/storage/sqlite-embedding-repository.js.map +1 -1
  100. package/dist/infrastructure/storage/task-helpers.d.ts +11 -0
  101. package/dist/infrastructure/storage/task-helpers.d.ts.map +1 -1
  102. package/dist/infrastructure/storage/task-helpers.js +47 -7
  103. package/dist/infrastructure/storage/task-helpers.js.map +1 -1
  104. package/dist/infrastructure/storage/task-repository.d.ts.map +1 -1
  105. package/dist/infrastructure/storage/task-repository.js.map +1 -1
  106. package/dist/infrastructure/ux/capability-boundaries.d.ts +9 -37
  107. package/dist/infrastructure/ux/capability-boundaries.d.ts.map +1 -1
  108. package/dist/infrastructure/ux/capability-boundaries.js +23 -148
  109. package/dist/infrastructure/ux/capability-boundaries.js.map +1 -1
  110. package/dist/infrastructure/ux/comprehensive-formatter.d.ts +12 -54
  111. package/dist/infrastructure/ux/comprehensive-formatter.d.ts.map +1 -1
  112. package/dist/infrastructure/ux/comprehensive-formatter.js +87 -182
  113. package/dist/infrastructure/ux/comprehensive-formatter.js.map +1 -1
  114. package/dist/infrastructure/ux/contextual-feature-discovery.d.ts +5 -18
  115. package/dist/infrastructure/ux/contextual-feature-discovery.d.ts.map +1 -1
  116. package/dist/infrastructure/ux/contextual-feature-discovery.js +5 -139
  117. package/dist/infrastructure/ux/contextual-feature-discovery.js.map +1 -1
  118. package/dist/infrastructure/ux/feature-discovery.d.ts +3 -33
  119. package/dist/infrastructure/ux/feature-discovery.d.ts.map +1 -1
  120. package/dist/infrastructure/ux/feature-discovery.js +5 -181
  121. package/dist/infrastructure/ux/feature-discovery.js.map +1 -1
  122. package/dist/infrastructure/ux/feedback-prompt.d.ts +15 -31
  123. package/dist/infrastructure/ux/feedback-prompt.d.ts.map +1 -1
  124. package/dist/infrastructure/ux/feedback-prompt.js +30 -166
  125. package/dist/infrastructure/ux/feedback-prompt.js.map +1 -1
  126. package/dist/infrastructure/ux/progress-indicator.d.ts +3 -5
  127. package/dist/infrastructure/ux/progress-indicator.d.ts.map +1 -1
  128. package/dist/infrastructure/ux/progress-indicator.js +34 -49
  129. package/dist/infrastructure/ux/progress-indicator.js.map +1 -1
  130. package/dist/infrastructure/ux/review-checkpoint.d.ts +3 -1
  131. package/dist/infrastructure/ux/review-checkpoint.d.ts.map +1 -1
  132. package/dist/infrastructure/ux/review-checkpoint.js +33 -80
  133. package/dist/infrastructure/ux/review-checkpoint.js.map +1 -1
  134. package/dist/infrastructure/ux/staged-feature-intro.d.ts +14 -39
  135. package/dist/infrastructure/ux/staged-feature-intro.d.ts.map +1 -1
  136. package/dist/infrastructure/ux/staged-feature-intro.js +12 -132
  137. package/dist/infrastructure/ux/staged-feature-intro.js.map +1 -1
  138. package/dist/infrastructure/ux/syntax-highlighter.d.ts +1 -2
  139. package/dist/infrastructure/ux/syntax-highlighter.d.ts.map +1 -1
  140. package/dist/infrastructure/ux/syntax-highlighter.js +67 -148
  141. package/dist/infrastructure/ux/syntax-highlighter.js.map +1 -1
  142. package/dist/infrastructure/validation/agent-feedback.d.ts +25 -89
  143. package/dist/infrastructure/validation/agent-feedback.d.ts.map +1 -1
  144. package/dist/infrastructure/validation/agent-feedback.js +32 -204
  145. package/dist/infrastructure/validation/agent-feedback.js.map +1 -1
  146. package/dist/infrastructure/validation/agent-validation-helper.d.ts +53 -53
  147. package/dist/infrastructure/validation/agent-validation-helper.d.ts.map +1 -1
  148. package/dist/infrastructure/validation/agent-validation-helper.js +110 -61
  149. package/dist/infrastructure/validation/agent-validation-helper.js.map +1 -1
  150. package/dist/infrastructure/validation/review-handler.d.ts +13 -41
  151. package/dist/infrastructure/validation/review-handler.d.ts.map +1 -1
  152. package/dist/infrastructure/validation/review-handler.js +23 -189
  153. package/dist/infrastructure/validation/review-handler.js.map +1 -1
  154. package/dist/infrastructure/validation/summary-aggregator.d.ts +25 -22
  155. package/dist/infrastructure/validation/summary-aggregator.d.ts.map +1 -1
  156. package/dist/infrastructure/validation/summary-aggregator.js +47 -133
  157. package/dist/infrastructure/validation/summary-aggregator.js.map +1 -1
  158. package/dist/infrastructure/validation/summary-extractor.d.ts +13 -48
  159. package/dist/infrastructure/validation/summary-extractor.d.ts.map +1 -1
  160. package/dist/infrastructure/validation/summary-extractor.js +32 -89
  161. package/dist/infrastructure/validation/summary-extractor.js.map +1 -1
  162. package/dist/infrastructure/validation/trace-summary.d.ts +30 -57
  163. package/dist/infrastructure/validation/trace-summary.d.ts.map +1 -1
  164. package/dist/infrastructure/validation/trace-summary.js +37 -356
  165. package/dist/infrastructure/validation/trace-summary.js.map +1 -1
  166. package/dist/monitoring.d.ts +1 -1
  167. package/dist/monitoring.d.ts.map +1 -1
  168. package/dist/monitoring.js +12 -9
  169. package/dist/monitoring.js.map +1 -1
  170. package/dist/parallel-processor.d.ts.map +1 -1
  171. package/dist/parallel-processor.js +124 -45
  172. package/dist/parallel-processor.js.map +1 -1
  173. package/dist/presentation/cli/commands/ask-command.d.ts.map +1 -1
  174. package/dist/presentation/cli/commands/ask-command.js +185 -128
  175. package/dist/presentation/cli/commands/ask-command.js.map +1 -1
  176. package/dist/presentation/cli/commands/config-command.d.ts.map +1 -1
  177. package/dist/presentation/cli/commands/config-command.js +8 -6
  178. package/dist/presentation/cli/commands/config-command.js.map +1 -1
  179. package/dist/presentation/cli/commands/docs-command.d.ts +3 -1
  180. package/dist/presentation/cli/commands/docs-command.d.ts.map +1 -1
  181. package/dist/presentation/cli/commands/docs-command.js +13 -184
  182. package/dist/presentation/cli/commands/docs-command.js.map +1 -1
  183. package/dist/presentation/cli/commands/fix-command.d.ts +2 -0
  184. package/dist/presentation/cli/commands/fix-command.d.ts.map +1 -1
  185. package/dist/presentation/cli/commands/fix-command.js +25 -281
  186. package/dist/presentation/cli/commands/fix-command.js.map +1 -1
  187. package/dist/presentation/cli/commands/models-command.d.ts +13 -0
  188. package/dist/presentation/cli/commands/models-command.d.ts.map +1 -0
  189. package/dist/presentation/cli/commands/models-command.js +194 -0
  190. package/dist/presentation/cli/commands/models-command.js.map +1 -0
  191. package/dist/presentation/cli/commands/orchestrate-command.d.ts.map +1 -1
  192. package/dist/presentation/cli/commands/orchestrate-command.js +15 -7
  193. package/dist/presentation/cli/commands/orchestrate-command.js.map +1 -1
  194. package/dist/presentation/cli/commands/plan-command.d.ts.map +1 -1
  195. package/dist/presentation/cli/commands/plan-command.js +9 -6
  196. package/dist/presentation/cli/commands/plan-command.js.map +1 -1
  197. package/dist/presentation/cli/commands/product-command.d.ts +6 -4
  198. package/dist/presentation/cli/commands/product-command.d.ts.map +1 -1
  199. package/dist/presentation/cli/commands/product-command.js +12 -178
  200. package/dist/presentation/cli/commands/product-command.js.map +1 -1
  201. package/dist/presentation/cli/commands/review-command.d.ts +7 -7
  202. package/dist/presentation/cli/commands/review-command.d.ts.map +1 -1
  203. package/dist/presentation/cli/commands/review-command.js +148 -16
  204. package/dist/presentation/cli/commands/review-command.js.map +1 -1
  205. package/dist/presentation/cli/commands/run-command.d.ts +6 -8
  206. package/dist/presentation/cli/commands/run-command.d.ts.map +1 -1
  207. package/dist/presentation/cli/commands/run-command.js +182 -23
  208. package/dist/presentation/cli/commands/run-command.js.map +1 -1
  209. package/dist/presentation/cli/commands/setup-command.d.ts.map +1 -1
  210. package/dist/presentation/cli/commands/setup-command.js +15 -0
  211. package/dist/presentation/cli/commands/setup-command.js.map +1 -1
  212. package/dist/presentation/cli/commands/smart-command.js +1 -1
  213. package/dist/presentation/cli/commands/smart-command.js.map +1 -1
  214. package/dist/presentation/cli/commands/status-command.d.ts +3 -0
  215. package/dist/presentation/cli/commands/status-command.d.ts.map +1 -1
  216. package/dist/presentation/cli/commands/status-command.js +147 -156
  217. package/dist/presentation/cli/commands/status-command.js.map +1 -1
  218. package/dist/presentation/cli/commands/suggest-command.d.ts +3 -5
  219. package/dist/presentation/cli/commands/suggest-command.d.ts.map +1 -1
  220. package/dist/presentation/cli/commands/suggest-command.js +132 -19
  221. package/dist/presentation/cli/commands/suggest-command.js.map +1 -1
  222. package/dist/search.d.ts.map +1 -1
  223. package/dist/search.js +6 -1
  224. package/dist/search.js.map +1 -1
  225. package/dist/session.js +1 -1
  226. package/dist/session.js.map +1 -1
  227. package/dist/ui.d.ts +6 -0
  228. package/dist/ui.d.ts.map +1 -1
  229. package/dist/ui.js +35 -1
  230. package/dist/ui.js.map +1 -1
  231. package/package.json +8 -3
package/dist/embed.js CHANGED
@@ -21,8 +21,13 @@ config(); // Also try current directory
21
21
  const cohere = new CohereClient({
22
22
  token: process.env.COHERE_API_KEY || '',
23
23
  });
24
- // DB path: use agent/data if in agent directory, otherwise use current directory
25
- function getDbPath() {
24
+ import { getEmbeddingsDbPath } from './infrastructure/storage/embeddings-path.js';
25
+ /**
26
+ * @deprecated Legacy global DB path - use getEmbeddingsDbPath() instead
27
+ * This function and DB_PATH are only used by the legacy indexRepository() function.
28
+ * The active index command uses indexRepositoryParallel() which uses per-repo paths.
29
+ */
30
+ function getLegacyDbPath() {
26
31
  const __filename = fileURLToPath(import.meta.url);
27
32
  const __dirname = dirname(__filename);
28
33
  const agentDir = join(__dirname, '..');
@@ -33,7 +38,9 @@ function getDbPath() {
33
38
  // Otherwise use current directory
34
39
  return join(process.cwd(), 'agent', 'data', 'embeddings.sqlite');
35
40
  }
36
- const DB_PATH = getDbPath();
41
+ // Legacy DB_PATH - only used by deprecated indexRepository() function
42
+ // Active CLI uses indexRepositoryParallel() with per-repo paths
43
+ const DB_PATH = getLegacyDbPath();
37
44
  const CHUNK_SIZE = 300; // target tokens per chunk
38
45
  const OVERLAP = 50; // overlap tokens between chunks
39
46
  const enc = encoding_for_model('gpt-3.5-turbo');
@@ -292,19 +299,22 @@ export async function indexRepositoryParallel(repoPath, options = {}) {
292
299
  console.log(info('Using parallel processing with caching...'));
293
300
  newline();
294
301
  // Use parallel processor to get embeddings
302
+ // Auto-use parallel for repos with >100 files
295
303
  const result = await indexParallel(files, {
296
- maxConcurrency: options.maxConcurrency || 5,
304
+ maxConcurrency: options.maxConcurrency || (files.length > 100 ? 10 : 5),
297
305
  useCache: options.useCache !== false,
298
306
  cacheDir: join(targetDir, '.codehere-cache'),
307
+ sequential: files.length <= 100, // Only sequential for very small repos
299
308
  });
300
309
  // Now save to SQLite database
301
- // Calculate DB path relative to agent directory (not targetDir)
302
- const dbPath = getDbPath();
310
+ // Use per-repo database path for codebase isolation
311
+ const pathInfo = getEmbeddingsDbPath(targetDir);
312
+ const dbPath = pathInfo.dbPath;
303
313
  console.log(info(`Database path: ${dbPath}`));
304
- // Ensure data directory exists
314
+ // Ensure cache directory exists (already created by getEmbeddingsDbPath, but double-check)
305
315
  const dbDir = dirname(dbPath);
306
316
  if (!existsSync(dbDir)) {
307
- console.log(info(`Creating data directory: ${dbDir}`));
317
+ console.log(info(`Creating cache directory: ${dbDir}`));
308
318
  mkdirSync(dbDir, { recursive: true });
309
319
  }
310
320
  console.log(info('Initializing SQLite database...'));
package/dist/embed.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"embed.js","sourceRoot":"","sources":["../src/embed.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"embed.js","sourceRoot":"","sources":["../src/embed.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -20,6 +20,10 @@ import { executeOrchestrateCommand } from './presentation/cli/commands/orchestra
20
20
  import { executeDocsCommand } from './presentation/cli/commands/docs-command.js';
21
21
  import { executeProductCommand } from './presentation/cli/commands/product-command.js';
22
22
  import { executeStatusCommand } from './presentation/cli/commands/status-command.js';
23
+ import { executeSuggestCommand } from './presentation/cli/commands/suggest-command.js';
24
+ import { executeRunCommand } from './presentation/cli/commands/run-command.js';
25
+ import { executeModelsCommand } from './presentation/cli/commands/models-command.js';
26
+ import { executeReviewCommand } from './presentation/cli/commands/review-command.js';
23
27
  import { executeDecisionCommand } from './presentation/cli/commands/decision-command.js';
24
28
  import { executeKnowledgeCommand } from './presentation/cli/commands/knowledge-command.js';
25
29
  import { executeLearningDashboardCommand } from './presentation/cli/commands/learning-dashboard-command.js';
@@ -33,7 +37,7 @@ import { generateTests, getTestFilePath, saveTests, improveTests } from './testg
33
37
  import { startSession } from './session.js';
34
38
  import { cleanResponse } from './formatter.js';
35
39
  import { displayError } from './presentation/cli/error-display.js';
36
- import { colors, createSpinner, createBanner, createTable, success, error, warning, info, formatPath, formatNumber, sectionHeader, newline, createWelcomeMessage, } from './ui.js';
40
+ import { colors, createSpinner, createBanner, createTable, success, error, warning, info, formatPath, formatNumber, sectionHeader, newline, createWelcomeMessage, isMinimalStyle, printMinimalHeader, } from './ui.js';
37
41
  // Load environment variables - try agent directory first, then current directory
38
42
  try {
39
43
  const __filename = fileURLToPath(import.meta.url);
@@ -133,6 +137,30 @@ program
133
137
  .action(async (action, key, value) => {
134
138
  await executeConfigCommand(action, key, value);
135
139
  });
140
+ program
141
+ .command('models')
142
+ .description('List, search, and get info about available AI models')
143
+ .option('-l, --list', 'List all available models')
144
+ .option('-s, --search <query>', 'Search models by name or ID')
145
+ .option('-i, --info <model-id>', 'Get detailed info about a specific model')
146
+ .option('-p, --provider <provider>', 'Filter by provider (cohere, openai, openrouter, etc.)')
147
+ .option('--json', 'Output in JSON format')
148
+ .action(async (options) => {
149
+ initLogFile();
150
+ try {
151
+ await executeModelsCommand({
152
+ list: options.list,
153
+ search: options.search,
154
+ info: options.info,
155
+ provider: options.provider,
156
+ json: options.json,
157
+ });
158
+ }
159
+ catch (err) {
160
+ console.error(error('Error:'), err instanceof Error ? err.message : String(err));
161
+ process.exit(1);
162
+ }
163
+ });
136
164
  program
137
165
  .command('help')
138
166
  .description('Show help for commands')
@@ -146,7 +174,8 @@ program
146
174
  .option('-r, --repo <path>', 'Repository path (default: current directory)')
147
175
  .action(async (options) => {
148
176
  initLogFile();
149
- if (!process.env.COHERE_API_KEY) {
177
+ // Allow fake AI for testing, or require real API key
178
+ if (!process.env.COHERE_API_KEY && process.env.CODEHERE_FAKE_AI !== '1') {
150
179
  newline();
151
180
  console.error(error('COHERE_API_KEY not found in environment'));
152
181
  newline();
@@ -155,12 +184,20 @@ program
155
184
  console.log(' 2. Create a .env file in your project root:');
156
185
  console.log(colors.cyan(' echo "COHERE_API_KEY=your_key_here" > .env'));
157
186
  console.log(' 3. Run the command again');
187
+ console.log('');
188
+ console.log(colors.dim('Note: For testing without API calls, set CODEHERE_FAKE_AI=1'));
158
189
  newline();
159
190
  process.exit(1);
160
191
  }
161
192
  try {
162
- console.log(createBanner('Indexing Repository', 'Building semantic search index'));
163
- newline();
193
+ if (isMinimalStyle()) {
194
+ console.log(colors.cyan('Indexing codebase...'));
195
+ newline();
196
+ }
197
+ else {
198
+ console.log(createBanner('Indexing Repository', 'Building semantic search index'));
199
+ newline();
200
+ }
164
201
  const repoPath = options.repo || process.cwd();
165
202
  // NEW: Use parallel indexing with caching
166
203
  await indexRepositoryParallel(repoPath, {
@@ -173,10 +210,32 @@ program
173
210
  policyStatus: 'allowed',
174
211
  });
175
212
  newline();
176
- console.log(success('Indexing complete!'));
213
+ if (isMinimalStyle()) {
214
+ console.log(success('Indexing complete. Cache written to .codehere-cache/'));
215
+ }
216
+ else {
217
+ console.log(success('Indexing complete!'));
218
+ }
219
+ process.exit(0);
177
220
  }
178
221
  catch (err) {
179
- console.error(error('Error indexing repository:'), err instanceof Error ? err.message : String(err));
222
+ const errorMessage = err instanceof Error ? err.message : String(err);
223
+ // Check for 401 Unauthorized errors
224
+ if (errorMessage.includes('401') || errorMessage.includes('Unauthorized') || errorMessage.includes('no api key')) {
225
+ newline();
226
+ console.error(error('Authentication failed: Invalid or missing API key'));
227
+ newline();
228
+ console.log(colors.bold('Troubleshooting:'));
229
+ console.log(' 1. Verify your COHERE_API_KEY is set correctly:');
230
+ console.log(colors.cyan(' echo $COHERE_API_KEY'));
231
+ console.log(' 2. Check if the key is valid at: https://dashboard.cohere.com/api-keys');
232
+ console.log(' 3. If using a .env file, ensure it\'s loaded (e.g., use dotenv)');
233
+ console.log(' 4. For testing, you can use: CODEHERE_FAKE_AI=1 codehere index');
234
+ newline();
235
+ }
236
+ else {
237
+ console.error(error('Error indexing repository:'), errorMessage);
238
+ }
180
239
  process.exit(1);
181
240
  }
182
241
  });
@@ -200,7 +259,7 @@ Make sure to run "codehere index" first!
200
259
  `)
201
260
  .action(async (question) => {
202
261
  initLogFile();
203
- if (!process.env.COHERE_API_KEY) {
262
+ if (!process.env.COHERE_API_KEY && process.env.CODEHERE_FAKE_AI !== '1') {
204
263
  newline();
205
264
  console.error(error('COHERE_API_KEY not found in environment'));
206
265
  newline();
@@ -213,21 +272,7 @@ Make sure to run "codehere index" first!
213
272
  process.exit(1);
214
273
  }
215
274
  try {
216
- console.log(createBanner('Ask Question', 'Semantic search + AI chat'));
217
- newline();
218
- // Display query
219
- console.log(colors.bold('Query:'));
220
- console.log(colors.cyan(' ' + question));
221
- newline();
222
- // Use clean architecture
223
- const searchSpinner = createSpinner('Searching codebase...');
224
- searchSpinner.start();
225
- try {
226
- await executeAskCommand(question);
227
- }
228
- finally {
229
- searchSpinner.stop();
230
- }
275
+ await executeAskCommand(question);
231
276
  logEntry({
232
277
  timestamp: new Date().toISOString(),
233
278
  command: 'ask',
@@ -236,7 +281,12 @@ Make sure to run "codehere index" first!
236
281
  });
237
282
  }
238
283
  catch (err) {
239
- console.error(error('Error:'), err instanceof Error ? err.message : String(err));
284
+ const errMessage = err instanceof Error ? err.message : String(err);
285
+ // If it's a missing embeddings error, exit with 1
286
+ if (errMessage.includes('No embeddings found')) {
287
+ process.exit(1);
288
+ }
289
+ console.error(error('Error:'), errMessage);
240
290
  process.exit(1);
241
291
  }
242
292
  });
@@ -282,6 +332,23 @@ Safety policies:
282
332
  process.exit(1);
283
333
  }
284
334
  try {
335
+ // Check if embeddings exist for this repository (skip check if using fake AI for testing)
336
+ if (process.env.CODEHERE_FAKE_AI !== '1') {
337
+ const { container } = await import('./application/services/dependency-container.js');
338
+ const embeddingRepo = container.getEmbeddingRepository(process.cwd());
339
+ const hasEmbeddings = await embeddingRepo.hasEmbeddings();
340
+ if (!hasEmbeddings) {
341
+ newline();
342
+ console.error(colors.red('No embeddings found for this repository.'));
343
+ newline();
344
+ console.log('Run:');
345
+ console.log(colors.cyan(' codehere index'));
346
+ console.log('');
347
+ console.log('then re-run this command.');
348
+ newline();
349
+ process.exit(1);
350
+ }
351
+ }
285
352
  await executeFixCommand(file, instruction, { review: options?.review });
286
353
  logEntry({
287
354
  timestamp: new Date().toISOString(),
@@ -332,8 +399,30 @@ This command will:
332
399
  process.exit(1);
333
400
  }
334
401
  try {
335
- console.log(createBanner('Explain File', 'AI-powered code explanation'));
336
- newline();
402
+ // Check if embeddings exist for this repository (skip check if using fake AI for testing)
403
+ if (process.env.CODEHERE_FAKE_AI !== '1') {
404
+ const { container } = await import('./application/services/dependency-container.js');
405
+ const embeddingRepo = container.getEmbeddingRepository(process.cwd());
406
+ const hasEmbeddings = await embeddingRepo.hasEmbeddings();
407
+ if (!hasEmbeddings) {
408
+ newline();
409
+ console.error(colors.red('No embeddings found for this repository.'));
410
+ newline();
411
+ console.log('Run:');
412
+ console.log(colors.cyan(' codehere index'));
413
+ console.log('');
414
+ console.log('then re-run this command.');
415
+ newline();
416
+ process.exit(1);
417
+ }
418
+ }
419
+ if (isMinimalStyle()) {
420
+ printMinimalHeader('explain', file);
421
+ }
422
+ else {
423
+ console.log(createBanner('Explain File', 'AI-powered code explanation'));
424
+ newline();
425
+ }
337
426
  const fullPath = join(process.cwd(), file);
338
427
  // Check if file exists
339
428
  const { existsSync } = await import('fs');
@@ -383,9 +472,14 @@ program
383
472
  .option('-m, --metrics', 'Show detailed metrics')
384
473
  .action((options) => {
385
474
  const health = performHealthCheck();
386
- newline();
387
- console.log(createBanner('System Health', 'Enterprise monitoring'));
388
- newline();
475
+ if (isMinimalStyle()) {
476
+ printMinimalHeader('health', '');
477
+ }
478
+ else {
479
+ newline();
480
+ console.log(createBanner('System Health', 'Enterprise monitoring'));
481
+ newline();
482
+ }
389
483
  console.log(formatHealthStatus(health));
390
484
  if (options.metrics) {
391
485
  newline();
@@ -486,13 +580,13 @@ program
486
580
  }
487
581
  });
488
582
  program
489
- .command('review')
583
+ .command('git-review')
490
584
  .description('Review git changes and suggest improvements')
491
585
  .option('-f, --file <file>', 'Review specific file')
492
586
  .action((options) => {
493
587
  initLogFile();
494
588
  try {
495
- console.log(createBanner('Code Review', 'Git-aware code analysis'));
589
+ console.log(createBanner('Git Review', 'Git-aware code analysis'));
496
590
  newline();
497
591
  const status = getGitStatus();
498
592
  if (!status.isRepo) {
@@ -549,9 +643,14 @@ program
549
643
  process.exit(1);
550
644
  }
551
645
  try {
552
- console.log(createBanner('Task Planning', 'Intelligent multi-step execution'));
553
- newline();
554
- console.log(colors.bold('Instruction:') + ' ' + colors.cyan(instruction));
646
+ if (isMinimalStyle()) {
647
+ printMinimalHeader('plan', instruction);
648
+ }
649
+ else {
650
+ console.log(createBanner('Task Planning', 'Intelligent multi-step execution'));
651
+ newline();
652
+ console.log(colors.bold('Instruction:') + ' ' + colors.cyan(instruction));
653
+ }
555
654
  newline();
556
655
  // Use new memory-based planning
557
656
  await executePlanCommand(instruction, { execute: options.execute, review: options.review });
@@ -633,24 +732,38 @@ program
633
732
  process.exit(1);
634
733
  }
635
734
  try {
636
- console.log(createBanner('Code Review', 'Automated senior-level analysis'));
637
- newline();
735
+ if (isMinimalStyle()) {
736
+ console.log(colors.bold(`Review: ${file}`));
737
+ newline();
738
+ }
739
+ else {
740
+ console.log(createBanner('Code Review', 'Automated senior-level analysis'));
741
+ newline();
742
+ }
638
743
  const reviewSpinner = createSpinner('Reviewing code...');
639
744
  reviewSpinner.start();
640
745
  const review = await reviewFile(file);
641
746
  reviewSpinner.stop();
642
747
  newline();
643
- console.log(formatReview(review));
644
- // Display score
645
- newline();
646
- sectionHeader('Review Score');
647
- const scoreTable = createTable(['Metric', 'Value'], [
648
- ['Overall Score', `${review.score}/100`],
649
- ['Errors', formatNumber(review.issues.filter(i => i.severity === 'error').length)],
650
- ['Warnings', formatNumber(review.issues.filter(i => i.severity === 'warning').length)],
651
- ['Info', formatNumber(review.issues.filter(i => i.severity === 'info').length)],
652
- ]);
653
- console.log(scoreTable.toString());
748
+ if (isMinimalStyle()) {
749
+ console.log(colors.bold('Findings:'));
750
+ console.log(formatReview(review));
751
+ newline();
752
+ console.log(colors.dim(`Score: ${review.score}/100`));
753
+ }
754
+ else {
755
+ console.log(formatReview(review));
756
+ // Display score
757
+ newline();
758
+ sectionHeader('Review Score');
759
+ const scoreTable = createTable(['Metric', 'Value'], [
760
+ ['Overall Score', `${review.score}/100`],
761
+ ['Errors', formatNumber(review.issues.filter(i => i.severity === 'error').length)],
762
+ ['Warnings', formatNumber(review.issues.filter(i => i.severity === 'warning').length)],
763
+ ['Info', formatNumber(review.issues.filter(i => i.severity === 'info').length)],
764
+ ]);
765
+ console.log(scoreTable.toString());
766
+ }
654
767
  }
655
768
  catch (err) {
656
769
  console.error(error('Error:'), err instanceof Error ? err.message : String(err));
@@ -820,10 +933,157 @@ Warning: This command may create new files if --output is specified.
820
933
  // Status command
821
934
  program
822
935
  .command('status')
823
- .description('Show per-agent reliability and trust scores based on feedback records (from data/feedback/agent-feedback.jsonl). Run commands with --review to collect feedback.')
936
+ .description('Show system status and optionally list recent tasks')
824
937
  .option('--json', 'Output machine-readable JSON summary instead of text')
938
+ .option('--tasks', 'Show recent tasks (experimental)')
939
+ .option('--env', 'Show environment details')
940
+ .option('--track', 'Show what works (success rates by command)')
825
941
  .action(async (options) => {
826
- await executeStatusCommand({ json: Boolean(options.json) });
942
+ await executeStatusCommand({
943
+ json: Boolean(options.json),
944
+ tasks: Boolean(options.tasks),
945
+ env: Boolean(options.env),
946
+ track: Boolean(options.track),
947
+ });
948
+ });
949
+ // Suggest command - Read-only assistant mode
950
+ program
951
+ .command('suggest')
952
+ .description('Read-only assistant mode - ask questions and get explanations without making changes')
953
+ .argument('<query>', 'The question or request')
954
+ .option('--file <file>', 'Focus on a specific file')
955
+ .addHelpText('after', `
956
+ Examples:
957
+ $ codehere suggest "How does authentication work?"
958
+ $ codehere suggest "Explain this function" --file src/auth.ts
959
+
960
+ This command:
961
+ • Searches your codebase for relevant code
962
+ • Provides contextual answers and explanations
963
+ • Does NOT make any changes (read-only mode)
964
+ • Creates a task record for tracking
965
+ `)
966
+ .action(async (query, options) => {
967
+ initLogFile();
968
+ if (!process.env.COHERE_API_KEY) {
969
+ newline();
970
+ console.error(error('COHERE_API_KEY not found in environment'));
971
+ process.exit(1);
972
+ }
973
+ try {
974
+ await executeSuggestCommand(query, {
975
+ file: options.file,
976
+ stream: false,
977
+ });
978
+ logEntry({
979
+ timestamp: new Date().toISOString(),
980
+ command: 'suggest',
981
+ query,
982
+ policyStatus: 'allowed',
983
+ });
984
+ }
985
+ catch (err) {
986
+ const errMessage = err instanceof Error ? err.message : String(err);
987
+ // If it's a missing embeddings error, exit with 1 (message already shown)
988
+ if (errMessage.includes('No embeddings found')) {
989
+ process.exit(1);
990
+ }
991
+ console.error(error('Error:'), errMessage);
992
+ process.exit(1);
993
+ }
994
+ });
995
+ // Run command - Unified agentic execution
996
+ program
997
+ .command('run')
998
+ .description('Unified agentic execution - execute a task or goal')
999
+ .argument('<goal>', 'The goal to execute')
1000
+ .option('--task-id <id>', 'Continue execution of an existing task')
1001
+ .option('--file <file>', 'Focus on a specific file')
1002
+ .option('--files <files>', 'Comma-separated list of files to process')
1003
+ .option('--review', 'Enable review before applying changes')
1004
+ .addHelpText('after', `
1005
+ Examples:
1006
+ $ codehere run "Add error handling to the login function"
1007
+ $ codehere run "Refactor authentication module" --file src/auth.ts
1008
+ $ codehere run "Fix bug in payment processing" --task-id task-12345
1009
+
1010
+ This command:
1011
+ • Creates a plan for the goal
1012
+ • Executes the plan step-by-step
1013
+ • Creates/updates task records for tracking
1014
+ • Shows risk tier and environment mode (advisory)
1015
+ `)
1016
+ .action(async (goal, options) => {
1017
+ initLogFile();
1018
+ if (!process.env.COHERE_API_KEY) {
1019
+ newline();
1020
+ console.error(error('COHERE_API_KEY not found in environment'));
1021
+ process.exit(1);
1022
+ }
1023
+ try {
1024
+ const files = options.files ? options.files.split(',').map((f) => f.trim()) : undefined;
1025
+ await executeRunCommand(goal, {
1026
+ taskId: options.taskId,
1027
+ file: options.file,
1028
+ files,
1029
+ review: Boolean(options.review),
1030
+ });
1031
+ logEntry({
1032
+ timestamp: new Date().toISOString(),
1033
+ command: 'run',
1034
+ query: goal,
1035
+ policyStatus: 'allowed',
1036
+ });
1037
+ }
1038
+ catch (err) {
1039
+ console.error(error('Error:'), err instanceof Error ? err.message : String(err));
1040
+ process.exit(1);
1041
+ }
1042
+ });
1043
+ // Review command - Task review interface
1044
+ program
1045
+ .command('review')
1046
+ .description('Review and approve/reject tasks')
1047
+ .argument('[task-id]', 'Task ID to review (omit to list tasks)')
1048
+ .option('--list', 'List tasks needing review')
1049
+ .option('--approve', 'Approve the task')
1050
+ .option('--reject', 'Reject the task')
1051
+ .option('--comment <text>', 'Add a comment to the review')
1052
+ .option('--all', 'Show all completed tasks in list mode')
1053
+ .addHelpText('after', `
1054
+ Examples:
1055
+ $ codehere review --list
1056
+ $ codehere review task-12345
1057
+ $ codehere review task-12345 --approve
1058
+ $ codehere review task-12345 --reject --comment "Security concerns"
1059
+
1060
+ This command:
1061
+ • Lists tasks that need review
1062
+ • Shows task details (files changed, risk tier, etc.)
1063
+ • Allows approving or rejecting tasks
1064
+ • Updates task status and review records
1065
+ `)
1066
+ .action(async (taskId, options) => {
1067
+ initLogFile();
1068
+ try {
1069
+ await executeReviewCommand(taskId, {
1070
+ list: Boolean(options.list),
1071
+ approve: Boolean(options.approve),
1072
+ reject: Boolean(options.reject),
1073
+ comment: options.comment,
1074
+ all: Boolean(options.all),
1075
+ });
1076
+ logEntry({
1077
+ timestamp: new Date().toISOString(),
1078
+ command: 'review',
1079
+ query: taskId,
1080
+ policyStatus: 'allowed',
1081
+ });
1082
+ }
1083
+ catch (err) {
1084
+ console.error(error('Error:'), err instanceof Error ? err.message : String(err));
1085
+ process.exit(1);
1086
+ }
827
1087
  });
828
1088
  program
829
1089
  .command('test')