@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.
Files changed (60) hide show
  1. package/README.md +114 -5
  2. package/dist/cli.d.ts +9 -6
  3. package/dist/cli.js +9 -43
  4. package/dist/cli.js.map +1 -1
  5. package/dist/config.d.ts +2 -0
  6. package/dist/config.js +2 -1
  7. package/dist/config.js.map +1 -1
  8. package/dist/constants.d.ts +1 -0
  9. package/dist/constants.js +7 -0
  10. package/dist/constants.js.map +1 -1
  11. package/dist/daemon/client.d.ts +4 -2
  12. package/dist/daemon/client.js +30 -14
  13. package/dist/daemon/client.js.map +1 -1
  14. package/dist/daemon/http.js +141 -50
  15. package/dist/daemon/http.js.map +1 -1
  16. package/dist/daemon/lifetime-lock.d.ts +22 -0
  17. package/dist/daemon/lifetime-lock.js +94 -0
  18. package/dist/daemon/lifetime-lock.js.map +1 -0
  19. package/dist/daemon/main.js +2 -1
  20. package/dist/daemon/main.js.map +1 -1
  21. package/dist/db.d.ts +3 -1
  22. package/dist/db.js +47 -10
  23. package/dist/db.js.map +1 -1
  24. package/dist/install.d.ts +2 -0
  25. package/dist/install.js +68 -5
  26. package/dist/install.js.map +1 -1
  27. package/dist/mcp/apps.js +0 -16
  28. package/dist/mcp/apps.js.map +1 -1
  29. package/dist/mcp/insights.d.ts +4 -6
  30. package/dist/mcp/insights.js +4 -11
  31. package/dist/mcp/insights.js.map +1 -1
  32. package/dist/mcp/server.js +43 -23
  33. package/dist/mcp/server.js.map +1 -1
  34. package/dist/memory/files.js +11 -0
  35. package/dist/memory/files.js.map +1 -1
  36. package/dist/memory/git.d.ts +5 -1
  37. package/dist/memory/git.js +7 -3
  38. package/dist/memory/git.js.map +1 -1
  39. package/dist/opencode/plugin.d.ts +22 -0
  40. package/dist/opencode/plugin.js +135 -0
  41. package/dist/opencode/plugin.js.map +1 -0
  42. package/dist/pi/extension.d.ts +60 -0
  43. package/dist/pi/extension.js +414 -0
  44. package/dist/pi/extension.js.map +1 -0
  45. package/dist/proposals.d.ts +42 -0
  46. package/dist/proposals.js +179 -0
  47. package/dist/proposals.js.map +1 -0
  48. package/dist/recall-log.d.ts +21 -0
  49. package/dist/recall-log.js +24 -0
  50. package/dist/recall-log.js.map +1 -0
  51. package/dist/recall.d.ts +1 -1
  52. package/dist/service.d.ts +64 -0
  53. package/dist/service.js +213 -3
  54. package/dist/service.js.map +1 -1
  55. package/dist/types.d.ts +29 -5
  56. package/docs/FEATURES.md +141 -26
  57. package/integrations/claude/skills/augment-context/SKILL.md +74 -0
  58. package/integrations/claude/skills/augment-sleep/SKILL.md +26 -0
  59. package/integrations/pi/skills/augment-context/SKILL.md +59 -0
  60. package/package.json +38 -1
@@ -1,41 +1,69 @@
1
- import { writeFile } from "node:fs/promises";
1
+ import { readFile, writeFile } from "node:fs/promises";
2
2
  import http from "node:http";
3
3
  import path from "node:path";
4
4
  import chokidar from "chokidar";
5
5
  import { EMBEDDING_MODEL_ID } from "../constants.js";
6
6
  import { cytoscapeBundleJs, dashboardAsset } from "../dashboard/assets.js";
7
7
  import { ensureConfigDirs } from "../config.js";
8
- import { appendTallyEvent, appendTallyRating, isTallyVerdict, readTallyRatings, renderTallySummary, summarizeTally, TALLY_VERDICTS, } from "../tally.js";
9
- import { createGitCommitter, isMemoryRootGitRoot } from "../memory/git.js";
8
+ import { appendRecallEvent } from "../recall-log.js";
9
+ import { commitMemoryChanges, createGitCommitter, isMemoryRootGitRoot } from "../memory/git.js";
10
10
  import { createIndexScheduler } from "./scheduler.js";
11
11
  import { acquireSingleInstance } from "./single-instance.js";
12
+ import { acquireDaemonLifetimeLock, canonicalizeStateDir } from "./lifetime-lock.js";
12
13
  export async function startHttpDaemon(config, service) {
13
14
  // The daemon file and watcher need the state/memory dirs before the (now
14
15
  // backgrounded) initial index gets a chance to create them.
15
16
  await ensureConfigDirs(config);
16
- // Single-instance guard: refuse to start if a healthy daemon already owns this
17
- // state dir, so two daemons never co-open the sqlite index (SQLITE_BUSY). The
18
- // db handle is lazy, so throwing here means the duplicate never touches it.
19
- const instanceLock = await acquireSingleInstance(config);
20
17
  // Everything past the slot claim runs under one guard: any startup failure
21
- // (bind error, daemon.json write, watcher wiring) must release the slot and
22
- // close whatever we opened, or a stranded pidfile would wrongly block the next
23
- // start (and, once its pid is reused, block it forever).
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;
24
23
  let server;
24
+ let committer;
25
25
  // Auto-commit augment's own writes when (and only when) the flag is on and the
26
26
  // memory root is itself a git worktree root. Decided once at startup; toggling
27
27
  // the env var or `git init`-ing the root later needs a daemon restart. Off by a
28
28
  // non-git root or an explicit AUGMENT_GIT_AUTOCOMMIT=0, never breaks a write.
29
- const committer = config.gitAutocommit !== false && (await isMemoryRootGitRoot(config.memoryRoot))
30
- ? createGitCommitter(config.memoryRoot)
31
- : undefined;
32
- const scheduleCommit = () => committer?.notify();
33
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();
44
+ // A sleep apply is one logical pass (consolidate + archive N sources) that
45
+ // must land as exactly one revertible commit, so it bypasses the debounced
46
+ // `scheduleCommit` and commits synchronously through this instead. Gated on
47
+ // the same condition as `committer` — no committer, no commit, apply still
48
+ // succeeds.
49
+ const activeCommitter = committer;
50
+ const commitPass = activeCommitter
51
+ ? async (message) => {
52
+ // Drain any in-flight/pending debounced snapshot commit first so the
53
+ // sleep pass lands as its own commit instead of colliding on
54
+ // index.lock with (or being swept into) a concurrent `augment:
55
+ // snapshot` commit. A write that arrives in the tiny window after
56
+ // idle() resolves and before commitMemoryChanges runs is the
57
+ // pre-existing accepted caveat here, not a regression.
58
+ await activeCommitter.idle();
59
+ return commitMemoryChanges(config.memoryRoot, message);
60
+ }
61
+ : undefined;
34
62
  // Listen first, index in the background: on a cold corpus the initial index
35
63
  // can take minutes of embedding, and clients (hooks especially) must not time
36
64
  // out against an unbound port. /index/status reports readiness.
37
65
  const indexState = { ready: false };
38
- const initPromise = service
66
+ initPromise = service
39
67
  .init()
40
68
  .then(() => {
41
69
  indexState.ready = true;
@@ -45,7 +73,7 @@ export async function startHttpDaemon(config, service) {
45
73
  console.error("augment: initial index failed:", error);
46
74
  });
47
75
  server = http.createServer((request, response) => {
48
- handleRequest(service, indexState, config, request, response, scheduleCommit).catch((error) => {
76
+ handleRequest(service, indexState, config, daemonLifetimeLock.stateDir, request, response, scheduleCommit, commitPass).catch((error) => {
49
77
  sendJson(response, 500, { error: errorMessage(error) });
50
78
  });
51
79
  });
@@ -65,11 +93,22 @@ export async function startHttpDaemon(config, service) {
65
93
  const info = {
66
94
  pid: process.pid,
67
95
  endpoint: `http://127.0.0.1:${address.port}`,
68
- stateDir: config.stateDir,
96
+ stateDir: daemonLifetimeLock.stateDir,
69
97
  memoryRoot: config.memoryRoot,
70
98
  model: EMBEDDING_MODEL_ID,
71
99
  startedAt: new Date().toISOString(),
72
100
  };
101
+ const previous = await readFile(config.daemonFile, "utf8")
102
+ .then((raw) => JSON.parse(raw))
103
+ .catch(() => undefined);
104
+ if (previous?.memoryRoot && previous.memoryRoot !== config.memoryRoot) {
105
+ // The 2026-07-10 split-brain shipped six days of empty-corpus recalls
106
+ // silently. A root switch is legitimate only when the user reconfigured
107
+ // on purpose — say so loudly either way.
108
+ console.error(`augment: this state dir's daemon memoryRoot changed (previous daemon served ` +
109
+ `${previous.memoryRoot}, now serving ${config.memoryRoot}). If unintended, fix ` +
110
+ `~/.augment/config.json / AUGMENT_MEMORY_ROOT so every entrypoint resolves the same root.`);
111
+ }
73
112
  await writeFile(config.daemonFile, JSON.stringify(info, null, 2), "utf8");
74
113
  const scheduler = createIndexScheduler(async (paths) => {
75
114
  for (const relativePath of paths) {
@@ -98,42 +137,58 @@ export async function startHttpDaemon(config, service) {
98
137
  watcher.on("add", onWatchEvent);
99
138
  watcher.on("change", onWatchEvent);
100
139
  watcher.on("unlink", onWatchEvent);
140
+ const daemonCommitter = committer;
101
141
  return {
102
142
  info,
103
- ...(committer ? { commitIdle: () => committer.idle() } : {}),
143
+ ...(daemonCommitter ? { commitIdle: () => daemonCommitter.idle() } : {}),
104
144
  async close() {
105
- // Release the slot no matter how teardown goes, so a failing watcher or
106
- // server close can't strand the pidfile.
145
+ // Release both daemon-owned claims no matter how teardown goes.
107
146
  try {
108
147
  await watcher.close();
109
148
  await scheduler.close();
110
- await committer?.close();
149
+ await daemonCommitter?.close();
111
150
  await initPromise;
112
151
  await new Promise((resolve, reject) => {
113
152
  boundServer.close((error) => (error ? reject(error) : resolve()));
114
153
  });
115
154
  }
116
155
  finally {
117
- await instanceLock.release();
156
+ try {
157
+ await daemonLifetimeLock.release();
158
+ }
159
+ finally {
160
+ await instanceLock?.release();
161
+ }
118
162
  }
119
163
  },
120
164
  };
121
165
  }
122
166
  catch (error) {
123
167
  await committer?.close().catch(() => { });
124
- await instanceLock.release().catch(() => { });
125
168
  if (server) {
126
169
  await new Promise((resolve) => server.close(() => resolve()));
127
170
  }
171
+ await initPromise?.catch(() => { });
172
+ try {
173
+ await lifetimeLock?.release().catch(() => { });
174
+ }
175
+ finally {
176
+ await instanceLock?.release().catch(() => { });
177
+ }
128
178
  throw error;
129
179
  }
130
180
  }
131
- async function handleRequest(service, indexState, config, request, response, scheduleCommit) {
181
+ function setStateDir(config, stateDir) {
182
+ config.stateDir = stateDir;
183
+ config.databasePath = path.join(stateDir, "index.db");
184
+ config.daemonFile = path.join(stateDir, "daemon.json");
185
+ }
186
+ async function handleRequest(service, indexState, config, lockOwnerStateDir, request, response, scheduleCommit, commitPass) {
132
187
  const url = new URL(request.url ?? "/", "http://127.0.0.1");
133
188
  if (request.method === "GET" && url.pathname === "/health") {
134
- // stateDir lets a client confirm over the wire that this live daemon owns the
135
- // same stateDir it recorded in daemon.json (guards against a stale/mismatched record).
136
- sendJson(response, 200, { ok: true, pid: process.pid, title: process.title, stateDir: config.stateDir });
189
+ // stateDir lets a client confirm over the wire which canonical stateDir this
190
+ // live daemon locked.
191
+ sendJson(response, 200, { ok: true, pid: process.pid, title: process.title, stateDir: lockOwnerStateDir });
137
192
  return;
138
193
  }
139
194
  // The daemon binds 127.0.0.1 only, so every route — UI shell and data alike —
@@ -177,9 +232,9 @@ async function handleRequest(service, indexState, config, request, response, sch
177
232
  const body = (await readJson(request));
178
233
  const output = await service.search(body);
179
234
  try {
180
- // Phase-2 dogfood instrumentation. Best-effort by design: search must
181
- // never fail because the tally could not be written.
182
- await appendTallyEvent(config.stateDir, {
235
+ // Passive recall instrumentation. Best-effort by design: search must
236
+ // never fail because the recall event could not be written.
237
+ await appendRecallEvent(config.stateDir, {
183
238
  ts: new Date().toISOString(),
184
239
  surface: body.surface ?? "unknown",
185
240
  project: body.project_name,
@@ -244,27 +299,54 @@ async function handleRequest(service, indexState, config, request, response, sch
244
299
  });
245
300
  return;
246
301
  }
247
- if (request.method === "POST" && url.pathname === "/tally") {
248
- const body = (await readJson(request));
249
- if (!isTallyVerdict(body.verdict)) {
250
- sendJson(response, 400, { error: `verdict must be one of: ${TALLY_VERDICTS.join(", ")}` });
251
- return;
302
+ if (request.method === "POST" && url.pathname === "/sleep/candidates") {
303
+ sendJson(response, 200, await service.sleepCandidates(await readJson(request)));
304
+ return;
305
+ }
306
+ // Propose/list/reject touch only proposal files under stateDir (outside the
307
+ // memoryRoot corpus repo): never scheduleCommit, never commitPass. sleepApply
308
+ // is the sole corpus write and gets exactly one synchronous commit on success.
309
+ if (request.method === "POST" && url.pathname === "/sleep/propose") {
310
+ try {
311
+ sendJson(response, 200, await service.sleepPropose(await readJson(request)));
312
+ }
313
+ catch (error) {
314
+ sendSleepError(response, error);
315
+ }
316
+ return;
317
+ }
318
+ if (request.method === "GET" && url.pathname === "/sleep/proposals") {
319
+ try {
320
+ const status = (url.searchParams.get("status") ?? undefined);
321
+ sendJson(response, 200, await service.sleepProposals(status));
322
+ }
323
+ catch (error) {
324
+ sendSleepError(response, error);
252
325
  }
253
- await appendTallyRating(config.stateDir, {
254
- ts: new Date().toISOString(),
255
- verdict: body.verdict,
256
- surface: typeof body.surface === "string" && body.surface ? body.surface : "unknown",
257
- ...(typeof body.note === "string" && body.note ? { note: body.note } : {}),
258
- });
259
- await sendTallySummary(response, config.stateDir);
260
326
  return;
261
327
  }
262
- if (request.method === "GET" && url.pathname === "/tally") {
263
- await sendTallySummary(response, config.stateDir);
328
+ if (request.method === "POST" && url.pathname === "/sleep/apply") {
329
+ try {
330
+ const out = await service.sleepApply(await readJson(request));
331
+ // ONE commit per pass, only on success — never call scheduleCommit here,
332
+ // and a thrown sleepApply above must reach the catch below untouched.
333
+ const message = `sleep: ${out.archived.length} WORK → ${out.memory.kind}/${out.memory.name} (${out.memory.project_name})`;
334
+ await commitPass?.(message);
335
+ sendJson(response, 200, out);
336
+ }
337
+ catch (error) {
338
+ sendSleepError(response, error);
339
+ }
264
340
  return;
265
341
  }
266
- if (request.method === "POST" && url.pathname === "/sleep/candidates") {
267
- sendJson(response, 200, await service.sleepCandidates(await readJson(request)));
342
+ if (request.method === "POST" && url.pathname === "/sleep/reject") {
343
+ try {
344
+ const body = (await readJson(request));
345
+ sendJson(response, 200, await service.sleepReject(body.filename));
346
+ }
347
+ catch (error) {
348
+ sendSleepError(response, error);
349
+ }
268
350
  return;
269
351
  }
270
352
  sendJson(response, 404, { error: "not found" });
@@ -281,14 +363,23 @@ function sendJson(response, status, body) {
281
363
  response.writeHead(status, { "content-type": "application/json; charset=utf-8" });
282
364
  response.end(JSON.stringify(body));
283
365
  }
284
- async function sendTallySummary(response, stateDir) {
285
- const summary = summarizeTally(await readTallyRatings(stateDir));
286
- sendJson(response, 200, { ...summary, text: renderTallySummary(summary) });
287
- }
288
366
  function sendText(response, status, contentType, body) {
289
367
  response.writeHead(status, { "content-type": contentType });
290
368
  response.end(body);
291
369
  }
370
+ // Sleep routes throw plain Errors for every validation/business-rule failure
371
+ // (unknown proposal filename, wrong status, missing/invalid sources, target
372
+ // already exists, ...) -- all of these are bad-input from the caller's
373
+ // perspective, so they map to the same client-error status the other routes
374
+ // use (see the project_id 400 above). A non-Error throw is genuinely
375
+ // unexpected and rethrows to the outer handler's 500 fallback.
376
+ function sendSleepError(response, error) {
377
+ if (error instanceof Error) {
378
+ sendJson(response, 400, { error: error.message });
379
+ return;
380
+ }
381
+ throw error;
382
+ }
292
383
  function errorMessage(error) {
293
384
  return error instanceof Error ? error.message : String(error);
294
385
  }
@@ -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>;
@@ -0,0 +1,94 @@
1
+ import { createClient } from "@libsql/client";
2
+ import { mkdir, realpath } from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { pathToFileURL } from "node:url";
5
+ const LOCK_DB_NAME = "daemon-lifetime-lock.db";
6
+ export class DaemonLifetimeLockHeldError extends Error {
7
+ stateDir;
8
+ lockPath;
9
+ cause;
10
+ constructor(stateDir, lockPath, cause) {
11
+ super(`augment daemon lifetime lock already held for state dir ${stateDir}`);
12
+ this.stateDir = stateDir;
13
+ this.lockPath = lockPath;
14
+ this.cause = cause;
15
+ this.name = "DaemonLifetimeLockHeldError";
16
+ }
17
+ }
18
+ export async function canonicalizeStateDir(stateDir) {
19
+ await mkdir(stateDir, { recursive: true });
20
+ return realpath(stateDir);
21
+ }
22
+ /**
23
+ * Acquire the daemon-owned lifetime lock for a canonical stateDir.
24
+ *
25
+ * This is intentionally separate from daemon.lock/daemon.pid: those coordinate
26
+ * startup metadata, while this held write transaction is the OS-backed guard
27
+ * that prevents another daemon from reaching index.db for the same stateDir.
28
+ */
29
+ export async function acquireDaemonLifetimeLock(stateDir) {
30
+ const canonicalStateDir = await canonicalizeStateDir(stateDir);
31
+ const lockPath = path.join(canonicalStateDir, LOCK_DB_NAME);
32
+ const client = createClient({ url: fileUrl(lockPath) });
33
+ let transaction;
34
+ try {
35
+ await client.execute("PRAGMA busy_timeout = 0");
36
+ await client.execute(`
37
+ CREATE TABLE IF NOT EXISTS lifetime_lock (
38
+ id INTEGER PRIMARY KEY CHECK (id = 1),
39
+ pid INTEGER NOT NULL,
40
+ state_dir TEXT NOT NULL,
41
+ acquired_at TEXT NOT NULL
42
+ )
43
+ `);
44
+ transaction = await client.transaction("write");
45
+ await transaction.execute({
46
+ sql: `INSERT INTO lifetime_lock (id, pid, state_dir, acquired_at)
47
+ VALUES (1, ?, ?, ?)
48
+ ON CONFLICT(id) DO UPDATE SET
49
+ pid = excluded.pid,
50
+ state_dir = excluded.state_dir,
51
+ acquired_at = excluded.acquired_at`,
52
+ args: [process.pid, canonicalStateDir, new Date().toISOString()],
53
+ });
54
+ }
55
+ catch (error) {
56
+ closeLockResources(client, transaction);
57
+ if (isSqliteLockError(error)) {
58
+ throw new DaemonLifetimeLockHeldError(canonicalStateDir, lockPath, error);
59
+ }
60
+ throw error;
61
+ }
62
+ let released = false;
63
+ return {
64
+ stateDir: canonicalStateDir,
65
+ lockPath,
66
+ async release() {
67
+ if (released) {
68
+ return;
69
+ }
70
+ released = true;
71
+ try {
72
+ if (!transaction.closed) {
73
+ await transaction.rollback();
74
+ }
75
+ }
76
+ finally {
77
+ closeLockResources(client, transaction);
78
+ }
79
+ },
80
+ };
81
+ }
82
+ function closeLockResources(client, transaction) {
83
+ transaction?.close();
84
+ client.close();
85
+ }
86
+ function fileUrl(filePath) {
87
+ return pathToFileURL(filePath).href;
88
+ }
89
+ function isSqliteLockError(error) {
90
+ const code = typeof error === "object" && error !== null ? String(error.code ?? "") : "";
91
+ const message = error instanceof Error ? error.message : String(error);
92
+ return /\b(SQLITE_BUSY|SQLITE_LOCKED)\b/i.test(code) || /\b(busy|locked)\b/i.test(message);
93
+ }
94
+ //# sourceMappingURL=lifetime-lock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifetime-lock.js","sourceRoot":"","sources":["../../src/daemon/lifetime-lock.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { loadConfig } from "../config.js";
2
2
  import { AugmentService } from "../service.js";
3
3
  import { startHttpDaemon } from "./http.js";
4
+ import { DaemonLifetimeLockHeldError } from "./lifetime-lock.js";
4
5
  import { DaemonAlreadyRunningError } from "./single-instance.js";
5
6
  export async function startDaemonFromCli(_args) {
6
7
  const config = await loadConfig();
@@ -10,7 +11,7 @@ export async function startDaemonFromCli(_args) {
10
11
  daemon = await startHttpDaemon(config, service);
11
12
  }
12
13
  catch (error) {
13
- if (error instanceof DaemonAlreadyRunningError) {
14
+ if (error instanceof DaemonAlreadyRunningError || error instanceof DaemonLifetimeLockHeldError) {
14
15
  // Not a failure: another daemon already serves this state. Exit cleanly
15
16
  // without co-opening its sqlite index.
16
17
  console.error(`augment-daemon: ${error.message}; exiting`);
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/daemon/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,KAAe;IACtD,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;IAE3C,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,yBAAyB,EAAE,CAAC;YAC/C,wEAAwE;YACxE,uCAAuC;YACvC,OAAO,CAAC,KAAK,CAAC,mBAAmB,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;YAC3D,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,+BAA+B,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAErE,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;QACvB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;AAC5C,CAAC"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/daemon/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,KAAe;IACtD,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;IAE3C,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,yBAAyB,IAAI,KAAK,YAAY,2BAA2B,EAAE,CAAC;YAC/F,wEAAwE;YACxE,uCAAuC;YACvC,OAAO,CAAC,KAAK,CAAC,mBAAmB,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;YAC3D,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,+BAA+B,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAErE,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;QACvB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;IACzC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;AAC5C,CAAC"}
package/dist/db.d.ts CHANGED
@@ -1,10 +1,12 @@
1
1
  import type { EmbeddingProvider } from "./embeddings.js";
2
2
  import type { LinkRecord, MemoryRecord, ParsedMemory, ProjectRecord } from "./types.js";
3
3
  export declare class AugmentDatabase {
4
- private readonly databasePath;
4
+ private databasePath;
5
5
  private client;
6
6
  constructor(databasePath: string);
7
+ setDatabasePath(databasePath: string): void;
7
8
  init(): Promise<void>;
9
+ private migrateColumn;
8
10
  close(): void;
9
11
  /**
10
12
  * Read a PRAGMA on the live connection (diagnostics/tests). busy_timeout and