claude-code-infinite 1.0.26 → 1.0.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/README.md +44 -16
  2. package/dist/claude-auth.d.ts +9 -1
  3. package/dist/claude-auth.d.ts.map +1 -1
  4. package/dist/claude-auth.js +26 -4
  5. package/dist/claude-auth.js.map +1 -1
  6. package/dist/claude-env.d.ts +11 -4
  7. package/dist/claude-env.d.ts.map +1 -1
  8. package/dist/claude-env.js +11 -4
  9. package/dist/claude-env.js.map +1 -1
  10. package/dist/claude-locate.d.ts +18 -0
  11. package/dist/claude-locate.d.ts.map +1 -1
  12. package/dist/claude-locate.js +82 -3
  13. package/dist/claude-locate.js.map +1 -1
  14. package/dist/claude-plan-warning.d.ts +55 -0
  15. package/dist/claude-plan-warning.d.ts.map +1 -0
  16. package/dist/claude-plan-warning.js +95 -0
  17. package/dist/claude-plan-warning.js.map +1 -0
  18. package/dist/cli-args.d.ts +5 -0
  19. package/dist/cli-args.d.ts.map +1 -1
  20. package/dist/cli-args.js +9 -0
  21. package/dist/cli-args.js.map +1 -1
  22. package/dist/cli-lifecycle.d.ts +5 -0
  23. package/dist/cli-lifecycle.d.ts.map +1 -1
  24. package/dist/cli-lifecycle.js +13 -0
  25. package/dist/cli-lifecycle.js.map +1 -1
  26. package/dist/cli-main.js +170 -87
  27. package/dist/cli-main.js.map +1 -1
  28. package/dist/diagnostics-schema.d.ts +2 -0
  29. package/dist/diagnostics-schema.d.ts.map +1 -1
  30. package/dist/diagnostics-schema.js +13 -2
  31. package/dist/diagnostics-schema.js.map +1 -1
  32. package/dist/diagnostics.d.ts +8 -3
  33. package/dist/diagnostics.d.ts.map +1 -1
  34. package/dist/diagnostics.js +12 -3
  35. package/dist/diagnostics.js.map +1 -1
  36. package/dist/hooks.d.ts +8 -0
  37. package/dist/hooks.d.ts.map +1 -1
  38. package/dist/hooks.js +57 -25
  39. package/dist/hooks.js.map +1 -1
  40. package/dist/key-page.d.ts +17 -0
  41. package/dist/key-page.d.ts.map +1 -0
  42. package/dist/key-page.js +32 -0
  43. package/dist/key-page.js.map +1 -0
  44. package/dist/key-status.d.ts +79 -0
  45. package/dist/key-status.d.ts.map +1 -0
  46. package/dist/key-status.js +143 -0
  47. package/dist/key-status.js.map +1 -0
  48. package/dist/memtree.d.ts +23 -0
  49. package/dist/memtree.d.ts.map +1 -1
  50. package/dist/memtree.js +39 -3
  51. package/dist/memtree.js.map +1 -1
  52. package/dist/notices.d.ts +5 -0
  53. package/dist/notices.d.ts.map +1 -1
  54. package/dist/notices.js +13 -0
  55. package/dist/notices.js.map +1 -1
  56. package/dist/paused-session.d.ts +29 -0
  57. package/dist/paused-session.d.ts.map +1 -0
  58. package/dist/paused-session.js +148 -0
  59. package/dist/paused-session.js.map +1 -0
  60. package/dist/payment-gate.d.ts +44 -13
  61. package/dist/payment-gate.d.ts.map +1 -1
  62. package/dist/payment-gate.js +82 -23
  63. package/dist/payment-gate.js.map +1 -1
  64. package/dist/payment-link.d.ts +68 -0
  65. package/dist/payment-link.d.ts.map +1 -0
  66. package/dist/payment-link.js +123 -0
  67. package/dist/payment-link.js.map +1 -0
  68. package/dist/project-trees.d.ts +100 -0
  69. package/dist/project-trees.d.ts.map +1 -0
  70. package/dist/project-trees.js +196 -0
  71. package/dist/project-trees.js.map +1 -0
  72. package/dist/proxy.d.ts +13 -0
  73. package/dist/proxy.d.ts.map +1 -1
  74. package/dist/proxy.js +70 -8
  75. package/dist/proxy.js.map +1 -1
  76. package/dist/reqlog.d.ts +2 -0
  77. package/dist/reqlog.d.ts.map +1 -1
  78. package/dist/reqlog.js.map +1 -1
  79. package/package.json +1 -1
package/README.md CHANGED
@@ -4,7 +4,14 @@
4
4
 
5
5
  # Claude Code Infinite
6
6
 
7
- Memory for long-running agents. Claude Code Infinite indexes your Claude Code sessions with
7
+ <p align="center">
8
+ <a href="#long-session-benchmark"><img width="640" alt="Long-session benchmark, Claude Opus 5.5, graded blind: MemTree 69% at 39M tokens per run, full context 69% at 113M, /compact 49% at 17M" src="https://raw.githubusercontent.com/crizCraig/claude-code-infinite/main/docs/images/benchmark-chart.png"></a>
9
+ </p>
10
+ <p align="center"><sub>Long-session benchmark on a 775k-token Claude Code session (Claude Opus 5.5, graded blind):
11
+ MemTree matched full context at 69% with a third of the tokens; <code>/compact</code> scored 49%.
12
+ <a href="#long-session-benchmark">Full results</a></sub></p>
13
+
14
+ Infinite context for Claude Code: memory for long-running agents. Claude Code Infinite indexes your Claude Code sessions with
8
15
  [MemTree](https://memtree.dev) so their history can be easily searched, navigated, and understood,
9
16
  by you and by Claude, within a session and across all of them.
10
17
 
@@ -30,14 +37,7 @@ work: your priorities, the nuances of your projects, your company and your envir
30
37
  orchestrate dozens of subagents on your behalf.
31
38
 
32
39
  > [!IMPORTANT]
33
- > Requires a Claude Pro or Max subscription.
34
-
35
- <p align="center">
36
- <picture>
37
- <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/crizCraig/claude-code-infinite/main/docs/images/benchmark-dark.svg">
38
- <img width="600" alt="Long-session benchmark, judged score out of 100: Claude Code Infinite 69, full context 69, /compact 49" src="https://raw.githubusercontent.com/crizCraig/claude-code-infinite/main/docs/images/benchmark-light.svg">
39
- </picture>
40
- </p>
40
+ > Needs [Claude Code in your terminal](#setup), signed in with Claude Pro or Max.
41
41
 
42
42
  ## Search across sessions
43
43
 
@@ -82,25 +82,45 @@ tokens; `/compact`'s exclude the one-time `/compact` step. This is one task fami
82
82
 
83
83
  ## Requirements
84
84
 
85
+ * **[Claude Code in your terminal](https://code.claude.com/docs/en/quickstart), signed in
86
+ with Claude Pro or Max** ([don't have it yet?](#setup))
85
87
  * [node.js 20.3 or newer](https://nodejs.org/en/download/)
86
- * [Claude Code (the terminal version)](https://code.claude.com/docs/en/quickstart)
87
- * **A Claude Pro or Max subscription**
88
88
 
89
- <sub>Also works with an Anthropic API key, but that's far costlier than Pro or Max.</sub>
89
+ <sub>Also works with an Anthropic API key that has credit, but that's far costlier than Pro or Max.</sub>
90
90
 
91
91
  ## Setup
92
92
 
93
- 1. Install (Node ≥ 20.3; no git needed)
93
+ 1. Install Claude Code Infinite (Node ≥ 20.3; no git needed)
94
94
  ```bash
95
95
  npm install -g claude-code-infinite
96
96
  ```
97
- 2. Run Claude Code Infinite with
97
+ 2. Run it from your project folder
98
98
  ```bash
99
99
  ccc
100
100
  ```
101
101
 
102
102
  This will guide you through setting up your PolyChat key which you can also get [here](https://polychat.co/auth?memtree=true).
103
103
 
104
+ Needs [Claude Code in your terminal](https://code.claude.com/docs/en/quickstart), signed in with
105
+ Claude Pro or Max.
106
+
107
+ <details>
108
+ <summary>Don't have Claude Code yet?</summary>
109
+
110
+ ```powershell
111
+ # Windows PowerShell
112
+ irm https://claude.ai/install.ps1 | iex
113
+ ```
114
+ ```bash
115
+ # macOS / Linux
116
+ curl -fsSL https://claude.ai/install.sh | bash
117
+ ```
118
+
119
+ Then open a new terminal and run `claude` once to sign in. The Claude desktop app isn't enough:
120
+ `ccc` needs the `claude` command in your terminal ([help](#claude-code-isnt-installed)).
121
+
122
+ </details>
123
+
104
124
  ## Environments
105
125
 
106
126
  The tool supports multiple environments (this selects the MemTree compression API only — Anthropic traffic always goes directly from your machine to api.anthropic.com):
@@ -135,8 +155,9 @@ Environment variables, set when launching `ccc`:
135
155
  | --- | --- |
136
156
  | `CCC_COMPACT_TARGET=500k` | Compaction target for every session (useful for headless `-p` runs); `off` starts every session with compaction off. |
137
157
  | `CCC_MEMTREE_MCP=0` | Turns off the `memtree` MCP tools ([details](#memory-tools)), in interactive and headless (`-p`) runs. |
158
+ | `CCC_PROJECT_TREES=0` | Interactive sessions in a git repository with an `origin` remote start with a short list of your earlier MemTree sessions in that repository (model context only); this turns it off. |
138
159
  | `CCC_MEMTREE_LINK` | Where the MemTree link appears: `turn` (default, end of a turn with a new page), `message` (under every reply), `stop` (end of every turn), `success` (only after an optimized turn), or `off`. |
139
- | `CCC_AUTO_COMPACT=1` | Restores Claude Code's own auto-compaction setting ([details](#claude-code-auto-compaction)). |
160
+ | `CCC_AUTO_COMPACT=1` | Restores Claude Code's own auto-compaction and idle compaction settings ([details](#claude-code-auto-compaction)). |
140
161
  | `CCC_NO_UPDATE_CHECK=1` | Turns off the update check, and with it automatic updates ([details](#upgrading)). |
141
162
  | `CCC_DISABLE_AUTOUPDATE=1` | Keeps the update notice but never installs ([details](#automatic-updates)). |
142
163
  | `CCC_NO_DIAGNOSTICS=1` | Turns off diagnostics ([details](#diagnostics)). So do `DO_NOT_TRACK=1`, Claude Code's `DISABLE_TELEMETRY=1` or `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1`, and `"diagnostics": false` in `~/.claude-code-infinite/config.json`. |
@@ -148,6 +169,12 @@ kitty, VS Code, JetBrains, Windows Terminal); elsewhere you get the plain URL.
148
169
 
149
170
  `ccc` disables Claude Code's automatic conversation compaction for the Claude process it launches. MemTree manages the context sent to the model, so letting Claude Code independently summarize the full local transcript can compact a conversation MemTree already reduced. Manual `/compact` remains available.
150
171
 
172
+ That includes idle compaction (Claude Code 2.1.286 and later), which summarizes a
173
+ long conversation while you're away, just before the prompt cache expires
174
+ ("Compacted while idle, before the prompt cache expired"). The
175
+ `DISABLE_AUTO_COMPACT=1` that `ccc` sets turns it off too, so you don't need
176
+ `"idleCompaction": false` in your settings.
177
+
151
178
  Claude Code 2.1.219 also recommends “Resume from summary” for any old session
152
179
  above a fixed 100k-token threshold, even when the active model has a 1M window
153
180
  and auto-compaction is disabled. `ccc` suppresses that resume-time
@@ -168,7 +195,8 @@ On `ccc --resume <id>`, `ccc` backs the transcript up to
168
195
  recorded usage to half the window, so the next message is sent and MemTree
169
196
  compresses it.
170
197
 
171
- To restore Claude Code's native auto-compaction setting for one invocation, use:
198
+ To restore Claude Code's native auto-compaction and idle compaction settings for one
199
+ invocation, use:
172
200
 
173
201
  ```bash
174
202
  CCC_AUTO_COMPACT=1 ccc
@@ -29,6 +29,14 @@ export interface ClaudeAuthOptions {
29
29
  }
30
30
  /** The sign-in type from env and Claude Code's config, before any request. */
31
31
  export declare function claudeAuthFromConfig(opts?: ClaudeAuthOptions): ClaudeAuthType;
32
+ /**
33
+ * Whether a claude.ai login is on file, by key names only: `oauthAccount` in
34
+ * `~/.claude.json` without a Console key, or `claudeAiOauth` in
35
+ * `.credentials.json` (Linux and Windows), or a `claude setup-token` token in
36
+ * the environment. Unlike claudeAuthFromConfig it ignores env API keys, which
37
+ * Claude Code asks about before using.
38
+ */
39
+ export declare function claudeSubscriptionLogin(opts?: ClaudeAuthOptions): boolean;
32
40
  /**
33
41
  * The Claude.ai plan tier Claude Code recorded locally: `organizationType` and
34
42
  * `organizationRateLimitTier` in `~/.claude.json`, else `subscriptionType` in
@@ -40,7 +48,7 @@ export declare function claudePlanFromConfig(opts?: ClaudeAuthOptions): ClaudePl
40
48
  export declare function claudeAuthFromHeaders(headers: Record<string, string | string[] | undefined>): ClaudeAuthType | undefined;
41
49
  /** A known Anthropic error in a JSON error body, by code; undefined otherwise. */
42
50
  export declare function upstreamErrorCode(body: Buffer | string): UpstreamErrorCode | undefined;
43
- /** Printed once when Anthropic refused an API key for having no credit. */
51
+ /** Printed once when Anthropic refused an API key for having no credit: the no-plan advice. */
44
52
  export declare function creditNoticeText(color: boolean): string;
45
53
  /** "claude_max" + "default_claude_max_20x" → "max_20x"; "pro" → "pro". */
46
54
  export declare function planFrom(type: string | undefined, rateTier: string | undefined): ClaudePlan;
@@ -1 +1 @@
1
- {"version":3,"file":"claude-auth.d.ts","sourceRoot":"","sources":["../src/claude-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,eAAO,MAAM,iBAAiB,iFAEpB,CAAC;AACX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhE,2CAA2C;AAC3C,eAAO,MAAM,YAAY,uFAEf,CAAC;AACX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,4EAA4E;AAC5E,eAAO,MAAM,sBAAsB,2BAA2B,CAAC;AAC/D,MAAM,MAAM,iBAAiB,GAAG,OAAO,sBAAsB,CAAC;AAE9D,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CAC5C;AAED,8EAA8E;AAC9E,wBAAgB,oBAAoB,CAAC,IAAI,GAAE,iBAAsB,GAAG,cAAc,CAgBjF;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,GAAE,iBAAsB,GAAG,UAAU,CAW7E;AAED,wFAAwF;AACxF,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,GACrD,cAAc,GAAG,SAAS,CAQ5B;AAED,kFAAkF;AAClF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAWtF;AAED,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKvD;AAoCD,0EAA0E;AAC1E,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAQ3F"}
1
+ {"version":3,"file":"claude-auth.d.ts","sourceRoot":"","sources":["../src/claude-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,eAAO,MAAM,iBAAiB,iFAEpB,CAAC;AACX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhE,2CAA2C;AAC3C,eAAO,MAAM,YAAY,uFAEf,CAAC;AACX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,4EAA4E;AAC5E,eAAO,MAAM,sBAAsB,2BAA2B,CAAC;AAC/D,MAAM,MAAM,iBAAiB,GAAG,OAAO,sBAAsB,CAAC;AAE9D,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CAC5C;AAED,8EAA8E;AAC9E,wBAAgB,oBAAoB,CAAC,IAAI,GAAE,iBAAsB,GAAG,cAAc,CAkBjF;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAU7E;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,GAAE,iBAAsB,GAAG,UAAU,CAW7E;AAED,wFAAwF;AACxF,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,GACrD,cAAc,GAAG,SAAS,CAQ5B;AAED,kFAAkF;AAClF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAWtF;AAED,+FAA+F;AAC/F,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEvD;AAoCD,0EAA0E;AAC1E,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAQ3F"}
@@ -15,6 +15,7 @@
15
15
  import * as fs from "node:fs";
16
16
  import * as os from "node:os";
17
17
  import * as path from "node:path";
18
+ import { noPlanWarningText } from "./claude-plan-warning.js";
18
19
  export const CLAUDE_AUTH_TYPES = [
19
20
  "subscription", "api_key", "bedrock", "vertex", "foundry", "unknown",
20
21
  ];
@@ -41,11 +42,34 @@ export function claudeAuthFromConfig(opts = {}) {
41
42
  if (settingsFiles(configDir, opts.cwd ?? process.cwd()).some((f) => hasApiKeyHelper(read(f)))) {
42
43
  return "api_key";
43
44
  }
45
+ // `claude setup-token`'s long-lived subscription token; below the keys, as in Claude Code.
46
+ if (nonEmpty(env.CLAUDE_CODE_OAUTH_TOKEN))
47
+ return "subscription";
44
48
  const globalConfig = nonEmpty(env.CLAUDE_CONFIG_DIR)
45
49
  ? path.join(env.CLAUDE_CONFIG_DIR, ".claude.json")
46
50
  : path.join(home, ".claude.json");
47
51
  return authFromGlobalConfig(read(globalConfig));
48
52
  }
53
+ /**
54
+ * Whether a claude.ai login is on file, by key names only: `oauthAccount` in
55
+ * `~/.claude.json` without a Console key, or `claudeAiOauth` in
56
+ * `.credentials.json` (Linux and Windows), or a `claude setup-token` token in
57
+ * the environment. Unlike claudeAuthFromConfig it ignores env API keys, which
58
+ * Claude Code asks about before using.
59
+ */
60
+ export function claudeSubscriptionLogin(opts = {}) {
61
+ const env = opts.env ?? process.env;
62
+ const read = opts.readFile ?? readTextOrNull;
63
+ const home = opts.homedir ?? os.homedir();
64
+ if (nonEmpty(env.CLAUDE_CODE_OAUTH_TOKEN))
65
+ return true;
66
+ const dir = nonEmpty(env.CLAUDE_CONFIG_DIR) ? env.CLAUDE_CONFIG_DIR : null;
67
+ const global = read(dir ? path.join(dir, ".claude.json") : path.join(home, ".claude.json"));
68
+ if (authFromGlobalConfig(global) === "subscription")
69
+ return true;
70
+ const credentials = read(path.join(dir ?? path.join(home, ".claude"), ".credentials.json"));
71
+ return credentials !== null && /"claudeAiOauth"\s*:\s*\{/.test(credentials);
72
+ }
49
73
  /**
50
74
  * The Claude.ai plan tier Claude Code recorded locally: `organizationType` and
51
75
  * `organizationRateLimitTier` in `~/.claude.json`, else `subscriptionType` in
@@ -92,11 +116,9 @@ export function upstreamErrorCode(body) {
92
116
  ? CREDIT_BALANCE_TOO_LOW
93
117
  : undefined;
94
118
  }
95
- /** Printed once when Anthropic refused an API key for having no credit. */
119
+ /** Printed once when Anthropic refused an API key for having no credit: the no-plan advice. */
96
120
  export function creditNoticeText(color) {
97
- const text = "ccc isn't free Claude: it runs your own Claude Code, and this API key has no credit. " +
98
- "Sign in with a Claude Pro or Max plan (run `claude`, then /login) or add credit to the key.";
99
- return color ? `\x1b[33m${text}\x1b[39m` : text;
121
+ return noPlanWarningText(color);
100
122
  }
101
123
  // ---------------------------------------------------------------------------
102
124
  // Config files
@@ -1 +1 @@
1
- {"version":3,"file":"claude-auth.js","sourceRoot":"","sources":["../src/claude-auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-auth.js","sourceRoot":"","sources":["../src/claude-auth.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,15 @@
2
2
  * Environment for the Claude Code child process.
3
3
  *
4
4
  * MemTree replaces Claude Code's built-in automatic compaction, so ccc disables
5
- * only auto-compaction by default. Manual `/compact` remains available because
6
- * Claude Code controls it with a separate setting.
5
+ * automatic compaction (threshold and idle) by default. Manual `/compact`
6
+ * remains available because Claude Code controls it with a separate setting.
7
+ *
8
+ * DISABLE_AUTO_COMPACT also turns off idle compaction (2.1.286+: "Compacted
9
+ * while idle, before the prompt cache expired"), the remote-only sleep
10
+ * compactor and cold compaction: all check the same auto-compact switch first
11
+ * (idle and sleep skip with `compaction_off`; 2.1.303, read from the binary;
12
+ * the settings reference documents it under `idleCompaction`). No separate
13
+ * `idleCompaction` setting is needed, so ccc never passes --settings for it.
7
14
  *
8
15
  * Claude Code normally treats a custom ANTHROPIC_BASE_URL as a third-party
9
16
  * gateway. That suppresses native model capabilities it cannot verify through
@@ -28,8 +35,8 @@
28
35
  * its own bounded retry/400. A value the user already exported is kept.
29
36
  *
30
37
  * `CCC_AUTO_COMPACT=1` is an escape hatch: remove ccc's override and let the
31
- * user's native Claude Code setting decide whether auto-compaction is enabled
32
- * (Claude Code's own limits then apply unchanged).
38
+ * user's native Claude Code settings decide whether auto-compaction and idle
39
+ * compaction are enabled (Claude Code's own limits then apply unchanged).
33
40
  */
34
41
  /** Claude Code's local refusal limit under ccc: effectively never reached. */
35
42
  export declare const UNREACHABLE_BLOCKING_LIMIT = "1000000000";
@@ -1 +1 @@
1
- {"version":3,"file":"claude-env.d.ts","sourceRoot":"","sources":["../src/claude-env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,8EAA8E;AAC9E,eAAO,MAAM,0BAA0B,eAAe,CAAC;AAEvD,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,CAAC,UAAU,EAC5B,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAAC,UAAU,CAuBnB;AAOD;;;;GAIG;AACH,wBAAgB,oCAAoC,CAClD,SAAS,EAAE,MAAM,CAAC,UAAU,GAC3B,OAAO,CAET"}
1
+ {"version":3,"file":"claude-env.d.ts","sourceRoot":"","sources":["../src/claude-env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,8EAA8E;AAC9E,eAAO,MAAM,0BAA0B,eAAe,CAAC;AAEvD,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,CAAC,UAAU,EAC5B,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAAC,UAAU,CAuBnB;AAOD;;;;GAIG;AACH,wBAAgB,oCAAoC,CAClD,SAAS,EAAE,MAAM,CAAC,UAAU,GAC3B,OAAO,CAET"}
@@ -2,8 +2,15 @@
2
2
  * Environment for the Claude Code child process.
3
3
  *
4
4
  * MemTree replaces Claude Code's built-in automatic compaction, so ccc disables
5
- * only auto-compaction by default. Manual `/compact` remains available because
6
- * Claude Code controls it with a separate setting.
5
+ * automatic compaction (threshold and idle) by default. Manual `/compact`
6
+ * remains available because Claude Code controls it with a separate setting.
7
+ *
8
+ * DISABLE_AUTO_COMPACT also turns off idle compaction (2.1.286+: "Compacted
9
+ * while idle, before the prompt cache expired"), the remote-only sleep
10
+ * compactor and cold compaction: all check the same auto-compact switch first
11
+ * (idle and sleep skip with `compaction_off`; 2.1.303, read from the binary;
12
+ * the settings reference documents it under `idleCompaction`). No separate
13
+ * `idleCompaction` setting is needed, so ccc never passes --settings for it.
7
14
  *
8
15
  * Claude Code normally treats a custom ANTHROPIC_BASE_URL as a third-party
9
16
  * gateway. That suppresses native model capabilities it cannot verify through
@@ -28,8 +35,8 @@
28
35
  * its own bounded retry/400. A value the user already exported is kept.
29
36
  *
30
37
  * `CCC_AUTO_COMPACT=1` is an escape hatch: remove ccc's override and let the
31
- * user's native Claude Code setting decide whether auto-compaction is enabled
32
- * (Claude Code's own limits then apply unchanged).
38
+ * user's native Claude Code settings decide whether auto-compaction and idle
39
+ * compaction are enabled (Claude Code's own limits then apply unchanged).
33
40
  */
34
41
  /** Claude Code's local refusal limit under ccc: effectively never reached. */
35
42
  export const UNREACHABLE_BLOCKING_LIMIT = "1000000000";
@@ -1 +1 @@
1
- {"version":3,"file":"claude-env.js","sourceRoot":"","sources":["../src/claude-env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,8EAA8E;AAC9E,MAAM,CAAC,MAAM,0BAA0B,GAAG,YAAY,CAAC;AAEvD,MAAM,UAAU,cAAc,CAC5B,SAA4B,EAC5B,gBAAwB;IAExB,MAAM,QAAQ,GAAsB;QAClC,GAAG,SAAS;QACZ,kBAAkB,EAAE,gBAAgB;QACpC,wCAAwC,EAAE,GAAG;QAC7C,kCAAkC,EAAE,YAAY;KACjD,CAAC;IAEF,gEAAgE;IAChE,OAAO,QAAQ,CAAC,gBAAgB,CAAC;IAEjC,IAAI,SAAS,CAAC,gBAAgB,KAAK,GAAG,EAAE,CAAC;QACvC,oEAAoE;QACpE,iCAAiC;QACjC,OAAO,QAAQ,CAAC,oBAAoB,CAAC;IACvC,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,oBAAoB,GAAG,GAAG,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,mCAAmC,EAAE,CAAC;YAClD,QAAQ,CAAC,mCAAmC,GAAG,0BAA0B,CAAC;QAC5E,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,cAAc,CAAC,KAAyB;IAC/C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACtC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACzE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oCAAoC,CAClD,SAA4B;IAE5B,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;AACnE,CAAC"}
1
+ {"version":3,"file":"claude-env.js","sourceRoot":"","sources":["../src/claude-env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,8EAA8E;AAC9E,MAAM,CAAC,MAAM,0BAA0B,GAAG,YAAY,CAAC;AAEvD,MAAM,UAAU,cAAc,CAC5B,SAA4B,EAC5B,gBAAwB;IAExB,MAAM,QAAQ,GAAsB;QAClC,GAAG,SAAS;QACZ,kBAAkB,EAAE,gBAAgB;QACpC,wCAAwC,EAAE,GAAG;QAC7C,kCAAkC,EAAE,YAAY;KACjD,CAAC;IAEF,gEAAgE;IAChE,OAAO,QAAQ,CAAC,gBAAgB,CAAC;IAEjC,IAAI,SAAS,CAAC,gBAAgB,KAAK,GAAG,EAAE,CAAC;QACvC,oEAAoE;QACpE,iCAAiC;QACjC,OAAO,QAAQ,CAAC,oBAAoB,CAAC;IACvC,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,oBAAoB,GAAG,GAAG,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,mCAAmC,EAAE,CAAC;YAClD,QAAQ,CAAC,mCAAmC,GAAG,0BAA0B,CAAC;QAC5E,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,cAAc,CAAC,KAAyB;IAC/C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACtC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AACzE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oCAAoC,CAClD,SAA4B;IAE5B,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;AACnE,CAAC"}
@@ -19,6 +19,8 @@
19
19
  /** Where Claude Code was found, for diagnostics (an enum, never a path). */
20
20
  export declare const CLAUDE_SOURCES: readonly ["path", "registry-path", "native", "npm", "winget", "homebrew", "legacy-local"];
21
21
  export type ClaudeSource = (typeof CLAUDE_SOURCES)[number];
22
+ /** `claude_found` in diagnostics: a source, or `desktop_only` (only the desktop app is installed). */
23
+ export declare const CLAUDE_FOUND: readonly ["path", "registry-path", "native", "npm", "winget", "homebrew", "legacy-local", "desktop_only"];
22
24
  export interface ClaudeLocation {
23
25
  /** What to spawn: `claude` when it is on PATH, else its absolute path. */
24
26
  command: string;
@@ -37,10 +39,26 @@ export interface LocateClaudeOptions {
37
39
  /** Directory entries (winget's package folders); [] when unreadable. */
38
40
  listDir?: (dir: string) => string[];
39
41
  }
42
+ export interface DesktopAppOptions {
43
+ platform?: NodeJS.Platform;
44
+ env?: NodeJS.ProcessEnv;
45
+ homedir?: string;
46
+ /** True when the path exists (file or folder). */
47
+ exists?: (file: string) => boolean;
48
+ }
40
49
  /** Claude Code to launch, or null when it is not installed anywhere known. */
41
50
  export declare function locateClaude(opts?: LocateClaudeOptions): ClaudeLocation | null;
42
51
  /** The child's environment with `location.dir` first on PATH, when it was not on PATH. */
43
52
  export declare function withClaudeOnPath(env: NodeJS.ProcessEnv, location: ClaudeLocation, platform?: NodeJS.Platform): NodeJS.ProcessEnv;
53
+ /**
54
+ * Whether the Claude desktop app is installed (Windows, macOS). It runs Claude
55
+ * Code inside the app (its own copy, in the app's data folder, kept at the
56
+ * app's version), but puts no `claude` on the terminal's PATH, so ccc cannot
57
+ * use it. Only its own folders count, never `~/.claude`, which the CLI shares.
58
+ */
59
+ export declare function claudeDesktopInstalled(opts?: DesktopAppOptions): boolean;
60
+ /** Said instead of claudeMissingText when only the desktop app is installed. */
61
+ export declare function claudeDesktopOnlyText(platform?: NodeJS.Platform): string;
44
62
  /**
45
63
  * Said once, instead of launching, when Claude Code is not installed: the
46
64
  * official install command for this OS and the sign-in step.
@@ -1 +1 @@
1
- {"version":3,"file":"claude-locate.d.ts","sourceRoot":"","sources":["../src/claude-locate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAOH,4EAA4E;AAC5E,eAAO,MAAM,cAAc,2FAEjB,CAAC;AACX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,MAAM,WAAW,cAAc;IAC7B,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,YAAY,CAAC;IACrB,8DAA8D;IAC9D,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACzC,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,MAAM,EAAE,CAAC;IAC9B,wEAAwE;IACxE,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;CACrC;AAED,8EAA8E;AAC9E,wBAAgB,YAAY,CAAC,IAAI,GAAE,mBAAwB,GAAG,cAAc,GAAG,IAAI,CAYlF;AAED,0FAA0F;AAC1F,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,QAAQ,EAAE,cAAc,EACxB,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,MAAM,CAAC,UAAU,CAMnB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAAG,MAAM,CAStF;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,MAAM,EACX,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GACnF,MAAM,GAAG,IAAI,CAoBf;AAuGD,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAE/E;AAED,uEAAuE;AACvE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG/D"}
1
+ {"version":3,"file":"claude-locate.d.ts","sourceRoot":"","sources":["../src/claude-locate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAOH,4EAA4E;AAC5E,eAAO,MAAM,cAAc,2FAEjB,CAAC;AACX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAC3D,sGAAsG;AACtG,eAAO,MAAM,YAAY,2GAA+C,CAAC;AAEzE,MAAM,WAAW,cAAc;IAC7B,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,YAAY,CAAC;IACrB,8DAA8D;IAC9D,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACzC,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,MAAM,EAAE,CAAC;IAC9B,wEAAwE;IACxE,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CACpC;AAED,8EAA8E;AAC9E,wBAAgB,YAAY,CAAC,IAAI,GAAE,mBAAwB,GAAG,cAAc,GAAG,IAAI,CAclF;AAED,0FAA0F;AAC1F,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,QAAQ,EAAE,cAAc,EACxB,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,MAAM,CAAC,UAAU,CAMnB;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAM5E;AAED,gFAAgF;AAChF,wBAAgB,qBAAqB,CAAC,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAAG,MAAM,CAM1F;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAAG,MAAM,CAStF;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,MAAM,EACX,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GACnF,MAAM,GAAG,IAAI,CAoBf;AA+JD,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAE/E;AAED,uEAAuE;AACvE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG/D"}
@@ -24,17 +24,21 @@ import * as path from "node:path";
24
24
  export const CLAUDE_SOURCES = [
25
25
  "path", "registry-path", "native", "npm", "winget", "homebrew", "legacy-local",
26
26
  ];
27
+ /** `claude_found` in diagnostics: a source, or `desktop_only` (only the desktop app is installed). */
28
+ export const CLAUDE_FOUND = [...CLAUDE_SOURCES, "desktop_only"];
27
29
  /** Claude Code to launch, or null when it is not installed anywhere known. */
28
30
  export function locateClaude(opts = {}) {
29
31
  const platform = opts.platform ?? process.platform;
30
32
  const env = opts.env ?? process.env;
31
33
  const isExecutable = opts.isExecutable ?? defaultIsExecutable(platform);
32
- const onPath = findOnPath("claude", pathDirs(env, platform), platform, env, isExecutable);
34
+ const onPath = locateOnPath(pathDirs(env, platform), platform, env, isExecutable);
33
35
  if (onPath)
34
- return { command: "claude", source: "path" };
36
+ return onPath;
35
37
  const home = opts.homedir ?? os.homedir();
36
38
  for (const candidate of candidates(platform, env, home, opts)) {
37
- const file = findOnPath("claude", candidate.dirs, platform, env, isExecutable);
39
+ const file = candidate.dirs
40
+ .map((dir) => findOnPath("claude", [dir], platform, env, isExecutable))
41
+ .find((f) => f !== null && !isDesktopAppExe(f, platform));
38
42
  if (file)
39
43
  return { command: file, source: candidate.source, dir: pathFor(platform).dirname(file) };
40
44
  }
@@ -49,6 +53,27 @@ export function withClaudeOnPath(env, location, platform = process.platform) {
49
53
  const delimiter = platform === "win32" ? ";" : ":";
50
54
  return { ...env, [key]: current ? `${location.dir}${delimiter}${current}` : location.dir };
51
55
  }
56
+ /**
57
+ * Whether the Claude desktop app is installed (Windows, macOS). It runs Claude
58
+ * Code inside the app (its own copy, in the app's data folder, kept at the
59
+ * app's version), but puts no `claude` on the terminal's PATH, so ccc cannot
60
+ * use it. Only its own folders count, never `~/.claude`, which the CLI shares.
61
+ */
62
+ export function claudeDesktopInstalled(opts = {}) {
63
+ const platform = opts.platform ?? process.platform;
64
+ const env = opts.env ?? process.env;
65
+ const home = opts.homedir ?? os.homedir();
66
+ const exists = opts.exists ?? fs.existsSync;
67
+ return desktopAppPaths(platform, env, home).some((p) => exists(p));
68
+ }
69
+ /** Said instead of claudeMissingText when only the desktop app is installed. */
70
+ export function claudeDesktopOnlyText(platform = process.platform) {
71
+ const install = platform === "win32"
72
+ ? "`irm https://claude.ai/install.ps1 | iex` (in PowerShell)"
73
+ : "`curl -fsSL https://claude.ai/install.sh | bash`";
74
+ return "Found the Claude desktop app, but ccc needs Claude Code in the terminal: " +
75
+ `install it with ${install}, then open a new terminal and run \`claude\` once to sign in.`;
76
+ }
52
77
  /**
53
78
  * Said once, instead of launching, when Claude Code is not installed: the
54
79
  * official install command for this OS and the sign-in step.
@@ -116,6 +141,60 @@ function windowsCandidates(env, home, opts) {
116
141
  { source: "registry-path", get dirs() { return registryDirs(env, opts); } },
117
142
  ];
118
143
  }
144
+ /** The desktop app's install and data folders (Squirrel, Microsoft Store/MSIX, macOS). */
145
+ function desktopAppPaths(platform, env, home) {
146
+ if (platform === "darwin") {
147
+ return ["/Applications/Claude.app", path.posix.join(home, "Applications", "Claude.app")];
148
+ }
149
+ if (platform !== "win32")
150
+ return [];
151
+ const w = path.win32;
152
+ const profile = envValue(env, "USERPROFILE") || home;
153
+ const localAppData = envValue(env, "LOCALAPPDATA") || w.join(profile, "AppData", "Local");
154
+ // Not %APPDATA%\Claude: MCP guides have people create it by hand.
155
+ return [
156
+ w.join(localAppData, "AnthropicClaude"),
157
+ w.join(localAppData, "Packages", DESKTOP_MSIX_FAMILY),
158
+ ];
159
+ }
160
+ /** The Microsoft Store / MSIX package family of the Claude desktop app. */
161
+ const DESKTOP_MSIX_FAMILY = "Claude_pzs8sxrjxfjjc";
162
+ /**
163
+ * The desktop app's own `claude.exe` (Squirrel: %LOCALAPPDATA%\AnthropicClaude
164
+ * and its app-<version> folders; MSIX: WindowsApps\Claude_<version>_<arch>__<id>).
165
+ * Launched as Claude Code it opens the app instead, so it is skipped. So is a
166
+ * Store app execution alias (%LOCALAPPDATA%\Microsoft\WindowsApps): none of the
167
+ * CLI's installers puts claude.exe there.
168
+ */
169
+ function isDesktopAppExe(file, platform) {
170
+ if (platform !== "win32")
171
+ return false;
172
+ const dir = path.win32.dirname(file).toLowerCase();
173
+ return /\\anthropicclaude(\\app-[^\\]+)?$/.test(dir) ||
174
+ /\\windowsapps\\claude_[^\\]*__pzs8sxrjxfjjc(\\app)?$/.test(dir) ||
175
+ /\\microsoft\\windowsapps(\\claude_pzs8sxrjxfjjc)?$/.test(dir);
176
+ }
177
+ /**
178
+ * `claude` on PATH, skipping the desktop app's exe. Spawned by name when it is
179
+ * the first `claude` on PATH (as before); by full path when the desktop app's
180
+ * comes first, since spawning by name would start the app.
181
+ */
182
+ function locateOnPath(dirs, platform, env, isExecutable) {
183
+ let skipped = false;
184
+ for (const dir of dirs) {
185
+ const file = findOnPath("claude", [dir], platform, env, isExecutable);
186
+ if (!file)
187
+ continue;
188
+ if (isDesktopAppExe(file, platform)) {
189
+ skipped = true;
190
+ continue;
191
+ }
192
+ if (!skipped)
193
+ return { command: "claude", source: "path" };
194
+ return { command: file, source: "path", dir: pathFor(platform).dirname(file) };
195
+ }
196
+ return null;
197
+ }
119
198
  function registryDirs(env, opts) {
120
199
  return (opts.registryPath ?? (() => readRegistryPath(env)))()
121
200
  .flatMap((value) => splitPath(expandWindowsVars(value, env), "win32"));
@@ -1 +1 @@
1
- {"version":3,"file":"claude-locate.js","sourceRoot":"","sources":["../src/claude-locate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-locate.js","sourceRoot":"","sources":["../src/claude-locate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * The "no Claude plan" line. ccc runs the user's own Claude Code, so it only
3
+ * works well signed in with a Claude Pro or Max plan; on an API key every token
4
+ * is billed by Anthropic, and a key with no credit is refused outright
5
+ * (credit_balance_too_low, the most common first-prompt failure). The line is
6
+ * printed once before Claude Code starts when its sign-in is an API key or
7
+ * missing, and never for a subscription; the credit refusal gets the same text
8
+ * as ccc exits (claude-auth.ts creditNoticeText).
9
+ *
10
+ * Which sign-in Claude Code really used is only known from its requests'
11
+ * auth headers (claude-auth.ts claudeAuthFromHeaders). The last one seen is
12
+ * kept as a type name in ccc's config directory so the next launch decides on
13
+ * fact rather than on the config files' guess.
14
+ */
15
+ import type { ClaudeAuthType, ClaudePlan } from "./claude-auth.js";
16
+ export declare const NO_PLAN_TEXT: string;
17
+ /** The file in ccc's config directory holding the last sign-in type Claude Code sent. */
18
+ export declare const SEEN_AUTH_FILE = "claude-auth-seen";
19
+ export interface PlanWarningInput {
20
+ /** From env and Claude Code's config files (claudeAuthFromConfig). */
21
+ auth: ClaudeAuthType;
22
+ /** From Claude Code's config files (claudePlanFromConfig). */
23
+ plan: ClaudePlan;
24
+ /** What Claude Code's own requests last showed, when known. */
25
+ seen?: ClaudeAuthType;
26
+ /** A claude.ai login is on file (claudeSubscriptionLogin), whatever else is set. */
27
+ subscriptionLogin?: boolean;
28
+ }
29
+ /**
30
+ * True when Claude Code is on an API key or not signed in, and nothing shows a
31
+ * paid plan. Any sign of a subscription wins, a stale API-key sighting
32
+ * included (the user may have run `/login` outside ccc since), so a subscriber
33
+ * is never warned.
34
+ */
35
+ export declare function needsPlanWarning(input: PlanWarningInput): boolean;
36
+ /** `claude --version`, `claude doctor` and the like: no session, so no line. */
37
+ export declare function isInfoOnlyRun(args: readonly string[]): boolean;
38
+ /**
39
+ * Whether a credit_balance_too_low refusal gets the advice at exit: for an API
40
+ * key, or a request with no auth header ccc could read; not for a subscription
41
+ * token (extra usage spent) or a bearer ccc does not recognise.
42
+ */
43
+ export declare function creditAdviceApplies(auth: ClaudeAuthType | undefined): boolean;
44
+ export declare function noPlanWarningText(color: boolean): string;
45
+ /**
46
+ * The line on stderr when it applies: stdout stays Claude Code's in print
47
+ * runs, and in a terminal stderr shows above the session just the same.
48
+ * Returns whether it was printed.
49
+ */
50
+ export declare function printNoPlanWarning(input: PlanWarningInput, color: boolean): boolean;
51
+ /** The last sign-in type Claude Code's requests showed, or undefined. */
52
+ export declare function readSeenClaudeAuth(configDir: string): ClaudeAuthType | undefined;
53
+ /** Keep a subscription or API-key sign-in for the next launch; never throws. */
54
+ export declare function writeSeenClaudeAuth(configDir: string, auth: ClaudeAuthType): void;
55
+ //# sourceMappingURL=claude-plan-warning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-plan-warning.d.ts","sourceRoot":"","sources":["../src/claude-plan-warning.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnE,eAAO,MAAM,YAAY,QAE4D,CAAC;AAEtF,yFAAyF;AACzF,eAAO,MAAM,cAAc,qBAAqB,CAAC;AAKjD,MAAM,WAAW,gBAAgB;IAC/B,sEAAsE;IACtE,IAAI,EAAE,cAAc,CAAC;IACrB,8DAA8D;IAC9D,IAAI,EAAE,UAAU,CAAC;IACjB,+DAA+D;IAC/D,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,oFAAoF;IACpF,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAOjE;AAQD,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAI9D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,GAAG,OAAO,CAE7E;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAExD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAInF;AAED,yEAAyE;AACzE,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAOhF;AAED,gFAAgF;AAChF,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,IAAI,CAOjF"}