crbro-memory 2.5.1 → 2.7.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/README.md +515 -487
- package/SECURITY.md +222 -0
- package/bin/crbro.mjs +241 -6
- package/dist/daemon/daemon.d.ts.map +1 -1
- package/dist/daemon/daemon.js +6 -3
- package/dist/daemon/daemon.js.map +1 -1
- package/dist/engine/backup.d.ts.map +1 -1
- package/dist/engine/backup.js +5 -1
- package/dist/engine/backup.js.map +1 -1
- package/dist/engine/cortex.d.ts +61 -0
- package/dist/engine/cortex.d.ts.map +1 -1
- package/dist/engine/cortex.js +270 -24
- package/dist/engine/cortex.js.map +1 -1
- package/dist/engine/hookverify.d.ts +42 -0
- package/dist/engine/hookverify.d.ts.map +1 -0
- package/dist/engine/hookverify.js +169 -0
- package/dist/engine/hookverify.js.map +1 -0
- package/dist/engine/maintenance.d.ts.map +1 -1
- package/dist/engine/maintenance.js +15 -2
- package/dist/engine/maintenance.js.map +1 -1
- package/dist/engine/postmortem.d.ts +73 -0
- package/dist/engine/postmortem.d.ts.map +1 -0
- package/dist/engine/postmortem.js +423 -0
- package/dist/engine/postmortem.js.map +1 -0
- package/dist/engine/prefrontal.d.ts +1 -0
- package/dist/engine/prefrontal.d.ts.map +1 -1
- package/dist/engine/prefrontal.js +8 -2
- package/dist/engine/prefrontal.js.map +1 -1
- package/dist/engine/secrets.d.ts +9 -0
- package/dist/engine/secrets.d.ts.map +1 -1
- package/dist/engine/secrets.js +7 -0
- package/dist/engine/secrets.js.map +1 -1
- package/dist/engine/triggers.d.ts +11 -4
- package/dist/engine/triggers.d.ts.map +1 -1
- package/dist/engine/triggers.js +53 -14
- package/dist/engine/triggers.js.map +1 -1
- package/dist/engine/usage.d.ts +61 -0
- package/dist/engine/usage.d.ts.map +1 -0
- package/dist/engine/usage.js +252 -0
- package/dist/engine/usage.js.map +1 -0
- package/dist/search/index.d.ts +40 -0
- package/dist/search/index.d.ts.map +1 -1
- package/dist/search/index.js +186 -5
- package/dist/search/index.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +100 -11
- package/dist/server.js.map +1 -1
- package/dist/sync/materialize.d.ts.map +1 -1
- package/dist/sync/materialize.js +54 -1
- package/dist/sync/materialize.js.map +1 -1
- package/dist/types/index.d.ts +28 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/ids.d.ts +6 -0
- package/dist/utils/ids.d.ts.map +1 -1
- package/dist/utils/ids.js +14 -4
- package/dist/utils/ids.js.map +1 -1
- package/dist/utils/transcripts.d.ts +63 -0
- package/dist/utils/transcripts.d.ts.map +1 -0
- package/dist/utils/transcripts.js +242 -0
- package/dist/utils/transcripts.js.map +1 -0
- package/hooks/crbro-guard.mjs +18 -2
- package/hooks/crbro-lifecycle.mjs +608 -0
- package/hooks/crbro-subagent.mjs +17 -4
- package/package.json +63 -62
package/SECURITY.md
ADDED
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
# Security
|
|
2
|
+
|
|
3
|
+
CRBRO is a memory that an AI assistant writes to and reads from, on your own
|
|
4
|
+
machine. That puts it between three things worth protecting, and this page
|
|
5
|
+
says what each defense is for — so that nobody removes one because it looked
|
|
6
|
+
like friction, and nobody trusts one for more than it does.
|
|
7
|
+
|
|
8
|
+
## What is at stake
|
|
9
|
+
|
|
10
|
+
| | What | Where |
|
|
11
|
+
|---|---|---|
|
|
12
|
+
| **Private data** | Everything the assistant learned about you and your work | The brain: `~/.crbro`, or `CRBRO_PATH` |
|
|
13
|
+
| | Credentials you chose to keep | The keychain, outside the brain (see below) |
|
|
14
|
+
| **Content you did not write** | Lines from teammates, through a shared space | `<brain>/shared/<space>/`, materialised into neurons |
|
|
15
|
+
| | What the miner extracted from files on disk | Neurons, marked `source: miner` |
|
|
16
|
+
| | Claude Code session logs, read by `crbro usage`, `crbro postmortem` and the lifecycle hook | `~/.claude/projects/` |
|
|
17
|
+
| | Compaction checkpoints written by the lifecycle hook (requests, task list, folder, remote) | `<brain>/checkpoints/`, seven days |
|
|
18
|
+
| **Communication out** | Team-space sync | A git remote you configure |
|
|
19
|
+
| | The optional semantic model | Downloaded once from Hugging Face by `semantic install` |
|
|
20
|
+
|
|
21
|
+
There is no account, no server of ours and no telemetry. Nothing is sent to
|
|
22
|
+
the author.
|
|
23
|
+
|
|
24
|
+
## The defenses, and why each exists
|
|
25
|
+
|
|
26
|
+
### Secret filter — `src/engine/secrets.ts`
|
|
27
|
+
|
|
28
|
+
Assistants handle credentials all day, and a memory stores whatever it is
|
|
29
|
+
handed. On the brain CRBRO was built against, five credentials were
|
|
30
|
+
sitting in plain text, and all five were in the search index too, so a recall
|
|
31
|
+
could hand them straight back.
|
|
32
|
+
|
|
33
|
+
So text is passed through `redact()` before it reaches disk: facts and
|
|
34
|
+
entries written with `crbro_learn` (the miner writes through the same path),
|
|
35
|
+
neuron summaries changed with `crbro_revise`, system maps, the session summary
|
|
36
|
+
of `crbro_consolidate`, open items written with `crbro_context`, and the
|
|
37
|
+
compaction checkpoints of the lifecycle hook. A credential becomes
|
|
38
|
+
`[REDACTED: <kind>]` and the sentence around it survives. `crbro postmortem`
|
|
39
|
+
applies the same filter to everything it prints. Text is always redacted whole
|
|
40
|
+
and cut to length afterwards: a cut first could leave half a token the filter
|
|
41
|
+
no longer recognises.
|
|
42
|
+
|
|
43
|
+
It is tuned for precision, not recall: it matches shapes that are credentials
|
|
44
|
+
and essentially nothing else, because a false positive silently corrupts real
|
|
45
|
+
knowledge. The consequence is that a credential in a shape it does not know
|
|
46
|
+
passes. Treat it as a net, not as a guarantee.
|
|
47
|
+
|
|
48
|
+
Sharing is stricter than storing: a neuron that contains a credential is
|
|
49
|
+
**refused** for sharing, not redacted, because sending a teammate a mangled
|
|
50
|
+
fact without saying so is worse than refusing and saying where the problem is.
|
|
51
|
+
Preferences are never shared or synced at all; on the reference brain one in
|
|
52
|
+
eighteen was an API key.
|
|
53
|
+
|
|
54
|
+
### The keychain — `src/engine/keychain.ts`
|
|
55
|
+
|
|
56
|
+
Refusing to store a secret is only half an answer: it leaves the user holding
|
|
57
|
+
it, and it goes back into a config file in plain text. `crbro_secret` and
|
|
58
|
+
`crbro secret` put it in the store the operating system already ships:
|
|
59
|
+
|
|
60
|
+
- **Windows** — sealed with DPAPI to the Windows user account, in a file next
|
|
61
|
+
to the brain, never inside it. Copied to another machine, lifted from a
|
|
62
|
+
backup or pushed to a repository, it does not open.
|
|
63
|
+
- **macOS** — the login keychain, through `security(1)`.
|
|
64
|
+
- **Linux** — the Secret Service, through `secret-tool(1)`.
|
|
65
|
+
|
|
66
|
+
CRBRO invents no cryptography. The store lives outside the brain on purpose,
|
|
67
|
+
so no sync, share or backup can reach it even by mistake. The value is read
|
|
68
|
+
from stdin by the CLI, never from arguments, so it stays out of shell history
|
|
69
|
+
and the process table.
|
|
70
|
+
|
|
71
|
+
What it does not do: protect against code running as your own user. DPAPI,
|
|
72
|
+
the login keychain and the Secret Service all open for the logged-in account.
|
|
73
|
+
|
|
74
|
+
### Quarantine before forgetting
|
|
75
|
+
|
|
76
|
+
`crbro_forget` (and every merge, split and compaction that removes a neuron)
|
|
77
|
+
copies what it removes to `<brain>/.quarantine/` first, with a timestamp, and
|
|
78
|
+
`crbro_forget restore` brings it back: a wrong forget should cost a restore,
|
|
79
|
+
not the knowledge.
|
|
80
|
+
|
|
81
|
+
The flip side: the quarantine holds what was forgotten, including credentials
|
|
82
|
+
removed on purpose. That is why `crbro backup` leaves it out. To remove
|
|
83
|
+
something for good, delete its quarantine file as well.
|
|
84
|
+
|
|
85
|
+
### Subagent injection is off by default
|
|
86
|
+
|
|
87
|
+
`install-hooks` installs the SubagentStart hook inert; only
|
|
88
|
+
`install-hooks --inject` (or `CRBRO_SUBAGENT_INJECT=full`) makes it hand the
|
|
89
|
+
brain's protocols to every subagent. Three clean-control benchmark runs found
|
|
90
|
+
no measured benefit in any model and harm — including fabricated compliance —
|
|
91
|
+
in small ones. It also keeps brain content from reaching every agent a
|
|
92
|
+
workflow spawns, which is where content travels furthest from your review.
|
|
93
|
+
|
|
94
|
+
### Provenance in recall
|
|
95
|
+
|
|
96
|
+
A line written by a teammate or extracted by the miner is not your own word.
|
|
97
|
+
`crbro_recall` marks it, on the winning entry and on every `also_matched`
|
|
98
|
+
line: `origin: team:<space>` with `by`, plain `origin: team` when the neuron
|
|
99
|
+
is no longer in a shared space, or `origin: miner`. Your own lines carry no
|
|
100
|
+
`origin`. The model and you can weigh such a line accordingly, and an
|
|
101
|
+
instruction planted in a shared space shows up as coming from that space.
|
|
102
|
+
|
|
103
|
+
What it does not prove:
|
|
104
|
+
|
|
105
|
+
- **`by` is a label the author declares.** It travels inside each op of the
|
|
106
|
+
shared log and nothing verifies it; anyone with push access can write any
|
|
107
|
+
name, yours included. So a line that arrived through a space keeps its
|
|
108
|
+
`origin` even when `by` is your own name — another device of yours shows
|
|
109
|
+
as `team:<space>` with `by: <you>`.
|
|
110
|
+
- **Patterns, errors and debts synced before 2.7 carry no origin.** The
|
|
111
|
+
`entry_source` sidecar is filled when a sync adds a line; lines that a
|
|
112
|
+
teammate contributed and that were already materialised by 2.6 stay
|
|
113
|
+
unlabelled (facts and decisions are fine: they carried `source`/`by`
|
|
114
|
+
already).
|
|
115
|
+
- `consolidate` never proposes promoting a lesson that is not your own, so a
|
|
116
|
+
teammate's or the miner's line cannot be rewritten as your own lesson
|
|
117
|
+
through `promotion_candidates`.
|
|
118
|
+
|
|
119
|
+
Provenance labels; it does not sanitise. Content arriving through a shared
|
|
120
|
+
space is not filtered for secrets or for instructions on the way in. Treat any
|
|
121
|
+
line with an `origin` as data, never as an order.
|
|
122
|
+
|
|
123
|
+
### Team sync over git
|
|
124
|
+
|
|
125
|
+
Only neurons you name with `crbro_share` are pushed, to a remote you
|
|
126
|
+
configure. git runs with every interactive prompt disabled
|
|
127
|
+
(`GIT_TERMINAL_PROMPT=0`, SSH in batch mode) and with timeouts, so a private
|
|
128
|
+
or unreachable remote fails instead of hanging the server. SSH accepts a host
|
|
129
|
+
key the first time it sees it (`StrictHostKeyChecking=accept-new`) and refuses
|
|
130
|
+
a changed one afterwards. Incoming logs written by a newer, unknown format are
|
|
131
|
+
skipped rather than half-understood, and an unreadable line is skipped without
|
|
132
|
+
costing the rest.
|
|
133
|
+
|
|
134
|
+
### Hooks never block
|
|
135
|
+
|
|
136
|
+
The guard (`PreToolUse`), the subagent hook (`SubagentStart`) and the
|
|
137
|
+
lifecycle hook (`SessionStart`, `PreCompact`) add context and nothing else.
|
|
138
|
+
They exit 0 on any error, on bad input and on timeout; they never approve,
|
|
139
|
+
deny or rewrite a tool call. A memory that can stop your session is worse than
|
|
140
|
+
no memory, and a hook that could deny calls would be a lever for anyone who
|
|
141
|
+
can write into the brain.
|
|
142
|
+
|
|
143
|
+
### Hook verification — `crbro install-hooks --verify`
|
|
144
|
+
|
|
145
|
+
`install-hooks` copies its scripts into `~/.claude/crbro-hooks/` so they
|
|
146
|
+
survive an npx cache wipe, and `settings.json` runs those copies. That makes
|
|
147
|
+
them ordinary files in your home: anything that can write there can change
|
|
148
|
+
what runs at the start of every session and before every shell command.
|
|
149
|
+
|
|
150
|
+
`install-hooks --verify` hashes each installed copy with SHA-256 and compares
|
|
151
|
+
it with the same file in the package you are running, checks that every CRBRO
|
|
152
|
+
hook `settings.json` runs exists, and reports. It writes nothing and fixes
|
|
153
|
+
nothing; it exits 1 when something differs, so a script can act on it. A
|
|
154
|
+
difference after updating CRBRO is expected (the copy is from the older
|
|
155
|
+
release) and re-running the install command refreshes it. A difference you
|
|
156
|
+
cannot explain is worth looking at before the next session.
|
|
157
|
+
|
|
158
|
+
It compares against the package on disk, so it cannot catch a change made to
|
|
159
|
+
both. It runs when you run it, not on its own.
|
|
160
|
+
|
|
161
|
+
### Reading session logs — `crbro usage`, `crbro postmortem`, the lifecycle hook
|
|
162
|
+
|
|
163
|
+
Claude Code's logs hold everything said in a session, tool output included.
|
|
164
|
+
The two commands are read-only and stream the files line by line, so a log of
|
|
165
|
+
hundreds of megabytes is not loaded whole.
|
|
166
|
+
|
|
167
|
+
- `usage` reads `message.model`, `message.usage`, `message.id`, `requestId`,
|
|
168
|
+
`isSidechain` and `timestamp`, and nothing else; lines that cannot carry a
|
|
169
|
+
usage block are discarded as raw bytes before they are decoded.
|
|
170
|
+
- `postmortem` reads what the person typed and the names of the tools called.
|
|
171
|
+
It never reads a tool's input or a tool's result — only the result's
|
|
172
|
+
`is_error` flag — and it passes everything it prints through the secret
|
|
173
|
+
filter. It proposes lessons; it never stores one.
|
|
174
|
+
- The lifecycle hook (`install-hooks --compact`), in its `PreCompact` mode,
|
|
175
|
+
reads the last 32 MB of the session being compacted: the text the person
|
|
176
|
+
typed (not what a background task, another agent or a client command such
|
|
177
|
+
as `/model` wrote as a user line), the inputs of `TodoWrite`, `TaskCreate`
|
|
178
|
+
and `TaskUpdate`, and — only to learn the task number — the result text of
|
|
179
|
+
`TaskCreate`. It writes a redacted checkpoint to `<brain>/checkpoints/`,
|
|
180
|
+
removed after seven days and left out of backups. After the compaction, its
|
|
181
|
+
`SessionStart` mode puts that text back into the model's context, at most
|
|
182
|
+
1,500 characters, as the "Resuming after compaction" block. That is text
|
|
183
|
+
from the transcript re-entering the context: what was a request stays a
|
|
184
|
+
request, and nothing else is promoted to one.
|
|
185
|
+
|
|
186
|
+
### Backups leave out what should not travel
|
|
187
|
+
|
|
188
|
+
`crbro backup` skips the quarantine, machine tokens, the licence cache, the
|
|
189
|
+
search index, the semantic runtime and the compaction checkpoints (fragments
|
|
190
|
+
of conversation that are meant to expire in seven days, not to live on in a
|
|
191
|
+
synced backup folder). Keys never live in the brain, so a backup holds
|
|
192
|
+
knowledge and no secrets — except whatever the secret filter did not
|
|
193
|
+
recognise.
|
|
194
|
+
|
|
195
|
+
## Out of scope
|
|
196
|
+
|
|
197
|
+
- **Someone who can run code as you.** They can read the brain, and the
|
|
198
|
+
keychain opens for them as it opens for you.
|
|
199
|
+
- **Your MCP client and model provider.** Whatever a tool returns is read by
|
|
200
|
+
the assistant you are talking to. That traffic is between you and them.
|
|
201
|
+
- **Prompt injection through stored content, in general.** A memory cannot
|
|
202
|
+
make text safe to obey. CRBRO labels where a line came from and keeps its
|
|
203
|
+
hooks unable to block or approve anything; deciding what to follow is the
|
|
204
|
+
model's and yours.
|
|
205
|
+
|
|
206
|
+
## Reporting a vulnerability
|
|
207
|
+
|
|
208
|
+
Please report it privately, not in a public issue. Use **Report a
|
|
209
|
+
vulnerability** under the **Security** tab of
|
|
210
|
+
[github.com/Octonove/crbro-memory](https://github.com/Octonove/crbro-memory)
|
|
211
|
+
if it is available. If it is not, open an issue asking for a private contact,
|
|
212
|
+
without any detail of the flaw, and a private channel will be arranged.
|
|
213
|
+
|
|
214
|
+
Include the version (`npx crbro-memory status` prints it), the
|
|
215
|
+
operating system, what an attacker needs (local access, a teammate's position
|
|
216
|
+
in a shared space, a crafted file for the miner…), and the smallest steps that
|
|
217
|
+
show it. Do not include real credentials or real brain contents; synthetic
|
|
218
|
+
ones are enough.
|
|
219
|
+
|
|
220
|
+
You will get an acknowledgement, and a fix date and a disclosure date will be
|
|
221
|
+
agreed with you before anything is made public. Fixes ship in the latest
|
|
222
|
+
release on npm; there are no maintained older branches.
|
package/bin/crbro.mjs
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
// ─── CRBRO CLI ───────────────────────────────────────────────────
|
|
4
4
|
// Command-line interface for CRBRO memory system
|
|
5
|
-
// Supports: init, status, secret, mine, setup-miner, miner-status,
|
|
5
|
+
// Supports: init, status, secret, mine, setup-miner, miner-status, usage, postmortem,
|
|
6
6
|
// remove-miner, and MCP server mode (default)
|
|
7
7
|
|
|
8
8
|
import { platform, homedir } from 'os';
|
|
@@ -22,6 +22,17 @@ function pkgVersion() {
|
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
+
// The Claude Code SessionStart command install-boot writes. Kept in one place
|
|
26
|
+
// because `install-hooks --compact` has to recognise it to replace it.
|
|
27
|
+
function bootCommandPosix(aviso) {
|
|
28
|
+
return `printf '%s\\n' ${JSON.stringify(aviso)}`;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/** An install-boot entry, this release's or an older one with other wording. */
|
|
32
|
+
function isInstallBootHook(h) {
|
|
33
|
+
return !!h && typeof h.command === 'string' && h.command.startsWith("printf '%s\\n' ") && h.command.includes('crbro_boot');
|
|
34
|
+
}
|
|
35
|
+
|
|
25
36
|
const args = process.argv.slice(2);
|
|
26
37
|
const command = args[0];
|
|
27
38
|
|
|
@@ -613,6 +624,222 @@ if (command === 'init') {
|
|
|
613
624
|
for (const l of lessons) console.log(` • [${l.k}${l.d ? ' · ' + l.d : ''} · ${l.n}] ${l.t}\n`);
|
|
614
625
|
})().catch(e => { console.error(e.message); process.exit(1); });
|
|
615
626
|
|
|
627
|
+
} else if (command === 'usage' || command === 'postmortem') {
|
|
628
|
+
// ─── Token spend and post-mortem, from Claude Code's own logs ──
|
|
629
|
+
//
|
|
630
|
+
// crbro usage [--days N] [--session <id>] [--project <folder>] [--json]
|
|
631
|
+
// crbro postmortem [--days N] [--session <id>] [--project <folder>] [--max N] [--json]
|
|
632
|
+
//
|
|
633
|
+
// Both read ~/.claude/projects/<project>/<session>.jsonl (and, for usage,
|
|
634
|
+
// the subagent logs under <session>/subagents/) through one streaming
|
|
635
|
+
// reader. usage reads message.model and message.usage only; postmortem
|
|
636
|
+
// reads what the person typed and tool names, never a tool's input or
|
|
637
|
+
// result, and redacts everything it prints. Neither writes anything.
|
|
638
|
+
const flag = (name) => { const i = args.indexOf(name); return i !== -1 && args[i + 1] && !args[i + 1].startsWith('--') ? args[i + 1] : undefined; };
|
|
639
|
+
const intFlag = (name) => {
|
|
640
|
+
const v = flag(name);
|
|
641
|
+
if (v === undefined) return undefined;
|
|
642
|
+
const n = Number(v);
|
|
643
|
+
if (!Number.isInteger(n) || n < 0) { console.error(` ❌ ${name} expects a whole number ≥ 0; got: ${v}`); process.exit(1); }
|
|
644
|
+
return n;
|
|
645
|
+
};
|
|
646
|
+
const session = flag('--session');
|
|
647
|
+
const project = flag('--project');
|
|
648
|
+
// Last 7 days unless told otherwise (--days 0 = all); a named session is looked for everywhere.
|
|
649
|
+
const daysArg = intFlag('--days');
|
|
650
|
+
const days = daysArg !== undefined ? (daysArg === 0 ? undefined : daysArg) : (session ? undefined : 7);
|
|
651
|
+
const max = intFlag('--max');
|
|
652
|
+
const json = args.includes('--json');
|
|
653
|
+
const mod = command === 'usage' ? '../dist/engine/usage.js' : '../dist/engine/postmortem.js';
|
|
654
|
+
import(mod).then(async m => {
|
|
655
|
+
if (command === 'usage') {
|
|
656
|
+
const r = await m.collectUsage({ days, session, project });
|
|
657
|
+
console.log(json ? JSON.stringify(r, null, 2) : m.formatUsage(r));
|
|
658
|
+
} else {
|
|
659
|
+
const r = await m.runPostmortem({ days, session, project, max });
|
|
660
|
+
console.log(json ? JSON.stringify(r, null, 2) : m.formatPostmortem(r));
|
|
661
|
+
}
|
|
662
|
+
}).catch(err => {
|
|
663
|
+
console.error(' ❌ ' + (err && err.code === 'ERR_MODULE_NOT_FOUND' ? 'Build required. Run: npm run build' : err.message));
|
|
664
|
+
process.exit(1);
|
|
665
|
+
});
|
|
666
|
+
|
|
667
|
+
} else if (command === 'install-hooks' && process.argv.includes('--verify')) {
|
|
668
|
+
// ─── Are the installed hooks the ones this package ships? ──────
|
|
669
|
+
// SHA-256 of each copy in ~/.claude/crbro-hooks/ against hooks/ here, and
|
|
670
|
+
// whether every CRBRO hook settings.json runs exists. Read-only. Exit 1 on
|
|
671
|
+
// any difference, so it can gate a script.
|
|
672
|
+
import('../dist/engine/hookverify.js').then(({ verifyHooks, formatVerify }) => {
|
|
673
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
674
|
+
const r = verifyHooks({
|
|
675
|
+
packageDir: join(here, '..', 'hooks'),
|
|
676
|
+
installedDir: join(homedir(), '.claude', 'crbro-hooks'),
|
|
677
|
+
settingsPath: join(homedir(), '.claude', 'settings.json'),
|
|
678
|
+
});
|
|
679
|
+
console.log(args.includes('--json') ? JSON.stringify(r, null, 2) : formatVerify(r));
|
|
680
|
+
if (!r.ok) process.exitCode = 1;
|
|
681
|
+
}).catch(err => {
|
|
682
|
+
console.error(' ❌ ' + (err && err.code === 'ERR_MODULE_NOT_FOUND' ? 'Build required. Run: npm run build' : err.message));
|
|
683
|
+
process.exit(1);
|
|
684
|
+
});
|
|
685
|
+
|
|
686
|
+
} else if ((command === 'install-hooks' || command === 'uninstall-hooks') && process.argv.includes('--compact')) {
|
|
687
|
+
// ─── Compact without losing the thread (opt-in, Claude Code only) ──
|
|
688
|
+
//
|
|
689
|
+
// PreCompact → hooks/crbro-lifecycle.mjs pre-compact: a mechanical,
|
|
690
|
+
// redacted checkpoint of the session in <brain>/checkpoints/, plus the
|
|
691
|
+
// "keep what is not saved yet" reminder.
|
|
692
|
+
// SessionStart → hooks/crbro-lifecycle.mjs session-start: the boot notice,
|
|
693
|
+
// the folder and its git remote, and after a compaction what was being
|
|
694
|
+
// done before it.
|
|
695
|
+
//
|
|
696
|
+
// Only Claude Code has PreCompact, so ~/.codex is never touched. The entry
|
|
697
|
+
// install-boot wrote for Claude Code prints the very notice session-start
|
|
698
|
+
// prints, so it is replaced, and the replaced hook is kept aside in
|
|
699
|
+
// crbro-hooks/ so uninstall puts it back exactly. A hand-written CRBRO hook
|
|
700
|
+
// is never replaced: ours is installed with --no-boot / --no-reminder next
|
|
701
|
+
// to it, so nothing is read twice. Merged, never rewritten; idempotent.
|
|
702
|
+
import('fs').then(async fs => {
|
|
703
|
+
const settingsPath = join(homedir(), '.claude', 'settings.json');
|
|
704
|
+
const hookDir = join(homedir(), '.claude', 'crbro-hooks');
|
|
705
|
+
const hookScript = join(hookDir, 'crbro-lifecycle.mjs');
|
|
706
|
+
const replacedPath = join(hookDir, 'crbro-lifecycle.replaced.json');
|
|
707
|
+
const ours = h => !!h && typeof h.command === 'string' && h.command.includes('crbro-lifecycle');
|
|
708
|
+
const entryIsOurs = e => Array.isArray(e?.hooks) && e.hooks.some(ours);
|
|
709
|
+
|
|
710
|
+
let settings = null;
|
|
711
|
+
try {
|
|
712
|
+
const raw = fs.readFileSync(settingsPath, 'utf8');
|
|
713
|
+
settings = JSON.parse(raw.charCodeAt(0) === 0xFEFF ? raw.slice(1) : raw);
|
|
714
|
+
} catch (e) {
|
|
715
|
+
if (fs.existsSync(settingsPath)) {
|
|
716
|
+
console.error(` ❌ ${settingsPath} exists but could not be parsed — not touching it.`);
|
|
717
|
+
console.error(` ${e.message}`);
|
|
718
|
+
process.exit(1);
|
|
719
|
+
}
|
|
720
|
+
}
|
|
721
|
+
if (settings !== null && (typeof settings !== 'object' || Array.isArray(settings))) {
|
|
722
|
+
console.error(` ❌ ${settingsPath} is not a JSON object — not touching it.`);
|
|
723
|
+
process.exit(1);
|
|
724
|
+
}
|
|
725
|
+
for (const event of ['PreCompact', 'SessionStart']) {
|
|
726
|
+
const v = settings?.hooks?.[event];
|
|
727
|
+
if (v !== undefined && !Array.isArray(v)) {
|
|
728
|
+
console.error(` ❌ hooks.${event} in ${settingsPath} is not a list — not touching it.`);
|
|
729
|
+
process.exit(1);
|
|
730
|
+
}
|
|
731
|
+
}
|
|
732
|
+
const write = obj => {
|
|
733
|
+
const tmp = settingsPath + '.' + process.pid + '.tmp';
|
|
734
|
+
fs.writeFileSync(tmp, JSON.stringify(obj, null, 2) + '\n', 'utf8');
|
|
735
|
+
fs.renameSync(tmp, settingsPath);
|
|
736
|
+
};
|
|
737
|
+
|
|
738
|
+
if (command === 'uninstall-hooks') {
|
|
739
|
+
if (!settings || !settings.hooks) {
|
|
740
|
+
console.log(' ⚪ No Claude Code settings with hooks: nothing to remove.');
|
|
741
|
+
} else {
|
|
742
|
+
let removed = 0;
|
|
743
|
+
for (const event of ['PreCompact', 'SessionStart']) {
|
|
744
|
+
const list = settings.hooks[event];
|
|
745
|
+
if (!Array.isArray(list)) continue;
|
|
746
|
+
const kept = [];
|
|
747
|
+
for (const entry of list) {
|
|
748
|
+
if (!entryIsOurs(entry)) { kept.push(entry); continue; }
|
|
749
|
+
const rest = entry.hooks.filter(h => !ours(h));
|
|
750
|
+
removed += entry.hooks.length - rest.length;
|
|
751
|
+
if (rest.length) kept.push({ ...entry, hooks: rest });
|
|
752
|
+
}
|
|
753
|
+
if (kept.length) settings.hooks[event] = kept; else delete settings.hooks[event];
|
|
754
|
+
}
|
|
755
|
+
// Put back what install replaced, unless an equal hook is already there.
|
|
756
|
+
let restored = 0;
|
|
757
|
+
try {
|
|
758
|
+
const rec = JSON.parse(fs.readFileSync(replacedPath, 'utf8'));
|
|
759
|
+
for (const { matcher, hook } of Array.isArray(rec.SessionStart) ? rec.SessionStart : []) {
|
|
760
|
+
const list = settings.hooks.SessionStart = settings.hooks.SessionStart || [];
|
|
761
|
+
if (JSON.stringify(list).includes(JSON.stringify(hook.command))) continue;
|
|
762
|
+
list.push(matcher !== undefined ? { matcher, hooks: [hook] } : { hooks: [hook] });
|
|
763
|
+
restored++;
|
|
764
|
+
}
|
|
765
|
+
} catch { /* nothing was replaced */ }
|
|
766
|
+
if (Object.keys(settings.hooks).length === 0) delete settings.hooks;
|
|
767
|
+
if (removed || restored) {
|
|
768
|
+
write(settings);
|
|
769
|
+
console.log(` ✅ Compact hooks removed (${removed}).${restored ? ` The install-boot SessionStart entry is back (${restored}).` : ''}`);
|
|
770
|
+
console.log(` ${settingsPath}`);
|
|
771
|
+
} else {
|
|
772
|
+
console.log(' ⚪ Compact hooks were not installed. Nothing changed.');
|
|
773
|
+
}
|
|
774
|
+
}
|
|
775
|
+
for (const f of [hookScript, replacedPath]) { try { fs.unlinkSync(f); } catch { /* not there */ } }
|
|
776
|
+
console.log(' Checkpoints already written stay in <brain>/checkpoints/ and expire after 7 days.');
|
|
777
|
+
return;
|
|
778
|
+
}
|
|
779
|
+
|
|
780
|
+
// — install —
|
|
781
|
+
if (settings === null && !fs.existsSync(join(homedir(), '.claude'))) {
|
|
782
|
+
console.log(' ⚪ ~/.claude not found: Claude Code is the only client with PreCompact, so nothing was wired.');
|
|
783
|
+
return;
|
|
784
|
+
}
|
|
785
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
786
|
+
fs.mkdirSync(hookDir, { recursive: true });
|
|
787
|
+
fs.copyFileSync(join(here, '..', 'hooks', 'crbro-lifecycle.mjs'), hookScript);
|
|
788
|
+
settings = settings || {};
|
|
789
|
+
settings.hooks = settings.hooks || {};
|
|
790
|
+
const node = `node "${hookScript.split('\\').join('/')}"`;
|
|
791
|
+
let changed = false;
|
|
792
|
+
|
|
793
|
+
// SessionStart
|
|
794
|
+
const start = settings.hooks.SessionStart = settings.hooks.SessionStart || [];
|
|
795
|
+
if (start.some(entryIsOurs)) {
|
|
796
|
+
console.log(' ✅ SessionStart: already installed. Script refreshed.');
|
|
797
|
+
} else {
|
|
798
|
+
const replaced = [];
|
|
799
|
+
for (let i = start.length - 1; i >= 0; i--) {
|
|
800
|
+
const entry = start[i];
|
|
801
|
+
if (!Array.isArray(entry?.hooks) || !entry.hooks.some(isInstallBootHook)) continue;
|
|
802
|
+
for (const h of entry.hooks.filter(isInstallBootHook)) replaced.unshift({ matcher: entry.matcher, hook: h });
|
|
803
|
+
const rest = entry.hooks.filter(h => !isInstallBootHook(h));
|
|
804
|
+
if (rest.length) start[i] = { ...entry, hooks: rest }; else start.splice(i, 1);
|
|
805
|
+
}
|
|
806
|
+
// A hand-written CRBRO start (cat ~/.claude/crbro-session-start.txt…)
|
|
807
|
+
// stays, and ours stops printing the notice it already prints.
|
|
808
|
+
const handWritten = /crbro/i.test(JSON.stringify(start));
|
|
809
|
+
start.push({
|
|
810
|
+
matcher: 'startup|resume|clear|compact',
|
|
811
|
+
hooks: [{ type: 'command', command: `${node} session-start${handWritten ? ' --no-boot' : ''}`, timeout: 10, statusMessage: 'Loading CRBRO memory...' }],
|
|
812
|
+
});
|
|
813
|
+
if (replaced.length) fs.writeFileSync(replacedPath, JSON.stringify({ SessionStart: replaced }, null, 2), 'utf8');
|
|
814
|
+
changed = true;
|
|
815
|
+
console.log(` ✅ SessionStart: lifecycle hook added${replaced.length ? ', replacing the install-boot entry (same notice, plus the project line)' : ''}${handWritten ? '; your own CRBRO start hook is kept and the notice is not repeated' : ''}.`);
|
|
816
|
+
}
|
|
817
|
+
|
|
818
|
+
// PreCompact
|
|
819
|
+
const pre = settings.hooks.PreCompact = settings.hooks.PreCompact || [];
|
|
820
|
+
if (pre.some(entryIsOurs)) {
|
|
821
|
+
console.log(' ✅ PreCompact: already installed. Script refreshed.');
|
|
822
|
+
} else {
|
|
823
|
+
const handWritten = /crbro/i.test(JSON.stringify(pre));
|
|
824
|
+
pre.push({
|
|
825
|
+
hooks: [{ type: 'command', command: `${node} pre-compact${handWritten ? ' --no-reminder' : ''}`, timeout: 10, statusMessage: 'Saving a CRBRO checkpoint...' }],
|
|
826
|
+
});
|
|
827
|
+
changed = true;
|
|
828
|
+
console.log(` ✅ PreCompact: checkpoint hook added${handWritten ? '; your own CRBRO reminder is kept and not repeated' : ''}.`);
|
|
829
|
+
}
|
|
830
|
+
|
|
831
|
+
if (changed) {
|
|
832
|
+
write(settings);
|
|
833
|
+
console.log(` ${settingsPath}`);
|
|
834
|
+
console.log(' Undo with: npx crbro-memory uninstall-hooks --compact');
|
|
835
|
+
}
|
|
836
|
+
console.log(' Never blocks; checkpoints are redacted and expire after 7 days. New sessions pick it up.');
|
|
837
|
+
}).catch(e => { console.error(e); process.exit(1); });
|
|
838
|
+
|
|
839
|
+
} else if (command === 'uninstall-hooks') {
|
|
840
|
+
console.log(' Usage: npx crbro-memory uninstall-hooks --compact');
|
|
841
|
+
console.log(' (the guard and subagent hooks are removed by deleting their entry from ~/.claude/settings.json)');
|
|
842
|
+
|
|
616
843
|
} else if (command === 'install-hooks' && process.argv.includes('--guard')) {
|
|
617
844
|
// ─── Wire the PreToolUse guard into Claude Code (opt-in) ───────
|
|
618
845
|
//
|
|
@@ -766,14 +993,13 @@ if (command === 'init') {
|
|
|
766
993
|
// Only files that already exist are touched, and each one is merged, never
|
|
767
994
|
// rewritten. Idempotent: a second run reports and changes nothing.
|
|
768
995
|
import('fs').then(async fs => {
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
'Apply the protocol_enforcement block it returns for the rest of the session.';
|
|
996
|
+
// One copy of the notice: the lifecycle hook prints the same text in its
|
|
997
|
+
// session-start mode, and `install-hooks --compact` swaps this entry for it.
|
|
998
|
+
const { BOOT_NOTICE: AVISO } = await import('../hooks/crbro-lifecycle.mjs');
|
|
773
999
|
|
|
774
1000
|
// printf on a shell, Write-Output on Windows PowerShell. One line, no
|
|
775
1001
|
// external file: a path stored in a hook goes stale on the next update.
|
|
776
|
-
const cmdPosix =
|
|
1002
|
+
const cmdPosix = bootCommandPosix(AVISO);
|
|
777
1003
|
const cmdWin = `powershell -NoProfile -Command ${JSON.stringify('Write-Output ' + JSON.stringify(AVISO))}`;
|
|
778
1004
|
const MATCHER = 'startup|resume|clear|compact';
|
|
779
1005
|
|
|
@@ -1098,6 +1324,15 @@ if (command === 'init') {
|
|
|
1098
1324
|
console.log(' npx crbro-memory install-hooks --guard Wire the PreToolUse hook (adds context, never blocks)');
|
|
1099
1325
|
console.log(' npx crbro-memory guard "<command>" What it would say for a command · --rebuild writes the index');
|
|
1100
1326
|
console.log('');
|
|
1327
|
+
console.log(' Compact without losing the thread (opt-in, Claude Code):');
|
|
1328
|
+
console.log(' npx crbro-memory install-hooks --compact PreCompact checkpoint + SessionStart that picks it back up');
|
|
1329
|
+
console.log(' npx crbro-memory uninstall-hooks --compact Remove both and put back what was replaced');
|
|
1330
|
+
console.log(' npx crbro-memory install-hooks --verify SHA-256 of the installed hooks against this package (read-only)');
|
|
1331
|
+
console.log('');
|
|
1332
|
+
console.log(' Looking back at Claude Code sessions (read-only; last 7 days unless --days N, 0 = all):');
|
|
1333
|
+
console.log(' npx crbro-memory usage [--session ID] [--project DIR] [--json] Tokens per model and session, subagents apart');
|
|
1334
|
+
console.log(' npx crbro-memory postmortem [--max N] [--json] Candidate lessons: corrections, failing tools, repeats');
|
|
1335
|
+
console.log('');
|
|
1101
1336
|
console.log(' Daemon (opt-in): one process owns the brain for every client — one index, one model, one writer:');
|
|
1102
1337
|
console.log(' npx crbro-memory daemon on | off Switch every client of this brain, the next time each starts');
|
|
1103
1338
|
console.log(' npx crbro-memory daemon status Is it on, who is running, how much it holds');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/daemon/daemon.ts"],"names":[],"mappings":"AAuBA,OAAO,EAA+B,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAIzE,OAAO,EAGwC,KAAK,WAAW,EAC9D,MAAM,eAAe,CAAC;AAYvB,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,WAAW,CAAC;IACnB,0FAA0F;IAC1F,WAAW,IAAI,MAAM,CAAC;IACtB,4EAA4E;IAC5E,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,iEAAiE;IACjE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,qGAAqG;IACrG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B;AAED,wBAAgB,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAOtF;AAoCD,wBAAsB,WAAW,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/daemon/daemon.ts"],"names":[],"mappings":"AAuBA,OAAO,EAA+B,KAAK,OAAO,EAAE,MAAM,cAAc,CAAC;AAIzE,OAAO,EAGwC,KAAK,WAAW,EAC9D,MAAM,eAAe,CAAC;AAYvB,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,WAAW,CAAC;IACnB,0FAA0F;IAC1F,WAAW,IAAI,MAAM,CAAC;IACtB,4EAA4E;IAC5E,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,iEAAiE;IACjE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,qGAAqG;IACrG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B;AAED,wBAAgB,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAOtF;AAoCD,wBAAsB,WAAW,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAiOpF;AAED,kFAAkF;AAClF,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CA4B/C"}
|
package/dist/daemon/daemon.js
CHANGED
|
@@ -96,6 +96,9 @@ async function startDaemon(options = {}) {
|
|
|
96
96
|
const token = (0, endpoint_js_1.newToken)();
|
|
97
97
|
const idleMs = idleDelayMs(options.idleMinutes);
|
|
98
98
|
const config = (0, endpoint_js_1.configFingerprint)();
|
|
99
|
+
// Read once. package.json on disk can change under a running daemon (npx refreshes its cache in place),
|
|
100
|
+
// and a daemon that reported the NEW version while running the OLD code was seen doing exactly that.
|
|
101
|
+
const version = (0, endpoint_js_1.packageVersion)();
|
|
99
102
|
await node_fs_1.promises.mkdir((0, endpoint_js_1.daemonDir)(brainRoot), { recursive: true, mode: 0o700 });
|
|
100
103
|
const clients = new Set();
|
|
101
104
|
const conversations = () => [...clients].filter(c => c.server !== null).length;
|
|
@@ -173,7 +176,7 @@ async function startDaemon(options = {}) {
|
|
|
173
176
|
return kill('bad hello');
|
|
174
177
|
}
|
|
175
178
|
nonce = (0, endpoint_js_1.newNonce)();
|
|
176
|
-
say({ crbro: 'hello', protocol: endpoint_js_1.DAEMON_PROTOCOL, version
|
|
179
|
+
say({ crbro: 'hello', protocol: endpoint_js_1.DAEMON_PROTOCOL, version, build, pid: process.pid, config, proof: (0, endpoint_js_1.proof)(token, 'daemon', m.nonce), nonce });
|
|
177
180
|
stage = 'auth';
|
|
178
181
|
return;
|
|
179
182
|
}
|
|
@@ -189,7 +192,7 @@ async function startDaemon(options = {}) {
|
|
|
189
192
|
if (m?.crbro === 'control') {
|
|
190
193
|
clearTimeout(timer);
|
|
191
194
|
if (m.op === 'status') {
|
|
192
|
-
say({ crbro: 'status', pid: process.pid, version
|
|
195
|
+
say({ crbro: 'status', pid: process.pid, version, build, brain: brainRoot, endpoint, config,
|
|
193
196
|
connections: conversations(), uptime_s: Math.round(process.uptime()), rss_mb: Math.round(process.memoryUsage().rss / 1048576),
|
|
194
197
|
semantic_vectors: engines.searchEngine.semanticCount(), idle_minutes: Math.round(idleMs / 6_000) / 10 });
|
|
195
198
|
socket.end();
|
|
@@ -301,7 +304,7 @@ async function startDaemon(options = {}) {
|
|
|
301
304
|
}
|
|
302
305
|
await (0, endpoint_js_1.clearBlocked)(brainRoot, build);
|
|
303
306
|
state = {
|
|
304
|
-
protocol: endpoint_js_1.DAEMON_PROTOCOL, pid: process.pid, version
|
|
307
|
+
protocol: endpoint_js_1.DAEMON_PROTOCOL, pid: process.pid, version, build, endpoint, token,
|
|
305
308
|
started: new Date().toISOString(), brain: brainRoot,
|
|
306
309
|
};
|
|
307
310
|
await (0, endpoint_js_1.writeState)(brainRoot, state);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/daemon/daemon.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/daemon/daemon.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/engine/backup.ts"],"names":[],"mappings":"AA4BA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAKxC,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,2EAA2E;AAC3E,eAAO,MAAM,uBAAuB,QAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/engine/backup.ts"],"names":[],"mappings":"AA4BA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAKxC,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,2EAA2E;AAC3E,eAAO,MAAM,uBAAuB,QAAsB,CAAC;AAW3D,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9F,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAa,SAAQ,UAAU;IAC9C,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC/B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,IAAI,GAAE,MAAqB,GAC1B,MAAM,CAOR;AA8BD,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAkBpE;AAED,wBAAsB,YAAY,CAChC,KAAK,EAAE,UAAU,EACjB,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,IAAI,CAAA;CAAO,GACrD,OAAO,CAAC,YAAY,CAAC,CA4CvB;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAUpE;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAkBxG;AAED,oFAAoF;AACpF,wBAAsB,eAAe,CACnC,KAAK,EAAE,UAAU,EACjB,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,IAAI,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;CAAO,GAC/D,OAAO,CAAC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAe3D"}
|
package/dist/engine/backup.js
CHANGED
|
@@ -43,7 +43,11 @@ exports.BACKUP_FORMAT = 1;
|
|
|
43
43
|
exports.DEFAULT_KEEP = 7;
|
|
44
44
|
/** consolidate makes one on its own when the newest is older than this. */
|
|
45
45
|
exports.AUTO_BACKUP_INTERVAL_MS = 24 * 60 * 60 * 1000;
|
|
46
|
-
|
|
46
|
+
// checkpoints/ (2.7): the compaction checkpoints hold literal user requests,
|
|
47
|
+
// the task list, the folder and the remote. They expire after seven days and
|
|
48
|
+
// are rebuilt by the next compaction; a backup, often kept in a synced folder,
|
|
49
|
+
// would keep them forever.
|
|
50
|
+
const SKIP_TOP = new Set(['.quarantine', '.search', '.semantic', '.device-token', '.license-cache.json', '.locks', '.daemon', 'checkpoints']);
|
|
47
51
|
const SKIP_ANYWHERE = new Set(['.git', 'node_modules']);
|
|
48
52
|
const PREFIX = 'brain-';
|
|
49
53
|
const SUFFIX = '.json.gz';
|