claude-code-infinite 1.0.26 → 1.0.27
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 +37 -16
- package/dist/claude-auth.d.ts +9 -1
- package/dist/claude-auth.d.ts.map +1 -1
- package/dist/claude-auth.js +26 -4
- package/dist/claude-auth.js.map +1 -1
- package/dist/claude-env.d.ts +11 -4
- package/dist/claude-env.d.ts.map +1 -1
- package/dist/claude-env.js +11 -4
- package/dist/claude-env.js.map +1 -1
- package/dist/claude-locate.d.ts +18 -0
- package/dist/claude-locate.d.ts.map +1 -1
- package/dist/claude-locate.js +82 -3
- package/dist/claude-locate.js.map +1 -1
- package/dist/claude-plan-warning.d.ts +55 -0
- package/dist/claude-plan-warning.d.ts.map +1 -0
- package/dist/claude-plan-warning.js +95 -0
- package/dist/claude-plan-warning.js.map +1 -0
- package/dist/cli-lifecycle.d.ts +5 -0
- package/dist/cli-lifecycle.d.ts.map +1 -1
- package/dist/cli-lifecycle.js +13 -0
- package/dist/cli-lifecycle.js.map +1 -1
- package/dist/cli-main.js +35 -17
- package/dist/cli-main.js.map +1 -1
- package/dist/diagnostics-schema.d.ts +2 -0
- package/dist/diagnostics-schema.d.ts.map +1 -1
- package/dist/diagnostics-schema.js +13 -2
- package/dist/diagnostics-schema.js.map +1 -1
- package/dist/diagnostics.d.ts +8 -3
- package/dist/diagnostics.d.ts.map +1 -1
- package/dist/diagnostics.js +12 -3
- package/dist/diagnostics.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -4,7 +4,14 @@
|
|
|
4
4
|
|
|
5
5
|
# Claude Code Infinite
|
|
6
6
|
|
|
7
|
-
|
|
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,8 @@ 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
|
-
>
|
|
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
|
+
> Install [Claude Code in your terminal](#setup) and sign in with Claude Pro or Max
|
|
41
|
+
> before running `ccc`. The Claude desktop app isn't enough.
|
|
41
42
|
|
|
42
43
|
## Search across sessions
|
|
43
44
|
|
|
@@ -82,19 +83,32 @@ tokens; `/compact`'s exclude the one-time `/compact` step. This is one task fami
|
|
|
82
83
|
|
|
83
84
|
## Requirements
|
|
84
85
|
|
|
86
|
+
* **[Claude Code in your terminal](https://code.claude.com/docs/en/quickstart), signed in
|
|
87
|
+
with Claude Pro or Max.** The Claude desktop app isn't enough: `ccc` needs the terminal
|
|
88
|
+
version.
|
|
85
89
|
* [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
90
|
|
|
89
|
-
<sub>Also works with an Anthropic API key, but that's far costlier than Pro or Max.</sub>
|
|
91
|
+
<sub>Also works with an Anthropic API key that has credit, but that's far costlier than Pro or Max.</sub>
|
|
90
92
|
|
|
91
93
|
## Setup
|
|
92
94
|
|
|
93
|
-
1. Install
|
|
95
|
+
1. **Install Claude Code first** and sign in with Claude Pro or Max. The Claude desktop app
|
|
96
|
+
isn't enough: `ccc` needs the terminal version.
|
|
97
|
+
```powershell
|
|
98
|
+
# Windows PowerShell
|
|
99
|
+
irm https://claude.ai/install.ps1 | iex
|
|
100
|
+
```
|
|
101
|
+
```bash
|
|
102
|
+
# macOS / Linux
|
|
103
|
+
curl -fsSL https://claude.ai/install.sh | bash
|
|
104
|
+
```
|
|
105
|
+
Open a new terminal and run `claude` once to sign in
|
|
106
|
+
([help](#claude-code-isnt-installed)).
|
|
107
|
+
2. Install Claude Code Infinite (Node ≥ 20.3; no git needed)
|
|
94
108
|
```bash
|
|
95
109
|
npm install -g claude-code-infinite
|
|
96
110
|
```
|
|
97
|
-
|
|
111
|
+
3. Run it from your project folder
|
|
98
112
|
```bash
|
|
99
113
|
ccc
|
|
100
114
|
```
|
|
@@ -136,7 +150,7 @@ Environment variables, set when launching `ccc`:
|
|
|
136
150
|
| `CCC_COMPACT_TARGET=500k` | Compaction target for every session (useful for headless `-p` runs); `off` starts every session with compaction off. |
|
|
137
151
|
| `CCC_MEMTREE_MCP=0` | Turns off the `memtree` MCP tools ([details](#memory-tools)), in interactive and headless (`-p`) runs. |
|
|
138
152
|
| `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
|
|
153
|
+
| `CCC_AUTO_COMPACT=1` | Restores Claude Code's own auto-compaction and idle compaction settings ([details](#claude-code-auto-compaction)). |
|
|
140
154
|
| `CCC_NO_UPDATE_CHECK=1` | Turns off the update check, and with it automatic updates ([details](#upgrading)). |
|
|
141
155
|
| `CCC_DISABLE_AUTOUPDATE=1` | Keeps the update notice but never installs ([details](#automatic-updates)). |
|
|
142
156
|
| `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 +162,12 @@ kitty, VS Code, JetBrains, Windows Terminal); elsewhere you get the plain URL.
|
|
|
148
162
|
|
|
149
163
|
`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
164
|
|
|
165
|
+
That includes idle compaction (Claude Code 2.1.286 and later), which summarizes a
|
|
166
|
+
long conversation while you're away, just before the prompt cache expires
|
|
167
|
+
("Compacted while idle, before the prompt cache expired"). The
|
|
168
|
+
`DISABLE_AUTO_COMPACT=1` that `ccc` sets turns it off too, so you don't need
|
|
169
|
+
`"idleCompaction": false` in your settings.
|
|
170
|
+
|
|
151
171
|
Claude Code 2.1.219 also recommends “Resume from summary” for any old session
|
|
152
172
|
above a fixed 100k-token threshold, even when the active model has a 1M window
|
|
153
173
|
and auto-compaction is disabled. `ccc` suppresses that resume-time
|
|
@@ -168,7 +188,8 @@ On `ccc --resume <id>`, `ccc` backs the transcript up to
|
|
|
168
188
|
recorded usage to half the window, so the next message is sent and MemTree
|
|
169
189
|
compresses it.
|
|
170
190
|
|
|
171
|
-
To restore Claude Code's native auto-compaction
|
|
191
|
+
To restore Claude Code's native auto-compaction and idle compaction settings for one
|
|
192
|
+
invocation, use:
|
|
172
193
|
|
|
173
194
|
```bash
|
|
174
195
|
CCC_AUTO_COMPACT=1 ccc
|
package/dist/claude-auth.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/claude-auth.js
CHANGED
|
@@ -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
|
-
|
|
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
|
package/dist/claude-auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-auth.js","sourceRoot":"","sources":["../src/claude-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"claude-auth.js","sourceRoot":"","sources":["../src/claude-auth.ts"],"names":[],"mappings":"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"}
|
package/dist/claude-env.d.ts
CHANGED
|
@@ -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
|
-
*
|
|
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
|
|
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";
|
package/dist/claude-env.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-env.d.ts","sourceRoot":"","sources":["../src/claude-env.ts"],"names":[],"mappings":"AAAA
|
|
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"}
|
package/dist/claude-env.js
CHANGED
|
@@ -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
|
-
*
|
|
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
|
|
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";
|
package/dist/claude-env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-env.js","sourceRoot":"","sources":["../src/claude-env.ts"],"names":[],"mappings":"AAAA
|
|
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"}
|
package/dist/claude-locate.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/claude-locate.js
CHANGED
|
@@ -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 =
|
|
34
|
+
const onPath = locateOnPath(pathDirs(env, platform), platform, env, isExecutable);
|
|
33
35
|
if (onPath)
|
|
34
|
-
return
|
|
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 =
|
|
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"}
|