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,71 @@
1
+ import type { AgentEventBus, SessionEventBus } from '../../../infra/cipher/events/event-emitter.js';
2
+ import type { FileSystemService } from '../../../infra/cipher/file-system/file-system-service.js';
3
+ import type { MemoryManager } from '../../../infra/cipher/memory/memory-manager.js';
4
+ import type { ProcessService } from '../../../infra/cipher/process/process-service.js';
5
+ import type { SimplePromptFactory } from '../../../infra/cipher/system-prompt/simple-prompt-factory.js';
6
+ import type { ToolManager } from '../../../infra/cipher/tools/tool-manager.js';
7
+ import type { ToolProvider } from '../../../infra/cipher/tools/tool-provider.js';
8
+ import type { IBlobStorage } from './i-blob-storage.js';
9
+ import type { ICodingAgentLogWatcher } from './i-coding-agent-log-watcher.js';
10
+ import type { IHistoryStorage } from './i-history-storage.js';
11
+ import type { ILLMService } from './i-llm-service.js';
12
+ import type { IPolicyEngine } from './i-policy-engine.js';
13
+ import type { IToolScheduler } from './i-tool-scheduler.js';
14
+ /**
15
+ * Shared services created at agent level and shared across all sessions.
16
+ *
17
+ * These services are singletons that provide global functionality:
18
+ * - AgentEventBus: Global event bus for agent-level events
19
+ * - ToolManager: Manages tool registration and execution (stateless)
20
+ * - ToolScheduler: Orchestrates tool execution with policy checks
21
+ * - PolicyEngine: Rule-based ALLOW/DENY decisions for tools
22
+ * - SimplePromptFactory: Builds system prompts from simple YAML templates
23
+ * - FileSystemService: File system operations
24
+ * - ProcessService: Command execution
25
+ * - BlobStorage: Binary data storage
26
+ * - HistoryStorage: Conversation history persistence
27
+ * - MemoryManager: Agent memory system
28
+ * - ToolProvider: Provides available tools
29
+ * - CodingAgentLogWatcher: Watches coding agent logs for learning (optional)
30
+ */
31
+ export interface CipherAgentServices {
32
+ agentEventBus: AgentEventBus;
33
+ blobStorage: IBlobStorage;
34
+ codingAgentLogWatcher?: ICodingAgentLogWatcher;
35
+ fileSystemService: FileSystemService;
36
+ historyStorage: IHistoryStorage;
37
+ memoryManager: MemoryManager;
38
+ policyEngine: IPolicyEngine;
39
+ processService: ProcessService;
40
+ promptFactory: SimplePromptFactory;
41
+ toolManager: ToolManager;
42
+ toolProvider: ToolProvider;
43
+ toolScheduler: IToolScheduler;
44
+ }
45
+ /**
46
+ * Session-specific services created per conversation session.
47
+ *
48
+ * These services are isolated per session to maintain conversation separation:
49
+ * - SessionEventBus: Session-scoped event bus
50
+ * - LLMService: LLM client with isolated context manager
51
+ */
52
+ export interface SessionServices {
53
+ llmService: ILLMService;
54
+ sessionEventBus: SessionEventBus;
55
+ }
56
+ /**
57
+ * Configuration for SessionManager
58
+ */
59
+ export interface SessionManagerConfig {
60
+ /**
61
+ * Maximum number of concurrent sessions allowed.
62
+ * Default: 100
63
+ */
64
+ maxSessions?: number;
65
+ /**
66
+ * Session time-to-live in milliseconds.
67
+ * Sessions inactive for longer than this will be cleaned up.
68
+ * Default: 3600000 (1 hour)
69
+ */
70
+ sessionTTL?: number;
71
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,78 @@
1
+ import type { BlobMetadata, BlobStats, StoredBlob } from '../../domain/cipher/blob/types.js';
2
+ /**
3
+ * Interface for blob storage operations
4
+ * Provides persistent storage for binary/large data blobs
5
+ */
6
+ export interface IBlobStorage {
7
+ /**
8
+ * Clear all blobs from storage
9
+ * WARNING: This is a destructive operation
10
+ *
11
+ * @throws If clearing fails
12
+ */
13
+ clear(): Promise<void>;
14
+ /**
15
+ * Delete a blob by its key
16
+ *
17
+ * @param key - The blob identifier
18
+ *
19
+ * @throws If blob not found or deletion fails
20
+ */
21
+ delete(key: string): Promise<void>;
22
+ /**
23
+ * Check if a blob exists
24
+ *
25
+ * @param key - The blob identifier
26
+ * @returns True if the blob exists, false otherwise
27
+ */
28
+ exists(key: string): Promise<boolean>;
29
+ /**
30
+ * Get metadata for a blob without retrieving its content
31
+ *
32
+ * @param key - The blob identifier
33
+ * @returns The blob metadata, or undefined if not found
34
+ *
35
+ * @throws If retrieval fails
36
+ */
37
+ getMetadata(key: string): Promise<BlobMetadata | undefined>;
38
+ /**
39
+ * Get storage statistics
40
+ *
41
+ * @returns Statistics about the blob storage (count, total size, last updated)
42
+ */
43
+ getStats(): Promise<BlobStats>;
44
+ /**
45
+ * Initialize the storage system
46
+ * Must be called before any other operations
47
+ *
48
+ * @throws If initialization fails
49
+ */
50
+ initialize(): Promise<void>;
51
+ /**
52
+ * List all blob keys, optionally filtered by prefix
53
+ *
54
+ * @param prefix - Optional prefix to filter keys
55
+ * @returns Array of blob keys matching the prefix
56
+ */
57
+ list(prefix?: string): Promise<string[]>;
58
+ /**
59
+ * Retrieve a blob by its key
60
+ *
61
+ * @param key - The blob identifier
62
+ * @returns The stored blob with content and metadata, or undefined if not found
63
+ *
64
+ * @throws If retrieval fails
65
+ */
66
+ retrieve(key: string): Promise<StoredBlob | undefined>;
67
+ /**
68
+ * Store a blob with optional metadata
69
+ *
70
+ * @param key - Unique identifier for the blob (alphanumeric, hyphens, underscores only)
71
+ * @param content - Blob content as Buffer or string
72
+ * @param metadata - Optional metadata (partial, defaults will be applied)
73
+ * @returns The stored blob with complete metadata
74
+ *
75
+ * @throws If key is invalid, content is too large, or storage fails
76
+ */
77
+ store(key: string, content: Buffer | string, metadata?: Partial<BlobMetadata>): Promise<StoredBlob>;
78
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,62 @@
1
+ import type { Message } from '../../domain/cipher/session/types.js';
2
+ import type { ILLMService } from './i-llm-service.js';
3
+ /**
4
+ * Interface for a chat session.
5
+ * Represents an isolated conversation context with message history.
6
+ */
7
+ export interface IChatSession {
8
+ /**
9
+ * Cancel the current operation.
10
+ * Aborts any ongoing LLM request.
11
+ */
12
+ cancel(): void;
13
+ /**
14
+ * Dispose of the session and clean up resources.
15
+ * Removes event listeners to prevent memory leaks.
16
+ * Should be called when session is no longer needed.
17
+ */
18
+ dispose?(): void;
19
+ /**
20
+ * Get the conversation history.
21
+ *
22
+ * @returns Array of messages in chronological order
23
+ */
24
+ getHistory(): Message[];
25
+ /**
26
+ * Get the LLM service for direct access to context manager.
27
+ * Useful for pre-loading conversation history in JSON input mode.
28
+ *
29
+ * @returns The LLM service instance
30
+ */
31
+ getLLMService(): ILLMService;
32
+ /**
33
+ * Get the number of messages in the conversation.
34
+ *
35
+ * @returns Message count
36
+ */
37
+ getMessageCount(): number;
38
+ /** Unique session identifier */
39
+ readonly id: string;
40
+ /**
41
+ * Reset the conversation history.
42
+ * Clears all messages except the system prompt (if present).
43
+ */
44
+ reset(): void;
45
+ /**
46
+ * Send a message and get a response.
47
+ * Handles tool execution loop automatically.
48
+ *
49
+ * @param input - User message content
50
+ * @param options - Optional execution options
51
+ * @param options.mode - Optional mode for system prompt ('autonomous' enables autonomous mode)
52
+ * @param options.executionContext - Optional execution context
53
+ * @returns Assistant response
54
+ * @throws SessionCancelledError if operation is cancelled
55
+ * @throws MaxIterationsExceededError if tool loop exceeds maximum iterations
56
+ * @throws LLMError if LLM call fails
57
+ */
58
+ run(input: string, options?: {
59
+ executionContext?: import('./i-cipher-agent.js').ExecutionContext;
60
+ mode?: 'autonomous' | 'default' | 'query';
61
+ }): Promise<string>;
62
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,88 @@
1
+ import type { TerminationReason } from '../../domain/cipher/agent/agent-state.js';
2
+ import type { SessionMetadata } from '../../domain/cipher/storage/history-types.js';
3
+ import type { ConversationMetadata } from '../../domain/cipher/system-prompt/types.js';
4
+ /**
5
+ * Execution context for the agent
6
+ * Contains runtime information about how the agent is being executed
7
+ */
8
+ export interface ExecutionContext {
9
+ /** Command type that initiated the execution (for command-specific prompt loading) */
10
+ commandType?: 'curate' | 'query';
11
+ /** Metadata about the conversation (for JSON input mode) */
12
+ conversationMetadata?: ConversationMetadata;
13
+ /** Whether running in JSON input mode (headless with conversation history) */
14
+ isJsonInputMode?: boolean;
15
+ }
16
+ /**
17
+ * Agent execution state (string union for external consumers).
18
+ */
19
+ export type AgentExecutionState = 'aborted' | 'complete' | 'error' | 'executing' | 'idle' | 'tool_calling';
20
+ /**
21
+ * Agent state information.
22
+ *
23
+ * Enhanced to include execution state, termination reason, timing,
24
+ * and tool metrics. Maintains backward compatibility with legacy fields.
25
+ */
26
+ export interface AgentState {
27
+ /** Current iteration/turn count */
28
+ currentIteration: number;
29
+ /** Execution duration in milliseconds (if available) */
30
+ durationMs?: number;
31
+ /** End time of execution (if complete) */
32
+ endTime?: Date;
33
+ /** Legacy: execution history records */
34
+ executionHistory: string[];
35
+ /** Current execution state */
36
+ executionState: AgentExecutionState;
37
+ /** Start time of execution (if started) */
38
+ startTime?: Date;
39
+ /** Why the execution terminated (if complete) */
40
+ terminationReason?: TerminationReason;
41
+ /** Number of tool calls executed */
42
+ toolCallsExecuted: number;
43
+ }
44
+ /**
45
+ * Interface for the CipherAgent
46
+ * Provides an agentic execution layer on top of the LLM service
47
+ */
48
+ export interface ICipherAgent {
49
+ /**
50
+ * Delete a session completely (memory + history)
51
+ * @param sessionId - Session ID to delete
52
+ * @returns True if session existed and was deleted
53
+ */
54
+ deleteSession(sessionId: string): Promise<boolean>;
55
+ /**
56
+ * Execute the agent with user input
57
+ * @param input - User input string
58
+ * @param sessionId - Optional session ID
59
+ * @returns Agent response
60
+ */
61
+ execute(input: string, sessionId?: string): Promise<string>;
62
+ /**
63
+ * Get session metadata without loading full history
64
+ * @param sessionId - Session ID
65
+ * @returns Session metadata or undefined if not found
66
+ */
67
+ getSessionMetadata(sessionId: string): Promise<SessionMetadata | undefined>;
68
+ /**
69
+ * Get current agent state
70
+ * @returns Current state information
71
+ */
72
+ getState(): AgentState;
73
+ /**
74
+ * List all persisted session IDs from history storage
75
+ * @returns Array of session IDs
76
+ */
77
+ listPersistedSessions(): Promise<string[]>;
78
+ /**
79
+ * Reset the agent to initial state
80
+ * Clears execution history and resets iteration counter
81
+ */
82
+ reset(): void;
83
+ /**
84
+ * Start the agent - initializes all services asynchronously
85
+ * Must be called before execute()
86
+ */
87
+ start(): Promise<void>;
88
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,20 @@
1
+ import type { CleanSession } from '../../domain/entities/parser.js';
2
+ import { Agent } from '../../domain/entities/agent.js';
3
+ /**
4
+ * Interface for parsing coding agent log files.
5
+ * Implementations use the raw/clean parser pipeline to process log files
6
+ * from various coding agents (Claude Code, GitHub Copilot, Cursor, Codex, etc.).
7
+ */
8
+ export interface ICodingAgentLogParser {
9
+ /**
10
+ * Parses coding agent log files using the configured IDE and chat log path.
11
+ *
12
+ * This method follows the two-phase raw/clean parser pipeline:
13
+ * 1. Raw Phase: Parse IDE-specific files, write to .brv/logs/{ide}/raw/
14
+ * 2. Clean Phase: Read from .brv/logs/{ide}/raw/, normalize to CleanSession format
15
+ *
16
+ * @returns A promise that resolves to a frozen array of CleanSession objects
17
+ * @throws Error if parsing fails at any phase
18
+ */
19
+ parse: (chatLogPath: string, ide: Agent) => Promise<readonly CleanSession[]>;
20
+ }
@@ -0,0 +1,31 @@
1
+ import type { CleanSession } from '../../domain/entities/parser.js';
2
+ import { Agent } from '../../domain/entities/agent.js';
3
+ /** Options for starting the coding agent log watcher. */
4
+ export type CodingAgentLogWatcherOptions = {
5
+ codingAgentInfo: {
6
+ chatLogPath: string;
7
+ name: Agent;
8
+ };
9
+ /** Callback invoked when sessions are parsed from log files */
10
+ onCleanSession: (cleanSession: CleanSession) => Promise<void>;
11
+ };
12
+ /**
13
+ * Interface for watching coding agent log files and processing sessions.
14
+ * Implementations should handle the first watch (process existing files) differently from subsequent watches (only new/changed files).
15
+ */
16
+ export interface ICodingAgentLogWatcher {
17
+ /**
18
+ * Checks if the watcher is currently active.
19
+ * @returns true if watching, false otherwise.
20
+ */
21
+ isWatching: () => boolean;
22
+ /**
23
+ * Starts watching the specified paths for coding agent log files.
24
+ * On initial start, processes existing files. Subsequent watches only process new or changed files.
25
+ * @param options Configuration options including paths and callback
26
+ * @throws Error if already watching or if paths are invalid
27
+ */
28
+ start: (options: CodingAgentLogWatcherOptions) => Promise<void>;
29
+ /** Stops watching for file changes and cleans up resources */
30
+ stop: () => Promise<void>;
31
+ }
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Content Generator interface for LLM providers.
3
+ *
4
+ * This interface provides a unified abstraction for all LLM backends,
5
+ * enabling the decorator pattern for cross-cutting concerns like:
6
+ * - Logging
7
+ * - Retry with backoff
8
+ * - Recording/replay (future)
9
+ *
10
+ * Based on gemini-cli's ContentGenerator pattern.
11
+ */
12
+ import type { ToolSet } from '../../domain/cipher/tools/types.js';
13
+ import type { ExecutionContext } from './i-cipher-agent.js';
14
+ import type { InternalMessage, ToolCall } from './message-types.js';
15
+ /**
16
+ * Configuration for content generation.
17
+ */
18
+ export interface GenerationConfig {
19
+ /** Maximum tokens in the response */
20
+ maxTokens?: number;
21
+ /** Temperature for randomness (0-1) */
22
+ temperature?: number;
23
+ /** Top-K sampling parameter */
24
+ topK?: number;
25
+ /** Top-P (nucleus) sampling parameter */
26
+ topP?: number;
27
+ }
28
+ /**
29
+ * Request to generate content from an LLM.
30
+ */
31
+ export interface GenerateContentRequest {
32
+ /** Generation configuration */
33
+ config: GenerationConfig;
34
+ /** Conversation history */
35
+ contents: InternalMessage[];
36
+ /** Optional execution context (for autonomous mode, etc.) */
37
+ executionContext?: ExecutionContext;
38
+ /** Optional mode for system prompt ('autonomous' enables autonomous mode) */
39
+ mode?: 'autonomous' | 'default' | 'query';
40
+ /** Model identifier */
41
+ model: string;
42
+ /** Session identifier */
43
+ sessionId: string;
44
+ /** Optional system prompt */
45
+ systemPrompt?: string;
46
+ /** Available tools for function calling */
47
+ tools?: ToolSet;
48
+ }
49
+ /**
50
+ * Response from content generation.
51
+ */
52
+ export interface GenerateContentResponse {
53
+ /** Generated text content */
54
+ content: string;
55
+ /** Reason why generation stopped */
56
+ finishReason: 'error' | 'max_tokens' | 'stop' | 'tool_calls';
57
+ /** Raw response from provider (for debugging) */
58
+ rawResponse?: unknown;
59
+ /** Tool calls requested by the model */
60
+ toolCalls?: ToolCall[];
61
+ /** Token usage statistics */
62
+ usage?: {
63
+ /** Tokens used for completion */
64
+ completionTokens: number;
65
+ /** Tokens used for prompt */
66
+ promptTokens: number;
67
+ /** Total tokens used */
68
+ totalTokens: number;
69
+ };
70
+ }
71
+ /**
72
+ * Chunk of streaming content generation.
73
+ */
74
+ export interface GenerateContentChunk {
75
+ /** Incremental text content */
76
+ content?: string;
77
+ /** Reason why generation stopped (only on final chunk) */
78
+ finishReason?: 'error' | 'max_tokens' | 'stop' | 'tool_calls';
79
+ /** Whether this is the final chunk */
80
+ isComplete: boolean;
81
+ /** Tool calls (only on final chunk or when complete) */
82
+ toolCalls?: ToolCall[];
83
+ }
84
+ /**
85
+ * Content Generator interface.
86
+ *
87
+ * All LLM providers implement this interface, enabling:
88
+ * - Consistent API across providers
89
+ * - Decorator pattern for cross-cutting concerns
90
+ * - Easy testing with fake implementations
91
+ */
92
+ export interface IContentGenerator {
93
+ /**
94
+ * Estimate tokens synchronously (fast, local).
95
+ *
96
+ * Uses a simple estimation algorithm for quick token counting.
97
+ * May not be perfectly accurate but is fast and doesn't require API calls.
98
+ *
99
+ * @param content - Text to estimate tokens for
100
+ * @returns Estimated token count
101
+ */
102
+ estimateTokensSync(content: string): number;
103
+ /**
104
+ * Generate content (non-streaming).
105
+ *
106
+ * @param request - Generation request
107
+ * @returns Generated content response
108
+ */
109
+ generateContent(request: GenerateContentRequest): Promise<GenerateContentResponse>;
110
+ /**
111
+ * Generate content with streaming.
112
+ *
113
+ * Yields chunks as they are generated, allowing for
114
+ * progressive display of responses.
115
+ *
116
+ * @param request - Generation request
117
+ * @returns Async generator yielding content chunks
118
+ */
119
+ generateContentStream(request: GenerateContentRequest): AsyncGenerator<GenerateContentChunk>;
120
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Content Generator interface for LLM providers.
3
+ *
4
+ * This interface provides a unified abstraction for all LLM backends,
5
+ * enabling the decorator pattern for cross-cutting concerns like:
6
+ * - Logging
7
+ * - Retry with backoff
8
+ * - Recording/replay (future)
9
+ *
10
+ * Based on gemini-cli's ContentGenerator pattern.
11
+ */
12
+ export {};
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Options for event listener registration.
3
+ */
4
+ export interface EventListenerOptions {
5
+ /**
6
+ * AbortSignal for automatic listener cleanup.
7
+ * When the signal is aborted, the listener will be automatically removed.
8
+ */
9
+ signal?: AbortSignal;
10
+ }
11
+ /**
12
+ * Type-safe event emitter interface.
13
+ *
14
+ * @template TEventMap - Map of event names to their payload types
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * interface MyEvents {
19
+ * 'user:login': { userId: string };
20
+ * 'user:logout': void;
21
+ * }
22
+ *
23
+ * const emitter: IEventEmitter<MyEvents> = ...;
24
+ *
25
+ * // Type-safe emission
26
+ * emitter.emit('user:login', { userId: '123' });
27
+ * emitter.emit('user:logout'); // No payload needed for void events
28
+ *
29
+ * // Type-safe listening
30
+ * emitter.on('user:login', (payload) => {
31
+ * console.log(payload.userId); // TypeScript knows payload type
32
+ * });
33
+ *
34
+ * // AbortController cleanup
35
+ * const controller = new AbortController();
36
+ * emitter.on('user:login', handler, { signal: controller.signal });
37
+ * controller.abort(); // Automatically removes listener
38
+ * ```
39
+ */
40
+ export interface IEventEmitter<TEventMap extends object> {
41
+ /**
42
+ * Emit an event with a payload.
43
+ *
44
+ * @param eventName - Name of the event to emit
45
+ * @param payload - Event payload (type-checked against TEventMap)
46
+ * @returns true if the event had listeners, false otherwise
47
+ */
48
+ emit<K extends keyof TEventMap>(eventName: K, ...payload: TEventMap[K] extends void ? [] : [TEventMap[K]]): boolean;
49
+ /**
50
+ * Remove an event listener.
51
+ *
52
+ * @param eventName - Name of the event
53
+ * @param listener - Callback function to remove
54
+ * @returns this (for chaining)
55
+ */
56
+ off<K extends keyof TEventMap>(eventName: K, listener: TEventMap[K] extends void ? () => void : (payload: TEventMap[K]) => void): this;
57
+ /**
58
+ * Register an event listener.
59
+ *
60
+ * @param eventName - Name of the event to listen for
61
+ * @param listener - Callback function (receives typed payload)
62
+ * @param options - Listener options (e.g., AbortSignal for cleanup)
63
+ * @returns this (for chaining)
64
+ */
65
+ on<K extends keyof TEventMap>(eventName: K, listener: TEventMap[K] extends void ? () => void : (payload: TEventMap[K]) => void, options?: EventListenerOptions): this;
66
+ /**
67
+ * Register a one-time event listener.
68
+ * The listener will be automatically removed after the first invocation.
69
+ *
70
+ * @param eventName - Name of the event to listen for
71
+ * @param listener - Callback function (receives typed payload)
72
+ * @param options - Listener options (e.g., AbortSignal for cleanup)
73
+ * @returns this (for chaining)
74
+ */
75
+ once<K extends keyof TEventMap>(eventName: K, listener: TEventMap[K] extends void ? () => void : (payload: TEventMap[K]) => void, options?: EventListenerOptions): this;
76
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,68 @@
1
+ import type { EditFileOptions, EditOperation, EditResult, FileContent, GlobOptions, GlobResult, ReadFileOptions, SearchOptions, SearchResult, WriteFileOptions, WriteResult } from '../../domain/cipher/file-system/types.js';
2
+ /**
3
+ * Interface for file system operations.
4
+ * Provides secure, validated access to the file system with comprehensive
5
+ * path validation, size limits, and allow/block list enforcement.
6
+ */
7
+ export interface IFileSystem {
8
+ /**
9
+ * Edit a file by replacing strings.
10
+ * Supports single replacement (requires unique match) or replace-all.
11
+ *
12
+ * @param filePath - Path to the file (relative or absolute)
13
+ * @param operation - Edit operation (old string, new string, replace-all flag)
14
+ * @param options - Edit options (encoding)
15
+ * @returns Edit result with replacements count and bytes written
16
+ * @throws FileNotFoundError if file doesn't exist
17
+ * @throws StringNotFoundError if old string not found
18
+ * @throws StringNotUniqueError if old string appears multiple times (and replaceAll=false)
19
+ */
20
+ editFile(filePath: string, operation: EditOperation, options?: EditFileOptions): Promise<EditResult>;
21
+ /**
22
+ * Find files matching a glob pattern.
23
+ *
24
+ * @param pattern - Glob pattern (e.g., src/\*\*\/\*.ts, \*.json)
25
+ * @param options - Glob options (cwd, max results, metadata)
26
+ * @returns Glob result with matched files and metadata
27
+ * @throws InvalidPatternError if pattern is invalid
28
+ */
29
+ globFiles(pattern: string, options?: GlobOptions): Promise<GlobResult>;
30
+ /**
31
+ * Initialize the file system service.
32
+ * Performs setup and validation of configuration.
33
+ */
34
+ initialize(): Promise<void>;
35
+ /**
36
+ * Read the contents of a file.
37
+ *
38
+ * @param filePath - Path to the file (relative or absolute)
39
+ * @param options - Read options (pagination, encoding)
40
+ * @returns File content with metadata
41
+ * @throws FileNotFoundError if file doesn't exist
42
+ * @throws PathNotAllowedError if path is not in allowed paths
43
+ * @throws FileTooLargeError if file exceeds size limit
44
+ */
45
+ readFile(filePath: string, options?: ReadFileOptions): Promise<FileContent>;
46
+ /**
47
+ * Search file contents for a pattern.
48
+ * Supports regex patterns and context lines.
49
+ *
50
+ * @param pattern - Search pattern (regex)
51
+ * @param options - Search options (glob filter, cwd, max results, context lines, case sensitivity)
52
+ * @returns Search result with matches and context
53
+ * @throws InvalidPatternError if pattern is invalid regex
54
+ */
55
+ searchContent(pattern: string, options?: SearchOptions): Promise<SearchResult>;
56
+ /**
57
+ * Write content to a file.
58
+ * Overwrites existing files. Can create parent directories if requested.
59
+ *
60
+ * @param filePath - Path to the file (relative or absolute)
61
+ * @param content - Content to write
62
+ * @param options - Write options (directory creation, encoding)
63
+ * @returns Write result with path and bytes written
64
+ * @throws PathNotAllowedError if path is not in allowed paths
65
+ * @throws InvalidExtensionError if file has blocked extension
66
+ */
67
+ writeFile(filePath: string, content: string, options?: WriteFileOptions): Promise<WriteResult>;
68
+ }
@@ -0,0 +1 @@
1
+ export {};