byterover-cli 0.2.1 → 0.3.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 (490) hide show
  1. package/README.md +56 -56
  2. package/bin/dev.js +1 -1
  3. package/dist/commands/cipher-agent/run.d.ts +111 -0
  4. package/dist/commands/cipher-agent/run.js +493 -0
  5. package/dist/commands/cipher-agent/set-prompt.d.ts +14 -0
  6. package/dist/commands/cipher-agent/set-prompt.js +53 -0
  7. package/dist/commands/cipher-agent/show-prompt.d.ts +11 -0
  8. package/dist/commands/cipher-agent/show-prompt.js +48 -0
  9. package/dist/commands/clear.d.ts +6 -0
  10. package/dist/commands/clear.js +36 -15
  11. package/dist/commands/curate.d.ts +74 -0
  12. package/dist/commands/curate.js +396 -0
  13. package/dist/commands/foo.d.ts +12 -0
  14. package/dist/commands/foo.js +61 -0
  15. package/dist/commands/gen-rules.d.ts +3 -0
  16. package/dist/commands/gen-rules.js +39 -20
  17. package/dist/commands/init.d.ts +48 -3
  18. package/dist/commands/init.js +242 -70
  19. package/dist/commands/login.js +9 -4
  20. package/dist/commands/pull.d.ts +33 -0
  21. package/dist/commands/pull.js +115 -0
  22. package/dist/commands/push.d.ts +13 -13
  23. package/dist/commands/push.js +81 -101
  24. package/dist/commands/query.d.ts +63 -0
  25. package/dist/commands/query.js +349 -0
  26. package/dist/commands/space/list.d.ts +5 -2
  27. package/dist/commands/space/list.js +60 -56
  28. package/dist/commands/space/switch.d.ts +16 -0
  29. package/dist/commands/space/switch.js +102 -53
  30. package/dist/commands/status.d.ts +5 -2
  31. package/dist/commands/status.js +43 -33
  32. package/dist/commands/watch.d.ts +23 -0
  33. package/dist/commands/watch.js +171 -0
  34. package/dist/config/auth.config.js +14 -2
  35. package/dist/config/context-tree-domains.d.ts +12 -0
  36. package/dist/config/context-tree-domains.js +29 -0
  37. package/dist/config/environment.d.ts +6 -0
  38. package/dist/config/environment.js +9 -2
  39. package/dist/constants.d.ts +5 -0
  40. package/dist/constants.js +6 -0
  41. package/dist/core/domain/cipher/agent/agent-state-machine.d.ts +128 -0
  42. package/dist/core/domain/cipher/agent/agent-state-machine.js +183 -0
  43. package/dist/core/domain/cipher/agent/agent-state.d.ts +77 -0
  44. package/dist/core/domain/cipher/agent/agent-state.js +59 -0
  45. package/dist/core/domain/cipher/agent/index.d.ts +7 -0
  46. package/dist/core/domain/cipher/agent/index.js +7 -0
  47. package/dist/core/domain/cipher/agent-events/index.d.ts +8 -0
  48. package/dist/core/domain/cipher/agent-events/index.js +7 -0
  49. package/dist/core/domain/cipher/agent-events/types.d.ts +419 -0
  50. package/dist/core/domain/cipher/agent-events/types.js +42 -0
  51. package/dist/core/domain/cipher/blob/types.d.ts +108 -0
  52. package/dist/core/domain/cipher/errors/blob-error.d.ts +36 -0
  53. package/dist/core/domain/cipher/errors/blob-error.js +68 -0
  54. package/dist/core/domain/cipher/errors/file-system-error.d.ts +211 -0
  55. package/dist/core/domain/cipher/errors/file-system-error.js +291 -0
  56. package/dist/core/domain/cipher/errors/llm-error.d.ts +120 -0
  57. package/dist/core/domain/cipher/errors/llm-error.js +161 -0
  58. package/dist/core/domain/cipher/errors/memory-error.d.ts +35 -0
  59. package/dist/core/domain/cipher/errors/memory-error.js +62 -0
  60. package/dist/core/domain/cipher/errors/process-error-code.d.ts +97 -0
  61. package/dist/core/domain/cipher/errors/process-error-code.js +98 -0
  62. package/dist/core/domain/cipher/errors/process-error.d.ts +135 -0
  63. package/dist/core/domain/cipher/errors/process-error.js +173 -0
  64. package/dist/core/domain/cipher/errors/session-error.d.ts +56 -0
  65. package/dist/core/domain/cipher/errors/session-error.js +74 -0
  66. package/dist/core/domain/cipher/errors/tool-error.d.ts +57 -0
  67. package/dist/core/domain/cipher/errors/tool-error.js +81 -0
  68. package/dist/core/domain/cipher/file-system/types.d.ts +203 -0
  69. package/dist/core/domain/cipher/memory/types.d.ts +102 -0
  70. package/dist/core/domain/cipher/memory/types.js +4 -0
  71. package/dist/core/domain/cipher/parsed-interaction.d.ts +47 -0
  72. package/dist/core/domain/cipher/parsed-interaction.js +25 -0
  73. package/dist/core/domain/cipher/process/types.d.ts +286 -0
  74. package/dist/core/domain/cipher/session/types.d.ts +54 -0
  75. package/dist/core/domain/cipher/storage/history-types.d.ts +38 -0
  76. package/dist/core/domain/cipher/system-prompt/types.d.ts +131 -0
  77. package/dist/core/domain/cipher/todos/index.d.ts +4 -0
  78. package/dist/core/domain/cipher/todos/index.js +4 -0
  79. package/dist/core/domain/cipher/todos/types.d.ts +57 -0
  80. package/dist/core/domain/cipher/todos/types.js +5 -0
  81. package/dist/core/domain/cipher/tools/constants.d.ts +28 -0
  82. package/dist/core/domain/cipher/tools/constants.js +24 -0
  83. package/dist/core/domain/cipher/tools/tool-error.d.ts +183 -0
  84. package/dist/core/domain/cipher/tools/tool-error.js +246 -0
  85. package/dist/core/domain/cipher/tools/types.d.ts +145 -0
  86. package/dist/core/domain/entities/brv-config.d.ts +42 -6
  87. package/dist/core/domain/entities/brv-config.js +115 -17
  88. package/dist/core/domain/entities/cogit-push-context.d.ts +38 -0
  89. package/dist/core/domain/entities/cogit-push-context.js +91 -0
  90. package/dist/core/domain/entities/cogit-push-response.d.ts +20 -0
  91. package/dist/core/domain/entities/cogit-push-response.js +31 -0
  92. package/dist/core/domain/entities/cogit-snapshot-author.d.ts +24 -0
  93. package/dist/core/domain/entities/cogit-snapshot-author.js +39 -0
  94. package/dist/core/domain/entities/cogit-snapshot-file.d.ts +34 -0
  95. package/dist/core/domain/entities/cogit-snapshot-file.js +59 -0
  96. package/dist/core/domain/entities/cogit-snapshot.d.ts +31 -0
  97. package/dist/core/domain/entities/cogit-snapshot.js +58 -0
  98. package/dist/core/domain/entities/context-tree-index.d.ts +26 -0
  99. package/dist/core/domain/entities/context-tree-index.js +27 -0
  100. package/dist/core/domain/entities/context-tree-snapshot.d.ts +56 -0
  101. package/dist/core/domain/entities/context-tree-snapshot.js +83 -0
  102. package/dist/core/domain/entities/event.d.ts +1 -1
  103. package/dist/core/domain/entities/event.js +3 -1
  104. package/dist/core/domain/entities/parser.d.ts +567 -0
  105. package/dist/core/domain/entities/parser.js +10 -0
  106. package/dist/core/domain/entities/playbook.d.ts +2 -23
  107. package/dist/core/domain/entities/playbook.js +2 -70
  108. package/dist/core/domain/errors/brv-config-version-error.d.ts +16 -0
  109. package/dist/core/domain/errors/brv-config-version-error.js +21 -0
  110. package/dist/core/domain/knowledge/directory-manager.d.ts +80 -0
  111. package/dist/core/domain/knowledge/directory-manager.js +145 -0
  112. package/dist/core/domain/knowledge/markdown-writer.d.ts +18 -0
  113. package/dist/core/domain/knowledge/markdown-writer.js +18 -0
  114. package/dist/core/domain/knowledge/relation-parser.d.ts +90 -0
  115. package/dist/core/domain/knowledge/relation-parser.js +131 -0
  116. package/dist/core/interfaces/cipher/cipher-services.d.ts +71 -0
  117. package/dist/core/interfaces/cipher/cipher-services.js +1 -0
  118. package/dist/core/interfaces/cipher/i-blob-storage.d.ts +78 -0
  119. package/dist/core/interfaces/cipher/i-blob-storage.js +1 -0
  120. package/dist/core/interfaces/cipher/i-chat-session.d.ts +62 -0
  121. package/dist/core/interfaces/cipher/i-chat-session.js +1 -0
  122. package/dist/core/interfaces/cipher/i-cipher-agent.d.ts +88 -0
  123. package/dist/core/interfaces/cipher/i-cipher-agent.js +1 -0
  124. package/dist/core/interfaces/cipher/i-coding-agent-log-parser.d.ts +20 -0
  125. package/dist/core/interfaces/cipher/i-coding-agent-log-parser.js +1 -0
  126. package/dist/core/interfaces/cipher/i-coding-agent-log-watcher.d.ts +31 -0
  127. package/dist/core/interfaces/cipher/i-coding-agent-log-watcher.js +1 -0
  128. package/dist/core/interfaces/cipher/i-content-generator.d.ts +120 -0
  129. package/dist/core/interfaces/cipher/i-content-generator.js +12 -0
  130. package/dist/core/interfaces/cipher/i-event-emitter.d.ts +76 -0
  131. package/dist/core/interfaces/cipher/i-event-emitter.js +1 -0
  132. package/dist/core/interfaces/cipher/i-file-system.d.ts +68 -0
  133. package/dist/core/interfaces/cipher/i-file-system.js +1 -0
  134. package/dist/core/interfaces/cipher/i-history-storage.d.ts +53 -0
  135. package/dist/core/interfaces/cipher/i-history-storage.js +1 -0
  136. package/dist/core/interfaces/cipher/i-llm-provider.d.ts +14 -0
  137. package/dist/core/interfaces/cipher/i-llm-provider.js +1 -0
  138. package/dist/core/interfaces/cipher/i-llm-service.d.ts +62 -0
  139. package/dist/core/interfaces/cipher/i-llm-service.js +1 -0
  140. package/dist/core/interfaces/cipher/i-logger.d.ts +78 -0
  141. package/dist/core/interfaces/cipher/i-logger.js +28 -0
  142. package/dist/core/interfaces/cipher/i-message-formatter.d.ts +44 -0
  143. package/dist/core/interfaces/cipher/i-message-formatter.js +1 -0
  144. package/dist/core/interfaces/cipher/i-policy-engine.d.ts +102 -0
  145. package/dist/core/interfaces/cipher/i-policy-engine.js +9 -0
  146. package/dist/core/interfaces/cipher/i-process-service.d.ts +65 -0
  147. package/dist/core/interfaces/cipher/i-process-service.js +1 -0
  148. package/dist/core/interfaces/cipher/i-system-prompt-contributor.d.ts +25 -0
  149. package/dist/core/interfaces/cipher/i-system-prompt-contributor.js +1 -0
  150. package/dist/core/interfaces/cipher/i-tokenizer.d.ts +15 -0
  151. package/dist/core/interfaces/cipher/i-tokenizer.js +1 -0
  152. package/dist/core/interfaces/cipher/i-tool-provider.d.ts +64 -0
  153. package/dist/core/interfaces/cipher/i-tool-provider.js +1 -0
  154. package/dist/core/interfaces/cipher/i-tool-scheduler.d.ts +103 -0
  155. package/dist/core/interfaces/cipher/i-tool-scheduler.js +11 -0
  156. package/dist/core/interfaces/cipher/llm-types.d.ts +46 -0
  157. package/dist/core/interfaces/cipher/llm-types.js +5 -0
  158. package/dist/core/interfaces/cipher/message-types.d.ts +118 -0
  159. package/dist/core/interfaces/cipher/message-types.js +5 -0
  160. package/dist/core/interfaces/cipher/tokenizer-types.d.ts +11 -0
  161. package/dist/core/interfaces/cipher/tokenizer-types.js +14 -0
  162. package/dist/core/interfaces/i-cogit-pull-service.d.ts +24 -0
  163. package/dist/core/interfaces/i-cogit-pull-service.js +1 -0
  164. package/dist/core/interfaces/i-cogit-push-service.d.ts +27 -0
  165. package/dist/core/interfaces/i-cogit-push-service.js +1 -0
  166. package/dist/core/interfaces/i-context-file-reader.d.ts +32 -0
  167. package/dist/core/interfaces/i-context-file-reader.js +1 -0
  168. package/dist/core/interfaces/i-context-tree-service.d.ts +21 -0
  169. package/dist/core/interfaces/i-context-tree-service.js +1 -0
  170. package/dist/core/interfaces/i-context-tree-snapshot-service.d.ts +36 -0
  171. package/dist/core/interfaces/i-context-tree-snapshot-service.js +1 -0
  172. package/dist/core/interfaces/i-context-tree-writer-service.d.ts +32 -0
  173. package/dist/core/interfaces/i-context-tree-writer-service.js +1 -0
  174. package/dist/core/interfaces/i-file-watcher-service.d.ts +41 -0
  175. package/dist/core/interfaces/i-file-watcher-service.js +1 -0
  176. package/dist/core/interfaces/parser/i-clean-parser-service.d.ts +18 -0
  177. package/dist/core/interfaces/parser/i-clean-parser-service.js +1 -0
  178. package/dist/core/interfaces/parser/i-raw-parser-service.d.ts +17 -0
  179. package/dist/core/interfaces/parser/i-raw-parser-service.js +1 -0
  180. package/dist/core/interfaces/parser/i-session-normalizer.d.ts +56 -0
  181. package/dist/core/interfaces/parser/i-session-normalizer.js +1 -0
  182. package/dist/hooks/command_not_found/handle-invalid-commands.d.ts +7 -0
  183. package/dist/hooks/command_not_found/handle-invalid-commands.js +32 -0
  184. package/dist/hooks/error/clean-errors.d.ts +7 -0
  185. package/dist/hooks/error/clean-errors.js +50 -0
  186. package/dist/hooks/init/welcome.js +72 -1
  187. package/dist/hooks/prerun/validate-brv-config-version.d.ts +28 -0
  188. package/dist/hooks/prerun/validate-brv-config-version.js +43 -0
  189. package/dist/infra/cipher/agent-service-factory.d.ts +86 -0
  190. package/dist/infra/cipher/agent-service-factory.js +212 -0
  191. package/dist/infra/cipher/blob/blob-storage-factory.d.ts +13 -0
  192. package/dist/infra/cipher/blob/blob-storage-factory.js +14 -0
  193. package/dist/infra/cipher/blob/index.d.ts +10 -0
  194. package/dist/infra/cipher/blob/index.js +12 -0
  195. package/dist/infra/cipher/blob/migrations.d.ts +63 -0
  196. package/dist/infra/cipher/blob/migrations.js +148 -0
  197. package/dist/infra/cipher/blob/sqlite-blob-storage.d.ts +82 -0
  198. package/dist/infra/cipher/blob/sqlite-blob-storage.js +307 -0
  199. package/dist/infra/cipher/cipher-agent-state-manager.d.ts +63 -0
  200. package/dist/infra/cipher/cipher-agent-state-manager.js +108 -0
  201. package/dist/infra/cipher/cipher-agent.d.ts +182 -0
  202. package/dist/infra/cipher/cipher-agent.js +317 -0
  203. package/dist/infra/cipher/command-parser.d.ts +23 -0
  204. package/dist/infra/cipher/command-parser.js +85 -0
  205. package/dist/infra/cipher/display/todo-display.d.ts +23 -0
  206. package/dist/infra/cipher/display/todo-display.js +129 -0
  207. package/dist/infra/cipher/events/event-emitter.d.ts +137 -0
  208. package/dist/infra/cipher/events/event-emitter.js +158 -0
  209. package/dist/infra/cipher/exit-codes.d.ts +44 -0
  210. package/dist/infra/cipher/exit-codes.js +58 -0
  211. package/dist/infra/cipher/file-system/file-system-service.d.ts +105 -0
  212. package/dist/infra/cipher/file-system/file-system-service.js +641 -0
  213. package/dist/infra/cipher/file-system/gitignore-filter.d.ts +77 -0
  214. package/dist/infra/cipher/file-system/gitignore-filter.js +120 -0
  215. package/dist/infra/cipher/file-system/glob-utils.d.ts +60 -0
  216. package/dist/infra/cipher/file-system/glob-utils.js +120 -0
  217. package/dist/infra/cipher/file-system/path-validator.d.ts +69 -0
  218. package/dist/infra/cipher/file-system/path-validator.js +184 -0
  219. package/dist/infra/cipher/grpc/internal-llm-grpc-service.d.ts +149 -0
  220. package/dist/infra/cipher/grpc/internal-llm-grpc-service.js +364 -0
  221. package/dist/infra/cipher/grpc/internal-llm-grpc.proto +94 -0
  222. package/dist/infra/cipher/interactive-commands.d.ts +16 -0
  223. package/dist/infra/cipher/interactive-commands.js +198 -0
  224. package/dist/infra/cipher/interactive-loop.d.ts +24 -0
  225. package/dist/infra/cipher/interactive-loop.js +352 -0
  226. package/dist/infra/cipher/llm/context/async-mutex.d.ts +59 -0
  227. package/dist/infra/cipher/llm/context/async-mutex.js +92 -0
  228. package/dist/infra/cipher/llm/context/compression/index.d.ts +6 -0
  229. package/dist/infra/cipher/llm/context/compression/index.js +5 -0
  230. package/dist/infra/cipher/llm/context/compression/middle-removal.d.ts +40 -0
  231. package/dist/infra/cipher/llm/context/compression/middle-removal.js +76 -0
  232. package/dist/infra/cipher/llm/context/compression/oldest-removal.d.ts +38 -0
  233. package/dist/infra/cipher/llm/context/compression/oldest-removal.js +53 -0
  234. package/dist/infra/cipher/llm/context/compression/types.d.ts +36 -0
  235. package/dist/infra/cipher/llm/context/compression/types.js +1 -0
  236. package/dist/infra/cipher/llm/context/context-manager.d.ts +234 -0
  237. package/dist/infra/cipher/llm/context/context-manager.js +419 -0
  238. package/dist/infra/cipher/llm/context/index.d.ts +2 -0
  239. package/dist/infra/cipher/llm/context/index.js +2 -0
  240. package/dist/infra/cipher/llm/context/loop-detector.d.ts +125 -0
  241. package/dist/infra/cipher/llm/context/loop-detector.js +194 -0
  242. package/dist/infra/cipher/llm/context/utils.d.ts +17 -0
  243. package/dist/infra/cipher/llm/context/utils.js +89 -0
  244. package/dist/infra/cipher/llm/formatters/claude-formatter.d.ts +54 -0
  245. package/dist/infra/cipher/llm/formatters/claude-formatter.js +182 -0
  246. package/dist/infra/cipher/llm/formatters/gemini-formatter.d.ts +69 -0
  247. package/dist/infra/cipher/llm/formatters/gemini-formatter.js +253 -0
  248. package/dist/infra/cipher/llm/formatters/openrouter-formatter.d.ts +47 -0
  249. package/dist/infra/cipher/llm/formatters/openrouter-formatter.js +238 -0
  250. package/dist/infra/cipher/llm/generators/byterover-content-generator.d.ts +92 -0
  251. package/dist/infra/cipher/llm/generators/byterover-content-generator.js +211 -0
  252. package/dist/infra/cipher/llm/generators/index.d.ts +13 -0
  253. package/dist/infra/cipher/llm/generators/index.js +13 -0
  254. package/dist/infra/cipher/llm/generators/logging-content-generator.d.ts +104 -0
  255. package/dist/infra/cipher/llm/generators/logging-content-generator.js +182 -0
  256. package/dist/infra/cipher/llm/generators/openrouter-content-generator.d.ts +93 -0
  257. package/dist/infra/cipher/llm/generators/openrouter-content-generator.js +254 -0
  258. package/dist/infra/cipher/llm/generators/retryable-content-generator.d.ts +90 -0
  259. package/dist/infra/cipher/llm/generators/retryable-content-generator.js +157 -0
  260. package/dist/infra/cipher/llm/index.d.ts +9 -0
  261. package/dist/infra/cipher/llm/index.js +13 -0
  262. package/dist/infra/cipher/llm/internal-llm-service.d.ts +308 -0
  263. package/dist/infra/cipher/llm/internal-llm-service.js +724 -0
  264. package/dist/infra/cipher/llm/openrouter-llm-service.d.ts +183 -0
  265. package/dist/infra/cipher/llm/openrouter-llm-service.js +386 -0
  266. package/dist/infra/cipher/llm/response-validator.d.ts +89 -0
  267. package/dist/infra/cipher/llm/response-validator.js +157 -0
  268. package/dist/infra/cipher/llm/retry/index.d.ts +10 -0
  269. package/dist/infra/cipher/llm/retry/index.js +10 -0
  270. package/dist/infra/cipher/llm/retry/retry-policy.d.ts +74 -0
  271. package/dist/infra/cipher/llm/retry/retry-policy.js +146 -0
  272. package/dist/infra/cipher/llm/retry/retry-with-backoff.d.ts +113 -0
  273. package/dist/infra/cipher/llm/retry/retry-with-backoff.js +247 -0
  274. package/dist/infra/cipher/llm/thought-parser.d.ts +145 -0
  275. package/dist/infra/cipher/llm/thought-parser.js +190 -0
  276. package/dist/infra/cipher/llm/tokenizers/claude-tokenizer.d.ts +47 -0
  277. package/dist/infra/cipher/llm/tokenizers/claude-tokenizer.js +55 -0
  278. package/dist/infra/cipher/llm/tokenizers/default-tokenizer.d.ts +31 -0
  279. package/dist/infra/cipher/llm/tokenizers/default-tokenizer.js +38 -0
  280. package/dist/infra/cipher/llm/tokenizers/gemini-tokenizer.d.ts +37 -0
  281. package/dist/infra/cipher/llm/tokenizers/gemini-tokenizer.js +45 -0
  282. package/dist/infra/cipher/llm/tokenizers/openrouter-tokenizer.d.ts +29 -0
  283. package/dist/infra/cipher/llm/tokenizers/openrouter-tokenizer.js +37 -0
  284. package/dist/infra/cipher/llm/tool-output-processor.d.ts +117 -0
  285. package/dist/infra/cipher/llm/tool-output-processor.js +153 -0
  286. package/dist/infra/cipher/logger/console-logger.d.ts +42 -0
  287. package/dist/infra/cipher/logger/console-logger.js +63 -0
  288. package/dist/infra/cipher/logger/event-based-logger.d.ts +54 -0
  289. package/dist/infra/cipher/logger/event-based-logger.js +92 -0
  290. package/dist/infra/cipher/memory/index.d.ts +6 -0
  291. package/dist/infra/cipher/memory/index.js +7 -0
  292. package/dist/infra/cipher/memory/memory-manager.d.ts +136 -0
  293. package/dist/infra/cipher/memory/memory-manager.js +523 -0
  294. package/dist/infra/cipher/parsers/coding-agent-log-parser.d.ts +24 -0
  295. package/dist/infra/cipher/parsers/coding-agent-log-parser.js +51 -0
  296. package/dist/infra/cipher/process/command-validator.d.ts +59 -0
  297. package/dist/infra/cipher/process/command-validator.js +266 -0
  298. package/dist/infra/cipher/process/index.d.ts +8 -0
  299. package/dist/infra/cipher/process/index.js +8 -0
  300. package/dist/infra/cipher/process/process-service.d.ts +95 -0
  301. package/dist/infra/cipher/process/process-service.js +439 -0
  302. package/dist/infra/cipher/session/chat-session.d.ts +80 -0
  303. package/dist/infra/cipher/session/chat-session.js +165 -0
  304. package/dist/infra/cipher/session/index.d.ts +6 -0
  305. package/dist/infra/cipher/session/index.js +5 -0
  306. package/dist/infra/cipher/session/session-event-forwarder.d.ts +37 -0
  307. package/dist/infra/cipher/session/session-event-forwarder.js +83 -0
  308. package/dist/infra/cipher/session/session-manager.d.ts +109 -0
  309. package/dist/infra/cipher/session/session-manager.js +172 -0
  310. package/dist/infra/cipher/storage/blob-history-storage.d.ts +76 -0
  311. package/dist/infra/cipher/storage/blob-history-storage.js +178 -0
  312. package/dist/infra/cipher/system-prompt/simple-prompt-factory.d.ts +105 -0
  313. package/dist/infra/cipher/system-prompt/simple-prompt-factory.js +290 -0
  314. package/dist/infra/cipher/tools/core-tool-scheduler.d.ts +99 -0
  315. package/dist/infra/cipher/tools/core-tool-scheduler.js +161 -0
  316. package/dist/infra/cipher/tools/default-policy-rules.d.ts +26 -0
  317. package/dist/infra/cipher/tools/default-policy-rules.js +125 -0
  318. package/dist/infra/cipher/tools/implementations/bash-exec-tool.d.ts +12 -0
  319. package/dist/infra/cipher/tools/implementations/bash-exec-tool.js +93 -0
  320. package/dist/infra/cipher/tools/implementations/bash-output-tool.d.ts +12 -0
  321. package/dist/infra/cipher/tools/implementations/bash-output-tool.js +47 -0
  322. package/dist/infra/cipher/tools/implementations/create-knowledge-topic-tool.d.ts +11 -0
  323. package/dist/infra/cipher/tools/implementations/create-knowledge-topic-tool.js +142 -0
  324. package/dist/infra/cipher/tools/implementations/delete-memory-tool.d.ts +12 -0
  325. package/dist/infra/cipher/tools/implementations/delete-memory-tool.js +37 -0
  326. package/dist/infra/cipher/tools/implementations/detect-domains-tool.d.ts +7 -0
  327. package/dist/infra/cipher/tools/implementations/detect-domains-tool.js +73 -0
  328. package/dist/infra/cipher/tools/implementations/edit-file-tool.d.ts +13 -0
  329. package/dist/infra/cipher/tools/implementations/edit-file-tool.js +50 -0
  330. package/dist/infra/cipher/tools/implementations/edit-memory-tool.d.ts +13 -0
  331. package/dist/infra/cipher/tools/implementations/edit-memory-tool.js +53 -0
  332. package/dist/infra/cipher/tools/implementations/find-knowledge-topics-tool.d.ts +7 -0
  333. package/dist/infra/cipher/tools/implementations/find-knowledge-topics-tool.js +421 -0
  334. package/dist/infra/cipher/tools/implementations/glob-files-tool.d.ts +18 -0
  335. package/dist/infra/cipher/tools/implementations/glob-files-tool.js +70 -0
  336. package/dist/infra/cipher/tools/implementations/grep-content-tool.d.ts +12 -0
  337. package/dist/infra/cipher/tools/implementations/grep-content-tool.js +77 -0
  338. package/dist/infra/cipher/tools/implementations/kill-process-tool.d.ts +12 -0
  339. package/dist/infra/cipher/tools/implementations/kill-process-tool.js +55 -0
  340. package/dist/infra/cipher/tools/implementations/list-memories-tool.d.ts +12 -0
  341. package/dist/infra/cipher/tools/implementations/list-memories-tool.js +63 -0
  342. package/dist/infra/cipher/tools/implementations/read-file-tool.d.ts +12 -0
  343. package/dist/infra/cipher/tools/implementations/read-file-tool.js +54 -0
  344. package/dist/infra/cipher/tools/implementations/read-memory-tool.d.ts +12 -0
  345. package/dist/infra/cipher/tools/implementations/read-memory-tool.js +39 -0
  346. package/dist/infra/cipher/tools/implementations/search-history-tool.d.ts +10 -0
  347. package/dist/infra/cipher/tools/implementations/search-history-tool.js +36 -0
  348. package/dist/infra/cipher/tools/implementations/write-file-tool.d.ts +12 -0
  349. package/dist/infra/cipher/tools/implementations/write-file-tool.js +52 -0
  350. package/dist/infra/cipher/tools/implementations/write-memory-tool.d.ts +13 -0
  351. package/dist/infra/cipher/tools/implementations/write-memory-tool.js +52 -0
  352. package/dist/infra/cipher/tools/implementations/write-todos-tool.d.ts +10 -0
  353. package/dist/infra/cipher/tools/implementations/write-todos-tool.js +165 -0
  354. package/dist/infra/cipher/tools/index.d.ts +18 -0
  355. package/dist/infra/cipher/tools/index.js +19 -0
  356. package/dist/infra/cipher/tools/policy-engine.d.ts +80 -0
  357. package/dist/infra/cipher/tools/policy-engine.js +110 -0
  358. package/dist/infra/cipher/tools/tool-invocation-queue.d.ts +191 -0
  359. package/dist/infra/cipher/tools/tool-invocation-queue.js +254 -0
  360. package/dist/infra/cipher/tools/tool-invocation.d.ts +216 -0
  361. package/dist/infra/cipher/tools/tool-invocation.js +294 -0
  362. package/dist/infra/cipher/tools/tool-manager.d.ts +135 -0
  363. package/dist/infra/cipher/tools/tool-manager.js +209 -0
  364. package/dist/infra/cipher/tools/tool-markers.d.ts +48 -0
  365. package/dist/infra/cipher/tools/tool-markers.js +49 -0
  366. package/dist/infra/cipher/tools/tool-provider.d.ts +77 -0
  367. package/dist/infra/cipher/tools/tool-provider.js +196 -0
  368. package/dist/infra/cipher/tools/tool-registry.d.ts +52 -0
  369. package/dist/infra/cipher/tools/tool-registry.js +144 -0
  370. package/dist/infra/cipher/tools/utils/schema-converter.d.ts +10 -0
  371. package/dist/infra/cipher/tools/utils/schema-converter.js +29 -0
  372. package/dist/infra/cipher/validation/workspace-validator.d.ts +19 -0
  373. package/dist/infra/cipher/validation/workspace-validator.js +37 -0
  374. package/dist/infra/cipher/watcher/coding-agent-log-watcher.d.ts +14 -0
  375. package/dist/infra/cipher/watcher/coding-agent-log-watcher.js +55 -0
  376. package/dist/infra/cogit/context-tree-to-push-context-mapper.d.ts +21 -0
  377. package/dist/infra/cogit/context-tree-to-push-context-mapper.js +32 -0
  378. package/dist/infra/cogit/http-cogit-pull-service.d.ts +15 -0
  379. package/dist/infra/cogit/http-cogit-pull-service.js +30 -0
  380. package/dist/infra/cogit/http-cogit-push-service.d.ts +17 -0
  381. package/dist/infra/cogit/http-cogit-push-service.js +104 -0
  382. package/dist/infra/config/file-config-store.js +9 -3
  383. package/dist/infra/context-tree/file-context-file-reader.d.ts +14 -0
  384. package/dist/infra/context-tree/file-context-file-reader.js +46 -0
  385. package/dist/infra/context-tree/file-context-tree-service.d.ts +14 -0
  386. package/dist/infra/context-tree/file-context-tree-service.js +46 -0
  387. package/dist/infra/context-tree/file-context-tree-snapshot-service.d.ts +34 -0
  388. package/dist/infra/context-tree/file-context-tree-snapshot-service.js +117 -0
  389. package/dist/infra/context-tree/file-context-tree-writer-service.d.ts +22 -0
  390. package/dist/infra/context-tree/file-context-tree-writer-service.js +61 -0
  391. package/dist/infra/memory/http-memory-retrieval-service.js +2 -1
  392. package/dist/infra/memory/http-memory-storage-service.js +4 -3
  393. package/dist/infra/parsers/clean/clean-claude-service.d.ts +111 -0
  394. package/dist/infra/parsers/clean/clean-claude-service.js +271 -0
  395. package/dist/infra/parsers/clean/clean-codex-service.d.ts +231 -0
  396. package/dist/infra/parsers/clean/clean-codex-service.js +534 -0
  397. package/dist/infra/parsers/clean/clean-copilot-service.d.ts +255 -0
  398. package/dist/infra/parsers/clean/clean-copilot-service.js +729 -0
  399. package/dist/infra/parsers/clean/clean-cursor-service.d.ts +161 -0
  400. package/dist/infra/parsers/clean/clean-cursor-service.js +432 -0
  401. package/dist/infra/parsers/clean/clean-parser-service-factory.d.ts +54 -0
  402. package/dist/infra/parsers/clean/clean-parser-service-factory.js +80 -0
  403. package/dist/infra/parsers/clean/shared.d.ts +84 -0
  404. package/dist/infra/parsers/clean/shared.js +273 -0
  405. package/dist/infra/parsers/raw/raw-claude-service.d.ts +195 -0
  406. package/dist/infra/parsers/raw/raw-claude-service.js +548 -0
  407. package/dist/infra/parsers/raw/raw-codex-service.d.ts +313 -0
  408. package/dist/infra/parsers/raw/raw-codex-service.js +782 -0
  409. package/dist/infra/parsers/raw/raw-copilot-service.d.ts +196 -0
  410. package/dist/infra/parsers/raw/raw-copilot-service.js +558 -0
  411. package/dist/infra/parsers/raw/raw-cursor-service.d.ts +316 -0
  412. package/dist/infra/parsers/raw/raw-cursor-service.js +818 -0
  413. package/dist/infra/parsers/raw/raw-parser-service-factory.d.ts +54 -0
  414. package/dist/infra/parsers/raw/raw-parser-service-factory.js +81 -0
  415. package/dist/infra/space/http-space-service.js +2 -1
  416. package/dist/infra/team/http-team-service.js +2 -1
  417. package/dist/infra/user/http-user-service.js +2 -1
  418. package/dist/infra/watcher/file-watcher-service.d.ts +10 -0
  419. package/dist/infra/watcher/file-watcher-service.js +81 -0
  420. package/dist/infra/workspace/workspace-detector-service.d.ts +60 -0
  421. package/dist/infra/workspace/workspace-detector-service.js +165 -0
  422. package/dist/resources/prompts/curate-context-tree-curation.yml +48 -0
  423. package/dist/resources/prompts/modes/autonomous.yml +9 -0
  424. package/dist/resources/prompts/query-context-tree-retrieval.yml +49 -0
  425. package/dist/resources/prompts/reflection.yml +27 -0
  426. package/dist/resources/prompts/system-prompt.yml +82 -0
  427. package/dist/resources/prompts/tool-outputs.yml +30 -0
  428. package/dist/templates/README.md +6 -7
  429. package/dist/templates/sections/command-reference.md +40 -111
  430. package/dist/templates/sections/workflow.md +3 -30
  431. package/dist/utils/emoji-helpers.d.ts +38 -0
  432. package/dist/utils/emoji-helpers.js +42 -0
  433. package/dist/utils/error-handler.d.ts +51 -0
  434. package/dist/utils/error-handler.js +169 -0
  435. package/dist/utils/error-helpers.d.ts +30 -0
  436. package/dist/utils/error-helpers.js +47 -0
  437. package/dist/utils/file-helpers.d.ts +15 -0
  438. package/dist/utils/file-helpers.js +44 -0
  439. package/dist/utils/oclif-error-helpers.d.ts +40 -0
  440. package/dist/utils/oclif-error-helpers.js +46 -0
  441. package/dist/utils/tool-display-formatter.d.ts +53 -0
  442. package/dist/utils/tool-display-formatter.js +257 -0
  443. package/oclif.manifest.json +381 -141
  444. package/package.json +27 -6
  445. package/dist/commands/add.d.ts +0 -49
  446. package/dist/commands/add.js +0 -192
  447. package/dist/commands/complete.d.ts +0 -108
  448. package/dist/commands/complete.js +0 -340
  449. package/dist/commands/retrieve.d.ts +0 -26
  450. package/dist/commands/retrieve.js +0 -101
  451. package/dist/core/domain/entities/curator-output.d.ts +0 -14
  452. package/dist/core/domain/entities/curator-output.js +0 -23
  453. package/dist/core/domain/entities/delta-batch.d.ts +0 -30
  454. package/dist/core/domain/entities/delta-batch.js +0 -52
  455. package/dist/core/domain/entities/delta-operation.d.ts +0 -31
  456. package/dist/core/domain/entities/delta-operation.js +0 -50
  457. package/dist/core/domain/entities/executor-output.d.ts +0 -27
  458. package/dist/core/domain/entities/executor-output.js +0 -33
  459. package/dist/core/domain/entities/reflector-output.d.ts +0 -38
  460. package/dist/core/domain/entities/reflector-output.js +0 -44
  461. package/dist/core/interfaces/i-ace-prompt-builder.d.ts +0 -48
  462. package/dist/core/interfaces/i-bullet-content-store.d.ts +0 -36
  463. package/dist/core/interfaces/i-delta-store.d.ts +0 -15
  464. package/dist/core/interfaces/i-executor-output-store.d.ts +0 -14
  465. package/dist/core/interfaces/i-playbook-service.d.ts +0 -69
  466. package/dist/core/interfaces/i-playbook-store.d.ts +0 -38
  467. package/dist/core/interfaces/i-reflection-store.d.ts +0 -21
  468. package/dist/infra/ace/ace-file-utils.d.ts +0 -46
  469. package/dist/infra/ace/ace-file-utils.js +0 -83
  470. package/dist/infra/ace/ace-prompt-templates.d.ts +0 -13
  471. package/dist/infra/ace/ace-prompt-templates.js +0 -177
  472. package/dist/infra/ace/file-bullet-content-store.d.ts +0 -27
  473. package/dist/infra/ace/file-bullet-content-store.js +0 -89
  474. package/dist/infra/ace/file-delta-store.d.ts +0 -9
  475. package/dist/infra/ace/file-delta-store.js +0 -26
  476. package/dist/infra/ace/file-executor-output-store.d.ts +0 -9
  477. package/dist/infra/ace/file-executor-output-store.js +0 -26
  478. package/dist/infra/ace/file-playbook-store.d.ts +0 -29
  479. package/dist/infra/ace/file-playbook-store.js +0 -107
  480. package/dist/infra/ace/file-reflection-store.d.ts +0 -10
  481. package/dist/infra/ace/file-reflection-store.js +0 -55
  482. package/dist/infra/playbook/file-playbook-service.d.ts +0 -42
  483. package/dist/infra/playbook/file-playbook-service.js +0 -132
  484. /package/dist/core/{interfaces/i-ace-prompt-builder.js → domain/cipher/blob/types.js} +0 -0
  485. /package/dist/core/{interfaces/i-bullet-content-store.js → domain/cipher/file-system/types.js} +0 -0
  486. /package/dist/core/{interfaces/i-delta-store.js → domain/cipher/process/types.js} +0 -0
  487. /package/dist/core/{interfaces/i-executor-output-store.js → domain/cipher/session/types.js} +0 -0
  488. /package/dist/core/{interfaces/i-playbook-service.js → domain/cipher/storage/history-types.js} +0 -0
  489. /package/dist/core/{interfaces/i-playbook-store.js → domain/cipher/system-prompt/types.js} +0 -0
  490. /package/dist/core/{interfaces/i-reflection-store.js → domain/cipher/tools/types.js} +0 -0
@@ -0,0 +1,46 @@
1
+ import { mkdir, writeFile } from 'node:fs/promises';
2
+ import { join } from 'node:path';
3
+ import { CONTEXT_TREE_DOMAINS } from '../../config/context-tree-domains.js';
4
+ import { BRV_DIR, CONTEXT_FILE, CONTEXT_TREE_DIR } from '../../constants.js';
5
+ /**
6
+ * File-based implementation of IContextTreeService.
7
+ * Provides operations for managing the context tree structure.
8
+ */
9
+ export class FileContextTreeService {
10
+ config;
11
+ constructor(config = {}) {
12
+ this.config = config;
13
+ }
14
+ async exists(directory) {
15
+ const baseDir = directory ?? this.config.baseDirectory ?? process.cwd();
16
+ const contextTreeDir = join(baseDir, BRV_DIR, CONTEXT_TREE_DIR);
17
+ try {
18
+ // Check if context tree directory exists
19
+ const { access } = await import('node:fs/promises');
20
+ await access(contextTreeDir);
21
+ return true;
22
+ }
23
+ catch {
24
+ return false;
25
+ }
26
+ }
27
+ async initialize(directory) {
28
+ const baseDir = directory ?? this.config.baseDirectory ?? process.cwd();
29
+ const brvDir = join(baseDir, BRV_DIR);
30
+ const contextTreeDir = join(brvDir, CONTEXT_TREE_DIR);
31
+ // Create .brv/context-tree/ directory
32
+ await mkdir(contextTreeDir, { recursive: true });
33
+ // Create domain folders and context.md files in parallel
34
+ await Promise.all(CONTEXT_TREE_DOMAINS.map(async (domain) => {
35
+ const domainPath = join(contextTreeDir, domain.name);
36
+ await mkdir(domainPath, { recursive: true });
37
+ // Write context.md with domain description
38
+ const contextMdPath = join(domainPath, CONTEXT_FILE);
39
+ const contextContent = `# ${domain.name.replaceAll('_', ' ').replaceAll(/\b\w/g, (c) => c.toUpperCase())}\n\n${domain.description}\n`;
40
+ await writeFile(contextMdPath, contextContent, 'utf8');
41
+ }));
42
+ // Note: index.json is no longer created as it's not actively used
43
+ // Context tree uses filesystem-based discovery instead
44
+ return contextTreeDir;
45
+ }
46
+ }
@@ -0,0 +1,34 @@
1
+ import type { IContextTreeSnapshotService } from '../../core/interfaces/i-context-tree-snapshot-service.js';
2
+ import { ContextTreeChanges, FileState } from '../../core/domain/entities/context-tree-snapshot.js';
3
+ export type ContextTreeSnapshotServiceConfig = {
4
+ baseDirectory?: string;
5
+ };
6
+ /**
7
+ * File-based implementation of IContextTreeSnapshotService.
8
+ * Tracks context tree changes using content hashing.
9
+ */
10
+ export declare class FileContextTreeSnapshotService implements IContextTreeSnapshotService {
11
+ private readonly config;
12
+ constructor(config?: ContextTreeSnapshotServiceConfig);
13
+ getChanges(directory?: string): Promise<ContextTreeChanges>;
14
+ getCurrentState(directory?: string): Promise<Map<string, FileState>>;
15
+ hasSnapshot(directory?: string): Promise<boolean>;
16
+ initEmptySnapshot(directory?: string): Promise<void>;
17
+ saveSnapshot(directory?: string): Promise<void>;
18
+ /**
19
+ * Computes SHA-256 hash of file content.
20
+ */
21
+ private computeHash;
22
+ /**
23
+ * Loads snapshot from file.
24
+ */
25
+ private loadSnapshot;
26
+ /**
27
+ * Processes a single file and adds it to the files map.
28
+ */
29
+ private processFile;
30
+ /**
31
+ * Recursively scans directory for files, excluding snapshot file.
32
+ */
33
+ private scanDirectory;
34
+ }
@@ -0,0 +1,117 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { readdir, readFile, stat, writeFile } from 'node:fs/promises';
3
+ import { join, relative } from 'node:path';
4
+ import { BRV_DIR, CONTEXT_FILE, CONTEXT_TREE_DIR, SNAPSHOT_FILE } from '../../constants.js';
5
+ import { ContextTreeSnapshot, } from '../../core/domain/entities/context-tree-snapshot.js';
6
+ /**
7
+ * File-based implementation of IContextTreeSnapshotService.
8
+ * Tracks context tree changes using content hashing.
9
+ */
10
+ export class FileContextTreeSnapshotService {
11
+ config;
12
+ constructor(config = {}) {
13
+ this.config = config;
14
+ }
15
+ async getChanges(directory) {
16
+ const baseDir = directory ?? this.config.baseDirectory ?? process.cwd();
17
+ const contextTreeDir = join(baseDir, BRV_DIR, CONTEXT_TREE_DIR);
18
+ const snapshot = await this.loadSnapshot(contextTreeDir);
19
+ if (!snapshot) {
20
+ // No snapshot means everything is "new" but we return empty for clean status
21
+ return { added: [], deleted: [], modified: [] };
22
+ }
23
+ const currentState = await this.getCurrentState(directory);
24
+ return snapshot.compare(currentState);
25
+ }
26
+ async getCurrentState(directory) {
27
+ const baseDir = directory ?? this.config.baseDirectory ?? process.cwd();
28
+ const contextTreeDir = join(baseDir, BRV_DIR, CONTEXT_TREE_DIR);
29
+ const files = new Map();
30
+ try {
31
+ await this.scanDirectory(contextTreeDir, contextTreeDir, files);
32
+ }
33
+ catch {
34
+ // Directory doesn't exist or can't be read
35
+ return files;
36
+ }
37
+ return files;
38
+ }
39
+ async hasSnapshot(directory) {
40
+ const baseDir = directory ?? this.config.baseDirectory ?? process.cwd();
41
+ const snapshotPath = join(baseDir, BRV_DIR, CONTEXT_TREE_DIR, SNAPSHOT_FILE);
42
+ try {
43
+ await stat(snapshotPath);
44
+ return true;
45
+ }
46
+ catch {
47
+ return false;
48
+ }
49
+ }
50
+ async initEmptySnapshot(directory) {
51
+ const baseDir = directory ?? this.config.baseDirectory ?? process.cwd();
52
+ const contextTreeDir = join(baseDir, BRV_DIR, CONTEXT_TREE_DIR);
53
+ const snapshotPath = join(contextTreeDir, SNAPSHOT_FILE);
54
+ const emptySnapshot = ContextTreeSnapshot.create(new Map());
55
+ await writeFile(snapshotPath, JSON.stringify(emptySnapshot.toJson(), null, 2), 'utf8');
56
+ }
57
+ async saveSnapshot(directory) {
58
+ const baseDir = directory ?? this.config.baseDirectory ?? process.cwd();
59
+ const contextTreeDir = join(baseDir, BRV_DIR, CONTEXT_TREE_DIR);
60
+ const snapshotPath = join(contextTreeDir, SNAPSHOT_FILE);
61
+ const currentState = await this.getCurrentState(directory);
62
+ const snapshot = ContextTreeSnapshot.create(currentState);
63
+ await writeFile(snapshotPath, JSON.stringify(snapshot.toJson(), null, 2), 'utf8');
64
+ }
65
+ /**
66
+ * Computes SHA-256 hash of file content.
67
+ */
68
+ computeHash(content) {
69
+ return createHash('sha256').update(content).digest('hex');
70
+ }
71
+ /**
72
+ * Loads snapshot from file.
73
+ */
74
+ async loadSnapshot(contextTreeDir) {
75
+ const snapshotPath = join(contextTreeDir, SNAPSHOT_FILE);
76
+ try {
77
+ const content = await readFile(snapshotPath, 'utf8');
78
+ const json = JSON.parse(content);
79
+ return ContextTreeSnapshot.fromJson(json) ?? null;
80
+ }
81
+ catch {
82
+ return null;
83
+ }
84
+ }
85
+ /**
86
+ * Processes a single file and adds it to the files map.
87
+ */
88
+ async processFile(fullPath, rootDir, files) {
89
+ const relativePath = relative(rootDir, fullPath);
90
+ const [content, fileStat] = await Promise.all([readFile(fullPath), stat(fullPath)]);
91
+ files.set(relativePath, {
92
+ hash: this.computeHash(content),
93
+ size: fileStat.size,
94
+ });
95
+ }
96
+ /**
97
+ * Recursively scans directory for files, excluding snapshot file.
98
+ */
99
+ async scanDirectory(currentDir, rootDir, files) {
100
+ const entries = await readdir(currentDir, { withFileTypes: true });
101
+ const tasks = [];
102
+ for (const entry of entries) {
103
+ const fullPath = join(currentDir, entry.name);
104
+ // Skip snapshot file
105
+ if (entry.name === SNAPSHOT_FILE) {
106
+ continue;
107
+ }
108
+ if (entry.isDirectory()) {
109
+ tasks.push(this.scanDirectory(fullPath, rootDir, files));
110
+ }
111
+ else if (entry.isFile() && entry.name === CONTEXT_FILE) {
112
+ tasks.push(this.processFile(fullPath, rootDir, files));
113
+ }
114
+ }
115
+ await Promise.all(tasks);
116
+ }
117
+ }
@@ -0,0 +1,22 @@
1
+ import type { IContextTreeSnapshotService } from '../../core/interfaces/i-context-tree-snapshot-service.js';
2
+ import type { IContextTreeWriterService, SyncParams, SyncResult } from '../../core/interfaces/i-context-tree-writer-service.js';
3
+ export type ContextTreeWriterServiceConfig = {
4
+ baseDirectory?: string;
5
+ };
6
+ export type ContextTreeWriterServiceDependencies = {
7
+ snapshotService: IContextTreeSnapshotService;
8
+ };
9
+ /**
10
+ * File-based implementation of IContextTreeWriterService.
11
+ * Synchronizes context tree files based on CoGit snapshot data.
12
+ */
13
+ export declare class FileContextTreeWriterService implements IContextTreeWriterService {
14
+ private readonly config;
15
+ private readonly snapshotService;
16
+ constructor(dependencies: ContextTreeWriterServiceDependencies, config?: ContextTreeWriterServiceConfig);
17
+ sync(params: SyncParams): Promise<SyncResult>;
18
+ /**
19
+ * Normalizes a file path by removing leading slashes.
20
+ */
21
+ private normalizePath;
22
+ }
@@ -0,0 +1,61 @@
1
+ /* eslint-disable no-await-in-loop */
2
+ import { mkdir, readFile, unlink, writeFile } from 'node:fs/promises';
3
+ import { dirname, join } from 'node:path';
4
+ import { BRV_DIR, CONTEXT_TREE_DIR } from '../../constants.js';
5
+ /**
6
+ * File-based implementation of IContextTreeWriterService.
7
+ * Synchronizes context tree files based on CoGit snapshot data.
8
+ */
9
+ export class FileContextTreeWriterService {
10
+ config;
11
+ snapshotService;
12
+ constructor(dependencies, config = {}) {
13
+ this.snapshotService = dependencies.snapshotService;
14
+ this.config = config;
15
+ }
16
+ async sync(params) {
17
+ const baseDir = params.directory ?? this.config.baseDirectory ?? process.cwd();
18
+ const contextTreeDir = join(baseDir, BRV_DIR, CONTEXT_TREE_DIR);
19
+ // Get current local state
20
+ const localState = await this.snapshotService.getCurrentState(params.directory);
21
+ // Build map of remote files (normalize paths - remove leading /)
22
+ const remoteFiles = new Map(params.files.map((file) => [this.normalizePath(file.path), file]));
23
+ const added = [];
24
+ const edited = [];
25
+ const deleted = [];
26
+ // Process remote files: add or edit
27
+ for (const [remoteRelativePath, remoteFile] of remoteFiles) {
28
+ const fullPath = join(contextTreeDir, remoteRelativePath);
29
+ const decodedContent = remoteFile.decodeContent();
30
+ if (localState.has(remoteRelativePath)) {
31
+ // File exists locally - check if content differs
32
+ const localContent = await readFile(fullPath, 'utf8');
33
+ if (localContent !== decodedContent) {
34
+ await writeFile(fullPath, decodedContent, 'utf8');
35
+ edited.push(remoteRelativePath);
36
+ }
37
+ }
38
+ else {
39
+ // New file - create parent directories and write
40
+ await mkdir(dirname(fullPath), { recursive: true });
41
+ await writeFile(fullPath, decodedContent, 'utf8');
42
+ added.push(remoteRelativePath);
43
+ }
44
+ }
45
+ // Process deletions: local files not in remote
46
+ for (const localPath of localState.keys()) {
47
+ if (!remoteFiles.has(localPath)) {
48
+ const fullPath = join(contextTreeDir, localPath);
49
+ await unlink(fullPath);
50
+ deleted.push(localPath);
51
+ }
52
+ }
53
+ return { added, deleted, edited };
54
+ }
55
+ /**
56
+ * Normalizes a file path by removing leading slashes.
57
+ */
58
+ normalizePath(path) {
59
+ return path.replace(/^\/+/, '');
60
+ }
61
+ }
@@ -1,5 +1,6 @@
1
1
  import { Memory } from '../../core/domain/entities/memory.js';
2
2
  import { RetrieveResult } from '../../core/domain/entities/retrieve-result.js';
3
+ import { getErrorMessage } from '../../utils/error-helpers.js';
3
4
  import { AuthenticatedHttpClient } from '../http/authenticated-http-client.js';
4
5
  /**
5
6
  * HTTP implementation of IMemoryRetrievalService for ByteRover Memora service.
@@ -24,7 +25,7 @@ export class HttpMemoryRetrievalService {
24
25
  return this.mapToRetrieveResult(response);
25
26
  }
26
27
  catch (error) {
27
- throw new Error(`Failed to retrieve memories: ${error.message}`);
28
+ throw new Error(`Failed to retrieve memories: ${getErrorMessage(error)}`);
28
29
  }
29
30
  }
30
31
  buildQueryParams(params) {
@@ -2,6 +2,7 @@
2
2
  import axios from 'axios';
3
3
  import { PresignedUrl } from '../../core/domain/entities/presigned-url.js';
4
4
  import { PresignedUrlsResponse } from '../../core/domain/entities/presigned-urls-response.js';
5
+ import { getErrorMessage } from '../../utils/error-helpers.js';
5
6
  import { AuthenticatedHttpClient } from '../http/authenticated-http-client.js';
6
7
  /**
7
8
  * HTTP implementation of IMemoryStorageService for ByteRover CoGit service.
@@ -27,7 +28,7 @@ export class HttpMemoryStorageService {
27
28
  });
28
29
  }
29
30
  catch (error) {
30
- throw new Error(`Failed to confirm upload: ${error.message}`);
31
+ throw new Error(`Failed to confirm upload: ${getErrorMessage(error)}`);
31
32
  }
32
33
  }
33
34
  async getPresignedUrls(params) {
@@ -45,7 +46,7 @@ export class HttpMemoryStorageService {
45
46
  return new PresignedUrlsResponse(presignedUrls, response.data.request_id);
46
47
  }
47
48
  catch (error) {
48
- throw new Error(`Failed to get presigned URLs: ${error.message}`);
49
+ throw new Error(`Failed to get presigned URLs: ${getErrorMessage(error)}`);
49
50
  }
50
51
  }
51
52
  async uploadFile(uploadUrl, content) {
@@ -58,7 +59,7 @@ export class HttpMemoryStorageService {
58
59
  });
59
60
  }
60
61
  catch (error) {
61
- throw new Error(`Failed to upload file: ${error.message}`);
62
+ throw new Error(`Failed to upload file: ${getErrorMessage(error)}`);
62
63
  }
63
64
  }
64
65
  mapToPresignedUrls(presignedUrlData) {
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Claude Clean Service
3
+ * Transforms Claude raw parsed data to clean normalized format
4
+ * Consolidates agent sessions and normalizes messages
5
+ */
6
+ import type { CleanSession } from '../../../core/domain/entities/parser.js';
7
+ import { Agent } from '../../../core/domain/entities/agent.js';
8
+ import { ICleanParserService } from '../../../core/interfaces/parser/i-clean-parser-service.js';
9
+ /**
10
+ * Claude Clean Service
11
+ * Transforms Claude raw parsed sessions to clean normalized format
12
+ */
13
+ export declare class ClaudeCleanService implements ICleanParserService {
14
+ private ide;
15
+ /**
16
+ * Initialize Claude Clean Service
17
+ *
18
+ * @param ide - The IDE type (Claude Code)
19
+ */
20
+ constructor(ide: Agent);
21
+ /**
22
+ * Parse and transform raw Claude sessions to clean normalized format
23
+ *
24
+ * Reads raw sessions organized by workspace, consolidates agent sessions into main
25
+ * conversations, and normalizes message format. Returns sessions in-memory without file writing.
26
+ *
27
+ * @param rawDir - Path to directory containing raw Claude session files organized by workspace
28
+ * @returns Promise resolving to array of clean normalized sessions
29
+ */
30
+ parse(rawDir: string): Promise<readonly CleanSession[]>;
31
+ /**
32
+ * Calculate string similarity score using word overlap method
33
+ *
34
+ * Computes similarity by comparing words with length > 3 characters.
35
+ * Returns fraction of matching words relative to max length.
36
+ *
37
+ * @param str1 - First string to compare
38
+ * @param str2 - Second string to compare
39
+ * @returns Similarity score between 0 (no match) and 1 (perfect match)
40
+ */
41
+ private calculateSimilarity;
42
+ /**
43
+ * Consolidate agent session data into main conversation
44
+ *
45
+ * When main conversation contains Task subagent invocation, flattens the agent
46
+ * session messages into the main message stream. Two-pass algorithm: first identify
47
+ * Task invocations with matching agent sessions, then insert agent messages.
48
+ *
49
+ * @param mainSession - Main Claude conversation session to consolidate into
50
+ * @param agentSessions - Map of agent sessions keyed by agent session ID
51
+ * @returns Promise resolving to consolidated session with agent messages merged
52
+ */
53
+ private consolidateAgentSessions;
54
+ /**
55
+ * Find best matching agent session for a task description and timestamp
56
+ *
57
+ * Locates matching agent session using similarity scoring and timestamp proximity.
58
+ * Considers both task description similarity and temporal closeness (within 5 seconds).
59
+ *
60
+ * @param description - Task description from Task tool_use invocation
61
+ * @param messageTimestamp - Timestamp of message containing Task invocation
62
+ * @param agentSessions - Map of available agent sessions
63
+ * @returns Matching agent session or null if no good match found
64
+ */
65
+ private findMatchingAgentSession;
66
+ /**
67
+ * Flatten messages with agent sessions inserted after Task invocations
68
+ *
69
+ * Inserts agent session messages into message stream after Task tool_use invocations
70
+ * that have matching agent sessions. Preserves message order.
71
+ *
72
+ * @param messages - Array of raw session messages
73
+ * @param taskToolUseIds - Set of Task tool_use IDs that have matching agent sessions
74
+ * @param agentSessions - Map of available agent sessions
75
+ * @returns Flattened message array with agent messages interleaved
76
+ */
77
+ private flattenMessagesWithAgentSessions;
78
+ /**
79
+ * Identify Task tool_use IDs that have matching agent sessions
80
+ *
81
+ * Scans messages for Task tool_use invocations and identifies which ones
82
+ * have corresponding agent sessions that can be consolidated.
83
+ *
84
+ * @param messages - Array of session messages
85
+ * @param agentSessions - Map of available agent sessions
86
+ * @returns Set of tool_use IDs that have matching agent sessions
87
+ */
88
+ private identifyTaskToolIds;
89
+ /**
90
+ * Load and organize sessions from workspace directory
91
+ *
92
+ * Reads JSON files from workspace directory and organizes them into main sessions
93
+ * and agent sessions based on filename prefix ('agent-' for agent sessions).
94
+ *
95
+ * @param workspacePath - Path to workspace directory containing session files
96
+ * @param jsonFiles - Array of JSON filenames to load
97
+ * @returns Promise resolving to object with separated agentSessions and allSessions maps
98
+ */
99
+ private loadSessions;
100
+ /**
101
+ * Process main sessions and return normalized outputs
102
+ *
103
+ * Consolidates agent sessions and normalizes each session.
104
+ * Returns normalized sessions in-memory without writing to disk.
105
+ *
106
+ * @param allSessions - Map of main sessions to process
107
+ * @param agentSessions - Map of available agent sessions for consolidation
108
+ * @returns Promise resolving to array of clean normalized sessions
109
+ */
110
+ private processMainSessions;
111
+ }