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
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Base error for Core process failures.
3
+ */
4
+ export declare class CoreProcessError extends Error {
5
+ constructor(message: string);
6
+ }
7
+ /**
8
+ * Error thrown when Core process is already running.
9
+ */
10
+ export declare class CoreProcessAlreadyRunningError extends CoreProcessError {
11
+ constructor();
12
+ }
13
+ /**
14
+ * Error thrown when instance lock cannot be acquired.
15
+ */
16
+ export declare class InstanceLockError extends CoreProcessError {
17
+ readonly existingPid?: number;
18
+ readonly existingPort?: number;
19
+ constructor(existingPid?: number, existingPort?: number);
20
+ }
21
+ /**
22
+ * Error thrown when instance lock acquisition fails for unknown reason.
23
+ */
24
+ export declare class InstanceLockAcquisitionError extends CoreProcessError {
25
+ readonly reason?: string;
26
+ constructor(reason?: string);
27
+ }
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Base error for Core process failures.
3
+ */
4
+ export class CoreProcessError extends Error {
5
+ constructor(message) {
6
+ super(message);
7
+ this.name = 'CoreProcessError';
8
+ }
9
+ }
10
+ /**
11
+ * Error thrown when Core process is already running.
12
+ */
13
+ export class CoreProcessAlreadyRunningError extends CoreProcessError {
14
+ constructor() {
15
+ super('Core process is already running');
16
+ this.name = 'CoreProcessAlreadyRunningError';
17
+ }
18
+ }
19
+ /**
20
+ * Error thrown when instance lock cannot be acquired.
21
+ */
22
+ export class InstanceLockError extends CoreProcessError {
23
+ existingPid;
24
+ existingPort;
25
+ constructor(existingPid, existingPort) {
26
+ const details = existingPid && existingPort ? ` (pid: ${existingPid}, port: ${existingPort})` : '';
27
+ super(`Failed to acquire instance lock. Another instance is already running${details}`);
28
+ this.name = 'InstanceLockError';
29
+ this.existingPid = existingPid;
30
+ this.existingPort = existingPort;
31
+ }
32
+ }
33
+ /**
34
+ * Error thrown when instance lock acquisition fails for unknown reason.
35
+ */
36
+ export class InstanceLockAcquisitionError extends CoreProcessError {
37
+ reason;
38
+ constructor(reason) {
39
+ super(`Failed to acquire instance lock${reason ? `: ${reason}` : ''}`);
40
+ this.name = 'InstanceLockAcquisitionError';
41
+ this.reason = reason;
42
+ }
43
+ }
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Task Error Codes
3
+ * Used for structured error handling in task execution.
4
+ */
5
+ export declare const TaskErrorCode: {
6
+ readonly AGENT_DISCONNECTED: "ERR_AGENT_DISCONNECTED";
7
+ readonly AGENT_NOT_AVAILABLE: "ERR_AGENT_NOT_AVAILABLE";
8
+ readonly LLM_ERROR: "ERR_LLM_ERROR";
9
+ readonly LLM_RATE_LIMIT: "ERR_LLM_RATE_LIMIT";
10
+ readonly NOT_AUTHENTICATED: "ERR_NOT_AUTHENTICATED";
11
+ readonly PROCESSOR_NOT_INIT: "ERR_PROCESSOR_NOT_INIT";
12
+ readonly PROJECT_NOT_INIT: "ERR_PROJECT_NOT_INIT";
13
+ readonly TASK_CANCELLED: "ERR_TASK_CANCELLED";
14
+ readonly TASK_EXECUTION: "ERR_TASK_EXECUTION";
15
+ readonly TASK_TIMEOUT: "ERR_TASK_TIMEOUT";
16
+ readonly UNKNOWN: "ERR_UNKNOWN";
17
+ };
18
+ export type TaskErrorCodeType = (typeof TaskErrorCode)[keyof typeof TaskErrorCode];
19
+ /**
20
+ * Structured error object for transport.
21
+ * All task errors should conform to this shape.
22
+ */
23
+ export interface TaskErrorData {
24
+ code?: TaskErrorCodeType;
25
+ details?: Record<string, unknown>;
26
+ message: string;
27
+ name: string;
28
+ }
29
+ /**
30
+ * Base error class for task-related errors.
31
+ */
32
+ export declare class TaskError extends Error {
33
+ readonly code: TaskErrorCodeType;
34
+ readonly details?: Record<string, unknown>;
35
+ constructor(message: string, code?: TaskErrorCodeType, details?: Record<string, unknown>);
36
+ /**
37
+ * Serialize error for transport.
38
+ */
39
+ toJSON(): TaskErrorData;
40
+ }
41
+ /**
42
+ * Serialize any error to TaskErrorData.
43
+ * Use this when catching errors to send via transport.
44
+ * Preserves original error properties - only adds code if error already has one or has known mapping.
45
+ */
46
+ export declare function serializeTaskError(error: unknown): TaskErrorData;
47
+ export declare class AgentNotAvailableError extends TaskError {
48
+ constructor();
49
+ }
50
+ export declare class AgentDisconnectedError extends TaskError {
51
+ constructor();
52
+ }
53
+ export declare class ProcessorNotInitError extends TaskError {
54
+ constructor();
55
+ }
56
+ export declare class NotAuthenticatedError extends TaskError {
57
+ constructor();
58
+ }
59
+ export declare class ProjectNotInitError extends TaskError {
60
+ constructor();
61
+ }
62
+ export declare class FileValidationError extends Error {
63
+ constructor(message?: string);
64
+ }
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Task Error Codes
3
+ * Used for structured error handling in task execution.
4
+ */
5
+ export const TaskErrorCode = {
6
+ // Agent errors
7
+ AGENT_DISCONNECTED: 'ERR_AGENT_DISCONNECTED',
8
+ AGENT_NOT_AVAILABLE: 'ERR_AGENT_NOT_AVAILABLE',
9
+ // LLM errors
10
+ LLM_ERROR: 'ERR_LLM_ERROR',
11
+ LLM_RATE_LIMIT: 'ERR_LLM_RATE_LIMIT',
12
+ // Auth/Init errors
13
+ NOT_AUTHENTICATED: 'ERR_NOT_AUTHENTICATED',
14
+ // Execution errors
15
+ PROCESSOR_NOT_INIT: 'ERR_PROCESSOR_NOT_INIT',
16
+ PROJECT_NOT_INIT: 'ERR_PROJECT_NOT_INIT',
17
+ TASK_CANCELLED: 'ERR_TASK_CANCELLED',
18
+ TASK_EXECUTION: 'ERR_TASK_EXECUTION',
19
+ TASK_TIMEOUT: 'ERR_TASK_TIMEOUT',
20
+ // Unknown
21
+ UNKNOWN: 'ERR_UNKNOWN',
22
+ };
23
+ /**
24
+ * Base error class for task-related errors.
25
+ */
26
+ export class TaskError extends Error {
27
+ code;
28
+ details;
29
+ constructor(message, code = TaskErrorCode.UNKNOWN, details) {
30
+ super(message);
31
+ this.name = 'TaskError';
32
+ this.code = code;
33
+ this.details = details;
34
+ }
35
+ /**
36
+ * Serialize error for transport.
37
+ */
38
+ toJSON() {
39
+ return {
40
+ code: this.code,
41
+ ...(this.details ? { details: this.details } : {}),
42
+ message: this.message,
43
+ name: this.name,
44
+ };
45
+ }
46
+ }
47
+ /**
48
+ * Serialize any error to TaskErrorData.
49
+ * Use this when catching errors to send via transport.
50
+ * Preserves original error properties - only adds code if error already has one or has known mapping.
51
+ */
52
+ export function serializeTaskError(error) {
53
+ // Already a TaskError - has code
54
+ if (error instanceof TaskError) {
55
+ return error.toJSON();
56
+ }
57
+ // Standard Error with name
58
+ if (error instanceof Error) {
59
+ // Check for known error names and map to codes
60
+ const codeMap = {
61
+ AuthError: TaskErrorCode.NOT_AUTHENTICATED,
62
+ RateLimitError: TaskErrorCode.LLM_RATE_LIMIT,
63
+ TaskCancelledError: TaskErrorCode.TASK_CANCELLED,
64
+ TimeoutError: TaskErrorCode.TASK_TIMEOUT,
65
+ WorkspaceNotInitializedError: TaskErrorCode.PROJECT_NOT_INIT,
66
+ };
67
+ const code = codeMap[error.name];
68
+ return {
69
+ ...(code ? { code } : {}),
70
+ message: error.message,
71
+ name: error.name,
72
+ };
73
+ }
74
+ // Unknown error type
75
+ return {
76
+ message: String(error),
77
+ name: 'Error',
78
+ };
79
+ }
80
+ // Specific error classes for common cases
81
+ export class AgentNotAvailableError extends TaskError {
82
+ constructor() {
83
+ super('Agent not available. Please wait for Agent to connect.', TaskErrorCode.AGENT_NOT_AVAILABLE);
84
+ this.name = 'AgentNotAvailableError';
85
+ }
86
+ }
87
+ export class AgentDisconnectedError extends TaskError {
88
+ constructor() {
89
+ super('Agent disconnected', TaskErrorCode.AGENT_DISCONNECTED);
90
+ this.name = 'AgentDisconnectedError';
91
+ }
92
+ }
93
+ export class ProcessorNotInitError extends TaskError {
94
+ constructor() {
95
+ super('TaskProcessor not initialized', TaskErrorCode.PROCESSOR_NOT_INIT);
96
+ this.name = 'ProcessorNotInitError';
97
+ }
98
+ }
99
+ export class NotAuthenticatedError extends TaskError {
100
+ constructor() {
101
+ super('Not authenticated. Please run "brv login" first.', TaskErrorCode.NOT_AUTHENTICATED);
102
+ this.name = 'NotAuthenticatedError';
103
+ }
104
+ }
105
+ export class ProjectNotInitError extends TaskError {
106
+ constructor() {
107
+ super('Project not initialized. Please run "brv init" first.', TaskErrorCode.PROJECT_NOT_INIT);
108
+ this.name = 'ProjectNotInitError';
109
+ }
110
+ }
111
+ export class FileValidationError extends Error {
112
+ constructor(message = 'File validation failed. Please check file paths.') {
113
+ super(message);
114
+ this.name = 'FileValidationError';
115
+ }
116
+ }
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Base error for transport layer failures.
3
+ */
4
+ export declare class TransportError extends Error {
5
+ constructor(message: string);
6
+ }
7
+ /**
8
+ * Error thrown when connection to server fails.
9
+ */
10
+ export declare class TransportConnectionError extends TransportError {
11
+ readonly originalError?: Error;
12
+ readonly url: string;
13
+ constructor(url: string, originalError?: Error);
14
+ }
15
+ /**
16
+ * Error thrown when client is not connected to server.
17
+ */
18
+ export declare class TransportNotConnectedError extends TransportError {
19
+ constructor(operation?: string);
20
+ }
21
+ /**
22
+ * Error thrown when server is not started.
23
+ */
24
+ export declare class TransportServerNotStartedError extends TransportError {
25
+ constructor(operation?: string);
26
+ }
27
+ /**
28
+ * Error thrown when server is already running.
29
+ */
30
+ export declare class TransportServerAlreadyRunningError extends TransportError {
31
+ readonly port: number;
32
+ constructor(port: number);
33
+ }
34
+ /**
35
+ * Error thrown when port is already in use.
36
+ */
37
+ export declare class TransportPortInUseError extends TransportError {
38
+ readonly port: number;
39
+ constructor(port: number);
40
+ }
41
+ /**
42
+ * Error thrown when a request times out.
43
+ */
44
+ export declare class TransportRequestTimeoutError extends TransportError {
45
+ readonly event: string;
46
+ readonly timeoutMs: number;
47
+ constructor(event: string, timeoutMs: number);
48
+ }
49
+ /**
50
+ * Error thrown when a request fails with server error.
51
+ */
52
+ export declare class TransportRequestError extends TransportError {
53
+ readonly event: string;
54
+ constructor(event: string, message?: string);
55
+ }
56
+ /**
57
+ * Error thrown when room operations fail.
58
+ */
59
+ export declare class TransportRoomError extends TransportError {
60
+ readonly operation: 'join' | 'leave';
61
+ readonly room: string;
62
+ constructor(room: string, operation: 'join' | 'leave');
63
+ }
64
+ /**
65
+ * Error thrown when room operation times out.
66
+ */
67
+ export declare class TransportRoomTimeoutError extends TransportError {
68
+ readonly operation: 'join' | 'leave';
69
+ readonly room: string;
70
+ readonly timeoutMs: number;
71
+ constructor(room: string, operation: 'join' | 'leave', timeoutMs: number);
72
+ }
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Base error for transport layer failures.
3
+ */
4
+ export class TransportError extends Error {
5
+ constructor(message) {
6
+ super(message);
7
+ this.name = 'TransportError';
8
+ }
9
+ }
10
+ /**
11
+ * Error thrown when connection to server fails.
12
+ */
13
+ export class TransportConnectionError extends TransportError {
14
+ originalError;
15
+ url;
16
+ constructor(url, originalError) {
17
+ super(`Connection failed to ${url}${originalError ? `: ${originalError.message}` : ''}`);
18
+ this.name = 'TransportConnectionError';
19
+ this.url = url;
20
+ this.originalError = originalError;
21
+ }
22
+ }
23
+ /**
24
+ * Error thrown when client is not connected to server.
25
+ */
26
+ export class TransportNotConnectedError extends TransportError {
27
+ constructor(operation = 'operation') {
28
+ super(`Not connected to server. Cannot perform: ${operation}`);
29
+ this.name = 'TransportNotConnectedError';
30
+ }
31
+ }
32
+ /**
33
+ * Error thrown when server is not started.
34
+ */
35
+ export class TransportServerNotStartedError extends TransportError {
36
+ constructor(operation = 'operation') {
37
+ super(`Server not started. Cannot perform: ${operation}`);
38
+ this.name = 'TransportServerNotStartedError';
39
+ }
40
+ }
41
+ /**
42
+ * Error thrown when server is already running.
43
+ */
44
+ export class TransportServerAlreadyRunningError extends TransportError {
45
+ port;
46
+ constructor(port) {
47
+ super(`Server is already running on port ${port}`);
48
+ this.name = 'TransportServerAlreadyRunningError';
49
+ this.port = port;
50
+ }
51
+ }
52
+ /**
53
+ * Error thrown when port is already in use.
54
+ */
55
+ export class TransportPortInUseError extends TransportError {
56
+ port;
57
+ constructor(port) {
58
+ super(`Port ${port} is already in use`);
59
+ this.name = 'TransportPortInUseError';
60
+ this.port = port;
61
+ }
62
+ }
63
+ /**
64
+ * Error thrown when a request times out.
65
+ */
66
+ export class TransportRequestTimeoutError extends TransportError {
67
+ event;
68
+ timeoutMs;
69
+ constructor(event, timeoutMs) {
70
+ super(`Request timeout for event '${event}' after ${timeoutMs}ms`);
71
+ this.name = 'TransportRequestTimeoutError';
72
+ this.event = event;
73
+ this.timeoutMs = timeoutMs;
74
+ }
75
+ }
76
+ /**
77
+ * Error thrown when a request fails with server error.
78
+ */
79
+ export class TransportRequestError extends TransportError {
80
+ event;
81
+ constructor(event, message = 'Request failed') {
82
+ super(`${message} for event '${event}'`);
83
+ this.name = 'TransportRequestError';
84
+ this.event = event;
85
+ }
86
+ }
87
+ /**
88
+ * Error thrown when room operations fail.
89
+ */
90
+ export class TransportRoomError extends TransportError {
91
+ operation;
92
+ room;
93
+ constructor(room, operation) {
94
+ super(`Failed to ${operation} room '${room}'`);
95
+ this.name = 'TransportRoomError';
96
+ this.room = room;
97
+ this.operation = operation;
98
+ }
99
+ }
100
+ /**
101
+ * Error thrown when room operation times out.
102
+ */
103
+ export class TransportRoomTimeoutError extends TransportError {
104
+ operation;
105
+ room;
106
+ timeoutMs;
107
+ constructor(room, operation, timeoutMs) {
108
+ super(`${operation === 'join' ? 'Join' : 'Leave'} room '${room}' timed out after ${timeoutMs}ms`);
109
+ this.name = 'TransportRoomTimeoutError';
110
+ this.room = room;
111
+ this.operation = operation;
112
+ this.timeoutMs = timeoutMs;
113
+ }
114
+ }
@@ -0,0 +1 @@
1
+ export * from './types.js';
@@ -0,0 +1 @@
1
+ export * from './types.js';
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Raw instance data as stored in instance.json.
3
+ * Used for serialization/deserialization.
4
+ *
5
+ * NOTE: We don't store "status" - we check pid alive at runtime instead.
6
+ * This avoids stale status when process crashes.
7
+ */
8
+ export type InstanceInfoJson = {
9
+ /** Current active session ID (for quick lookup without DB query) */
10
+ currentSessionId: null | string;
11
+ /** Process ID of the Core process */
12
+ pid: number;
13
+ /** Port the transport server is listening on */
14
+ port: number;
15
+ /** Timestamp when instance started (ms since epoch) */
16
+ startedAt: number;
17
+ };
18
+ /**
19
+ * Instance information representing a BRV Core process.
20
+ *
21
+ * Architecture note (Section 7):
22
+ * - File exists + pid alive → instance đang chạy
23
+ * - File exists + pid dead → stale (crash), có thể overwrite
24
+ * - File không có → không có instance nào
25
+ */
26
+ export declare class InstanceInfo {
27
+ readonly currentSessionId: null | string;
28
+ readonly pid: number;
29
+ readonly port: number;
30
+ readonly startedAt: Date;
31
+ private constructor();
32
+ /**
33
+ * Creates a new instance info.
34
+ */
35
+ static create(data: {
36
+ currentSessionId?: null | string;
37
+ pid: number;
38
+ port: number;
39
+ }): InstanceInfo;
40
+ /**
41
+ * Creates instance info from JSON data (from instance.json file).
42
+ */
43
+ static fromJson(json: InstanceInfoJson): InstanceInfo;
44
+ /**
45
+ * Returns the transport URL for connecting to this instance.
46
+ * Uses 'localhost' instead of '127.0.0.1' for better sandbox compatibility.
47
+ */
48
+ getTransportUrl(): string;
49
+ /**
50
+ * Converts instance info to JSON for persistence.
51
+ */
52
+ toJson(): InstanceInfoJson;
53
+ /**
54
+ * Creates a new instance info with updated session ID.
55
+ */
56
+ withSessionId(sessionId: string): InstanceInfo;
57
+ }
@@ -0,0 +1,72 @@
1
+ import { TRANSPORT_HOST } from '../../../constants.js';
2
+ /**
3
+ * Instance information representing a BRV Core process.
4
+ *
5
+ * Architecture note (Section 7):
6
+ * - File exists + pid alive → instance đang chạy
7
+ * - File exists + pid dead → stale (crash), có thể overwrite
8
+ * - File không có → không có instance nào
9
+ */
10
+ export class InstanceInfo {
11
+ currentSessionId;
12
+ pid;
13
+ port;
14
+ startedAt;
15
+ constructor(data) {
16
+ this.currentSessionId = data.currentSessionId;
17
+ this.pid = data.pid;
18
+ this.port = data.port;
19
+ this.startedAt = data.startedAt;
20
+ }
21
+ /**
22
+ * Creates a new instance info.
23
+ */
24
+ static create(data) {
25
+ return new InstanceInfo({
26
+ currentSessionId: data.currentSessionId ?? null,
27
+ pid: data.pid,
28
+ port: data.port,
29
+ startedAt: new Date(),
30
+ });
31
+ }
32
+ /**
33
+ * Creates instance info from JSON data (from instance.json file).
34
+ */
35
+ static fromJson(json) {
36
+ return new InstanceInfo({
37
+ currentSessionId: json.currentSessionId,
38
+ pid: json.pid,
39
+ port: json.port,
40
+ startedAt: new Date(json.startedAt),
41
+ });
42
+ }
43
+ /**
44
+ * Returns the transport URL for connecting to this instance.
45
+ * Uses 'localhost' instead of '127.0.0.1' for better sandbox compatibility.
46
+ */
47
+ getTransportUrl() {
48
+ return `http://${TRANSPORT_HOST}:${this.port}`;
49
+ }
50
+ /**
51
+ * Converts instance info to JSON for persistence.
52
+ */
53
+ toJson() {
54
+ return {
55
+ currentSessionId: this.currentSessionId,
56
+ pid: this.pid,
57
+ port: this.port,
58
+ startedAt: this.startedAt.getTime(),
59
+ };
60
+ }
61
+ /**
62
+ * Creates a new instance info with updated session ID.
63
+ */
64
+ withSessionId(sessionId) {
65
+ return new InstanceInfo({
66
+ currentSessionId: sessionId,
67
+ pid: this.pid,
68
+ port: this.port,
69
+ startedAt: this.startedAt,
70
+ });
71
+ }
72
+ }
@@ -34,6 +34,15 @@ export declare const DirectoryManager: {
34
34
  * @returns Whether topic was created, updated, or skipped
35
35
  */
36
36
  createOrUpdateTopic(topicPath: string): Promise<CreateOrUpdateResult>;
37
+ /**
38
+ * Delete a single file.
39
+ *
40
+ * @param filePath - Path to file to delete
41
+ * @returns Whether the file was deleted
42
+ */
43
+ deleteFile(filePath: string): Promise<{
44
+ deleted: boolean;
45
+ }>;
37
46
  /**
38
47
  * Delete a topic/subtopic folder recursively.
39
48
  * Removes the folder and all its contents.
@@ -65,6 +74,13 @@ export declare const DirectoryManager: {
65
74
  * @returns true if file exists, false otherwise
66
75
  */
67
76
  fileExists(filePath: string): Promise<boolean>;
77
+ /**
78
+ * Check if a folder exists.
79
+ *
80
+ * @param folderPath - Path to folder
81
+ * @returns true if folder exists and is a directory, false otherwise
82
+ */
83
+ folderExists(folderPath: string): Promise<boolean>;
68
84
  /**
69
85
  * List all markdown files recursively in a directory.
70
86
  *
@@ -43,6 +43,22 @@ export const DirectoryManager = {
43
43
  return { created: true, skipped: false, updated: false };
44
44
  }
45
45
  },
46
+ /**
47
+ * Delete a single file.
48
+ *
49
+ * @param filePath - Path to file to delete
50
+ * @returns Whether the file was deleted
51
+ */
52
+ async deleteFile(filePath) {
53
+ try {
54
+ await fs.access(filePath);
55
+ await fs.unlink(filePath);
56
+ return { deleted: true };
57
+ }
58
+ catch {
59
+ return { deleted: false };
60
+ }
61
+ },
46
62
  /**
47
63
  * Delete a topic/subtopic folder recursively.
48
64
  * Removes the folder and all its contents.
@@ -108,6 +124,21 @@ export const DirectoryManager = {
108
124
  return false;
109
125
  }
110
126
  },
127
+ /**
128
+ * Check if a folder exists.
129
+ *
130
+ * @param folderPath - Path to folder
131
+ * @returns true if folder exists and is a directory, false otherwise
132
+ */
133
+ async folderExists(folderPath) {
134
+ try {
135
+ const stat = await fs.stat(folderPath);
136
+ return stat.isDirectory();
137
+ }
138
+ catch {
139
+ return false;
140
+ }
141
+ },
111
142
  /**
112
143
  * List all markdown files recursively in a directory.
113
144
  *
@@ -0,0 +1,2 @@
1
+ export * from './schemas.js';
2
+ export * from './types.js';
@@ -0,0 +1,2 @@
1
+ export * from './schemas.js';
2
+ export * from './types.js';