@fingerskier/augment 0.2.1 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +136 -7
- package/dist/config.d.ts +5 -0
- package/dist/config.js +12 -0
- package/dist/config.js.map +1 -1
- package/dist/daemon/client.d.ts +1 -0
- package/dist/daemon/client.js +41 -3
- package/dist/daemon/client.js.map +1 -1
- package/dist/daemon/http.d.ts +5 -0
- package/dist/daemon/http.js +68 -19
- 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/daemon/single-instance.d.ts +1 -1
- package/dist/daemon/single-instance.js +2 -2
- package/dist/daemon/single-instance.js.map +1 -1
- package/dist/db.d.ts +8 -1
- package/dist/db.js +29 -3
- package/dist/db.js.map +1 -1
- package/dist/mcp/apps.d.ts +44 -0
- package/dist/mcp/apps.js +578 -0
- package/dist/mcp/apps.js.map +1 -0
- package/dist/mcp/insights.d.ts +91 -0
- package/dist/mcp/insights.js +175 -0
- package/dist/mcp/insights.js.map +1 -0
- package/dist/mcp/server.d.ts +2 -0
- package/dist/mcp/server.js +166 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/memory/git.d.ts +31 -0
- package/dist/memory/git.js +125 -0
- package/dist/memory/git.js.map +1 -0
- 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 +58 -0
- package/dist/pi/extension.js +432 -0
- package/dist/pi/extension.js.map +1 -0
- package/dist/service.d.ts +1 -0
- package/dist/service.js +9 -0
- package/dist/service.js.map +1 -1
- package/dist/types.d.ts +6 -0
- package/docs/FEATURES.md +138 -1
- package/integrations/codex/SKILL.md +8 -0
- package/integrations/examples/claude-mcp-config.json +17 -17
- package/integrations/examples/codex-mcp-config.json +17 -17
- package/integrations/pi/skills/augment-context/SKILL.md +59 -0
- package/package.json +41 -4
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
|
|
|
@@ -117,8 +140,10 @@ Defaults:
|
|
|
117
140
|
- Memory root: `~/.augment/memories`
|
|
118
141
|
- State directory: `~/.augment/state`
|
|
119
142
|
|
|
120
|
-
Also honored: `AUGMENT_STATE_DIR` (state directory)
|
|
121
|
-
(fixed daemon port; the default is dynamic)
|
|
143
|
+
Also honored: `AUGMENT_STATE_DIR` (state directory), `AUGMENT_DAEMON_PORT`
|
|
144
|
+
(fixed daemon port; the default is dynamic), and `AUGMENT_GIT_AUTOCOMMIT` (set
|
|
145
|
+
`0` to disable auto-committing memory writes when the memory root is a git repo;
|
|
146
|
+
on by default). Full resolution order and defaults:
|
|
122
147
|
[docs/FEATURES.md](docs/FEATURES.md#configuration).
|
|
123
148
|
|
|
124
149
|
## Run Locally
|
|
@@ -210,9 +235,95 @@ Dogfooding instructions:
|
|
|
210
235
|
|
|
211
236
|
- Codex: [integrations/codex/SKILL.md](integrations/codex/SKILL.md)
|
|
212
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.
|
|
213
307
|
|
|
214
308
|
## Install Agent Integrations
|
|
215
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
|
+
|
|
216
327
|
Install the Codex plugin and marketplace entry:
|
|
217
328
|
|
|
218
329
|
```powershell
|
|
@@ -305,6 +416,24 @@ auth — anyone who needs to expose it beyond localhost should front it with the
|
|
|
305
416
|
own gateway. Developing inside this repo, use `node .\dist\bin\augment.js
|
|
306
417
|
dashboard` after `npm run build`.
|
|
307
418
|
|
|
419
|
+
### Dashboard snippets in chat (MCP Apps)
|
|
420
|
+
|
|
421
|
+
Hosts that support the [MCP Apps extension](https://github.com/modelcontextprotocol/ext-apps)
|
|
422
|
+
(SEP-1865: Claude.ai / Claude Desktop, ChatGPT, Goose, VS Code, …) can render
|
|
423
|
+
augment's dashboard snippets inline in the conversation. When a user asks for
|
|
424
|
+
memory insights, the agent can call:
|
|
425
|
+
|
|
426
|
+
- `memory_insights` — an interactive stats snippet: memories by kind, links by
|
|
427
|
+
type, top tags, 12-week activity, most-connected memories, and the
|
|
428
|
+
recall-quality tally.
|
|
429
|
+
- `memory_graph` — an interactive Cytoscape view of the project's memory graph.
|
|
430
|
+
|
|
431
|
+
Both tools degrade to a plain-text summary in hosts without MCP Apps support
|
|
432
|
+
(the graph's node/edge payload is withheld there so it never burns model
|
|
433
|
+
context). Older MCP-UI hosts that render embedded `ui://` HTML blocks but never
|
|
434
|
+
negotiate the extension can opt in with `AUGMENT_MCP_UI_EMBED=1` in the MCP
|
|
435
|
+
server's environment.
|
|
436
|
+
|
|
308
437
|
## Package Check
|
|
309
438
|
|
|
310
439
|
Before publishing:
|
package/dist/config.d.ts
CHANGED
|
@@ -4,6 +4,11 @@ export interface AugmentConfig {
|
|
|
4
4
|
databasePath: string;
|
|
5
5
|
daemonFile: string;
|
|
6
6
|
daemonPort?: number;
|
|
7
|
+
/**
|
|
8
|
+
* When the memory root is a git repo, auto-commit augment's own writes. Default
|
|
9
|
+
* on; consumers read it as `gitAutocommit !== false` so an omitted field means on.
|
|
10
|
+
*/
|
|
11
|
+
gitAutocommit?: boolean;
|
|
7
12
|
}
|
|
8
13
|
export declare function loadConfig(): Promise<AugmentConfig>;
|
|
9
14
|
export declare function ensureConfigDirs(config: AugmentConfig): Promise<void>;
|
package/dist/config.js
CHANGED
|
@@ -26,6 +26,16 @@ async function readConfigFile(configPath) {
|
|
|
26
26
|
throw error;
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Parse a default-ON boolean env var: unset -> undefined (defer to config/default),
|
|
31
|
+
* an explicit falsey token -> false, anything else -> true.
|
|
32
|
+
*/
|
|
33
|
+
function parseFlag(value) {
|
|
34
|
+
if (value === undefined) {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
return !/^(0|false|no|off)$/i.test(value.trim());
|
|
38
|
+
}
|
|
29
39
|
function parseOptionalPort(value) {
|
|
30
40
|
if (!value) {
|
|
31
41
|
return undefined;
|
|
@@ -42,12 +52,14 @@ export async function loadConfig() {
|
|
|
42
52
|
const memoryRoot = absolutePath(process.env.AUGMENT_MEMORY_ROOT ?? fileConfig.memoryRoot ?? "~/.augment/memories");
|
|
43
53
|
const stateDir = absolutePath(process.env.AUGMENT_STATE_DIR ?? fileConfig.stateDir ?? "~/.augment/state");
|
|
44
54
|
const daemonPort = parseOptionalPort(process.env.AUGMENT_DAEMON_PORT) ?? fileConfig.daemonPort;
|
|
55
|
+
const gitAutocommit = parseFlag(process.env.AUGMENT_GIT_AUTOCOMMIT) ?? fileConfig.gitAutocommit ?? true;
|
|
45
56
|
return {
|
|
46
57
|
memoryRoot,
|
|
47
58
|
stateDir,
|
|
48
59
|
databasePath: path.join(stateDir, "index.db"),
|
|
49
60
|
daemonFile: path.join(stateDir, "daemon.json"),
|
|
50
61
|
daemonPort,
|
|
62
|
+
gitAutocommit,
|
|
51
63
|
};
|
|
52
64
|
}
|
|
53
65
|
export async function ensureConfigDirs(config) {
|
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;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/daemon/client.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ export declare class DaemonClient {
|
|
|
15
15
|
tally(input: unknown): Promise<unknown>;
|
|
16
16
|
sleepCandidates(input: unknown): Promise<unknown>;
|
|
17
17
|
tallySummary(): Promise<unknown>;
|
|
18
|
+
projectGraph(projectId: number): Promise<unknown>;
|
|
18
19
|
private get;
|
|
19
20
|
private post;
|
|
20
21
|
private delete;
|
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) {
|
|
@@ -46,6 +47,9 @@ export class DaemonClient {
|
|
|
46
47
|
async tallySummary() {
|
|
47
48
|
return this.get("/tally");
|
|
48
49
|
}
|
|
50
|
+
async projectGraph(projectId) {
|
|
51
|
+
return this.get(`/projects/${encodeURIComponent(String(projectId))}/graph`);
|
|
52
|
+
}
|
|
49
53
|
async get(pathname) {
|
|
50
54
|
return this.request("GET", pathname);
|
|
51
55
|
}
|
|
@@ -73,6 +77,7 @@ export async function connectOrStartDaemon(config) {
|
|
|
73
77
|
await ensureConfigDirs(config);
|
|
74
78
|
const existing = await readDaemonInfo(config);
|
|
75
79
|
if (existing && (await isDaemonHealthy(existing, config))) {
|
|
80
|
+
warnIfMemoryRootDiverges(existing, config);
|
|
76
81
|
return new DaemonClient(existing);
|
|
77
82
|
}
|
|
78
83
|
await withDaemonLock(config, async () => {
|
|
@@ -87,6 +92,7 @@ export async function connectOrStartDaemon(config) {
|
|
|
87
92
|
if (!info || !(await isDaemonHealthy(info, config))) {
|
|
88
93
|
throw new Error("Failed to start augment daemon");
|
|
89
94
|
}
|
|
95
|
+
warnIfMemoryRootDiverges(info, config);
|
|
90
96
|
return new DaemonClient(info);
|
|
91
97
|
}
|
|
92
98
|
export async function readDaemonInfo(config) {
|
|
@@ -98,17 +104,49 @@ export async function readDaemonInfo(config) {
|
|
|
98
104
|
}
|
|
99
105
|
}
|
|
100
106
|
export async function isDaemonHealthy(info, config) {
|
|
101
|
-
|
|
107
|
+
// Ownership is authoritative on stateDir, NOT memoryRoot. Compare canonical
|
|
108
|
+
// paths so symlink and `..` aliases attach to the same daemon owner.
|
|
109
|
+
if (info.stateDir !== undefined && !(await stateDirsMatch(info.stateDir, config))) {
|
|
102
110
|
return false;
|
|
103
111
|
}
|
|
104
112
|
try {
|
|
105
113
|
const response = await fetch(new URL("/health", info.endpoint), { signal: AbortSignal.timeout(1_000) });
|
|
106
|
-
|
|
114
|
+
if (!response.ok) {
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
const body = (await response.json().catch(() => undefined));
|
|
118
|
+
// Confirm over the wire when the daemon reports it; stay lenient when it doesn't.
|
|
119
|
+
return typeof body?.stateDir !== "string" || (await stateDirsMatch(body.stateDir, config));
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
async function stateDirsMatch(reportedStateDir, config) {
|
|
126
|
+
const canonicalConfigStateDir = await canonicalizeStateDir(config.stateDir);
|
|
127
|
+
if (reportedStateDir === config.stateDir || reportedStateDir === canonicalConfigStateDir) {
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
try {
|
|
131
|
+
return (await realpath(reportedStateDir)) === canonicalConfigStateDir;
|
|
107
132
|
}
|
|
108
133
|
catch {
|
|
109
134
|
return false;
|
|
110
135
|
}
|
|
111
136
|
}
|
|
137
|
+
/**
|
|
138
|
+
* One global store per stateDir, projects partitioned by name — a divergent
|
|
139
|
+
* memoryRoot is always a misconfiguration, never a legitimate second corpus. When
|
|
140
|
+
* we reuse a healthy owner that serves a different root, surface it loudly rather
|
|
141
|
+
* than silently ignoring the requested root.
|
|
142
|
+
*/
|
|
143
|
+
function warnIfMemoryRootDiverges(info, config) {
|
|
144
|
+
if (info.memoryRoot !== config.memoryRoot) {
|
|
145
|
+
console.warn(`augment: asked for memoryRoot ${config.memoryRoot}, but the daemon owning this ` +
|
|
146
|
+
`state dir serves ${info.memoryRoot}; one global store per state dir, so the ` +
|
|
147
|
+
`divergent root is ignored. Set AUGMENT_MEMORY_ROOT/AUGMENT_STATE_DIR to match.`);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
112
150
|
async function waitForDaemon(config) {
|
|
113
151
|
const deadline = Date.now() + 15_000;
|
|
114
152
|
while (Date.now() < deadline) {
|
|
@@ -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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"}
|
package/dist/daemon/http.d.ts
CHANGED
|
@@ -4,5 +4,10 @@ import type { DaemonInfo } from "../types.js";
|
|
|
4
4
|
export interface RunningDaemon {
|
|
5
5
|
info: DaemonInfo;
|
|
6
6
|
close(): Promise<void>;
|
|
7
|
+
/**
|
|
8
|
+
* Present only when git auto-commit is active (flag on and memoryRoot is a git
|
|
9
|
+
* root); resolves once no snapshot commit is pending or in flight. For tests.
|
|
10
|
+
*/
|
|
11
|
+
commitIdle?(): Promise<void>;
|
|
7
12
|
}
|
|
8
13
|
export declare function startHttpDaemon(config: AugmentConfig, service: AugmentService): Promise<RunningDaemon>;
|
package/dist/daemon/http.js
CHANGED
|
@@ -6,27 +6,46 @@ import { EMBEDDING_MODEL_ID } from "../constants.js";
|
|
|
6
6
|
import { cytoscapeBundleJs, dashboardAsset } from "../dashboard/assets.js";
|
|
7
7
|
import { ensureConfigDirs } from "../config.js";
|
|
8
8
|
import { appendTallyEvent, appendTallyRating, isTallyVerdict, readTallyRatings, renderTallySummary, summarizeTally, TALLY_VERDICTS, } from "../tally.js";
|
|
9
|
+
import { createGitCommitter, isMemoryRootGitRoot } from "../memory/git.js";
|
|
9
10
|
import { createIndexScheduler } from "./scheduler.js";
|
|
10
11
|
import { acquireSingleInstance } from "./single-instance.js";
|
|
12
|
+
import { acquireDaemonLifetimeLock, canonicalizeStateDir } from "./lifetime-lock.js";
|
|
11
13
|
export async function startHttpDaemon(config, service) {
|
|
12
14
|
// The daemon file and watcher need the state/memory dirs before the (now
|
|
13
15
|
// backgrounded) initial index gets a chance to create them.
|
|
14
16
|
await ensureConfigDirs(config);
|
|
15
|
-
// Single-instance guard: refuse to start if a healthy daemon already owns this
|
|
16
|
-
// state dir, so two daemons never co-open the sqlite index (SQLITE_BUSY). The
|
|
17
|
-
// db handle is lazy, so throwing here means the duplicate never touches it.
|
|
18
|
-
const instanceLock = await acquireSingleInstance(config);
|
|
19
17
|
// Everything past the slot claim runs under one guard: any startup failure
|
|
20
|
-
// (bind error, daemon.json write, watcher wiring) must release
|
|
21
|
-
//
|
|
22
|
-
|
|
18
|
+
// (pidfile check, bind error, daemon.json write, watcher wiring) must release
|
|
19
|
+
// both the startup metadata slot and the lifetime writer lock.
|
|
20
|
+
let instanceLock;
|
|
21
|
+
let lifetimeLock;
|
|
22
|
+
let initPromise;
|
|
23
23
|
let server;
|
|
24
|
+
let committer;
|
|
25
|
+
// Auto-commit augment's own writes when (and only when) the flag is on and the
|
|
26
|
+
// memory root is itself a git worktree root. Decided once at startup; toggling
|
|
27
|
+
// the env var or `git init`-ing the root later needs a daemon restart. Off by a
|
|
28
|
+
// non-git root or an explicit AUGMENT_GIT_AUTOCOMMIT=0, never breaks a write.
|
|
24
29
|
try {
|
|
30
|
+
const canonicalStateDir = await canonicalizeStateDir(config.stateDir);
|
|
31
|
+
setStateDir(config, canonicalStateDir);
|
|
32
|
+
service.useStateDir(canonicalStateDir);
|
|
33
|
+
// Startup metadata guard: health + daemon.pid still coordinate discovery and
|
|
34
|
+
// the cold-start window. The lifetime lock below is the DB writer-owner check
|
|
35
|
+
// and is acquired before service.init() can open index.db.
|
|
36
|
+
instanceLock = await acquireSingleInstance(config);
|
|
37
|
+
lifetimeLock = await acquireDaemonLifetimeLock(config.stateDir);
|
|
38
|
+
const daemonLifetimeLock = lifetimeLock;
|
|
39
|
+
committer =
|
|
40
|
+
config.gitAutocommit !== false && (await isMemoryRootGitRoot(config.memoryRoot))
|
|
41
|
+
? createGitCommitter(config.memoryRoot)
|
|
42
|
+
: undefined;
|
|
43
|
+
const scheduleCommit = () => committer?.notify();
|
|
25
44
|
// Listen first, index in the background: on a cold corpus the initial index
|
|
26
45
|
// can take minutes of embedding, and clients (hooks especially) must not time
|
|
27
46
|
// out against an unbound port. /index/status reports readiness.
|
|
28
47
|
const indexState = { ready: false };
|
|
29
|
-
|
|
48
|
+
initPromise = service
|
|
30
49
|
.init()
|
|
31
50
|
.then(() => {
|
|
32
51
|
indexState.ready = true;
|
|
@@ -36,7 +55,7 @@ export async function startHttpDaemon(config, service) {
|
|
|
36
55
|
console.error("augment: initial index failed:", error);
|
|
37
56
|
});
|
|
38
57
|
server = http.createServer((request, response) => {
|
|
39
|
-
handleRequest(service, indexState, config, request, response).catch((error) => {
|
|
58
|
+
handleRequest(service, indexState, config, daemonLifetimeLock.stateDir, request, response, scheduleCommit).catch((error) => {
|
|
40
59
|
sendJson(response, 500, { error: errorMessage(error) });
|
|
41
60
|
});
|
|
42
61
|
});
|
|
@@ -56,6 +75,7 @@ export async function startHttpDaemon(config, service) {
|
|
|
56
75
|
const info = {
|
|
57
76
|
pid: process.pid,
|
|
58
77
|
endpoint: `http://127.0.0.1:${address.port}`,
|
|
78
|
+
stateDir: daemonLifetimeLock.stateDir,
|
|
59
79
|
memoryRoot: config.memoryRoot,
|
|
60
80
|
model: EMBEDDING_MODEL_ID,
|
|
61
81
|
startedAt: new Date().toISOString(),
|
|
@@ -88,37 +108,58 @@ export async function startHttpDaemon(config, service) {
|
|
|
88
108
|
watcher.on("add", onWatchEvent);
|
|
89
109
|
watcher.on("change", onWatchEvent);
|
|
90
110
|
watcher.on("unlink", onWatchEvent);
|
|
111
|
+
const daemonCommitter = committer;
|
|
91
112
|
return {
|
|
92
113
|
info,
|
|
114
|
+
...(daemonCommitter ? { commitIdle: () => daemonCommitter.idle() } : {}),
|
|
93
115
|
async close() {
|
|
94
|
-
// Release
|
|
95
|
-
// server close can't strand the pidfile.
|
|
116
|
+
// Release both daemon-owned claims no matter how teardown goes.
|
|
96
117
|
try {
|
|
97
118
|
await watcher.close();
|
|
98
119
|
await scheduler.close();
|
|
120
|
+
await daemonCommitter?.close();
|
|
99
121
|
await initPromise;
|
|
100
122
|
await new Promise((resolve, reject) => {
|
|
101
123
|
boundServer.close((error) => (error ? reject(error) : resolve()));
|
|
102
124
|
});
|
|
103
125
|
}
|
|
104
126
|
finally {
|
|
105
|
-
|
|
127
|
+
try {
|
|
128
|
+
await daemonLifetimeLock.release();
|
|
129
|
+
}
|
|
130
|
+
finally {
|
|
131
|
+
await instanceLock?.release();
|
|
132
|
+
}
|
|
106
133
|
}
|
|
107
134
|
},
|
|
108
135
|
};
|
|
109
136
|
}
|
|
110
137
|
catch (error) {
|
|
111
|
-
await
|
|
138
|
+
await committer?.close().catch(() => { });
|
|
112
139
|
if (server) {
|
|
113
140
|
await new Promise((resolve) => server.close(() => resolve()));
|
|
114
141
|
}
|
|
142
|
+
await initPromise?.catch(() => { });
|
|
143
|
+
try {
|
|
144
|
+
await lifetimeLock?.release().catch(() => { });
|
|
145
|
+
}
|
|
146
|
+
finally {
|
|
147
|
+
await instanceLock?.release().catch(() => { });
|
|
148
|
+
}
|
|
115
149
|
throw error;
|
|
116
150
|
}
|
|
117
151
|
}
|
|
118
|
-
|
|
152
|
+
function setStateDir(config, stateDir) {
|
|
153
|
+
config.stateDir = stateDir;
|
|
154
|
+
config.databasePath = path.join(stateDir, "index.db");
|
|
155
|
+
config.daemonFile = path.join(stateDir, "daemon.json");
|
|
156
|
+
}
|
|
157
|
+
async function handleRequest(service, indexState, config, lockOwnerStateDir, request, response, scheduleCommit) {
|
|
119
158
|
const url = new URL(request.url ?? "/", "http://127.0.0.1");
|
|
120
159
|
if (request.method === "GET" && url.pathname === "/health") {
|
|
121
|
-
|
|
160
|
+
// stateDir lets a client confirm over the wire which canonical stateDir this
|
|
161
|
+
// live daemon locked.
|
|
162
|
+
sendJson(response, 200, { ok: true, pid: process.pid, title: process.title, stateDir: lockOwnerStateDir });
|
|
122
163
|
return;
|
|
123
164
|
}
|
|
124
165
|
// The daemon binds 127.0.0.1 only, so every route — UI shell and data alike —
|
|
@@ -182,7 +223,9 @@ async function handleRequest(service, indexState, config, request, response) {
|
|
|
182
223
|
return;
|
|
183
224
|
}
|
|
184
225
|
if (request.method === "POST" && url.pathname === "/memories/upsert") {
|
|
185
|
-
|
|
226
|
+
const result = await service.upsert(await readJson(request));
|
|
227
|
+
scheduleCommit();
|
|
228
|
+
sendJson(response, 200, result);
|
|
186
229
|
return;
|
|
187
230
|
}
|
|
188
231
|
const memoryMatch = /^\/memories\/(\d+)$/.exec(url.pathname);
|
|
@@ -191,12 +234,16 @@ async function handleRequest(service, indexState, config, request, response) {
|
|
|
191
234
|
return;
|
|
192
235
|
}
|
|
193
236
|
if (request.method === "DELETE" && memoryMatch) {
|
|
194
|
-
|
|
237
|
+
const result = await service.deleteMemory(Number(memoryMatch[1]));
|
|
238
|
+
scheduleCommit();
|
|
239
|
+
sendJson(response, 200, result);
|
|
195
240
|
return;
|
|
196
241
|
}
|
|
197
242
|
if (request.method === "POST" && url.pathname === "/links") {
|
|
198
243
|
const body = (await readJson(request));
|
|
199
|
-
|
|
244
|
+
const result = await service.link(body.from_memory_id, body.to_memory_id, body.type);
|
|
245
|
+
scheduleCommit();
|
|
246
|
+
sendJson(response, 200, result);
|
|
200
247
|
return;
|
|
201
248
|
}
|
|
202
249
|
if (request.method === "GET" && url.pathname === "/links") {
|
|
@@ -206,7 +253,9 @@ async function handleRequest(service, indexState, config, request, response) {
|
|
|
206
253
|
}
|
|
207
254
|
const linkMatch = /^\/links\/(\d+)$/.exec(url.pathname);
|
|
208
255
|
if (request.method === "DELETE" && linkMatch) {
|
|
209
|
-
|
|
256
|
+
const result = await service.unlink(Number(linkMatch[1]));
|
|
257
|
+
scheduleCommit();
|
|
258
|
+
sendJson(response, 200, result);
|
|
210
259
|
return;
|
|
211
260
|
}
|
|
212
261
|
if (request.method === "POST" && url.pathname === "/index/rebuild") {
|
package/dist/daemon/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/daemon/http.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/daemon/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface DaemonLifetimeLock {
|
|
2
|
+
/** Canonical state directory protected by this lock. */
|
|
3
|
+
stateDir: string;
|
|
4
|
+
/** SQLite database used only for the lifetime write transaction. */
|
|
5
|
+
lockPath: string;
|
|
6
|
+
release(): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
export declare class DaemonLifetimeLockHeldError extends Error {
|
|
9
|
+
readonly stateDir: string;
|
|
10
|
+
readonly lockPath: string;
|
|
11
|
+
readonly cause?: unknown | undefined;
|
|
12
|
+
constructor(stateDir: string, lockPath: string, cause?: unknown | undefined);
|
|
13
|
+
}
|
|
14
|
+
export declare function canonicalizeStateDir(stateDir: string): Promise<string>;
|
|
15
|
+
/**
|
|
16
|
+
* Acquire the daemon-owned lifetime lock for a canonical stateDir.
|
|
17
|
+
*
|
|
18
|
+
* This is intentionally separate from daemon.lock/daemon.pid: those coordinate
|
|
19
|
+
* startup metadata, while this held write transaction is the OS-backed guard
|
|
20
|
+
* that prevents another daemon from reaching index.db for the same stateDir.
|
|
21
|
+
*/
|
|
22
|
+
export declare function acquireDaemonLifetimeLock(stateDir: string): Promise<DaemonLifetimeLock>;
|