@essentialai/cogent-bridge 3.20.7 → 3.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +56 -0
- package/dist/services/agent-sessions.d.ts +90 -0
- package/dist/services/agent-sessions.d.ts.map +1 -0
- package/dist/services/agent-sessions.js +120 -0
- package/dist/services/agent-sessions.js.map +1 -0
- package/dist/services/cc-cli.d.ts +78 -5
- package/dist/services/cc-cli.d.ts.map +1 -1
- package/dist/services/cc-cli.js +172 -26
- package/dist/services/cc-cli.js.map +1 -1
- package/dist/services/codex-cli.d.ts +1 -0
- package/dist/services/codex-cli.d.ts.map +1 -1
- package/dist/services/codex-cli.js +1 -1
- package/dist/services/codex-cli.js.map +1 -1
- package/dist/services/exec-remote.d.ts +18 -0
- package/dist/services/exec-remote.d.ts.map +1 -1
- package/dist/services/exec-remote.js +37 -2
- package/dist/services/exec-remote.js.map +1 -1
- package/dist/services/session-resolver.d.ts +6 -0
- package/dist/services/session-resolver.d.ts.map +1 -1
- package/dist/services/session-resolver.js +37 -3
- package/dist/services/session-resolver.js.map +1 -1
- package/dist/tools/register-peer.d.ts.map +1 -1
- package/dist/tools/register-peer.js +40 -0
- package/dist/tools/register-peer.js.map +1 -1
- package/package.json +1 -1
- package/server.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,61 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 3.21.0 — 2026-08-31
|
|
4
|
+
|
|
5
|
+
### Fixed — auto-wake refused on machines whose agent state is not in the default place
|
|
6
|
+
|
|
7
|
+
A developer's Claude Code peer refused every wake with `no candidate sessions found for cwd`,
|
|
8
|
+
from its very first register. Codex→Claude failed while Claude→Codex worked — the asymmetry was
|
|
9
|
+
the clue: **only the Claude Code rail derived the transcript location, and it derived it twice
|
|
10
|
+
over.**
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
<config root> / projects / <cwd with non-alphanumerics turned into dashes>
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Both halves were guesses. The root was `CLAUDE_CONFIG_DIR` **or** a hardcoded `~/.claude` — one
|
|
17
|
+
guess, never verified. The cwd half ran a raw `String.replace` on the path string the agent
|
|
18
|
+
passed to `cogent_register_peer`, so every other spelling of the same directory encoded to a
|
|
19
|
+
directory that does not exist: a trailing slash, a `.` segment, or a symlinked path (macOS
|
|
20
|
+
`/tmp` → `/private/tmp`, `/var` → `/private/var`). Both misses were swallowed by
|
|
21
|
+
`catch { return [] }`, indistinguishable from an empty machine. The Codex rail had already been
|
|
22
|
+
hardened against exactly this (`cwdCanonicals`); the Claude rail never was.
|
|
23
|
+
|
|
24
|
+
**Session discovery is now layered, and only the last layer guesses:**
|
|
25
|
+
|
|
26
|
+
1. **Reported (authoritative).** The host hands every hook `cwd`, `session_id` and
|
|
27
|
+
`transcript_path`. A new `SessionStart` hook (`record-session.mjs`) and the existing Stop hook
|
|
28
|
+
persist that trio to `~/.cogent/agent-sessions/`. The resolver prefers it, so there is nothing
|
|
29
|
+
to derive — this works with **any** relocated config dir, with no configuration at all.
|
|
30
|
+
2. **Discovery.** No record yet (e.g. Team agents, which run without the plugin) → roots are
|
|
31
|
+
enumerated instead of guessed: `CLAUDE_CONFIG_DIR`, then roots **learned** from transcript
|
|
32
|
+
paths agents reported, then `~/.claude` and `~/.config/claude` — each crossed with the
|
|
33
|
+
canonical forms of the cwd (`path.resolve` **and** `fs.realpath`).
|
|
34
|
+
3. **Fail loud.** Nothing matched → the refusal now **names every path it scanned**, and a
|
|
35
|
+
zero-candidate result at register time is a WARN plus a `warning`/`scannedPaths` field in the
|
|
36
|
+
tool result. Previously registration silently pinned the *cloud* session id, which `--resume`
|
|
37
|
+
can never open, guaranteeing that every later wake was refused.
|
|
38
|
+
|
|
39
|
+
One recorded session teaches the machine its root, so other projects under the same root resolve
|
|
40
|
+
with no record of their own.
|
|
41
|
+
|
|
42
|
+
### Fixed — "clean uninstall" removed nothing for users with a relocated config dir
|
|
43
|
+
|
|
44
|
+
`scripts/uninstall-cogent.sh` and the hosted `uninstall.sh` hardcoded `$HOME/.claude` and
|
|
45
|
+
`$HOME/.codex`, so a custom-dir user got a success report while every plugin file stayed on
|
|
46
|
+
disk — which then makes a "fresh install test" silently measure the old install. Both scripts now
|
|
47
|
+
enumerate the same roots the bridge does (env → learned → conventions) and clean each one, and
|
|
48
|
+
the new `~/.cogent/agent-sessions` state directory is purged.
|
|
49
|
+
|
|
50
|
+
### Guarded
|
|
51
|
+
|
|
52
|
+
- The hook↔bridge record path and `rootFromTranscriptPath` are asserted identical by
|
|
53
|
+
`scripts/wake-race-test.mjs` (a mismatch would make the authoritative layer silently inert),
|
|
54
|
+
and `record-session.mjs` joins the byte-identical plugin-parity check.
|
|
55
|
+
- New tests: representation tolerance (trailing slash / `.` segment / symlink / dedupe), the
|
|
56
|
+
learned-record store, and an end-to-end proof against a config root no heuristic could guess.
|
|
57
|
+
Verified by mutation — each layer was disabled in turn and the relevant tests went red.
|
|
58
|
+
|
|
3
59
|
## 3.20.7 — 2026-08-31
|
|
4
60
|
|
|
5
61
|
### Fixed — `cogent-codex` did nothing when installed from npm (silent exit)
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LEARNED AGENT SESSION RECORDS — "the agent told us where it lives".
|
|
3
|
+
*
|
|
4
|
+
* 🔴 WHY THIS EXISTS. Everything downstream of the wake rails used to DERIVE the
|
|
5
|
+
* location of an agent's session transcript:
|
|
6
|
+
*
|
|
7
|
+
* <config root> / projects / <cwd with non-alphanumerics turned into dashes>
|
|
8
|
+
*
|
|
9
|
+
* Both halves of that are guesses. The config root was `CLAUDE_CONFIG_DIR` or a
|
|
10
|
+
* hardcoded `~/.claude` — one guess, never verified. The cwd half assumed the
|
|
11
|
+
* caller passed the exact canonical spelling of the directory. Either guess being
|
|
12
|
+
* wrong produced the same dead end: zero candidates, wake refused, and a log line
|
|
13
|
+
* that never named the path it looked in.
|
|
14
|
+
*
|
|
15
|
+
* The agents already publish the truth. Claude Code hands every hook a payload
|
|
16
|
+
* containing `cwd`, `session_id` and `transcript_path` — an ABSOLUTE path to the
|
|
17
|
+
* live transcript, with no encoding to reverse and no root to guess. This module
|
|
18
|
+
* is where that fact is persisted so the resolver can prefer it over inference.
|
|
19
|
+
*
|
|
20
|
+
* Layering (see docs + session-resolver):
|
|
21
|
+
* 1. this record — authoritative, works with ANY relocated config dir
|
|
22
|
+
* 2. root discovery — inference, for agents running without our plugin
|
|
23
|
+
* 3. fail loud — name every path probed
|
|
24
|
+
*
|
|
25
|
+
* Storage mirrors the existing per-cwd convention exactly (credential-store.ts,
|
|
26
|
+
* wake-inflight.ts): `~/.cogent/<kind>/<sha256(path.resolve(cwd))[..16]>.json`,
|
|
27
|
+
* homedir-based on purpose so the bridge and the hook — two processes with
|
|
28
|
+
* different environments — always agree on the path.
|
|
29
|
+
*/
|
|
30
|
+
/** Platforms that keep a per-cwd session transcript we can learn. */
|
|
31
|
+
export type AgentPlatform = "cc" | "codex";
|
|
32
|
+
export interface AgentSessionRecord {
|
|
33
|
+
/** The cwd as the agent reported it (already resolved when written). */
|
|
34
|
+
cwd: string;
|
|
35
|
+
/** The agent's own session id — what `--resume` / `resume` takes. */
|
|
36
|
+
sessionId: string;
|
|
37
|
+
/** Absolute path to the transcript. The whole point: no derivation. */
|
|
38
|
+
transcriptPath: string;
|
|
39
|
+
/** Config root implied by transcriptPath, when it could be recovered. */
|
|
40
|
+
root?: string;
|
|
41
|
+
platform: AgentPlatform;
|
|
42
|
+
/** ISO timestamp of the last write. */
|
|
43
|
+
updatedAt: string;
|
|
44
|
+
}
|
|
45
|
+
/** MUST equal credential-store's hash and check-on-stop.lib.mjs credHashForCwd. */
|
|
46
|
+
export declare function hashCwd(cwd: string): string;
|
|
47
|
+
/** `~/.cogent/agent-sessions/` — the learned-record directory. */
|
|
48
|
+
export declare function agentSessionsDir(): string;
|
|
49
|
+
/**
|
|
50
|
+
* `~/.cogent/agent-sessions/<hash(cwd)>.<platform>.json`.
|
|
51
|
+
*
|
|
52
|
+
* Keyed by platform as well as cwd because one directory can host both a Claude
|
|
53
|
+
* Code and a Codex agent (that is the normal two-agent Cogent setup) and their
|
|
54
|
+
* transcripts live in completely different stores.
|
|
55
|
+
*/
|
|
56
|
+
export declare function agentSessionPath(cwd: string, platform: AgentPlatform): string;
|
|
57
|
+
/**
|
|
58
|
+
* Recover the config ROOT from an absolute transcript path.
|
|
59
|
+
*
|
|
60
|
+
* Claude Code lays transcripts out as `<root>/projects/<encoded-cwd>/<id>.jsonl`,
|
|
61
|
+
* so the root is whatever sits above the `projects` segment — recovered by
|
|
62
|
+
* structure, never by matching a known prefix, which is what lets a completely
|
|
63
|
+
* unknown custom location teach us its root.
|
|
64
|
+
*
|
|
65
|
+
* Returns null when the shape does not match (a Codex rollout, a temp file, an
|
|
66
|
+
* agent that changes its layout) — callers must treat the root as optional.
|
|
67
|
+
*/
|
|
68
|
+
export declare function rootFromTranscriptPath(transcriptPath: string): string | null;
|
|
69
|
+
/** Read the learned record for a cwd, or null. Never throws. */
|
|
70
|
+
export declare function readAgentSession(cwd: string, platform: AgentPlatform): Promise<AgentSessionRecord | null>;
|
|
71
|
+
/**
|
|
72
|
+
* Persist a learned record. Atomic (temp + rename) so a hook and the bridge
|
|
73
|
+
* writing concurrently can never leave a half-written file for the other to
|
|
74
|
+
* read — the same discipline peer-registry uses for shared state.
|
|
75
|
+
* Never throws: learning is an optimisation, never a reason to fail a wake.
|
|
76
|
+
*/
|
|
77
|
+
export declare function writeAgentSession(rec: Omit<AgentSessionRecord, "updatedAt" | "root"> & {
|
|
78
|
+
root?: string;
|
|
79
|
+
}): Promise<boolean>;
|
|
80
|
+
/**
|
|
81
|
+
* Every distinct config root this machine has ever taught us, newest first.
|
|
82
|
+
*
|
|
83
|
+
* This is what turns one lucky resolution into permanent knowledge: a user with
|
|
84
|
+
* `CLAUDE_CONFIG_DIR=/data/claude` teaches us that root once, and afterwards
|
|
85
|
+
* EVERY project on the machine resolves against it — including ones opened in a
|
|
86
|
+
* shell where the variable was never exported. Bounded work: one readdir plus a
|
|
87
|
+
* small number of tiny JSON reads.
|
|
88
|
+
*/
|
|
89
|
+
export declare function learnedRoots(platform: AgentPlatform): Promise<string[]>;
|
|
90
|
+
//# sourceMappingURL=agent-sessions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-sessions.d.ts","sourceRoot":"","sources":["../../src/services/agent-sessions.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,qEAAqE;AACrE,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,OAAO,CAAC;AAE3C,MAAM,WAAW,kBAAkB;IACjC,wEAAwE;IACxE,GAAG,EAAE,MAAM,CAAC;IACZ,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,cAAc,EAAE,MAAM,CAAC;IACvB,yEAAyE;IACzE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,aAAa,CAAC;IACxB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,mFAAmF;AACnF,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM3C;AAED,kEAAkE;AAClE,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,aAAa,GACtB,MAAM,CAER;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQ5E;AAED,gEAAgE;AAChE,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,aAAa,GACtB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAUpC;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,GAAG,MAAM,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACtE,OAAO,CAAC,OAAO,CAAC,CAiBlB;AAED;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA4B7E"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import crypto from "node:crypto";
|
|
2
|
+
import fs from "node:fs/promises";
|
|
3
|
+
import os from "node:os";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
/** MUST equal credential-store's hash and check-on-stop.lib.mjs credHashForCwd. */
|
|
6
|
+
export function hashCwd(cwd) {
|
|
7
|
+
return crypto
|
|
8
|
+
.createHash("sha256")
|
|
9
|
+
.update(path.resolve(cwd))
|
|
10
|
+
.digest("hex")
|
|
11
|
+
.slice(0, 16);
|
|
12
|
+
}
|
|
13
|
+
/** `~/.cogent/agent-sessions/` — the learned-record directory. */
|
|
14
|
+
export function agentSessionsDir() {
|
|
15
|
+
return path.join(os.homedir(), ".cogent", "agent-sessions");
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* `~/.cogent/agent-sessions/<hash(cwd)>.<platform>.json`.
|
|
19
|
+
*
|
|
20
|
+
* Keyed by platform as well as cwd because one directory can host both a Claude
|
|
21
|
+
* Code and a Codex agent (that is the normal two-agent Cogent setup) and their
|
|
22
|
+
* transcripts live in completely different stores.
|
|
23
|
+
*/
|
|
24
|
+
export function agentSessionPath(cwd, platform) {
|
|
25
|
+
return path.join(agentSessionsDir(), `${hashCwd(cwd)}.${platform}.json`);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Recover the config ROOT from an absolute transcript path.
|
|
29
|
+
*
|
|
30
|
+
* Claude Code lays transcripts out as `<root>/projects/<encoded-cwd>/<id>.jsonl`,
|
|
31
|
+
* so the root is whatever sits above the `projects` segment — recovered by
|
|
32
|
+
* structure, never by matching a known prefix, which is what lets a completely
|
|
33
|
+
* unknown custom location teach us its root.
|
|
34
|
+
*
|
|
35
|
+
* Returns null when the shape does not match (a Codex rollout, a temp file, an
|
|
36
|
+
* agent that changes its layout) — callers must treat the root as optional.
|
|
37
|
+
*/
|
|
38
|
+
export function rootFromTranscriptPath(transcriptPath) {
|
|
39
|
+
if (!transcriptPath)
|
|
40
|
+
return null;
|
|
41
|
+
const parts = path.resolve(transcriptPath).split(path.sep);
|
|
42
|
+
// …/<root>/projects/<encoded>/<id>.jsonl → need "projects" with a parent.
|
|
43
|
+
const i = parts.lastIndexOf("projects");
|
|
44
|
+
if (i <= 0)
|
|
45
|
+
return null;
|
|
46
|
+
const root = parts.slice(0, i).join(path.sep);
|
|
47
|
+
return root || path.sep;
|
|
48
|
+
}
|
|
49
|
+
/** Read the learned record for a cwd, or null. Never throws. */
|
|
50
|
+
export async function readAgentSession(cwd, platform) {
|
|
51
|
+
try {
|
|
52
|
+
const raw = await fs.readFile(agentSessionPath(cwd, platform), "utf-8");
|
|
53
|
+
const rec = JSON.parse(raw);
|
|
54
|
+
// A record without the two fields that make it useful is not a record.
|
|
55
|
+
if (!rec?.sessionId || !rec?.transcriptPath)
|
|
56
|
+
return null;
|
|
57
|
+
return rec;
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Persist a learned record. Atomic (temp + rename) so a hook and the bridge
|
|
65
|
+
* writing concurrently can never leave a half-written file for the other to
|
|
66
|
+
* read — the same discipline peer-registry uses for shared state.
|
|
67
|
+
* Never throws: learning is an optimisation, never a reason to fail a wake.
|
|
68
|
+
*/
|
|
69
|
+
export async function writeAgentSession(rec) {
|
|
70
|
+
try {
|
|
71
|
+
const full = {
|
|
72
|
+
...rec,
|
|
73
|
+
cwd: path.resolve(rec.cwd),
|
|
74
|
+
root: rec.root ?? rootFromTranscriptPath(rec.transcriptPath) ?? undefined,
|
|
75
|
+
updatedAt: new Date().toISOString(),
|
|
76
|
+
};
|
|
77
|
+
const target = agentSessionPath(full.cwd, full.platform);
|
|
78
|
+
await fs.mkdir(path.dirname(target), { recursive: true });
|
|
79
|
+
const tmp = `${target}.${process.pid}.tmp`;
|
|
80
|
+
await fs.writeFile(tmp, JSON.stringify(full, null, 2), "utf-8");
|
|
81
|
+
await fs.rename(tmp, target);
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Every distinct config root this machine has ever taught us, newest first.
|
|
90
|
+
*
|
|
91
|
+
* This is what turns one lucky resolution into permanent knowledge: a user with
|
|
92
|
+
* `CLAUDE_CONFIG_DIR=/data/claude` teaches us that root once, and afterwards
|
|
93
|
+
* EVERY project on the machine resolves against it — including ones opened in a
|
|
94
|
+
* shell where the variable was never exported. Bounded work: one readdir plus a
|
|
95
|
+
* small number of tiny JSON reads.
|
|
96
|
+
*/
|
|
97
|
+
export async function learnedRoots(platform) {
|
|
98
|
+
try {
|
|
99
|
+
const dir = agentSessionsDir();
|
|
100
|
+
const files = (await fs.readdir(dir)).filter((f) => f.endsWith(`.${platform}.json`));
|
|
101
|
+
const recs = await Promise.all(files.map(async (f) => {
|
|
102
|
+
try {
|
|
103
|
+
return JSON.parse(await fs.readFile(path.join(dir, f), "utf-8"));
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
}));
|
|
109
|
+
return [
|
|
110
|
+
...new Set(recs
|
|
111
|
+
.filter((r) => Boolean(r?.root))
|
|
112
|
+
.sort((a, b) => (a.updatedAt < b.updatedAt ? 1 : -1))
|
|
113
|
+
.map((r) => r.root)),
|
|
114
|
+
];
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
return [];
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=agent-sessions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-sessions.js","sourceRoot":"","sources":["../../src/services/agent-sessions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,79 @@
|
|
|
1
1
|
import { CliExecResult } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Every transcript directory that could hold this cwd's sessions.
|
|
4
|
+
*
|
|
5
|
+
* 🔴 WHY THIS IS NOT ONE PATH. Claude Code names a project dir by replacing each
|
|
6
|
+
* non-alphanumeric char of the cwd with "-", so EVERY representation of the same
|
|
7
|
+
* directory encodes to a DIFFERENT name: a trailing slash, a "." segment, or a
|
|
8
|
+
* symlinked path (macOS `/tmp` -> `/private/tmp`, `/var` -> `/private/var`) each
|
|
9
|
+
* produce a dir that does not exist. The cwd here is a string the AGENT supplied
|
|
10
|
+
* to cogent_register_peer — it is not guaranteed to be the canonical form.
|
|
11
|
+
*
|
|
12
|
+
* That mismatch is how a fresh dev machine got ZERO candidates from its very
|
|
13
|
+
* first register (2026-08-31) and refused every wake thereafter. The Codex rail
|
|
14
|
+
* had already canonicalised for this reason (codex-cli.ts `cwdCanonicals`); this
|
|
15
|
+
* is the Claude Code rail reaching parity.
|
|
16
|
+
*
|
|
17
|
+
* Exported so callers can LOG what was probed — a miss used to be indistinguishable
|
|
18
|
+
* from an empty dir, which is what made the failure undiagnosable from the logs.
|
|
19
|
+
*/
|
|
20
|
+
export declare function projectDirsFor(cwd: string): Promise<string[]>;
|
|
21
|
+
/**
|
|
22
|
+
* Every config root that could hold this machine's Claude Code transcripts,
|
|
23
|
+
* best-first.
|
|
24
|
+
*
|
|
25
|
+
* 🔴 WHY THIS IS A LIST. `claudeConfigDir()` returns ONE guess — the env var if
|
|
26
|
+
* this process happens to see it, otherwise `~/.claude`. A single guess has no
|
|
27
|
+
* way to be wrong loudly: it just scans a directory that does not exist and
|
|
28
|
+
* reports "no sessions". Users relocate their agent state (small system disks,
|
|
29
|
+
* synced or encrypted home dirs, multi-account machines, containers), and the
|
|
30
|
+
* env var does not always reach the process that needs it.
|
|
31
|
+
*
|
|
32
|
+
* Order is deliberate:
|
|
33
|
+
* 1. `CLAUDE_CONFIG_DIR` — an explicit instruction always wins.
|
|
34
|
+
* 2. LEARNED roots — recovered from transcript paths the agent itself reported
|
|
35
|
+
* (agent-sessions.ts). These are the only entries PROVEN to have held a real
|
|
36
|
+
* transcript, which is why they outrank the conventional defaults.
|
|
37
|
+
* 3. `~/.claude`, then `~/.config/claude` — the conventional locations.
|
|
38
|
+
*
|
|
39
|
+
* Probing a few extra directories costs one failed `readdir` each; missing the
|
|
40
|
+
* user's actual directory costs them the entire auto-wake feature.
|
|
41
|
+
*/
|
|
42
|
+
export declare function claudeConfigRoots(): Promise<string[]>;
|
|
43
|
+
/**
|
|
44
|
+
* The transcript this cwd's agent REPORTED for itself, if the record is still
|
|
45
|
+
* valid on disk. This is layer 1 — the authoritative path — and it bypasses both
|
|
46
|
+
* the root guess and the cwd-encoding guess entirely.
|
|
47
|
+
*
|
|
48
|
+
* Returns null when nothing was ever recorded (an agent running without our
|
|
49
|
+
* plugin) or when the recorded transcript has since been removed, in which case
|
|
50
|
+
* the caller falls back to discovery.
|
|
51
|
+
*/
|
|
52
|
+
export declare function recordedCandidate(cwd: string): Promise<{
|
|
53
|
+
sessionId: string;
|
|
54
|
+
mtimeMs: number;
|
|
55
|
+
} | null>;
|
|
56
|
+
/**
|
|
57
|
+
* One-line description of the transcript BASE dir and how many project dirs it
|
|
58
|
+
* holds. Used only when a resolve finds zero candidates, because it separates the
|
|
59
|
+
* two causes that look identical in the logs:
|
|
60
|
+
* • base absent / 0 project dirs → the bridge is looking at the WRONG config dir
|
|
61
|
+
* entirely (Claude Code's environment lives elsewhere and CLAUDE_CONFIG_DIR did
|
|
62
|
+
* not reach this process).
|
|
63
|
+
* • base holds N project dirs but none match → the CWD is the wrong one (or a
|
|
64
|
+
* representation this build cannot map — see {@link projectDirsFor}).
|
|
65
|
+
* Never throws.
|
|
66
|
+
*/
|
|
67
|
+
export declare function transcriptBaseSummary(): Promise<string>;
|
|
2
68
|
/**
|
|
3
69
|
* List all Claude Code session candidates for a cwd as {sessionId, mtimeMs}.
|
|
4
|
-
* Scans
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
70
|
+
* Scans every {@link projectDirsFor} dir for *.jsonl — honoring CLAUDE_CONFIG_DIR
|
|
71
|
+
* (default ~/.claude). Returns [] on any error or an empty/absent dir (the
|
|
72
|
+
* resolver treats [] as "no candidates"). Never throws — Vault: Returning-null/
|
|
73
|
+
* Option error pattern (typescript-master-vault concepts/Error_Handling). Dirs
|
|
74
|
+
* and stats are probed in parallel (Vault: Parallelism); results are deduped by
|
|
75
|
+
* sessionId so two cwd forms resolving to one dir cannot inflate the count (a
|
|
76
|
+
* false ">1" would make the resolver call it "ambiguous" and refuse).
|
|
9
77
|
*/
|
|
10
78
|
export declare function listCandidates(cwd: string): Promise<{
|
|
11
79
|
sessionId: string;
|
|
@@ -20,6 +88,11 @@ export declare function detectCurrentSession(cwd: string): Promise<string | null
|
|
|
20
88
|
/**
|
|
21
89
|
* Check whether a Claude Code session file exists on disk.
|
|
22
90
|
* Returns false if the file is missing (session ended or ID is wrong).
|
|
91
|
+
*
|
|
92
|
+
* Probes every {@link projectDirsFor} form — a pin validated under the canonical
|
|
93
|
+
* cwd must still validate when the agent registered a symlinked/trailing-slash
|
|
94
|
+
* representation of the same directory, or the resolver silently drops the pin
|
|
95
|
+
* and falls back to guessing by mtime.
|
|
23
96
|
*/
|
|
24
97
|
export declare function validateSession(sessionId: string, cwd: string): Promise<boolean>;
|
|
25
98
|
export declare function execClaude(sessionId: string, message: string, cwd: string, timeoutMs?: number): Promise<CliExecResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cc-cli.d.ts","sourceRoot":"","sources":["../../src/services/cc-cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cc-cli.d.ts","sourceRoot":"","sources":["../../src/services/cc-cli.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAM5C;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAWnE;AAcD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAQ3D;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CASxD;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC,CAa7D;AAED;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CAiCnD;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAKxB;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,OAAO,CAAC,CAkBlB;AAED,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC,CAiLxB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,GACV;IAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAYpD"}
|
package/dist/services/cc-cli.js
CHANGED
|
@@ -1,31 +1,166 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
2
|
import fs from "node:fs/promises";
|
|
3
|
+
import os from "node:os";
|
|
3
4
|
import path from "node:path";
|
|
4
5
|
import { getConfig } from "../config.js";
|
|
5
|
-
import {
|
|
6
|
+
import { buildResumeEnv } from "./agent-config.js";
|
|
7
|
+
import { learnedRoots, readAgentSession } from "./agent-sessions.js";
|
|
6
8
|
/**
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
9
|
+
* Every transcript directory that could hold this cwd's sessions.
|
|
10
|
+
*
|
|
11
|
+
* 🔴 WHY THIS IS NOT ONE PATH. Claude Code names a project dir by replacing each
|
|
12
|
+
* non-alphanumeric char of the cwd with "-", so EVERY representation of the same
|
|
13
|
+
* directory encodes to a DIFFERENT name: a trailing slash, a "." segment, or a
|
|
14
|
+
* symlinked path (macOS `/tmp` -> `/private/tmp`, `/var` -> `/private/var`) each
|
|
15
|
+
* produce a dir that does not exist. The cwd here is a string the AGENT supplied
|
|
16
|
+
* to cogent_register_peer — it is not guaranteed to be the canonical form.
|
|
17
|
+
*
|
|
18
|
+
* That mismatch is how a fresh dev machine got ZERO candidates from its very
|
|
19
|
+
* first register (2026-08-31) and refused every wake thereafter. The Codex rail
|
|
20
|
+
* had already canonicalised for this reason (codex-cli.ts `cwdCanonicals`); this
|
|
21
|
+
* is the Claude Code rail reaching parity.
|
|
22
|
+
*
|
|
23
|
+
* Exported so callers can LOG what was probed — a miss used to be indistinguishable
|
|
24
|
+
* from an empty dir, which is what made the failure undiagnosable from the logs.
|
|
13
25
|
*/
|
|
14
|
-
export async function
|
|
26
|
+
export async function projectDirsFor(cwd) {
|
|
27
|
+
const [roots, forms] = await Promise.all([
|
|
28
|
+
claudeConfigRoots(),
|
|
29
|
+
cwdForms(cwd),
|
|
30
|
+
]);
|
|
31
|
+
const dirs = roots.flatMap((root) => forms.map((f) => path.join(root, "projects", f.replace(/[^a-zA-Z0-9-]/g, "-"))));
|
|
32
|
+
return [...new Set(dirs)];
|
|
33
|
+
}
|
|
34
|
+
/** Every spelling of this cwd that could have been used to name a project dir. */
|
|
35
|
+
async function cwdForms(cwd) {
|
|
36
|
+
const resolved = path.resolve(cwd);
|
|
37
|
+
const forms = new Set([resolved]);
|
|
15
38
|
try {
|
|
16
|
-
|
|
17
|
-
const projectDir = path.join(claudeConfigDir(), "projects", escapedCwd);
|
|
18
|
-
const entries = await fs.readdir(projectDir);
|
|
19
|
-
const jsonlFiles = entries.filter((f) => f.endsWith(".jsonl"));
|
|
20
|
-
return await Promise.all(jsonlFiles.map(async (f) => ({
|
|
21
|
-
sessionId: f.replace(".jsonl", ""),
|
|
22
|
-
mtimeMs: (await fs.stat(path.join(projectDir, f))).mtimeMs,
|
|
23
|
-
})));
|
|
39
|
+
forms.add(await fs.realpath(resolved));
|
|
24
40
|
}
|
|
25
41
|
catch {
|
|
26
|
-
|
|
42
|
+
// dir gone or unreadable → resolved form only
|
|
43
|
+
}
|
|
44
|
+
return [...forms];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Every config root that could hold this machine's Claude Code transcripts,
|
|
48
|
+
* best-first.
|
|
49
|
+
*
|
|
50
|
+
* 🔴 WHY THIS IS A LIST. `claudeConfigDir()` returns ONE guess — the env var if
|
|
51
|
+
* this process happens to see it, otherwise `~/.claude`. A single guess has no
|
|
52
|
+
* way to be wrong loudly: it just scans a directory that does not exist and
|
|
53
|
+
* reports "no sessions". Users relocate their agent state (small system disks,
|
|
54
|
+
* synced or encrypted home dirs, multi-account machines, containers), and the
|
|
55
|
+
* env var does not always reach the process that needs it.
|
|
56
|
+
*
|
|
57
|
+
* Order is deliberate:
|
|
58
|
+
* 1. `CLAUDE_CONFIG_DIR` — an explicit instruction always wins.
|
|
59
|
+
* 2. LEARNED roots — recovered from transcript paths the agent itself reported
|
|
60
|
+
* (agent-sessions.ts). These are the only entries PROVEN to have held a real
|
|
61
|
+
* transcript, which is why they outrank the conventional defaults.
|
|
62
|
+
* 3. `~/.claude`, then `~/.config/claude` — the conventional locations.
|
|
63
|
+
*
|
|
64
|
+
* Probing a few extra directories costs one failed `readdir` each; missing the
|
|
65
|
+
* user's actual directory costs them the entire auto-wake feature.
|
|
66
|
+
*/
|
|
67
|
+
export async function claudeConfigRoots() {
|
|
68
|
+
const roots = [];
|
|
69
|
+
const env = process.env.CLAUDE_CONFIG_DIR?.trim();
|
|
70
|
+
if (env)
|
|
71
|
+
roots.push(env);
|
|
72
|
+
roots.push(...(await learnedRoots("cc")));
|
|
73
|
+
roots.push(path.join(os.homedir(), ".claude"));
|
|
74
|
+
roots.push(path.join(os.homedir(), ".config", "claude"));
|
|
75
|
+
return [...new Set(roots.map((r) => path.resolve(r)))];
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* The transcript this cwd's agent REPORTED for itself, if the record is still
|
|
79
|
+
* valid on disk. This is layer 1 — the authoritative path — and it bypasses both
|
|
80
|
+
* the root guess and the cwd-encoding guess entirely.
|
|
81
|
+
*
|
|
82
|
+
* Returns null when nothing was ever recorded (an agent running without our
|
|
83
|
+
* plugin) or when the recorded transcript has since been removed, in which case
|
|
84
|
+
* the caller falls back to discovery.
|
|
85
|
+
*/
|
|
86
|
+
export async function recordedCandidate(cwd) {
|
|
87
|
+
const rec = await readAgentSession(cwd, "cc");
|
|
88
|
+
if (!rec)
|
|
89
|
+
return null;
|
|
90
|
+
try {
|
|
91
|
+
const st = await fs.stat(rec.transcriptPath);
|
|
92
|
+
return { sessionId: rec.sessionId, mtimeMs: st.mtimeMs };
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
return null;
|
|
27
96
|
}
|
|
28
97
|
}
|
|
98
|
+
/**
|
|
99
|
+
* One-line description of the transcript BASE dir and how many project dirs it
|
|
100
|
+
* holds. Used only when a resolve finds zero candidates, because it separates the
|
|
101
|
+
* two causes that look identical in the logs:
|
|
102
|
+
* • base absent / 0 project dirs → the bridge is looking at the WRONG config dir
|
|
103
|
+
* entirely (Claude Code's environment lives elsewhere and CLAUDE_CONFIG_DIR did
|
|
104
|
+
* not reach this process).
|
|
105
|
+
* • base holds N project dirs but none match → the CWD is the wrong one (or a
|
|
106
|
+
* representation this build cannot map — see {@link projectDirsFor}).
|
|
107
|
+
* Never throws.
|
|
108
|
+
*/
|
|
109
|
+
export async function transcriptBaseSummary() {
|
|
110
|
+
const roots = await claudeConfigRoots();
|
|
111
|
+
const parts = await Promise.all(roots.map(async (root) => {
|
|
112
|
+
const base = path.join(root, "projects");
|
|
113
|
+
try {
|
|
114
|
+
return `${base} [${(await fs.readdir(base)).length} project dirs]`;
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
return `${base} [absent]`;
|
|
118
|
+
}
|
|
119
|
+
}));
|
|
120
|
+
return parts.join(", ");
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* List all Claude Code session candidates for a cwd as {sessionId, mtimeMs}.
|
|
124
|
+
* Scans every {@link projectDirsFor} dir for *.jsonl — honoring CLAUDE_CONFIG_DIR
|
|
125
|
+
* (default ~/.claude). Returns [] on any error or an empty/absent dir (the
|
|
126
|
+
* resolver treats [] as "no candidates"). Never throws — Vault: Returning-null/
|
|
127
|
+
* Option error pattern (typescript-master-vault concepts/Error_Handling). Dirs
|
|
128
|
+
* and stats are probed in parallel (Vault: Parallelism); results are deduped by
|
|
129
|
+
* sessionId so two cwd forms resolving to one dir cannot inflate the count (a
|
|
130
|
+
* false ">1" would make the resolver call it "ambiguous" and refuse).
|
|
131
|
+
*/
|
|
132
|
+
export async function listCandidates(cwd) {
|
|
133
|
+
const dirs = await projectDirsFor(cwd);
|
|
134
|
+
const perDir = await Promise.all(dirs.map(async (projectDir) => {
|
|
135
|
+
try {
|
|
136
|
+
const entries = await fs.readdir(projectDir);
|
|
137
|
+
return await Promise.all(entries
|
|
138
|
+
.filter((f) => f.endsWith(".jsonl"))
|
|
139
|
+
.map(async (f) => ({
|
|
140
|
+
sessionId: f.replace(".jsonl", ""),
|
|
141
|
+
mtimeMs: (await fs.stat(path.join(projectDir, f))).mtimeMs,
|
|
142
|
+
})));
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
return [];
|
|
146
|
+
}
|
|
147
|
+
}));
|
|
148
|
+
const byId = new Map();
|
|
149
|
+
for (const c of perDir.flat()) {
|
|
150
|
+
const prev = byId.get(c.sessionId);
|
|
151
|
+
if (!prev || c.mtimeMs > prev.mtimeMs)
|
|
152
|
+
byId.set(c.sessionId, c);
|
|
153
|
+
}
|
|
154
|
+
// Layer 1 last, so the agent's OWN report survives even when every derived
|
|
155
|
+
// directory missed. Deduped by sessionId, so in the normal case (discovery
|
|
156
|
+
// already found it) this adds nothing and cannot inflate the count into a
|
|
157
|
+
// false "ambiguous".
|
|
158
|
+
const recorded = await recordedCandidate(cwd);
|
|
159
|
+
if (recorded && !byId.has(recorded.sessionId)) {
|
|
160
|
+
byId.set(recorded.sessionId, recorded);
|
|
161
|
+
}
|
|
162
|
+
return [...byId.values()];
|
|
163
|
+
}
|
|
29
164
|
/**
|
|
30
165
|
* Detect the most recently active Claude Code session for a given cwd (newest
|
|
31
166
|
* mtime wins). Returns null if none. Preserved for existing callers; new code
|
|
@@ -41,18 +176,29 @@ export async function detectCurrentSession(cwd) {
|
|
|
41
176
|
/**
|
|
42
177
|
* Check whether a Claude Code session file exists on disk.
|
|
43
178
|
* Returns false if the file is missing (session ended or ID is wrong).
|
|
179
|
+
*
|
|
180
|
+
* Probes every {@link projectDirsFor} form — a pin validated under the canonical
|
|
181
|
+
* cwd must still validate when the agent registered a symlinked/trailing-slash
|
|
182
|
+
* representation of the same directory, or the resolver silently drops the pin
|
|
183
|
+
* and falls back to guessing by mtime.
|
|
44
184
|
*/
|
|
45
185
|
export async function validateSession(sessionId, cwd) {
|
|
46
|
-
//
|
|
47
|
-
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
await fs.access(sessionPath);
|
|
186
|
+
// Layer 1 first: if the agent reported this exact session, its own path is
|
|
187
|
+
// proof — no directory needs to be derived at all.
|
|
188
|
+
const recorded = await recordedCandidate(cwd);
|
|
189
|
+
if (recorded?.sessionId === sessionId)
|
|
51
190
|
return true;
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
191
|
+
const dirs = await projectDirsFor(cwd);
|
|
192
|
+
const hits = await Promise.all(dirs.map(async (dir) => {
|
|
193
|
+
try {
|
|
194
|
+
await fs.access(path.join(dir, `${sessionId}.jsonl`));
|
|
195
|
+
return true;
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
return false;
|
|
199
|
+
}
|
|
200
|
+
}));
|
|
201
|
+
return hits.some(Boolean);
|
|
56
202
|
}
|
|
57
203
|
export function execClaude(sessionId, message, cwd, timeoutMs) {
|
|
58
204
|
return new Promise((resolve) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cc-cli.js","sourceRoot":"","sources":["../../src/services/cc-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cc-cli.js","sourceRoot":"","sources":["../../src/services/cc-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,6 +31,7 @@ export declare const ACTIVE_WRITER_RE: RegExp;
|
|
|
31
31
|
* an approval prompt the relay cannot answer.
|
|
32
32
|
*/
|
|
33
33
|
export declare function execCodex(sessionId: string, message: string, cwd: string, timeoutMs?: number): Promise<CliExecResult>;
|
|
34
|
+
export declare function codexSessionsRoot(): string;
|
|
34
35
|
/**
|
|
35
36
|
* Find the most recently active Codex session for a given cwd by scanning
|
|
36
37
|
* ~/.codex/sessions/**.jsonl, matching session_meta.payload.cwd, newest mtime
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-cli.d.ts","sourceRoot":"","sources":["../../src/services/codex-cli.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAa,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAqCtD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,sBAAsB,CAAC,GAAG,IAAI,GAAG,IAAI,CAEpF;AACD,2CAA2C;AAC3C,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C;AACD,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAE/E;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,QAC+J,CAAC;AAE/L;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,QAA+D,CAAC;AAE7F;;;;;;GAMG;AACH,wBAAgB,SAAS,CACvB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC,CAkIxB;
|
|
1
|
+
{"version":3,"file":"codex-cli.d.ts","sourceRoot":"","sources":["../../src/services/codex-cli.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAa,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAqCtD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,sBAAsB,CAAC,GAAG,IAAI,GAAG,IAAI,CAEpF;AACD,2CAA2C;AAC3C,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C;AACD,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAE/E;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,QAC+J,CAAC;AAE/L;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,QAA+D,CAAC;AAE7F;;;;;;GAMG;AACH,wBAAgB,SAAS,CACvB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC,CAkIxB;AA8DD,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AA2BD;;;;GAIG;AACH,wBAAsB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmBnF;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CAuBnD;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAW9E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-cli.js","sourceRoot":"","sources":["../../src/services/codex-cli.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"codex-cli.js","sourceRoot":"","sources":["../../src/services/codex-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,24 @@ export declare function listCandidatesFor(platform: Platform, cwd: string): Prom
|
|
|
15
15
|
sessionId: string;
|
|
16
16
|
mtimeMs: number;
|
|
17
17
|
}[]>;
|
|
18
|
+
/**
|
|
19
|
+
* Platform-aware "which session did this cwd's agent report for ITSELF".
|
|
20
|
+
*
|
|
21
|
+
* Layer 1 of session discovery: a fact published by the agent (via the plugin
|
|
22
|
+
* hook payload) rather than a path we derived. Only Claude Code publishes a
|
|
23
|
+
* transcript path today; Codex already matches its rollouts by recorded cwd, so
|
|
24
|
+
* it has no derivation to bypass. Returns null when nothing was recorded.
|
|
25
|
+
*/
|
|
26
|
+
export declare function reportedSessionFor(platform: Platform, cwd: string): Promise<string | null>;
|
|
27
|
+
/**
|
|
28
|
+
* Platform-aware "which directories would I scan for this cwd's sessions".
|
|
29
|
+
*
|
|
30
|
+
* Diagnostics only. A zero-candidate resolve used to be a dead end: the log said
|
|
31
|
+
* "no candidate sessions found for cwd" without ever naming the directory it
|
|
32
|
+
* looked in, so a cwd-representation mismatch and a genuinely empty machine were
|
|
33
|
+
* indistinguishable. Surfacing the probed path turns that into a one-glance fix.
|
|
34
|
+
*/
|
|
35
|
+
export declare function probePathsFor(platform: Platform, cwd: string): Promise<string[]>;
|
|
18
36
|
/** Platform-aware "does this session id still exist on disk". */
|
|
19
37
|
export declare function validateSessionFor(platform: Platform, sessionId: string, cwd: string): Promise<boolean>;
|
|
20
38
|
//# sourceMappingURL=exec-remote.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec-remote.d.ts","sourceRoot":"","sources":["../../src/services/exec-remote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAM5C,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC;AAsClE;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,GACjC,OAAO,CAAC,aAAa,CAAC,CAQxB;AAED,iEAAiE;AACjE,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQxB;AAED,gFAAgF;AAChF,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CAQnD;AAED,iEAAiE;AACjE,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,OAAO,CAAC,CAQlB"}
|
|
1
|
+
{"version":3,"file":"exec-remote.d.ts","sourceRoot":"","sources":["../../src/services/exec-remote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAM5C,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC;AAsClE;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,GACjC,OAAO,CAAC,aAAa,CAAC,CAQxB;AAED,iEAAiE;AACjE,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQxB;AAED,gFAAgF;AAChF,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CAQnD;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOxB;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAQhF;AAED,iEAAiE;AACjE,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,OAAO,CAAC,CAQlB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getConfig } from "../config.js";
|
|
2
|
-
import { execClaude, detectCurrentSession, validateSession, listCandidates } from "./cc-cli.js";
|
|
3
|
-
import { execCodex, detectCurrentCodexSession, validateCodexSession, listCodexCandidates } from "./codex-cli.js";
|
|
2
|
+
import { execClaude, detectCurrentSession, validateSession, listCandidates, projectDirsFor, recordedCandidate } from "./cc-cli.js";
|
|
3
|
+
import { execCodex, detectCurrentCodexSession, validateCodexSession, listCodexCandidates, codexSessionsRoot } from "./codex-cli.js";
|
|
4
4
|
import { ensureDaemon, execCodexViaAppServer, runningUnderAppServerDaemon } from "./codex-app-server.js";
|
|
5
5
|
/**
|
|
6
6
|
* Codex wake dispatch, honoring COGENT_CODEX_WAKE:
|
|
@@ -66,6 +66,41 @@ export function listCandidatesFor(platform, cwd) {
|
|
|
66
66
|
return listCandidates(cwd);
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* Platform-aware "which session did this cwd's agent report for ITSELF".
|
|
71
|
+
*
|
|
72
|
+
* Layer 1 of session discovery: a fact published by the agent (via the plugin
|
|
73
|
+
* hook payload) rather than a path we derived. Only Claude Code publishes a
|
|
74
|
+
* transcript path today; Codex already matches its rollouts by recorded cwd, so
|
|
75
|
+
* it has no derivation to bypass. Returns null when nothing was recorded.
|
|
76
|
+
*/
|
|
77
|
+
export async function reportedSessionFor(platform, cwd) {
|
|
78
|
+
if (platform !== "cc")
|
|
79
|
+
return null;
|
|
80
|
+
try {
|
|
81
|
+
return (await recordedCandidate(cwd))?.sessionId ?? null;
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Platform-aware "which directories would I scan for this cwd's sessions".
|
|
89
|
+
*
|
|
90
|
+
* Diagnostics only. A zero-candidate resolve used to be a dead end: the log said
|
|
91
|
+
* "no candidate sessions found for cwd" without ever naming the directory it
|
|
92
|
+
* looked in, so a cwd-representation mismatch and a genuinely empty machine were
|
|
93
|
+
* indistinguishable. Surfacing the probed path turns that into a one-glance fix.
|
|
94
|
+
*/
|
|
95
|
+
export function probePathsFor(platform, cwd) {
|
|
96
|
+
switch (platform) {
|
|
97
|
+
case "codex":
|
|
98
|
+
return Promise.resolve([codexSessionsRoot()]);
|
|
99
|
+
case "cc":
|
|
100
|
+
default:
|
|
101
|
+
return projectDirsFor(cwd);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
69
104
|
/** Platform-aware "does this session id still exist on disk". */
|
|
70
105
|
export function validateSessionFor(platform, sessionId, cwd) {
|
|
71
106
|
switch (platform) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec-remote.js","sourceRoot":"","sources":["../../src/services/exec-remote.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"exec-remote.js","sourceRoot":"","sources":["../../src/services/exec-remote.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,12 @@ export interface SessionResolution {
|
|
|
16
16
|
mtimeGapMs: number | null;
|
|
17
17
|
/** human-readable, content-free (ids/counts/timings only). */
|
|
18
18
|
fallbackReason?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Transcript directories that were scanned. Populated by resolveSession (the
|
|
21
|
+
* fs adapter) so a zero-candidate refusal can NAME the path it probed — without
|
|
22
|
+
* it, a cwd-representation mismatch is indistinguishable from an empty machine.
|
|
23
|
+
*/
|
|
24
|
+
probedPaths?: string[];
|
|
19
25
|
}
|
|
20
26
|
/**
|
|
21
27
|
* Pure acceptance-gate logic — no fs, fully deterministic and unit-tested.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-resolver.d.ts","sourceRoot":"","sources":["../../src/services/session-resolver.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"session-resolver.d.ts","sourceRoot":"","sources":["../../src/services/session-resolver.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,QAAQ,EACd,MAAM,kBAAkB,CAAC;AAE1B,wEAAwE;AACxE,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,gBAAgB,GACxB,cAAc,GACd,kBAAkB,GAClB,cAAc,GACd,WAAW,GACX,MAAM,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE5D,MAAM,WAAW,iBAAiB;IAChC,yEAAyE;IACzE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,UAAU,EAAE,kBAAkB,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,8DAA8D;IAC9D,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,8DAA8D;IAC9D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,SAAS,EAAE,EACvB,eAAe,EAAE,MAAM,GAAG,SAAS,EACnC,YAAY,EAAE,OAAO,EACrB,QAAQ,EAAE,MAAM,GACf,iBAAiB,CAkDnB;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,MAAM,EACX,eAAe,CAAC,EAAE,MAAM,EACxB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,iBAAiB,CAAC,CA8C5B"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getConfig } from "../config.js";
|
|
2
|
-
import { listCandidatesFor, validateSessionFor, } from "./exec-remote.js";
|
|
2
|
+
import { listCandidatesFor, probePathsFor, reportedSessionFor, validateSessionFor, } from "./exec-remote.js";
|
|
3
3
|
/**
|
|
4
4
|
* Pure acceptance-gate logic — no fs, fully deterministic and unit-tested.
|
|
5
5
|
* Prefer-exact: a live pin wins. Refuse-if-close: on ambiguity, return null
|
|
@@ -63,13 +63,47 @@ export function decideResolution(candidates, pinnedSessionId, pinnedExists, marg
|
|
|
63
63
|
* Promise.all. marginMs defaults to COGENT_RESOLVER_AMBIGUOUS_MARGIN_MS.
|
|
64
64
|
*/
|
|
65
65
|
export async function resolveSession(platform, cwd, pinnedSessionId, marginMs) {
|
|
66
|
-
const [candidates, pinnedExists] = await Promise.all([
|
|
66
|
+
const [candidates, pinnedExists, reported] = await Promise.all([
|
|
67
67
|
listCandidatesFor(platform, cwd),
|
|
68
68
|
pinnedSessionId
|
|
69
69
|
? validateSessionFor(platform, pinnedSessionId, cwd)
|
|
70
70
|
: Promise.resolve(false),
|
|
71
|
+
// Layer 1 is an ENHANCEMENT over discovery, never a dependency of it: if the
|
|
72
|
+
// learned-record lookup is unavailable or throws, resolution must still run
|
|
73
|
+
// exactly as it did before this layer existed.
|
|
74
|
+
Promise.resolve()
|
|
75
|
+
.then(() => reportedSessionFor(platform, cwd))
|
|
76
|
+
.catch(() => null),
|
|
71
77
|
]);
|
|
72
78
|
const margin = marginMs ?? getConfig().COGENT_RESOLVER_AMBIGUOUS_MARGIN_MS;
|
|
73
|
-
|
|
79
|
+
// LAYER 1. When the caller's pin does not check out, fall back to the session
|
|
80
|
+
// the AGENT ITSELF reported (agent-sessions.ts, written from the hook payload).
|
|
81
|
+
// Promoting it to the pin reuses the existing prefer-exact path, so it resolves
|
|
82
|
+
// "pinned-exact"/HIGH instead of being re-guessed by mtime among candidates.
|
|
83
|
+
// An explicit pin that DOES validate still wins — the caller knows best.
|
|
84
|
+
const effectivePin = pinnedExists ? pinnedSessionId : (reported ?? pinnedSessionId);
|
|
85
|
+
const effectiveExists = pinnedExists || (reported !== null && reported === effectivePin);
|
|
86
|
+
const res = decideResolution(candidates, effectivePin, effectiveExists, margin);
|
|
87
|
+
// Diagnostics are gathered ONLY on the zero-candidate path — the one that is
|
|
88
|
+
// otherwise a dead end — so the happy path does no extra fs work, and a probe
|
|
89
|
+
// that fails can never degrade a resolution that already succeeded.
|
|
90
|
+
if (res.candidateCount === 0) {
|
|
91
|
+
try {
|
|
92
|
+
const probedPaths = await probePathsFor(platform, cwd);
|
|
93
|
+
if (probedPaths.length) {
|
|
94
|
+
res.probedPaths = probedPaths;
|
|
95
|
+
// Name the directory in the reason itself: this string is what reaches
|
|
96
|
+
// the sender over the wire AND the operator in the log, and it was the
|
|
97
|
+
// missing half of every "no candidate sessions found for cwd" report.
|
|
98
|
+
if (res.fallbackReason) {
|
|
99
|
+
res.fallbackReason = `${res.fallbackReason} (cwd=${cwd}; scanned ${probedPaths.join(", ")})`;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
// diagnostics only — never let this change the outcome
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return res;
|
|
74
108
|
}
|
|
75
109
|
//# sourceMappingURL=session-resolver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-resolver.js","sourceRoot":"","sources":["../../src/services/session-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,GAEnB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"session-resolver.js","sourceRoot":"","sources":["../../src/services/session-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-peer.d.ts","sourceRoot":"","sources":["../../src/tools/register-peer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"register-peer.d.ts","sourceRoot":"","sources":["../../src/tools/register-peer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAqBpE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0bhE"}
|
|
@@ -9,6 +9,7 @@ import { logger } from "../logger.js";
|
|
|
9
9
|
import { heartbeat } from "../services/heartbeat.js";
|
|
10
10
|
import { autoRelay } from "../services/auto-relay.js";
|
|
11
11
|
import { resolveSession } from "../services/session-resolver.js";
|
|
12
|
+
import { transcriptBaseSummary } from "../services/cc-cli.js";
|
|
12
13
|
import { deriveWorkspaceId } from "../services/durable-identity.js";
|
|
13
14
|
import { CLIENT_VERSION } from "../constants.js";
|
|
14
15
|
import { getLastNudge } from "../backend/npm-update-check.js";
|
|
@@ -236,6 +237,36 @@ export function registerRegisterPeerTool(server) {
|
|
|
236
237
|
const localSessionId = resolution.sessionId ?? sessionId;
|
|
237
238
|
logger.info(`Register: session resolved ${resolution.decision}/${resolution.confidence} ` +
|
|
238
239
|
`(${resolution.candidateCount} candidate[s]) -> ${localSessionId}`);
|
|
240
|
+
// 🔴 FAIL LOUD. A live agent session is calling this tool right now, so its
|
|
241
|
+
// transcript MUST be on disk. Zero candidates therefore is not "no sessions
|
|
242
|
+
// yet" — it means we scanned the WRONG directory (an agent-supplied cwd that
|
|
243
|
+
// is not where this agent actually runs, or a relocated CLAUDE_CONFIG_DIR /
|
|
244
|
+
// CODEX_HOME the bridge process cannot see). Registration still succeeds, but
|
|
245
|
+
// localSessionId silently falls back to the CLOUD session id, which
|
|
246
|
+
// `--resume` can never open — so EVERY later wake is refused. That combination
|
|
247
|
+
// shipped as a mystery on a fresh dev machine (2026-08-31): the log said only
|
|
248
|
+
// "0 candidate[s]" at INFO and the operator had to report it by hand.
|
|
249
|
+
// This warns on stderr AND returns the probed paths in the tool result, which
|
|
250
|
+
// is the only channel the calling agent can actually read.
|
|
251
|
+
const noLocalSession = resolution.candidateCount === 0;
|
|
252
|
+
if (noLocalSession) {
|
|
253
|
+
// Own try/catch: this block is PURELY informational, so nothing in it may
|
|
254
|
+
// ever fail a registration that has already succeeded.
|
|
255
|
+
try {
|
|
256
|
+
const base = getConfig().COGENT_PLATFORM === "cc"
|
|
257
|
+
? await transcriptBaseSummary()
|
|
258
|
+
: "(codex: scans CODEX_HOME/sessions)";
|
|
259
|
+
logger.warn(`Register: NO local ${getConfig().COGENT_PLATFORM} session found for cwd — auto-wake WILL be refused. ` +
|
|
260
|
+
`cwd=${cwd}; scanned ${(resolution.probedPaths ?? []).join(", ") || "(unknown)"}; base ${base}. ` +
|
|
261
|
+
`If the base is missing or empty, this agent's config dir is elsewhere — ` +
|
|
262
|
+
`set CLAUDE_CONFIG_DIR / CODEX_HOME so the BRIDGE process sees it too. ` +
|
|
263
|
+
`If the base has project dirs but none match, the registered cwd is not where this agent runs.`);
|
|
264
|
+
}
|
|
265
|
+
catch (err) {
|
|
266
|
+
logger.warn(`Register: NO local session found for cwd=${cwd} (auto-wake WILL be refused); ` +
|
|
267
|
+
`could not describe the transcript base: ${err.message}`);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
239
270
|
// Plumb mode (Phase 17 OBS-03) + the pinned local id so the resolver
|
|
240
271
|
// exact-matches it on subsequent wakes.
|
|
241
272
|
autoRelay.setLocalPeer(peerId, localSessionId, cwd, mode, label, localSessionId);
|
|
@@ -248,6 +279,15 @@ export function registerRegisterPeerTool(server) {
|
|
|
248
279
|
decision: resolution.decision,
|
|
249
280
|
confidence: resolution.confidence,
|
|
250
281
|
candidateCount: resolution.candidateCount,
|
|
282
|
+
// Only on the broken path — keeps the happy-path result terse.
|
|
283
|
+
...(noLocalSession
|
|
284
|
+
? {
|
|
285
|
+
warning: "No local session transcript found for this cwd — auto-wake will be REFUSED. " +
|
|
286
|
+
"Verify the cwd is where this agent actually runs and that CLAUDE_CONFIG_DIR / " +
|
|
287
|
+
"CODEX_HOME are visible to the bridge process.",
|
|
288
|
+
scannedPaths: resolution.probedPaths ?? [],
|
|
289
|
+
}
|
|
290
|
+
: {}),
|
|
251
291
|
},
|
|
252
292
|
};
|
|
253
293
|
// Surface a version-drift warning IN the tool response (not just stderr /
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-peer.js","sourceRoot":"","sources":["../../src/tools/register-peer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"register-peer.js","sourceRoot":"","sources":["../../src/tools/register-peer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@essentialai/cogent-bridge",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.21.0",
|
|
4
4
|
"description": "Cogent Bridge — cross-agent comms for Claude Code, OpenAI Codex and Slack. Codex users: install with `curl -fsSL https://cogent.tools/install.sh | sh`, then start with `cogent-codex` for real-time peer wake.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"workspaces": [
|
package/server.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"name": "io.github.eaisdevelopment/cogent",
|
|
4
4
|
"title": "Cogent Bridge from Essential AI Solutions (essentialai.uk)",
|
|
5
5
|
"description": "MCP bridge for inter-session communication between Claude Code instances",
|
|
6
|
-
"version": "3.
|
|
6
|
+
"version": "3.21.0",
|
|
7
7
|
"repository": {
|
|
8
8
|
"url": "https://github.com/eaisdevelopment/cogent",
|
|
9
9
|
"source": "github"
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
{
|
|
13
13
|
"registryType": "npm",
|
|
14
14
|
"identifier": "@essentialai/cogent-bridge",
|
|
15
|
-
"version": "3.
|
|
15
|
+
"version": "3.21.0",
|
|
16
16
|
"runtimeHint": "npx",
|
|
17
17
|
"transport": {
|
|
18
18
|
"type": "stdio"
|