byterover-cli 0.4.0 → 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 (478) 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/entities/event.d.ts +1 -1
  49. package/dist/core/domain/entities/event.js +3 -1
  50. package/dist/core/domain/errors/connection-error.d.ts +33 -0
  51. package/dist/core/domain/errors/connection-error.js +54 -0
  52. package/dist/core/domain/errors/core-process-error.d.ts +27 -0
  53. package/dist/core/domain/errors/core-process-error.js +43 -0
  54. package/dist/core/domain/errors/task-error.d.ts +64 -0
  55. package/dist/core/domain/errors/task-error.js +116 -0
  56. package/dist/core/domain/errors/transport-error.d.ts +72 -0
  57. package/dist/core/domain/errors/transport-error.js +114 -0
  58. package/dist/core/domain/instance/index.d.ts +1 -0
  59. package/dist/core/domain/instance/index.js +1 -0
  60. package/dist/core/domain/instance/types.d.ts +57 -0
  61. package/dist/core/domain/instance/types.js +72 -0
  62. package/dist/core/domain/knowledge/directory-manager.d.ts +16 -0
  63. package/dist/core/domain/knowledge/directory-manager.js +31 -0
  64. package/dist/core/domain/transport/index.d.ts +2 -0
  65. package/dist/core/domain/transport/index.js +2 -0
  66. package/dist/core/domain/transport/schemas.d.ts +1149 -0
  67. package/dist/core/domain/transport/schemas.js +554 -0
  68. package/dist/core/domain/transport/types.d.ts +67 -0
  69. package/dist/core/domain/transport/types.js +7 -0
  70. package/dist/core/interfaces/cipher/cipher-services.d.ts +15 -3
  71. package/dist/core/interfaces/cipher/i-chat-session.d.ts +47 -5
  72. package/dist/core/interfaces/cipher/i-cipher-agent.d.ts +39 -4
  73. package/dist/core/interfaces/cipher/i-content-generator.d.ts +3 -5
  74. package/dist/core/interfaces/cipher/i-file-system.d.ts +12 -1
  75. package/dist/core/interfaces/cipher/i-llm-service.d.ts +4 -5
  76. package/dist/core/interfaces/cipher/i-todo-storage.d.ts +24 -0
  77. package/dist/core/interfaces/cipher/i-todo-storage.js +1 -0
  78. package/dist/core/interfaces/cipher/i-tool-plugin.d.ts +90 -0
  79. package/dist/core/interfaces/cipher/i-tool-plugin.js +1 -0
  80. package/dist/core/interfaces/cipher/i-tool-provider.d.ts +3 -2
  81. package/dist/core/interfaces/cipher/i-tool-scheduler.d.ts +4 -0
  82. package/dist/core/interfaces/cipher/index.d.ts +35 -0
  83. package/dist/core/interfaces/cipher/index.js +11 -0
  84. package/dist/core/interfaces/cipher/message-factory.d.ts +155 -0
  85. package/dist/core/interfaces/cipher/message-factory.js +252 -0
  86. package/dist/core/interfaces/cipher/message-type-guards.d.ts +139 -0
  87. package/dist/core/interfaces/cipher/message-type-guards.js +173 -0
  88. package/dist/core/interfaces/cipher/message-types.d.ts +279 -5
  89. package/dist/core/interfaces/cipher/message-types.js +6 -0
  90. package/dist/core/interfaces/cipher/sanitization-types.d.ts +147 -0
  91. package/dist/core/interfaces/cipher/sanitization-types.js +46 -0
  92. package/dist/core/interfaces/executor/i-curate-executor.d.ts +34 -0
  93. package/dist/core/interfaces/executor/i-curate-executor.js +1 -0
  94. package/dist/core/interfaces/executor/i-query-executor.d.ts +32 -0
  95. package/dist/core/interfaces/executor/i-query-executor.js +1 -0
  96. package/dist/core/interfaces/executor/index.d.ts +2 -0
  97. package/dist/core/interfaces/executor/index.js +2 -0
  98. package/dist/core/interfaces/instance/i-instance-discovery.d.ts +45 -0
  99. package/dist/core/interfaces/instance/i-instance-discovery.js +1 -0
  100. package/dist/core/interfaces/instance/i-instance-manager.d.ts +58 -0
  101. package/dist/core/interfaces/instance/i-instance-manager.js +1 -0
  102. package/dist/core/interfaces/instance/index.d.ts +2 -0
  103. package/dist/core/interfaces/instance/index.js +2 -0
  104. package/dist/core/interfaces/noop-implementations.d.ts +53 -0
  105. package/dist/core/interfaces/noop-implementations.js +62 -0
  106. package/dist/core/interfaces/transport/i-transport-client.d.ts +97 -0
  107. package/dist/core/interfaces/transport/i-transport-client.js +1 -0
  108. package/dist/core/interfaces/transport/i-transport-server.d.ts +93 -0
  109. package/dist/core/interfaces/transport/i-transport-server.js +1 -0
  110. package/dist/core/interfaces/transport/index.d.ts +2 -0
  111. package/dist/core/interfaces/transport/index.js +2 -0
  112. package/dist/hooks/init/welcome.js +9 -24
  113. package/dist/infra/cipher/agent/agent-error-codes.d.ts +16 -0
  114. package/dist/infra/cipher/agent/agent-error-codes.js +17 -0
  115. package/dist/infra/cipher/agent/agent-error.d.ts +54 -0
  116. package/dist/infra/cipher/agent/agent-error.js +79 -0
  117. package/dist/infra/cipher/agent/agent-schemas.d.ts +264 -0
  118. package/dist/infra/cipher/agent/agent-schemas.js +97 -0
  119. package/dist/infra/cipher/agent/agent-state-manager.d.ts +140 -0
  120. package/dist/infra/cipher/agent/agent-state-manager.js +275 -0
  121. package/dist/infra/cipher/agent/base-agent.d.ts +118 -0
  122. package/dist/infra/cipher/agent/base-agent.js +240 -0
  123. package/dist/infra/cipher/agent/cipher-agent.d.ts +165 -0
  124. package/dist/infra/cipher/agent/cipher-agent.js +546 -0
  125. package/dist/infra/cipher/agent/index.d.ts +22 -0
  126. package/dist/infra/cipher/agent/index.js +24 -0
  127. package/dist/infra/cipher/agent/service-initializer.d.ts +79 -0
  128. package/dist/infra/cipher/{agent-service-factory.js → agent/service-initializer.js} +117 -68
  129. package/dist/infra/cipher/agent/types.d.ts +35 -0
  130. package/dist/infra/cipher/agent/types.js +1 -0
  131. package/dist/infra/cipher/blob/blob-reference-resolver.d.ts +107 -0
  132. package/dist/infra/cipher/blob/blob-reference-resolver.js +228 -0
  133. package/dist/infra/cipher/blob/blob-reference-utils.d.ts +117 -0
  134. package/dist/infra/cipher/blob/blob-reference-utils.js +230 -0
  135. package/dist/infra/cipher/consumer/consumer-lock.js +1 -0
  136. package/dist/infra/cipher/consumer/consumer-service.js +1 -0
  137. package/dist/infra/cipher/consumer/execution-consumer.d.ts +6 -1
  138. package/dist/infra/cipher/consumer/execution-consumer.js +54 -16
  139. package/dist/infra/cipher/consumer/index.d.ts +1 -1
  140. package/dist/infra/cipher/consumer/index.js +2 -1
  141. package/dist/infra/cipher/consumer/queue-polling-service.js +1 -0
  142. package/dist/infra/cipher/file-system/binary-utils.d.ts +43 -0
  143. package/dist/infra/cipher/file-system/binary-utils.js +164 -0
  144. package/dist/infra/cipher/file-system/context-tree-file-system-factory.d.ts +9 -0
  145. package/dist/infra/cipher/file-system/context-tree-file-system-factory.js +24 -0
  146. package/dist/infra/cipher/file-system/file-system-service.d.ts +17 -1
  147. package/dist/infra/cipher/file-system/file-system-service.js +327 -36
  148. package/dist/infra/cipher/file-system/path-validator.d.ts +32 -0
  149. package/dist/infra/cipher/file-system/path-validator.js +111 -6
  150. package/dist/infra/cipher/interactive-loop.js +41 -33
  151. package/dist/infra/cipher/llm/capability-cache.d.ts +87 -0
  152. package/dist/infra/cipher/llm/capability-cache.js +125 -0
  153. package/dist/infra/cipher/llm/context/compaction/compaction-service.d.ts +32 -0
  154. package/dist/infra/cipher/llm/context/compaction/compaction-service.js +44 -3
  155. package/dist/infra/cipher/llm/context/compression/enhanced-compaction.d.ts +112 -0
  156. package/dist/infra/cipher/llm/context/compression/enhanced-compaction.js +175 -0
  157. package/dist/infra/cipher/llm/context/compression/filter-compacted.d.ts +83 -0
  158. package/dist/infra/cipher/llm/context/compression/filter-compacted.js +150 -0
  159. package/dist/infra/cipher/llm/context/compression/index.d.ts +5 -0
  160. package/dist/infra/cipher/llm/context/compression/index.js +6 -0
  161. package/dist/infra/cipher/llm/context/compression/reactive-overflow.d.ts +107 -0
  162. package/dist/infra/cipher/llm/context/compression/reactive-overflow.js +272 -0
  163. package/dist/infra/cipher/llm/context/context-manager.d.ts +47 -1
  164. package/dist/infra/cipher/llm/context/context-manager.js +129 -0
  165. package/dist/infra/cipher/llm/context/utils.js +17 -4
  166. package/dist/infra/cipher/llm/generators/byterover-content-generator.js +4 -2
  167. package/dist/infra/cipher/llm/internal-llm-service.d.ts +50 -17
  168. package/dist/infra/cipher/llm/internal-llm-service.js +273 -50
  169. package/dist/infra/cipher/llm/openrouter-llm-service.d.ts +6 -8
  170. package/dist/infra/cipher/llm/openrouter-llm-service.js +14 -16
  171. package/dist/infra/cipher/llm/retry/retry-policy.d.ts +1 -0
  172. package/dist/infra/cipher/llm/retry/retry-policy.js +11 -0
  173. package/dist/infra/cipher/llm/retry/retry-with-backoff.js +3 -2
  174. package/dist/infra/cipher/llm/sanitization/base64-utils.d.ts +102 -0
  175. package/dist/infra/cipher/llm/sanitization/base64-utils.js +182 -0
  176. package/dist/infra/cipher/llm/sanitization/index.d.ts +12 -0
  177. package/dist/infra/cipher/llm/sanitization/index.js +13 -0
  178. package/dist/infra/cipher/llm/sanitization/tool-sanitizer.d.ts +74 -0
  179. package/dist/infra/cipher/llm/sanitization/tool-sanitizer.js +398 -0
  180. package/dist/infra/cipher/llm/stream-processor.d.ts +158 -0
  181. package/dist/infra/cipher/llm/stream-processor.js +276 -0
  182. package/dist/infra/cipher/llm/tokenizers/claude-tokenizer.d.ts +13 -20
  183. package/dist/infra/cipher/llm/tokenizers/claude-tokenizer.js +17 -24
  184. package/dist/infra/cipher/llm/tokenizers/gemini-tokenizer.d.ts +12 -11
  185. package/dist/infra/cipher/llm/tokenizers/gemini-tokenizer.js +16 -15
  186. package/dist/infra/cipher/llm/tokenizers/openrouter-tokenizer.d.ts +15 -7
  187. package/dist/infra/cipher/llm/tokenizers/openrouter-tokenizer.js +22 -10
  188. package/dist/infra/cipher/llm/tool-output-processor.d.ts +51 -0
  189. package/dist/infra/cipher/llm/tool-output-processor.js +139 -0
  190. package/dist/infra/cipher/process/command-validator.d.ts +23 -0
  191. package/dist/infra/cipher/process/command-validator.js +75 -0
  192. package/dist/infra/cipher/process/path-utils.d.ts +66 -0
  193. package/dist/infra/cipher/process/path-utils.js +94 -0
  194. package/dist/infra/cipher/process/process-service.d.ts +32 -0
  195. package/dist/infra/cipher/process/process-service.js +98 -17
  196. package/dist/infra/cipher/session/chat-session.d.ts +56 -7
  197. package/dist/infra/cipher/session/chat-session.js +163 -13
  198. package/dist/infra/cipher/session/index.d.ts +1 -0
  199. package/dist/infra/cipher/session/index.js +2 -0
  200. package/dist/infra/cipher/session/message-queue.d.ts +65 -0
  201. package/dist/infra/cipher/session/message-queue.js +90 -0
  202. package/dist/infra/cipher/session/session-manager.d.ts +106 -5
  203. package/dist/infra/cipher/session/session-manager.js +254 -7
  204. package/dist/infra/cipher/session/session-status.d.ts +137 -0
  205. package/dist/infra/cipher/session/session-status.js +184 -0
  206. package/dist/infra/cipher/session/title-generator.d.ts +8 -0
  207. package/dist/infra/cipher/session/title-generator.js +31 -0
  208. package/dist/infra/cipher/storage/message-storage-service.d.ts +65 -2
  209. package/dist/infra/cipher/storage/message-storage-service.js +300 -54
  210. package/dist/infra/cipher/storage/tool-part-factory.d.ts +116 -0
  211. package/dist/infra/cipher/storage/tool-part-factory.js +197 -0
  212. package/dist/infra/cipher/system-prompt/contributor-schemas.d.ts +516 -0
  213. package/dist/infra/cipher/system-prompt/contributor-schemas.js +85 -0
  214. package/dist/infra/cipher/system-prompt/contributors/agent-prompt-contributor.d.ts +59 -0
  215. package/dist/infra/cipher/system-prompt/contributors/agent-prompt-contributor.js +131 -0
  216. package/dist/infra/cipher/system-prompt/contributors/companion-contributor.d.ts +54 -0
  217. package/dist/infra/cipher/system-prompt/contributors/companion-contributor.js +107 -0
  218. package/dist/infra/cipher/system-prompt/contributors/context-tree-structure-contributor.d.ts +68 -0
  219. package/dist/infra/cipher/system-prompt/contributors/context-tree-structure-contributor.js +179 -0
  220. package/dist/infra/cipher/system-prompt/contributors/datetime-contributor.d.ts +25 -0
  221. package/dist/infra/cipher/system-prompt/contributors/datetime-contributor.js +29 -0
  222. package/dist/infra/cipher/system-prompt/contributors/environment-contributor.d.ts +25 -0
  223. package/dist/infra/cipher/system-prompt/contributors/environment-contributor.js +54 -0
  224. package/dist/infra/cipher/system-prompt/contributors/file-contributor.d.ts +60 -0
  225. package/dist/infra/cipher/system-prompt/contributors/file-contributor.js +128 -0
  226. package/dist/infra/cipher/system-prompt/contributors/index.d.ts +13 -0
  227. package/dist/infra/cipher/system-prompt/contributors/index.js +8 -0
  228. package/dist/infra/cipher/system-prompt/contributors/memory-contributor.d.ts +40 -0
  229. package/dist/infra/cipher/system-prompt/contributors/memory-contributor.js +56 -0
  230. package/dist/infra/cipher/system-prompt/contributors/static-contributor.d.ts +26 -0
  231. package/dist/infra/cipher/system-prompt/contributors/static-contributor.js +31 -0
  232. package/dist/infra/cipher/system-prompt/environment-context-builder.d.ts +112 -0
  233. package/dist/infra/cipher/system-prompt/environment-context-builder.js +256 -0
  234. package/dist/infra/cipher/system-prompt/prompt-cache.d.ts +102 -0
  235. package/dist/infra/cipher/system-prompt/prompt-cache.js +156 -0
  236. package/dist/infra/cipher/system-prompt/schemas.d.ts +151 -0
  237. package/dist/infra/cipher/system-prompt/schemas.js +94 -0
  238. package/dist/infra/cipher/system-prompt/system-prompt-manager.d.ts +136 -0
  239. package/dist/infra/cipher/system-prompt/system-prompt-manager.js +307 -0
  240. package/dist/infra/cipher/todos/todo-storage-service.d.ts +26 -0
  241. package/dist/infra/cipher/todos/todo-storage-service.js +28 -0
  242. package/dist/infra/cipher/tools/core-tool-scheduler.js +5 -1
  243. package/dist/infra/cipher/tools/default-policy-rules.js +1 -1
  244. package/dist/infra/cipher/tools/implementations/bash-exec-tool.d.ts +1 -0
  245. package/dist/infra/cipher/tools/implementations/bash-exec-tool.js +27 -10
  246. package/dist/infra/cipher/tools/implementations/bash-output-tool.js +1 -5
  247. package/dist/infra/cipher/tools/implementations/batch-tool.d.ts +12 -0
  248. package/dist/infra/cipher/tools/implementations/batch-tool.js +142 -0
  249. package/dist/infra/cipher/tools/implementations/curate-tool.js +195 -68
  250. package/dist/infra/cipher/tools/implementations/list-directory-tool.d.ts +12 -0
  251. package/dist/infra/cipher/tools/implementations/list-directory-tool.js +52 -0
  252. package/dist/infra/cipher/tools/implementations/read-file-tool.d.ts +8 -1
  253. package/dist/infra/cipher/tools/implementations/read-file-tool.js +17 -7
  254. package/dist/infra/cipher/tools/implementations/read-todos-tool.d.ts +11 -0
  255. package/dist/infra/cipher/tools/implementations/read-todos-tool.js +39 -0
  256. package/dist/infra/cipher/tools/implementations/{detect-domains-tool.d.ts → spec-analyze-tool.d.ts} +1 -1
  257. package/dist/infra/cipher/tools/implementations/{detect-domains-tool.js → spec-analyze-tool.js} +9 -7
  258. package/dist/infra/cipher/tools/implementations/task-tool.d.ts +34 -0
  259. package/dist/infra/cipher/tools/implementations/task-tool.js +207 -0
  260. package/dist/infra/cipher/tools/implementations/write-todos-tool.d.ts +4 -1
  261. package/dist/infra/cipher/tools/implementations/write-todos-tool.js +19 -63
  262. package/dist/infra/cipher/tools/index.d.ts +1 -1
  263. package/dist/infra/cipher/tools/index.js +1 -1
  264. package/dist/infra/cipher/tools/plugins/index.d.ts +3 -0
  265. package/dist/infra/cipher/tools/plugins/index.js +2 -0
  266. package/dist/infra/cipher/tools/plugins/logging-plugin.d.ts +28 -0
  267. package/dist/infra/cipher/tools/plugins/logging-plugin.js +66 -0
  268. package/dist/infra/cipher/tools/plugins/plugin-manager.d.ts +81 -0
  269. package/dist/infra/cipher/tools/plugins/plugin-manager.js +122 -0
  270. package/dist/infra/cipher/tools/streaming/index.d.ts +1 -0
  271. package/dist/infra/cipher/tools/streaming/index.js +1 -0
  272. package/dist/infra/cipher/tools/streaming/metadata-handler.d.ts +31 -0
  273. package/dist/infra/cipher/tools/streaming/metadata-handler.js +39 -0
  274. package/dist/infra/cipher/tools/tool-description-loader.d.ts +57 -0
  275. package/dist/infra/cipher/tools/tool-description-loader.js +108 -0
  276. package/dist/infra/cipher/tools/tool-manager.d.ts +38 -4
  277. package/dist/infra/cipher/tools/tool-manager.js +107 -11
  278. package/dist/infra/cipher/tools/tool-provider-getter.d.ts +6 -0
  279. package/dist/infra/cipher/tools/tool-provider-getter.js +1 -0
  280. package/dist/infra/cipher/tools/tool-provider.d.ts +32 -7
  281. package/dist/infra/cipher/tools/tool-provider.js +81 -25
  282. package/dist/infra/cipher/tools/tool-registry.d.ts +23 -0
  283. package/dist/infra/cipher/tools/tool-registry.js +58 -16
  284. package/dist/infra/context-tree/file-context-tree-snapshot-service.js +10 -4
  285. package/dist/infra/context-tree/file-context-tree-writer-service.d.ts +4 -3
  286. package/dist/infra/context-tree/file-context-tree-writer-service.js +6 -4
  287. package/dist/infra/context-tree/path-utils.d.ts +7 -0
  288. package/dist/infra/context-tree/path-utils.js +7 -0
  289. package/dist/infra/core/executors/curate-executor.d.ts +35 -0
  290. package/dist/infra/core/executors/curate-executor.js +123 -0
  291. package/dist/infra/core/executors/index.d.ts +2 -0
  292. package/dist/infra/core/executors/index.js +2 -0
  293. package/dist/infra/core/executors/query-executor.d.ts +23 -0
  294. package/dist/infra/core/executors/query-executor.js +51 -0
  295. package/dist/infra/core/task-processor.d.ts +81 -0
  296. package/dist/infra/core/task-processor.js +115 -0
  297. package/dist/infra/instance/file-instance-discovery.d.ts +31 -0
  298. package/dist/infra/instance/file-instance-discovery.js +84 -0
  299. package/dist/infra/instance/file-instance-manager.d.ts +46 -0
  300. package/dist/infra/instance/file-instance-manager.js +123 -0
  301. package/dist/infra/instance/index.d.ts +3 -0
  302. package/dist/infra/instance/index.js +3 -0
  303. package/dist/infra/instance/process-utils.d.ts +14 -0
  304. package/dist/infra/instance/process-utils.js +39 -0
  305. package/dist/infra/process/agent-worker.d.ts +20 -0
  306. package/dist/infra/process/agent-worker.js +602 -0
  307. package/dist/infra/process/index.d.ts +12 -0
  308. package/dist/infra/process/index.js +11 -0
  309. package/dist/infra/process/ipc-types.d.ts +55 -0
  310. package/dist/infra/process/ipc-types.js +12 -0
  311. package/dist/infra/process/process-manager.d.ts +154 -0
  312. package/dist/infra/process/process-manager.js +471 -0
  313. package/dist/infra/process/task-queue-manager.d.ts +123 -0
  314. package/dist/infra/process/task-queue-manager.js +226 -0
  315. package/dist/infra/process/transport-handlers.d.ts +124 -0
  316. package/dist/infra/process/transport-handlers.js +348 -0
  317. package/dist/infra/process/transport-worker.d.ts +20 -0
  318. package/dist/infra/process/transport-worker.js +168 -0
  319. package/dist/infra/repl/commands/curate-command.js +0 -5
  320. package/dist/infra/repl/commands/query-command.js +0 -3
  321. package/dist/infra/repl/repl-startup.d.ts +4 -0
  322. package/dist/infra/repl/repl-startup.js +10 -1
  323. package/dist/infra/repl/transport-client-helper.d.ts +9 -0
  324. package/dist/infra/repl/transport-client-helper.js +96 -0
  325. package/dist/infra/transport/index.d.ts +4 -0
  326. package/dist/infra/transport/index.js +4 -0
  327. package/dist/infra/transport/port-utils.d.ts +42 -0
  328. package/dist/infra/transport/port-utils.js +84 -0
  329. package/dist/infra/transport/socket-io-transport-client.d.ts +45 -0
  330. package/dist/infra/transport/socket-io-transport-client.js +270 -0
  331. package/dist/infra/transport/socket-io-transport-server.d.ts +35 -0
  332. package/dist/infra/transport/socket-io-transport-server.js +207 -0
  333. package/dist/infra/transport/transport-client-factory.d.ts +76 -0
  334. package/dist/infra/transport/transport-client-factory.js +168 -0
  335. package/dist/infra/transport/transport-factory.d.ts +33 -0
  336. package/dist/infra/transport/transport-factory.js +59 -0
  337. package/dist/infra/usecase/curate-use-case.d.ts +8 -55
  338. package/dist/infra/usecase/curate-use-case.js +73 -259
  339. package/dist/infra/usecase/init-use-case.js +19 -8
  340. package/dist/infra/usecase/login-use-case.js +9 -3
  341. package/dist/infra/usecase/query-use-case.d.ts +18 -45
  342. package/dist/infra/usecase/query-use-case.js +251 -326
  343. package/dist/infra/usecase/status-use-case.js +1 -1
  344. package/dist/resources/prompts/{curate-context-tree-curation.yml → curate.yml} +25 -22
  345. package/dist/resources/prompts/explore.yml +78 -0
  346. package/dist/resources/prompts/plan.yml +114 -0
  347. package/dist/resources/prompts/reflection.yml +1 -1
  348. package/dist/resources/prompts/system-prompt.yml +15 -8
  349. package/dist/resources/prompts/tool-outputs.yml +0 -5
  350. package/dist/resources/tools/bash_exec.txt +98 -0
  351. package/dist/resources/tools/bash_output.txt +40 -0
  352. package/dist/resources/tools/batch.txt +28 -0
  353. package/dist/resources/tools/create_knowledge_topic.txt +23 -0
  354. package/dist/resources/tools/curate.txt +22 -0
  355. package/dist/resources/tools/delete_memory.txt +1 -0
  356. package/dist/resources/tools/detect_domains.txt +11 -0
  357. package/dist/resources/tools/edit_file.txt +1 -0
  358. package/dist/resources/tools/edit_memory.txt +1 -0
  359. package/dist/resources/tools/glob_files.txt +20 -0
  360. package/dist/resources/tools/grep_content.txt +18 -0
  361. package/dist/resources/tools/kill_process.txt +16 -0
  362. package/dist/resources/tools/list_directory.txt +16 -0
  363. package/dist/resources/tools/list_memories.txt +1 -0
  364. package/dist/resources/tools/read_file.txt +31 -0
  365. package/dist/resources/tools/read_memory.txt +1 -0
  366. package/dist/resources/tools/read_todos.txt +17 -0
  367. package/dist/resources/tools/search_history.txt +1 -0
  368. package/dist/resources/tools/task.txt +23 -0
  369. package/dist/resources/tools/write_file.txt +1 -0
  370. package/dist/resources/tools/write_memory.txt +1 -0
  371. package/dist/resources/tools/write_todos.txt +29 -0
  372. package/dist/tui/app.js +9 -13
  373. package/dist/tui/components/command-details.d.ts +14 -0
  374. package/dist/tui/components/command-details.js +35 -0
  375. package/dist/tui/components/execution/execution-changes.d.ts +5 -0
  376. package/dist/tui/components/execution/execution-changes.js +19 -4
  377. package/dist/tui/components/execution/execution-content.d.ts +4 -2
  378. package/dist/tui/components/execution/execution-content.js +26 -13
  379. package/dist/tui/components/execution/execution-input.js +3 -3
  380. package/dist/tui/components/execution/execution-progress.d.ts +2 -2
  381. package/dist/tui/components/execution/execution-progress.js +8 -6
  382. package/dist/tui/components/execution/log-item.d.ts +3 -4
  383. package/dist/tui/components/execution/log-item.js +2 -5
  384. package/dist/tui/components/footer.js +9 -4
  385. package/dist/tui/components/header.d.ts +3 -3
  386. package/dist/tui/components/header.js +5 -3
  387. package/dist/tui/components/index.d.ts +1 -0
  388. package/dist/tui/components/index.js +1 -0
  389. package/dist/tui/components/onboarding/copyable-prompt.d.ts +5 -3
  390. package/dist/tui/components/onboarding/copyable-prompt.js +7 -8
  391. package/dist/tui/components/onboarding/onboarding-flow.js +35 -25
  392. package/dist/tui/components/scrollable-list.js +12 -10
  393. package/dist/tui/components/suggestions.js +39 -41
  394. package/dist/tui/components/tab-bar.d.ts +2 -1
  395. package/dist/tui/components/tab-bar.js +3 -4
  396. package/dist/tui/constants.d.ts +0 -5
  397. package/dist/tui/constants.js +0 -5
  398. package/dist/tui/contexts/auth-context.js +9 -2
  399. package/dist/tui/contexts/{use-commands.js → commands-context.js} +6 -5
  400. package/dist/tui/contexts/index.d.ts +6 -1
  401. package/dist/tui/contexts/index.js +6 -1
  402. package/dist/tui/contexts/onboarding-context.d.ts +1 -1
  403. package/dist/tui/contexts/onboarding-context.js +9 -9
  404. package/dist/tui/contexts/tasks-context.d.ts +84 -0
  405. package/dist/tui/contexts/tasks-context.js +218 -0
  406. package/dist/tui/contexts/transport-context.d.ts +29 -0
  407. package/dist/tui/contexts/transport-context.js +82 -0
  408. package/dist/tui/hooks/index.d.ts +10 -6
  409. package/dist/tui/hooks/index.js +7 -6
  410. package/dist/tui/hooks/use-activity-logs.d.ts +3 -11
  411. package/dist/tui/hooks/use-activity-logs.js +87 -34
  412. package/dist/tui/hooks/use-auth-polling.d.ts +24 -0
  413. package/dist/tui/hooks/use-auth-polling.js +104 -0
  414. package/dist/tui/hooks/use-slash-command-processor.js +0 -1
  415. package/dist/tui/hooks/use-slash-completion.js +1 -1
  416. package/dist/tui/hooks/use-tab-navigation.d.ts +2 -1
  417. package/dist/tui/hooks/use-tab-navigation.js +16 -7
  418. package/dist/tui/hooks/use-terminal-breakpoint.d.ts +21 -0
  419. package/dist/tui/hooks/use-terminal-breakpoint.js +38 -0
  420. package/dist/tui/hooks/use-ui-heights.d.ts +120 -0
  421. package/dist/tui/hooks/use-ui-heights.js +88 -0
  422. package/dist/tui/providers/app-providers.js +2 -6
  423. package/dist/tui/types/commands.d.ts +0 -26
  424. package/dist/tui/types/index.d.ts +1 -1
  425. package/dist/tui/types/ui.d.ts +9 -4
  426. package/dist/tui/utils/line.d.ts +11 -0
  427. package/dist/tui/utils/line.js +16 -0
  428. package/dist/tui/utils/log.d.ts +27 -0
  429. package/dist/tui/utils/log.js +114 -0
  430. package/dist/tui/views/command-view.d.ts +7 -0
  431. package/dist/tui/views/command-view.js +103 -80
  432. package/dist/tui/views/login-view.js +7 -4
  433. package/dist/tui/views/logs-view.d.ts +13 -0
  434. package/dist/tui/views/logs-view.js +27 -52
  435. package/dist/utils/connection-error-handler.d.ts +16 -0
  436. package/dist/utils/connection-error-handler.js +49 -0
  437. package/dist/utils/crash-log.d.ts +14 -0
  438. package/dist/utils/crash-log.js +19 -0
  439. package/dist/utils/file-helpers.d.ts +14 -0
  440. package/dist/utils/file-helpers.js +21 -0
  441. package/dist/utils/global-logs-path.d.ts +11 -0
  442. package/dist/utils/global-logs-path.js +37 -0
  443. package/dist/utils/process-logger.d.ts +53 -0
  444. package/dist/utils/process-logger.js +253 -0
  445. package/dist/utils/sandbox-detector.d.ts +31 -0
  446. package/dist/utils/sandbox-detector.js +122 -0
  447. package/oclif.manifest.json +10 -198
  448. package/package.json +5 -1
  449. package/dist/commands/cipher-agent/run.d.ts +0 -142
  450. package/dist/commands/cipher-agent/run.js +0 -555
  451. package/dist/commands/cipher-agent/set-prompt.d.ts +0 -16
  452. package/dist/commands/cipher-agent/set-prompt.js +0 -58
  453. package/dist/commands/cipher-agent/show-prompt.d.ts +0 -13
  454. package/dist/commands/cipher-agent/show-prompt.js +0 -53
  455. package/dist/commands/foo.d.ts +0 -14
  456. package/dist/commands/foo.js +0 -66
  457. package/dist/infra/cipher/agent-service-factory.d.ts +0 -93
  458. package/dist/infra/cipher/cipher-agent-state-manager.d.ts +0 -63
  459. package/dist/infra/cipher/cipher-agent-state-manager.js +0 -108
  460. package/dist/infra/cipher/cipher-agent.d.ts +0 -182
  461. package/dist/infra/cipher/cipher-agent.js +0 -317
  462. package/dist/infra/cipher/system-prompt/simple-prompt-factory.d.ts +0 -106
  463. package/dist/infra/cipher/system-prompt/simple-prompt-factory.js +0 -297
  464. package/dist/infra/cipher/tools/implementations/find-knowledge-topics-tool.d.ts +0 -7
  465. package/dist/infra/cipher/tools/implementations/find-knowledge-topics-tool.js +0 -424
  466. package/dist/resources/prompts/modes/autonomous.yml +0 -9
  467. package/dist/resources/prompts/query-context-tree-retrieval.yml +0 -48
  468. package/dist/tui/contexts/consumer.d.ts +0 -31
  469. package/dist/tui/contexts/consumer.js +0 -56
  470. package/dist/tui/hooks/use-consumer.d.ts +0 -12
  471. package/dist/tui/hooks/use-consumer.js +0 -50
  472. package/dist/tui/hooks/use-queue-polling.d.ts +0 -31
  473. package/dist/tui/hooks/use-queue-polling.js +0 -90
  474. /package/dist/tui/contexts/{use-commands.d.ts → commands-context.d.ts} +0 -0
  475. /package/dist/tui/contexts/{use-mode.d.ts → mode-context.d.ts} +0 -0
  476. /package/dist/tui/contexts/{use-mode.js → mode-context.js} +0 -0
  477. /package/dist/tui/contexts/{use-theme.d.ts → theme-context.d.ts} +0 -0
  478. /package/dist/tui/contexts/{use-theme.js → theme-context.js} +0 -0
@@ -0,0 +1,218 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react';
3
+ import { useTransport } from './transport-context.js';
4
+ const TasksContext = createContext(undefined);
5
+ /**
6
+ * Provider component that subscribes to task events and maintains task state.
7
+ * Tracks task lifecycle and LLM tool calls for all tasks.
8
+ *
9
+ * Event Flow:
10
+ * 1. task:created → Create task with 'created' status
11
+ * 2. task:started → Update to 'started' status
12
+ * 3. llmservice:toolCall → Add tool call with 'running' status
13
+ * 4. llmservice:toolResult → Update tool call status to 'completed' or 'error'
14
+ * 5. llmservice:response → Update task result content from LLM response
15
+ * 6. task:completed | task:error | task:cancelled → Terminal state
16
+ */
17
+ export function TasksProvider({ children }) {
18
+ const { client } = useTransport();
19
+ const [tasks, setTasks] = useState(new Map());
20
+ useEffect(() => {
21
+ if (!client)
22
+ return;
23
+ const unsubscribers = [];
24
+ // Handle task:created - Initialize new task
25
+ const handleTaskCreated = (data) => {
26
+ setTasks((prev) => {
27
+ const newTasks = new Map(prev);
28
+ newTasks.set(data.taskId, {
29
+ completedAt: undefined,
30
+ content: data.content,
31
+ createdAt: Date.now(),
32
+ error: undefined,
33
+ files: data.files,
34
+ input: data.content,
35
+ result: undefined,
36
+ sessionId: undefined,
37
+ startedAt: undefined,
38
+ status: 'created',
39
+ taskId: data.taskId,
40
+ toolCalls: [],
41
+ type: data.type,
42
+ });
43
+ return newTasks;
44
+ });
45
+ };
46
+ // Handle task:started - Update status and timestamp
47
+ const handleTaskStarted = (data) => {
48
+ setTasks((prev) => {
49
+ const task = prev.get(data.taskId);
50
+ if (!task)
51
+ return prev;
52
+ const newTasks = new Map(prev);
53
+ newTasks.set(data.taskId, {
54
+ ...task,
55
+ startedAt: Date.now(),
56
+ status: 'started',
57
+ });
58
+ return newTasks;
59
+ });
60
+ };
61
+ // Handle task:completed - Set result and completion time
62
+ const handleTaskCompleted = (data) => {
63
+ setTasks((prev) => {
64
+ const task = prev.get(data.taskId);
65
+ if (!task)
66
+ return prev;
67
+ const newTasks = new Map(prev);
68
+ newTasks.set(data.taskId, {
69
+ ...task,
70
+ completedAt: Date.now(),
71
+ status: 'completed',
72
+ });
73
+ return newTasks;
74
+ });
75
+ };
76
+ // Handle task:error - Set error and completion time
77
+ const handleTaskError = (data) => {
78
+ setTasks((prev) => {
79
+ const task = prev.get(data.taskId);
80
+ if (!task)
81
+ return prev;
82
+ const newTasks = new Map(prev);
83
+ newTasks.set(data.taskId, {
84
+ ...task,
85
+ completedAt: Date.now(),
86
+ error: data.error,
87
+ status: 'error',
88
+ });
89
+ return newTasks;
90
+ });
91
+ };
92
+ // Handle task:cancelled - Set cancelled status
93
+ const handleTaskCancelled = (data) => {
94
+ setTasks((prev) => {
95
+ const task = prev.get(data.taskId);
96
+ if (!task)
97
+ return prev;
98
+ const newTasks = new Map(prev);
99
+ newTasks.set(data.taskId, {
100
+ ...task,
101
+ completedAt: Date.now(),
102
+ status: 'cancelled',
103
+ });
104
+ return newTasks;
105
+ });
106
+ };
107
+ // Handle llmservice:toolCall - Add new tool call with 'running' status
108
+ const handleToolCall = (data) => {
109
+ setTasks((prev) => {
110
+ const task = prev.get(data.taskId);
111
+ if (!task)
112
+ return prev;
113
+ const newTasks = new Map(prev);
114
+ newTasks.set(data.taskId, {
115
+ ...task,
116
+ sessionId: data.sessionId,
117
+ toolCalls: [
118
+ ...task.toolCalls,
119
+ {
120
+ args: data.args,
121
+ callId: data.callId,
122
+ sessionId: data.sessionId,
123
+ status: 'running',
124
+ toolName: data.toolName,
125
+ },
126
+ ],
127
+ });
128
+ return newTasks;
129
+ });
130
+ };
131
+ // Handle llmservice:toolResult - Update tool call status
132
+ const handleToolResult = (data) => {
133
+ setTasks((prev) => {
134
+ const task = prev.get(data.taskId);
135
+ if (!task)
136
+ return prev;
137
+ // Find the tool call to update (match by callId if present, otherwise by toolName and most recent)
138
+ const toolCallIndex = task.toolCalls.findIndex((tc) => tc.callId === data.callId);
139
+ if (toolCallIndex === -1)
140
+ return prev;
141
+ const updatedToolCalls = [...task.toolCalls];
142
+ updatedToolCalls[toolCallIndex] = {
143
+ ...updatedToolCalls[toolCallIndex],
144
+ error: data.error,
145
+ errorType: data.errorType,
146
+ result: data.result,
147
+ status: data.success ? 'completed' : 'error',
148
+ };
149
+ const newTasks = new Map(prev);
150
+ newTasks.set(data.taskId, {
151
+ ...task,
152
+ toolCalls: updatedToolCalls,
153
+ });
154
+ return newTasks;
155
+ });
156
+ };
157
+ // Handle llmservice:response - Update task content from LLM response
158
+ const handleResponse = (data) => {
159
+ setTasks((prev) => {
160
+ const task = prev.get(data.taskId);
161
+ if (!task)
162
+ return prev;
163
+ const newTasks = new Map(prev);
164
+ newTasks.set(data.taskId, {
165
+ ...task,
166
+ result: data.content,
167
+ sessionId: data.sessionId,
168
+ });
169
+ return newTasks;
170
+ });
171
+ };
172
+ // Subscribe to events
173
+ unsubscribers.push(client.on('task:created', handleTaskCreated), client.on('task:started', handleTaskStarted), client.on('task:completed', handleTaskCompleted), client.on('task:error', handleTaskError), client.on('task:cancelled', handleTaskCancelled), client.on('llmservice:toolCall', handleToolCall), client.on('llmservice:toolResult', handleToolResult), client.on('llmservice:response', handleResponse));
174
+ // Cleanup subscriptions
175
+ return () => {
176
+ for (const unsub of unsubscribers)
177
+ unsub();
178
+ };
179
+ }, [client]);
180
+ // Clear all tasks from memory
181
+ const clearTasks = useCallback(() => {
182
+ setTasks(new Map());
183
+ }, []);
184
+ // Helper function to get task by ID
185
+ const getTask = useCallback((taskId) => tasks.get(taskId), [tasks]);
186
+ // Calculate transport stats
187
+ const stats = useMemo(() => {
188
+ let created = 0;
189
+ let started = 0;
190
+ for (const task of tasks.values()) {
191
+ if (task.status === 'created') {
192
+ created++;
193
+ }
194
+ else if (task.status === 'started') {
195
+ started++;
196
+ }
197
+ }
198
+ return { created, started };
199
+ }, [tasks]);
200
+ const value = {
201
+ clearTasks,
202
+ getTask,
203
+ stats,
204
+ tasks,
205
+ };
206
+ return _jsx(TasksContext.Provider, { value: value, children: children });
207
+ }
208
+ /**
209
+ * Hook to access tasks context.
210
+ * Must be used within a TasksProvider.
211
+ */
212
+ export function useTasks() {
213
+ const context = useContext(TasksContext);
214
+ if (!context) {
215
+ throw new Error('useTasks must be used within a TasksProvider');
216
+ }
217
+ return context;
218
+ }
@@ -0,0 +1,29 @@
1
+ import React from 'react';
2
+ import type { ConnectionState, ITransportClient } from '../../core/interfaces/transport/i-transport-client.js';
3
+ /**
4
+ * Context value for transport client state.
5
+ */
6
+ export type TransportContextValue = {
7
+ /** The connected transport client, or null if not connected */
8
+ client: ITransportClient | null;
9
+ /** Current connection state */
10
+ connectionState: ConnectionState;
11
+ /** Connection error if any */
12
+ error: Error | null;
13
+ /** Whether the client is connected */
14
+ isConnected: boolean;
15
+ /** Number of reconnection attempts */
16
+ reconnectCount: number;
17
+ };
18
+ /**
19
+ * Provider component that manages transport client connection and state.
20
+ * Subscribes to task and LLM events from the transport server.
21
+ */
22
+ export declare function TransportProvider({ children }: {
23
+ children: React.ReactNode;
24
+ }): React.ReactElement;
25
+ /**
26
+ * Hook to access transport client from context.
27
+ * @throws Error if used outside TransportProvider
28
+ */
29
+ export declare function useTransport(): TransportContextValue;
@@ -0,0 +1,82 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createContext, useContext, useEffect, useState } from 'react';
3
+ import { createTransportClientFactory } from '../../infra/transport/transport-client-factory.js';
4
+ const TransportContext = createContext(undefined);
5
+ /**
6
+ * Provider component that manages transport client connection and state.
7
+ * Subscribes to task and LLM events from the transport server.
8
+ */
9
+ export function TransportProvider({ children }) {
10
+ const [client, setClient] = useState(null);
11
+ const [connectionState, setConnectionState] = useState('disconnected');
12
+ const [error, setError] = useState(null);
13
+ const [reconnectCount, setReconnectCount] = useState(0);
14
+ useEffect(() => {
15
+ let mounted = true;
16
+ let transportClient = null;
17
+ let stateChangeUnsubscribe;
18
+ async function initializeTransport() {
19
+ try {
20
+ setConnectionState('connecting');
21
+ // Create factory and connect
22
+ const factory = createTransportClientFactory();
23
+ const { client: newClient } = await factory.connect();
24
+ if (!mounted) {
25
+ await newClient.disconnect();
26
+ return;
27
+ }
28
+ transportClient = newClient;
29
+ // Subscribe to connection state changes
30
+ stateChangeUnsubscribe = newClient.onStateChange((state) => {
31
+ setConnectionState(state);
32
+ if (state === 'reconnecting') {
33
+ setReconnectCount((prev) => prev + 1);
34
+ }
35
+ });
36
+ // Join broadcast room to receive all events
37
+ await newClient.joinRoom('broadcast-room');
38
+ // Set client in state
39
+ setClient(newClient);
40
+ setConnectionState(newClient.getState());
41
+ setError(null);
42
+ }
43
+ catch (error_) {
44
+ if (mounted) {
45
+ setError(error_ instanceof Error ? error_ : new Error(String(error_)));
46
+ setConnectionState('disconnected');
47
+ }
48
+ }
49
+ }
50
+ initializeTransport();
51
+ return () => {
52
+ mounted = false;
53
+ if (stateChangeUnsubscribe) {
54
+ stateChangeUnsubscribe();
55
+ }
56
+ if (transportClient) {
57
+ transportClient.disconnect().catch(() => {
58
+ // Ignore errors during cleanup
59
+ });
60
+ }
61
+ };
62
+ }, []);
63
+ const value = {
64
+ client,
65
+ connectionState,
66
+ error,
67
+ isConnected: connectionState === 'connected',
68
+ reconnectCount,
69
+ };
70
+ return _jsx(TransportContext.Provider, { value: value, children: children });
71
+ }
72
+ /**
73
+ * Hook to access transport client from context.
74
+ * @throws Error if used outside TransportProvider
75
+ */
76
+ export function useTransport() {
77
+ const context = useContext(TransportContext);
78
+ if (!context) {
79
+ throw new Error('useTransport must be used within a TransportProvider');
80
+ }
81
+ return context;
82
+ }
@@ -1,17 +1,21 @@
1
1
  /**
2
2
  * TUI Hooks
3
3
  */
4
- export { CommandsProvider, useCommands } from '../contexts/use-commands.js';
5
- export { ModeProvider, useMode } from '../contexts/use-mode.js';
6
- export { ThemeProvider, useTheme } from '../contexts/use-theme.js';
7
- export { composeChangesFromToolCalls, parseExecutionContent, useActivityLogs } from './use-activity-logs.js';
4
+ export { CommandsProvider, useCommands } from '../contexts/commands-context.js';
5
+ export { ModeProvider, useMode } from '../contexts/mode-context.js';
6
+ export { ThemeProvider, useTheme } from '../contexts/theme-context.js';
7
+ export { parseExecutionContent, useActivityLogs } from './use-activity-logs.js';
8
8
  export type { UseActivityLogsReturn } from './use-activity-logs.js';
9
- export { useConsumer } from './use-consumer.js';
9
+ export { useAuthPolling } from './use-auth-polling.js';
10
+ export type { UseAuthPollingOptions } from './use-auth-polling.js';
10
11
  export { useOnboarding } from './use-onboarding.js';
11
12
  export type { OnboardingStep, UseOnboardingReturn } from './use-onboarding.js';
12
- export { useQueuePolling, useQueuePollingCleanup } from './use-queue-polling.js';
13
13
  export { useSlashCommandProcessor } from './use-slash-command-processor.js';
14
14
  export { useSlashCompletion } from './use-slash-completion.js';
15
15
  export { useTabNavigation } from './use-tab-navigation.js';
16
+ export { useTerminalBreakpoint } from './use-terminal-breakpoint.js';
17
+ export type { TerminalBreakpoint, TerminalBreakpointReturn } from './use-terminal-breakpoint.js';
18
+ export { useUIHeights } from './use-ui-heights.js';
19
+ export type { MessageItemHeights, UIHeights } from './use-ui-heights.js';
16
20
  export { useVisibleWindow } from './use-visible-window.js';
17
21
  export type { UseVisibleWindowReturn } from './use-visible-window.js';
@@ -1,14 +1,15 @@
1
1
  /**
2
2
  * TUI Hooks
3
3
  */
4
- export { CommandsProvider, useCommands } from '../contexts/use-commands.js';
5
- export { ModeProvider, useMode } from '../contexts/use-mode.js';
6
- export { ThemeProvider, useTheme } from '../contexts/use-theme.js';
7
- export { composeChangesFromToolCalls, parseExecutionContent, useActivityLogs } from './use-activity-logs.js';
8
- export { useConsumer } from './use-consumer.js';
4
+ export { CommandsProvider, useCommands } from '../contexts/commands-context.js';
5
+ export { ModeProvider, useMode } from '../contexts/mode-context.js';
6
+ export { ThemeProvider, useTheme } from '../contexts/theme-context.js';
7
+ export { parseExecutionContent, useActivityLogs } from './use-activity-logs.js';
8
+ export { useAuthPolling } from './use-auth-polling.js';
9
9
  export { useOnboarding } from './use-onboarding.js';
10
- export { useQueuePolling, useQueuePollingCleanup } from './use-queue-polling.js';
11
10
  export { useSlashCommandProcessor } from './use-slash-command-processor.js';
12
11
  export { useSlashCompletion } from './use-slash-completion.js';
13
12
  export { useTabNavigation } from './use-tab-navigation.js';
13
+ export { useTerminalBreakpoint } from './use-terminal-breakpoint.js';
14
+ export { useUIHeights } from './use-ui-heights.js';
14
15
  export { useVisibleWindow } from './use-visible-window.js';
@@ -1,26 +1,18 @@
1
1
  /**
2
2
  * Activity Logs Hook
3
3
  *
4
- * Transforms sessionExecutions into ActivityLog format for display.
4
+ * Transforms tasks from transport events into ActivityLog format for display.
5
5
  */
6
- import type { ToolCall } from '../../core/domain/cipher/queue/types.js';
7
6
  import type { ActivityLog } from '../types.js';
8
7
  /**
9
8
  * Parse execution input to extract content
10
9
  */
11
10
  export declare function parseExecutionContent(input: string): string;
12
- /**
13
- * Extract file changes from curate tool calls
14
- */
15
- export declare function composeChangesFromToolCalls(toolCalls: ToolCall[]): {
16
- created: string[];
17
- updated: string[];
18
- };
19
11
  export interface UseActivityLogsReturn {
20
- /** Activity logs derived from session executions */
12
+ /** Activity logs derived from tasks */
21
13
  logs: ActivityLog[];
22
14
  }
23
15
  /**
24
- * Hook that transforms sessionExecutions into ActivityLog format
16
+ * Hook that transforms tasks from transport events into ActivityLog format
25
17
  */
26
18
  export declare function useActivityLogs(): UseActivityLogsReturn;
@@ -1,19 +1,18 @@
1
1
  /**
2
2
  * Activity Logs Hook
3
3
  *
4
- * Transforms sessionExecutions into ActivityLog format for display.
4
+ * Transforms tasks from transport events into ActivityLog format for display.
5
5
  */
6
- import { join } from 'node:path';
7
6
  import { useMemo } from 'react';
8
7
  import { array as zArray, object as zObject, string as zString } from 'zod';
9
- import { BRV_DIR, CONTEXT_TREE_DIR } from '../../constants.js';
10
- import { useConsumer } from '../contexts/index.js';
8
+ import { useTasks } from '../contexts/tasks-context.js';
11
9
  const ExecutionInputSchema = zObject({
12
10
  content: zString(),
13
11
  });
14
12
  const CurateResultSchema = zObject({
15
13
  result: zObject({
16
14
  applied: zArray(zObject({
15
+ filePath: zString(),
17
16
  path: zString(),
18
17
  status: zString(),
19
18
  type: zString(),
@@ -32,16 +31,24 @@ export function parseExecutionContent(input) {
32
31
  }
33
32
  }
34
33
  /**
35
- * Extract file changes from curate tool calls
34
+ * Extract file changes from curate tool calls (transport events)
36
35
  */
37
- export function composeChangesFromToolCalls(toolCalls) {
36
+ function composeChangesFromToolCalls(toolCalls) {
38
37
  const changes = { created: [], updated: [] };
39
- const contextTreeDir = join(BRV_DIR, CONTEXT_TREE_DIR);
40
38
  for (const tc of toolCalls) {
41
- if (tc.status !== 'completed' || tc.name !== 'curate' || !tc.result) {
39
+ if (tc.status !== 'completed' || tc.toolName !== 'curate' || !tc.result) {
42
40
  continue;
43
41
  }
44
- const parseResult = CurateResultSchema.safeParse(JSON.parse(tc.result));
42
+ // Parse JSON - skip if invalid
43
+ let parsed;
44
+ try {
45
+ parsed = JSON.parse(String(tc.result));
46
+ }
47
+ catch {
48
+ continue;
49
+ }
50
+ // Validate schema with safeParse
51
+ const parseResult = CurateResultSchema.safeParse(parsed);
45
52
  if (!parseResult.success) {
46
53
  continue;
47
54
  }
@@ -50,41 +57,87 @@ export function composeChangesFromToolCalls(toolCalls) {
50
57
  if (operation.status !== 'success') {
51
58
  continue;
52
59
  }
53
- const contextPath = join(contextTreeDir, operation.path, 'context.md');
54
60
  if (operation.type === 'ADD') {
55
- changes.created.push(contextPath);
61
+ changes.created.push(operation.filePath);
56
62
  }
57
63
  else if (operation.type === 'UPDATE') {
58
- changes.updated.push(contextPath);
64
+ changes.updated.push(operation.filePath);
59
65
  }
60
66
  }
61
67
  }
62
68
  return changes;
63
69
  }
64
70
  /**
65
- * Hook that transforms sessionExecutions into ActivityLog format
71
+ * Map task status to execution status
72
+ */
73
+ function mapTaskStatusToExecutionStatus(taskStatus) {
74
+ switch (taskStatus) {
75
+ case 'cancelled': {
76
+ return 'failed';
77
+ }
78
+ case 'completed': {
79
+ return 'completed';
80
+ }
81
+ case 'created':
82
+ case 'started': {
83
+ return 'running';
84
+ }
85
+ case 'error': {
86
+ return 'failed';
87
+ }
88
+ default: {
89
+ return 'running';
90
+ }
91
+ }
92
+ }
93
+ /**
94
+ * Map tool call status to ToolCallStatus
95
+ */
96
+ function mapToolCallStatus(status) {
97
+ switch (status) {
98
+ case 'completed': {
99
+ return 'completed';
100
+ }
101
+ case 'error': {
102
+ return 'failed';
103
+ }
104
+ case 'running': {
105
+ return 'running';
106
+ }
107
+ default: {
108
+ return 'running';
109
+ }
110
+ }
111
+ }
112
+ /**
113
+ * Hook that transforms tasks from transport events into ActivityLog format
66
114
  */
67
115
  export function useActivityLogs() {
68
- const { sessionExecutions } = useConsumer();
69
- const logs = useMemo(() => sessionExecutions.map(({ execution, toolCalls }) => {
70
- const progress = toolCalls.map((tc) => ({
71
- id: tc.id,
72
- status: tc.status,
73
- toolCallName: tc.name,
74
- }));
75
- const changes = composeChangesFromToolCalls(toolCalls);
76
- const activityLog = {
77
- changes,
78
- content: execution.status === 'failed' ? execution.error ?? '' : execution.result ?? '',
79
- id: execution.id,
80
- input: parseExecutionContent(execution.input),
81
- progress,
82
- source: 'agent',
83
- status: execution.status,
84
- timestamp: new Date(execution.updatedAt),
85
- type: execution.type,
86
- };
87
- return activityLog;
88
- }), [sessionExecutions]);
116
+ const { tasks } = useTasks();
117
+ const logs = useMemo(() => {
118
+ const taskArray = [...tasks.values()];
119
+ return taskArray
120
+ .filter((task) => task.status !== 'created')
121
+ .map((task) => {
122
+ const progress = task.toolCalls.map((tc, index) => ({
123
+ id: tc.callId ?? `${task.taskId}-${index}`,
124
+ status: mapToolCallStatus(tc.status),
125
+ toolCallName: tc.toolName,
126
+ }));
127
+ const changes = composeChangesFromToolCalls(task.toolCalls);
128
+ const activityLog = {
129
+ changes,
130
+ content: task.status === 'error' ? task.error?.message ?? '' : task.result ?? '',
131
+ id: task.taskId,
132
+ input: task.content,
133
+ progress,
134
+ source: 'agent',
135
+ status: mapTaskStatusToExecutionStatus(task.status),
136
+ timestamp: new Date(task.completedAt ?? task.startedAt ?? task.createdAt),
137
+ type: task.type,
138
+ };
139
+ return activityLog;
140
+ });
141
+ }, [tasks]);
89
142
  return { logs };
90
143
  }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Auth Polling Hook
3
+ *
4
+ * Periodically checks auth state and refreshes token when needed.
5
+ */
6
+ import type { AuthToken } from '../../core/domain/entities/auth-token.js';
7
+ import type { ITokenStore } from '../../core/interfaces/i-token-store.js';
8
+ export interface UseAuthPollingOptions {
9
+ /** Current auth token */
10
+ authToken: AuthToken | undefined;
11
+ /** Callback when token is refreshed or cleared */
12
+ onTokenChange: (token?: AuthToken) => void;
13
+ /** Token store for persistence */
14
+ tokenStore: ITokenStore;
15
+ }
16
+ /**
17
+ * Hook that polls auth state and refreshes token when needed.
18
+ *
19
+ * - Polls every 30 seconds when authorized
20
+ * - Validates token by calling user API
21
+ * - Refreshes token if validation fails
22
+ * - Clears auth state if refresh fails
23
+ */
24
+ export declare function useAuthPolling({ authToken, onTokenChange, tokenStore }: UseAuthPollingOptions): void;