byterover-cli 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (498) hide show
  1. package/README.md +56 -56
  2. package/bin/dev.js +1 -1
  3. package/dist/commands/cipher-agent/run.d.ts +111 -0
  4. package/dist/commands/cipher-agent/run.js +493 -0
  5. package/dist/commands/cipher-agent/set-prompt.d.ts +14 -0
  6. package/dist/commands/cipher-agent/set-prompt.js +53 -0
  7. package/dist/commands/cipher-agent/show-prompt.d.ts +11 -0
  8. package/dist/commands/cipher-agent/show-prompt.js +48 -0
  9. package/dist/commands/clear.d.ts +6 -0
  10. package/dist/commands/clear.js +36 -15
  11. package/dist/commands/curate.d.ts +74 -0
  12. package/dist/commands/curate.js +396 -0
  13. package/dist/commands/foo.d.ts +12 -0
  14. package/dist/commands/foo.js +61 -0
  15. package/dist/commands/gen-rules.d.ts +3 -0
  16. package/dist/commands/gen-rules.js +39 -20
  17. package/dist/commands/init.d.ts +53 -2
  18. package/dist/commands/init.js +279 -66
  19. package/dist/commands/login.js +9 -4
  20. package/dist/commands/logout.d.ts +16 -0
  21. package/dist/commands/logout.js +61 -0
  22. package/dist/commands/pull.d.ts +33 -0
  23. package/dist/commands/pull.js +115 -0
  24. package/dist/commands/push.d.ts +13 -13
  25. package/dist/commands/push.js +81 -101
  26. package/dist/commands/query.d.ts +63 -0
  27. package/dist/commands/query.js +349 -0
  28. package/dist/commands/space/list.d.ts +5 -2
  29. package/dist/commands/space/list.js +60 -56
  30. package/dist/commands/space/switch.d.ts +16 -0
  31. package/dist/commands/space/switch.js +102 -53
  32. package/dist/commands/status.d.ts +5 -2
  33. package/dist/commands/status.js +43 -33
  34. package/dist/commands/watch.d.ts +23 -0
  35. package/dist/commands/watch.js +171 -0
  36. package/dist/config/auth.config.js +14 -2
  37. package/dist/config/context-tree-domains.d.ts +12 -0
  38. package/dist/config/context-tree-domains.js +29 -0
  39. package/dist/config/environment.d.ts +6 -0
  40. package/dist/config/environment.js +9 -2
  41. package/dist/constants.d.ts +5 -0
  42. package/dist/constants.js +6 -0
  43. package/dist/core/domain/cipher/agent/agent-state-machine.d.ts +128 -0
  44. package/dist/core/domain/cipher/agent/agent-state-machine.js +183 -0
  45. package/dist/core/domain/cipher/agent/agent-state.d.ts +77 -0
  46. package/dist/core/domain/cipher/agent/agent-state.js +59 -0
  47. package/dist/core/domain/cipher/agent/index.d.ts +7 -0
  48. package/dist/core/domain/cipher/agent/index.js +7 -0
  49. package/dist/core/domain/cipher/agent-events/index.d.ts +8 -0
  50. package/dist/core/domain/cipher/agent-events/index.js +7 -0
  51. package/dist/core/domain/cipher/agent-events/types.d.ts +419 -0
  52. package/dist/core/domain/cipher/agent-events/types.js +42 -0
  53. package/dist/core/domain/cipher/blob/types.d.ts +108 -0
  54. package/dist/core/domain/cipher/errors/blob-error.d.ts +36 -0
  55. package/dist/core/domain/cipher/errors/blob-error.js +68 -0
  56. package/dist/core/domain/cipher/errors/file-system-error.d.ts +211 -0
  57. package/dist/core/domain/cipher/errors/file-system-error.js +291 -0
  58. package/dist/core/domain/cipher/errors/llm-error.d.ts +120 -0
  59. package/dist/core/domain/cipher/errors/llm-error.js +161 -0
  60. package/dist/core/domain/cipher/errors/memory-error.d.ts +35 -0
  61. package/dist/core/domain/cipher/errors/memory-error.js +62 -0
  62. package/dist/core/domain/cipher/errors/process-error-code.d.ts +97 -0
  63. package/dist/core/domain/cipher/errors/process-error-code.js +98 -0
  64. package/dist/core/domain/cipher/errors/process-error.d.ts +135 -0
  65. package/dist/core/domain/cipher/errors/process-error.js +173 -0
  66. package/dist/core/domain/cipher/errors/session-error.d.ts +56 -0
  67. package/dist/core/domain/cipher/errors/session-error.js +74 -0
  68. package/dist/core/domain/cipher/errors/tool-error.d.ts +57 -0
  69. package/dist/core/domain/cipher/errors/tool-error.js +81 -0
  70. package/dist/core/domain/cipher/file-system/types.d.ts +203 -0
  71. package/dist/core/domain/cipher/memory/types.d.ts +102 -0
  72. package/dist/core/domain/cipher/memory/types.js +4 -0
  73. package/dist/core/domain/cipher/parsed-interaction.d.ts +47 -0
  74. package/dist/core/domain/cipher/parsed-interaction.js +25 -0
  75. package/dist/core/domain/cipher/process/types.d.ts +286 -0
  76. package/dist/core/domain/cipher/session/types.d.ts +54 -0
  77. package/dist/core/domain/cipher/storage/history-types.d.ts +38 -0
  78. package/dist/core/domain/cipher/system-prompt/types.d.ts +131 -0
  79. package/dist/core/domain/cipher/todos/index.d.ts +4 -0
  80. package/dist/core/domain/cipher/todos/index.js +4 -0
  81. package/dist/core/domain/cipher/todos/types.d.ts +57 -0
  82. package/dist/core/domain/cipher/todos/types.js +5 -0
  83. package/dist/core/domain/cipher/tools/constants.d.ts +28 -0
  84. package/dist/core/domain/cipher/tools/constants.js +24 -0
  85. package/dist/core/domain/cipher/tools/tool-error.d.ts +183 -0
  86. package/dist/core/domain/cipher/tools/tool-error.js +246 -0
  87. package/dist/core/domain/cipher/tools/types.d.ts +145 -0
  88. package/dist/core/domain/entities/brv-config.d.ts +42 -6
  89. package/dist/core/domain/entities/brv-config.js +115 -17
  90. package/dist/core/domain/entities/cogit-push-context.d.ts +38 -0
  91. package/dist/core/domain/entities/cogit-push-context.js +91 -0
  92. package/dist/core/domain/entities/cogit-push-response.d.ts +20 -0
  93. package/dist/core/domain/entities/cogit-push-response.js +31 -0
  94. package/dist/core/domain/entities/cogit-snapshot-author.d.ts +24 -0
  95. package/dist/core/domain/entities/cogit-snapshot-author.js +39 -0
  96. package/dist/core/domain/entities/cogit-snapshot-file.d.ts +34 -0
  97. package/dist/core/domain/entities/cogit-snapshot-file.js +59 -0
  98. package/dist/core/domain/entities/cogit-snapshot.d.ts +31 -0
  99. package/dist/core/domain/entities/cogit-snapshot.js +58 -0
  100. package/dist/core/domain/entities/context-tree-index.d.ts +26 -0
  101. package/dist/core/domain/entities/context-tree-index.js +27 -0
  102. package/dist/core/domain/entities/context-tree-snapshot.d.ts +56 -0
  103. package/dist/core/domain/entities/context-tree-snapshot.js +83 -0
  104. package/dist/core/domain/entities/event.d.ts +1 -1
  105. package/dist/core/domain/entities/event.js +4 -1
  106. package/dist/core/domain/entities/parser.d.ts +567 -0
  107. package/dist/core/domain/entities/parser.js +10 -0
  108. package/dist/core/domain/entities/playbook.d.ts +2 -23
  109. package/dist/core/domain/entities/playbook.js +2 -70
  110. package/dist/core/domain/errors/brv-config-version-error.d.ts +16 -0
  111. package/dist/core/domain/errors/brv-config-version-error.js +21 -0
  112. package/dist/core/domain/knowledge/directory-manager.d.ts +80 -0
  113. package/dist/core/domain/knowledge/directory-manager.js +145 -0
  114. package/dist/core/domain/knowledge/markdown-writer.d.ts +18 -0
  115. package/dist/core/domain/knowledge/markdown-writer.js +18 -0
  116. package/dist/core/domain/knowledge/relation-parser.d.ts +90 -0
  117. package/dist/core/domain/knowledge/relation-parser.js +131 -0
  118. package/dist/core/interfaces/cipher/cipher-services.d.ts +71 -0
  119. package/dist/core/interfaces/cipher/cipher-services.js +1 -0
  120. package/dist/core/interfaces/cipher/i-blob-storage.d.ts +78 -0
  121. package/dist/core/interfaces/cipher/i-blob-storage.js +1 -0
  122. package/dist/core/interfaces/cipher/i-chat-session.d.ts +62 -0
  123. package/dist/core/interfaces/cipher/i-chat-session.js +1 -0
  124. package/dist/core/interfaces/cipher/i-cipher-agent.d.ts +88 -0
  125. package/dist/core/interfaces/cipher/i-cipher-agent.js +1 -0
  126. package/dist/core/interfaces/cipher/i-coding-agent-log-parser.d.ts +20 -0
  127. package/dist/core/interfaces/cipher/i-coding-agent-log-parser.js +1 -0
  128. package/dist/core/interfaces/cipher/i-coding-agent-log-watcher.d.ts +31 -0
  129. package/dist/core/interfaces/cipher/i-coding-agent-log-watcher.js +1 -0
  130. package/dist/core/interfaces/cipher/i-content-generator.d.ts +120 -0
  131. package/dist/core/interfaces/cipher/i-content-generator.js +12 -0
  132. package/dist/core/interfaces/cipher/i-event-emitter.d.ts +76 -0
  133. package/dist/core/interfaces/cipher/i-event-emitter.js +1 -0
  134. package/dist/core/interfaces/cipher/i-file-system.d.ts +68 -0
  135. package/dist/core/interfaces/cipher/i-file-system.js +1 -0
  136. package/dist/core/interfaces/cipher/i-history-storage.d.ts +53 -0
  137. package/dist/core/interfaces/cipher/i-history-storage.js +1 -0
  138. package/dist/core/interfaces/cipher/i-llm-provider.d.ts +14 -0
  139. package/dist/core/interfaces/cipher/i-llm-provider.js +1 -0
  140. package/dist/core/interfaces/cipher/i-llm-service.d.ts +62 -0
  141. package/dist/core/interfaces/cipher/i-llm-service.js +1 -0
  142. package/dist/core/interfaces/cipher/i-logger.d.ts +78 -0
  143. package/dist/core/interfaces/cipher/i-logger.js +28 -0
  144. package/dist/core/interfaces/cipher/i-message-formatter.d.ts +44 -0
  145. package/dist/core/interfaces/cipher/i-message-formatter.js +1 -0
  146. package/dist/core/interfaces/cipher/i-policy-engine.d.ts +102 -0
  147. package/dist/core/interfaces/cipher/i-policy-engine.js +9 -0
  148. package/dist/core/interfaces/cipher/i-process-service.d.ts +65 -0
  149. package/dist/core/interfaces/cipher/i-process-service.js +1 -0
  150. package/dist/core/interfaces/cipher/i-system-prompt-contributor.d.ts +25 -0
  151. package/dist/core/interfaces/cipher/i-system-prompt-contributor.js +1 -0
  152. package/dist/core/interfaces/cipher/i-tokenizer.d.ts +15 -0
  153. package/dist/core/interfaces/cipher/i-tokenizer.js +1 -0
  154. package/dist/core/interfaces/cipher/i-tool-provider.d.ts +64 -0
  155. package/dist/core/interfaces/cipher/i-tool-provider.js +1 -0
  156. package/dist/core/interfaces/cipher/i-tool-scheduler.d.ts +103 -0
  157. package/dist/core/interfaces/cipher/i-tool-scheduler.js +11 -0
  158. package/dist/core/interfaces/cipher/llm-types.d.ts +46 -0
  159. package/dist/core/interfaces/cipher/llm-types.js +5 -0
  160. package/dist/core/interfaces/cipher/message-types.d.ts +118 -0
  161. package/dist/core/interfaces/cipher/message-types.js +5 -0
  162. package/dist/core/interfaces/cipher/tokenizer-types.d.ts +11 -0
  163. package/dist/core/interfaces/cipher/tokenizer-types.js +14 -0
  164. package/dist/core/interfaces/i-cogit-pull-service.d.ts +24 -0
  165. package/dist/core/interfaces/i-cogit-pull-service.js +1 -0
  166. package/dist/core/interfaces/i-cogit-push-service.d.ts +27 -0
  167. package/dist/core/interfaces/i-cogit-push-service.js +1 -0
  168. package/dist/core/interfaces/i-context-file-reader.d.ts +32 -0
  169. package/dist/core/interfaces/i-context-file-reader.js +1 -0
  170. package/dist/core/interfaces/i-context-tree-service.d.ts +21 -0
  171. package/dist/core/interfaces/i-context-tree-service.js +1 -0
  172. package/dist/core/interfaces/i-context-tree-snapshot-service.d.ts +36 -0
  173. package/dist/core/interfaces/i-context-tree-snapshot-service.js +1 -0
  174. package/dist/core/interfaces/i-context-tree-writer-service.d.ts +32 -0
  175. package/dist/core/interfaces/i-context-tree-writer-service.js +1 -0
  176. package/dist/core/interfaces/i-file-watcher-service.d.ts +41 -0
  177. package/dist/core/interfaces/i-file-watcher-service.js +1 -0
  178. package/dist/core/interfaces/i-rule-template-service.d.ts +0 -4
  179. package/dist/core/interfaces/i-rule-template-service.js +1 -4
  180. package/dist/core/interfaces/parser/i-clean-parser-service.d.ts +18 -0
  181. package/dist/core/interfaces/parser/i-clean-parser-service.js +1 -0
  182. package/dist/core/interfaces/parser/i-raw-parser-service.d.ts +17 -0
  183. package/dist/core/interfaces/parser/i-raw-parser-service.js +1 -0
  184. package/dist/core/interfaces/parser/i-session-normalizer.d.ts +56 -0
  185. package/dist/core/interfaces/parser/i-session-normalizer.js +1 -0
  186. package/dist/hooks/command_not_found/handle-invalid-commands.d.ts +7 -0
  187. package/dist/hooks/command_not_found/handle-invalid-commands.js +32 -0
  188. package/dist/hooks/error/clean-errors.d.ts +7 -0
  189. package/dist/hooks/error/clean-errors.js +50 -0
  190. package/dist/hooks/init/welcome.js +72 -1
  191. package/dist/hooks/prerun/validate-brv-config-version.d.ts +28 -0
  192. package/dist/hooks/prerun/validate-brv-config-version.js +43 -0
  193. package/dist/infra/cipher/agent-service-factory.d.ts +86 -0
  194. package/dist/infra/cipher/agent-service-factory.js +212 -0
  195. package/dist/infra/cipher/blob/blob-storage-factory.d.ts +13 -0
  196. package/dist/infra/cipher/blob/blob-storage-factory.js +14 -0
  197. package/dist/infra/cipher/blob/index.d.ts +10 -0
  198. package/dist/infra/cipher/blob/index.js +12 -0
  199. package/dist/infra/cipher/blob/migrations.d.ts +63 -0
  200. package/dist/infra/cipher/blob/migrations.js +148 -0
  201. package/dist/infra/cipher/blob/sqlite-blob-storage.d.ts +82 -0
  202. package/dist/infra/cipher/blob/sqlite-blob-storage.js +307 -0
  203. package/dist/infra/cipher/cipher-agent-state-manager.d.ts +63 -0
  204. package/dist/infra/cipher/cipher-agent-state-manager.js +108 -0
  205. package/dist/infra/cipher/cipher-agent.d.ts +182 -0
  206. package/dist/infra/cipher/cipher-agent.js +317 -0
  207. package/dist/infra/cipher/command-parser.d.ts +23 -0
  208. package/dist/infra/cipher/command-parser.js +85 -0
  209. package/dist/infra/cipher/display/todo-display.d.ts +23 -0
  210. package/dist/infra/cipher/display/todo-display.js +129 -0
  211. package/dist/infra/cipher/events/event-emitter.d.ts +137 -0
  212. package/dist/infra/cipher/events/event-emitter.js +158 -0
  213. package/dist/infra/cipher/exit-codes.d.ts +44 -0
  214. package/dist/infra/cipher/exit-codes.js +58 -0
  215. package/dist/infra/cipher/file-system/file-system-service.d.ts +105 -0
  216. package/dist/infra/cipher/file-system/file-system-service.js +641 -0
  217. package/dist/infra/cipher/file-system/gitignore-filter.d.ts +77 -0
  218. package/dist/infra/cipher/file-system/gitignore-filter.js +120 -0
  219. package/dist/infra/cipher/file-system/glob-utils.d.ts +60 -0
  220. package/dist/infra/cipher/file-system/glob-utils.js +120 -0
  221. package/dist/infra/cipher/file-system/path-validator.d.ts +69 -0
  222. package/dist/infra/cipher/file-system/path-validator.js +184 -0
  223. package/dist/infra/cipher/grpc/internal-llm-grpc-service.d.ts +149 -0
  224. package/dist/infra/cipher/grpc/internal-llm-grpc-service.js +364 -0
  225. package/dist/infra/cipher/grpc/internal-llm-grpc.proto +94 -0
  226. package/dist/infra/cipher/interactive-commands.d.ts +16 -0
  227. package/dist/infra/cipher/interactive-commands.js +198 -0
  228. package/dist/infra/cipher/interactive-loop.d.ts +24 -0
  229. package/dist/infra/cipher/interactive-loop.js +352 -0
  230. package/dist/infra/cipher/llm/context/async-mutex.d.ts +59 -0
  231. package/dist/infra/cipher/llm/context/async-mutex.js +92 -0
  232. package/dist/infra/cipher/llm/context/compression/index.d.ts +6 -0
  233. package/dist/infra/cipher/llm/context/compression/index.js +5 -0
  234. package/dist/infra/cipher/llm/context/compression/middle-removal.d.ts +40 -0
  235. package/dist/infra/cipher/llm/context/compression/middle-removal.js +76 -0
  236. package/dist/infra/cipher/llm/context/compression/oldest-removal.d.ts +38 -0
  237. package/dist/infra/cipher/llm/context/compression/oldest-removal.js +53 -0
  238. package/dist/infra/cipher/llm/context/compression/types.d.ts +36 -0
  239. package/dist/infra/cipher/llm/context/compression/types.js +1 -0
  240. package/dist/infra/cipher/llm/context/context-manager.d.ts +234 -0
  241. package/dist/infra/cipher/llm/context/context-manager.js +419 -0
  242. package/dist/infra/cipher/llm/context/index.d.ts +2 -0
  243. package/dist/infra/cipher/llm/context/index.js +2 -0
  244. package/dist/infra/cipher/llm/context/loop-detector.d.ts +125 -0
  245. package/dist/infra/cipher/llm/context/loop-detector.js +194 -0
  246. package/dist/infra/cipher/llm/context/utils.d.ts +17 -0
  247. package/dist/infra/cipher/llm/context/utils.js +89 -0
  248. package/dist/infra/cipher/llm/formatters/claude-formatter.d.ts +54 -0
  249. package/dist/infra/cipher/llm/formatters/claude-formatter.js +182 -0
  250. package/dist/infra/cipher/llm/formatters/gemini-formatter.d.ts +69 -0
  251. package/dist/infra/cipher/llm/formatters/gemini-formatter.js +253 -0
  252. package/dist/infra/cipher/llm/formatters/openrouter-formatter.d.ts +47 -0
  253. package/dist/infra/cipher/llm/formatters/openrouter-formatter.js +238 -0
  254. package/dist/infra/cipher/llm/generators/byterover-content-generator.d.ts +92 -0
  255. package/dist/infra/cipher/llm/generators/byterover-content-generator.js +211 -0
  256. package/dist/infra/cipher/llm/generators/index.d.ts +13 -0
  257. package/dist/infra/cipher/llm/generators/index.js +13 -0
  258. package/dist/infra/cipher/llm/generators/logging-content-generator.d.ts +104 -0
  259. package/dist/infra/cipher/llm/generators/logging-content-generator.js +182 -0
  260. package/dist/infra/cipher/llm/generators/openrouter-content-generator.d.ts +93 -0
  261. package/dist/infra/cipher/llm/generators/openrouter-content-generator.js +254 -0
  262. package/dist/infra/cipher/llm/generators/retryable-content-generator.d.ts +90 -0
  263. package/dist/infra/cipher/llm/generators/retryable-content-generator.js +157 -0
  264. package/dist/infra/cipher/llm/index.d.ts +9 -0
  265. package/dist/infra/cipher/llm/index.js +13 -0
  266. package/dist/infra/cipher/llm/internal-llm-service.d.ts +308 -0
  267. package/dist/infra/cipher/llm/internal-llm-service.js +724 -0
  268. package/dist/infra/cipher/llm/openrouter-llm-service.d.ts +183 -0
  269. package/dist/infra/cipher/llm/openrouter-llm-service.js +386 -0
  270. package/dist/infra/cipher/llm/response-validator.d.ts +89 -0
  271. package/dist/infra/cipher/llm/response-validator.js +157 -0
  272. package/dist/infra/cipher/llm/retry/index.d.ts +10 -0
  273. package/dist/infra/cipher/llm/retry/index.js +10 -0
  274. package/dist/infra/cipher/llm/retry/retry-policy.d.ts +74 -0
  275. package/dist/infra/cipher/llm/retry/retry-policy.js +146 -0
  276. package/dist/infra/cipher/llm/retry/retry-with-backoff.d.ts +113 -0
  277. package/dist/infra/cipher/llm/retry/retry-with-backoff.js +247 -0
  278. package/dist/infra/cipher/llm/thought-parser.d.ts +145 -0
  279. package/dist/infra/cipher/llm/thought-parser.js +190 -0
  280. package/dist/infra/cipher/llm/tokenizers/claude-tokenizer.d.ts +47 -0
  281. package/dist/infra/cipher/llm/tokenizers/claude-tokenizer.js +55 -0
  282. package/dist/infra/cipher/llm/tokenizers/default-tokenizer.d.ts +31 -0
  283. package/dist/infra/cipher/llm/tokenizers/default-tokenizer.js +38 -0
  284. package/dist/infra/cipher/llm/tokenizers/gemini-tokenizer.d.ts +37 -0
  285. package/dist/infra/cipher/llm/tokenizers/gemini-tokenizer.js +45 -0
  286. package/dist/infra/cipher/llm/tokenizers/openrouter-tokenizer.d.ts +29 -0
  287. package/dist/infra/cipher/llm/tokenizers/openrouter-tokenizer.js +37 -0
  288. package/dist/infra/cipher/llm/tool-output-processor.d.ts +117 -0
  289. package/dist/infra/cipher/llm/tool-output-processor.js +153 -0
  290. package/dist/infra/cipher/logger/console-logger.d.ts +42 -0
  291. package/dist/infra/cipher/logger/console-logger.js +63 -0
  292. package/dist/infra/cipher/logger/event-based-logger.d.ts +54 -0
  293. package/dist/infra/cipher/logger/event-based-logger.js +92 -0
  294. package/dist/infra/cipher/memory/index.d.ts +6 -0
  295. package/dist/infra/cipher/memory/index.js +7 -0
  296. package/dist/infra/cipher/memory/memory-manager.d.ts +136 -0
  297. package/dist/infra/cipher/memory/memory-manager.js +523 -0
  298. package/dist/infra/cipher/parsers/coding-agent-log-parser.d.ts +24 -0
  299. package/dist/infra/cipher/parsers/coding-agent-log-parser.js +51 -0
  300. package/dist/infra/cipher/process/command-validator.d.ts +59 -0
  301. package/dist/infra/cipher/process/command-validator.js +266 -0
  302. package/dist/infra/cipher/process/index.d.ts +8 -0
  303. package/dist/infra/cipher/process/index.js +8 -0
  304. package/dist/infra/cipher/process/process-service.d.ts +95 -0
  305. package/dist/infra/cipher/process/process-service.js +439 -0
  306. package/dist/infra/cipher/session/chat-session.d.ts +80 -0
  307. package/dist/infra/cipher/session/chat-session.js +165 -0
  308. package/dist/infra/cipher/session/index.d.ts +6 -0
  309. package/dist/infra/cipher/session/index.js +5 -0
  310. package/dist/infra/cipher/session/session-event-forwarder.d.ts +37 -0
  311. package/dist/infra/cipher/session/session-event-forwarder.js +83 -0
  312. package/dist/infra/cipher/session/session-manager.d.ts +109 -0
  313. package/dist/infra/cipher/session/session-manager.js +172 -0
  314. package/dist/infra/cipher/storage/blob-history-storage.d.ts +76 -0
  315. package/dist/infra/cipher/storage/blob-history-storage.js +178 -0
  316. package/dist/infra/cipher/system-prompt/simple-prompt-factory.d.ts +105 -0
  317. package/dist/infra/cipher/system-prompt/simple-prompt-factory.js +290 -0
  318. package/dist/infra/cipher/tools/core-tool-scheduler.d.ts +99 -0
  319. package/dist/infra/cipher/tools/core-tool-scheduler.js +161 -0
  320. package/dist/infra/cipher/tools/default-policy-rules.d.ts +26 -0
  321. package/dist/infra/cipher/tools/default-policy-rules.js +125 -0
  322. package/dist/infra/cipher/tools/implementations/bash-exec-tool.d.ts +12 -0
  323. package/dist/infra/cipher/tools/implementations/bash-exec-tool.js +93 -0
  324. package/dist/infra/cipher/tools/implementations/bash-output-tool.d.ts +12 -0
  325. package/dist/infra/cipher/tools/implementations/bash-output-tool.js +47 -0
  326. package/dist/infra/cipher/tools/implementations/create-knowledge-topic-tool.d.ts +11 -0
  327. package/dist/infra/cipher/tools/implementations/create-knowledge-topic-tool.js +142 -0
  328. package/dist/infra/cipher/tools/implementations/delete-memory-tool.d.ts +12 -0
  329. package/dist/infra/cipher/tools/implementations/delete-memory-tool.js +37 -0
  330. package/dist/infra/cipher/tools/implementations/detect-domains-tool.d.ts +7 -0
  331. package/dist/infra/cipher/tools/implementations/detect-domains-tool.js +73 -0
  332. package/dist/infra/cipher/tools/implementations/edit-file-tool.d.ts +13 -0
  333. package/dist/infra/cipher/tools/implementations/edit-file-tool.js +50 -0
  334. package/dist/infra/cipher/tools/implementations/edit-memory-tool.d.ts +13 -0
  335. package/dist/infra/cipher/tools/implementations/edit-memory-tool.js +53 -0
  336. package/dist/infra/cipher/tools/implementations/find-knowledge-topics-tool.d.ts +7 -0
  337. package/dist/infra/cipher/tools/implementations/find-knowledge-topics-tool.js +421 -0
  338. package/dist/infra/cipher/tools/implementations/glob-files-tool.d.ts +18 -0
  339. package/dist/infra/cipher/tools/implementations/glob-files-tool.js +70 -0
  340. package/dist/infra/cipher/tools/implementations/grep-content-tool.d.ts +12 -0
  341. package/dist/infra/cipher/tools/implementations/grep-content-tool.js +77 -0
  342. package/dist/infra/cipher/tools/implementations/kill-process-tool.d.ts +12 -0
  343. package/dist/infra/cipher/tools/implementations/kill-process-tool.js +55 -0
  344. package/dist/infra/cipher/tools/implementations/list-memories-tool.d.ts +12 -0
  345. package/dist/infra/cipher/tools/implementations/list-memories-tool.js +63 -0
  346. package/dist/infra/cipher/tools/implementations/read-file-tool.d.ts +12 -0
  347. package/dist/infra/cipher/tools/implementations/read-file-tool.js +54 -0
  348. package/dist/infra/cipher/tools/implementations/read-memory-tool.d.ts +12 -0
  349. package/dist/infra/cipher/tools/implementations/read-memory-tool.js +39 -0
  350. package/dist/infra/cipher/tools/implementations/search-history-tool.d.ts +10 -0
  351. package/dist/infra/cipher/tools/implementations/search-history-tool.js +36 -0
  352. package/dist/infra/cipher/tools/implementations/write-file-tool.d.ts +12 -0
  353. package/dist/infra/cipher/tools/implementations/write-file-tool.js +52 -0
  354. package/dist/infra/cipher/tools/implementations/write-memory-tool.d.ts +13 -0
  355. package/dist/infra/cipher/tools/implementations/write-memory-tool.js +52 -0
  356. package/dist/infra/cipher/tools/implementations/write-todos-tool.d.ts +10 -0
  357. package/dist/infra/cipher/tools/implementations/write-todos-tool.js +165 -0
  358. package/dist/infra/cipher/tools/index.d.ts +18 -0
  359. package/dist/infra/cipher/tools/index.js +19 -0
  360. package/dist/infra/cipher/tools/policy-engine.d.ts +80 -0
  361. package/dist/infra/cipher/tools/policy-engine.js +110 -0
  362. package/dist/infra/cipher/tools/tool-invocation-queue.d.ts +191 -0
  363. package/dist/infra/cipher/tools/tool-invocation-queue.js +254 -0
  364. package/dist/infra/cipher/tools/tool-invocation.d.ts +216 -0
  365. package/dist/infra/cipher/tools/tool-invocation.js +294 -0
  366. package/dist/infra/cipher/tools/tool-manager.d.ts +135 -0
  367. package/dist/infra/cipher/tools/tool-manager.js +209 -0
  368. package/dist/infra/cipher/tools/tool-markers.d.ts +48 -0
  369. package/dist/infra/cipher/tools/tool-markers.js +49 -0
  370. package/dist/infra/cipher/tools/tool-provider.d.ts +77 -0
  371. package/dist/infra/cipher/tools/tool-provider.js +196 -0
  372. package/dist/infra/cipher/tools/tool-registry.d.ts +52 -0
  373. package/dist/infra/cipher/tools/tool-registry.js +144 -0
  374. package/dist/infra/cipher/tools/utils/schema-converter.d.ts +10 -0
  375. package/dist/infra/cipher/tools/utils/schema-converter.js +29 -0
  376. package/dist/infra/cipher/validation/workspace-validator.d.ts +19 -0
  377. package/dist/infra/cipher/validation/workspace-validator.js +37 -0
  378. package/dist/infra/cipher/watcher/coding-agent-log-watcher.d.ts +14 -0
  379. package/dist/infra/cipher/watcher/coding-agent-log-watcher.js +55 -0
  380. package/dist/infra/cogit/context-tree-to-push-context-mapper.d.ts +21 -0
  381. package/dist/infra/cogit/context-tree-to-push-context-mapper.js +32 -0
  382. package/dist/infra/cogit/http-cogit-pull-service.d.ts +15 -0
  383. package/dist/infra/cogit/http-cogit-pull-service.js +30 -0
  384. package/dist/infra/cogit/http-cogit-push-service.d.ts +17 -0
  385. package/dist/infra/cogit/http-cogit-push-service.js +104 -0
  386. package/dist/infra/config/file-config-store.js +9 -3
  387. package/dist/infra/context-tree/file-context-file-reader.d.ts +14 -0
  388. package/dist/infra/context-tree/file-context-file-reader.js +46 -0
  389. package/dist/infra/context-tree/file-context-tree-service.d.ts +14 -0
  390. package/dist/infra/context-tree/file-context-tree-service.js +46 -0
  391. package/dist/infra/context-tree/file-context-tree-snapshot-service.d.ts +34 -0
  392. package/dist/infra/context-tree/file-context-tree-snapshot-service.js +117 -0
  393. package/dist/infra/context-tree/file-context-tree-writer-service.d.ts +22 -0
  394. package/dist/infra/context-tree/file-context-tree-writer-service.js +61 -0
  395. package/dist/infra/memory/http-memory-retrieval-service.js +2 -1
  396. package/dist/infra/memory/http-memory-storage-service.js +4 -3
  397. package/dist/infra/parsers/clean/clean-claude-service.d.ts +111 -0
  398. package/dist/infra/parsers/clean/clean-claude-service.js +271 -0
  399. package/dist/infra/parsers/clean/clean-codex-service.d.ts +231 -0
  400. package/dist/infra/parsers/clean/clean-codex-service.js +534 -0
  401. package/dist/infra/parsers/clean/clean-copilot-service.d.ts +255 -0
  402. package/dist/infra/parsers/clean/clean-copilot-service.js +729 -0
  403. package/dist/infra/parsers/clean/clean-cursor-service.d.ts +161 -0
  404. package/dist/infra/parsers/clean/clean-cursor-service.js +432 -0
  405. package/dist/infra/parsers/clean/clean-parser-service-factory.d.ts +54 -0
  406. package/dist/infra/parsers/clean/clean-parser-service-factory.js +80 -0
  407. package/dist/infra/parsers/clean/shared.d.ts +84 -0
  408. package/dist/infra/parsers/clean/shared.js +273 -0
  409. package/dist/infra/parsers/raw/raw-claude-service.d.ts +195 -0
  410. package/dist/infra/parsers/raw/raw-claude-service.js +548 -0
  411. package/dist/infra/parsers/raw/raw-codex-service.d.ts +313 -0
  412. package/dist/infra/parsers/raw/raw-codex-service.js +782 -0
  413. package/dist/infra/parsers/raw/raw-copilot-service.d.ts +196 -0
  414. package/dist/infra/parsers/raw/raw-copilot-service.js +558 -0
  415. package/dist/infra/parsers/raw/raw-cursor-service.d.ts +316 -0
  416. package/dist/infra/parsers/raw/raw-cursor-service.js +818 -0
  417. package/dist/infra/parsers/raw/raw-parser-service-factory.d.ts +54 -0
  418. package/dist/infra/parsers/raw/raw-parser-service-factory.js +81 -0
  419. package/dist/infra/rule/constants.d.ts +4 -0
  420. package/dist/infra/rule/constants.js +4 -0
  421. package/dist/infra/rule/rule-template-service.js +1 -1
  422. package/dist/infra/rule/rule-writer-service.js +1 -5
  423. package/dist/infra/space/http-space-service.js +2 -1
  424. package/dist/infra/team/http-team-service.js +2 -1
  425. package/dist/infra/user/http-user-service.js +2 -1
  426. package/dist/infra/watcher/file-watcher-service.d.ts +10 -0
  427. package/dist/infra/watcher/file-watcher-service.js +81 -0
  428. package/dist/infra/workspace/workspace-detector-service.d.ts +60 -0
  429. package/dist/infra/workspace/workspace-detector-service.js +165 -0
  430. package/dist/resources/prompts/curate-context-tree-curation.yml +48 -0
  431. package/dist/resources/prompts/modes/autonomous.yml +9 -0
  432. package/dist/resources/prompts/query-context-tree-retrieval.yml +49 -0
  433. package/dist/resources/prompts/reflection.yml +27 -0
  434. package/dist/resources/prompts/system-prompt.yml +82 -0
  435. package/dist/resources/prompts/tool-outputs.yml +30 -0
  436. package/dist/templates/README.md +6 -7
  437. package/dist/templates/sections/command-reference.md +40 -93
  438. package/dist/templates/sections/workflow.md +3 -30
  439. package/dist/utils/emoji-helpers.d.ts +38 -0
  440. package/dist/utils/emoji-helpers.js +42 -0
  441. package/dist/utils/error-handler.d.ts +51 -0
  442. package/dist/utils/error-handler.js +169 -0
  443. package/dist/utils/error-helpers.d.ts +30 -0
  444. package/dist/utils/error-helpers.js +47 -0
  445. package/dist/utils/file-helpers.d.ts +15 -0
  446. package/dist/utils/file-helpers.js +44 -0
  447. package/dist/utils/oclif-error-helpers.d.ts +40 -0
  448. package/dist/utils/oclif-error-helpers.js +46 -0
  449. package/dist/utils/tool-display-formatter.d.ts +53 -0
  450. package/dist/utils/tool-display-formatter.js +257 -0
  451. package/oclif.manifest.json +422 -142
  452. package/package.json +29 -10
  453. package/dist/commands/add.d.ts +0 -49
  454. package/dist/commands/add.js +0 -192
  455. package/dist/commands/complete.d.ts +0 -108
  456. package/dist/commands/complete.js +0 -340
  457. package/dist/commands/retrieve.d.ts +0 -26
  458. package/dist/commands/retrieve.js +0 -101
  459. package/dist/core/domain/entities/curator-output.d.ts +0 -14
  460. package/dist/core/domain/entities/curator-output.js +0 -23
  461. package/dist/core/domain/entities/delta-batch.d.ts +0 -30
  462. package/dist/core/domain/entities/delta-batch.js +0 -52
  463. package/dist/core/domain/entities/delta-operation.d.ts +0 -31
  464. package/dist/core/domain/entities/delta-operation.js +0 -50
  465. package/dist/core/domain/entities/executor-output.d.ts +0 -27
  466. package/dist/core/domain/entities/executor-output.js +0 -33
  467. package/dist/core/domain/entities/reflector-output.d.ts +0 -38
  468. package/dist/core/domain/entities/reflector-output.js +0 -44
  469. package/dist/core/interfaces/i-ace-prompt-builder.d.ts +0 -48
  470. package/dist/core/interfaces/i-bullet-content-store.d.ts +0 -36
  471. package/dist/core/interfaces/i-delta-store.d.ts +0 -15
  472. package/dist/core/interfaces/i-executor-output-store.d.ts +0 -14
  473. package/dist/core/interfaces/i-playbook-service.d.ts +0 -69
  474. package/dist/core/interfaces/i-playbook-store.d.ts +0 -38
  475. package/dist/core/interfaces/i-reflection-store.d.ts +0 -21
  476. package/dist/infra/ace/ace-file-utils.d.ts +0 -46
  477. package/dist/infra/ace/ace-file-utils.js +0 -83
  478. package/dist/infra/ace/ace-prompt-templates.d.ts +0 -13
  479. package/dist/infra/ace/ace-prompt-templates.js +0 -177
  480. package/dist/infra/ace/file-bullet-content-store.d.ts +0 -27
  481. package/dist/infra/ace/file-bullet-content-store.js +0 -89
  482. package/dist/infra/ace/file-delta-store.d.ts +0 -9
  483. package/dist/infra/ace/file-delta-store.js +0 -26
  484. package/dist/infra/ace/file-executor-output-store.d.ts +0 -9
  485. package/dist/infra/ace/file-executor-output-store.js +0 -26
  486. package/dist/infra/ace/file-playbook-store.d.ts +0 -29
  487. package/dist/infra/ace/file-playbook-store.js +0 -107
  488. package/dist/infra/ace/file-reflection-store.d.ts +0 -10
  489. package/dist/infra/ace/file-reflection-store.js +0 -55
  490. package/dist/infra/playbook/file-playbook-service.d.ts +0 -42
  491. package/dist/infra/playbook/file-playbook-service.js +0 -132
  492. /package/dist/core/{interfaces/i-ace-prompt-builder.js → domain/cipher/blob/types.js} +0 -0
  493. /package/dist/core/{interfaces/i-bullet-content-store.js → domain/cipher/file-system/types.js} +0 -0
  494. /package/dist/core/{interfaces/i-delta-store.js → domain/cipher/process/types.js} +0 -0
  495. /package/dist/core/{interfaces/i-executor-output-store.js → domain/cipher/session/types.js} +0 -0
  496. /package/dist/core/{interfaces/i-playbook-service.js → domain/cipher/storage/history-types.js} +0 -0
  497. /package/dist/core/{interfaces/i-playbook-store.js → domain/cipher/system-prompt/types.js} +0 -0
  498. /package/dist/core/{interfaces/i-reflection-store.js → domain/cipher/tools/types.js} +0 -0
@@ -15,18 +15,20 @@ export const ENV_CONFIG = {
15
15
  clientId: 'byterover-cli-client',
16
16
  cogitApiBaseUrl: 'https://dev-beta-cogit.byterover.dev/api/v1',
17
17
  issuerUrl: 'https://dev-beta-iam.byterover.dev/api/v1/oidc',
18
+ llmGrpcEndpoint: 'dev-beta-llm-grpc.byterover.dev',
18
19
  memoraApiBaseUrl: 'https://dev-beta-memora-retrieve.byterover.dev/api/v3',
19
20
  mixpanelToken: '258e1a2b3d44cc634ef28964771b1da0',
20
21
  scopes: ['read', 'write', 'debug'],
21
22
  tokenUrl: 'https://dev-beta-iam.byterover.dev/api/v1/oidc/token',
22
- webAppUrl: 'https://dev-beta-app.byterover.dev/',
23
+ webAppUrl: 'https://dev-beta-app.byterover.dev',
23
24
  },
24
25
  production: {
25
26
  apiBaseUrl: 'https://beta-iam.byterover.dev/api/v1',
26
27
  authorizationUrl: 'https://beta-iam.byterover.dev/api/v1/oidc/authorize',
27
28
  clientId: 'byterover-cli',
28
- cogitApiBaseUrl: 'https://beta-cogit.byterover.dev/api/v1',
29
+ cogitApiBaseUrl: 'https://beta-cgit.byterover.dev/api/v1',
29
30
  issuerUrl: 'https://beta-iam.byterover.dev/api/v1/oidc',
31
+ llmGrpcEndpoint: 'beta-llm-grpc.byterover.dev',
30
32
  memoraApiBaseUrl: 'https://beta-memora-retrieve.byterover.dev/api/v3',
31
33
  mixpanelToken: '4d1198b346d2d6ac75f2e77905cc65ac',
32
34
  scopes: ['read', 'write'],
@@ -39,3 +41,8 @@ export const ENV_CONFIG = {
39
41
  * @returns The environment configuration.
40
42
  */
41
43
  export const getCurrentConfig = () => ENV_CONFIG[ENVIRONMENT];
44
+ /**
45
+ * Check if the current environment is development.
46
+ * @returns True if in development mode, false otherwise.
47
+ */
48
+ export const isDevelopment = () => ENVIRONMENT === 'development';
@@ -1,11 +1,16 @@
1
1
  export declare const BRV_DIR = ".brv";
2
2
  export declare const PROJECT_CONFIG_FILE = "config.json";
3
+ export declare const BRV_CONFIG_VERSION = "0.0.1";
3
4
  export declare const ACE_DIR = "ace";
4
5
  export declare const EXECUTOR_OUTPUTS_DIR = "executor-outputs";
5
6
  export declare const REFLECTIONS_DIR = "reflections";
6
7
  export declare const DELTAS_DIR = "deltas";
7
8
  export declare const BULLETS_DIR = "bullets";
8
9
  export declare const PLAYBOOK_FILE = "playbook.json";
10
+ export declare const PROJECT = "byterover";
11
+ export declare const CONTEXT_TREE_DIR = "context-tree";
12
+ export declare const CONTEXT_FILE = "context.md";
13
+ export declare const SNAPSHOT_FILE = ".snapshot.json";
9
14
  /**
10
15
  * Default ByteRover branch name for memory storage.
11
16
  * This is ByteRover's internal branching mechanism, not Git branches.
package/dist/constants.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export const BRV_DIR = '.brv';
2
2
  export const PROJECT_CONFIG_FILE = 'config.json';
3
+ export const BRV_CONFIG_VERSION = '0.0.1';
3
4
  // ACE directory structure constants
4
5
  export const ACE_DIR = 'ace';
5
6
  export const EXECUTOR_OUTPUTS_DIR = 'executor-outputs';
@@ -7,6 +8,11 @@ export const REFLECTIONS_DIR = 'reflections';
7
8
  export const DELTAS_DIR = 'deltas';
8
9
  export const BULLETS_DIR = 'bullets';
9
10
  export const PLAYBOOK_FILE = 'playbook.json';
11
+ export const PROJECT = 'byterover';
12
+ // Context Tree directory structure constants
13
+ export const CONTEXT_TREE_DIR = 'context-tree';
14
+ export const CONTEXT_FILE = 'context.md';
15
+ export const SNAPSHOT_FILE = '.snapshot.json';
10
16
  /**
11
17
  * Default ByteRover branch name for memory storage.
12
18
  * This is ByteRover's internal branching mechanism, not Git branches.
@@ -0,0 +1,128 @@
1
+ /**
2
+ * Agent State Machine
3
+ *
4
+ * Implements a finite state machine for agent execution, following gemini-cli patterns.
5
+ * Manages state transitions, termination checks, and execution metrics.
6
+ *
7
+ * State Transitions:
8
+ * - IDLE → EXECUTING (start execution)
9
+ * - EXECUTING → TOOL_CALLING (tool calls in response)
10
+ * - EXECUTING → COMPLETE (no tool calls, task done)
11
+ * - EXECUTING → ERROR (execution failed)
12
+ * - EXECUTING → ABORTED (externally cancelled)
13
+ * - TOOL_CALLING → EXECUTING (tools executed, continue)
14
+ * - TOOL_CALLING → ERROR (tool execution failed)
15
+ * - TOOL_CALLING → ABORTED (externally cancelled)
16
+ */
17
+ import { AgentExecutionContext, AgentState, TerminationReason } from './agent-state.js';
18
+ /**
19
+ * Agent State Machine.
20
+ *
21
+ * Manages the execution state of an agent, including:
22
+ * - State transitions with validation
23
+ * - Termination condition checks (timeout, max turns)
24
+ * - Execution metrics (turn count, tool calls)
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * const sm = new AgentStateMachine(50, 600_000) // 50 turns, 10 min timeout
29
+ * sm.transition(AgentState.EXECUTING)
30
+ *
31
+ * while (!sm.isTerminal()) {
32
+ * const reason = sm.shouldTerminate()
33
+ * if (reason) break
34
+ *
35
+ * // Execute iteration...
36
+ * sm.incrementTurn()
37
+ * }
38
+ *
39
+ * sm.complete() // or sm.fail(error) or sm.abort()
40
+ * ```
41
+ */
42
+ export declare class AgentStateMachine {
43
+ private readonly maxTurns;
44
+ private readonly maxTimeMs;
45
+ private context;
46
+ private state;
47
+ /**
48
+ * Create a new agent state machine.
49
+ *
50
+ * @param maxTurns - Maximum number of turns before MAX_TURNS termination
51
+ * @param maxTimeMs - Maximum execution time in milliseconds before TIMEOUT
52
+ */
53
+ constructor(maxTurns: number, maxTimeMs: number);
54
+ /**
55
+ * Abort the execution externally.
56
+ *
57
+ * Transitions to ABORTED state and sets termination reason.
58
+ * Can be called from any non-terminal state.
59
+ */
60
+ abort(): void;
61
+ /**
62
+ * Complete the execution successfully.
63
+ *
64
+ * Transitions to COMPLETE state and sets GOAL as termination reason.
65
+ * Should be called when the LLM returns a response without tool calls.
66
+ */
67
+ complete(): void;
68
+ /**
69
+ * Fail the execution with an error.
70
+ *
71
+ * Transitions to ERROR state and stores the error.
72
+ * Should be called when an unrecoverable error occurs.
73
+ *
74
+ * @param error - The error that caused the failure
75
+ */
76
+ fail(error: Error): void;
77
+ /**
78
+ * Get a readonly copy of the current execution context.
79
+ *
80
+ * @returns Copy of the execution context
81
+ */
82
+ getContext(): Readonly<AgentExecutionContext>;
83
+ /**
84
+ * Get the current state.
85
+ *
86
+ * @returns Current agent state
87
+ */
88
+ getState(): AgentState;
89
+ /**
90
+ * Increment the turn counter.
91
+ *
92
+ * Should be called after each iteration of the agentic loop.
93
+ */
94
+ incrementTurn(): void;
95
+ /**
96
+ * Check if the state machine is in a terminal state.
97
+ *
98
+ * Terminal states are: COMPLETE, ERROR, ABORTED
99
+ *
100
+ * @returns True if in a terminal state
101
+ */
102
+ isTerminal(): boolean;
103
+ /**
104
+ * Record a tool call execution.
105
+ *
106
+ * Should be called after each tool is executed.
107
+ */
108
+ recordToolCall(): void;
109
+ /**
110
+ * Check if the execution should terminate.
111
+ *
112
+ * Checks for:
113
+ * - MAX_TURNS: Turn count >= maxTurns
114
+ * - TIMEOUT: Elapsed time > maxTimeMs
115
+ *
116
+ * @returns Termination reason if should terminate, null otherwise
117
+ */
118
+ shouldTerminate(): null | TerminationReason;
119
+ /**
120
+ * Transition to a new state.
121
+ *
122
+ * Validates the transition is allowed, then updates the state.
123
+ *
124
+ * @param newState - Target state
125
+ * @throws Error if the transition is not valid
126
+ */
127
+ transition(newState: AgentState): void;
128
+ }
@@ -0,0 +1,183 @@
1
+ /**
2
+ * Agent State Machine
3
+ *
4
+ * Implements a finite state machine for agent execution, following gemini-cli patterns.
5
+ * Manages state transitions, termination checks, and execution metrics.
6
+ *
7
+ * State Transitions:
8
+ * - IDLE → EXECUTING (start execution)
9
+ * - EXECUTING → TOOL_CALLING (tool calls in response)
10
+ * - EXECUTING → COMPLETE (no tool calls, task done)
11
+ * - EXECUTING → ERROR (execution failed)
12
+ * - EXECUTING → ABORTED (externally cancelled)
13
+ * - TOOL_CALLING → EXECUTING (tools executed, continue)
14
+ * - TOOL_CALLING → ERROR (tool execution failed)
15
+ * - TOOL_CALLING → ABORTED (externally cancelled)
16
+ */
17
+ import { AgentState, TerminationReason } from './agent-state.js';
18
+ /**
19
+ * Valid state transitions for the agent FSM.
20
+ * Each state maps to an array of valid target states.
21
+ */
22
+ const VALID_TRANSITIONS = {
23
+ [AgentState.ABORTED]: [],
24
+ [AgentState.COMPLETE]: [],
25
+ [AgentState.ERROR]: [],
26
+ [AgentState.EXECUTING]: [AgentState.TOOL_CALLING, AgentState.COMPLETE, AgentState.ERROR, AgentState.ABORTED],
27
+ [AgentState.IDLE]: [AgentState.EXECUTING],
28
+ [AgentState.TOOL_CALLING]: [AgentState.EXECUTING, AgentState.ERROR, AgentState.ABORTED],
29
+ };
30
+ /**
31
+ * Agent State Machine.
32
+ *
33
+ * Manages the execution state of an agent, including:
34
+ * - State transitions with validation
35
+ * - Termination condition checks (timeout, max turns)
36
+ * - Execution metrics (turn count, tool calls)
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * const sm = new AgentStateMachine(50, 600_000) // 50 turns, 10 min timeout
41
+ * sm.transition(AgentState.EXECUTING)
42
+ *
43
+ * while (!sm.isTerminal()) {
44
+ * const reason = sm.shouldTerminate()
45
+ * if (reason) break
46
+ *
47
+ * // Execute iteration...
48
+ * sm.incrementTurn()
49
+ * }
50
+ *
51
+ * sm.complete() // or sm.fail(error) or sm.abort()
52
+ * ```
53
+ */
54
+ export class AgentStateMachine {
55
+ maxTurns;
56
+ maxTimeMs;
57
+ context;
58
+ state = AgentState.IDLE;
59
+ /**
60
+ * Create a new agent state machine.
61
+ *
62
+ * @param maxTurns - Maximum number of turns before MAX_TURNS termination
63
+ * @param maxTimeMs - Maximum execution time in milliseconds before TIMEOUT
64
+ */
65
+ constructor(maxTurns, maxTimeMs) {
66
+ this.maxTurns = maxTurns;
67
+ this.maxTimeMs = maxTimeMs;
68
+ this.context = {
69
+ startTime: new Date(),
70
+ state: AgentState.IDLE,
71
+ toolCallsExecuted: 0,
72
+ turnCount: 0,
73
+ };
74
+ }
75
+ /**
76
+ * Abort the execution externally.
77
+ *
78
+ * Transitions to ABORTED state and sets termination reason.
79
+ * Can be called from any non-terminal state.
80
+ */
81
+ abort() {
82
+ this.transition(AgentState.ABORTED);
83
+ this.context.terminationReason = TerminationReason.ABORTED;
84
+ }
85
+ /**
86
+ * Complete the execution successfully.
87
+ *
88
+ * Transitions to COMPLETE state and sets GOAL as termination reason.
89
+ * Should be called when the LLM returns a response without tool calls.
90
+ */
91
+ complete() {
92
+ this.transition(AgentState.COMPLETE);
93
+ this.context.terminationReason = TerminationReason.GOAL;
94
+ }
95
+ /**
96
+ * Fail the execution with an error.
97
+ *
98
+ * Transitions to ERROR state and stores the error.
99
+ * Should be called when an unrecoverable error occurs.
100
+ *
101
+ * @param error - The error that caused the failure
102
+ */
103
+ fail(error) {
104
+ this.transition(AgentState.ERROR);
105
+ this.context.terminationReason = TerminationReason.ERROR;
106
+ this.context.lastError = error;
107
+ }
108
+ /**
109
+ * Get a readonly copy of the current execution context.
110
+ *
111
+ * @returns Copy of the execution context
112
+ */
113
+ getContext() {
114
+ return { ...this.context };
115
+ }
116
+ /**
117
+ * Get the current state.
118
+ *
119
+ * @returns Current agent state
120
+ */
121
+ getState() {
122
+ return this.state;
123
+ }
124
+ /**
125
+ * Increment the turn counter.
126
+ *
127
+ * Should be called after each iteration of the agentic loop.
128
+ */
129
+ incrementTurn() {
130
+ this.context.turnCount++;
131
+ }
132
+ /**
133
+ * Check if the state machine is in a terminal state.
134
+ *
135
+ * Terminal states are: COMPLETE, ERROR, ABORTED
136
+ *
137
+ * @returns True if in a terminal state
138
+ */
139
+ isTerminal() {
140
+ return [AgentState.ABORTED, AgentState.COMPLETE, AgentState.ERROR].includes(this.state);
141
+ }
142
+ /**
143
+ * Record a tool call execution.
144
+ *
145
+ * Should be called after each tool is executed.
146
+ */
147
+ recordToolCall() {
148
+ this.context.toolCallsExecuted++;
149
+ }
150
+ /**
151
+ * Check if the execution should terminate.
152
+ *
153
+ * Checks for:
154
+ * - MAX_TURNS: Turn count >= maxTurns
155
+ * - TIMEOUT: Elapsed time > maxTimeMs
156
+ *
157
+ * @returns Termination reason if should terminate, null otherwise
158
+ */
159
+ shouldTerminate() {
160
+ if (this.context.turnCount >= this.maxTurns) {
161
+ return TerminationReason.MAX_TURNS;
162
+ }
163
+ if (Date.now() - this.context.startTime.getTime() > this.maxTimeMs) {
164
+ return TerminationReason.TIMEOUT;
165
+ }
166
+ return null;
167
+ }
168
+ /**
169
+ * Transition to a new state.
170
+ *
171
+ * Validates the transition is allowed, then updates the state.
172
+ *
173
+ * @param newState - Target state
174
+ * @throws Error if the transition is not valid
175
+ */
176
+ transition(newState) {
177
+ if (!VALID_TRANSITIONS[this.state].includes(newState)) {
178
+ throw new Error(`Invalid state transition: ${this.state} → ${newState}`);
179
+ }
180
+ this.state = newState;
181
+ this.context.state = newState;
182
+ }
183
+ }
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Agent State Types
3
+ *
4
+ * Defines the state machine for agent execution, following gemini-cli patterns.
5
+ * Provides explicit states and termination reasons for better observability
6
+ * and control over the agentic loop.
7
+ */
8
+ /**
9
+ * Agent execution states.
10
+ *
11
+ * These states represent the current phase of agent execution:
12
+ * - IDLE: Not executing, waiting for input
13
+ * - EXECUTING: Processing LLM response
14
+ * - TOOL_CALLING: Executing tool calls
15
+ * - COMPLETE: Task finished successfully
16
+ * - ERROR: Terminated with error
17
+ * - ABORTED: Externally cancelled
18
+ */
19
+ export declare enum AgentState {
20
+ /** Externally cancelled */
21
+ ABORTED = "ABORTED",
22
+ /** Task finished successfully */
23
+ COMPLETE = "COMPLETE",
24
+ /** Terminated with error */
25
+ ERROR = "ERROR",
26
+ /** Processing LLM response */
27
+ EXECUTING = "EXECUTING",
28
+ /** Not executing, waiting for input */
29
+ IDLE = "IDLE",
30
+ /** Executing tool calls */
31
+ TOOL_CALLING = "TOOL_CALLING"
32
+ }
33
+ /**
34
+ * Termination reasons for agent execution.
35
+ *
36
+ * When an agent stops executing, one of these reasons explains why:
37
+ * - GOAL: Task completed successfully (no more tool calls)
38
+ * - TIMEOUT: Max execution time exceeded
39
+ * - MAX_TURNS: Iteration limit reached
40
+ * - ERROR: Unexpected failure during execution
41
+ * - ABORTED: External cancellation (e.g., abort signal)
42
+ * - PROTOCOL_VIOLATION: Invalid state transition or response
43
+ */
44
+ export declare enum TerminationReason {
45
+ /** External cancellation (e.g., abort signal) */
46
+ ABORTED = "ABORTED",
47
+ /** Unexpected failure during execution */
48
+ ERROR = "ERROR",
49
+ /** Task completed successfully (no tool calls in response) */
50
+ GOAL = "GOAL",
51
+ /** Iteration limit reached */
52
+ MAX_TURNS = "MAX_TURNS",
53
+ /** Invalid state transition or malformed response */
54
+ PROTOCOL_VIOLATION = "PROTOCOL_VIOLATION",
55
+ /** Max execution time exceeded */
56
+ TIMEOUT = "TIMEOUT"
57
+ }
58
+ /**
59
+ * Execution context with state tracking.
60
+ *
61
+ * Captures the current state and metrics of an agent execution,
62
+ * including timing, turn count, and tool call statistics.
63
+ */
64
+ export interface AgentExecutionContext {
65
+ /** Last error if terminated with ERROR */
66
+ lastError?: Error;
67
+ /** When this execution started */
68
+ startTime: Date;
69
+ /** Current state of the agent */
70
+ state: AgentState;
71
+ /** Why the execution terminated (if complete) */
72
+ terminationReason?: TerminationReason;
73
+ /** Number of tool calls executed */
74
+ toolCallsExecuted: number;
75
+ /** Number of turns (iterations) completed */
76
+ turnCount: number;
77
+ }
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Agent State Types
3
+ *
4
+ * Defines the state machine for agent execution, following gemini-cli patterns.
5
+ * Provides explicit states and termination reasons for better observability
6
+ * and control over the agentic loop.
7
+ */
8
+ /**
9
+ * Agent execution states.
10
+ *
11
+ * These states represent the current phase of agent execution:
12
+ * - IDLE: Not executing, waiting for input
13
+ * - EXECUTING: Processing LLM response
14
+ * - TOOL_CALLING: Executing tool calls
15
+ * - COMPLETE: Task finished successfully
16
+ * - ERROR: Terminated with error
17
+ * - ABORTED: Externally cancelled
18
+ */
19
+ export var AgentState;
20
+ (function (AgentState) {
21
+ /** Externally cancelled */
22
+ AgentState["ABORTED"] = "ABORTED";
23
+ /** Task finished successfully */
24
+ AgentState["COMPLETE"] = "COMPLETE";
25
+ /** Terminated with error */
26
+ AgentState["ERROR"] = "ERROR";
27
+ /** Processing LLM response */
28
+ AgentState["EXECUTING"] = "EXECUTING";
29
+ /** Not executing, waiting for input */
30
+ AgentState["IDLE"] = "IDLE";
31
+ /** Executing tool calls */
32
+ AgentState["TOOL_CALLING"] = "TOOL_CALLING";
33
+ })(AgentState || (AgentState = {}));
34
+ /**
35
+ * Termination reasons for agent execution.
36
+ *
37
+ * When an agent stops executing, one of these reasons explains why:
38
+ * - GOAL: Task completed successfully (no more tool calls)
39
+ * - TIMEOUT: Max execution time exceeded
40
+ * - MAX_TURNS: Iteration limit reached
41
+ * - ERROR: Unexpected failure during execution
42
+ * - ABORTED: External cancellation (e.g., abort signal)
43
+ * - PROTOCOL_VIOLATION: Invalid state transition or response
44
+ */
45
+ export var TerminationReason;
46
+ (function (TerminationReason) {
47
+ /** External cancellation (e.g., abort signal) */
48
+ TerminationReason["ABORTED"] = "ABORTED";
49
+ /** Unexpected failure during execution */
50
+ TerminationReason["ERROR"] = "ERROR";
51
+ /** Task completed successfully (no tool calls in response) */
52
+ TerminationReason["GOAL"] = "GOAL";
53
+ /** Iteration limit reached */
54
+ TerminationReason["MAX_TURNS"] = "MAX_TURNS";
55
+ /** Invalid state transition or malformed response */
56
+ TerminationReason["PROTOCOL_VIOLATION"] = "PROTOCOL_VIOLATION";
57
+ /** Max execution time exceeded */
58
+ TerminationReason["TIMEOUT"] = "TIMEOUT";
59
+ })(TerminationReason || (TerminationReason = {}));
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Agent Module
3
+ *
4
+ * Exports agent state management types and classes.
5
+ */
6
+ export { AgentStateMachine } from './agent-state-machine.js';
7
+ export { AgentExecutionContext, AgentState, TerminationReason } from './agent-state.js';
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Agent Module
3
+ *
4
+ * Exports agent state management types and classes.
5
+ */
6
+ export { AgentStateMachine } from './agent-state-machine.js';
7
+ export { AgentState, TerminationReason } from './agent-state.js';
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Event system types and constants.
3
+ *
4
+ * This module provides type-safe event definitions for CipherAgent's event-driven architecture.
5
+ * Follows the pattern from Dexto's event system.
6
+ */
7
+ export type { AgentEventMap, AgentEventName, EventName, SessionEventMap, SessionEventName, TokenUsage, } from './types.js';
8
+ export { AGENT_EVENT_NAMES, EVENT_NAMES, SESSION_EVENT_NAMES } from './types.js';
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Event system types and constants.
3
+ *
4
+ * This module provides type-safe event definitions for CipherAgent's event-driven architecture.
5
+ * Follows the pattern from Dexto's event system.
6
+ */
7
+ export { AGENT_EVENT_NAMES, EVENT_NAMES, SESSION_EVENT_NAMES } from './types.js';