@dastageer_44/eco-code 1.1.2 → 1.2.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.
package/README.md CHANGED
@@ -48,21 +48,41 @@ While most coding agents drain expensive API credits, `eco-code` bridges the **H
48
48
 
49
49
  ---
50
50
 
51
+ ## 🔑 Setup: OpenRouter API Key
52
+
53
+ `eco-code` connects to OpenRouter to automatically fetch and use the best $0/token free models.
54
+
55
+ 1. Get a free API key at [openrouter.ai/keys](https://openrouter.ai/keys).
56
+ 2. Set your environment variable:
57
+
58
+ ### 🪟 Windows (PowerShell)
59
+ ```powershell
60
+ $env:OPENROUTER_API_KEY="sk-or-v1-your-key-here"
61
+ ```
62
+
63
+ ### 🍎 macOS / 🐧 Linux (Bash / Zsh)
64
+ ```bash
65
+ export OPENROUTER_API_KEY="sk-or-v1-your-key-here"
66
+ ```
67
+
68
+ *(Optional) You can also save it permanently in `~/.eco-code/config.json`:*
69
+ ```json
70
+ {
71
+ "apiKey": "sk-or-v1-your-key-here"
72
+ }
73
+ ```
74
+
75
+ ---
76
+
51
77
  ## 📖 Usage Guide
52
78
 
53
- After installing, simply navigate to any project folder in your terminal and type:
79
+ After installing and setting your key, simply navigate to any project folder in your terminal and type:
54
80
 
55
81
  ```bash
56
82
  eco-code
57
83
  ```
58
84
  *(You can also use the aliases `ecocode` or `eco`)*
59
85
 
60
- ### Initial Setup
61
- On your first run, the CLI will ask for an **OpenRouter API Key**.
62
- 1. Head to [openrouter.ai/keys](https://openrouter.ai/keys) and create a free account.
63
- 2. Generate a key and paste it into the terminal.
64
- 3. The agent will immediately fetch the best free models available that day.
65
-
66
86
  ### Conversing & Coding
67
87
  Just start typing in plain English!
68
88
 
@@ -70,13 +90,18 @@ Just start typing in plain English!
70
90
 
71
91
  > *"Run my test suite in the background and fix any failing tests."*
72
92
 
73
- ### Slash Commands
74
- Press `/` (and hit Enter) at any time to open the quick-action menu:
75
-
76
- * `/compact` - Summarizes older chat history to free up token space.
77
- * `/models` - Browse and switch between the currently available free models.
78
- * `/taste` - View or add new project-specific coding rules (e.g., "Always use Tailwind").
79
- * `/resume` - Boot up the context from your last coding session.
93
+ ### Slash Commands & Shortcuts
94
+ Type `/` or `?` at any time to open the interactive command menu:
95
+
96
+ * `/plan` - Toggle between **Plan Mode** (read-only safe planning) and **Auto Mode**.
97
+ * `/undo` - Discard all uncommitted working changes (`git reset --hard & clean`).
98
+ * `/rewind` - Revert the last Git commit (`git reset HEAD~1`).
99
+ * `/models` - Browse and switch between the latest free frontier models.
100
+ * `/resume` - Select and restore any past session from your history list.
101
+ * `/compact` - Summarizes older conversation history to save tokens.
102
+ * `/taste` - View or add new project-specific coding directives.
103
+ * `/key` - Update your OpenRouter API Key.
104
+ * `/update` - Check for and install CLI updates directly from npm.
80
105
  * `/exit` - Quit the CLI.
81
106
 
82
107
  ---
@@ -33,6 +33,7 @@ export declare class AgentHarness {
33
33
  constructor(client: OpenAI, model: string, maxTokens: number, configManager: ConfigManager, workspaceDir?: string);
34
34
  resetContext(): void;
35
35
  updateSystemPrompt(modeOverride?: 'plan' | 'auto'): void;
36
+ setClient(client: OpenAI): void;
36
37
  setModel(newModel: string, maxTokens?: number): void;
37
38
  getModel(): string;
38
39
  getMaxTokens(): number;
@@ -39,6 +39,9 @@ export class AgentHarness {
39
39
  this.history.unshift({ role: 'system', content: systemContent });
40
40
  }
41
41
  }
42
+ setClient(client) {
43
+ this.client = client;
44
+ }
42
45
  setModel(newModel, maxTokens) {
43
46
  this.model = newModel;
44
47
  if (maxTokens) {
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/harness/agent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAsB9C,MAAM,OAAO,YAAY;IACf,MAAM,CAAS;IACf,KAAK,CAAS;IACd,SAAS,CAAS;IAClB,aAAa,GAAW,CAAC,CAAC;IAC1B,kBAAkB,GAAW,CAAC,CAAC;IAC/B,mBAAmB,GAAW,CAAC,CAAC;IAChC,sBAAsB,GAAW,CAAC,CAAC;IACnC,cAAc,CAAiB;IAC/B,aAAa,CAAgB;IAC7B,OAAO,GAAyD,EAAE,CAAC;IACnE,YAAY,CAAS;IAE7B,YACE,MAAc,EACd,KAAa,EACb,SAAiB,EACjB,aAA4B,EAC5B,eAAuB,OAAO,CAAC,GAAG,EAAE;QAEpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,IAAI,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,YAAY,CAAC,CAAC;QACvD,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,YAAY;QACV,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,0BAA0B,EAAE,CAAC;IACpC,CAAC;IAED,kBAAkB,CAAC,YAA8B;QAC/C,MAAM,IAAI,GAAG,YAAY,IAAI,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;QAC/D,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAClE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACjE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,aAAa,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,QAAgB,EAAE,SAAkB;QAC3C,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QACtB,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,qBAAqB;QACnB,OAAO,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC;IAC5D,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,UAAU,CAAC,UAAgE;QACzE,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;QAC1B,IAAI,CAAC,0BAA0B,EAAE,CAAC;IACpC,CAAC;IAEO,0BAA0B;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5C,8DAA8D;QAC9D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,eAAe;QACb,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,0BAA0B,EAAE,CAAC;QACpC,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACvG,MAAM,UAAU,GAAG,UAAU,IAAI,EAAE,CAAC;QACpC,MAAM,SAAS,GAAG,UAAU,IAAI,EAAE,IAAI,UAAU,GAAG,EAAE,CAAC;QAEtD,gDAAgD;QAChD,MAAM,SAAS,GAAG,EAAE,CAAC;QACrB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;QACnF,MAAM,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;QACzC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC;QAE1E,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAEvE,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,aAAa;YAC9B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,kBAAkB,EAAE,WAAW;YAC/B,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;YACnD,UAAU;YACV,SAAS;YACT,UAAU;YACV,WAAW;SACZ,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAEnC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAElC,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAClC,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;QAEpF,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,SAAiB,EAAE,YAA2B,EAAE,EAAE,YAA8B;QAC5F,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,uDAAuD;QACvD,MAAM,UAAU,GAAG,YAAY,IAAI,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;QACrE,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAEpC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEpE,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,MAAM,UAAU,GAAG,CAAC,YAAY,EAAE,iBAAiB,EAAE,aAAa,CAAC,CAAC;QACpE,MAAM,WAAW,GAAG,UAAU,KAAK,MAAM;YACvC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACjE,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;QAEhE,OAAO,SAAS,GAAG,QAAQ,EAAE,CAAC;YAC5B,SAAS,EAAE,CAAC;YAEZ,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAE3E,IAAI,QAAgD,CAAC;YACrD,IAAI,CAAC;gBACH,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;oBACnD,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,QAAQ,EAAE,eAAe;oBACzB,KAAK,EAAE,WAAW;oBAClB,WAAW,EAAE,MAAM;oBACnB,WAAW,EAAE,GAAG;iBACjB,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,oCAAoC,IAAI,CAAC,KAAK,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACrF,CAAC;YAED,+DAA+D;YAC/D,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;YAC7B,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,YAAY,GAAG,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;gBAC9C,MAAM,gBAAgB,GAAG,KAAK,CAAC,iBAAiB,IAAI,CAAC,CAAC;gBACtD,MAAM,YAAY,GAAI,KAAa,CAAC,qBAAqB,EAAE,aAAa,IAAI,CAAC,CAAC;gBAE9E,IAAI,CAAC,aAAa,GAAG,YAAY,GAAG,gBAAgB,CAAC;gBAErD,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;oBACpB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,YAAY,CAAC,CAAC;oBAC5D,IAAI,CAAC,kBAAkB,IAAI,UAAU,CAAC;oBACtC,IAAI,CAAC,sBAAsB,IAAI,YAAY,CAAC;gBAC9C,CAAC;qBAAM,CAAC;oBACN,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;wBACrB,IAAI,CAAC,sBAAsB,IAAI,YAAY,CAAC;wBAC5C,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,YAAY,CAAC,CAAC;oBACtE,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,sBAAsB,IAAI,YAAY,CAAC;oBAC9C,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC,mBAAmB,IAAI,gBAAgB,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,0BAA0B,EAAE,CAAC;gBAClC,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;oBACpB,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,aAAa,CAAC;gBAChD,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,aAAa,CAAC;gBACpD,CAAC;YACH,CAAC;YAED,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;YAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACzD,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAE3B,qCAAqC;YACrC,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxD,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;oBAC1C,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;wBACjC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;wBACxC,IAAI,IAAI,GAAQ,EAAE,CAAC;wBACnB,IAAI,CAAC;4BACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;wBACjD,CAAC;wBAAC,MAAM,CAAC;4BACP,IAAI,GAAG,EAAE,CAAC;wBACZ,CAAC;wBAED,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;wBACxC,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;wBAC5E,SAAS,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;wBAE5C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;4BAChB,IAAI,EAAE,MAAM;4BACZ,YAAY,EAAE,QAAQ,CAAC,EAAE;4BACzB,OAAO,EAAE,UAAU;yBACpB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,2CAA2C;gBAC3C,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBACzD,OAAO,OAAO,CAAC,OAAO,IAAI,wBAAwB,CAAC;YACrD,CAAC;QACH,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACzD,OAAO,sDAAsD,CAAC;IAChE,CAAC;CACF"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/harness/agent.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -12,13 +12,14 @@ import * as readline from 'readline';
12
12
  import * as p from '@clack/prompts';
13
13
  import chalk from 'chalk';
14
14
  import ora from 'ora';
15
+ import OpenAI from 'openai';
15
16
  import { ConfigManager } from './config.js';
16
17
  import { OpenRouterService } from './services/openrouter.js';
17
18
  import { AgentHarness } from './harness/agent.js';
18
19
  import { printBanner, printHelp } from './ui/banner.js';
19
20
  import { renderMarkdown } from './ui/markdown.js';
20
21
  import { runCommand } from './tools/shell-ops.js';
21
- import { checkAndPromptUpdate } from './services/updater.js';
22
+ import { checkAndPromptUpdate, triggerManualUpdate } from './services/updater.js';
22
23
  const SPINNER_VERBS = [
23
24
  'Thinking', 'Reasoning', 'Analyzing', 'Synthesizing',
24
25
  'Drafting', 'Evaluating', 'Planning', 'Processing'
@@ -31,125 +32,243 @@ function getPackageVersion() {
31
32
  const pkgPath = path.resolve(path.dirname(new URL(import.meta.url).pathname.replace(/^\/([A-Z]:)/, '$1')), '../package.json');
32
33
  if (fs.existsSync(pkgPath)) {
33
34
  const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
34
- return pkg.version || '1.0.0';
35
+ return pkg.version || '1.2.0';
35
36
  }
36
37
  }
37
38
  catch { }
38
- return '1.0.0';
39
+ return '1.2.0';
39
40
  }
40
41
  const config = new ConfigManager();
41
42
  /**
42
- * Robust Readline Prompt Manager that stays alive on Windows/macOS/Linux
43
- * and catches instant '/' keypress without requiring Enter.
43
+ * Antigravity-style Interactive Terminal Prompt
44
+ * Listens to raw keypress events immediately on Windows, macOS, and Linux.
45
+ * When the user types '/', it pops open a live autocomplete dropdown directly under the prompt line.
44
46
  */
45
47
  class PromptManager {
46
- rl;
47
48
  sigintCount = 0;
48
- currentResolve = null;
49
- currentOnData = null;
50
- currentPromptStr = '';
49
+ isPaused = false;
51
50
  constructor() {
52
- this.rl = readline.createInterface({
53
- input: process.stdin,
54
- output: process.stdout,
55
- terminal: true,
56
- });
57
- this.rl.on('SIGINT', () => {
58
- this.sigintCount++;
59
- if (this.sigintCount >= 3) {
60
- console.log('\nHappy coding! 👋');
61
- process.exit(0);
62
- }
63
- else {
64
- console.log(`\n${chalk.yellow(`(Press Ctrl+C ${3 - this.sigintCount} more time(s) to exit)`)}`);
65
- // We must re-issue the question to restore the prompt line
66
- this.rl.question(this.currentPromptStr, (answer) => {
67
- this.sigintCount = 0;
68
- if (this.currentOnData)
69
- process.stdin.removeListener('data', this.currentOnData);
70
- if (this.currentResolve) {
71
- const cb = this.currentResolve;
72
- this.currentResolve = null;
73
- cb(answer);
74
- }
75
- });
76
- }
77
- });
51
+ readline.emitKeypressEvents(process.stdin);
78
52
  }
79
- ask(promptStr) {
53
+ ask(promptPrefix, getStats) {
80
54
  return new Promise((resolve) => {
81
- this.currentPromptStr = promptStr;
82
- this.currentResolve = resolve;
83
- this.rl.resume();
84
- const onData = (chunk) => {
85
- const str = chunk.toString();
86
- // If line is empty and user pressed '/' or '?', trigger instant command menu / help
87
- if (this.rl.line.trim() === '' && (str === '/' || str === '?')) {
88
- process.stdin.removeListener('data', onData);
89
- readline.clearLine(process.stdout, 0);
55
+ const stats = getStats ? getStats() : null;
56
+ let compactDesc = 'Compact conversation history';
57
+ if (stats) {
58
+ compactDesc = `Compact history ${chalk.dim(stats.progressBar)} ${chalk.green(`${stats.percentage}% used`)}`;
59
+ if (stats.isCritical) {
60
+ compactDesc = `Compact history ${chalk.red.bold(stats.progressBar)} ${chalk.red.bold(`${stats.percentage}% used (⚠️ Recommended)`)}`;
61
+ }
62
+ }
63
+ const allCommands = [
64
+ { value: '/plan', name: '/plan', desc: '📝 Toggle between Plan Mode and Auto Mode' },
65
+ { value: '/models', name: '/models', desc: 'Browse & switch free AI models' },
66
+ { value: '/compact', name: '/compact', desc: compactDesc },
67
+ { value: '/resume', name: '/resume', desc: 'Restore previous session context' },
68
+ { value: '/undo', name: '/undo', desc: '🗑️ Discard all uncommitted code changes' },
69
+ { value: '/rewind', name: '/rewind', desc: '⏪ Undo the last Git commit (git reset HEAD~1)' },
70
+ { value: '/refresh', name: '/refresh', desc: 'Check for latest free models' },
71
+ { value: '/taste', name: '/taste', desc: 'View or add project coding style rules' },
72
+ { value: '/key', name: '/key', desc: 'Update OpenRouter API Key' },
73
+ { value: '/clear', name: '/clear', desc: 'Reset conversation history' },
74
+ { value: '/update', name: '/update', desc: '🔄 Check for and install CLI updates' },
75
+ { value: '/help', name: '/help', desc: 'Show help summary' },
76
+ { value: '/exit', name: '/exit', desc: 'Quit the agent' },
77
+ ];
78
+ const wasRaw = process.stdin.isRaw;
79
+ if (process.stdin.setRawMode)
80
+ process.stdin.setRawMode(true);
81
+ process.stdin.resume();
82
+ let buffer = '';
83
+ let cursorPos = 0;
84
+ let selectedIndex = 0;
85
+ let renderedDropdownLines = 0;
86
+ const render = () => {
87
+ if (this.isPaused)
88
+ return;
89
+ // 1. Erase previously rendered dropdown lines below
90
+ if (renderedDropdownLines > 0) {
90
91
  readline.cursorTo(process.stdout, 0);
91
- this.rl.pause();
92
- if (this.currentResolve) {
93
- const cb = this.currentResolve;
94
- this.currentResolve = null;
95
- cb(str === '?' ? '?' : '/');
92
+ for (let i = 0; i < renderedDropdownLines; i++) {
93
+ process.stdout.write('\x1b[1B\x1b[2K');
94
+ }
95
+ process.stdout.write(`\x1b[${renderedDropdownLines}A`);
96
+ }
97
+ // 2. Erase prompt line and re-render prompt + buffer
98
+ readline.cursorTo(process.stdout, 0);
99
+ process.stdout.write('\x1b[2K');
100
+ process.stdout.write(promptPrefix + buffer);
101
+ renderedDropdownLines = 0;
102
+ // 3. If buffer starts with '/', render live dropdown beneath
103
+ if (buffer.startsWith('/')) {
104
+ const query = buffer.slice(1).toLowerCase().trim();
105
+ const filtered = allCommands.filter((c) => c.name.toLowerCase().includes(query) || c.desc.toLowerCase().includes(query));
106
+ if (selectedIndex >= filtered.length) {
107
+ selectedIndex = Math.max(0, filtered.length - 1);
108
+ }
109
+ const lines = [];
110
+ lines.push(` ${chalk.dim('─'.repeat(55))}`);
111
+ if (filtered.length === 0) {
112
+ lines.push(` ${chalk.dim('(no matching commands)')}`);
113
+ }
114
+ else {
115
+ filtered.slice(0, 7).forEach((cmd, idx) => {
116
+ const isSelected = idx === selectedIndex;
117
+ const pointer = isSelected ? chalk.cyan('❯') : ' ';
118
+ const nameStr = isSelected ? chalk.cyan.bold(cmd.name.padEnd(10)) : chalk.white(cmd.name.padEnd(10));
119
+ const descStr = isSelected ? chalk.white(cmd.desc) : chalk.dim(cmd.desc);
120
+ lines.push(` ${pointer} ${nameStr} ${chalk.dim('—')} ${descStr}`);
121
+ });
96
122
  }
123
+ lines.push(` ${chalk.dim('↑/↓ Navigate · enter Select · tab Complete · esc to cancel')}`);
124
+ process.stdout.write('\n' + lines.join('\n'));
125
+ renderedDropdownLines = lines.length;
126
+ // Move cursor back up to prompt line
127
+ process.stdout.write(`\x1b[${renderedDropdownLines}A`);
97
128
  }
129
+ // 4. Position cursor accurately on prompt line
130
+ const visiblePrompt = promptPrefix.replace(/\x1b\[[0-9;]*m/g, '');
131
+ readline.cursorTo(process.stdout, visiblePrompt.length + cursorPos);
98
132
  };
99
- this.currentOnData = onData;
100
- process.stdin.on('data', onData);
101
- this.rl.question(promptStr, (answer) => {
102
- this.sigintCount = 0;
103
- process.stdin.removeListener('data', onData);
104
- if (this.currentResolve) {
105
- this.currentResolve = null;
106
- resolve(answer);
133
+ const cleanup = () => {
134
+ process.stdin.removeListener('keypress', onKeypress);
135
+ if (renderedDropdownLines > 0) {
136
+ readline.cursorTo(process.stdout, 0);
137
+ for (let i = 0; i < renderedDropdownLines; i++) {
138
+ process.stdout.write('\x1b[1B\x1b[2K');
139
+ }
140
+ process.stdout.write(`\x1b[${renderedDropdownLines}A`);
141
+ readline.cursorTo(process.stdout, 0);
107
142
  }
108
- });
143
+ if (process.stdin.setRawMode && !wasRaw) {
144
+ process.stdin.setRawMode(false);
145
+ }
146
+ };
147
+ const onKeypress = (str, key) => {
148
+ if (this.isPaused)
149
+ return;
150
+ if (key) {
151
+ if (key.ctrl && key.name === 'c') {
152
+ this.sigintCount++;
153
+ if (this.sigintCount >= 3) {
154
+ cleanup();
155
+ console.log('\nHappy coding! 👋');
156
+ process.exit(0);
157
+ }
158
+ else {
159
+ cleanup();
160
+ console.log(`\n${chalk.yellow(`(Press Ctrl+C ${3 - this.sigintCount} more time(s) to exit)`)}`);
161
+ process.stdout.write('\n');
162
+ resolve('');
163
+ return;
164
+ }
165
+ }
166
+ if (key.name === 'return' || key.name === 'enter') {
167
+ let finalVal = buffer.trim();
168
+ if (buffer.startsWith('/')) {
169
+ const query = buffer.slice(1).toLowerCase().trim();
170
+ const filtered = allCommands.filter((c) => c.name.toLowerCase().includes(query) || c.desc.toLowerCase().includes(query));
171
+ if (filtered.length > 0) {
172
+ finalVal = filtered[selectedIndex].value;
173
+ }
174
+ }
175
+ cleanup();
176
+ process.stdout.write('\n');
177
+ this.sigintCount = 0;
178
+ resolve(finalVal);
179
+ return;
180
+ }
181
+ if (key.name === 'up' && buffer.startsWith('/')) {
182
+ const query = buffer.slice(1).toLowerCase().trim();
183
+ const filtered = allCommands.filter((c) => c.name.toLowerCase().includes(query) || c.desc.toLowerCase().includes(query));
184
+ if (filtered.length > 0) {
185
+ selectedIndex = (selectedIndex - 1 + filtered.length) % filtered.length;
186
+ render();
187
+ }
188
+ return;
189
+ }
190
+ if (key.name === 'down' && buffer.startsWith('/')) {
191
+ const query = buffer.slice(1).toLowerCase().trim();
192
+ const filtered = allCommands.filter((c) => c.name.toLowerCase().includes(query) || c.desc.toLowerCase().includes(query));
193
+ if (filtered.length > 0) {
194
+ selectedIndex = (selectedIndex + 1) % filtered.length;
195
+ render();
196
+ }
197
+ return;
198
+ }
199
+ if (key.name === 'tab' && buffer.startsWith('/')) {
200
+ const query = buffer.slice(1).toLowerCase().trim();
201
+ const filtered = allCommands.filter((c) => c.name.toLowerCase().includes(query) || c.desc.toLowerCase().includes(query));
202
+ if (filtered.length > 0) {
203
+ buffer = filtered[selectedIndex].name;
204
+ cursorPos = buffer.length;
205
+ render();
206
+ }
207
+ return;
208
+ }
209
+ if (key.name === 'escape') {
210
+ buffer = '';
211
+ cursorPos = 0;
212
+ selectedIndex = 0;
213
+ render();
214
+ return;
215
+ }
216
+ if (key.name === 'backspace') {
217
+ if (cursorPos > 0) {
218
+ buffer = buffer.slice(0, cursorPos - 1) + buffer.slice(cursorPos);
219
+ cursorPos--;
220
+ selectedIndex = 0;
221
+ render();
222
+ }
223
+ return;
224
+ }
225
+ if (key.name === 'left') {
226
+ if (cursorPos > 0) {
227
+ cursorPos--;
228
+ render();
229
+ }
230
+ return;
231
+ }
232
+ if (key.name === 'right') {
233
+ if (cursorPos < buffer.length) {
234
+ cursorPos++;
235
+ render();
236
+ }
237
+ return;
238
+ }
239
+ }
240
+ // Handle normal characters
241
+ if (str && str.length === 1 && str.charCodeAt(0) >= 32) {
242
+ buffer = buffer.slice(0, cursorPos) + str + buffer.slice(cursorPos);
243
+ cursorPos += str.length;
244
+ selectedIndex = 0;
245
+ render();
246
+ }
247
+ };
248
+ process.stdin.on('keypress', onKeypress);
249
+ render();
109
250
  });
110
251
  }
111
252
  pause() {
112
- this.rl.pause();
253
+ this.isPaused = true;
254
+ if (process.stdin.setRawMode)
255
+ process.stdin.setRawMode(false);
113
256
  }
114
257
  resume() {
115
- this.rl.resume();
116
- }
117
- close() {
118
- this.rl.close();
258
+ this.isPaused = false;
119
259
  }
260
+ close() { }
120
261
  }
121
- async function promptOnboardingApiKey() {
122
- p.intro(chalk.bgGreen.black(' eco-code Setup '));
123
- const method = await p.select({
124
- message: 'How would you like to configure your OpenRouter API Key?',
125
- options: [
126
- { value: 'interactive', label: '1. Paste API Key here in terminal (Recommended)' },
127
- { value: 'env', label: '2. Show how to set OPENROUTER_API_KEY environment variable' },
128
- { value: 'config', label: `3. Show config file path (~/.eco-code/config.json)` },
129
- ],
130
- });
131
- if (p.isCancel(method)) {
132
- p.outro('Setup cancelled.');
133
- process.exit(0);
134
- }
135
- if (method === 'env') {
136
- p.note(`Windows (PowerShell):\n $env:OPENROUTER_API_KEY="sk-or-v1-..."\n\nLinux / macOS / Bash:\n export OPENROUTER_API_KEY="sk-or-v1-..."\n\nGet a free key at: https://openrouter.ai/keys`, 'Environment Variable Setup');
137
- }
138
- else if (method === 'config') {
139
- p.note(`File location:\n ${config.getConfigPath()}\n\nContent:\n {\n "apiKey": "sk-or-v1-..."\n }`, 'Config File Setup');
140
- }
141
- const entered = await p.password({
142
- message: 'Enter your OpenRouter API Key:',
143
- validate: (val) => (!val || !val.trim() ? 'API key cannot be empty' : undefined),
144
- });
145
- if (p.isCancel(entered)) {
146
- p.outro('Setup cancelled.');
147
- process.exit(0);
148
- }
149
- const key = entered.trim();
150
- config.setApiKey(key);
151
- p.note(`Saved API key to: ${config.getConfigPath()}`, 'Key Saved');
152
- return key;
262
+ function printMissingApiKeyInstructions() {
263
+ console.log(`\n${chalk.red.bold(' No OpenRouter API Key configured.')}\n`);
264
+ console.log(` To use ${chalk.green.bold('eco-code')}, set your OpenRouter API key:\n`);
265
+ console.log(` ${chalk.cyan.bold('Windows (PowerShell):')}`);
266
+ console.log(` ${chalk.white('$env:OPENROUTER_API_KEY="sk-or-v1-your-key-here"')}\n`);
267
+ console.log(` ${chalk.cyan.bold('Linux / macOS (Bash / Zsh):')}`);
268
+ console.log(` ${chalk.white('export OPENROUTER_API_KEY="sk-or-v1-your-key-here"')}\n`);
269
+ console.log(` ${chalk.cyan.bold('Or in ~/.eco-code/config.json:')}`);
270
+ console.log(` ${chalk.white('{\n "apiKey": "sk-or-v1-your-key-here"\n }')}\n`);
271
+ console.log(` ${chalk.dim('Get a free API key at:')} ${chalk.underline('https://openrouter.ai/keys')}\n`);
153
272
  }
154
273
  async function selectModelInteractive(models, currentModel) {
155
274
  const options = models.slice(0, 15).map((m) => {
@@ -170,35 +289,6 @@ async function selectModelInteractive(models, currentModel) {
170
289
  }
171
290
  return models.find((m) => m.id === chosen) || models[0];
172
291
  }
173
- async function handleSlashCommandMenu(stats) {
174
- let compactLabel = `/compact - Compact history ${chalk.dim(stats.progressBar)} ${chalk.green(`${stats.percentage}% used`)}`;
175
- if (stats.isCritical) {
176
- compactLabel = `/compact - Compact history ${chalk.red.bold(stats.progressBar)} ${chalk.red.bold(`${stats.percentage}% used (⚠️ Recommended now!)`)}`;
177
- }
178
- else if (stats.isWarning) {
179
- compactLabel = `/compact - Compact history ${chalk.yellow(stats.progressBar)} ${chalk.yellow(`${stats.percentage}% used (Consider compacting)`)}`;
180
- }
181
- const action = await p.select({
182
- message: 'Select command:',
183
- options: [
184
- { value: '/compact', label: compactLabel },
185
- { value: '/models', label: '/models - Browse & switch free models' },
186
- { value: '/refresh', label: '/refresh - Check for latest free models' },
187
- { value: '/resume', label: '/resume - Restore previous session context' },
188
- { value: '/taste', label: '/taste - View or add project coding style rules' },
189
- { value: '/key', label: '/key - Update OpenRouter API Key' },
190
- { value: '/clear', label: '/clear - Reset conversation history' },
191
- { value: '/plan', label: '/plan - 📝 Toggle between Plan Mode and Auto Mode' },
192
- { value: '/undo', label: '/undo - 🗑️ Discard all uncommitted code changes' },
193
- { value: '/rewind', label: '/rewind - ⏪ Undo the last Git commit (git reset HEAD~1)' },
194
- { value: '/help', label: '/help - Show help summary' },
195
- { value: '/exit', label: '/exit - Quit the agent' },
196
- ],
197
- });
198
- if (p.isCancel(action))
199
- return null;
200
- return action;
201
- }
202
292
  function printContextUsageHint(stats) {
203
293
  const usedK = (stats.usedTokens / 1000).toFixed(1);
204
294
  const maxK = (stats.maxTokens / 1000).toFixed(1);
@@ -212,45 +302,51 @@ function printContextUsageHint(stats) {
212
302
  async function main() {
213
303
  const version = getPackageVersion();
214
304
  // Auto-check for updates on launch
215
- await checkAndPromptUpdate(version, 'eco-code');
305
+ await checkAndPromptUpdate(version, '@dastageer_44/eco-code');
216
306
  let apiKey = config.getApiKey();
217
- if (!apiKey) {
218
- apiKey = await promptOnboardingApiKey();
219
- }
220
- let openRouter = new OpenRouterService(apiKey, config);
221
- const spinner = ora({ text: 'Checking models...', color: 'green' }).start();
307
+ let openRouter = null;
222
308
  let freeModels = [];
223
- try {
224
- const result = await openRouter.getOrFetchFreeModels(false);
225
- freeModels = result.models;
226
- if (freeModels.length === 0) {
227
- spinner.fail('No free models found on OpenRouter.');
228
- console.log(chalk.yellow('\nPlease check your API key or visit https://openrouter.ai/models?max_price=0'));
229
- process.exit(1);
309
+ let currentModelInfo = null;
310
+ let activeModel = config.getDefaultModel() || 'openrouter/auto';
311
+ if (apiKey) {
312
+ openRouter = new OpenRouterService(apiKey, config);
313
+ const spinner = ora({ text: 'Checking models...', color: 'green' }).start();
314
+ try {
315
+ const result = await openRouter.getOrFetchFreeModels(false);
316
+ freeModels = result.models;
317
+ if (freeModels.length > 0) {
318
+ currentModelInfo = freeModels.find((m) => m.id === config.getDefaultModel()) || freeModels[0];
319
+ activeModel = currentModelInfo.id;
320
+ config.setDefaultModel(activeModel);
321
+ }
322
+ spinner.stop();
323
+ }
324
+ catch (err) {
325
+ spinner.fail('Failed to connect to OpenRouter.');
326
+ console.error(chalk.red(err.message));
230
327
  }
231
- spinner.stop(); // Remove the success log to keep it clean
232
- }
233
- catch (err) {
234
- spinner.fail('Failed to connect to OpenRouter.');
235
- console.error(chalk.red(err.message));
236
- console.log(chalk.yellow(`\nCheck your API key in ${config.getConfigPath()} or run /key.`));
237
- process.exit(1);
238
328
  }
239
- let currentModelInfo = freeModels.find((m) => m.id === config.getDefaultModel()) || freeModels[0];
240
- let activeModel = currentModelInfo.id;
241
- config.setDefaultModel(activeModel);
242
- printBanner(version, `${activeModel} (${currentModelInfo.contextLength.toLocaleString()} tokens)`, process.cwd());
243
- const harness = new AgentHarness(openRouter.getClient(), activeModel, currentModelInfo.contextLength, config, process.cwd());
329
+ const modelDisplay = apiKey && currentModelInfo
330
+ ? `${activeModel} (${currentModelInfo.contextLength.toLocaleString()} tokens)`
331
+ : chalk.yellow('No API Key (type /key to configure)');
332
+ printBanner(version, modelDisplay, process.cwd());
333
+ const initialClient = openRouter
334
+ ? openRouter.getClient()
335
+ : new OpenAI({ apiKey: 'unconfigured', baseURL: 'https://openrouter.ai/api/v1' });
336
+ const harness = new AgentHarness(initialClient, activeModel, currentModelInfo?.contextLength || 8192, config, process.cwd());
244
337
  const promptMgr = new PromptManager();
245
338
  // Force Plan Mode on startup
246
339
  config.setAgentMode('plan');
247
340
  harness.updateSystemPrompt('plan');
341
+ if (!apiKey) {
342
+ console.log(chalk.yellow(` ⚠️ No OpenRouter API key detected. Type ${chalk.cyan.bold('/key')} or set ${chalk.cyan('$env:OPENROUTER_API_KEY')} to start.\n`));
343
+ }
248
344
  // Main interactive loop
249
345
  while (true) {
250
346
  const currentMode = config.getAgentMode().toUpperCase();
251
347
  const modeColor = currentMode === 'PLAN' ? chalk.blue : chalk.red;
252
348
  const promptStr = `${chalk.white.bold('eco-code')} ${modeColor(`[${currentMode}]`)} ${chalk.gray('>')} `;
253
- const rawInput = await promptMgr.ask(promptStr);
349
+ const rawInput = await promptMgr.ask(promptStr, () => harness.getContextStats());
254
350
  if (rawInput === null || rawInput === undefined) {
255
351
  console.log('\nHappy coding! 👋');
256
352
  promptMgr.close();
@@ -259,27 +355,6 @@ async function main() {
259
355
  let prompt = rawInput.trim();
260
356
  if (!prompt)
261
357
  continue;
262
- // INSTANT TRIGGER: If user pressed '/' or typed '/menu'
263
- if (prompt === '/' || prompt === '/menu') {
264
- promptMgr.pause();
265
- const stats = harness.getContextStats();
266
- const chosenCmd = await handleSlashCommandMenu(stats);
267
- promptMgr.resume();
268
- if (!chosenCmd)
269
- continue;
270
- prompt = chosenCmd;
271
- }
272
- const validSlashCommands = ['/exit', 'exit', 'quit', '/help', 'help', '?', '/model', '/models', '/refresh', '/compact', '/resume', '/taste', '/key', '/clear', '/plan', '/undo', '/rewind'];
273
- if (prompt.startsWith('/') && !validSlashCommands.includes(prompt)) {
274
- console.log(chalk.yellow(`\n Unrecognized command "${prompt}". Opening command options:\n`));
275
- promptMgr.pause();
276
- const stats = harness.getContextStats();
277
- const chosenCmd = await handleSlashCommandMenu(stats);
278
- promptMgr.resume();
279
- if (!chosenCmd)
280
- continue;
281
- prompt = chosenCmd;
282
- }
283
358
  // --- Slash Commands Execution ---
284
359
  if (prompt === '/exit' || prompt === 'exit' || prompt === 'quit') {
285
360
  console.log('\nHappy coding! 👋\n');
@@ -293,6 +368,10 @@ async function main() {
293
368
  continue;
294
369
  }
295
370
  if (prompt === '/model' || prompt === '/models') {
371
+ if (!apiKey || freeModels.length === 0) {
372
+ console.log(chalk.yellow('\n ⚠️ No active API key. Type /key or set $env:OPENROUTER_API_KEY to browse free models.\n'));
373
+ continue;
374
+ }
296
375
  promptMgr.pause();
297
376
  const selected = await selectModelInteractive(freeModels, activeModel);
298
377
  promptMgr.resume();
@@ -304,6 +383,10 @@ async function main() {
304
383
  continue;
305
384
  }
306
385
  if (prompt === '/refresh') {
386
+ if (!apiKey || !openRouter) {
387
+ console.log(chalk.yellow('\n ⚠️ No active API key. Type /key or set $env:OPENROUTER_API_KEY first.\n'));
388
+ continue;
389
+ }
307
390
  const refSpinner = ora('Checking for latest free models...').start();
308
391
  try {
309
392
  const res = await openRouter.getOrFetchFreeModels(true);
@@ -395,19 +478,34 @@ async function main() {
395
478
  if (prompt === '/key') {
396
479
  promptMgr.pause();
397
480
  const newKey = await p.password({
398
- message: 'Enter new OpenRouter API Key:',
481
+ message: 'Enter your OpenRouter API Key:',
399
482
  });
400
483
  promptMgr.resume();
401
484
  if (!p.isCancel(newKey) && newKey.trim()) {
402
485
  apiKey = newKey.trim();
403
486
  config.setApiKey(apiKey);
404
487
  openRouter = new OpenRouterService(apiKey, config);
488
+ harness.setClient(openRouter.getClient());
405
489
  console.log(`\n ${chalk.green('✔')} API key updated.\n`);
490
+ const refSpinner = ora('Fetching free models...').start();
406
491
  try {
407
492
  const res = await openRouter.getOrFetchFreeModels(true);
408
493
  freeModels = res.models;
494
+ if (freeModels.length > 0) {
495
+ currentModelInfo = freeModels[0];
496
+ activeModel = currentModelInfo.id;
497
+ config.setDefaultModel(activeModel);
498
+ harness.setModel(activeModel, currentModelInfo.contextLength);
499
+ refSpinner.succeed(chalk.green(`Connected! Active Model: ${chalk.bold(activeModel)}`));
500
+ }
501
+ else {
502
+ refSpinner.warn('No free models found on this account.');
503
+ }
504
+ }
505
+ catch (e) {
506
+ refSpinner.fail(`Failed to load models: ${e.message}`);
409
507
  }
410
- catch { }
508
+ console.log();
411
509
  }
412
510
  continue;
413
511
  }
@@ -416,6 +514,13 @@ async function main() {
416
514
  console.log(`\n ${chalk.green('✔')} Context and conversation history cleared.\n`);
417
515
  continue;
418
516
  }
517
+ if (prompt === '/update') {
518
+ promptMgr.pause();
519
+ await triggerManualUpdate(version, '@dastageer_44/eco-code');
520
+ promptMgr.resume();
521
+ console.log();
522
+ continue;
523
+ }
419
524
  if (prompt === '/plan') {
420
525
  const currentMode = config.getAgentMode();
421
526
  const newMode = currentMode === 'plan' ? 'auto' : 'plan';
@@ -475,6 +580,16 @@ async function main() {
475
580
  }
476
581
  continue;
477
582
  }
583
+ // Ensure API Key exists before calling model
584
+ if (!apiKey) {
585
+ console.log(`\n${chalk.red.bold(' ❌ OpenRouter API Key Required')}`);
586
+ console.log(` To chat and write code with free models, configure your key:\n`);
587
+ console.log(` ${chalk.cyan.bold('Windows (PowerShell):')} ${chalk.white('$env:OPENROUTER_API_KEY="sk-or-v1-..."')}`);
588
+ console.log(` ${chalk.cyan.bold('Linux / macOS (Bash/Zsh):')} ${chalk.white('export OPENROUTER_API_KEY="sk-or-v1-..."')}`);
589
+ console.log(` ${chalk.cyan.bold('Or type:')} ${chalk.white('/key')}\n`);
590
+ console.log(` ${chalk.dim('Get a free key at:')} ${chalk.underline('https://openrouter.ai/keys')}\n`);
591
+ continue;
592
+ }
478
593
  // --- Run Agent Turn with Tool Calling ---
479
594
  console.log(); // Force a blank line to scroll terminal down immediately
480
595
  const turnSpinner = ora({ text: `${getRandomVerb()}...`, color: 'cyan' }).start();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -4,3 +4,7 @@ export declare function isNewerVersion(latest: string, current: string): boolean
4
4
  * If available, prompts the user to auto-download and update immediately.
5
5
  */
6
6
  export declare function checkAndPromptUpdate(currentVersion: string, packageName?: string): Promise<void>;
7
+ /**
8
+ * Manually triggered update check via /update command.
9
+ */
10
+ export declare function triggerManualUpdate(currentVersion: string, packageName?: string): Promise<void>;
@@ -5,6 +5,7 @@ import * as p from '@clack/prompts';
5
5
  import chalk from 'chalk';
6
6
  import ora from 'ora';
7
7
  const execAsync = promisify(exec);
8
+ const DEFAULT_PACKAGE_NAME = '@dastageer_44/eco-code';
8
9
  export function isNewerVersion(latest, current) {
9
10
  try {
10
11
  const parse = (v) => v.replace(/^v/, '').split('.').map((x) => parseInt(x, 10) || 0);
@@ -24,7 +25,7 @@ export function isNewerVersion(latest, current) {
24
25
  * Checks NPM registry for a newer version of eco-code.
25
26
  * If available, prompts the user to auto-download and update immediately.
26
27
  */
27
- export async function checkAndPromptUpdate(currentVersion, packageName = 'eco-code') {
28
+ export async function checkAndPromptUpdate(currentVersion, packageName = DEFAULT_PACKAGE_NAME) {
28
29
  try {
29
30
  const res = await axios.get(`https://registry.npmjs.org/${packageName}/latest`, {
30
31
  timeout: 3000,
@@ -49,7 +50,7 @@ export async function checkAndPromptUpdate(currentVersion, packageName = 'eco-co
49
50
  }
50
51
  catch (err) {
51
52
  spinner.fail(chalk.red(`Auto-update failed: ${err.message}`));
52
- console.log(chalk.dim(` You can manually update anytime with: npm update -g ${packageName}\n`));
53
+ console.log(chalk.dim(` You can manually update anytime with: npm install -g ${packageName}@latest\n`));
53
54
  }
54
55
  }
55
56
  }
@@ -58,4 +59,47 @@ export async function checkAndPromptUpdate(currentVersion, packageName = 'eco-co
58
59
  // Offline or package not yet published on registry; continue seamlessly
59
60
  }
60
61
  }
62
+ /**
63
+ * Manually triggered update check via /update command.
64
+ */
65
+ export async function triggerManualUpdate(currentVersion, packageName = DEFAULT_PACKAGE_NAME) {
66
+ const spinner = ora({ text: 'Checking npm registry for updates...', color: 'cyan' }).start();
67
+ try {
68
+ const res = await axios.get(`https://registry.npmjs.org/${packageName}/latest`, {
69
+ timeout: 5000,
70
+ });
71
+ const latestVersion = res.data?.version;
72
+ if (!latestVersion) {
73
+ spinner.fail('Could not check npm registry.');
74
+ return;
75
+ }
76
+ if (isNewerVersion(latestVersion, currentVersion)) {
77
+ spinner.succeed(chalk.yellow.bold(`New version found: v${latestVersion} (currently on v${currentVersion})`));
78
+ const shouldUpdate = await p.confirm({
79
+ message: `Would you like to install v${latestVersion} globally now?`,
80
+ initialValue: true,
81
+ });
82
+ if (!p.isCancel(shouldUpdate) && shouldUpdate) {
83
+ const installSpinner = ora({ text: `Installing ${packageName}@latest...`, color: 'cyan' }).start();
84
+ try {
85
+ await execAsync(`npm install -g ${packageName}@latest`);
86
+ installSpinner.succeed(chalk.green.bold(`Successfully updated to v${latestVersion}!`));
87
+ console.log(`\n ${chalk.bold('Restart eco-code to run the new version:')}`);
88
+ console.log(` ${chalk.cyan.bold('eco-code')}\n`);
89
+ process.exit(0);
90
+ }
91
+ catch (err) {
92
+ installSpinner.fail(chalk.red(`Installation failed: ${err.message}`));
93
+ console.log(`\n You can run manually: ${chalk.cyan(`npm install -g ${packageName}@latest`)}\n`);
94
+ }
95
+ }
96
+ }
97
+ else {
98
+ spinner.succeed(chalk.green(`You are already on the latest version (v${currentVersion}).`));
99
+ }
100
+ }
101
+ catch (err) {
102
+ spinner.fail(`Failed to check for updates: ${err.message}`);
103
+ }
104
+ }
61
105
  //# sourceMappingURL=updater.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"updater.js","sourceRoot":"","sources":["../../src/services/updater.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAElC,MAAM,UAAU,cAAc,CAAC,MAAc,EAAE,OAAe;IAC5D,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7F,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;QAExD,IAAI,IAAI,GAAG,IAAI;YAAE,OAAO,IAAI,CAAC;QAC7B,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI;YAAE,OAAO,IAAI,CAAC;QAC9C,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,MAAM,GAAG,MAAM;YAAE,OAAO,IAAI,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IACV,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,cAAsB,EAAE,cAAsB,UAAU;IACjG,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,8BAA8B,WAAW,SAAS,EAAE;YAC9E,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC;QACxC,IAAI,CAAC,aAAa;YAAE,OAAO;QAE3B,IAAI,cAAc,CAAC,aAAa,EAAE,cAAc,CAAC,EAAE,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,cAAc,EAAE,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC;YAElJ,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC;gBACnC,OAAO,EAAE,mBAAmB,aAAa,+CAA+C;gBACxF,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC;YAEH,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,YAAY,EAAE,CAAC;gBAC9C,MAAM,OAAO,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,gCAAgC,aAAa,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;gBACzG,IAAI,CAAC;oBACH,MAAM,SAAS,CAAC,kBAAkB,WAAW,SAAS,CAAC,CAAC;oBACxD,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,4BAA4B,aAAa,GAAG,CAAC,CAAC,CAAC;oBAC3E,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,EAAE,CAAC,CAAC;oBACpF,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;oBAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,uBAAuB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;oBAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yDAAyD,WAAW,IAAI,CAAC,CAAC,CAAC;gBACnG,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,wEAAwE;IAC1E,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"updater.js","sourceRoot":"","sources":["../../src/services/updater.ts"],"names":[],"mappings":"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"}
package/dist/ui/banner.js CHANGED
@@ -17,18 +17,23 @@ export function printBanner(version = '1.0.0', modelStr, cwdStr) {
17
17
  }
18
18
  export function printHelp() {
19
19
  console.log(`
20
- ${chalk.bold('Interactive Slash Commands:')}
20
+ ${chalk.bold('Interactive Slash Commands & Shortcuts:')}
21
+ ${chalk.cyan('/plan')} - 📝 Toggle between Plan Mode (read-only) and Auto Mode
21
22
  ${chalk.cyan('/models')} (or ${chalk.cyan('/model')}) - Browse & switch between active OpenRouter free models
22
23
  ${chalk.cyan('/refresh')} - Force fetch the latest free models from OpenRouter
23
24
  ${chalk.cyan('/compact')} - Compact conversation history to save tokens
24
- ${chalk.cyan('/resume')} - Resume previous session history
25
+ ${chalk.cyan('/resume')} - Select and restore previous session context
26
+ ${chalk.cyan('/undo')} - 🗑️ Discard all uncommitted code changes
27
+ ${chalk.cyan('/rewind')} - ⏪ Undo the last Git commit (git reset HEAD~1)
25
28
  ${chalk.cyan('/taste')} - View or add project coding style rules
26
29
  ${chalk.cyan('/key')} - Update your OpenRouter API Key
27
30
  ${chalk.cyan('/clear')} - Clear current conversation & reset context
28
- ${chalk.cyan('/help')} - Show this help menu
31
+ ${chalk.cyan('/update')} - 🔄 Check for and install CLI updates
32
+ ${chalk.cyan('/help')} (or ${chalk.cyan('?')}) - Show this help menu
29
33
  ${chalk.cyan('/exit')} - Exit the agent
30
34
 
31
35
  ${chalk.bold('Shortcuts & Direct Execution:')}
36
+ ${chalk.cyan('/')} - Open live autocomplete command search
32
37
  ${chalk.cyan('!<cmd>')} - Run terminal command directly (e.g. ${chalk.dim('!npm test')}, ${chalk.dim('!git status')})
33
38
  `);
34
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/ui/banner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,UAAU,WAAW,CAAC,UAAkB,OAAO,EAAE,QAAiB,EAAE,MAAe;IACvF,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,IAAI,oBAAoB,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAElD,MAAM,MAAM,GAAG;IACb,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI;IACjC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,OAAO;IAC1C,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI;IAChC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,MAAM;IACxC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;;IAEnB,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC;CAC/B,CAAC;IACA,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,CAAC,GAAG,CAAC;EACZ,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC;IACvC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;IACjD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;IACtB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;IACtB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;IACrB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;IACpB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;IACpB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;IACnB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;;EAErB,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC;IACzC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,uDAAuD,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC;CACjI,CAAC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/ui/banner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,UAAU,WAAW,CAAC,UAAkB,OAAO,EAAE,QAAiB,EAAE,MAAe;IACvF,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,IAAI,oBAAoB,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAElD,MAAM,MAAM,GAAG;IACb,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI;IACjC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,OAAO;IAC1C,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI;IAChC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,MAAM;IACxC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;;IAEnB,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC;CAC/B,CAAC;IACA,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,CAAC,GAAG,CAAC;EACZ,KAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC;IACnD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;IACnB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;IACjD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;IACtB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;IACtB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;IACrB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;IACnB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;IACrB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;IACpB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;IACpB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;IACrB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;IAC1C,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;;EAErB,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC;IACzC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,uDAAuD,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC;CACjI,CAAC,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dastageer_44/eco-code",
3
- "version": "1.1.2",
3
+ "version": "1.2.0",
4
4
  "description": "Free, open-source CLI coding agent powered by OpenRouter free tier models with taste-adaptation harness.",
5
5
  "type": "module",
6
6
  "bin": {