byterover-cli 0.4.1 → 1.0.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 (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,424 +0,0 @@
1
- import { join } from 'node:path';
2
- import { z } from 'zod';
3
- import { BRV_DIR, CONTEXT_FILE, CONTEXT_TREE_DIR } from '../../../../constants.js';
4
- import { ToolName } from '../../../../core/domain/cipher/tools/constants.js';
5
- import { DirectoryManager } from '../../../../core/domain/knowledge/directory-manager.js';
6
- import { parseRelations } from '../../../../core/domain/knowledge/relation-parser.js';
7
- /**
8
- * Input schema for finding knowledge topics.
9
- * Supports pattern matching, scoping, depth control, and pagination.
10
- */
11
- const FindKnowledgeTopicsInputSchema = z.object({
12
- basePath: z
13
- .string()
14
- .default(`${BRV_DIR}/${CONTEXT_TREE_DIR}`)
15
- .describe('Base path to context tree structure'),
16
- // Scoping
17
- domain: z
18
- .string()
19
- .optional()
20
- .describe('Restrict search to specific domain (exact match)'),
21
- // Search filters (substring matching)
22
- domainPattern: z
23
- .string()
24
- .optional()
25
- .describe('Domain name pattern for substring matching'),
26
- // Relation traversal
27
- followRelations: z
28
- .boolean()
29
- .default(false)
30
- .describe('Automatically fetch related topics referenced in Relations section'),
31
- includeContent: z
32
- .boolean()
33
- .default(false)
34
- .describe('Include content preview from context.md files'),
35
- // Depth control
36
- includeSubtopics: z
37
- .boolean()
38
- .default(false)
39
- .describe('Include subtopic details in results'),
40
- // Pagination
41
- limit: z
42
- .number()
43
- .int()
44
- .positive()
45
- .optional()
46
- .describe('Maximum number of results to return'),
47
- offset: z
48
- .number()
49
- .int()
50
- .nonnegative()
51
- .default(0)
52
- .describe('Number of results to skip'),
53
- relationDepth: z
54
- .number()
55
- .int()
56
- .positive()
57
- .default(1)
58
- .describe('How many levels deep to follow relations (default: 1, max: 3)'),
59
- subtopicPattern: z
60
- .string()
61
- .optional()
62
- .describe('Subtopic name pattern for substring matching'),
63
- topicPattern: z
64
- .string()
65
- .optional()
66
- .describe('Topic name pattern for substring matching'),
67
- });
68
- /**
69
- * Read content preview from a file, truncating to 500 characters if needed.
70
- */
71
- async function readContentPreview(filePath) {
72
- try {
73
- const content = await DirectoryManager.readFile(filePath);
74
- return content.length > 500 ? content.slice(0, 500) + '...' : content;
75
- }
76
- catch {
77
- return '[Content unavailable]';
78
- }
79
- }
80
- /**
81
- * Read and parse relations from a context.md file.
82
- */
83
- async function readRelations(filePath) {
84
- try {
85
- const content = await DirectoryManager.readFile(filePath);
86
- return parseRelations(content);
87
- }
88
- catch {
89
- return [];
90
- }
91
- }
92
- /**
93
- * Process a single subtopic file and return its entry.
94
- */
95
- async function processSubtopicFile(params) {
96
- const { domainName, includeContent, subtopicFile, subtopicPattern, topicName, topicPath } = params;
97
- const subtopicRelativePath = subtopicFile.replace(topicPath, '').replace(/^\//, '');
98
- const subtopicParts = subtopicRelativePath.split('/');
99
- // Check if this is a subtopic context.md (not the topic's own context.md)
100
- if (subtopicParts.length <= 1 || subtopicParts.at(-1) !== CONTEXT_FILE) {
101
- return null;
102
- }
103
- const subtopicName = subtopicParts[0];
104
- // Apply subtopic pattern filter if specified (case-insensitive)
105
- if (subtopicPattern && !subtopicName.toLowerCase().includes(subtopicPattern.toLowerCase())) {
106
- return null;
107
- }
108
- const subtopicEntry = {
109
- name: subtopicName,
110
- path: `${BRV_DIR}/${CONTEXT_TREE_DIR}/${domainName}/${topicName}/${subtopicName}/${CONTEXT_FILE}` // Full path
111
- };
112
- // Include subtopic content preview if requested
113
- if (includeContent) {
114
- subtopicEntry.contentPreview = await readContentPreview(subtopicFile);
115
- }
116
- // Always parse relations to enable relation traversal
117
- const relations = await readRelations(subtopicFile);
118
- if (relations.length > 0) {
119
- subtopicEntry.relations = relations;
120
- }
121
- return subtopicEntry;
122
- }
123
- /**
124
- * Collect all subtopics for a given topic.
125
- */
126
- async function collectSubtopics(params) {
127
- const { basePath, domainName, includeContent, subtopicPattern, topicName } = params;
128
- const topicPath = join(basePath, domainName, topicName);
129
- const subtopicFiles = await DirectoryManager.listMarkdownFiles(topicPath);
130
- const subtopics = [];
131
- for (const subtopicFile of subtopicFiles) {
132
- // eslint-disable-next-line no-await-in-loop
133
- const subtopicEntry = await processSubtopicFile({
134
- domainName,
135
- includeContent,
136
- subtopicFile,
137
- subtopicPattern,
138
- topicName,
139
- topicPath,
140
- });
141
- if (subtopicEntry) {
142
- subtopics.push(subtopicEntry);
143
- }
144
- }
145
- return subtopics;
146
- }
147
- /**
148
- * Check if a topic matches the filter criteria.
149
- */
150
- function matchesFilters(params) {
151
- const { domain, domainName, domainPattern, topicName, topicPattern } = params;
152
- // Normalize all strings to lowercase for case-insensitive matching
153
- const normalizedDomainName = domainName.toLowerCase();
154
- const normalizedTopicName = topicName.toLowerCase();
155
- // Apply domain scoping filter (exact match, case-insensitive)
156
- if (domain && normalizedDomainName !== domain.toLowerCase())
157
- return false;
158
- // Apply pattern filters (substring matching, case-insensitive)
159
- if (domainPattern && !normalizedDomainName.includes(domainPattern.toLowerCase()))
160
- return false;
161
- if (topicPattern && !normalizedTopicName.includes(topicPattern.toLowerCase()))
162
- return false;
163
- return true;
164
- }
165
- /**
166
- * Collect relations from subtopics.
167
- */
168
- function collectSubtopicRelations(subtopics) {
169
- const relations = [];
170
- for (const subtopic of subtopics) {
171
- if (subtopic.relations) {
172
- relations.push(...subtopic.relations);
173
- }
174
- }
175
- return relations;
176
- }
177
- /**
178
- * Collect all relation paths from a set of results.
179
- */
180
- function collectAllRelations(results) {
181
- const allRelations = new Set();
182
- for (const result of results) {
183
- if (result.relations) {
184
- for (const rel of result.relations)
185
- allRelations.add(rel);
186
- }
187
- if (result.subtopics) {
188
- const subtopicRelations = collectSubtopicRelations(result.subtopics);
189
- for (const rel of subtopicRelations)
190
- allRelations.add(rel);
191
- }
192
- }
193
- return allRelations;
194
- }
195
- /**
196
- * Fetch related topics by following relation references.
197
- * Recursively traverses relations up to the specified depth.
198
- */
199
- async function fetchRelatedTopics(params) {
200
- const { basePath, currentDepth, includeContent, maxDepth, relationPaths, seenPaths } = params;
201
- if (currentDepth > maxDepth || relationPaths.length === 0) {
202
- return [];
203
- }
204
- const relatedTopics = [];
205
- for (const relationPath of relationPaths) {
206
- // Avoid circular references
207
- if (seenPaths.has(relationPath))
208
- continue;
209
- seenPaths.add(relationPath);
210
- const parts = relationPath.split('/');
211
- if (parts.length < 2 || parts.length > 3)
212
- continue;
213
- const [domainName, topicName] = parts;
214
- const contextPath = join(basePath, ...parts, CONTEXT_FILE);
215
- try {
216
- // eslint-disable-next-line no-await-in-loop
217
- const fileExists = await DirectoryManager.fileExists(contextPath);
218
- if (!fileExists)
219
- continue;
220
- const entry = {
221
- domain: domainName,
222
- path: `${basePath}/${relationPath}/${CONTEXT_FILE}`,
223
- topic: topicName,
224
- };
225
- // Include content preview if requested
226
- if (includeContent) {
227
- // eslint-disable-next-line no-await-in-loop
228
- entry.contentPreview = await readContentPreview(contextPath);
229
- }
230
- // Parse relations from this topic
231
- // eslint-disable-next-line no-await-in-loop
232
- const nestedRelations = await readRelations(contextPath);
233
- if (nestedRelations.length > 0) {
234
- entry.relations = nestedRelations;
235
- // Recursively fetch nested relations if depth allows
236
- if (currentDepth < maxDepth) {
237
- // eslint-disable-next-line no-await-in-loop
238
- const nestedTopics = await fetchRelatedTopics({
239
- basePath,
240
- currentDepth: currentDepth + 1,
241
- includeContent,
242
- maxDepth,
243
- relationPaths: nestedRelations,
244
- seenPaths,
245
- });
246
- relatedTopics.push(...nestedTopics);
247
- }
248
- }
249
- relatedTopics.push(entry);
250
- }
251
- catch {
252
- // Skip missing or invalid relations
253
- continue;
254
- }
255
- }
256
- return relatedTopics;
257
- }
258
- /**
259
- * Execute the find knowledge topics operation.
260
- * Searches the context tree structure and applies filters.
261
- *
262
- * @param input - Validated input parameters
263
- * @param _context - Tool execution context (unused)
264
- * @returns Structured results with total count and paginated data
265
- */
266
- async function executeFindKnowledgeTopics(input, _context) {
267
- const { basePath, domain, domainPattern, followRelations, includeContent, includeSubtopics, limit, offset, relationDepth, subtopicPattern, topicPattern, } = input;
268
- const results = [];
269
- const seenTopics = new Set(); // Track unique topic paths to avoid duplicates
270
- try {
271
- // List all markdown files in the context tree
272
- const mdFiles = await DirectoryManager.listMarkdownFiles(basePath);
273
- // Process each markdown file
274
- for (const filePath of mdFiles) {
275
- // Extract relative path from base
276
- const relativePath = filePath.replace(basePath, '').replace(/^\//, '');
277
- const parts = relativePath.split('/');
278
- // Context tree structure: domain/topic/context.md or domain/topic/subtopic/context.md
279
- if (parts.length < 2)
280
- continue; // Need at least domain/file
281
- const [domainName, topicName, ...rest] = parts;
282
- const isSubtopic = rest.length > 1; // Has subtopic folder
283
- // Skip if not a context.md file (only process context files)
284
- const fileName = parts.at(-1);
285
- if (fileName !== CONTEXT_FILE)
286
- continue;
287
- if (parts.length === 2)
288
- continue; // Skip domain context.md files because they don't have much info
289
- // Handle subtopic pattern filtering (case-insensitive)
290
- if (isSubtopic) {
291
- const subtopicName = rest[0];
292
- if (subtopicPattern && !subtopicName.toLowerCase().includes(subtopicPattern.toLowerCase()))
293
- continue;
294
- // Skip subtopics for now - we'll collect them when processing their parent topic
295
- continue;
296
- }
297
- // Apply filters
298
- if (!matchesFilters({
299
- domain,
300
- domainName,
301
- domainPattern,
302
- topicName,
303
- topicPattern,
304
- })) {
305
- continue;
306
- }
307
- // Create unique key for this topic to avoid duplicates
308
- const topicKey = `${domainName}/${topicName}`;
309
- if (seenTopics.has(topicKey))
310
- continue;
311
- seenTopics.add(topicKey);
312
- // Build result entry for this topic
313
- const entry = {
314
- domain: domainName,
315
- path: `${basePath}/${domainName}/${topicName}/${CONTEXT_FILE}`,
316
- topic: topicName,
317
- };
318
- // Include content preview if requested
319
- if (includeContent) {
320
- // eslint-disable-next-line no-await-in-loop
321
- entry.contentPreview = await readContentPreview(filePath);
322
- }
323
- // Always parse relations to enable relation traversal
324
- // eslint-disable-next-line no-await-in-loop
325
- const topicRelations = await readRelations(filePath);
326
- if (topicRelations.length > 0) {
327
- entry.relations = topicRelations;
328
- }
329
- // Include subtopics if requested
330
- if (includeSubtopics) {
331
- // eslint-disable-next-line no-await-in-loop
332
- const subtopics = await collectSubtopics({
333
- basePath,
334
- domainName,
335
- includeContent,
336
- subtopicPattern,
337
- topicName,
338
- });
339
- if (subtopics.length > 0) {
340
- entry.subtopics = subtopics;
341
- }
342
- }
343
- results.push(entry);
344
- }
345
- // Apply pagination
346
- const total = results.length;
347
- const effectiveOffset = offset ?? 0;
348
- const paginatedResults = limit
349
- ? results.slice(effectiveOffset, effectiveOffset + limit)
350
- : results.slice(effectiveOffset);
351
- // Follow relations if requested
352
- if (followRelations && paginatedResults.length > 0) {
353
- const maxDepth = Math.min(relationDepth ?? 1, 3); // Cap at 3 to prevent excessive traversal
354
- const allRelations = collectAllRelations(paginatedResults);
355
- // Fetch related topics recursively
356
- if (allRelations.size > 0) {
357
- const relatedTopics = await fetchRelatedTopics({
358
- basePath,
359
- currentDepth: 1,
360
- includeContent,
361
- maxDepth,
362
- relationPaths: [...allRelations],
363
- seenPaths: seenTopics, // Reuse seenTopics to avoid duplicates
364
- });
365
- // Append related topics to results
366
- paginatedResults.push(...relatedTopics);
367
- }
368
- }
369
- return {
370
- results: paginatedResults,
371
- total,
372
- };
373
- }
374
- catch {
375
- // If base path doesn't exist or other errors, return empty results
376
- return {
377
- results: [],
378
- total: 0,
379
- };
380
- }
381
- }
382
- /**
383
- * Factory function to create the find knowledge topics tool.
384
- *
385
- * @returns Configured Tool instance
386
- */
387
- export function createFindKnowledgeTopicsTool() {
388
- return {
389
- description: `Search and filter knowledge topics in the context tree structure with relation support.
390
-
391
- This tool helps discover what knowledge has been stored and navigate the domain/topic hierarchy. It works similarly to find_symbol but for knowledge organization, with the ability to follow relations between topics.
392
-
393
- **Use cases:**
394
- - Discover what knowledge topics exist in a domain
395
- - Find topics matching specific patterns
396
- - Navigate the knowledge hierarchy via relations
397
- - Retrieve context for specific areas
398
- - Check what has been documented
399
- - Follow related topics for comprehensive context
400
-
401
- **Search capabilities:**
402
- - Pattern matching on domain, topic, and subtopic names (substring matching)
403
- - Scope searches to specific domains (exact match)
404
- - Optional subtopic inclusion (depth control)
405
- - Optional content preview (500 character limit)
406
- - Pagination for large result sets
407
- - Relation traversal (automatically fetch related topics up to 3 levels deep)
408
-
409
- **Examples:**
410
- - Find all topics in "testing" domain: {domain: "testing"}
411
- - Find topics about "eslint": {topicPattern: "eslint"}
412
- - Find subtopics with "config": {subtopicPattern: "config", includeSubtopics: true}
413
- - Get content previews: {domain: "architecture", includeContent: true}
414
- - Follow relations: {topicPattern: "auth", followRelations: true, relationDepth: 2}
415
- - Paginate results: {limit: 10, offset: 0}
416
-
417
- **Returns:**
418
- - total: Total number of matching topics (before relation traversal)
419
- - results: Array of topic entries with domain, topic name, optional relations, subtopics, and content with complete paths`,
420
- execute: executeFindKnowledgeTopics,
421
- id: ToolName.FIND_KNOWLEDGE_TOPICS,
422
- inputSchema: FindKnowledgeTopicsInputSchema,
423
- };
424
- }
@@ -1,9 +0,0 @@
1
- description: "autonomous execution instructions"
2
- prompt: |
3
-
4
- CRITICAL: Autonomous Execution Required
5
-
6
- You are currently in autonomous mode. You can use all tools to process the input data and perform the CREATE, READ, UPDATE and DELETE operations on the context tree without any human intervention.
7
-
8
- excluded_tools: []
9
-
@@ -1,48 +0,0 @@
1
- description: "context tree retrieval instructions for query command"
2
- prompt: |
3
-
4
- Your task is to search and retrieve relevant information from the context tree to answer the user's query.
5
- Prioritize tool call efficiency for tools that can be run in parallel.
6
- ONLY give up on search in the last iteration.
7
-
8
- Follow these steps to provide comprehensive answers:
9
-
10
- 1. **Understand the query**: Analyze what the user is asking for - which domains, topics, or specific information they need.
11
-
12
- 2. **Search strategically**:
13
- - Use `find_knowledge_topics` to locate relevant topics across domains with pattern matching. Use the 'path' field for `read_file` tool if you need full content.
14
- - Use `read_file` to read the full content of relevant context.md files
15
- - Use `grep_content` to search for specific terms, code snippets, or patterns within context files
16
- - Use `glob_files` to find files by path patterns if needed
17
- - For multi-part queries (queries that include words like "and"), use tools in parallel:
18
- - Use `find_knowledge_topics` and `read_file` multiple times to get all relevant topics and their full content.
19
- - If ANY of these tools don't depend on each other, try to run them in the same iteration.
20
- - Consider the context tree structure: `.brv/context-tree/{domain}/{topic}/context.md` or `.brv/context-tree/{domain}/{topic}/{subtopic}/context.md`
21
-
22
- 3. **Read relevant content**:
23
- - Use `read_file` to read the full content of relevant context.md files
24
- - Read multiple files if the query spans multiple domains or topics
25
-
26
- 4. **Synthesize and present**:
27
- - Organize findings by domain and topic
28
- - Important: Even if you don't have the answer, provide the best answer you can with the information gathered.
29
- - Include relevant content excerpts with their source paths (e.g., "From code_style/best_practices:")
30
- - Provide clear, structured answers with citations.
31
- - If multiple topics are relevant, group them logically
32
-
33
- 5. **Be thorough but efficient**:
34
- - Search progressively - start broad, then narrow down based on findings
35
- - Use pattern matching to avoid reading entire tree
36
- - If initial search returns too many results, refine with more specific patterns
37
- - If search returns no results, try broader patterns or alternative terms
38
-
39
- Default domains in the context tree (search in .brv/context-tree if users add new domains):
40
- - `code_style` - Coding standards, style guidelines, quality standards
41
- - `design` - UI/UX design, component libraries, themes, design systems
42
- - `structure` - Project structure, architecture, component organization
43
- - `compliance` - Security policies, compliance requirements, best practices
44
- - `testing` - Testing strategies, test implementation, quality assurance
45
- - `bug_fixes` - Bug fixing procedures, common issues, troubleshooting guides
46
-
47
- excluded_tools: []
48
-
@@ -1,31 +0,0 @@
1
- /**
2
- * Consumer Context
3
- *
4
- * Global context for managing consumer service and queue polling state.
5
- * Consolidates useConsumer and useQueuePolling hooks into a single context.
6
- *
7
- * Usage:
8
- * ```tsx
9
- * const { consumerId, sessionExecutions, stats } = useConsumer()
10
- * ```
11
- */
12
- import React from 'react';
13
- import type { ExecutionWithToolCalls, QueueStats } from '../../infra/cipher/consumer/queue-polling-service.js';
14
- import type { ConsumerStatus } from '../types.js';
15
- interface ConsumerContextValue {
16
- consumerError: Error | null;
17
- consumerId: null | string;
18
- consumerStatus: ConsumerStatus;
19
- isConnected: boolean;
20
- pollingError: Error | null;
21
- reconnectCount: number;
22
- restart: () => Promise<void>;
23
- sessionExecutions: ExecutionWithToolCalls[];
24
- stats: null | QueueStats;
25
- }
26
- interface ConsumerProviderProps {
27
- children: React.ReactNode;
28
- }
29
- export declare function ConsumerProvider({ children }: ConsumerProviderProps): React.ReactElement;
30
- export declare function useConsumer(): ConsumerContextValue;
31
- export {};
@@ -1,56 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- /**
3
- * Consumer Context
4
- *
5
- * Global context for managing consumer service and queue polling state.
6
- * Consolidates useConsumer and useQueuePolling hooks into a single context.
7
- *
8
- * Usage:
9
- * ```tsx
10
- * const { consumerId, sessionExecutions, stats } = useConsumer()
11
- * ```
12
- */
13
- import { createContext, useContext, useMemo } from 'react';
14
- import { useConsumer as useConsumerHook } from '../hooks/use-consumer.js';
15
- import { useQueuePolling } from '../hooks/use-queue-polling.js';
16
- const ConsumerContext = createContext(undefined);
17
- export function ConsumerProvider({ children }) {
18
- // Start consumer service
19
- const { consumerError, consumerId, consumerStatus, restart } = useConsumerHook();
20
- // Poll queue for executions and stats
21
- const { error: pollingError, isConnected, reconnectCount, sessionExecutions, stats, } = useQueuePolling({
22
- consumerId: consumerId ?? undefined,
23
- pollInterval: 1000,
24
- });
25
- const contextValue = useMemo(() => ({
26
- // Consumer state
27
- consumerError,
28
- consumerId,
29
- consumerStatus,
30
- // Queue polling state
31
- isConnected,
32
- pollingError,
33
- reconnectCount,
34
- restart,
35
- sessionExecutions,
36
- stats,
37
- }), [
38
- consumerError,
39
- consumerId,
40
- consumerStatus,
41
- restart,
42
- isConnected,
43
- pollingError,
44
- reconnectCount,
45
- sessionExecutions,
46
- stats,
47
- ]);
48
- return _jsx(ConsumerContext.Provider, { value: contextValue, children: children });
49
- }
50
- export function useConsumer() {
51
- const context = useContext(ConsumerContext);
52
- if (!context) {
53
- throw new Error('useConsumer must be used within ConsumerProvider');
54
- }
55
- return context;
56
- }
@@ -1,12 +0,0 @@
1
- /**
2
- * Consumer Hook
3
- *
4
- * Hook to manage consumer lifecycle
5
- */
6
- import type { ConsumerStatus } from '../types.js';
7
- export declare function useConsumer(): {
8
- consumerError: Error | null;
9
- consumerId: null | string;
10
- consumerStatus: ConsumerStatus;
11
- restart: () => Promise<void>;
12
- };
@@ -1,50 +0,0 @@
1
- /**
2
- * Consumer Hook
3
- *
4
- * Hook to manage consumer lifecycle
5
- */
6
- import { useCallback, useEffect, useRef, useState } from 'react';
7
- import { ConsumerService } from '../../infra/cipher/consumer/consumer-service.js';
8
- export function useConsumer() {
9
- const [status, setStatus] = useState('starting');
10
- const [consumerError, setConsumerError] = useState(null);
11
- const [consumerId, setConsumerId] = useState(null);
12
- const consumerRef = useRef(new ConsumerService());
13
- const mountedRef = useRef(true);
14
- const startConsumer = useCallback(async () => {
15
- try {
16
- setStatus('starting');
17
- setConsumerError(null);
18
- await consumerRef.current.start();
19
- if (mountedRef.current) {
20
- setStatus('running');
21
- setConsumerId(consumerRef.current.getConsumerId());
22
- }
23
- }
24
- catch (error) {
25
- if (mountedRef.current) {
26
- setStatus('error');
27
- setConsumerError(error instanceof Error ? error : new Error(String(error)));
28
- }
29
- }
30
- }, []);
31
- const restart = useCallback(async () => {
32
- // Dispose current consumer
33
- consumerRef.current.dispose();
34
- setStatus('stopped');
35
- setConsumerId(null);
36
- // Create new consumer and start
37
- consumerRef.current = new ConsumerService();
38
- await startConsumer();
39
- }, [startConsumer]);
40
- useEffect(() => {
41
- mountedRef.current = true;
42
- startConsumer();
43
- return () => {
44
- mountedRef.current = false;
45
- consumerRef.current.dispose();
46
- setStatus('stopped');
47
- };
48
- }, [startConsumer]);
49
- return { consumerError, consumerId, consumerStatus: status, restart };
50
- }
@@ -1,31 +0,0 @@
1
- /**
2
- * Queue Polling Hook
3
- *
4
- * React hook for subscribing to QueuePollingService events
5
- *
6
- * Architecture:
7
- * - Connects to singleton QueuePollingService
8
- * - Updates React state only when data changes
9
- * - Cleans up on unmount
10
- * - Prevents memory leaks via singleton pattern
11
- *
12
- * Usage in Ink component:
13
- * ```tsx
14
- * const { stats, sessionExecutions, error } = useQueuePolling({ consumerId })
15
- * ```
16
- */
17
- import type { ExecutionWithToolCalls, QueueStats } from '../../infra/cipher/consumer/queue-polling-service.js';
18
- export declare function useQueuePolling(options?: {
19
- consumerId?: string;
20
- pollInterval?: number;
21
- }): {
22
- error: Error | null;
23
- isConnected: boolean;
24
- reconnectCount: number;
25
- sessionExecutions: ExecutionWithToolCalls[];
26
- stats: null | QueueStats;
27
- };
28
- /**
29
- * Cleanup hook - call when dashboard unmounts
30
- */
31
- export declare function useQueuePollingCleanup(): () => void;