@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,7 +1,8 @@
1
1
  import { DEFAULT_MEMORY_DB_PATH } from "../session/session-manager.js";
2
2
  import { printMemoryHelp } from "./help.js";
3
3
  import { scoreObservation, withMemoryDb } from "./memory-db.js";
4
- import { fail, resolveUserPath } from "./shared.js";
4
+ import { toMemoryJson } from "./memory-json.js";
5
+ import { resolveUserPath, usageError } from "./shared.js";
5
6
  /**
6
7
  * Build a runtime filter list that must enumerate *every* member of `T`.
7
8
  * A bare `satisfies readonly T[]` only checks each element is a valid `T`; it
@@ -14,40 +15,51 @@ function exhaustiveList() {
14
15
  return (list) => list;
15
16
  }
16
17
  const KINDS = exhaustiveList()(["observation", "reflection", "note", "manual"]);
17
- const PRIORITIES = exhaustiveList()(["high", "medium", "low"]);
18
- const SOURCES = exhaustiveList()(["user", "agent", "system"]);
18
+ /**
19
+ * The canonical `--priority` and `--source` value sets, compile-time-checked
20
+ * to enumerate every union member. Exported so sibling memory commands
21
+ * (e.g. `memory add`) validate the same axes against one source of truth
22
+ * instead of redeclaring parallel literal lists that can silently drift.
23
+ */
24
+ export const PRIORITIES = exhaustiveList()(["high", "medium", "low"]);
25
+ export const SOURCES = exhaustiveList()(["user", "agent", "system", "api", "import"]);
19
26
  /** Parse UTC date filters; date-only bounds cover the whole day. */
20
27
  function parseDateBound(raw, flag, edge) {
21
28
  if (/^\d{4}-\d{2}-\d{2}$/.test(raw)) {
22
29
  const iso = `${raw}T${edge === "start" ? "00:00:00.000" : "23:59:59.999"}Z`;
23
30
  const ms = Date.parse(iso);
24
31
  if (Number.isNaN(ms))
25
- fail(`Invalid ${flag} date: ${raw}`);
32
+ usageError(`Invalid ${flag} date: ${raw}`);
26
33
  // Reject impossible calendar dates (e.g. 2026-02-31) that JS silently
27
34
  // normalizes into a different day rather than returning NaN — otherwise a
28
35
  // typo slides the createdAt window and the wrong rows get exported.
29
36
  if (new Date(ms).toISOString().slice(0, 10) !== raw) {
30
- fail(`Invalid ${flag} date: ${raw} is not a real calendar date`);
37
+ usageError(`Invalid ${flag} date: ${raw} is not a real calendar date`);
31
38
  }
32
39
  return ms;
33
40
  }
34
41
  if (/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}$/.test(raw)) {
35
42
  const ms = Date.parse(`${raw}Z`);
36
43
  if (Number.isNaN(ms))
37
- fail(`Invalid ${flag} datetime: ${raw}`);
44
+ usageError(`Invalid ${flag} datetime: ${raw}`);
38
45
  // Same round-trip guard for the datetime form (e.g. 2026-02-31T00:00:00).
39
46
  if (new Date(ms).toISOString().slice(0, 19) !== raw) {
40
- fail(`Invalid ${flag} datetime: ${raw} is not a real calendar datetime`);
47
+ usageError(`Invalid ${flag} datetime: ${raw} is not a real calendar datetime`);
41
48
  }
42
49
  return ms;
43
50
  }
44
- fail(`Invalid ${flag} value: ${raw} (expected YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS)`);
51
+ usageError(`Invalid ${flag} value: ${raw} (expected YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS)`);
45
52
  }
46
- function parseEnum(raw, allowed, flag) {
53
+ /**
54
+ * Validate a flag value against a closed set, exiting `64` (usage error) on a
55
+ * missing or out-of-set value. Shared across memory subcommands so every enum
56
+ * flag reports the same message shape and exit code.
57
+ */
58
+ export function parseEnum(raw, allowed, flag) {
47
59
  if (!raw || raw.startsWith("-"))
48
- fail(`Missing value for ${flag}`);
60
+ usageError(`Missing value for ${flag}`);
49
61
  if (!allowed.includes(raw)) {
50
- fail(`Invalid ${flag} value: ${raw} (expected one of ${allowed.join(", ")})`);
62
+ usageError(`Invalid ${flag} value: ${raw} (expected one of ${allowed.join(", ")})`);
51
63
  }
52
64
  return raw;
53
65
  }
@@ -68,7 +80,7 @@ export function parseMemoryArgs(args) {
68
80
  switch (arg) {
69
81
  case "--db":
70
82
  if (!args[i + 1] || args[i + 1]?.startsWith("-"))
71
- fail(`Missing value for ${arg}`);
83
+ usageError(`Missing value for ${arg}`);
72
84
  dbPath = resolveUserPath(args[++i]);
73
85
  break;
74
86
  // `--type` and `--kind` are aliases for the same `Observation.kind` axis.
@@ -85,10 +97,18 @@ export function parseMemoryArgs(args) {
85
97
  filters.source = parseEnum(args[++i], SOURCES, arg);
86
98
  hasFilter = true;
87
99
  break;
100
+ case "--session": {
101
+ const raw = args[++i];
102
+ if (!raw || raw.startsWith("-"))
103
+ usageError(`Missing value for ${arg}`);
104
+ filters.sessionId = raw;
105
+ hasFilter = true;
106
+ break;
107
+ }
88
108
  case "--from": {
89
109
  const raw = args[++i];
90
110
  if (!raw || raw.startsWith("-"))
91
- fail(`Missing value for ${arg}`);
111
+ usageError(`Missing value for ${arg}`);
92
112
  filters.fromMs = parseDateBound(raw, arg, "start");
93
113
  hasFilter = true;
94
114
  break;
@@ -96,7 +116,7 @@ export function parseMemoryArgs(args) {
96
116
  case "--to": {
97
117
  const raw = args[++i];
98
118
  if (!raw || raw.startsWith("-"))
99
- fail(`Missing value for ${arg}`);
119
+ usageError(`Missing value for ${arg}`);
100
120
  filters.toMs = parseDateBound(raw, arg, "end");
101
121
  hasFilter = true;
102
122
  break;
@@ -108,7 +128,7 @@ export function parseMemoryArgs(args) {
108
128
  const raw = args[++i];
109
129
  const seconds = Number(raw);
110
130
  if (!Number.isFinite(seconds) || seconds < 0) {
111
- fail(`Invalid --wait value: ${raw} (expected non-negative number of seconds)`);
131
+ usageError(`Invalid --wait value: ${raw} (expected non-negative number of seconds)`);
112
132
  }
113
133
  waitBudgetMs = seconds * 1000;
114
134
  break;
@@ -118,11 +138,11 @@ export function parseMemoryArgs(args) {
118
138
  printMemoryHelp();
119
139
  return undefined;
120
140
  default:
121
- fail(`Unknown memory option: ${arg}`);
141
+ usageError(`Unknown memory option: ${arg}`);
122
142
  }
123
143
  }
124
144
  if (filters.fromMs !== undefined && filters.toMs !== undefined && filters.fromMs > filters.toMs) {
125
- fail("--from must not be after --to");
145
+ usageError("--from must not be after --to");
126
146
  }
127
147
  return { dbPath, json, filters, waitBudgetMs, queryMode: json || hasFilter };
128
148
  }
@@ -139,7 +159,7 @@ export function formatMemoryTable(observations) {
139
159
  kind: o.kind,
140
160
  priority: o.priority,
141
161
  source: o.source.kind,
142
- score: o.score.toFixed(2),
162
+ score: o.packScore.toFixed(2),
143
163
  content: truncate(o.content, 60),
144
164
  id: o.id,
145
165
  }));
@@ -183,8 +203,13 @@ export async function runMemoryQuery(options, io = { stdout: process.stdout }) {
183
203
  const now = Date.now();
184
204
  const scored = observations.map((o) => ({
185
205
  ...o,
186
- score: scoreObservation(o, now),
206
+ packScore: scoreObservation(o, now),
187
207
  }));
188
- io.stdout.write(options.json ? `${JSON.stringify(scored, null, 2)}\n` : `${formatMemoryTable(scored)}\n`);
208
+ if (options.json) {
209
+ const json = scored.map((o) => toMemoryJson(o, { packScore: o.packScore }));
210
+ io.stdout.write(`${JSON.stringify(json, null, 2)}\n`);
211
+ return;
212
+ }
213
+ io.stdout.write(`${formatMemoryTable(scored)}\n`);
189
214
  }
190
215
  //# sourceMappingURL=memory-query.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory-query.js","sourceRoot":"","sources":["../../../src/cli/memory-query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory-query.js","sourceRoot":"","sources":["../../../src/cli/memory-query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import { type EmbedFn } from "../memory/embedding.js";
2
+ import { type RecallScope } from "../memory/recall.js";
3
+ import type { Observation } from "../types/memory.js";
4
+ interface RecallCommandOptions {
5
+ dbPath: string;
6
+ /** Search text from `--query <q>` or positional args, joined with spaces. */
7
+ query: string;
8
+ scope: RecallScope;
9
+ /** Session id used to evaluate `--scope session|global`; ignored for `all`. */
10
+ sessionId?: string;
11
+ limit: number;
12
+ /** Run paraphrase expansion before fusion. Off by default to keep it cheap. */
13
+ expand: boolean;
14
+ /** Model used to generate paraphrases when `--expand` is set. */
15
+ model: string;
16
+ json: boolean;
17
+ waitBudgetMs?: number;
18
+ }
19
+ interface RecallCommandIO {
20
+ stdout: NodeJS.WritableStream;
21
+ /**
22
+ * Embedding client for the vector path. Defaults to the Duet endpoint
23
+ * client; tests inject a stub (or a throwing one) to exercise fusion and
24
+ * the keyword-only fallback without a network call.
25
+ */
26
+ embed?: EmbedFn;
27
+ }
28
+ /**
29
+ * Run `duet memory recall <query>` — the CLI surface over the same hybrid
30
+ * retrieval pipeline the runner's `recall_memory` tool uses. Both call
31
+ * {@link recallMemoryExpanded}, so a query returns the same fused ranking
32
+ * whether it comes from the model mid-turn or from the shell.
33
+ *
34
+ * Embeddings come from the Duet endpoint via {@link createEmbeddingClient};
35
+ * when `DUET_API_KEY` is unset the vector path degrades to keyword-only and
36
+ * the output is flagged as such, matching the tool's fallback. Passing
37
+ * `--expand` adds model-generated paraphrases (default {@link
38
+ * DEFAULT_CLI_MEMORY_MODEL}) before fusion, again matching the tool.
39
+ */
40
+ export declare function runMemoryRecallCommand(args: string[], io?: RecallCommandIO): Promise<void>;
41
+ /**
42
+ * Parse `duet memory recall` flags and positional query. Pure (no I/O) so it
43
+ * can be unit-tested. Returns `undefined` when `--help` was handled.
44
+ */
45
+ export declare function parseMemoryRecallArgs(args: string[]): RecallCommandOptions | undefined;
46
+ /**
47
+ * Render fused recall hits as an aligned table. Rows are printed in ranked
48
+ * order (best match first), so a RANK column carries the ordering rather than
49
+ * the global-pack `score` the filter-query path prints.
50
+ */
51
+ export declare function formatRecallTable(observations: Observation[]): string;
52
+ export {};
53
+ //# sourceMappingURL=memory-recall.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-recall.d.ts","sourceRoot":"","sources":["../../../src/cli/memory-recall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAwB,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAG7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAMtD,UAAU,oBAAoB;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,WAAW,CAAC;IACnB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,MAAM,EAAE,OAAO,CAAC;IAChB,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,eAAe;IACvB,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;IAC9B;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAID;;;;;;;;;;;GAWG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,MAAM,EAAE,EACd,EAAE,GAAE,eAA4C,GAC/C,OAAO,CAAC,IAAI,CAAC,CA8Cf;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,oBAAoB,GAAG,SAAS,CAuGtF;AAOD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,MAAM,CA4CrE"}
@@ -0,0 +1,217 @@
1
+ import { createEmbeddingClient } from "../memory/embedding.js";
2
+ import { recallMemoryExpanded } from "../memory/recall.js";
3
+ import { DEFAULT_CLI_MEMORY_MODEL } from "../model-resolution/resolver.js";
4
+ import { DEFAULT_MEMORY_DB_PATH } from "../session/session-manager.js";
5
+ import { printMemoryRecallHelp } from "./help.js";
6
+ import { scoreObservation, withMemorySession } from "./memory-db.js";
7
+ import { toMemoryJson } from "./memory-json.js";
8
+ import { resolveUserPath, usageError } from "./shared.js";
9
+ const SCOPES = ["session", "global", "all"];
10
+ /**
11
+ * Run `duet memory recall <query>` — the CLI surface over the same hybrid
12
+ * retrieval pipeline the runner's `recall_memory` tool uses. Both call
13
+ * {@link recallMemoryExpanded}, so a query returns the same fused ranking
14
+ * whether it comes from the model mid-turn or from the shell.
15
+ *
16
+ * Embeddings come from the Duet endpoint via {@link createEmbeddingClient};
17
+ * when `DUET_API_KEY` is unset the vector path degrades to keyword-only and
18
+ * the output is flagged as such, matching the tool's fallback. Passing
19
+ * `--expand` adds model-generated paraphrases (default {@link
20
+ * DEFAULT_CLI_MEMORY_MODEL}) before fusion, again matching the tool.
21
+ */
22
+ export async function runMemoryRecallCommand(args, io = { stdout: process.stdout }) {
23
+ const options = parseMemoryRecallArgs(args);
24
+ if (!options)
25
+ return;
26
+ const embed = io.embed ?? createEmbeddingClient();
27
+ const result = await withMemorySession(options.dbPath, (session) => recallMemoryExpanded({
28
+ session,
29
+ embed,
30
+ query: options.query,
31
+ limit: options.limit,
32
+ scope: options.scope,
33
+ ...(options.sessionId ? { sessionId: options.sessionId } : {}),
34
+ ...(options.expand ? { expansionModel: options.model } : {}),
35
+ }), { waitBudgetMs: options.waitBudgetMs });
36
+ if (options.json) {
37
+ // A single `now` so every row's pack score is computed against the same
38
+ // clock, then attach the fused relevance score the pipeline already
39
+ // returned per id. Emitted as a bare array of canonical memory objects,
40
+ // ordered best-first, matching the `duet memory` query output.
41
+ const now = Date.now();
42
+ const rows = result.observations.map((observation) => toMemoryJson(observation, {
43
+ packScore: scoreObservation(observation, now),
44
+ ...(result.relevanceById.has(observation.id)
45
+ ? { relevanceScore: result.relevanceById.get(observation.id) }
46
+ : {}),
47
+ }));
48
+ io.stdout.write(`${JSON.stringify(rows, null, 2)}\n`);
49
+ return;
50
+ }
51
+ const degraded = result.vectorSearchAttempted && !result.vectorSearchSucceeded;
52
+ if (degraded) {
53
+ io.stdout.write("Semantic search unavailable (keyword-only fallback). Run `duet login` to enable hybrid retrieval.\n");
54
+ }
55
+ io.stdout.write(`${formatRecallTable(result.observations)}\n`);
56
+ }
57
+ /**
58
+ * Parse `duet memory recall` flags and positional query. Pure (no I/O) so it
59
+ * can be unit-tested. Returns `undefined` when `--help` was handled.
60
+ */
61
+ export function parseMemoryRecallArgs(args) {
62
+ let dbPath = DEFAULT_MEMORY_DB_PATH;
63
+ let scope = "all";
64
+ let sessionId;
65
+ let limit = 8;
66
+ let expand = false;
67
+ let model = DEFAULT_CLI_MEMORY_MODEL;
68
+ let json = false;
69
+ let waitBudgetMs;
70
+ const queryParts = [];
71
+ let flagQuery;
72
+ for (let i = 0; i < args.length; i++) {
73
+ const arg = args[i];
74
+ switch (arg) {
75
+ case "--db":
76
+ if (!args[i + 1] || args[i + 1]?.startsWith("-"))
77
+ usageError(`Missing value for ${arg}`);
78
+ dbPath = resolveUserPath(args[++i]);
79
+ break;
80
+ case "--scope": {
81
+ const raw = args[++i];
82
+ if (!raw || !SCOPES.includes(raw)) {
83
+ usageError(`Invalid --scope value: ${raw} (expected one of ${SCOPES.join(", ")})`);
84
+ }
85
+ scope = raw;
86
+ break;
87
+ }
88
+ case "--session":
89
+ if (!args[i + 1] || args[i + 1]?.startsWith("-"))
90
+ usageError(`Missing value for ${arg}`);
91
+ sessionId = args[++i];
92
+ break;
93
+ case "--query":
94
+ if (!args[i + 1] || args[i + 1]?.startsWith("-"))
95
+ usageError(`Missing value for ${arg}`);
96
+ flagQuery = args[++i];
97
+ break;
98
+ case "--limit": {
99
+ const raw = args[++i];
100
+ const value = Number(raw);
101
+ if (!raw || !Number.isInteger(value) || value < 1) {
102
+ usageError(`Invalid --limit value: ${raw} (expected a positive integer)`);
103
+ }
104
+ limit = value;
105
+ break;
106
+ }
107
+ case "--expand":
108
+ expand = true;
109
+ break;
110
+ case "--model":
111
+ if (!args[i + 1] || args[i + 1]?.startsWith("-"))
112
+ usageError(`Missing value for ${arg}`);
113
+ model = args[++i];
114
+ break;
115
+ case "--json":
116
+ json = true;
117
+ break;
118
+ case "--wait": {
119
+ const raw = args[++i];
120
+ const seconds = Number(raw);
121
+ if (!raw || !Number.isFinite(seconds) || seconds < 0) {
122
+ usageError(`Invalid --wait value: ${raw} (expected non-negative number of seconds)`);
123
+ }
124
+ waitBudgetMs = Math.round(seconds * 1000);
125
+ break;
126
+ }
127
+ case "--help":
128
+ case "-h":
129
+ printMemoryRecallHelp();
130
+ return undefined;
131
+ default:
132
+ if (arg.startsWith("-"))
133
+ usageError(`Unknown recall option: ${arg}`);
134
+ queryParts.push(arg);
135
+ }
136
+ }
137
+ // `--query` and positional args are both accepted; positional is the
138
+ // human-friendly form. When both are present they combine, with the
139
+ // explicit flag first.
140
+ const query = [flagQuery, queryParts.join(" ")]
141
+ .filter((part) => Boolean(part && part.trim()))
142
+ .join(" ")
143
+ .trim();
144
+ if (query.length === 0) {
145
+ usageError("No query provided. Pass the text to recall, e.g. `duet memory recall wire budget cap`.");
146
+ }
147
+ // session/global scope filter is a no-op without an id to compare against,
148
+ // so require one rather than silently returning an unfiltered (or empty)
149
+ // result set.
150
+ if ((scope === "session" || scope === "global") && !sessionId) {
151
+ usageError(`--scope ${scope} requires --session <id> to compare against.`);
152
+ }
153
+ return {
154
+ dbPath,
155
+ query,
156
+ scope,
157
+ ...(sessionId ? { sessionId } : {}),
158
+ limit,
159
+ expand,
160
+ model,
161
+ json,
162
+ ...(waitBudgetMs !== undefined ? { waitBudgetMs } : {}),
163
+ };
164
+ }
165
+ function truncate(value, max) {
166
+ const collapsed = value.replace(/\s+/g, " ");
167
+ return collapsed.length <= max ? collapsed : `${collapsed.slice(0, max - 1)}…`;
168
+ }
169
+ /**
170
+ * Render fused recall hits as an aligned table. Rows are printed in ranked
171
+ * order (best match first), so a RANK column carries the ordering rather than
172
+ * the global-pack `score` the filter-query path prints.
173
+ */
174
+ export function formatRecallTable(observations) {
175
+ if (observations.length === 0) {
176
+ return "No memories matched. Try different words, `--expand`, or a wider `--scope`.";
177
+ }
178
+ const rows = observations.map((o, index) => ({
179
+ rank: String(index + 1),
180
+ created: new Date(o.createdAt).toISOString().slice(0, 10),
181
+ kind: o.kind,
182
+ priority: o.priority,
183
+ source: o.source.kind,
184
+ content: truncate(o.content, 70),
185
+ id: o.id,
186
+ }));
187
+ const headers = {
188
+ rank: "#",
189
+ created: "CREATED",
190
+ kind: "KIND",
191
+ priority: "PRIORITY",
192
+ source: "SOURCE",
193
+ content: "CONTENT",
194
+ id: "MEMORY ID",
195
+ };
196
+ const width = (key, cap) => Math.min(cap, Math.max(headers[key].length, ...rows.map((row) => row[key].length)));
197
+ const w = {
198
+ rank: width("rank", 3),
199
+ created: width("created", 10),
200
+ kind: width("kind", 11),
201
+ priority: width("priority", 8),
202
+ source: width("source", 6),
203
+ content: width("content", 70),
204
+ id: width("id", 20),
205
+ };
206
+ const line = (cells) => [
207
+ cells.rank.padStart(w.rank),
208
+ cells.created.padEnd(w.created),
209
+ cells.kind.padEnd(w.kind),
210
+ cells.priority.padEnd(w.priority),
211
+ cells.source.padEnd(w.source),
212
+ truncate(cells.content, w.content).padEnd(w.content),
213
+ cells.id,
214
+ ].join(" ");
215
+ return [line(headers), ...rows.map(line)].join("\n");
216
+ }
217
+ //# sourceMappingURL=memory-recall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-recall.js","sourceRoot":"","sources":["../../../src/cli/memory-recall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAgB,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAoB,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA4B1D,MAAM,MAAM,GAA2B,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAEpE;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAAc,EACd,KAAsB,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE;IAEhD,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,CAAC,OAAO;QAAE,OAAO;IAErB,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,IAAI,qBAAqB,EAAE,CAAC;IAElD,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACpC,OAAO,CAAC,MAAM,EACd,CAAC,OAAO,EAAE,EAAE,CACV,oBAAoB,CAAC;QACnB,OAAO;QACP,KAAK;QACL,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC7D,CAAC,EACJ,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CACvC,CAAC;IAEF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,wEAAwE;QACxE,oEAAoE;QACpE,wEAAwE;QACxE,+DAA+D;QAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CACnD,YAAY,CAAC,WAAW,EAAE;YACxB,SAAS,EAAE,gBAAgB,CAAC,WAAW,EAAE,GAAG,CAAC;YAC7C,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC1C,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAE,EAAE;gBAC/D,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,CACH,CAAC;QACF,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACtD,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,qBAAqB,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC;IAC/E,IAAI,QAAQ,EAAE,CAAC;QACb,EAAE,CAAC,MAAM,CAAC,KAAK,CACb,qGAAqG,CACtG,CAAC;IACJ,CAAC;IACD,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,iBAAiB,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACjE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAc;IAClD,IAAI,MAAM,GAAG,sBAAsB,CAAC;IACpC,IAAI,KAAK,GAAgB,KAAK,CAAC;IAC/B,IAAI,SAA6B,CAAC;IAClC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,KAAK,GAAG,wBAAwB,CAAC;IACrC,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,IAAI,YAAgC,CAAC;IACrC,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,IAAI,SAA6B,CAAC;IAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACrB,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,MAAM;gBACT,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC;oBAAE,UAAU,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;gBACzF,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAE,CAAC,CAAC;gBACrC,MAAM;YACR,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBACtB,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAkB,CAAC,EAAE,CAAC;oBACjD,UAAU,CAAC,0BAA0B,GAAG,qBAAqB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACrF,CAAC;gBACD,KAAK,GAAG,GAAkB,CAAC;gBAC3B,MAAM;YACR,CAAC;YACD,KAAK,WAAW;gBACd,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC;oBAAE,UAAU,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;gBACzF,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,CAAE,CAAC;gBACvB,MAAM;YACR,KAAK,SAAS;gBACZ,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC;oBAAE,UAAU,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;gBACzF,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,CAAE,CAAC;gBACvB,MAAM;YACR,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBACtB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC1B,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;oBAClD,UAAU,CAAC,0BAA0B,GAAG,gCAAgC,CAAC,CAAC;gBAC5E,CAAC;gBACD,KAAK,GAAG,KAAK,CAAC;gBACd,MAAM;YACR,CAAC;YACD,KAAK,UAAU;gBACb,MAAM,GAAG,IAAI,CAAC;gBACd,MAAM;YACR,KAAK,SAAS;gBACZ,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC;oBAAE,UAAU,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;gBACzF,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAE,CAAC;gBACnB,MAAM;YACR,KAAK,QAAQ;gBACX,IAAI,GAAG,IAAI,CAAC;gBACZ,MAAM;YACR,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBACtB,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC5B,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;oBACrD,UAAU,CAAC,yBAAyB,GAAG,4CAA4C,CAAC,CAAC;gBACvF,CAAC;gBACD,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;gBAC1C,MAAM;YACR,CAAC;YACD,KAAK,QAAQ,CAAC;YACd,KAAK,IAAI;gBACP,qBAAqB,EAAE,CAAC;gBACxB,OAAO,SAAS,CAAC;YACnB;gBACE,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;oBAAE,UAAU,CAAC,0BAA0B,GAAG,EAAE,CAAC,CAAC;gBACrE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,oEAAoE;IACpE,uBAAuB;IACvB,MAAM,KAAK,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC5C,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SAC9D,IAAI,CAAC,GAAG,CAAC;SACT,IAAI,EAAE,CAAC;IACV,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,UAAU,CACR,wFAAwF,CACzF,CAAC;IACJ,CAAC;IACD,2EAA2E;IAC3E,yEAAyE;IACzE,cAAc;IACd,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9D,UAAU,CAAC,WAAW,KAAK,8CAA8C,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO;QACL,MAAM;QACN,KAAK;QACL,KAAK;QACL,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnC,KAAK;QACL,MAAM;QACN,KAAK;QACL,IAAI;QACJ,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxD,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa,EAAE,GAAW;IAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7C,OAAO,SAAS,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;AACjF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,YAA2B;IAC3D,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,6EAA6E,CAAC;IACvF,CAAC;IACD,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC3C,IAAI,EAAE,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;QACvB,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QACzD,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI;QACrB,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAChC,EAAE,EAAE,CAAC,CAAC,EAAE;KACT,CAAC,CAAC,CAAC;IACJ,MAAM,OAAO,GAAG;QACd,IAAI,EAAE,GAAG;QACT,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,SAAS;QAClB,EAAE,EAAE,WAAW;KAChB,CAAC;IACF,MAAM,KAAK,GAAG,CAAC,GAAyB,EAAE,GAAW,EAAE,EAAE,CACvD,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACtF,MAAM,CAAC,GAAG;QACR,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACtB,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC;QAC7B,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;QACvB,QAAQ,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;QAC9B,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1B,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC;QAC7B,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;KACpB,CAAC;IACF,MAAM,IAAI,GAAG,CAAC,KAAqB,EAAE,EAAE,CACrC;QACE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3B,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QACzB,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;QACjC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7B,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QACpD,KAAK,CAAC,EAAE;KACT,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvD,CAAC"}
@@ -5,7 +5,9 @@
5
5
  * memory` opens the interactive TUI for browsing/editing/deleting, while
6
6
  * passing `--json` or any filter flag (`--type`/`--kind`/`--priority`/
7
7
  * `--source`/`--from`/`--to`) turns the same invocation into a non-TUI,
8
- * scriptable query. `duet memory reflect` remains a separate subcommand.
8
+ * scriptable query. `duet memory recall` runs hybrid semantic search over the
9
+ * same pipeline as the runner's `recall_memory` tool, and `duet memory
10
+ * reflect` remains a separate subcommand.
9
11
  *
10
12
  * Defaults to the same `~/.duet/memory.db` the runner writes to so changes
11
13
  * propagate to the next session immediately.
@@ -1 +1 @@
1
- {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/cli/memory.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwCpE"}
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/cli/memory.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;GAaG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyCpE"}
@@ -1,10 +1,10 @@
1
1
  import { MemoryLockTimeoutError } from "../memory/pglite.js";
2
2
  import { runMemoryAddCommand } from "./memory-add.js";
3
- import { MemoryDb } from "./memory-db.js";
3
+ import { failMemoryLockTimeout, MemoryDb } from "./memory-db.js";
4
4
  import { parseMemoryArgs, runMemoryQuery } from "./memory-query.js";
5
+ import { runMemoryRecallCommand } from "./memory-recall.js";
5
6
  import { runMemoryReflectCommand } from "./memory-reflect.js";
6
7
  import { runMemoryTui } from "./memory-tui.js";
7
- import { fail } from "./shared.js";
8
8
  import { installShutdownHandlers } from "./shutdown.js";
9
9
  /**
10
10
  * Run `duet memory` (alias: `duet memories`).
@@ -13,7 +13,9 @@ import { installShutdownHandlers } from "./shutdown.js";
13
13
  * memory` opens the interactive TUI for browsing/editing/deleting, while
14
14
  * passing `--json` or any filter flag (`--type`/`--kind`/`--priority`/
15
15
  * `--source`/`--from`/`--to`) turns the same invocation into a non-TUI,
16
- * scriptable query. `duet memory reflect` remains a separate subcommand.
16
+ * scriptable query. `duet memory recall` runs hybrid semantic search over the
17
+ * same pipeline as the runner's `recall_memory` tool, and `duet memory
18
+ * reflect` remains a separate subcommand.
17
19
  *
18
20
  * Defaults to the same `~/.duet/memory.db` the runner writes to so changes
19
21
  * propagate to the next session immediately.
@@ -27,6 +29,10 @@ export async function runMemoryCommand(args) {
27
29
  await runMemoryAddCommand(args.slice(1));
28
30
  return;
29
31
  }
32
+ if (args[0] === "recall") {
33
+ await runMemoryRecallCommand(args.slice(1));
34
+ return;
35
+ }
30
36
  const options = parseMemoryArgs(args);
31
37
  if (!options)
32
38
  return;
@@ -41,7 +47,7 @@ export async function runMemoryCommand(args) {
41
47
  }
42
48
  catch (error) {
43
49
  if (error instanceof MemoryLockTimeoutError) {
44
- 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.`);
50
+ failMemoryLockTimeout(error);
45
51
  }
46
52
  throw error;
47
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../src/cli/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAExD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAc;IACnD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;QACtB,MAAM,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,OAAO;QAAE,OAAO;IAErB,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;IACzC,IAAI,EAAY,CAAC;IACjB,IAAI,CAAC;QACH,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;IACrD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,sBAAsB,EAAE,CAAC;YAC5C,IAAI,CACF,sBAAsB,KAAK,CAAC,OAAO,gCAAgC,KAAK,CAAC,SAAS,UAChF,KAAK,CAAC,QAAQ,GAAG,IACnB,2EAA2E,CAC5E,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IACD,MAAM,sBAAsB,GAAG,uBAAuB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IACzE,IAAI,CAAC;QACH,MAAM,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;YAAS,CAAC;QACT,sBAAsB,EAAE,CAAC;QACzB,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../src/cli/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAExD;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAc;IACnD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;QACtB,MAAM,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,OAAO;IACT,CAAC;IAED,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,OAAO;QAAE,OAAO;IAErB,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;IACzC,IAAI,EAAY,CAAC;IACjB,IAAI,CAAC;QACH,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;IACrD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,sBAAsB,EAAE,CAAC;YAC5C,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IACD,MAAM,sBAAsB,GAAG,uBAAuB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IACzE,IAAI,CAAC;QACH,MAAM,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;YAAS,CAAC;QACT,sBAAsB,EAAE,CAAC;QACzB,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;AACH,CAAC"}
@@ -2,9 +2,9 @@ import { createGateway } from "ai";
2
2
  /**
3
3
  * The `duet model` subcommand talks to models directly through the Vercel AI
4
4
  * SDK (`ai@^7`), pointed at the Duet gateway instead of the pi harness. The
5
- * gateway re-exposes Vercel's AI Gateway under `/api/v1/ai-gateway`; the SDK's
6
- * gateway provider speaks the versioned `/v4/ai` protocol path, and `/v1/models`
7
- * serves the catalog. Auth is the org-scoped `DUET_API_KEY` Bearer token.
5
+ * gateway provider speaks the versioned `/v4/ai` protocol path, and
6
+ * `/v1/models` serves the catalog. Auth is the workspace-scoped `DUET_API_KEY`
7
+ * Bearer token.
8
8
  */
9
9
  export declare const DUET_API_KEY_ENV = "DUET_API_KEY";
10
10
  /** Capability classes the gateway tags each model with via `/v1/models`. */
@@ -3,9 +3,9 @@ import { getDuetGatewayBaseUrl } from "../model-resolution/duet-gateway.js";
3
3
  /**
4
4
  * The `duet model` subcommand talks to models directly through the Vercel AI
5
5
  * SDK (`ai@^7`), pointed at the Duet gateway instead of the pi harness. The
6
- * gateway re-exposes Vercel's AI Gateway under `/api/v1/ai-gateway`; the SDK's
7
- * gateway provider speaks the versioned `/v4/ai` protocol path, and `/v1/models`
8
- * serves the catalog. Auth is the org-scoped `DUET_API_KEY` Bearer token.
6
+ * gateway provider speaks the versioned `/v4/ai` protocol path, and
7
+ * `/v1/models` serves the catalog. Auth is the workspace-scoped `DUET_API_KEY`
8
+ * Bearer token.
9
9
  */
10
10
  export const DUET_API_KEY_ENV = "DUET_API_KEY";
11
11
  // Generation can be slow — image/video models routinely run for minutes — so
@@ -35,9 +35,17 @@ export interface RpcRunner {
35
35
  * recover from a bad line without losing an in-flight turn.
36
36
  *
37
37
  * Unlike the TUI path, RPC mode bypasses {@link SessionManager} entirely:
38
- * no session ids, no `state.json`, no resume hints. Persistence policy lives
39
- * with the caller. Memory still works regardless of session: `--incognito`
40
- * keeps it in-process, otherwise it persists to the configured memory db.
38
+ * no `state.json`, no resume hints. Persistence policy lives with the caller.
39
+ * Memory still works regardless of session: `--incognito` keeps it in-process,
40
+ * otherwise it persists to the configured memory db.
41
+ *
42
+ * Session attribution is opt-in via the `--session <id>` spawn flag. One RPC
43
+ * process is one logical session (a second `start` is rejected), so the id is
44
+ * a construction-time config value rather than a per-turn field: it lands on
45
+ * `config.sessionId` before the runner is built and stamps every observation
46
+ * written during the process. The `start` command and `turn_started` event
47
+ * shape are unchanged — the caller already supplied the id, so it is not
48
+ * echoed back.
41
49
  */
42
50
  export declare function runRpcCommand(args: string[], pkg: PackageMetadata): Promise<void>;
43
51
  export interface ParsedRpcArgs {
@@ -53,9 +61,15 @@ export interface ParsedRpcArgs {
53
61
  * default so RPC mode persists memory just like the TUI/run path.
54
62
  */
55
63
  dbPath?: string;
64
+ /**
65
+ * Caller-owned session id from the `--session <id>` spawn flag. Flows into
66
+ * `config.sessionId` before the {@link TurnRunner} is constructed, so every
67
+ * observation written during the process is attributed to this session. One
68
+ * RPC process is one logical session; omitted when the host does not want
69
+ * per-session attribution (writes then carry no session id).
70
+ */
71
+ sessionId?: string;
56
72
  incognito: boolean;
57
- /** When true, skip the on-load default-skill sync. */
58
- noSkillSync: boolean;
59
73
  }
60
74
  /**
61
75
  * Parse CLI args for `--rpc`. The accepted set mirrors the run command's
@@ -1 +1 @@
1
- {"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../../src/cli/rpc.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,kBAAkB,EAClB,4BAA4B,EAE5B,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAKhD;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,iBAAiB,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAChF,IAAI,CACF,OAAO,EAAE,OAAO,CAAC,iBAAiB,EAAE;QAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAA;KAAE,CAAC,GAC1E,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC9B,SAAS,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC/C,iBAAiB,CAAC,OAAO,EAAE,4BAA4B,GAAG,IAAI,CAAC;IAC/D,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5D;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAmFvF;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,sDAAsD;IACtD,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,aAAa,CAgG1D;AAED,MAAM,WAAW,mBAAmB;IAClC;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;CACzC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,aAAa,CAAC,iBAAiB,CAAC,EAC1C,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC,CAsFf;AA0BD;;;;;GAKG;AACH,MAAM,MAAM,yBAAyB,GACjC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAErB;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,yBAAyB,CAuB9E"}
1
+ {"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../../src/cli/rpc.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,kBAAkB,EAClB,4BAA4B,EAE5B,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAKhD;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,iBAAiB,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAChF,IAAI,CACF,OAAO,EAAE,OAAO,CAAC,iBAAiB,EAAE;QAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAA;KAAE,CAAC,GAC1E,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC9B,SAAS,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC/C,iBAAiB,CAAC,OAAO,EAAE,4BAA4B,GAAG,IAAI,CAAC;IAC/D,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAuEvF;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,aAAa,CAoG1D;AAED,MAAM,WAAW,mBAAmB;IAClC;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;CACzC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,aAAa,CAAC,iBAAiB,CAAC,EAC1C,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC,CAsFf;AA0BD;;;;;GAKG;AACH,MAAM,MAAM,yBAAyB,GACjC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAErB;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,yBAAyB,CAuB9E"}