@getrift/rift 0.1.0-beta.15 → 0.1.0-beta.17

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 (110) hide show
  1. package/dist/src/capture/auto-capture.d.ts +7 -0
  2. package/dist/src/capture/auto-capture.d.ts.map +1 -1
  3. package/dist/src/capture/auto-capture.js +82 -15
  4. package/dist/src/capture/auto-capture.js.map +1 -1
  5. package/dist/src/capture/observability.d.ts +6 -0
  6. package/dist/src/capture/observability.d.ts.map +1 -1
  7. package/dist/src/capture/observability.js +3 -0
  8. package/dist/src/capture/observability.js.map +1 -1
  9. package/dist/src/capture/recover-quarantine.d.ts +28 -0
  10. package/dist/src/capture/recover-quarantine.d.ts.map +1 -1
  11. package/dist/src/capture/recover-quarantine.js +43 -0
  12. package/dist/src/capture/recover-quarantine.js.map +1 -1
  13. package/dist/src/cli/commands/capture-recover.d.ts +28 -0
  14. package/dist/src/cli/commands/capture-recover.d.ts.map +1 -1
  15. package/dist/src/cli/commands/capture-recover.js +109 -52
  16. package/dist/src/cli/commands/capture-recover.js.map +1 -1
  17. package/dist/src/cli/commands/capture.d.ts.map +1 -1
  18. package/dist/src/cli/commands/capture.js +14 -1
  19. package/dist/src/cli/commands/capture.js.map +1 -1
  20. package/dist/src/cli/commands/doctor.d.ts.map +1 -1
  21. package/dist/src/cli/commands/doctor.js +60 -1
  22. package/dist/src/cli/commands/doctor.js.map +1 -1
  23. package/dist/src/cli/commands/onboard.d.ts.map +1 -1
  24. package/dist/src/cli/commands/onboard.js +8 -1
  25. package/dist/src/cli/commands/onboard.js.map +1 -1
  26. package/dist/src/cli/status/friend-header.d.ts.map +1 -1
  27. package/dist/src/cli/status/friend-header.js +17 -10
  28. package/dist/src/cli/status/friend-header.js.map +1 -1
  29. package/dist/src/diagnostics/doctor.js +11 -10
  30. package/dist/src/diagnostics/doctor.js.map +1 -1
  31. package/dist/src/diagnostics/repair-prompt.d.ts.map +1 -1
  32. package/dist/src/diagnostics/repair-prompt.js +17 -1
  33. package/dist/src/diagnostics/repair-prompt.js.map +1 -1
  34. package/dist/src/jobs/handlers/reconcile.d.ts +17 -0
  35. package/dist/src/jobs/handlers/reconcile.d.ts.map +1 -1
  36. package/dist/src/jobs/handlers/reconcile.js +85 -13
  37. package/dist/src/jobs/handlers/reconcile.js.map +1 -1
  38. package/dist/src/jobs/handlers/reindex.d.ts.map +1 -1
  39. package/dist/src/jobs/handlers/reindex.js +1 -0
  40. package/dist/src/jobs/handlers/reindex.js.map +1 -1
  41. package/dist/src/jobs/handlers/save.d.ts.map +1 -1
  42. package/dist/src/jobs/handlers/save.js +32 -0
  43. package/dist/src/jobs/handlers/save.js.map +1 -1
  44. package/dist/src/jobs/queue.d.ts +40 -1
  45. package/dist/src/jobs/queue.d.ts.map +1 -1
  46. package/dist/src/jobs/queue.js +448 -26
  47. package/dist/src/jobs/queue.js.map +1 -1
  48. package/dist/src/providers/codex-cli-runner.d.ts +14 -0
  49. package/dist/src/providers/codex-cli-runner.d.ts.map +1 -1
  50. package/dist/src/providers/codex-cli-runner.js +120 -39
  51. package/dist/src/providers/codex-cli-runner.js.map +1 -1
  52. package/dist/src/retrieval/context-pack.d.ts +6 -0
  53. package/dist/src/retrieval/context-pack.d.ts.map +1 -1
  54. package/dist/src/retrieval/context-pack.js +1 -0
  55. package/dist/src/retrieval/context-pack.js.map +1 -1
  56. package/dist/src/retrieval/current-truth.d.ts +36 -2
  57. package/dist/src/retrieval/current-truth.d.ts.map +1 -1
  58. package/dist/src/retrieval/current-truth.js +48 -29
  59. package/dist/src/retrieval/current-truth.js.map +1 -1
  60. package/dist/src/retrieval/locator-boost.d.ts +37 -0
  61. package/dist/src/retrieval/locator-boost.d.ts.map +1 -0
  62. package/dist/src/retrieval/locator-boost.js +129 -0
  63. package/dist/src/retrieval/locator-boost.js.map +1 -0
  64. package/dist/src/retrieval/report-demotion.d.ts +46 -0
  65. package/dist/src/retrieval/report-demotion.d.ts.map +1 -0
  66. package/dist/src/retrieval/report-demotion.js +169 -0
  67. package/dist/src/retrieval/report-demotion.js.map +1 -0
  68. package/dist/src/server/app.d.ts.map +1 -1
  69. package/dist/src/server/app.js +8 -2
  70. package/dist/src/server/app.js.map +1 -1
  71. package/dist/src/server/routes/compact.d.ts.map +1 -1
  72. package/dist/src/server/routes/compact.js +4 -1
  73. package/dist/src/server/routes/compact.js.map +1 -1
  74. package/dist/src/server/routes/context.d.ts +1 -1
  75. package/dist/src/server/routes/context.d.ts.map +1 -1
  76. package/dist/src/server/routes/context.js +2 -1
  77. package/dist/src/server/routes/context.js.map +1 -1
  78. package/dist/src/server/routes/enqueue.d.ts +11 -0
  79. package/dist/src/server/routes/enqueue.d.ts.map +1 -0
  80. package/dist/src/server/routes/enqueue.js +17 -0
  81. package/dist/src/server/routes/enqueue.js.map +1 -0
  82. package/dist/src/server/routes/friend-status.d.ts +9 -0
  83. package/dist/src/server/routes/friend-status.d.ts.map +1 -1
  84. package/dist/src/server/routes/friend-status.js +9 -0
  85. package/dist/src/server/routes/friend-status.js.map +1 -1
  86. package/dist/src/server/routes/ingest.d.ts.map +1 -1
  87. package/dist/src/server/routes/ingest.js +4 -1
  88. package/dist/src/server/routes/ingest.js.map +1 -1
  89. package/dist/src/server/routes/reconcile.d.ts.map +1 -1
  90. package/dist/src/server/routes/reconcile.js +4 -1
  91. package/dist/src/server/routes/reconcile.js.map +1 -1
  92. package/dist/src/server/routes/reindex.d.ts.map +1 -1
  93. package/dist/src/server/routes/reindex.js +4 -1
  94. package/dist/src/server/routes/reindex.js.map +1 -1
  95. package/dist/src/server/routes/save.d.ts.map +1 -1
  96. package/dist/src/server/routes/save.js +4 -1
  97. package/dist/src/server/routes/save.js.map +1 -1
  98. package/dist/src/server/routes/search.d.ts +1 -1
  99. package/dist/src/server/routes/search.d.ts.map +1 -1
  100. package/dist/src/server/routes/search.js +44 -1
  101. package/dist/src/server/routes/search.js.map +1 -1
  102. package/dist/src/server/routes/triage.d.ts.map +1 -1
  103. package/dist/src/server/routes/triage.js +4 -1
  104. package/dist/src/server/routes/triage.js.map +1 -1
  105. package/dist/src/storage/rebuild.d.ts +21 -0
  106. package/dist/src/storage/rebuild.d.ts.map +1 -1
  107. package/dist/src/storage/rebuild.js +135 -66
  108. package/dist/src/storage/rebuild.js.map +1 -1
  109. package/operator/swiftbar/render-menu.py +47 -10
  110. package/package.json +6 -3
@@ -1,6 +1,18 @@
1
1
  import type { Config } from "../config/schema.js";
2
2
  import type { EmbeddingProvider } from "../providers/types.js";
3
3
  import type { TableName } from "./tables.js";
4
+ /**
5
+ * Shared duplicate-resolution policy for conversation raw files.
6
+ *
7
+ * Both repair paths — reconcile and full rebuild — must pick the SAME winner
8
+ * when several raw files compete for one row id or idempotency_key, otherwise
9
+ * the canonical conversation row could flip depending on which tool last ran,
10
+ * which is corrosive to trust and debugging. Policy: most-recent raw wins,
11
+ * ordered by filename (`<timestamp>_<id>.json`, ISO-8601-derived → lexicographic
12
+ * == chronological). Compare basenames so the ordering is stable regardless of
13
+ * which source folder a file lives in. Sorts most-recent FIRST (descending).
14
+ */
15
+ export declare function compareRawRecencyDesc(aPath: string, bPath: string): number;
4
16
  export interface RebuildDeps {
5
17
  config: Config;
6
18
  embeddingProvider: EmbeddingProvider;
@@ -11,6 +23,15 @@ export interface RebuildDeps {
11
23
  export interface RebuildReport {
12
24
  tables_rebuilt: TableName[];
13
25
  rows_reindexed: number;
26
+ /**
27
+ * Conversation raw files skipped because a row with the same non-empty
28
+ * `idempotency_key` was already inserted into the rebuilt index under a
29
+ * different row id. Mirrors reconcile's `missing_skipped_duplicate_key`:
30
+ * without it, an orphan raw left on disk (e.g. one reconcile already
31
+ * skipped) would resurface as a duplicate every time the index is rebuilt
32
+ * from raw — rebuild groups by row id and would otherwise miss the dup.
33
+ */
34
+ conversations_skipped_duplicate_key: number;
14
35
  }
15
36
  /**
16
37
  * Full rebuild from raw disk state via shadow-table swap.
@@ -1 +1 @@
1
- {"version":3,"file":"rebuild.d.ts","sourceRoot":"","sources":["../../../src/storage/rebuild.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAO/D,OAAO,KAAK,EAIV,SAAS,EACV,MAAM,aAAa,CAAC;AAWrB,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,sBAAsB,CAAC,EAAE,iBAAiB,CAAC;CAC5C;AAED,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,SAAS,EAAE,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CA4C3E;AA8QD,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,eAAe,GAAG,WAAW,GAAG,iBAAiB,CAAC;AAErF,MAAM,WAAW,cAAc;IAC7B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,KAAK,EAAE,YAAY,CAAC;IACpB,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sBAAsB,CAAC,EAAE,iBAAiB,CAAC;CAC5C;AAED,wBAAsB,OAAO,CAC3B,iBAAiB,EAAE,iBAAiB,EACpC,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,EACf,sBAAsB,CAAC,EAAE,iBAAiB,GACzC,OAAO,CAAC,MAAM,CAAC,CAcjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAmDjB;AAoND,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG1E;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAa/E"}
1
+ {"version":3,"file":"rebuild.d.ts","sourceRoot":"","sources":["../../../src/storage/rebuild.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAO/D,OAAO,KAAK,EAIV,SAAS,EACV,MAAM,aAAa,CAAC;AAWrB;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1E;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,sBAAsB,CAAC,EAAE,iBAAiB,CAAC;CAC5C;AAED,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,SAAS,EAAE,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB;;;;;;;OAOG;IACH,mCAAmC,EAAE,MAAM,CAAC;CAC7C;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CAgD3E;AAqTD,MAAM,MAAM,YAAY,GACpB,KAAK,GACL,eAAe,GACf,WAAW,GACX,iBAAiB,CAAC;AAEtB,MAAM,WAAW,cAAc;IAC7B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,KAAK,EAAE,YAAY,CAAC;IACpB,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sBAAsB,CAAC,EAAE,iBAAiB,CAAC;CAC5C;AAED,wBAAsB,OAAO,CAC3B,iBAAiB,EAAE,iBAAiB,EACpC,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,EACf,sBAAsB,CAAC,EAAE,iBAAiB,GACzC,OAAO,CAAC,MAAM,CAAC,CA2CjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAoDjB;AAyPD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG1E;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,GACf,IAAI,GAAG,SAAS,CAclB"}
@@ -18,6 +18,20 @@ import { createShadowSwap } from "./shadow-swap.js";
18
18
  import { recordEmbed } from "../observability/embedding-events.js";
19
19
  import { appendIndexEvent, recordIndexWrite, } from "../observability/index-events.js";
20
20
  const ALL_CONV_SOURCES = [...CONVERSATION_SOURCES, "inbox"];
21
+ /**
22
+ * Shared duplicate-resolution policy for conversation raw files.
23
+ *
24
+ * Both repair paths — reconcile and full rebuild — must pick the SAME winner
25
+ * when several raw files compete for one row id or idempotency_key, otherwise
26
+ * the canonical conversation row could flip depending on which tool last ran,
27
+ * which is corrosive to trust and debugging. Policy: most-recent raw wins,
28
+ * ordered by filename (`<timestamp>_<id>.json`, ISO-8601-derived → lexicographic
29
+ * == chronological). Compare basenames so the ordering is stable regardless of
30
+ * which source folder a file lives in. Sorts most-recent FIRST (descending).
31
+ */
32
+ export function compareRawRecencyDesc(aPath, bPath) {
33
+ return path.basename(bPath).localeCompare(path.basename(aPath));
34
+ }
21
35
  /**
22
36
  * Full rebuild from raw disk state via shadow-table swap.
23
37
  * Creates shadow tables for all four tables, populates them from
@@ -25,7 +39,11 @@ const ALL_CONV_SOURCES = [...CONVERSATION_SOURCES, "inbox"];
25
39
  */
26
40
  export async function fullRebuild(deps) {
27
41
  const swap = createShadowSwap(deps.dataDir);
28
- const report = { tables_rebuilt: [], rows_reindexed: 0 };
42
+ const report = {
43
+ tables_rebuilt: [],
44
+ rows_reindexed: 0,
45
+ conversations_skipped_duplicate_key: 0,
46
+ };
29
47
  const swaps = new Map();
30
48
  // Per-table populate counts. Used to emit one post-commit "live"
31
49
  // index-event per table so `index.last_update_at` is only credited
@@ -100,7 +118,11 @@ async function populateStructuredDocsShadows(deps, swap, swaps, populated, repor
100
118
  const targetShadow = isLocal ? localShadow : cloudShadow;
101
119
  try {
102
120
  const content = fs.readFileSync(canonical, "utf-8");
103
- const embedding = await recordEmbed(deps.dataDir, provider, { pipeline: "backfill", operation: "structured_doc_embedding", input_count: 1 }, () => provider.embed(content));
121
+ const embedding = await recordEmbed(deps.dataDir, provider, {
122
+ pipeline: "backfill",
123
+ operation: "structured_doc_embedding",
124
+ input_count: 1,
125
+ }, () => provider.embed(content));
104
126
  const row = {
105
127
  id,
106
128
  source_path: canonical,
@@ -114,7 +136,9 @@ async function populateStructuredDocsShadows(deps, swap, swaps, populated, repor
114
136
  indexed_at: new Date().toISOString(),
115
137
  metadata: "{}",
116
138
  };
117
- const targetTableName = isLocal ? "structured_docs_local" : "structured_docs";
139
+ const targetTableName = isLocal
140
+ ? "structured_docs_local"
141
+ : "structured_docs";
118
142
  await recordIndexWrite(deps.dataDir, {
119
143
  table: targetTableName,
120
144
  pipeline: "backfill",
@@ -138,74 +162,95 @@ async function populateConversationShadows(deps, swap, swaps, populated, report)
138
162
  swaps.set("conversations_cold", coldShadow);
139
163
  const cutoff = new Date();
140
164
  cutoff.setDate(cutoff.getDate() - (deps.config.compaction.age_threshold_days ?? 30));
165
+ // Durable dedup across the whole rebuild: a non-empty idempotency_key may
166
+ // only be inserted once. Mirrors reconcile's key-skip so a raw file that
167
+ // reconcile already declined to revive cannot reappear as a duplicate here.
168
+ const seenKeys = new Set();
169
+ // Group raw files by stable row id ACROSS ALL SOURCES first. Refresh-on-grow
170
+ // may leave more than one raw artifact for the same id on disk if pruning was
171
+ // interrupted; reinserting all of them duplicates the conversation. Keep only
172
+ // the most-recent raw per id (shared recency policy). Collecting globally —
173
+ // rather than per source folder — matters because `seenKeys` is global: if we
174
+ // sorted within each source folder, an older raw in an earlier folder could
175
+ // claim a key before a newer same-key raw in a later folder was ever seen.
176
+ const latestByRowId = new Map();
141
177
  for (const source of ALL_CONV_SOURCES) {
142
178
  const rawDir = path.join(deps.dataDir, "raw", "conversations", source);
143
179
  if (!fs.existsSync(rawDir))
144
180
  continue;
145
- // Group raw files by stable row id. Refresh-on-grow may leave more
146
- // than one raw artifact for the same id on disk if pruning was
147
- // interrupted; reinserting all of them duplicates the conversation
148
- // into the rebuilt index. Keep only the lexicographically greatest
149
- // filename per id — filenames are `<timestamp>_<id>.json` with an
150
- // ISO-8601-derived timestamp, so lexicographic order = chronological.
151
- const latestByRowId = new Map();
152
181
  for (const file of fs.readdirSync(rawDir)) {
153
182
  if (!file.endsWith(".json"))
154
183
  continue;
155
184
  const id = extractIdFromFilename(file);
156
185
  if (!id)
157
186
  continue;
187
+ const rawPath = path.join(rawDir, file);
158
188
  const prior = latestByRowId.get(id);
159
- if (!prior || file > prior) {
160
- latestByRowId.set(id, file);
189
+ if (!prior || compareRawRecencyDesc(rawPath, prior) < 0) {
190
+ latestByRowId.set(id, rawPath);
161
191
  }
162
192
  }
163
- for (const [id, file] of latestByRowId) {
164
- const rawPath = path.join(rawDir, file);
165
- try {
166
- const raw = JSON.parse(fs.readFileSync(rawPath, "utf-8"));
167
- const summary = raw.summary ?? "";
168
- const content = raw.content ?? summary;
169
- const vec = await recordEmbed(deps.dataDir, deps.embeddingProvider, { pipeline: "backfill", operation: "conversation_embedding", input_count: 1 }, () => deps.embeddingProvider.embed(content || summary));
170
- const fingerprint = typeof raw.conversation_fingerprint === "string"
171
- && raw.conversation_fingerprint.length > 0
172
- ? raw.conversation_fingerprint
173
- : content
174
- ? conversationContentFingerprint(content)
175
- : "";
176
- const row = {
177
- id,
178
- content,
179
- summary,
180
- embedding: vec,
181
- source: raw.source ?? "claude_code",
182
- domain: raw.domain ?? "tech",
183
- intent: raw.intent ?? "build",
184
- quality: raw.quality ?? "medium",
185
- topics: JSON.stringify(raw.topics ?? []),
186
- decisions: JSON.stringify(raw.decisions ?? []),
187
- key_outputs: JSON.stringify(raw.key_outputs ?? []),
188
- indexed_at: new Date().toISOString(),
189
- idempotency_key: raw.idempotency_key ?? "",
190
- conversation_fingerprint: fingerprint,
191
- };
192
- const filenameTime = extractTimestampFromFilename(file);
193
- const rowTime = filenameTime ?? fs.statSync(rawPath).mtime;
194
- const targetTable = rowTime >= cutoff ? "conversations_hot" : "conversations_cold";
195
- const targetShadow = rowTime >= cutoff ? hotShadow : coldShadow;
196
- await recordIndexWrite(deps.dataDir, {
197
- table: targetTable,
198
- pipeline: "backfill",
199
- operation: "conversation_upsert",
200
- row_count: 1,
201
- phase: "shadow",
202
- }, () => targetShadow.add([row]));
203
- populated.set(targetTable, (populated.get(targetTable) ?? 0) + 1);
204
- report.rows_reindexed++;
205
- }
206
- catch (err) {
207
- process.stderr.write(`rebuild: failed to index conversation ${id}: ${err instanceof Error ? err.message : String(err)}\n`);
193
+ }
194
+ // Process most-recent raw first (global order) so that when two row ids share
195
+ // one idempotency_key the newest wins and older duplicates are skipped —
196
+ // identical winner to reconcile via the shared recency comparator.
197
+ const ordered = [...latestByRowId.entries()].sort(([, a], [, b]) => compareRawRecencyDesc(a, b));
198
+ for (const [id, rawPath] of ordered) {
199
+ const file = path.basename(rawPath);
200
+ try {
201
+ const raw = JSON.parse(fs.readFileSync(rawPath, "utf-8"));
202
+ const key = typeof raw.idempotency_key === "string" ? raw.idempotency_key : "";
203
+ if (key && seenKeys.has(key)) {
204
+ report.conversations_skipped_duplicate_key++;
205
+ continue;
208
206
  }
207
+ const summary = raw.summary ?? "";
208
+ const content = raw.content ?? summary;
209
+ const vec = await recordEmbed(deps.dataDir, deps.embeddingProvider, {
210
+ pipeline: "backfill",
211
+ operation: "conversation_embedding",
212
+ input_count: 1,
213
+ }, () => deps.embeddingProvider.embed(content || summary));
214
+ const fingerprint = typeof raw.conversation_fingerprint === "string" &&
215
+ raw.conversation_fingerprint.length > 0
216
+ ? raw.conversation_fingerprint
217
+ : content
218
+ ? conversationContentFingerprint(content)
219
+ : "";
220
+ const row = {
221
+ id,
222
+ content,
223
+ summary,
224
+ embedding: vec,
225
+ source: raw.source ?? "claude_code",
226
+ domain: raw.domain ?? "tech",
227
+ intent: raw.intent ?? "build",
228
+ quality: raw.quality ?? "medium",
229
+ topics: JSON.stringify(raw.topics ?? []),
230
+ decisions: JSON.stringify(raw.decisions ?? []),
231
+ key_outputs: JSON.stringify(raw.key_outputs ?? []),
232
+ indexed_at: new Date().toISOString(),
233
+ idempotency_key: raw.idempotency_key ?? "",
234
+ conversation_fingerprint: fingerprint,
235
+ };
236
+ const filenameTime = extractTimestampFromFilename(file);
237
+ const rowTime = filenameTime ?? fs.statSync(rawPath).mtime;
238
+ const targetTable = rowTime >= cutoff ? "conversations_hot" : "conversations_cold";
239
+ const targetShadow = rowTime >= cutoff ? hotShadow : coldShadow;
240
+ await recordIndexWrite(deps.dataDir, {
241
+ table: targetTable,
242
+ pipeline: "backfill",
243
+ operation: "conversation_upsert",
244
+ row_count: 1,
245
+ phase: "shadow",
246
+ }, () => targetShadow.add([row]));
247
+ if (key)
248
+ seenKeys.add(key);
249
+ populated.set(targetTable, (populated.get(targetTable) ?? 0) + 1);
250
+ report.rows_reindexed++;
251
+ }
252
+ catch (err) {
253
+ process.stderr.write(`rebuild: failed to index conversation ${id}: ${err instanceof Error ? err.message : String(err)}\n`);
209
254
  }
210
255
  }
211
256
  }
@@ -222,7 +267,11 @@ async function populateDigestShadow(deps, swap, swaps, populated, report) {
222
267
  if (typeof raw.id !== "string" || !raw.id)
223
268
  continue;
224
269
  const summary = raw.summary ?? raw.content ?? "";
225
- const vec = await recordEmbed(deps.dataDir, deps.embeddingProvider, { pipeline: "backfill", operation: "digest_embedding", input_count: 1 }, () => deps.embeddingProvider.embed(summary));
270
+ const vec = await recordEmbed(deps.dataDir, deps.embeddingProvider, {
271
+ pipeline: "backfill",
272
+ operation: "digest_embedding",
273
+ input_count: 1,
274
+ }, () => deps.embeddingProvider.embed(summary));
226
275
  const row = {
227
276
  id: raw.id,
228
277
  content: raw.content ?? "",
@@ -336,7 +385,11 @@ async function reembedStructuredDocs(cloudProvider, dataDir, config, localProvid
336
385
  for (const row of allRows) {
337
386
  try {
338
387
  const provider = resolveProviderForPath(row.source_path, cloudProvider, config, localProvider);
339
- const newEmbedding = await recordEmbed(dataDir, provider, { pipeline: "reindex", operation: "structured_doc_embedding", input_count: 1 }, () => provider.embed(row.content));
388
+ const newEmbedding = await recordEmbed(dataDir, provider, {
389
+ pipeline: "reindex",
390
+ operation: "structured_doc_embedding",
391
+ input_count: 1,
392
+ }, () => provider.embed(row.content));
340
393
  const oldTimestamp = row.indexed_at;
341
394
  const newTimestamp = new Date().toISOString();
342
395
  await recordIndexWrite(dataDir, {
@@ -344,7 +397,9 @@ async function reembedStructuredDocs(cloudProvider, dataDir, config, localProvid
344
397
  pipeline: "reindex",
345
398
  operation: "structured_doc_upsert",
346
399
  row_count: 1,
347
- }, () => table.add([{ ...row, embedding: newEmbedding, indexed_at: newTimestamp }]));
400
+ }, () => table.add([
401
+ { ...row, embedding: newEmbedding, indexed_at: newTimestamp },
402
+ ]));
348
403
  try {
349
404
  await table.delete(`id = '${row.id}' AND indexed_at = '${oldTimestamp}'`);
350
405
  count++;
@@ -353,7 +408,9 @@ async function reembedStructuredDocs(cloudProvider, dataDir, config, localProvid
353
408
  try {
354
409
  await table.delete(`id = '${row.id}' AND indexed_at = '${newTimestamp}'`);
355
410
  }
356
- catch { /* duplicate remains — reconcile will repair */ }
411
+ catch {
412
+ /* duplicate remains — reconcile will repair */
413
+ }
357
414
  }
358
415
  }
359
416
  catch (err) {
@@ -373,7 +430,11 @@ async function reembedLocalStructuredDocs(localProvider, dataDir) {
373
430
  let count = 0;
374
431
  for (const row of allRows) {
375
432
  try {
376
- const newEmbedding = await recordEmbed(dataDir, localProvider, { pipeline: "reindex", operation: "structured_doc_local_embedding", input_count: 1 }, () => localProvider.embed(row.content));
433
+ const newEmbedding = await recordEmbed(dataDir, localProvider, {
434
+ pipeline: "reindex",
435
+ operation: "structured_doc_local_embedding",
436
+ input_count: 1,
437
+ }, () => localProvider.embed(row.content));
377
438
  const oldTimestamp = row.indexed_at;
378
439
  const newTimestamp = new Date().toISOString();
379
440
  await recordIndexWrite(dataDir, {
@@ -381,7 +442,9 @@ async function reembedLocalStructuredDocs(localProvider, dataDir) {
381
442
  pipeline: "reindex",
382
443
  operation: "structured_doc_local_upsert",
383
444
  row_count: 1,
384
- }, () => table.add([{ ...row, embedding: newEmbedding, indexed_at: newTimestamp }]));
445
+ }, () => table.add([
446
+ { ...row, embedding: newEmbedding, indexed_at: newTimestamp },
447
+ ]));
385
448
  try {
386
449
  await table.delete(`id = '${row.id}' AND indexed_at = '${oldTimestamp}'`);
387
450
  count++;
@@ -390,7 +453,9 @@ async function reembedLocalStructuredDocs(localProvider, dataDir) {
390
453
  try {
391
454
  await table.delete(`id = '${row.id}' AND indexed_at = '${newTimestamp}'`);
392
455
  }
393
- catch { /* duplicate remains — reconcile will repair */ }
456
+ catch {
457
+ /* duplicate remains — reconcile will repair */
458
+ }
394
459
  }
395
460
  }
396
461
  catch (err) {
@@ -452,7 +517,9 @@ async function reembedTable(tableName, embeddingProvider, dataDir, operation, ge
452
517
  pipeline: "reindex",
453
518
  operation: `${operation.replace(/_embedding$/, "")}_upsert`,
454
519
  row_count: 1,
455
- }, () => table.add([{ ...row, embedding: newEmbedding, [timestampField]: newTimestamp }]));
520
+ }, () => table.add([
521
+ { ...row, embedding: newEmbedding, [timestampField]: newTimestamp },
522
+ ]));
456
523
  try {
457
524
  await table.delete(`id = '${row.id}' AND ${timestampField} = '${oldTimestamp}'`);
458
525
  count++;
@@ -461,7 +528,9 @@ async function reembedTable(tableName, embeddingProvider, dataDir, operation, ge
461
528
  try {
462
529
  await table.delete(`id = '${row.id}' AND ${timestampField} = '${newTimestamp}'`);
463
530
  }
464
- catch { /* duplicate remains — reconcile will repair */ }
531
+ catch {
532
+ /* duplicate remains — reconcile will repair */
533
+ }
465
534
  }
466
535
  }
467
536
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"rebuild.js","sourceRoot":"","sources":["../../../src/storage/rebuild.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rebuild.js","sourceRoot":"","sources":["../../../src/storage/rebuild.ts"],"names":[],"mappings":"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"}
@@ -286,6 +286,40 @@ def has_voyage_issue(doctor):
286
286
  )
287
287
 
288
288
 
289
+ # Warning kinds whose repair a non-technical user may want an AI to walk them
290
+ # through. An explicit allowlist, not a blacklist: most warnings either carry
291
+ # their own one-click action (update_available, mcp_not_installed) or have no
292
+ # action at all (capture_daemon_stale's nextAction is literally "Nothing to
293
+ # do") — offering "Copy fix prompt" for those would promise a fix that isn't
294
+ # needed. Add a kind here only once `rift doctor --copy-prompt` produces a
295
+ # genuinely useful repair prompt for it.
296
+ REPAIRABLE_WARNINGS = {"capture_quarantined"}
297
+
298
+
299
+ def has_repairable_warning(doctor):
300
+ """A warning whose repair the user may want an AI to walk them through."""
301
+ if not isinstance(doctor, dict):
302
+ return False
303
+ return any(
304
+ i.get("severity") == "warning" and i.get("kind") in REPAIRABLE_WARNINGS
305
+ for i in (doctor.get("issues") or [])
306
+ )
307
+
308
+
309
+ def copy_prompt_actions():
310
+ """The 'Copy fix prompt for Claude/Codex' menu rows (no embedded prompt)."""
311
+ out = []
312
+ for label, target in (("Claude", "claude"), ("Codex", "codex")):
313
+ action = rift_action(
314
+ f"Copy fix prompt for {label}",
315
+ ["doctor", "--copy-prompt", f"--target={target}"],
316
+ terminal=False,
317
+ )
318
+ if action:
319
+ out.append(action)
320
+ return out
321
+
322
+
289
323
  def render_advisories(doctor):
290
324
  """Warning-level issues that aren't already shown as client rows."""
291
325
  rows = []
@@ -307,28 +341,27 @@ def render_advisories(doctor):
307
341
  return rows
308
342
 
309
343
 
310
- def render_footer_actions(broken, doctor_ok):
344
+ def render_footer_actions(broken, doctor_ok, offer_copy_prompt=False):
311
345
  """Common Rift-owned actions. Order differs by state per the plan.
312
346
 
313
347
  `doctor_ok` gates the doctor-powered actions (`Copy fix prompt …` and
314
348
  `Troubleshooting`): they appear only when the CLI actually produced a
315
349
  report, never merely because the rift binary resolved.
350
+
351
+ `offer_copy_prompt` extends the AI repair prompt to the non-broken
352
+ (warning) state: a warning with a repair action (e.g. large sessions
353
+ parked) gets the same one-click Claude/Codex help a broken state does.
316
354
  """
317
355
  lines = ["---"]
318
356
  if broken:
319
357
  if doctor_ok:
320
- for label, target in (("Claude", "claude"), ("Codex", "codex")):
321
- action = rift_action(
322
- f"Copy fix prompt for {label}",
323
- ["doctor", "--copy-prompt", f"--target={target}"],
324
- terminal=False,
325
- )
326
- if action:
327
- lines.append(action)
358
+ lines += copy_prompt_actions()
328
359
  logs = open_action("Open logs", env("RIFT_LOG_DIR"))
329
360
  if logs:
330
361
  lines.append(logs)
331
362
  else:
363
+ if doctor_ok and offer_copy_prompt:
364
+ lines += copy_prompt_actions()
332
365
  cap = rift_action("Capture now", ["capture"], terminal=False, refresh=True)
333
366
  if cap:
334
367
  lines.append(cap)
@@ -427,7 +460,11 @@ def render(doctor, status, mcp, health, now):
427
460
  lines.append("Heads up:")
428
461
  lines += advisories
429
462
 
430
- lines += render_footer_actions(broken=False, doctor_ok=has_doctor_report(doctor))
463
+ lines += render_footer_actions(
464
+ broken=False,
465
+ doctor_ok=has_doctor_report(doctor),
466
+ offer_copy_prompt=has_repairable_warning(doctor),
467
+ )
431
468
  return lines
432
469
 
433
470
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getrift/rift",
3
- "version": "0.1.0-beta.15",
3
+ "version": "0.1.0-beta.17",
4
4
  "description": "Local-first personal memory + reasoning infrastructure with an MCP interface.",
5
5
  "homepage": "https://getrift.dev",
6
6
  "license": "UNLICENSED",
@@ -22,13 +22,16 @@
22
22
  "test": "vitest run",
23
23
  "test:watch": "vitest",
24
24
  "build:clean": "rm -rf dist",
25
- "build": "pnpm build:clean && tsc",
25
+ "build": "npm run build:clean && tsc",
26
26
  "check": "tsc --noEmit",
27
+ "ci:typecheck": "npm run check",
28
+ "ci:test:focused": "tsx tests/fixtures/generate.ts && vitest tests/retrieval/current-truth.test.ts tests/retrieval/report-demotion.test.ts tests/retrieval/locator-boost.test.ts tests/retrieval/context-pack.test.ts tests/server/routes/search.test.ts tests/server/routes/context.test.ts --run",
29
+ "ci:pr": "npm run ci:typecheck && npm run check:rename && npm run ci:test:focused",
27
30
  "check:rename": "bash scripts/check-rename.sh",
28
31
  "check:tarball": "bash scripts/verify-tarball.sh",
29
32
  "plist:generate": "bash scripts/generate-plist.sh",
30
33
  "postinstall": "node -e \"const e=process.env;if(e.RIFT_SKIP_POSTINSTALL_MENUBAR==='1'||(e.RIFT_POSTINSTALL_MENUBAR!=='1'&&e.npm_config_global!=='true'&&e.npm_config_location!=='global'))process.exit(0);import('./dist/src/cli/postinstall-menubar.js').catch(() => {})\"",
31
- "prepublishOnly": "pnpm check && pnpm check:rename && pnpm build && pnpm check:tarball"
34
+ "prepublishOnly": "npm run check && npm run check:rename && npm run build && npm run check:tarball"
32
35
  },
33
36
  "dependencies": {
34
37
  "@fastify/multipart": "^9.4.0",