@getrift/rift 0.1.0-beta.21 → 0.1.0-beta.23

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 (320) hide show
  1. package/README.md +7 -3
  2. package/dist/src/capture/auto-capture.d.ts +105 -4
  3. package/dist/src/capture/auto-capture.d.ts.map +1 -1
  4. package/dist/src/capture/auto-capture.js +313 -34
  5. package/dist/src/capture/auto-capture.js.map +1 -1
  6. package/dist/src/capture/claude-cli-triage-provider.d.ts +28 -0
  7. package/dist/src/capture/claude-cli-triage-provider.d.ts.map +1 -0
  8. package/dist/src/capture/claude-cli-triage-provider.js +88 -0
  9. package/dist/src/capture/claude-cli-triage-provider.js.map +1 -0
  10. package/dist/src/capture/codex-cli-triage-provider.d.ts.map +1 -1
  11. package/dist/src/capture/codex-cli-triage-provider.js +1 -33
  12. package/dist/src/capture/codex-cli-triage-provider.js.map +1 -1
  13. package/dist/src/capture/cursor-capture.d.ts +89 -0
  14. package/dist/src/capture/cursor-capture.d.ts.map +1 -0
  15. package/dist/src/capture/cursor-capture.js +121 -0
  16. package/dist/src/capture/cursor-capture.js.map +1 -0
  17. package/dist/src/capture/observability.d.ts +30 -0
  18. package/dist/src/capture/observability.d.ts.map +1 -1
  19. package/dist/src/capture/observability.js +29 -0
  20. package/dist/src/capture/observability.js.map +1 -1
  21. package/dist/src/capture/recover-quarantine.d.ts +4 -4
  22. package/dist/src/capture/sources.d.ts +41 -3
  23. package/dist/src/capture/sources.d.ts.map +1 -1
  24. package/dist/src/capture/sources.js +43 -1
  25. package/dist/src/capture/sources.js.map +1 -1
  26. package/dist/src/capture/triage-classification.d.ts +69 -0
  27. package/dist/src/capture/triage-classification.d.ts.map +1 -0
  28. package/dist/src/capture/triage-classification.js +62 -0
  29. package/dist/src/capture/triage-classification.js.map +1 -0
  30. package/dist/src/capture/triage-provider-factory.d.ts +36 -0
  31. package/dist/src/capture/triage-provider-factory.d.ts.map +1 -0
  32. package/dist/src/capture/triage-provider-factory.js +55 -0
  33. package/dist/src/capture/triage-provider-factory.js.map +1 -0
  34. package/dist/src/capture/triage.d.ts +1 -1
  35. package/dist/src/capture/triage.d.ts.map +1 -1
  36. package/dist/src/capture/triage.js +8 -6
  37. package/dist/src/capture/triage.js.map +1 -1
  38. package/dist/src/cli/commands/capture.d.ts.map +1 -1
  39. package/dist/src/cli/commands/capture.js +79 -17
  40. package/dist/src/cli/commands/capture.js.map +1 -1
  41. package/dist/src/cli/commands/chunk-backfill.d.ts +13 -0
  42. package/dist/src/cli/commands/chunk-backfill.d.ts.map +1 -0
  43. package/dist/src/cli/commands/chunk-backfill.js +157 -0
  44. package/dist/src/cli/commands/chunk-backfill.js.map +1 -0
  45. package/dist/src/cli/commands/cursor-probe.d.ts +20 -0
  46. package/dist/src/cli/commands/cursor-probe.d.ts.map +1 -0
  47. package/dist/src/cli/commands/cursor-probe.js +162 -0
  48. package/dist/src/cli/commands/cursor-probe.js.map +1 -0
  49. package/dist/src/cli/commands/menubar.d.ts +3 -1
  50. package/dist/src/cli/commands/menubar.d.ts.map +1 -1
  51. package/dist/src/cli/commands/menubar.js +36 -12
  52. package/dist/src/cli/commands/menubar.js.map +1 -1
  53. package/dist/src/cli/commands/onboard.d.ts +22 -2
  54. package/dist/src/cli/commands/onboard.d.ts.map +1 -1
  55. package/dist/src/cli/commands/onboard.js +160 -32
  56. package/dist/src/cli/commands/onboard.js.map +1 -1
  57. package/dist/src/cli/commands/status.d.ts.map +1 -1
  58. package/dist/src/cli/commands/status.js +12 -0
  59. package/dist/src/cli/commands/status.js.map +1 -1
  60. package/dist/src/cli/commands/update.d.ts +34 -1
  61. package/dist/src/cli/commands/update.d.ts.map +1 -1
  62. package/dist/src/cli/commands/update.js +166 -1
  63. package/dist/src/cli/commands/update.js.map +1 -1
  64. package/dist/src/cli/index.d.ts.map +1 -1
  65. package/dist/src/cli/index.js +4 -0
  66. package/dist/src/cli/index.js.map +1 -1
  67. package/dist/src/cli/postinstall-menubar.d.ts +20 -13
  68. package/dist/src/cli/postinstall-menubar.d.ts.map +1 -1
  69. package/dist/src/cli/postinstall-menubar.js +56 -1
  70. package/dist/src/cli/postinstall-menubar.js.map +1 -1
  71. package/dist/src/cli/status/friend-header.d.ts +16 -3
  72. package/dist/src/cli/status/friend-header.d.ts.map +1 -1
  73. package/dist/src/cli/status/friend-header.js +186 -10
  74. package/dist/src/cli/status/friend-header.js.map +1 -1
  75. package/dist/src/cli/status/local-signals.d.ts +42 -4
  76. package/dist/src/cli/status/local-signals.d.ts.map +1 -1
  77. package/dist/src/cli/status/local-signals.js +52 -1
  78. package/dist/src/cli/status/local-signals.js.map +1 -1
  79. package/dist/src/config/schema.d.ts +220 -14
  80. package/dist/src/config/schema.d.ts.map +1 -1
  81. package/dist/src/config/schema.js +82 -7
  82. package/dist/src/config/schema.js.map +1 -1
  83. package/dist/src/diagnostics/claude-preflight.d.ts +35 -0
  84. package/dist/src/diagnostics/claude-preflight.d.ts.map +1 -0
  85. package/dist/src/diagnostics/claude-preflight.js +90 -0
  86. package/dist/src/diagnostics/claude-preflight.js.map +1 -0
  87. package/dist/src/diagnostics/codex-preflight.d.ts +1 -1
  88. package/dist/src/diagnostics/codex-preflight.d.ts.map +1 -1
  89. package/dist/src/diagnostics/codex-preflight.js +24 -0
  90. package/dist/src/diagnostics/codex-preflight.js.map +1 -1
  91. package/dist/src/diagnostics/doctor.d.ts +7 -4
  92. package/dist/src/diagnostics/doctor.d.ts.map +1 -1
  93. package/dist/src/diagnostics/doctor.js +70 -11
  94. package/dist/src/diagnostics/doctor.js.map +1 -1
  95. package/dist/src/diagnostics/memory-coverage.d.ts +54 -0
  96. package/dist/src/diagnostics/memory-coverage.d.ts.map +1 -0
  97. package/dist/src/diagnostics/memory-coverage.js +272 -0
  98. package/dist/src/diagnostics/memory-coverage.js.map +1 -0
  99. package/dist/src/diagnostics/notify.d.ts +20 -3
  100. package/dist/src/diagnostics/notify.d.ts.map +1 -1
  101. package/dist/src/diagnostics/notify.js +54 -14
  102. package/dist/src/diagnostics/notify.js.map +1 -1
  103. package/dist/src/ingestion/chunk-meta.d.ts +85 -0
  104. package/dist/src/ingestion/chunk-meta.d.ts.map +1 -0
  105. package/dist/src/ingestion/chunk-meta.js +167 -0
  106. package/dist/src/ingestion/chunk-meta.js.map +1 -0
  107. package/dist/src/ingestion/chunk-text.d.ts +39 -0
  108. package/dist/src/ingestion/chunk-text.d.ts.map +1 -0
  109. package/dist/src/ingestion/chunk-text.js +114 -0
  110. package/dist/src/ingestion/chunk-text.js.map +1 -0
  111. package/dist/src/ingestion/cursor/cursor-store.d.ts +177 -0
  112. package/dist/src/ingestion/cursor/cursor-store.d.ts.map +1 -0
  113. package/dist/src/ingestion/cursor/cursor-store.js +243 -0
  114. package/dist/src/ingestion/cursor/cursor-store.js.map +1 -0
  115. package/dist/src/ingestion/cursor/enrich-roots.d.ts +16 -0
  116. package/dist/src/ingestion/cursor/enrich-roots.d.ts.map +1 -0
  117. package/dist/src/ingestion/cursor/enrich-roots.js +22 -0
  118. package/dist/src/ingestion/cursor/enrich-roots.js.map +1 -0
  119. package/dist/src/ingestion/cursor/vscdb-reader.d.ts +32 -0
  120. package/dist/src/ingestion/cursor/vscdb-reader.d.ts.map +1 -0
  121. package/dist/src/ingestion/cursor/vscdb-reader.js +113 -0
  122. package/dist/src/ingestion/cursor/vscdb-reader.js.map +1 -0
  123. package/dist/src/ingestion/cursor/workspace-root.d.ts +96 -0
  124. package/dist/src/ingestion/cursor/workspace-root.d.ts.map +1 -0
  125. package/dist/src/ingestion/cursor/workspace-root.js +187 -0
  126. package/dist/src/ingestion/cursor/workspace-root.js.map +1 -0
  127. package/dist/src/ingestion/indexer.d.ts.map +1 -1
  128. package/dist/src/ingestion/indexer.js +41 -32
  129. package/dist/src/ingestion/indexer.js.map +1 -1
  130. package/dist/src/jobs/handlers/compact.d.ts.map +1 -1
  131. package/dist/src/jobs/handlers/compact.js +9 -4
  132. package/dist/src/jobs/handlers/compact.js.map +1 -1
  133. package/dist/src/jobs/handlers/ingest.d.ts.map +1 -1
  134. package/dist/src/jobs/handlers/ingest.js +60 -30
  135. package/dist/src/jobs/handlers/ingest.js.map +1 -1
  136. package/dist/src/jobs/handlers/reconcile.d.ts.map +1 -1
  137. package/dist/src/jobs/handlers/reconcile.js +128 -45
  138. package/dist/src/jobs/handlers/reconcile.js.map +1 -1
  139. package/dist/src/jobs/handlers/save.d.ts.map +1 -1
  140. package/dist/src/jobs/handlers/save.js +122 -72
  141. package/dist/src/jobs/handlers/save.js.map +1 -1
  142. package/dist/src/jobs/types.d.ts +1 -1
  143. package/dist/src/main.js +27 -16
  144. package/dist/src/main.js.map +1 -1
  145. package/dist/src/mcp/capture-diagnostics.d.ts +51 -0
  146. package/dist/src/mcp/capture-diagnostics.d.ts.map +1 -0
  147. package/dist/src/mcp/capture-diagnostics.js +127 -0
  148. package/dist/src/mcp/capture-diagnostics.js.map +1 -0
  149. package/dist/src/mcp/memory-diagnostics.d.ts +6 -0
  150. package/dist/src/mcp/memory-diagnostics.d.ts.map +1 -0
  151. package/dist/src/mcp/memory-diagnostics.js +51 -0
  152. package/dist/src/mcp/memory-diagnostics.js.map +1 -0
  153. package/dist/src/mcp/server.d.ts.map +1 -1
  154. package/dist/src/mcp/server.js +10 -3
  155. package/dist/src/mcp/server.js.map +1 -1
  156. package/dist/src/mcp/tools/context-pack.d.ts.map +1 -1
  157. package/dist/src/mcp/tools/context-pack.js +7 -1
  158. package/dist/src/mcp/tools/context-pack.js.map +1 -1
  159. package/dist/src/mcp/tools/conversations-search.d.ts +1 -1
  160. package/dist/src/mcp/tools/conversations-search.d.ts.map +1 -1
  161. package/dist/src/mcp/tools/conversations-search.js +7 -1
  162. package/dist/src/mcp/tools/conversations-search.js.map +1 -1
  163. package/dist/src/mcp/tools/evidence-feedback.d.ts +60 -0
  164. package/dist/src/mcp/tools/evidence-feedback.d.ts.map +1 -0
  165. package/dist/src/mcp/tools/evidence-feedback.js +62 -0
  166. package/dist/src/mcp/tools/evidence-feedback.js.map +1 -0
  167. package/dist/src/mcp/tools/log-outcome.d.ts +72 -0
  168. package/dist/src/mcp/tools/log-outcome.d.ts.map +1 -0
  169. package/dist/src/mcp/tools/log-outcome.js +59 -0
  170. package/dist/src/mcp/tools/log-outcome.js.map +1 -0
  171. package/dist/src/mcp/tools/open-evidence.d.ts +37 -0
  172. package/dist/src/mcp/tools/open-evidence.d.ts.map +1 -0
  173. package/dist/src/mcp/tools/open-evidence.js +72 -0
  174. package/dist/src/mcp/tools/open-evidence.js.map +1 -0
  175. package/dist/src/mcp/tools/save.d.ts +7 -2
  176. package/dist/src/mcp/tools/save.d.ts.map +1 -1
  177. package/dist/src/mcp/tools/save.js +7 -2
  178. package/dist/src/mcp/tools/save.js.map +1 -1
  179. package/dist/src/mcp/tools/search.d.ts.map +1 -1
  180. package/dist/src/mcp/tools/search.js +7 -1
  181. package/dist/src/mcp/tools/search.js.map +1 -1
  182. package/dist/src/mcp/tools/status.d.ts +15 -1
  183. package/dist/src/mcp/tools/status.d.ts.map +1 -1
  184. package/dist/src/mcp/tools/status.js +53 -2
  185. package/dist/src/mcp/tools/status.js.map +1 -1
  186. package/dist/src/observability/retrieval-feedback.d.ts +82 -0
  187. package/dist/src/observability/retrieval-feedback.d.ts.map +1 -0
  188. package/dist/src/observability/retrieval-feedback.js +231 -0
  189. package/dist/src/observability/retrieval-feedback.js.map +1 -0
  190. package/dist/src/observability/rift-context.d.ts.map +1 -1
  191. package/dist/src/observability/rift-context.js +3 -0
  192. package/dist/src/observability/rift-context.js.map +1 -1
  193. package/dist/src/observability/tool-usage-stats.d.ts +13 -0
  194. package/dist/src/observability/tool-usage-stats.d.ts.map +1 -1
  195. package/dist/src/observability/tool-usage-stats.js +15 -0
  196. package/dist/src/observability/tool-usage-stats.js.map +1 -1
  197. package/dist/src/observability/tool-usage.d.ts +56 -0
  198. package/dist/src/observability/tool-usage.d.ts.map +1 -1
  199. package/dist/src/observability/tool-usage.js +86 -0
  200. package/dist/src/observability/tool-usage.js.map +1 -1
  201. package/dist/src/providers/claude-cli-metadata-extraction.d.ts +47 -0
  202. package/dist/src/providers/claude-cli-metadata-extraction.d.ts.map +1 -0
  203. package/dist/src/providers/claude-cli-metadata-extraction.js +120 -0
  204. package/dist/src/providers/claude-cli-metadata-extraction.js.map +1 -0
  205. package/dist/src/providers/claude-cli-runner.d.ts +92 -0
  206. package/dist/src/providers/claude-cli-runner.d.ts.map +1 -0
  207. package/dist/src/providers/claude-cli-runner.js +598 -0
  208. package/dist/src/providers/claude-cli-runner.js.map +1 -0
  209. package/dist/src/providers/codex-cli-metadata-extraction.d.ts.map +1 -1
  210. package/dist/src/providers/codex-cli-metadata-extraction.js +1 -40
  211. package/dist/src/providers/codex-cli-metadata-extraction.js.map +1 -1
  212. package/dist/src/providers/codex-cli-runner.d.ts +7 -0
  213. package/dist/src/providers/codex-cli-runner.d.ts.map +1 -1
  214. package/dist/src/providers/codex-cli-runner.js +131 -5
  215. package/dist/src/providers/codex-cli-runner.js.map +1 -1
  216. package/dist/src/providers/conversation-generation.d.ts +10 -0
  217. package/dist/src/providers/conversation-generation.d.ts.map +1 -1
  218. package/dist/src/providers/conversation-generation.js +54 -13
  219. package/dist/src/providers/conversation-generation.js.map +1 -1
  220. package/dist/src/providers/openai-metadata-extraction.d.ts +48 -1
  221. package/dist/src/providers/openai-metadata-extraction.d.ts.map +1 -1
  222. package/dist/src/providers/openai-metadata-extraction.js +51 -2
  223. package/dist/src/providers/openai-metadata-extraction.js.map +1 -1
  224. package/dist/src/providers/types.d.ts +1 -1
  225. package/dist/src/providers/types.d.ts.map +1 -1
  226. package/dist/src/providers/types.js +4 -0
  227. package/dist/src/providers/types.js.map +1 -1
  228. package/dist/src/retrieval/canonical-files.d.ts +48 -0
  229. package/dist/src/retrieval/canonical-files.d.ts.map +1 -0
  230. package/dist/src/retrieval/canonical-files.js +210 -0
  231. package/dist/src/retrieval/canonical-files.js.map +1 -0
  232. package/dist/src/retrieval/compact.d.ts +95 -0
  233. package/dist/src/retrieval/compact.d.ts.map +1 -1
  234. package/dist/src/retrieval/compact.js +254 -8
  235. package/dist/src/retrieval/compact.js.map +1 -1
  236. package/dist/src/retrieval/context-pack.d.ts.map +1 -1
  237. package/dist/src/retrieval/context-pack.js +65 -15
  238. package/dist/src/retrieval/context-pack.js.map +1 -1
  239. package/dist/src/retrieval/conversation-dedup.d.ts +40 -0
  240. package/dist/src/retrieval/conversation-dedup.d.ts.map +1 -0
  241. package/dist/src/retrieval/conversation-dedup.js +141 -0
  242. package/dist/src/retrieval/conversation-dedup.js.map +1 -0
  243. package/dist/src/retrieval/evidence-key.d.ts +48 -0
  244. package/dist/src/retrieval/evidence-key.d.ts.map +1 -0
  245. package/dist/src/retrieval/evidence-key.js +131 -0
  246. package/dist/src/retrieval/evidence-key.js.map +1 -0
  247. package/dist/src/retrieval/feedback-ranking.d.ts +49 -0
  248. package/dist/src/retrieval/feedback-ranking.d.ts.map +1 -0
  249. package/dist/src/retrieval/feedback-ranking.js +138 -0
  250. package/dist/src/retrieval/feedback-ranking.js.map +1 -0
  251. package/dist/src/retrieval/git-state.d.ts +9 -0
  252. package/dist/src/retrieval/git-state.d.ts.map +1 -1
  253. package/dist/src/retrieval/git-state.js +18 -0
  254. package/dist/src/retrieval/git-state.js.map +1 -1
  255. package/dist/src/retrieval/group-by-parent.d.ts +38 -0
  256. package/dist/src/retrieval/group-by-parent.d.ts.map +1 -0
  257. package/dist/src/retrieval/group-by-parent.js +40 -0
  258. package/dist/src/retrieval/group-by-parent.js.map +1 -0
  259. package/dist/src/retrieval/lexical.d.ts.map +1 -1
  260. package/dist/src/retrieval/lexical.js +1 -3
  261. package/dist/src/retrieval/lexical.js.map +1 -1
  262. package/dist/src/retrieval/receipt.d.ts +57 -0
  263. package/dist/src/retrieval/receipt.d.ts.map +1 -0
  264. package/dist/src/retrieval/receipt.js +119 -0
  265. package/dist/src/retrieval/receipt.js.map +1 -0
  266. package/dist/src/retrieval/reranker.d.ts +49 -2
  267. package/dist/src/retrieval/reranker.d.ts.map +1 -1
  268. package/dist/src/retrieval/reranker.js +64 -4
  269. package/dist/src/retrieval/reranker.js.map +1 -1
  270. package/dist/src/retrieval/stitch-chunks.d.ts +73 -0
  271. package/dist/src/retrieval/stitch-chunks.d.ts.map +1 -0
  272. package/dist/src/retrieval/stitch-chunks.js +106 -0
  273. package/dist/src/retrieval/stitch-chunks.js.map +1 -0
  274. package/dist/src/server/app.d.ts +1 -1
  275. package/dist/src/server/app.d.ts.map +1 -1
  276. package/dist/src/server/app.js +20 -3
  277. package/dist/src/server/app.js.map +1 -1
  278. package/dist/src/server/routes/conversations-search.d.ts.map +1 -1
  279. package/dist/src/server/routes/conversations-search.js +22 -3
  280. package/dist/src/server/routes/conversations-search.js.map +1 -1
  281. package/dist/src/server/routes/friend-status.d.ts +64 -6
  282. package/dist/src/server/routes/friend-status.d.ts.map +1 -1
  283. package/dist/src/server/routes/friend-status.js +114 -18
  284. package/dist/src/server/routes/friend-status.js.map +1 -1
  285. package/dist/src/server/routes/mcp-usage.d.ts +9 -6
  286. package/dist/src/server/routes/mcp-usage.d.ts.map +1 -1
  287. package/dist/src/server/routes/mcp-usage.js.map +1 -1
  288. package/dist/src/server/routes/retrieval-feedback.d.ts +3 -0
  289. package/dist/src/server/routes/retrieval-feedback.d.ts.map +1 -0
  290. package/dist/src/server/routes/retrieval-feedback.js +290 -0
  291. package/dist/src/server/routes/retrieval-feedback.js.map +1 -0
  292. package/dist/src/server/routes/save.d.ts +3 -3
  293. package/dist/src/server/routes/save.d.ts.map +1 -1
  294. package/dist/src/server/routes/save.js +6 -2
  295. package/dist/src/server/routes/save.js.map +1 -1
  296. package/dist/src/server/routes/search.d.ts +1 -1
  297. package/dist/src/server/routes/search.d.ts.map +1 -1
  298. package/dist/src/server/routes/search.js +55 -8
  299. package/dist/src/server/routes/search.js.map +1 -1
  300. package/dist/src/server/serving-marker.d.ts +85 -0
  301. package/dist/src/server/serving-marker.d.ts.map +1 -0
  302. package/dist/src/server/serving-marker.js +226 -0
  303. package/dist/src/server/serving-marker.js.map +1 -0
  304. package/dist/src/storage/chunk-backfill.d.ts +39 -0
  305. package/dist/src/storage/chunk-backfill.d.ts.map +1 -0
  306. package/dist/src/storage/chunk-backfill.js +295 -0
  307. package/dist/src/storage/chunk-backfill.js.map +1 -0
  308. package/dist/src/storage/filter.d.ts +42 -0
  309. package/dist/src/storage/filter.d.ts.map +1 -0
  310. package/dist/src/storage/filter.js +70 -0
  311. package/dist/src/storage/filter.js.map +1 -0
  312. package/dist/src/storage/rebuild.d.ts.map +1 -1
  313. package/dist/src/storage/rebuild.js +44 -27
  314. package/dist/src/storage/rebuild.js.map +1 -1
  315. package/dist/src/storage/tables.d.ts +41 -0
  316. package/dist/src/storage/tables.d.ts.map +1 -1
  317. package/dist/src/storage/tables.js +64 -1
  318. package/dist/src/storage/tables.js.map +1 -1
  319. package/operator/swiftbar/render-menu.py +60 -18
  320. package/package.json +6 -4
@@ -3,11 +3,18 @@
3
3
  * make it actually visible.
4
4
  *
5
5
  * The menu surface lives in `operator/swiftbar/` because it is a tiny
6
- * operator-adjacent script, but beta users should not have to symlink repo
7
- * paths by hand. This command links the packaged wrapper into SwiftBar's
8
- * plugin folder. The wrapper follows the symlink back to the package so the
9
- * renderer beside it updates whenever `npm install -g @getrift/rift@beta`
10
- * replaces the package on disk.
6
+ * operator-adjacent script, but beta users should not have to wire repo paths
7
+ * by hand. This command installs a self-contained COPY of the wrapper AND the
8
+ * renderer into SwiftBar's plugin folder (the default). Copy not symlink
9
+ * because a symlink points back into the package root, which npm/Homebrew can
10
+ * move or delete on update (and a temp-prefix install would point at a dir
11
+ * that vanishes), leaving SwiftBar running a dangling `rift.10s.sh`. The
12
+ * wrapper already self-resolves the renderer beside itself and the `rift` CLI
13
+ * from absolute system paths, so the copied pair depends on nothing under the
14
+ * package. `--symlink` keeps the old dev/auto-update behavior for checkouts.
15
+ * Writes are atomic (temp + rename) so SwiftBar's 10s poll never reads a
16
+ * half-written file. `rift update` / postinstall re-run this, so the copy
17
+ * stays fresh and any pre-migration dangling symlink self-heals.
11
18
  *
12
19
  * Dropping the plugin file is necessary but NOT sufficient for the icon to
13
20
  * appear (this was the beta.20 first-run bug): SwiftBar is a separate app, and
@@ -44,7 +51,7 @@ export function makeMenuBarCommand() {
44
51
  .command("install")
45
52
  .description("Install or refresh the SwiftBar menu plugin")
46
53
  .option("--plugin-dir <path>", "Override SwiftBar's plugin directory")
47
- .option("--copy", "Copy scripts instead of symlinking to the packaged files")
54
+ .option("--symlink", "Symlink to the packaged files instead of copying (dev checkouts; fragile if the package moves)")
48
55
  .option("--yes", "Non-interactive install; accepted for install scripts")
49
56
  .action((opts, command) => {
50
57
  const globalOpts = command.optsWithGlobals();
@@ -53,8 +60,8 @@ export function makeMenuBarCommand() {
53
60
  const installOpts = {};
54
61
  if (opts.pluginDir)
55
62
  installOpts.pluginDir = opts.pluginDir;
56
- if (opts.copy !== undefined)
57
- installOpts.copy = opts.copy;
63
+ if (opts.symlink !== undefined)
64
+ installOpts.symlink = opts.symlink;
58
65
  result = installMenuBar(installOpts);
59
66
  }
60
67
  catch (err) {
@@ -152,16 +159,19 @@ export function installMenuBar(opts = {}) {
152
159
  assertReadableFile(rendererPath, "SwiftBar renderer");
153
160
  fs.mkdirSync(pluginDir, { recursive: true });
154
161
  let backupPath = null;
155
- const mode = opts.copy ? "copy" : "symlink";
162
+ // Copy is the default; symlink is opt-in (dev/auto-update). See module header.
163
+ const mode = opts.symlink ? "symlink" : "copy";
156
164
  if (mode === "symlink") {
157
165
  backupPath = replaceExistingPlugin(pluginPath, sourcePath, opts.now);
158
166
  fs.symlinkSync(sourcePath, pluginPath);
159
167
  }
160
168
  else {
169
+ // Clear/back up any existing plugin (incl. a pre-migration dangling
170
+ // symlink) BEFORE writing, then atomic-copy both files so SwiftBar's
171
+ // 10s poll never sees a torn write or a wrapper without its renderer.
161
172
  backupPath = replaceExistingPlugin(pluginPath, sourcePath, opts.now);
162
- fs.copyFileSync(sourcePath, pluginPath);
163
- fs.copyFileSync(rendererPath, path.join(pluginDir, SWIFTBAR_RENDERER_NAME));
164
- fs.chmodSync(pluginPath, 0o755);
173
+ atomicCopyFile(sourcePath, pluginPath, 0o755);
174
+ atomicCopyFile(rendererPath, path.join(pluginDir, SWIFTBAR_RENDERER_NAME));
165
175
  }
166
176
  transcript.push("Menu bar installed.");
167
177
  // --- Make it visible: launch/refresh SwiftBar, or hand back a recovery ---
@@ -267,6 +277,20 @@ function replaceExistingPlugin(pluginPath, sourcePath, now) {
267
277
  function toBackupStamp(iso) {
268
278
  return iso.replace(/[:.]/g, "-");
269
279
  }
280
+ /**
281
+ * Copy `src` onto `dest` atomically: write a sibling temp file, chmod it, then
282
+ * `rename` over `dest` (atomic within one directory/filesystem). SwiftBar polls
283
+ * the plugin every 10s, so a plain `copyFileSync` could be read half-written;
284
+ * the rename guarantees an observer sees either the old file or the whole new
285
+ * one. The temp sits beside `dest` so the rename never crosses filesystems.
286
+ */
287
+ function atomicCopyFile(src, dest, modeBits) {
288
+ const tmp = `${dest}.rift-tmp`;
289
+ fs.copyFileSync(src, tmp);
290
+ if (modeBits !== undefined)
291
+ fs.chmodSync(tmp, modeBits);
292
+ fs.renameSync(tmp, dest);
293
+ }
270
294
  function findPackageRoot() {
271
295
  let dir = path.dirname(fileURLToPath(import.meta.url));
272
296
  for (let i = 0; i < 8; i += 1) {
@@ -1 +1 @@
1
- {"version":3,"file":"menubar.js","sourceRoot":"","sources":["../../../../src/cli/commands/menubar.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEhE,MAAM,CAAC,MAAM,oBAAoB,GAAG,aAAa,CAAC;AAClD,MAAM,CAAC,MAAM,sBAAsB,GAAG,gBAAgB,CAAC;AAEvD,8EAA8E;AAC9E,MAAM,CAAC,MAAM,wBAAwB,GAAG,oBAAoB,CAAC;AAC7D,MAAM,qBAAqB,GAAG,sBAAsB,CAAC;AAiFrD,MAAM,UAAU,kBAAkB;IAChC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,sCAAsC,CAAC,CAAC;IAEvF,GAAG;SACA,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,6CAA6C,CAAC;SAC1D,MAAM,CAAC,qBAAqB,EAAE,sCAAsC,CAAC;SACrE,MAAM,CAAC,QAAQ,EAAE,0DAA0D,CAAC;SAC5E,MAAM,CAAC,OAAO,EAAE,uDAAuD,CAAC;SACxE,MAAM,CAAC,CAAC,IAA8B,EAAE,OAAO,EAAE,EAAE;QAClD,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,EAAwB,CAAC;QACnE,IAAI,MAA4B,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,WAAW,GAA0B,EAAE,CAAC;YAC9C,IAAI,IAAI,CAAC,SAAS;gBAAE,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAC3D,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;gBAAE,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAC1D,MAAM,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;gBACpB,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAC;YACpD,CAAC;YACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;YACpB,SAAS,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,UAAU;gBAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEL,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE;IAC7D,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,OAA8B,EAAE;IAEhC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAEtD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,8BAA8B,CAAC;QAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAC5B,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,wBAAwB,CAAC,OAAO,CAAC,CAC5F,CAAC;QACF,OAAO;YACL,EAAE,EAAE,IAAI;YACR,OAAO,EAAE,IAAI;YACb,MAAM;YACN,SAAS;YACT,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC;YACtD,SAAS,EAAE,IAAI;YACf,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,IAAI;YAClB,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,IAAI;YAChB,gBAAgB,EAAE,KAAK;YACvB,cAAc,EAAE,KAAK;YACrB,eAAe,EAAE,SAAS;YAC1B,WAAW,EAAE,KAAK;YAClB,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,CAAC,qBAAqB,MAAM,EAAE,CAAC;SAC5C,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;IAC3C,MAAM,gBAAgB,GAAG,WAAW,KAAK,IAAI,CAAC;IAE9C,oEAAoE;IACpE,yEAAyE;IACzE,0EAA0E;IAC1E,4EAA4E;IAC5E,qEAAqE;IACrE,MAAM,WAAW,GACf,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,IAAI,CAAC;IACjE,IAAI,eAAwD,CAAC;IAC7D,IAAI,WAAmB,CAAC;IACxB,IAAI,WAAW,EAAE,CAAC;QAChB,WAAW,GAAG,WAAW,CAAC;QAC1B,eAAe,GAAG,UAAU,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,MAAM,UAAU,GAAG,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACxE,IAAI,UAAU,EAAE,CAAC;YACf,WAAW,GAAG,UAAU,CAAC;YACzB,eAAe,GAAG,YAAY,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,WAAW,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;YAChD,mEAAmE;YACnE,iEAAiE;YACjE,IAAI,gBAAgB,IAAI,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC/D,eAAe,GAAG,iBAAiB,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,eAAe,GAAG,SAAS,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAC5B,IAAI,CAAC,SAAS;QACZ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,eAAe,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,CAC3E,CAAC;IACF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;IAClE,kBAAkB,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;IACnD,kBAAkB,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;IAEtD,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7C,IAAI,UAAU,GAAkB,IAAI,CAAC;IACrC,MAAM,IAAI,GAAuB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAChE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,UAAU,GAAG,qBAAqB,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACrE,EAAE,CAAC,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACzC,CAAC;SAAM,CAAC;QACN,UAAU,GAAG,qBAAqB,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACrE,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACxC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC,CAAC;QAC5E,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAEvC,4EAA4E;IAC5E,8EAA8E;IAC9E,yEAAyE;IACzE,0EAA0E;IAC1E,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,QAAQ,GAAkB,IAAI,CAAC;IACnC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC7C,UAAU,CAAC,IAAI,CACb,iFAAiF,CAClF,CAAC;QACF,UAAU,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;IACnC,CAAC;SAAM,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QACzC,4EAA4E;QAC5E,0EAA0E;QAC1E,sEAAsE;QACtE,yEAAyE;QACzE,2DAA2D;QAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC5C,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC/C,QAAQ;YACN,uEAAuE;gBACvE,4DAA4D,SAAS,IAAI;gBACzE,mCAAmC,CAAC;QACtC,UAAU,CAAC,IAAI,CACb,gFAAgF,CACjF,CAAC;QACF,UAAU,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;IACnC,CAAC;SAAM,CAAC;QACN,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC5C,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC/C,WAAW,GAAG,cAAc,CAAC;QAC7B,IAAI,cAAc,EAAE,CAAC;YACnB,UAAU,CAAC,IAAI,CACb,UAAU;gBACR,CAAC,CAAC,qEAAqE;gBACvE,CAAC,CAAC,mEAAmE,CACxE,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,0EAA0E;YAC1E,mEAAmE;YACnE,0CAA0C;YAC1C,QAAQ;gBACN,oEAAoE;oBACpE,+CAA+C,CAAC;YAClD,UAAU,CAAC,IAAI,CACb,gEAAgE,CACjE,CAAC;YACF,UAAU,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,OAAO;QACL,EAAE,EAAE,IAAI;QACR,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,IAAI;QACZ,SAAS;QACT,UAAU;QACV,SAAS;QACT,UAAU;QACV,YAAY;QACZ,IAAI;QACJ,UAAU;QACV,gBAAgB;QAChB,cAAc;QACd,eAAe;QACf,WAAW;QACX,QAAQ;QACR,UAAU;KACX,CAAC;AACJ,CAAC;AAED,6EAA6E;AAC7E,SAAS,aAAa,CAAC,WAAoB;IACzC,OAAO,WAAW;QAChB,CAAC,CAAC,8EAA8E;QAChF,CAAC,CAAC,oBAAoB,qBAAqB,qCAAqC,CAAC;AACrF,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAgB,EAAE,KAAa;IACzD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,0BAA0B,QAAQ,EAAE,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAC5B,UAAkB,EAClB,UAAkB,EAClB,GAA6B;IAE7B,IAAI,IAAc,CAAC;IACnB,IAAI,CAAC;QACH,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;QAChE,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;YAC5B,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,GAAG,UAAU,QAAQ,KAAK,EAAE,CAAC;IAChD,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACtC,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,aAAa,CAAC,GAAW;IAChC,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,eAAe;IACtB,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,IACE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YAC7C,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,oBAAoB,CAAC,CAAC,EAC3E,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;AAChE,CAAC;AAED,8EAA8E;AAC9E,6EAA6E;AAC7E,2EAA2E;AAC3E,yEAAyE;AACzE,8EAA8E;AAE9E,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,OAAO;QACL,eAAe;YACb,MAAM,UAAU,GAAG;gBACjB,4BAA4B;gBAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,cAAc,CAAC;aACnD,CAAC;YACF,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;YACxE,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;YAC1B,yEAAyE;YACzE,uEAAuE;YACvE,wEAAwE;YACxE,oEAAoE;YACpE,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,EAAE;gBACjC,iCAAiC,wBAAwB,GAAG;aAC7D,CAAC,CAAC;YACH,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;gBAC3C,IAAI,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;oBAAE,OAAO,KAAK,CAAC;YAClD,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,mBAAmB;YACjB,MAAM,GAAG,GAAG,UAAU,CAAC,UAAU,EAAE;gBACjC,MAAM;gBACN,wBAAwB;gBACxB,iBAAiB;aAClB,CAAC,CAAC;YACH,IAAI,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAC;YACtB,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC;QAED,oBAAoB,CAAC,GAAW;YAC9B,OAAO,KAAK,CAAC,UAAU,EAAE;gBACvB,OAAO;gBACP,wBAAwB;gBACxB,iBAAiB;gBACjB,SAAS;gBACT,GAAG;aACJ,CAAC,CAAC;QACL,CAAC;QAED,iBAAiB;YACf,oEAAoE;YACpE,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;QAC5C,CAAC;QAED,YAAY,CAAC,OAAgB;YAC3B,IAAI,OAAO,EAAE,CAAC;gBACZ,qEAAqE;gBACrE,mEAAmE;gBACnE,6BAA6B;gBAC7B,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,8BAA8B,CAAC,CAAC;oBAAE,OAAO,IAAI,CAAC;YACzE,CAAC;YACD,wEAAwE;YACxE,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;QACjD,CAAC;QAED,WAAW;YACT,OAAO,KAAK,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC;QACrD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,SAAS,WAAW,CAAC,KAAa,EAAE,OAAe;IACjD,IAAI,KAAK,KAAK,GAAG;QAAE,OAAO,OAAO,CAAC;IAClC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,6EAA6E;AAC7E,SAAS,UAAU,CAAC,GAAW,EAAE,IAAc;IAC7C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE;YAClC,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;YACnC,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAC3B,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,2EAA2E;AAC3E,SAAS,KAAK,CAAC,GAAW,EAAE,IAAc;IACxC,IAAI,CAAC;QACH,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE;YACtB,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;YACrC,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"menubar.js","sourceRoot":"","sources":["../../../../src/cli/commands/menubar.ts"],"names":[],"mappings":"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"}
@@ -41,6 +41,7 @@ interface OnboardOpts {
41
41
  codexCapture?: boolean;
42
42
  noCodexCapture?: boolean;
43
43
  enableCodexEnrichment?: boolean;
44
+ enableClaudeEnrichment?: boolean;
44
45
  enableCapture?: boolean;
45
46
  }
46
47
  /**
@@ -83,13 +84,32 @@ export declare function persistVoyageLabel(configPath: string, label: string): v
83
84
  * Persist the Codex AI-metadata-enrichment opt-in into config.json. Default
84
85
  * onboarding leaves `enrichment.ai_metadata = false` (AI-free import + keyword
85
86
  * search, zero Codex calls). When the user passes `--enable-codex-enrichment`,
86
- * this flips it to true so the daemon/worker select the Codex-backed extractor.
87
- * Backs the file up first, mirroring `persistVoyageLabel`.
87
+ * this flips it to true AND pins `enrichment.metadata.provider = "codex_cli"` so
88
+ * the daemon/worker select the Codex-backed extractor overriding any prior
89
+ * `claude_code` pin rather than silently leaving Claude selected. Backs the file
90
+ * up first, mirroring `persistVoyageLabel`.
88
91
  *
89
92
  * Exported for orchestrator-level tests; `runOnboard` is the only production
90
93
  * caller. Returns true when the flag was set and persisted, false otherwise.
91
94
  */
92
95
  export declare function applyCodexEnrichmentOptIn(enable: boolean | undefined, configPath: string, emit: (line: string) => void): boolean;
96
+ /**
97
+ * Persist the Claude-Code AI-metadata-enrichment opt-in into config.json. Like
98
+ * `applyCodexEnrichmentOptIn` it flips `enrichment.ai_metadata = true`, but it
99
+ * ALSO pins `enrichment.metadata.provider = "claude_code"` so the daemon/worker
100
+ * route metadata through the `claude` CLI instead of Codex. Backs the file up
101
+ * first, mirroring the Codex opt-in. Callers must reject the combination of
102
+ * both enrichment flags before reaching here (see `runOnboard`).
103
+ *
104
+ * Discloses the one capability this does NOT turn on: there is no Claude digest
105
+ * worker yet and we will not silently borrow Codex for it, so digests/
106
+ * compaction stay off until a dedicated digest-provider slice ships. Saying so
107
+ * here prevents a silent capability loss for a user who switches to Claude.
108
+ *
109
+ * Exported for orchestrator-level tests; `runOnboard` is the only production
110
+ * caller. Returns true when the flag was set and persisted, false otherwise.
111
+ */
112
+ export declare function applyClaudeEnrichmentOptIn(enable: boolean | undefined, configPath: string, emit: (line: string) => void): boolean;
93
113
  /**
94
114
  * Persist the scheduled-capture opt-in. Default install writes
95
115
  * `capture.enabled = false` (trust-first: zero Codex calls on a fresh
@@ -1 +1 @@
1
- {"version":3,"file":"onboard.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/onboard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"onboard.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/onboard.ts"],"names":[],"mappings":"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"}
@@ -34,10 +34,10 @@ import { sanitizeProjectLabel } from "../../runtime/legacy-name-guard.js";
34
34
  import { validateVoyageKey } from "../../onboarding/voyage-validate.js";
35
35
  import { writeEnvFile } from "../../onboarding/env-file.js";
36
36
  import { kickstartDaemon, waitForHealth, } from "../../onboarding/daemon-control.js";
37
- import { runAutoCapture, resolveCodexCaptureDeps, } from "../../capture/auto-capture.js";
37
+ import { runAutoCapture, resolveCodexCaptureDeps, resolveCursorCaptureDeps, } from "../../capture/auto-capture.js";
38
38
  import { appendAutoCaptureRunRecord, buildAutoCaptureRunRecord, } from "../../capture/observability.js";
39
- import { DEFAULT_AUTO_CAPTURE_SOURCES } from "../../capture/sources.js";
40
- import { CodexCliTriageProvider } from "../../capture/codex-cli-triage-provider.js";
39
+ import { DEFAULT_AUTO_CAPTURE_SOURCES, CURSOR_CAPTURE_SOURCE, } from "../../capture/sources.js";
40
+ import { createTriageProvider, resolveTriageProviderName, setConfiguredTriageProviderName, triageWorkerLabel, } from "../../capture/triage-provider-factory.js";
41
41
  import { discoverClaudeCodeSessions } from "../../ingestion/parsers/claude-code-jsonl.js";
42
42
  import { discoverCodexSessions } from "../../ingestion/parsers/codex-jsonl.js";
43
43
  import { sniffInboxSource } from "../../ingestion/inbox-core/source-sniffer.js";
@@ -89,11 +89,12 @@ export function makeOnboardCommand() {
89
89
  .option("--reconfigure-voyage", "Recovery flow: replace the Voyage key only", false)
90
90
  .option("--yes", "Accept all defaults (non-interactive)", false)
91
91
  .option("--skip-capture", "Skip the post-setup capture pass (test-only)", false)
92
- .option("--no-codex-capture", "Skip the Codex CLI preflight + disable the capture pass for this run")
92
+ .option("--no-codex-capture", "Skip the triage-worker preflight + disable the capture pass for this run")
93
93
  .option("--with-claude-hook", "Install the Rift policy hook into Claude Code without prompting", false)
94
94
  .option("--no-claude-hook", "Skip the Claude Code policy-hook prompt entirely")
95
95
  .option("--enable-codex-enrichment", "Opt into Codex AI metadata enrichment (default: AI-free import + keyword search)", false)
96
- .option("--enable-capture", "Opt into scheduled chat capture + its Codex preflight (default: capture off, zero Codex calls)", false)
96
+ .option("--enable-claude-enrichment", "Opt into Claude Code AI metadata enrichment (digests/compaction stay off until Claude digest support ships; mutually exclusive with --enable-codex-enrichment)", false)
97
+ .option("--enable-capture", "Opt into scheduled chat capture + its triage-worker preflight (Codex by default, or Claude Code via capture.triage.provider; default: capture off, zero AI-worker calls)", false)
97
98
  .action(async (opts, cmd) => {
98
99
  const globalOpts = cmd.optsWithGlobals();
99
100
  try {
@@ -119,6 +120,13 @@ export async function runOnboard(opts, globalOpts) {
119
120
  terminal: !!process.stdin.isTTY,
120
121
  });
121
122
  try {
123
+ // Fail fast, before any config write: the two enrichment opt-ins pick
124
+ // different metadata workers (Codex vs Claude), so passing both is an
125
+ // ambiguous request, not a mergeable one. Reject it up front rather than
126
+ // letting last-writer-wins silently decide which provider you got.
127
+ if (opts.enableCodexEnrichment === true && opts.enableClaudeEnrichment === true) {
128
+ throw new CliError("Pass only one of --enable-codex-enrichment or --enable-claude-enrichment — they select different metadata workers.", "validation");
129
+ }
122
130
  if (opts.reconfigureVoyage) {
123
131
  await reconfigureVoyageFlow(opts, globalOpts, rl);
124
132
  return;
@@ -152,6 +160,7 @@ export async function runOnboard(opts, globalOpts) {
152
160
  // AI-free import + keyword search (zero Codex calls). Only persisted when
153
161
  // the user explicitly passed --enable-codex-enrichment.
154
162
  applyCodexEnrichmentOptIn(opts.enableCodexEnrichment, globalOpts.config, say);
163
+ applyClaudeEnrichmentOptIn(opts.enableClaudeEnrichment, globalOpts.config, say);
155
164
  // Step 2d — optional opt-in to scheduled chat capture. Default off, so a
156
165
  // fresh install makes zero Codex calls. Auto-capture embeds each saved
157
166
  // conversation, so it requires a Voyage key; opting in without one would
@@ -190,7 +199,7 @@ export async function runOnboard(opts, globalOpts) {
190
199
  throw new CliError(`Voyage smoke failed after daemon kickstart: ${refresh.reason}`, "server_error");
191
200
  }
192
201
  }
193
- // Step 3 — Codex CLI preflight (capture lane only).
202
+ // Step 3 — triage-worker preflight (capture lane only).
194
203
  //
195
204
  // Capture is OFF by default (trust-first): a fresh install makes zero
196
205
  // Codex calls. The preflight below performs a real Codex triage call,
@@ -213,6 +222,19 @@ export async function runOnboard(opts, globalOpts) {
213
222
  // import-prompt and summary copy stay honest instead of either over- or
214
223
  // under-promising automatic capture.
215
224
  let codexUnavailable = false;
225
+ // Resolve the configured triage worker so the preflight probes (and labels)
226
+ // the worker the daemon will actually use, and record it process-wide so
227
+ // the first-capture pass below inherits the same selection. Unreadable
228
+ // config falls back to codex_cli — byte-for-byte the prior default.
229
+ let triageWorkerName = "codex_cli";
230
+ try {
231
+ triageWorkerName = resolveTriageProviderName(loadConfig(path.resolve(globalOpts.config)));
232
+ }
233
+ catch {
234
+ triageWorkerName = "codex_cli";
235
+ }
236
+ setConfiguredTriageProviderName(triageWorkerName);
237
+ const workerLabel = triageWorkerLabel(triageWorkerName);
216
238
  if (!captureEnabled) {
217
239
  ui.step("skip", "Chat access", captureRequested
218
240
  ? "capture needs a Voyage key — skipped"
@@ -224,14 +246,16 @@ export async function runOnboard(opts, globalOpts) {
224
246
  captureDisabled = true;
225
247
  }
226
248
  else {
227
- const codexSpin = new ui.Spinner("Chat access").start();
228
- const codexOk = await codexPreflight();
229
- if (codexOk) {
230
- codexSpin.succeed("Chat access", "ready · Codex CLI");
249
+ const preflightSpin = new ui.Spinner("Chat access").start();
250
+ const preflightOk = await triagePreflight(triageWorkerName);
251
+ if (preflightOk) {
252
+ preflightSpin.succeed("Chat access", `ready · ${workerLabel}`);
231
253
  }
232
254
  else {
233
- codexSpin.fail("Chat access", "not ready · Codex CLI — auto-import off");
234
- ui.note("To enable later: run `codex login`, then re-run `rift onboard`.");
255
+ preflightSpin.fail("Chat access", `not ready · ${workerLabel} — auto-import off`);
256
+ ui.note(triageWorkerName === "claude_code"
257
+ ? "To enable later: run `claude` once and sign in, then re-run `rift onboard`."
258
+ : "To enable later: run `codex login`, then re-run `rift onboard`.");
235
259
  captureDisabled = true;
236
260
  codexUnavailable = true;
237
261
  }
@@ -246,6 +270,24 @@ export async function runOnboard(opts, globalOpts) {
246
270
  const claudeSessions = safeDiscover(() => discoverClaudeCodeSessions(path.join(os.homedir(), ".claude")));
247
271
  const codexSessions = safeDiscover(() => discoverCodexSessions());
248
272
  ui.step("ok", "Chat history", `${claudeSessions} Claude Code · ${codexSessions} Codex CLI`);
273
+ // Set the expectation honestly up front: auto-capture covers the CLI agents,
274
+ // not every AI app on the Mac. The Claude/ChatGPT desktop + web apps keep
275
+ // their history server-side, so those chats arrive via export → rift import.
276
+ // `ui.detail` (legible, not dimmed) because this is trust-critical copy.
277
+ //
278
+ // The CLI-agent line is gated on `autoCaptureWillRun`: "captured
279
+ // automatically" is only true once capture is enabled AND the worker
280
+ // preflight passed. On a default/off or not-ready install (we just printed
281
+ // "capture off"/"not ready" above) we describe ELIGIBILITY instead, so the
282
+ // block never contradicts the gate it sits under.
283
+ const cliAgentsLine = autoCaptureWillRun
284
+ ? " • Claude Code + Codex CLI — captured automatically\n"
285
+ : " • Claude Code + Codex CLI — eligible for auto-capture once capture is enabled and chat access is ready\n";
286
+ ui.detail("Auto-capture covers your terminal AI agents — not every AI app on your Mac:\n" +
287
+ cliAgentsLine +
288
+ " • Cursor — only if you turn it on (add cursor_composer to capture.sources)\n" +
289
+ " • Claude Desktop / ChatGPT / web chats — NOT automatic; export them, then:\n" +
290
+ " rift import <file> --source claude_web (or chatgpt_web)");
249
291
  // Step 5 — beta opt-in (stay connected: news, pricing, feedback).
250
292
  const feedback = await collectFeedbackPreference(opts, dataDir, rl);
251
293
  if (feedback.email) {
@@ -300,6 +342,7 @@ export async function runOnboard(opts, globalOpts) {
300
342
  const importPath = await collectImportPath(opts, rl, {
301
343
  willRun: autoCaptureWillRun,
302
344
  configured: captureEnabled,
345
+ workerLabel,
303
346
  });
304
347
  if (importPath) {
305
348
  importAttempted = true;
@@ -343,13 +386,15 @@ export async function runOnboard(opts, globalOpts) {
343
386
  ? `Voyage: key valid (last 4 …${last4})${safeLabel ? ` · label ${safeLabel}` : ""}`
344
387
  : "Search: keyword-only (no embedding key) — add one later for semantic search"));
345
388
  // One-line "what's on/off" so the friend leaves knowing whether Rift keeps
346
- // itself fed. Three honest states: ready (configured + Codex available),
347
- // configured-but-not-ready (Codex failed — don't claim it's running), and
348
- // off (the default). Capture is off by default (zero-Codex trust default).
389
+ // itself fed. Three honest states: ready (configured + worker available),
390
+ // configured-but-not-ready (preflight failed — don't claim it's running),
391
+ // and off (the default). Capture is off by default (zero-egress default).
349
392
  card.push(ui.pc.dim(autoCaptureWillRun
350
393
  ? "Auto-capture: on — new chats are captured on a schedule."
351
394
  : captureEnabled
352
- ? "Auto-capture: configured on, but not ready — Codex CLI isn't available (run `codex login`)."
395
+ ? `Auto-capture: configured on, but not ready — ${workerLabel} isn't available (${triageWorkerName === "claude_code"
396
+ ? "run `claude` and sign in"
397
+ : "run `codex login`"}).`
353
398
  : "Auto-capture: off — enable with: rift onboard --enable-capture"));
354
399
  ui.box(card);
355
400
  ui.line("");
@@ -482,8 +527,10 @@ export function persistVoyageLabel(configPath, label) {
482
527
  * Persist the Codex AI-metadata-enrichment opt-in into config.json. Default
483
528
  * onboarding leaves `enrichment.ai_metadata = false` (AI-free import + keyword
484
529
  * search, zero Codex calls). When the user passes `--enable-codex-enrichment`,
485
- * this flips it to true so the daemon/worker select the Codex-backed extractor.
486
- * Backs the file up first, mirroring `persistVoyageLabel`.
530
+ * this flips it to true AND pins `enrichment.metadata.provider = "codex_cli"` so
531
+ * the daemon/worker select the Codex-backed extractor overriding any prior
532
+ * `claude_code` pin rather than silently leaving Claude selected. Backs the file
533
+ * up first, mirroring `persistVoyageLabel`.
487
534
  *
488
535
  * Exported for orchestrator-level tests; `runOnboard` is the only production
489
536
  * caller. Returns true when the flag was set and persisted, false otherwise.
@@ -501,6 +548,13 @@ export function applyCodexEnrichmentOptIn(enable, configPath, emit) {
501
548
  const parsed = JSON.parse(raw);
502
549
  const enrichment = parsed["enrichment"] ?? {};
503
550
  enrichment["ai_metadata"] = true;
551
+ // Pin the metadata worker to Codex explicitly. Setting only `ai_metadata`
552
+ // would leave a pre-existing `metadata.provider = "claude_code"` in place, so
553
+ // "use Codex" would silently keep routing metadata through Claude (and keep
554
+ // digests off). Codex opt-in must win the provider selection, not just the gate.
555
+ const metadata = enrichment["metadata"] ?? {};
556
+ metadata["provider"] = "codex_cli";
557
+ enrichment["metadata"] = metadata;
504
558
  parsed["enrichment"] = enrichment;
505
559
  const tmp = `${absolute}.tmp.${process.pid}`;
506
560
  fs.writeFileSync(tmp, JSON.stringify(parsed, null, 2) + "\n", {
@@ -508,7 +562,49 @@ export function applyCodexEnrichmentOptIn(enable, configPath, emit) {
508
562
  mode: 0o644,
509
563
  });
510
564
  fs.renameSync(tmp, absolute);
511
- emit("Codex AI metadata enrichment enabled (enrichment.ai_metadata = true).");
565
+ emit("Codex AI metadata enrichment enabled (enrichment.ai_metadata = true, metadata.provider = codex_cli).");
566
+ return true;
567
+ }
568
+ /**
569
+ * Persist the Claude-Code AI-metadata-enrichment opt-in into config.json. Like
570
+ * `applyCodexEnrichmentOptIn` it flips `enrichment.ai_metadata = true`, but it
571
+ * ALSO pins `enrichment.metadata.provider = "claude_code"` so the daemon/worker
572
+ * route metadata through the `claude` CLI instead of Codex. Backs the file up
573
+ * first, mirroring the Codex opt-in. Callers must reject the combination of
574
+ * both enrichment flags before reaching here (see `runOnboard`).
575
+ *
576
+ * Discloses the one capability this does NOT turn on: there is no Claude digest
577
+ * worker yet and we will not silently borrow Codex for it, so digests/
578
+ * compaction stay off until a dedicated digest-provider slice ships. Saying so
579
+ * here prevents a silent capability loss for a user who switches to Claude.
580
+ *
581
+ * Exported for orchestrator-level tests; `runOnboard` is the only production
582
+ * caller. Returns true when the flag was set and persisted, false otherwise.
583
+ */
584
+ export function applyClaudeEnrichmentOptIn(enable, configPath, emit) {
585
+ if (enable !== true)
586
+ return false;
587
+ const absolute = path.resolve(configPath);
588
+ if (!fs.existsSync(absolute)) {
589
+ throw new CliError(`Cannot persist enrichment opt-in: config not found at ${absolute}`, "validation");
590
+ }
591
+ const raw = fs.readFileSync(absolute, "utf8");
592
+ const stamp = new Date().toISOString().replace(/[:.]/g, "-");
593
+ fs.writeFileSync(`${absolute}.bak.${stamp}`, raw, { encoding: "utf8", mode: 0o600 });
594
+ const parsed = JSON.parse(raw);
595
+ const enrichment = parsed["enrichment"] ?? {};
596
+ enrichment["ai_metadata"] = true;
597
+ const metadata = enrichment["metadata"] ?? {};
598
+ metadata["provider"] = "claude_code";
599
+ enrichment["metadata"] = metadata;
600
+ parsed["enrichment"] = enrichment;
601
+ const tmp = `${absolute}.tmp.${process.pid}`;
602
+ fs.writeFileSync(tmp, JSON.stringify(parsed, null, 2) + "\n", {
603
+ encoding: "utf8",
604
+ mode: 0o644,
605
+ });
606
+ fs.renameSync(tmp, absolute);
607
+ emit("Claude metadata enrichment enabled. Digests/compaction stay off until Claude digest support ships.");
512
608
  return true;
513
609
  }
514
610
  /**
@@ -740,12 +836,18 @@ export function describeTokenFailure(reason) {
740
836
  }
741
837
  return "re-run `rift onboard`. If the failure repeats, run `rift feedback --kind=broke --with-status` to ship a diagnostic bundle.";
742
838
  }
743
- // ----- Step 3: Codex preflight -----
744
- async function codexPreflight() {
839
+ // ----- Step 3: triage-worker preflight -----
840
+ /**
841
+ * Live triage probe for the CONFIGURED worker (Codex CLI by default, or Claude
842
+ * Code when `capture.triage.provider = claude_code`). Routing through the
843
+ * factory — not a hardcoded CodexCliTriageProvider — is what stops a Claude
844
+ * Code user who deliberately picked `claude_code` from being failed by a Codex
845
+ * probe they never asked for.
846
+ */
847
+ async function triagePreflight(name) {
745
848
  try {
746
- await new CodexCliTriageProvider({ timeoutMs: 120_000 }).triage({
849
+ await createTriageProvider(name, { timeoutMs: 120_000 }).triage({
747
850
  content: "User: Rift onboarding preflight.\n\nAssistant: Ready.",
748
- source: "codex_cli",
749
851
  });
750
852
  return true;
751
853
  }
@@ -1075,15 +1177,38 @@ export async function runFirstCapturePass(configPath, dataDir) {
1075
1177
  const token = tokenResult.token;
1076
1178
  const client = createHttpClient({ baseUrl, token });
1077
1179
  let codexCaptureDeps = {};
1180
+ let cursorCaptureDeps = {};
1181
+ // Onboarding is a config-driven capture path, so it must honor the Cursor
1182
+ // opt-in exactly like the daemon: if `cursor_composer` is in
1183
+ // `config.capture.sources`, this first pass authorizes Cursor discovery +
1184
+ // persistence WITHOUT the env flags (which exist only for ad-hoc dogfood
1185
+ // runs). Without this, onboarding would record cursor_composer in its ledger
1186
+ // row yet runAutoCapture would treat Cursor as disabled — capturing nothing.
1187
+ let cursorConfigEnabled = false;
1078
1188
  let enabledSources = DEFAULT_AUTO_CAPTURE_SOURCES;
1189
+ // Worker name for the honest preflight-failed warning below (defaults to the
1190
+ // codex_cli label until config resolves).
1191
+ let captureWorkerLabel = triageWorkerLabel("codex_cli");
1079
1192
  try {
1080
1193
  const { loadConfig } = await import("../../config/loader.js");
1081
1194
  const cfg = loadConfig(configPath);
1195
+ // Route this first capture pass through the configured triage worker —
1196
+ // runAutoCapture builds its provider from the process-wide configured name,
1197
+ // so without this a claude_code user's onboarding pass would silently fall
1198
+ // back to Codex. (Step 3 already set it; re-assert here so this function is
1199
+ // correct independent of call order.)
1200
+ const captureWorkerName = resolveTriageProviderName(cfg);
1201
+ setConfiguredTriageProviderName(captureWorkerName);
1202
+ captureWorkerLabel = triageWorkerLabel(captureWorkerName);
1082
1203
  codexCaptureDeps = resolveCodexCaptureDeps(cfg);
1204
+ cursorCaptureDeps = resolveCursorCaptureDeps(cfg);
1205
+ cursorConfigEnabled = cfg.capture.sources.includes(CURSOR_CAPTURE_SOURCE);
1083
1206
  enabledSources = cfg.capture.sources;
1084
1207
  }
1085
1208
  catch {
1086
1209
  codexCaptureDeps = {};
1210
+ cursorCaptureDeps = {};
1211
+ cursorConfigEnabled = false;
1087
1212
  }
1088
1213
  const startedAt = new Date();
1089
1214
  const captureSpin = new ui.Spinner("Chat import").start();
@@ -1098,6 +1223,8 @@ export async function runFirstCapturePass(configPath, dataDir) {
1098
1223
  // ledger that says one thing while capture did another.
1099
1224
  sources: enabledSources,
1100
1225
  ...codexCaptureDeps,
1226
+ ...cursorCaptureDeps,
1227
+ cursorConfigEnabled,
1101
1228
  saveFn: async (saveOpts) => {
1102
1229
  const { data } = await client.post("/save", {
1103
1230
  source: saveOpts.source,
@@ -1140,12 +1267,12 @@ export async function runFirstCapturePass(configPath, dataDir) {
1140
1267
  : String(observabilityErr)}\n`);
1141
1268
  }
1142
1269
  const base = `${report.saved} added · ${report.review} to review`;
1143
- // A preflight failure (Codex health probe) carries 0 per-session errors,
1144
- // so an `errors > 0` check alone would `succeed()` on a run where triage
1145
- // never ran — telling a friend everything's fine when it isn't. Treat a
1146
- // failed probe as a warning too, and surface why.
1270
+ // A preflight failure (triage-worker health probe) carries 0 per-session
1271
+ // errors, so an `errors > 0` check alone would `succeed()` on a run where
1272
+ // triage never ran — telling a friend everything's fine when it isn't.
1273
+ // Treat a failed probe as a warning too, and surface why.
1147
1274
  if (!report.preflight_ok) {
1148
- captureSpin.warn("Chat import", `${base} · Codex preflight failed${report.preflight_error ? ` (${report.preflight_error})` : ""}`);
1275
+ captureSpin.warn("Chat import", `${base} · ${captureWorkerLabel} preflight failed${report.preflight_error ? ` (${report.preflight_error})` : ""}`);
1149
1276
  }
1150
1277
  else if (report.errors > 0) {
1151
1278
  captureSpin.warn("Chat import", `${base} · ${report.errors} error(s)`);
@@ -1178,14 +1305,14 @@ async function collectImportPath(opts, rl, capture) {
1178
1305
  //
1179
1306
  // The "skipping is fine" reassurance MUST match what will actually happen.
1180
1307
  // Auto-capture is OFF by default, AND can be configured-on-but-not-running
1181
- // when the Codex preflight failed — promising "new chats get captured
1308
+ // when the triage-worker preflight failed — promising "new chats get captured
1182
1309
  // automatically" in either case is the exact trust break this flow removes.
1183
1310
  // Only promise it when capture will genuinely run; otherwise point at the
1184
- // real next step (fix Codex if configured, or enable it if off).
1311
+ // real next step (fix the triage worker if configured, or enable it if off).
1185
1312
  const whySkip = capture.willRun
1186
1313
  ? "skipping is fine — new chats get captured automatically."
1187
1314
  : capture.configured
1188
- ? "skipping is fine — import later with `rift import` (auto-capture is on but won't run until Codex is ready — see above)."
1315
+ ? `skipping is fine — import later with \`rift import\` (auto-capture is on but won't run until ${capture.workerLabel} is ready — see above).`
1189
1316
  : "skipping is fine — import later with `rift import`, or turn on auto-capture with `rift onboard --enable-capture`.";
1190
1317
  ui.detail([
1191
1318
  "Import past chats (optional)",
@@ -1452,7 +1579,8 @@ function say(line) {
1452
1579
  function sayPrivacyContract() {
1453
1580
  ui.detail([
1454
1581
  "• Conversation content stays local (LanceDB + raw transcripts).",
1455
- "• Content snippets leave the machine for embedding only (Voyage AI).",
1582
+ "• Indexed conversation text and your search queries leave the machine",
1583
+ " for embedding only when a Voyage key is configured (Voyage AI).",
1456
1584
  "• The Voyage key sits in ~/.rift.env (mode 0600), is sent only to Voyage,",
1457
1585
  " and is never logged or sent to Clem.",
1458
1586
  "• Feedback is stored locally as JSONL. Relay is opt-in: explicit notes only,",