agentcache 0.4.2 → 0.5.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +282 -151
- package/dist/{chunk-T4COG3XD.js → chunk-R5I6WWSD.js} +31 -14
- package/dist/chunk-RXGW4Q3G.js +109 -0
- package/dist/chunk-XRJ6QW6N.js +92 -0
- package/dist/chunk-YKG6CDGT.js +1818 -0
- package/dist/chunk-YY7QXBG5.js +6610 -0
- package/dist/cli.js +2535 -292
- package/dist/device-id-RV7RO5RB.js +7 -0
- package/dist/ide-detector-ETGAVVXO.js +8 -0
- package/dist/mcp.d.ts +734 -2
- package/dist/mcp.js +1126 -446
- package/dist/{paths-5LZRKNYY.js → paths-NTZ2357O.js} +3 -2
- package/dist/postinstall.js +1 -65
- package/dist/setup-7JJPW3VG.js +48 -0
- package/docs/compatibility.md +152 -0
- package/docs/demo-script.md +121 -0
- package/docs/launch-copy.md +125 -0
- package/docs/privacy.md +173 -0
- package/docs/troubleshooting.md +209 -0
- package/package.json +32 -14
- package/dist/3-canonicalizer-HIN2F7SZ.js +0 -11
- package/dist/chunk-5UO7NJPQ.js +0 -71
- package/dist/chunk-CUBZRYS5.js +0 -580
- package/dist/chunk-GGAATZKM.js +0 -120
- package/dist/chunk-JUDLOBOC.js +0 -77
- package/dist/chunk-KFQGP6VL.js +0 -33
- package/dist/chunk-PSASDZQE.js +0 -490
- package/dist/chunk-SLRKWMSE.js +0 -202
- package/dist/chunk-T7BJPANN.js +0 -45
- package/dist/chunk-WTXSZBQE.js +0 -388
- package/dist/compile-all-PTWTZVP5.js +0 -495
- package/dist/ide-detector-5TRCR4F5.js +0 -7
- package/dist/pre-tool-use-A4AJHZOJ.js +0 -30
- package/dist/session-start-DGMGEAJU.js +0 -78
- package/dist/setup-CVG35TUZ.js +0 -51
- package/dist/sqlite-NM2BVHUY.js +0 -7
- package/dist/stop-WGGRX6TQ.js +0 -38
- package/dist/transcript-JWSGSDSF.js +0 -24
|
@@ -6,10 +6,10 @@ import {
|
|
|
6
6
|
getDbPath,
|
|
7
7
|
getProjectDisplayName,
|
|
8
8
|
getProjectId,
|
|
9
|
+
getSessionDbPath,
|
|
9
10
|
isInitialized,
|
|
10
11
|
migrateFromLegacy
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import "./chunk-KFQGP6VL.js";
|
|
12
|
+
} from "./chunk-R5I6WWSD.js";
|
|
13
13
|
export {
|
|
14
14
|
findProjectRoot,
|
|
15
15
|
getClaudeTranscriptsDir,
|
|
@@ -18,6 +18,7 @@ export {
|
|
|
18
18
|
getDbPath,
|
|
19
19
|
getProjectDisplayName,
|
|
20
20
|
getProjectId,
|
|
21
|
+
getSessionDbPath,
|
|
21
22
|
isInitialized,
|
|
22
23
|
migrateFromLegacy
|
|
23
24
|
};
|
package/dist/postinstall.js
CHANGED
|
@@ -1,66 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
spawnCompileAll
|
|
3
|
-
} from "./chunk-JUDLOBOC.js";
|
|
4
|
-
import {
|
|
5
|
-
registerClaudeHooks,
|
|
6
|
-
registerMcpServer
|
|
7
|
-
} from "./chunk-SLRKWMSE.js";
|
|
8
|
-
import {
|
|
9
|
-
SqliteKnowledgeRepository
|
|
10
|
-
} from "./chunk-PSASDZQE.js";
|
|
11
|
-
import {
|
|
12
|
-
detectInstalledIdes
|
|
13
|
-
} from "./chunk-5UO7NJPQ.js";
|
|
14
|
-
import {
|
|
15
|
-
getDataDir,
|
|
16
|
-
getDbPath,
|
|
17
|
-
migrateFromLegacy
|
|
18
|
-
} from "./chunk-T4COG3XD.js";
|
|
19
|
-
import "./chunk-KFQGP6VL.js";
|
|
20
|
-
|
|
21
1
|
// src/postinstall.ts
|
|
22
|
-
|
|
23
|
-
import { join } from "path";
|
|
24
|
-
import { homedir } from "os";
|
|
25
|
-
import { spawnSync } from "child_process";
|
|
26
|
-
if (process.env.CI) {
|
|
27
|
-
process.exit(0);
|
|
28
|
-
}
|
|
29
|
-
try {
|
|
30
|
-
migrateFromLegacy();
|
|
31
|
-
mkdirSync(getDataDir(), { recursive: true });
|
|
32
|
-
const repo = new SqliteKnowledgeRepository(getDbPath());
|
|
33
|
-
repo.close();
|
|
34
|
-
const ides = detectInstalledIdes().filter((i) => i.detected);
|
|
35
|
-
const registered = [];
|
|
36
|
-
for (const ide of ides) {
|
|
37
|
-
if (registerMcpServer(ide)) {
|
|
38
|
-
registered.push(ide.name);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
mkdirSync(join(homedir(), ".claude"), { recursive: true });
|
|
42
|
-
registerClaudeHooks();
|
|
43
|
-
if (registered.length > 0) {
|
|
44
|
-
console.log(`agentcache: registered with ${registered.join(", ")}`);
|
|
45
|
-
}
|
|
46
|
-
console.log("agentcache: ready. Knowledge compiles automatically across all sessions.");
|
|
47
|
-
const hasBackend = ["claude", "codex", "gemini", "copilot", "aider", "goose"].some((cmd) => {
|
|
48
|
-
try {
|
|
49
|
-
return spawnSync("which", [cmd], { encoding: "utf-8", timeout: 3e3 }).status === 0;
|
|
50
|
-
} catch {
|
|
51
|
-
return false;
|
|
52
|
-
}
|
|
53
|
-
}) || process.env.ANTHROPIC_API_KEY || process.env.OPENAI_API_KEY;
|
|
54
|
-
if (hasBackend) {
|
|
55
|
-
const spawned = spawnCompileAll();
|
|
56
|
-
if (spawned) {
|
|
57
|
-
console.log("agentcache: background compilation started for existing transcripts.");
|
|
58
|
-
}
|
|
59
|
-
} else {
|
|
60
|
-
console.log("agentcache: no LLM backend detected for batch compilation.");
|
|
61
|
-
console.log(" Install one of: claude, codex, gemini, copilot, aider, goose");
|
|
62
|
-
console.log(" Or set ANTHROPIC_API_KEY / OPENAI_API_KEY. Knowledge compiles via MCP in the meantime.");
|
|
63
|
-
}
|
|
64
|
-
} catch (err) {
|
|
65
|
-
console.log(`agentcache postinstall: ${err.message}. Run 'agentcache setup' manually.`);
|
|
66
|
-
}
|
|
2
|
+
console.log("agentcache: installed. Run 'agentcache setup' to configure it explicitly.");
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import {
|
|
2
|
+
registerClaudeHooks,
|
|
3
|
+
registerMcpServer
|
|
4
|
+
} from "./chunk-YKG6CDGT.js";
|
|
5
|
+
import {
|
|
6
|
+
detectInstalledIdes
|
|
7
|
+
} from "./chunk-RXGW4Q3G.js";
|
|
8
|
+
import {
|
|
9
|
+
getDataDir
|
|
10
|
+
} from "./chunk-R5I6WWSD.js";
|
|
11
|
+
|
|
12
|
+
// src/setup.ts
|
|
13
|
+
import { mkdirSync } from "fs";
|
|
14
|
+
async function runSetup() {
|
|
15
|
+
mkdirSync(getDataDir(), { recursive: true, mode: 448 });
|
|
16
|
+
const ides = detectInstalledIdes();
|
|
17
|
+
const detected = ides.filter((i) => i.detected);
|
|
18
|
+
console.log(`
|
|
19
|
+
AgentCache setup complete.`);
|
|
20
|
+
console.log(` Data directory: ${getDataDir()}
|
|
21
|
+
`);
|
|
22
|
+
if (detected.length === 0) {
|
|
23
|
+
console.log(` No supported IDEs detected. No MCP registration was changed.
|
|
24
|
+
`);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
console.log(`IDEs:`);
|
|
28
|
+
for (const ide of detected) {
|
|
29
|
+
const result = registerMcpServer(ide);
|
|
30
|
+
if (result.status === "registered") {
|
|
31
|
+
console.log(` ${ide.name}: MCP registered`);
|
|
32
|
+
} else if (result.status === "unchanged") {
|
|
33
|
+
console.log(` ${ide.name}: already registered`);
|
|
34
|
+
} else {
|
|
35
|
+
console.log(` ${ide.name}: skipped${result.reason ? ` (${result.reason})` : ""}`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const legacyHooksRemoved = registerClaudeHooks();
|
|
39
|
+
if (legacyHooksRemoved) {
|
|
40
|
+
console.log(`
|
|
41
|
+
Claude Code hooks: removed legacy automatic hooks`);
|
|
42
|
+
}
|
|
43
|
+
console.log(`
|
|
44
|
+
Done. Use AgentCache commands explicitly to import or resume a session.`);
|
|
45
|
+
}
|
|
46
|
+
export {
|
|
47
|
+
runSetup
|
|
48
|
+
};
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# AgentCache beta compatibility
|
|
2
|
+
|
|
3
|
+
This document describes the runtime registry shipped in AgentCache
|
|
4
|
+
`0.5.0-beta.2`. The CLI remains the source of truth on an installed machine:
|
|
5
|
+
|
|
6
|
+
```bash
|
|
7
|
+
agentcache adapter list --json
|
|
8
|
+
agentcache adapter doctor <adapter-id> --json
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Reading capability levels
|
|
12
|
+
|
|
13
|
+
- `stable` requires dated, client-specific integration evidence in the runtime
|
|
14
|
+
registry. No adapter currently meets that bar.
|
|
15
|
+
- `experimental` means AgentCache has fixture or schema evidence but still
|
|
16
|
+
needs a dated live-client verification run.
|
|
17
|
+
- `unsupported` is a deliberate fail-closed boundary. AgentCache reports the
|
|
18
|
+
missing capability and does not emulate or guess it.
|
|
19
|
+
|
|
20
|
+
The mode is equally important:
|
|
21
|
+
|
|
22
|
+
- `mcp-cooperative` means the client starts an AgentCache stdio MCP process.
|
|
23
|
+
- `local-snapshot` means AgentCache reads an allowed native transcript source
|
|
24
|
+
without writing to it.
|
|
25
|
+
- `none` means that adapter capability is not offered.
|
|
26
|
+
|
|
27
|
+
This matrix was checked against the runtime registry on 2026-09-07. The
|
|
28
|
+
experimental entries have no `verifiedAt` value in the registry, so this date is
|
|
29
|
+
not presented as live-client verification evidence.
|
|
30
|
+
|
|
31
|
+
## Runtime capability matrix
|
|
32
|
+
|
|
33
|
+
| Client | Adapter ID | Registration | Historical recovery | Native resume | Native append/checkpoint/fork/launch |
|
|
34
|
+
|---|---|---|---|---|---|
|
|
35
|
+
| Claude Code | `claude-code` | experimental / mcp-cooperative | experimental / local-snapshot JSONL | unsupported / none | unsupported / none |
|
|
36
|
+
| Cursor | `cursor` | experimental / mcp-cooperative | experimental / local-snapshot JSONL | unsupported / none | unsupported / none |
|
|
37
|
+
| Roo Code | `roo-code` | experimental / mcp-cooperative | experimental / local-snapshot task JSON | unsupported / none | unsupported / none |
|
|
38
|
+
| Windsurf | `windsurf` | experimental / mcp-cooperative | unsupported / none | unsupported / none | unsupported / none |
|
|
39
|
+
| Continue | `continue` | experimental / mcp-cooperative | experimental / local-snapshot session JSON | unsupported / none | unsupported / none |
|
|
40
|
+
| Codex | `codex` | experimental / mcp-cooperative | experimental / local-snapshot JSONL | unsupported / none | unsupported / none |
|
|
41
|
+
| Goose | `goose` | experimental / mcp-cooperative | unsupported / none | unsupported / none | unsupported / none |
|
|
42
|
+
|
|
43
|
+
The longer table in the README is mechanically checked against all seven
|
|
44
|
+
capability fields in the runtime registry.
|
|
45
|
+
|
|
46
|
+
## Portable operations versus native operations
|
|
47
|
+
|
|
48
|
+
AgentCache's shared MCP surface provides portable `session_open`,
|
|
49
|
+
`session_resume`, `session_append`, `session_checkpoint`, `session_fork`, and
|
|
50
|
+
`session_history` operations. Those write to AgentCache's v2 store, not to a
|
|
51
|
+
client's native conversation database.
|
|
52
|
+
|
|
53
|
+
Resume-capsule source provenance names the client leg that owns the checkpoint
|
|
54
|
+
boundary event. A human CLI may create the immutable checkpoint and handoff,
|
|
55
|
+
but that administrative writer is not presented as the conversation source.
|
|
56
|
+
An explicit historical checkpoint keeps the historical event's source, and a
|
|
57
|
+
fork keeps the parent boundary's source. If AgentCache cannot prove that event
|
|
58
|
+
and leg relationship, it rejects the capsule instead of guessing.
|
|
59
|
+
|
|
60
|
+
The runtime registry marks native resume, append, checkpoint, fork, and launch
|
|
61
|
+
unsupported for all seven adapters. In practical terms:
|
|
62
|
+
|
|
63
|
+
1. You explicitly prepare a handoff with the AgentCache CLI.
|
|
64
|
+
2. You open the destination client and the same repository yourself.
|
|
65
|
+
3. The destination consumes the handoff through its registered AgentCache MCP
|
|
66
|
+
server.
|
|
67
|
+
4. AgentCache creates a new portable client leg. It does not import or launch a
|
|
68
|
+
provider-private conversation object.
|
|
69
|
+
|
|
70
|
+
## Registration formats
|
|
71
|
+
|
|
72
|
+
Setup writes an adapter-bound launch vector, never a bare PATH-resolved
|
|
73
|
+
identity:
|
|
74
|
+
|
|
75
|
+
```text
|
|
76
|
+
<absolute-node> <absolute-agentcache-cli> serve --adapter <adapter-id>
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Both executable paths are captured from the AgentCache process performing
|
|
80
|
+
setup. Rerun setup after changing Node versions or version managers, changing
|
|
81
|
+
the global npm prefix, or reinstalling/upgrading AgentCache, then restart the
|
|
82
|
+
clients so they reload their MCP configuration.
|
|
83
|
+
|
|
84
|
+
The supported configuration families are Claude Code JSON, Cursor/Windsurf/Roo
|
|
85
|
+
Code MCP JSON, Continue's MCP JSON directory, Codex TOML, and Goose YAML.
|
|
86
|
+
Existing files are updated atomically with a restrictive backup. Malformed or
|
|
87
|
+
ambiguous configurations are preserved and reported as skipped. Setup removes
|
|
88
|
+
recognized legacy AgentCache hooks and allow-list entries; it does not add
|
|
89
|
+
blanket tool approval. It also recognizes the exact pre-rebrand Loop
|
|
90
|
+
Engineering registration (`mcpServers.loop` running `loop-eng serve`) and its
|
|
91
|
+
Claude `compile-session`, `discover`, and `enforce` hooks. Those known entries
|
|
92
|
+
are removed during migration, while similarly named or otherwise ambiguous
|
|
93
|
+
user configuration is left untouched. Published early-release JSON targets at
|
|
94
|
+
`~/.roo/mcp.json`, `~/.windsurf/mcp.json`, `~/.continue/mcp.json`, and
|
|
95
|
+
`~/.codex/mcp.json` are checked and cleaned in a separate safe pass before the
|
|
96
|
+
current target is registered.
|
|
97
|
+
|
|
98
|
+
Goose registration is experimental. It targets the documented Goose 1.39
|
|
99
|
+
`extensions.<name>` stdio YAML shape. Goose historical recovery is unsupported
|
|
100
|
+
because a safe immutable snapshot of its SQLite database and WAL has not been
|
|
101
|
+
verified.
|
|
102
|
+
|
|
103
|
+
## Historical recovery evidence
|
|
104
|
+
|
|
105
|
+
| Client | Source evidence available to workspace binding | Consequence |
|
|
106
|
+
|---|---|---|
|
|
107
|
+
| Claude Code | Explicit `cwd` in JSONL | A matching source can be imported for the active workspace. |
|
|
108
|
+
| Cursor | Encoded path hint only | The hint is not trusted as workspace ownership; automatic import may require a future explicit attach flow. |
|
|
109
|
+
| Roo Code | No verified workspace field | The unverified source is reported in diagnostics, but AgentCache does not expose it as a selectable session or guess the workspace. |
|
|
110
|
+
| Windsurf | No verified historical transcript source | Historical recovery is unsupported; prospective MCP sessions can still participate. |
|
|
111
|
+
| Continue | Explicit `workspaceDirectory` in session JSON | A matching source can be imported for the active workspace. |
|
|
112
|
+
| Codex | Explicit `session_meta.cwd` in JSONL | A matching source can be imported for the active workspace. |
|
|
113
|
+
| Goose | SQLite source lacks the required safe snapshot implementation | Historical recovery is unsupported; prospective MCP sessions can still participate. |
|
|
114
|
+
|
|
115
|
+
Discovery is bounded by the adapter's runtime limits: at most 16 MiB, 10,000
|
|
116
|
+
normalized events, and two seconds per read budget. Sources outside canonical
|
|
117
|
+
adapter-owned roots, symbolic links, changed files, malformed input, and
|
|
118
|
+
unproven workspace matches fail closed.
|
|
119
|
+
|
|
120
|
+
## Known beta limitations
|
|
121
|
+
|
|
122
|
+
- All adapter registration is experimental pending dated live-client runs.
|
|
123
|
+
- Windsurf historical recovery is unsupported.
|
|
124
|
+
- Goose historical recovery is unsupported, and Goose registration remains
|
|
125
|
+
experimental.
|
|
126
|
+
- Cursor and Roo Code history can be parsed, but their current native sources
|
|
127
|
+
do not provide enough evidence for automatic workspace binding.
|
|
128
|
+
- Workspace continuity requires the same device and exact canonical root;
|
|
129
|
+
sibling clones and separate worktrees remain isolated even when Git metadata
|
|
130
|
+
matches. An explicit attach flow is deferred. Multi-root MCP clients receive
|
|
131
|
+
an opaque root ID paired with a bounded, redacted display label; the label is
|
|
132
|
+
untrusted and display-only. A changed Git identity at the same canonical path
|
|
133
|
+
is reported as a warning without exposing the stored remote or Git path.
|
|
134
|
+
- Native launch and provider-native resume are unsupported for every adapter.
|
|
135
|
+
- Multi-device sync is not implemented.
|
|
136
|
+
- Client updates can change undocumented transcript formats or configuration
|
|
137
|
+
behavior. Run `adapter doctor` after an update and report the exact client
|
|
138
|
+
version with beta feedback.
|
|
139
|
+
|
|
140
|
+
## Reporting compatibility evidence
|
|
141
|
+
|
|
142
|
+
Include these outputs, after checking them for sensitive data:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
node --version
|
|
146
|
+
agentcache --version
|
|
147
|
+
agentcache adapter doctor <adapter-id> --json
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Also include the client version, operating system, source and destination
|
|
151
|
+
adapter IDs, whether the operation was `continue` or `fork`, and whether the
|
|
152
|
+
client was restarted after registration.
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# AgentCache in 60–90 seconds: an uncut demo
|
|
2
|
+
|
|
3
|
+
## Goal
|
|
4
|
+
|
|
5
|
+
Show one unfinished Claude Code leg, an explicit session selection, Codex
|
|
6
|
+
consuming the exact handoff and recalling the next step, then an explicit fork
|
|
7
|
+
consumed in Cursor. Keep the terminal, clients, repository, and clock visible.
|
|
8
|
+
Do not cut around an error or replace real output with a mock.
|
|
9
|
+
|
|
10
|
+
## Preflight, off camera
|
|
11
|
+
|
|
12
|
+
- Install `agentcache@0.5.0-beta.2`, run `agentcache setup`, and restart Claude
|
|
13
|
+
Code, Codex, and Cursor.
|
|
14
|
+
- Open the same small demo repository in all three clients.
|
|
15
|
+
- Run the global `agentcache doctor` to verify exact adapter-bound MCP
|
|
16
|
+
registrations. Before the first session operation, its informational
|
|
17
|
+
`will initialize on first session operation` message is expected and is not
|
|
18
|
+
a failure. After `session_open`, rerun global doctor if you want to verify the
|
|
19
|
+
initialized v2 store. Run `agentcache adapter doctor <adapter-id>` for each
|
|
20
|
+
client to capture capability evidence. Keep the diagnostic output available
|
|
21
|
+
after the recording.
|
|
22
|
+
- In Claude Code, use the AgentCache `session_open` tool to open a portable
|
|
23
|
+
session, then use `session_append` and `session_checkpoint` to make a short
|
|
24
|
+
checkpoint whose
|
|
25
|
+
state says:
|
|
26
|
+
- objective: add an input validator;
|
|
27
|
+
- completed work: failing test added;
|
|
28
|
+
- open work: implement the validator;
|
|
29
|
+
- constraint: do not change the public error shape; and
|
|
30
|
+
- next step: run the focused test, then implement the smallest fix.
|
|
31
|
+
- Leave the implementation unfinished. Record the session ID, but do not
|
|
32
|
+
preselect it in the terminal picker.
|
|
33
|
+
- Use disposable demo text. Never place a real credential or private path in a
|
|
34
|
+
handoff token, prompt, terminal title, or screen recording.
|
|
35
|
+
|
|
36
|
+
## Recording script
|
|
37
|
+
|
|
38
|
+
### 0–10 seconds — unfinished Claude Code leg
|
|
39
|
+
|
|
40
|
+
Show Claude Code in the demo repository. Say:
|
|
41
|
+
|
|
42
|
+
> “This session has a failing validator test and a specific next step. I am
|
|
43
|
+
> stopping here and moving the work to another agent.”
|
|
44
|
+
|
|
45
|
+
Briefly show the AgentCache checkpoint receipt. Do not show hidden chain of
|
|
46
|
+
thought or a provider's internal state.
|
|
47
|
+
|
|
48
|
+
### 10–30 seconds — explicit selection and takeover confirmation
|
|
49
|
+
|
|
50
|
+
In a terminal at the repository root, run:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
agentcache session resume --to codex
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Type a short search term, show more than one row if possible, and select the
|
|
57
|
+
Claude Code session by number. After inspecting its source/project/state, type
|
|
58
|
+
`continue` at the action prompt. Because the Claude writer is still active, the
|
|
59
|
+
CLI asks for takeover confirmation; type the second, literal `continue`. Say:
|
|
60
|
+
|
|
61
|
+
> “There is no automatic latest-session choice. I pick the source and name
|
|
62
|
+
> Codex as the destination. This confirmation authorizes takeover; when Codex
|
|
63
|
+
> consumes the handoff, it invalidates Claude's writer lease.”
|
|
64
|
+
|
|
65
|
+
The CLI prints a handoff ID and a one-time token. Blur the token in any published
|
|
66
|
+
recording. The prompt-based flow may send both the handoff ID and token to the
|
|
67
|
+
destination provider. Treat the token as a temporary bearer secret; for a live
|
|
68
|
+
demo, paste it directly into the next prompt and do not save terminal history.
|
|
69
|
+
|
|
70
|
+
### 30–52 seconds — Codex consumes and recalls
|
|
71
|
+
|
|
72
|
+
Switch to Codex with the same repository open. Prompt:
|
|
73
|
+
|
|
74
|
+
```text
|
|
75
|
+
Use AgentCache session_resume with handoff ID <handoff-id> and token <token>.
|
|
76
|
+
Before editing, state the objective, constraint, completed work, and next step.
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Show Codex reporting the expected validator objective, unchanged-error-shape
|
|
80
|
+
constraint, existing failing test, and focused-test next step. Then let it make
|
|
81
|
+
or describe one small continuation and checkpoint it. Say:
|
|
82
|
+
|
|
83
|
+
> “Codex received a bounded, labelled capsule—not Claude's private session
|
|
84
|
+
> object and not a hand-written Markdown handoff.”
|
|
85
|
+
|
|
86
|
+
### 52–72 seconds — explicit fork to Cursor
|
|
87
|
+
|
|
88
|
+
Back in the terminal, use the visible session ID:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
agentcache session fork <session-id> --from latest --to cursor --title "Alternative validator fix" --json
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Point out the explicit parent session, checkpoint, destination, and `fork` mode.
|
|
95
|
+
Open Cursor on the same repository and ask its AgentCache `session_resume` tool
|
|
96
|
+
to consume that output's handoff ID and token.
|
|
97
|
+
|
|
98
|
+
### 72–90 seconds — verify independence
|
|
99
|
+
|
|
100
|
+
Ask Cursor:
|
|
101
|
+
|
|
102
|
+
```text
|
|
103
|
+
Inspect the resumed AgentCache session. Tell me which parent checkpoint this
|
|
104
|
+
fork came from and what the next step is. Do not edit yet.
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Show the child session ID and parent reference. End with:
|
|
108
|
+
|
|
109
|
+
> “One local timeline, explicit handoffs, and an independent fork across three
|
|
110
|
+
> agents. This beta is same-machine only.”
|
|
111
|
+
|
|
112
|
+
## Evidence to retain with the recording
|
|
113
|
+
|
|
114
|
+
- Exact AgentCache, Node.js, Claude Code, Codex, and Cursor versions
|
|
115
|
+
- Sanitized `adapter doctor --json` output for the three adapters
|
|
116
|
+
- Recording date and operating system
|
|
117
|
+
- A note confirming that native transcript file hashes were unchanged
|
|
118
|
+
- Whether the capsule was partial
|
|
119
|
+
|
|
120
|
+
If any of those facts are unavailable, describe the demo as a local development
|
|
121
|
+
run rather than a verified compatibility result.
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# AgentCache 0.5 beta launch copy
|
|
2
|
+
|
|
3
|
+
All variants below deliberately describe the same-machine beta and distinguish
|
|
4
|
+
portable AgentCache state from provider-native session state.
|
|
5
|
+
|
|
6
|
+
## Release gate
|
|
7
|
+
|
|
8
|
+
The GitHub repository is public and `0.5.0-beta.1` has been published under the
|
|
9
|
+
`beta` npm tag. The `0.5.0-beta.2` copy below remains staged until the corrected
|
|
10
|
+
artifact and matching GitHub prerelease are published. Before using it, verify
|
|
11
|
+
the exact npm artifact and checksum, the `beta` dist-tag, and the public beta
|
|
12
|
+
issue form.
|
|
13
|
+
|
|
14
|
+
## One line
|
|
15
|
+
|
|
16
|
+
AgentCache lets you pick a coding session and continue its bounded working
|
|
17
|
+
context in another registered agent on the same machine.
|
|
18
|
+
|
|
19
|
+
## Short post
|
|
20
|
+
|
|
21
|
+
AgentCache `0.5.0-beta.2` is available for testing.
|
|
22
|
+
|
|
23
|
+
Pick a coding session, choose a destination agent, and continue with a bounded
|
|
24
|
+
checkpoint of the goal, decisions, completed work, blockers, constraints, and
|
|
25
|
+
next step. The handoff travels through a local AgentCache timeline and a
|
|
26
|
+
single-use, destination-bound MCP handoff—without maintaining a Markdown
|
|
27
|
+
handoff file.
|
|
28
|
+
|
|
29
|
+
The beta includes adapter wiring for Claude Code, Cursor, Roo Code, Windsurf,
|
|
30
|
+
Continue, Codex, and Goose. Capability levels differ by client: all current
|
|
31
|
+
registrations are experimental, and Windsurf and Goose historical recovery are
|
|
32
|
+
unsupported. Check the runtime evidence with `agentcache adapter doctor`.
|
|
33
|
+
|
|
34
|
+
This release is same-machine only. Cloud sync and team sharing are deferred.
|
|
35
|
+
In the prescribed prompt-based consumption flow, the destination provider may
|
|
36
|
+
receive the resume capsule, handoff ID, and one-use token under its terms.
|
|
37
|
+
Treat that token as a temporary bearer secret.
|
|
38
|
+
|
|
39
|
+
Install the pinned beta:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
npm install -g agentcache@0.5.0-beta.2
|
|
43
|
+
agentcache setup
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Then run `agentcache session resume --to <adapter>` from your repository and
|
|
47
|
+
choose the session explicitly. Please report results through the structured
|
|
48
|
+
AgentCache beta feedback issue form.
|
|
49
|
+
|
|
50
|
+
## GitHub release summary
|
|
51
|
+
|
|
52
|
+
### AgentCache 0.5.0-beta.2 — explicit cross-agent session continuity
|
|
53
|
+
|
|
54
|
+
This beta changes AgentCache's default product path from automatic knowledge
|
|
55
|
+
compilation to explicit portable sessions.
|
|
56
|
+
|
|
57
|
+
Highlights:
|
|
58
|
+
|
|
59
|
+
- local v2 session timeline stored beside legacy v1 data;
|
|
60
|
+
- interactive session search, inspection, and selection;
|
|
61
|
+
- one-use resume handoffs bound to a workspace and destination adapter;
|
|
62
|
+
- append, checkpoint, bounded history, continuation, and independent forks;
|
|
63
|
+
- adapter registration for Claude Code, Cursor, Roo Code, Windsurf, Continue,
|
|
64
|
+
Codex, and Goose;
|
|
65
|
+
- read-only, bounded native transcript ingestion where workspace identity can
|
|
66
|
+
be verified;
|
|
67
|
+
- restrictive local permissions, atomic configuration backups, redacted
|
|
68
|
+
portable text, and untrusted-context labelling; and
|
|
69
|
+
- no postinstall setup, background legacy compilation, silent update, generated
|
|
70
|
+
instruction injection, or blanket AgentCache tool approval in the beta path.
|
|
71
|
+
|
|
72
|
+
Known limits:
|
|
73
|
+
|
|
74
|
+
- same-machine only;
|
|
75
|
+
- adapter capabilities remain experimental until dated live-client evidence is
|
|
76
|
+
recorded;
|
|
77
|
+
- Windsurf and Goose historical recovery are unsupported;
|
|
78
|
+
- Cursor and Roo Code historical sources cannot yet prove workspace ownership;
|
|
79
|
+
- clients must already be open on the intended workspace; and
|
|
80
|
+
- AgentCache does not transfer hidden reasoning, native conversation state, or
|
|
81
|
+
provider approval state.
|
|
82
|
+
|
|
83
|
+
Privacy note: AgentCache stores its portable timeline locally, but in the
|
|
84
|
+
prescribed prompt-based consumption flow the destination provider may receive
|
|
85
|
+
the resume capsule, handoff ID, and one-use token. Treat that token as a
|
|
86
|
+
temporary bearer secret.
|
|
87
|
+
|
|
88
|
+
## Hacker News / forum text
|
|
89
|
+
|
|
90
|
+
I built AgentCache because I wanted an explicit `/resume`-style choice across
|
|
91
|
+
coding agents. The 0.5 beta keeps a portable session timeline in local SQLite.
|
|
92
|
+
From a repository, you select a session and a destination; the destination MCP
|
|
93
|
+
connection consumes a short-lived handoff and receives a bounded checkpoint.
|
|
94
|
+
|
|
95
|
+
The handoff contains practical work state, not provider-private session state:
|
|
96
|
+
goal, constraints, decisions, completed/open work, next step, Git metadata, and
|
|
97
|
+
a limited recent-event window. Forks get an independent child timeline.
|
|
98
|
+
|
|
99
|
+
The current adapter set is Claude Code, Cursor, Roo Code, Windsurf, Continue,
|
|
100
|
+
Codex, and Goose, with capability levels reported at runtime. It is a
|
|
101
|
+
same-machine beta: there is no cloud sync, and Windsurf/Goose historical
|
|
102
|
+
recovery is currently unsupported.
|
|
103
|
+
|
|
104
|
+
I would value reports that include the exact source client, destination client,
|
|
105
|
+
versions, operating system, command shape, and sanitized diagnostics—especially
|
|
106
|
+
failed handoffs and format changes.
|
|
107
|
+
|
|
108
|
+
## Demo caption
|
|
109
|
+
|
|
110
|
+
Claude Code → explicit picker → Codex continuation → explicit Cursor fork. The
|
|
111
|
+
destination recalls the next step from a bounded AgentCache checkpoint, while
|
|
112
|
+
the parent and fork remain separate. AgentCache 0.5 is a same-machine beta;
|
|
113
|
+
capabilities vary by adapter.
|
|
114
|
+
|
|
115
|
+
## Claims to avoid until evidence changes
|
|
116
|
+
|
|
117
|
+
- Identical support across clients
|
|
118
|
+
- Compatibility with an unlisted client or version
|
|
119
|
+
- Automatic native-session migration
|
|
120
|
+
- Complete transcript transfer
|
|
121
|
+
- Guaranteed secret removal
|
|
122
|
+
- Offline behavior of hosted AI clients
|
|
123
|
+
- Cross-device continuity
|
|
124
|
+
- Quantified productivity or cost improvement
|
|
125
|
+
- Stable adapter status without a dated live-client run
|