@fingerskier/augment 0.3.0 → 0.4.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 +114 -5
- package/dist/cli.d.ts +9 -6
- package/dist/cli.js +9 -43
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +2 -0
- package/dist/config.js +2 -1
- package/dist/config.js.map +1 -1
- package/dist/constants.d.ts +1 -0
- package/dist/constants.js +7 -0
- package/dist/constants.js.map +1 -1
- package/dist/daemon/client.d.ts +4 -2
- package/dist/daemon/client.js +30 -14
- package/dist/daemon/client.js.map +1 -1
- package/dist/daemon/http.js +141 -50
- package/dist/daemon/http.js.map +1 -1
- package/dist/daemon/lifetime-lock.d.ts +22 -0
- package/dist/daemon/lifetime-lock.js +94 -0
- package/dist/daemon/lifetime-lock.js.map +1 -0
- package/dist/daemon/main.js +2 -1
- package/dist/daemon/main.js.map +1 -1
- package/dist/db.d.ts +3 -1
- package/dist/db.js +47 -10
- package/dist/db.js.map +1 -1
- package/dist/install.d.ts +2 -0
- package/dist/install.js +68 -5
- package/dist/install.js.map +1 -1
- package/dist/mcp/apps.js +0 -16
- package/dist/mcp/apps.js.map +1 -1
- package/dist/mcp/insights.d.ts +4 -6
- package/dist/mcp/insights.js +4 -11
- package/dist/mcp/insights.js.map +1 -1
- package/dist/mcp/server.js +43 -23
- package/dist/mcp/server.js.map +1 -1
- package/dist/memory/files.js +11 -0
- package/dist/memory/files.js.map +1 -1
- package/dist/memory/git.d.ts +5 -1
- package/dist/memory/git.js +7 -3
- package/dist/memory/git.js.map +1 -1
- package/dist/opencode/plugin.d.ts +22 -0
- package/dist/opencode/plugin.js +135 -0
- package/dist/opencode/plugin.js.map +1 -0
- package/dist/pi/extension.d.ts +60 -0
- package/dist/pi/extension.js +414 -0
- package/dist/pi/extension.js.map +1 -0
- package/dist/proposals.d.ts +42 -0
- package/dist/proposals.js +179 -0
- package/dist/proposals.js.map +1 -0
- package/dist/recall-log.d.ts +21 -0
- package/dist/recall-log.js +24 -0
- package/dist/recall-log.js.map +1 -0
- package/dist/recall.d.ts +1 -1
- package/dist/service.d.ts +64 -0
- package/dist/service.js +213 -3
- package/dist/service.js.map +1 -1
- package/dist/types.d.ts +29 -5
- package/docs/FEATURES.md +141 -26
- package/integrations/claude/skills/augment-context/SKILL.md +74 -0
- package/integrations/claude/skills/augment-sleep/SKILL.md +26 -0
- package/integrations/pi/skills/augment-context/SKILL.md +59 -0
- package/package.json +38 -1
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@ Local RAG memory for coding agents.
|
|
|
4
4
|
|
|
5
5
|
## Quickstart
|
|
6
6
|
|
|
7
|
-
One
|
|
7
|
+
One package wires Augment into your agent. No clone, no build.
|
|
8
8
|
|
|
9
9
|
**Claude Code:**
|
|
10
10
|
|
|
@@ -18,16 +18,39 @@ npx -y @fingerskier/augment install claude --scope user --memory-root "C:\Users\
|
|
|
18
18
|
npx -y @fingerskier/augment install codex --scope user --memory-root "C:\Users\you\Dropbox\augment-memories"
|
|
19
19
|
```
|
|
20
20
|
|
|
21
|
+
**opencode:** add the plugin to `~/.config/opencode/opencode.json` or your repo's `opencode.json`:
|
|
22
|
+
|
|
23
|
+
```json
|
|
24
|
+
{
|
|
25
|
+
"$schema": "https://opencode.ai/config.json",
|
|
26
|
+
"plugin": [
|
|
27
|
+
[
|
|
28
|
+
"@fingerskier/augment",
|
|
29
|
+
{
|
|
30
|
+
"memoryRoot": "C:\\Users\\you\\Dropbox\\augment-memories"
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
]
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
21
37
|
**Both at once:**
|
|
22
38
|
|
|
23
39
|
```powershell
|
|
24
40
|
npx -y @fingerskier/augment install all --scope user --memory-root "C:\Users\you\Dropbox\augment-memories"
|
|
25
41
|
```
|
|
26
42
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
43
|
+
**Pi CLI:**
|
|
44
|
+
|
|
45
|
+
```powershell
|
|
46
|
+
pi install npm:@fingerskier/augment
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Restart the agent and the `augment` memory tools appear. For opencode, quit and
|
|
50
|
+
restart after saving config; config and plugins are loaded only at startup. Swap
|
|
51
|
+
`--scope user` (your home dir) for `--scope repo` to install Claude/Codex into
|
|
52
|
+
the current project. Add `--dry-run` to preview every file write first. Details:
|
|
53
|
+
[Install Agent Integrations](#install-agent-integrations) and [Pi Package](#pi-package).
|
|
31
54
|
|
|
32
55
|
## CLI Commands
|
|
33
56
|
|
|
@@ -212,9 +235,95 @@ Dogfooding instructions:
|
|
|
212
235
|
|
|
213
236
|
- Codex: [integrations/codex/SKILL.md](integrations/codex/SKILL.md)
|
|
214
237
|
- Claude: [integrations/claude/CLAUDE.md](integrations/claude/CLAUDE.md)
|
|
238
|
+
- Pi: [integrations/pi/skills/augment-context/SKILL.md](integrations/pi/skills/augment-context/SKILL.md)
|
|
239
|
+
|
|
240
|
+
## Pi Package
|
|
241
|
+
|
|
242
|
+
Augment ships as a first-class Pi package. Configure the shared memory root
|
|
243
|
+
first (for example with `AUGMENT_MEMORY_ROOT` or `~/.augment/config.json`; see
|
|
244
|
+
[Configure Memory](#configure-memory)), then install one of these ways.
|
|
245
|
+
|
|
246
|
+
Install globally for your Pi user settings (`~/.pi/agent/settings.json`):
|
|
247
|
+
|
|
248
|
+
```powershell
|
|
249
|
+
pi install npm:@fingerskier/augment
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
Install for just the current repository (`.pi/settings.json`, useful when the
|
|
253
|
+
team should share the package after trusting the project):
|
|
254
|
+
|
|
255
|
+
```powershell
|
|
256
|
+
pi install -l npm:@fingerskier/augment
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
Try it for one Pi run without changing settings:
|
|
260
|
+
|
|
261
|
+
```powershell
|
|
262
|
+
pi -e npm:@fingerskier/augment
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
While developing from this checkout, build first and load the local package path:
|
|
266
|
+
|
|
267
|
+
```powershell
|
|
268
|
+
npm run build
|
|
269
|
+
pi -e .
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
After installing, restart Pi or run `/reload`. The package manifest loads
|
|
273
|
+
`dist/pi/extension.js` and the Pi-specific `augment-context` skill. The extension
|
|
274
|
+
keeps Claude/Codex behavior unchanged, does **not** run `augment install`, and
|
|
275
|
+
adds namespaced Pi tools so it does not shadow built-ins like `read`:
|
|
276
|
+
|
|
277
|
+
- `augment_init_project`, `augment_list_projects`
|
|
278
|
+
- `augment_search`, `augment_project_context`, `augment_read_memory`
|
|
279
|
+
- `augment_upsert`, `augment_link`, `augment_list_links`, `augment_unlink`
|
|
280
|
+
- `augment_tally`, `augment_sleep_candidates`
|
|
281
|
+
- `augment_memory_insights`, `augment_memory_graph`
|
|
282
|
+
|
|
283
|
+
Pi slash commands:
|
|
284
|
+
|
|
285
|
+
- `/augment-context [query]` — inject Augment project context into the session.
|
|
286
|
+
- `/augment-persist [summary]` — ask the agent to persist completed work.
|
|
287
|
+
- `/augment-dashboard [--no-open]` — open or print the daemon dashboard URL.
|
|
288
|
+
- `/augment-tally [verdict] [--surface S] [--note ...]` — rate/show recall quality.
|
|
289
|
+
- `/augment-sleep` — review read-only sleep consolidation candidates.
|
|
290
|
+
|
|
291
|
+
A quick smoke test after install:
|
|
292
|
+
|
|
293
|
+
1. Run `/augment-context current project` and confirm an Augment context message appears.
|
|
294
|
+
2. Ask Pi to list available tools or inspect the prompt; `augment_read_memory`
|
|
295
|
+
should exist and the built-in `read` tool should still be present.
|
|
296
|
+
3. Run `/augment-dashboard --no-open` and confirm it prints a localhost dashboard URL.
|
|
297
|
+
|
|
298
|
+
By default the Pi extension injects task-level memory during `before_agent_start`
|
|
299
|
+
and warns after non-trivial turns to persist durable work. Tune with
|
|
300
|
+
`AUGMENT_PI_AUTO_CONTEXT=inject|reminder|off`,
|
|
301
|
+
`AUGMENT_PI_AUTO_PERSIST=reminder|followup|off`,
|
|
302
|
+
`AUGMENT_PI_CONTEXT_LIMIT`, and `AUGMENT_PI_CONTEXT_MAX_CHARS`. The first recall
|
|
303
|
+
may take a moment while the daemon starts or the embedding model cache warms; if
|
|
304
|
+
Augment shows `augment: offline`, verify `AUGMENT_MEMORY_ROOT` /
|
|
305
|
+
`AUGMENT_STATE_DIR` and run `/augment-dashboard --no-open` to force a daemon
|
|
306
|
+
connection.
|
|
215
307
|
|
|
216
308
|
## Install Agent Integrations
|
|
217
309
|
|
|
310
|
+
Use Augment as an opencode plugin by adding it to opencode config:
|
|
311
|
+
|
|
312
|
+
```json
|
|
313
|
+
{
|
|
314
|
+
"$schema": "https://opencode.ai/config.json",
|
|
315
|
+
"plugin": [
|
|
316
|
+
["@fingerskier/augment", { "memoryRoot": "C:\\Users\\you\\Dropbox\\augment-memories" }]
|
|
317
|
+
]
|
|
318
|
+
}
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
The opencode plugin registers the local `augment` MCP server, injects relevant
|
|
322
|
+
memory into each user message, and adds Augment workflow guidance to the system
|
|
323
|
+
prompt. It also honors `AUGMENT_MEMORY_ROOT` / `~/.augment/config.json`; the
|
|
324
|
+
`memoryRoot` plugin option is just the config-file equivalent. Restart opencode
|
|
325
|
+
after changing config.
|
|
326
|
+
|
|
218
327
|
Install the Codex plugin and marketplace entry:
|
|
219
328
|
|
|
220
329
|
```powershell
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,21 +1,24 @@
|
|
|
1
|
+
import { type InstallScope, type InstallTarget } from "./install.js";
|
|
1
2
|
import { type RecallOptions } from "./recall.js";
|
|
2
3
|
/** Endpoint the dashboard page needs to reach the daemon's API (loopback, no auth). */
|
|
3
4
|
export interface DashboardDaemon {
|
|
4
5
|
endpoint: string;
|
|
5
6
|
}
|
|
6
|
-
/** The slice of the daemon client the `tally` command needs. */
|
|
7
|
-
export interface TallyDaemon {
|
|
8
|
-
tally(input: unknown): Promise<unknown>;
|
|
9
|
-
tallySummary(): Promise<unknown>;
|
|
10
|
-
}
|
|
11
7
|
/** Injectable seams so `recall`/`hook`/`dashboard` are testable without touching the daemon, browser, or real stdin. */
|
|
12
8
|
export interface RunCliDeps {
|
|
13
9
|
recall?: (options: RecallOptions) => Promise<string>;
|
|
14
10
|
readStdin?: () => Promise<string>;
|
|
15
11
|
connectDashboardDaemon?: () => Promise<DashboardDaemon>;
|
|
16
12
|
openUrl?: (url: string) => Promise<void>;
|
|
17
|
-
connectTallyDaemon?: () => Promise<TallyDaemon>;
|
|
18
13
|
}
|
|
19
14
|
export declare function runCli(args: string[], deps?: RunCliDeps): Promise<void>;
|
|
20
15
|
/** Human-readable usage shown by `augment help`, `--help`, `-h`, and on unknown commands. */
|
|
21
16
|
export declare function helpText(): string;
|
|
17
|
+
export declare function parseInstallArgs(args: string[]): {
|
|
18
|
+
target: InstallTarget;
|
|
19
|
+
scope: InstallScope;
|
|
20
|
+
memoryRoot?: string;
|
|
21
|
+
dryRun?: boolean;
|
|
22
|
+
noPlugin?: boolean;
|
|
23
|
+
force?: boolean;
|
|
24
|
+
};
|
package/dist/cli.js
CHANGED
|
@@ -45,16 +45,6 @@ export async function runCli(args, deps = {}) {
|
|
|
45
45
|
}
|
|
46
46
|
return;
|
|
47
47
|
}
|
|
48
|
-
if (command === "tally") {
|
|
49
|
-
const parsed = parseTallyArgs(args.slice(1));
|
|
50
|
-
const client = await (deps.connectTallyDaemon ?? defaultConnectTallyDaemon)();
|
|
51
|
-
const result = parsed.verdict
|
|
52
|
-
? await client.tally(parsed)
|
|
53
|
-
: await client.tallySummary();
|
|
54
|
-
const text = result.text;
|
|
55
|
-
console.log(typeof text === "string" ? text : JSON.stringify(result, null, 2));
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
48
|
if (command === "hook") {
|
|
59
49
|
const event = args[1] ?? "";
|
|
60
50
|
const raw = await (deps.readStdin ?? readStdin)();
|
|
@@ -84,7 +74,6 @@ export function helpText() {
|
|
|
84
74
|
" install <target> Install an agent integration (see below).",
|
|
85
75
|
" dashboard Open the memory dashboard (project/memory graph + search + CRUD).",
|
|
86
76
|
" recall <query> Print memory recalled for a task (auto-injected by hooks).",
|
|
87
|
-
" tally [verdict] Record or show the Phase-2 dogfood tally (recall quality).",
|
|
88
77
|
" hook <event> Run a lifecycle hook over stdin JSON (host-wired; see below).",
|
|
89
78
|
" help Show this help (also --help, -h).",
|
|
90
79
|
"",
|
|
@@ -96,11 +85,6 @@ export function helpText() {
|
|
|
96
85
|
" augment recall \"<task text>\" [--project ORG/REPO] [--cwd PATH]",
|
|
97
86
|
" [--limit N] [--max-chars N] [--min-score F]",
|
|
98
87
|
"",
|
|
99
|
-
"TALLY (Phase-2 dogfood: rate what recall injected)",
|
|
100
|
-
" augment tally Print the running tally (target: 30 datapoints).",
|
|
101
|
-
" augment tally <helpful|harmless|harmful|correct-abstention>",
|
|
102
|
-
" [--surface S] [--note \"...\"] Record one datapoint.",
|
|
103
|
-
"",
|
|
104
88
|
"HOOK (wired into Claude Code / Codex by `install`; reads hook JSON on stdin)",
|
|
105
89
|
" augment hook session-start | user-prompt-submit | pre-tool-use | stop",
|
|
106
90
|
"",
|
|
@@ -112,6 +96,7 @@ export function helpText() {
|
|
|
112
96
|
" --memory-root PATH Set the shared memory root in the generated MCP config.",
|
|
113
97
|
" --dry-run Print what would change without writing files.",
|
|
114
98
|
" --no-plugin Skip the best-effort `claude plugin` registration (claude only).",
|
|
99
|
+
" --force Overwrite a differing memoryRoot in ~/.augment/config.json.",
|
|
115
100
|
"",
|
|
116
101
|
"RUN FROM npm (outside this repo)",
|
|
117
102
|
" npx -y @fingerskier/augment install claude --scope user --memory-root \"C:\\Users\\you\\Dropbox\\augment-memories\"",
|
|
@@ -175,31 +160,6 @@ function parseRecallArgs(args) {
|
|
|
175
160
|
options.query = queryParts.join(" ");
|
|
176
161
|
return options;
|
|
177
162
|
}
|
|
178
|
-
function parseTallyArgs(args) {
|
|
179
|
-
const result = {};
|
|
180
|
-
for (let index = 0; index < args.length; index += 1) {
|
|
181
|
-
const arg = args[index];
|
|
182
|
-
if (arg === "--surface") {
|
|
183
|
-
result.surface = required(args[++index], "--surface requires a value");
|
|
184
|
-
}
|
|
185
|
-
else if (arg === "--note") {
|
|
186
|
-
result.note = required(args[++index], "--note requires a value");
|
|
187
|
-
}
|
|
188
|
-
else if (arg.startsWith("--")) {
|
|
189
|
-
throw new Error(`Unknown tally option: ${arg}`);
|
|
190
|
-
}
|
|
191
|
-
else if (!result.verdict) {
|
|
192
|
-
result.verdict = arg;
|
|
193
|
-
}
|
|
194
|
-
else {
|
|
195
|
-
throw new Error(`Unknown tally option: ${arg}`);
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
return result;
|
|
199
|
-
}
|
|
200
|
-
async function defaultConnectTallyDaemon() {
|
|
201
|
-
return connectOrStartDaemon();
|
|
202
|
-
}
|
|
203
163
|
function required(value, message) {
|
|
204
164
|
if (!value) {
|
|
205
165
|
throw new Error(message);
|
|
@@ -221,15 +181,17 @@ async function readStdin() {
|
|
|
221
181
|
}
|
|
222
182
|
return Buffer.concat(chunks).toString("utf8");
|
|
223
183
|
}
|
|
224
|
-
function parseInstallArgs(args) {
|
|
184
|
+
export function parseInstallArgs(args) {
|
|
225
185
|
const target = args[0];
|
|
226
186
|
if (!target || !["codex", "claude", "all"].includes(target)) {
|
|
227
|
-
throw new Error("Usage: augment install <codex|claude|all> [--scope user|repo] [--memory-root PATH] [--dry-run]
|
|
187
|
+
throw new Error("Usage: augment install <codex|claude|all> [--scope user|repo] [--memory-root PATH] [--dry-run] " +
|
|
188
|
+
"[--no-plugin] [--force]");
|
|
228
189
|
}
|
|
229
190
|
let scope = "user";
|
|
230
191
|
let memoryRoot;
|
|
231
192
|
let dryRun = false;
|
|
232
193
|
let noPlugin = false;
|
|
194
|
+
let force = false;
|
|
233
195
|
for (let index = 1; index < args.length; index += 1) {
|
|
234
196
|
const arg = args[index];
|
|
235
197
|
if (arg === "--scope") {
|
|
@@ -251,6 +213,9 @@ function parseInstallArgs(args) {
|
|
|
251
213
|
else if (arg === "--no-plugin") {
|
|
252
214
|
noPlugin = true;
|
|
253
215
|
}
|
|
216
|
+
else if (arg === "--force") {
|
|
217
|
+
force = true;
|
|
218
|
+
}
|
|
254
219
|
else {
|
|
255
220
|
throw new Error(`Unknown install option: ${arg}`);
|
|
256
221
|
}
|
|
@@ -261,6 +226,7 @@ function parseInstallArgs(args) {
|
|
|
261
226
|
memoryRoot,
|
|
262
227
|
dryRun,
|
|
263
228
|
noPlugin,
|
|
229
|
+
force,
|
|
264
230
|
};
|
|
265
231
|
}
|
|
266
232
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAyC,MAAM,cAAc,CAAC;AAC9G,OAAO,EAAE,MAAM,IAAI,aAAa,EAAsB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -10,5 +10,7 @@ export interface AugmentConfig {
|
|
|
10
10
|
*/
|
|
11
11
|
gitAutocommit?: boolean;
|
|
12
12
|
}
|
|
13
|
+
/** Resolves a config-file path value the same way for every entrypoint: expand a leading `~`, then absolutize. */
|
|
14
|
+
export declare function absolutePath(value: string): string;
|
|
13
15
|
export declare function loadConfig(): Promise<AugmentConfig>;
|
|
14
16
|
export declare function ensureConfigDirs(config: AugmentConfig): Promise<void>;
|
package/dist/config.js
CHANGED
|
@@ -10,7 +10,8 @@ function expandHome(value) {
|
|
|
10
10
|
}
|
|
11
11
|
return value;
|
|
12
12
|
}
|
|
13
|
-
|
|
13
|
+
/** Resolves a config-file path value the same way for every entrypoint: expand a leading `~`, then absolutize. */
|
|
14
|
+
export function absolutePath(value) {
|
|
14
15
|
return path.resolve(expandHome(value));
|
|
15
16
|
}
|
|
16
17
|
async function readConfigFile(configPath) {
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAsB7B,SAAS,UAAU,CAAC,KAAa;IAC/B,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;QAClB,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.d.ts
CHANGED
package/dist/constants.js
CHANGED
|
@@ -54,4 +54,11 @@ export const SLEEP_MIN_COSINE = 0.75;
|
|
|
54
54
|
// wrote them may still be appending related notes. Days, by updated_at.
|
|
55
55
|
export const SLEEP_MIN_AGE_DAYS = 3;
|
|
56
56
|
export const SLEEP_MAX_CLUSTERS = 20;
|
|
57
|
+
// Multiplier applied to an archived memory's blended search score (search()
|
|
58
|
+
// in service.ts, after the blend, before the relevance floor). Consolidation
|
|
59
|
+
// already carried the durable content forward; the source stays reachable
|
|
60
|
+
// for audit, at half weight -- user decision 2026-07-10: down-weight, don't
|
|
61
|
+
// exclude. Sleep candidacy, by contrast, excludes archived memories outright
|
|
62
|
+
// (a consolidated source shouldn't be re-consolidated).
|
|
63
|
+
export const ARCHIVED_SEARCH_WEIGHT = 0.5;
|
|
57
64
|
//# sourceMappingURL=constants.js.map
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,sBAAsB,CAAC;AACnD,MAAM,CAAC,MAAM,+BAA+B,GAAG,KAAK,CAAC;AACrD,MAAM,CAAC,MAAM,+BAA+B,GAAG,MAAM,CAAC;AACtD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AACtC,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAC/C,6EAA6E;AAC7E,0EAA0E;AAC1E,uEAAuE;AACvE,4EAA4E;AAC5E,8EAA8E;AAC9E,+DAA+D;AAC/D,8EAA8E;AAC9E,2EAA2E;AAC3E,6EAA6E;AAC7E,sEAAsE;AACtE,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAE5C,gFAAgF;AAChF,6EAA6E;AAC7E,mEAAmE;AACnE,wDAAwD;AACxD,qCAAqC;AACrC,qCAAqC;AACrC,oDAAoD;AACpD,+EAA+E;AAC/E,+EAA+E;AAC/E,iFAAiF;AACjF,iFAAiF;AACjF,8BAA8B;AAC9B,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAC7C,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAEzC,MAAM,CAAC,MAAM,kBAAkB,GAAG,0BAA0B,CAAC;AAC7D,2EAA2E;AAC3E,gFAAgF;AAChF,+EAA+E;AAC/E,4EAA4E;AAC5E,2EAA2E;AAC3E,0EAA0E;AAC1E,0EAA0E;AAC1E,cAAc;AACd,MAAM,CAAC,MAAM,qBAAqB,GAAG,0CAA0C,CAAC;AAChF,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAExC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAU,CAAC;AAG/E,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,CAAU,CAAC;AAG/F,6EAA6E;AAC7E,+EAA+E;AAC/E,+EAA+E;AAC/E,2EAA2E;AAC3E,6EAA6E;AAC7E,yEAAyE;AACzE,4EAA4E;AAC5E,wCAAwC;AACxC,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AACrC,yEAAyE;AACzE,wEAAwE;AACxE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AACpC,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,sBAAsB,CAAC;AACnD,MAAM,CAAC,MAAM,+BAA+B,GAAG,KAAK,CAAC;AACrD,MAAM,CAAC,MAAM,+BAA+B,GAAG,MAAM,CAAC;AACtD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AACtC,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAC/C,6EAA6E;AAC7E,0EAA0E;AAC1E,uEAAuE;AACvE,4EAA4E;AAC5E,8EAA8E;AAC9E,+DAA+D;AAC/D,8EAA8E;AAC9E,2EAA2E;AAC3E,6EAA6E;AAC7E,sEAAsE;AACtE,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAE5C,gFAAgF;AAChF,6EAA6E;AAC7E,mEAAmE;AACnE,wDAAwD;AACxD,qCAAqC;AACrC,qCAAqC;AACrC,oDAAoD;AACpD,+EAA+E;AAC/E,+EAA+E;AAC/E,iFAAiF;AACjF,iFAAiF;AACjF,8BAA8B;AAC9B,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAC7C,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAEzC,MAAM,CAAC,MAAM,kBAAkB,GAAG,0BAA0B,CAAC;AAC7D,2EAA2E;AAC3E,gFAAgF;AAChF,+EAA+E;AAC/E,4EAA4E;AAC5E,2EAA2E;AAC3E,0EAA0E;AAC1E,0EAA0E;AAC1E,cAAc;AACd,MAAM,CAAC,MAAM,qBAAqB,GAAG,0CAA0C,CAAC;AAChF,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAExC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAU,CAAC;AAG/E,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,CAAU,CAAC;AAG/F,6EAA6E;AAC7E,+EAA+E;AAC/E,+EAA+E;AAC/E,2EAA2E;AAC3E,6EAA6E;AAC7E,yEAAyE;AACzE,4EAA4E;AAC5E,wCAAwC;AACxC,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AACrC,yEAAyE;AACzE,wEAAwE;AACxE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AACpC,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AACrC,4EAA4E;AAC5E,6EAA6E;AAC7E,0EAA0E;AAC1E,4EAA4E;AAC5E,6EAA6E;AAC7E,wDAAwD;AACxD,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC"}
|
package/dist/daemon/client.d.ts
CHANGED
|
@@ -12,9 +12,11 @@ export declare class DaemonClient {
|
|
|
12
12
|
link(input: unknown): Promise<unknown>;
|
|
13
13
|
listLinks(memoryId: number): Promise<unknown>;
|
|
14
14
|
unlink(id: number): Promise<unknown>;
|
|
15
|
-
tally(input: unknown): Promise<unknown>;
|
|
16
15
|
sleepCandidates(input: unknown): Promise<unknown>;
|
|
17
|
-
|
|
16
|
+
sleepPropose(input: unknown): Promise<unknown>;
|
|
17
|
+
sleepProposals(status?: string): Promise<unknown>;
|
|
18
|
+
sleepApply(input: unknown): Promise<unknown>;
|
|
19
|
+
sleepReject(input: unknown): Promise<unknown>;
|
|
18
20
|
projectGraph(projectId: number): Promise<unknown>;
|
|
19
21
|
private get;
|
|
20
22
|
private post;
|
package/dist/daemon/client.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
2
|
import { constants } from "node:fs";
|
|
3
|
-
import { open, readFile, rm, writeFile } from "node:fs/promises";
|
|
3
|
+
import { open, readFile, realpath, rm, writeFile } from "node:fs/promises";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import { fileURLToPath } from "node:url";
|
|
6
6
|
import { ensureConfigDirs, loadConfig } from "../config.js";
|
|
7
|
+
import { canonicalizeStateDir } from "./lifetime-lock.js";
|
|
7
8
|
export class DaemonClient {
|
|
8
9
|
info;
|
|
9
10
|
constructor(info) {
|
|
@@ -37,14 +38,21 @@ export class DaemonClient {
|
|
|
37
38
|
async unlink(id) {
|
|
38
39
|
return this.delete(`/links/${id}`);
|
|
39
40
|
}
|
|
40
|
-
async tally(input) {
|
|
41
|
-
return this.post("/tally", input);
|
|
42
|
-
}
|
|
43
41
|
async sleepCandidates(input) {
|
|
44
42
|
return this.post("/sleep/candidates", input);
|
|
45
43
|
}
|
|
46
|
-
async
|
|
47
|
-
return this.
|
|
44
|
+
async sleepPropose(input) {
|
|
45
|
+
return this.post("/sleep/propose", input);
|
|
46
|
+
}
|
|
47
|
+
async sleepProposals(status) {
|
|
48
|
+
const suffix = status ? `?status=${encodeURIComponent(status)}` : "";
|
|
49
|
+
return this.get(`/sleep/proposals${suffix}`);
|
|
50
|
+
}
|
|
51
|
+
async sleepApply(input) {
|
|
52
|
+
return this.post("/sleep/apply", input);
|
|
53
|
+
}
|
|
54
|
+
async sleepReject(input) {
|
|
55
|
+
return this.post("/sleep/reject", input);
|
|
48
56
|
}
|
|
49
57
|
async projectGraph(projectId) {
|
|
50
58
|
return this.get(`/projects/${encodeURIComponent(String(projectId))}/graph`);
|
|
@@ -103,13 +111,9 @@ export async function readDaemonInfo(config) {
|
|
|
103
111
|
}
|
|
104
112
|
}
|
|
105
113
|
export async function isDaemonHealthy(info, config) {
|
|
106
|
-
// Ownership is authoritative on stateDir, NOT memoryRoot
|
|
107
|
-
//
|
|
108
|
-
|
|
109
|
-
// old check on memoryRoot let a divergent-root session declare the healthy owner
|
|
110
|
-
// "not mine" and spawn a second daemon on the shared index.db → SQLITE_BUSY.
|
|
111
|
-
// Lenient on info.stateDir being absent (pre-upgrade daemon.json / test stubs).
|
|
112
|
-
if (info.stateDir !== undefined && info.stateDir !== config.stateDir) {
|
|
114
|
+
// Ownership is authoritative on stateDir, NOT memoryRoot. Compare canonical
|
|
115
|
+
// paths so symlink and `..` aliases attach to the same daemon owner.
|
|
116
|
+
if (info.stateDir !== undefined && !(await stateDirsMatch(info.stateDir, config))) {
|
|
113
117
|
return false;
|
|
114
118
|
}
|
|
115
119
|
try {
|
|
@@ -119,7 +123,19 @@ export async function isDaemonHealthy(info, config) {
|
|
|
119
123
|
}
|
|
120
124
|
const body = (await response.json().catch(() => undefined));
|
|
121
125
|
// Confirm over the wire when the daemon reports it; stay lenient when it doesn't.
|
|
122
|
-
return typeof body?.stateDir !== "string" || body.stateDir
|
|
126
|
+
return typeof body?.stateDir !== "string" || (await stateDirsMatch(body.stateDir, config));
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
async function stateDirsMatch(reportedStateDir, config) {
|
|
133
|
+
const canonicalConfigStateDir = await canonicalizeStateDir(config.stateDir);
|
|
134
|
+
if (reportedStateDir === config.stateDir || reportedStateDir === canonicalConfigStateDir) {
|
|
135
|
+
return true;
|
|
136
|
+
}
|
|
137
|
+
try {
|
|
138
|
+
return (await realpath(reportedStateDir)) === canonicalConfigStateDir;
|
|
123
139
|
}
|
|
124
140
|
catch {
|
|
125
141
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/daemon/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/daemon/client.ts"],"names":[],"mappings":"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"}
|