byterover-cli 0.4.1 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (474) hide show
  1. package/README.md +1 -9
  2. package/dist/commands/curate.d.ts +1 -3
  3. package/dist/commands/curate.js +14 -51
  4. package/dist/commands/main.d.ts +8 -0
  5. package/dist/commands/main.js +29 -8
  6. package/dist/commands/query.d.ts +1 -3
  7. package/dist/commands/query.js +8 -35
  8. package/dist/config/context-tree-domains.d.ts +5 -0
  9. package/dist/config/context-tree-domains.js +6 -1
  10. package/dist/config/environment.js +9 -9
  11. package/dist/constants.d.ts +14 -0
  12. package/dist/constants.js +18 -0
  13. package/dist/core/domain/cipher/agent/agent-info.d.ts +199 -0
  14. package/dist/core/domain/cipher/agent/agent-info.js +143 -0
  15. package/dist/core/domain/cipher/agent/agent-registry.d.ts +96 -0
  16. package/dist/core/domain/cipher/agent/agent-registry.js +254 -0
  17. package/dist/core/domain/cipher/agent/index.d.ts +4 -1
  18. package/dist/core/domain/cipher/agent/index.js +7 -1
  19. package/dist/core/domain/cipher/agent-events/types.d.ts +355 -2
  20. package/dist/core/domain/cipher/agent-events/types.js +11 -0
  21. package/dist/core/domain/cipher/errors/error-normalizer.d.ts +156 -0
  22. package/dist/core/domain/cipher/errors/error-normalizer.js +379 -0
  23. package/dist/core/domain/cipher/errors/file-system-error.d.ts +2 -1
  24. package/dist/core/domain/cipher/errors/file-system-error.js +3 -2
  25. package/dist/core/domain/cipher/errors/system-prompt-error-codes.d.ts +79 -0
  26. package/dist/core/domain/cipher/errors/system-prompt-error-codes.js +80 -0
  27. package/dist/core/domain/cipher/errors/system-prompt-error.d.ts +114 -0
  28. package/dist/core/domain/cipher/errors/system-prompt-error.js +144 -0
  29. package/dist/core/domain/cipher/file-system/types.d.ts +57 -0
  30. package/dist/core/domain/cipher/llm/error-codes.d.ts +51 -0
  31. package/dist/core/domain/cipher/llm/error-codes.js +51 -0
  32. package/dist/core/domain/cipher/llm/index.d.ts +9 -0
  33. package/dist/core/domain/cipher/llm/index.js +13 -0
  34. package/dist/core/domain/cipher/llm/registry.d.ts +113 -0
  35. package/dist/core/domain/cipher/llm/registry.js +244 -0
  36. package/dist/core/domain/cipher/llm/schemas.d.ts +155 -0
  37. package/dist/core/domain/cipher/llm/schemas.js +151 -0
  38. package/dist/core/domain/cipher/llm/types.d.ts +121 -0
  39. package/dist/core/domain/cipher/llm/types.js +60 -0
  40. package/dist/core/domain/cipher/storage/message-storage-types.d.ts +114 -5
  41. package/dist/core/domain/cipher/streaming/types.d.ts +119 -0
  42. package/dist/core/domain/cipher/streaming/types.js +16 -0
  43. package/dist/core/domain/cipher/system-prompt/types.d.ts +44 -0
  44. package/dist/core/domain/cipher/todos/types.d.ts +34 -0
  45. package/dist/core/domain/cipher/tools/constants.d.ts +5 -2
  46. package/dist/core/domain/cipher/tools/constants.js +5 -2
  47. package/dist/core/domain/cipher/tools/types.d.ts +31 -0
  48. package/dist/core/domain/errors/connection-error.d.ts +33 -0
  49. package/dist/core/domain/errors/connection-error.js +54 -0
  50. package/dist/core/domain/errors/core-process-error.d.ts +27 -0
  51. package/dist/core/domain/errors/core-process-error.js +43 -0
  52. package/dist/core/domain/errors/task-error.d.ts +64 -0
  53. package/dist/core/domain/errors/task-error.js +116 -0
  54. package/dist/core/domain/errors/transport-error.d.ts +72 -0
  55. package/dist/core/domain/errors/transport-error.js +114 -0
  56. package/dist/core/domain/instance/index.d.ts +1 -0
  57. package/dist/core/domain/instance/index.js +1 -0
  58. package/dist/core/domain/instance/types.d.ts +57 -0
  59. package/dist/core/domain/instance/types.js +72 -0
  60. package/dist/core/domain/knowledge/directory-manager.d.ts +16 -0
  61. package/dist/core/domain/knowledge/directory-manager.js +31 -0
  62. package/dist/core/domain/transport/index.d.ts +2 -0
  63. package/dist/core/domain/transport/index.js +2 -0
  64. package/dist/core/domain/transport/schemas.d.ts +1149 -0
  65. package/dist/core/domain/transport/schemas.js +554 -0
  66. package/dist/core/domain/transport/types.d.ts +67 -0
  67. package/dist/core/domain/transport/types.js +7 -0
  68. package/dist/core/interfaces/cipher/cipher-services.d.ts +15 -3
  69. package/dist/core/interfaces/cipher/i-chat-session.d.ts +47 -5
  70. package/dist/core/interfaces/cipher/i-cipher-agent.d.ts +39 -4
  71. package/dist/core/interfaces/cipher/i-content-generator.d.ts +3 -5
  72. package/dist/core/interfaces/cipher/i-file-system.d.ts +12 -1
  73. package/dist/core/interfaces/cipher/i-llm-service.d.ts +4 -5
  74. package/dist/core/interfaces/cipher/i-todo-storage.d.ts +24 -0
  75. package/dist/core/interfaces/cipher/i-todo-storage.js +1 -0
  76. package/dist/core/interfaces/cipher/i-tool-plugin.d.ts +90 -0
  77. package/dist/core/interfaces/cipher/i-tool-plugin.js +1 -0
  78. package/dist/core/interfaces/cipher/i-tool-provider.d.ts +3 -2
  79. package/dist/core/interfaces/cipher/i-tool-scheduler.d.ts +4 -0
  80. package/dist/core/interfaces/cipher/index.d.ts +35 -0
  81. package/dist/core/interfaces/cipher/index.js +11 -0
  82. package/dist/core/interfaces/cipher/message-factory.d.ts +155 -0
  83. package/dist/core/interfaces/cipher/message-factory.js +252 -0
  84. package/dist/core/interfaces/cipher/message-type-guards.d.ts +139 -0
  85. package/dist/core/interfaces/cipher/message-type-guards.js +173 -0
  86. package/dist/core/interfaces/cipher/message-types.d.ts +279 -5
  87. package/dist/core/interfaces/cipher/message-types.js +6 -0
  88. package/dist/core/interfaces/cipher/sanitization-types.d.ts +147 -0
  89. package/dist/core/interfaces/cipher/sanitization-types.js +46 -0
  90. package/dist/core/interfaces/executor/i-curate-executor.d.ts +34 -0
  91. package/dist/core/interfaces/executor/i-curate-executor.js +1 -0
  92. package/dist/core/interfaces/executor/i-query-executor.d.ts +32 -0
  93. package/dist/core/interfaces/executor/i-query-executor.js +1 -0
  94. package/dist/core/interfaces/executor/index.d.ts +2 -0
  95. package/dist/core/interfaces/executor/index.js +2 -0
  96. package/dist/core/interfaces/instance/i-instance-discovery.d.ts +45 -0
  97. package/dist/core/interfaces/instance/i-instance-discovery.js +1 -0
  98. package/dist/core/interfaces/instance/i-instance-manager.d.ts +58 -0
  99. package/dist/core/interfaces/instance/i-instance-manager.js +1 -0
  100. package/dist/core/interfaces/instance/index.d.ts +2 -0
  101. package/dist/core/interfaces/instance/index.js +2 -0
  102. package/dist/core/interfaces/noop-implementations.d.ts +53 -0
  103. package/dist/core/interfaces/noop-implementations.js +62 -0
  104. package/dist/core/interfaces/transport/i-transport-client.d.ts +97 -0
  105. package/dist/core/interfaces/transport/i-transport-client.js +1 -0
  106. package/dist/core/interfaces/transport/i-transport-server.d.ts +93 -0
  107. package/dist/core/interfaces/transport/i-transport-server.js +1 -0
  108. package/dist/core/interfaces/transport/index.d.ts +2 -0
  109. package/dist/core/interfaces/transport/index.js +2 -0
  110. package/dist/infra/cipher/agent/agent-error-codes.d.ts +16 -0
  111. package/dist/infra/cipher/agent/agent-error-codes.js +17 -0
  112. package/dist/infra/cipher/agent/agent-error.d.ts +54 -0
  113. package/dist/infra/cipher/agent/agent-error.js +79 -0
  114. package/dist/infra/cipher/agent/agent-schemas.d.ts +264 -0
  115. package/dist/infra/cipher/agent/agent-schemas.js +97 -0
  116. package/dist/infra/cipher/agent/agent-state-manager.d.ts +140 -0
  117. package/dist/infra/cipher/agent/agent-state-manager.js +275 -0
  118. package/dist/infra/cipher/agent/base-agent.d.ts +118 -0
  119. package/dist/infra/cipher/agent/base-agent.js +240 -0
  120. package/dist/infra/cipher/agent/cipher-agent.d.ts +165 -0
  121. package/dist/infra/cipher/agent/cipher-agent.js +546 -0
  122. package/dist/infra/cipher/agent/index.d.ts +22 -0
  123. package/dist/infra/cipher/agent/index.js +24 -0
  124. package/dist/infra/cipher/agent/service-initializer.d.ts +79 -0
  125. package/dist/infra/cipher/{agent-service-factory.js → agent/service-initializer.js} +117 -68
  126. package/dist/infra/cipher/agent/types.d.ts +35 -0
  127. package/dist/infra/cipher/agent/types.js +1 -0
  128. package/dist/infra/cipher/blob/blob-reference-resolver.d.ts +107 -0
  129. package/dist/infra/cipher/blob/blob-reference-resolver.js +228 -0
  130. package/dist/infra/cipher/blob/blob-reference-utils.d.ts +117 -0
  131. package/dist/infra/cipher/blob/blob-reference-utils.js +230 -0
  132. package/dist/infra/cipher/consumer/consumer-lock.js +1 -0
  133. package/dist/infra/cipher/consumer/consumer-service.js +1 -0
  134. package/dist/infra/cipher/consumer/execution-consumer.d.ts +6 -1
  135. package/dist/infra/cipher/consumer/execution-consumer.js +54 -16
  136. package/dist/infra/cipher/consumer/index.d.ts +1 -1
  137. package/dist/infra/cipher/consumer/index.js +2 -1
  138. package/dist/infra/cipher/consumer/queue-polling-service.js +1 -0
  139. package/dist/infra/cipher/file-system/binary-utils.d.ts +43 -0
  140. package/dist/infra/cipher/file-system/binary-utils.js +164 -0
  141. package/dist/infra/cipher/file-system/context-tree-file-system-factory.d.ts +9 -0
  142. package/dist/infra/cipher/file-system/context-tree-file-system-factory.js +24 -0
  143. package/dist/infra/cipher/file-system/file-system-service.d.ts +17 -1
  144. package/dist/infra/cipher/file-system/file-system-service.js +327 -36
  145. package/dist/infra/cipher/file-system/path-validator.d.ts +32 -0
  146. package/dist/infra/cipher/file-system/path-validator.js +111 -6
  147. package/dist/infra/cipher/interactive-loop.js +41 -33
  148. package/dist/infra/cipher/llm/capability-cache.d.ts +87 -0
  149. package/dist/infra/cipher/llm/capability-cache.js +125 -0
  150. package/dist/infra/cipher/llm/context/compaction/compaction-service.d.ts +32 -0
  151. package/dist/infra/cipher/llm/context/compaction/compaction-service.js +44 -3
  152. package/dist/infra/cipher/llm/context/compression/enhanced-compaction.d.ts +112 -0
  153. package/dist/infra/cipher/llm/context/compression/enhanced-compaction.js +175 -0
  154. package/dist/infra/cipher/llm/context/compression/filter-compacted.d.ts +83 -0
  155. package/dist/infra/cipher/llm/context/compression/filter-compacted.js +150 -0
  156. package/dist/infra/cipher/llm/context/compression/index.d.ts +5 -0
  157. package/dist/infra/cipher/llm/context/compression/index.js +6 -0
  158. package/dist/infra/cipher/llm/context/compression/reactive-overflow.d.ts +107 -0
  159. package/dist/infra/cipher/llm/context/compression/reactive-overflow.js +272 -0
  160. package/dist/infra/cipher/llm/context/context-manager.d.ts +47 -1
  161. package/dist/infra/cipher/llm/context/context-manager.js +129 -0
  162. package/dist/infra/cipher/llm/context/utils.js +17 -4
  163. package/dist/infra/cipher/llm/generators/byterover-content-generator.js +4 -2
  164. package/dist/infra/cipher/llm/internal-llm-service.d.ts +50 -17
  165. package/dist/infra/cipher/llm/internal-llm-service.js +273 -50
  166. package/dist/infra/cipher/llm/openrouter-llm-service.d.ts +6 -8
  167. package/dist/infra/cipher/llm/openrouter-llm-service.js +14 -16
  168. package/dist/infra/cipher/llm/retry/retry-policy.d.ts +1 -0
  169. package/dist/infra/cipher/llm/retry/retry-policy.js +11 -0
  170. package/dist/infra/cipher/llm/retry/retry-with-backoff.js +3 -2
  171. package/dist/infra/cipher/llm/sanitization/base64-utils.d.ts +102 -0
  172. package/dist/infra/cipher/llm/sanitization/base64-utils.js +182 -0
  173. package/dist/infra/cipher/llm/sanitization/index.d.ts +12 -0
  174. package/dist/infra/cipher/llm/sanitization/index.js +13 -0
  175. package/dist/infra/cipher/llm/sanitization/tool-sanitizer.d.ts +74 -0
  176. package/dist/infra/cipher/llm/sanitization/tool-sanitizer.js +398 -0
  177. package/dist/infra/cipher/llm/stream-processor.d.ts +158 -0
  178. package/dist/infra/cipher/llm/stream-processor.js +276 -0
  179. package/dist/infra/cipher/llm/tokenizers/claude-tokenizer.d.ts +13 -20
  180. package/dist/infra/cipher/llm/tokenizers/claude-tokenizer.js +17 -24
  181. package/dist/infra/cipher/llm/tokenizers/gemini-tokenizer.d.ts +12 -11
  182. package/dist/infra/cipher/llm/tokenizers/gemini-tokenizer.js +16 -15
  183. package/dist/infra/cipher/llm/tokenizers/openrouter-tokenizer.d.ts +15 -7
  184. package/dist/infra/cipher/llm/tokenizers/openrouter-tokenizer.js +22 -10
  185. package/dist/infra/cipher/llm/tool-output-processor.d.ts +51 -0
  186. package/dist/infra/cipher/llm/tool-output-processor.js +139 -0
  187. package/dist/infra/cipher/process/command-validator.d.ts +23 -0
  188. package/dist/infra/cipher/process/command-validator.js +75 -0
  189. package/dist/infra/cipher/process/path-utils.d.ts +66 -0
  190. package/dist/infra/cipher/process/path-utils.js +94 -0
  191. package/dist/infra/cipher/process/process-service.d.ts +32 -0
  192. package/dist/infra/cipher/process/process-service.js +98 -17
  193. package/dist/infra/cipher/session/chat-session.d.ts +56 -7
  194. package/dist/infra/cipher/session/chat-session.js +163 -13
  195. package/dist/infra/cipher/session/index.d.ts +1 -0
  196. package/dist/infra/cipher/session/index.js +2 -0
  197. package/dist/infra/cipher/session/message-queue.d.ts +65 -0
  198. package/dist/infra/cipher/session/message-queue.js +90 -0
  199. package/dist/infra/cipher/session/session-manager.d.ts +106 -5
  200. package/dist/infra/cipher/session/session-manager.js +254 -7
  201. package/dist/infra/cipher/session/session-status.d.ts +137 -0
  202. package/dist/infra/cipher/session/session-status.js +184 -0
  203. package/dist/infra/cipher/session/title-generator.d.ts +8 -0
  204. package/dist/infra/cipher/session/title-generator.js +31 -0
  205. package/dist/infra/cipher/storage/message-storage-service.d.ts +65 -2
  206. package/dist/infra/cipher/storage/message-storage-service.js +300 -54
  207. package/dist/infra/cipher/storage/tool-part-factory.d.ts +116 -0
  208. package/dist/infra/cipher/storage/tool-part-factory.js +197 -0
  209. package/dist/infra/cipher/system-prompt/contributor-schemas.d.ts +516 -0
  210. package/dist/infra/cipher/system-prompt/contributor-schemas.js +85 -0
  211. package/dist/infra/cipher/system-prompt/contributors/agent-prompt-contributor.d.ts +59 -0
  212. package/dist/infra/cipher/system-prompt/contributors/agent-prompt-contributor.js +131 -0
  213. package/dist/infra/cipher/system-prompt/contributors/companion-contributor.d.ts +54 -0
  214. package/dist/infra/cipher/system-prompt/contributors/companion-contributor.js +107 -0
  215. package/dist/infra/cipher/system-prompt/contributors/context-tree-structure-contributor.d.ts +68 -0
  216. package/dist/infra/cipher/system-prompt/contributors/context-tree-structure-contributor.js +179 -0
  217. package/dist/infra/cipher/system-prompt/contributors/datetime-contributor.d.ts +25 -0
  218. package/dist/infra/cipher/system-prompt/contributors/datetime-contributor.js +29 -0
  219. package/dist/infra/cipher/system-prompt/contributors/environment-contributor.d.ts +25 -0
  220. package/dist/infra/cipher/system-prompt/contributors/environment-contributor.js +54 -0
  221. package/dist/infra/cipher/system-prompt/contributors/file-contributor.d.ts +60 -0
  222. package/dist/infra/cipher/system-prompt/contributors/file-contributor.js +128 -0
  223. package/dist/infra/cipher/system-prompt/contributors/index.d.ts +13 -0
  224. package/dist/infra/cipher/system-prompt/contributors/index.js +8 -0
  225. package/dist/infra/cipher/system-prompt/contributors/memory-contributor.d.ts +40 -0
  226. package/dist/infra/cipher/system-prompt/contributors/memory-contributor.js +56 -0
  227. package/dist/infra/cipher/system-prompt/contributors/static-contributor.d.ts +26 -0
  228. package/dist/infra/cipher/system-prompt/contributors/static-contributor.js +31 -0
  229. package/dist/infra/cipher/system-prompt/environment-context-builder.d.ts +112 -0
  230. package/dist/infra/cipher/system-prompt/environment-context-builder.js +256 -0
  231. package/dist/infra/cipher/system-prompt/prompt-cache.d.ts +102 -0
  232. package/dist/infra/cipher/system-prompt/prompt-cache.js +156 -0
  233. package/dist/infra/cipher/system-prompt/schemas.d.ts +151 -0
  234. package/dist/infra/cipher/system-prompt/schemas.js +94 -0
  235. package/dist/infra/cipher/system-prompt/system-prompt-manager.d.ts +136 -0
  236. package/dist/infra/cipher/system-prompt/system-prompt-manager.js +307 -0
  237. package/dist/infra/cipher/todos/todo-storage-service.d.ts +26 -0
  238. package/dist/infra/cipher/todos/todo-storage-service.js +28 -0
  239. package/dist/infra/cipher/tools/core-tool-scheduler.js +5 -1
  240. package/dist/infra/cipher/tools/default-policy-rules.js +1 -1
  241. package/dist/infra/cipher/tools/implementations/bash-exec-tool.d.ts +1 -0
  242. package/dist/infra/cipher/tools/implementations/bash-exec-tool.js +27 -10
  243. package/dist/infra/cipher/tools/implementations/bash-output-tool.js +1 -5
  244. package/dist/infra/cipher/tools/implementations/batch-tool.d.ts +12 -0
  245. package/dist/infra/cipher/tools/implementations/batch-tool.js +142 -0
  246. package/dist/infra/cipher/tools/implementations/curate-tool.js +195 -68
  247. package/dist/infra/cipher/tools/implementations/list-directory-tool.d.ts +12 -0
  248. package/dist/infra/cipher/tools/implementations/list-directory-tool.js +52 -0
  249. package/dist/infra/cipher/tools/implementations/read-file-tool.d.ts +8 -1
  250. package/dist/infra/cipher/tools/implementations/read-file-tool.js +17 -7
  251. package/dist/infra/cipher/tools/implementations/read-todos-tool.d.ts +11 -0
  252. package/dist/infra/cipher/tools/implementations/read-todos-tool.js +39 -0
  253. package/dist/infra/cipher/tools/implementations/{detect-domains-tool.d.ts → spec-analyze-tool.d.ts} +1 -1
  254. package/dist/infra/cipher/tools/implementations/{detect-domains-tool.js → spec-analyze-tool.js} +9 -7
  255. package/dist/infra/cipher/tools/implementations/task-tool.d.ts +34 -0
  256. package/dist/infra/cipher/tools/implementations/task-tool.js +207 -0
  257. package/dist/infra/cipher/tools/implementations/write-todos-tool.d.ts +4 -1
  258. package/dist/infra/cipher/tools/implementations/write-todos-tool.js +19 -63
  259. package/dist/infra/cipher/tools/index.d.ts +1 -1
  260. package/dist/infra/cipher/tools/index.js +1 -1
  261. package/dist/infra/cipher/tools/plugins/index.d.ts +3 -0
  262. package/dist/infra/cipher/tools/plugins/index.js +2 -0
  263. package/dist/infra/cipher/tools/plugins/logging-plugin.d.ts +28 -0
  264. package/dist/infra/cipher/tools/plugins/logging-plugin.js +66 -0
  265. package/dist/infra/cipher/tools/plugins/plugin-manager.d.ts +81 -0
  266. package/dist/infra/cipher/tools/plugins/plugin-manager.js +122 -0
  267. package/dist/infra/cipher/tools/streaming/index.d.ts +1 -0
  268. package/dist/infra/cipher/tools/streaming/index.js +1 -0
  269. package/dist/infra/cipher/tools/streaming/metadata-handler.d.ts +31 -0
  270. package/dist/infra/cipher/tools/streaming/metadata-handler.js +39 -0
  271. package/dist/infra/cipher/tools/tool-description-loader.d.ts +57 -0
  272. package/dist/infra/cipher/tools/tool-description-loader.js +108 -0
  273. package/dist/infra/cipher/tools/tool-manager.d.ts +38 -4
  274. package/dist/infra/cipher/tools/tool-manager.js +107 -11
  275. package/dist/infra/cipher/tools/tool-provider-getter.d.ts +6 -0
  276. package/dist/infra/cipher/tools/tool-provider-getter.js +1 -0
  277. package/dist/infra/cipher/tools/tool-provider.d.ts +32 -7
  278. package/dist/infra/cipher/tools/tool-provider.js +81 -25
  279. package/dist/infra/cipher/tools/tool-registry.d.ts +23 -0
  280. package/dist/infra/cipher/tools/tool-registry.js +58 -16
  281. package/dist/infra/context-tree/file-context-tree-snapshot-service.js +10 -4
  282. package/dist/infra/context-tree/file-context-tree-writer-service.d.ts +4 -3
  283. package/dist/infra/context-tree/file-context-tree-writer-service.js +6 -4
  284. package/dist/infra/context-tree/path-utils.d.ts +7 -0
  285. package/dist/infra/context-tree/path-utils.js +7 -0
  286. package/dist/infra/core/executors/curate-executor.d.ts +35 -0
  287. package/dist/infra/core/executors/curate-executor.js +123 -0
  288. package/dist/infra/core/executors/index.d.ts +2 -0
  289. package/dist/infra/core/executors/index.js +2 -0
  290. package/dist/infra/core/executors/query-executor.d.ts +23 -0
  291. package/dist/infra/core/executors/query-executor.js +51 -0
  292. package/dist/infra/core/task-processor.d.ts +81 -0
  293. package/dist/infra/core/task-processor.js +115 -0
  294. package/dist/infra/instance/file-instance-discovery.d.ts +31 -0
  295. package/dist/infra/instance/file-instance-discovery.js +84 -0
  296. package/dist/infra/instance/file-instance-manager.d.ts +46 -0
  297. package/dist/infra/instance/file-instance-manager.js +123 -0
  298. package/dist/infra/instance/index.d.ts +3 -0
  299. package/dist/infra/instance/index.js +3 -0
  300. package/dist/infra/instance/process-utils.d.ts +14 -0
  301. package/dist/infra/instance/process-utils.js +39 -0
  302. package/dist/infra/process/agent-worker.d.ts +20 -0
  303. package/dist/infra/process/agent-worker.js +602 -0
  304. package/dist/infra/process/index.d.ts +12 -0
  305. package/dist/infra/process/index.js +11 -0
  306. package/dist/infra/process/ipc-types.d.ts +55 -0
  307. package/dist/infra/process/ipc-types.js +12 -0
  308. package/dist/infra/process/process-manager.d.ts +154 -0
  309. package/dist/infra/process/process-manager.js +471 -0
  310. package/dist/infra/process/task-queue-manager.d.ts +123 -0
  311. package/dist/infra/process/task-queue-manager.js +226 -0
  312. package/dist/infra/process/transport-handlers.d.ts +124 -0
  313. package/dist/infra/process/transport-handlers.js +348 -0
  314. package/dist/infra/process/transport-worker.d.ts +20 -0
  315. package/dist/infra/process/transport-worker.js +168 -0
  316. package/dist/infra/repl/commands/curate-command.js +0 -5
  317. package/dist/infra/repl/commands/query-command.js +0 -3
  318. package/dist/infra/repl/repl-startup.d.ts +4 -0
  319. package/dist/infra/repl/repl-startup.js +8 -1
  320. package/dist/infra/repl/transport-client-helper.d.ts +9 -0
  321. package/dist/infra/repl/transport-client-helper.js +96 -0
  322. package/dist/infra/transport/index.d.ts +4 -0
  323. package/dist/infra/transport/index.js +4 -0
  324. package/dist/infra/transport/port-utils.d.ts +42 -0
  325. package/dist/infra/transport/port-utils.js +84 -0
  326. package/dist/infra/transport/socket-io-transport-client.d.ts +45 -0
  327. package/dist/infra/transport/socket-io-transport-client.js +270 -0
  328. package/dist/infra/transport/socket-io-transport-server.d.ts +35 -0
  329. package/dist/infra/transport/socket-io-transport-server.js +207 -0
  330. package/dist/infra/transport/transport-client-factory.d.ts +76 -0
  331. package/dist/infra/transport/transport-client-factory.js +168 -0
  332. package/dist/infra/transport/transport-factory.d.ts +33 -0
  333. package/dist/infra/transport/transport-factory.js +59 -0
  334. package/dist/infra/usecase/curate-use-case.d.ts +8 -55
  335. package/dist/infra/usecase/curate-use-case.js +71 -262
  336. package/dist/infra/usecase/init-use-case.js +3 -2
  337. package/dist/infra/usecase/query-use-case.d.ts +18 -45
  338. package/dist/infra/usecase/query-use-case.js +250 -326
  339. package/dist/infra/usecase/status-use-case.js +1 -1
  340. package/dist/resources/prompts/{curate-context-tree-curation.yml → curate.yml} +25 -22
  341. package/dist/resources/prompts/explore.yml +78 -0
  342. package/dist/resources/prompts/plan.yml +114 -0
  343. package/dist/resources/prompts/reflection.yml +1 -1
  344. package/dist/resources/prompts/system-prompt.yml +15 -8
  345. package/dist/resources/prompts/tool-outputs.yml +0 -5
  346. package/dist/resources/tools/bash_exec.txt +98 -0
  347. package/dist/resources/tools/bash_output.txt +40 -0
  348. package/dist/resources/tools/batch.txt +28 -0
  349. package/dist/resources/tools/create_knowledge_topic.txt +23 -0
  350. package/dist/resources/tools/curate.txt +22 -0
  351. package/dist/resources/tools/delete_memory.txt +1 -0
  352. package/dist/resources/tools/detect_domains.txt +11 -0
  353. package/dist/resources/tools/edit_file.txt +1 -0
  354. package/dist/resources/tools/edit_memory.txt +1 -0
  355. package/dist/resources/tools/glob_files.txt +20 -0
  356. package/dist/resources/tools/grep_content.txt +18 -0
  357. package/dist/resources/tools/kill_process.txt +16 -0
  358. package/dist/resources/tools/list_directory.txt +16 -0
  359. package/dist/resources/tools/list_memories.txt +1 -0
  360. package/dist/resources/tools/read_file.txt +31 -0
  361. package/dist/resources/tools/read_memory.txt +1 -0
  362. package/dist/resources/tools/read_todos.txt +17 -0
  363. package/dist/resources/tools/search_history.txt +1 -0
  364. package/dist/resources/tools/task.txt +23 -0
  365. package/dist/resources/tools/write_file.txt +1 -0
  366. package/dist/resources/tools/write_memory.txt +1 -0
  367. package/dist/resources/tools/write_todos.txt +29 -0
  368. package/dist/tui/app.js +9 -13
  369. package/dist/tui/components/command-details.d.ts +14 -0
  370. package/dist/tui/components/command-details.js +35 -0
  371. package/dist/tui/components/execution/execution-changes.d.ts +5 -0
  372. package/dist/tui/components/execution/execution-changes.js +19 -4
  373. package/dist/tui/components/execution/execution-content.d.ts +4 -2
  374. package/dist/tui/components/execution/execution-content.js +26 -13
  375. package/dist/tui/components/execution/execution-input.js +3 -3
  376. package/dist/tui/components/execution/execution-progress.d.ts +2 -2
  377. package/dist/tui/components/execution/execution-progress.js +8 -6
  378. package/dist/tui/components/execution/log-item.d.ts +3 -4
  379. package/dist/tui/components/execution/log-item.js +2 -5
  380. package/dist/tui/components/footer.js +9 -4
  381. package/dist/tui/components/header.d.ts +3 -3
  382. package/dist/tui/components/header.js +5 -3
  383. package/dist/tui/components/index.d.ts +1 -0
  384. package/dist/tui/components/index.js +1 -0
  385. package/dist/tui/components/onboarding/copyable-prompt.d.ts +5 -3
  386. package/dist/tui/components/onboarding/copyable-prompt.js +7 -8
  387. package/dist/tui/components/onboarding/onboarding-flow.js +35 -25
  388. package/dist/tui/components/scrollable-list.js +12 -10
  389. package/dist/tui/components/suggestions.js +39 -41
  390. package/dist/tui/components/tab-bar.d.ts +2 -1
  391. package/dist/tui/components/tab-bar.js +3 -4
  392. package/dist/tui/constants.d.ts +0 -5
  393. package/dist/tui/constants.js +0 -5
  394. package/dist/tui/contexts/auth-context.js +9 -2
  395. package/dist/tui/contexts/{use-commands.js → commands-context.js} +3 -3
  396. package/dist/tui/contexts/index.d.ts +6 -1
  397. package/dist/tui/contexts/index.js +6 -1
  398. package/dist/tui/contexts/onboarding-context.d.ts +1 -1
  399. package/dist/tui/contexts/onboarding-context.js +9 -9
  400. package/dist/tui/contexts/tasks-context.d.ts +84 -0
  401. package/dist/tui/contexts/tasks-context.js +218 -0
  402. package/dist/tui/contexts/transport-context.d.ts +29 -0
  403. package/dist/tui/contexts/transport-context.js +82 -0
  404. package/dist/tui/hooks/index.d.ts +10 -6
  405. package/dist/tui/hooks/index.js +7 -6
  406. package/dist/tui/hooks/use-activity-logs.d.ts +3 -11
  407. package/dist/tui/hooks/use-activity-logs.js +87 -34
  408. package/dist/tui/hooks/use-auth-polling.d.ts +24 -0
  409. package/dist/tui/hooks/use-auth-polling.js +104 -0
  410. package/dist/tui/hooks/use-slash-command-processor.js +0 -1
  411. package/dist/tui/hooks/use-slash-completion.js +1 -1
  412. package/dist/tui/hooks/use-tab-navigation.d.ts +2 -1
  413. package/dist/tui/hooks/use-tab-navigation.js +16 -7
  414. package/dist/tui/hooks/use-terminal-breakpoint.d.ts +21 -0
  415. package/dist/tui/hooks/use-terminal-breakpoint.js +38 -0
  416. package/dist/tui/hooks/use-ui-heights.d.ts +120 -0
  417. package/dist/tui/hooks/use-ui-heights.js +88 -0
  418. package/dist/tui/providers/app-providers.js +2 -6
  419. package/dist/tui/types/commands.d.ts +0 -26
  420. package/dist/tui/types/index.d.ts +1 -1
  421. package/dist/tui/types/ui.d.ts +9 -4
  422. package/dist/tui/utils/line.d.ts +11 -0
  423. package/dist/tui/utils/line.js +16 -0
  424. package/dist/tui/utils/log.d.ts +27 -0
  425. package/dist/tui/utils/log.js +114 -0
  426. package/dist/tui/views/command-view.d.ts +7 -0
  427. package/dist/tui/views/command-view.js +103 -80
  428. package/dist/tui/views/login-view.js +7 -4
  429. package/dist/tui/views/logs-view.d.ts +13 -0
  430. package/dist/tui/views/logs-view.js +27 -52
  431. package/dist/utils/connection-error-handler.d.ts +16 -0
  432. package/dist/utils/connection-error-handler.js +49 -0
  433. package/dist/utils/crash-log.d.ts +14 -0
  434. package/dist/utils/crash-log.js +19 -0
  435. package/dist/utils/file-helpers.d.ts +14 -0
  436. package/dist/utils/file-helpers.js +21 -0
  437. package/dist/utils/global-logs-path.d.ts +11 -0
  438. package/dist/utils/global-logs-path.js +37 -0
  439. package/dist/utils/process-logger.d.ts +53 -0
  440. package/dist/utils/process-logger.js +253 -0
  441. package/dist/utils/sandbox-detector.d.ts +31 -0
  442. package/dist/utils/sandbox-detector.js +122 -0
  443. package/oclif.manifest.json +10 -198
  444. package/package.json +5 -1
  445. package/dist/commands/cipher-agent/run.d.ts +0 -142
  446. package/dist/commands/cipher-agent/run.js +0 -555
  447. package/dist/commands/cipher-agent/set-prompt.d.ts +0 -16
  448. package/dist/commands/cipher-agent/set-prompt.js +0 -58
  449. package/dist/commands/cipher-agent/show-prompt.d.ts +0 -13
  450. package/dist/commands/cipher-agent/show-prompt.js +0 -53
  451. package/dist/commands/foo.d.ts +0 -14
  452. package/dist/commands/foo.js +0 -66
  453. package/dist/infra/cipher/agent-service-factory.d.ts +0 -93
  454. package/dist/infra/cipher/cipher-agent-state-manager.d.ts +0 -63
  455. package/dist/infra/cipher/cipher-agent-state-manager.js +0 -108
  456. package/dist/infra/cipher/cipher-agent.d.ts +0 -182
  457. package/dist/infra/cipher/cipher-agent.js +0 -317
  458. package/dist/infra/cipher/system-prompt/simple-prompt-factory.d.ts +0 -106
  459. package/dist/infra/cipher/system-prompt/simple-prompt-factory.js +0 -297
  460. package/dist/infra/cipher/tools/implementations/find-knowledge-topics-tool.d.ts +0 -7
  461. package/dist/infra/cipher/tools/implementations/find-knowledge-topics-tool.js +0 -424
  462. package/dist/resources/prompts/modes/autonomous.yml +0 -9
  463. package/dist/resources/prompts/query-context-tree-retrieval.yml +0 -48
  464. package/dist/tui/contexts/consumer.d.ts +0 -31
  465. package/dist/tui/contexts/consumer.js +0 -56
  466. package/dist/tui/hooks/use-consumer.d.ts +0 -12
  467. package/dist/tui/hooks/use-consumer.js +0 -50
  468. package/dist/tui/hooks/use-queue-polling.d.ts +0 -31
  469. package/dist/tui/hooks/use-queue-polling.js +0 -90
  470. /package/dist/tui/contexts/{use-commands.d.ts → commands-context.d.ts} +0 -0
  471. /package/dist/tui/contexts/{use-mode.d.ts → mode-context.d.ts} +0 -0
  472. /package/dist/tui/contexts/{use-mode.js → mode-context.js} +0 -0
  473. /package/dist/tui/contexts/{use-theme.d.ts → theme-context.d.ts} +0 -0
  474. /package/dist/tui/contexts/{use-theme.js → theme-context.js} +0 -0
@@ -0,0 +1,143 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Permission values for agent operations.
4
+ * - allow: Operation is permitted without asking
5
+ * - deny: Operation is blocked
6
+ * - ask: User must approve the operation
7
+ */
8
+ export const PermissionValue = z.enum(['allow', 'deny', 'ask']);
9
+ /**
10
+ * Agent mode determines how the agent can be used.
11
+ * - primary: Entry point agent (e.g., plan, cipher)
12
+ * - subagent: Can only be invoked by primary agents via TaskTool
13
+ * - all: Can be used as both primary and subagent
14
+ */
15
+ export const AgentMode = z.enum(['primary', 'subagent', 'all']);
16
+ /**
17
+ * Permission configuration for an agent.
18
+ * Controls what operations the agent is allowed to perform.
19
+ */
20
+ export const AgentPermissionSchema = z.object({
21
+ /**
22
+ * Permission map for bash commands.
23
+ * Keys are command patterns (supports wildcards like 'git*', 'ls*').
24
+ * Value '*' applies to all commands not matched by other patterns.
25
+ * @default { '*': 'allow' }
26
+ */
27
+ bash: z.record(z.string(), PermissionValue).default({ '*': 'allow' }),
28
+ /**
29
+ * Permission for file editing operations (edit_file, write_file).
30
+ * @default 'allow'
31
+ */
32
+ edit: PermissionValue.default('allow'),
33
+ });
34
+ /**
35
+ * Agent information schema.
36
+ * Defines the configuration for a Cipher agent (modeled after OpenCode's Agent.Info).
37
+ */
38
+ export const AgentInfoSchema = z.object({
39
+ /**
40
+ * Optional color for UI display (hex code like #RRGGBB).
41
+ */
42
+ color: z.string().optional(),
43
+ /**
44
+ * Human-readable description of when to use this agent.
45
+ * Displayed to LLM when selecting subagents via TaskTool.
46
+ */
47
+ description: z.string().optional(),
48
+ /**
49
+ * Whether this agent is hidden from user selection.
50
+ * Hidden agents can still be invoked programmatically.
51
+ * @default false
52
+ */
53
+ hidden: z.boolean().default(false),
54
+ /**
55
+ * Maximum number of LLM iterations for this agent.
56
+ * Overrides the default maxIterations from config.
57
+ */
58
+ maxIterations: z.number().int().positive().optional(),
59
+ /**
60
+ * Agent mode: primary, subagent, or all.
61
+ * - primary: Direct entry point for users
62
+ * - subagent: Invoked via TaskTool from primary agents
63
+ * - all: Can be used in both contexts
64
+ */
65
+ mode: AgentMode,
66
+ /**
67
+ * Optional model override for this agent.
68
+ * If not specified, uses the default model from agent config.
69
+ */
70
+ model: z
71
+ .object({
72
+ modelId: z.string(),
73
+ providerId: z.string().optional(),
74
+ })
75
+ .optional(),
76
+ /**
77
+ * Unique identifier for the agent.
78
+ * Used to reference the agent in TaskTool and registry.
79
+ */
80
+ name: z.string().min(1),
81
+ /**
82
+ * Whether this is a native (built-in) agent.
83
+ * Native agents are defined in code, not config files.
84
+ * @default true
85
+ */
86
+ native: z.boolean().default(true),
87
+ /**
88
+ * Permission configuration for this agent.
89
+ * Controls file editing and bash command access.
90
+ */
91
+ permission: AgentPermissionSchema.default({
92
+ bash: { '*': 'allow' },
93
+ edit: 'allow',
94
+ }),
95
+ /**
96
+ * Inline system prompt for this agent.
97
+ * Used when promptFile is not specified.
98
+ */
99
+ prompt: z.string().optional(),
100
+ /**
101
+ * Reference to a YAML prompt file in src/resources/prompts/.
102
+ * The file content will be used as the agent's system prompt.
103
+ * Takes precedence over inline `prompt` if both are specified.
104
+ */
105
+ promptFile: z.string().optional(),
106
+ /**
107
+ * LLM temperature for this agent.
108
+ * Controls randomness/creativity of responses.
109
+ */
110
+ temperature: z.number().min(0).max(2).optional(),
111
+ /**
112
+ * Tool enable/disable configuration.
113
+ * Keys are tool names, values are boolean (true = enabled, false = disabled).
114
+ * Supports wildcard '*' for all tools.
115
+ * Tools not listed inherit from parent/default configuration.
116
+ */
117
+ tools: z.record(z.string(), z.boolean()).default({}),
118
+ });
119
+ /**
120
+ * Default permission configuration for agents.
121
+ */
122
+ export const DEFAULT_AGENT_PERMISSION = {
123
+ bash: { '*': 'allow' },
124
+ edit: 'allow',
125
+ };
126
+ /**
127
+ * Read-only permission configuration (for planning agents).
128
+ */
129
+ export const READONLY_AGENT_PERMISSION = {
130
+ bash: {
131
+ '*': 'ask',
132
+ 'cat*': 'allow',
133
+ 'find*': 'allow',
134
+ 'git*': 'allow',
135
+ 'grep*': 'allow',
136
+ 'head*': 'allow',
137
+ 'ls*': 'allow',
138
+ 'pwd*': 'allow',
139
+ 'tail*': 'allow',
140
+ 'tree*': 'allow',
141
+ },
142
+ edit: 'deny',
143
+ };
@@ -0,0 +1,96 @@
1
+ import { AgentInfo } from './agent-info.js';
2
+ /**
3
+ * Built-in agent names.
4
+ * These constants ensure type safety and prevent typos.
5
+ */
6
+ export declare const AgentName: {
7
+ /** Default primary agent with full capabilities */
8
+ readonly CIPHER: "cipher";
9
+ /** Subagent for creating/updating knowledge topics */
10
+ readonly CURATE: "curate";
11
+ /** Subagent for context tree explore and knowledge discovery */
12
+ readonly EXPLORE: "explore";
13
+ /** Primary agent for orchestrating curation workflow */
14
+ readonly PLAN: "plan";
15
+ };
16
+ export type KnownAgent = (typeof AgentName)[keyof typeof AgentName];
17
+ /**
18
+ * AgentRegistry - Singleton registry for managing agent definitions.
19
+ *
20
+ * Provides methods to:
21
+ * - Get agent by name
22
+ * - List all agents
23
+ * - List agents by mode (primary, subagent)
24
+ * - Register custom agents
25
+ */
26
+ export declare class AgentRegistry {
27
+ private static instance;
28
+ private agents;
29
+ private constructor();
30
+ /**
31
+ * Get the singleton instance of AgentRegistry.
32
+ */
33
+ static getInstance(): AgentRegistry;
34
+ /**
35
+ * Reset the singleton instance (for testing).
36
+ */
37
+ static reset(): void;
38
+ /**
39
+ * Get an agent by name.
40
+ * @param name - Agent name
41
+ * @returns Agent info or undefined if not found
42
+ */
43
+ get(name: string): AgentInfo | undefined;
44
+ /**
45
+ * Get agent names as a formatted list for display.
46
+ * @returns Formatted string of agent names and descriptions
47
+ */
48
+ getSubagentDescriptions(): string;
49
+ /**
50
+ * Check if an agent exists.
51
+ * @param name - Agent name
52
+ * @returns true if agent exists
53
+ */
54
+ has(name: string): boolean;
55
+ /**
56
+ * List all registered agents.
57
+ * @returns Array of agent info objects
58
+ */
59
+ list(): AgentInfo[];
60
+ /**
61
+ * List agents by mode.
62
+ * @param mode - Agent mode to filter by
63
+ * @returns Array of agents matching the mode
64
+ */
65
+ listByMode(mode: 'all' | 'primary' | 'subagent'): AgentInfo[];
66
+ /**
67
+ * List primary agents available for direct user interaction.
68
+ * Returns agents that can be used as entry points (mode: 'primary' or 'all').
69
+ * Excludes hidden agents.
70
+ * @returns Array of primary agent info objects
71
+ */
72
+ listPrimaryAgents(): AgentInfo[];
73
+ /**
74
+ * List subagents available for TaskTool.
75
+ * Returns agents that can be invoked as subagents (mode: 'subagent' or 'all').
76
+ * Excludes hidden agents.
77
+ * @returns Array of subagent info objects
78
+ */
79
+ listSubagents(): AgentInfo[];
80
+ /**
81
+ * Register a custom agent.
82
+ * @param agent - Agent info to register
83
+ * @throws Error if agent with same name already exists (unless overwrite is true)
84
+ */
85
+ register(agent: AgentInfo, overwrite?: boolean): void;
86
+ /**
87
+ * Unregister an agent.
88
+ * @param name - Agent name to remove
89
+ * @returns true if agent was removed, false if not found
90
+ */
91
+ unregister(name: string): boolean;
92
+ }
93
+ /**
94
+ * Convenience function to get the AgentRegistry instance.
95
+ */
96
+ export declare function getAgentRegistry(): AgentRegistry;
@@ -0,0 +1,254 @@
1
+ import { ToolName } from '../tools/constants.js';
2
+ import { AgentInfoSchema, DEFAULT_AGENT_PERMISSION, READONLY_AGENT_PERMISSION, } from './agent-info.js';
3
+ /**
4
+ * Built-in agent names.
5
+ * These constants ensure type safety and prevent typos.
6
+ */
7
+ export const AgentName = {
8
+ /** Default primary agent with full capabilities */
9
+ CIPHER: 'cipher',
10
+ /** Subagent for creating/updating knowledge topics */
11
+ CURATE: 'curate',
12
+ /** Subagent for context tree explore and knowledge discovery */
13
+ EXPLORE: 'explore',
14
+ /** Primary agent for orchestrating curation workflow */
15
+ PLAN: 'plan',
16
+ };
17
+ /**
18
+ * Tools available to the Query subagent.
19
+ * Read-only tools for context tree exploration.
20
+ */
21
+ const EXPLORE_AGENT_TOOLS = {
22
+ [ToolName.BASH_EXEC]: false,
23
+ [ToolName.CREATE_KNOWLEDGE_TOPIC]: false,
24
+ [ToolName.CURATE]: false,
25
+ [ToolName.EDIT_FILE]: false,
26
+ [ToolName.GLOB_FILES]: true,
27
+ [ToolName.GREP_CONTENT]: true,
28
+ [ToolName.LIST_DIRECTORY]: true,
29
+ [ToolName.READ_FILE]: true,
30
+ [ToolName.WRITE_FILE]: false,
31
+ };
32
+ /**
33
+ * Tools available to the Curate subagent.
34
+ * Context building and modification tools.
35
+ */
36
+ const CURATE_AGENT_TOOLS = {
37
+ [ToolName.BASH_EXEC]: false,
38
+ [ToolName.CURATE]: true,
39
+ [ToolName.EDIT_FILE]: false,
40
+ [ToolName.GLOB_FILES]: true,
41
+ [ToolName.GREP_CONTENT]: true,
42
+ [ToolName.LIST_DIRECTORY]: true,
43
+ [ToolName.READ_FILE]: true,
44
+ [ToolName.SPEC_ANALYZE]: true,
45
+ [ToolName.WRITE_FILE]: false,
46
+ };
47
+ /**
48
+ * Tools available to the Plan agent.
49
+ * Read-only tools plus TaskTool for delegation.
50
+ */
51
+ const PLAN_AGENT_TOOLS = {
52
+ // TaskTool for subagent delegation (will be added when registered)
53
+ task: true,
54
+ [ToolName.BASH_EXEC]: false,
55
+ [ToolName.CREATE_KNOWLEDGE_TOPIC]: false,
56
+ [ToolName.CURATE]: false,
57
+ [ToolName.EDIT_FILE]: false,
58
+ [ToolName.GLOB_FILES]: true,
59
+ [ToolName.GREP_CONTENT]: true,
60
+ [ToolName.LIST_DIRECTORY]: true,
61
+ [ToolName.READ_FILE]: true,
62
+ [ToolName.WRITE_FILE]: false,
63
+ };
64
+ /**
65
+ * Built-in agent definitions.
66
+ * These are the native agents available in the system.
67
+ */
68
+ const BUILT_IN_AGENTS = {
69
+ /**
70
+ * Cipher Agent - Default primary agent with full capabilities.
71
+ * Used for general-purpose tasks.
72
+ */
73
+ [AgentName.CIPHER]: AgentInfoSchema.parse({
74
+ description: 'Default agent with full capabilities for general-purpose tasks.',
75
+ hidden: false,
76
+ mode: 'primary',
77
+ name: AgentName.CIPHER,
78
+ native: true,
79
+ permission: DEFAULT_AGENT_PERMISSION,
80
+ promptFile: 'system-prompt.yml',
81
+ tools: {}, // All tools enabled by default
82
+ }),
83
+ /**
84
+ * Curate Agent - Subagent for creating/updating knowledge topics.
85
+ * Handles the actual context tree modification.
86
+ */
87
+ [AgentName.CURATE]: AgentInfoSchema.parse({
88
+ description: 'Agent for creating and updating knowledge topics in the context tree. Use this to curate context after gathering information.',
89
+ hidden: false,
90
+ mode: 'subagent',
91
+ name: AgentName.CURATE,
92
+ native: true,
93
+ permission: {
94
+ bash: { '*': 'deny' },
95
+ edit: 'deny', // Only uses curate tool, not general file editing
96
+ },
97
+ promptFile: 'curate.yml',
98
+ tools: CURATE_AGENT_TOOLS,
99
+ }),
100
+ /**
101
+ * Query Agent - Subagent for context tree retrieval.
102
+ * Specialized for searching and retrieving information from the context tree.
103
+ */
104
+ [AgentName.EXPLORE]: AgentInfoSchema.parse({
105
+ description: 'Specialized agent for context tree retrieval and knowledge discovery. Use this to search and retrieve relevant information from the context tree.',
106
+ hidden: false,
107
+ mode: 'subagent',
108
+ name: AgentName.EXPLORE,
109
+ native: true,
110
+ permission: {
111
+ bash: { '*': 'deny' },
112
+ edit: 'deny',
113
+ },
114
+ promptFile: 'explore.yml',
115
+ tools: EXPLORE_AGENT_TOOLS,
116
+ }),
117
+ /**
118
+ * Plan Agent - Primary agent for orchestrating curation workflow.
119
+ * Uses TaskTool to delegate to Query and Curate subagents.
120
+ */
121
+ [AgentName.PLAN]: AgentInfoSchema.parse({
122
+ description: 'Planning agent that orchestrates context exploration and curation. Analyzes requests and delegates to explore and curate subagents.',
123
+ hidden: false,
124
+ mode: 'primary',
125
+ name: AgentName.PLAN,
126
+ native: true,
127
+ permission: READONLY_AGENT_PERMISSION,
128
+ promptFile: 'plan.yml',
129
+ tools: PLAN_AGENT_TOOLS,
130
+ }),
131
+ };
132
+ /**
133
+ * AgentRegistry - Singleton registry for managing agent definitions.
134
+ *
135
+ * Provides methods to:
136
+ * - Get agent by name
137
+ * - List all agents
138
+ * - List agents by mode (primary, subagent)
139
+ * - Register custom agents
140
+ */
141
+ export class AgentRegistry {
142
+ static instance = null;
143
+ agents;
144
+ constructor() {
145
+ this.agents = new Map();
146
+ // Register built-in agents
147
+ for (const [name, agent] of Object.entries(BUILT_IN_AGENTS)) {
148
+ this.agents.set(name, agent);
149
+ }
150
+ }
151
+ /**
152
+ * Get the singleton instance of AgentRegistry.
153
+ */
154
+ static getInstance() {
155
+ if (!AgentRegistry.instance) {
156
+ AgentRegistry.instance = new AgentRegistry();
157
+ }
158
+ return AgentRegistry.instance;
159
+ }
160
+ /**
161
+ * Reset the singleton instance (for testing).
162
+ */
163
+ static reset() {
164
+ AgentRegistry.instance = null;
165
+ }
166
+ /**
167
+ * Get an agent by name.
168
+ * @param name - Agent name
169
+ * @returns Agent info or undefined if not found
170
+ */
171
+ get(name) {
172
+ return this.agents.get(name);
173
+ }
174
+ /**
175
+ * Get agent names as a formatted list for display.
176
+ * @returns Formatted string of agent names and descriptions
177
+ */
178
+ getSubagentDescriptions() {
179
+ return this.listSubagents()
180
+ .map((agent) => `- ${agent.name}: ${agent.description || 'No description'}`)
181
+ .join('\n');
182
+ }
183
+ /**
184
+ * Check if an agent exists.
185
+ * @param name - Agent name
186
+ * @returns true if agent exists
187
+ */
188
+ has(name) {
189
+ return this.agents.has(name);
190
+ }
191
+ /**
192
+ * List all registered agents.
193
+ * @returns Array of agent info objects
194
+ */
195
+ list() {
196
+ return [...this.agents.values()];
197
+ }
198
+ /**
199
+ * List agents by mode.
200
+ * @param mode - Agent mode to filter by
201
+ * @returns Array of agents matching the mode
202
+ */
203
+ listByMode(mode) {
204
+ return this.list().filter((agent) => {
205
+ if (mode === 'all')
206
+ return true;
207
+ return agent.mode === mode || agent.mode === 'all';
208
+ });
209
+ }
210
+ /**
211
+ * List primary agents available for direct user interaction.
212
+ * Returns agents that can be used as entry points (mode: 'primary' or 'all').
213
+ * Excludes hidden agents.
214
+ * @returns Array of primary agent info objects
215
+ */
216
+ listPrimaryAgents() {
217
+ return this.list().filter((agent) => !agent.hidden && (agent.mode === 'primary' || agent.mode === 'all'));
218
+ }
219
+ /**
220
+ * List subagents available for TaskTool.
221
+ * Returns agents that can be invoked as subagents (mode: 'subagent' or 'all').
222
+ * Excludes hidden agents.
223
+ * @returns Array of subagent info objects
224
+ */
225
+ listSubagents() {
226
+ return this.list().filter((agent) => !agent.hidden && (agent.mode === 'subagent' || agent.mode === 'all'));
227
+ }
228
+ /**
229
+ * Register a custom agent.
230
+ * @param agent - Agent info to register
231
+ * @throws Error if agent with same name already exists (unless overwrite is true)
232
+ */
233
+ register(agent, overwrite = false) {
234
+ const validated = AgentInfoSchema.parse(agent);
235
+ if (this.agents.has(validated.name) && !overwrite) {
236
+ throw new Error(`Agent '${validated.name}' already exists. Use overwrite=true to replace.`);
237
+ }
238
+ this.agents.set(validated.name, validated);
239
+ }
240
+ /**
241
+ * Unregister an agent.
242
+ * @param name - Agent name to remove
243
+ * @returns true if agent was removed, false if not found
244
+ */
245
+ unregister(name) {
246
+ return this.agents.delete(name);
247
+ }
248
+ }
249
+ /**
250
+ * Convenience function to get the AgentRegistry instance.
251
+ */
252
+ export function getAgentRegistry() {
253
+ return AgentRegistry.getInstance();
254
+ }
@@ -1,7 +1,10 @@
1
1
  /**
2
2
  * Agent Module
3
3
  *
4
- * Exports agent state management types and classes.
4
+ * Exports agent state management types and classes,
5
+ * as well as the multi-agent system components.
5
6
  */
7
+ export { AgentInfo, AgentInfoSchema, AgentMode, AgentPermission, AgentPermissionSchema, DEFAULT_AGENT_PERMISSION, PermissionValue, READONLY_AGENT_PERMISSION, } from './agent-info.js';
8
+ export { AgentName, AgentRegistry, getAgentRegistry, KnownAgent, } from './agent-registry.js';
6
9
  export { AgentStateMachine } from './agent-state-machine.js';
7
10
  export { AgentExecutionContext, AgentState, TerminationReason } from './agent-state.js';
@@ -1,7 +1,13 @@
1
1
  /**
2
2
  * Agent Module
3
3
  *
4
- * Exports agent state management types and classes.
4
+ * Exports agent state management types and classes,
5
+ * as well as the multi-agent system components.
5
6
  */
7
+ // Multi-agent system (agent-info.js)
8
+ export { AgentInfoSchema, AgentMode, AgentPermissionSchema, DEFAULT_AGENT_PERMISSION, PermissionValue, READONLY_AGENT_PERMISSION, } from './agent-info.js';
9
+ // Multi-agent system (agent-registry.js)
10
+ export { AgentName, AgentRegistry, getAgentRegistry, } from './agent-registry.js';
11
+ // State management
6
12
  export { AgentStateMachine } from './agent-state-machine.js';
7
13
  export { AgentState, TerminationReason } from './agent-state.js';