myshell-tools 2.6.0 → 2.8.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/CHANGELOG.md CHANGED
@@ -11,6 +11,28 @@ and the project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.
11
11
  - Cross-OS CI execution (requires a public remote).
12
12
  - First npm publish.
13
13
 
14
+ ## [2.8.0]
15
+
16
+ ### Added
17
+ - **opencode offered in first-run setup**: the welcome wizard now prompts `Add opencode? (optional — free models + more providers) (y/N)` after the claude/codex install offers, defaulting to NO. Answering `y` installs `opencode-ai` and re-detects the environment (via the injected seam, so tests stay hermetic). No opencode sign-in prompt is shown — opencode is authenticated-when-installed.
18
+
19
+ ### Changed
20
+ - **Wizard uses consistent (y/n) prompts**: all yes/no prompts in `runWelcome` now follow a single convention — `(Y/n)` when Enter means yes (install offers, sign-in offers) and `(y/N)` when Enter means no (set-as-default). A new exported pure helper `parseYesNo(input, defaultYes)` handles the parsing; it never throws and is fully unit-tested.
21
+
22
+ ## [2.7.1]
23
+
24
+ ### Fixed
25
+ - **opencode is now connectable directly from the control panel** — the Auth section always offers `[o] Login opencode` (alongside `[j] Login Claude` and `[k] Login Codex`); when opencode isn't installed yet the entry reads `[o] Login opencode (installs it first)` and the handler installs `opencode-ai` (with consent) before running `opencode auth login`. Previously the entry only appeared after opencode was already installed, leaving no in-app path to add it.
26
+
27
+ ## [2.7.0]
28
+
29
+ ### Added
30
+ - **opencode sign-in / subscription UX**: the Auth section of the control panel now shows `[o] Login / add subscription (opencode)` when the opencode CLI is installed. Selecting it launches `opencode auth login` so the user can pick a provider and authentication method (Anthropic, OpenAI, opencode-zen, etc.). Free opencode models still require no login at all; myshell-tools never handles the underlying credentials.
31
+
32
+ ### Fixed
33
+ - **Claude headless sign-in now actually works** (`login claude --code`, auto-selected in containers/SSH): `claude setup-token` only prints a long-lived OAuth token (`sk-ant-oat…`) — it does not apply it. myshell-tools now prompts the user to paste that token, stores it in `~/.myshell-tools/credentials.json` (mode 0600), and injects `CLAUDE_CODE_OAUTH_TOKEN` into the process environment at startup so `claude auth status` reports signed-in and `claude -p` works. Users no longer need to set environment variables manually. Note: this token must be stored as `CLAUDE_CODE_OAUTH_TOKEN`, **not** as `ANTHROPIC_API_KEY` (which causes an "invalid api key" error). Implemented in `src/infra/credentials.ts`, `src/commands/login.ts`, and startup injection in `src/cli.ts`.
34
+ - **Stale provider status after first-run onboarding**: the control panel now re-detects provider auth state after the onboarding sign-in step completes, so a provider you just authenticated (e.g. Codex via device code) immediately shows "ready" in the header instead of the stale "not signed in" state from before login.
35
+
14
36
  ## [2.6.0]
15
37
 
16
38
  ### Added
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  `myshell-tools` routes each task to the *cheapest* model likely to succeed, runs it on your real codebase, optionally has a **different vendor** review the result, and shows you exactly what it did and what it truly cost — with **no fabricated data, ever**.
6
6
 
7
- > **Status: `2.6.0` — honest, tested, and real.** Claude, Codex, and opencode (experimental) all work, and provider auth is detected for real.
7
+ > **Status: `2.7.1` — honest, tested, and real.** Claude, Codex, and opencode (experimental) all work, and provider auth is detected for real.
8
8
 
9
9
  ---
10
10
 
@@ -45,8 +45,8 @@ Using one frontier model for everything is wasteful (renaming a variable doesn't
45
45
  - `quality-first` — always reviews IC output for high/critical tasks, regardless of cost.
46
46
  - **Cross‑vendor adversarial review** — a *different vendor* checks the first model's output (Codex reviewing Claude, or vice‑versa). Different families, different blind spots. Review gating depends on mode; see Efficiency modes above.
47
47
  - **Multi-turn context continuity** — follow-up messages carry real context. Prior conversation turns are compacted into a bounded history block (~6 k chars, most recent 12 turns) and replayed to the model, so it actually knows what was said earlier. Confidence envelopes are stripped before replay to save tokens.
48
- - **Container / SSH sign-in** — `myshell-tools login` auto-detects headless and cloud-IDE environments (Replit, Codespaces, Gitpod, SSH sessions) and switches to a no-localhost sign-in flow automatically. Force either flow with `--code` or `--browser`.
49
- - **opencode provider (experimental)** — auto-detected; works instantly with free hosted models (no keys). Add premium providers through opencode's own `auth login`. Route to it explicitly or let the policy fall back to it automatically.
48
+ - **Container / SSH sign-in** — `myshell-tools login` auto-detects headless and cloud-IDE environments (Replit, Codespaces, Gitpod, SSH sessions) and switches to a no-localhost sign-in flow automatically. Force either flow with `--code` or `--browser`. For Claude, the tool prompts you to paste the `sk-ant-oat…` OAuth token printed by `claude setup-token`, stores it locally (mode 0600), and injects it at startup — no manual env-var wiring needed. For Codex, a device-code flow is used.
49
+ - **opencode provider (experimental)** — auto-detected; works instantly with free hosted models (no keys). `[o]` is always visible in the Auth section: it installs `opencode-ai` (with consent) if missing, then runs `opencode auth login`. Route to it explicitly or let the policy fall back to it automatically.
50
50
  - **Routing prefers advertised models** — detection passes each provider's actual model list to `route()`, which picks the cheapest model the CLI *actually has*, not just the cheapest in the pricing table. Falls back gracefully if the advertised list doesn't match any pricing entry.
51
51
  - **Subscription, not metering** — it drives the **Claude Code**, **Codex**, and **opencode** CLIs you already use. No API keys, no per‑token bill for the free path.
52
52
  - **Honest by construction** — every number on screen traces to a real measurement. A suite of *architecture tests* makes fabricated/mock output literally unmergeable.
@@ -57,9 +57,9 @@ Using one frontier model for everything is wasteful (renaming a variable doesn't
57
57
 
58
58
  - **Node.js ≥ 20** for the compiled CLI (`dist/`). **Node ≥ 22** is required to run the test suite (see Development below).
59
59
  - At least one provider CLI. `npx myshell-tools` will **offer to install** them for you on first run — or you can install manually:
60
- - **Claude Code** — `npm install -g @anthropic-ai/claude-code`, then sign in when prompted.
61
- - **Codex** — `npm install -g @openai/codex`, then `codex login`.
62
- - **opencode** *(experimental, optional)* — auto-detected when the `opencode` CLI is installed. Works immediately with free hosted models (no keys). Premium providers (Gemini, Claude, GPT, local models, etc.) are available through opencode's own `auth login` — myshell-tools never handles the keys. Appears in the control-panel header and session picker only when installed.
60
+ - **Claude Code** — `npm install -g @anthropic-ai/claude-code`, then sign in when prompted. In containers or over SSH, run `myshell-tools login claude --code`: complete the link shown, then paste the `sk-ant-oat…` OAuth token when the tool prompts you. The token is stored in `~/.myshell-tools/credentials.json` (mode 0600) and injected automatically at startup — do **not** set it as `ANTHROPIC_API_KEY`.
61
+ - **Codex** — `npm install -g @openai/codex`. In containers or over SSH, run `myshell-tools login codex --code` for a device-code flow (no localhost callback needed).
62
+ - **opencode** *(experimental, optional)* — auto-detected when the `opencode` CLI is installed. Works immediately with free hosted models (no keys). `[o]` is **always available** in the control-panel Auth section: if opencode is not yet installed, selecting it asks for consent and runs `npm install -g opencode-ai`, then runs `opencode auth login` to add a premium provider or subscription — myshell-tools never handles the credentials. Appears in the control-panel header and raw-session picker only when installed.
63
63
 
64
64
  You need **one** to start; install **both** claude and codex to unlock cross‑vendor review.
65
65
 
package/dist/cli.js CHANGED
@@ -24,6 +24,7 @@ import { runInstall } from './commands/install.js';
24
24
  import { banner } from './ui/banner.js';
25
25
  import { createSpinner } from './ui/spinner.js';
26
26
  import { dim } from './ui/theme.js';
27
+ import { applyStoredCredentials } from './infra/credentials.js';
27
28
  const require = createRequire(import.meta.url);
28
29
  const pkg = require('../package.json');
29
30
  const version = pkg.version;
@@ -99,6 +100,10 @@ function welcome(deps, color) {
99
100
  '(diagnose: myshell-tools doctor)', color);
100
101
  }
101
102
  async function main() {
103
+ // Inject any previously-saved Claude OAuth token into process.env before any
104
+ // detection or provider spawn so `claude auth status` and `claude -p …` both
105
+ // see it without the user needing to export CLAUDE_CODE_OAUTH_TOKEN manually.
106
+ await applyStoredCredentials(process.env);
102
107
  const args = process.argv.slice(2);
103
108
  if (args.includes('--help') || args.includes('-h')) {
104
109
  process.stdout.write(HELP);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -13,15 +13,18 @@
13
13
  * - 'code': a no-localhost flow that works anywhere.
14
14
  * · claude → `claude setup-token`: prints a link; the user signs in at
15
15
  * claude.ai, copies the authorization code, and pastes it back here.
16
+ * After the command exits, we prompt the user to paste the minted token
17
+ * (sk-ant-oat…), persist it, and inject it into process.env so that
18
+ * subsequent `claude auth status` and `claude -p …` calls see it.
16
19
  * · codex → `codex login --device-auth`: prints a URL + one-time code;
17
20
  * the user authorizes their ChatGPT account on any device.
18
21
  *
19
22
  * When no method is forced, we auto-detect: headless/remote environments default
20
23
  * to 'code' (so the localhost trap is avoided), everything else to 'browser'.
21
24
  *
22
- * Security: myshell-tools never sees, handles, or stores raw credentials. Each
23
- * CLI manages its own tokens; we only trigger its login. (This is what keeps the
24
- * "use your subscription, no API keys" model honest.)
25
+ * Security: myshell-tools never stores raw API keys or passwords. The Claude
26
+ * OAuth token (sk-ant-oat…) is captured only after the user explicitly pastes
27
+ * it and is stored in ~/.myshell-tools/credentials.json (mode 0o600).
25
28
  */
26
29
  import type { OutputSink } from '../interface/render.js';
27
30
  import type { ProviderId } from '../providers/port.js';
@@ -51,9 +54,13 @@ export declare function resolveLoginMethod(explicit: LoginMethod | undefined, en
51
54
  * when no argument is given). Returns 0 on success, 1 only for an invalid
52
55
  * argument — individual sign-in failures are reported but do not fail the command.
53
56
  *
54
- * @param opts.method - Force 'browser' or 'code'. When omitted, the method is
57
+ * @param opts.method - Force 'browser' or 'code'. When omitted, the method is
55
58
  * auto-detected from the environment via {@link resolveLoginMethod}.
59
+ * @param opts.readLine - Injected line-reader for the token-paste prompt (used
60
+ * by the menu so it shares the single readline interface). When absent, a
61
+ * temporary readline interface is created and immediately closed after one line.
56
62
  */
57
63
  export declare function runLogin(out: OutputSink, providerArg?: string, opts?: {
58
64
  method?: LoginMethod;
65
+ readLine?: () => Promise<string | null>;
59
66
  }): Promise<number>;
@@ -13,27 +13,31 @@
13
13
  * - 'code': a no-localhost flow that works anywhere.
14
14
  * · claude → `claude setup-token`: prints a link; the user signs in at
15
15
  * claude.ai, copies the authorization code, and pastes it back here.
16
+ * After the command exits, we prompt the user to paste the minted token
17
+ * (sk-ant-oat…), persist it, and inject it into process.env so that
18
+ * subsequent `claude auth status` and `claude -p …` calls see it.
16
19
  * · codex → `codex login --device-auth`: prints a URL + one-time code;
17
20
  * the user authorizes their ChatGPT account on any device.
18
21
  *
19
22
  * When no method is forced, we auto-detect: headless/remote environments default
20
23
  * to 'code' (so the localhost trap is avoided), everything else to 'browser'.
21
24
  *
22
- * Security: myshell-tools never sees, handles, or stores raw credentials. Each
23
- * CLI manages its own tokens; we only trigger its login. (This is what keeps the
24
- * "use your subscription, no API keys" model honest.)
25
+ * Security: myshell-tools never stores raw API keys or passwords. The Claude
26
+ * OAuth token (sk-ant-oat…) is captured only after the user explicitly pastes
27
+ * it and is stored in ~/.myshell-tools/credentials.json (mode 0o600).
25
28
  */
29
+ import readline from 'node:readline';
26
30
  import { execa } from 'execa';
27
31
  import { detectProvider, getInstallCommand } from '../providers/detect.js';
28
32
  import { bold, dim, green, red } from '../ui/theme.js';
33
+ import { extractClaudeToken, saveClaudeToken } from '../infra/credentials.js';
29
34
  /** Each provider's default (browser/localhost) sign-in command. */
30
35
  const LOGIN_COMMAND = {
31
36
  claude: { bin: 'claude', args: ['auth', 'login'] },
32
37
  codex: { bin: 'codex', args: ['login'] },
33
- // opencode ships free models — no credentials required. `opencode auth login -p <provider>`
34
- // is only needed for premium providers. We default to no-op by pointing at `auth list`
35
- // so the user sees configured credentials without being forced through a login flow.
36
- opencode: { bin: 'opencode', args: ['auth', 'list'] },
38
+ // opencode ships free models — no credentials required. `opencode auth login` adds
39
+ // a premium provider/subscription (e.g. anthropic, openai, or opencode-zen).
40
+ opencode: { bin: 'opencode', args: ['auth', 'login'] },
37
41
  };
38
42
  /**
39
43
  * Each provider's no-localhost ("code") sign-in command, plus the human steps
@@ -58,11 +62,11 @@ const LOGIN_CODE_COMMAND = {
58
62
  },
59
63
  opencode: {
60
64
  bin: 'opencode',
61
- args: ['auth', 'list'],
62
- guidance: 'opencode ships free models with no credentials required.\n' +
63
- ' To add a premium provider, run:\n' +
64
- ' opencode auth login -p <provider> -m <method>\n' +
65
- ' e.g. opencode auth login -p anthropic -m apikey',
65
+ args: ['auth', 'login'],
66
+ guidance: 'Free models need no login.\n' +
67
+ ' This starts `opencode auth login` to add a premium provider or subscription\n' +
68
+ ' (e.g. anthropic, openai, or opencode-zen).\n' +
69
+ ' myshell-tools never sees the credentials opencode manages them.',
66
70
  },
67
71
  };
68
72
  export function isProviderId(value) {
@@ -111,8 +115,11 @@ export function resolveLoginMethod(explicit, env, platform) {
111
115
  * when no argument is given). Returns 0 on success, 1 only for an invalid
112
116
  * argument — individual sign-in failures are reported but do not fail the command.
113
117
  *
114
- * @param opts.method - Force 'browser' or 'code'. When omitted, the method is
118
+ * @param opts.method - Force 'browser' or 'code'. When omitted, the method is
115
119
  * auto-detected from the environment via {@link resolveLoginMethod}.
120
+ * @param opts.readLine - Injected line-reader for the token-paste prompt (used
121
+ * by the menu so it shares the single readline interface). When absent, a
122
+ * temporary readline interface is created and immediately closed after one line.
116
123
  */
117
124
  export async function runLogin(out, providerArg, opts) {
118
125
  let targets;
@@ -149,6 +156,15 @@ export async function runLogin(out, providerArg, opts) {
149
156
  }
150
157
  if (result.exitCode === 0) {
151
158
  out.write(green(`✓ ${id} sign-in complete.\n`, out.color));
159
+ // --- Claude code-method token capture -----------------------------------
160
+ // `claude setup-token` mints a long-lived token (sk-ant-oat01-…) and PRINTS
161
+ // it to the terminal but does NOT persist it. After the command exits we
162
+ // prompt the user to paste the token so we can store it and inject it into
163
+ // process.env — making `claude auth status` report loggedIn:true and making
164
+ // every subsequent `claude -p …` spawn work without manual env-var setup.
165
+ if (id === 'claude' && method === 'code') {
166
+ await captureClaudeToken(out, opts?.readLine);
167
+ }
152
168
  }
153
169
  else {
154
170
  out.write(red(`✗ ${id} sign-in did not complete (exit ${result.exitCode ?? 'unknown'}).\n`, out.color));
@@ -162,4 +178,76 @@ export async function runLogin(out, providerArg, opts) {
162
178
  }
163
179
  return 0;
164
180
  }
181
+ // ---------------------------------------------------------------------------
182
+ // Token capture helper (internal — exported for tests via credentials.ts)
183
+ // ---------------------------------------------------------------------------
184
+ /**
185
+ * Prompt the user to paste the token shown by `claude setup-token`, extract
186
+ * it, persist it, and inject it into `process.env.CLAUDE_CODE_OAUTH_TOKEN`.
187
+ *
188
+ * Uses the injected `readLine` when provided (menu shares its single readline
189
+ * interface). Otherwise creates a temporary readline interface, reads ONE line,
190
+ * and immediately closes it (so stdin is not held open).
191
+ *
192
+ * Never throws — a blank or invalid paste is reported as a dim advisory note.
193
+ */
194
+ async function captureClaudeToken(out, readLine) {
195
+ out.write('\nPaste the token shown above (starts with sk-ant-oat) and press Enter' +
196
+ ' — or leave blank to skip:\n> ');
197
+ let pasted;
198
+ if (readLine !== undefined) {
199
+ // Menu injected its own reader — use it directly, do NOT create a second
200
+ // readline interface (that would double-consume stdin).
201
+ pasted = await readLine();
202
+ }
203
+ else {
204
+ // CLI direct path — create a temporary readline, read one line, close.
205
+ pasted = await readOneLineFromStdin();
206
+ }
207
+ const token = extractClaudeToken(pasted ?? '');
208
+ if (token !== null) {
209
+ try {
210
+ await saveClaudeToken(token);
211
+ process.env['CLAUDE_CODE_OAUTH_TOKEN'] = token;
212
+ out.write(green('✓ Claude token saved — claude is now ready.\n', out.color));
213
+ }
214
+ catch {
215
+ out.write(dim('Could not save token to disk — you can re-run `myshell-tools login claude --code` later.\n', out.color));
216
+ }
217
+ }
218
+ else {
219
+ out.write(dim('Token not captured. Re-run `myshell-tools login claude --code` and paste the\n' +
220
+ 'sk-ant-oat… value (NOT an Anthropic API key starting with sk-ant-api).\n', out.color));
221
+ }
222
+ }
223
+ /**
224
+ * Create a temporary readline interface on process.stdin, read exactly one
225
+ * line, and close the interface. Returns the trimmed line or null on EOF.
226
+ *
227
+ * This is used only from the `myshell-tools login` direct CLI path where no
228
+ * shared readline interface exists.
229
+ */
230
+ function readOneLineFromStdin() {
231
+ return new Promise((resolve) => {
232
+ const rl = readline.createInterface({
233
+ input: process.stdin,
234
+ output: process.stdout,
235
+ terminal: false,
236
+ });
237
+ let resolved = false;
238
+ rl.once('line', (raw) => {
239
+ resolved = true;
240
+ rl.close();
241
+ resolve(raw.trim());
242
+ });
243
+ rl.once('close', () => {
244
+ if (!resolved) {
245
+ resolved = true;
246
+ resolve(null);
247
+ }
248
+ });
249
+ });
250
+ }
251
+ // Re-export extractClaudeToken so test/unit/credentials.test.ts can import it
252
+ // directly from credentials.ts (where it is defined). No re-export needed here.
165
253
  //# sourceMappingURL=login.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * src/infra/credentials.ts — Persisted credential store for myshell-tools.
3
+ *
4
+ * Stores a small JSON file at <homeDir>/.myshell-tools/credentials.json with
5
+ * shape `{ claudeOauthToken?: string }` so the Claude OAuth token captured
6
+ * during `myshell-tools login claude --code` is available across restarts.
7
+ *
8
+ * On startup, `applyStoredCredentials` injects the token into `process.env` so
9
+ * that both the provider detection (`claude auth status`) and the spawned
10
+ * `claude -p …` child process see it via the inherited environment.
11
+ *
12
+ * Security: the file is written with mode 0o600 (owner-read-only) on POSIX
13
+ * systems. The chmod is best-effort — a failure is silently ignored so the
14
+ * function never throws on Windows or unusual filesystems.
15
+ */
16
+ export interface Credentials {
17
+ claudeOauthToken?: string;
18
+ }
19
+ /**
20
+ * Load stored credentials. Never throws — missing or corrupt files return `{}`.
21
+ */
22
+ export declare function loadCredentials(homeDir?: string): Promise<Credentials>;
23
+ /**
24
+ * Persist the Claude OAuth token atomically to
25
+ * `~/.myshell-tools/credentials.json` with restrictive permissions (0o600).
26
+ */
27
+ export declare function saveClaudeToken(token: string, homeDir?: string): Promise<void>;
28
+ /**
29
+ * Remove the stored Claude OAuth token. Writes the file back without the
30
+ * token key so any future credential fields are preserved.
31
+ * Never throws.
32
+ */
33
+ export declare function clearClaudeToken(homeDir?: string): Promise<void>;
34
+ /**
35
+ * Inject a previously-saved Claude OAuth token into `env` if:
36
+ * 1. A token is stored in `~/.myshell-tools/credentials.json`, AND
37
+ * 2. `env.CLAUDE_CODE_OAUTH_TOKEN` is not already set (user's explicit env wins).
38
+ *
39
+ * Called once at the very top of `main()` so every code path — detection,
40
+ * spawned `claude -p …`, and the menu — sees the token without the user
41
+ * needing to export it manually.
42
+ *
43
+ * Never throws.
44
+ */
45
+ export declare function applyStoredCredentials(env: NodeJS.ProcessEnv, homeDir?: string): Promise<void>;
46
+ /**
47
+ * Extract the first Claude long-lived OAuth token from `text`.
48
+ *
49
+ * Token format: `sk-ant-oat` followed by optional digits/lowercase-letters,
50
+ * then a dash, then one or more Base64url characters (`[A-Za-z0-9_-]+`).
51
+ *
52
+ * Returns `null` when no token is found. Never throws.
53
+ *
54
+ * @example
55
+ * extractClaudeToken('Token: sk-ant-oat01-abc-XYZ123') // → 'sk-ant-oat01-abc-XYZ123'
56
+ * extractClaudeToken('no token here') // → null
57
+ */
58
+ export declare function extractClaudeToken(text: string): string | null;
@@ -0,0 +1,172 @@
1
+ /**
2
+ * src/infra/credentials.ts — Persisted credential store for myshell-tools.
3
+ *
4
+ * Stores a small JSON file at <homeDir>/.myshell-tools/credentials.json with
5
+ * shape `{ claudeOauthToken?: string }` so the Claude OAuth token captured
6
+ * during `myshell-tools login claude --code` is available across restarts.
7
+ *
8
+ * On startup, `applyStoredCredentials` injects the token into `process.env` so
9
+ * that both the provider detection (`claude auth status`) and the spawned
10
+ * `claude -p …` child process see it via the inherited environment.
11
+ *
12
+ * Security: the file is written with mode 0o600 (owner-read-only) on POSIX
13
+ * systems. The chmod is best-effort — a failure is silently ignored so the
14
+ * function never throws on Windows or unusual filesystems.
15
+ */
16
+ import { mkdir, readFile, chmod } from 'node:fs/promises';
17
+ import { homedir } from 'node:os';
18
+ import { join } from 'node:path';
19
+ import { atomicWrite } from './atomic.js';
20
+ // ---------------------------------------------------------------------------
21
+ // Path helpers (pure)
22
+ // ---------------------------------------------------------------------------
23
+ function getCredentialsDir(home) {
24
+ return join(home, '.myshell-tools');
25
+ }
26
+ function getCredentialsPath(home) {
27
+ return join(getCredentialsDir(home), 'credentials.json');
28
+ }
29
+ // ---------------------------------------------------------------------------
30
+ // Internal parse helper
31
+ // ---------------------------------------------------------------------------
32
+ /**
33
+ * Parse credentials from raw JSON text. Returns `{}` on any error so callers
34
+ * never need to handle thrown exceptions from the load path.
35
+ */
36
+ function parseCredentials(raw) {
37
+ try {
38
+ const parsed = JSON.parse(raw);
39
+ if (typeof parsed !== 'object' || parsed === null) {
40
+ return {};
41
+ }
42
+ const obj = parsed;
43
+ const result = {};
44
+ if (typeof obj['claudeOauthToken'] === 'string' && obj['claudeOauthToken'].length > 0) {
45
+ result.claudeOauthToken = obj['claudeOauthToken'];
46
+ }
47
+ return result;
48
+ }
49
+ catch {
50
+ return {};
51
+ }
52
+ }
53
+ // ---------------------------------------------------------------------------
54
+ // Public API
55
+ // ---------------------------------------------------------------------------
56
+ /**
57
+ * Load stored credentials. Never throws — missing or corrupt files return `{}`.
58
+ */
59
+ export async function loadCredentials(homeDir) {
60
+ const home = homeDir ?? homedir();
61
+ try {
62
+ const raw = await readFile(getCredentialsPath(home), 'utf8');
63
+ return parseCredentials(raw);
64
+ }
65
+ catch {
66
+ return {};
67
+ }
68
+ }
69
+ /**
70
+ * Persist the Claude OAuth token atomically to
71
+ * `~/.myshell-tools/credentials.json` with restrictive permissions (0o600).
72
+ */
73
+ export async function saveClaudeToken(token, homeDir) {
74
+ const home = homeDir ?? homedir();
75
+ const dir = getCredentialsDir(home);
76
+ const path = getCredentialsPath(home);
77
+ await mkdir(dir, { recursive: true });
78
+ // Load existing credentials so we only replace the token key, preserving others.
79
+ const existing = await loadCredentials(homeDir);
80
+ const updated = { ...existing, claudeOauthToken: token };
81
+ // atomicWrite uses rename — ensures no partial writes on crash.
82
+ await atomicWrite(path, JSON.stringify(updated, null, 2));
83
+ // Best-effort: restrict to owner-read-only. Silently ignored on Windows or
84
+ // unusual filesystems where chmod is unavailable or unsupported.
85
+ try {
86
+ await chmod(path, 0o600);
87
+ }
88
+ catch {
89
+ // Cross-platform best-effort only — never throws
90
+ }
91
+ }
92
+ /**
93
+ * Remove the stored Claude OAuth token. Writes the file back without the
94
+ * token key so any future credential fields are preserved.
95
+ * Never throws.
96
+ */
97
+ export async function clearClaudeToken(homeDir) {
98
+ try {
99
+ const home = homeDir ?? homedir();
100
+ const dir = getCredentialsDir(home);
101
+ const path = getCredentialsPath(home);
102
+ await mkdir(dir, { recursive: true });
103
+ // Load the raw file to preserve unknown future keys.
104
+ let rawObj = {};
105
+ try {
106
+ const raw = await readFile(path, 'utf8');
107
+ const parsed = JSON.parse(raw);
108
+ if (typeof parsed === 'object' && parsed !== null) {
109
+ rawObj = parsed;
110
+ }
111
+ }
112
+ catch {
113
+ // Missing or corrupt file — start from empty
114
+ }
115
+ delete rawObj['claudeOauthToken'];
116
+ await atomicWrite(path, JSON.stringify(rawObj, null, 2));
117
+ }
118
+ catch {
119
+ // Never throws — clear is best-effort
120
+ }
121
+ }
122
+ /**
123
+ * Inject a previously-saved Claude OAuth token into `env` if:
124
+ * 1. A token is stored in `~/.myshell-tools/credentials.json`, AND
125
+ * 2. `env.CLAUDE_CODE_OAUTH_TOKEN` is not already set (user's explicit env wins).
126
+ *
127
+ * Called once at the very top of `main()` so every code path — detection,
128
+ * spawned `claude -p …`, and the menu — sees the token without the user
129
+ * needing to export it manually.
130
+ *
131
+ * Never throws.
132
+ */
133
+ export async function applyStoredCredentials(env, homeDir) {
134
+ try {
135
+ // Never overwrite an explicitly-set env var — user's env wins.
136
+ if (env['CLAUDE_CODE_OAUTH_TOKEN'] !== undefined) {
137
+ return;
138
+ }
139
+ const creds = await loadCredentials(homeDir);
140
+ if (creds.claudeOauthToken !== undefined) {
141
+ env['CLAUDE_CODE_OAUTH_TOKEN'] = creds.claudeOauthToken;
142
+ }
143
+ }
144
+ catch {
145
+ // Never throws — startup injection is best-effort
146
+ }
147
+ }
148
+ // ---------------------------------------------------------------------------
149
+ // Pure token extraction helper
150
+ // ---------------------------------------------------------------------------
151
+ /**
152
+ * Extract the first Claude long-lived OAuth token from `text`.
153
+ *
154
+ * Token format: `sk-ant-oat` followed by optional digits/lowercase-letters,
155
+ * then a dash, then one or more Base64url characters (`[A-Za-z0-9_-]+`).
156
+ *
157
+ * Returns `null` when no token is found. Never throws.
158
+ *
159
+ * @example
160
+ * extractClaudeToken('Token: sk-ant-oat01-abc-XYZ123') // → 'sk-ant-oat01-abc-XYZ123'
161
+ * extractClaudeToken('no token here') // → null
162
+ */
163
+ export function extractClaudeToken(text) {
164
+ try {
165
+ const match = text.match(/sk-ant-oat[0-9a-z]*-[A-Za-z0-9_-]+/);
166
+ return match !== null && match[0] !== undefined ? match[0] : null;
167
+ }
168
+ catch {
169
+ return null;
170
+ }
171
+ }
172
+ //# sourceMappingURL=credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/infra/credentials.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,7 @@ import type { SpendSummary } from '../infra/insights.js';
22
22
  import type { EnvironmentStatus } from '../providers/detect.js';
23
23
  import type { Provider, ProviderId, SandboxLevel } from '../providers/port.js';
24
24
  import type { OutputSink } from './render.js';
25
+ import type { LoginMethod } from '../commands/login.js';
25
26
  export interface MenuContext {
26
27
  readonly version: string;
27
28
  readonly clock: Clock;
@@ -51,9 +52,39 @@ export interface MenuContext {
51
52
  * Optional injected login function for testing. When provided, `startMenu`
52
53
  * uses this instead of the real `runLogin` from commands/login.ts, preventing
53
54
  * real `claude`/`codex login` subprocesses from spawning during tests.
55
+ *
56
+ * The third argument mirrors the `opts` parameter of `runLogin` so the menu
57
+ * can pass the shared `readLine` function for the token-paste prompt.
58
+ */
59
+ readonly login?: (out: OutputSink, providerArg?: string, opts?: {
60
+ method?: LoginMethod;
61
+ readLine?: () => Promise<string | null>;
62
+ }) => Promise<number>;
63
+ /**
64
+ * Optional injected detectEnvironment for testing. When provided, `startMenu`
65
+ * uses this instead of the real `detectEnvironment` from providers/detect.ts,
66
+ * preventing real `claude`/`codex`/`opencode --version` subprocesses from
67
+ * spawning during tests (e.g. after first-run onboarding or [j]/[k]/[o] login).
54
68
  */
55
- readonly login?: (out: OutputSink, providerArg?: string) => Promise<number>;
69
+ readonly detectEnvironment?: () => Promise<EnvironmentStatus>;
56
70
  }
71
+ /**
72
+ * Parse a yes/no answer from a raw input line, with a configurable default.
73
+ *
74
+ * Accepts (case-insensitive, trimmed):
75
+ * - `"y"` or `"yes"` → true
76
+ * - `"n"` or `"no"` → false
77
+ * - empty string or `null` (EOF) → `defaultYes`
78
+ * - anything else → `defaultYes` (lenient)
79
+ *
80
+ * Never throws. Callers should display `(Y/n)` when `defaultYes` is true and
81
+ * `(y/N)` when `defaultYes` is false so the user knows which choice Enter gives.
82
+ *
83
+ * @param input - The raw line from readLine(), or null on EOF.
84
+ * @param defaultYes - True if pressing Enter (or EOF) means yes.
85
+ * @returns True for yes, false for no.
86
+ */
87
+ export declare function parseYesNo(input: string | null, defaultYes: boolean): boolean;
57
88
  /**
58
89
  * Return the shell alias hint the user can add to their shell profile to make
59
90
  * `myshell-tools` the default command-line assistant.
@@ -33,6 +33,32 @@ import { box, separator, menu, prompt } from '../ui/tui.js';
33
33
  // ---------------------------------------------------------------------------
34
34
  // Pure helpers — exported for unit tests
35
35
  // ---------------------------------------------------------------------------
36
+ /**
37
+ * Parse a yes/no answer from a raw input line, with a configurable default.
38
+ *
39
+ * Accepts (case-insensitive, trimmed):
40
+ * - `"y"` or `"yes"` → true
41
+ * - `"n"` or `"no"` → false
42
+ * - empty string or `null` (EOF) → `defaultYes`
43
+ * - anything else → `defaultYes` (lenient)
44
+ *
45
+ * Never throws. Callers should display `(Y/n)` when `defaultYes` is true and
46
+ * `(y/N)` when `defaultYes` is false so the user knows which choice Enter gives.
47
+ *
48
+ * @param input - The raw line from readLine(), or null on EOF.
49
+ * @param defaultYes - True if pressing Enter (or EOF) means yes.
50
+ * @returns True for yes, false for no.
51
+ */
52
+ export function parseYesNo(input, defaultYes) {
53
+ if (input === null || input.trim().length === 0)
54
+ return defaultYes;
55
+ const lower = input.trim().toLowerCase();
56
+ if (lower === 'y' || lower === 'yes')
57
+ return true;
58
+ if (lower === 'n' || lower === 'no')
59
+ return false;
60
+ return defaultYes;
61
+ }
36
62
  /**
37
63
  * Return the shell alias hint the user can add to their shell profile to make
38
64
  * `myshell-tools` the default command-line assistant.
@@ -210,13 +236,14 @@ function createLineReader(rl) {
210
236
  // ---------------------------------------------------------------------------
211
237
  // Welcome screen (first run)
212
238
  // ---------------------------------------------------------------------------
213
- async function runWelcome(ctx, out, readLine, mutableConfig, installProviderFn, loginFn) {
239
+ async function runWelcome(ctx, out, readLine, mutableConfig, installProviderFn, loginFn, detectEnvironmentFn) {
214
240
  // Use the mutable env so re-detection after installs is visible downstream.
215
241
  let env = ctx.env;
216
242
  const headerLines = renderHeaderLines(env, ctx.version);
217
243
  out.write('\n' + box(`🧠 myshell-tools v${ctx.version} — Setup`, headerLines) + '\n\n');
218
- // ---- Offer to install any missing provider --------------------------------
219
- // Consent is required: we ask once per missing provider. Enter = yes, n = skip.
244
+ // ---- Offer to install any missing provider (claude / codex) --------------
245
+ // Consent is required: we ask once per missing provider.
246
+ // Display: (Y/n) — default YES, so Enter installs; explicit n skips.
220
247
  const providers = ['claude', 'codex'];
221
248
  let didInstallAny = false;
222
249
  for (const id of providers) {
@@ -224,12 +251,9 @@ async function runWelcome(ctx, out, readLine, mutableConfig, installProviderFn,
224
251
  if (ps.installed)
225
252
  continue;
226
253
  const pkg = id === 'claude' ? '@anthropic-ai/claude-code' : '@openai/codex';
227
- out.write(`Install ${id} (${pkg})? [Enter] yes · [n] no\n`);
228
- out.write('> ');
254
+ out.write(`Install ${id} (${pkg})? (Y/n) `);
229
255
  const ans = await readLine();
230
- // EOF or 'n'/'no' → skip; anything else (including '') → yes
231
- const skip = ans === null || ans.toLowerCase() === 'n' || ans.toLowerCase() === 'no';
232
- if (!skip) {
256
+ if (parseYesNo(ans, true)) {
233
257
  const ok = await installProviderFn(id, out);
234
258
  if (ok) {
235
259
  didInstallAny = true;
@@ -241,21 +265,36 @@ async function runWelcome(ctx, out, readLine, mutableConfig, installProviderFn,
241
265
  }
242
266
  // ---- Re-detect if anything was installed so sign-in offers are accurate --
243
267
  if (didInstallAny) {
244
- env = await detectEnvironment();
268
+ env = await detectEnvironmentFn();
269
+ }
270
+ // ---- Offer opencode (optional, free models + more providers) -------------
271
+ // opencode defaults to NO — it is optional and users may prefer claude/codex only.
272
+ if (!env.opencode.installed) {
273
+ out.write('Add opencode? (optional — free models + more providers) (y/N) ');
274
+ const ans = await readLine();
275
+ if (parseYesNo(ans, false)) {
276
+ const ok = await installProviderFn('opencode', out);
277
+ if (ok) {
278
+ // Re-detect so downstream sign-in logic sees the freshly installed opencode.
279
+ env = await detectEnvironmentFn();
280
+ }
281
+ }
282
+ // No nag on skip — opencode is always discoverable via [o] in the main menu.
245
283
  }
246
284
  // ---- Offer sign-in for installed-but-unauthenticated providers -----------
285
+ // opencode reports authenticated:true when installed (free models, no keys needed),
286
+ // so it is never double-prompted here.
247
287
  for (const id of providers) {
248
288
  const ps = env[id];
249
289
  if (!ps.installed || ps.authenticated)
250
290
  continue;
251
- out.write(`\nSign in to ${id} now? [Enter] yes · [n] no\n`);
252
- out.write('> ');
291
+ out.write(`\nSign in to ${id} now? (Y/n) `);
253
292
  const ans = await readLine();
254
- const skip = ans === null || ans.toLowerCase() === 'n' || ans.toLowerCase() === 'no';
255
- if (!skip) {
293
+ if (parseYesNo(ans, true)) {
256
294
  // loginFn auto-detects the right method (code in containers/SSH where the
257
295
  // localhost OAuth callback can't be reached, browser on a desktop).
258
- await loginFn(out, id);
296
+ // Pass readLine so the claude token-paste prompt shares the menu's reader.
297
+ await loginFn(out, id, { readLine });
259
298
  }
260
299
  }
261
300
  // ---- Mode / default-shell options ----------------------------------------
@@ -279,10 +318,10 @@ async function runWelcome(ctx, out, readLine, mutableConfig, installProviderFn,
279
318
  updated = await runModeSelect(updated, out, readLine);
280
319
  }
281
320
  // [Enter] or anything else → fall through to save & go
282
- out.write('Set myshell-tools as your default shell tool? (y/n) ');
321
+ // Default is NO for set-as-default require explicit 'y' to enable.
322
+ out.write('Set myshell-tools as your default shell tool? (y/N) ');
283
323
  const defaultAns = await readLine();
284
- // EOF before answer → treat as "no"
285
- const setAsDefault = (defaultAns ?? '').toLowerCase() === 'y';
324
+ const setAsDefault = parseYesNo(defaultAns, false);
286
325
  const saved = {
287
326
  onboarded: true,
288
327
  setAsDefault,
@@ -676,6 +715,18 @@ async function renderMainScreen(ctx, mutableCtx, metas, out) {
676
715
  }
677
716
  }
678
717
  out.write('\n');
718
+ // Auth section — always include the opencode [o] entry so users can discover
719
+ // and connect opencode even before it is installed. Label parallels the other
720
+ // two providers; when opencode isn't installed yet, the handler offers to
721
+ // install it (with consent) before signing in.
722
+ const opencodeLabel = mutableCtx.env.opencode.installed
723
+ ? 'Login opencode'
724
+ : 'Login opencode (installs it first)';
725
+ const authEntries = [
726
+ { key: 'j', label: 'Login Claude', section: 'Auth' },
727
+ { key: 'k', label: 'Login Codex', section: 'Auth' },
728
+ { key: 'o', label: opencodeLabel, section: 'Auth' },
729
+ ];
679
730
  // Menu — sectioned via menu()
680
731
  out.write(menu([
681
732
  { key: 'c', label: 'Continue last conversation', section: 'Conversations' },
@@ -684,8 +735,7 @@ async function renderMainScreen(ctx, mutableCtx, metas, out) {
684
735
  { key: 'e', label: 'Manage conversations', section: 'Conversations' },
685
736
  { key: 'i', label: 'Import a conversation', section: 'Conversations' },
686
737
  { key: 'r', label: 'Open a raw provider session', section: 'Conversations' },
687
- { key: 'j', label: 'Login Claude', section: 'Auth' },
688
- { key: 'k', label: 'Login Codex', section: 'Auth' },
738
+ ...authEntries,
689
739
  { key: 's', label: 'Settings', section: 'Options' },
690
740
  { key: 'd', label: 'Doctor', section: 'Options' },
691
741
  { key: '$', label: 'Cost', section: 'Options' },
@@ -715,6 +765,7 @@ export async function startMenu(ctx, out) {
715
765
  // Resolve injected seams — use the real implementations when not provided.
716
766
  const installProviderFn = ctx.installProvider !== undefined ? ctx.installProvider : installProvider;
717
767
  const loginFn = ctx.login !== undefined ? ctx.login : runLogin;
768
+ const detectEnvironmentFn = ctx.detectEnvironment !== undefined ? ctx.detectEnvironment : detectEnvironment;
718
769
  // Build the readLine function — either injected (for tests) or backed by a
719
770
  // real readline interface driven by the event-driven LineReader queue.
720
771
  let readLine;
@@ -747,7 +798,10 @@ export async function startMenu(ctx, out) {
747
798
  try {
748
799
  // ---- A. First-run welcome -----------------------------------------------
749
800
  if (!mutableCtx.config.onboarded) {
750
- mutableCtx.config = await runWelcome(ctx, out, readLine, mutableCtx.config, installProviderFn, loginFn);
801
+ mutableCtx.config = await runWelcome(ctx, out, readLine, mutableCtx.config, installProviderFn, loginFn, detectEnvironmentFn);
802
+ // Re-detect after onboarding so the first main screen shows the REAL post-login
803
+ // status (e.g. codex now "ready" if the user signed in during setup).
804
+ mutableCtx.env = await detectEnvironmentFn();
751
805
  }
752
806
  // ---- B. Main screen loop -------------------------------------------------
753
807
  while (true) {
@@ -815,15 +869,43 @@ export async function startMenu(ctx, out) {
815
869
  // ---- [j] Login Claude ---------------------------------------------------
816
870
  // loginFn auto-detects the right sign-in method (code in containers/SSH,
817
871
  // browser on a desktop). Force either with `myshell-tools login claude --code|--browser`.
872
+ // Pass readLine so the token-paste prompt shares the menu's single reader
873
+ // (avoids creating a second readline interface that would double-consume stdin).
818
874
  if (key === 'j') {
819
- await loginFn(out, 'claude');
820
- mutableCtx.env = await detectEnvironment();
875
+ await loginFn(out, 'claude', { readLine });
876
+ mutableCtx.env = await detectEnvironmentFn();
821
877
  continue;
822
878
  }
823
879
  // ---- [k] Login Codex ----------------------------------------------------
824
880
  if (key === 'k') {
825
881
  await loginFn(out, 'codex');
826
- mutableCtx.env = await detectEnvironment();
882
+ mutableCtx.env = await detectEnvironmentFn();
883
+ continue;
884
+ }
885
+ // ---- [o] Connect / Login opencode ---------------------------------------
886
+ // Always handles the key. When opencode is not yet installed, asks for
887
+ // consent then installs it (using the injected installProviderFn seam so
888
+ // tests stay hermetic). If install succeeds, proceeds to sign in.
889
+ if (key === 'o') {
890
+ if (!mutableCtx.env.opencode.installed) {
891
+ out.write(`Install opencode (${installCommandFor('opencode').replace('npm install -g ', '')})? [Enter] yes · [n] no\n`);
892
+ out.write('> ');
893
+ const ans = await readLine();
894
+ const skip = ans === null || ans.toLowerCase() === 'n' || ans.toLowerCase() === 'no';
895
+ if (skip) {
896
+ out.write(`Skipped. You can install it later: ${installCommandFor('opencode')}\n`);
897
+ continue;
898
+ }
899
+ const ok = await installProviderFn('opencode', out);
900
+ mutableCtx.env = await detectEnvironmentFn();
901
+ if (!ok || !mutableCtx.env.opencode.installed) {
902
+ out.write(`Install failed. Run it yourself: ${installCommandFor('opencode')}\n`);
903
+ continue;
904
+ }
905
+ }
906
+ // opencode is (now) installed — proceed to sign in
907
+ await loginFn(out, 'opencode');
908
+ mutableCtx.env = await detectEnvironmentFn();
827
909
  continue;
828
910
  }
829
911
  // ---- [s] Settings -------------------------------------------------------
@@ -1 +1 @@
1
- {"version":3,"file":"menu.js","sourceRoot":"","sources":["../../src/interface/menu.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"menu.js","sourceRoot":"","sources":["../../src/interface/menu.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "myshell-tools",
3
- "version": "2.6.0",
3
+ "version": "2.8.0",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "myshell-tools": "dist/cli.js",