claude-code-infinite 1.0.36 → 1.0.37
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 +100 -1
- package/dist/cc-request.d.ts +15 -0
- package/dist/cc-request.d.ts.map +1 -1
- package/dist/cc-request.js +30 -0
- package/dist/cc-request.js.map +1 -1
- package/dist/claude-env.d.ts +24 -1
- package/dist/claude-env.d.ts.map +1 -1
- package/dist/claude-env.js +48 -7
- package/dist/claude-env.js.map +1 -1
- package/dist/cli-args.d.ts +1 -1
- package/dist/cli-args.d.ts.map +1 -1
- package/dist/cli-args.js +1 -1
- package/dist/cli-args.js.map +1 -1
- package/dist/cli-main.js +99 -8
- package/dist/cli-main.js.map +1 -1
- package/dist/config.d.ts +5 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/desktop-command.d.ts +38 -0
- package/dist/desktop-command.d.ts.map +1 -0
- package/dist/desktop-command.js +324 -0
- package/dist/desktop-command.js.map +1 -0
- package/dist/desktop-service.d.ts +41 -0
- package/dist/desktop-service.d.ts.map +1 -0
- package/dist/desktop-service.js +449 -0
- package/dist/desktop-service.js.map +1 -0
- package/dist/desktop-setup.d.ts +94 -0
- package/dist/desktop-setup.d.ts.map +1 -0
- package/dist/desktop-setup.js +288 -0
- package/dist/desktop-setup.js.map +1 -0
- package/dist/https-proxy-eligibility.d.ts +31 -0
- package/dist/https-proxy-eligibility.d.ts.map +1 -0
- package/dist/https-proxy-eligibility.js +204 -0
- package/dist/https-proxy-eligibility.js.map +1 -0
- package/dist/https-proxy-mode.d.ts +59 -0
- package/dist/https-proxy-mode.d.ts.map +1 -0
- package/dist/https-proxy-mode.js +255 -0
- package/dist/https-proxy-mode.js.map +1 -0
- package/dist/https-proxy-session.d.ts +64 -0
- package/dist/https-proxy-session.d.ts.map +1 -0
- package/dist/https-proxy-session.js +165 -0
- package/dist/https-proxy-session.js.map +1 -0
- package/dist/memtree-mcp.d.ts +32 -1
- package/dist/memtree-mcp.d.ts.map +1 -1
- package/dist/memtree-mcp.js +73 -7
- package/dist/memtree-mcp.js.map +1 -1
- package/dist/memtree.d.ts +10 -0
- package/dist/memtree.d.ts.map +1 -1
- package/dist/memtree.js +59 -12
- package/dist/memtree.js.map +1 -1
- package/dist/message-refs.d.ts +81 -0
- package/dist/message-refs.d.ts.map +1 -0
- package/dist/message-refs.js +378 -0
- package/dist/message-refs.js.map +1 -0
- package/dist/mitm-ca.d.ts +31 -0
- package/dist/mitm-ca.d.ts.map +1 -0
- package/dist/mitm-ca.js +236 -0
- package/dist/mitm-ca.js.map +1 -0
- package/dist/paused-session.d.ts.map +1 -1
- package/dist/paused-session.js +9 -2
- package/dist/paused-session.js.map +1 -1
- package/dist/proxy.d.ts +20 -0
- package/dist/proxy.d.ts.map +1 -1
- package/dist/proxy.js +101 -16
- package/dist/proxy.js.map +1 -1
- package/dist/reqlog.d.ts +7 -1
- package/dist/reqlog.d.ts.map +1 -1
- package/dist/reqlog.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -285,6 +285,14 @@ refusal before `ccc` ever saw the request. `ccc` sets
|
|
|
285
285
|
`CLAUDE_CODE_BLOCKING_LIMIT_OVERRIDE` (unless you exported your own) so such a
|
|
286
286
|
request reaches the proxy, which compresses it mid-turn.
|
|
287
287
|
|
|
288
|
+
On Anthropic's own API, Claude Code can send tool-loop turns as "message threads":
|
|
289
|
+
only the newest messages, with Anthropic keeping the rest of the conversation. MemTree
|
|
290
|
+
needs the whole conversation to compress and index it, so `ccc` sets
|
|
291
|
+
`CLAUDE_CODE_TETHER_LIVE=0` for the Claude Code it starts, and every request carries
|
|
292
|
+
the full conversation as before. This is an undocumented Claude Code switch (checked on
|
|
293
|
+
2.1.325). A value under `env` in your Claude Code settings would win over it, so don't
|
|
294
|
+
set it there. For the desktop app, run `ccc desktop setup` again and paste the new lines.
|
|
295
|
+
|
|
288
296
|
A session whose last response reached the verified local refusal threshold
|
|
289
297
|
(for example one sent whole while MemTree was unavailable) would otherwise be
|
|
290
298
|
refused locally with "Context limit reached" on every prompt after a resume.
|
|
@@ -309,7 +317,7 @@ Code connects directly to Anthropic. The official
|
|
|
309
317
|
|
|
310
318
|
## Privacy & architecture: your Anthropic credentials never leave your machine
|
|
311
319
|
|
|
312
|
-
`ccc` runs a small proxy on `127.0.0.1` and launches Claude Code with `ANTHROPIC_BASE_URL` pointed at it and automatic compaction disabled. Claude Code keeps its **native login** — token refresh, plan-default model selection, and rate-limit handling behave exactly like vanilla Claude Code, and your OAuth token is sent only to `api.anthropic.com` from your own machine.
|
|
320
|
+
`ccc` runs a small proxy on `127.0.0.1` and launches Claude Code with `ANTHROPIC_BASE_URL` pointed at it (or, in the opt-in HTTPS-proxy mode below, `HTTPS_PROXY`) and automatic compaction disabled. Claude Code keeps its **native login** — token refresh, plan-default model selection, and rate-limit handling behave exactly like vanilla Claude Code, and your OAuth token is sent only to `api.anthropic.com` from your own machine.
|
|
313
321
|
|
|
314
322
|
```
|
|
315
323
|
Claude Code ──▶ localhost proxy (ccc)
|
|
@@ -322,6 +330,97 @@ Claude Code ──▶ localhost proxy (ccc)
|
|
|
322
330
|
- Anthropic requests go directly from the local proxy to api.anthropic.com using the authentication Claude Code supplied. PolyChat never sees that credential or Anthropic traffic.
|
|
323
331
|
- If MemTree is unreachable, slow, or your MemTree plan needs payment, `ccc` degrades to a transparent passthrough so your session is never interrupted. While MemTree is paused (usage limit reached), a request that still fits the model's context window (by Anthropic's token count, or ccc's conservative estimate when counting is unavailable) goes out unchanged, as plain Claude Code would send it, and once the session reaches the compression budget the paused notice suggests Claude Code's own `/compact` while it still fits. A request that no longer fits is refused at once with "MemTree is paused (usage limit reached), so this long conversation can't be compressed…", your subscribe link, and `/clear` to start fresh (`/memtree-compact` needs MemTree, so it is not offered then). After you subscribe, the next request compresses again with no restart.
|
|
324
332
|
|
|
333
|
+
### Remote Control (`/remote-control`): HTTPS-proxy mode (opt-in, macOS and Linux)
|
|
334
|
+
|
|
335
|
+
Claude Code offers Remote Control only when it talks to `api.anthropic.com` itself, so in the
|
|
336
|
+
default mode above `/remote-control` is "Unknown command". HTTPS-proxy mode keeps Claude Code's
|
|
337
|
+
base URL at `api.anthropic.com` and makes `ccc` its `HTTPS_PROXY` instead. Every model turn still
|
|
338
|
+
goes through MemTree. Turn it on for one session, or for every session:
|
|
339
|
+
|
|
340
|
+
```bash
|
|
341
|
+
CCC_HTTPS_PROXY_MODE=1 ccc
|
|
342
|
+
# or always: add "httpsProxyMode": true to ~/.claude-code-infinite/config.json
|
|
343
|
+
# (CCC_HTTPS_PROXY_MODE=0 turns it off for one session)
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
How it works and what it changes:
|
|
347
|
+
|
|
348
|
+
- **A certificate for `api.anthropic.com` only, new each session.** At each start `ccc` makes a
|
|
349
|
+
certificate authority in memory, signs one certificate for `api.anthropic.com` with it, and
|
|
350
|
+
drops its key. The key is never written to disk. The CA is name-constrained: it can't vouch for
|
|
351
|
+
any other host name, a subdomain or an IP address. Only Claude Code trusts it, through
|
|
352
|
+
`NODE_EXTRA_CA_CERTS` in its own environment. Nothing goes into your system or keychain trust
|
|
353
|
+
store. The public certificate sits in `~/.claude-code-infinite/https-proxy/` and is removed when
|
|
354
|
+
`ccc` exits.
|
|
355
|
+
- **What `ccc` decrypts.** Only Claude Code's connections to `api.anthropic.com` that carry the
|
|
356
|
+
session's proxy token. Model calls get MemTree as before. Everything else Claude Code sends
|
|
357
|
+
there (Remote Control's bridge and session events, file uploads, settings, telemetry) is
|
|
358
|
+
relayed to Anthropic unchanged and never logged or sent to MemTree. Connections to any other
|
|
359
|
+
host go through a blind tunnel that `ccc` doesn't decrypt. A connection without the token (for
|
|
360
|
+
example from another user on the machine) is refused.
|
|
361
|
+
- **Programs you run from Claude Code's Bash tool see what they see today.** `ccc` gives Claude
|
|
362
|
+
Code a `CLAUDE_ENV_FILE` that puts back your own proxy, CA and `NO_PROXY` settings and the
|
|
363
|
+
usual `ANTHROPIC_BASE_URL`, so scripts, SDK apps and a `ccc` started from Bash work as in the
|
|
364
|
+
default mode, and none of them sees the proxy token. A `CLAUDE_ENV_FILE` of your own is still
|
|
365
|
+
sourced.
|
|
366
|
+
- **Hooks, status-line commands and MCP servers** that Claude Code starts aren't Bash commands,
|
|
367
|
+
so they inherit the proxy and the session CA. Node-based ones work. A non-Node one that calls
|
|
368
|
+
`api.anthropic.com` itself (for example a status line that curls Anthropic's usage endpoint, or
|
|
369
|
+
a Python MCP server using the Anthropic API) fails TLS. Run such sessions with
|
|
370
|
+
`CCC_HTTPS_PROXY_MODE=0`.
|
|
371
|
+
- **When it stays off.** `ccc` uses the default mode for the session, and says so in one line,
|
|
372
|
+
on Windows; when you already use a proxy (`HTTPS_PROXY`, `HTTP_PROXY` or `ALL_PROXY` in your
|
|
373
|
+
environment); when a Claude Code settings file (user, project, local, managed, or
|
|
374
|
+
`--settings`) sets a proxy, `NO_PROXY`, `NODE_EXTRA_CA_CERTS` or `CLAUDE_ENV_FILE` in its `env`;
|
|
375
|
+
and when Claude Code's Bash sandbox is enabled. These are checked at startup. If you turn one on mid-session
|
|
376
|
+
and your prompts stop reaching `ccc`, it warns you once. Restart `ccc` then.
|
|
377
|
+
- `CCC_PROXY_TRACE=<file>` writes a debug trace: connection targets, and the method, path,
|
|
378
|
+
status and User-Agent of each decrypted request. It holds no other header values and no bodies.
|
|
379
|
+
|
|
380
|
+
Remote Control also needs a full-scope Claude login (`claude auth login`). A long-lived setup
|
|
381
|
+
token isn't enough.
|
|
382
|
+
|
|
383
|
+
### The Claude desktop app (opt-in, macOS)
|
|
384
|
+
|
|
385
|
+
The desktop app's Code tab runs its own copy of Claude Code, so `ccc` can't wrap it. Instead
|
|
386
|
+
`ccc desktop setup` runs a small always-on `ccc` service (a launchd agent) that is the HTTPS
|
|
387
|
+
proxy of the Desktop sessions you point at it, with the same interception as HTTPS-proxy mode
|
|
388
|
+
above. Desktop keeps its own sign-in, plan and Remote Control.
|
|
389
|
+
|
|
390
|
+
```bash
|
|
391
|
+
ccc desktop setup # service, certificate, memory tools; prints six lines
|
|
392
|
+
ccc desktop env # print the six lines again
|
|
393
|
+
ccc desktop status # is the service up, how many sessions it serves
|
|
394
|
+
ccc desktop uninstall # stop and remove it all
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
Paste the six lines into the desktop app once: Code tab > environment menu > add a local
|
|
398
|
+
environment (for example "ccc") > **Environment variables**. New sessions started from that
|
|
399
|
+
environment get MemTree. Sessions in other environments are unchanged.
|
|
400
|
+
|
|
401
|
+
- **What setup installs:** `~/.claude-code-infinite/desktop/` (0700): the service's port and
|
|
402
|
+
token, its certificate, and a Bash env file; the launch agent
|
|
403
|
+
`~/Library/LaunchAgents/co.polychat.ccc-desktop.plist`; and a user-scope `memtree` MCP server
|
|
404
|
+
(through `claude mcp add-json`), which has no tools in sessions that don't go through `ccc`.
|
|
405
|
+
- **The certificate** is for `api.anthropic.com` only, from a name-constrained CA whose key is
|
|
406
|
+
dropped as soon as it signs it. Only the certificate's own key is kept, readable only by
|
|
407
|
+
you. Nothing goes into your system or keychain trust store: only the sessions with the pasted
|
|
408
|
+
`NODE_EXTRA_CA_CERTS` trust it. Setup keeps a corporate CA from your shell's
|
|
409
|
+
`NODE_EXTRA_CA_CERTS` in that bundle. It lasts a year: `ccc desktop status` and a terminal
|
|
410
|
+
`ccc` say when it's due, and `ccc desktop setup` renews it (restart open sessions then).
|
|
411
|
+
`--rotate-ca` makes a new one at once; `--rotate-token` a new proxy token (paste the lines
|
|
412
|
+
again).
|
|
413
|
+
- **If the service stops**, sessions in the ccc environment can't reach Claude ("Unable to
|
|
414
|
+
connect to API") until it's back. launchd restarts it if it crashes. `ccc desktop status`
|
|
415
|
+
says what's wrong and how to restart it, and a terminal `ccc` warns when it's down. To stop
|
|
416
|
+
using it, switch those sessions to another environment.
|
|
417
|
+
- Setup refuses when your shell already uses a proxy or a `NO_PROXY` that covers
|
|
418
|
+
`api.anthropic.com`, or when Claude Code's settings set a proxy, `NO_PROXY`,
|
|
419
|
+
`NODE_EXTRA_CA_CERTS`, `CLAUDE_ENV_FILE` or the Bash sandbox, as HTTPS-proxy mode does. A
|
|
420
|
+
session whose project's settings do so gets an error explaining why instead of running.
|
|
421
|
+
- After upgrading Node or moving ccc, run `ccc desktop setup` again: the agent and the MCP server
|
|
422
|
+
name the Node and ccc paths setup ran with.
|
|
423
|
+
|
|
325
424
|
### Diagnostics
|
|
326
425
|
|
|
327
426
|
`ccc` sends a few diagnostics to MemTree so we can see why a session fails to start or stalls:
|
package/dist/cc-request.d.ts
CHANGED
|
@@ -42,6 +42,21 @@ export declare function sessionTag(sessionId: string | undefined): string | unde
|
|
|
42
42
|
* and never involves MemTree or the main thread's route state.
|
|
43
43
|
*/
|
|
44
44
|
export declare function isClaudeCodeSideRequest(info: ClaudeCodeRequestInfo): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Why a request's messages are not its session's conversation; undefined when they are.
|
|
47
|
+
* Such a request must neither become the conversation the session's final index sends
|
|
48
|
+
* nor be uploaded to MemTree as a conversation of its own: either one builds a tree of a
|
|
49
|
+
* fragment, and the session's newest tree (the status line's link) becomes that fragment.
|
|
50
|
+
*
|
|
51
|
+
* - `side-request`: Claude Code's own one-off request on the session (title, Remote
|
|
52
|
+
* Control's "user walked away" status summary, WebFetch summary, security monitor).
|
|
53
|
+
* - `thread-continue`: a message-threads continuation (`thread: {type: "continue"}`,
|
|
54
|
+
* first-party API only, so in HTTPS-proxy mode): its messages are only those after
|
|
55
|
+
* the reply it continues; the API holds the rest.
|
|
56
|
+
*/
|
|
57
|
+
export type NotConversationKind = "side-request" | "thread-continue";
|
|
58
|
+
export declare function notSessionConversation(body: Record<string, any>, info: ClaudeCodeRequestInfo | undefined): NotConversationKind | undefined;
|
|
59
|
+
export declare function isThreadContinuation(body: Record<string, any>): boolean;
|
|
45
60
|
/**
|
|
46
61
|
* Shape of the monitor's `<transcript>` block, checked on every side request
|
|
47
62
|
* so a change in Claude Code's internal format shows up in the request log
|
package/dist/cc-request.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cc-request.d.ts","sourceRoot":"","sources":["../src/cc-request.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cc-request.d.ts","sourceRoot":"","sources":["../src/cc-request.ts"],"names":[],"mappings":"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"}
|
package/dist/cc-request.js
CHANGED
|
@@ -115,6 +115,36 @@ function oneLine(text) {
|
|
|
115
115
|
export function isClaudeCodeSideRequest(info) {
|
|
116
116
|
return info.billingHeader && info.turnOrigin === undefined && info.tools === 0;
|
|
117
117
|
}
|
|
118
|
+
/** Most messages a Claude Code one-off side request was seen to send (title, status summary). */
|
|
119
|
+
const SIDE_REQUEST_MAX_MESSAGES = 2;
|
|
120
|
+
export function notSessionConversation(body, info) {
|
|
121
|
+
if (isThreadContinuation(body))
|
|
122
|
+
return "thread-continue";
|
|
123
|
+
// One-off requests send one or two messages. A release from before cc_turn_origin sends
|
|
124
|
+
// its main thread without one too: there, only a recognised side request is one.
|
|
125
|
+
const messages = Array.isArray(body?.messages) ? body.messages.length : 0;
|
|
126
|
+
if (info && isClaudeCodeSideRequest(info) && messages <= SIDE_REQUEST_MAX_MESSAGES &&
|
|
127
|
+
(knownSideRequestKind(info) !== undefined || sendsTurnOrigin(info.ccVersion))) {
|
|
128
|
+
return "side-request";
|
|
129
|
+
}
|
|
130
|
+
return undefined;
|
|
131
|
+
}
|
|
132
|
+
/** Claude Code releases from 2.1.281 on mark main-thread requests with cc_turn_origin. */
|
|
133
|
+
const TURN_ORIGIN_SINCE = [2, 1, 281];
|
|
134
|
+
function sendsTurnOrigin(ccVersion) {
|
|
135
|
+
const parts = (ccVersion ?? "").split(".").slice(0, 3).map(Number);
|
|
136
|
+
if (parts.length < 3 || parts.some((n) => !Number.isInteger(n)))
|
|
137
|
+
return false;
|
|
138
|
+
for (let i = 0; i < 3; i++) {
|
|
139
|
+
if (parts[i] !== TURN_ORIGIN_SINCE[i])
|
|
140
|
+
return parts[i] > TURN_ORIGIN_SINCE[i];
|
|
141
|
+
}
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
export function isThreadContinuation(body) {
|
|
145
|
+
const thread = body?.thread;
|
|
146
|
+
return thread !== null && typeof thread === "object" && thread.type === "continue";
|
|
147
|
+
}
|
|
118
148
|
export function knownSideRequestKind(info) {
|
|
119
149
|
if (info.systemHead?.includes("You are naming a coding session"))
|
|
120
150
|
return "session-title";
|
package/dist/cc-request.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cc-request.js","sourceRoot":"","sources":["../src/cc-request.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC;;;;;;;;;;;;;;GAcG;AAEH,MAAM,qBAAqB,GAAG,6BAA6B,CAAC;AAC5D,8EAA8E;AAC9E,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAmCrC,MAAM,UAAU,yBAAyB,CAAC,IAAyB;IACjE,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,MAA0C,CAAC;IAC/C,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,CAAC;YACtD,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;YACrE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YACvB,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE;gBAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,MAAM,IAAI,GAA0B;QAClC,aAAa,EAAE,MAAM,KAAK,SAAS;QACnC,QAAQ,EAAE,MAAM,EAAE,YAAY,KAAK,SAAS;QAC5C,KAAK;QACL,oBAAoB,EAAE,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS;KAClF,CAAC;IACF,IAAI,MAAM,EAAE,UAAU;QAAE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC;IAC3D,IAAI,MAAM,EAAE,aAAa;QAAE,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC;IAClE,IAAI,MAAM,EAAE,cAAc;QAAE,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,cAAc,CAAC;IACpE,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;QACjE,IAAI,IAAI;YAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC;QACpC,MAAM,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC;QAC9E,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,GAAG,OAAO,CAClB,WAAW,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,+CAA+C,EAAE,GAAG,CAAC,CACpF,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;YAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,IAAI,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC;QACjE,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,UAAU,CAAC,SAA6B;IACtD,OAAO,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAClG,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAY;IACrC,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,CAAC;IACjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,OAAO,CAAC;IACnD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9E,CAAC;AAED,qFAAqF;AACrF,SAAS,WAAW,CAAC,IAAyB;IAC5C,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,GAAG,GAAG,CAAC,KAAc,EAAE,EAAE;QAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,OAAO,IAAI,KAAK,QAAQ;oBAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBACxC,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;oBAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClG,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACpE,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,EAAE,IAAI,KAAK,QAAQ;YAAE,MAAM;QACtC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,wFAAwF;AACxF,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,MAAM,IAAI,GAAG,0BAA0B,CAAC;IACxC,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3E,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACnC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AACrC,CAAC;AAED,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAC1C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAA2B;IACjE,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;AACjF,CAAC;AAgCD,MAAM,UAAU,oBAAoB,CAAC,IAA2B;IAC9D,IAAI,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,iCAAiC,CAAC;QAAE,OAAO,eAAe,CAAC;IACzF,IAAI,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,mBAAmB,CAAC;QAAE,OAAO,kBAAkB,CAAC;IAClF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAsB;IACtD,IAAI,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,eAAe;QAAE,OAAO,SAAS,CAAC;IACjG,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,OAAO,CACL,sEAAsE;QACtE,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,qCAAqC;QAC1D,kDAAkD,CACnD,CAAC;AACJ,CAAC;AAED,MAAM,eAAe,GAAG,cAAc,CAAC;AACvC,MAAM,gBAAgB,GAAG,eAAe,CAAC;AACzC,MAAM,YAAY,GAAG,EAAE,CAAC;AAExB,MAAM,UAAU,wBAAwB,CAAC,IAAyB;IAChE,MAAM,KAAK,GAAoB,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;IACjG,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACpE,MAAM,IAAI,GAAG,QAAQ;SAClB,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,MAAM,CAAC;SACtC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;SAC/B,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;IACpD,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IACrE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC;IACrE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IAClD,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IACrD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,GAAG,SAAS,CAAC;QACrB,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvG,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC;QACxG,CAAC;QACD,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM;YAAE,KAAK,CAAC,SAAS,EAAE,CAAC;aACrC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM;YAAE,KAAK,CAAC,SAAS,EAAE,CAAC;;YAC1C,KAAK,CAAC,SAAS,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC;QAAE,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC5D,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,WAAW,CAAC,OAAY;IAC/B,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,CAAC;IACjC,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC;IAChD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,OAAO,OAAO;SACX,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SAC7G,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAsBD,MAAM,UAAU,GAAG,sBAAsB,CAAC;AAE1C,MAAM,UAAU,iBAAiB,CAAC,KAQjC;IACC,MAAM,SAAS,GAA4B;QACzC,WAAW,EAAE,KAAK,CAAC,OAAO,EAAE,WAAW;QACvC,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ;QACjC,UAAU,EAAE,KAAK,CAAC,OAAO,EAAE,UAAU;QACrC,UAAU,EAAE,KAAK,CAAC,OAAO,EAAE,UAAU;QACrC,mBAAmB,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS;QAC1C,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU;QAClC,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU;QACnC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,QAAQ,EAAE,KAAK,CAAC,OAAO;QACvB,eAAe,EAAE,KAAK,CAAC,aAAa;QACpC,eAAe,EAAE,KAAK,CAAC,KAAK;KAC7B,CAAC;IACF,MAAM,IAAI,GAA2B,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACrD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC7E,CAAC;IACD,OAAO,IAAyB,CAAC;AACnC,CAAC"}
|
|
1
|
+
{"version":3,"file":"cc-request.js","sourceRoot":"","sources":["../src/cc-request.ts"],"names":[],"mappings":"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"}
|
package/dist/claude-env.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { HttpsProxyChild } from "./https-proxy-session.js";
|
|
1
2
|
/**
|
|
2
3
|
* Environment for the Claude Code child process.
|
|
3
4
|
*
|
|
@@ -40,7 +41,29 @@
|
|
|
40
41
|
*/
|
|
41
42
|
/** Claude Code's local refusal limit under ccc: effectively never reached. */
|
|
42
43
|
export declare const UNREACHABLE_BLOCKING_LIMIT = "1000000000";
|
|
43
|
-
|
|
44
|
+
/**
|
|
45
|
+
* Message threads off. On the first-party API, Claude Code 2.1.325 sends
|
|
46
|
+
* `thread: {type: "continue", previous_message_id}` on tool-loop turns: only the messages
|
|
47
|
+
* after the continued reply, Anthropic holding the rest. ccc then can't compress mid-loop
|
|
48
|
+
* and the final index misses the last tool loop. HTTPS-proxy mode gets threads from
|
|
49
|
+
* Anthropic's rollout flag today; base-URL mode would too if the flag reached it (it
|
|
50
|
+
* does with the opt-in set). Claude Code reads this env var (a tri-state in its env
|
|
51
|
+
* schema, once per process) before that flag; "0" turns message threads off. A settings
|
|
52
|
+
* `env` value would win over it. Undocumented: if a later release drops it, threads come
|
|
53
|
+
* back and proxy.ts still forwards continuations untouched (logged as notConversation).
|
|
54
|
+
*/
|
|
55
|
+
export declare const MESSAGE_THREADS_OFF: Readonly<Record<string, string>>;
|
|
56
|
+
/**
|
|
57
|
+
* `httpsProxy` (HTTPS-proxy mode, https-proxy-session.ts): Claude Code reaches ccc
|
|
58
|
+
* through HTTPS_PROXY instead, with no custom base URL (so Remote Control stays
|
|
59
|
+
* available and no first-party override is needed); the MemTree MCP server and agents
|
|
60
|
+
* find the loopback in CCC_MEMTREE_PROXY, and Bash commands get today's variables back
|
|
61
|
+
* from CLAUDE_ENV_FILE.
|
|
62
|
+
*
|
|
63
|
+
* Both modes turn message threads off (MESSAGE_THREADS_OFF), whatever the parent exported,
|
|
64
|
+
* so every request carries the whole conversation.
|
|
65
|
+
*/
|
|
66
|
+
export declare function claudeChildEnv(parentEnv: NodeJS.ProcessEnv, anthropicBaseUrl: string, httpsProxy?: HttpsProxyChild): NodeJS.ProcessEnv;
|
|
44
67
|
/**
|
|
45
68
|
* Keep the proxy's MemTree budget in lockstep with Claude Code's own context
|
|
46
69
|
* accounting. This is the documented escape hatch for forcing native-1M
|
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,8EAA8E;AAC9E,eAAO,MAAM,0BAA0B,eAAe,CAAC;AAEvD,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,CAAC,UAAU,EAC5B,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"claude-env.d.ts","sourceRoot":"","sources":["../src/claude-env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,8EAA8E;AAC9E,eAAO,MAAM,0BAA0B,eAAe,CAAC;AAEvD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAChB,CAAC;AAElD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,CAAC,UAAU,EAC5B,gBAAgB,EAAE,MAAM,EACxB,UAAU,CAAC,EAAE,eAAe,GAC3B,MAAM,CAAC,UAAU,CA0BnB;AA0BD;;;;GAIG;AACH,wBAAgB,oCAAoC,CAClD,SAAS,EAAE,MAAM,CAAC,UAAU,GAC3B,OAAO,CAET"}
|
package/dist/claude-env.js
CHANGED
|
@@ -40,13 +40,38 @@
|
|
|
40
40
|
*/
|
|
41
41
|
/** Claude Code's local refusal limit under ccc: effectively never reached. */
|
|
42
42
|
export const UNREACHABLE_BLOCKING_LIMIT = "1000000000";
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
43
|
+
/**
|
|
44
|
+
* Message threads off. On the first-party API, Claude Code 2.1.325 sends
|
|
45
|
+
* `thread: {type: "continue", previous_message_id}` on tool-loop turns: only the messages
|
|
46
|
+
* after the continued reply, Anthropic holding the rest. ccc then can't compress mid-loop
|
|
47
|
+
* and the final index misses the last tool loop. HTTPS-proxy mode gets threads from
|
|
48
|
+
* Anthropic's rollout flag today; base-URL mode would too if the flag reached it (it
|
|
49
|
+
* does with the opt-in set). Claude Code reads this env var (a tri-state in its env
|
|
50
|
+
* schema, once per process) before that flag; "0" turns message threads off. A settings
|
|
51
|
+
* `env` value would win over it. Undocumented: if a later release drops it, threads come
|
|
52
|
+
* back and proxy.ts still forwards continuations untouched (logged as notConversation).
|
|
53
|
+
*/
|
|
54
|
+
export const MESSAGE_THREADS_OFF = Object.freeze({ CLAUDE_CODE_TETHER_LIVE: "0" });
|
|
55
|
+
/**
|
|
56
|
+
* `httpsProxy` (HTTPS-proxy mode, https-proxy-session.ts): Claude Code reaches ccc
|
|
57
|
+
* through HTTPS_PROXY instead, with no custom base URL (so Remote Control stays
|
|
58
|
+
* available and no first-party override is needed); the MemTree MCP server and agents
|
|
59
|
+
* find the loopback in CCC_MEMTREE_PROXY, and Bash commands get today's variables back
|
|
60
|
+
* from CLAUDE_ENV_FILE.
|
|
61
|
+
*
|
|
62
|
+
* Both modes turn message threads off (MESSAGE_THREADS_OFF), whatever the parent exported,
|
|
63
|
+
* so every request carries the whole conversation.
|
|
64
|
+
*/
|
|
65
|
+
export function claudeChildEnv(parentEnv, anthropicBaseUrl, httpsProxy) {
|
|
66
|
+
const childEnv = httpsProxy
|
|
67
|
+
? httpsProxyChildEnv(parentEnv, anthropicBaseUrl, httpsProxy)
|
|
68
|
+
: {
|
|
69
|
+
...parentEnv,
|
|
70
|
+
ANTHROPIC_BASE_URL: anthropicBaseUrl,
|
|
71
|
+
_CLAUDE_CODE_ASSUME_FIRST_PARTY_BASE_URL: "1",
|
|
72
|
+
};
|
|
73
|
+
childEnv.CLAUDE_CODE_RESUME_TOKEN_THRESHOLD = "1000000000";
|
|
74
|
+
Object.assign(childEnv, MESSAGE_THREADS_OFF);
|
|
50
75
|
// Wrapper-only control; do not leak it into Claude Code itself.
|
|
51
76
|
delete childEnv.CCC_AUTO_COMPACT;
|
|
52
77
|
if (parentEnv.CCC_AUTO_COMPACT === "1") {
|
|
@@ -62,6 +87,22 @@ export function claudeChildEnv(parentEnv, anthropicBaseUrl) {
|
|
|
62
87
|
}
|
|
63
88
|
return childEnv;
|
|
64
89
|
}
|
|
90
|
+
function httpsProxyChildEnv(parentEnv, loopbackUrl, httpsProxy) {
|
|
91
|
+
const childEnv = {
|
|
92
|
+
...parentEnv,
|
|
93
|
+
...httpsProxy.noProxy,
|
|
94
|
+
HTTPS_PROXY: httpsProxy.proxyUrl,
|
|
95
|
+
NODE_EXTRA_CA_CERTS: httpsProxy.caBundlePath,
|
|
96
|
+
CLAUDE_ENV_FILE: httpsProxy.bashEnvPath,
|
|
97
|
+
CCC_MEMTREE_PROXY: loopbackUrl,
|
|
98
|
+
};
|
|
99
|
+
// An outer base URL (e.g. a nested ccc) must not override the proxy route.
|
|
100
|
+
delete childEnv.ANTHROPIC_BASE_URL;
|
|
101
|
+
delete childEnv._CLAUDE_CODE_ASSUME_FIRST_PARTY_BASE_URL;
|
|
102
|
+
// Claude Code would read the lowercase one too; Bash gets the user's value back.
|
|
103
|
+
delete childEnv.https_proxy;
|
|
104
|
+
return childEnv;
|
|
105
|
+
}
|
|
65
106
|
function envFlagEnabled(value) {
|
|
66
107
|
if (value === undefined)
|
|
67
108
|
return false;
|
package/dist/claude-env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-env.js","sourceRoot":"","sources":["../src/claude-env.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"claude-env.js","sourceRoot":"","sources":["../src/claude-env.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,8EAA8E;AAC9E,MAAM,CAAC,MAAM,0BAA0B,GAAG,YAAY,CAAC;AAEvD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAC9B,MAAM,CAAC,MAAM,CAAC,EAAE,uBAAuB,EAAE,GAAG,EAAE,CAAC,CAAC;AAElD;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAC5B,SAA4B,EAC5B,gBAAwB,EACxB,UAA4B;IAE5B,MAAM,QAAQ,GAAsB,UAAU;QAC5C,CAAC,CAAC,kBAAkB,CAAC,SAAS,EAAE,gBAAgB,EAAE,UAAU,CAAC;QAC7D,CAAC,CAAC;YACA,GAAG,SAAS;YACZ,kBAAkB,EAAE,gBAAgB;YACpC,wCAAwC,EAAE,GAAG;SAC9C,CAAC;IACJ,QAAQ,CAAC,kCAAkC,GAAG,YAAY,CAAC;IAC3D,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IAE7C,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,kBAAkB,CACzB,SAA4B,EAAE,WAAmB,EAAE,UAA2B;IAE9E,MAAM,QAAQ,GAAsB;QAClC,GAAG,SAAS;QACZ,GAAG,UAAU,CAAC,OAAO;QACrB,WAAW,EAAE,UAAU,CAAC,QAAQ;QAChC,mBAAmB,EAAE,UAAU,CAAC,YAAY;QAC5C,eAAe,EAAE,UAAU,CAAC,WAAW;QACvC,iBAAiB,EAAE,WAAW;KAC/B,CAAC;IACF,2EAA2E;IAC3E,OAAO,QAAQ,CAAC,kBAAkB,CAAC;IACnC,OAAO,QAAQ,CAAC,wCAAwC,CAAC;IACzD,iFAAiF;IACjF,OAAO,QAAQ,CAAC,WAAW,CAAC;IAC5B,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/cli-args.d.ts
CHANGED
|
@@ -18,7 +18,7 @@ export declare function mayBePrintInvocation(args: string[]): boolean;
|
|
|
18
18
|
*/
|
|
19
19
|
export declare function isVersionRequest(args: readonly string[]): boolean;
|
|
20
20
|
/** ccc's own subcommands, which start no Claude session. */
|
|
21
|
-
declare const SUBCOMMANDS: readonly ["fetch", "memtree-mcp", "link"];
|
|
21
|
+
declare const SUBCOMMANDS: readonly ["fetch", "memtree-mcp", "link", "desktop"];
|
|
22
22
|
export type CccEnvironment = "production" | "staging" | "local";
|
|
23
23
|
/** The environment a leading `local`/`staging` word selects (else production). */
|
|
24
24
|
export declare function environmentOf(args: readonly string[]): CccEnvironment;
|
package/dist/cli-args.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-args.d.ts","sourceRoot":"","sources":["../src/cli-args.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,+EAA+E;AAC/E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAMzD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAU5D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAIjE;AAED,4DAA4D;AAC5D,QAAA,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"cli-args.d.ts","sourceRoot":"","sources":["../src/cli-args.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,+EAA+E;AAC/E,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAMzD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAU5D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAIjE;AAED,4DAA4D;AAC5D,QAAA,MAAM,WAAW,sDAAuD,CAAC;AAGzE,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC;AAEhE,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,cAAc,CAErE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,SAAS,MAAM,EAAE,GACtB;IAAE,IAAI,EAAE,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,SAAS,CAIpE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,WAAW,CAmB5D;AAED,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK,CAAC;AACnF,eAAO,MAAM,uBAAuB,EAAE,SAAS,oBAAoB,EAMlE,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,oBAAoB,GAAG,SAAS,CAKlC;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,EACjD,SAAS,EAAE,MAAM,GAChB;IAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAWxD;AAKD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,MAAM,GAAG,SAAS,GACtB;IAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAmBjD"}
|
package/dist/cli-args.js
CHANGED
|
@@ -37,7 +37,7 @@ export function isVersionRequest(args) {
|
|
|
37
37
|
return rest.length === 1 && (rest[0] === "--version" || rest[0] === "-v");
|
|
38
38
|
}
|
|
39
39
|
/** ccc's own subcommands, which start no Claude session. */
|
|
40
|
-
const SUBCOMMANDS = ["fetch", "memtree-mcp", "link"];
|
|
40
|
+
const SUBCOMMANDS = ["fetch", "memtree-mcp", "link", "desktop"];
|
|
41
41
|
const ENVIRONMENT_WORDS = ["local", "staging"];
|
|
42
42
|
/** The environment a leading `local`/`staging` word selects (else production). */
|
|
43
43
|
export function environmentOf(args) {
|
package/dist/cli-args.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-args.js","sourceRoot":"","sources":["../src/cli-args.ts"],"names":[],"mappings":"AAMA,+EAA+E;AAC/E,MAAM,UAAU,iBAAiB,CAAC,IAAc;IAC9C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QAC/B,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;IACrD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAc;IACjD,sEAAsE;IACtE,0EAA0E;IAC1E,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAC;QACjE,4EAA4E;QAC5E,8EAA8E;QAC9E,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;IAC5C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAuB;IACtD,MAAM,KAAK,GAAG,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/B,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;AAC5E,CAAC;AAED,4DAA4D;AAC5D,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,CAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"cli-args.js","sourceRoot":"","sources":["../src/cli-args.ts"],"names":[],"mappings":"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"}
|
package/dist/cli-main.js
CHANGED
|
@@ -61,6 +61,9 @@ import { probeAnswersForSession, probeClaudeAuthStatus, skippedProbe, } from "./
|
|
|
61
61
|
import { mayWaitForEnter, presentSignInNotice, sessionProbe, signInNotice, signInNoticeApplies, SignInTracker, } from "./sign-in-notice.js";
|
|
62
62
|
import { exitResumeHint } from "./resume-hint.js";
|
|
63
63
|
import { urlOpenerFor } from "./open-url.js";
|
|
64
|
+
import { desktopServiceDownLine, runDesktopCommand } from "./desktop-command.js";
|
|
65
|
+
import { httpsProxyModeDecision, skippedNoticeText } from "./https-proxy-eligibility.js";
|
|
66
|
+
import { startHttpsProxySession, } from "./https-proxy-session.js";
|
|
64
67
|
// MemTree (polychat) API hosts — /v1/context_memory lives at the app root.
|
|
65
68
|
const POLYCHAT_BASE_URL = "https://api.polychat.co";
|
|
66
69
|
const STAGING_BASE_URL = "https://polychat-staging-421312241218.us-west2.run.app";
|
|
@@ -132,6 +135,9 @@ async function handleInvalidKey(check, ctx) {
|
|
|
132
135
|
function saveApiKey(mode, apiKey, diagnostics) {
|
|
133
136
|
diagnostics.record("key_saved");
|
|
134
137
|
diagnostics.setApiKey(apiKey);
|
|
138
|
+
saveKeyFor(mode, apiKey);
|
|
139
|
+
}
|
|
140
|
+
function saveKeyFor(mode, apiKey) {
|
|
135
141
|
if (mode === "local")
|
|
136
142
|
setLocalPolychatApiKey(apiKey);
|
|
137
143
|
else if (mode === "staging")
|
|
@@ -363,6 +369,22 @@ async function main() {
|
|
|
363
369
|
process.exitCode = await runLinkCommand(subcommand.args, linkDeps(mode));
|
|
364
370
|
return;
|
|
365
371
|
}
|
|
372
|
+
// `ccc [staging|local] desktop ...`: the Claude desktop app's service (desktop-command.ts).
|
|
373
|
+
if (subcommand?.name === "desktop") {
|
|
374
|
+
process.exitCode = await runDesktopCommand(subcommand.args, {
|
|
375
|
+
mode,
|
|
376
|
+
memtreeBaseUrl: memtreeBaseUrlFor(mode),
|
|
377
|
+
apiKey: () => storedApiKey(mode),
|
|
378
|
+
promptForKey: async () => {
|
|
379
|
+
const key = await promptForApiKey(mode, process.stdout);
|
|
380
|
+
if (!key)
|
|
381
|
+
return undefined;
|
|
382
|
+
saveKeyFor(mode, key);
|
|
383
|
+
return key;
|
|
384
|
+
},
|
|
385
|
+
});
|
|
386
|
+
return;
|
|
387
|
+
}
|
|
366
388
|
const claudeArgs = mode !== "production" ? filteredArgs.slice(1) : filteredArgs;
|
|
367
389
|
// Interactive UI only: print/non-TTY invocations are programmatic
|
|
368
390
|
// interfaces whose output must stay byte-for-byte vanilla, and they get no
|
|
@@ -380,6 +402,10 @@ async function main() {
|
|
|
380
402
|
if (isDebugMode) {
|
|
381
403
|
console.log("\x1b[1;36m🔍 DEBUG MODE\x1b[0m\n");
|
|
382
404
|
}
|
|
405
|
+
// Set up for the desktop app but its service is down: those sessions are failing.
|
|
406
|
+
const desktopDown = interactiveUi ? await desktopServiceDownLine(mode) : undefined;
|
|
407
|
+
if (desktopDown)
|
|
408
|
+
console.log(`\x1b[1;33m${desktopDown}\x1b[0m\n`);
|
|
383
409
|
if (mode === "local") {
|
|
384
410
|
console.log("\x1b[1;33m🏠 LOCAL MODE\x1b[0m\n");
|
|
385
411
|
}
|
|
@@ -387,13 +413,9 @@ async function main() {
|
|
|
387
413
|
console.log("\x1b[1;35m🚧 STAGING MODE\x1b[0m\n");
|
|
388
414
|
}
|
|
389
415
|
// CCC_LOCAL_BASE_URL: local mode's server elsewhere than :8080 (tests use a free port).
|
|
390
|
-
const memtreeBaseUrl = mode
|
|
391
|
-
mode === "staging" ? STAGING_BASE_URL :
|
|
392
|
-
POLYCHAT_BASE_URL;
|
|
416
|
+
const memtreeBaseUrl = memtreeBaseUrlFor(mode);
|
|
393
417
|
// Get or prompt for the MemTree API key (separate keys per environment)
|
|
394
|
-
let polychatApiKey = mode
|
|
395
|
-
mode === "staging" ? getStagingPolychatApiKey() :
|
|
396
|
-
getPolychatApiKey();
|
|
418
|
+
let polychatApiKey = storedApiKey(mode);
|
|
397
419
|
// Client diagnostics (diagnostics.ts): versions, OS and errors, never content.
|
|
398
420
|
// Started before the key prompt so a signup that stalls there is visible too.
|
|
399
421
|
const diagnostics = startDiagnostics(mode, memtreeBaseUrl, polychatApiKey);
|
|
@@ -609,7 +631,13 @@ async function main() {
|
|
|
609
631
|
const memtreeLinkPlacement = memtreeLinkPlacementFromEnv(process.env.CCC_MEMTREE_LINK);
|
|
610
632
|
const memtreeLinkStore = new MemtreeLinkStore();
|
|
611
633
|
const transcriptUsage = new ClaudeTranscriptUsage();
|
|
634
|
+
// Opt-in HTTPS-proxy mode (Remote Control): skipped, with one line, where it can't work.
|
|
635
|
+
const httpsProxy = httpsProxySessionFor(claudeArgs, config, isDebugMode);
|
|
636
|
+
// Set just before Claude Code starts: undefined if it runs in base-URL mode after all,
|
|
637
|
+
// whose model calls never pass the interception (so no missing-call warning then).
|
|
638
|
+
let proxyModeChild;
|
|
612
639
|
const proxy = await startProxy({
|
|
640
|
+
...(httpsProxy ? { httpsProxyMode: httpsProxy.proxyOptions } : {}),
|
|
613
641
|
memtree,
|
|
614
642
|
debug: isDebugMode,
|
|
615
643
|
reqlog: observedLog,
|
|
@@ -660,7 +688,9 @@ async function main() {
|
|
|
660
688
|
// "✔ ccc X installed · restart ccc to use it" (or the hint after a failed
|
|
661
689
|
// install) on a later SessionStart of this session, once.
|
|
662
690
|
sessionStartNotice: sessionStartLines(autoUpdate, signInSessionLine, statuslineSessionLine),
|
|
663
|
-
promptSubmitNotice: interactiveUi
|
|
691
|
+
promptSubmitNotice: interactiveUi
|
|
692
|
+
? () => joinPromptLines(rateLimits.promptLine(), proxyModeChild ? httpsProxy?.promptLine() : undefined)
|
|
693
|
+
: undefined,
|
|
664
694
|
// `/memtree-view` opens its link only where a browser would appear in
|
|
665
695
|
// front of the user: interactive (also not `-pc`-style print), not SSH
|
|
666
696
|
// or CI (open-url.ts).
|
|
@@ -767,8 +797,9 @@ async function main() {
|
|
|
767
797
|
// Never set ANTHROPIC_AUTH_TOKEN / ANTHROPIC_API_KEY — Claude Code keeps its
|
|
768
798
|
// native login and sends its own OAuth bearer to the local base URL.
|
|
769
799
|
const claudeStartedAt = Date.now();
|
|
800
|
+
proxyModeChild = httpsProxyChild(httpsProxy, proxy.port, isDebugMode);
|
|
770
801
|
const child = spawn(claude.command, childArgs, {
|
|
771
|
-
env: withClaudeOnPath(claudeChildEnv(process.env, `http://127.0.0.1:${proxy.port}
|
|
802
|
+
env: withClaudeOnPath(claudeChildEnv(process.env, `http://127.0.0.1:${proxy.port}`, proxyModeChild), claude),
|
|
772
803
|
stdio: "inherit",
|
|
773
804
|
});
|
|
774
805
|
// Its memtree MCP server asks the proxy which session this process is on.
|
|
@@ -1034,4 +1065,64 @@ function pausedUpdateLine(autoUpdate) {
|
|
|
1034
1065
|
return updateInstalledNoticeText(autoUpdate.bannerInstalled, color);
|
|
1035
1066
|
return autoUpdate?.bannerUpdate ? updateNoticeText(autoUpdate.bannerUpdate, color) : null;
|
|
1036
1067
|
}
|
|
1068
|
+
/**
|
|
1069
|
+
* The session's HTTPS-proxy mode (https-proxy-session.ts), when asked for
|
|
1070
|
+
* (CCC_HTTPS_PROXY_MODE or the `httpsProxyMode` config key) and nothing rules it out
|
|
1071
|
+
* (https-proxy-eligibility.ts); otherwise undefined: today's base-URL mode, with one line
|
|
1072
|
+
* saying why when it was asked for. Its temp files go when ccc exits.
|
|
1073
|
+
*/
|
|
1074
|
+
function httpsProxySessionFor(claudeArgs, config, debug) {
|
|
1075
|
+
const decision = httpsProxyModeDecision({
|
|
1076
|
+
env: process.env, configured: config.httpsProxyMode, platform: process.platform,
|
|
1077
|
+
claudeArgs, cwd: process.cwd(),
|
|
1078
|
+
});
|
|
1079
|
+
if (decision.mode === "base-url") {
|
|
1080
|
+
if (decision.requested)
|
|
1081
|
+
console.log(`${skippedNoticeText(decision.reason)}\n`);
|
|
1082
|
+
return undefined;
|
|
1083
|
+
}
|
|
1084
|
+
try {
|
|
1085
|
+
const session = startHttpsProxySession(process.env, process.env.CCC_PROXY_TRACE);
|
|
1086
|
+
process.on("exit", session.cleanup);
|
|
1087
|
+
console.log("\x1b[2mHTTPS-proxy mode: /remote-control is available in this session\x1b[0m\n");
|
|
1088
|
+
return session;
|
|
1089
|
+
}
|
|
1090
|
+
catch (err) {
|
|
1091
|
+
console.log(`${skippedNoticeText(`its setup failed (${String(err)})`)}\n`);
|
|
1092
|
+
if (debug)
|
|
1093
|
+
console.error(`[DEBUG] HTTPS-proxy mode setup failed: ${String(err)}`);
|
|
1094
|
+
return undefined;
|
|
1095
|
+
}
|
|
1096
|
+
}
|
|
1097
|
+
/** Claude Code's env pieces for proxy mode; undefined (base-URL mode) if they can't be written. */
|
|
1098
|
+
function httpsProxyChild(session, port, debug) {
|
|
1099
|
+
if (!session)
|
|
1100
|
+
return undefined;
|
|
1101
|
+
try {
|
|
1102
|
+
return session.childFor(port);
|
|
1103
|
+
}
|
|
1104
|
+
catch (err) {
|
|
1105
|
+
// The loopback still serves base-URL requests: this session just has no /rc.
|
|
1106
|
+
console.log(`${skippedNoticeText(`its Bash env file couldn't be written`)}\n`);
|
|
1107
|
+
if (debug)
|
|
1108
|
+
console.error(`[DEBUG] HTTPS-proxy mode: ${String(err)}`);
|
|
1109
|
+
return undefined;
|
|
1110
|
+
}
|
|
1111
|
+
}
|
|
1112
|
+
function joinPromptLines(...lines) {
|
|
1113
|
+
const present = lines.filter((line) => typeof line === "string" && line !== "");
|
|
1114
|
+
return present.length ? present.join("\n") : undefined;
|
|
1115
|
+
}
|
|
1116
|
+
/** MemTree's API host for a mode; CCC_LOCAL_BASE_URL moves local mode's (tests: a free port). */
|
|
1117
|
+
function memtreeBaseUrlFor(mode) {
|
|
1118
|
+
return mode === "local" ? (process.env.CCC_LOCAL_BASE_URL || LOCAL_BASE_URL) :
|
|
1119
|
+
mode === "staging" ? STAGING_BASE_URL :
|
|
1120
|
+
POLYCHAT_BASE_URL;
|
|
1121
|
+
}
|
|
1122
|
+
/** The saved MemTree key for a mode (separate keys per environment). */
|
|
1123
|
+
function storedApiKey(mode) {
|
|
1124
|
+
return mode === "local" ? getLocalPolychatApiKey() :
|
|
1125
|
+
mode === "staging" ? getStagingPolychatApiKey() :
|
|
1126
|
+
getPolychatApiKey();
|
|
1127
|
+
}
|
|
1037
1128
|
//# sourceMappingURL=cli-main.js.map
|