agentcache 0.4.2 → 0.5.0-beta.1

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.
Files changed (38) hide show
  1. package/README.md +280 -151
  2. package/dist/chunk-4T3I3ACZ.js +6592 -0
  3. package/dist/chunk-ECMT4ANK.js +1725 -0
  4. package/dist/{chunk-T4COG3XD.js → chunk-R5I6WWSD.js} +31 -14
  5. package/dist/chunk-RXGW4Q3G.js +109 -0
  6. package/dist/chunk-XRJ6QW6N.js +92 -0
  7. package/dist/cli.js +2535 -292
  8. package/dist/device-id-RV7RO5RB.js +7 -0
  9. package/dist/ide-detector-ETGAVVXO.js +8 -0
  10. package/dist/mcp.d.ts +734 -2
  11. package/dist/mcp.js +1126 -446
  12. package/dist/{paths-5LZRKNYY.js → paths-NTZ2357O.js} +3 -2
  13. package/dist/postinstall.js +1 -65
  14. package/dist/setup-CXZFERQE.js +48 -0
  15. package/docs/compatibility.md +146 -0
  16. package/docs/demo-script.md +121 -0
  17. package/docs/launch-copy.md +127 -0
  18. package/docs/privacy.md +173 -0
  19. package/docs/troubleshooting.md +206 -0
  20. package/package.json +32 -14
  21. package/dist/3-canonicalizer-HIN2F7SZ.js +0 -11
  22. package/dist/chunk-5UO7NJPQ.js +0 -71
  23. package/dist/chunk-CUBZRYS5.js +0 -580
  24. package/dist/chunk-GGAATZKM.js +0 -120
  25. package/dist/chunk-JUDLOBOC.js +0 -77
  26. package/dist/chunk-KFQGP6VL.js +0 -33
  27. package/dist/chunk-PSASDZQE.js +0 -490
  28. package/dist/chunk-SLRKWMSE.js +0 -202
  29. package/dist/chunk-T7BJPANN.js +0 -45
  30. package/dist/chunk-WTXSZBQE.js +0 -388
  31. package/dist/compile-all-PTWTZVP5.js +0 -495
  32. package/dist/ide-detector-5TRCR4F5.js +0 -7
  33. package/dist/pre-tool-use-A4AJHZOJ.js +0 -30
  34. package/dist/session-start-DGMGEAJU.js +0 -78
  35. package/dist/setup-CVG35TUZ.js +0 -51
  36. package/dist/sqlite-NM2BVHUY.js +0 -7
  37. package/dist/stop-WGGRX6TQ.js +0 -38
  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-T4COG3XD.js";
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
  };
@@ -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
- import { mkdirSync } from "fs";
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-ECMT4ANK.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,146 @@
1
+ # AgentCache beta compatibility
2
+
3
+ This document describes the runtime registry shipped in AgentCache
4
+ `0.5.0-beta.1`. 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 command, never a bare untrusted identity:
73
+
74
+ ```text
75
+ agentcache serve --adapter <adapter-id>
76
+ ```
77
+
78
+ The supported configuration families are Claude Code JSON, Cursor/Windsurf/Roo
79
+ Code MCP JSON, Continue's MCP JSON directory, Codex TOML, and Goose YAML.
80
+ Existing files are updated atomically with a restrictive backup. Malformed or
81
+ ambiguous configurations are preserved and reported as skipped. Setup removes
82
+ recognized legacy AgentCache hooks and allow-list entries; it does not add
83
+ blanket tool approval. It also recognizes the exact pre-rebrand Loop
84
+ Engineering registration (`mcpServers.loop` running `loop-eng serve`) and its
85
+ Claude `compile-session`, `discover`, and `enforce` hooks. Those known entries
86
+ are removed during migration, while similarly named or otherwise ambiguous
87
+ user configuration is left untouched. Published early-release JSON targets at
88
+ `~/.roo/mcp.json`, `~/.windsurf/mcp.json`, `~/.continue/mcp.json`, and
89
+ `~/.codex/mcp.json` are checked and cleaned in a separate safe pass before the
90
+ current target is registered.
91
+
92
+ Goose registration is experimental. It targets the documented Goose 1.39
93
+ `extensions.<name>` stdio YAML shape. Goose historical recovery is unsupported
94
+ because a safe immutable snapshot of its SQLite database and WAL has not been
95
+ verified.
96
+
97
+ ## Historical recovery evidence
98
+
99
+ | Client | Source evidence available to workspace binding | Consequence |
100
+ |---|---|---|
101
+ | Claude Code | Explicit `cwd` in JSONL | A matching source can be imported for the active workspace. |
102
+ | Cursor | Encoded path hint only | The hint is not trusted as workspace ownership; automatic import may require a future explicit attach flow. |
103
+ | 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. |
104
+ | Windsurf | No verified historical transcript source | Historical recovery is unsupported; prospective MCP sessions can still participate. |
105
+ | Continue | Explicit `workspaceDirectory` in session JSON | A matching source can be imported for the active workspace. |
106
+ | Codex | Explicit `session_meta.cwd` in JSONL | A matching source can be imported for the active workspace. |
107
+ | Goose | SQLite source lacks the required safe snapshot implementation | Historical recovery is unsupported; prospective MCP sessions can still participate. |
108
+
109
+ Discovery is bounded by the adapter's runtime limits: at most 16 MiB, 10,000
110
+ normalized events, and two seconds per read budget. Sources outside canonical
111
+ adapter-owned roots, symbolic links, changed files, malformed input, and
112
+ unproven workspace matches fail closed.
113
+
114
+ ## Known beta limitations
115
+
116
+ - All adapter registration is experimental pending dated live-client runs.
117
+ - Windsurf historical recovery is unsupported.
118
+ - Goose historical recovery is unsupported, and Goose registration remains
119
+ experimental.
120
+ - Cursor and Roo Code history can be parsed, but their current native sources
121
+ do not provide enough evidence for automatic workspace binding.
122
+ - Workspace continuity requires the same device and exact canonical root;
123
+ sibling clones and separate worktrees remain isolated even when Git metadata
124
+ matches. An explicit attach flow is deferred. Multi-root MCP clients receive
125
+ an opaque root ID paired with a bounded, redacted display label; the label is
126
+ untrusted and display-only. A changed Git identity at the same canonical path
127
+ is reported as a warning without exposing the stored remote or Git path.
128
+ - Native launch and provider-native resume are unsupported for every adapter.
129
+ - Multi-device sync is not implemented.
130
+ - Client updates can change undocumented transcript formats or configuration
131
+ behavior. Run `adapter doctor` after an update and report the exact client
132
+ version with beta feedback.
133
+
134
+ ## Reporting compatibility evidence
135
+
136
+ Include these outputs, after checking them for sensitive data:
137
+
138
+ ```bash
139
+ node --version
140
+ agentcache --version
141
+ agentcache adapter doctor <adapter-id> --json
142
+ ```
143
+
144
+ Also include the client version, operating system, source and destination
145
+ adapter IDs, whether the operation was `continue` or `fork`, and whether the
146
+ 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.1`, 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,127 @@
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
+ This is staged launch copy, not evidence that the release is available. The
9
+ `0.5.0-beta.1` npm version remains unpublished and the GitHub repository remains
10
+ private until the final human-controlled release step. Before using any copy
11
+ below, verify that the exact npm artifact is published, its checksum matches the
12
+ release candidate, and the GitHub repository plus beta issue form are accessible
13
+ to the intended audience. Do not publish the package or change repository
14
+ visibility without explicit release approval.
15
+
16
+ ## One line
17
+
18
+ AgentCache lets you pick a coding session and continue its bounded working
19
+ context in another registered agent on the same machine.
20
+
21
+ ## Short post
22
+
23
+ AgentCache `0.5.0-beta.1` is available for testing.
24
+
25
+ Pick a coding session, choose a destination agent, and continue with a bounded
26
+ checkpoint of the goal, decisions, completed work, blockers, constraints, and
27
+ next step. The handoff travels through a local AgentCache timeline and a
28
+ single-use, destination-bound MCP handoff—without maintaining a Markdown
29
+ handoff file.
30
+
31
+ The beta includes adapter wiring for Claude Code, Cursor, Roo Code, Windsurf,
32
+ Continue, Codex, and Goose. Capability levels differ by client: all current
33
+ registrations are experimental, and Windsurf and Goose historical recovery are
34
+ unsupported. Check the runtime evidence with `agentcache adapter doctor`.
35
+
36
+ This release is same-machine only. Cloud sync and team sharing are deferred.
37
+ In the prescribed prompt-based consumption flow, the destination provider may
38
+ receive the resume capsule, handoff ID, and one-use token under its terms.
39
+ Treat that token as a temporary bearer secret.
40
+
41
+ Install the pinned beta:
42
+
43
+ ```bash
44
+ npm install -g agentcache@0.5.0-beta.1
45
+ agentcache setup
46
+ ```
47
+
48
+ Then run `agentcache session resume --to <adapter>` from your repository and
49
+ choose the session explicitly. Please report results through the structured
50
+ AgentCache beta feedback issue form.
51
+
52
+ ## GitHub release summary
53
+
54
+ ### AgentCache 0.5.0-beta.1 — explicit cross-agent session continuity
55
+
56
+ This beta changes AgentCache's default product path from automatic knowledge
57
+ compilation to explicit portable sessions.
58
+
59
+ Highlights:
60
+
61
+ - local v2 session timeline stored beside legacy v1 data;
62
+ - interactive session search, inspection, and selection;
63
+ - one-use resume handoffs bound to a workspace and destination adapter;
64
+ - append, checkpoint, bounded history, continuation, and independent forks;
65
+ - adapter registration for Claude Code, Cursor, Roo Code, Windsurf, Continue,
66
+ Codex, and Goose;
67
+ - read-only, bounded native transcript ingestion where workspace identity can
68
+ be verified;
69
+ - restrictive local permissions, atomic configuration backups, redacted
70
+ portable text, and untrusted-context labelling; and
71
+ - no postinstall setup, background legacy compilation, silent update, generated
72
+ instruction injection, or blanket AgentCache tool approval in the beta path.
73
+
74
+ Known limits:
75
+
76
+ - same-machine only;
77
+ - adapter capabilities remain experimental until dated live-client evidence is
78
+ recorded;
79
+ - Windsurf and Goose historical recovery are unsupported;
80
+ - Cursor and Roo Code historical sources cannot yet prove workspace ownership;
81
+ - clients must already be open on the intended workspace; and
82
+ - AgentCache does not transfer hidden reasoning, native conversation state, or
83
+ provider approval state.
84
+
85
+ Privacy note: AgentCache stores its portable timeline locally, but in the
86
+ prescribed prompt-based consumption flow the destination provider may receive
87
+ the resume capsule, handoff ID, and one-use token. Treat that token as a
88
+ temporary bearer secret.
89
+
90
+ ## Hacker News / forum text
91
+
92
+ I built AgentCache because I wanted an explicit `/resume`-style choice across
93
+ coding agents. The 0.5 beta keeps a portable session timeline in local SQLite.
94
+ From a repository, you select a session and a destination; the destination MCP
95
+ connection consumes a short-lived handoff and receives a bounded checkpoint.
96
+
97
+ The handoff contains practical work state, not provider-private session state:
98
+ goal, constraints, decisions, completed/open work, next step, Git metadata, and
99
+ a limited recent-event window. Forks get an independent child timeline.
100
+
101
+ The current adapter set is Claude Code, Cursor, Roo Code, Windsurf, Continue,
102
+ Codex, and Goose, with capability levels reported at runtime. It is a
103
+ same-machine beta: there is no cloud sync, and Windsurf/Goose historical
104
+ recovery is currently unsupported.
105
+
106
+ I would value reports that include the exact source client, destination client,
107
+ versions, operating system, command shape, and sanitized diagnostics—especially
108
+ failed handoffs and format changes.
109
+
110
+ ## Demo caption
111
+
112
+ Claude Code → explicit picker → Codex continuation → explicit Cursor fork. The
113
+ destination recalls the next step from a bounded AgentCache checkpoint, while
114
+ the parent and fork remain separate. AgentCache 0.5 is a same-machine beta;
115
+ capabilities vary by adapter.
116
+
117
+ ## Claims to avoid until evidence changes
118
+
119
+ - Identical support across clients
120
+ - Compatibility with an unlisted client or version
121
+ - Automatic native-session migration
122
+ - Complete transcript transfer
123
+ - Guaranteed secret removal
124
+ - Offline behavior of hosted AI clients
125
+ - Cross-device continuity
126
+ - Quantified productivity or cost improvement
127
+ - Stable adapter status without a dated live-client run