byterover-cli 0.2.0 → 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 (498) 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 +53 -2
  18. package/dist/commands/init.js +279 -66
  19. package/dist/commands/login.js +9 -4
  20. package/dist/commands/logout.d.ts +16 -0
  21. package/dist/commands/logout.js +61 -0
  22. package/dist/commands/pull.d.ts +33 -0
  23. package/dist/commands/pull.js +115 -0
  24. package/dist/commands/push.d.ts +13 -13
  25. package/dist/commands/push.js +81 -101
  26. package/dist/commands/query.d.ts +63 -0
  27. package/dist/commands/query.js +349 -0
  28. package/dist/commands/space/list.d.ts +5 -2
  29. package/dist/commands/space/list.js +60 -56
  30. package/dist/commands/space/switch.d.ts +16 -0
  31. package/dist/commands/space/switch.js +102 -53
  32. package/dist/commands/status.d.ts +5 -2
  33. package/dist/commands/status.js +43 -33
  34. package/dist/commands/watch.d.ts +23 -0
  35. package/dist/commands/watch.js +171 -0
  36. package/dist/config/auth.config.js +14 -2
  37. package/dist/config/context-tree-domains.d.ts +12 -0
  38. package/dist/config/context-tree-domains.js +29 -0
  39. package/dist/config/environment.d.ts +6 -0
  40. package/dist/config/environment.js +9 -2
  41. package/dist/constants.d.ts +5 -0
  42. package/dist/constants.js +6 -0
  43. package/dist/core/domain/cipher/agent/agent-state-machine.d.ts +128 -0
  44. package/dist/core/domain/cipher/agent/agent-state-machine.js +183 -0
  45. package/dist/core/domain/cipher/agent/agent-state.d.ts +77 -0
  46. package/dist/core/domain/cipher/agent/agent-state.js +59 -0
  47. package/dist/core/domain/cipher/agent/index.d.ts +7 -0
  48. package/dist/core/domain/cipher/agent/index.js +7 -0
  49. package/dist/core/domain/cipher/agent-events/index.d.ts +8 -0
  50. package/dist/core/domain/cipher/agent-events/index.js +7 -0
  51. package/dist/core/domain/cipher/agent-events/types.d.ts +419 -0
  52. package/dist/core/domain/cipher/agent-events/types.js +42 -0
  53. package/dist/core/domain/cipher/blob/types.d.ts +108 -0
  54. package/dist/core/domain/cipher/errors/blob-error.d.ts +36 -0
  55. package/dist/core/domain/cipher/errors/blob-error.js +68 -0
  56. package/dist/core/domain/cipher/errors/file-system-error.d.ts +211 -0
  57. package/dist/core/domain/cipher/errors/file-system-error.js +291 -0
  58. package/dist/core/domain/cipher/errors/llm-error.d.ts +120 -0
  59. package/dist/core/domain/cipher/errors/llm-error.js +161 -0
  60. package/dist/core/domain/cipher/errors/memory-error.d.ts +35 -0
  61. package/dist/core/domain/cipher/errors/memory-error.js +62 -0
  62. package/dist/core/domain/cipher/errors/process-error-code.d.ts +97 -0
  63. package/dist/core/domain/cipher/errors/process-error-code.js +98 -0
  64. package/dist/core/domain/cipher/errors/process-error.d.ts +135 -0
  65. package/dist/core/domain/cipher/errors/process-error.js +173 -0
  66. package/dist/core/domain/cipher/errors/session-error.d.ts +56 -0
  67. package/dist/core/domain/cipher/errors/session-error.js +74 -0
  68. package/dist/core/domain/cipher/errors/tool-error.d.ts +57 -0
  69. package/dist/core/domain/cipher/errors/tool-error.js +81 -0
  70. package/dist/core/domain/cipher/file-system/types.d.ts +203 -0
  71. package/dist/core/domain/cipher/memory/types.d.ts +102 -0
  72. package/dist/core/domain/cipher/memory/types.js +4 -0
  73. package/dist/core/domain/cipher/parsed-interaction.d.ts +47 -0
  74. package/dist/core/domain/cipher/parsed-interaction.js +25 -0
  75. package/dist/core/domain/cipher/process/types.d.ts +286 -0
  76. package/dist/core/domain/cipher/session/types.d.ts +54 -0
  77. package/dist/core/domain/cipher/storage/history-types.d.ts +38 -0
  78. package/dist/core/domain/cipher/system-prompt/types.d.ts +131 -0
  79. package/dist/core/domain/cipher/todos/index.d.ts +4 -0
  80. package/dist/core/domain/cipher/todos/index.js +4 -0
  81. package/dist/core/domain/cipher/todos/types.d.ts +57 -0
  82. package/dist/core/domain/cipher/todos/types.js +5 -0
  83. package/dist/core/domain/cipher/tools/constants.d.ts +28 -0
  84. package/dist/core/domain/cipher/tools/constants.js +24 -0
  85. package/dist/core/domain/cipher/tools/tool-error.d.ts +183 -0
  86. package/dist/core/domain/cipher/tools/tool-error.js +246 -0
  87. package/dist/core/domain/cipher/tools/types.d.ts +145 -0
  88. package/dist/core/domain/entities/brv-config.d.ts +42 -6
  89. package/dist/core/domain/entities/brv-config.js +115 -17
  90. package/dist/core/domain/entities/cogit-push-context.d.ts +38 -0
  91. package/dist/core/domain/entities/cogit-push-context.js +91 -0
  92. package/dist/core/domain/entities/cogit-push-response.d.ts +20 -0
  93. package/dist/core/domain/entities/cogit-push-response.js +31 -0
  94. package/dist/core/domain/entities/cogit-snapshot-author.d.ts +24 -0
  95. package/dist/core/domain/entities/cogit-snapshot-author.js +39 -0
  96. package/dist/core/domain/entities/cogit-snapshot-file.d.ts +34 -0
  97. package/dist/core/domain/entities/cogit-snapshot-file.js +59 -0
  98. package/dist/core/domain/entities/cogit-snapshot.d.ts +31 -0
  99. package/dist/core/domain/entities/cogit-snapshot.js +58 -0
  100. package/dist/core/domain/entities/context-tree-index.d.ts +26 -0
  101. package/dist/core/domain/entities/context-tree-index.js +27 -0
  102. package/dist/core/domain/entities/context-tree-snapshot.d.ts +56 -0
  103. package/dist/core/domain/entities/context-tree-snapshot.js +83 -0
  104. package/dist/core/domain/entities/event.d.ts +1 -1
  105. package/dist/core/domain/entities/event.js +4 -1
  106. package/dist/core/domain/entities/parser.d.ts +567 -0
  107. package/dist/core/domain/entities/parser.js +10 -0
  108. package/dist/core/domain/entities/playbook.d.ts +2 -23
  109. package/dist/core/domain/entities/playbook.js +2 -70
  110. package/dist/core/domain/errors/brv-config-version-error.d.ts +16 -0
  111. package/dist/core/domain/errors/brv-config-version-error.js +21 -0
  112. package/dist/core/domain/knowledge/directory-manager.d.ts +80 -0
  113. package/dist/core/domain/knowledge/directory-manager.js +145 -0
  114. package/dist/core/domain/knowledge/markdown-writer.d.ts +18 -0
  115. package/dist/core/domain/knowledge/markdown-writer.js +18 -0
  116. package/dist/core/domain/knowledge/relation-parser.d.ts +90 -0
  117. package/dist/core/domain/knowledge/relation-parser.js +131 -0
  118. package/dist/core/interfaces/cipher/cipher-services.d.ts +71 -0
  119. package/dist/core/interfaces/cipher/cipher-services.js +1 -0
  120. package/dist/core/interfaces/cipher/i-blob-storage.d.ts +78 -0
  121. package/dist/core/interfaces/cipher/i-blob-storage.js +1 -0
  122. package/dist/core/interfaces/cipher/i-chat-session.d.ts +62 -0
  123. package/dist/core/interfaces/cipher/i-chat-session.js +1 -0
  124. package/dist/core/interfaces/cipher/i-cipher-agent.d.ts +88 -0
  125. package/dist/core/interfaces/cipher/i-cipher-agent.js +1 -0
  126. package/dist/core/interfaces/cipher/i-coding-agent-log-parser.d.ts +20 -0
  127. package/dist/core/interfaces/cipher/i-coding-agent-log-parser.js +1 -0
  128. package/dist/core/interfaces/cipher/i-coding-agent-log-watcher.d.ts +31 -0
  129. package/dist/core/interfaces/cipher/i-coding-agent-log-watcher.js +1 -0
  130. package/dist/core/interfaces/cipher/i-content-generator.d.ts +120 -0
  131. package/dist/core/interfaces/cipher/i-content-generator.js +12 -0
  132. package/dist/core/interfaces/cipher/i-event-emitter.d.ts +76 -0
  133. package/dist/core/interfaces/cipher/i-event-emitter.js +1 -0
  134. package/dist/core/interfaces/cipher/i-file-system.d.ts +68 -0
  135. package/dist/core/interfaces/cipher/i-file-system.js +1 -0
  136. package/dist/core/interfaces/cipher/i-history-storage.d.ts +53 -0
  137. package/dist/core/interfaces/cipher/i-history-storage.js +1 -0
  138. package/dist/core/interfaces/cipher/i-llm-provider.d.ts +14 -0
  139. package/dist/core/interfaces/cipher/i-llm-provider.js +1 -0
  140. package/dist/core/interfaces/cipher/i-llm-service.d.ts +62 -0
  141. package/dist/core/interfaces/cipher/i-llm-service.js +1 -0
  142. package/dist/core/interfaces/cipher/i-logger.d.ts +78 -0
  143. package/dist/core/interfaces/cipher/i-logger.js +28 -0
  144. package/dist/core/interfaces/cipher/i-message-formatter.d.ts +44 -0
  145. package/dist/core/interfaces/cipher/i-message-formatter.js +1 -0
  146. package/dist/core/interfaces/cipher/i-policy-engine.d.ts +102 -0
  147. package/dist/core/interfaces/cipher/i-policy-engine.js +9 -0
  148. package/dist/core/interfaces/cipher/i-process-service.d.ts +65 -0
  149. package/dist/core/interfaces/cipher/i-process-service.js +1 -0
  150. package/dist/core/interfaces/cipher/i-system-prompt-contributor.d.ts +25 -0
  151. package/dist/core/interfaces/cipher/i-system-prompt-contributor.js +1 -0
  152. package/dist/core/interfaces/cipher/i-tokenizer.d.ts +15 -0
  153. package/dist/core/interfaces/cipher/i-tokenizer.js +1 -0
  154. package/dist/core/interfaces/cipher/i-tool-provider.d.ts +64 -0
  155. package/dist/core/interfaces/cipher/i-tool-provider.js +1 -0
  156. package/dist/core/interfaces/cipher/i-tool-scheduler.d.ts +103 -0
  157. package/dist/core/interfaces/cipher/i-tool-scheduler.js +11 -0
  158. package/dist/core/interfaces/cipher/llm-types.d.ts +46 -0
  159. package/dist/core/interfaces/cipher/llm-types.js +5 -0
  160. package/dist/core/interfaces/cipher/message-types.d.ts +118 -0
  161. package/dist/core/interfaces/cipher/message-types.js +5 -0
  162. package/dist/core/interfaces/cipher/tokenizer-types.d.ts +11 -0
  163. package/dist/core/interfaces/cipher/tokenizer-types.js +14 -0
  164. package/dist/core/interfaces/i-cogit-pull-service.d.ts +24 -0
  165. package/dist/core/interfaces/i-cogit-pull-service.js +1 -0
  166. package/dist/core/interfaces/i-cogit-push-service.d.ts +27 -0
  167. package/dist/core/interfaces/i-cogit-push-service.js +1 -0
  168. package/dist/core/interfaces/i-context-file-reader.d.ts +32 -0
  169. package/dist/core/interfaces/i-context-file-reader.js +1 -0
  170. package/dist/core/interfaces/i-context-tree-service.d.ts +21 -0
  171. package/dist/core/interfaces/i-context-tree-service.js +1 -0
  172. package/dist/core/interfaces/i-context-tree-snapshot-service.d.ts +36 -0
  173. package/dist/core/interfaces/i-context-tree-snapshot-service.js +1 -0
  174. package/dist/core/interfaces/i-context-tree-writer-service.d.ts +32 -0
  175. package/dist/core/interfaces/i-context-tree-writer-service.js +1 -0
  176. package/dist/core/interfaces/i-file-watcher-service.d.ts +41 -0
  177. package/dist/core/interfaces/i-file-watcher-service.js +1 -0
  178. package/dist/core/interfaces/i-rule-template-service.d.ts +0 -4
  179. package/dist/core/interfaces/i-rule-template-service.js +1 -4
  180. package/dist/core/interfaces/parser/i-clean-parser-service.d.ts +18 -0
  181. package/dist/core/interfaces/parser/i-clean-parser-service.js +1 -0
  182. package/dist/core/interfaces/parser/i-raw-parser-service.d.ts +17 -0
  183. package/dist/core/interfaces/parser/i-raw-parser-service.js +1 -0
  184. package/dist/core/interfaces/parser/i-session-normalizer.d.ts +56 -0
  185. package/dist/core/interfaces/parser/i-session-normalizer.js +1 -0
  186. package/dist/hooks/command_not_found/handle-invalid-commands.d.ts +7 -0
  187. package/dist/hooks/command_not_found/handle-invalid-commands.js +32 -0
  188. package/dist/hooks/error/clean-errors.d.ts +7 -0
  189. package/dist/hooks/error/clean-errors.js +50 -0
  190. package/dist/hooks/init/welcome.js +72 -1
  191. package/dist/hooks/prerun/validate-brv-config-version.d.ts +28 -0
  192. package/dist/hooks/prerun/validate-brv-config-version.js +43 -0
  193. package/dist/infra/cipher/agent-service-factory.d.ts +86 -0
  194. package/dist/infra/cipher/agent-service-factory.js +212 -0
  195. package/dist/infra/cipher/blob/blob-storage-factory.d.ts +13 -0
  196. package/dist/infra/cipher/blob/blob-storage-factory.js +14 -0
  197. package/dist/infra/cipher/blob/index.d.ts +10 -0
  198. package/dist/infra/cipher/blob/index.js +12 -0
  199. package/dist/infra/cipher/blob/migrations.d.ts +63 -0
  200. package/dist/infra/cipher/blob/migrations.js +148 -0
  201. package/dist/infra/cipher/blob/sqlite-blob-storage.d.ts +82 -0
  202. package/dist/infra/cipher/blob/sqlite-blob-storage.js +307 -0
  203. package/dist/infra/cipher/cipher-agent-state-manager.d.ts +63 -0
  204. package/dist/infra/cipher/cipher-agent-state-manager.js +108 -0
  205. package/dist/infra/cipher/cipher-agent.d.ts +182 -0
  206. package/dist/infra/cipher/cipher-agent.js +317 -0
  207. package/dist/infra/cipher/command-parser.d.ts +23 -0
  208. package/dist/infra/cipher/command-parser.js +85 -0
  209. package/dist/infra/cipher/display/todo-display.d.ts +23 -0
  210. package/dist/infra/cipher/display/todo-display.js +129 -0
  211. package/dist/infra/cipher/events/event-emitter.d.ts +137 -0
  212. package/dist/infra/cipher/events/event-emitter.js +158 -0
  213. package/dist/infra/cipher/exit-codes.d.ts +44 -0
  214. package/dist/infra/cipher/exit-codes.js +58 -0
  215. package/dist/infra/cipher/file-system/file-system-service.d.ts +105 -0
  216. package/dist/infra/cipher/file-system/file-system-service.js +641 -0
  217. package/dist/infra/cipher/file-system/gitignore-filter.d.ts +77 -0
  218. package/dist/infra/cipher/file-system/gitignore-filter.js +120 -0
  219. package/dist/infra/cipher/file-system/glob-utils.d.ts +60 -0
  220. package/dist/infra/cipher/file-system/glob-utils.js +120 -0
  221. package/dist/infra/cipher/file-system/path-validator.d.ts +69 -0
  222. package/dist/infra/cipher/file-system/path-validator.js +184 -0
  223. package/dist/infra/cipher/grpc/internal-llm-grpc-service.d.ts +149 -0
  224. package/dist/infra/cipher/grpc/internal-llm-grpc-service.js +364 -0
  225. package/dist/infra/cipher/grpc/internal-llm-grpc.proto +94 -0
  226. package/dist/infra/cipher/interactive-commands.d.ts +16 -0
  227. package/dist/infra/cipher/interactive-commands.js +198 -0
  228. package/dist/infra/cipher/interactive-loop.d.ts +24 -0
  229. package/dist/infra/cipher/interactive-loop.js +352 -0
  230. package/dist/infra/cipher/llm/context/async-mutex.d.ts +59 -0
  231. package/dist/infra/cipher/llm/context/async-mutex.js +92 -0
  232. package/dist/infra/cipher/llm/context/compression/index.d.ts +6 -0
  233. package/dist/infra/cipher/llm/context/compression/index.js +5 -0
  234. package/dist/infra/cipher/llm/context/compression/middle-removal.d.ts +40 -0
  235. package/dist/infra/cipher/llm/context/compression/middle-removal.js +76 -0
  236. package/dist/infra/cipher/llm/context/compression/oldest-removal.d.ts +38 -0
  237. package/dist/infra/cipher/llm/context/compression/oldest-removal.js +53 -0
  238. package/dist/infra/cipher/llm/context/compression/types.d.ts +36 -0
  239. package/dist/infra/cipher/llm/context/compression/types.js +1 -0
  240. package/dist/infra/cipher/llm/context/context-manager.d.ts +234 -0
  241. package/dist/infra/cipher/llm/context/context-manager.js +419 -0
  242. package/dist/infra/cipher/llm/context/index.d.ts +2 -0
  243. package/dist/infra/cipher/llm/context/index.js +2 -0
  244. package/dist/infra/cipher/llm/context/loop-detector.d.ts +125 -0
  245. package/dist/infra/cipher/llm/context/loop-detector.js +194 -0
  246. package/dist/infra/cipher/llm/context/utils.d.ts +17 -0
  247. package/dist/infra/cipher/llm/context/utils.js +89 -0
  248. package/dist/infra/cipher/llm/formatters/claude-formatter.d.ts +54 -0
  249. package/dist/infra/cipher/llm/formatters/claude-formatter.js +182 -0
  250. package/dist/infra/cipher/llm/formatters/gemini-formatter.d.ts +69 -0
  251. package/dist/infra/cipher/llm/formatters/gemini-formatter.js +253 -0
  252. package/dist/infra/cipher/llm/formatters/openrouter-formatter.d.ts +47 -0
  253. package/dist/infra/cipher/llm/formatters/openrouter-formatter.js +238 -0
  254. package/dist/infra/cipher/llm/generators/byterover-content-generator.d.ts +92 -0
  255. package/dist/infra/cipher/llm/generators/byterover-content-generator.js +211 -0
  256. package/dist/infra/cipher/llm/generators/index.d.ts +13 -0
  257. package/dist/infra/cipher/llm/generators/index.js +13 -0
  258. package/dist/infra/cipher/llm/generators/logging-content-generator.d.ts +104 -0
  259. package/dist/infra/cipher/llm/generators/logging-content-generator.js +182 -0
  260. package/dist/infra/cipher/llm/generators/openrouter-content-generator.d.ts +93 -0
  261. package/dist/infra/cipher/llm/generators/openrouter-content-generator.js +254 -0
  262. package/dist/infra/cipher/llm/generators/retryable-content-generator.d.ts +90 -0
  263. package/dist/infra/cipher/llm/generators/retryable-content-generator.js +157 -0
  264. package/dist/infra/cipher/llm/index.d.ts +9 -0
  265. package/dist/infra/cipher/llm/index.js +13 -0
  266. package/dist/infra/cipher/llm/internal-llm-service.d.ts +308 -0
  267. package/dist/infra/cipher/llm/internal-llm-service.js +724 -0
  268. package/dist/infra/cipher/llm/openrouter-llm-service.d.ts +183 -0
  269. package/dist/infra/cipher/llm/openrouter-llm-service.js +386 -0
  270. package/dist/infra/cipher/llm/response-validator.d.ts +89 -0
  271. package/dist/infra/cipher/llm/response-validator.js +157 -0
  272. package/dist/infra/cipher/llm/retry/index.d.ts +10 -0
  273. package/dist/infra/cipher/llm/retry/index.js +10 -0
  274. package/dist/infra/cipher/llm/retry/retry-policy.d.ts +74 -0
  275. package/dist/infra/cipher/llm/retry/retry-policy.js +146 -0
  276. package/dist/infra/cipher/llm/retry/retry-with-backoff.d.ts +113 -0
  277. package/dist/infra/cipher/llm/retry/retry-with-backoff.js +247 -0
  278. package/dist/infra/cipher/llm/thought-parser.d.ts +145 -0
  279. package/dist/infra/cipher/llm/thought-parser.js +190 -0
  280. package/dist/infra/cipher/llm/tokenizers/claude-tokenizer.d.ts +47 -0
  281. package/dist/infra/cipher/llm/tokenizers/claude-tokenizer.js +55 -0
  282. package/dist/infra/cipher/llm/tokenizers/default-tokenizer.d.ts +31 -0
  283. package/dist/infra/cipher/llm/tokenizers/default-tokenizer.js +38 -0
  284. package/dist/infra/cipher/llm/tokenizers/gemini-tokenizer.d.ts +37 -0
  285. package/dist/infra/cipher/llm/tokenizers/gemini-tokenizer.js +45 -0
  286. package/dist/infra/cipher/llm/tokenizers/openrouter-tokenizer.d.ts +29 -0
  287. package/dist/infra/cipher/llm/tokenizers/openrouter-tokenizer.js +37 -0
  288. package/dist/infra/cipher/llm/tool-output-processor.d.ts +117 -0
  289. package/dist/infra/cipher/llm/tool-output-processor.js +153 -0
  290. package/dist/infra/cipher/logger/console-logger.d.ts +42 -0
  291. package/dist/infra/cipher/logger/console-logger.js +63 -0
  292. package/dist/infra/cipher/logger/event-based-logger.d.ts +54 -0
  293. package/dist/infra/cipher/logger/event-based-logger.js +92 -0
  294. package/dist/infra/cipher/memory/index.d.ts +6 -0
  295. package/dist/infra/cipher/memory/index.js +7 -0
  296. package/dist/infra/cipher/memory/memory-manager.d.ts +136 -0
  297. package/dist/infra/cipher/memory/memory-manager.js +523 -0
  298. package/dist/infra/cipher/parsers/coding-agent-log-parser.d.ts +24 -0
  299. package/dist/infra/cipher/parsers/coding-agent-log-parser.js +51 -0
  300. package/dist/infra/cipher/process/command-validator.d.ts +59 -0
  301. package/dist/infra/cipher/process/command-validator.js +266 -0
  302. package/dist/infra/cipher/process/index.d.ts +8 -0
  303. package/dist/infra/cipher/process/index.js +8 -0
  304. package/dist/infra/cipher/process/process-service.d.ts +95 -0
  305. package/dist/infra/cipher/process/process-service.js +439 -0
  306. package/dist/infra/cipher/session/chat-session.d.ts +80 -0
  307. package/dist/infra/cipher/session/chat-session.js +165 -0
  308. package/dist/infra/cipher/session/index.d.ts +6 -0
  309. package/dist/infra/cipher/session/index.js +5 -0
  310. package/dist/infra/cipher/session/session-event-forwarder.d.ts +37 -0
  311. package/dist/infra/cipher/session/session-event-forwarder.js +83 -0
  312. package/dist/infra/cipher/session/session-manager.d.ts +109 -0
  313. package/dist/infra/cipher/session/session-manager.js +172 -0
  314. package/dist/infra/cipher/storage/blob-history-storage.d.ts +76 -0
  315. package/dist/infra/cipher/storage/blob-history-storage.js +178 -0
  316. package/dist/infra/cipher/system-prompt/simple-prompt-factory.d.ts +105 -0
  317. package/dist/infra/cipher/system-prompt/simple-prompt-factory.js +290 -0
  318. package/dist/infra/cipher/tools/core-tool-scheduler.d.ts +99 -0
  319. package/dist/infra/cipher/tools/core-tool-scheduler.js +161 -0
  320. package/dist/infra/cipher/tools/default-policy-rules.d.ts +26 -0
  321. package/dist/infra/cipher/tools/default-policy-rules.js +125 -0
  322. package/dist/infra/cipher/tools/implementations/bash-exec-tool.d.ts +12 -0
  323. package/dist/infra/cipher/tools/implementations/bash-exec-tool.js +93 -0
  324. package/dist/infra/cipher/tools/implementations/bash-output-tool.d.ts +12 -0
  325. package/dist/infra/cipher/tools/implementations/bash-output-tool.js +47 -0
  326. package/dist/infra/cipher/tools/implementations/create-knowledge-topic-tool.d.ts +11 -0
  327. package/dist/infra/cipher/tools/implementations/create-knowledge-topic-tool.js +142 -0
  328. package/dist/infra/cipher/tools/implementations/delete-memory-tool.d.ts +12 -0
  329. package/dist/infra/cipher/tools/implementations/delete-memory-tool.js +37 -0
  330. package/dist/infra/cipher/tools/implementations/detect-domains-tool.d.ts +7 -0
  331. package/dist/infra/cipher/tools/implementations/detect-domains-tool.js +73 -0
  332. package/dist/infra/cipher/tools/implementations/edit-file-tool.d.ts +13 -0
  333. package/dist/infra/cipher/tools/implementations/edit-file-tool.js +50 -0
  334. package/dist/infra/cipher/tools/implementations/edit-memory-tool.d.ts +13 -0
  335. package/dist/infra/cipher/tools/implementations/edit-memory-tool.js +53 -0
  336. package/dist/infra/cipher/tools/implementations/find-knowledge-topics-tool.d.ts +7 -0
  337. package/dist/infra/cipher/tools/implementations/find-knowledge-topics-tool.js +421 -0
  338. package/dist/infra/cipher/tools/implementations/glob-files-tool.d.ts +18 -0
  339. package/dist/infra/cipher/tools/implementations/glob-files-tool.js +70 -0
  340. package/dist/infra/cipher/tools/implementations/grep-content-tool.d.ts +12 -0
  341. package/dist/infra/cipher/tools/implementations/grep-content-tool.js +77 -0
  342. package/dist/infra/cipher/tools/implementations/kill-process-tool.d.ts +12 -0
  343. package/dist/infra/cipher/tools/implementations/kill-process-tool.js +55 -0
  344. package/dist/infra/cipher/tools/implementations/list-memories-tool.d.ts +12 -0
  345. package/dist/infra/cipher/tools/implementations/list-memories-tool.js +63 -0
  346. package/dist/infra/cipher/tools/implementations/read-file-tool.d.ts +12 -0
  347. package/dist/infra/cipher/tools/implementations/read-file-tool.js +54 -0
  348. package/dist/infra/cipher/tools/implementations/read-memory-tool.d.ts +12 -0
  349. package/dist/infra/cipher/tools/implementations/read-memory-tool.js +39 -0
  350. package/dist/infra/cipher/tools/implementations/search-history-tool.d.ts +10 -0
  351. package/dist/infra/cipher/tools/implementations/search-history-tool.js +36 -0
  352. package/dist/infra/cipher/tools/implementations/write-file-tool.d.ts +12 -0
  353. package/dist/infra/cipher/tools/implementations/write-file-tool.js +52 -0
  354. package/dist/infra/cipher/tools/implementations/write-memory-tool.d.ts +13 -0
  355. package/dist/infra/cipher/tools/implementations/write-memory-tool.js +52 -0
  356. package/dist/infra/cipher/tools/implementations/write-todos-tool.d.ts +10 -0
  357. package/dist/infra/cipher/tools/implementations/write-todos-tool.js +165 -0
  358. package/dist/infra/cipher/tools/index.d.ts +18 -0
  359. package/dist/infra/cipher/tools/index.js +19 -0
  360. package/dist/infra/cipher/tools/policy-engine.d.ts +80 -0
  361. package/dist/infra/cipher/tools/policy-engine.js +110 -0
  362. package/dist/infra/cipher/tools/tool-invocation-queue.d.ts +191 -0
  363. package/dist/infra/cipher/tools/tool-invocation-queue.js +254 -0
  364. package/dist/infra/cipher/tools/tool-invocation.d.ts +216 -0
  365. package/dist/infra/cipher/tools/tool-invocation.js +294 -0
  366. package/dist/infra/cipher/tools/tool-manager.d.ts +135 -0
  367. package/dist/infra/cipher/tools/tool-manager.js +209 -0
  368. package/dist/infra/cipher/tools/tool-markers.d.ts +48 -0
  369. package/dist/infra/cipher/tools/tool-markers.js +49 -0
  370. package/dist/infra/cipher/tools/tool-provider.d.ts +77 -0
  371. package/dist/infra/cipher/tools/tool-provider.js +196 -0
  372. package/dist/infra/cipher/tools/tool-registry.d.ts +52 -0
  373. package/dist/infra/cipher/tools/tool-registry.js +144 -0
  374. package/dist/infra/cipher/tools/utils/schema-converter.d.ts +10 -0
  375. package/dist/infra/cipher/tools/utils/schema-converter.js +29 -0
  376. package/dist/infra/cipher/validation/workspace-validator.d.ts +19 -0
  377. package/dist/infra/cipher/validation/workspace-validator.js +37 -0
  378. package/dist/infra/cipher/watcher/coding-agent-log-watcher.d.ts +14 -0
  379. package/dist/infra/cipher/watcher/coding-agent-log-watcher.js +55 -0
  380. package/dist/infra/cogit/context-tree-to-push-context-mapper.d.ts +21 -0
  381. package/dist/infra/cogit/context-tree-to-push-context-mapper.js +32 -0
  382. package/dist/infra/cogit/http-cogit-pull-service.d.ts +15 -0
  383. package/dist/infra/cogit/http-cogit-pull-service.js +30 -0
  384. package/dist/infra/cogit/http-cogit-push-service.d.ts +17 -0
  385. package/dist/infra/cogit/http-cogit-push-service.js +104 -0
  386. package/dist/infra/config/file-config-store.js +9 -3
  387. package/dist/infra/context-tree/file-context-file-reader.d.ts +14 -0
  388. package/dist/infra/context-tree/file-context-file-reader.js +46 -0
  389. package/dist/infra/context-tree/file-context-tree-service.d.ts +14 -0
  390. package/dist/infra/context-tree/file-context-tree-service.js +46 -0
  391. package/dist/infra/context-tree/file-context-tree-snapshot-service.d.ts +34 -0
  392. package/dist/infra/context-tree/file-context-tree-snapshot-service.js +117 -0
  393. package/dist/infra/context-tree/file-context-tree-writer-service.d.ts +22 -0
  394. package/dist/infra/context-tree/file-context-tree-writer-service.js +61 -0
  395. package/dist/infra/memory/http-memory-retrieval-service.js +2 -1
  396. package/dist/infra/memory/http-memory-storage-service.js +4 -3
  397. package/dist/infra/parsers/clean/clean-claude-service.d.ts +111 -0
  398. package/dist/infra/parsers/clean/clean-claude-service.js +271 -0
  399. package/dist/infra/parsers/clean/clean-codex-service.d.ts +231 -0
  400. package/dist/infra/parsers/clean/clean-codex-service.js +534 -0
  401. package/dist/infra/parsers/clean/clean-copilot-service.d.ts +255 -0
  402. package/dist/infra/parsers/clean/clean-copilot-service.js +729 -0
  403. package/dist/infra/parsers/clean/clean-cursor-service.d.ts +161 -0
  404. package/dist/infra/parsers/clean/clean-cursor-service.js +432 -0
  405. package/dist/infra/parsers/clean/clean-parser-service-factory.d.ts +54 -0
  406. package/dist/infra/parsers/clean/clean-parser-service-factory.js +80 -0
  407. package/dist/infra/parsers/clean/shared.d.ts +84 -0
  408. package/dist/infra/parsers/clean/shared.js +273 -0
  409. package/dist/infra/parsers/raw/raw-claude-service.d.ts +195 -0
  410. package/dist/infra/parsers/raw/raw-claude-service.js +548 -0
  411. package/dist/infra/parsers/raw/raw-codex-service.d.ts +313 -0
  412. package/dist/infra/parsers/raw/raw-codex-service.js +782 -0
  413. package/dist/infra/parsers/raw/raw-copilot-service.d.ts +196 -0
  414. package/dist/infra/parsers/raw/raw-copilot-service.js +558 -0
  415. package/dist/infra/parsers/raw/raw-cursor-service.d.ts +316 -0
  416. package/dist/infra/parsers/raw/raw-cursor-service.js +818 -0
  417. package/dist/infra/parsers/raw/raw-parser-service-factory.d.ts +54 -0
  418. package/dist/infra/parsers/raw/raw-parser-service-factory.js +81 -0
  419. package/dist/infra/rule/constants.d.ts +4 -0
  420. package/dist/infra/rule/constants.js +4 -0
  421. package/dist/infra/rule/rule-template-service.js +1 -1
  422. package/dist/infra/rule/rule-writer-service.js +1 -5
  423. package/dist/infra/space/http-space-service.js +2 -1
  424. package/dist/infra/team/http-team-service.js +2 -1
  425. package/dist/infra/user/http-user-service.js +2 -1
  426. package/dist/infra/watcher/file-watcher-service.d.ts +10 -0
  427. package/dist/infra/watcher/file-watcher-service.js +81 -0
  428. package/dist/infra/workspace/workspace-detector-service.d.ts +60 -0
  429. package/dist/infra/workspace/workspace-detector-service.js +165 -0
  430. package/dist/resources/prompts/curate-context-tree-curation.yml +48 -0
  431. package/dist/resources/prompts/modes/autonomous.yml +9 -0
  432. package/dist/resources/prompts/query-context-tree-retrieval.yml +49 -0
  433. package/dist/resources/prompts/reflection.yml +27 -0
  434. package/dist/resources/prompts/system-prompt.yml +82 -0
  435. package/dist/resources/prompts/tool-outputs.yml +30 -0
  436. package/dist/templates/README.md +6 -7
  437. package/dist/templates/sections/command-reference.md +40 -93
  438. package/dist/templates/sections/workflow.md +3 -30
  439. package/dist/utils/emoji-helpers.d.ts +38 -0
  440. package/dist/utils/emoji-helpers.js +42 -0
  441. package/dist/utils/error-handler.d.ts +51 -0
  442. package/dist/utils/error-handler.js +169 -0
  443. package/dist/utils/error-helpers.d.ts +30 -0
  444. package/dist/utils/error-helpers.js +47 -0
  445. package/dist/utils/file-helpers.d.ts +15 -0
  446. package/dist/utils/file-helpers.js +44 -0
  447. package/dist/utils/oclif-error-helpers.d.ts +40 -0
  448. package/dist/utils/oclif-error-helpers.js +46 -0
  449. package/dist/utils/tool-display-formatter.d.ts +53 -0
  450. package/dist/utils/tool-display-formatter.js +257 -0
  451. package/oclif.manifest.json +422 -142
  452. package/package.json +29 -10
  453. package/dist/commands/add.d.ts +0 -49
  454. package/dist/commands/add.js +0 -192
  455. package/dist/commands/complete.d.ts +0 -108
  456. package/dist/commands/complete.js +0 -340
  457. package/dist/commands/retrieve.d.ts +0 -26
  458. package/dist/commands/retrieve.js +0 -101
  459. package/dist/core/domain/entities/curator-output.d.ts +0 -14
  460. package/dist/core/domain/entities/curator-output.js +0 -23
  461. package/dist/core/domain/entities/delta-batch.d.ts +0 -30
  462. package/dist/core/domain/entities/delta-batch.js +0 -52
  463. package/dist/core/domain/entities/delta-operation.d.ts +0 -31
  464. package/dist/core/domain/entities/delta-operation.js +0 -50
  465. package/dist/core/domain/entities/executor-output.d.ts +0 -27
  466. package/dist/core/domain/entities/executor-output.js +0 -33
  467. package/dist/core/domain/entities/reflector-output.d.ts +0 -38
  468. package/dist/core/domain/entities/reflector-output.js +0 -44
  469. package/dist/core/interfaces/i-ace-prompt-builder.d.ts +0 -48
  470. package/dist/core/interfaces/i-bullet-content-store.d.ts +0 -36
  471. package/dist/core/interfaces/i-delta-store.d.ts +0 -15
  472. package/dist/core/interfaces/i-executor-output-store.d.ts +0 -14
  473. package/dist/core/interfaces/i-playbook-service.d.ts +0 -69
  474. package/dist/core/interfaces/i-playbook-store.d.ts +0 -38
  475. package/dist/core/interfaces/i-reflection-store.d.ts +0 -21
  476. package/dist/infra/ace/ace-file-utils.d.ts +0 -46
  477. package/dist/infra/ace/ace-file-utils.js +0 -83
  478. package/dist/infra/ace/ace-prompt-templates.d.ts +0 -13
  479. package/dist/infra/ace/ace-prompt-templates.js +0 -177
  480. package/dist/infra/ace/file-bullet-content-store.d.ts +0 -27
  481. package/dist/infra/ace/file-bullet-content-store.js +0 -89
  482. package/dist/infra/ace/file-delta-store.d.ts +0 -9
  483. package/dist/infra/ace/file-delta-store.js +0 -26
  484. package/dist/infra/ace/file-executor-output-store.d.ts +0 -9
  485. package/dist/infra/ace/file-executor-output-store.js +0 -26
  486. package/dist/infra/ace/file-playbook-store.d.ts +0 -29
  487. package/dist/infra/ace/file-playbook-store.js +0 -107
  488. package/dist/infra/ace/file-reflection-store.d.ts +0 -10
  489. package/dist/infra/ace/file-reflection-store.js +0 -55
  490. package/dist/infra/playbook/file-playbook-service.d.ts +0 -42
  491. package/dist/infra/playbook/file-playbook-service.js +0 -132
  492. /package/dist/core/{interfaces/i-ace-prompt-builder.js → domain/cipher/blob/types.js} +0 -0
  493. /package/dist/core/{interfaces/i-bullet-content-store.js → domain/cipher/file-system/types.js} +0 -0
  494. /package/dist/core/{interfaces/i-delta-store.js → domain/cipher/process/types.js} +0 -0
  495. /package/dist/core/{interfaces/i-executor-output-store.js → domain/cipher/session/types.js} +0 -0
  496. /package/dist/core/{interfaces/i-playbook-service.js → domain/cipher/storage/history-types.js} +0 -0
  497. /package/dist/core/{interfaces/i-playbook-store.js → domain/cipher/system-prompt/types.js} +0 -0
  498. /package/dist/core/{interfaces/i-reflection-store.js → domain/cipher/tools/types.js} +0 -0
@@ -1,25 +1,61 @@
1
+ import { Agent } from './agent.js';
1
2
  import { Space } from './space.js';
3
+ /**
4
+ * Parameters for creating a BrvConfig instance.
5
+ */
6
+ export type BrvConfigParams = {
7
+ chatLogPath: string;
8
+ cipherAgentContext?: string;
9
+ cipherAgentModes?: string[];
10
+ cipherAgentSystemPrompt?: string;
11
+ createdAt: string;
12
+ cwd: string;
13
+ ide: Agent;
14
+ spaceId: string;
15
+ spaceName: string;
16
+ teamId: string;
17
+ teamName: string;
18
+ version: string;
19
+ };
20
+ /**
21
+ * Parameters for creating a BrvConfig from a Space entity.
22
+ */
23
+ export type FromSpaceParams = {
24
+ chatLogPath: string;
25
+ cwd: string;
26
+ ide: Agent;
27
+ space: Space;
28
+ };
2
29
  /**
3
30
  * Represents the configuration stored in .brv/config.json
4
31
  * This config links a project directory to a ByteRover space.
5
32
  */
6
33
  export declare class BrvConfig {
34
+ readonly chatLogPath: string;
35
+ readonly cipherAgentContext?: string;
36
+ readonly cipherAgentModes?: string[];
37
+ readonly cipherAgentSystemPrompt?: string;
7
38
  readonly createdAt: string;
39
+ readonly cwd: string;
40
+ readonly ide: Agent;
8
41
  readonly spaceId: string;
9
42
  readonly spaceName: string;
10
43
  readonly teamId: string;
11
44
  readonly teamName: string;
12
- constructor(createdAt: string, spaceId: string, spaceName: string, teamId: string, teamName: string);
45
+ readonly version: string;
46
+ constructor(params: BrvConfigParams);
13
47
  /**
14
- * Deserializes config from JSON format
48
+ * Deserializes config from JSON format.
49
+ * @throws Error if the JSON structure is invalid.
50
+ * @throws BrvConfigVersionError if version is missing or mismatched.
15
51
  */
16
- static fromJson(json: Record<string, string>): BrvConfig;
52
+ static fromJson(json: unknown): BrvConfig;
17
53
  /**
18
- * Creates a BrvConfig from a Space entity
54
+ * Creates a BrvConfig from a Space entity.
19
55
  */
20
- static fromSpace(space: Space): BrvConfig;
56
+ static fromSpace(params: FromSpaceParams): BrvConfig;
21
57
  /**
22
58
  * Serializes the config to JSON format
23
59
  */
24
- toJson(): Record<string, string>;
60
+ toJson(): Record<string, unknown>;
25
61
  }
@@ -1,58 +1,156 @@
1
+ import { BRV_CONFIG_VERSION } from '../../../constants.js';
2
+ import { BrvConfigVersionError } from '../errors/brv-config-version-error.js';
3
+ import { AGENT_VALUES } from './agent.js';
4
+ /**
5
+ * Type guard for Agent validation
6
+ */
7
+ const isCodingAgent = (value) => {
8
+ if (typeof value !== 'string')
9
+ return false;
10
+ for (const agent of AGENT_VALUES) {
11
+ if (agent === value)
12
+ return true;
13
+ }
14
+ return false;
15
+ };
16
+ /**
17
+ * Type guard for BrvConfigFromJson - validates JSON structure at runtime.
18
+ * Note: version is optional in this check (old configs may not have it).
19
+ */
20
+ const isBrvConfigJson = (json) => {
21
+ if (typeof json !== 'object' || json === null)
22
+ return false;
23
+ const requiredInputJsonKeys = [
24
+ 'chatLogPath',
25
+ 'createdAt',
26
+ 'cwd',
27
+ 'spaceId',
28
+ 'spaceName',
29
+ 'teamId',
30
+ 'teamName',
31
+ ];
32
+ for (const key of requiredInputJsonKeys) {
33
+ if (!(key in json) || typeof json[key] !== 'string') {
34
+ return false;
35
+ }
36
+ }
37
+ if (!('ide' in json) || !isCodingAgent(json.ide)) {
38
+ return false;
39
+ }
40
+ // Check optional fields if present
41
+ const obj = json;
42
+ if (obj.cipherAgentContext !== undefined && typeof obj.cipherAgentContext !== 'string')
43
+ return false;
44
+ if (obj.cipherAgentSystemPrompt !== undefined && typeof obj.cipherAgentSystemPrompt !== 'string')
45
+ return false;
46
+ if (obj.cipherAgentModes !== undefined && !Array.isArray(obj.cipherAgentModes))
47
+ return false;
48
+ if (obj.version !== undefined && typeof obj.version !== 'string')
49
+ return false;
50
+ return true;
51
+ };
1
52
  /**
2
53
  * Represents the configuration stored in .brv/config.json
3
54
  * This config links a project directory to a ByteRover space.
4
55
  */
5
56
  export class BrvConfig {
57
+ chatLogPath;
58
+ cipherAgentContext;
59
+ cipherAgentModes;
60
+ cipherAgentSystemPrompt;
6
61
  createdAt;
62
+ cwd;
63
+ ide;
7
64
  spaceId;
8
65
  spaceName;
9
66
  teamId;
10
67
  teamName;
11
- // eslint-disable-next-line max-params
12
- constructor(createdAt, spaceId, spaceName, teamId, teamName) {
13
- if (createdAt.trim().length === 0) {
68
+ version;
69
+ constructor(params) {
70
+ if (params.createdAt.trim().length === 0) {
14
71
  throw new Error('Created at cannot be empty');
15
72
  }
16
- if (spaceId.trim().length === 0) {
73
+ if (params.spaceId.trim().length === 0) {
17
74
  throw new Error('Space ID cannot be empty');
18
75
  }
19
- if (spaceName.trim().length === 0) {
76
+ if (params.spaceName.trim().length === 0) {
20
77
  throw new Error('Space name cannot be empty');
21
78
  }
22
- if (teamId.trim().length === 0) {
79
+ if (params.teamId.trim().length === 0) {
23
80
  throw new Error('Team ID cannot be empty');
24
81
  }
25
- if (teamName.trim().length === 0) {
82
+ if (params.teamName.trim().length === 0) {
26
83
  throw new Error('Team name cannot be empty');
27
84
  }
28
- this.createdAt = createdAt;
29
- this.spaceId = spaceId;
30
- this.spaceName = spaceName;
31
- this.teamId = teamId;
32
- this.teamName = teamName;
85
+ this.chatLogPath = params.chatLogPath;
86
+ this.cipherAgentContext = params.cipherAgentContext;
87
+ this.cipherAgentModes = params.cipherAgentModes;
88
+ this.cipherAgentSystemPrompt = params.cipherAgentSystemPrompt;
89
+ this.createdAt = params.createdAt;
90
+ this.cwd = params.cwd;
91
+ this.ide = params.ide;
92
+ this.spaceId = params.spaceId;
93
+ this.spaceName = params.spaceName;
94
+ this.teamId = params.teamId;
95
+ this.teamName = params.teamName;
96
+ this.version = params.version;
33
97
  }
34
98
  /**
35
- * Deserializes config from JSON format
99
+ * Deserializes config from JSON format.
100
+ * @throws Error if the JSON structure is invalid.
101
+ * @throws BrvConfigVersionError if version is missing or mismatched.
36
102
  */
37
103
  static fromJson(json) {
38
- return new BrvConfig(json.createdAt, json.spaceId, json.spaceName, json.teamId, json.teamName);
104
+ if (!isBrvConfigJson(json)) {
105
+ throw new Error('Invalid BrvConfig JSON structure');
106
+ }
107
+ if (json.version === undefined) {
108
+ throw new BrvConfigVersionError({
109
+ currentVersion: undefined,
110
+ expectedVersion: BRV_CONFIG_VERSION,
111
+ });
112
+ }
113
+ if (json.version !== BRV_CONFIG_VERSION) {
114
+ throw new BrvConfigVersionError({
115
+ currentVersion: json.version,
116
+ expectedVersion: BRV_CONFIG_VERSION,
117
+ });
118
+ }
119
+ return new BrvConfig({ ...json, version: json.version });
39
120
  }
40
121
  /**
41
- * Creates a BrvConfig from a Space entity
122
+ * Creates a BrvConfig from a Space entity.
42
123
  */
43
- static fromSpace(space) {
44
- return new BrvConfig(new Date().toISOString(), space.id, space.name, space.teamId, space.teamName);
124
+ static fromSpace(params) {
125
+ return new BrvConfig({
126
+ chatLogPath: params.chatLogPath,
127
+ createdAt: new Date().toISOString(),
128
+ cwd: params.cwd,
129
+ ide: params.ide,
130
+ spaceId: params.space.id,
131
+ spaceName: params.space.name,
132
+ teamId: params.space.teamId,
133
+ teamName: params.space.teamName,
134
+ version: BRV_CONFIG_VERSION,
135
+ });
45
136
  }
46
137
  /**
47
138
  * Serializes the config to JSON format
48
139
  */
49
140
  toJson() {
50
141
  return {
142
+ chatLogPath: this.chatLogPath,
143
+ cipherAgentContext: this.cipherAgentContext,
144
+ cipherAgentModes: this.cipherAgentModes,
145
+ cipherAgentSystemPrompt: this.cipherAgentSystemPrompt,
51
146
  createdAt: this.createdAt,
147
+ cwd: this.cwd,
148
+ ide: this.ide,
52
149
  spaceId: this.spaceId,
53
150
  spaceName: this.spaceName,
54
151
  teamId: this.teamId,
55
152
  teamName: this.teamName,
153
+ version: this.version,
56
154
  };
57
155
  }
58
156
  }
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Valid operation types for CoGit push context.
3
+ */
4
+ export type ContextOperation = 'add' | 'delete' | 'edit';
5
+ /**
6
+ * Parameters for creating a CogitPushContext instance.
7
+ */
8
+ export type CogitPushContextParams = {
9
+ content: string;
10
+ operation: ContextOperation;
11
+ path: string;
12
+ tags: string[];
13
+ title: string;
14
+ };
15
+ /**
16
+ * Represents a single context file operation in a CoGit push.
17
+ * Used for adding, editing, or deleting context files.
18
+ */
19
+ export declare class CogitPushContext {
20
+ readonly content: string;
21
+ readonly operation: ContextOperation;
22
+ readonly path: string;
23
+ readonly tags: readonly string[];
24
+ readonly title: string;
25
+ constructor(params: CogitPushContextParams);
26
+ /**
27
+ * Creates a CogitPushContext instance from a JSON object.
28
+ * @param json JSON object representing the context
29
+ * @returns An instance of CogitPushContext
30
+ * @throws TypeError if required fields are missing or have invalid types
31
+ */
32
+ static fromJson(json: unknown): CogitPushContext;
33
+ /**
34
+ * Converts the CogitPushContext instance to a JSON object for the API.
35
+ * @returns A JSON object for API serialization
36
+ */
37
+ toJson(): Record<string, unknown>;
38
+ }
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Type guard to validate operation type.
3
+ */
4
+ const isValidOperation = (operation) => operation === 'add' || operation === 'edit' || operation === 'delete';
5
+ /**
6
+ * Represents a single context file operation in a CoGit push.
7
+ * Used for adding, editing, or deleting context files.
8
+ */
9
+ export class CogitPushContext {
10
+ content;
11
+ operation;
12
+ path;
13
+ tags;
14
+ title;
15
+ constructor(params) {
16
+ if (!isValidOperation(params.operation)) {
17
+ throw new Error(`Invalid operation: ${params.operation}. Must be 'add', 'edit', or 'delete'`);
18
+ }
19
+ if (params.path.trim().length === 0) {
20
+ throw new Error('CogitPushContext path cannot be empty');
21
+ }
22
+ // For 'add' operation, content and title are required
23
+ if (params.operation === 'add') {
24
+ if (params.content.trim().length === 0) {
25
+ throw new Error('CogitPushContext content cannot be empty for add operation');
26
+ }
27
+ if (params.title.trim().length === 0) {
28
+ throw new Error('CogitPushContext title cannot be empty for add operation');
29
+ }
30
+ }
31
+ this.operation = params.operation;
32
+ this.path = params.path;
33
+ this.title = params.title;
34
+ this.content = params.content;
35
+ // Defensive copy to prevent external mutation
36
+ this.tags = [...params.tags];
37
+ }
38
+ /**
39
+ * Creates a CogitPushContext instance from a JSON object.
40
+ * @param json JSON object representing the context
41
+ * @returns An instance of CogitPushContext
42
+ * @throws TypeError if required fields are missing or have invalid types
43
+ */
44
+ static fromJson(json) {
45
+ if (!json || typeof json !== 'object') {
46
+ throw new TypeError('CogitPushContext JSON must be an object');
47
+ }
48
+ const obj = json;
49
+ if (typeof obj.operation !== 'string') {
50
+ throw new TypeError('CogitPushContext JSON must have a string operation field');
51
+ }
52
+ if (typeof obj.path !== 'string') {
53
+ throw new TypeError('CogitPushContext JSON must have a string path field');
54
+ }
55
+ if (typeof obj.title !== 'string') {
56
+ throw new TypeError('CogitPushContext JSON must have a string title field');
57
+ }
58
+ if (typeof obj.content !== 'string') {
59
+ throw new TypeError('CogitPushContext JSON must have a string content field');
60
+ }
61
+ if (!Array.isArray(obj.tags)) {
62
+ throw new TypeError('CogitPushContext JSON must have a tags array');
63
+ }
64
+ const tags = obj.tags.map((tag) => {
65
+ if (typeof tag !== 'string') {
66
+ throw new TypeError('CogitPushContext tags must all be strings');
67
+ }
68
+ return tag;
69
+ });
70
+ return new CogitPushContext({
71
+ content: obj.content,
72
+ operation: obj.operation,
73
+ path: obj.path,
74
+ tags,
75
+ title: obj.title,
76
+ });
77
+ }
78
+ /**
79
+ * Converts the CogitPushContext instance to a JSON object for the API.
80
+ * @returns A JSON object for API serialization
81
+ */
82
+ toJson() {
83
+ return {
84
+ content: this.content,
85
+ operation: this.operation,
86
+ path: this.path,
87
+ tags: [...this.tags],
88
+ title: this.title,
89
+ };
90
+ }
91
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Parameters for creating a CogitPushResponse instance.
3
+ */
4
+ export type CogitPushResponseParams = {
5
+ message: string;
6
+ success: boolean;
7
+ };
8
+ export declare class CogitPushResponse {
9
+ readonly message: string;
10
+ readonly success: boolean;
11
+ constructor(params: CogitPushResponseParams);
12
+ /**
13
+ * Creates a CogitPushResponse instance from a JSON object.
14
+ * Handles snake_case API response format.
15
+ * @param json JSON object representing the response
16
+ * @returns An instance of CogitPushResponse
17
+ * @throws TypeError if required fields are missing or have invalid types
18
+ */
19
+ static fromJson(json: unknown): CogitPushResponse;
20
+ }
@@ -0,0 +1,31 @@
1
+ export class CogitPushResponse {
2
+ message;
3
+ success;
4
+ constructor(params) {
5
+ this.message = params.message;
6
+ this.success = params.success;
7
+ }
8
+ /**
9
+ * Creates a CogitPushResponse instance from a JSON object.
10
+ * Handles snake_case API response format.
11
+ * @param json JSON object representing the response
12
+ * @returns An instance of CogitPushResponse
13
+ * @throws TypeError if required fields are missing or have invalid types
14
+ */
15
+ static fromJson(json) {
16
+ if (!json || typeof json !== 'object') {
17
+ throw new TypeError('CogitPushResponse JSON must be an object');
18
+ }
19
+ const obj = json;
20
+ if (typeof obj.success !== 'boolean') {
21
+ throw new TypeError('CogitPushResponse JSON must have a boolean success field');
22
+ }
23
+ if (typeof obj.message !== 'string') {
24
+ throw new TypeError('CogitPushResponse JSON must have a string message field');
25
+ }
26
+ return new CogitPushResponse({
27
+ message: obj.message,
28
+ success: obj.success,
29
+ });
30
+ }
31
+ }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Parameters for creating a CogitSnapshotAuthor instance.
3
+ */
4
+ export type CogitSnapshotAuthorParams = {
5
+ email: string;
6
+ name: string;
7
+ when: string;
8
+ };
9
+ /**
10
+ * Represents the author information in a CoGit snapshot.
11
+ */
12
+ export declare class CogitSnapshotAuthor {
13
+ readonly email: string;
14
+ readonly name: string;
15
+ readonly when: Date;
16
+ constructor(params: CogitSnapshotAuthorParams);
17
+ /**
18
+ * Creates a CogitSnapshotAuthor instance from a JSON object.
19
+ * @param json JSON object representing the author
20
+ * @returns An instance of CogitSnapshotAuthor
21
+ * @throws TypeError if required fields are missing or have invalid types
22
+ */
23
+ static fromJson(json: unknown): CogitSnapshotAuthor;
24
+ }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Represents the author information in a CoGit snapshot.
3
+ */
4
+ export class CogitSnapshotAuthor {
5
+ email;
6
+ name;
7
+ when;
8
+ constructor(params) {
9
+ this.email = params.email;
10
+ this.name = params.name;
11
+ this.when = new Date(params.when);
12
+ }
13
+ /**
14
+ * Creates a CogitSnapshotAuthor instance from a JSON object.
15
+ * @param json JSON object representing the author
16
+ * @returns An instance of CogitSnapshotAuthor
17
+ * @throws TypeError if required fields are missing or have invalid types
18
+ */
19
+ static fromJson(json) {
20
+ if (!json || typeof json !== 'object') {
21
+ throw new TypeError('CogitSnapshotAuthor JSON must be an object');
22
+ }
23
+ const obj = json;
24
+ if (typeof obj.email !== 'string') {
25
+ throw new TypeError('CogitSnapshotAuthor JSON must have a string email field');
26
+ }
27
+ if (typeof obj.name !== 'string') {
28
+ throw new TypeError('CogitSnapshotAuthor JSON must have a string name field');
29
+ }
30
+ if (typeof obj.when !== 'string') {
31
+ throw new TypeError('CogitSnapshotAuthor JSON must have a string when field');
32
+ }
33
+ return new CogitSnapshotAuthor({
34
+ email: obj.email,
35
+ name: obj.name,
36
+ when: obj.when,
37
+ });
38
+ }
39
+ }
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Parameters for creating a CogitSnapshotFile instance.
3
+ */
4
+ export type CogitSnapshotFileParams = {
5
+ content: string;
6
+ mode: string;
7
+ path: string;
8
+ sha: string;
9
+ size: number;
10
+ };
11
+ /**
12
+ * Represents a single file in a CoGit snapshot.
13
+ * Content is base64-encoded.
14
+ */
15
+ export declare class CogitSnapshotFile {
16
+ readonly content: string;
17
+ readonly mode: string;
18
+ readonly path: string;
19
+ readonly sha: string;
20
+ readonly size: number;
21
+ constructor(params: CogitSnapshotFileParams);
22
+ /**
23
+ * Creates a CogitSnapshotFile instance from a JSON object.
24
+ * @param json JSON object representing the file
25
+ * @returns An instance of CogitSnapshotFile
26
+ * @throws TypeError if required fields are missing or have invalid types
27
+ */
28
+ static fromJson(json: unknown): CogitSnapshotFile;
29
+ /**
30
+ * Decodes the base64 content to a UTF-8 string.
31
+ * @returns Decoded file content
32
+ */
33
+ decodeContent(): string;
34
+ }
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Represents a single file in a CoGit snapshot.
3
+ * Content is base64-encoded.
4
+ */
5
+ export class CogitSnapshotFile {
6
+ content;
7
+ mode;
8
+ path;
9
+ sha;
10
+ size;
11
+ constructor(params) {
12
+ this.content = params.content;
13
+ this.mode = params.mode;
14
+ this.path = params.path;
15
+ this.sha = params.sha;
16
+ this.size = params.size;
17
+ }
18
+ /**
19
+ * Creates a CogitSnapshotFile instance from a JSON object.
20
+ * @param json JSON object representing the file
21
+ * @returns An instance of CogitSnapshotFile
22
+ * @throws TypeError if required fields are missing or have invalid types
23
+ */
24
+ static fromJson(json) {
25
+ if (!json || typeof json !== 'object') {
26
+ throw new TypeError('CogitSnapshotFile JSON must be an object');
27
+ }
28
+ const obj = json;
29
+ if (typeof obj.content !== 'string') {
30
+ throw new TypeError('CogitSnapshotFile JSON must have a string content field');
31
+ }
32
+ if (typeof obj.mode !== 'string') {
33
+ throw new TypeError('CogitSnapshotFile JSON must have a string mode field');
34
+ }
35
+ if (typeof obj.path !== 'string') {
36
+ throw new TypeError('CogitSnapshotFile JSON must have a string path field');
37
+ }
38
+ if (typeof obj.sha !== 'string') {
39
+ throw new TypeError('CogitSnapshotFile JSON must have a string sha field');
40
+ }
41
+ if (typeof obj.size !== 'number') {
42
+ throw new TypeError('CogitSnapshotFile JSON must have a number size field');
43
+ }
44
+ return new CogitSnapshotFile({
45
+ content: obj.content,
46
+ mode: obj.mode,
47
+ path: obj.path,
48
+ sha: obj.sha,
49
+ size: obj.size,
50
+ });
51
+ }
52
+ /**
53
+ * Decodes the base64 content to a UTF-8 string.
54
+ * @returns Decoded file content
55
+ */
56
+ decodeContent() {
57
+ return Buffer.from(this.content, 'base64').toString('utf8');
58
+ }
59
+ }
@@ -0,0 +1,31 @@
1
+ import { CogitSnapshotAuthor } from './cogit-snapshot-author.js';
2
+ import { CogitSnapshotFile } from './cogit-snapshot-file.js';
3
+ /**
4
+ * Parameters for creating a CogitSnapshot instance.
5
+ */
6
+ export type CogitSnapshotParams = {
7
+ author: CogitSnapshotAuthor;
8
+ branch: string;
9
+ commitSha: string;
10
+ files: CogitSnapshotFile[];
11
+ message: string;
12
+ };
13
+ /**
14
+ * Represents a complete CoGit snapshot response.
15
+ */
16
+ export declare class CogitSnapshot {
17
+ readonly author: CogitSnapshotAuthor;
18
+ readonly branch: string;
19
+ readonly commitSha: string;
20
+ readonly files: readonly CogitSnapshotFile[];
21
+ readonly message: string;
22
+ constructor(params: CogitSnapshotParams);
23
+ /**
24
+ * Creates a CogitSnapshot instance from a JSON object.
25
+ * Handles snake_case API response format (commit_sha -> commitSha).
26
+ * @param json JSON object representing the snapshot
27
+ * @returns An instance of CogitSnapshot
28
+ * @throws TypeError if required fields are missing or have invalid types
29
+ */
30
+ static fromJson(json: unknown): CogitSnapshot;
31
+ }
@@ -0,0 +1,58 @@
1
+ import { CogitSnapshotAuthor } from './cogit-snapshot-author.js';
2
+ import { CogitSnapshotFile } from './cogit-snapshot-file.js';
3
+ /**
4
+ * Represents a complete CoGit snapshot response.
5
+ */
6
+ export class CogitSnapshot {
7
+ author;
8
+ branch;
9
+ commitSha;
10
+ files;
11
+ message;
12
+ constructor(params) {
13
+ this.author = params.author;
14
+ this.branch = params.branch;
15
+ this.commitSha = params.commitSha;
16
+ // Defensive copy to prevent external mutation
17
+ this.files = [...params.files];
18
+ this.message = params.message;
19
+ }
20
+ /**
21
+ * Creates a CogitSnapshot instance from a JSON object.
22
+ * Handles snake_case API response format (commit_sha -> commitSha).
23
+ * @param json JSON object representing the snapshot
24
+ * @returns An instance of CogitSnapshot
25
+ * @throws TypeError if required fields are missing or have invalid types
26
+ */
27
+ static fromJson(json) {
28
+ if (!json || typeof json !== 'object') {
29
+ throw new TypeError('CogitSnapshot JSON must be an object');
30
+ }
31
+ const obj = json;
32
+ if (typeof obj.branch !== 'string') {
33
+ throw new TypeError('CogitSnapshot JSON must have a string branch field');
34
+ }
35
+ // Handle snake_case from API
36
+ if (typeof obj.commit_sha !== 'string') {
37
+ throw new TypeError('CogitSnapshot JSON must have a string commit_sha field');
38
+ }
39
+ if (typeof obj.message !== 'string') {
40
+ throw new TypeError('CogitSnapshot JSON must have a string message field');
41
+ }
42
+ if (!Array.isArray(obj.files)) {
43
+ throw new TypeError('CogitSnapshot JSON must have a files array');
44
+ }
45
+ if (!obj.author || typeof obj.author !== 'object') {
46
+ throw new TypeError('CogitSnapshot JSON must have an author object');
47
+ }
48
+ const files = obj.files.map((file) => CogitSnapshotFile.fromJson(file));
49
+ const author = CogitSnapshotAuthor.fromJson(obj.author);
50
+ return new CogitSnapshot({
51
+ author,
52
+ branch: obj.branch,
53
+ commitSha: obj.commit_sha,
54
+ files,
55
+ message: obj.message,
56
+ });
57
+ }
58
+ }