claude-code-infinite 1.0.22 → 1.0.24

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.
@@ -0,0 +1,168 @@
1
+ /**
2
+ * `ccc link <session-id>`: print the newest MemTree page of one of the
3
+ * user's Claude Code sessions, for scripts and agents (docs/headless.md).
4
+ *
5
+ * Asks the server's owner-only `GET /v1/memtree/sessions` (what the `list`
6
+ * MCP tool relays) with the saved key, so only the caller's own sessions can
7
+ * answer. `q` also matches titles and snippets that quote the id, so only an
8
+ * item whose `session_id` is exactly this session counts, and cursors are
9
+ * followed (bounded) when other sessions quote it. The printed URL is the
10
+ * server's own `latest_tree.links.url`: shortening a pinned reference can
11
+ * select another tree (memtree-newest.ts).
12
+ *
13
+ * stdout carries the URL (or `--json`) and nothing else; everything else
14
+ * goes to stderr.
15
+ */
16
+ import { CLIENT_NAME, CLIENT_VERSION } from "./memtree.js";
17
+ import { SESSION_ID, validatedTreeUrl } from "./memtree-newest.js";
18
+ /** The whole lookup, every page included, gives up after this long. */
19
+ export const LINK_TIMEOUT_MS = 5_000;
20
+ export const LINK_EXIT = { ok: 0, error: 1, usage: 2, noTree: 3 };
21
+ /** The server's maximum page, so a busy match rarely needs a second request. */
22
+ const SESSIONS_LIMIT = 100;
23
+ const MAX_PAGES = 10;
24
+ const ERROR_PREVIEW_CHARS = 300;
25
+ export const LINK_USAGE = "usage: ccc [staging|local] link <session-id> [--json]\n" +
26
+ " Prints the session's newest MemTree page URL.\n" +
27
+ " Exit 0 printed, 1 no saved key or the server could not be reached,\n" +
28
+ " 2 bad invocation, 3 the session has no MemTree yet.";
29
+ /** Exit codes: LINK_EXIT. */
30
+ export async function runLinkCommand(argv, deps) {
31
+ const parsed = parseLinkArgs(argv);
32
+ if ("error" in parsed) {
33
+ deps.stderr(`${parsed.error ? `ccc link: ${parsed.error}\n` : ""}${LINK_USAGE}\n`);
34
+ return LINK_EXIT.usage;
35
+ }
36
+ if (!deps.apiKey) {
37
+ deps.stderr(`ccc link: no MemTree key saved. Run \`${deps.command}\` once to save one.\n`);
38
+ return LINK_EXIT.error;
39
+ }
40
+ const result = await findSessionLink(parsed.sessionId, deps);
41
+ if (result.kind === "error") {
42
+ deps.stderr(`ccc link: ${result.message}\n`);
43
+ return LINK_EXIT.error;
44
+ }
45
+ if (result.kind === "none") {
46
+ deps.stderr(`ccc link: ${noneMessage(parsed.sessionId, result.reason)}\n`);
47
+ return LINK_EXIT.noTree;
48
+ }
49
+ deps.stdout(`${parsed.json ? JSON.stringify(result.link) : result.link.url}\n`);
50
+ return LINK_EXIT.ok;
51
+ }
52
+ /** `<session-id> [--json]`, in either order; anything else is a usage error. */
53
+ export function parseLinkArgs(argv) {
54
+ const json = argv.includes("--json");
55
+ const rest = argv.filter((arg) => arg !== "--json");
56
+ if (rest.length === 0 || rest.includes("--help") || rest.includes("-h"))
57
+ return { error: "" };
58
+ if (rest.length > 1)
59
+ return { error: `unexpected arguments: ${rest.slice(1).join(" ")}` };
60
+ if (!SESSION_ID.test(rest[0]))
61
+ return { error: `not a session id: ${rest[0]}` };
62
+ return { sessionId: rest[0], json };
63
+ }
64
+ /** Pages through the owner's sessions matching the id, under one deadline. */
65
+ export async function findSessionLink(sessionId, deps) {
66
+ // A referenced timer, not AbortSignal.timeout (unreferenced): the deadline
67
+ // must fire even when nothing else keeps the event loop alive.
68
+ const controller = new AbortController();
69
+ const timer = setTimeout(() => controller.abort(), deps.timeoutMs ?? LINK_TIMEOUT_MS);
70
+ try {
71
+ return await lookupPages(sessionId, deps, controller.signal);
72
+ }
73
+ finally {
74
+ clearTimeout(timer);
75
+ }
76
+ }
77
+ async function lookupPages(sessionId, deps, signal) {
78
+ const query = new URLSearchParams({ q: sessionId, limit: String(SESSIONS_LIMIT) });
79
+ const seen = new Set();
80
+ try {
81
+ for (let page = 0; page < MAX_PAGES; page++) {
82
+ const body = await fetchSessionsPage(deps, query, signal);
83
+ if (typeof body === "string")
84
+ return { kind: "error", message: body };
85
+ const item = body.sessions.find((s) => sameSession(s?.session_id, sessionId));
86
+ if (item)
87
+ return linkFromItem(item);
88
+ const cursor = body.next_cursor;
89
+ if (cursor === null || cursor === undefined || cursor === "") {
90
+ return { kind: "none", reason: "no-session" };
91
+ }
92
+ if (typeof cursor !== "string" || seen.has(cursor)) {
93
+ return { kind: "error", message: "unexpected sessions listing from the server" };
94
+ }
95
+ seen.add(cursor);
96
+ query.set("cursor", cursor);
97
+ }
98
+ return { kind: "error", message: "too many sessions match that id" };
99
+ }
100
+ catch (err) {
101
+ return { kind: "error", message: networkMessage(err, signal) };
102
+ }
103
+ }
104
+ /** One page of the listing, or an error message for a refusal or a bad body. */
105
+ async function fetchSessionsPage(deps, query, signal) {
106
+ const base = deps.baseUrl.replace(/\/$/, "");
107
+ const res = await deps.fetch(`${base}/v1/memtree/sessions?${query}`, {
108
+ signal,
109
+ redirect: "error", // the bearer header never follows a redirect
110
+ headers: {
111
+ authorization: `Bearer ${deps.apiKey}`,
112
+ accept: "application/json",
113
+ "x-client": CLIENT_NAME,
114
+ "x-client-version": CLIENT_VERSION,
115
+ },
116
+ });
117
+ const text = await res.text();
118
+ if (!res.ok)
119
+ return `HTTP ${res.status} from the MemTree server: ${preview(text)}`;
120
+ try {
121
+ const body = JSON.parse(text);
122
+ if (Array.isArray(body?.sessions))
123
+ return body;
124
+ }
125
+ catch {
126
+ // Falls through to the message below.
127
+ }
128
+ return "unexpected sessions listing from the server";
129
+ }
130
+ function linkFromItem(item) {
131
+ const tree = item.latest_tree;
132
+ if (!tree)
133
+ return { kind: "none", reason: "no-tree" };
134
+ const raw = typeof tree.links?.url === "string" ? tree.links.url : undefined;
135
+ const url = raw ? validatedTreeUrl(raw) : undefined;
136
+ if (!url)
137
+ return { kind: "error", message: "the server sent no usable tree URL" };
138
+ const ref = typeof tree.ref === "string" && tree.ref ? tree.ref : tree.request_id;
139
+ return {
140
+ kind: "found",
141
+ link: {
142
+ session_id: String(item.session_id),
143
+ url,
144
+ tree: typeof ref === "string" ? ref : "",
145
+ updated_at: typeof item.last_at === "string" ? item.last_at : null,
146
+ },
147
+ };
148
+ }
149
+ /** Session ids are matched as the server's `q` does: ignoring case. */
150
+ function sameSession(candidate, sessionId) {
151
+ return typeof candidate === "string" && candidate.toLowerCase() === sessionId.toLowerCase();
152
+ }
153
+ function noneMessage(sessionId, reason) {
154
+ return reason === "no-tree"
155
+ ? `session ${sessionId} has no MemTree yet`
156
+ : `no session ${sessionId} on this key yet (check the id; a new session appears ` +
157
+ "once its first request reaches MemTree)";
158
+ }
159
+ function networkMessage(err, signal) {
160
+ if (signal.aborted)
161
+ return "the MemTree server did not answer in time";
162
+ const detail = err instanceof Error ? err.message : String(err);
163
+ return `could not reach the MemTree server (${detail})`;
164
+ }
165
+ function preview(text) {
166
+ return text.replace(/\s+/g, " ").trim().slice(0, ERROR_PREVIEW_CHARS);
167
+ }
168
+ //# sourceMappingURL=link-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-command.js","sourceRoot":"","sources":["../src/link-command.ts"],"names":[],"mappings":"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"}
@@ -11,8 +11,26 @@ export interface MemtreeMcpConfigFile {
11
11
  close(): void;
12
12
  }
13
13
  export declare function writeMemtreeMcpConfig(proxyUrl: string, tempRoot?: string): MemtreeMcpConfigFile;
14
+ export interface MemtreeMcpPlan {
15
+ /** ccc registers its own server (`--mcp-config` + `--allowedTools`). */
16
+ register: boolean;
17
+ /** The tools the session will have (bare names): the `x-memtree-tools`
18
+ * value, and what ccc pre-allows when it registers. Empty: no header. */
19
+ tools: string[];
20
+ }
21
+ /**
22
+ * Whether ccc adds its `memtree` server to this Claude argv, and which tools
23
+ * the session then has. The same for interactive and print/non-TTY runs.
24
+ */
25
+ export declare function planMemtreeMcp(args: readonly string[], env: NodeJS.ProcessEnv, cwd?: string): MemtreeMcpPlan;
14
26
  /** Prepend the options; `=` forms so no variadic option swallows user argv. */
15
- export declare function withMemtreeMcpArgs(args: readonly string[], configPath: string): string[];
27
+ export declare function withMemtreeMcpArgs(args: readonly string[], configPath: string, tools?: readonly string[]): string[];
28
+ /**
29
+ * The memtree tools (bare names) that `--disallowedTools` /
30
+ * `--disallowed-tools` rules in Claude's argv name: the tool itself, the
31
+ * whole server (`mcp__memtree`), or a `*` pattern such as `mcp__memtree__*`.
32
+ */
33
+ export declare function disallowedMemtreeTools(args: readonly string[]): string[];
16
34
  /**
17
35
  * The `--mcp-config` values in Claude's argv (before `--`): each is a file
18
36
  * path or an inline JSON string. Handles `--mcp-config a b` (variadic, up to
@@ -20,9 +38,14 @@ export declare function withMemtreeMcpArgs(args: readonly string[], configPath:
20
38
  */
21
39
  export declare function mcpConfigArgs(args: readonly string[]): string[];
22
40
  /**
23
- * Whether Claude's argv already configures ccc's `memtree` server: a server
24
- * named `memtree` whose command line runs `memtree-mcp` (`ccc memtree-mcp` or
25
- * dist/memtree-mcp.js). Unreadable or malformed configs count as no.
41
+ * The server named `memtree` in the argv's `--mcp-config` values, judged by
42
+ * the last value that defines one (Claude Code keeps the last definition of
43
+ * a name): "ccc" when it runs `memtree-mcp` (`ccc memtree-mcp`, `ccc staging
44
+ * memtree-mcp`, or dist/memtree-mcp.js), "other" for someone else's, and
45
+ * "unknown" when a value ccc cannot read or parse comes after it (it may
46
+ * define one), "none" otherwise. Only `--mcp-config` can override ccc's
47
+ * server: it beats a project `.mcp.json` server of the same name (checked on
48
+ * Claude Code 2.1.302), and plugin servers get `plugin_…` names.
26
49
  */
27
- export declare function argsConfigureMemtreeMcp(args: readonly string[], cwd?: string): boolean;
50
+ export declare function memtreeServerInArgs(args: readonly string[], cwd?: string): "ccc" | "other" | "unknown" | "none";
28
51
  //# sourceMappingURL=memtree-mcp-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"memtree-mcp-config.d.ts","sourceRoot":"","sources":["../src/memtree-mcp-config.ts"],"names":[],"mappings":"AAoCA,+BAA+B;AAC/B,eAAO,MAAM,0BAA0B,QAA+B,CAAC;AACvE,+DAA+D;AAC/D,eAAO,MAAM,qBAAqB,UAEjC,CAAC;AACF,eAAO,MAAM,kBAAkB,QAA8D,CAAC;AAE9F,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAEtE;AAED,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAazD;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,IAAI,IAAI,CAAC;CACf;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,MAAoB,GAC7B,oBAAoB,CAatB;AAED,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAMxF;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAa/D;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAqBT"}
1
+ {"version":3,"file":"memtree-mcp-config.d.ts","sourceRoot":"","sources":["../src/memtree-mcp-config.ts"],"names":[],"mappings":"AA4CA,+BAA+B;AAC/B,eAAO,MAAM,0BAA0B,QAA+B,CAAC;AACvE,+DAA+D;AAC/D,eAAO,MAAM,qBAAqB,UAA0C,CAAC;AAC7E,eAAO,MAAM,kBAAkB,QAA8D,CAAC;AAE9F,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAEtE;AAED,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAazD;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,IAAI,IAAI,CAAC;CACf;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,MAAoB,GAC7B,oBAAoB,CAatB;AAED,MAAM,WAAW,cAAc;IAC7B,wEAAwE;IACxE,QAAQ,EAAE,OAAO,CAAC;IAClB;6EACyE;IACzE,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,GAAG,GAAE,MAAsB,GAC1B,cAAc,CAShB;AAED,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,UAAU,EAAE,MAAM,EAClB,KAAK,GAAE,SAAS,MAAM,EAAuB,GAC5C,MAAM,EAAE,CAMV;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAOxE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAE/D;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,GAAE,MAAsB,GAC1B,KAAK,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAQtC"}
@@ -5,23 +5,31 @@
5
5
  * the tools to the memory it returns, so it must never be sent when the tools
6
6
  * are absent.
7
7
  *
8
- * - Interactive ccc sessions: ccc writes a one-server config to a temp dir
9
- * and passes `--mcp-config=<file>`. `--mcp-config` (unlike a plugin's
10
- * `.mcp.json`, whose tools Claude Code would name `mcp__plugin_ccc_…`) keeps
11
- * the tool names `mcp__memtree__*` and still loads under a user's
12
- * `--strict-mcp-config`. The `=` form matters: `--mcp-config` is variadic,
13
- * and a following positional prompt would otherwise be read as a config.
14
- * The tools are read-only views of the user's own session, so they are
15
- * pre-allowed with `--allowedTools=` as well. The server sets Claude Code's
16
- * `alwaysLoad: true`, so its tools are in the prompt from the first turn
17
- * (and after --resume) instead of deferred behind tool search; this applies
18
- * to this server only, not the user's other MCP servers. Claude Code also
19
- * waits (up to its 5s connect timeout) for the server before that turn.
20
- * `CCC_MEMTREE_MCP=0` turns this off.
21
- * - Print (`-p`) and non-TTY runs get nothing automatically (their output and
22
- * tool set stay vanilla). A caller that wants the tools passes its own
23
- * `--mcp-config` naming a server `memtree` run by `ccc memtree-mcp` (or
24
- * dist/memtree-mcp.js); ccc detects it and sends the header.
8
+ * - Every ccc session, interactive or print (`-p`) / non-TTY: ccc writes a
9
+ * one-server config to a temp dir and passes `--mcp-config=<file>`.
10
+ * `--mcp-config` (unlike a plugin's `.mcp.json`, whose tools Claude Code
11
+ * would name `mcp__plugin_ccc_…`) keeps the tool names `mcp__memtree__*` and
12
+ * still loads under a user's `--strict-mcp-config`. The `=` form matters:
13
+ * `--mcp-config` is variadic, and a following positional prompt would
14
+ * otherwise be read as a config. The tools are read-only views of the
15
+ * user's own sessions, so they are pre-allowed with `--allowedTools=` as
16
+ * well: Claude Code adds repeated `--allowedTools` lists together, so a
17
+ * caller's own list is kept and only these tools are added. The server sets
18
+ * Claude Code's `alwaysLoad: true`, so its tools are in the prompt from the
19
+ * first turn (and after --resume) instead of deferred behind tool search;
20
+ * this applies to this server only, not the user's other MCP servers.
21
+ * Claude Code also waits (up to its 5s connect timeout) for the server
22
+ * before that turn; it is a local Node process, so that is milliseconds.
23
+ * The server writes only to its own stdio pipe, so `-p` output (text, json,
24
+ * stream-json) is unchanged apart from what the model does with the tools.
25
+ * - The caller's choices win (planMemtreeMcp): `CCC_MEMTREE_MCP=0` turns it
26
+ * off; a caller's own `--mcp-config` server named `memtree` (or a config
27
+ * ccc cannot read, which might define one) is kept and ccc adds and
28
+ * pre-allows nothing (if it runs `ccc memtree-mcp` the header is still
29
+ * sent); tools named by `--disallowedTools` (a tool, `mcp__memtree`,
30
+ * or a `*` pattern) are neither pre-allowed nor named in the header, and
31
+ * with all four disallowed ccc registers nothing. Claude Code applies a
32
+ * deny over an allow in any case.
25
33
  */
26
34
  import fs from "node:fs";
27
35
  import os from "node:os";
@@ -32,7 +40,7 @@ import { CLIENT_VERSION } from "./memtree.js";
32
40
  /** `x-memtree-tools` value. */
33
41
  export const MEMTREE_TOOLS_HEADER_VALUE = MEMTREE_TOOL_NAMES.join(",");
34
42
  /** Claude Code's names for the tools, for `--allowedTools`. */
35
- export const MEMTREE_ALLOWED_TOOLS = MEMTREE_TOOL_NAMES.map((tool) => `mcp__${MEMTREE_MCP_SERVER_NAME}__${tool}`);
43
+ export const MEMTREE_ALLOWED_TOOLS = MEMTREE_TOOL_NAMES.map(memtreeToolName);
36
44
  export const MEMTREE_MCP_SCRIPT = fileURLToPath(new URL("./memtree-mcp.js", import.meta.url));
37
45
  export function memtreeMcpEnabledByEnv(env) {
38
46
  return env.CCC_MEMTREE_MCP !== "0";
@@ -67,30 +75,81 @@ export function writeMemtreeMcpConfig(proxyUrl, tempRoot = os.tmpdir()) {
67
75
  },
68
76
  };
69
77
  }
78
+ /**
79
+ * Whether ccc adds its `memtree` server to this Claude argv, and which tools
80
+ * the session then has. The same for interactive and print/non-TTY runs.
81
+ */
82
+ export function planMemtreeMcp(args, env, cwd = process.cwd()) {
83
+ const disallowed = new Set(disallowedMemtreeTools(args));
84
+ const tools = MEMTREE_TOOL_NAMES.filter((tool) => !disallowed.has(tool));
85
+ const callerServer = memtreeServerInArgs(args, cwd);
86
+ if (callerServer === "ccc")
87
+ return { register: false, tools };
88
+ if (callerServer !== "none" || !memtreeMcpEnabledByEnv(env) || tools.length === 0) {
89
+ return { register: false, tools: [] };
90
+ }
91
+ return { register: true, tools };
92
+ }
70
93
  /** Prepend the options; `=` forms so no variadic option swallows user argv. */
71
- export function withMemtreeMcpArgs(args, configPath) {
94
+ export function withMemtreeMcpArgs(args, configPath, tools = MEMTREE_TOOL_NAMES) {
72
95
  return [
73
96
  `--mcp-config=${configPath}`,
74
- `--allowedTools=${MEMTREE_ALLOWED_TOOLS.join(",")}`,
97
+ `--allowedTools=${tools.map(memtreeToolName).join(",")}`,
75
98
  ...args,
76
99
  ];
77
100
  }
101
+ /**
102
+ * The memtree tools (bare names) that `--disallowedTools` /
103
+ * `--disallowed-tools` rules in Claude's argv name: the tool itself, the
104
+ * whole server (`mcp__memtree`), or a `*` pattern such as `mcp__memtree__*`.
105
+ */
106
+ export function disallowedMemtreeTools(args) {
107
+ const rules = optionValues(args, ["--disallowedTools", "--disallowed-tools"])
108
+ .flatMap((value) => value.split(/[\s,]+/))
109
+ .filter(Boolean);
110
+ return MEMTREE_TOOL_NAMES.filter((tool) => rules.some((rule) => ruleMatchesMemtreeTool(rule, tool)));
111
+ }
78
112
  /**
79
113
  * The `--mcp-config` values in Claude's argv (before `--`): each is a file
80
114
  * path or an inline JSON string. Handles `--mcp-config a b` (variadic, up to
81
115
  * the next option) and `--mcp-config=a`.
82
116
  */
83
117
  export function mcpConfigArgs(args) {
118
+ return optionValues(args, ["--mcp-config"]);
119
+ }
120
+ /**
121
+ * The server named `memtree` in the argv's `--mcp-config` values, judged by
122
+ * the last value that defines one (Claude Code keeps the last definition of
123
+ * a name): "ccc" when it runs `memtree-mcp` (`ccc memtree-mcp`, `ccc staging
124
+ * memtree-mcp`, or dist/memtree-mcp.js), "other" for someone else's, and
125
+ * "unknown" when a value ccc cannot read or parse comes after it (it may
126
+ * define one), "none" otherwise. Only `--mcp-config` can override ccc's
127
+ * server: it beats a project `.mcp.json` server of the same name (checked on
128
+ * Claude Code 2.1.302), and plugin servers get `plugin_…` names.
129
+ */
130
+ export function memtreeServerInArgs(args, cwd = process.cwd()) {
131
+ let found = "none";
132
+ for (const value of mcpConfigArgs(args)) {
133
+ const server = memtreeServerIn(value, cwd);
134
+ if (server === null)
135
+ continue;
136
+ found = server === undefined ? "unknown" : isCccMemtreeServer(server) ? "ccc" : "other";
137
+ }
138
+ return found;
139
+ }
140
+ /** `--name value…` (variadic, up to the next option) and `--name=value`, before `--`. */
141
+ function optionValues(args, names) {
84
142
  const values = [];
85
143
  for (let i = 0; i < args.length; i++) {
86
144
  const arg = args[i];
87
145
  if (arg === "--")
88
146
  break;
89
- if (arg.startsWith("--mcp-config=")) {
90
- values.push(arg.slice("--mcp-config=".length));
147
+ const inline = names.find((name) => arg.startsWith(`${name}=`));
148
+ if (inline) {
149
+ values.push(arg.slice(inline.length + 1));
91
150
  continue;
92
151
  }
93
- if (arg !== "--mcp-config")
152
+ if (!names.includes(arg))
94
153
  continue;
95
154
  while (i + 1 < args.length && !args[i + 1].startsWith("-"))
96
155
  values.push(args[++i]);
@@ -98,31 +157,41 @@ export function mcpConfigArgs(args) {
98
157
  return values;
99
158
  }
100
159
  /**
101
- * Whether Claude's argv already configures ccc's `memtree` server: a server
102
- * named `memtree` whose command line runs `memtree-mcp` (`ccc memtree-mcp` or
103
- * dist/memtree-mcp.js). Unreadable or malformed configs count as no.
160
+ * The `memtree` entry of one `--mcp-config` value (file or inline JSON):
161
+ * null when it defines none, undefined when it cannot be read or parsed.
104
162
  */
105
- export function argsConfigureMemtreeMcp(args, cwd = process.cwd()) {
106
- for (const value of mcpConfigArgs(args)) {
107
- let parsed;
108
- try {
109
- const text = value.trim().startsWith("{")
110
- ? value
111
- : fs.readFileSync(path.resolve(cwd, value), "utf-8");
112
- parsed = JSON.parse(text);
113
- }
114
- catch {
115
- continue;
116
- }
117
- const server = parsed?.mcpServers?.[MEMTREE_MCP_SERVER_NAME];
118
- if (!server || typeof server !== "object")
119
- continue;
120
- const commandLine = [server.command, ...(Array.isArray(server.args) ? server.args : [])]
121
- .filter((part) => typeof part === "string")
122
- .join(" ");
123
- if (/memtree-mcp/.test(commandLine))
124
- return true;
163
+ function memtreeServerIn(value, cwd) {
164
+ let parsed;
165
+ try {
166
+ const text = value.trim().startsWith("{")
167
+ ? value
168
+ : fs.readFileSync(path.resolve(cwd, value), "utf-8");
169
+ parsed = JSON.parse(text);
170
+ }
171
+ catch {
172
+ return undefined;
125
173
  }
126
- return false;
174
+ const server = parsed?.mcpServers?.[MEMTREE_MCP_SERVER_NAME];
175
+ if (server === undefined)
176
+ return null;
177
+ return server && typeof server === "object" ? server : undefined;
178
+ }
179
+ /** A command line whose program or an argument is `memtree-mcp` or a memtree-mcp.js path. */
180
+ function isCccMemtreeServer(server) {
181
+ const parts = [server.command, ...(Array.isArray(server.args) ? server.args : [])];
182
+ return parts.some((part) => typeof part === "string" && /^memtree-mcp(\.js)?$/.test(path.basename(part)));
183
+ }
184
+ function memtreeToolName(tool) {
185
+ return `mcp__${MEMTREE_MCP_SERVER_NAME}__${tool}`;
186
+ }
187
+ /** A permission rule naming this tool, its whole server, or a `*` pattern over it. */
188
+ function ruleMatchesMemtreeTool(rule, tool) {
189
+ if (rule === `mcp__${MEMTREE_MCP_SERVER_NAME}`)
190
+ return true;
191
+ const pattern = rule.split("*").map(escapeRegExp).join(".*");
192
+ return new RegExp(`^${pattern}$`).test(memtreeToolName(tool));
193
+ }
194
+ function escapeRegExp(text) {
195
+ return text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
127
196
  }
128
197
  //# sourceMappingURL=memtree-mcp-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"memtree-mcp-config.js","sourceRoot":"","sources":["../src/memtree-mcp-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,+BAA+B;AAC/B,MAAM,CAAC,MAAM,0BAA0B,GAAG,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvE,+DAA+D;AAC/D,MAAM,CAAC,MAAM,qBAAqB,GAAG,kBAAkB,CAAC,GAAG,CACzD,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,uBAAuB,KAAK,IAAI,EAAE,CACrD,CAAC;AACF,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE9F,MAAM,UAAU,sBAAsB,CAAC,GAAsB;IAC3D,OAAO,GAAG,CAAC,eAAe,KAAK,GAAG,CAAC;AACrC,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,OAAO;QACL,UAAU,EAAE;YACV,CAAC,uBAAuB,CAAC,EAAE;gBACzB,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,OAAO,CAAC,QAAQ;gBACzB,IAAI,EAAE,CAAC,kBAAkB,CAAC;gBAC1B,qEAAqE;gBACrE,GAAG,EAAE,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,iBAAiB,CAAC,EAAE,cAAc,EAAE;gBACzE,UAAU,EAAE,IAAI;aACjB;SACF;KACF,CAAC;AACJ,CAAC;AAOD,MAAM,UAAU,qBAAqB,CACnC,QAAgB,EAChB,WAAmB,EAAE,CAAC,MAAM,EAAE;IAE9B,MAAM,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACpE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACxC,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACpF,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,OAAO;QACL,IAAI,EAAE,IAAI;QACV,KAAK;YACH,IAAI,MAAM;gBAAE,OAAO;YACnB,MAAM,GAAG,IAAI,CAAC;YACd,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,kBAAkB,CAAC,IAAuB,EAAE,UAAkB;IAC5E,OAAO;QACL,gBAAgB,UAAU,EAAE;QAC5B,kBAAkB,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACnD,GAAG,IAAI;KACR,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,IAAuB;IACnD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,KAAK,IAAI;YAAE,MAAM;QACxB,IAAI,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;YAC/C,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,cAAc;YAAE,SAAS;QACrC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAuB,EACvB,MAAc,OAAO,CAAC,GAAG,EAAE;IAE3B,KAAK,MAAM,KAAK,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;gBACvC,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;YACvD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAI,MAAmD,EAAE,UAAU,EAAE,CAC/E,uBAAuB,CAC6B,CAAC;QACvD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,SAAS;QACpD,MAAM,WAAW,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;aACrF,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC;aAC1C,IAAI,CAAC,GAAG,CAAC,CAAC;QACb,IAAI,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC;YAAE,OAAO,IAAI,CAAC;IACnD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"memtree-mcp-config.js","sourceRoot":"","sources":["../src/memtree-mcp-config.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@
9
9
  *
10
10
  * A minimal JSON-RPC 2.0 server over stdio (newline-delimited messages, the
11
11
  * MCP stdio transport); no SDK dependency. Started by Claude Code from the
12
- * `--mcp-config` ccc passes (interactive sessions) or one the caller passes
12
+ * `--mcp-config` ccc passes (every session, `-p` included) or one the caller passes
13
13
  * (`ccc memtree-mcp`, e.g. the memory recall probe).
14
14
  *
15
15
  * Which tree: the loopback proxy of the ccc that launched this Claude Code
@@ -27,6 +27,7 @@ export declare const NEWEST_TREE_UNSUPPORTED_MS: number;
27
27
  export declare const NEWEST_TREE_WAIT_MS = 2500;
28
28
  /** A lookup that has not answered by then is dropped; the next peek retries. */
29
29
  export declare const NEWEST_TREE_FETCH_TIMEOUT_MS = 10000;
30
+ export declare const SESSION_ID: RegExp;
30
31
  export interface NewestTree {
31
32
  /** The server-selected page, including its pinned namespace and source. */
32
33
  url: string;
@@ -1 +1 @@
1
- {"version":3,"file":"memtree-newest.d.ts","sourceRoot":"","sources":["../src/memtree-newest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,mFAAmF;AACnF,eAAO,MAAM,kBAAkB,QAAS,CAAC;AACzC,gFAAgF;AAChF,eAAO,MAAM,0BAA0B,QAAc,CAAC;AACtD,kFAAkF;AAClF,eAAO,MAAM,mBAAmB,OAAQ,CAAC;AACzC,gFAAgF;AAChF,eAAO,MAAM,4BAA4B,QAAS,CAAC;AAQnD,MAAM,WAAW,UAAU;IACzB,2EAA2E;IAC3E,GAAG,EAAE,MAAM,CAAC;IACZ,qDAAqD;IACrD,GAAG,EAAE,MAAM,CAAC;CACb;AAED,4EAA4E;AAC5E,MAAM,MAAM,eAAe,GAAG,CAC5B,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,WAAW,KAChB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAO/C,qBAAa,gBAAgB;IAWzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAbjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAEpB;IAGL,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,gBAAgB,CAAK;gBAGV,SAAS,EAAE,eAAe,EAC1B,GAAG,GAAE,MAAM,MAAiB,EAC5B,KAAK,SAAqB,EAC1B,cAAc,SAA+B;IAGhE,+EAA+E;IAC/E,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS;IAO3D,0EAA0E;IACpE,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,SAAsB,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAe1G;;;OAGG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAOnC,OAAO,CAAC,OAAO;YAwBD,KAAK;IAuBnB,2EAA2E;YAC7D,GAAG;IA+BjB,OAAO,CAAC,QAAQ;CAOjB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAiBvF;AAED,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQtE"}
1
+ {"version":3,"file":"memtree-newest.d.ts","sourceRoot":"","sources":["../src/memtree-newest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,mFAAmF;AACnF,eAAO,MAAM,kBAAkB,QAAS,CAAC;AACzC,gFAAgF;AAChF,eAAO,MAAM,0BAA0B,QAAc,CAAC;AACtD,kFAAkF;AAClF,eAAO,MAAM,mBAAmB,OAAQ,CAAC;AACzC,gFAAgF;AAChF,eAAO,MAAM,4BAA4B,QAAS,CAAC;AAMnD,eAAO,MAAM,UAAU,QAAsC,CAAC;AAE9D,MAAM,WAAW,UAAU;IACzB,2EAA2E;IAC3E,GAAG,EAAE,MAAM,CAAC;IACZ,qDAAqD;IACrD,GAAG,EAAE,MAAM,CAAC;CACb;AAED,4EAA4E;AAC5E,MAAM,MAAM,eAAe,GAAG,CAC5B,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,WAAW,KAChB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAO/C,qBAAa,gBAAgB;IAWzB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAbjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAEpB;IAGL,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,gBAAgB,CAAK;gBAGV,SAAS,EAAE,eAAe,EAC1B,GAAG,GAAE,MAAM,MAAiB,EAC5B,KAAK,SAAqB,EAC1B,cAAc,SAA+B;IAGhE,+EAA+E;IAC/E,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS;IAO3D,0EAA0E;IACpE,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,SAAsB,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAe1G;;;OAGG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAOnC,OAAO,CAAC,OAAO;YAwBD,KAAK;IAuBnB,2EAA2E;YAC7D,GAAG;IA+BjB,OAAO,CAAC,QAAQ;CAOjB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAiBvF;AAED,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQtE"}
@@ -32,7 +32,7 @@ const SESSIONS_LIMIT = 10;
32
32
  const MAX_SESSIONS = 200;
33
33
  const MAX_PENDING = 8;
34
34
  const MAX_PAGES = 32;
35
- const SESSION_ID = /^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$/;
35
+ export const SESSION_ID = /^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$/;
36
36
  export class NewestTreeLookup {
37
37
  fetchPath;
38
38
  now;
@@ -1 +1 @@
1
- {"version":3,"file":"memtree-newest.js","sourceRoot":"","sources":["../src/memtree-newest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memtree-newest.js","sourceRoot":"","sources":["../src/memtree-newest.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AASvD,OAAO,EAAiB,qBAAqB,EACD,MAAM,qBAAqB,CAAC;AAiBxE,OAAO,EAKL,aAAa,EAMd,MAAM,cAAc,CAAC;AAwBtB,OAAO,EAYL,KAAK,cAAc,EAGpB,MAAM,YAAY,CAAC;AAIpB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAA8B,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACvF,OAAO,KAAK,EAAkB,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAW5D,OAAO,KAAK,EAAgB,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAKL,KAAK,cAAc,EAEnB,KAAK,cAAc,EAGpB,MAAM,aAAa,CAAC;AAkCrB,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,aAAa,CAAC;IACvB;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC;;;OAGG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC;;;;;;;;;OASG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;;;;;OASG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;;;;;OASG;IACH,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,8EAA8E;IAC9E,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,oFAAoF;IACpF,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB;;;;;;;;;;;;;;OAcG;IACH,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC;;;;OAIG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B;;;;OAIG;IACH,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IAC9C;;;OAGG;IACH,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;OAQG;IACH,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB;;;;OAIG;IACH,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD;;;;OAIG;IACH,aAAa,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;CACzC;AA0OD;;;;;;;;GAQG;AACH,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAChD,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAK9C,uFAAuF;AACvF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAGrF;AA0OD,wBAAgB,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CA6IpE;AAgRD,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAOjE;AA6/CD,eAAO,MAAM,0BAA0B,QAAS,CAAC;AAiDjD,eAAO,MAAM,kBAAkB,4DAA4D,CAAC;AAC5F,eAAO,MAAM,sBAAsB,sDAAsD,CAAC;AAsB1F,4EAA4E;AAC5E,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMhE;AA4qCD;;;;;;GAMG;AACH,iBAAS,6BAA6B,CACpC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,GAAG,EAAE,cAAc,EACnB,aAAa,EAAE,MAAM,EACrB,iBAAiB,EAAE,MAAM,EACzB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAKT;AA+9DD,iBAAiB;AACjB,eAAO,MAAM,yBAAyB,4BAAsB,CAAC;AAC7D,eAAO,MAAM,2BAA2B,8BAAwB,CAAC;AACjE,eAAO,MAAM,mCAAmC,sCAAgC,CAAC"}
1
+ {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"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"}
package/dist/proxy.js CHANGED
@@ -134,9 +134,9 @@ function checkAwaitedIndex(opts, attempt, shutdownSignal) {
134
134
  // Bound both the individual body read and repeated 202 responses. A page
135
135
  // that never completes must eventually return the lane to growth backoff.
136
136
  const timeoutMs = Math.max(1, Math.min(opts.awaitedIndexProbeTimeoutMs ?? 5_000, waiting.deadline - Date.now()));
137
- const signal = AbortSignal.any([shutdownSignal, AbortSignal.timeout(timeoutMs)]);
137
+ const probe = abortOnTimeoutOrShutdown(timeoutMs, shutdownSignal);
138
138
  opts.memtree
139
- .fetchMemTree(`/usage/memtree/${waiting.pageId}.json`, "application/json", signal)
139
+ .fetchMemTree(`/usage/memtree/${waiting.pageId}.json`, "application/json", probe.signal)
140
140
  .then((page) => {
141
141
  if (page.status === 202 && Date.now() < waiting.deadline)
142
142
  return;
@@ -151,9 +151,32 @@ function checkAwaitedIndex(opts, attempt, shutdownSignal) {
151
151
  attempt.awaitingIndex = undefined;
152
152
  })
153
153
  .finally(() => {
154
+ probe.dispose();
154
155
  waiting.checking = false;
155
156
  });
156
157
  }
158
+ /**
159
+ * A signal that aborts after `timeoutMs` or when `shutdownSignal` aborts.
160
+ * Not AbortSignal.any([shutdown, AbortSignal.timeout(ms)]): on Node 20 the
161
+ * composite holds its sources weakly, so a GC can collect the timeout signal
162
+ * and its abort never fires, leaving a hung probe open for good. Here the
163
+ * timer and the shutdown listener hold the controller until dispose().
164
+ */
165
+ function abortOnTimeoutOrShutdown(timeoutMs, shutdownSignal) {
166
+ const controller = new AbortController();
167
+ const abort = () => controller.abort();
168
+ // Unreferenced like AbortSignal.timeout: a probe never holds the process open.
169
+ const timer = setTimeout(abort, timeoutMs);
170
+ timer.unref();
171
+ shutdownSignal.addEventListener("abort", abort, { once: true });
172
+ return {
173
+ signal: controller.signal,
174
+ dispose: () => {
175
+ clearTimeout(timer);
176
+ shutdownSignal.removeEventListener("abort", abort);
177
+ },
178
+ };
179
+ }
157
180
  /**
158
181
  * Record lag evidence from `result` (indexLagEvidence): a refusal of this
159
182
  * request then waits for the index, and the cached answer expires after the