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.
Files changed (38) hide show
  1. package/README.md +282 -151
  2. package/dist/{chunk-T4COG3XD.js → chunk-R5I6WWSD.js} +31 -14
  3. package/dist/chunk-RXGW4Q3G.js +109 -0
  4. package/dist/chunk-XRJ6QW6N.js +92 -0
  5. package/dist/chunk-YKG6CDGT.js +1818 -0
  6. package/dist/chunk-YY7QXBG5.js +6610 -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-7JJPW3VG.js +48 -0
  15. package/docs/compatibility.md +152 -0
  16. package/docs/demo-script.md +121 -0
  17. package/docs/launch-copy.md +125 -0
  18. package/docs/privacy.md +173 -0
  19. package/docs/troubleshooting.md +209 -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-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