@getrift/rift 0.1.0-beta.2 → 0.1.0-beta.20

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 (386) hide show
  1. package/README.md +35 -9
  2. package/dist/src/auth/keychain.d.ts +9 -0
  3. package/dist/src/auth/keychain.d.ts.map +1 -1
  4. package/dist/src/auth/keychain.js +37 -0
  5. package/dist/src/auth/keychain.js.map +1 -1
  6. package/dist/src/capture/auto-capture.d.ts +7 -0
  7. package/dist/src/capture/auto-capture.d.ts.map +1 -1
  8. package/dist/src/capture/auto-capture.js +82 -15
  9. package/dist/src/capture/auto-capture.js.map +1 -1
  10. package/dist/src/capture/auto-repair.d.ts +110 -0
  11. package/dist/src/capture/auto-repair.d.ts.map +1 -0
  12. package/dist/src/capture/auto-repair.js +269 -0
  13. package/dist/src/capture/auto-repair.js.map +1 -0
  14. package/dist/src/capture/codex-cli-triage-provider.d.ts.map +1 -1
  15. package/dist/src/capture/codex-cli-triage-provider.js +4 -3
  16. package/dist/src/capture/codex-cli-triage-provider.js.map +1 -1
  17. package/dist/src/capture/observability.d.ts +42 -0
  18. package/dist/src/capture/observability.d.ts.map +1 -1
  19. package/dist/src/capture/observability.js +45 -4
  20. package/dist/src/capture/observability.js.map +1 -1
  21. package/dist/src/capture/recover-quarantine.d.ts +260 -0
  22. package/dist/src/capture/recover-quarantine.d.ts.map +1 -0
  23. package/dist/src/capture/recover-quarantine.js +522 -0
  24. package/dist/src/capture/recover-quarantine.js.map +1 -0
  25. package/dist/src/cli/commands/backfill.d.ts.map +1 -1
  26. package/dist/src/cli/commands/backfill.js +5 -2
  27. package/dist/src/cli/commands/backfill.js.map +1 -1
  28. package/dist/src/cli/commands/capture-recover.d.ts +40 -0
  29. package/dist/src/cli/commands/capture-recover.d.ts.map +1 -0
  30. package/dist/src/cli/commands/capture-recover.js +184 -0
  31. package/dist/src/cli/commands/capture-recover.js.map +1 -0
  32. package/dist/src/cli/commands/capture.d.ts.map +1 -1
  33. package/dist/src/cli/commands/capture.js +96 -5
  34. package/dist/src/cli/commands/capture.js.map +1 -1
  35. package/dist/src/cli/commands/doctor.d.ts +6 -0
  36. package/dist/src/cli/commands/doctor.d.ts.map +1 -0
  37. package/dist/src/cli/commands/doctor.js +242 -0
  38. package/dist/src/cli/commands/doctor.js.map +1 -0
  39. package/dist/src/cli/commands/feedback.d.ts +12 -0
  40. package/dist/src/cli/commands/feedback.d.ts.map +1 -1
  41. package/dist/src/cli/commands/feedback.js +93 -4
  42. package/dist/src/cli/commands/feedback.js.map +1 -1
  43. package/dist/src/cli/commands/mcp-install.js +5 -2
  44. package/dist/src/cli/commands/mcp-install.js.map +1 -1
  45. package/dist/src/cli/commands/menubar.d.ts +30 -0
  46. package/dist/src/cli/commands/menubar.d.ts.map +1 -0
  47. package/dist/src/cli/commands/menubar.js +180 -0
  48. package/dist/src/cli/commands/menubar.js.map +1 -0
  49. package/dist/src/cli/commands/onboard.d.ts +129 -0
  50. package/dist/src/cli/commands/onboard.d.ts.map +1 -1
  51. package/dist/src/cli/commands/onboard.js +752 -171
  52. package/dist/src/cli/commands/onboard.js.map +1 -1
  53. package/dist/src/cli/commands/rebuild.d.ts.map +1 -1
  54. package/dist/src/cli/commands/rebuild.js +6 -3
  55. package/dist/src/cli/commands/rebuild.js.map +1 -1
  56. package/dist/src/cli/commands/reconcile.d.ts.map +1 -1
  57. package/dist/src/cli/commands/reconcile.js +12 -0
  58. package/dist/src/cli/commands/reconcile.js.map +1 -1
  59. package/dist/src/cli/commands/review.d.ts.map +1 -1
  60. package/dist/src/cli/commands/review.js +22 -7
  61. package/dist/src/cli/commands/review.js.map +1 -1
  62. package/dist/src/cli/commands/search.d.ts +2 -0
  63. package/dist/src/cli/commands/search.d.ts.map +1 -1
  64. package/dist/src/cli/commands/search.js +34 -4
  65. package/dist/src/cli/commands/search.js.map +1 -1
  66. package/dist/src/cli/commands/status.d.ts +9 -7
  67. package/dist/src/cli/commands/status.d.ts.map +1 -1
  68. package/dist/src/cli/commands/status.js +113 -12
  69. package/dist/src/cli/commands/status.js.map +1 -1
  70. package/dist/src/cli/commands/token-issue.d.ts.map +1 -1
  71. package/dist/src/cli/commands/token-issue.js +9 -1
  72. package/dist/src/cli/commands/token-issue.js.map +1 -1
  73. package/dist/src/cli/commands/triage.d.ts.map +1 -1
  74. package/dist/src/cli/commands/triage.js +7 -5
  75. package/dist/src/cli/commands/triage.js.map +1 -1
  76. package/dist/src/cli/commands/update.d.ts +80 -0
  77. package/dist/src/cli/commands/update.d.ts.map +1 -0
  78. package/dist/src/cli/commands/update.js +378 -0
  79. package/dist/src/cli/commands/update.js.map +1 -0
  80. package/dist/src/cli/default-config-path.d.ts +15 -0
  81. package/dist/src/cli/default-config-path.d.ts.map +1 -0
  82. package/dist/src/cli/default-config-path.js +27 -0
  83. package/dist/src/cli/default-config-path.js.map +1 -0
  84. package/dist/src/cli/feedback/feedback-config.d.ts +46 -0
  85. package/dist/src/cli/feedback/feedback-config.d.ts.map +1 -1
  86. package/dist/src/cli/feedback/feedback-config.js +130 -4
  87. package/dist/src/cli/feedback/feedback-config.js.map +1 -1
  88. package/dist/src/cli/feedback/feedback-history.d.ts +7 -0
  89. package/dist/src/cli/feedback/feedback-history.d.ts.map +1 -1
  90. package/dist/src/cli/feedback/feedback-history.js +39 -9
  91. package/dist/src/cli/feedback/feedback-history.js.map +1 -1
  92. package/dist/src/cli/feedback/feedback-payload.d.ts +22 -1
  93. package/dist/src/cli/feedback/feedback-payload.d.ts.map +1 -1
  94. package/dist/src/cli/feedback/feedback-payload.js.map +1 -1
  95. package/dist/src/cli/feedback/feedback-relay.d.ts +2 -2
  96. package/dist/src/cli/feedback/feedback-relay.d.ts.map +1 -1
  97. package/dist/src/cli/feedback/feedback-relay.js.map +1 -1
  98. package/dist/src/cli/feedback/invite.d.ts +17 -0
  99. package/dist/src/cli/feedback/invite.d.ts.map +1 -0
  100. package/dist/src/cli/feedback/invite.js +67 -0
  101. package/dist/src/cli/feedback/invite.js.map +1 -0
  102. package/dist/src/cli/feedback/relay-secret-store.d.ts +32 -0
  103. package/dist/src/cli/feedback/relay-secret-store.d.ts.map +1 -0
  104. package/dist/src/cli/feedback/relay-secret-store.js +137 -0
  105. package/dist/src/cli/feedback/relay-secret-store.js.map +1 -0
  106. package/dist/src/cli/http-client.d.ts +93 -1
  107. package/dist/src/cli/http-client.d.ts.map +1 -1
  108. package/dist/src/cli/http-client.js +254 -6
  109. package/dist/src/cli/http-client.js.map +1 -1
  110. package/dist/src/cli/index.d.ts.map +1 -1
  111. package/dist/src/cli/index.js +29 -6
  112. package/dist/src/cli/index.js.map +1 -1
  113. package/dist/src/cli/postinstall-menubar.d.ts +22 -0
  114. package/dist/src/cli/postinstall-menubar.d.ts.map +1 -0
  115. package/dist/src/cli/postinstall-menubar.js +39 -0
  116. package/dist/src/cli/postinstall-menubar.js.map +1 -0
  117. package/dist/src/cli/status/friend-header.d.ts +8 -1
  118. package/dist/src/cli/status/friend-header.d.ts.map +1 -1
  119. package/dist/src/cli/status/friend-header.js +334 -26
  120. package/dist/src/cli/status/friend-header.js.map +1 -1
  121. package/dist/src/cli/ui.d.ts +47 -0
  122. package/dist/src/cli/ui.d.ts.map +1 -0
  123. package/dist/src/cli/ui.js +166 -0
  124. package/dist/src/cli/ui.js.map +1 -0
  125. package/dist/src/config/schema.d.ts +79 -0
  126. package/dist/src/config/schema.d.ts.map +1 -1
  127. package/dist/src/config/schema.js +44 -0
  128. package/dist/src/config/schema.js.map +1 -1
  129. package/dist/src/diagnostics/codex-preflight.d.ts +33 -0
  130. package/dist/src/diagnostics/codex-preflight.d.ts.map +1 -0
  131. package/dist/src/diagnostics/codex-preflight.js +75 -0
  132. package/dist/src/diagnostics/codex-preflight.js.map +1 -0
  133. package/dist/src/diagnostics/doctor.d.ts +106 -0
  134. package/dist/src/diagnostics/doctor.d.ts.map +1 -0
  135. package/dist/src/diagnostics/doctor.js +334 -0
  136. package/dist/src/diagnostics/doctor.js.map +1 -0
  137. package/dist/src/diagnostics/notify.d.ts +90 -0
  138. package/dist/src/diagnostics/notify.d.ts.map +1 -0
  139. package/dist/src/diagnostics/notify.js +177 -0
  140. package/dist/src/diagnostics/notify.js.map +1 -0
  141. package/dist/src/diagnostics/repair-prompt.d.ts +49 -0
  142. package/dist/src/diagnostics/repair-prompt.d.ts.map +1 -0
  143. package/dist/src/diagnostics/repair-prompt.js +223 -0
  144. package/dist/src/diagnostics/repair-prompt.js.map +1 -0
  145. package/dist/src/ingestion/inbox-core/conversation-fingerprint.d.ts +2 -0
  146. package/dist/src/ingestion/inbox-core/conversation-fingerprint.d.ts.map +1 -0
  147. package/dist/src/ingestion/inbox-core/conversation-fingerprint.js +27 -0
  148. package/dist/src/ingestion/inbox-core/conversation-fingerprint.js.map +1 -0
  149. package/dist/src/ingestion/inbox-core/conversation-key.d.ts +2 -0
  150. package/dist/src/ingestion/inbox-core/conversation-key.d.ts.map +1 -0
  151. package/dist/src/ingestion/inbox-core/conversation-key.js +31 -0
  152. package/dist/src/ingestion/inbox-core/conversation-key.js.map +1 -0
  153. package/dist/src/ingestion/inbox-core/extensions.d.ts +3 -0
  154. package/dist/src/ingestion/inbox-core/extensions.d.ts.map +1 -0
  155. package/dist/src/ingestion/inbox-core/extensions.js +16 -0
  156. package/dist/src/ingestion/inbox-core/extensions.js.map +1 -0
  157. package/dist/src/ingestion/inbox-core/idempotency.d.ts +2 -0
  158. package/dist/src/ingestion/inbox-core/idempotency.d.ts.map +1 -0
  159. package/dist/src/ingestion/inbox-core/idempotency.js +22 -0
  160. package/dist/src/ingestion/inbox-core/idempotency.js.map +1 -0
  161. package/dist/src/ingestion/inbox-core/index.d.ts +20 -0
  162. package/dist/src/ingestion/inbox-core/index.d.ts.map +1 -0
  163. package/dist/src/ingestion/inbox-core/index.js +20 -0
  164. package/dist/src/ingestion/inbox-core/index.js.map +1 -0
  165. package/dist/src/ingestion/inbox-core/source-detection.d.ts +2 -0
  166. package/dist/src/ingestion/inbox-core/source-detection.d.ts.map +1 -0
  167. package/dist/src/ingestion/inbox-core/source-detection.js +23 -0
  168. package/dist/src/ingestion/inbox-core/source-detection.js.map +1 -0
  169. package/dist/src/ingestion/inbox-core/source-sniffer.d.ts +11 -0
  170. package/dist/src/ingestion/inbox-core/source-sniffer.d.ts.map +1 -0
  171. package/dist/src/ingestion/inbox-core/source-sniffer.js +69 -0
  172. package/dist/src/ingestion/inbox-core/source-sniffer.js.map +1 -0
  173. package/dist/src/ingestion/inbox-core/zip-sniffer.d.ts +70 -0
  174. package/dist/src/ingestion/inbox-core/zip-sniffer.d.ts.map +1 -0
  175. package/dist/src/ingestion/inbox-core/zip-sniffer.js +161 -0
  176. package/dist/src/ingestion/inbox-core/zip-sniffer.js.map +1 -0
  177. package/dist/src/ingestion/inbox-watcher.d.ts.map +1 -1
  178. package/dist/src/ingestion/inbox-watcher.js +34 -50
  179. package/dist/src/ingestion/inbox-watcher.js.map +1 -1
  180. package/dist/src/ingestion/indexer.d.ts +7 -0
  181. package/dist/src/ingestion/indexer.d.ts.map +1 -1
  182. package/dist/src/ingestion/indexer.js +36 -2
  183. package/dist/src/ingestion/indexer.js.map +1 -1
  184. package/dist/src/ingestion/metadata-extraction.d.ts +8 -5
  185. package/dist/src/ingestion/metadata-extraction.d.ts.map +1 -1
  186. package/dist/src/ingestion/metadata-extraction.js +24 -5
  187. package/dist/src/ingestion/metadata-extraction.js.map +1 -1
  188. package/dist/src/ingestion/skip-quarantine.d.ts +10 -0
  189. package/dist/src/ingestion/skip-quarantine.d.ts.map +1 -0
  190. package/dist/src/ingestion/skip-quarantine.js +35 -0
  191. package/dist/src/ingestion/skip-quarantine.js.map +1 -0
  192. package/dist/src/jobs/handlers/compact.d.ts.map +1 -1
  193. package/dist/src/jobs/handlers/compact.js +30 -4
  194. package/dist/src/jobs/handlers/compact.js.map +1 -1
  195. package/dist/src/jobs/handlers/dedupe-conversations.d.ts +134 -0
  196. package/dist/src/jobs/handlers/dedupe-conversations.d.ts.map +1 -0
  197. package/dist/src/jobs/handlers/dedupe-conversations.js +371 -0
  198. package/dist/src/jobs/handlers/dedupe-conversations.js.map +1 -0
  199. package/dist/src/jobs/handlers/ingest.d.ts.map +1 -1
  200. package/dist/src/jobs/handlers/ingest.js +295 -41
  201. package/dist/src/jobs/handlers/ingest.js.map +1 -1
  202. package/dist/src/jobs/handlers/reconcile.d.ts +28 -0
  203. package/dist/src/jobs/handlers/reconcile.d.ts.map +1 -1
  204. package/dist/src/jobs/handlers/reconcile.js +145 -19
  205. package/dist/src/jobs/handlers/reconcile.js.map +1 -1
  206. package/dist/src/jobs/handlers/reindex.d.ts.map +1 -1
  207. package/dist/src/jobs/handlers/reindex.js +13 -2
  208. package/dist/src/jobs/handlers/reindex.js.map +1 -1
  209. package/dist/src/jobs/handlers/save.d.ts.map +1 -1
  210. package/dist/src/jobs/handlers/save.js +57 -3
  211. package/dist/src/jobs/handlers/save.js.map +1 -1
  212. package/dist/src/jobs/queue.d.ts +51 -1
  213. package/dist/src/jobs/queue.d.ts.map +1 -1
  214. package/dist/src/jobs/queue.js +466 -26
  215. package/dist/src/jobs/queue.js.map +1 -1
  216. package/dist/src/jobs/worker-entry.d.ts.map +1 -1
  217. package/dist/src/jobs/worker-entry.js +35 -7
  218. package/dist/src/jobs/worker-entry.js.map +1 -1
  219. package/dist/src/jobs/worker-process.d.ts +11 -0
  220. package/dist/src/jobs/worker-process.d.ts.map +1 -1
  221. package/dist/src/jobs/worker-process.js +37 -4
  222. package/dist/src/jobs/worker-process.js.map +1 -1
  223. package/dist/src/main.js +199 -46
  224. package/dist/src/main.js.map +1 -1
  225. package/dist/src/mcp/errors.d.ts.map +1 -1
  226. package/dist/src/mcp/errors.js +20 -1
  227. package/dist/src/mcp/errors.js.map +1 -1
  228. package/dist/src/mcp/server.d.ts.map +1 -1
  229. package/dist/src/mcp/server.js +43 -3
  230. package/dist/src/mcp/server.js.map +1 -1
  231. package/dist/src/mcp/tools/context-pack.d.ts.map +1 -1
  232. package/dist/src/mcp/tools/context-pack.js +164 -23
  233. package/dist/src/mcp/tools/context-pack.js.map +1 -1
  234. package/dist/src/mcp/tools/search.d.ts +6 -2
  235. package/dist/src/mcp/tools/search.d.ts.map +1 -1
  236. package/dist/src/mcp/tools/search.js +35 -4
  237. package/dist/src/mcp/tools/search.js.map +1 -1
  238. package/dist/src/observability/embedding-events.d.ts +52 -0
  239. package/dist/src/observability/embedding-events.d.ts.map +1 -0
  240. package/dist/src/observability/embedding-events.js +149 -0
  241. package/dist/src/observability/embedding-events.js.map +1 -0
  242. package/dist/src/observability/index-events.d.ts +70 -0
  243. package/dist/src/observability/index-events.d.ts.map +1 -0
  244. package/dist/src/observability/index-events.js +148 -0
  245. package/dist/src/observability/index-events.js.map +1 -0
  246. package/dist/src/observability/onboarding-metric.d.ts +131 -0
  247. package/dist/src/observability/onboarding-metric.d.ts.map +1 -0
  248. package/dist/src/observability/onboarding-metric.js +351 -0
  249. package/dist/src/observability/onboarding-metric.js.map +1 -0
  250. package/dist/src/observability/tool-usage-stats.d.ts +77 -4
  251. package/dist/src/observability/tool-usage-stats.d.ts.map +1 -1
  252. package/dist/src/observability/tool-usage-stats.js +112 -32
  253. package/dist/src/observability/tool-usage-stats.js.map +1 -1
  254. package/dist/src/observability/tool-usage.d.ts +100 -7
  255. package/dist/src/observability/tool-usage.d.ts.map +1 -1
  256. package/dist/src/observability/tool-usage.js +196 -33
  257. package/dist/src/observability/tool-usage.js.map +1 -1
  258. package/dist/src/observability/version-check.d.ts +71 -0
  259. package/dist/src/observability/version-check.d.ts.map +1 -0
  260. package/dist/src/observability/version-check.js +198 -0
  261. package/dist/src/observability/version-check.js.map +1 -0
  262. package/dist/src/providers/basic-metadata-extraction.d.ts +60 -0
  263. package/dist/src/providers/basic-metadata-extraction.d.ts.map +1 -0
  264. package/dist/src/providers/basic-metadata-extraction.js +114 -0
  265. package/dist/src/providers/basic-metadata-extraction.js.map +1 -0
  266. package/dist/src/providers/codex-cli-metadata-extraction.d.ts +1 -0
  267. package/dist/src/providers/codex-cli-metadata-extraction.d.ts.map +1 -1
  268. package/dist/src/providers/codex-cli-metadata-extraction.js +6 -2
  269. package/dist/src/providers/codex-cli-metadata-extraction.js.map +1 -1
  270. package/dist/src/providers/codex-cli-model.d.ts +61 -0
  271. package/dist/src/providers/codex-cli-model.d.ts.map +1 -0
  272. package/dist/src/providers/codex-cli-model.js +194 -0
  273. package/dist/src/providers/codex-cli-model.js.map +1 -0
  274. package/dist/src/providers/codex-cli-runner.d.ts +39 -0
  275. package/dist/src/providers/codex-cli-runner.d.ts.map +1 -1
  276. package/dist/src/providers/codex-cli-runner.js +234 -48
  277. package/dist/src/providers/codex-cli-runner.js.map +1 -1
  278. package/dist/src/providers/conversation-generation.d.ts.map +1 -1
  279. package/dist/src/providers/conversation-generation.js +43 -6
  280. package/dist/src/providers/conversation-generation.js.map +1 -1
  281. package/dist/src/providers/ollama-embed.d.ts +2 -1
  282. package/dist/src/providers/ollama-embed.d.ts.map +1 -1
  283. package/dist/src/providers/ollama-embed.js +1 -0
  284. package/dist/src/providers/ollama-embed.js.map +1 -1
  285. package/dist/src/providers/openai-metadata-extraction.d.ts +3 -3
  286. package/dist/src/providers/openai-metadata-extraction.d.ts.map +1 -1
  287. package/dist/src/providers/openai-metadata-extraction.js +18 -3
  288. package/dist/src/providers/openai-metadata-extraction.js.map +1 -1
  289. package/dist/src/providers/placeholder-embed.d.ts +56 -0
  290. package/dist/src/providers/placeholder-embed.d.ts.map +1 -0
  291. package/dist/src/providers/placeholder-embed.js +64 -0
  292. package/dist/src/providers/placeholder-embed.js.map +1 -0
  293. package/dist/src/providers/stub.d.ts +2 -0
  294. package/dist/src/providers/stub.d.ts.map +1 -1
  295. package/dist/src/providers/stub.js +2 -0
  296. package/dist/src/providers/stub.js.map +1 -1
  297. package/dist/src/providers/types.d.ts +11 -0
  298. package/dist/src/providers/types.d.ts.map +1 -1
  299. package/dist/src/providers/voyage.d.ts +2 -1
  300. package/dist/src/providers/voyage.d.ts.map +1 -1
  301. package/dist/src/providers/voyage.js +1 -0
  302. package/dist/src/providers/voyage.js.map +1 -1
  303. package/dist/src/retrieval/compact.d.ts +116 -2
  304. package/dist/src/retrieval/compact.d.ts.map +1 -1
  305. package/dist/src/retrieval/compact.js +158 -5
  306. package/dist/src/retrieval/compact.js.map +1 -1
  307. package/dist/src/retrieval/context-pack.d.ts +114 -0
  308. package/dist/src/retrieval/context-pack.d.ts.map +1 -1
  309. package/dist/src/retrieval/context-pack.js +292 -8
  310. package/dist/src/retrieval/context-pack.js.map +1 -1
  311. package/dist/src/retrieval/current-truth.d.ts +360 -0
  312. package/dist/src/retrieval/current-truth.d.ts.map +1 -0
  313. package/dist/src/retrieval/current-truth.js +766 -0
  314. package/dist/src/retrieval/current-truth.js.map +1 -0
  315. package/dist/src/retrieval/git-state.d.ts +53 -0
  316. package/dist/src/retrieval/git-state.d.ts.map +1 -0
  317. package/dist/src/retrieval/git-state.js +174 -0
  318. package/dist/src/retrieval/git-state.js.map +1 -0
  319. package/dist/src/retrieval/lexical.d.ts.map +1 -1
  320. package/dist/src/retrieval/lexical.js +19 -3
  321. package/dist/src/retrieval/lexical.js.map +1 -1
  322. package/dist/src/retrieval/locator-boost.d.ts +37 -0
  323. package/dist/src/retrieval/locator-boost.d.ts.map +1 -0
  324. package/dist/src/retrieval/locator-boost.js +129 -0
  325. package/dist/src/retrieval/locator-boost.js.map +1 -0
  326. package/dist/src/retrieval/report-demotion.d.ts +46 -0
  327. package/dist/src/retrieval/report-demotion.d.ts.map +1 -0
  328. package/dist/src/retrieval/report-demotion.js +169 -0
  329. package/dist/src/retrieval/report-demotion.js.map +1 -0
  330. package/dist/src/retrieval/vector.d.ts.map +1 -1
  331. package/dist/src/retrieval/vector.js +11 -2
  332. package/dist/src/retrieval/vector.js.map +1 -1
  333. package/dist/src/server/app.d.ts.map +1 -1
  334. package/dist/src/server/app.js +92 -11
  335. package/dist/src/server/app.js.map +1 -1
  336. package/dist/src/server/routes/compact.d.ts.map +1 -1
  337. package/dist/src/server/routes/compact.js +4 -1
  338. package/dist/src/server/routes/compact.js.map +1 -1
  339. package/dist/src/server/routes/context.d.ts +1 -1
  340. package/dist/src/server/routes/context.d.ts.map +1 -1
  341. package/dist/src/server/routes/context.js +2 -1
  342. package/dist/src/server/routes/context.js.map +1 -1
  343. package/dist/src/server/routes/conversations-search.d.ts.map +1 -1
  344. package/dist/src/server/routes/conversations-search.js +28 -3
  345. package/dist/src/server/routes/conversations-search.js.map +1 -1
  346. package/dist/src/server/routes/enqueue.d.ts +11 -0
  347. package/dist/src/server/routes/enqueue.d.ts.map +1 -0
  348. package/dist/src/server/routes/enqueue.js +17 -0
  349. package/dist/src/server/routes/enqueue.js.map +1 -0
  350. package/dist/src/server/routes/friend-status.d.ts +339 -3
  351. package/dist/src/server/routes/friend-status.d.ts.map +1 -1
  352. package/dist/src/server/routes/friend-status.js +447 -13
  353. package/dist/src/server/routes/friend-status.js.map +1 -1
  354. package/dist/src/server/routes/ingest.d.ts.map +1 -1
  355. package/dist/src/server/routes/ingest.js +5 -2
  356. package/dist/src/server/routes/ingest.js.map +1 -1
  357. package/dist/src/server/routes/mcp-usage.d.ts +5 -4
  358. package/dist/src/server/routes/mcp-usage.d.ts.map +1 -1
  359. package/dist/src/server/routes/mcp-usage.js.map +1 -1
  360. package/dist/src/server/routes/reconcile.d.ts.map +1 -1
  361. package/dist/src/server/routes/reconcile.js +20 -1
  362. package/dist/src/server/routes/reconcile.js.map +1 -1
  363. package/dist/src/server/routes/reindex.d.ts.map +1 -1
  364. package/dist/src/server/routes/reindex.js +4 -1
  365. package/dist/src/server/routes/reindex.js.map +1 -1
  366. package/dist/src/server/routes/save.d.ts.map +1 -1
  367. package/dist/src/server/routes/save.js +4 -1
  368. package/dist/src/server/routes/save.js.map +1 -1
  369. package/dist/src/server/routes/search.d.ts +1 -1
  370. package/dist/src/server/routes/search.d.ts.map +1 -1
  371. package/dist/src/server/routes/search.js +253 -29
  372. package/dist/src/server/routes/search.js.map +1 -1
  373. package/dist/src/server/routes/triage.d.ts.map +1 -1
  374. package/dist/src/server/routes/triage.js +4 -1
  375. package/dist/src/server/routes/triage.js.map +1 -1
  376. package/dist/src/storage/rebuild.d.ts +35 -1
  377. package/dist/src/storage/rebuild.d.ts.map +1 -1
  378. package/dist/src/storage/rebuild.js +288 -64
  379. package/dist/src/storage/rebuild.js.map +1 -1
  380. package/dist/src/storage/tables.d.ts +29 -0
  381. package/dist/src/storage/tables.d.ts.map +1 -1
  382. package/dist/src/storage/tables.js +32 -1
  383. package/dist/src/storage/tables.js.map +1 -1
  384. package/operator/swiftbar/render-menu.py +524 -0
  385. package/operator/swiftbar/rift.10s.sh +176 -0
  386. package/package.json +9 -3
@@ -0,0 +1,166 @@
1
+ /**
2
+ * Terminal UI helpers for interactive CLI flows (currently `rift onboard`).
3
+ *
4
+ * Color contract:
5
+ * - Color is enabled ONLY when stdout is a TTY, unless explicitly forced.
6
+ * We compute this ourselves rather than trusting picocolors' default
7
+ * auto-detection, which enables color under `CI=true` even when stdout
8
+ * is piped — that would leak ANSI escape codes into logs, snapshot
9
+ * tests, and copy/pasted output. Overrides: `NO_COLOR` (any non-empty
10
+ * value) force-disables; `FORCE_COLOR` (any value other than 0/false)
11
+ * force-enables. Evaluated once at module load.
12
+ * - Animation (the spinner) only runs on a TTY regardless of color, so a
13
+ * non-TTY run prints exactly one resolved status row per step — a stable
14
+ * plain string for assertions.
15
+ * - Glyphs and box-drawing characters are Unicode, not ANSI escapes, so
16
+ * they are safe in non-TTY output and never introduce forbidden-name or
17
+ * secret substrings.
18
+ */
19
+ import { createColors } from "picocolors";
20
+ const env = process.env;
21
+ const noColor = typeof env["NO_COLOR"] === "string" && env["NO_COLOR"] !== "";
22
+ const forceColor = typeof env["FORCE_COLOR"] === "string" &&
23
+ env["FORCE_COLOR"] !== "0" &&
24
+ env["FORCE_COLOR"] !== "false";
25
+ const colorEnabled = !noColor && (forceColor || process.stdout.isTTY === true);
26
+ const pc = createColors(colorEnabled);
27
+ const isTty = () => process.stdout.isTTY === true;
28
+ const write = (s) => {
29
+ process.stdout.write(s);
30
+ };
31
+ /** Strip ANSI escape codes so width math is correct for box drawing. */
32
+ const stripAnsi = (s) => s.replace(/\x1b\[[0-9;]*m/g, "");
33
+ const visibleWidth = (s) => stripAnsi(s).length;
34
+ /** Label column width — wide enough for the longest onboarding step label
35
+ * ("Existing data" = 13). */
36
+ const LABEL_WIDTH = 14;
37
+ const GLYPH = {
38
+ ok: pc.green("✓"),
39
+ warn: pc.yellow("!"),
40
+ fail: pc.red("✗"),
41
+ info: pc.cyan("•"),
42
+ skip: pc.dim("–"),
43
+ };
44
+ /** ANSI-Shadow wordmark for the first-run banner. */
45
+ const WORDMARK = [
46
+ "██████╗ ██╗ ███████╗ ████████╗",
47
+ "██╔══██╗ ██║ ██╔════╝ ╚══██╔══╝",
48
+ "██████╔╝ ██║ █████╗ ██║",
49
+ "██╔══██╗ ██║ ██╔══╝ ██║",
50
+ "██║ ██║ ██║ ██║ ██║",
51
+ "╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝",
52
+ ];
53
+ const TAGLINE = "Local-first memory for AI tools";
54
+ /**
55
+ * Print the first-run banner. On a TTY this is the full ANSI-Shadow `RIFT`
56
+ * wordmark; off a TTY (pipe/CI) it collapses to a one-line `◆ RIFT` lockup so
57
+ * logs stay clean. The tagline and a rule follow in both modes.
58
+ */
59
+ export function banner() {
60
+ write("\n");
61
+ if (isTty()) {
62
+ for (const ln of WORDMARK)
63
+ write(` ${pc.cyan(ln)}\n`);
64
+ }
65
+ else {
66
+ write(` ${pc.cyan("◆")} ${pc.bold("RIFT")}\n`);
67
+ }
68
+ write(` ${pc.dim(TAGLINE)}\n`);
69
+ write(` ${pc.dim("─".repeat(TAGLINE.length))}\n`);
70
+ }
71
+ /** Print a resolved status row: ` ✓ Label detail`. The label is
72
+ * the bold human-readable headline; the detail tail is dimmed so the
73
+ * technical bits (paths, daemon/Voyage state, counts) stay secondary. */
74
+ export function step(status, label, detail = "") {
75
+ const padded = label.padEnd(LABEL_WIDTH);
76
+ const tail = detail ? ` ${pc.dim(detail)}` : "";
77
+ write(` ${GLYPH[status]} ${pc.bold(padded)}${tail}\n`);
78
+ }
79
+ /** Print a dimmed, indented secondary line under a step. */
80
+ export function note(text) {
81
+ for (const ln of text.split("\n")) {
82
+ write(` ${pc.dim(ln)}\n`);
83
+ }
84
+ }
85
+ /**
86
+ * Print indented, full-readability body text under a step. Unlike `note`,
87
+ * this is NOT dimmed — for trust-critical copy (e.g. the privacy contract)
88
+ * that must stay legible.
89
+ */
90
+ export function detail(text) {
91
+ for (const ln of text.split("\n")) {
92
+ write(` ${ln}\n`);
93
+ }
94
+ }
95
+ /** Print a plain (unstyled-content) line — escape hatch for raw output. */
96
+ export function line(text = "") {
97
+ write(text + "\n");
98
+ }
99
+ const SPINNER_FRAMES = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
100
+ /**
101
+ * A single-line spinner for an in-flight async step. On a TTY it animates
102
+ * in place and resolves to a status row; on a non-TTY it stays silent until
103
+ * resolved, then prints exactly one status row (stable for assertions).
104
+ */
105
+ export class Spinner {
106
+ label;
107
+ timer;
108
+ frame = 0;
109
+ constructor(label) {
110
+ this.label = label;
111
+ }
112
+ start() {
113
+ if (!isTty())
114
+ return this;
115
+ this.render();
116
+ this.timer = setInterval(() => {
117
+ this.frame = (this.frame + 1) % SPINNER_FRAMES.length;
118
+ this.render();
119
+ }, 80);
120
+ // Don't keep the event loop alive just for the spinner.
121
+ this.timer.unref?.();
122
+ return this;
123
+ }
124
+ render() {
125
+ const padded = this.label.padEnd(LABEL_WIDTH);
126
+ write(`\r ${pc.cyan(SPINNER_FRAMES[this.frame])} ${pc.bold(padded)}\x1b[K`);
127
+ }
128
+ clearLine() {
129
+ if (this.timer) {
130
+ clearInterval(this.timer);
131
+ this.timer = undefined;
132
+ }
133
+ if (isTty())
134
+ write("\r\x1b[K");
135
+ }
136
+ succeed(label = this.label, detail = "") {
137
+ this.clearLine();
138
+ step("ok", label, detail);
139
+ }
140
+ warn(label = this.label, detail = "") {
141
+ this.clearLine();
142
+ step("warn", label, detail);
143
+ }
144
+ fail(label = this.label, detail = "") {
145
+ this.clearLine();
146
+ step("fail", label, detail);
147
+ }
148
+ }
149
+ /**
150
+ * Render a rounded box around the given lines. Width adapts to the widest
151
+ * line (ANSI-aware). Used for the final next-action card.
152
+ */
153
+ export function box(lines) {
154
+ const inner = Math.max(...lines.map(visibleWidth), 0);
155
+ const pad = 2;
156
+ const w = inner + pad * 2;
157
+ write("\n");
158
+ write(` ${pc.dim("╭" + "─".repeat(w) + "╮")}\n`);
159
+ for (const l of lines) {
160
+ const gap = inner - visibleWidth(l);
161
+ write(` ${pc.dim("│")}${" ".repeat(pad)}${l}${" ".repeat(gap + pad)}${pc.dim("│")}\n`);
162
+ }
163
+ write(` ${pc.dim("╰" + "─".repeat(w) + "╯")}\n`);
164
+ }
165
+ export { pc, colorEnabled };
166
+ //# sourceMappingURL=ui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../src/cli/ui.ts"],"names":[],"mappings":"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"}
@@ -262,6 +262,51 @@ export declare const OpenAISchema: z.ZodObject<{
262
262
  max_cost_per_batch_usd?: number | undefined;
263
263
  max_parallel_requests?: number | undefined;
264
264
  }>;
265
+ /**
266
+ * Codex CLI runtime policy. Global (not under `capture`) because the Codex CLI
267
+ * backs ALL local generation — triage, metadata extraction, digest, and
268
+ * large-session recovery — not just auto-capture.
269
+ */
270
+ export declare const CodexCliSchema: z.ZodObject<{
271
+ /**
272
+ * Model to pin on every `codex exec` via `--model`. Rift runs codex with
273
+ * an isolated CODEX_HOME that drops the user's config.toml, so without this
274
+ * codex would fall back to its release-default model — which 0.125.0 moved
275
+ * to one ChatGPT-auth plans reject. When unset, Rift resolves a model from
276
+ * the source `~/.codex/config.toml`, a persisted verified model, or a
277
+ * probed fallback. Set this to override that resolution.
278
+ */
279
+ model: z.ZodOptional<z.ZodString>;
280
+ }, "strict", z.ZodTypeAny, {
281
+ model?: string | undefined;
282
+ }, {
283
+ model?: string | undefined;
284
+ }>;
285
+ /**
286
+ * Conversation/document metadata enrichment policy.
287
+ *
288
+ * `ai_metadata` defaults to FALSE: import and capture use the deterministic,
289
+ * AI-free `BasicMetadataExtractor` even when the Codex CLI is installed on the
290
+ * machine. This is the trust-first default — the no-key fast-import path sends
291
+ * no conversation content off-device, runs no Voyage embedding, and makes ZERO
292
+ * Codex subprocess calls, so "import + keyword search work without Codex or
293
+ * embeddings" is literally true on a fresh box. (Independently of this path,
294
+ * the daemon makes a metadata-only npm version check — no content, no key, no
295
+ * machine info.)
296
+ *
297
+ * It flips to true only when the user explicitly opts into Codex enrichment
298
+ * (`rift onboard --enable-codex-enrichment`, which persists this flag). Local
299
+ * (Ollama) enrichment has its own explicit opt-in via `local_generation.enabled`
300
+ * and is unaffected by this gate. The `RIFT_DISABLE_AI_METADATA` env override
301
+ * still force-disables regardless, for the activation benchmark.
302
+ */
303
+ export declare const EnrichmentSchema: z.ZodObject<{
304
+ ai_metadata: z.ZodDefault<z.ZodBoolean>;
305
+ }, "strict", z.ZodTypeAny, {
306
+ ai_metadata: boolean;
307
+ }, {
308
+ ai_metadata?: boolean | undefined;
309
+ }>;
265
310
  export declare const ConfigSchema: z.ZodObject<{
266
311
  sources: z.ZodArray<z.ZodEffects<z.ZodObject<{
267
312
  path: z.ZodString;
@@ -422,6 +467,21 @@ export declare const ConfigSchema: z.ZodObject<{
422
467
  enabled?: boolean | undefined;
423
468
  sources?: ["claude_code" | "codex_cli", ...("claude_code" | "codex_cli")[]] | undefined;
424
469
  }>>;
470
+ codex_cli: z.ZodOptional<z.ZodObject<{
471
+ /**
472
+ * Model to pin on every `codex exec` via `--model`. Rift runs codex with
473
+ * an isolated CODEX_HOME that drops the user's config.toml, so without this
474
+ * codex would fall back to its release-default model — which 0.125.0 moved
475
+ * to one ChatGPT-auth plans reject. When unset, Rift resolves a model from
476
+ * the source `~/.codex/config.toml`, a persisted verified model, or a
477
+ * probed fallback. Set this to override that resolution.
478
+ */
479
+ model: z.ZodOptional<z.ZodString>;
480
+ }, "strict", z.ZodTypeAny, {
481
+ model?: string | undefined;
482
+ }, {
483
+ model?: string | undefined;
484
+ }>>;
425
485
  local_generation: z.ZodOptional<z.ZodEffects<z.ZodObject<{
426
486
  enabled: z.ZodDefault<z.ZodBoolean>;
427
487
  runtime: z.ZodOptional<z.ZodLiteral<"ollama">>;
@@ -458,6 +518,13 @@ export declare const ConfigSchema: z.ZodObject<{
458
518
  metadata_model?: string | undefined;
459
519
  digest_model?: string | undefined;
460
520
  }>>;
521
+ enrichment: z.ZodOptional<z.ZodObject<{
522
+ ai_metadata: z.ZodDefault<z.ZodBoolean>;
523
+ }, "strict", z.ZodTypeAny, {
524
+ ai_metadata: boolean;
525
+ }, {
526
+ ai_metadata?: boolean | undefined;
527
+ }>>;
461
528
  request_limits: z.ZodDefault<z.ZodObject<{
462
529
  json_body_limit_bytes: z.ZodDefault<z.ZodNumber>;
463
530
  multipart_limit_bytes: z.ZodDefault<z.ZodNumber>;
@@ -549,6 +616,9 @@ export declare const ConfigSchema: z.ZodObject<{
549
616
  max_cost_per_batch_usd: number;
550
617
  max_parallel_requests: number;
551
618
  };
619
+ codex_cli?: {
620
+ model?: string | undefined;
621
+ } | undefined;
552
622
  voyage?: {
553
623
  project_label?: string | undefined;
554
624
  } | undefined;
@@ -560,6 +630,9 @@ export declare const ConfigSchema: z.ZodObject<{
560
630
  metadata_model?: string | undefined;
561
631
  digest_model?: string | undefined;
562
632
  } | undefined;
633
+ enrichment?: {
634
+ ai_metadata: boolean;
635
+ } | undefined;
563
636
  }, {
564
637
  sources: {
565
638
  path: string;
@@ -577,6 +650,9 @@ export declare const ConfigSchema: z.ZodObject<{
577
650
  window_ms: number;
578
651
  max_requests: number;
579
652
  };
653
+ codex_cli?: {
654
+ model?: string | undefined;
655
+ } | undefined;
580
656
  voyage?: {
581
657
  project_label?: string | undefined;
582
658
  } | undefined;
@@ -614,6 +690,9 @@ export declare const ConfigSchema: z.ZodObject<{
614
690
  metadata_model?: string | undefined;
615
691
  digest_model?: string | undefined;
616
692
  } | undefined;
693
+ enrichment?: {
694
+ ai_metadata?: boolean | undefined;
695
+ } | undefined;
617
696
  request_limits?: {
618
697
  json_body_limit_bytes?: number | undefined;
619
698
  multipart_limit_bytes?: number | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/config/schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,eAAO,MAAM,cAAc,+BAA6B,CAAC;AACzD,eAAO,MAAM,QAAQ,wCAAsC,CAAC;AAC5D,eAAO,MAAM,SAAS,8CAA4C,CAAC;AAInE,eAAO,MAAM,eAAe;;;;;;IAOxB;;;;;;;;;OASG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiDH,CAAC;AAEL,eAAO,MAAM,YAAY;;;;;;;;;EAGd,CAAC;AAEZ,eAAO,MAAM,eAAe;;;;;;;;;EAGjB,CAAC;AAEZ;;;;GAIG;AACH,eAAO,MAAM,YAAY;;;;;;EAEd,CAAC;AAEZ,eAAO,MAAM,eAAe;;;;;;;;;EAGjB,CAAC;AAEZ,eAAO,MAAM,gBAAgB;;;;;;;;;EAGlB,CAAC;AAEZ,eAAO,MAAM,eAAe;;;;;;;;;EAGjB,CAAC;AAEZ,eAAO,MAAM,UAAU;;;;;;EAEZ,CAAC;AAEZ,eAAO,MAAM,UAAU;IACrB,mEAAmE;;;;;;EAE1D,CAAC;AAEZ,eAAO,MAAM,iBAAiB,yCAAqC,CAAC;AAEpE,eAAO,MAAM,qBAAqB;IAChC;;;;;;OAMG;;;;;;EAEM,CAAC;AAEZ,eAAO,MAAM,aAAa;IACxB,qEAAqE;;IAErE,yEAAyE;;IAEzE;;;;OAIG;;IAEH,gEAAgE;;QArBhE;;;;;;WAMG;;;;;;;;;;;;;;;;;;;;;EAiBM,CAAC;AAEZ,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoC9B,CAAC;AAEL,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;EAKrB,CAAC;AAEZ,eAAO,MAAM,UAAU;;;;;;EAEZ,CAAC;AAEZ;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY;IACvB,gEAAgE;;IAEhE,uDAAuD;;;;;;;;EAE9C,CAAC;AAIZ,eAAO,MAAM,YAAY;;;;;;;QAvMrB;;;;;;;;;WASG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA0FL,mEAAmE;;;;;;;;QAkBnE,qEAAqE;;QAErE,yEAAyE;;QAEzE;;;;WAIG;;QAEH,gEAAgE;;YArBhE;;;;;;eAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA+EH,gEAAgE;;QAEhE,uDAAuD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqB9C,CAAC;AAEZ,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAClD,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAC1E,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/config/schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,eAAO,MAAM,cAAc,+BAA6B,CAAC;AACzD,eAAO,MAAM,QAAQ,wCAAsC,CAAC;AAC5D,eAAO,MAAM,SAAS,8CAA4C,CAAC;AAInE,eAAO,MAAM,eAAe;;;;;;IAOxB;;;;;;;;;OASG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiDH,CAAC;AAEL,eAAO,MAAM,YAAY;;;;;;;;;EAGd,CAAC;AAEZ,eAAO,MAAM,eAAe;;;;;;;;;EAGjB,CAAC;AAEZ;;;;GAIG;AACH,eAAO,MAAM,YAAY;;;;;;EAEd,CAAC;AAEZ,eAAO,MAAM,eAAe;;;;;;;;;EAGjB,CAAC;AAEZ,eAAO,MAAM,gBAAgB;;;;;;;;;EAGlB,CAAC;AAEZ,eAAO,MAAM,eAAe;;;;;;;;;EAGjB,CAAC;AAEZ,eAAO,MAAM,UAAU;;;;;;EAEZ,CAAC;AAEZ,eAAO,MAAM,UAAU;IACrB,mEAAmE;;;;;;EAE1D,CAAC;AAEZ,eAAO,MAAM,iBAAiB,yCAAqC,CAAC;AAEpE,eAAO,MAAM,qBAAqB;IAChC;;;;;;OAMG;;;;;;EAEM,CAAC;AAEZ,eAAO,MAAM,aAAa;IACxB,qEAAqE;;IAErE,yEAAyE;;IAEzE;;;;OAIG;;IAEH,gEAAgE;;QArBhE;;;;;;WAMG;;;;;;;;;;;;;;;;;;;;;EAiBM,CAAC;AAEZ,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoC9B,CAAC;AAEL,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;EAKrB,CAAC;AAEZ,eAAO,MAAM,UAAU;;;;;;EAEZ,CAAC;AAEZ;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY;IACvB,gEAAgE;;IAEhE,uDAAuD;;;;;;;;EAE9C,CAAC;AAEZ;;;;GAIG;AACH,eAAO,MAAM,cAAc;IAEvB;;;;;;;OAOG;;;;;;EAGI,CAAC;AAEZ;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,gBAAgB;;;;;;EAElB,CAAC;AAIZ,eAAO,MAAM,YAAY;;;;;;;QAhPrB;;;;;;;;;WASG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA0FL,mEAAmE;;;;;;;;QAkBnE,qEAAqE;;QAErE,yEAAyE;;QAEzE;;;;WAIG;;QAEH,gEAAgE;;YArBhE;;;;;;eAMG;;;;;;;;;;;;;;;;;;;;;;;QA4FD;;;;;;;WAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QApBL,gEAAgE;;QAEhE,uDAAuD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmE9C,CAAC;AAEZ,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAClD,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAC1E,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC"}
@@ -188,6 +188,45 @@ export const OpenAISchema = z.object({
188
188
  /** Maximum concurrent in-flight requests per batch. */
189
189
  max_parallel_requests: z.number().int().positive().default(4),
190
190
  }).strict();
191
+ /**
192
+ * Codex CLI runtime policy. Global (not under `capture`) because the Codex CLI
193
+ * backs ALL local generation — triage, metadata extraction, digest, and
194
+ * large-session recovery — not just auto-capture.
195
+ */
196
+ export const CodexCliSchema = z
197
+ .object({
198
+ /**
199
+ * Model to pin on every `codex exec` via `--model`. Rift runs codex with
200
+ * an isolated CODEX_HOME that drops the user's config.toml, so without this
201
+ * codex would fall back to its release-default model — which 0.125.0 moved
202
+ * to one ChatGPT-auth plans reject. When unset, Rift resolves a model from
203
+ * the source `~/.codex/config.toml`, a persisted verified model, or a
204
+ * probed fallback. Set this to override that resolution.
205
+ */
206
+ model: z.string().min(1).optional(),
207
+ })
208
+ .strict();
209
+ /**
210
+ * Conversation/document metadata enrichment policy.
211
+ *
212
+ * `ai_metadata` defaults to FALSE: import and capture use the deterministic,
213
+ * AI-free `BasicMetadataExtractor` even when the Codex CLI is installed on the
214
+ * machine. This is the trust-first default — the no-key fast-import path sends
215
+ * no conversation content off-device, runs no Voyage embedding, and makes ZERO
216
+ * Codex subprocess calls, so "import + keyword search work without Codex or
217
+ * embeddings" is literally true on a fresh box. (Independently of this path,
218
+ * the daemon makes a metadata-only npm version check — no content, no key, no
219
+ * machine info.)
220
+ *
221
+ * It flips to true only when the user explicitly opts into Codex enrichment
222
+ * (`rift onboard --enable-codex-enrichment`, which persists this flag). Local
223
+ * (Ollama) enrichment has its own explicit opt-in via `local_generation.enabled`
224
+ * and is unaffected by this gate. The `RIFT_DISABLE_AI_METADATA` env override
225
+ * still force-disables regardless, for the activation benchmark.
226
+ */
227
+ export const EnrichmentSchema = z.object({
228
+ ai_metadata: z.boolean().default(false),
229
+ }).strict();
191
230
  // --- Top-level schema ---
192
231
  export const ConfigSchema = z.object({
193
232
  sources: z.array(SourceDirSchema).min(1),
@@ -200,7 +239,12 @@ export const ConfigSchema = z.object({
200
239
  cron: CronSchema.default({}),
201
240
  scan: ScanSchema.default({}),
202
241
  capture: CaptureSchema.default({}),
242
+ codex_cli: CodexCliSchema.optional(),
203
243
  local_generation: LocalGenerationSchema.optional(),
244
+ // Optional (not defaulted) so a config that predates this field still loads,
245
+ // and so the gate's `config.enrichment?.ai_metadata` reads as "off" when
246
+ // absent. Trust-first: missing or `{ ai_metadata: false }` → AI-free import.
247
+ enrichment: EnrichmentSchema.optional(),
204
248
  request_limits: RequestLimitsSchema.default({}),
205
249
  auth: AuthSchema.default({}),
206
250
  openai: OpenAISchema.default({}),
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/config/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/config/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Classification of a recorded Codex `preflight_error` into a coarse class
3
+ * that drives honest doctor/status copy.
4
+ *
5
+ * History: every preflight failure used to render as "Codex login has
6
+ * expired", which sent users to re-run `codex login` for failures that had
7
+ * nothing to do with auth (a release-default model the plan rejects, a backend
8
+ * timeout, MCP noise). This classifier exists so we only claim auth expiry
9
+ * when the evidence is actually an auth signal — and fall back to a neutral
10
+ * "preflight failed" bucket otherwise.
11
+ *
12
+ * CONSERVATIVE on auth by design. Codex's MCP client subsystem emits a stream
13
+ * of `AuthRequired` / `invalid_grant` / `TokenRefreshFailed` transport errors
14
+ * for unrelated MCP servers (figma, adspirer, …). Those are NOT codex login
15
+ * failures; matching them as auth would recreate the original mislabel from
16
+ * the other direction. So auth signals are matched only AFTER stripping MCP
17
+ * transport lines, and anything ambiguous falls to a non-auth bucket — we
18
+ * never falsely tell the user their login expired.
19
+ */
20
+ export type CodexPreflightErrorClass = "auth" | "model" | "binary" | "timeout" | "backend" | "unknown";
21
+ export declare function classifyCodexPreflightError(error: string | null | undefined): CodexPreflightErrorClass;
22
+ /**
23
+ * Best-effort model name from the codex banner (`model: <name>`), for display
24
+ * only. Returns null when absent. Never used for control flow.
25
+ */
26
+ export declare function extractCodexModelFromError(error: string | null | undefined): string | null;
27
+ /**
28
+ * A short, leak-free, human summary for a class. Deliberately canned (no raw
29
+ * stderr, no file paths, no prompt/session content) so SwiftBar/doctor can
30
+ * surface it without parsing or redacting raw codex output.
31
+ */
32
+ export declare function summarizeCodexPreflightClass(cls: CodexPreflightErrorClass, model: string | null): string;
33
+ //# sourceMappingURL=codex-preflight.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-preflight.d.ts","sourceRoot":"","sources":["../../../src/diagnostics/codex-preflight.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,wBAAwB,GAChC,MAAM,GACN,OAAO,GACP,QAAQ,GACR,SAAS,GACT,SAAS,GACT,SAAS,CAAC;AAOd,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC/B,wBAAwB,CAsD1B;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC/B,MAAM,GAAG,IAAI,CAMf;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,wBAAwB,EAC7B,KAAK,EAAE,MAAM,GAAG,IAAI,GACnB,MAAM,CAiBR"}
@@ -0,0 +1,75 @@
1
+ /** Codex's MCP-client subsystem noise — not codex auth/runtime signal. */
2
+ function isMcpNoiseLine(line) {
3
+ return /rmcp|::transport|mcp_servers|streamable_http|\bmcp\b/i.test(line);
4
+ }
5
+ export function classifyCodexPreflightError(error) {
6
+ if (!error || error.trim().length === 0) {
7
+ return "unknown";
8
+ }
9
+ const codexText = error
10
+ .split(/\r?\n/)
11
+ .filter((line) => !isMcpNoiseLine(line))
12
+ .join("\n")
13
+ .toLowerCase();
14
+ // Model first: a rejected/unknown model is the common regression and its
15
+ // phrasing is distinctive, so it should not be swallowed by a generic 4xx.
16
+ if (/\bunsupported model\b|\bunknown model\b|\bmodel_not_found\b|no working codex model|model[^\n]*\bnot (found|supported|available)\b|does not support the model|invalid model/.test(codexText)) {
17
+ return "model";
18
+ }
19
+ // Binary: the codex executable could not be launched at all — almost always
20
+ // `spawn … ENOENT`, i.e. the resolved path no longer exists (a `brew
21
+ // upgrade`/reinstall moved or removed it, or it was never installed). This is
22
+ // an install/runtime problem, distinct from auth/model/backend, and points at
23
+ // a concrete fix (reinstall/upgrade). Match ENOENT specifically — NOT the
24
+ // EBADF "failed to spawn" path, which is a transient fd hiccup, nor ENOTFOUND
25
+ // (a DNS/backend signal handled below).
26
+ if (/\benoent\b|command not found|no such file or directory/.test(codexText)) {
27
+ return "binary";
28
+ }
29
+ // Auth: only genuine codex login/credential signals (MCP lines already gone).
30
+ if (/\bunauthorized\b|\b401\b|not (logged|signed) in|please run [`']?codex login|\bcodex login\b|login (has )?expired|authentication failed|missing api key|credentials? (expired|invalid)/.test(codexText)) {
31
+ return "auth";
32
+ }
33
+ if (/timed out|\btimeout\b/.test(codexText)) {
34
+ return "timeout";
35
+ }
36
+ if (/connection reset|connection refused|failed to connect|\bnetwork\b|\beconnreset\b|\benotfound\b|reconnecting|http 5\d\d|backend-api/.test(codexText)) {
37
+ return "backend";
38
+ }
39
+ return "unknown";
40
+ }
41
+ /**
42
+ * Best-effort model name from the codex banner (`model: <name>`), for display
43
+ * only. Returns null when absent. Never used for control flow.
44
+ */
45
+ export function extractCodexModelFromError(error) {
46
+ if (!error) {
47
+ return null;
48
+ }
49
+ const match = /^\s*model:\s*(\S+)/m.exec(error);
50
+ return match ? (match[1] ?? null) : null;
51
+ }
52
+ /**
53
+ * A short, leak-free, human summary for a class. Deliberately canned (no raw
54
+ * stderr, no file paths, no prompt/session content) so SwiftBar/doctor can
55
+ * surface it without parsing or redacting raw codex output.
56
+ */
57
+ export function summarizeCodexPreflightClass(cls, model) {
58
+ switch (cls) {
59
+ case "auth":
60
+ return "Codex login appears to have expired.";
61
+ case "model":
62
+ return model
63
+ ? `Codex rejected the model "${model}".`
64
+ : "Codex rejected the configured model.";
65
+ case "binary":
66
+ return "Codex CLI could not be found or started — it may have moved or been removed.";
67
+ case "timeout":
68
+ return "Codex probe timed out — often a transient backend hiccup.";
69
+ case "backend":
70
+ return "Codex could not reach its backend (network/transport).";
71
+ case "unknown":
72
+ return "Codex preflight failed for an unrecognized reason.";
73
+ }
74
+ }
75
+ //# sourceMappingURL=codex-preflight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-preflight.js","sourceRoot":"","sources":["../../../src/diagnostics/codex-preflight.ts"],"names":[],"mappings":"AA2BA,0EAA0E;AAC1E,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,uDAAuD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,KAAgC;IAEhC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,SAAS,GAAG,KAAK;SACpB,KAAK,CAAC,OAAO,CAAC;SACd,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;SACvC,IAAI,CAAC,IAAI,CAAC;SACV,WAAW,EAAE,CAAC;IAEjB,yEAAyE;IACzE,2EAA2E;IAC3E,IACE,4KAA4K,CAAC,IAAI,CAC/K,SAAS,CACV,EACD,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,4EAA4E;IAC5E,qEAAqE;IACrE,8EAA8E;IAC9E,8EAA8E;IAC9E,0EAA0E;IAC1E,8EAA8E;IAC9E,wCAAwC;IACxC,IAAI,wDAAwD,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7E,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,8EAA8E;IAC9E,IACE,uLAAuL,CAAC,IAAI,CAC1L,SAAS,CACV,EACD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IACE,oIAAoI,CAAC,IAAI,CACvI,SAAS,CACV,EACD,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAAgC;IAEhC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,4BAA4B,CAC1C,GAA6B,EAC7B,KAAoB;IAEpB,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,MAAM;YACT,OAAO,sCAAsC,CAAC;QAChD,KAAK,OAAO;YACV,OAAO,KAAK;gBACV,CAAC,CAAC,6BAA6B,KAAK,IAAI;gBACxC,CAAC,CAAC,sCAAsC,CAAC;QAC7C,KAAK,QAAQ;YACX,OAAO,8EAA8E,CAAC;QACxF,KAAK,SAAS;YACZ,OAAO,2DAA2D,CAAC;QACrE,KAAK,SAAS;YACZ,OAAO,wDAAwD,CAAC;QAClE,KAAK,SAAS;YACZ,OAAO,oDAAoD,CAAC;IAChE,CAAC;AACH,CAAC"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Pure diagnosis layer shared by `rift doctor`, the repair-prompt
3
+ * generator, and the daemon's failure notifier.
4
+ *
5
+ * It consumes exactly what `rift status` already consumes — the
6
+ * `/status/friend` payload plus the friend's local signals (Voyage key
7
+ * last-4, MCP-client install presence) — and folds them into a small,
8
+ * severity-ordered list of issues. Each issue carries plain-language
9
+ * copy and one next action, so every surface (CLI, prompt, notification)
10
+ * tells the same story.
11
+ *
12
+ * Issue ordering follows `decideNextLine` in `friend-header.ts` so the
13
+ * two surfaces tell the same story, with one deliberate policy on top:
14
+ * `primary` (the "do this first" action) is always the highest-SEVERITY
15
+ * issue — a `broken` failure outranks any `warning`, regardless of
16
+ * positional order. This is why `rift doctor` can lead with a broken
17
+ * capture failure where `rift status`'s flat, positional Next: line
18
+ * might surface a warning-level inbox rejection first. The lists never
19
+ * contradict each other; `doctor` simply elevates "what is actually
20
+ * broken" to the lead, which is its whole job.
21
+ *
22
+ * This module is intentionally side-effect free: no IO, no clock except
23
+ * the injected `now`, no daemon access. Callers fetch the payload and
24
+ * pass it in.
25
+ */
26
+ import type { FriendStatusPayload } from "../server/routes/friend-status.js";
27
+ /** Stable identifiers for each diagnosable condition. */
28
+ export type DoctorIssueKind = "daemon_unreachable" | "daemon_auth_failed" | "config_missing" | "voyage_key_missing" | "codex_auth_expired" | "codex_preflight_failed" | "voyage_embed_errors" | "index_write_errors" | "inbox_import_errors" | "capture_failed" | "capture_daemon_stale" | "mcp_not_installed" | "capture_quarantined" | "capture_repairing" | "update_available";
29
+ /**
30
+ * `broken` blocks Rift from doing its job (no capture, no search, no
31
+ * memory). `warning` is degraded-but-working or user-side (a rejected
32
+ * import, a missing optional client, an available update).
33
+ */
34
+ export type DoctorSeverity = "broken" | "warning";
35
+ export interface DoctorIssue {
36
+ kind: DoctorIssueKind;
37
+ severity: DoctorSeverity;
38
+ /** One-line plain-language headline a friend can read. */
39
+ title: string;
40
+ /** Plain-language explanation of what is wrong and why it matters. */
41
+ detail: string;
42
+ /** Exactly one next action — a command or a concrete step. */
43
+ nextAction: string;
44
+ /**
45
+ * Stable identity of the *cause*, not just the subsystem. For most
46
+ * issues this is the kind, but error-bearing issues fold in the error
47
+ * class (e.g. `voyage_embed_errors:provider_400`) so the notifier can
48
+ * tell "same subsystem, new cause" apart from a still-unresolved
49
+ * repeat. Optional so hand-built issues fall back to `kind`.
50
+ */
51
+ fingerprint?: string;
52
+ /**
53
+ * True when a *running* daemon can observe this failure and is
54
+ * therefore allowed to raise a native notification about it. A fully
55
+ * dead daemon cannot observe anything, so `daemon_unreachable` is
56
+ * false here — that case needs the Slice D watchdog, not this path.
57
+ */
58
+ daemonObservable: boolean;
59
+ }
60
+ /** Local-only signals the friend's machine answers without the daemon. */
61
+ export interface DoctorLocalSignals {
62
+ voyageLast4: string | null;
63
+ mcpClients: Array<{
64
+ client: string;
65
+ installed: boolean;
66
+ }>;
67
+ }
68
+ /**
69
+ * Why `/status/friend` could not be read. A null status is NOT always
70
+ * "the daemon is down" — the request can fail because there is no config,
71
+ * no token has been issued, or the daemon rejected our auth. Each needs a
72
+ * different next action, so the caller classifies the failure and the
73
+ * diagnosis turns it into the right issue. Defaults to `connection_refused`
74
+ * (the in-process daemon caller never passes null, so this only matters
75
+ * for the CLI).
76
+ */
77
+ export type DoctorUnreachableReason = "connection_refused" | "auth_failed" | "not_authenticated" | "config_missing" | "unknown";
78
+ export interface DoctorInput {
79
+ /** `/status/friend` payload, or null when it could not be read. */
80
+ status: FriendStatusPayload | null;
81
+ /**
82
+ * When `status` is null, why. Lets the diagnosis distinguish "daemon
83
+ * down" from "cannot authenticate to the daemon" from "no config yet".
84
+ */
85
+ unreachableReason?: DoctorUnreachableReason;
86
+ localSignals: DoctorLocalSignals;
87
+ /** Injected clock; defaults to Date.now() at the call site. */
88
+ now: number;
89
+ }
90
+ export interface DoctorReport {
91
+ /** True when no `broken` issue is present. Warnings do not flip this. */
92
+ healthy: boolean;
93
+ /**
94
+ * The single most important issue — the one whose `nextAction` a
95
+ * surface should lead with. Null only when there are no issues at all.
96
+ */
97
+ primary: DoctorIssue | null;
98
+ /** All detected issues, highest priority first. */
99
+ issues: DoctorIssue[];
100
+ }
101
+ /**
102
+ * Diagnose Rift health from the same inputs `rift status` uses. Pure:
103
+ * given identical inputs it always returns the same report.
104
+ */
105
+ export declare function diagnose(input: DoctorInput): DoctorReport;
106
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/diagnostics/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAG7E,yDAAyD;AACzD,MAAM,MAAM,eAAe,GACvB,oBAAoB,GACpB,oBAAoB,GACpB,gBAAgB,GAChB,oBAAoB,GACpB,oBAAoB,GACpB,wBAAwB,GACxB,qBAAqB,GACrB,oBAAoB,GACpB,qBAAqB,GACrB,gBAAgB,GAChB,sBAAsB,GACtB,mBAAmB,GACnB,qBAAqB,GACrB,mBAAmB,GACnB,kBAAkB,CAAC;AAEvB;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,SAAS,CAAC;AAElD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,EAAE,cAAc,CAAC;IACzB,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,0EAA0E;AAC1E,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAC3D;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,uBAAuB,GAC/B,oBAAoB,GACpB,aAAa,GACb,mBAAmB,GACnB,gBAAgB,GAChB,SAAS,CAAC;AAEd,MAAM,WAAW,WAAW;IAC1B,mEAAmE;IACnE,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACnC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;IAC5C,YAAY,EAAE,kBAAkB,CAAC;IACjC,+DAA+D;IAC/D,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,YAAY;IAC3B,yEAAyE;IACzE,OAAO,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,mDAAmD;IACnD,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AA+GD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,CAuQzD"}