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,108 @@
1
+ /**
2
+ * Manages the runtime state of the CipherAgent.
3
+ *
4
+ * Enhanced to track execution state, termination reasons, timing,
5
+ * and tool metrics following gemini-cli patterns. Maintains backward
6
+ * compatibility with legacy fields (executionHistory).
7
+ */
8
+ export class CipherAgentStateManager {
9
+ currentIteration = 0;
10
+ durationMs;
11
+ endTime;
12
+ executionHistory = [];
13
+ executionState = 'idle';
14
+ startTime;
15
+ terminationReason;
16
+ toolCallsExecuted = 0;
17
+ /**
18
+ * Add an execution record to history (legacy method).
19
+ * @param record - Execution record to add
20
+ */
21
+ addExecutionRecord(record) {
22
+ this.executionHistory.push(record);
23
+ }
24
+ /**
25
+ * Mark execution as complete with reason.
26
+ * @param reason - Why execution terminated
27
+ */
28
+ complete(reason) {
29
+ this.executionState = 'complete';
30
+ this.terminationReason = reason;
31
+ this.endTime = new Date();
32
+ if (this.startTime) {
33
+ this.durationMs = this.endTime.getTime() - this.startTime.getTime();
34
+ }
35
+ }
36
+ /**
37
+ * Mark execution as errored.
38
+ * @param reason - Error termination reason
39
+ */
40
+ fail(reason) {
41
+ this.executionState = 'error';
42
+ this.terminationReason = reason;
43
+ this.endTime = new Date();
44
+ if (this.startTime) {
45
+ this.durationMs = this.endTime.getTime() - this.startTime.getTime();
46
+ }
47
+ }
48
+ /**
49
+ * Get the current state.
50
+ * @returns Current agent state with all enhanced fields
51
+ */
52
+ getState() {
53
+ return {
54
+ currentIteration: this.currentIteration,
55
+ durationMs: this.durationMs,
56
+ endTime: this.endTime,
57
+ executionHistory: [...this.executionHistory],
58
+ executionState: this.executionState,
59
+ startTime: this.startTime,
60
+ terminationReason: this.terminationReason,
61
+ toolCallsExecuted: this.toolCallsExecuted,
62
+ };
63
+ }
64
+ /**
65
+ * Increment the iteration counter.
66
+ * @returns The new iteration count
67
+ */
68
+ incrementIteration() {
69
+ this.currentIteration++;
70
+ return this.currentIteration;
71
+ }
72
+ /**
73
+ * Increment the tool calls counter.
74
+ * @returns The new tool calls count
75
+ */
76
+ incrementToolCalls() {
77
+ this.toolCallsExecuted++;
78
+ return this.toolCallsExecuted;
79
+ }
80
+ /**
81
+ * Reset the state to initial values.
82
+ */
83
+ reset() {
84
+ this.currentIteration = 0;
85
+ this.durationMs = undefined;
86
+ this.endTime = undefined;
87
+ this.executionHistory = [];
88
+ this.executionState = 'idle';
89
+ this.startTime = undefined;
90
+ this.terminationReason = undefined;
91
+ this.toolCallsExecuted = 0;
92
+ }
93
+ /**
94
+ * Set the current execution state.
95
+ * @param state - New execution state
96
+ */
97
+ setExecutionState(state) {
98
+ this.executionState = state;
99
+ }
100
+ /**
101
+ * Start execution tracking.
102
+ * Sets startTime and transitions to executing state.
103
+ */
104
+ startExecution() {
105
+ this.startTime = new Date();
106
+ this.executionState = 'executing';
107
+ }
108
+ }
@@ -0,0 +1,182 @@
1
+ import type { BrvConfig } from '../../core/domain/entities/brv-config.js';
2
+ import type { IChatSession } from '../../core/interfaces/cipher/i-chat-session.js';
3
+ import type { AgentState, ExecutionContext, ICipherAgent } from '../../core/interfaces/cipher/i-cipher-agent.js';
4
+ import type { IHistoryStorage } from '../../core/interfaces/cipher/i-history-storage.js';
5
+ import type { CipherLLMConfig } from './agent-service-factory.js';
6
+ import type { AgentEventBus } from './events/event-emitter.js';
7
+ import type { FileSystemService } from './file-system/file-system-service.js';
8
+ import type { MemoryManager } from './memory/memory-manager.js';
9
+ import type { ProcessService } from './process/process-service.js';
10
+ import type { SimplePromptFactory } from './system-prompt/simple-prompt-factory.js';
11
+ import type { ToolManager } from './tools/tool-manager.js';
12
+ import type { ToolProvider } from './tools/tool-provider.js';
13
+ /**
14
+ * CipherAgent - Main agent implementation
15
+ *
16
+ * Following Dexto's pattern: CipherAgent orchestrates sessions and delegates
17
+ * execution to ChatSession instances. Each session maintains isolated conversation
18
+ * context while sharing global services (tools, prompts, file system, etc.).
19
+ *
20
+ * Architecture:
21
+ * - Agent creates and owns shared services (ToolManager, SystemPromptManager, etc.)
22
+ * - SessionManager creates session-specific services (LLM, EventBus)
23
+ * - Agent delegates execution to sessions via session.run()
24
+ *
25
+ * Follows two-phase initialization:
26
+ * 1. Constructor: validates and stores config
27
+ * 2. start(): asynchronously creates all services and SessionManager
28
+ *
29
+ * Backward compatible:
30
+ * - execute(input) uses default session automatically
31
+ * - New: execute(input, sessionId) for multi-session support
32
+ */
33
+ export declare class CipherAgent implements ICipherAgent {
34
+ readonly agentEventBus?: AgentEventBus;
35
+ readonly fileSystemService?: FileSystemService;
36
+ readonly historyStorage?: IHistoryStorage;
37
+ readonly memoryManager?: MemoryManager;
38
+ readonly processService?: ProcessService;
39
+ readonly promptFactory?: SimplePromptFactory;
40
+ readonly toolManager?: ToolManager;
41
+ readonly toolProvider?: ToolProvider;
42
+ private readonly _brvConfig?;
43
+ private _isStarted;
44
+ private readonly currentDefaultSessionId;
45
+ private defaultSession;
46
+ private readonly llmConfig;
47
+ private sessionManager?;
48
+ private readonly stateManager;
49
+ /**
50
+ * Creates a new CipherAgent instance
51
+ * Does NOT initialize services - call start() for async initialization
52
+ *
53
+ * @param llmConfig - LLM configuration (API key, model settings)
54
+ * @param brvConfig - Optional ByteRover config (for custom system prompt)
55
+ */
56
+ constructor(llmConfig: CipherLLMConfig, brvConfig?: BrvConfig);
57
+ /**
58
+ * Create a new session.
59
+ *
60
+ * @param sessionId - Optional session ID (generates UUID if not provided)
61
+ * @returns New or existing chat session
62
+ */
63
+ createSession(sessionId?: string): Promise<IChatSession>;
64
+ /**
65
+ * Delete a session completely (memory + history).
66
+ *
67
+ * @param sessionId - Session ID to delete
68
+ * @returns True if session existed and was deleted
69
+ */
70
+ deleteSession(sessionId: string): Promise<boolean>;
71
+ /**
72
+ * Execute the agent with user input.
73
+ *
74
+ * Following Dexto's pattern: determine target session, get or create it,
75
+ * then delegate to session.run().
76
+ *
77
+ * @param input - User input string
78
+ * @param sessionId - Optional session ID (uses 'default' if not provided)
79
+ * @param options - Optional execution options
80
+ * @param options.mode - Optional mode for system prompt ('autonomous' enables autonomous mode)
81
+ * @param options.executionContext - Optional execution context
82
+ * @returns Agent response from LLM
83
+ * @throws Error if agent is not started
84
+ */
85
+ execute(input: string, sessionId?: string, options?: {
86
+ executionContext?: ExecutionContext;
87
+ mode?: 'autonomous' | 'default' | 'query';
88
+ }): Promise<string>;
89
+ /**
90
+ * Get an existing session or create a new one.
91
+ * Useful for ensuring a session exists before pre-loading history.
92
+ *
93
+ * @param sessionId - Session ID to get or create
94
+ * @returns Existing or newly created chat session
95
+ */
96
+ getOrCreateSession(sessionId: string): Promise<IChatSession>;
97
+ /**
98
+ * Get a session by ID.
99
+ *
100
+ * @param sessionId - Session ID
101
+ * @returns Session instance or undefined if not found
102
+ */
103
+ getSession(sessionId: string): IChatSession | undefined;
104
+ /**
105
+ * Get session metadata without loading full history.
106
+ *
107
+ * @param sessionId - Session ID
108
+ * @returns Session metadata or undefined if not found
109
+ */
110
+ getSessionMetadata(sessionId: string): Promise<import('../../core/domain/cipher/storage/history-types.js').SessionMetadata | undefined>;
111
+ /**
112
+ * Get current agent state
113
+ *
114
+ * @returns Current state information
115
+ */
116
+ getState(): AgentState;
117
+ /**
118
+ * Get the current system prompt from SimplePromptFactory
119
+ * Useful for debugging and inspection
120
+ *
121
+ * @returns Current system prompt (built dynamically)
122
+ */
123
+ getSystemPrompt(): Promise<string>;
124
+ /**
125
+ * List all persisted session IDs from history storage.
126
+ *
127
+ * @returns Array of session IDs
128
+ */
129
+ listPersistedSessions(): Promise<string[]>;
130
+ /**
131
+ * List all session IDs (in-memory only).
132
+ *
133
+ * @returns Array of session IDs
134
+ */
135
+ listSessions(): string[];
136
+ /**
137
+ * Reset the agent to initial state.
138
+ * Clears execution history, resets iteration counter, and resets default session.
139
+ */
140
+ reset(): void;
141
+ /**
142
+ * Start the agent - initializes all services asynchronously
143
+ * Must be called before execute()
144
+ *
145
+ * @throws Error if agent is already started
146
+ */
147
+ start(): Promise<void>;
148
+ /**
149
+ * Ensure the agent has been started and all services are initialized
150
+ *
151
+ * @throws Error if agent is not started or services are not initialized
152
+ */
153
+ private ensureStarted;
154
+ /**
155
+ * Get initialized agent event bus (guaranteed to be defined after start())
156
+ *
157
+ * @returns AgentEventBus instance
158
+ * @throws Error if not initialized
159
+ */
160
+ private getAgentEventBus;
161
+ /**
162
+ * Get initialized history storage (guaranteed to be defined after start())
163
+ *
164
+ * @returns IHistoryStorage instance
165
+ * @throws Error if not initialized
166
+ */
167
+ private getHistoryStorage;
168
+ /**
169
+ * Get initialized prompt factory (guaranteed to be defined after start())
170
+ *
171
+ * @returns SimplePromptFactory instance
172
+ * @throws Error if not initialized
173
+ */
174
+ private getPromptFactory;
175
+ /**
176
+ * Get initialized session manager (guaranteed to be defined after start())
177
+ *
178
+ * @returns SessionManager instance
179
+ * @throws Error if not initialized
180
+ */
181
+ private getSessionManager;
182
+ }
@@ -0,0 +1,317 @@
1
+ import { createCipherAgentServices } from './agent-service-factory.js';
2
+ import { CipherAgentStateManager } from './cipher-agent-state-manager.js';
3
+ import { SessionManager } from './session/session-manager.js';
4
+ /**
5
+ * CipherAgent - Main agent implementation
6
+ *
7
+ * Following Dexto's pattern: CipherAgent orchestrates sessions and delegates
8
+ * execution to ChatSession instances. Each session maintains isolated conversation
9
+ * context while sharing global services (tools, prompts, file system, etc.).
10
+ *
11
+ * Architecture:
12
+ * - Agent creates and owns shared services (ToolManager, SystemPromptManager, etc.)
13
+ * - SessionManager creates session-specific services (LLM, EventBus)
14
+ * - Agent delegates execution to sessions via session.run()
15
+ *
16
+ * Follows two-phase initialization:
17
+ * 1. Constructor: validates and stores config
18
+ * 2. start(): asynchronously creates all services and SessionManager
19
+ *
20
+ * Backward compatible:
21
+ * - execute(input) uses default session automatically
22
+ * - New: execute(input, sessionId) for multi-session support
23
+ */
24
+ export class CipherAgent {
25
+ // Shared services (exposed publicly for external access)
26
+ // Made optional to avoid definite assignment assertions
27
+ agentEventBus;
28
+ fileSystemService;
29
+ historyStorage;
30
+ memoryManager;
31
+ processService;
32
+ promptFactory;
33
+ toolManager;
34
+ toolProvider;
35
+ _brvConfig;
36
+ _isStarted = false;
37
+ currentDefaultSessionId = 'default';
38
+ defaultSession = null;
39
+ llmConfig;
40
+ sessionManager;
41
+ stateManager;
42
+ /**
43
+ * Creates a new CipherAgent instance
44
+ * Does NOT initialize services - call start() for async initialization
45
+ *
46
+ * @param llmConfig - LLM configuration (API key, model settings)
47
+ * @param brvConfig - Optional ByteRover config (for custom system prompt)
48
+ */
49
+ constructor(llmConfig, brvConfig) {
50
+ this.llmConfig = llmConfig;
51
+ this._brvConfig = brvConfig;
52
+ this.stateManager = new CipherAgentStateManager();
53
+ }
54
+ /**
55
+ * Create a new session.
56
+ *
57
+ * @param sessionId - Optional session ID (generates UUID if not provided)
58
+ * @returns New or existing chat session
59
+ */
60
+ async createSession(sessionId) {
61
+ this.ensureStarted();
62
+ return this.getSessionManager().createSession(sessionId);
63
+ }
64
+ /**
65
+ * Delete a session completely (memory + history).
66
+ *
67
+ * @param sessionId - Session ID to delete
68
+ * @returns True if session existed and was deleted
69
+ */
70
+ async deleteSession(sessionId) {
71
+ this.ensureStarted();
72
+ return this.getSessionManager().deleteSession(sessionId);
73
+ }
74
+ /**
75
+ * Execute the agent with user input.
76
+ *
77
+ * Following Dexto's pattern: determine target session, get or create it,
78
+ * then delegate to session.run().
79
+ *
80
+ * @param input - User input string
81
+ * @param sessionId - Optional session ID (uses 'default' if not provided)
82
+ * @param options - Optional execution options
83
+ * @param options.mode - Optional mode for system prompt ('autonomous' enables autonomous mode)
84
+ * @param options.executionContext - Optional execution context
85
+ * @returns Agent response from LLM
86
+ * @throws Error if agent is not started
87
+ */
88
+ async execute(input, sessionId, options) {
89
+ // Ensure agent is started
90
+ this.ensureStarted();
91
+ // Determine target session (backward compatible: defaults to 'default')
92
+ const targetSessionId = sessionId ?? this.currentDefaultSessionId;
93
+ // Get or create session (lazy loading pattern from Dexto)
94
+ const sessionMgr = this.getSessionManager();
95
+ const existingSession = sessionMgr.getSession(targetSessionId);
96
+ const session = existingSession ?? (await sessionMgr.createSession(targetSessionId));
97
+ // Cache default session for faster access
98
+ if (targetSessionId === this.currentDefaultSessionId && !this.defaultSession) {
99
+ this.defaultSession = session;
100
+ }
101
+ // Increment iteration counter (agent-level state) - kept for internal tracking only
102
+ this.stateManager.incrementIteration();
103
+ // Note: Execution records removed to reduce log noise
104
+ // DELEGATE TO SESSION
105
+ // The ChatSession will:
106
+ // 1. Call llmService.completeTask()
107
+ // 2. LLM service handles agentic loop (tools, prompts, iterations)
108
+ // 3. Events forwarded from session bus to agent bus
109
+ const response = await session.run(input, options);
110
+ return response;
111
+ }
112
+ /**
113
+ * Get an existing session or create a new one.
114
+ * Useful for ensuring a session exists before pre-loading history.
115
+ *
116
+ * @param sessionId - Session ID to get or create
117
+ * @returns Existing or newly created chat session
118
+ */
119
+ async getOrCreateSession(sessionId) {
120
+ this.ensureStarted();
121
+ const sessionMgr = this.getSessionManager();
122
+ const existingSession = sessionMgr.getSession(sessionId);
123
+ return existingSession ?? sessionMgr.createSession(sessionId);
124
+ }
125
+ /**
126
+ * Get a session by ID.
127
+ *
128
+ * @param sessionId - Session ID
129
+ * @returns Session instance or undefined if not found
130
+ */
131
+ getSession(sessionId) {
132
+ this.ensureStarted();
133
+ return this.getSessionManager().getSession(sessionId);
134
+ }
135
+ /**
136
+ * Get session metadata without loading full history.
137
+ *
138
+ * @param sessionId - Session ID
139
+ * @returns Session metadata or undefined if not found
140
+ */
141
+ async getSessionMetadata(sessionId) {
142
+ this.ensureStarted();
143
+ return this.getHistoryStorage().getSessionMetadata(sessionId);
144
+ }
145
+ /**
146
+ * Get current agent state
147
+ *
148
+ * @returns Current state information
149
+ */
150
+ getState() {
151
+ return this.stateManager.getState();
152
+ }
153
+ /**
154
+ * Get the current system prompt from SimplePromptFactory
155
+ * Useful for debugging and inspection
156
+ *
157
+ * @returns Current system prompt (built dynamically)
158
+ */
159
+ async getSystemPrompt() {
160
+ this.ensureStarted();
161
+ return this.getPromptFactory().buildSystemPrompt({});
162
+ }
163
+ /**
164
+ * List all persisted session IDs from history storage.
165
+ *
166
+ * @returns Array of session IDs
167
+ */
168
+ async listPersistedSessions() {
169
+ this.ensureStarted();
170
+ return this.getHistoryStorage().listSessions();
171
+ }
172
+ /**
173
+ * List all session IDs (in-memory only).
174
+ *
175
+ * @returns Array of session IDs
176
+ */
177
+ listSessions() {
178
+ this.ensureStarted();
179
+ return this.getSessionManager().listSessions();
180
+ }
181
+ /**
182
+ * Reset the agent to initial state.
183
+ * Clears execution history, resets iteration counter, and resets default session.
184
+ */
185
+ reset() {
186
+ this.stateManager.reset();
187
+ // Reset default session if it exists
188
+ if (this.defaultSession) {
189
+ this.defaultSession.reset();
190
+ }
191
+ // Emit conversation reset event (only if agent is started)
192
+ if (this._isStarted) {
193
+ this.getAgentEventBus().emit('cipher:conversationReset', {
194
+ sessionId: this.currentDefaultSessionId,
195
+ });
196
+ }
197
+ }
198
+ /**
199
+ * Start the agent - initializes all services asynchronously
200
+ * Must be called before execute()
201
+ *
202
+ * @throws Error if agent is already started
203
+ */
204
+ async start() {
205
+ if (this._isStarted) {
206
+ throw new Error('CipherAgent is already started');
207
+ }
208
+ // Services will create necessary directories during their initialization
209
+ // No need for upfront validation - let services handle their own setup
210
+ // Create SHARED services only (following Dexto's pattern)
211
+ const sharedServices = await createCipherAgentServices(this.llmConfig);
212
+ // Extract gRPC config from llmConfig
213
+ const grpcConfig = {
214
+ accessToken: this.llmConfig.accessToken,
215
+ grpcEndpoint: this.llmConfig.grpcEndpoint,
216
+ projectId: this.llmConfig.projectId,
217
+ region: this.llmConfig.region,
218
+ sessionKey: this.llmConfig.sessionKey,
219
+ spaceId: this._brvConfig?.spaceId ?? '',
220
+ teamId: this._brvConfig?.teamId ?? '',
221
+ };
222
+ // Extract LLM config for sessions
223
+ const sessionLLMConfig = {
224
+ httpReferer: this.llmConfig.httpReferer,
225
+ maxIterations: this.llmConfig.maxIterations,
226
+ maxTokens: this.llmConfig.maxTokens,
227
+ model: this.llmConfig.model,
228
+ openRouterApiKey: this.llmConfig.openRouterApiKey,
229
+ siteName: this.llmConfig.siteName,
230
+ temperature: this.llmConfig.temperature,
231
+ verbose: this.llmConfig.verbose,
232
+ };
233
+ // Create SessionManager with shared services
234
+ const sessionManager = new SessionManager(sharedServices, grpcConfig, sessionLLMConfig, {
235
+ config: {
236
+ maxSessions: 100,
237
+ sessionTTL: 3_600_000, // 1 hour
238
+ },
239
+ });
240
+ // Assign services using Object.assign for readonly properties
241
+ Object.assign(this, {
242
+ ...sharedServices,
243
+ sessionManager,
244
+ });
245
+ this._isStarted = true;
246
+ }
247
+ /**
248
+ * Ensure the agent has been started and all services are initialized
249
+ *
250
+ * @throws Error if agent is not started or services are not initialized
251
+ */
252
+ ensureStarted() {
253
+ if (!this._isStarted) {
254
+ throw new Error('CipherAgent must be started before use. Call start() first.');
255
+ }
256
+ // Runtime validation to ensure services were properly initialized
257
+ if (!this.agentEventBus ||
258
+ !this.fileSystemService ||
259
+ !this.historyStorage ||
260
+ !this.memoryManager ||
261
+ !this.processService ||
262
+ !this.promptFactory ||
263
+ !this.toolManager ||
264
+ !this.toolProvider ||
265
+ !this.sessionManager) {
266
+ throw new Error('CipherAgent services not properly initialized. This is a bug.');
267
+ }
268
+ }
269
+ /**
270
+ * Get initialized agent event bus (guaranteed to be defined after start())
271
+ *
272
+ * @returns AgentEventBus instance
273
+ * @throws Error if not initialized
274
+ */
275
+ getAgentEventBus() {
276
+ if (!this.agentEventBus) {
277
+ throw new Error('AgentEventBus not initialized. This is a bug.');
278
+ }
279
+ return this.agentEventBus;
280
+ }
281
+ /**
282
+ * Get initialized history storage (guaranteed to be defined after start())
283
+ *
284
+ * @returns IHistoryStorage instance
285
+ * @throws Error if not initialized
286
+ */
287
+ getHistoryStorage() {
288
+ if (!this.historyStorage) {
289
+ throw new Error('HistoryStorage not initialized. This is a bug.');
290
+ }
291
+ return this.historyStorage;
292
+ }
293
+ /**
294
+ * Get initialized prompt factory (guaranteed to be defined after start())
295
+ *
296
+ * @returns SimplePromptFactory instance
297
+ * @throws Error if not initialized
298
+ */
299
+ getPromptFactory() {
300
+ if (!this.promptFactory) {
301
+ throw new Error('SimplePromptFactory not initialized. This is a bug.');
302
+ }
303
+ return this.promptFactory;
304
+ }
305
+ /**
306
+ * Get initialized session manager (guaranteed to be defined after start())
307
+ *
308
+ * @returns SessionManager instance
309
+ * @throws Error if not initialized
310
+ */
311
+ getSessionManager() {
312
+ if (!this.sessionManager) {
313
+ throw new Error('SessionManager not initialized. This is a bug.');
314
+ }
315
+ return this.sessionManager;
316
+ }
317
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Command parser for interactive CLI
3
+ * Parses user input to distinguish between slash commands and regular prompts
4
+ */
5
+ /**
6
+ * Result type for parsed commands
7
+ */
8
+ export type CommandResult = {
9
+ args?: string[];
10
+ command?: string;
11
+ rawInput: string;
12
+ type: 'command';
13
+ } | {
14
+ rawInput: string;
15
+ type: 'prompt';
16
+ };
17
+ /**
18
+ * Parse user input into command or prompt
19
+ *
20
+ * @param input - Raw user input string
21
+ * @returns Parsed command result (discriminated union)
22
+ */
23
+ export declare function parseInput(input: string): CommandResult;