byterover-cli 0.3.5 → 0.4.1

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 (345) hide show
  1. package/README.md +119 -63
  2. package/bin/dev.js +8 -1
  3. package/bin/run.js +7 -0
  4. package/dist/commands/cipher-agent/run.d.ts +30 -0
  5. package/dist/commands/cipher-agent/run.js +123 -61
  6. package/dist/commands/cipher-agent/set-prompt.d.ts +2 -0
  7. package/dist/commands/cipher-agent/set-prompt.js +13 -8
  8. package/dist/commands/cipher-agent/show-prompt.d.ts +2 -0
  9. package/dist/commands/cipher-agent/show-prompt.js +17 -12
  10. package/dist/commands/curate.d.ts +3 -60
  11. package/dist/commands/curate.js +45 -341
  12. package/dist/commands/foo.d.ts +4 -2
  13. package/dist/commands/foo.js +21 -16
  14. package/dist/commands/main.d.ts +9 -0
  15. package/dist/commands/main.js +34 -0
  16. package/dist/commands/query.d.ts +2 -48
  17. package/dist/commands/query.js +19 -287
  18. package/dist/commands/status.d.ts +2 -13
  19. package/dist/commands/status.js +12 -91
  20. package/dist/commands/watch.d.ts +2 -0
  21. package/dist/commands/watch.js +23 -19
  22. package/dist/config/environment.d.ts +1 -1
  23. package/dist/config/environment.js +2 -2
  24. package/dist/constants.d.ts +4 -5
  25. package/dist/constants.js +5 -5
  26. package/dist/core/domain/cipher/errors/storage-error.d.ts +89 -0
  27. package/dist/core/domain/cipher/errors/storage-error.js +130 -0
  28. package/dist/core/domain/cipher/queue/types.d.ts +71 -0
  29. package/dist/core/domain/cipher/queue/types.js +9 -0
  30. package/dist/core/domain/cipher/storage/message-storage-types.d.ts +218 -0
  31. package/dist/core/domain/cipher/storage/message-storage-types.js +18 -0
  32. package/dist/core/domain/cipher/tools/constants.d.ts +1 -0
  33. package/dist/core/domain/cipher/tools/constants.js +1 -0
  34. package/dist/core/domain/entities/event.d.ts +1 -1
  35. package/dist/core/domain/entities/event.js +8 -1
  36. package/dist/core/domain/entities/global-config.d.ts +36 -0
  37. package/dist/core/domain/entities/global-config.js +66 -0
  38. package/dist/core/domain/knowledge/directory-manager.d.ts +10 -0
  39. package/dist/core/domain/knowledge/directory-manager.js +18 -0
  40. package/dist/core/domain/knowledge/markdown-writer.d.ts +9 -0
  41. package/dist/core/domain/knowledge/markdown-writer.js +51 -1
  42. package/dist/core/interfaces/cipher/i-agent-storage.d.ts +152 -0
  43. package/dist/core/interfaces/cipher/i-agent-storage.js +1 -0
  44. package/dist/core/interfaces/cipher/i-cipher-agent.d.ts +2 -0
  45. package/dist/core/interfaces/cipher/i-key-storage.d.ts +91 -0
  46. package/dist/core/interfaces/cipher/i-key-storage.js +1 -0
  47. package/dist/core/interfaces/i-global-config-store.d.ts +34 -0
  48. package/dist/core/interfaces/i-global-config-store.js +1 -0
  49. package/dist/core/interfaces/i-onboarding-preference-store.d.ts +20 -0
  50. package/dist/core/interfaces/i-onboarding-preference-store.js +1 -0
  51. package/dist/core/interfaces/i-terminal.d.ts +146 -0
  52. package/dist/core/interfaces/i-terminal.js +1 -0
  53. package/dist/core/interfaces/i-workspace-detector-service.d.ts +8 -0
  54. package/dist/core/interfaces/i-workspace-detector-service.js +1 -0
  55. package/dist/core/interfaces/usecase/i-clear-use-case.d.ts +6 -0
  56. package/dist/core/interfaces/usecase/i-clear-use-case.js +1 -0
  57. package/dist/core/interfaces/usecase/i-curate-use-case.d.ts +10 -0
  58. package/dist/core/interfaces/usecase/i-curate-use-case.js +1 -0
  59. package/dist/core/interfaces/usecase/i-generate-rules-use-case.d.ts +3 -0
  60. package/dist/core/interfaces/usecase/i-generate-rules-use-case.js +1 -0
  61. package/dist/core/interfaces/usecase/i-init-use-case.d.ts +5 -0
  62. package/dist/core/interfaces/usecase/i-init-use-case.js +1 -0
  63. package/dist/core/interfaces/usecase/i-login-use-case.d.ts +3 -0
  64. package/dist/core/interfaces/usecase/i-login-use-case.js +1 -0
  65. package/dist/core/interfaces/usecase/i-logout-use-case.d.ts +5 -0
  66. package/dist/core/interfaces/usecase/i-logout-use-case.js +1 -0
  67. package/dist/core/interfaces/usecase/i-pull-use-case.d.ts +5 -0
  68. package/dist/core/interfaces/usecase/i-pull-use-case.js +1 -0
  69. package/dist/core/interfaces/usecase/i-push-use-case.d.ts +6 -0
  70. package/dist/core/interfaces/usecase/i-push-use-case.js +1 -0
  71. package/dist/core/interfaces/usecase/i-query-use-case.d.ts +9 -0
  72. package/dist/core/interfaces/usecase/i-query-use-case.js +1 -0
  73. package/dist/core/interfaces/usecase/i-space-list-use-case.d.ts +3 -0
  74. package/dist/core/interfaces/usecase/i-space-list-use-case.js +1 -0
  75. package/dist/core/interfaces/usecase/i-space-switch-use-case.d.ts +3 -0
  76. package/dist/core/interfaces/usecase/i-space-switch-use-case.js +1 -0
  77. package/dist/core/interfaces/usecase/i-status-use-case.d.ts +5 -0
  78. package/dist/core/interfaces/usecase/i-status-use-case.js +1 -0
  79. package/dist/hooks/init/welcome.js +10 -26
  80. package/dist/infra/cipher/agent-service-factory.d.ts +13 -6
  81. package/dist/infra/cipher/agent-service-factory.js +40 -16
  82. package/dist/infra/cipher/cipher-agent.js +4 -4
  83. package/dist/infra/cipher/consumer/consumer-lock.d.ts +20 -0
  84. package/dist/infra/cipher/consumer/consumer-lock.js +40 -0
  85. package/dist/infra/cipher/consumer/consumer-service.d.ts +99 -0
  86. package/dist/infra/cipher/consumer/consumer-service.js +165 -0
  87. package/dist/infra/cipher/consumer/execution-consumer.d.ts +121 -0
  88. package/dist/infra/cipher/consumer/execution-consumer.js +523 -0
  89. package/dist/infra/cipher/consumer/index.d.ts +33 -0
  90. package/dist/infra/cipher/consumer/index.js +33 -0
  91. package/dist/infra/cipher/consumer/queue-polling-service.d.ts +120 -0
  92. package/dist/infra/cipher/consumer/queue-polling-service.js +248 -0
  93. package/dist/infra/cipher/http/internal-llm-http-service.d.ts +94 -0
  94. package/dist/infra/cipher/http/internal-llm-http-service.js +118 -0
  95. package/dist/infra/cipher/llm/context/compaction/compaction-service.d.ts +106 -0
  96. package/dist/infra/cipher/llm/context/compaction/compaction-service.js +132 -0
  97. package/dist/infra/cipher/llm/context/compaction/index.d.ts +9 -0
  98. package/dist/infra/cipher/llm/context/compaction/index.js +9 -0
  99. package/dist/infra/cipher/llm/context/context-manager.d.ts +46 -2
  100. package/dist/infra/cipher/llm/context/context-manager.js +68 -4
  101. package/dist/infra/cipher/llm/context/rw-lock.d.ts +72 -0
  102. package/dist/infra/cipher/llm/context/rw-lock.js +145 -0
  103. package/dist/infra/cipher/llm/generators/byterover-content-generator.d.ts +7 -7
  104. package/dist/infra/cipher/llm/generators/byterover-content-generator.js +8 -8
  105. package/dist/infra/cipher/llm/internal-llm-service.js +2 -0
  106. package/dist/infra/cipher/session/session-manager.d.ts +4 -4
  107. package/dist/infra/cipher/session/session-manager.js +5 -5
  108. package/dist/infra/cipher/storage/agent-storage.d.ts +246 -0
  109. package/dist/infra/cipher/storage/agent-storage.js +956 -0
  110. package/dist/infra/cipher/storage/dual-format-history-storage.d.ts +77 -0
  111. package/dist/infra/cipher/storage/dual-format-history-storage.js +149 -0
  112. package/dist/infra/cipher/storage/granular-history-storage.d.ts +65 -0
  113. package/dist/infra/cipher/storage/granular-history-storage.js +118 -0
  114. package/dist/infra/cipher/storage/message-storage-service.d.ts +108 -0
  115. package/dist/infra/cipher/storage/message-storage-service.js +529 -0
  116. package/dist/infra/cipher/storage/process-utils.d.ts +16 -0
  117. package/dist/infra/cipher/storage/process-utils.js +43 -0
  118. package/dist/infra/cipher/storage/sqlite-key-storage.d.ts +105 -0
  119. package/dist/infra/cipher/storage/sqlite-key-storage.js +404 -0
  120. package/dist/infra/cipher/system-prompt/simple-prompt-factory.d.ts +1 -0
  121. package/dist/infra/cipher/system-prompt/simple-prompt-factory.js +7 -0
  122. package/dist/infra/cipher/tools/default-policy-rules.js +1 -1
  123. package/dist/infra/cipher/tools/implementations/curate-tool.d.ts +10 -0
  124. package/dist/infra/cipher/tools/implementations/curate-tool.js +371 -0
  125. package/dist/infra/cipher/tools/implementations/find-knowledge-topics-tool.js +11 -8
  126. package/dist/infra/cipher/tools/tool-manager.d.ts +8 -2
  127. package/dist/infra/cipher/tools/tool-manager.js +29 -2
  128. package/dist/infra/cipher/tools/tool-registry.js +7 -0
  129. package/dist/infra/http/authenticated-http-client.d.ts +21 -0
  130. package/dist/infra/http/authenticated-http-client.js +38 -0
  131. package/dist/infra/repl/commands/arg-parser.d.ts +97 -0
  132. package/dist/infra/repl/commands/arg-parser.js +129 -0
  133. package/dist/infra/repl/commands/clear-command.d.ts +5 -0
  134. package/dist/infra/repl/commands/clear-command.js +61 -0
  135. package/dist/infra/repl/commands/curate-command.d.ts +9 -0
  136. package/dist/infra/repl/commands/curate-command.js +88 -0
  137. package/dist/infra/repl/commands/gen-rules-command.d.ts +7 -0
  138. package/dist/infra/repl/commands/gen-rules-command.js +38 -0
  139. package/dist/infra/repl/commands/index.d.ts +8 -0
  140. package/dist/infra/repl/commands/index.js +36 -0
  141. package/dist/infra/repl/commands/init-command.d.ts +7 -0
  142. package/dist/infra/repl/commands/init-command.js +83 -0
  143. package/dist/infra/repl/commands/login-command.d.ts +7 -0
  144. package/dist/infra/repl/commands/login-command.js +50 -0
  145. package/dist/infra/repl/commands/logout-command.d.ts +5 -0
  146. package/dist/infra/repl/commands/logout-command.js +48 -0
  147. package/dist/infra/repl/commands/pull-command.d.ts +5 -0
  148. package/dist/infra/repl/commands/pull-command.js +61 -0
  149. package/dist/infra/repl/commands/push-command.d.ts +5 -0
  150. package/dist/infra/repl/commands/push-command.js +66 -0
  151. package/dist/infra/repl/commands/query-command.d.ts +5 -0
  152. package/dist/infra/repl/commands/query-command.js +66 -0
  153. package/dist/infra/repl/commands/space/index.d.ts +5 -0
  154. package/dist/infra/repl/commands/space/index.js +14 -0
  155. package/dist/infra/repl/commands/space/list-command.d.ts +5 -0
  156. package/dist/infra/repl/commands/space/list-command.js +70 -0
  157. package/dist/infra/repl/commands/space/switch-command.d.ts +5 -0
  158. package/dist/infra/repl/commands/space/switch-command.js +37 -0
  159. package/dist/infra/repl/commands/status-command.d.ts +5 -0
  160. package/dist/infra/repl/commands/status-command.js +39 -0
  161. package/dist/infra/repl/repl-startup.d.ts +18 -0
  162. package/dist/infra/repl/repl-startup.js +28 -0
  163. package/dist/infra/storage/file-global-config-store.d.ts +22 -0
  164. package/dist/infra/storage/file-global-config-store.js +65 -0
  165. package/dist/infra/storage/file-onboarding-preference-store.d.ts +10 -0
  166. package/dist/infra/storage/file-onboarding-preference-store.js +46 -0
  167. package/dist/infra/terminal/oclif-terminal.d.ts +19 -0
  168. package/dist/infra/terminal/oclif-terminal.js +60 -0
  169. package/dist/infra/terminal/repl-terminal.d.ts +31 -0
  170. package/dist/infra/terminal/repl-terminal.js +116 -0
  171. package/dist/infra/tracking/mixpanel-tracking-service.d.ts +11 -1
  172. package/dist/infra/tracking/mixpanel-tracking-service.js +18 -13
  173. package/dist/infra/usecase/clear-use-case.d.ts +20 -0
  174. package/dist/infra/usecase/clear-use-case.js +58 -0
  175. package/dist/infra/usecase/curate-use-case.d.ts +66 -0
  176. package/dist/infra/usecase/curate-use-case.js +288 -0
  177. package/dist/{commands/gen-rules.d.ts → infra/usecase/generate-rules-use-case.d.ts} +14 -20
  178. package/dist/{commands/gen-rules.js → infra/usecase/generate-rules-use-case.js} +59 -78
  179. package/dist/infra/usecase/init-use-case.d.ts +139 -0
  180. package/dist/{commands/init.js → infra/usecase/init-use-case.js} +197 -233
  181. package/dist/infra/usecase/login-use-case.d.ts +28 -0
  182. package/dist/infra/usecase/login-use-case.js +94 -0
  183. package/dist/infra/usecase/logout-use-case.d.ts +22 -0
  184. package/dist/infra/usecase/logout-use-case.js +51 -0
  185. package/dist/infra/usecase/pull-use-case.d.ts +35 -0
  186. package/dist/infra/usecase/pull-use-case.js +89 -0
  187. package/dist/infra/usecase/push-use-case.d.ts +37 -0
  188. package/dist/infra/usecase/push-use-case.js +124 -0
  189. package/dist/infra/usecase/query-use-case.d.ts +78 -0
  190. package/dist/infra/usecase/query-use-case.js +402 -0
  191. package/dist/infra/usecase/space-list-use-case.d.ts +27 -0
  192. package/dist/infra/usecase/space-list-use-case.js +64 -0
  193. package/dist/infra/usecase/space-switch-use-case.d.ts +36 -0
  194. package/dist/infra/usecase/space-switch-use-case.js +140 -0
  195. package/dist/infra/usecase/status-use-case.d.ts +27 -0
  196. package/dist/infra/usecase/status-use-case.js +97 -0
  197. package/dist/infra/workspace/workspace-detector-service.d.ts +3 -6
  198. package/dist/resources/prompts/curate-context-tree-curation.yml +23 -11
  199. package/dist/resources/prompts/query-context-tree-retrieval.yml +3 -4
  200. package/dist/resources/prompts/system-prompt.yml +1 -1
  201. package/dist/resources/prompts/tool-outputs.yml +4 -3
  202. package/dist/templates/sections/command-reference.md +12 -0
  203. package/dist/templates/sections/workflow.md +10 -1
  204. package/dist/tui/app.d.ts +9 -0
  205. package/dist/tui/app.js +26 -0
  206. package/dist/tui/components/enter-prompt.d.ts +13 -0
  207. package/dist/tui/components/enter-prompt.js +15 -0
  208. package/dist/tui/components/execution/execution-changes.d.ts +14 -0
  209. package/dist/tui/components/execution/execution-changes.js +15 -0
  210. package/dist/tui/components/execution/execution-content.d.ts +25 -0
  211. package/dist/tui/components/execution/execution-content.js +67 -0
  212. package/dist/tui/components/execution/execution-input.d.ts +12 -0
  213. package/dist/tui/components/execution/execution-input.js +16 -0
  214. package/dist/tui/components/execution/execution-progress.d.ts +21 -0
  215. package/dist/tui/components/execution/execution-progress.js +21 -0
  216. package/dist/tui/components/execution/execution-status.d.ts +13 -0
  217. package/dist/tui/components/execution/execution-status.js +19 -0
  218. package/dist/tui/components/execution/index.d.ts +11 -0
  219. package/dist/tui/components/execution/index.js +11 -0
  220. package/dist/tui/components/execution/log-item.d.ts +17 -0
  221. package/dist/tui/components/execution/log-item.js +25 -0
  222. package/dist/tui/components/footer.d.ts +5 -0
  223. package/dist/tui/components/footer.js +12 -0
  224. package/dist/tui/components/header.d.ts +18 -0
  225. package/dist/tui/components/header.js +18 -0
  226. package/dist/tui/components/index.d.ts +17 -0
  227. package/dist/tui/components/index.js +14 -0
  228. package/dist/tui/components/inline-prompts/index.d.ts +15 -0
  229. package/dist/tui/components/inline-prompts/index.js +10 -0
  230. package/dist/tui/components/inline-prompts/inline-confirm.d.ts +17 -0
  231. package/dist/tui/components/inline-prompts/inline-confirm.js +32 -0
  232. package/dist/tui/components/inline-prompts/inline-file-selector.d.ts +43 -0
  233. package/dist/tui/components/inline-prompts/inline-file-selector.js +185 -0
  234. package/dist/tui/components/inline-prompts/inline-input.d.ts +19 -0
  235. package/dist/tui/components/inline-prompts/inline-input.js +32 -0
  236. package/dist/tui/components/inline-prompts/inline-search.d.ts +20 -0
  237. package/dist/tui/components/inline-prompts/inline-search.js +50 -0
  238. package/dist/tui/components/inline-prompts/inline-select.d.ts +20 -0
  239. package/dist/tui/components/inline-prompts/inline-select.js +34 -0
  240. package/dist/tui/components/logo.d.ts +43 -0
  241. package/dist/tui/components/logo.js +103 -0
  242. package/dist/tui/components/message-item.d.ts +12 -0
  243. package/dist/tui/components/message-item.js +12 -0
  244. package/dist/tui/components/onboarding/copyable-prompt.d.ts +15 -0
  245. package/dist/tui/components/onboarding/copyable-prompt.js +65 -0
  246. package/dist/tui/components/onboarding/index.d.ts +7 -0
  247. package/dist/tui/components/onboarding/index.js +6 -0
  248. package/dist/tui/components/onboarding/onboarding-flow.d.ts +13 -0
  249. package/dist/tui/components/onboarding/onboarding-flow.js +304 -0
  250. package/dist/tui/components/onboarding/onboarding-step.d.ts +23 -0
  251. package/dist/tui/components/onboarding/onboarding-step.js +12 -0
  252. package/dist/tui/components/output-log.d.ts +14 -0
  253. package/dist/tui/components/output-log.js +13 -0
  254. package/dist/tui/components/scrollable-list.d.ts +30 -0
  255. package/dist/tui/components/scrollable-list.js +121 -0
  256. package/dist/tui/components/suggestions.d.ts +16 -0
  257. package/dist/tui/components/suggestions.js +162 -0
  258. package/dist/tui/components/tab-bar.d.ts +10 -0
  259. package/dist/tui/components/tab-bar.js +12 -0
  260. package/dist/tui/constants.d.ts +11 -0
  261. package/dist/tui/constants.js +13 -0
  262. package/dist/tui/contexts/auth-context.d.ts +30 -0
  263. package/dist/tui/contexts/auth-context.js +153 -0
  264. package/dist/tui/contexts/consumer.d.ts +31 -0
  265. package/dist/tui/contexts/consumer.js +56 -0
  266. package/dist/tui/contexts/index.d.ts +6 -0
  267. package/dist/tui/contexts/index.js +6 -0
  268. package/dist/tui/contexts/onboarding-context.d.ts +43 -0
  269. package/dist/tui/contexts/onboarding-context.js +181 -0
  270. package/dist/tui/contexts/services-context.d.ts +29 -0
  271. package/dist/tui/contexts/services-context.js +20 -0
  272. package/dist/tui/contexts/use-commands.d.ts +29 -0
  273. package/dist/tui/contexts/use-commands.js +54 -0
  274. package/dist/tui/contexts/use-mode.d.ts +43 -0
  275. package/dist/tui/contexts/use-mode.js +76 -0
  276. package/dist/tui/contexts/use-theme.d.ts +53 -0
  277. package/dist/tui/contexts/use-theme.js +60 -0
  278. package/dist/tui/hooks/index.d.ts +17 -0
  279. package/dist/tui/hooks/index.js +14 -0
  280. package/dist/tui/hooks/use-activity-logs.d.ts +26 -0
  281. package/dist/tui/hooks/use-activity-logs.js +90 -0
  282. package/dist/tui/hooks/use-consumer.d.ts +12 -0
  283. package/dist/tui/hooks/use-consumer.js +50 -0
  284. package/dist/tui/hooks/use-onboarding.d.ts +7 -0
  285. package/dist/tui/hooks/use-onboarding.js +6 -0
  286. package/dist/tui/hooks/use-queue-polling.d.ts +31 -0
  287. package/dist/tui/hooks/use-queue-polling.js +90 -0
  288. package/dist/tui/hooks/use-slash-command-processor.d.ts +16 -0
  289. package/dist/tui/hooks/use-slash-command-processor.js +132 -0
  290. package/dist/tui/hooks/use-slash-completion.d.ts +30 -0
  291. package/dist/tui/hooks/use-slash-completion.js +230 -0
  292. package/dist/tui/hooks/use-tab-navigation.d.ts +10 -0
  293. package/dist/tui/hooks/use-tab-navigation.js +35 -0
  294. package/dist/tui/hooks/use-visible-window.d.ts +22 -0
  295. package/dist/tui/hooks/use-visible-window.js +37 -0
  296. package/dist/tui/index.d.ts +1 -0
  297. package/dist/tui/index.js +1 -0
  298. package/dist/tui/providers/app-providers.d.ts +25 -0
  299. package/dist/tui/providers/app-providers.js +9 -0
  300. package/dist/tui/types/commands.d.ts +252 -0
  301. package/dist/tui/types/commands.js +16 -0
  302. package/dist/tui/types/dialogs.d.ts +37 -0
  303. package/dist/tui/types/dialogs.js +4 -0
  304. package/dist/tui/types/index.d.ts +11 -0
  305. package/dist/tui/types/index.js +7 -0
  306. package/dist/tui/types/messages.d.ts +55 -0
  307. package/dist/tui/types/messages.js +4 -0
  308. package/dist/tui/types/prompts.d.ts +100 -0
  309. package/dist/tui/types/prompts.js +4 -0
  310. package/dist/tui/types/ui.d.ts +14 -0
  311. package/dist/tui/types/ui.js +4 -0
  312. package/dist/tui/types.d.ts +1 -0
  313. package/dist/tui/types.js +1 -0
  314. package/dist/tui/views/command-view.d.ts +12 -0
  315. package/dist/tui/views/command-view.js +451 -0
  316. package/dist/tui/views/index.d.ts +6 -0
  317. package/dist/tui/views/index.js +6 -0
  318. package/dist/tui/views/login-view.d.ts +10 -0
  319. package/dist/tui/views/login-view.js +30 -0
  320. package/dist/tui/views/logs-view.d.ts +11 -0
  321. package/dist/tui/views/logs-view.js +73 -0
  322. package/dist/utils/file-validator.d.ts +16 -0
  323. package/dist/utils/file-validator.js +81 -0
  324. package/dist/utils/global-config-path.d.ts +15 -0
  325. package/dist/utils/global-config-path.js +38 -0
  326. package/oclif.manifest.json +29 -315
  327. package/package.json +11 -4
  328. package/dist/commands/clear.d.ts +0 -19
  329. package/dist/commands/clear.js +0 -78
  330. package/dist/commands/init.d.ts +0 -130
  331. package/dist/commands/login.d.ts +0 -22
  332. package/dist/commands/login.js +0 -108
  333. package/dist/commands/logout.d.ts +0 -16
  334. package/dist/commands/logout.js +0 -61
  335. package/dist/commands/pull.d.ts +0 -33
  336. package/dist/commands/pull.js +0 -115
  337. package/dist/commands/push.d.ts +0 -35
  338. package/dist/commands/push.js +0 -160
  339. package/dist/commands/space/list.d.ts +0 -25
  340. package/dist/commands/space/list.js +0 -114
  341. package/dist/commands/space/switch.d.ts +0 -36
  342. package/dist/commands/space/switch.js +0 -160
  343. package/dist/infra/cipher/grpc/internal-llm-grpc-service.d.ts +0 -149
  344. package/dist/infra/cipher/grpc/internal-llm-grpc-service.js +0 -364
  345. package/dist/infra/cipher/grpc/internal-llm-grpc.proto +0 -94
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Storage key as a tuple of string segments.
3
+ * Examples:
4
+ * ["message", sessionId, messageId]
5
+ * ["part", messageId, partId]
6
+ * ["session", sessionId]
7
+ */
8
+ export type StorageKey = readonly string[];
9
+ /**
10
+ * Batch operation for atomic multi-key updates.
11
+ */
12
+ export type BatchOperation = {
13
+ key: StorageKey;
14
+ type: 'delete';
15
+ } | {
16
+ key: StorageKey;
17
+ type: 'set';
18
+ value: unknown;
19
+ };
20
+ /**
21
+ * Low-level key-value storage interface for granular persistence.
22
+ *
23
+ * Enables hierarchical data organization with prefix-based operations.
24
+ * Designed to support the OpenCode-style message/part storage pattern
25
+ * where messages and parts are stored at separate keys for selective loading.
26
+ *
27
+ * Key path structure:
28
+ * - ["session", sessionId] → Session metadata
29
+ * - ["message", sessionId, messageId] → Individual message
30
+ * - ["part", messageId, partId] → Message part (tool output, file, etc.)
31
+ */
32
+ export interface IKeyStorage {
33
+ /**
34
+ * Batch operations for atomic multi-key updates.
35
+ * All operations succeed or fail together.
36
+ *
37
+ * @param operations - Array of set/delete operations
38
+ */
39
+ batch(operations: BatchOperation[]): Promise<void>;
40
+ /**
41
+ * Delete a value by its composite key.
42
+ *
43
+ * @param key - Composite key as string segments
44
+ * @returns True if the key existed and was deleted, false if not found
45
+ */
46
+ delete(key: StorageKey): Promise<boolean>;
47
+ /**
48
+ * Check if a key exists.
49
+ *
50
+ * @param key - Composite key as string segments
51
+ * @returns True if the key exists
52
+ */
53
+ exists(key: StorageKey): Promise<boolean>;
54
+ /**
55
+ * Get a value by its composite key.
56
+ *
57
+ * @param key - Composite key as string segments
58
+ * @returns The stored value, or undefined if not found
59
+ */
60
+ get<T>(key: StorageKey): Promise<T | undefined>;
61
+ /**
62
+ * Initialize the storage backend.
63
+ * Should be called once before any other operations.
64
+ */
65
+ initialize(): Promise<void>;
66
+ /**
67
+ * List all keys matching a prefix.
68
+ * Used for iterating over messages in a session or parts of a message.
69
+ *
70
+ * @param prefix - Key prefix to match (e.g., ["message", sessionId])
71
+ * @returns Array of matching full keys
72
+ */
73
+ list(prefix: StorageKey): Promise<StorageKey[]>;
74
+ /**
75
+ * Set a value at a composite key.
76
+ * Creates or overwrites the value at the key.
77
+ *
78
+ * @param key - Composite key as string segments
79
+ * @param value - Value to store (will be JSON serialized)
80
+ */
81
+ set<T>(key: StorageKey, value: T): Promise<void>;
82
+ /**
83
+ * Atomic update with optimistic locking.
84
+ * Reads the current value, applies the updater function, and writes back.
85
+ *
86
+ * @param key - Key to update
87
+ * @param updater - Function that receives current value and returns new value
88
+ * @returns The new value after update
89
+ */
90
+ update<T>(key: StorageKey, updater: (current: T | undefined) => T): Promise<T>;
91
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,34 @@
1
+ import type { GlobalConfig } from '../domain/entities/global-config.js';
2
+ /**
3
+ * Interface for storing and retrieving global ByteRover CLI configuration.
4
+ * Implementations handle persistence of user-level config (e.g., ~/.config/brv/config.json).
5
+ */
6
+ export interface IGlobalConfigStore {
7
+ /**
8
+ * Gets the existing device ID or creates a new one if not present.
9
+ * This is the primary method for obtaining the device ID for tracking.
10
+ *
11
+ * @returns The device ID (existing or newly generated)
12
+ */
13
+ getOrCreateDeviceId: () => Promise<string>;
14
+ /**
15
+ * Reads the global configuration from the user's config directory.
16
+ *
17
+ * @returns The configuration if found and valid, undefined otherwise
18
+ */
19
+ read: () => Promise<GlobalConfig | undefined>;
20
+ /**
21
+ * Regenerates the device ID by creating a new UUID v4 and persisting it.
22
+ * Called when leaving authenticated state to break tracking continuity.
23
+ *
24
+ * @returns The newly generated device ID
25
+ */
26
+ regenerateDeviceId: () => Promise<string>;
27
+ /**
28
+ * Writes the global configuration to the user's config directory.
29
+ * Creates the directory if it doesn't exist.
30
+ *
31
+ * @param config The configuration to write
32
+ */
33
+ write: (config: GlobalConfig) => Promise<void>;
34
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Store for onboarding preferences.
3
+ * Used to persist when onboarding was last dismissed to implement
4
+ * cooldown periods (e.g., show onboarding at most once per week).
5
+ */
6
+ export interface IOnboardingPreferenceStore {
7
+ /**
8
+ * Get the timestamp when onboarding was last dismissed.
9
+ * Returns undefined if never dismissed.
10
+ */
11
+ getLastDismissedAt(): Promise<number | undefined>;
12
+ /**
13
+ * Set the timestamp when onboarding was dismissed.
14
+ */
15
+ setLastDismissedAt(timestamp: number): Promise<void>;
16
+ /**
17
+ * Clear the stored preference.
18
+ */
19
+ clear(): Promise<void>;
20
+ }
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Choice option for select prompts.
3
+ */
4
+ export interface SelectChoice<T> {
5
+ description?: string;
6
+ name: string;
7
+ value: T;
8
+ }
9
+ /**
10
+ * Search source function type.
11
+ */
12
+ export type SearchSource<T> = (input: string | undefined) => Promise<SelectChoice<T>[]> | SelectChoice<T>[];
13
+ /**
14
+ * Options for confirm prompt.
15
+ */
16
+ export interface ConfirmOptions {
17
+ /** The default value (default: true) */
18
+ default?: boolean;
19
+ /** The confirmation message */
20
+ message: string;
21
+ }
22
+ /**
23
+ * Options for search prompt.
24
+ */
25
+ export interface SearchOptions<T> {
26
+ /** The prompt message */
27
+ message: string;
28
+ /** Function that returns choices based on input */
29
+ source: SearchSource<T>;
30
+ }
31
+ /**
32
+ * Options for select prompt.
33
+ */
34
+ export interface SelectOptions<T> {
35
+ /** The available choices */
36
+ choices: SelectChoice<T>[];
37
+ /** The prompt message */
38
+ message: string;
39
+ }
40
+ /**
41
+ * Options for input prompt.
42
+ */
43
+ export interface InputOptions {
44
+ /** The prompt message */
45
+ message: string;
46
+ /** Validation function (return true if valid, or error message string) */
47
+ validate?: (value: string) => boolean | string;
48
+ }
49
+ /**
50
+ * File selector item representation.
51
+ */
52
+ export interface FileSelectorItem {
53
+ /** Whether the item is a directory */
54
+ isDirectory: boolean;
55
+ /** The file/directory name */
56
+ name: string;
57
+ /** The full path to the item */
58
+ path: string;
59
+ }
60
+ /**
61
+ * Options for file selector prompt.
62
+ */
63
+ export interface FileSelectorOptions {
64
+ /** Allow user to cancel selection */
65
+ allowCancel?: boolean;
66
+ /** Base path to start selection from */
67
+ basePath: string;
68
+ /** Filter function to show/hide items */
69
+ filter?: (item: Readonly<FileSelectorItem>) => boolean;
70
+ /** The prompt message */
71
+ message: string;
72
+ /** Number of items to show per page */
73
+ pageSize?: number;
74
+ /** Custom theme labels */
75
+ theme?: {
76
+ labels?: {
77
+ messages?: {
78
+ cancel?: string;
79
+ empty?: string;
80
+ };
81
+ };
82
+ };
83
+ /** Type of items to select: 'directory' or 'file' */
84
+ type?: 'directory' | 'file';
85
+ }
86
+ /**
87
+ * Interface for terminal interactions.
88
+ * Provides output and user input operations.
89
+ */
90
+ export interface ITerminal {
91
+ /**
92
+ * Start a spinner/action indicator with a message.
93
+ * @param message The message to display while action is in progress
94
+ */
95
+ actionStart(message: string): void;
96
+ /**
97
+ * Stop the current spinner/action indicator.
98
+ * @param message Optional message to display when stopped
99
+ */
100
+ actionStop(message?: string): void;
101
+ /**
102
+ * Display a error message.
103
+ * @param message The message to display
104
+ */
105
+ error(message: string): void;
106
+ /**
107
+ * Display a message to the terminal.
108
+ * @param message The message to display (optional, empty line if omitted)
109
+ */
110
+ log(message?: string): void;
111
+ /**
112
+ * Display a warning message.
113
+ * @param message The message to display
114
+ */
115
+ warn(message: string): void;
116
+ /**
117
+ * Prompt the user for confirmation.
118
+ * @param options Confirmation options
119
+ * @returns Promise resolving to user's choice
120
+ */
121
+ confirm(options: ConfirmOptions): Promise<boolean>;
122
+ /**
123
+ * Prompt the user to select a file or directory.
124
+ * @param options File selector options
125
+ * @returns Promise resolving to selected item, or null if cancelled
126
+ */
127
+ fileSelector(options: FileSelectorOptions): Promise<FileSelectorItem | null>;
128
+ /**
129
+ * Prompt the user for text input.
130
+ * @param options Input options
131
+ * @returns Promise resolving to user's input string
132
+ */
133
+ input(options: InputOptions): Promise<string>;
134
+ /**
135
+ * Prompt the user to search and select from options.
136
+ * @param options Search options
137
+ * @returns Promise resolving to selected value
138
+ */
139
+ search<T>(options: SearchOptions<T>): Promise<T>;
140
+ /**
141
+ * Prompt the user to select from a list of choices.
142
+ * @param options Select options
143
+ * @returns Promise resolving to selected value
144
+ */
145
+ select<T>(options: SelectOptions<T>): Promise<T>;
146
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ import type { Agent } from '../domain/entities/agent.js';
2
+ export interface WorkspaceInfo {
3
+ chatLogPath: string;
4
+ cwd: string;
5
+ }
6
+ export interface IWorkspaceDetectorService {
7
+ detectWorkspaces(agent: Agent): WorkspaceInfo;
8
+ }
@@ -0,0 +1,6 @@
1
+ export interface IClearUseCase {
2
+ run(options: {
3
+ directory?: string;
4
+ skipConfirmation: boolean;
5
+ }): Promise<void>;
6
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,10 @@
1
+ export interface CurateUseCaseRunOptions {
2
+ apiKey?: string;
3
+ context?: string;
4
+ files?: string[];
5
+ model?: string;
6
+ verbose?: boolean;
7
+ }
8
+ export interface ICurateUseCase {
9
+ run(options: CurateUseCaseRunOptions): Promise<void>;
10
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ export interface IGenerateRulesUseCase {
2
+ run(): Promise<void>;
3
+ }
@@ -0,0 +1,5 @@
1
+ export interface IInitUseCase {
2
+ run(options: {
3
+ force: boolean;
4
+ }): Promise<void>;
5
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ export interface ILoginUseCase {
2
+ run(): Promise<void>;
3
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ export interface ILogoutUseCase {
2
+ run: (options: {
3
+ skipConfirmation: boolean;
4
+ }) => Promise<void>;
5
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ export interface IPullUseCase {
2
+ run: (options: {
3
+ branch: string;
4
+ }) => Promise<void>;
5
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,6 @@
1
+ export interface IPushUseCase {
2
+ run(options: {
3
+ branch: string;
4
+ skipConfirmation: boolean;
5
+ }): Promise<void>;
6
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,9 @@
1
+ export interface QueryUseCaseRunOptions {
2
+ apiKey?: string;
3
+ model?: string;
4
+ query: string;
5
+ verbose?: boolean;
6
+ }
7
+ export interface IQueryUseCase {
8
+ run(options: QueryUseCaseRunOptions): Promise<void>;
9
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ export interface ISpaceListUseCase {
2
+ run(): Promise<void>;
3
+ }
@@ -0,0 +1,3 @@
1
+ export interface ISpaceSwitchUseCase {
2
+ run(): Promise<void>;
3
+ }
@@ -0,0 +1,5 @@
1
+ export interface IStatusUseCase {
2
+ run(options: {
3
+ cliVersion: string;
4
+ }): Promise<void>;
5
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -16,11 +16,11 @@ function checkNodeVersion() {
16
16
  const [, major, minor] = versionMatch;
17
17
  const majorVersion = Number.parseInt(major, 10);
18
18
  const minorVersion = Number.parseInt(minor, 10);
19
- // Minimum supported version: Node 18
20
- if (majorVersion < 18) {
19
+ // Minimum supported version: Node 20
20
+ if (majorVersion < 20) {
21
21
  return {
22
22
  message: `Node.js ${majorVersion}.${minorVersion} is not supported.\n` +
23
- 'ByteRover CLI requires Node.js 18 or higher.\n' +
23
+ 'ByteRover CLI requires Node.js 20 or higher.\n' +
24
24
  `Current version: ${nodeVersion}\n\n` +
25
25
  'Please upgrade Node.js:\n' +
26
26
  ' - Using nvm: nvm install 22 && nvm use 22\n' +
@@ -28,21 +28,21 @@ function checkNodeVersion() {
28
28
  type: 'error',
29
29
  };
30
30
  }
31
- // Recommended versions: Node 18, 20, 22
32
- // Node 24+ may have compatibility issues with native modules (better-sqlite3, grpc)
31
+ // Recommended versions: Node 20, 22
32
+ // Node 24+ may have compatibility issues with native modules
33
33
  if (majorVersion >= 24) {
34
34
  return {
35
35
  message: `Node.js ${majorVersion}.${minorVersion} has not been fully tested with ByteRover CLI.\n` +
36
36
  `Current version: ${nodeVersion}\n` +
37
- 'Recommended versions: Node.js 18.x, 20.x, or 22.x (LTS)\n\n' +
38
- 'Some native dependencies (sqlite, grpc) may not work correctly.\n' +
37
+ 'Recommended versions: Node.js 20.x or 22.x\n\n' +
38
+ 'Some native dependencies may not work correctly.\n' +
39
39
  'If you encounter errors, please switch to a recommended version:\n' +
40
40
  ' - Using nvm: nvm install 22 && nvm use 22',
41
41
  type: 'warning',
42
42
  };
43
43
  }
44
44
  // All checks passed
45
- return null;
45
+ return undefined;
46
46
  }
47
47
  const hook = async function (options) {
48
48
  // Check Node.js version compatibility first
@@ -68,8 +68,7 @@ const hook = async function (options) {
68
68
  }
69
69
  }
70
70
  // Detect root help commands only (not command-specific help)
71
- const isRootHelp = (options.id === undefined && options.argv.length === 0) || // bare `brv`
72
- (options.id === '--help' && options.argv.length === 0) || // `brv --help`
71
+ const isRootHelp = (options.id === '--help' && options.argv.length === 0) || // `brv --help`
73
72
  (options.id === 'help' && options.argv.length === 0); // `brv help`
74
73
  if (isRootHelp) {
75
74
  const logo = [
@@ -80,23 +79,8 @@ const hook = async function (options) {
80
79
  chalk.cyan(String.raw ` |____/ \__, |\__\___|_| \_\___/ \_/ \___|_| `),
81
80
  chalk.cyan(' |___/ '),
82
81
  ].join('\n');
83
- const onboardingText = [
84
- 'ByteRover CLI quick start:',
85
- '',
86
- ' 1. Authenticate with ByteRover:',
87
- ' brv login',
88
- ' 2. Link your workspace:',
89
- ' brv init',
90
- '',
91
- 'After setup, run `brv status` to confirm your connection.',
92
- '',
93
- ' Explore commands:',
94
- ' • `brv curate` - Organize and curate your context tree',
95
- ' • `brv query` - Search and query your context tree',
96
- ' • `brv push` - Push your context tree to ByteRover',
97
- ].join('\n');
98
82
  const docsLink = `For more information, run 'brv --help', 'brv [command] --help' or visit ${DOCS_URL}`;
99
- this.log(`\n${logo}\n\n${onboardingText}\n\n${docsLink}\n\n`);
83
+ this.log(`\n${logo}\n\n${docsLink}\n\n`);
100
84
  }
101
85
  };
102
86
  export default hook;
@@ -6,10 +6,10 @@ import type { CipherAgentServices, SessionServices } from '../../core/interfaces
6
6
  */
7
7
  export interface CipherLLMConfig {
8
8
  accessToken: string;
9
+ apiBaseUrl: string;
9
10
  apiKey?: string;
10
11
  blobStorageConfig?: Partial<BlobStorageConfig>;
11
12
  fileSystemConfig?: Partial<FileSystemConfig>;
12
- grpcEndpoint: string;
13
13
  httpReferer?: string;
14
14
  maxIterations?: number;
15
15
  maxTokens?: number;
@@ -22,14 +22,21 @@ export interface CipherLLMConfig {
22
22
  temperature?: number;
23
23
  topK?: number;
24
24
  topP?: number;
25
+ /**
26
+ * Enable granular history storage for new sessions.
27
+ * When enabled, new sessions use per-message storage with streaming support.
28
+ * Existing sessions continue using blob storage (no migration).
29
+ * Default: false (use blob storage for all sessions)
30
+ */
31
+ useGranularStorage?: boolean;
25
32
  verbose?: boolean;
26
33
  }
27
34
  /**
28
- * gRPC configuration for ByteRover LLM service
35
+ * HTTP configuration for ByteRover LLM service
29
36
  */
30
- export interface ByteRoverGrpcConfig {
37
+ export interface ByteRoverHttpConfig {
31
38
  accessToken: string;
32
- grpcEndpoint: string;
39
+ apiBaseUrl: string;
33
40
  projectId: string;
34
41
  region?: string;
35
42
  sessionKey: string;
@@ -62,7 +69,7 @@ export declare function createCipherAgentServices(llmConfig: CipherLLMConfig): P
62
69
  *
63
70
  * @param sessionId - Unique session identifier
64
71
  * @param sharedServices - Shared services from agent
65
- * @param grpcConfig - gRPC configuration
72
+ * @param httpConfig - HTTP configuration
66
73
  * @param llmConfig - LLM service configuration
67
74
  * @param llmConfig.openRouterApiKey - Optional OpenRouter API key for OpenRouter service
68
75
  * @param llmConfig.httpReferer - Optional HTTP Referer for OpenRouter rankings
@@ -74,7 +81,7 @@ export declare function createCipherAgentServices(llmConfig: CipherLLMConfig): P
74
81
  * @param llmConfig.verbose - Enable verbose debug output
75
82
  * @returns Initialized session services
76
83
  */
77
- export declare function createSessionServices(sessionId: string, sharedServices: CipherAgentServices, grpcConfig: ByteRoverGrpcConfig, llmConfig: {
84
+ export declare function createSessionServices(sessionId: string, sharedServices: CipherAgentServices, httpConfig: ByteRoverHttpConfig, llmConfig: {
78
85
  httpReferer?: string;
79
86
  maxIterations?: number;
80
87
  maxTokens?: number;