byterover-cli 0.4.1 → 1.0.1

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 (474) hide show
  1. package/README.md +1 -9
  2. package/dist/commands/curate.d.ts +1 -3
  3. package/dist/commands/curate.js +14 -51
  4. package/dist/commands/main.d.ts +8 -0
  5. package/dist/commands/main.js +29 -8
  6. package/dist/commands/query.d.ts +1 -3
  7. package/dist/commands/query.js +8 -35
  8. package/dist/config/context-tree-domains.d.ts +5 -0
  9. package/dist/config/context-tree-domains.js +6 -1
  10. package/dist/config/environment.js +9 -9
  11. package/dist/constants.d.ts +14 -0
  12. package/dist/constants.js +18 -0
  13. package/dist/core/domain/cipher/agent/agent-info.d.ts +199 -0
  14. package/dist/core/domain/cipher/agent/agent-info.js +143 -0
  15. package/dist/core/domain/cipher/agent/agent-registry.d.ts +96 -0
  16. package/dist/core/domain/cipher/agent/agent-registry.js +254 -0
  17. package/dist/core/domain/cipher/agent/index.d.ts +4 -1
  18. package/dist/core/domain/cipher/agent/index.js +7 -1
  19. package/dist/core/domain/cipher/agent-events/types.d.ts +355 -2
  20. package/dist/core/domain/cipher/agent-events/types.js +11 -0
  21. package/dist/core/domain/cipher/errors/error-normalizer.d.ts +156 -0
  22. package/dist/core/domain/cipher/errors/error-normalizer.js +379 -0
  23. package/dist/core/domain/cipher/errors/file-system-error.d.ts +2 -1
  24. package/dist/core/domain/cipher/errors/file-system-error.js +3 -2
  25. package/dist/core/domain/cipher/errors/system-prompt-error-codes.d.ts +79 -0
  26. package/dist/core/domain/cipher/errors/system-prompt-error-codes.js +80 -0
  27. package/dist/core/domain/cipher/errors/system-prompt-error.d.ts +114 -0
  28. package/dist/core/domain/cipher/errors/system-prompt-error.js +144 -0
  29. package/dist/core/domain/cipher/file-system/types.d.ts +57 -0
  30. package/dist/core/domain/cipher/llm/error-codes.d.ts +51 -0
  31. package/dist/core/domain/cipher/llm/error-codes.js +51 -0
  32. package/dist/core/domain/cipher/llm/index.d.ts +9 -0
  33. package/dist/core/domain/cipher/llm/index.js +13 -0
  34. package/dist/core/domain/cipher/llm/registry.d.ts +113 -0
  35. package/dist/core/domain/cipher/llm/registry.js +244 -0
  36. package/dist/core/domain/cipher/llm/schemas.d.ts +155 -0
  37. package/dist/core/domain/cipher/llm/schemas.js +151 -0
  38. package/dist/core/domain/cipher/llm/types.d.ts +121 -0
  39. package/dist/core/domain/cipher/llm/types.js +60 -0
  40. package/dist/core/domain/cipher/storage/message-storage-types.d.ts +114 -5
  41. package/dist/core/domain/cipher/streaming/types.d.ts +119 -0
  42. package/dist/core/domain/cipher/streaming/types.js +16 -0
  43. package/dist/core/domain/cipher/system-prompt/types.d.ts +44 -0
  44. package/dist/core/domain/cipher/todos/types.d.ts +34 -0
  45. package/dist/core/domain/cipher/tools/constants.d.ts +5 -2
  46. package/dist/core/domain/cipher/tools/constants.js +5 -2
  47. package/dist/core/domain/cipher/tools/types.d.ts +31 -0
  48. package/dist/core/domain/errors/connection-error.d.ts +33 -0
  49. package/dist/core/domain/errors/connection-error.js +54 -0
  50. package/dist/core/domain/errors/core-process-error.d.ts +27 -0
  51. package/dist/core/domain/errors/core-process-error.js +43 -0
  52. package/dist/core/domain/errors/task-error.d.ts +64 -0
  53. package/dist/core/domain/errors/task-error.js +116 -0
  54. package/dist/core/domain/errors/transport-error.d.ts +72 -0
  55. package/dist/core/domain/errors/transport-error.js +114 -0
  56. package/dist/core/domain/instance/index.d.ts +1 -0
  57. package/dist/core/domain/instance/index.js +1 -0
  58. package/dist/core/domain/instance/types.d.ts +57 -0
  59. package/dist/core/domain/instance/types.js +72 -0
  60. package/dist/core/domain/knowledge/directory-manager.d.ts +16 -0
  61. package/dist/core/domain/knowledge/directory-manager.js +31 -0
  62. package/dist/core/domain/transport/index.d.ts +2 -0
  63. package/dist/core/domain/transport/index.js +2 -0
  64. package/dist/core/domain/transport/schemas.d.ts +1149 -0
  65. package/dist/core/domain/transport/schemas.js +554 -0
  66. package/dist/core/domain/transport/types.d.ts +67 -0
  67. package/dist/core/domain/transport/types.js +7 -0
  68. package/dist/core/interfaces/cipher/cipher-services.d.ts +15 -3
  69. package/dist/core/interfaces/cipher/i-chat-session.d.ts +47 -5
  70. package/dist/core/interfaces/cipher/i-cipher-agent.d.ts +39 -4
  71. package/dist/core/interfaces/cipher/i-content-generator.d.ts +3 -5
  72. package/dist/core/interfaces/cipher/i-file-system.d.ts +12 -1
  73. package/dist/core/interfaces/cipher/i-llm-service.d.ts +4 -5
  74. package/dist/core/interfaces/cipher/i-todo-storage.d.ts +24 -0
  75. package/dist/core/interfaces/cipher/i-todo-storage.js +1 -0
  76. package/dist/core/interfaces/cipher/i-tool-plugin.d.ts +90 -0
  77. package/dist/core/interfaces/cipher/i-tool-plugin.js +1 -0
  78. package/dist/core/interfaces/cipher/i-tool-provider.d.ts +3 -2
  79. package/dist/core/interfaces/cipher/i-tool-scheduler.d.ts +4 -0
  80. package/dist/core/interfaces/cipher/index.d.ts +35 -0
  81. package/dist/core/interfaces/cipher/index.js +11 -0
  82. package/dist/core/interfaces/cipher/message-factory.d.ts +155 -0
  83. package/dist/core/interfaces/cipher/message-factory.js +252 -0
  84. package/dist/core/interfaces/cipher/message-type-guards.d.ts +139 -0
  85. package/dist/core/interfaces/cipher/message-type-guards.js +173 -0
  86. package/dist/core/interfaces/cipher/message-types.d.ts +279 -5
  87. package/dist/core/interfaces/cipher/message-types.js +6 -0
  88. package/dist/core/interfaces/cipher/sanitization-types.d.ts +147 -0
  89. package/dist/core/interfaces/cipher/sanitization-types.js +46 -0
  90. package/dist/core/interfaces/executor/i-curate-executor.d.ts +34 -0
  91. package/dist/core/interfaces/executor/i-curate-executor.js +1 -0
  92. package/dist/core/interfaces/executor/i-query-executor.d.ts +32 -0
  93. package/dist/core/interfaces/executor/i-query-executor.js +1 -0
  94. package/dist/core/interfaces/executor/index.d.ts +2 -0
  95. package/dist/core/interfaces/executor/index.js +2 -0
  96. package/dist/core/interfaces/instance/i-instance-discovery.d.ts +45 -0
  97. package/dist/core/interfaces/instance/i-instance-discovery.js +1 -0
  98. package/dist/core/interfaces/instance/i-instance-manager.d.ts +58 -0
  99. package/dist/core/interfaces/instance/i-instance-manager.js +1 -0
  100. package/dist/core/interfaces/instance/index.d.ts +2 -0
  101. package/dist/core/interfaces/instance/index.js +2 -0
  102. package/dist/core/interfaces/noop-implementations.d.ts +53 -0
  103. package/dist/core/interfaces/noop-implementations.js +62 -0
  104. package/dist/core/interfaces/transport/i-transport-client.d.ts +97 -0
  105. package/dist/core/interfaces/transport/i-transport-client.js +1 -0
  106. package/dist/core/interfaces/transport/i-transport-server.d.ts +93 -0
  107. package/dist/core/interfaces/transport/i-transport-server.js +1 -0
  108. package/dist/core/interfaces/transport/index.d.ts +2 -0
  109. package/dist/core/interfaces/transport/index.js +2 -0
  110. package/dist/infra/cipher/agent/agent-error-codes.d.ts +16 -0
  111. package/dist/infra/cipher/agent/agent-error-codes.js +17 -0
  112. package/dist/infra/cipher/agent/agent-error.d.ts +54 -0
  113. package/dist/infra/cipher/agent/agent-error.js +79 -0
  114. package/dist/infra/cipher/agent/agent-schemas.d.ts +264 -0
  115. package/dist/infra/cipher/agent/agent-schemas.js +97 -0
  116. package/dist/infra/cipher/agent/agent-state-manager.d.ts +140 -0
  117. package/dist/infra/cipher/agent/agent-state-manager.js +275 -0
  118. package/dist/infra/cipher/agent/base-agent.d.ts +118 -0
  119. package/dist/infra/cipher/agent/base-agent.js +240 -0
  120. package/dist/infra/cipher/agent/cipher-agent.d.ts +165 -0
  121. package/dist/infra/cipher/agent/cipher-agent.js +546 -0
  122. package/dist/infra/cipher/agent/index.d.ts +22 -0
  123. package/dist/infra/cipher/agent/index.js +24 -0
  124. package/dist/infra/cipher/agent/service-initializer.d.ts +79 -0
  125. package/dist/infra/cipher/{agent-service-factory.js → agent/service-initializer.js} +117 -68
  126. package/dist/infra/cipher/agent/types.d.ts +35 -0
  127. package/dist/infra/cipher/agent/types.js +1 -0
  128. package/dist/infra/cipher/blob/blob-reference-resolver.d.ts +107 -0
  129. package/dist/infra/cipher/blob/blob-reference-resolver.js +228 -0
  130. package/dist/infra/cipher/blob/blob-reference-utils.d.ts +117 -0
  131. package/dist/infra/cipher/blob/blob-reference-utils.js +230 -0
  132. package/dist/infra/cipher/consumer/consumer-lock.js +1 -0
  133. package/dist/infra/cipher/consumer/consumer-service.js +1 -0
  134. package/dist/infra/cipher/consumer/execution-consumer.d.ts +6 -1
  135. package/dist/infra/cipher/consumer/execution-consumer.js +54 -16
  136. package/dist/infra/cipher/consumer/index.d.ts +1 -1
  137. package/dist/infra/cipher/consumer/index.js +2 -1
  138. package/dist/infra/cipher/consumer/queue-polling-service.js +1 -0
  139. package/dist/infra/cipher/file-system/binary-utils.d.ts +43 -0
  140. package/dist/infra/cipher/file-system/binary-utils.js +164 -0
  141. package/dist/infra/cipher/file-system/context-tree-file-system-factory.d.ts +9 -0
  142. package/dist/infra/cipher/file-system/context-tree-file-system-factory.js +24 -0
  143. package/dist/infra/cipher/file-system/file-system-service.d.ts +17 -1
  144. package/dist/infra/cipher/file-system/file-system-service.js +327 -36
  145. package/dist/infra/cipher/file-system/path-validator.d.ts +32 -0
  146. package/dist/infra/cipher/file-system/path-validator.js +111 -6
  147. package/dist/infra/cipher/interactive-loop.js +41 -33
  148. package/dist/infra/cipher/llm/capability-cache.d.ts +87 -0
  149. package/dist/infra/cipher/llm/capability-cache.js +125 -0
  150. package/dist/infra/cipher/llm/context/compaction/compaction-service.d.ts +32 -0
  151. package/dist/infra/cipher/llm/context/compaction/compaction-service.js +44 -3
  152. package/dist/infra/cipher/llm/context/compression/enhanced-compaction.d.ts +112 -0
  153. package/dist/infra/cipher/llm/context/compression/enhanced-compaction.js +175 -0
  154. package/dist/infra/cipher/llm/context/compression/filter-compacted.d.ts +83 -0
  155. package/dist/infra/cipher/llm/context/compression/filter-compacted.js +150 -0
  156. package/dist/infra/cipher/llm/context/compression/index.d.ts +5 -0
  157. package/dist/infra/cipher/llm/context/compression/index.js +6 -0
  158. package/dist/infra/cipher/llm/context/compression/reactive-overflow.d.ts +107 -0
  159. package/dist/infra/cipher/llm/context/compression/reactive-overflow.js +272 -0
  160. package/dist/infra/cipher/llm/context/context-manager.d.ts +47 -1
  161. package/dist/infra/cipher/llm/context/context-manager.js +129 -0
  162. package/dist/infra/cipher/llm/context/utils.js +17 -4
  163. package/dist/infra/cipher/llm/generators/byterover-content-generator.js +4 -2
  164. package/dist/infra/cipher/llm/internal-llm-service.d.ts +50 -17
  165. package/dist/infra/cipher/llm/internal-llm-service.js +273 -50
  166. package/dist/infra/cipher/llm/openrouter-llm-service.d.ts +6 -8
  167. package/dist/infra/cipher/llm/openrouter-llm-service.js +14 -16
  168. package/dist/infra/cipher/llm/retry/retry-policy.d.ts +1 -0
  169. package/dist/infra/cipher/llm/retry/retry-policy.js +11 -0
  170. package/dist/infra/cipher/llm/retry/retry-with-backoff.js +3 -2
  171. package/dist/infra/cipher/llm/sanitization/base64-utils.d.ts +102 -0
  172. package/dist/infra/cipher/llm/sanitization/base64-utils.js +182 -0
  173. package/dist/infra/cipher/llm/sanitization/index.d.ts +12 -0
  174. package/dist/infra/cipher/llm/sanitization/index.js +13 -0
  175. package/dist/infra/cipher/llm/sanitization/tool-sanitizer.d.ts +74 -0
  176. package/dist/infra/cipher/llm/sanitization/tool-sanitizer.js +398 -0
  177. package/dist/infra/cipher/llm/stream-processor.d.ts +158 -0
  178. package/dist/infra/cipher/llm/stream-processor.js +276 -0
  179. package/dist/infra/cipher/llm/tokenizers/claude-tokenizer.d.ts +13 -20
  180. package/dist/infra/cipher/llm/tokenizers/claude-tokenizer.js +17 -24
  181. package/dist/infra/cipher/llm/tokenizers/gemini-tokenizer.d.ts +12 -11
  182. package/dist/infra/cipher/llm/tokenizers/gemini-tokenizer.js +16 -15
  183. package/dist/infra/cipher/llm/tokenizers/openrouter-tokenizer.d.ts +15 -7
  184. package/dist/infra/cipher/llm/tokenizers/openrouter-tokenizer.js +22 -10
  185. package/dist/infra/cipher/llm/tool-output-processor.d.ts +51 -0
  186. package/dist/infra/cipher/llm/tool-output-processor.js +139 -0
  187. package/dist/infra/cipher/process/command-validator.d.ts +23 -0
  188. package/dist/infra/cipher/process/command-validator.js +75 -0
  189. package/dist/infra/cipher/process/path-utils.d.ts +66 -0
  190. package/dist/infra/cipher/process/path-utils.js +94 -0
  191. package/dist/infra/cipher/process/process-service.d.ts +32 -0
  192. package/dist/infra/cipher/process/process-service.js +98 -17
  193. package/dist/infra/cipher/session/chat-session.d.ts +56 -7
  194. package/dist/infra/cipher/session/chat-session.js +163 -13
  195. package/dist/infra/cipher/session/index.d.ts +1 -0
  196. package/dist/infra/cipher/session/index.js +2 -0
  197. package/dist/infra/cipher/session/message-queue.d.ts +65 -0
  198. package/dist/infra/cipher/session/message-queue.js +90 -0
  199. package/dist/infra/cipher/session/session-manager.d.ts +106 -5
  200. package/dist/infra/cipher/session/session-manager.js +254 -7
  201. package/dist/infra/cipher/session/session-status.d.ts +137 -0
  202. package/dist/infra/cipher/session/session-status.js +184 -0
  203. package/dist/infra/cipher/session/title-generator.d.ts +8 -0
  204. package/dist/infra/cipher/session/title-generator.js +31 -0
  205. package/dist/infra/cipher/storage/message-storage-service.d.ts +65 -2
  206. package/dist/infra/cipher/storage/message-storage-service.js +300 -54
  207. package/dist/infra/cipher/storage/tool-part-factory.d.ts +116 -0
  208. package/dist/infra/cipher/storage/tool-part-factory.js +197 -0
  209. package/dist/infra/cipher/system-prompt/contributor-schemas.d.ts +516 -0
  210. package/dist/infra/cipher/system-prompt/contributor-schemas.js +85 -0
  211. package/dist/infra/cipher/system-prompt/contributors/agent-prompt-contributor.d.ts +59 -0
  212. package/dist/infra/cipher/system-prompt/contributors/agent-prompt-contributor.js +131 -0
  213. package/dist/infra/cipher/system-prompt/contributors/companion-contributor.d.ts +54 -0
  214. package/dist/infra/cipher/system-prompt/contributors/companion-contributor.js +107 -0
  215. package/dist/infra/cipher/system-prompt/contributors/context-tree-structure-contributor.d.ts +68 -0
  216. package/dist/infra/cipher/system-prompt/contributors/context-tree-structure-contributor.js +179 -0
  217. package/dist/infra/cipher/system-prompt/contributors/datetime-contributor.d.ts +25 -0
  218. package/dist/infra/cipher/system-prompt/contributors/datetime-contributor.js +29 -0
  219. package/dist/infra/cipher/system-prompt/contributors/environment-contributor.d.ts +25 -0
  220. package/dist/infra/cipher/system-prompt/contributors/environment-contributor.js +54 -0
  221. package/dist/infra/cipher/system-prompt/contributors/file-contributor.d.ts +60 -0
  222. package/dist/infra/cipher/system-prompt/contributors/file-contributor.js +128 -0
  223. package/dist/infra/cipher/system-prompt/contributors/index.d.ts +13 -0
  224. package/dist/infra/cipher/system-prompt/contributors/index.js +8 -0
  225. package/dist/infra/cipher/system-prompt/contributors/memory-contributor.d.ts +40 -0
  226. package/dist/infra/cipher/system-prompt/contributors/memory-contributor.js +56 -0
  227. package/dist/infra/cipher/system-prompt/contributors/static-contributor.d.ts +26 -0
  228. package/dist/infra/cipher/system-prompt/contributors/static-contributor.js +31 -0
  229. package/dist/infra/cipher/system-prompt/environment-context-builder.d.ts +112 -0
  230. package/dist/infra/cipher/system-prompt/environment-context-builder.js +256 -0
  231. package/dist/infra/cipher/system-prompt/prompt-cache.d.ts +102 -0
  232. package/dist/infra/cipher/system-prompt/prompt-cache.js +156 -0
  233. package/dist/infra/cipher/system-prompt/schemas.d.ts +151 -0
  234. package/dist/infra/cipher/system-prompt/schemas.js +94 -0
  235. package/dist/infra/cipher/system-prompt/system-prompt-manager.d.ts +136 -0
  236. package/dist/infra/cipher/system-prompt/system-prompt-manager.js +307 -0
  237. package/dist/infra/cipher/todos/todo-storage-service.d.ts +26 -0
  238. package/dist/infra/cipher/todos/todo-storage-service.js +28 -0
  239. package/dist/infra/cipher/tools/core-tool-scheduler.js +5 -1
  240. package/dist/infra/cipher/tools/default-policy-rules.js +1 -1
  241. package/dist/infra/cipher/tools/implementations/bash-exec-tool.d.ts +1 -0
  242. package/dist/infra/cipher/tools/implementations/bash-exec-tool.js +27 -10
  243. package/dist/infra/cipher/tools/implementations/bash-output-tool.js +1 -5
  244. package/dist/infra/cipher/tools/implementations/batch-tool.d.ts +12 -0
  245. package/dist/infra/cipher/tools/implementations/batch-tool.js +142 -0
  246. package/dist/infra/cipher/tools/implementations/curate-tool.js +195 -68
  247. package/dist/infra/cipher/tools/implementations/list-directory-tool.d.ts +12 -0
  248. package/dist/infra/cipher/tools/implementations/list-directory-tool.js +52 -0
  249. package/dist/infra/cipher/tools/implementations/read-file-tool.d.ts +8 -1
  250. package/dist/infra/cipher/tools/implementations/read-file-tool.js +17 -7
  251. package/dist/infra/cipher/tools/implementations/read-todos-tool.d.ts +11 -0
  252. package/dist/infra/cipher/tools/implementations/read-todos-tool.js +39 -0
  253. package/dist/infra/cipher/tools/implementations/{detect-domains-tool.d.ts → spec-analyze-tool.d.ts} +1 -1
  254. package/dist/infra/cipher/tools/implementations/{detect-domains-tool.js → spec-analyze-tool.js} +9 -7
  255. package/dist/infra/cipher/tools/implementations/task-tool.d.ts +34 -0
  256. package/dist/infra/cipher/tools/implementations/task-tool.js +207 -0
  257. package/dist/infra/cipher/tools/implementations/write-todos-tool.d.ts +4 -1
  258. package/dist/infra/cipher/tools/implementations/write-todos-tool.js +19 -63
  259. package/dist/infra/cipher/tools/index.d.ts +1 -1
  260. package/dist/infra/cipher/tools/index.js +1 -1
  261. package/dist/infra/cipher/tools/plugins/index.d.ts +3 -0
  262. package/dist/infra/cipher/tools/plugins/index.js +2 -0
  263. package/dist/infra/cipher/tools/plugins/logging-plugin.d.ts +28 -0
  264. package/dist/infra/cipher/tools/plugins/logging-plugin.js +66 -0
  265. package/dist/infra/cipher/tools/plugins/plugin-manager.d.ts +81 -0
  266. package/dist/infra/cipher/tools/plugins/plugin-manager.js +122 -0
  267. package/dist/infra/cipher/tools/streaming/index.d.ts +1 -0
  268. package/dist/infra/cipher/tools/streaming/index.js +1 -0
  269. package/dist/infra/cipher/tools/streaming/metadata-handler.d.ts +31 -0
  270. package/dist/infra/cipher/tools/streaming/metadata-handler.js +39 -0
  271. package/dist/infra/cipher/tools/tool-description-loader.d.ts +57 -0
  272. package/dist/infra/cipher/tools/tool-description-loader.js +108 -0
  273. package/dist/infra/cipher/tools/tool-manager.d.ts +38 -4
  274. package/dist/infra/cipher/tools/tool-manager.js +107 -11
  275. package/dist/infra/cipher/tools/tool-provider-getter.d.ts +6 -0
  276. package/dist/infra/cipher/tools/tool-provider-getter.js +1 -0
  277. package/dist/infra/cipher/tools/tool-provider.d.ts +32 -7
  278. package/dist/infra/cipher/tools/tool-provider.js +81 -25
  279. package/dist/infra/cipher/tools/tool-registry.d.ts +23 -0
  280. package/dist/infra/cipher/tools/tool-registry.js +58 -16
  281. package/dist/infra/context-tree/file-context-tree-snapshot-service.js +10 -4
  282. package/dist/infra/context-tree/file-context-tree-writer-service.d.ts +4 -3
  283. package/dist/infra/context-tree/file-context-tree-writer-service.js +6 -4
  284. package/dist/infra/context-tree/path-utils.d.ts +7 -0
  285. package/dist/infra/context-tree/path-utils.js +7 -0
  286. package/dist/infra/core/executors/curate-executor.d.ts +35 -0
  287. package/dist/infra/core/executors/curate-executor.js +123 -0
  288. package/dist/infra/core/executors/index.d.ts +2 -0
  289. package/dist/infra/core/executors/index.js +2 -0
  290. package/dist/infra/core/executors/query-executor.d.ts +23 -0
  291. package/dist/infra/core/executors/query-executor.js +51 -0
  292. package/dist/infra/core/task-processor.d.ts +81 -0
  293. package/dist/infra/core/task-processor.js +115 -0
  294. package/dist/infra/instance/file-instance-discovery.d.ts +31 -0
  295. package/dist/infra/instance/file-instance-discovery.js +84 -0
  296. package/dist/infra/instance/file-instance-manager.d.ts +46 -0
  297. package/dist/infra/instance/file-instance-manager.js +123 -0
  298. package/dist/infra/instance/index.d.ts +3 -0
  299. package/dist/infra/instance/index.js +3 -0
  300. package/dist/infra/instance/process-utils.d.ts +14 -0
  301. package/dist/infra/instance/process-utils.js +39 -0
  302. package/dist/infra/process/agent-worker.d.ts +20 -0
  303. package/dist/infra/process/agent-worker.js +602 -0
  304. package/dist/infra/process/index.d.ts +12 -0
  305. package/dist/infra/process/index.js +11 -0
  306. package/dist/infra/process/ipc-types.d.ts +55 -0
  307. package/dist/infra/process/ipc-types.js +12 -0
  308. package/dist/infra/process/process-manager.d.ts +154 -0
  309. package/dist/infra/process/process-manager.js +471 -0
  310. package/dist/infra/process/task-queue-manager.d.ts +123 -0
  311. package/dist/infra/process/task-queue-manager.js +226 -0
  312. package/dist/infra/process/transport-handlers.d.ts +124 -0
  313. package/dist/infra/process/transport-handlers.js +348 -0
  314. package/dist/infra/process/transport-worker.d.ts +20 -0
  315. package/dist/infra/process/transport-worker.js +168 -0
  316. package/dist/infra/repl/commands/curate-command.js +0 -5
  317. package/dist/infra/repl/commands/query-command.js +0 -3
  318. package/dist/infra/repl/repl-startup.d.ts +4 -0
  319. package/dist/infra/repl/repl-startup.js +8 -1
  320. package/dist/infra/repl/transport-client-helper.d.ts +9 -0
  321. package/dist/infra/repl/transport-client-helper.js +96 -0
  322. package/dist/infra/transport/index.d.ts +4 -0
  323. package/dist/infra/transport/index.js +4 -0
  324. package/dist/infra/transport/port-utils.d.ts +42 -0
  325. package/dist/infra/transport/port-utils.js +84 -0
  326. package/dist/infra/transport/socket-io-transport-client.d.ts +45 -0
  327. package/dist/infra/transport/socket-io-transport-client.js +270 -0
  328. package/dist/infra/transport/socket-io-transport-server.d.ts +35 -0
  329. package/dist/infra/transport/socket-io-transport-server.js +207 -0
  330. package/dist/infra/transport/transport-client-factory.d.ts +76 -0
  331. package/dist/infra/transport/transport-client-factory.js +168 -0
  332. package/dist/infra/transport/transport-factory.d.ts +33 -0
  333. package/dist/infra/transport/transport-factory.js +59 -0
  334. package/dist/infra/usecase/curate-use-case.d.ts +8 -55
  335. package/dist/infra/usecase/curate-use-case.js +71 -262
  336. package/dist/infra/usecase/init-use-case.js +3 -2
  337. package/dist/infra/usecase/query-use-case.d.ts +18 -45
  338. package/dist/infra/usecase/query-use-case.js +250 -326
  339. package/dist/infra/usecase/status-use-case.js +1 -1
  340. package/dist/resources/prompts/{curate-context-tree-curation.yml → curate.yml} +25 -22
  341. package/dist/resources/prompts/explore.yml +78 -0
  342. package/dist/resources/prompts/plan.yml +114 -0
  343. package/dist/resources/prompts/reflection.yml +1 -1
  344. package/dist/resources/prompts/system-prompt.yml +15 -8
  345. package/dist/resources/prompts/tool-outputs.yml +0 -5
  346. package/dist/resources/tools/bash_exec.txt +98 -0
  347. package/dist/resources/tools/bash_output.txt +40 -0
  348. package/dist/resources/tools/batch.txt +28 -0
  349. package/dist/resources/tools/create_knowledge_topic.txt +23 -0
  350. package/dist/resources/tools/curate.txt +22 -0
  351. package/dist/resources/tools/delete_memory.txt +1 -0
  352. package/dist/resources/tools/detect_domains.txt +11 -0
  353. package/dist/resources/tools/edit_file.txt +1 -0
  354. package/dist/resources/tools/edit_memory.txt +1 -0
  355. package/dist/resources/tools/glob_files.txt +20 -0
  356. package/dist/resources/tools/grep_content.txt +18 -0
  357. package/dist/resources/tools/kill_process.txt +16 -0
  358. package/dist/resources/tools/list_directory.txt +16 -0
  359. package/dist/resources/tools/list_memories.txt +1 -0
  360. package/dist/resources/tools/read_file.txt +31 -0
  361. package/dist/resources/tools/read_memory.txt +1 -0
  362. package/dist/resources/tools/read_todos.txt +17 -0
  363. package/dist/resources/tools/search_history.txt +1 -0
  364. package/dist/resources/tools/task.txt +23 -0
  365. package/dist/resources/tools/write_file.txt +1 -0
  366. package/dist/resources/tools/write_memory.txt +1 -0
  367. package/dist/resources/tools/write_todos.txt +29 -0
  368. package/dist/tui/app.js +9 -13
  369. package/dist/tui/components/command-details.d.ts +14 -0
  370. package/dist/tui/components/command-details.js +35 -0
  371. package/dist/tui/components/execution/execution-changes.d.ts +5 -0
  372. package/dist/tui/components/execution/execution-changes.js +19 -4
  373. package/dist/tui/components/execution/execution-content.d.ts +4 -2
  374. package/dist/tui/components/execution/execution-content.js +26 -13
  375. package/dist/tui/components/execution/execution-input.js +3 -3
  376. package/dist/tui/components/execution/execution-progress.d.ts +2 -2
  377. package/dist/tui/components/execution/execution-progress.js +8 -6
  378. package/dist/tui/components/execution/log-item.d.ts +3 -4
  379. package/dist/tui/components/execution/log-item.js +2 -5
  380. package/dist/tui/components/footer.js +9 -4
  381. package/dist/tui/components/header.d.ts +3 -3
  382. package/dist/tui/components/header.js +5 -3
  383. package/dist/tui/components/index.d.ts +1 -0
  384. package/dist/tui/components/index.js +1 -0
  385. package/dist/tui/components/onboarding/copyable-prompt.d.ts +5 -3
  386. package/dist/tui/components/onboarding/copyable-prompt.js +7 -8
  387. package/dist/tui/components/onboarding/onboarding-flow.js +35 -25
  388. package/dist/tui/components/scrollable-list.js +12 -10
  389. package/dist/tui/components/suggestions.js +39 -41
  390. package/dist/tui/components/tab-bar.d.ts +2 -1
  391. package/dist/tui/components/tab-bar.js +3 -4
  392. package/dist/tui/constants.d.ts +0 -5
  393. package/dist/tui/constants.js +0 -5
  394. package/dist/tui/contexts/auth-context.js +9 -2
  395. package/dist/tui/contexts/{use-commands.js → commands-context.js} +3 -3
  396. package/dist/tui/contexts/index.d.ts +6 -1
  397. package/dist/tui/contexts/index.js +6 -1
  398. package/dist/tui/contexts/onboarding-context.d.ts +1 -1
  399. package/dist/tui/contexts/onboarding-context.js +9 -9
  400. package/dist/tui/contexts/tasks-context.d.ts +84 -0
  401. package/dist/tui/contexts/tasks-context.js +218 -0
  402. package/dist/tui/contexts/transport-context.d.ts +29 -0
  403. package/dist/tui/contexts/transport-context.js +82 -0
  404. package/dist/tui/hooks/index.d.ts +10 -6
  405. package/dist/tui/hooks/index.js +7 -6
  406. package/dist/tui/hooks/use-activity-logs.d.ts +3 -11
  407. package/dist/tui/hooks/use-activity-logs.js +87 -34
  408. package/dist/tui/hooks/use-auth-polling.d.ts +24 -0
  409. package/dist/tui/hooks/use-auth-polling.js +104 -0
  410. package/dist/tui/hooks/use-slash-command-processor.js +0 -1
  411. package/dist/tui/hooks/use-slash-completion.js +1 -1
  412. package/dist/tui/hooks/use-tab-navigation.d.ts +2 -1
  413. package/dist/tui/hooks/use-tab-navigation.js +16 -7
  414. package/dist/tui/hooks/use-terminal-breakpoint.d.ts +21 -0
  415. package/dist/tui/hooks/use-terminal-breakpoint.js +38 -0
  416. package/dist/tui/hooks/use-ui-heights.d.ts +120 -0
  417. package/dist/tui/hooks/use-ui-heights.js +88 -0
  418. package/dist/tui/providers/app-providers.js +2 -6
  419. package/dist/tui/types/commands.d.ts +0 -26
  420. package/dist/tui/types/index.d.ts +1 -1
  421. package/dist/tui/types/ui.d.ts +9 -4
  422. package/dist/tui/utils/line.d.ts +11 -0
  423. package/dist/tui/utils/line.js +16 -0
  424. package/dist/tui/utils/log.d.ts +27 -0
  425. package/dist/tui/utils/log.js +114 -0
  426. package/dist/tui/views/command-view.d.ts +7 -0
  427. package/dist/tui/views/command-view.js +103 -80
  428. package/dist/tui/views/login-view.js +7 -4
  429. package/dist/tui/views/logs-view.d.ts +13 -0
  430. package/dist/tui/views/logs-view.js +27 -52
  431. package/dist/utils/connection-error-handler.d.ts +16 -0
  432. package/dist/utils/connection-error-handler.js +49 -0
  433. package/dist/utils/crash-log.d.ts +14 -0
  434. package/dist/utils/crash-log.js +19 -0
  435. package/dist/utils/file-helpers.d.ts +14 -0
  436. package/dist/utils/file-helpers.js +21 -0
  437. package/dist/utils/global-logs-path.d.ts +11 -0
  438. package/dist/utils/global-logs-path.js +37 -0
  439. package/dist/utils/process-logger.d.ts +53 -0
  440. package/dist/utils/process-logger.js +253 -0
  441. package/dist/utils/sandbox-detector.d.ts +31 -0
  442. package/dist/utils/sandbox-detector.js +122 -0
  443. package/oclif.manifest.json +10 -198
  444. package/package.json +5 -1
  445. package/dist/commands/cipher-agent/run.d.ts +0 -142
  446. package/dist/commands/cipher-agent/run.js +0 -555
  447. package/dist/commands/cipher-agent/set-prompt.d.ts +0 -16
  448. package/dist/commands/cipher-agent/set-prompt.js +0 -58
  449. package/dist/commands/cipher-agent/show-prompt.d.ts +0 -13
  450. package/dist/commands/cipher-agent/show-prompt.js +0 -53
  451. package/dist/commands/foo.d.ts +0 -14
  452. package/dist/commands/foo.js +0 -66
  453. package/dist/infra/cipher/agent-service-factory.d.ts +0 -93
  454. package/dist/infra/cipher/cipher-agent-state-manager.d.ts +0 -63
  455. package/dist/infra/cipher/cipher-agent-state-manager.js +0 -108
  456. package/dist/infra/cipher/cipher-agent.d.ts +0 -182
  457. package/dist/infra/cipher/cipher-agent.js +0 -317
  458. package/dist/infra/cipher/system-prompt/simple-prompt-factory.d.ts +0 -106
  459. package/dist/infra/cipher/system-prompt/simple-prompt-factory.js +0 -297
  460. package/dist/infra/cipher/tools/implementations/find-knowledge-topics-tool.d.ts +0 -7
  461. package/dist/infra/cipher/tools/implementations/find-knowledge-topics-tool.js +0 -424
  462. package/dist/resources/prompts/modes/autonomous.yml +0 -9
  463. package/dist/resources/prompts/query-context-tree-retrieval.yml +0 -48
  464. package/dist/tui/contexts/consumer.d.ts +0 -31
  465. package/dist/tui/contexts/consumer.js +0 -56
  466. package/dist/tui/hooks/use-consumer.d.ts +0 -12
  467. package/dist/tui/hooks/use-consumer.js +0 -50
  468. package/dist/tui/hooks/use-queue-polling.d.ts +0 -31
  469. package/dist/tui/hooks/use-queue-polling.js +0 -90
  470. /package/dist/tui/contexts/{use-commands.d.ts → commands-context.d.ts} +0 -0
  471. /package/dist/tui/contexts/{use-mode.d.ts → mode-context.d.ts} +0 -0
  472. /package/dist/tui/contexts/{use-mode.js → mode-context.js} +0 -0
  473. /package/dist/tui/contexts/{use-theme.d.ts → theme-context.d.ts} +0 -0
  474. /package/dist/tui/contexts/{use-theme.js → theme-context.js} +0 -0
@@ -1,47 +1,73 @@
1
- import { join } from 'node:path';
2
- import { createBlobStorage } from './blob/blob-storage-factory.js';
3
- import { AgentEventBus, SessionEventBus } from './events/event-emitter.js';
4
- import { FileSystemService } from './file-system/file-system-service.js';
5
- import { ByteRoverLlmHttpService } from './http/internal-llm-http-service.js';
6
- import { ByteRoverContentGenerator, LoggingContentGenerator, RetryableContentGenerator } from './llm/generators/index.js';
7
- import { ByteRoverLLMService } from './llm/internal-llm-service.js';
8
- import { OpenRouterLLMService } from './llm/openrouter-llm-service.js';
9
- import { DEFAULT_RETRY_POLICY } from './llm/retry/retry-policy.js';
10
- import { EventBasedLogger } from './logger/event-based-logger.js';
11
- import { MemoryManager } from './memory/memory-manager.js';
12
- import { ProcessService } from './process/process-service.js';
13
- import { BlobHistoryStorage } from './storage/blob-history-storage.js';
14
- import { DualFormatHistoryStorage } from './storage/dual-format-history-storage.js';
15
- import { GranularHistoryStorage } from './storage/granular-history-storage.js';
16
- import { MessageStorageService } from './storage/message-storage-service.js';
17
- import { SqliteKeyStorage } from './storage/sqlite-key-storage.js';
18
- import { SimplePromptFactory } from './system-prompt/simple-prompt-factory.js';
19
- import { CoreToolScheduler } from './tools/core-tool-scheduler.js';
20
- import { DEFAULT_POLICY_RULES } from './tools/default-policy-rules.js';
21
- import { PolicyEngine } from './tools/policy-engine.js';
22
- import { ToolManager } from './tools/tool-manager.js';
23
- import { ToolProvider } from './tools/tool-provider.js';
1
+ /**
2
+ * Service Initializer: Centralized Wiring for Cipher Agent Services
3
+ *
4
+ * This module is responsible for initializing and wiring together all core agent services.
5
+ * It provides a single entry point for constructing the service graph.
6
+ *
7
+ * Following DextoAgent pattern:
8
+ * - Config file is source of truth (ValidatedAgentConfig)
9
+ * - Centralized function (not factory class) for service creation
10
+ * - Explicit dependency order with numbered steps
11
+ * - Event bus passed in as parameter (created in agent constructor)
12
+ */
13
+ import { dirname, join } from 'node:path';
14
+ import { fileURLToPath } from 'node:url';
15
+ import { createBlobStorage } from '../blob/blob-storage-factory.js';
16
+ import { SessionEventBus } from '../events/event-emitter.js';
17
+ import { FileSystemService } from '../file-system/file-system-service.js';
18
+ import { ByteRoverLlmHttpService } from '../http/internal-llm-http-service.js';
19
+ import { CompactionService } from '../llm/context/compaction/compaction-service.js';
20
+ import { ByteRoverContentGenerator, LoggingContentGenerator, RetryableContentGenerator } from '../llm/generators/index.js';
21
+ import { ByteRoverLLMService } from '../llm/internal-llm-service.js';
22
+ import { OpenRouterLLMService } from '../llm/openrouter-llm-service.js';
23
+ import { DEFAULT_RETRY_POLICY } from '../llm/retry/retry-policy.js';
24
+ import { GeminiTokenizer } from '../llm/tokenizers/gemini-tokenizer.js';
25
+ import { EventBasedLogger } from '../logger/event-based-logger.js';
26
+ import { MemoryManager } from '../memory/memory-manager.js';
27
+ import { ProcessService } from '../process/process-service.js';
28
+ import { BlobHistoryStorage } from '../storage/blob-history-storage.js';
29
+ import { DualFormatHistoryStorage } from '../storage/dual-format-history-storage.js';
30
+ import { GranularHistoryStorage } from '../storage/granular-history-storage.js';
31
+ import { MessageStorageService } from '../storage/message-storage-service.js';
32
+ import { SqliteKeyStorage } from '../storage/sqlite-key-storage.js';
33
+ import { ContextTreeStructureContributor } from '../system-prompt/contributors/context-tree-structure-contributor.js';
34
+ import { SystemPromptManager } from '../system-prompt/system-prompt-manager.js';
35
+ import { CoreToolScheduler } from '../tools/core-tool-scheduler.js';
36
+ import { DEFAULT_POLICY_RULES } from '../tools/default-policy-rules.js';
37
+ import { PolicyEngine } from '../tools/policy-engine.js';
38
+ import { ToolDescriptionLoader } from '../tools/tool-description-loader.js';
39
+ import { ToolManager } from '../tools/tool-manager.js';
40
+ import { ToolProvider } from '../tools/tool-provider.js';
24
41
  /**
25
42
  * Creates shared services for CipherAgent.
26
43
  * These services are singletons shared across all sessions.
27
44
  *
28
- * Following Dexto's pattern: shared services are created once at agent level,
29
- * while session-specific services (LLM, EventBus) are created per session.
45
+ * Initialization order follows DextoAgent pattern (explicit numbered steps):
46
+ * 1. Logger (uses provided event bus)
47
+ * 2. File system service (no dependencies)
48
+ * 3. Process service (no dependencies)
49
+ * 4. Blob storage (no dependencies)
50
+ * 5. Memory system (depends on BlobStorage, Logger)
51
+ * 6. System prompt manager (no dependencies)
52
+ * 7. Tool provider (depends on FileSystemService, ProcessService, MemoryManager)
53
+ * 8. Policy engine (no dependencies)
54
+ * 9. Tool scheduler (depends on ToolProvider, PolicyEngine)
55
+ * 10. Tool manager (depends on ToolProvider, ToolScheduler)
56
+ * 11. History storage (depends on BlobStorage)
57
+ * 12. Return all services
30
58
  *
31
- * @param llmConfig - LLM configuration
59
+ * @param config - Validated agent configuration (Zod-validated)
60
+ * @param agentEventBus - Pre-created event bus from agent constructor (DextoAgent pattern)
32
61
  * @returns Initialized shared services
33
62
  */
34
- export async function createCipherAgentServices(llmConfig) {
35
- // 1. Agent event bus (global)
36
- const agentEventBus = new AgentEventBus();
37
- // 2. Logger (depends on event bus)
63
+ export async function createCipherAgentServices(config, agentEventBus) {
64
+ // 1. Logger (uses provided event bus - DextoAgent pattern)
38
65
  const logger = new EventBasedLogger(agentEventBus, 'CipherAgent');
39
- // 3. File system service (no dependencies)
40
- const fileSystemService = new FileSystemService(llmConfig.fileSystemConfig);
66
+ // 2. File system service (no dependencies)
67
+ const fileSystemService = new FileSystemService(config.fileSystem);
41
68
  await fileSystemService.initialize();
42
- // 4. Process service (no dependencies)
43
- // Use the same working directory as FileSystemService to ensure consistency
44
- const workingDirectory = llmConfig.fileSystemConfig?.workingDirectory ?? process.cwd();
69
+ // 3. Process service (no dependencies)
70
+ const workingDirectory = config.fileSystem?.workingDirectory ?? process.cwd();
45
71
  const processService = new ProcessService({
46
72
  allowedCommands: [],
47
73
  blockedCommands: [],
@@ -53,27 +79,50 @@ export async function createCipherAgentServices(llmConfig) {
53
79
  workingDirectory,
54
80
  });
55
81
  await processService.initialize();
56
- // 5. Blob storage (no dependencies)
57
- // Always uses SQLite for performance and ACID transactions
58
- const blobStorage = createBlobStorage(llmConfig.blobStorageConfig ?? {
82
+ // 4. Blob storage (no dependencies)
83
+ const blobStorage = createBlobStorage(config.blobStorage ?? {
59
84
  maxBlobSize: 100 * 1024 * 1024, // 100MB
60
85
  maxTotalSize: 1024 * 1024 * 1024, // 1GB
61
86
  storageDir: join(workingDirectory, '.brv', 'blobs'),
62
87
  });
63
88
  await blobStorage.initialize();
64
- // 6. Memory system (depends on BlobStorage, Logger)
89
+ // 5. Memory system (depends on BlobStorage, Logger)
65
90
  const memoryLogger = logger.withSource('MemoryManager');
66
91
  const memoryManager = new MemoryManager(blobStorage, memoryLogger);
67
- // 7. Simple prompt factory - SHARED across sessions
68
- // Created early so it can be used by ToolProvider
69
- const verbose = llmConfig.verbose ?? false;
70
- const promptFactory = new SimplePromptFactory(undefined, verbose);
71
- // 8. Tool system (depends on FileSystemService, ProcessService, MemoryManager, PromptFactory)
92
+ // 6. System prompt manager - SHARED across sessions
93
+ // Calculate path to prompts directory relative to this file's location
94
+ // This file is at dist/infra/cipher/agent/service-initializer.js
95
+ // Resources are at dist/resources/prompts/
96
+ const currentDir = dirname(fileURLToPath(import.meta.url));
97
+ const promptsBasePath = join(currentDir, '../../../resources/prompts');
98
+ const systemPromptManager = new SystemPromptManager({
99
+ basePath: promptsBasePath,
100
+ validateConfig: true,
101
+ });
102
+ // Register default contributors
103
+ systemPromptManager.registerContributors([
104
+ { enabled: true, filepath: 'system-prompt.yml', id: 'base', priority: 0, type: 'file' },
105
+ { enabled: true, id: 'env', priority: 10, type: 'environment' },
106
+ { enabled: true, id: 'memories', priority: 20, type: 'memory' },
107
+ { enabled: true, id: 'datetime', priority: 30, type: 'dateTime' },
108
+ ]);
109
+ // Register context tree structure contributor for query/curate commands
110
+ // This injects the .brv/context-tree structure into the system prompt,
111
+ // giving agents immediate awareness of available curated knowledge.
112
+ // Priority 15 ensures it appears after environment but before memories.
113
+ const contextTreeContributor = new ContextTreeStructureContributor('contextTree', 15, {
114
+ workingDirectory,
115
+ });
116
+ systemPromptManager.registerContributor(contextTreeContributor);
117
+ // 7. Tool provider (depends on FileSystemService, ProcessService, MemoryManager, SystemPromptManager)
118
+ const verbose = config.llm.verbose ?? false;
119
+ const descriptionLoader = new ToolDescriptionLoader();
72
120
  const toolProvider = new ToolProvider({
73
121
  fileSystemService,
122
+ getToolProvider: () => toolProvider,
74
123
  memoryManager,
75
124
  processService,
76
- }, promptFactory);
125
+ }, systemPromptManager, descriptionLoader);
77
126
  await toolProvider.initialize();
78
127
  // 8. Policy engine with default rules for autonomous execution
79
128
  const policyEngine = new PolicyEngine({ defaultDecision: 'ALLOW' });
@@ -86,42 +135,54 @@ export async function createCipherAgentServices(llmConfig) {
86
135
  const toolManager = new ToolManager(toolProvider, toolScheduler);
87
136
  await toolManager.initialize();
88
137
  // 11. History storage (depends on BlobStorage) - SHARED across sessions
89
- // Use DualFormatHistoryStorage when granular storage is enabled
90
138
  let historyStorage;
91
- if (llmConfig.useGranularStorage) {
139
+ let compactionService;
140
+ let messageStorageService;
141
+ if (config.useGranularStorage) {
92
142
  // Create granular storage infrastructure
93
143
  const keyStorage = new SqliteKeyStorage({
94
144
  storageDir: join(workingDirectory, '.brv'),
95
145
  });
96
146
  await keyStorage.initialize();
97
147
  const messageStorage = new MessageStorageService(keyStorage);
148
+ messageStorageService = messageStorage;
98
149
  const granularStorage = new GranularHistoryStorage(messageStorage);
99
150
  const blobHistoryStorage = new BlobHistoryStorage(blobStorage);
100
151
  // DualFormatHistoryStorage routes between formats:
101
152
  // - New sessions → GranularHistoryStorage
102
153
  // - Existing sessions → BlobHistoryStorage (no migration)
103
154
  historyStorage = new DualFormatHistoryStorage(blobHistoryStorage, granularStorage);
155
+ // Create CompactionService for context overflow management
156
+ const tokenizer = new GeminiTokenizer(config.model ?? 'gemini-2.5-pro');
157
+ compactionService = new CompactionService(messageStorage, tokenizer, {
158
+ overflowThreshold: 0.85, // 85% triggers compaction check
159
+ protectedTurns: 2, // Protect first 2 user turns from pruning
160
+ pruneKeepTokens: 40_000, // Keep 40k tokens in tool outputs
161
+ pruneMinimumTokens: 20_000, // Only prune if 20k+ tokens can be saved
162
+ });
104
163
  logger.info('Granular history storage enabled for new sessions');
105
164
  }
106
165
  else {
107
166
  // Default: use blob storage for all sessions
108
167
  historyStorage = new BlobHistoryStorage(blobStorage);
109
168
  }
110
- // Log successful initialization
169
+ // 12. Log successful initialization
111
170
  logger.info('CipherAgent services initialized successfully', {
112
- model: llmConfig.model,
113
- verbose: llmConfig.verbose,
171
+ model: config.model,
172
+ verbose: config.llm.verbose,
114
173
  workingDirectory,
115
174
  });
116
175
  return {
117
176
  agentEventBus,
118
177
  blobStorage,
178
+ compactionService,
119
179
  fileSystemService,
120
180
  historyStorage,
121
181
  memoryManager,
182
+ messageStorageService,
122
183
  policyEngine,
123
184
  processService,
124
- promptFactory,
185
+ systemPromptManager,
125
186
  toolManager,
126
187
  toolProvider,
127
188
  toolScheduler,
@@ -129,10 +190,6 @@ export async function createCipherAgentServices(llmConfig) {
129
190
  }
130
191
  /**
131
192
  * Creates session-specific services for a ChatSession.
132
- *
133
- * Following Dexto's pattern: each session gets its own LLM service and event bus
134
- * for conversation isolation, while using shared services for tools/prompts.
135
- *
136
193
  * Generator composition order (innermost to outermost):
137
194
  * 1. Base generator (ByteRoverContentGenerator or OpenRouterContentGenerator)
138
195
  * 2. RetryableContentGenerator - handles transient errors with backoff
@@ -142,14 +199,6 @@ export async function createCipherAgentServices(llmConfig) {
142
199
  * @param sharedServices - Shared services from agent
143
200
  * @param httpConfig - HTTP configuration
144
201
  * @param llmConfig - LLM service configuration
145
- * @param llmConfig.openRouterApiKey - Optional OpenRouter API key for OpenRouter service
146
- * @param llmConfig.httpReferer - Optional HTTP Referer for OpenRouter rankings
147
- * @param llmConfig.siteName - Optional site name for OpenRouter rankings
148
- * @param llmConfig.maxIterations - Maximum iterations for agentic loop
149
- * @param llmConfig.maxTokens - Maximum output tokens
150
- * @param llmConfig.model - LLM model identifier
151
- * @param llmConfig.temperature - Temperature for generation
152
- * @param llmConfig.verbose - Enable verbose debug output
153
202
  * @returns Initialized session services
154
203
  */
155
204
  export function createSessionServices(sessionId, sharedServices, httpConfig, llmConfig) {
@@ -158,11 +207,10 @@ export function createSessionServices(sessionId, sharedServices, httpConfig, llm
158
207
  // 2. Create session-scoped logger
159
208
  const sessionLogger = new EventBasedLogger(sharedServices.agentEventBus, 'LLMService', sessionId);
160
209
  // 3. Create LLM service based on configuration
161
- // Priority: OpenRouter > ByteRover gRPC
210
+ // Priority: OpenRouter > ByteRover HTTP
162
211
  let llmService;
163
212
  if (llmConfig.openRouterApiKey) {
164
213
  // Use OpenRouter service when OpenRouter API key is provided
165
- // OpenRouterLLMService still uses old pattern (to be migrated later)
166
214
  llmService = new OpenRouterLLMService(sessionId, {
167
215
  apiKey: llmConfig.openRouterApiKey,
168
216
  httpReferer: llmConfig.httpReferer,
@@ -176,12 +224,12 @@ export function createSessionServices(sessionId, sharedServices, httpConfig, llm
176
224
  logger: sessionLogger,
177
225
  memoryManager: sharedServices.memoryManager, // SHARED
178
226
  sessionEventBus,
179
- systemPromptManager: sharedServices.promptFactory, // SHARED
227
+ systemPromptManager: sharedServices.systemPromptManager, // SHARED
180
228
  toolManager: sharedServices.toolManager, // SHARED
181
229
  });
182
230
  }
183
231
  else {
184
- // Use HTTP backend service (default) with new generator pattern
232
+ // Use HTTP backend service (default) with generator pattern
185
233
  // Step 1: Create HTTP service
186
234
  const httpService = new ByteRoverLlmHttpService({
187
235
  accessToken: httpConfig.accessToken,
@@ -219,11 +267,12 @@ export function createSessionServices(sessionId, sharedServices, httpConfig, llm
219
267
  temperature: llmConfig.temperature ?? 0.7,
220
268
  verbose: llmConfig.verbose ?? false,
221
269
  }, {
270
+ compactionService: sharedServices.compactionService, // SHARED - for context overflow management
222
271
  historyStorage: sharedServices.historyStorage, // SHARED
223
272
  logger: sessionLogger,
224
273
  memoryManager: sharedServices.memoryManager, // SHARED
225
- promptFactory: sharedServices.promptFactory, // SHARED
226
274
  sessionEventBus,
275
+ systemPromptManager: sharedServices.systemPromptManager, // SHARED
227
276
  toolManager: sharedServices.toolManager, // SHARED
228
277
  });
229
278
  }
@@ -0,0 +1,35 @@
1
+ import type { AgentExecutionState } from '../../../core/interfaces/cipher/i-cipher-agent.js';
2
+ import type { AgentEventBus } from '../events/event-emitter.js';
3
+ /**
4
+ * Termination reason type for agent execution.
5
+ */
6
+ export type TerminationReason = 'ABORTED' | 'ERROR' | 'GOAL' | 'MAX_TURNS' | 'PROTOCOL_VIOLATION' | 'TIMEOUT';
7
+ /**
8
+ * Agent execution context with enhanced state tracking.
9
+ */
10
+ export interface AgentExecutionContext {
11
+ currentIteration: number;
12
+ durationMs?: number;
13
+ endTime?: Date;
14
+ executionState: AgentExecutionState;
15
+ startTime?: Date;
16
+ terminationReason?: TerminationReason;
17
+ toolCallsExecuted: number;
18
+ }
19
+ /**
20
+ * Agent event subscriber interface.
21
+ * Objects implementing this can be registered for event subscription.
22
+ * Follows DextoAgent's AgentEventSubscriber pattern.
23
+ */
24
+ export interface AgentEventSubscriber {
25
+ /**
26
+ * Subscribe to events on the agent event bus.
27
+ * Called when the agent starts and after restart.
28
+ */
29
+ subscribe(eventBus: AgentEventBus): void;
30
+ /**
31
+ * Optional cleanup method called when unsubscribing.
32
+ */
33
+ unsubscribe?(): void;
34
+ }
35
+ export type { AgentConfig, BlobStorageConfig, FileSystemConfig, LLMConfig, LLMUpdates, SessionConfig, ValidatedAgentConfig, ValidatedBlobStorageConfig, ValidatedFileSystemConfig, ValidatedLLMConfig, ValidatedSessionConfig, } from './agent-schemas.js';
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Blob reference resolver for lazy media evaluation.
3
+ *
4
+ * This service resolves @blob:id references in message content to actual data
5
+ * at format-time (when sending to LLM), enabling lazy evaluation of large media.
6
+ *
7
+ * Key features:
8
+ * - Lazy expansion: Blob references only resolved when needed
9
+ * - MIME type filtering: Exclude unsupported media types
10
+ * - Placeholder generation: Replace filtered media with descriptive placeholders
11
+ *
12
+ */
13
+ import type { IBlobStorage } from '../../../core/interfaces/cipher/i-blob-storage.js';
14
+ import type { MessagePart } from '../../../core/interfaces/cipher/message-types.js';
15
+ /**
16
+ * Options for blob reference expansion.
17
+ */
18
+ export interface BlobResolutionOptions {
19
+ /**
20
+ * MIME patterns to allow (e.g., ["image/*", "application/pdf"]).
21
+ * Media not matching any pattern will be replaced with placeholders.
22
+ * If not specified, all media types are allowed.
23
+ */
24
+ allowedMimeTypes?: string[];
25
+ /**
26
+ * Whether to include metadata in resolved parts.
27
+ * Default: false
28
+ */
29
+ includeMetadata?: boolean;
30
+ }
31
+ /**
32
+ * Result of resolving a single blob reference.
33
+ */
34
+ export interface ResolvedBlobResult {
35
+ /** Error message if resolution failed */
36
+ error?: string;
37
+ /** Resolved message parts (may be multiple if embedded in text) */
38
+ parts: MessagePart[];
39
+ /** Whether resolution was successful */
40
+ success: boolean;
41
+ }
42
+ /**
43
+ * Blob reference resolver.
44
+ *
45
+ * Resolves @blob:id references to actual content at format-time.
46
+ */
47
+ export declare class BlobReferenceResolver {
48
+ private readonly blobStorage;
49
+ constructor(blobStorage: IBlobStorage);
50
+ /**
51
+ * Expand blob references in message content.
52
+ *
53
+ * Processes an array of message parts and resolves any @blob:id references
54
+ * to actual content. Supports blob refs in:
55
+ * - TextPart.text (inline references)
56
+ * - ImagePart.image (blob ref instead of base64)
57
+ * - FilePart.data (blob ref instead of base64)
58
+ *
59
+ * @param content - Array of message parts to expand
60
+ * @param options - Resolution options
61
+ * @returns Array of message parts with blob refs resolved
62
+ */
63
+ expandBlobReferences(content: MessagePart[], options?: BlobResolutionOptions): Promise<MessagePart[]>;
64
+ /**
65
+ * Get all blob IDs referenced in content.
66
+ */
67
+ getBlobIds(content: MessagePart[]): string[];
68
+ /**
69
+ * Check if content contains any blob references.
70
+ *
71
+ * Useful for determining if expansion is needed before calling expandBlobReferences.
72
+ */
73
+ hasAnyBlobReferences(content: MessagePart[]): boolean;
74
+ /**
75
+ * Prefetch blobs for a set of message parts.
76
+ *
77
+ * Useful for warming the cache before expansion.
78
+ */
79
+ prefetchBlobs(content: MessagePart[]): Promise<void>;
80
+ /**
81
+ * Expand blob references embedded in text.
82
+ *
83
+ * Text like "Here is the image: @blob:abc123" will be split into
84
+ * multiple parts: text before, image part, text after.
85
+ */
86
+ private expandBlobsInText;
87
+ /**
88
+ * Expand a single message part.
89
+ */
90
+ private expandPart;
91
+ /**
92
+ * Resolve a blob ID to message parts.
93
+ */
94
+ private resolveBlobToParts;
95
+ /**
96
+ * Resolve a file part with blob reference.
97
+ */
98
+ private resolveFileBlob;
99
+ /**
100
+ * Resolve an image part with blob reference.
101
+ */
102
+ private resolveImageBlob;
103
+ }
104
+ /**
105
+ * Create a BlobReferenceResolver instance.
106
+ */
107
+ export declare function createBlobReferenceResolver(blobStorage: IBlobStorage): BlobReferenceResolver;