@log0u7/opencode-memory 0.8.1 → 0.10.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 +19 -0
- package/README.md +67 -3
- package/dist/plugin-v2.d.ts.map +1 -1
- package/dist/plugin-v2.js +14 -1
- package/dist/plugin-v2.js.map +1 -1
- package/dist/rpc.d.ts +62 -0
- package/dist/rpc.d.ts.map +1 -0
- package/dist/rpc.js +57 -0
- package/dist/rpc.js.map +1 -0
- package/dist/tui.js +130 -10
- package/dist/tui.tsx +101 -12
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,25 @@ All notable changes to this project are documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.10.0] - 2026-11-06
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Themed memory footer: bold "Memory" label and muted stats using the active
|
|
13
|
+
theme's text colors.
|
|
14
|
+
- Event refresh: the footer refreshes immediately (debounced) on server
|
|
15
|
+
events, with the 30s polling as fallback.
|
|
16
|
+
- `/memory` now opens a dialog with the full kind breakdown (all kinds, not
|
|
17
|
+
just the top 3) via the new `all_kinds` snapshot field.
|
|
18
|
+
|
|
19
|
+
## [0.9.0] - 2026-11-06
|
|
20
|
+
|
|
21
|
+
### Added
|
|
22
|
+
|
|
23
|
+
- Live memory footer: the TUI part polls a `memory.snapshot` RPC (registered
|
|
24
|
+
server-side) every 30s and renders the entry count, store size and top kinds
|
|
25
|
+
in the home footer status. Hidden on v1 hosts and for an empty store.
|
|
26
|
+
|
|
8
27
|
## [0.8.1] - 2026-11-06
|
|
9
28
|
|
|
10
29
|
### Fixed
|
package/README.md
CHANGED
|
@@ -6,9 +6,49 @@
|
|
|
6
6
|
[](https://www.npmjs.com/package/@log0u7/opencode-memory)
|
|
7
7
|
[](https://www.npmjs.com/package/@log0u7/opencode-memory)
|
|
8
8
|
|
|
9
|
-
Working memory for [OpenCode](https://opencode.ai): a shared SQLite store that all sessions on a machine read and write, so decisions, facts, and
|
|
9
|
+
Working memory for [OpenCode](https://opencode.ai): a shared SQLite store that all sessions on a machine read and write, so decisions, facts, and lessons survive session boundaries. And when compaction hits, the full transcript is exported and a ~120-token pointer replaces the lossy summary: exact recall, zero model tokens.
|
|
10
|
+
|
|
11
|
+
Every session gets six memory tools (`memory_save`, `memory_search`, `memory_list`, `memory_forget`, `memory_stats`, `memory_restore`) plus transcript search, reading and cleanup when context retrieval is enabled. Entries are scoped per project worktree (plus a `global` scope), searched with SQLite FTS5 (BM25 ranking, entries matching every query token first, then prefix matches fill the remaining slots). Recent entries are also injected into the prompt: once per session, and again during compaction. 100% local, no cloud, no API keys.
|
|
12
|
+
|
|
13
|
+
## Why
|
|
14
|
+
|
|
15
|
+
Two problems every long OpenCode session hits:
|
|
16
|
+
|
|
17
|
+
1. **Sessions forget.** A decision made on Monday ("use WAL mode") is gone by Wednesday's fresh session, and the agent never thinks to grep old notes.
|
|
18
|
+
2. **Compaction destroys context.** When the context window overflows, OpenCode asks a model to summarise the whole history in one call - measured on a live ~40k-token session: 39,620 input tokens, tens of seconds - and the result is lossy by construction: exact errors, paths and numbers get paraphrased away.
|
|
19
|
+
|
|
20
|
+
opencode-memory fixes both with one idea: keep the full record, let the agent retrieve what it needs.
|
|
21
|
+
|
|
22
|
+
```mermaid
|
|
23
|
+
sequenceDiagram
|
|
24
|
+
autonumber
|
|
25
|
+
participant S as Session (40k tokens)
|
|
26
|
+
participant P as opencode-memory
|
|
27
|
+
participant D as Transcripts on disk
|
|
28
|
+
participant M as Summary model
|
|
29
|
+
rect rgb(255, 235, 235)
|
|
30
|
+
Note over S,M: Default OpenCode: lossy and expensive
|
|
31
|
+
S->>M: summarise the whole history
|
|
32
|
+
M-->>S: lossy summary (39,620 input tokens)
|
|
33
|
+
end
|
|
34
|
+
rect rgb(235, 255, 235)
|
|
35
|
+
Note over S,D: With opencode-memory: lossless and free
|
|
36
|
+
S->>P: compaction trigger
|
|
37
|
+
P->>D: export full transcript (mode 0600)
|
|
38
|
+
P-->>S: ~120-token pointer, no model call
|
|
39
|
+
S->>D: memory_session_search / memory_session_read
|
|
40
|
+
D-->>S: exact lines, verbatim
|
|
41
|
+
end
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Highlights
|
|
10
45
|
|
|
11
|
-
|
|
46
|
+
- **Lossless compaction.** The summary model call is replaced by a pointer: the transcript path, the last user request, and the retrieval rule. Zero model tokens, nothing paraphrased away, no dependency on a prompt cache.
|
|
47
|
+
- **Memory that outlives sessions.** One SQLite store (WAL mode, FTS5 BM25 ranking) shared by every session on the machine, scoped per project worktree plus a `global` scope. Recent entries are injected into the prompt automatically.
|
|
48
|
+
- **The agent writes its own memory.** The system prompt nudges it to save durable decisions, facts, preferences and gotchas as they emerge; distilled lessons (`kind=lesson`) are injected first in later sessions, so known mistakes are not retried.
|
|
49
|
+
- **Exact recall from past sessions.** `memory_session_search` greps exported transcripts for exact lines with context; `memory_session_read` reads a numbered window; `/memory-continue <sessionID>` brings a past session back into the current one.
|
|
50
|
+
- **Optional LLM reflection.** On session idle, one bounded call distils at most `maxLessons` lessons from the transcript tail (~2k input tokens, ~$0.001 with a small model). Off by default.
|
|
51
|
+
- **Safe by default.** Secret-shaped strings are refused at write time; deletes go to a restorable trash; query deletes never cross scopes; tool results are size-capped; everything stays on the machine - no cloud, no API keys.
|
|
12
52
|
|
|
13
53
|
## Safety limits
|
|
14
54
|
|
|
@@ -33,7 +73,7 @@ The package is installed automatically at startup into opencode's plugin cache (
|
|
|
33
73
|
|
|
34
74
|
```json
|
|
35
75
|
{
|
|
36
|
-
"plugin": ["@log0u7/opencode-memory@0.
|
|
76
|
+
"plugin": ["@log0u7/opencode-memory@0.8.1"]
|
|
37
77
|
}
|
|
38
78
|
```
|
|
39
79
|
|
|
@@ -72,6 +112,30 @@ The plugin ships a TUI part (auto-loaded by OpenCode): a toast on load, a `/memo
|
|
|
72
112
|
|
|
73
113
|
Entry `kind` is free-form; conventions that work well: `decision`, `fact`, `preference`, `gotcha`, `lesson`, `compaction`.
|
|
74
114
|
|
|
115
|
+
### How it fits together
|
|
116
|
+
|
|
117
|
+
```mermaid
|
|
118
|
+
flowchart LR
|
|
119
|
+
subgraph host["One machine"]
|
|
120
|
+
direction TB
|
|
121
|
+
subgraph oc["OpenCode"]
|
|
122
|
+
S1["Session A"]
|
|
123
|
+
S2["Session B"]
|
|
124
|
+
end
|
|
125
|
+
P["opencode-memory plugin"]
|
|
126
|
+
DB[("memory.db - SQLite + FTS5")]
|
|
127
|
+
TR["transcripts dir - one append-only file per session"]
|
|
128
|
+
S1 -- "memory tools" --> P
|
|
129
|
+
S2 -- "memory tools" --> P
|
|
130
|
+
P --> DB
|
|
131
|
+
P -- "export on compaction" --> TR
|
|
132
|
+
P -. "inject recent entries, bounded" .-> S1
|
|
133
|
+
P -. "inject retrieval pointer" .-> S2
|
|
134
|
+
end
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
One SQLite store (WAL mode, concurrent-safe) holds the entries; the transcripts directory holds the full session records, one append-only file per session. Entries are scoped per project worktree plus a shared `global` scope; all sessions on the machine share the store, and nothing leaves the machine.
|
|
138
|
+
|
|
75
139
|
### Feedback loop
|
|
76
140
|
|
|
77
141
|
The agent is nudged to write memory itself: the system prompt asks for durable decisions, facts, preferences and gotchas as they emerge, and the compaction prompt repeats the instruction next to the store inventory. Reusable lessons (`kind=lesson`: a non-obvious approach that clearly failed or succeeded, and why) are injected first in later sessions, so known mistakes are not retried.
|
package/dist/plugin-v2.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-v2.d.ts","sourceRoot":"","sources":["../src/plugin-v2.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin-v2.d.ts","sourceRoot":"","sources":["../src/plugin-v2.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAiE1C,eAAO,MAAM,QAAQ,eAusBnB,CAAC"}
|
package/dist/plugin-v2.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { existsSync, unlinkSync } from "node:fs";
|
|
2
2
|
import { Plugin } from "@opencode/plugin";
|
|
3
3
|
import { openMemoryDb } from "./lib/db.js";
|
|
4
|
+
import { databaseSizeBytes } from "./lib/db.js";
|
|
4
5
|
import { TOOL_DESCRIPTIONS, createMemoryOps, memoryInventory, oncePerSession, } from "./lib/memory-ops.js";
|
|
5
6
|
import { createReflection, parseReflectionConfig } from "./lib/reflection.js";
|
|
6
7
|
import { SYSTEM_GUIDANCE, COMPACTION_CONTEXT, defaultScope, defaultDbPath, parseRetrievalConfig, } from "./options.js";
|
|
7
|
-
import { canonicalScope } from "./lib/store.js";
|
|
8
|
+
import { canonicalScope, stats as statsEntries } from "./lib/store.js";
|
|
9
|
+
import { MemoryRpc, snapshotFromStats } from "./rpc.js";
|
|
8
10
|
import { compactionSummary, handleCompaction, transcriptExcerpt, transcriptFilePath, writeTranscriptFile, } from "./compaction.js";
|
|
9
11
|
import { renderTranscript, sessionInfoToMessages } from "./transcripts.js";
|
|
10
12
|
import { readTranscript, searchTranscripts } from "./session-search.js";
|
|
@@ -591,9 +593,20 @@ export const MemoryV2 = Plugin.define({
|
|
|
591
593
|
timer.unref();
|
|
592
594
|
}
|
|
593
595
|
}
|
|
596
|
+
// Live snapshot for the TUI footer: one compact read over the store. Guarded:
|
|
597
|
+
// after dispose the store is closed, and a late RPC call must not reopen it.
|
|
598
|
+
const rpc = await ctx.rpc.register(MemoryRpc, {
|
|
599
|
+
snapshot: async () => {
|
|
600
|
+
if (disposed) {
|
|
601
|
+
return { total: 0, store_bytes: 0, top_kinds: [], all_kinds: [] };
|
|
602
|
+
}
|
|
603
|
+
return snapshotFromStats(statsEntries(getDb(), { scope: projectScope }), databaseSizeBytes(getDb()));
|
|
604
|
+
},
|
|
605
|
+
});
|
|
594
606
|
const cleanup = async () => {
|
|
595
607
|
disposed = true;
|
|
596
608
|
injected.reset();
|
|
609
|
+
rpc.dispose();
|
|
597
610
|
db?.close();
|
|
598
611
|
db = null;
|
|
599
612
|
};
|
package/dist/plugin-v2.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-v2.js","sourceRoot":"","sources":["../src/plugin-v2.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin-v2.js","sourceRoot":"","sources":["../src/plugin-v2.ts"],"names":[],"mappings":"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"}
|
package/dist/rpc.d.ts
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
export type MemorySnapshot = {
|
|
2
|
+
/** Live entries in the caller's scope plus `global`, expired excluded. */
|
|
3
|
+
total: number;
|
|
4
|
+
/** Store file size on disk, bytes. */
|
|
5
|
+
store_bytes: number;
|
|
6
|
+
/** Top kinds as pre-rendered "kind: count" strings, count descending, max 3. */
|
|
7
|
+
top_kinds: string[];
|
|
8
|
+
/** Full kind breakdown, same format, every kind (superset of top_kinds). */
|
|
9
|
+
all_kinds: string[];
|
|
10
|
+
};
|
|
11
|
+
export declare function snapshotFromStats(counts: ReadonlyArray<{
|
|
12
|
+
kind: string;
|
|
13
|
+
count: number;
|
|
14
|
+
}>, storeBytes: number): MemorySnapshot;
|
|
15
|
+
/** One footer line: "memory: 23 entries · 1.1 MB · decision: 12, fact: 8". Null for
|
|
16
|
+
* an empty store, so the slot stays hidden instead of advertising nothing. */
|
|
17
|
+
export declare function formatMemoryLine(s: MemorySnapshot): string | null;
|
|
18
|
+
/** Dialog lines: the header (entries + size) then one line per kind. */
|
|
19
|
+
export declare function formatMemoryDialog(s: MemorySnapshot): string[];
|
|
20
|
+
export declare const MemoryRpc: {
|
|
21
|
+
readonly id: "memory";
|
|
22
|
+
readonly methods: {
|
|
23
|
+
readonly snapshot: {
|
|
24
|
+
readonly input: {
|
|
25
|
+
readonly type: "object";
|
|
26
|
+
readonly properties: {};
|
|
27
|
+
readonly additionalProperties: false;
|
|
28
|
+
};
|
|
29
|
+
readonly output: {
|
|
30
|
+
readonly type: "object";
|
|
31
|
+
readonly properties: {
|
|
32
|
+
readonly total: {
|
|
33
|
+
readonly type: "number";
|
|
34
|
+
readonly description: "Live entries in scope plus global";
|
|
35
|
+
};
|
|
36
|
+
readonly store_bytes: {
|
|
37
|
+
readonly type: "number";
|
|
38
|
+
readonly description: "Store file size on disk";
|
|
39
|
+
};
|
|
40
|
+
readonly top_kinds: {
|
|
41
|
+
readonly type: "array";
|
|
42
|
+
readonly items: {
|
|
43
|
+
readonly type: "string";
|
|
44
|
+
};
|
|
45
|
+
readonly description: "Top kinds as 'kind: count', count descending, max 3";
|
|
46
|
+
};
|
|
47
|
+
readonly all_kinds: {
|
|
48
|
+
readonly type: "array";
|
|
49
|
+
readonly items: {
|
|
50
|
+
readonly type: "string";
|
|
51
|
+
};
|
|
52
|
+
readonly description: "Full kind breakdown as 'kind: count', count descending";
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
readonly required: readonly ["total", "store_bytes", "top_kinds", "all_kinds"];
|
|
56
|
+
readonly additionalProperties: false;
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
readonly events: {};
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=rpc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,cAAc,GAAG;IAC3B,0EAA0E;IAC1E,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,4EAA4E;IAC5E,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAEF,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,aAAa,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EACtD,UAAU,EAAE,MAAM,GACjB,cAAc,CAOhB;AAED;8EAC8E;AAC9E,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI,CAUjE;AAED,wEAAwE;AACxE,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,cAAc,GAAG,MAAM,EAAE,CAM9D;AAED,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BpB,CAAC"}
|
package/dist/rpc.js
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Rpc } from "@opencode/plugin/rpc";
|
|
2
|
+
export function snapshotFromStats(counts, storeBytes) {
|
|
3
|
+
return {
|
|
4
|
+
total: counts.reduce((sum, row) => sum + row.count, 0),
|
|
5
|
+
store_bytes: storeBytes,
|
|
6
|
+
top_kinds: counts.slice(0, 3).map((row) => `${row.kind}: ${row.count}`),
|
|
7
|
+
all_kinds: counts.map((row) => `${row.kind}: ${row.count}`),
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
/** One footer line: "memory: 23 entries · 1.1 MB · decision: 12, fact: 8". Null for
|
|
11
|
+
* an empty store, so the slot stays hidden instead of advertising nothing. */
|
|
12
|
+
export function formatMemoryLine(s) {
|
|
13
|
+
if (s.total === 0) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
const size = s.store_bytes >= 1_048_576
|
|
17
|
+
? `${(s.store_bytes / 1_048_576).toFixed(1)} MB`
|
|
18
|
+
: `${Math.max(1, Math.round(s.store_bytes / 1024))} kB`;
|
|
19
|
+
const kinds = s.top_kinds.length > 0 ? ` · ${s.top_kinds.join(", ")}` : "";
|
|
20
|
+
return `memory: ${s.total} entries · ${size}${kinds}`;
|
|
21
|
+
}
|
|
22
|
+
/** Dialog lines: the header (entries + size) then one line per kind. */
|
|
23
|
+
export function formatMemoryDialog(s) {
|
|
24
|
+
const size = s.store_bytes >= 1_048_576
|
|
25
|
+
? `${(s.store_bytes / 1_048_576).toFixed(1)} MB`
|
|
26
|
+
: `${Math.max(1, Math.round(s.store_bytes / 1024))} kB`;
|
|
27
|
+
return [`memory: ${s.total} entries · ${size}`, ...s.all_kinds];
|
|
28
|
+
}
|
|
29
|
+
export const MemoryRpc = Rpc.define({
|
|
30
|
+
id: "memory",
|
|
31
|
+
methods: {
|
|
32
|
+
snapshot: {
|
|
33
|
+
input: { type: "object", properties: {}, additionalProperties: false },
|
|
34
|
+
output: {
|
|
35
|
+
type: "object",
|
|
36
|
+
properties: {
|
|
37
|
+
total: { type: "number", description: "Live entries in scope plus global" },
|
|
38
|
+
store_bytes: { type: "number", description: "Store file size on disk" },
|
|
39
|
+
top_kinds: {
|
|
40
|
+
type: "array",
|
|
41
|
+
items: { type: "string" },
|
|
42
|
+
description: "Top kinds as 'kind: count', count descending, max 3",
|
|
43
|
+
},
|
|
44
|
+
all_kinds: {
|
|
45
|
+
type: "array",
|
|
46
|
+
items: { type: "string" },
|
|
47
|
+
description: "Full kind breakdown as 'kind: count', count descending",
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
required: ["total", "store_bytes", "top_kinds", "all_kinds"],
|
|
51
|
+
additionalProperties: false,
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
events: {},
|
|
56
|
+
});
|
|
57
|
+
//# sourceMappingURL=rpc.js.map
|
package/dist/rpc.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc.js","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"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"}
|
package/dist/tui.js
CHANGED
|
@@ -1,15 +1,125 @@
|
|
|
1
|
+
import { effect as _$effect } from "@opentui/solid";
|
|
2
|
+
import { insert as _$insert } from "@opentui/solid";
|
|
3
|
+
import { createComponent as _$createComponent } from "@opentui/solid";
|
|
4
|
+
import { createTextNode as _$createTextNode } from "@opentui/solid";
|
|
5
|
+
import { insertNode as _$insertNode } from "@opentui/solid";
|
|
6
|
+
import { setProp as _$setProp } from "@opentui/solid";
|
|
7
|
+
import { createElement as _$createElement } from "@opentui/solid";
|
|
1
8
|
/** @jsxImportSource @opentui/solid */
|
|
2
9
|
|
|
3
10
|
import { Plugin } from "@opencode/plugin/tui";
|
|
4
|
-
|
|
11
|
+
import { For, Show, createSignal } from "solid-js";
|
|
12
|
+
import { MemoryRpc, formatMemoryDialog, formatMemoryLine } from "./rpc.js";
|
|
13
|
+
const REFRESH_MS = 30_000;
|
|
14
|
+
/** quota-style event refresh: debounced immediate refresh after activity. */
|
|
15
|
+
const EVENT_DEBOUNCE_MS = 150;
|
|
16
|
+
function themedFooter(theme, label) {
|
|
17
|
+
return (() => {
|
|
18
|
+
var _el$ = _$createElement("box"),
|
|
19
|
+
_el$2 = _$createElement("text"),
|
|
20
|
+
_el$3 = _$createElement("b");
|
|
21
|
+
_$insertNode(_el$, _el$2);
|
|
22
|
+
_$setProp(_el$, "flexDirection", "row");
|
|
23
|
+
_$setProp(_el$, "gap", 1);
|
|
24
|
+
_$insertNode(_el$2, _el$3);
|
|
25
|
+
_$setProp(_el$2, "wrapMode", "none");
|
|
26
|
+
_$insertNode(_el$3, _$createTextNode(`Memory`));
|
|
27
|
+
_$insert(_el$, _$createComponent(Show, {
|
|
28
|
+
get when() {
|
|
29
|
+
return label();
|
|
30
|
+
},
|
|
31
|
+
keyed: true,
|
|
32
|
+
children: text => (() => {
|
|
33
|
+
var _el$5 = _$createElement("text");
|
|
34
|
+
_$setProp(_el$5, "wrapMode", "none");
|
|
35
|
+
_$insert(_el$5, text);
|
|
36
|
+
_$effect(_$p => _$setProp(_el$5, "fg", theme.text.muted, _$p));
|
|
37
|
+
return _el$5;
|
|
38
|
+
})()
|
|
39
|
+
}), null);
|
|
40
|
+
_$effect(_$p => _$setProp(_el$2, "fg", theme.text.base, _$p));
|
|
41
|
+
return _el$;
|
|
42
|
+
})();
|
|
43
|
+
}
|
|
44
|
+
function dialogBody(theme, snapshot) {
|
|
45
|
+
const lines = formatMemoryDialog(snapshot);
|
|
46
|
+
return (() => {
|
|
47
|
+
var _el$6 = _$createElement("box"),
|
|
48
|
+
_el$7 = _$createElement("text"),
|
|
49
|
+
_el$8 = _$createElement("b");
|
|
50
|
+
_$insertNode(_el$6, _el$7);
|
|
51
|
+
_$setProp(_el$6, "gap", 1);
|
|
52
|
+
_$setProp(_el$6, "paddingLeft", 2);
|
|
53
|
+
_$setProp(_el$6, "paddingRight", 2);
|
|
54
|
+
_$setProp(_el$6, "paddingBottom", 1);
|
|
55
|
+
_$insertNode(_el$7, _el$8);
|
|
56
|
+
_$insertNode(_el$8, _$createTextNode(`Memory — shared working memory`));
|
|
57
|
+
_$insert(_el$6, _$createComponent(For, {
|
|
58
|
+
get each() {
|
|
59
|
+
return lines.slice(1);
|
|
60
|
+
},
|
|
61
|
+
children: line => (() => {
|
|
62
|
+
var _el$0 = _$createElement("text");
|
|
63
|
+
_$insert(_el$0, line);
|
|
64
|
+
_$effect(_$p => _$setProp(_el$0, "fg", theme.text.muted, _$p));
|
|
65
|
+
return _el$0;
|
|
66
|
+
})()
|
|
67
|
+
}), null);
|
|
68
|
+
_$effect(_$p => _$setProp(_el$7, "fg", theme.text.base, _$p));
|
|
69
|
+
return _el$6;
|
|
70
|
+
})();
|
|
71
|
+
}
|
|
5
72
|
export default Plugin.define({
|
|
6
|
-
id:
|
|
73
|
+
id: "@log0u7/opencode-memory.tui",
|
|
7
74
|
setup(context) {
|
|
75
|
+
const theme = context.theme;
|
|
8
76
|
context.ui.toast.show({
|
|
9
77
|
message: "opencode-memory loaded",
|
|
10
78
|
variant: "info",
|
|
11
79
|
duration: 2000
|
|
12
80
|
});
|
|
81
|
+
|
|
82
|
+
// Live footer: poll the server-side snapshot over RPC. On a v1 host (no RPC)
|
|
83
|
+
// or while the server is unreachable, the slot stays hidden.
|
|
84
|
+
const [label, setLabel] = createSignal(null);
|
|
85
|
+
const [snapshot, setSnapshot] = createSignal(null);
|
|
86
|
+
const memory = context.client.rpc(MemoryRpc);
|
|
87
|
+
const refresh = async () => {
|
|
88
|
+
try {
|
|
89
|
+
const next = await memory.snapshot({});
|
|
90
|
+
setSnapshot(next);
|
|
91
|
+
setLabel(formatMemoryLine(next));
|
|
92
|
+
} catch {
|
|
93
|
+
// server unreachable or v1 host: hide the footer, keep the last dialog data
|
|
94
|
+
setLabel(null);
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
void refresh();
|
|
98
|
+
const timer = setInterval(() => void refresh(), REFRESH_MS);
|
|
99
|
+
|
|
100
|
+
// Debounced event-driven refresh: saving, restoring or expiring an entry
|
|
101
|
+
// changes the store contents. The stream stays open; polling is the fallback.
|
|
102
|
+
let debounce;
|
|
103
|
+
const schedule = () => {
|
|
104
|
+
if (debounce) clearTimeout(debounce);
|
|
105
|
+
debounce = setTimeout(() => void refresh(), EVENT_DEBOUNCE_MS);
|
|
106
|
+
};
|
|
107
|
+
const events = context.client.event.subscribe();
|
|
108
|
+
void (async () => {
|
|
109
|
+
try {
|
|
110
|
+
for await (const _event of events) {
|
|
111
|
+
schedule();
|
|
112
|
+
}
|
|
113
|
+
} catch {
|
|
114
|
+
// stream ended or errored: polling fallback stays active.
|
|
115
|
+
}
|
|
116
|
+
})();
|
|
117
|
+
const unregister = context.ui.slot({
|
|
118
|
+
append: "home.footer.status",
|
|
119
|
+
render: () => themedFooter(theme, label)
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
// Keymap layers are disposed with the plugin; no manual disposer here.
|
|
13
123
|
context.keymap.layer(() => ({
|
|
14
124
|
mode: "global",
|
|
15
125
|
commands: [{
|
|
@@ -21,17 +131,27 @@ export default Plugin.define({
|
|
|
21
131
|
},
|
|
22
132
|
palette: true,
|
|
23
133
|
run: async () => {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
134
|
+
await refresh();
|
|
135
|
+
const current = snapshot();
|
|
136
|
+
if (!current) {
|
|
137
|
+
context.ui.toast.show({
|
|
138
|
+
title: "Memory",
|
|
139
|
+
message: "Server unreachable",
|
|
140
|
+
variant: "info"
|
|
141
|
+
});
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
context.ui.dialog.show(() => dialogBody(theme, current));
|
|
145
|
+
context.ui.dialog.set({
|
|
146
|
+
size: "medium"
|
|
28
147
|
});
|
|
29
148
|
}
|
|
30
149
|
}]
|
|
31
150
|
}));
|
|
32
|
-
return
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
151
|
+
return () => {
|
|
152
|
+
clearTimeout(debounce);
|
|
153
|
+
clearInterval(timer);
|
|
154
|
+
unregister();
|
|
155
|
+
};
|
|
36
156
|
}
|
|
37
157
|
});
|
package/dist/tui.tsx
CHANGED
|
@@ -1,14 +1,95 @@
|
|
|
1
1
|
/** @jsxImportSource @opentui/solid */
|
|
2
2
|
|
|
3
3
|
import { Plugin } from "@opencode/plugin/tui";
|
|
4
|
+
import type { JSX } from "@opentui/solid";
|
|
5
|
+
import { For, Show, createSignal } from "solid-js";
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
type Context = Plugin.Context;
|
|
8
|
+
type Theme = Context["theme"];
|
|
9
|
+
|
|
10
|
+
import { MemoryRpc, formatMemoryDialog, formatMemoryLine, type MemorySnapshot } from "./rpc.js";
|
|
11
|
+
|
|
12
|
+
const REFRESH_MS = 30_000;
|
|
13
|
+
/** quota-style event refresh: debounced immediate refresh after activity. */
|
|
14
|
+
const EVENT_DEBOUNCE_MS = 150;
|
|
15
|
+
|
|
16
|
+
function themedFooter(theme: Theme, label: () => string | null): JSX.Element {
|
|
17
|
+
return (
|
|
18
|
+
<box flexDirection="row" gap={1}>
|
|
19
|
+
<text fg={theme.text.base} wrapMode="none">
|
|
20
|
+
<b>Memory</b>
|
|
21
|
+
</text>
|
|
22
|
+
<Show when={label()} keyed>
|
|
23
|
+
{(text) => (
|
|
24
|
+
<text fg={theme.text.muted} wrapMode="none">
|
|
25
|
+
{text}
|
|
26
|
+
</text>
|
|
27
|
+
)}
|
|
28
|
+
</Show>
|
|
29
|
+
</box>
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function dialogBody(theme: Theme, snapshot: MemorySnapshot): JSX.Element {
|
|
34
|
+
const lines = formatMemoryDialog(snapshot);
|
|
35
|
+
return (
|
|
36
|
+
<box gap={1} paddingLeft={2} paddingRight={2} paddingBottom={1}>
|
|
37
|
+
<text fg={theme.text.base}>
|
|
38
|
+
<b>Memory — shared working memory</b>
|
|
39
|
+
</text>
|
|
40
|
+
<For each={lines.slice(1)}>{(line) => <text fg={theme.text.muted}>{line}</text>}</For>
|
|
41
|
+
</box>
|
|
42
|
+
);
|
|
43
|
+
}
|
|
6
44
|
|
|
7
45
|
export default Plugin.define({
|
|
8
|
-
id:
|
|
9
|
-
setup(context) {
|
|
46
|
+
id: "@log0u7/opencode-memory.tui",
|
|
47
|
+
setup(context: Context) {
|
|
48
|
+
const theme = context.theme;
|
|
10
49
|
context.ui.toast.show({ message: "opencode-memory loaded", variant: "info", duration: 2000 });
|
|
11
50
|
|
|
51
|
+
// Live footer: poll the server-side snapshot over RPC. On a v1 host (no RPC)
|
|
52
|
+
// or while the server is unreachable, the slot stays hidden.
|
|
53
|
+
const [label, setLabel] = createSignal<string | null>(null);
|
|
54
|
+
const [snapshot, setSnapshot] = createSignal<MemorySnapshot | null>(null);
|
|
55
|
+
const memory = context.client.rpc(MemoryRpc);
|
|
56
|
+
const refresh = async () => {
|
|
57
|
+
try {
|
|
58
|
+
const next = (await memory.snapshot({})) as MemorySnapshot;
|
|
59
|
+
setSnapshot(next);
|
|
60
|
+
setLabel(formatMemoryLine(next));
|
|
61
|
+
} catch {
|
|
62
|
+
// server unreachable or v1 host: hide the footer, keep the last dialog data
|
|
63
|
+
setLabel(null);
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
void refresh();
|
|
67
|
+
const timer = setInterval(() => void refresh(), REFRESH_MS);
|
|
68
|
+
|
|
69
|
+
// Debounced event-driven refresh: saving, restoring or expiring an entry
|
|
70
|
+
// changes the store contents. The stream stays open; polling is the fallback.
|
|
71
|
+
let debounce: ReturnType<typeof setTimeout> | undefined;
|
|
72
|
+
const schedule = () => {
|
|
73
|
+
if (debounce) clearTimeout(debounce);
|
|
74
|
+
debounce = setTimeout(() => void refresh(), EVENT_DEBOUNCE_MS);
|
|
75
|
+
};
|
|
76
|
+
const events = context.client.event.subscribe();
|
|
77
|
+
void (async () => {
|
|
78
|
+
try {
|
|
79
|
+
for await (const _event of events) {
|
|
80
|
+
schedule();
|
|
81
|
+
}
|
|
82
|
+
} catch {
|
|
83
|
+
// stream ended or errored: polling fallback stays active.
|
|
84
|
+
}
|
|
85
|
+
})();
|
|
86
|
+
|
|
87
|
+
const unregister = context.ui.slot({
|
|
88
|
+
append: "home.footer.status",
|
|
89
|
+
render: () => themedFooter(theme, label),
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
// Keymap layers are disposed with the plugin; no manual disposer here.
|
|
12
93
|
context.keymap.layer(() => ({
|
|
13
94
|
mode: "global",
|
|
14
95
|
commands: [
|
|
@@ -19,19 +100,27 @@ export default Plugin.define({
|
|
|
19
100
|
slash: { name: "memory" },
|
|
20
101
|
palette: true,
|
|
21
102
|
run: async () => {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
103
|
+
await refresh();
|
|
104
|
+
const current = snapshot();
|
|
105
|
+
if (!current) {
|
|
106
|
+
context.ui.toast.show({
|
|
107
|
+
title: "Memory",
|
|
108
|
+
message: "Server unreachable",
|
|
109
|
+
variant: "info",
|
|
110
|
+
});
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
context.ui.dialog.show(() => dialogBody(theme, current));
|
|
114
|
+
context.ui.dialog.set({ size: "medium" });
|
|
27
115
|
},
|
|
28
116
|
},
|
|
29
117
|
],
|
|
30
118
|
}));
|
|
31
119
|
|
|
32
|
-
return
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
120
|
+
return () => {
|
|
121
|
+
clearTimeout(debounce);
|
|
122
|
+
clearInterval(timer);
|
|
123
|
+
unregister();
|
|
124
|
+
};
|
|
36
125
|
},
|
|
37
126
|
});
|
package/package.json
CHANGED