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,554 @@
1
+ /**
2
+ * Transport Schemas - Types and validation for Socket.IO transport layer.
3
+ *
4
+ * Architecture (Clean Architecture compliance):
5
+ * - Domain types from agent-events/types.ts are the Single Source of Truth (SSOT)
6
+ * - Transport layer IMPORTS from domain, does NOT redefine
7
+ * - Transport events EXTEND domain types with `taskId` for routing
8
+ * - Zod schemas provide runtime validation for transport messages
9
+ */
10
+ import { z } from 'zod';
11
+ // ============================================================================
12
+ // Zod Schemas for Runtime Validation (mirrors domain types)
13
+ // ============================================================================
14
+ export const TokenUsageSchema = z.object({
15
+ inputTokens: z.number(),
16
+ outputTokens: z.number(),
17
+ totalTokens: z.number(),
18
+ });
19
+ export const LogLevelSchema = z.enum(['debug', 'error', 'info', 'warn']);
20
+ export const UIEventTypeSchema = z.enum(['banner', 'help', 'prompt', 'response', 'separator', 'shutdown']);
21
+ export const ToolErrorTypeSchema = z.enum([
22
+ 'CANCELLED',
23
+ 'CONFIRMATION_REJECTED',
24
+ 'EXECUTION_FAILED',
25
+ 'INTERNAL_ERROR',
26
+ 'INVALID_PARAM_TYPE',
27
+ 'INVALID_PARAMS',
28
+ 'MISSING_REQUIRED_PARAM',
29
+ 'PARAM_VALIDATION_FAILED',
30
+ 'PERMISSION_DENIED',
31
+ 'PROVIDER_ERROR',
32
+ 'TIMEOUT',
33
+ 'TOOL_DISABLED',
34
+ 'TOOL_NOT_FOUND',
35
+ ]);
36
+ export const AgentTerminationReasonSchema = z.enum([
37
+ 'ABORTED',
38
+ 'ERROR',
39
+ 'GOAL',
40
+ 'MAX_TURNS',
41
+ 'PROTOCOL_VIOLATION',
42
+ 'TIMEOUT',
43
+ ]);
44
+ export const TodoStatusSchema = z.enum(['cancelled', 'completed', 'in_progress', 'pending']);
45
+ export const TodoItemSchema = z.object({
46
+ activeForm: z.string(),
47
+ content: z.string(),
48
+ status: TodoStatusSchema,
49
+ });
50
+ // ============================================================================
51
+ // Agent Events (cipher:*)
52
+ // ============================================================================
53
+ export const ConversationResetPayloadSchema = z.object({
54
+ sessionId: z.string(),
55
+ });
56
+ export const ExecutionStartedPayloadSchema = z.object({
57
+ maxIterations: z.number(),
58
+ maxTimeMs: z.number().optional(),
59
+ sessionId: z.string(),
60
+ startTime: z.coerce.date(),
61
+ });
62
+ export const ExecutionTerminatedPayloadSchema = z.object({
63
+ durationMs: z.number().optional(),
64
+ endTime: z.coerce.date(),
65
+ error: z.any().optional(), // Error objects don't serialize well
66
+ reason: AgentTerminationReasonSchema,
67
+ sessionId: z.string(),
68
+ toolCallsExecuted: z.number(),
69
+ turnCount: z.number(),
70
+ });
71
+ export const LogPayloadSchema = z.object({
72
+ context: z.record(z.unknown()).optional(),
73
+ level: LogLevelSchema,
74
+ message: z.string(),
75
+ sessionId: z.string().optional(),
76
+ source: z.string().optional(),
77
+ });
78
+ export const StateChangedPayloadSchema = z.object({
79
+ field: z.string(),
80
+ newValue: z.unknown(),
81
+ oldValue: z.unknown().optional(),
82
+ sessionId: z.string().optional(),
83
+ });
84
+ export const StateResetPayloadSchema = z.object({
85
+ sessionId: z.string().optional(),
86
+ });
87
+ export const UIPayloadSchema = z.object({
88
+ context: z.record(z.unknown()).optional(),
89
+ message: z.string().optional(),
90
+ sessionId: z.string().optional(),
91
+ type: UIEventTypeSchema,
92
+ });
93
+ // ============================================================================
94
+ // LLM Service Events (llmservice:*)
95
+ // ============================================================================
96
+ export const ChunkPayloadSchema = z.object({
97
+ content: z.string(),
98
+ isComplete: z.boolean().optional(),
99
+ sessionId: z.string(),
100
+ type: z.enum(['reasoning', 'text']),
101
+ });
102
+ export const ErrorPayloadSchema = z.object({
103
+ code: z.string().optional(),
104
+ error: z.string(),
105
+ sessionId: z.string(),
106
+ });
107
+ export const OutputTruncatedPayloadSchema = z.object({
108
+ originalLength: z.number(),
109
+ savedToFile: z.string(),
110
+ sessionId: z.string(),
111
+ toolName: z.string(),
112
+ });
113
+ export const ResponsePayloadSchema = z.object({
114
+ content: z.string(),
115
+ model: z.string().optional(),
116
+ partial: z.boolean().optional(),
117
+ provider: z.string().optional(),
118
+ reasoning: z.string().optional(),
119
+ sessionId: z.string(),
120
+ tokenUsage: TokenUsageSchema.optional(),
121
+ });
122
+ export const ThinkingPayloadSchema = z.object({
123
+ sessionId: z.string(),
124
+ });
125
+ export const ThoughtPayloadSchema = z.object({
126
+ description: z.string(),
127
+ sessionId: z.string(),
128
+ subject: z.string(),
129
+ });
130
+ export const TodoUpdatedPayloadSchema = z.object({
131
+ sessionId: z.string(),
132
+ todos: z.array(TodoItemSchema),
133
+ });
134
+ export const ToolCallPayloadSchema = z.object({
135
+ args: z.record(z.unknown()),
136
+ callId: z.string().optional(),
137
+ sessionId: z.string(),
138
+ toolName: z.string(),
139
+ });
140
+ export const ToolResultPayloadSchema = z.object({
141
+ callId: z.string().optional(),
142
+ error: z.string().optional(),
143
+ errorType: ToolErrorTypeSchema.optional(),
144
+ metadata: z.record(z.unknown()).optional(),
145
+ result: z.unknown().optional(),
146
+ sessionId: z.string(),
147
+ success: z.boolean(),
148
+ toolName: z.string(),
149
+ });
150
+ export const UnsupportedInputPayloadSchema = z.object({
151
+ reason: z.string(),
152
+ sessionId: z.string(),
153
+ });
154
+ export const WarningPayloadSchema = z.object({
155
+ message: z.string(),
156
+ model: z.string().optional(),
157
+ provider: z.string().optional(),
158
+ sessionId: z.string(),
159
+ });
160
+ // ============================================================================
161
+ // Transport Event Names (matches AgentEventMap keys)
162
+ // ============================================================================
163
+ export const TransportEventNames = {
164
+ // Sorted alphabetically (lint requirement)
165
+ CHUNK: 'llmservice:chunk',
166
+ CONVERSATION_RESET: 'cipher:conversationReset',
167
+ ERROR: 'llmservice:error',
168
+ EXECUTION_STARTED: 'cipher:executionStarted',
169
+ EXECUTION_TERMINATED: 'cipher:executionTerminated',
170
+ LOG: 'cipher:log',
171
+ OUTPUT_TRUNCATED: 'llmservice:outputTruncated',
172
+ RESPONSE: 'llmservice:response',
173
+ STATE_CHANGED: 'cipher:stateChanged',
174
+ STATE_RESET: 'cipher:stateReset',
175
+ THINKING: 'llmservice:thinking',
176
+ THOUGHT: 'llmservice:thought',
177
+ TODO_UPDATED: 'llmservice:todoUpdated',
178
+ TOOL_CALL: 'llmservice:toolCall',
179
+ TOOL_RESULT: 'llmservice:toolResult',
180
+ UI: 'cipher:ui',
181
+ UNSUPPORTED_INPUT: 'llmservice:unsupportedInput',
182
+ WARNING: 'llmservice:warning',
183
+ };
184
+ // ============================================================================
185
+ // Transport Event Schemas (Transport → Client)
186
+ // ============================================================================
187
+ /**
188
+ * Transport Events - Sent to Clients (TUI, external CLIs)
189
+ *
190
+ * Event naming convention:
191
+ * - task:* events are Transport-generated (lifecycle events)
192
+ * - llmservice:* events are forwarded from Agent with ORIGINAL names
193
+ *
194
+ * This means FE receives the SAME event names that Agent emits internally.
195
+ * No mapping needed - what you see is what Agent does.
196
+ *
197
+ * Event Flow:
198
+ * 1. Client sends task:create → Transport generates taskId → task:ack
199
+ * 2. Transport forwards to Agent → Agent starts → task:started
200
+ * 3. Agent processes:
201
+ * - LLM generates text → llmservice:response (streaming chunks)
202
+ * - LLM calls a tool → llmservice:toolCall
203
+ * - Tool returns result → llmservice:toolResult
204
+ * 4. Agent finishes → task:completed OR task:error
205
+ */
206
+ export const TransportTaskEventNames = {
207
+ // Task lifecycle (Transport-generated)
208
+ ACK: 'task:ack',
209
+ // Client requests
210
+ CANCEL: 'task:cancel',
211
+ // Task terminal states
212
+ CANCELLED: 'task:cancelled',
213
+ COMPLETED: 'task:completed',
214
+ CREATE: 'task:create',
215
+ CREATED: 'task:created',
216
+ ERROR: 'task:error',
217
+ // Internal (Transport → Agent)
218
+ EXECUTE: 'task:execute',
219
+ STARTED: 'task:started',
220
+ };
221
+ export const LlmEventNames = {
222
+ // LLM events (forwarded with original Agent names)
223
+ CHUNK: 'llmservice:chunk',
224
+ ERROR: 'llmservice:error',
225
+ RESPONSE: 'llmservice:response',
226
+ THINKING: 'llmservice:thinking',
227
+ TOOL_CALL: 'llmservice:toolCall',
228
+ TOOL_RESULT: 'llmservice:toolResult',
229
+ UNSUPPORTED_INPUT: 'llmservice:unsupportedInput',
230
+ };
231
+ /**
232
+ * Explicit list of LLM event names for iteration.
233
+ *
234
+ * Avoids `Object.values(LlmEventNames)` so call sites remain readable and
235
+ * type-safe (the list is visible and ordered intentionally).
236
+ */
237
+ export const TransportLlmEventList = [
238
+ LlmEventNames.THINKING,
239
+ LlmEventNames.CHUNK,
240
+ LlmEventNames.RESPONSE,
241
+ LlmEventNames.TOOL_CALL,
242
+ LlmEventNames.TOOL_RESULT,
243
+ LlmEventNames.ERROR,
244
+ LlmEventNames.UNSUPPORTED_INPUT,
245
+ ];
246
+ /**
247
+ * Transport-generated Agent lifecycle/control events (internal).
248
+ */
249
+ export const TransportAgentEventNames = {
250
+ CONNECTED: 'agent:connected',
251
+ DISCONNECTED: 'agent:disconnected',
252
+ REGISTER: 'agent:register',
253
+ RESTART: 'agent:restart',
254
+ RESTARTED: 'agent:restarted',
255
+ RESTARTING: 'agent:restarting',
256
+ };
257
+ /**
258
+ * Transport-generated session events (internal).
259
+ */
260
+ export const TransportSessionEventNames = {
261
+ CREATE: 'session:create',
262
+ INFO: 'session:info',
263
+ LIST: 'session:list',
264
+ SWITCH: 'session:switch',
265
+ SWITCHED: 'session:switched',
266
+ };
267
+ // ============================================================================
268
+ // Internal Transport ↔ Agent Messages
269
+ // ============================================================================
270
+ /**
271
+ * task:execute - Transport sends task to Agent for processing
272
+ * Internal message, not exposed to external clients
273
+ */
274
+ export const TaskExecuteSchema = z.object({
275
+ /** Client ID that created the task (for response routing) */
276
+ clientId: z.string(),
277
+ /** Task content/prompt */
278
+ content: z.string(),
279
+ /** Optional file paths for curate --files */
280
+ files: z.array(z.string()).optional(),
281
+ /** Unique task identifier */
282
+ taskId: z.string(),
283
+ /** Task type */
284
+ type: z.enum(['curate', 'query']),
285
+ });
286
+ /**
287
+ * task:cancel - Transport tells Agent to cancel a task
288
+ */
289
+ export const TaskCancelSchema = z.object({
290
+ taskId: z.string(),
291
+ });
292
+ // Zod schemas for runtime validation (if needed)
293
+ export const LlmThinkingEventSchema = z.object({
294
+ sessionId: z.string(),
295
+ taskId: z.string(),
296
+ });
297
+ export const LlmChunkEventSchema = z.object({
298
+ content: z.string(),
299
+ isComplete: z.boolean().optional(),
300
+ sessionId: z.string(),
301
+ taskId: z.string(),
302
+ type: z.enum(['reasoning', 'text']),
303
+ });
304
+ export const LlmErrorEventSchema = z.object({
305
+ code: z.string().optional(),
306
+ error: z.string(),
307
+ sessionId: z.string(),
308
+ taskId: z.string(),
309
+ });
310
+ export const LlmUnsupportedInputEventSchema = z.object({
311
+ reason: z.string(),
312
+ sessionId: z.string(),
313
+ taskId: z.string(),
314
+ });
315
+ // ============================================================================
316
+ // Transport Events (Transport → Client)
317
+ // ============================================================================
318
+ /**
319
+ * task:ack - Transport acknowledges task creation
320
+ */
321
+ export const TaskAckSchema = z.object({
322
+ taskId: z.string(),
323
+ });
324
+ /**
325
+ * task:created - Broadcasted when a new task is created
326
+ * Sent to broadcast-room for TUI monitoring
327
+ */
328
+ export const TaskCreatedSchema = z.object({
329
+ /** Task content/prompt */
330
+ content: z.string(),
331
+ /** Optional file paths for curate --files */
332
+ files: z.array(z.string()).optional(),
333
+ /** Unique task identifier */
334
+ taskId: z.string(),
335
+ /** Task type (curate or query) */
336
+ type: z.enum(['curate', 'query']),
337
+ });
338
+ /**
339
+ * task:started - Agent begins processing the task
340
+ * Direct send: {taskId} only
341
+ * Broadcast: {taskId, content, type, files?}
342
+ */
343
+ export const TaskStartedEventSchema = z.object({
344
+ /** Task content/prompt */
345
+ content: z.string().optional(),
346
+ /** Optional file paths for curate --files */
347
+ files: z.array(z.string()).optional(),
348
+ /** Unique task identifier */
349
+ taskId: z.string(),
350
+ /** Task type (curate or query) */
351
+ type: z.string().optional(),
352
+ });
353
+ /**
354
+ * task:cancelled - Task was cancelled before completion
355
+ * Terminal state: no more events should follow for this taskId
356
+ */
357
+ export const TaskCancelledEventSchema = z.object({
358
+ taskId: z.string(),
359
+ });
360
+ /**
361
+ * task:completed - Task finished successfully
362
+ */
363
+ export const TaskCompletedEventSchema = z.object({
364
+ result: z.string(),
365
+ taskId: z.string(),
366
+ });
367
+ /**
368
+ * Structured error object
369
+ * Matches TaskErrorData interface in task-error.ts
370
+ */
371
+ export const TaskErrorDataSchema = z.object({
372
+ code: z.string().optional(),
373
+ details: z.record(z.unknown()).optional(),
374
+ message: z.string(),
375
+ name: z.string(),
376
+ });
377
+ /**
378
+ * task:error - Task failed with error
379
+ */
380
+ export const TaskErrorEventSchema = z.object({
381
+ error: TaskErrorDataSchema,
382
+ taskId: z.string(),
383
+ });
384
+ /**
385
+ * llmservice:response - LLM text output
386
+ * Matches: AgentEventMap['llmservice:response'] + taskId
387
+ */
388
+ export const LlmResponseEventSchema = z.object({
389
+ content: z.string(),
390
+ model: z.string().optional(),
391
+ partial: z.boolean().optional(),
392
+ provider: z.string().optional(),
393
+ reasoning: z.string().optional(),
394
+ sessionId: z.string(),
395
+ taskId: z.string(),
396
+ tokenUsage: TokenUsageSchema.optional(),
397
+ });
398
+ /**
399
+ * llmservice:toolCall - Agent invokes a tool
400
+ * Matches: AgentEventMap['llmservice:toolCall'] + taskId
401
+ */
402
+ export const LlmToolCallEventSchema = z.object({
403
+ args: z.record(z.unknown()),
404
+ callId: z.string().optional(),
405
+ sessionId: z.string(),
406
+ taskId: z.string(),
407
+ toolName: z.string(),
408
+ });
409
+ /**
410
+ * llmservice:toolResult - Tool returns result
411
+ * Matches: AgentEventMap['llmservice:toolResult'] + taskId
412
+ */
413
+ export const LlmToolResultEventSchema = z.object({
414
+ callId: z.string().optional(),
415
+ error: z.string().optional(),
416
+ errorType: ToolErrorTypeSchema.optional(),
417
+ metadata: z.record(z.unknown()).optional(),
418
+ result: z.unknown().optional(),
419
+ sessionId: z.string(),
420
+ success: z.boolean(),
421
+ taskId: z.string(),
422
+ toolName: z.string(),
423
+ });
424
+ // Note: LlmResponseEvent, LlmToolCallEvent, LlmToolResultEvent are defined above
425
+ // as type aliases extending AgentEventMap (lines 335-347)
426
+ // ============================================================================
427
+ // Request/Response Schemas (for client → server commands)
428
+ // ============================================================================
429
+ export const TaskTypeSchema = z.enum(['curate', 'query']);
430
+ /**
431
+ * Request to create a new task
432
+ */
433
+ export const TaskCreateRequestSchema = z.object({
434
+ /** Task content/prompt */
435
+ content: z.string().min(1),
436
+ /** Optional file paths for curate --files (max 5) */
437
+ files: z.array(z.string()).optional(),
438
+ /** Task ID - generated by Client UseCase (UUID v4) */
439
+ taskId: z.string().uuid('Invalid taskId format - must be UUID'),
440
+ /** Task type */
441
+ type: TaskTypeSchema,
442
+ });
443
+ /**
444
+ * Response after task creation
445
+ */
446
+ export const TaskCreateResponseSchema = z.object({
447
+ /** Created task ID */
448
+ taskId: z.string(),
449
+ });
450
+ /**
451
+ * Request to cancel a task
452
+ */
453
+ export const TaskCancelRequestSchema = z.object({
454
+ taskId: z.string(),
455
+ });
456
+ /**
457
+ * Response after task cancellation
458
+ */
459
+ export const TaskCancelResponseSchema = z.object({
460
+ /** Error message if cancellation failed */
461
+ error: z.string().optional(),
462
+ success: z.boolean(),
463
+ });
464
+ // ============================================================================
465
+ // Session Schemas (client → server commands)
466
+ // ============================================================================
467
+ /**
468
+ * Session info returned by queries
469
+ */
470
+ export const SessionInfoSchema = z.object({
471
+ createdAt: z.number(),
472
+ id: z.string(),
473
+ lastActiveAt: z.number(),
474
+ name: z.string().optional(),
475
+ });
476
+ /**
477
+ * Session statistics
478
+ */
479
+ export const SessionStatsSchema = z.object({
480
+ completedTasks: z.number().int().nonnegative(),
481
+ failedTasks: z.number().int().nonnegative(),
482
+ totalTasks: z.number().int().nonnegative(),
483
+ });
484
+ /**
485
+ * Request for session:info (empty - get current session)
486
+ */
487
+ export const SessionInfoRequestSchema = z.object({});
488
+ /**
489
+ * Response for session:info
490
+ */
491
+ export const SessionInfoResponseSchema = z.object({
492
+ session: SessionInfoSchema,
493
+ stats: SessionStatsSchema,
494
+ });
495
+ /**
496
+ * Request for session:list (empty - list all)
497
+ */
498
+ export const SessionListRequestSchema = z.object({});
499
+ /**
500
+ * Response for session:list
501
+ */
502
+ export const SessionListResponseSchema = z.object({
503
+ sessions: z.array(SessionInfoSchema),
504
+ });
505
+ /**
506
+ * Request for session:create
507
+ */
508
+ export const SessionCreateRequestSchema = z.object({
509
+ name: z.string().optional(),
510
+ });
511
+ /**
512
+ * Response for session:create
513
+ */
514
+ export const SessionCreateResponseSchema = z.object({
515
+ sessionId: z.string(),
516
+ });
517
+ /**
518
+ * Request for session:switch
519
+ */
520
+ export const SessionSwitchRequestSchema = z.object({
521
+ sessionId: z.string(),
522
+ });
523
+ /**
524
+ * Response for session:switch
525
+ */
526
+ export const SessionSwitchResponseSchema = z.object({
527
+ success: z.boolean(),
528
+ });
529
+ /**
530
+ * Broadcast when session switches (server → all clients)
531
+ */
532
+ export const SessionSwitchedBroadcastSchema = z.object({
533
+ sessionId: z.string(),
534
+ });
535
+ // ============================================================================
536
+ // Agent Control (agent:*)
537
+ // ============================================================================
538
+ /**
539
+ * Request to restart/reinitialize the Agent.
540
+ * Used when config changes (e.g., after /init) require Agent to reload.
541
+ */
542
+ export const AgentRestartRequestSchema = z.object({
543
+ /** Optional reason for restart (for logging) */
544
+ reason: z.string().optional(),
545
+ });
546
+ /**
547
+ * Response after agent restart request.
548
+ */
549
+ export const AgentRestartResponseSchema = z.object({
550
+ /** Error message if restart failed */
551
+ error: z.string().optional(),
552
+ /** Whether the restart was initiated successfully */
553
+ success: z.boolean(),
554
+ });
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Transport Configuration Types
3
+ *
4
+ * These are configuration types for Socket.IO server/client setup.
5
+ * For message schemas and payloads, see ./schemas.ts
6
+ */
7
+ /**
8
+ * Configuration for transport server.
9
+ */
10
+ export type TransportServerConfig = {
11
+ /**
12
+ * CORS origin configuration.
13
+ * @default '*' for localhost trust
14
+ */
15
+ corsOrigin?: string;
16
+ /**
17
+ * Ping interval in milliseconds for heartbeat.
18
+ * Lower = faster disconnect detection, higher network overhead.
19
+ */
20
+ pingIntervalMs?: number;
21
+ /**
22
+ * Ping timeout in milliseconds.
23
+ * If client doesn't respond within this time, considered disconnected.
24
+ */
25
+ pingTimeoutMs?: number;
26
+ };
27
+ /**
28
+ * Socket.IO transport types.
29
+ * 'websocket' is preferred for sandboxed environments (like IDE terminals).
30
+ * 'polling' uses HTTP long-polling which may be blocked by some sandboxes.
31
+ */
32
+ export type SocketTransport = 'polling' | 'websocket';
33
+ /**
34
+ * Configuration for transport client.
35
+ */
36
+ export type TransportClientConfig = {
37
+ /**
38
+ * Connection timeout in milliseconds.
39
+ */
40
+ connectTimeoutMs?: number;
41
+ /**
42
+ * Number of reconnection attempts before giving up.
43
+ */
44
+ reconnectionAttempts?: number;
45
+ /**
46
+ * Maximum reconnection delay in milliseconds.
47
+ */
48
+ reconnectionDelayMaxMs?: number;
49
+ /**
50
+ * Initial reconnection delay in milliseconds.
51
+ */
52
+ reconnectionDelayMs?: number;
53
+ /**
54
+ * Default request timeout in milliseconds.
55
+ */
56
+ requestTimeoutMs?: number;
57
+ /**
58
+ * Room operation timeout in milliseconds.
59
+ */
60
+ roomTimeoutMs?: number;
61
+ /**
62
+ * Socket.IO transport types to use.
63
+ * Defaults to ['websocket'] to avoid HTTP polling issues in sandboxed environments.
64
+ * Set to ['polling', 'websocket'] for default Socket.IO behavior.
65
+ */
66
+ transports?: SocketTransport[];
67
+ };
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Transport Configuration Types
3
+ *
4
+ * These are configuration types for Socket.IO server/client setup.
5
+ * For message schemas and payloads, see ./schemas.ts
6
+ */
7
+ export {};
@@ -1,8 +1,10 @@
1
1
  import type { AgentEventBus, SessionEventBus } from '../../../infra/cipher/events/event-emitter.js';
2
2
  import type { FileSystemService } from '../../../infra/cipher/file-system/file-system-service.js';
3
+ import type { CompactionService } from '../../../infra/cipher/llm/context/compaction/compaction-service.js';
3
4
  import type { MemoryManager } from '../../../infra/cipher/memory/memory-manager.js';
4
5
  import type { ProcessService } from '../../../infra/cipher/process/process-service.js';
5
- import type { SimplePromptFactory } from '../../../infra/cipher/system-prompt/simple-prompt-factory.js';
6
+ import type { MessageStorageService } from '../../../infra/cipher/storage/message-storage-service.js';
7
+ import type { SystemPromptManager } from '../../../infra/cipher/system-prompt/system-prompt-manager.js';
6
8
  import type { ToolManager } from '../../../infra/cipher/tools/tool-manager.js';
7
9
  import type { ToolProvider } from '../../../infra/cipher/tools/tool-provider.js';
8
10
  import type { IBlobStorage } from './i-blob-storage.js';
@@ -19,7 +21,7 @@ import type { IToolScheduler } from './i-tool-scheduler.js';
19
21
  * - ToolManager: Manages tool registration and execution (stateless)
20
22
  * - ToolScheduler: Orchestrates tool execution with policy checks
21
23
  * - PolicyEngine: Rule-based ALLOW/DENY decisions for tools
22
- * - SimplePromptFactory: Builds system prompts from simple YAML templates
24
+ * - SystemPromptManager: Builds system prompts using contributor pattern
23
25
  * - FileSystemService: File system operations
24
26
  * - ProcessService: Command execution
25
27
  * - BlobStorage: Binary data storage
@@ -32,12 +34,22 @@ export interface CipherAgentServices {
32
34
  agentEventBus: AgentEventBus;
33
35
  blobStorage: IBlobStorage;
34
36
  codingAgentLogWatcher?: ICodingAgentLogWatcher;
37
+ /**
38
+ * CompactionService for context overflow management.
39
+ * Only available when granular storage is enabled (useGranularStorage: true).
40
+ */
41
+ compactionService?: CompactionService;
35
42
  fileSystemService: FileSystemService;
36
43
  historyStorage: IHistoryStorage;
37
44
  memoryManager: MemoryManager;
45
+ /**
46
+ * MessageStorageService for direct granular message access.
47
+ * Only available when granular storage is enabled (useGranularStorage: true).
48
+ */
49
+ messageStorageService?: MessageStorageService;
38
50
  policyEngine: IPolicyEngine;
39
51
  processService: ProcessService;
40
- promptFactory: SimplePromptFactory;
52
+ systemPromptManager: SystemPromptManager;
41
53
  toolManager: ToolManager;
42
54
  toolProvider: ToolProvider;
43
55
  toolScheduler: IToolScheduler;