byterover-cli 0.4.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (474) hide show
  1. package/README.md +1 -9
  2. package/dist/commands/curate.d.ts +1 -3
  3. package/dist/commands/curate.js +14 -51
  4. package/dist/commands/main.d.ts +8 -0
  5. package/dist/commands/main.js +29 -8
  6. package/dist/commands/query.d.ts +1 -3
  7. package/dist/commands/query.js +8 -35
  8. package/dist/config/context-tree-domains.d.ts +5 -0
  9. package/dist/config/context-tree-domains.js +6 -1
  10. package/dist/config/environment.js +9 -9
  11. package/dist/constants.d.ts +14 -0
  12. package/dist/constants.js +18 -0
  13. package/dist/core/domain/cipher/agent/agent-info.d.ts +199 -0
  14. package/dist/core/domain/cipher/agent/agent-info.js +143 -0
  15. package/dist/core/domain/cipher/agent/agent-registry.d.ts +96 -0
  16. package/dist/core/domain/cipher/agent/agent-registry.js +254 -0
  17. package/dist/core/domain/cipher/agent/index.d.ts +4 -1
  18. package/dist/core/domain/cipher/agent/index.js +7 -1
  19. package/dist/core/domain/cipher/agent-events/types.d.ts +355 -2
  20. package/dist/core/domain/cipher/agent-events/types.js +11 -0
  21. package/dist/core/domain/cipher/errors/error-normalizer.d.ts +156 -0
  22. package/dist/core/domain/cipher/errors/error-normalizer.js +379 -0
  23. package/dist/core/domain/cipher/errors/file-system-error.d.ts +2 -1
  24. package/dist/core/domain/cipher/errors/file-system-error.js +3 -2
  25. package/dist/core/domain/cipher/errors/system-prompt-error-codes.d.ts +79 -0
  26. package/dist/core/domain/cipher/errors/system-prompt-error-codes.js +80 -0
  27. package/dist/core/domain/cipher/errors/system-prompt-error.d.ts +114 -0
  28. package/dist/core/domain/cipher/errors/system-prompt-error.js +144 -0
  29. package/dist/core/domain/cipher/file-system/types.d.ts +57 -0
  30. package/dist/core/domain/cipher/llm/error-codes.d.ts +51 -0
  31. package/dist/core/domain/cipher/llm/error-codes.js +51 -0
  32. package/dist/core/domain/cipher/llm/index.d.ts +9 -0
  33. package/dist/core/domain/cipher/llm/index.js +13 -0
  34. package/dist/core/domain/cipher/llm/registry.d.ts +113 -0
  35. package/dist/core/domain/cipher/llm/registry.js +244 -0
  36. package/dist/core/domain/cipher/llm/schemas.d.ts +155 -0
  37. package/dist/core/domain/cipher/llm/schemas.js +151 -0
  38. package/dist/core/domain/cipher/llm/types.d.ts +121 -0
  39. package/dist/core/domain/cipher/llm/types.js +60 -0
  40. package/dist/core/domain/cipher/storage/message-storage-types.d.ts +114 -5
  41. package/dist/core/domain/cipher/streaming/types.d.ts +119 -0
  42. package/dist/core/domain/cipher/streaming/types.js +16 -0
  43. package/dist/core/domain/cipher/system-prompt/types.d.ts +44 -0
  44. package/dist/core/domain/cipher/todos/types.d.ts +34 -0
  45. package/dist/core/domain/cipher/tools/constants.d.ts +5 -2
  46. package/dist/core/domain/cipher/tools/constants.js +5 -2
  47. package/dist/core/domain/cipher/tools/types.d.ts +31 -0
  48. package/dist/core/domain/errors/connection-error.d.ts +33 -0
  49. package/dist/core/domain/errors/connection-error.js +54 -0
  50. package/dist/core/domain/errors/core-process-error.d.ts +27 -0
  51. package/dist/core/domain/errors/core-process-error.js +43 -0
  52. package/dist/core/domain/errors/task-error.d.ts +64 -0
  53. package/dist/core/domain/errors/task-error.js +116 -0
  54. package/dist/core/domain/errors/transport-error.d.ts +72 -0
  55. package/dist/core/domain/errors/transport-error.js +114 -0
  56. package/dist/core/domain/instance/index.d.ts +1 -0
  57. package/dist/core/domain/instance/index.js +1 -0
  58. package/dist/core/domain/instance/types.d.ts +57 -0
  59. package/dist/core/domain/instance/types.js +72 -0
  60. package/dist/core/domain/knowledge/directory-manager.d.ts +16 -0
  61. package/dist/core/domain/knowledge/directory-manager.js +31 -0
  62. package/dist/core/domain/transport/index.d.ts +2 -0
  63. package/dist/core/domain/transport/index.js +2 -0
  64. package/dist/core/domain/transport/schemas.d.ts +1149 -0
  65. package/dist/core/domain/transport/schemas.js +554 -0
  66. package/dist/core/domain/transport/types.d.ts +67 -0
  67. package/dist/core/domain/transport/types.js +7 -0
  68. package/dist/core/interfaces/cipher/cipher-services.d.ts +15 -3
  69. package/dist/core/interfaces/cipher/i-chat-session.d.ts +47 -5
  70. package/dist/core/interfaces/cipher/i-cipher-agent.d.ts +39 -4
  71. package/dist/core/interfaces/cipher/i-content-generator.d.ts +3 -5
  72. package/dist/core/interfaces/cipher/i-file-system.d.ts +12 -1
  73. package/dist/core/interfaces/cipher/i-llm-service.d.ts +4 -5
  74. package/dist/core/interfaces/cipher/i-todo-storage.d.ts +24 -0
  75. package/dist/core/interfaces/cipher/i-todo-storage.js +1 -0
  76. package/dist/core/interfaces/cipher/i-tool-plugin.d.ts +90 -0
  77. package/dist/core/interfaces/cipher/i-tool-plugin.js +1 -0
  78. package/dist/core/interfaces/cipher/i-tool-provider.d.ts +3 -2
  79. package/dist/core/interfaces/cipher/i-tool-scheduler.d.ts +4 -0
  80. package/dist/core/interfaces/cipher/index.d.ts +35 -0
  81. package/dist/core/interfaces/cipher/index.js +11 -0
  82. package/dist/core/interfaces/cipher/message-factory.d.ts +155 -0
  83. package/dist/core/interfaces/cipher/message-factory.js +252 -0
  84. package/dist/core/interfaces/cipher/message-type-guards.d.ts +139 -0
  85. package/dist/core/interfaces/cipher/message-type-guards.js +173 -0
  86. package/dist/core/interfaces/cipher/message-types.d.ts +279 -5
  87. package/dist/core/interfaces/cipher/message-types.js +6 -0
  88. package/dist/core/interfaces/cipher/sanitization-types.d.ts +147 -0
  89. package/dist/core/interfaces/cipher/sanitization-types.js +46 -0
  90. package/dist/core/interfaces/executor/i-curate-executor.d.ts +34 -0
  91. package/dist/core/interfaces/executor/i-curate-executor.js +1 -0
  92. package/dist/core/interfaces/executor/i-query-executor.d.ts +32 -0
  93. package/dist/core/interfaces/executor/i-query-executor.js +1 -0
  94. package/dist/core/interfaces/executor/index.d.ts +2 -0
  95. package/dist/core/interfaces/executor/index.js +2 -0
  96. package/dist/core/interfaces/instance/i-instance-discovery.d.ts +45 -0
  97. package/dist/core/interfaces/instance/i-instance-discovery.js +1 -0
  98. package/dist/core/interfaces/instance/i-instance-manager.d.ts +58 -0
  99. package/dist/core/interfaces/instance/i-instance-manager.js +1 -0
  100. package/dist/core/interfaces/instance/index.d.ts +2 -0
  101. package/dist/core/interfaces/instance/index.js +2 -0
  102. package/dist/core/interfaces/noop-implementations.d.ts +53 -0
  103. package/dist/core/interfaces/noop-implementations.js +62 -0
  104. package/dist/core/interfaces/transport/i-transport-client.d.ts +97 -0
  105. package/dist/core/interfaces/transport/i-transport-client.js +1 -0
  106. package/dist/core/interfaces/transport/i-transport-server.d.ts +93 -0
  107. package/dist/core/interfaces/transport/i-transport-server.js +1 -0
  108. package/dist/core/interfaces/transport/index.d.ts +2 -0
  109. package/dist/core/interfaces/transport/index.js +2 -0
  110. package/dist/infra/cipher/agent/agent-error-codes.d.ts +16 -0
  111. package/dist/infra/cipher/agent/agent-error-codes.js +17 -0
  112. package/dist/infra/cipher/agent/agent-error.d.ts +54 -0
  113. package/dist/infra/cipher/agent/agent-error.js +79 -0
  114. package/dist/infra/cipher/agent/agent-schemas.d.ts +264 -0
  115. package/dist/infra/cipher/agent/agent-schemas.js +97 -0
  116. package/dist/infra/cipher/agent/agent-state-manager.d.ts +140 -0
  117. package/dist/infra/cipher/agent/agent-state-manager.js +275 -0
  118. package/dist/infra/cipher/agent/base-agent.d.ts +118 -0
  119. package/dist/infra/cipher/agent/base-agent.js +240 -0
  120. package/dist/infra/cipher/agent/cipher-agent.d.ts +165 -0
  121. package/dist/infra/cipher/agent/cipher-agent.js +546 -0
  122. package/dist/infra/cipher/agent/index.d.ts +22 -0
  123. package/dist/infra/cipher/agent/index.js +24 -0
  124. package/dist/infra/cipher/agent/service-initializer.d.ts +79 -0
  125. package/dist/infra/cipher/{agent-service-factory.js → agent/service-initializer.js} +117 -68
  126. package/dist/infra/cipher/agent/types.d.ts +35 -0
  127. package/dist/infra/cipher/agent/types.js +1 -0
  128. package/dist/infra/cipher/blob/blob-reference-resolver.d.ts +107 -0
  129. package/dist/infra/cipher/blob/blob-reference-resolver.js +228 -0
  130. package/dist/infra/cipher/blob/blob-reference-utils.d.ts +117 -0
  131. package/dist/infra/cipher/blob/blob-reference-utils.js +230 -0
  132. package/dist/infra/cipher/consumer/consumer-lock.js +1 -0
  133. package/dist/infra/cipher/consumer/consumer-service.js +1 -0
  134. package/dist/infra/cipher/consumer/execution-consumer.d.ts +6 -1
  135. package/dist/infra/cipher/consumer/execution-consumer.js +54 -16
  136. package/dist/infra/cipher/consumer/index.d.ts +1 -1
  137. package/dist/infra/cipher/consumer/index.js +2 -1
  138. package/dist/infra/cipher/consumer/queue-polling-service.js +1 -0
  139. package/dist/infra/cipher/file-system/binary-utils.d.ts +43 -0
  140. package/dist/infra/cipher/file-system/binary-utils.js +164 -0
  141. package/dist/infra/cipher/file-system/context-tree-file-system-factory.d.ts +9 -0
  142. package/dist/infra/cipher/file-system/context-tree-file-system-factory.js +24 -0
  143. package/dist/infra/cipher/file-system/file-system-service.d.ts +17 -1
  144. package/dist/infra/cipher/file-system/file-system-service.js +327 -36
  145. package/dist/infra/cipher/file-system/path-validator.d.ts +32 -0
  146. package/dist/infra/cipher/file-system/path-validator.js +111 -6
  147. package/dist/infra/cipher/interactive-loop.js +41 -33
  148. package/dist/infra/cipher/llm/capability-cache.d.ts +87 -0
  149. package/dist/infra/cipher/llm/capability-cache.js +125 -0
  150. package/dist/infra/cipher/llm/context/compaction/compaction-service.d.ts +32 -0
  151. package/dist/infra/cipher/llm/context/compaction/compaction-service.js +44 -3
  152. package/dist/infra/cipher/llm/context/compression/enhanced-compaction.d.ts +112 -0
  153. package/dist/infra/cipher/llm/context/compression/enhanced-compaction.js +175 -0
  154. package/dist/infra/cipher/llm/context/compression/filter-compacted.d.ts +83 -0
  155. package/dist/infra/cipher/llm/context/compression/filter-compacted.js +150 -0
  156. package/dist/infra/cipher/llm/context/compression/index.d.ts +5 -0
  157. package/dist/infra/cipher/llm/context/compression/index.js +6 -0
  158. package/dist/infra/cipher/llm/context/compression/reactive-overflow.d.ts +107 -0
  159. package/dist/infra/cipher/llm/context/compression/reactive-overflow.js +272 -0
  160. package/dist/infra/cipher/llm/context/context-manager.d.ts +47 -1
  161. package/dist/infra/cipher/llm/context/context-manager.js +129 -0
  162. package/dist/infra/cipher/llm/context/utils.js +17 -4
  163. package/dist/infra/cipher/llm/generators/byterover-content-generator.js +4 -2
  164. package/dist/infra/cipher/llm/internal-llm-service.d.ts +50 -17
  165. package/dist/infra/cipher/llm/internal-llm-service.js +273 -50
  166. package/dist/infra/cipher/llm/openrouter-llm-service.d.ts +6 -8
  167. package/dist/infra/cipher/llm/openrouter-llm-service.js +14 -16
  168. package/dist/infra/cipher/llm/retry/retry-policy.d.ts +1 -0
  169. package/dist/infra/cipher/llm/retry/retry-policy.js +11 -0
  170. package/dist/infra/cipher/llm/retry/retry-with-backoff.js +3 -2
  171. package/dist/infra/cipher/llm/sanitization/base64-utils.d.ts +102 -0
  172. package/dist/infra/cipher/llm/sanitization/base64-utils.js +182 -0
  173. package/dist/infra/cipher/llm/sanitization/index.d.ts +12 -0
  174. package/dist/infra/cipher/llm/sanitization/index.js +13 -0
  175. package/dist/infra/cipher/llm/sanitization/tool-sanitizer.d.ts +74 -0
  176. package/dist/infra/cipher/llm/sanitization/tool-sanitizer.js +398 -0
  177. package/dist/infra/cipher/llm/stream-processor.d.ts +158 -0
  178. package/dist/infra/cipher/llm/stream-processor.js +276 -0
  179. package/dist/infra/cipher/llm/tokenizers/claude-tokenizer.d.ts +13 -20
  180. package/dist/infra/cipher/llm/tokenizers/claude-tokenizer.js +17 -24
  181. package/dist/infra/cipher/llm/tokenizers/gemini-tokenizer.d.ts +12 -11
  182. package/dist/infra/cipher/llm/tokenizers/gemini-tokenizer.js +16 -15
  183. package/dist/infra/cipher/llm/tokenizers/openrouter-tokenizer.d.ts +15 -7
  184. package/dist/infra/cipher/llm/tokenizers/openrouter-tokenizer.js +22 -10
  185. package/dist/infra/cipher/llm/tool-output-processor.d.ts +51 -0
  186. package/dist/infra/cipher/llm/tool-output-processor.js +139 -0
  187. package/dist/infra/cipher/process/command-validator.d.ts +23 -0
  188. package/dist/infra/cipher/process/command-validator.js +75 -0
  189. package/dist/infra/cipher/process/path-utils.d.ts +66 -0
  190. package/dist/infra/cipher/process/path-utils.js +94 -0
  191. package/dist/infra/cipher/process/process-service.d.ts +32 -0
  192. package/dist/infra/cipher/process/process-service.js +98 -17
  193. package/dist/infra/cipher/session/chat-session.d.ts +56 -7
  194. package/dist/infra/cipher/session/chat-session.js +163 -13
  195. package/dist/infra/cipher/session/index.d.ts +1 -0
  196. package/dist/infra/cipher/session/index.js +2 -0
  197. package/dist/infra/cipher/session/message-queue.d.ts +65 -0
  198. package/dist/infra/cipher/session/message-queue.js +90 -0
  199. package/dist/infra/cipher/session/session-manager.d.ts +106 -5
  200. package/dist/infra/cipher/session/session-manager.js +254 -7
  201. package/dist/infra/cipher/session/session-status.d.ts +137 -0
  202. package/dist/infra/cipher/session/session-status.js +184 -0
  203. package/dist/infra/cipher/session/title-generator.d.ts +8 -0
  204. package/dist/infra/cipher/session/title-generator.js +31 -0
  205. package/dist/infra/cipher/storage/message-storage-service.d.ts +65 -2
  206. package/dist/infra/cipher/storage/message-storage-service.js +300 -54
  207. package/dist/infra/cipher/storage/tool-part-factory.d.ts +116 -0
  208. package/dist/infra/cipher/storage/tool-part-factory.js +197 -0
  209. package/dist/infra/cipher/system-prompt/contributor-schemas.d.ts +516 -0
  210. package/dist/infra/cipher/system-prompt/contributor-schemas.js +85 -0
  211. package/dist/infra/cipher/system-prompt/contributors/agent-prompt-contributor.d.ts +59 -0
  212. package/dist/infra/cipher/system-prompt/contributors/agent-prompt-contributor.js +131 -0
  213. package/dist/infra/cipher/system-prompt/contributors/companion-contributor.d.ts +54 -0
  214. package/dist/infra/cipher/system-prompt/contributors/companion-contributor.js +107 -0
  215. package/dist/infra/cipher/system-prompt/contributors/context-tree-structure-contributor.d.ts +68 -0
  216. package/dist/infra/cipher/system-prompt/contributors/context-tree-structure-contributor.js +179 -0
  217. package/dist/infra/cipher/system-prompt/contributors/datetime-contributor.d.ts +25 -0
  218. package/dist/infra/cipher/system-prompt/contributors/datetime-contributor.js +29 -0
  219. package/dist/infra/cipher/system-prompt/contributors/environment-contributor.d.ts +25 -0
  220. package/dist/infra/cipher/system-prompt/contributors/environment-contributor.js +54 -0
  221. package/dist/infra/cipher/system-prompt/contributors/file-contributor.d.ts +60 -0
  222. package/dist/infra/cipher/system-prompt/contributors/file-contributor.js +128 -0
  223. package/dist/infra/cipher/system-prompt/contributors/index.d.ts +13 -0
  224. package/dist/infra/cipher/system-prompt/contributors/index.js +8 -0
  225. package/dist/infra/cipher/system-prompt/contributors/memory-contributor.d.ts +40 -0
  226. package/dist/infra/cipher/system-prompt/contributors/memory-contributor.js +56 -0
  227. package/dist/infra/cipher/system-prompt/contributors/static-contributor.d.ts +26 -0
  228. package/dist/infra/cipher/system-prompt/contributors/static-contributor.js +31 -0
  229. package/dist/infra/cipher/system-prompt/environment-context-builder.d.ts +112 -0
  230. package/dist/infra/cipher/system-prompt/environment-context-builder.js +256 -0
  231. package/dist/infra/cipher/system-prompt/prompt-cache.d.ts +102 -0
  232. package/dist/infra/cipher/system-prompt/prompt-cache.js +156 -0
  233. package/dist/infra/cipher/system-prompt/schemas.d.ts +151 -0
  234. package/dist/infra/cipher/system-prompt/schemas.js +94 -0
  235. package/dist/infra/cipher/system-prompt/system-prompt-manager.d.ts +136 -0
  236. package/dist/infra/cipher/system-prompt/system-prompt-manager.js +307 -0
  237. package/dist/infra/cipher/todos/todo-storage-service.d.ts +26 -0
  238. package/dist/infra/cipher/todos/todo-storage-service.js +28 -0
  239. package/dist/infra/cipher/tools/core-tool-scheduler.js +5 -1
  240. package/dist/infra/cipher/tools/default-policy-rules.js +1 -1
  241. package/dist/infra/cipher/tools/implementations/bash-exec-tool.d.ts +1 -0
  242. package/dist/infra/cipher/tools/implementations/bash-exec-tool.js +27 -10
  243. package/dist/infra/cipher/tools/implementations/bash-output-tool.js +1 -5
  244. package/dist/infra/cipher/tools/implementations/batch-tool.d.ts +12 -0
  245. package/dist/infra/cipher/tools/implementations/batch-tool.js +142 -0
  246. package/dist/infra/cipher/tools/implementations/curate-tool.js +195 -68
  247. package/dist/infra/cipher/tools/implementations/list-directory-tool.d.ts +12 -0
  248. package/dist/infra/cipher/tools/implementations/list-directory-tool.js +52 -0
  249. package/dist/infra/cipher/tools/implementations/read-file-tool.d.ts +8 -1
  250. package/dist/infra/cipher/tools/implementations/read-file-tool.js +17 -7
  251. package/dist/infra/cipher/tools/implementations/read-todos-tool.d.ts +11 -0
  252. package/dist/infra/cipher/tools/implementations/read-todos-tool.js +39 -0
  253. package/dist/infra/cipher/tools/implementations/{detect-domains-tool.d.ts → spec-analyze-tool.d.ts} +1 -1
  254. package/dist/infra/cipher/tools/implementations/{detect-domains-tool.js → spec-analyze-tool.js} +9 -7
  255. package/dist/infra/cipher/tools/implementations/task-tool.d.ts +34 -0
  256. package/dist/infra/cipher/tools/implementations/task-tool.js +207 -0
  257. package/dist/infra/cipher/tools/implementations/write-todos-tool.d.ts +4 -1
  258. package/dist/infra/cipher/tools/implementations/write-todos-tool.js +19 -63
  259. package/dist/infra/cipher/tools/index.d.ts +1 -1
  260. package/dist/infra/cipher/tools/index.js +1 -1
  261. package/dist/infra/cipher/tools/plugins/index.d.ts +3 -0
  262. package/dist/infra/cipher/tools/plugins/index.js +2 -0
  263. package/dist/infra/cipher/tools/plugins/logging-plugin.d.ts +28 -0
  264. package/dist/infra/cipher/tools/plugins/logging-plugin.js +66 -0
  265. package/dist/infra/cipher/tools/plugins/plugin-manager.d.ts +81 -0
  266. package/dist/infra/cipher/tools/plugins/plugin-manager.js +122 -0
  267. package/dist/infra/cipher/tools/streaming/index.d.ts +1 -0
  268. package/dist/infra/cipher/tools/streaming/index.js +1 -0
  269. package/dist/infra/cipher/tools/streaming/metadata-handler.d.ts +31 -0
  270. package/dist/infra/cipher/tools/streaming/metadata-handler.js +39 -0
  271. package/dist/infra/cipher/tools/tool-description-loader.d.ts +57 -0
  272. package/dist/infra/cipher/tools/tool-description-loader.js +108 -0
  273. package/dist/infra/cipher/tools/tool-manager.d.ts +38 -4
  274. package/dist/infra/cipher/tools/tool-manager.js +107 -11
  275. package/dist/infra/cipher/tools/tool-provider-getter.d.ts +6 -0
  276. package/dist/infra/cipher/tools/tool-provider-getter.js +1 -0
  277. package/dist/infra/cipher/tools/tool-provider.d.ts +32 -7
  278. package/dist/infra/cipher/tools/tool-provider.js +81 -25
  279. package/dist/infra/cipher/tools/tool-registry.d.ts +23 -0
  280. package/dist/infra/cipher/tools/tool-registry.js +58 -16
  281. package/dist/infra/context-tree/file-context-tree-snapshot-service.js +10 -4
  282. package/dist/infra/context-tree/file-context-tree-writer-service.d.ts +4 -3
  283. package/dist/infra/context-tree/file-context-tree-writer-service.js +6 -4
  284. package/dist/infra/context-tree/path-utils.d.ts +7 -0
  285. package/dist/infra/context-tree/path-utils.js +7 -0
  286. package/dist/infra/core/executors/curate-executor.d.ts +35 -0
  287. package/dist/infra/core/executors/curate-executor.js +123 -0
  288. package/dist/infra/core/executors/index.d.ts +2 -0
  289. package/dist/infra/core/executors/index.js +2 -0
  290. package/dist/infra/core/executors/query-executor.d.ts +23 -0
  291. package/dist/infra/core/executors/query-executor.js +51 -0
  292. package/dist/infra/core/task-processor.d.ts +81 -0
  293. package/dist/infra/core/task-processor.js +115 -0
  294. package/dist/infra/instance/file-instance-discovery.d.ts +31 -0
  295. package/dist/infra/instance/file-instance-discovery.js +84 -0
  296. package/dist/infra/instance/file-instance-manager.d.ts +46 -0
  297. package/dist/infra/instance/file-instance-manager.js +123 -0
  298. package/dist/infra/instance/index.d.ts +3 -0
  299. package/dist/infra/instance/index.js +3 -0
  300. package/dist/infra/instance/process-utils.d.ts +14 -0
  301. package/dist/infra/instance/process-utils.js +39 -0
  302. package/dist/infra/process/agent-worker.d.ts +20 -0
  303. package/dist/infra/process/agent-worker.js +602 -0
  304. package/dist/infra/process/index.d.ts +12 -0
  305. package/dist/infra/process/index.js +11 -0
  306. package/dist/infra/process/ipc-types.d.ts +55 -0
  307. package/dist/infra/process/ipc-types.js +12 -0
  308. package/dist/infra/process/process-manager.d.ts +154 -0
  309. package/dist/infra/process/process-manager.js +471 -0
  310. package/dist/infra/process/task-queue-manager.d.ts +123 -0
  311. package/dist/infra/process/task-queue-manager.js +226 -0
  312. package/dist/infra/process/transport-handlers.d.ts +124 -0
  313. package/dist/infra/process/transport-handlers.js +348 -0
  314. package/dist/infra/process/transport-worker.d.ts +20 -0
  315. package/dist/infra/process/transport-worker.js +168 -0
  316. package/dist/infra/repl/commands/curate-command.js +0 -5
  317. package/dist/infra/repl/commands/query-command.js +0 -3
  318. package/dist/infra/repl/repl-startup.d.ts +4 -0
  319. package/dist/infra/repl/repl-startup.js +8 -1
  320. package/dist/infra/repl/transport-client-helper.d.ts +9 -0
  321. package/dist/infra/repl/transport-client-helper.js +96 -0
  322. package/dist/infra/transport/index.d.ts +4 -0
  323. package/dist/infra/transport/index.js +4 -0
  324. package/dist/infra/transport/port-utils.d.ts +42 -0
  325. package/dist/infra/transport/port-utils.js +84 -0
  326. package/dist/infra/transport/socket-io-transport-client.d.ts +45 -0
  327. package/dist/infra/transport/socket-io-transport-client.js +270 -0
  328. package/dist/infra/transport/socket-io-transport-server.d.ts +35 -0
  329. package/dist/infra/transport/socket-io-transport-server.js +207 -0
  330. package/dist/infra/transport/transport-client-factory.d.ts +76 -0
  331. package/dist/infra/transport/transport-client-factory.js +168 -0
  332. package/dist/infra/transport/transport-factory.d.ts +33 -0
  333. package/dist/infra/transport/transport-factory.js +59 -0
  334. package/dist/infra/usecase/curate-use-case.d.ts +8 -55
  335. package/dist/infra/usecase/curate-use-case.js +71 -262
  336. package/dist/infra/usecase/init-use-case.js +3 -2
  337. package/dist/infra/usecase/query-use-case.d.ts +18 -45
  338. package/dist/infra/usecase/query-use-case.js +250 -326
  339. package/dist/infra/usecase/status-use-case.js +1 -1
  340. package/dist/resources/prompts/{curate-context-tree-curation.yml → curate.yml} +25 -22
  341. package/dist/resources/prompts/explore.yml +78 -0
  342. package/dist/resources/prompts/plan.yml +114 -0
  343. package/dist/resources/prompts/reflection.yml +1 -1
  344. package/dist/resources/prompts/system-prompt.yml +15 -8
  345. package/dist/resources/prompts/tool-outputs.yml +0 -5
  346. package/dist/resources/tools/bash_exec.txt +98 -0
  347. package/dist/resources/tools/bash_output.txt +40 -0
  348. package/dist/resources/tools/batch.txt +28 -0
  349. package/dist/resources/tools/create_knowledge_topic.txt +23 -0
  350. package/dist/resources/tools/curate.txt +22 -0
  351. package/dist/resources/tools/delete_memory.txt +1 -0
  352. package/dist/resources/tools/detect_domains.txt +11 -0
  353. package/dist/resources/tools/edit_file.txt +1 -0
  354. package/dist/resources/tools/edit_memory.txt +1 -0
  355. package/dist/resources/tools/glob_files.txt +20 -0
  356. package/dist/resources/tools/grep_content.txt +18 -0
  357. package/dist/resources/tools/kill_process.txt +16 -0
  358. package/dist/resources/tools/list_directory.txt +16 -0
  359. package/dist/resources/tools/list_memories.txt +1 -0
  360. package/dist/resources/tools/read_file.txt +31 -0
  361. package/dist/resources/tools/read_memory.txt +1 -0
  362. package/dist/resources/tools/read_todos.txt +17 -0
  363. package/dist/resources/tools/search_history.txt +1 -0
  364. package/dist/resources/tools/task.txt +23 -0
  365. package/dist/resources/tools/write_file.txt +1 -0
  366. package/dist/resources/tools/write_memory.txt +1 -0
  367. package/dist/resources/tools/write_todos.txt +29 -0
  368. package/dist/tui/app.js +9 -13
  369. package/dist/tui/components/command-details.d.ts +14 -0
  370. package/dist/tui/components/command-details.js +35 -0
  371. package/dist/tui/components/execution/execution-changes.d.ts +5 -0
  372. package/dist/tui/components/execution/execution-changes.js +19 -4
  373. package/dist/tui/components/execution/execution-content.d.ts +4 -2
  374. package/dist/tui/components/execution/execution-content.js +26 -13
  375. package/dist/tui/components/execution/execution-input.js +3 -3
  376. package/dist/tui/components/execution/execution-progress.d.ts +2 -2
  377. package/dist/tui/components/execution/execution-progress.js +8 -6
  378. package/dist/tui/components/execution/log-item.d.ts +3 -4
  379. package/dist/tui/components/execution/log-item.js +2 -5
  380. package/dist/tui/components/footer.js +9 -4
  381. package/dist/tui/components/header.d.ts +3 -3
  382. package/dist/tui/components/header.js +5 -3
  383. package/dist/tui/components/index.d.ts +1 -0
  384. package/dist/tui/components/index.js +1 -0
  385. package/dist/tui/components/onboarding/copyable-prompt.d.ts +5 -3
  386. package/dist/tui/components/onboarding/copyable-prompt.js +7 -8
  387. package/dist/tui/components/onboarding/onboarding-flow.js +35 -25
  388. package/dist/tui/components/scrollable-list.js +12 -10
  389. package/dist/tui/components/suggestions.js +39 -41
  390. package/dist/tui/components/tab-bar.d.ts +2 -1
  391. package/dist/tui/components/tab-bar.js +3 -4
  392. package/dist/tui/constants.d.ts +0 -5
  393. package/dist/tui/constants.js +0 -5
  394. package/dist/tui/contexts/auth-context.js +9 -2
  395. package/dist/tui/contexts/{use-commands.js → commands-context.js} +3 -3
  396. package/dist/tui/contexts/index.d.ts +6 -1
  397. package/dist/tui/contexts/index.js +6 -1
  398. package/dist/tui/contexts/onboarding-context.d.ts +1 -1
  399. package/dist/tui/contexts/onboarding-context.js +9 -9
  400. package/dist/tui/contexts/tasks-context.d.ts +84 -0
  401. package/dist/tui/contexts/tasks-context.js +218 -0
  402. package/dist/tui/contexts/transport-context.d.ts +29 -0
  403. package/dist/tui/contexts/transport-context.js +82 -0
  404. package/dist/tui/hooks/index.d.ts +10 -6
  405. package/dist/tui/hooks/index.js +7 -6
  406. package/dist/tui/hooks/use-activity-logs.d.ts +3 -11
  407. package/dist/tui/hooks/use-activity-logs.js +87 -34
  408. package/dist/tui/hooks/use-auth-polling.d.ts +24 -0
  409. package/dist/tui/hooks/use-auth-polling.js +104 -0
  410. package/dist/tui/hooks/use-slash-command-processor.js +0 -1
  411. package/dist/tui/hooks/use-slash-completion.js +1 -1
  412. package/dist/tui/hooks/use-tab-navigation.d.ts +2 -1
  413. package/dist/tui/hooks/use-tab-navigation.js +16 -7
  414. package/dist/tui/hooks/use-terminal-breakpoint.d.ts +21 -0
  415. package/dist/tui/hooks/use-terminal-breakpoint.js +38 -0
  416. package/dist/tui/hooks/use-ui-heights.d.ts +120 -0
  417. package/dist/tui/hooks/use-ui-heights.js +88 -0
  418. package/dist/tui/providers/app-providers.js +2 -6
  419. package/dist/tui/types/commands.d.ts +0 -26
  420. package/dist/tui/types/index.d.ts +1 -1
  421. package/dist/tui/types/ui.d.ts +9 -4
  422. package/dist/tui/utils/line.d.ts +11 -0
  423. package/dist/tui/utils/line.js +16 -0
  424. package/dist/tui/utils/log.d.ts +27 -0
  425. package/dist/tui/utils/log.js +114 -0
  426. package/dist/tui/views/command-view.d.ts +7 -0
  427. package/dist/tui/views/command-view.js +103 -80
  428. package/dist/tui/views/login-view.js +7 -4
  429. package/dist/tui/views/logs-view.d.ts +13 -0
  430. package/dist/tui/views/logs-view.js +27 -52
  431. package/dist/utils/connection-error-handler.d.ts +16 -0
  432. package/dist/utils/connection-error-handler.js +49 -0
  433. package/dist/utils/crash-log.d.ts +14 -0
  434. package/dist/utils/crash-log.js +19 -0
  435. package/dist/utils/file-helpers.d.ts +14 -0
  436. package/dist/utils/file-helpers.js +21 -0
  437. package/dist/utils/global-logs-path.d.ts +11 -0
  438. package/dist/utils/global-logs-path.js +37 -0
  439. package/dist/utils/process-logger.d.ts +53 -0
  440. package/dist/utils/process-logger.js +253 -0
  441. package/dist/utils/sandbox-detector.d.ts +31 -0
  442. package/dist/utils/sandbox-detector.js +122 -0
  443. package/oclif.manifest.json +10 -198
  444. package/package.json +5 -1
  445. package/dist/commands/cipher-agent/run.d.ts +0 -142
  446. package/dist/commands/cipher-agent/run.js +0 -555
  447. package/dist/commands/cipher-agent/set-prompt.d.ts +0 -16
  448. package/dist/commands/cipher-agent/set-prompt.js +0 -58
  449. package/dist/commands/cipher-agent/show-prompt.d.ts +0 -13
  450. package/dist/commands/cipher-agent/show-prompt.js +0 -53
  451. package/dist/commands/foo.d.ts +0 -14
  452. package/dist/commands/foo.js +0 -66
  453. package/dist/infra/cipher/agent-service-factory.d.ts +0 -93
  454. package/dist/infra/cipher/cipher-agent-state-manager.d.ts +0 -63
  455. package/dist/infra/cipher/cipher-agent-state-manager.js +0 -108
  456. package/dist/infra/cipher/cipher-agent.d.ts +0 -182
  457. package/dist/infra/cipher/cipher-agent.js +0 -317
  458. package/dist/infra/cipher/system-prompt/simple-prompt-factory.d.ts +0 -106
  459. package/dist/infra/cipher/system-prompt/simple-prompt-factory.js +0 -297
  460. package/dist/infra/cipher/tools/implementations/find-knowledge-topics-tool.d.ts +0 -7
  461. package/dist/infra/cipher/tools/implementations/find-knowledge-topics-tool.js +0 -424
  462. package/dist/resources/prompts/modes/autonomous.yml +0 -9
  463. package/dist/resources/prompts/query-context-tree-retrieval.yml +0 -48
  464. package/dist/tui/contexts/consumer.d.ts +0 -31
  465. package/dist/tui/contexts/consumer.js +0 -56
  466. package/dist/tui/hooks/use-consumer.d.ts +0 -12
  467. package/dist/tui/hooks/use-consumer.js +0 -50
  468. package/dist/tui/hooks/use-queue-polling.d.ts +0 -31
  469. package/dist/tui/hooks/use-queue-polling.js +0 -90
  470. /package/dist/tui/contexts/{use-commands.d.ts → commands-context.d.ts} +0 -0
  471. /package/dist/tui/contexts/{use-mode.d.ts → mode-context.d.ts} +0 -0
  472. /package/dist/tui/contexts/{use-mode.js → mode-context.js} +0 -0
  473. /package/dist/tui/contexts/{use-theme.d.ts → theme-context.d.ts} +0 -0
  474. /package/dist/tui/contexts/{use-theme.js → theme-context.js} +0 -0
package/README.md CHANGED
@@ -6,14 +6,6 @@ Command-line interface for ByteRover, featuring an interactive REPL with a moder
6
6
  [![Downloads/week](https://img.shields.io/npm/dw/byterover-cli.svg)](https://npmjs.org/package/byterover-cli)
7
7
  [![Node](https://img.shields.io/badge/node-%3E%3D20.0.0-brightgreen.svg)](https://nodejs.org)
8
8
 
9
- ## Important
10
-
11
- Starting with version **0.2.0**, the ByteRover CLI command has been renamed from `br` to `brv` to avoid conflicts with [broot](https://github.com/Canop/broot), another popular CLI tool that also uses the `br` command.
12
-
13
- This is a **breaking change** that requires action from existing users.
14
-
15
- Please check the migration guide [here](https://docs.byterover.dev/beta/migration-br-brv).
16
-
17
9
  ## Table of Contents
18
10
 
19
11
  * [Installation](#installation)
@@ -284,7 +276,7 @@ If you encounter issues or have questions:
284
276
 
285
277
  1. Check the command help in the REPL
286
278
  2. Run `/status` to review your project state
287
- 3. Visit [ByteRover Docs](https://docs.byterover.dev/beta)
279
+ 3. Visit [ByteRover Docs](https://docs.byterover.dev)
288
280
  4. Contact ByteRover support
289
281
 
290
282
  ---
@@ -1,5 +1,5 @@
1
1
  import { Command } from '@oclif/core';
2
- import type { ICurateUseCase } from '../core/interfaces/usecase/i-curate-use-case.js';
2
+ import { ICurateUseCase } from '../core/interfaces/usecase/i-curate-use-case.js';
3
3
  export default class Curate extends Command {
4
4
  static args: {
5
5
  context: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
@@ -7,8 +7,6 @@ export default class Curate extends Command {
7
7
  static description: string;
8
8
  static examples: string[];
9
9
  static flags: {
10
- apiKey?: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions> | undefined;
11
- model?: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions> | undefined;
12
10
  verbose?: import("@oclif/core/interfaces").BooleanFlag<boolean> | undefined;
13
11
  files: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
12
  };
@@ -1,6 +1,5 @@
1
1
  import { Args, Command, Flags } from '@oclif/core';
2
2
  import { isDevelopment } from '../config/environment.js';
3
- import { ProjectConfigStore } from '../infra/config/file-config-store.js';
4
3
  import { FileGlobalConfigStore } from '../infra/storage/file-global-config-store.js';
5
4
  import { KeychainTokenStore } from '../infra/storage/keychain-token-store.js';
6
5
  import { OclifTerminal } from '../infra/terminal/oclif-terminal.js';
@@ -13,9 +12,9 @@ export default class Curate extends Command {
13
12
  required: false,
14
13
  }),
15
14
  };
16
- static description = `Curate context to the context tree (autonomous mode)
15
+ static description = `Curate context to the context tree (connects to running brv instance)
17
16
 
18
- For interactive mode, use REPL: brv repl then /curate
17
+ Requires a running brv instance. Start one with: brv start
19
18
 
20
19
  Good examples:
21
20
  - "Auth uses JWT with 24h expiry. Tokens stored in httpOnly cookies via authMiddleware.ts"
@@ -24,47 +23,23 @@ Bad examples:
24
23
  - "Authentication" or "JWT tokens" (too vague, lacks context)
25
24
  - "Rate limiting" (no implementation details or file references)`;
26
25
  static examples = [
27
- '# Autonomous mode - LLM auto-categorizes your context',
26
+ '# Curate context - queues task for background processing',
28
27
  '<%= config.bin %> <%= command.id %> "Auth uses JWT with 24h expiry. Tokens stored in httpOnly cookies via authMiddleware.ts"',
29
28
  '',
30
- '# Include relevant files for comprehensive context (use sparingly, max 5 files)',
31
- '- NOTE: CONTEXT argument must come BEFORE --files flag',
32
- '- NOTE: For multiple files, repeat --files (or -f) flag for each file',
33
- '- NOTE: Only text/code files from current project directory.',
29
+ '# Include relevant files for comprehensive context (max 5 files)',
30
+ '<%= config.bin %> <%= command.id %> "Authentication middleware validates JWT tokens" -f src/middleware/auth.ts',
34
31
  '',
35
- '## Single file',
36
- '<%= config.bin %> <%= command.id %> "Authentication middleware validates JWT tokens and attaches user context" -f src/middleware/auth.ts',
37
- '',
38
- '## Multiple files',
39
- '<%= config.bin %> <%= command.id %> "JWT authentication implementation with refresh token rotation" --files src/auth/jwt.ts --files docs/auth.md',
40
- '',
41
- ...(isDevelopment()
42
- ? [
43
- '# Autonomous mode with OpenRouter (development only)',
44
- '<%= config.bin %> <%= command.id %> -k YOUR_API_KEY "React components follow atomic design in src/components/. Atoms in atoms/, molecules in molecules/, organisms in organisms/"',
45
- '',
46
- '# Autonomous mode with custom model (development only)',
47
- '<%= config.bin %> <%= command.id %> -k YOUR_API_KEY -m anthropic/claude-sonnet-4 "API rate limit is 100 req/min per user. Implemented using Redis with sliding window in rateLimiter.ts"',
48
- ]
49
- : []),
32
+ '# Multiple files',
33
+ '<%= config.bin %> <%= command.id %> "JWT authentication implementation" --files src/auth/jwt.ts --files docs/auth.md',
50
34
  ];
51
35
  static flags = {
52
36
  files: Flags.string({
53
37
  char: 'f',
54
- description: 'Include specific file paths for critical context (max 5 files). Only text/code files from the current project directory are allowed. Use sparingly - only for truly relevant files like docs or key implementation details. NOTE: CONTEXT argument must come BEFORE this flag.',
38
+ description: 'Include specific file paths for critical context (max 5 files)',
55
39
  multiple: true,
56
40
  }),
57
41
  ...(isDevelopment()
58
42
  ? {
59
- apiKey: Flags.string({
60
- char: 'k',
61
- description: 'OpenRouter API key (use OpenRouter instead of internal gRPC backend) [Development only]',
62
- env: 'OPENROUTER_API_KEY',
63
- }),
64
- model: Flags.string({
65
- char: 'm',
66
- description: 'Model to use (default: google/gemini-2.5-pro for OpenRouter, gemini-2.5-pro for gRPC) [Development only]',
67
- }),
68
43
  verbose: Flags.boolean({
69
44
  char: 'v',
70
45
  default: false,
@@ -76,25 +51,13 @@ Bad examples:
76
51
  createUseCase() {
77
52
  const tokenStore = new KeychainTokenStore();
78
53
  const globalConfigStore = new FileGlobalConfigStore();
79
- return new CurateUseCase({
80
- projectConfigStore: new ProjectConfigStore(),
81
- terminal: new OclifTerminal(this),
82
- tokenStore,
83
- trackingService: new MixpanelTrackingService({ globalConfigStore, tokenStore }),
84
- });
54
+ const terminal = new OclifTerminal(this);
55
+ const trackingService = new MixpanelTrackingService({ globalConfigStore, tokenStore });
56
+ return new CurateUseCase({ terminal, trackingService });
85
57
  }
86
58
  async run() {
87
- const { args, flags } = await this.parse(Curate);
88
- if (!args.context) {
89
- this.log('Context argument is required.\nFor interactive mode, use REPL: brv /curate');
90
- return;
91
- }
92
- await this.createUseCase().run({
93
- apiKey: flags.apiKey,
94
- context: args.context,
95
- files: flags.files,
96
- model: flags.model,
97
- verbose: flags.verbose,
98
- });
59
+ const { args, flags: rawFlags } = await this.parse(Curate);
60
+ const flags = rawFlags;
61
+ return this.createUseCase().run({ context: args.context, files: flags.files, verbose: flags.verbose });
99
62
  }
100
63
  }
@@ -1,4 +1,12 @@
1
1
  import { Command } from '@oclif/core';
2
+ /**
3
+ * Main command - Entry point for ByteRover CLI.
4
+ *
5
+ * Architecture v0.5.0:
6
+ * - Main Process: Spawns Transport and Agent processes
7
+ * - TUI discovers Transport via TransportClientFactory (same as external CLIs)
8
+ * - All task communication via Socket.IO (NO IPC)
9
+ */
2
10
  export default class Main extends Command {
3
11
  static description: string;
4
12
  /**
@@ -1,10 +1,20 @@
1
1
  import { Command } from '@oclif/core';
2
2
  import { ProjectConfigStore } from '../infra/config/file-config-store.js';
3
+ import { getProcessManager } from '../infra/process/index.js';
3
4
  import { startRepl } from '../infra/repl/repl-startup.js';
4
- import { FileGlobalConfigStore } from "../infra/storage/file-global-config-store.js";
5
+ import { FileGlobalConfigStore } from '../infra/storage/file-global-config-store.js';
5
6
  import { FileOnboardingPreferenceStore } from '../infra/storage/file-onboarding-preference-store.js';
6
7
  import { KeychainTokenStore } from '../infra/storage/keychain-token-store.js';
7
8
  import { MixpanelTrackingService } from '../infra/tracking/mixpanel-tracking-service.js';
9
+ import { initSessionLog } from '../utils/process-logger.js';
10
+ /**
11
+ * Main command - Entry point for ByteRover CLI.
12
+ *
13
+ * Architecture v0.5.0:
14
+ * - Main Process: Spawns Transport and Agent processes
15
+ * - TUI discovers Transport via TransportClientFactory (same as external CLIs)
16
+ * - All task communication via Socket.IO (NO IPC)
17
+ */
8
18
  export default class Main extends Command {
9
19
  static description = 'ByteRover CLI - Interactive REPL';
10
20
  /**
@@ -12,23 +22,34 @@ export default class Main extends Command {
12
22
  */
13
23
  static hidden = true;
14
24
  async run() {
25
+ // Initialize session log (creates ~/.brv/logs/brv-{timestamp}.log)
26
+ initSessionLog();
15
27
  // Check if running in an interactive terminal
16
28
  if (!process.stdin.isTTY || !process.stdout.isTTY) {
17
29
  this.log('ByteRover REPL requires an interactive terminal.');
18
30
  this.log("Run 'brv --help' for available commands.");
19
31
  return;
20
32
  }
33
+ // Start Transport and Agent processes (v0.5.0 architecture)
34
+ const processManager = getProcessManager();
35
+ await processManager.start();
21
36
  const tokenStore = new KeychainTokenStore();
22
37
  const globalConfigStore = new FileGlobalConfigStore();
23
38
  const trackingService = new MixpanelTrackingService({ globalConfigStore, tokenStore });
24
39
  const onboardingPreferenceStore = new FileOnboardingPreferenceStore();
25
40
  // Start the interactive REPL
26
- await startRepl({
27
- onboardingPreferenceStore,
28
- projectConfigStore: new ProjectConfigStore(),
29
- tokenStore,
30
- trackingService,
31
- version: this.config.version,
32
- });
41
+ // TUI will discover Transport via TransportClientFactory (same as external CLIs)
42
+ try {
43
+ await startRepl({
44
+ onboardingPreferenceStore,
45
+ projectConfigStore: new ProjectConfigStore(),
46
+ tokenStore,
47
+ trackingService,
48
+ version: this.config.version,
49
+ });
50
+ }
51
+ finally {
52
+ await processManager.stop();
53
+ }
33
54
  }
34
55
  }
@@ -1,5 +1,5 @@
1
1
  import { Command } from '@oclif/core';
2
- import type { IQueryUseCase } from '../core/interfaces/usecase/i-query-use-case.js';
2
+ import { IQueryUseCase } from '../core/interfaces/usecase/i-query-use-case.js';
3
3
  export default class Query extends Command {
4
4
  static args: {
5
5
  query: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
@@ -7,8 +7,6 @@ export default class Query extends Command {
7
7
  static description: string;
8
8
  static examples: string[];
9
9
  static flags: {
10
- apiKey?: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions> | undefined;
11
- model?: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions> | undefined;
12
10
  verbose?: import("@oclif/core/interfaces").BooleanFlag<boolean> | undefined;
13
11
  };
14
12
  static strict: boolean;
@@ -1,6 +1,5 @@
1
1
  import { Args, Command, Flags } from '@oclif/core';
2
2
  import { isDevelopment } from '../config/environment.js';
3
- import { ProjectConfigStore } from '../infra/config/file-config-store.js';
4
3
  import { FileGlobalConfigStore } from '../infra/storage/file-global-config-store.js';
5
4
  import { KeychainTokenStore } from '../infra/storage/keychain-token-store.js';
6
5
  import { OclifTerminal } from '../infra/terminal/oclif-terminal.js';
@@ -13,7 +12,10 @@ export default class Query extends Command {
13
12
  required: true,
14
13
  }),
15
14
  };
16
- static description = `Query and retrieve information from the context tree
15
+ static description = `Query and retrieve information from the context tree (connects to running brv instance)
16
+
17
+ Requires a running brv instance. Start one with: brv start
18
+
17
19
  Good:
18
20
  - "How is user authentication implemented?"
19
21
  - "What are the API rate limits and where are they enforced?"
@@ -24,32 +26,10 @@ Bad:
24
26
  '# Ask questions about patterns, decisions, or implementation details',
25
27
  '<%= config.bin %> <%= command.id %> What are the coding standards?',
26
28
  '<%= config.bin %> <%= command.id %> How is authentication implemented?',
27
- '',
28
- ...(isDevelopment()
29
- ? [
30
- '# Query with OpenRouter (development only)',
31
- '<%= config.bin %> <%= command.id %> -k YOUR_API_KEY Show me all API endpoints',
32
- '',
33
- '# Query with custom model (development only)',
34
- '<%= config.bin %> <%= command.id %> -k YOUR_API_KEY -m anthropic/claude-sonnet-4 Explain the database schema',
35
- '',
36
- '# Query with verbose output (development only)',
37
- '<%= config.bin %> <%= command.id %> -v What testing strategies are used?',
38
- ]
39
- : []),
40
29
  ];
41
30
  static flags = {
42
31
  ...(isDevelopment()
43
32
  ? {
44
- apiKey: Flags.string({
45
- char: 'k',
46
- description: 'OpenRouter API key (use OpenRouter instead of internal gRPC backend) [Development only]',
47
- env: 'OPENROUTER_API_KEY',
48
- }),
49
- model: Flags.string({
50
- char: 'm',
51
- description: 'Model to use (default: google/gemini-2.5-pro for OpenRouter, gemini-2.5-pro for gRPC) [Development only]',
52
- }),
53
33
  verbose: Flags.boolean({
54
34
  char: 'v',
55
35
  default: false,
@@ -62,21 +42,14 @@ Bad:
62
42
  createUseCase() {
63
43
  const tokenStore = new KeychainTokenStore();
64
44
  const globalConfigStore = new FileGlobalConfigStore();
45
+ const trackingService = new MixpanelTrackingService({ globalConfigStore, tokenStore });
65
46
  return new QueryUseCase({
66
- projectConfigStore: new ProjectConfigStore(),
67
47
  terminal: new OclifTerminal(this),
68
- tokenStore,
69
- trackingService: new MixpanelTrackingService({ globalConfigStore, tokenStore }),
48
+ trackingService,
70
49
  });
71
50
  }
72
51
  async run() {
73
- const { argv, flags } = await this.parse(Query);
74
- const queryTerms = argv.join(' ');
75
- await this.createUseCase().run({
76
- apiKey: flags.apiKey,
77
- model: flags.model,
78
- query: queryTerms,
79
- verbose: flags.verbose ?? false,
80
- });
52
+ const { args, flags } = await this.parse(Query);
53
+ await this.createUseCase().run({ query: args.query, verbose: flags.verbose });
81
54
  }
82
55
  }
@@ -9,4 +9,9 @@ export interface DomainConfig {
9
9
  /**
10
10
  * Predefined domains that will be scaffolded during project initialization.
11
11
  */
12
+ export declare const DEFAULT_CONTEXT_TREE_DOMAINS: DomainConfig[];
13
+ /**
14
+ * Alias for backward compatibility.
15
+ * @deprecated Use DEFAULT_CONTEXT_TREE_DOMAINS instead
16
+ */
12
17
  export declare const CONTEXT_TREE_DOMAINS: DomainConfig[];
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Predefined domains that will be scaffolded during project initialization.
3
3
  */
4
- export const CONTEXT_TREE_DOMAINS = [
4
+ export const DEFAULT_CONTEXT_TREE_DOMAINS = [
5
5
  {
6
6
  description: 'Ensure all code follows style guidelines and quality standards',
7
7
  name: 'code_style',
@@ -27,3 +27,8 @@ export const CONTEXT_TREE_DOMAINS = [
27
27
  name: 'bug_fixes',
28
28
  },
29
29
  ];
30
+ /**
31
+ * Alias for backward compatibility.
32
+ * @deprecated Use DEFAULT_CONTEXT_TREE_DOMAINS instead
33
+ */
34
+ export const CONTEXT_TREE_DOMAINS = DEFAULT_CONTEXT_TREE_DOMAINS;
@@ -23,17 +23,17 @@ export const ENV_CONFIG = {
23
23
  webAppUrl: 'https://dev-beta-app.byterover.dev',
24
24
  },
25
25
  production: {
26
- apiBaseUrl: 'https://beta-iam.byterover.dev/api/v1',
27
- authorizationUrl: 'https://beta-iam.byterover.dev/api/v1/oidc/authorize',
28
- clientId: 'byterover-cli',
29
- cogitApiBaseUrl: 'https://beta-cgit.byterover.dev/api/v1',
30
- issuerUrl: 'https://beta-iam.byterover.dev/api/v1/oidc',
31
- llmApiBaseUrl: 'https://beta-llm.byterover.dev',
26
+ apiBaseUrl: 'https://iam.byterover.dev/api/v1',
27
+ authorizationUrl: 'https://iam.byterover.dev/api/v1/oidc/authorize',
28
+ clientId: 'byterover-cli-client',
29
+ cogitApiBaseUrl: 'https://v3-cgit.byterover.dev',
30
+ issuerUrl: 'https://iam.byterover.dev/api/v1/oidc',
31
+ llmApiBaseUrl: 'https://llm.byterover.dev',
32
32
  memoraApiBaseUrl: 'https://beta-memora-retrieve.byterover.dev/api/v3',
33
- mixpanelToken: '4d1198b346d2d6ac75f2e77905cc65ac',
33
+ mixpanelToken: 'fac9051df8242c885a9e0eaf60f78b10',
34
34
  scopes: ['read', 'write'],
35
- tokenUrl: 'https://beta-iam.byterover.dev/api/v1/oidc/token',
36
- webAppUrl: 'https://beta-app.byterover.dev',
35
+ tokenUrl: 'https://iam.byterover.dev/api/v1/oidc/token',
36
+ webAppUrl: 'https://app.byterover.dev',
37
37
  },
38
38
  };
39
39
  /**
@@ -1,6 +1,7 @@
1
1
  export declare const BRV_DIR = ".brv";
2
2
  export declare const BLOBS_DIR = "blobs";
3
3
  export declare const PROJECT_CONFIG_FILE = "config.json";
4
+ export declare const INSTANCE_FILE = "instance.json";
4
5
  export declare const BRV_CONFIG_VERSION = "0.0.1";
5
6
  export declare const GLOBAL_CONFIG_DIR = "brv";
6
7
  export declare const GLOBAL_CONFIG_FILE = "config.json";
@@ -9,6 +10,8 @@ export declare const ACE_DIR = "ace";
9
10
  export declare const PROJECT = "byterover";
10
11
  export declare const CONTEXT_TREE_DIR = "context-tree";
11
12
  export declare const CONTEXT_FILE = "context.md";
13
+ export declare const CONTEXT_FILE_EXTENSION = ".md";
14
+ export declare const README_FILE = "README.md";
12
15
  export declare const SNAPSHOT_FILE = ".snapshot.json";
13
16
  /**
14
17
  * Default ByteRover branch name for memory storage.
@@ -20,3 +23,14 @@ export declare const DEFAULT_BRANCH = "main";
20
23
  * Used in CLI help output to direct users to online documentation.
21
24
  */
22
25
  export declare const DOCS_URL = "https://docs.byterover.dev/beta";
26
+ export declare const TRANSPORT_HOST = "127.0.0.1";
27
+ export declare const TRANSPORT_REQUEST_TIMEOUT_MS = 10000;
28
+ export declare const TRANSPORT_ROOM_TIMEOUT_MS = 2000;
29
+ export declare const TRANSPORT_CONNECT_TIMEOUT_MS = 3000;
30
+ export declare const TRANSPORT_RECONNECTION_DELAY_MS = 50;
31
+ export declare const TRANSPORT_RECONNECTION_DELAY_MAX_MS = 1000;
32
+ export declare const TRANSPORT_RECONNECTION_ATTEMPTS = 30;
33
+ export declare const TRANSPORT_PING_INTERVAL_MS = 5000;
34
+ export declare const TRANSPORT_PING_TIMEOUT_MS = 10000;
35
+ export declare const TRANSPORT_DEFAULT_TRANSPORTS: ('polling' | 'websocket')[];
36
+ export declare const DEFAULT_LLM_MODEL = "gemini-2.5-pro";
package/dist/constants.js CHANGED
@@ -1,6 +1,7 @@
1
1
  export const BRV_DIR = '.brv';
2
2
  export const BLOBS_DIR = 'blobs';
3
3
  export const PROJECT_CONFIG_FILE = 'config.json';
4
+ export const INSTANCE_FILE = 'instance.json';
4
5
  export const BRV_CONFIG_VERSION = '0.0.1';
5
6
  // Global config constants (user-level, stored in XDG config directory)
6
7
  export const GLOBAL_CONFIG_DIR = 'brv';
@@ -12,6 +13,8 @@ export const PROJECT = 'byterover';
12
13
  // Context Tree directory structure constants
13
14
  export const CONTEXT_TREE_DIR = 'context-tree';
14
15
  export const CONTEXT_FILE = 'context.md';
16
+ export const CONTEXT_FILE_EXTENSION = '.md';
17
+ export const README_FILE = 'README.md';
15
18
  export const SNAPSHOT_FILE = '.snapshot.json';
16
19
  /**
17
20
  * Default ByteRover branch name for memory storage.
@@ -23,3 +26,18 @@ export const DEFAULT_BRANCH = 'main';
23
26
  * Used in CLI help output to direct users to online documentation.
24
27
  */
25
28
  export const DOCS_URL = 'https://docs.byterover.dev/beta';
29
+ // Transport layer constants (optimized for localhost real-time)
30
+ export const TRANSPORT_HOST = '127.0.0.1'; // Use hostname for better sandbox compatibility
31
+ export const TRANSPORT_REQUEST_TIMEOUT_MS = 10_000; // 10s - most operations complete quickly
32
+ export const TRANSPORT_ROOM_TIMEOUT_MS = 2000; // 2s - room ops are instant on localhost
33
+ export const TRANSPORT_CONNECT_TIMEOUT_MS = 3000; // 3s - 127.0.0.1 connects in <10ms
34
+ export const TRANSPORT_RECONNECTION_DELAY_MS = 50; // 50ms - ultra aggressive start
35
+ export const TRANSPORT_RECONNECTION_DELAY_MAX_MS = 1000; // 1s cap - fail fast, retry fast
36
+ export const TRANSPORT_RECONNECTION_ATTEMPTS = 30; // More attempts with faster retry
37
+ export const TRANSPORT_PING_INTERVAL_MS = 5000; // 5s ping - reasonable for local communication
38
+ export const TRANSPORT_PING_TIMEOUT_MS = 10_000; // 10s timeout - avoid false disconnects during GC/load
39
+ // WebSocket-only transport to avoid HTTP polling issues in sandboxed environments (Cursor, etc.)
40
+ // HTTP polling may be blocked by IDE sandboxes causing "xhr poll error"
41
+ export const TRANSPORT_DEFAULT_TRANSPORTS = ['websocket'];
42
+ // LLM Model defaults
43
+ export const DEFAULT_LLM_MODEL = 'gemini-2.5-pro';
@@ -0,0 +1,199 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Permission values for agent operations.
4
+ * - allow: Operation is permitted without asking
5
+ * - deny: Operation is blocked
6
+ * - ask: User must approve the operation
7
+ */
8
+ export declare const PermissionValue: z.ZodEnum<["allow", "deny", "ask"]>;
9
+ export type PermissionValue = z.infer<typeof PermissionValue>;
10
+ /**
11
+ * Agent mode determines how the agent can be used.
12
+ * - primary: Entry point agent (e.g., plan, cipher)
13
+ * - subagent: Can only be invoked by primary agents via TaskTool
14
+ * - all: Can be used as both primary and subagent
15
+ */
16
+ export declare const AgentMode: z.ZodEnum<["primary", "subagent", "all"]>;
17
+ export type AgentMode = z.infer<typeof AgentMode>;
18
+ /**
19
+ * Permission configuration for an agent.
20
+ * Controls what operations the agent is allowed to perform.
21
+ */
22
+ export declare const AgentPermissionSchema: z.ZodObject<{
23
+ /**
24
+ * Permission map for bash commands.
25
+ * Keys are command patterns (supports wildcards like 'git*', 'ls*').
26
+ * Value '*' applies to all commands not matched by other patterns.
27
+ * @default { '*': 'allow' }
28
+ */
29
+ bash: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodEnum<["allow", "deny", "ask"]>>>;
30
+ /**
31
+ * Permission for file editing operations (edit_file, write_file).
32
+ * @default 'allow'
33
+ */
34
+ edit: z.ZodDefault<z.ZodEnum<["allow", "deny", "ask"]>>;
35
+ }, "strip", z.ZodTypeAny, {
36
+ edit: "allow" | "deny" | "ask";
37
+ bash: Record<string, "allow" | "deny" | "ask">;
38
+ }, {
39
+ edit?: "allow" | "deny" | "ask" | undefined;
40
+ bash?: Record<string, "allow" | "deny" | "ask"> | undefined;
41
+ }>;
42
+ export type AgentPermission = z.infer<typeof AgentPermissionSchema>;
43
+ /**
44
+ * Agent information schema.
45
+ * Defines the configuration for a Cipher agent (modeled after OpenCode's Agent.Info).
46
+ */
47
+ export declare const AgentInfoSchema: z.ZodObject<{
48
+ /**
49
+ * Optional color for UI display (hex code like #RRGGBB).
50
+ */
51
+ color: z.ZodOptional<z.ZodString>;
52
+ /**
53
+ * Human-readable description of when to use this agent.
54
+ * Displayed to LLM when selecting subagents via TaskTool.
55
+ */
56
+ description: z.ZodOptional<z.ZodString>;
57
+ /**
58
+ * Whether this agent is hidden from user selection.
59
+ * Hidden agents can still be invoked programmatically.
60
+ * @default false
61
+ */
62
+ hidden: z.ZodDefault<z.ZodBoolean>;
63
+ /**
64
+ * Maximum number of LLM iterations for this agent.
65
+ * Overrides the default maxIterations from config.
66
+ */
67
+ maxIterations: z.ZodOptional<z.ZodNumber>;
68
+ /**
69
+ * Agent mode: primary, subagent, or all.
70
+ * - primary: Direct entry point for users
71
+ * - subagent: Invoked via TaskTool from primary agents
72
+ * - all: Can be used in both contexts
73
+ */
74
+ mode: z.ZodEnum<["primary", "subagent", "all"]>;
75
+ /**
76
+ * Optional model override for this agent.
77
+ * If not specified, uses the default model from agent config.
78
+ */
79
+ model: z.ZodOptional<z.ZodObject<{
80
+ modelId: z.ZodString;
81
+ providerId: z.ZodOptional<z.ZodString>;
82
+ }, "strip", z.ZodTypeAny, {
83
+ modelId: string;
84
+ providerId?: string | undefined;
85
+ }, {
86
+ modelId: string;
87
+ providerId?: string | undefined;
88
+ }>>;
89
+ /**
90
+ * Unique identifier for the agent.
91
+ * Used to reference the agent in TaskTool and registry.
92
+ */
93
+ name: z.ZodString;
94
+ /**
95
+ * Whether this is a native (built-in) agent.
96
+ * Native agents are defined in code, not config files.
97
+ * @default true
98
+ */
99
+ native: z.ZodDefault<z.ZodBoolean>;
100
+ /**
101
+ * Permission configuration for this agent.
102
+ * Controls file editing and bash command access.
103
+ */
104
+ permission: z.ZodDefault<z.ZodObject<{
105
+ /**
106
+ * Permission map for bash commands.
107
+ * Keys are command patterns (supports wildcards like 'git*', 'ls*').
108
+ * Value '*' applies to all commands not matched by other patterns.
109
+ * @default { '*': 'allow' }
110
+ */
111
+ bash: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodEnum<["allow", "deny", "ask"]>>>;
112
+ /**
113
+ * Permission for file editing operations (edit_file, write_file).
114
+ * @default 'allow'
115
+ */
116
+ edit: z.ZodDefault<z.ZodEnum<["allow", "deny", "ask"]>>;
117
+ }, "strip", z.ZodTypeAny, {
118
+ edit: "allow" | "deny" | "ask";
119
+ bash: Record<string, "allow" | "deny" | "ask">;
120
+ }, {
121
+ edit?: "allow" | "deny" | "ask" | undefined;
122
+ bash?: Record<string, "allow" | "deny" | "ask"> | undefined;
123
+ }>>;
124
+ /**
125
+ * Inline system prompt for this agent.
126
+ * Used when promptFile is not specified.
127
+ */
128
+ prompt: z.ZodOptional<z.ZodString>;
129
+ /**
130
+ * Reference to a YAML prompt file in src/resources/prompts/.
131
+ * The file content will be used as the agent's system prompt.
132
+ * Takes precedence over inline `prompt` if both are specified.
133
+ */
134
+ promptFile: z.ZodOptional<z.ZodString>;
135
+ /**
136
+ * LLM temperature for this agent.
137
+ * Controls randomness/creativity of responses.
138
+ */
139
+ temperature: z.ZodOptional<z.ZodNumber>;
140
+ /**
141
+ * Tool enable/disable configuration.
142
+ * Keys are tool names, values are boolean (true = enabled, false = disabled).
143
+ * Supports wildcard '*' for all tools.
144
+ * Tools not listed inherit from parent/default configuration.
145
+ */
146
+ tools: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodBoolean>>;
147
+ }, "strip", z.ZodTypeAny, {
148
+ name: string;
149
+ hidden: boolean;
150
+ mode: "primary" | "subagent" | "all";
151
+ native: boolean;
152
+ permission: {
153
+ edit: "allow" | "deny" | "ask";
154
+ bash: Record<string, "allow" | "deny" | "ask">;
155
+ };
156
+ tools: Record<string, boolean>;
157
+ prompt?: string | undefined;
158
+ maxIterations?: number | undefined;
159
+ model?: {
160
+ modelId: string;
161
+ providerId?: string | undefined;
162
+ } | undefined;
163
+ description?: string | undefined;
164
+ color?: string | undefined;
165
+ temperature?: number | undefined;
166
+ promptFile?: string | undefined;
167
+ }, {
168
+ name: string;
169
+ mode: "primary" | "subagent" | "all";
170
+ prompt?: string | undefined;
171
+ maxIterations?: number | undefined;
172
+ model?: {
173
+ modelId: string;
174
+ providerId?: string | undefined;
175
+ } | undefined;
176
+ description?: string | undefined;
177
+ hidden?: boolean | undefined;
178
+ color?: string | undefined;
179
+ temperature?: number | undefined;
180
+ native?: boolean | undefined;
181
+ permission?: {
182
+ edit?: "allow" | "deny" | "ask" | undefined;
183
+ bash?: Record<string, "allow" | "deny" | "ask"> | undefined;
184
+ } | undefined;
185
+ promptFile?: string | undefined;
186
+ tools?: Record<string, boolean> | undefined;
187
+ }>;
188
+ /**
189
+ * Type for agent information.
190
+ */
191
+ export type AgentInfo = z.infer<typeof AgentInfoSchema>;
192
+ /**
193
+ * Default permission configuration for agents.
194
+ */
195
+ export declare const DEFAULT_AGENT_PERMISSION: AgentPermission;
196
+ /**
197
+ * Read-only permission configuration (for planning agents).
198
+ */
199
+ export declare const READONLY_AGENT_PERMISSION: AgentPermission;