@duetso/agent 0.1.201 → 0.2.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 (125) hide show
  1. package/README.md +43 -9
  2. package/dist/package.json +1 -1
  3. package/dist/src/cli/help.d.ts +1 -0
  4. package/dist/src/cli/help.d.ts.map +1 -1
  5. package/dist/src/cli/help.js +73 -26
  6. package/dist/src/cli/help.js.map +1 -1
  7. package/dist/src/cli/inline-slash.js +1 -1
  8. package/dist/src/cli/login.d.ts +2 -3
  9. package/dist/src/cli/login.d.ts.map +1 -1
  10. package/dist/src/cli/login.js +17 -32
  11. package/dist/src/cli/login.js.map +1 -1
  12. package/dist/src/cli/memory-add.d.ts +8 -1
  13. package/dist/src/cli/memory-add.d.ts.map +1 -1
  14. package/dist/src/cli/memory-add.js +49 -53
  15. package/dist/src/cli/memory-add.js.map +1 -1
  16. package/dist/src/cli/memory-db.d.ts +23 -0
  17. package/dist/src/cli/memory-db.d.ts.map +1 -1
  18. package/dist/src/cli/memory-db.js +48 -1
  19. package/dist/src/cli/memory-db.js.map +1 -1
  20. package/dist/src/cli/memory-json.d.ts +67 -0
  21. package/dist/src/cli/memory-json.d.ts.map +1 -0
  22. package/dist/src/cli/memory-json.js +28 -0
  23. package/dist/src/cli/memory-json.js.map +1 -0
  24. package/dist/src/cli/memory-query.d.ts +20 -1
  25. package/dist/src/cli/memory-query.d.ts.map +1 -1
  26. package/dist/src/cli/memory-query.js +45 -20
  27. package/dist/src/cli/memory-query.js.map +1 -1
  28. package/dist/src/cli/memory-recall.d.ts +53 -0
  29. package/dist/src/cli/memory-recall.d.ts.map +1 -0
  30. package/dist/src/cli/memory-recall.js +217 -0
  31. package/dist/src/cli/memory-recall.js.map +1 -0
  32. package/dist/src/cli/memory.d.ts +3 -1
  33. package/dist/src/cli/memory.d.ts.map +1 -1
  34. package/dist/src/cli/memory.js +10 -4
  35. package/dist/src/cli/memory.js.map +1 -1
  36. package/dist/src/cli/model-gateway.d.ts +3 -3
  37. package/dist/src/cli/model-gateway.js +3 -3
  38. package/dist/src/cli/rpc.d.ts +19 -5
  39. package/dist/src/cli/rpc.d.ts.map +1 -1
  40. package/dist/src/cli/rpc.js +20 -19
  41. package/dist/src/cli/rpc.js.map +1 -1
  42. package/dist/src/cli/run.d.ts +8 -0
  43. package/dist/src/cli/run.d.ts.map +1 -1
  44. package/dist/src/cli/run.js +7 -20
  45. package/dist/src/cli/run.js.map +1 -1
  46. package/dist/src/cli/send-feedback.d.ts +1 -1
  47. package/dist/src/cli/send-feedback.js +1 -1
  48. package/dist/src/cli/shared.d.ts +16 -3
  49. package/dist/src/cli/shared.d.ts.map +1 -1
  50. package/dist/src/cli/shared.js +19 -4
  51. package/dist/src/cli/shared.js.map +1 -1
  52. package/dist/src/cli/train.d.ts.map +1 -1
  53. package/dist/src/cli/train.js +40 -23
  54. package/dist/src/cli/train.js.map +1 -1
  55. package/dist/src/cli.d.ts +1 -0
  56. package/dist/src/cli.d.ts.map +1 -1
  57. package/dist/src/cli.js +1 -0
  58. package/dist/src/cli.js.map +1 -1
  59. package/dist/src/lib/duet-api-url.d.ts +9 -0
  60. package/dist/src/lib/duet-api-url.d.ts.map +1 -0
  61. package/dist/src/lib/duet-api-url.js +18 -0
  62. package/dist/src/lib/duet-api-url.js.map +1 -0
  63. package/dist/src/lib/feedback.d.ts +1 -1
  64. package/dist/src/lib/feedback.js +4 -4
  65. package/dist/src/lib/feedback.js.map +1 -1
  66. package/dist/src/lib/login.d.ts +24 -21
  67. package/dist/src/lib/login.d.ts.map +1 -1
  68. package/dist/src/lib/login.js +50 -114
  69. package/dist/src/lib/login.js.map +1 -1
  70. package/dist/src/memory/embedding.d.ts +20 -15
  71. package/dist/src/memory/embedding.d.ts.map +1 -1
  72. package/dist/src/memory/embedding.js +26 -20
  73. package/dist/src/memory/embedding.js.map +1 -1
  74. package/dist/src/memory/recall.d.ts +44 -0
  75. package/dist/src/memory/recall.d.ts.map +1 -1
  76. package/dist/src/memory/recall.js +92 -6
  77. package/dist/src/memory/recall.js.map +1 -1
  78. package/dist/src/model-resolution/duet-gateway.d.ts +4 -3
  79. package/dist/src/model-resolution/duet-gateway.d.ts.map +1 -1
  80. package/dist/src/model-resolution/duet-gateway.js +12 -6
  81. package/dist/src/model-resolution/duet-gateway.js.map +1 -1
  82. package/dist/src/tui/app.d.ts +2 -2
  83. package/dist/src/tui/app.d.ts.map +1 -1
  84. package/dist/src/tui/app.js +20 -2
  85. package/dist/src/tui/app.js.map +1 -1
  86. package/dist/src/tui/paste-controller.d.ts +3 -0
  87. package/dist/src/tui/paste-controller.d.ts.map +1 -1
  88. package/dist/src/tui/paste-controller.js +25 -0
  89. package/dist/src/tui/paste-controller.js.map +1 -1
  90. package/dist/src/tui/session-subscription.d.ts +10 -0
  91. package/dist/src/tui/session-subscription.d.ts.map +1 -1
  92. package/dist/src/tui/session-subscription.js +22 -5
  93. package/dist/src/tui/session-subscription.js.map +1 -1
  94. package/dist/src/tui/slash-commands.d.ts +4 -4
  95. package/dist/src/tui/slash-commands.js +4 -4
  96. package/dist/src/tui/step-renderer.d.ts +4 -0
  97. package/dist/src/tui/step-renderer.d.ts.map +1 -1
  98. package/dist/src/tui/step-renderer.js +41 -37
  99. package/dist/src/tui/step-renderer.js.map +1 -1
  100. package/dist/src/tui/tool-formatters.d.ts +2 -2
  101. package/dist/src/tui/tool-formatters.d.ts.map +1 -1
  102. package/dist/src/turn-runner/agent-events.d.ts +12 -1
  103. package/dist/src/turn-runner/agent-events.d.ts.map +1 -1
  104. package/dist/src/turn-runner/agent-events.js +60 -42
  105. package/dist/src/turn-runner/agent-events.js.map +1 -1
  106. package/dist/src/turn-runner/tools.d.ts.map +1 -1
  107. package/dist/src/turn-runner/tools.js +15 -54
  108. package/dist/src/turn-runner/tools.js.map +1 -1
  109. package/dist/src/turn-runner/turn-runner.d.ts +2 -0
  110. package/dist/src/turn-runner/turn-runner.d.ts.map +1 -1
  111. package/dist/src/turn-runner/turn-runner.js +4 -2
  112. package/dist/src/turn-runner/turn-runner.js.map +1 -1
  113. package/dist/src/types/memory.d.ts +11 -0
  114. package/dist/src/types/memory.d.ts.map +1 -1
  115. package/dist/src/types/protocol.d.ts +22 -3
  116. package/dist/src/types/protocol.d.ts.map +1 -1
  117. package/package.json +1 -1
  118. package/dist/src/lib/duet-app-url.d.ts +0 -10
  119. package/dist/src/lib/duet-app-url.d.ts.map +0 -1
  120. package/dist/src/lib/duet-app-url.js +0 -19
  121. package/dist/src/lib/duet-app-url.js.map +0 -1
  122. package/dist/src/lib/sync-skills.d.ts +0 -54
  123. package/dist/src/lib/sync-skills.d.ts.map +0 -1
  124. package/dist/src/lib/sync-skills.js +0 -215
  125. package/dist/src/lib/sync-skills.js.map +0 -1
@@ -1,11 +1,10 @@
1
- import { runMigrations } from "../memory/migrations.js";
2
- import { MemoryLockTimeoutError } from "../memory/pglite.js";
3
- import { MemorySession } from "../memory/session.js";
4
1
  import { appendObservation } from "../memory/storage.js";
5
2
  import { DEFAULT_MEMORY_DB_PATH } from "../session/session-manager.js";
6
3
  import { printMemoryAddHelp } from "./help.js";
7
- import { fail, resolveUserPath } from "./shared.js";
8
- import { installShutdownHandlers } from "./shutdown.js";
4
+ import { toMemoryJson } from "./memory-json.js";
5
+ import { scoreObservation, withMemorySession } from "./memory-db.js";
6
+ import { PRIORITIES, parseEnum, SOURCES } from "./memory-query.js";
7
+ import { fail, resolveUserPath, usageError } from "./shared.js";
9
8
  /**
10
9
  * Run `duet memory add` — write a single user-added note row into the same
11
10
  * `~/.duet/memory.db` the runner reads from, so it surfaces in the next
@@ -25,44 +24,29 @@ export async function runMemoryAddCommand(args, io = { stdout: process.stdout, s
25
24
  if (!options)
26
25
  return;
27
26
  const content = await resolveContent(options.content, io);
28
- const session = new MemorySession({
29
- path: options.dbPath,
30
- openOptions: {
31
- init: async (db) => {
32
- await runMigrations(db);
33
- },
34
- },
35
- ...(options.waitBudgetMs !== undefined ? { lockWaitBudgetMs: options.waitBudgetMs } : {}),
36
- idleCloseMs: 60_000,
37
- });
38
- const removeShutdownHandlers = installShutdownHandlers(() => session.dispose());
39
- try {
40
- const observation = await appendObservation(session, {
41
- kind: "note",
42
- priority: options.priority,
43
- source: { kind: "user" },
44
- content,
45
- tags: options.tags,
46
- observedDate: new Date().toISOString().slice(0, 10),
47
- });
48
- if (!observation) {
49
- fail(`Could not write memory to ${options.dbPath} (lock contention).`);
50
- }
51
- const tagSuffix = observation.tags.length > 0 ? ` [${observation.tags.join(", ")}]` : "";
52
- io.stdout.write(`Added ${observation.priority}-priority memory ${observation.id} (${observation.observedDate})${tagSuffix}\n`);
53
- }
54
- catch (error) {
55
- if (error instanceof MemoryLockTimeoutError) {
56
- fail(`Memory database at ${error.dataDir} is still locked by duet pid ${error.holderPid} after ${error.budgetMs / 1000}s. Stop that process (or pass --wait <seconds> to wait longer) and retry.`);
57
- }
58
- throw error;
27
+ const observation = await withMemorySession(options.dbPath, (session) => appendObservation(session, {
28
+ kind: "note",
29
+ priority: options.priority,
30
+ source: { kind: options.source },
31
+ content,
32
+ tags: options.tags,
33
+ observedDate: new Date().toISOString().slice(0, 10),
34
+ ...(options.sessionId !== undefined ? { sessionId: options.sessionId } : {}),
35
+ }), { waitBudgetMs: options.waitBudgetMs });
36
+ if (!observation) {
37
+ fail(`Could not write memory to ${options.dbPath} (lock contention).`);
59
38
  }
60
- finally {
61
- removeShutdownHandlers();
62
- await session.dispose();
39
+ if (options.json) {
40
+ // Score with a single `now`; on insert `lastUsedAt == createdAt`, so the
41
+ // pack score reflects a freshly stored row. `relevanceScore` is absent —
42
+ // there is no query to rank the row against on an add.
43
+ const packScore = scoreObservation(observation, Date.now());
44
+ io.stdout.write(`${JSON.stringify(toMemoryJson(observation, { packScore }), null, 2)}\n`);
45
+ return;
63
46
  }
47
+ const tagSuffix = observation.tags.length > 0 ? ` [${observation.tags.join(", ")}]` : "";
48
+ io.stdout.write(`Added ${observation.priority}-priority memory ${observation.id} (${observation.observedDate})${tagSuffix}\n`);
64
49
  }
65
- const PRIORITIES = ["high", "medium", "low"];
66
50
  /**
67
51
  * Parse `duet memory add` flags and positional content. Returns `undefined`
68
52
  * when `--help` was handled. Pure (no I/O) so it can be unit-tested; stdin
@@ -71,6 +55,9 @@ const PRIORITIES = ["high", "medium", "low"];
71
55
  export function parseMemoryAddArgs(args) {
72
56
  let dbPath = DEFAULT_MEMORY_DB_PATH;
73
57
  let priority = "medium";
58
+ let source = "user";
59
+ let sessionId;
60
+ let json = false;
74
61
  const tags = [];
75
62
  let waitBudgetMs;
76
63
  const contentParts = [];
@@ -79,27 +66,33 @@ export function parseMemoryAddArgs(args) {
79
66
  switch (arg) {
80
67
  case "--db":
81
68
  if (!args[i + 1] || args[i + 1]?.startsWith("-"))
82
- fail(`Missing value for ${arg}`);
69
+ usageError(`Missing value for ${arg}`);
83
70
  dbPath = resolveUserPath(args[++i]);
84
71
  break;
85
- case "--priority": {
86
- const raw = args[++i];
87
- if (!raw || !PRIORITIES.includes(raw)) {
88
- fail(`Invalid --priority value: ${raw} (expected high, medium, or low)`);
89
- }
90
- priority = raw;
72
+ case "--priority":
73
+ priority = parseEnum(args[++i], PRIORITIES, arg);
74
+ break;
75
+ case "--source":
76
+ source = parseEnum(args[++i], SOURCES, arg);
77
+ break;
78
+ case "--session":
79
+ if (!args[i + 1] || args[i + 1]?.startsWith("-"))
80
+ usageError(`Missing value for ${arg}`);
81
+ sessionId = args[++i];
82
+ break;
83
+ case "--json":
84
+ json = true;
91
85
  break;
92
- }
93
86
  case "--tag":
94
87
  if (!args[i + 1] || args[i + 1]?.startsWith("-"))
95
- fail(`Missing value for ${arg}`);
88
+ usageError(`Missing value for ${arg}`);
96
89
  tags.push(args[++i]);
97
90
  break;
98
91
  case "--wait": {
99
92
  const raw = args[++i];
100
93
  const seconds = Number(raw);
101
94
  if (!raw || !Number.isFinite(seconds) || seconds < 0) {
102
- fail(`Invalid --wait value: ${raw} (expected non-negative number of seconds)`);
95
+ usageError(`Invalid --wait value: ${raw} (expected non-negative number of seconds)`);
103
96
  }
104
97
  waitBudgetMs = Math.round(seconds * 1000);
105
98
  break;
@@ -110,7 +103,7 @@ export function parseMemoryAddArgs(args) {
110
103
  return undefined;
111
104
  default:
112
105
  if (arg.startsWith("-"))
113
- fail(`Unknown add option: ${arg}`);
106
+ usageError(`Unknown add option: ${arg}`);
114
107
  contentParts.push(arg);
115
108
  }
116
109
  }
@@ -118,7 +111,10 @@ export function parseMemoryAddArgs(args) {
118
111
  dbPath,
119
112
  content: contentParts.join(" ").trim(),
120
113
  priority,
114
+ source,
121
115
  tags,
116
+ json,
117
+ ...(sessionId !== undefined ? { sessionId } : {}),
122
118
  ...(waitBudgetMs !== undefined ? { waitBudgetMs } : {}),
123
119
  };
124
120
  }
@@ -131,12 +127,12 @@ async function resolveContent(positional, io) {
131
127
  let content = positional;
132
128
  if (content.length === 0) {
133
129
  if (io.stdin.isTTY) {
134
- fail("No memory content provided. Pass it as an argument or pipe via stdin.");
130
+ usageError("No memory content provided. Pass it as an argument or pipe via stdin.");
135
131
  }
136
132
  content = (await readStream(io.stdin)).trim();
137
133
  }
138
134
  if (content.length === 0)
139
- fail("Refusing to add an empty memory.");
135
+ usageError("Refusing to add an empty memory.");
140
136
  return content;
141
137
  }
142
138
  async function readStream(stream) {
@@ -1 +1 @@
1
- {"version":3,"file":"memory-add.js","sourceRoot":"","sources":["../../../src/cli/memory-add.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory-add.js","sourceRoot":"","sources":["../../../src/cli/memory-add.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,22 @@
1
+ import { MemoryLockTimeoutError } from "../memory/pglite.js";
2
+ import { MemorySession } from "../memory/session.js";
1
3
  import type { TrainListEntry, TrainRecord } from "../train/types.js";
2
4
  import type { Observation, ObservationSource } from "../types/memory.js";
5
+ /**
6
+ * Report an exhausted memory-DB open lock and exit `75` (the contract's
7
+ * distinguished lock-wait code, distinct from a generic runtime failure).
8
+ * Every memory/train subcommand funnels its {@link MemoryLockTimeoutError}
9
+ * here so the friendly, actionable message and the exit code stay identical.
10
+ */
11
+ export declare function failMemoryLockTimeout(error: MemoryLockTimeoutError): never;
3
12
  /** Rows fetched per page by the ranked, lazily-paginated TUI list. */
4
13
  export declare const MEMORY_PAGE_SIZE = 25;
5
14
  export interface MemoryQueryFilters {
6
15
  kind?: Observation["kind"];
7
16
  priority?: Observation["priority"];
8
17
  source?: ObservationSource["kind"];
18
+ /** Restrict to rows authored by this session (matches `session_id`). */
19
+ sessionId?: string;
9
20
  fromMs?: number;
10
21
  toMs?: number;
11
22
  }
@@ -97,4 +108,16 @@ export declare class MemoryDb {
97
108
  export declare function withMemoryDb<T>(dbPath: string, fn: (db: MemoryDb) => Promise<T>, { waitBudgetMs }?: {
98
109
  waitBudgetMs?: number;
99
110
  }): Promise<T>;
111
+ /**
112
+ * Run `fn` against a {@link MemorySession} opened on the shared memory
113
+ * database — the entry point for one-shot CLI commands that need the
114
+ * session's refcounted handle and cross-process lock (writes via
115
+ * `appendObservation`, hybrid recall) rather than the raw {@link MemoryDb}
116
+ * query wrapper. Applies migrations on open, installs shutdown handlers, and
117
+ * always disposes; a lock-contention timeout exits `75` via
118
+ * {@link failMemoryLockTimeout} so callers share one error message and code.
119
+ */
120
+ export declare function withMemorySession<T>(dbPath: string, fn: (session: MemorySession) => Promise<T>, { waitBudgetMs }?: {
121
+ waitBudgetMs?: number;
122
+ }): Promise<T>;
100
123
  //# sourceMappingURL=memory-db.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory-db.d.ts","sourceRoot":"","sources":["../../../src/cli/memory-db.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAIzE,sEAAsE;AACtE,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3B,QAAQ,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG,GAAE,MAAmB,GAAG,MAAM,CAO3F;AAED;;;;GAIG;AACH,qBAAa,QAAQ;IACC,OAAO,CAAC,QAAQ,CAAC,EAAE;IAAvC,OAAO;IAEP;;;;;;;;;OASG;WACU,IAAI,CACf,IAAI,EAAE,MAAM,EACZ,EAAE,YAA+C,EAAE,GAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAO,GAClF,OAAO,CAAC,QAAQ,CAAC;IAiBpB,yDAAyD;IACnD,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAO9B;;;;;;;;;;;;OAYG;IACG,UAAU,CAAC,EACf,KAAK,EACL,MAAM,EACN,GAAgB,GACjB,EAAE;QACD,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAkC1B,qFAAqF;IAC/E,iBAAiB,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAwBjF;;;OAGG;IACG,aAAa,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAOhD;;;;;OAKG;IACG,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;YAO1D,qBAAqB;YAWrB,YAAY;IAe1B,gFAAgF;IAC1E,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/D;;;;;OAKG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAClC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,EAChC,EAAE,YAAY,EAAE,GAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/C,OAAO,CAAC,CAAC,CAAC,CAqBZ"}
1
+ {"version":3,"file":"memory-db.d.ts","sourceRoot":"","sources":["../../../src/cli/memory-db.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,20 @@ import { observationScore, PRIORITY_WEIGHT } from "../memory/loader.js";
2
2
  import { runMigrations } from "../memory/migrations.js";
3
3
  import { DEFAULT_MANUAL_BIAS, DEFAULT_NOTE_BIAS, DEFAULT_RECENCY_HALF_LIFE_MS, DEFAULT_REFLECTION_BIAS, } from "../memory/observational.js";
4
4
  import { DEFAULT_OPEN_LOCK_WAIT_BUDGET_MS, MemoryLockTimeoutError, openPGliteWaitingForLock, } from "../memory/pglite.js";
5
+ import { MemorySession } from "../memory/session.js";
5
6
  import { readArchiveManifest, removeArchive } from "../train/archive.js";
6
7
  import { isTrainTagged, slugFromTags } from "../train/tags.js";
7
8
  import { fail } from "./shared.js";
8
9
  import { installShutdownHandlers } from "./shutdown.js";
10
+ /**
11
+ * Report an exhausted memory-DB open lock and exit `75` (the contract's
12
+ * distinguished lock-wait code, distinct from a generic runtime failure).
13
+ * Every memory/train subcommand funnels its {@link MemoryLockTimeoutError}
14
+ * here so the friendly, actionable message and the exit code stay identical.
15
+ */
16
+ export function failMemoryLockTimeout(error) {
17
+ return fail(`Memory database at ${error.dataDir} is still locked by duet pid ${error.holderPid} after ${error.budgetMs / 1000}s. Stop that process (or pass --wait <seconds> to wait longer) and retry.`, 75);
18
+ }
9
19
  /** Rows fetched per page by the ranked, lazily-paginated TUI list. */
10
20
  export const MEMORY_PAGE_SIZE = 25;
11
21
  /**
@@ -120,6 +130,8 @@ export class MemoryDb {
120
130
  bind("priority = $?", filters.priority);
121
131
  if (filters.source !== undefined)
122
132
  bind("(source_json::json->>'kind') = $?", filters.source);
133
+ if (filters.sessionId !== undefined)
134
+ bind("session_id = $?", filters.sessionId);
123
135
  if (filters.fromMs !== undefined)
124
136
  bind("created_at >= $?", filters.fromMs);
125
137
  if (filters.toMs !== undefined)
@@ -208,7 +220,7 @@ export async function withMemoryDb(dbPath, fn, { waitBudgetMs } = {}) {
208
220
  }
209
221
  catch (error) {
210
222
  if (error instanceof MemoryLockTimeoutError) {
211
- fail(`Memory database at ${error.dataDir} is still locked by duet pid ${error.holderPid} after ${error.budgetMs / 1000}s. Stop that process (or pass --wait <seconds> to wait longer) and retry.`);
223
+ failMemoryLockTimeout(error);
212
224
  }
213
225
  throw error;
214
226
  }
@@ -221,6 +233,41 @@ export async function withMemoryDb(dbPath, fn, { waitBudgetMs } = {}) {
221
233
  await db.close();
222
234
  }
223
235
  }
236
+ /**
237
+ * Run `fn` against a {@link MemorySession} opened on the shared memory
238
+ * database — the entry point for one-shot CLI commands that need the
239
+ * session's refcounted handle and cross-process lock (writes via
240
+ * `appendObservation`, hybrid recall) rather than the raw {@link MemoryDb}
241
+ * query wrapper. Applies migrations on open, installs shutdown handlers, and
242
+ * always disposes; a lock-contention timeout exits `75` via
243
+ * {@link failMemoryLockTimeout} so callers share one error message and code.
244
+ */
245
+ export async function withMemorySession(dbPath, fn, { waitBudgetMs } = {}) {
246
+ const session = new MemorySession({
247
+ path: dbPath,
248
+ openOptions: {
249
+ init: async (db) => {
250
+ await runMigrations(db);
251
+ },
252
+ },
253
+ ...(waitBudgetMs !== undefined ? { lockWaitBudgetMs: waitBudgetMs } : {}),
254
+ idleCloseMs: 60_000,
255
+ });
256
+ const removeShutdownHandlers = installShutdownHandlers(() => session.dispose());
257
+ try {
258
+ return await fn(session);
259
+ }
260
+ catch (error) {
261
+ if (error instanceof MemoryLockTimeoutError) {
262
+ failMemoryLockTimeout(error);
263
+ }
264
+ throw error;
265
+ }
266
+ finally {
267
+ removeShutdownHandlers();
268
+ await session.dispose();
269
+ }
270
+ }
224
271
  function rowToObservation(row) {
225
272
  return {
226
273
  id: row.id,
@@ -1 +1 @@
1
- {"version":3,"file":"memory-db.js","sourceRoot":"","sources":["../../../src/cli/memory-db.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory-db.js","sourceRoot":"","sources":["../../../src/cli/memory-db.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import type { Observation, ObservationKind, ObservationPriority, ObservationSource } from "../types/memory.js";
2
+ /**
3
+ * Canonical JSON shape for a single memory row, shared by every command that
4
+ * emits an observation (`memory recall`, `memory` query, `memory add`). Kept
5
+ * in one place — see {@link toMemoryJson} — so consumers parse one type
6
+ * everywhere instead of one shape per command.
7
+ *
8
+ * Deviations from the in-memory {@link Observation}:
9
+ * - `createdAt`/`lastUsedAt` are ISO 8601 strings, not millisecond epochs,
10
+ * so wire consumers never have to guess the unit.
11
+ * - `source` is flattened to its `kind` string; the structured
12
+ * `{ kind, name? }` union is a runtime-only detail.
13
+ * - The two ranking scores are named explicitly (`packScore`,
14
+ * `relevanceScore`); there is deliberately no generic `score` field.
15
+ */
16
+ export interface MemoryJson {
17
+ /** Stable persistence key for the row. */
18
+ id: string;
19
+ /** The memory text. */
20
+ content: string;
21
+ /** Raw observation, reflection, single user note, or bulk-curated manual row. */
22
+ kind: ObservationKind;
23
+ /** Flattened source origin — the `kind` of the structured {@link ObservationSource}. */
24
+ source: ObservationSource["kind"];
25
+ /** Importance signal used by recall and context ranking. */
26
+ priority: ObservationPriority;
27
+ /** When the row was stored, as an ISO 8601 timestamp. */
28
+ createdAt: string;
29
+ /** Most recent turn that used the row, as an ISO 8601 timestamp. */
30
+ lastUsedAt: string;
31
+ /** Calendar date the observation is anchored to. */
32
+ observedDate: string;
33
+ /** Concrete date mentioned by the user/tool when different from `observedDate`. */
34
+ referencedDate?: string;
35
+ /** Original relative date phrase ("tomorrow", "last week") when useful. */
36
+ relativeDate?: string;
37
+ /** 24-hour local time attached to the observation, when available. */
38
+ timeOfDay?: string;
39
+ /**
40
+ * Session that authored the row. Absent on legacy/global rows that predate
41
+ * session tracking; echoed only when the observation actually carries one.
42
+ */
43
+ sessionId?: string;
44
+ /** Lightweight filtering/grouping labels. */
45
+ tags: string[];
46
+ /**
47
+ * Global-pack ranking score (recency × priority × kind bias). Included only
48
+ * when the caller computed a pack score for this row.
49
+ */
50
+ packScore?: number;
51
+ /**
52
+ * Query-relevance score (RRF-fused across phrasings). Included only in
53
+ * `memory recall` output; absent — never null — everywhere else.
54
+ */
55
+ relevanceScore?: number;
56
+ }
57
+ /**
58
+ * Serialize an {@link Observation} into the canonical {@link MemoryJson}
59
+ * shape. Optional ranking scores are attached only when provided, matching
60
+ * the contract that both scores are named explicitly and omitted rather than
61
+ * emitted as null.
62
+ */
63
+ export declare function toMemoryJson(observation: Observation, opts?: {
64
+ packScore?: number;
65
+ relevanceScore?: number;
66
+ }): MemoryJson;
67
+ //# sourceMappingURL=memory-json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-json.d.ts","sourceRoot":"","sources":["../../../src/cli/memory-json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,oBAAoB,CAAC;AAE5B;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,UAAU;IACzB,0CAA0C;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,IAAI,EAAE,eAAe,CAAC;IACtB,wFAAwF;IACxF,MAAM,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAClC,4DAA4D;IAC5D,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,UAAU,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,YAAY,EAAE,MAAM,CAAC;IACrB,mFAAmF;IACnF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,IAAI,EAAE,MAAM,EAAE,CAAC;IACf;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,WAAW,EAAE,WAAW,EACxB,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAO,GACzD,UAAU,CAoBZ"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Serialize an {@link Observation} into the canonical {@link MemoryJson}
3
+ * shape. Optional ranking scores are attached only when provided, matching
4
+ * the contract that both scores are named explicitly and omitted rather than
5
+ * emitted as null.
6
+ */
7
+ export function toMemoryJson(observation, opts = {}) {
8
+ return {
9
+ id: observation.id,
10
+ content: observation.content,
11
+ kind: observation.kind,
12
+ source: observation.source.kind,
13
+ priority: observation.priority,
14
+ createdAt: new Date(observation.createdAt).toISOString(),
15
+ lastUsedAt: new Date(observation.lastUsedAt).toISOString(),
16
+ observedDate: observation.observedDate,
17
+ ...(observation.referencedDate !== undefined
18
+ ? { referencedDate: observation.referencedDate }
19
+ : {}),
20
+ ...(observation.relativeDate !== undefined ? { relativeDate: observation.relativeDate } : {}),
21
+ ...(observation.timeOfDay !== undefined ? { timeOfDay: observation.timeOfDay } : {}),
22
+ ...(observation.sessionId !== undefined ? { sessionId: observation.sessionId } : {}),
23
+ tags: observation.tags,
24
+ ...(opts.packScore !== undefined ? { packScore: opts.packScore } : {}),
25
+ ...(opts.relevanceScore !== undefined ? { relevanceScore: opts.relevanceScore } : {}),
26
+ };
27
+ }
28
+ //# sourceMappingURL=memory-json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-json.js","sourceRoot":"","sources":["../../../src/cli/memory-json.ts"],"names":[],"mappings":"AA+DA;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAC1B,WAAwB,EACxB,OAAwD,EAAE;IAE1D,OAAO;QACL,EAAE,EAAE,WAAW,CAAC,EAAE;QAClB,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,IAAI,EAAE,WAAW,CAAC,IAAI;QACtB,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI;QAC/B,QAAQ,EAAE,WAAW,CAAC,QAAQ;QAC9B,SAAS,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;QACxD,UAAU,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE;QAC1D,YAAY,EAAE,WAAW,CAAC,YAAY;QACtC,GAAG,CAAC,WAAW,CAAC,cAAc,KAAK,SAAS;YAC1C,CAAC,CAAC,EAAE,cAAc,EAAE,WAAW,CAAC,cAAc,EAAE;YAChD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,WAAW,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7F,GAAG,CAAC,WAAW,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpF,GAAG,CAAC,WAAW,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpF,IAAI,EAAE,WAAW,CAAC,IAAI;QACtB,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,GAAG,CAAC,IAAI,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtF,CAAC;AACJ,CAAC"}
@@ -3,9 +3,22 @@ import { type MemoryQueryFilters } from "./memory-db.js";
3
3
  interface MemoryQueryIO {
4
4
  stdout: NodeJS.WritableStream;
5
5
  }
6
+ /**
7
+ * An observation paired with its global-pack ranking score. `packScore` uses
8
+ * the same name the canonical {@link toMemoryJson} shape emits, so the table
9
+ * renderer and the JSON output read one field instead of drifting.
10
+ */
6
11
  type ScoredObservation = Observation & {
7
- score: number;
12
+ packScore: number;
8
13
  };
14
+ /**
15
+ * The canonical `--priority` and `--source` value sets, compile-time-checked
16
+ * to enumerate every union member. Exported so sibling memory commands
17
+ * (e.g. `memory add`) validate the same axes against one source of truth
18
+ * instead of redeclaring parallel literal lists that can silently drift.
19
+ */
20
+ export declare const PRIORITIES: ("high" | "medium" | "low")[];
21
+ export declare const SOURCES: ("user" | "agent" | "system" | "api" | "import")[];
9
22
  export interface MemoryQueryOptions {
10
23
  dbPath: string;
11
24
  json: boolean;
@@ -18,6 +31,12 @@ export interface MemoryQueryOptions {
18
31
  */
19
32
  queryMode: boolean;
20
33
  }
34
+ /**
35
+ * Validate a flag value against a closed set, exiting `64` (usage error) on a
36
+ * missing or out-of-set value. Shared across memory subcommands so every enum
37
+ * flag reports the same message shape and exit code.
38
+ */
39
+ export declare function parseEnum<T extends string>(raw: string | undefined, allowed: readonly T[], flag: string): T;
21
40
  /**
22
41
  * Parse the shared `duet memory` argument set. The same flags drive both the
23
42
  * interactive TUI (bare invocation) and the scriptable query (any filter or
@@ -1 +1 @@
1
- {"version":3,"file":"memory-query.d.ts","sourceRoot":"","sources":["../../../src/cli/memory-query.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAwC,MAAM,oBAAoB,CAAC;AAE5F,OAAO,EAAE,KAAK,kBAAkB,EAAkC,MAAM,gBAAgB,CAAC;AAGzF,UAAU,aAAa;IACrB,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;CAC/B;AAED,KAAK,iBAAiB,GAAG,WAAW,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAmBzD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,kBAAkB,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,SAAS,EAAE,OAAO,CAAC;CACpB;AAwCD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,kBAAkB,GAAG,SAAS,CAoE9E;AAOD,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,iBAAiB,EAAE,GAAG,MAAM,CA4C3E;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,kBAAkB,EAC3B,EAAE,GAAE,aAA0C,GAC7C,OAAO,CAAC,IAAI,CAAC,CAgBf"}
1
+ {"version":3,"file":"memory-query.d.ts","sourceRoot":"","sources":["../../../src/cli/memory-query.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAwC,MAAM,oBAAoB,CAAC;AAE5F,OAAO,EAAE,KAAK,kBAAkB,EAAkC,MAAM,gBAAgB,CAAC;AAIzF,UAAU,aAAa;IACrB,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;CAC/B;AAED;;;;GAIG;AACH,KAAK,iBAAiB,GAAG,WAAW,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAe7D;;;;;GAKG;AACH,eAAO,MAAM,UAAU,+BAAmE,CAAC;AAE3F,eAAO,MAAM,OAAO,oDAA6E,CAAC;AAElG,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,kBAAkB,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,SAAS,EAAE,OAAO,CAAC;CACpB;AA4BD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EACxC,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,OAAO,EAAE,SAAS,CAAC,EAAE,EACrB,IAAI,EAAE,MAAM,GACX,CAAC,CAMH;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,kBAAkB,GAAG,SAAS,CA2E9E;AAOD,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,iBAAiB,EAAE,GAAG,MAAM,CA4C3E;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,kBAAkB,EAC3B,EAAE,GAAE,aAA0C,GAC7C,OAAO,CAAC,IAAI,CAAC,CAmBf"}