byterover-cli 0.2.1 → 0.3.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 (490) hide show
  1. package/README.md +56 -56
  2. package/bin/dev.js +1 -1
  3. package/dist/commands/cipher-agent/run.d.ts +111 -0
  4. package/dist/commands/cipher-agent/run.js +493 -0
  5. package/dist/commands/cipher-agent/set-prompt.d.ts +14 -0
  6. package/dist/commands/cipher-agent/set-prompt.js +53 -0
  7. package/dist/commands/cipher-agent/show-prompt.d.ts +11 -0
  8. package/dist/commands/cipher-agent/show-prompt.js +48 -0
  9. package/dist/commands/clear.d.ts +6 -0
  10. package/dist/commands/clear.js +36 -15
  11. package/dist/commands/curate.d.ts +74 -0
  12. package/dist/commands/curate.js +396 -0
  13. package/dist/commands/foo.d.ts +12 -0
  14. package/dist/commands/foo.js +61 -0
  15. package/dist/commands/gen-rules.d.ts +3 -0
  16. package/dist/commands/gen-rules.js +39 -20
  17. package/dist/commands/init.d.ts +48 -3
  18. package/dist/commands/init.js +242 -70
  19. package/dist/commands/login.js +9 -4
  20. package/dist/commands/pull.d.ts +33 -0
  21. package/dist/commands/pull.js +115 -0
  22. package/dist/commands/push.d.ts +13 -13
  23. package/dist/commands/push.js +81 -101
  24. package/dist/commands/query.d.ts +63 -0
  25. package/dist/commands/query.js +349 -0
  26. package/dist/commands/space/list.d.ts +5 -2
  27. package/dist/commands/space/list.js +60 -56
  28. package/dist/commands/space/switch.d.ts +16 -0
  29. package/dist/commands/space/switch.js +102 -53
  30. package/dist/commands/status.d.ts +5 -2
  31. package/dist/commands/status.js +43 -33
  32. package/dist/commands/watch.d.ts +23 -0
  33. package/dist/commands/watch.js +171 -0
  34. package/dist/config/auth.config.js +14 -2
  35. package/dist/config/context-tree-domains.d.ts +12 -0
  36. package/dist/config/context-tree-domains.js +29 -0
  37. package/dist/config/environment.d.ts +6 -0
  38. package/dist/config/environment.js +9 -2
  39. package/dist/constants.d.ts +5 -0
  40. package/dist/constants.js +6 -0
  41. package/dist/core/domain/cipher/agent/agent-state-machine.d.ts +128 -0
  42. package/dist/core/domain/cipher/agent/agent-state-machine.js +183 -0
  43. package/dist/core/domain/cipher/agent/agent-state.d.ts +77 -0
  44. package/dist/core/domain/cipher/agent/agent-state.js +59 -0
  45. package/dist/core/domain/cipher/agent/index.d.ts +7 -0
  46. package/dist/core/domain/cipher/agent/index.js +7 -0
  47. package/dist/core/domain/cipher/agent-events/index.d.ts +8 -0
  48. package/dist/core/domain/cipher/agent-events/index.js +7 -0
  49. package/dist/core/domain/cipher/agent-events/types.d.ts +419 -0
  50. package/dist/core/domain/cipher/agent-events/types.js +42 -0
  51. package/dist/core/domain/cipher/blob/types.d.ts +108 -0
  52. package/dist/core/domain/cipher/errors/blob-error.d.ts +36 -0
  53. package/dist/core/domain/cipher/errors/blob-error.js +68 -0
  54. package/dist/core/domain/cipher/errors/file-system-error.d.ts +211 -0
  55. package/dist/core/domain/cipher/errors/file-system-error.js +291 -0
  56. package/dist/core/domain/cipher/errors/llm-error.d.ts +120 -0
  57. package/dist/core/domain/cipher/errors/llm-error.js +161 -0
  58. package/dist/core/domain/cipher/errors/memory-error.d.ts +35 -0
  59. package/dist/core/domain/cipher/errors/memory-error.js +62 -0
  60. package/dist/core/domain/cipher/errors/process-error-code.d.ts +97 -0
  61. package/dist/core/domain/cipher/errors/process-error-code.js +98 -0
  62. package/dist/core/domain/cipher/errors/process-error.d.ts +135 -0
  63. package/dist/core/domain/cipher/errors/process-error.js +173 -0
  64. package/dist/core/domain/cipher/errors/session-error.d.ts +56 -0
  65. package/dist/core/domain/cipher/errors/session-error.js +74 -0
  66. package/dist/core/domain/cipher/errors/tool-error.d.ts +57 -0
  67. package/dist/core/domain/cipher/errors/tool-error.js +81 -0
  68. package/dist/core/domain/cipher/file-system/types.d.ts +203 -0
  69. package/dist/core/domain/cipher/memory/types.d.ts +102 -0
  70. package/dist/core/domain/cipher/memory/types.js +4 -0
  71. package/dist/core/domain/cipher/parsed-interaction.d.ts +47 -0
  72. package/dist/core/domain/cipher/parsed-interaction.js +25 -0
  73. package/dist/core/domain/cipher/process/types.d.ts +286 -0
  74. package/dist/core/domain/cipher/session/types.d.ts +54 -0
  75. package/dist/core/domain/cipher/storage/history-types.d.ts +38 -0
  76. package/dist/core/domain/cipher/system-prompt/types.d.ts +131 -0
  77. package/dist/core/domain/cipher/todos/index.d.ts +4 -0
  78. package/dist/core/domain/cipher/todos/index.js +4 -0
  79. package/dist/core/domain/cipher/todos/types.d.ts +57 -0
  80. package/dist/core/domain/cipher/todos/types.js +5 -0
  81. package/dist/core/domain/cipher/tools/constants.d.ts +28 -0
  82. package/dist/core/domain/cipher/tools/constants.js +24 -0
  83. package/dist/core/domain/cipher/tools/tool-error.d.ts +183 -0
  84. package/dist/core/domain/cipher/tools/tool-error.js +246 -0
  85. package/dist/core/domain/cipher/tools/types.d.ts +145 -0
  86. package/dist/core/domain/entities/brv-config.d.ts +42 -6
  87. package/dist/core/domain/entities/brv-config.js +115 -17
  88. package/dist/core/domain/entities/cogit-push-context.d.ts +38 -0
  89. package/dist/core/domain/entities/cogit-push-context.js +91 -0
  90. package/dist/core/domain/entities/cogit-push-response.d.ts +20 -0
  91. package/dist/core/domain/entities/cogit-push-response.js +31 -0
  92. package/dist/core/domain/entities/cogit-snapshot-author.d.ts +24 -0
  93. package/dist/core/domain/entities/cogit-snapshot-author.js +39 -0
  94. package/dist/core/domain/entities/cogit-snapshot-file.d.ts +34 -0
  95. package/dist/core/domain/entities/cogit-snapshot-file.js +59 -0
  96. package/dist/core/domain/entities/cogit-snapshot.d.ts +31 -0
  97. package/dist/core/domain/entities/cogit-snapshot.js +58 -0
  98. package/dist/core/domain/entities/context-tree-index.d.ts +26 -0
  99. package/dist/core/domain/entities/context-tree-index.js +27 -0
  100. package/dist/core/domain/entities/context-tree-snapshot.d.ts +56 -0
  101. package/dist/core/domain/entities/context-tree-snapshot.js +83 -0
  102. package/dist/core/domain/entities/event.d.ts +1 -1
  103. package/dist/core/domain/entities/event.js +3 -1
  104. package/dist/core/domain/entities/parser.d.ts +567 -0
  105. package/dist/core/domain/entities/parser.js +10 -0
  106. package/dist/core/domain/entities/playbook.d.ts +2 -23
  107. package/dist/core/domain/entities/playbook.js +2 -70
  108. package/dist/core/domain/errors/brv-config-version-error.d.ts +16 -0
  109. package/dist/core/domain/errors/brv-config-version-error.js +21 -0
  110. package/dist/core/domain/knowledge/directory-manager.d.ts +80 -0
  111. package/dist/core/domain/knowledge/directory-manager.js +145 -0
  112. package/dist/core/domain/knowledge/markdown-writer.d.ts +18 -0
  113. package/dist/core/domain/knowledge/markdown-writer.js +18 -0
  114. package/dist/core/domain/knowledge/relation-parser.d.ts +90 -0
  115. package/dist/core/domain/knowledge/relation-parser.js +131 -0
  116. package/dist/core/interfaces/cipher/cipher-services.d.ts +71 -0
  117. package/dist/core/interfaces/cipher/cipher-services.js +1 -0
  118. package/dist/core/interfaces/cipher/i-blob-storage.d.ts +78 -0
  119. package/dist/core/interfaces/cipher/i-blob-storage.js +1 -0
  120. package/dist/core/interfaces/cipher/i-chat-session.d.ts +62 -0
  121. package/dist/core/interfaces/cipher/i-chat-session.js +1 -0
  122. package/dist/core/interfaces/cipher/i-cipher-agent.d.ts +88 -0
  123. package/dist/core/interfaces/cipher/i-cipher-agent.js +1 -0
  124. package/dist/core/interfaces/cipher/i-coding-agent-log-parser.d.ts +20 -0
  125. package/dist/core/interfaces/cipher/i-coding-agent-log-parser.js +1 -0
  126. package/dist/core/interfaces/cipher/i-coding-agent-log-watcher.d.ts +31 -0
  127. package/dist/core/interfaces/cipher/i-coding-agent-log-watcher.js +1 -0
  128. package/dist/core/interfaces/cipher/i-content-generator.d.ts +120 -0
  129. package/dist/core/interfaces/cipher/i-content-generator.js +12 -0
  130. package/dist/core/interfaces/cipher/i-event-emitter.d.ts +76 -0
  131. package/dist/core/interfaces/cipher/i-event-emitter.js +1 -0
  132. package/dist/core/interfaces/cipher/i-file-system.d.ts +68 -0
  133. package/dist/core/interfaces/cipher/i-file-system.js +1 -0
  134. package/dist/core/interfaces/cipher/i-history-storage.d.ts +53 -0
  135. package/dist/core/interfaces/cipher/i-history-storage.js +1 -0
  136. package/dist/core/interfaces/cipher/i-llm-provider.d.ts +14 -0
  137. package/dist/core/interfaces/cipher/i-llm-provider.js +1 -0
  138. package/dist/core/interfaces/cipher/i-llm-service.d.ts +62 -0
  139. package/dist/core/interfaces/cipher/i-llm-service.js +1 -0
  140. package/dist/core/interfaces/cipher/i-logger.d.ts +78 -0
  141. package/dist/core/interfaces/cipher/i-logger.js +28 -0
  142. package/dist/core/interfaces/cipher/i-message-formatter.d.ts +44 -0
  143. package/dist/core/interfaces/cipher/i-message-formatter.js +1 -0
  144. package/dist/core/interfaces/cipher/i-policy-engine.d.ts +102 -0
  145. package/dist/core/interfaces/cipher/i-policy-engine.js +9 -0
  146. package/dist/core/interfaces/cipher/i-process-service.d.ts +65 -0
  147. package/dist/core/interfaces/cipher/i-process-service.js +1 -0
  148. package/dist/core/interfaces/cipher/i-system-prompt-contributor.d.ts +25 -0
  149. package/dist/core/interfaces/cipher/i-system-prompt-contributor.js +1 -0
  150. package/dist/core/interfaces/cipher/i-tokenizer.d.ts +15 -0
  151. package/dist/core/interfaces/cipher/i-tokenizer.js +1 -0
  152. package/dist/core/interfaces/cipher/i-tool-provider.d.ts +64 -0
  153. package/dist/core/interfaces/cipher/i-tool-provider.js +1 -0
  154. package/dist/core/interfaces/cipher/i-tool-scheduler.d.ts +103 -0
  155. package/dist/core/interfaces/cipher/i-tool-scheduler.js +11 -0
  156. package/dist/core/interfaces/cipher/llm-types.d.ts +46 -0
  157. package/dist/core/interfaces/cipher/llm-types.js +5 -0
  158. package/dist/core/interfaces/cipher/message-types.d.ts +118 -0
  159. package/dist/core/interfaces/cipher/message-types.js +5 -0
  160. package/dist/core/interfaces/cipher/tokenizer-types.d.ts +11 -0
  161. package/dist/core/interfaces/cipher/tokenizer-types.js +14 -0
  162. package/dist/core/interfaces/i-cogit-pull-service.d.ts +24 -0
  163. package/dist/core/interfaces/i-cogit-pull-service.js +1 -0
  164. package/dist/core/interfaces/i-cogit-push-service.d.ts +27 -0
  165. package/dist/core/interfaces/i-cogit-push-service.js +1 -0
  166. package/dist/core/interfaces/i-context-file-reader.d.ts +32 -0
  167. package/dist/core/interfaces/i-context-file-reader.js +1 -0
  168. package/dist/core/interfaces/i-context-tree-service.d.ts +21 -0
  169. package/dist/core/interfaces/i-context-tree-service.js +1 -0
  170. package/dist/core/interfaces/i-context-tree-snapshot-service.d.ts +36 -0
  171. package/dist/core/interfaces/i-context-tree-snapshot-service.js +1 -0
  172. package/dist/core/interfaces/i-context-tree-writer-service.d.ts +32 -0
  173. package/dist/core/interfaces/i-context-tree-writer-service.js +1 -0
  174. package/dist/core/interfaces/i-file-watcher-service.d.ts +41 -0
  175. package/dist/core/interfaces/i-file-watcher-service.js +1 -0
  176. package/dist/core/interfaces/parser/i-clean-parser-service.d.ts +18 -0
  177. package/dist/core/interfaces/parser/i-clean-parser-service.js +1 -0
  178. package/dist/core/interfaces/parser/i-raw-parser-service.d.ts +17 -0
  179. package/dist/core/interfaces/parser/i-raw-parser-service.js +1 -0
  180. package/dist/core/interfaces/parser/i-session-normalizer.d.ts +56 -0
  181. package/dist/core/interfaces/parser/i-session-normalizer.js +1 -0
  182. package/dist/hooks/command_not_found/handle-invalid-commands.d.ts +7 -0
  183. package/dist/hooks/command_not_found/handle-invalid-commands.js +32 -0
  184. package/dist/hooks/error/clean-errors.d.ts +7 -0
  185. package/dist/hooks/error/clean-errors.js +50 -0
  186. package/dist/hooks/init/welcome.js +72 -1
  187. package/dist/hooks/prerun/validate-brv-config-version.d.ts +28 -0
  188. package/dist/hooks/prerun/validate-brv-config-version.js +43 -0
  189. package/dist/infra/cipher/agent-service-factory.d.ts +86 -0
  190. package/dist/infra/cipher/agent-service-factory.js +212 -0
  191. package/dist/infra/cipher/blob/blob-storage-factory.d.ts +13 -0
  192. package/dist/infra/cipher/blob/blob-storage-factory.js +14 -0
  193. package/dist/infra/cipher/blob/index.d.ts +10 -0
  194. package/dist/infra/cipher/blob/index.js +12 -0
  195. package/dist/infra/cipher/blob/migrations.d.ts +63 -0
  196. package/dist/infra/cipher/blob/migrations.js +148 -0
  197. package/dist/infra/cipher/blob/sqlite-blob-storage.d.ts +82 -0
  198. package/dist/infra/cipher/blob/sqlite-blob-storage.js +307 -0
  199. package/dist/infra/cipher/cipher-agent-state-manager.d.ts +63 -0
  200. package/dist/infra/cipher/cipher-agent-state-manager.js +108 -0
  201. package/dist/infra/cipher/cipher-agent.d.ts +182 -0
  202. package/dist/infra/cipher/cipher-agent.js +317 -0
  203. package/dist/infra/cipher/command-parser.d.ts +23 -0
  204. package/dist/infra/cipher/command-parser.js +85 -0
  205. package/dist/infra/cipher/display/todo-display.d.ts +23 -0
  206. package/dist/infra/cipher/display/todo-display.js +129 -0
  207. package/dist/infra/cipher/events/event-emitter.d.ts +137 -0
  208. package/dist/infra/cipher/events/event-emitter.js +158 -0
  209. package/dist/infra/cipher/exit-codes.d.ts +44 -0
  210. package/dist/infra/cipher/exit-codes.js +58 -0
  211. package/dist/infra/cipher/file-system/file-system-service.d.ts +105 -0
  212. package/dist/infra/cipher/file-system/file-system-service.js +641 -0
  213. package/dist/infra/cipher/file-system/gitignore-filter.d.ts +77 -0
  214. package/dist/infra/cipher/file-system/gitignore-filter.js +120 -0
  215. package/dist/infra/cipher/file-system/glob-utils.d.ts +60 -0
  216. package/dist/infra/cipher/file-system/glob-utils.js +120 -0
  217. package/dist/infra/cipher/file-system/path-validator.d.ts +69 -0
  218. package/dist/infra/cipher/file-system/path-validator.js +184 -0
  219. package/dist/infra/cipher/grpc/internal-llm-grpc-service.d.ts +149 -0
  220. package/dist/infra/cipher/grpc/internal-llm-grpc-service.js +364 -0
  221. package/dist/infra/cipher/grpc/internal-llm-grpc.proto +94 -0
  222. package/dist/infra/cipher/interactive-commands.d.ts +16 -0
  223. package/dist/infra/cipher/interactive-commands.js +198 -0
  224. package/dist/infra/cipher/interactive-loop.d.ts +24 -0
  225. package/dist/infra/cipher/interactive-loop.js +352 -0
  226. package/dist/infra/cipher/llm/context/async-mutex.d.ts +59 -0
  227. package/dist/infra/cipher/llm/context/async-mutex.js +92 -0
  228. package/dist/infra/cipher/llm/context/compression/index.d.ts +6 -0
  229. package/dist/infra/cipher/llm/context/compression/index.js +5 -0
  230. package/dist/infra/cipher/llm/context/compression/middle-removal.d.ts +40 -0
  231. package/dist/infra/cipher/llm/context/compression/middle-removal.js +76 -0
  232. package/dist/infra/cipher/llm/context/compression/oldest-removal.d.ts +38 -0
  233. package/dist/infra/cipher/llm/context/compression/oldest-removal.js +53 -0
  234. package/dist/infra/cipher/llm/context/compression/types.d.ts +36 -0
  235. package/dist/infra/cipher/llm/context/compression/types.js +1 -0
  236. package/dist/infra/cipher/llm/context/context-manager.d.ts +234 -0
  237. package/dist/infra/cipher/llm/context/context-manager.js +419 -0
  238. package/dist/infra/cipher/llm/context/index.d.ts +2 -0
  239. package/dist/infra/cipher/llm/context/index.js +2 -0
  240. package/dist/infra/cipher/llm/context/loop-detector.d.ts +125 -0
  241. package/dist/infra/cipher/llm/context/loop-detector.js +194 -0
  242. package/dist/infra/cipher/llm/context/utils.d.ts +17 -0
  243. package/dist/infra/cipher/llm/context/utils.js +89 -0
  244. package/dist/infra/cipher/llm/formatters/claude-formatter.d.ts +54 -0
  245. package/dist/infra/cipher/llm/formatters/claude-formatter.js +182 -0
  246. package/dist/infra/cipher/llm/formatters/gemini-formatter.d.ts +69 -0
  247. package/dist/infra/cipher/llm/formatters/gemini-formatter.js +253 -0
  248. package/dist/infra/cipher/llm/formatters/openrouter-formatter.d.ts +47 -0
  249. package/dist/infra/cipher/llm/formatters/openrouter-formatter.js +238 -0
  250. package/dist/infra/cipher/llm/generators/byterover-content-generator.d.ts +92 -0
  251. package/dist/infra/cipher/llm/generators/byterover-content-generator.js +211 -0
  252. package/dist/infra/cipher/llm/generators/index.d.ts +13 -0
  253. package/dist/infra/cipher/llm/generators/index.js +13 -0
  254. package/dist/infra/cipher/llm/generators/logging-content-generator.d.ts +104 -0
  255. package/dist/infra/cipher/llm/generators/logging-content-generator.js +182 -0
  256. package/dist/infra/cipher/llm/generators/openrouter-content-generator.d.ts +93 -0
  257. package/dist/infra/cipher/llm/generators/openrouter-content-generator.js +254 -0
  258. package/dist/infra/cipher/llm/generators/retryable-content-generator.d.ts +90 -0
  259. package/dist/infra/cipher/llm/generators/retryable-content-generator.js +157 -0
  260. package/dist/infra/cipher/llm/index.d.ts +9 -0
  261. package/dist/infra/cipher/llm/index.js +13 -0
  262. package/dist/infra/cipher/llm/internal-llm-service.d.ts +308 -0
  263. package/dist/infra/cipher/llm/internal-llm-service.js +724 -0
  264. package/dist/infra/cipher/llm/openrouter-llm-service.d.ts +183 -0
  265. package/dist/infra/cipher/llm/openrouter-llm-service.js +386 -0
  266. package/dist/infra/cipher/llm/response-validator.d.ts +89 -0
  267. package/dist/infra/cipher/llm/response-validator.js +157 -0
  268. package/dist/infra/cipher/llm/retry/index.d.ts +10 -0
  269. package/dist/infra/cipher/llm/retry/index.js +10 -0
  270. package/dist/infra/cipher/llm/retry/retry-policy.d.ts +74 -0
  271. package/dist/infra/cipher/llm/retry/retry-policy.js +146 -0
  272. package/dist/infra/cipher/llm/retry/retry-with-backoff.d.ts +113 -0
  273. package/dist/infra/cipher/llm/retry/retry-with-backoff.js +247 -0
  274. package/dist/infra/cipher/llm/thought-parser.d.ts +145 -0
  275. package/dist/infra/cipher/llm/thought-parser.js +190 -0
  276. package/dist/infra/cipher/llm/tokenizers/claude-tokenizer.d.ts +47 -0
  277. package/dist/infra/cipher/llm/tokenizers/claude-tokenizer.js +55 -0
  278. package/dist/infra/cipher/llm/tokenizers/default-tokenizer.d.ts +31 -0
  279. package/dist/infra/cipher/llm/tokenizers/default-tokenizer.js +38 -0
  280. package/dist/infra/cipher/llm/tokenizers/gemini-tokenizer.d.ts +37 -0
  281. package/dist/infra/cipher/llm/tokenizers/gemini-tokenizer.js +45 -0
  282. package/dist/infra/cipher/llm/tokenizers/openrouter-tokenizer.d.ts +29 -0
  283. package/dist/infra/cipher/llm/tokenizers/openrouter-tokenizer.js +37 -0
  284. package/dist/infra/cipher/llm/tool-output-processor.d.ts +117 -0
  285. package/dist/infra/cipher/llm/tool-output-processor.js +153 -0
  286. package/dist/infra/cipher/logger/console-logger.d.ts +42 -0
  287. package/dist/infra/cipher/logger/console-logger.js +63 -0
  288. package/dist/infra/cipher/logger/event-based-logger.d.ts +54 -0
  289. package/dist/infra/cipher/logger/event-based-logger.js +92 -0
  290. package/dist/infra/cipher/memory/index.d.ts +6 -0
  291. package/dist/infra/cipher/memory/index.js +7 -0
  292. package/dist/infra/cipher/memory/memory-manager.d.ts +136 -0
  293. package/dist/infra/cipher/memory/memory-manager.js +523 -0
  294. package/dist/infra/cipher/parsers/coding-agent-log-parser.d.ts +24 -0
  295. package/dist/infra/cipher/parsers/coding-agent-log-parser.js +51 -0
  296. package/dist/infra/cipher/process/command-validator.d.ts +59 -0
  297. package/dist/infra/cipher/process/command-validator.js +266 -0
  298. package/dist/infra/cipher/process/index.d.ts +8 -0
  299. package/dist/infra/cipher/process/index.js +8 -0
  300. package/dist/infra/cipher/process/process-service.d.ts +95 -0
  301. package/dist/infra/cipher/process/process-service.js +439 -0
  302. package/dist/infra/cipher/session/chat-session.d.ts +80 -0
  303. package/dist/infra/cipher/session/chat-session.js +165 -0
  304. package/dist/infra/cipher/session/index.d.ts +6 -0
  305. package/dist/infra/cipher/session/index.js +5 -0
  306. package/dist/infra/cipher/session/session-event-forwarder.d.ts +37 -0
  307. package/dist/infra/cipher/session/session-event-forwarder.js +83 -0
  308. package/dist/infra/cipher/session/session-manager.d.ts +109 -0
  309. package/dist/infra/cipher/session/session-manager.js +172 -0
  310. package/dist/infra/cipher/storage/blob-history-storage.d.ts +76 -0
  311. package/dist/infra/cipher/storage/blob-history-storage.js +178 -0
  312. package/dist/infra/cipher/system-prompt/simple-prompt-factory.d.ts +105 -0
  313. package/dist/infra/cipher/system-prompt/simple-prompt-factory.js +290 -0
  314. package/dist/infra/cipher/tools/core-tool-scheduler.d.ts +99 -0
  315. package/dist/infra/cipher/tools/core-tool-scheduler.js +161 -0
  316. package/dist/infra/cipher/tools/default-policy-rules.d.ts +26 -0
  317. package/dist/infra/cipher/tools/default-policy-rules.js +125 -0
  318. package/dist/infra/cipher/tools/implementations/bash-exec-tool.d.ts +12 -0
  319. package/dist/infra/cipher/tools/implementations/bash-exec-tool.js +93 -0
  320. package/dist/infra/cipher/tools/implementations/bash-output-tool.d.ts +12 -0
  321. package/dist/infra/cipher/tools/implementations/bash-output-tool.js +47 -0
  322. package/dist/infra/cipher/tools/implementations/create-knowledge-topic-tool.d.ts +11 -0
  323. package/dist/infra/cipher/tools/implementations/create-knowledge-topic-tool.js +142 -0
  324. package/dist/infra/cipher/tools/implementations/delete-memory-tool.d.ts +12 -0
  325. package/dist/infra/cipher/tools/implementations/delete-memory-tool.js +37 -0
  326. package/dist/infra/cipher/tools/implementations/detect-domains-tool.d.ts +7 -0
  327. package/dist/infra/cipher/tools/implementations/detect-domains-tool.js +73 -0
  328. package/dist/infra/cipher/tools/implementations/edit-file-tool.d.ts +13 -0
  329. package/dist/infra/cipher/tools/implementations/edit-file-tool.js +50 -0
  330. package/dist/infra/cipher/tools/implementations/edit-memory-tool.d.ts +13 -0
  331. package/dist/infra/cipher/tools/implementations/edit-memory-tool.js +53 -0
  332. package/dist/infra/cipher/tools/implementations/find-knowledge-topics-tool.d.ts +7 -0
  333. package/dist/infra/cipher/tools/implementations/find-knowledge-topics-tool.js +421 -0
  334. package/dist/infra/cipher/tools/implementations/glob-files-tool.d.ts +18 -0
  335. package/dist/infra/cipher/tools/implementations/glob-files-tool.js +70 -0
  336. package/dist/infra/cipher/tools/implementations/grep-content-tool.d.ts +12 -0
  337. package/dist/infra/cipher/tools/implementations/grep-content-tool.js +77 -0
  338. package/dist/infra/cipher/tools/implementations/kill-process-tool.d.ts +12 -0
  339. package/dist/infra/cipher/tools/implementations/kill-process-tool.js +55 -0
  340. package/dist/infra/cipher/tools/implementations/list-memories-tool.d.ts +12 -0
  341. package/dist/infra/cipher/tools/implementations/list-memories-tool.js +63 -0
  342. package/dist/infra/cipher/tools/implementations/read-file-tool.d.ts +12 -0
  343. package/dist/infra/cipher/tools/implementations/read-file-tool.js +54 -0
  344. package/dist/infra/cipher/tools/implementations/read-memory-tool.d.ts +12 -0
  345. package/dist/infra/cipher/tools/implementations/read-memory-tool.js +39 -0
  346. package/dist/infra/cipher/tools/implementations/search-history-tool.d.ts +10 -0
  347. package/dist/infra/cipher/tools/implementations/search-history-tool.js +36 -0
  348. package/dist/infra/cipher/tools/implementations/write-file-tool.d.ts +12 -0
  349. package/dist/infra/cipher/tools/implementations/write-file-tool.js +52 -0
  350. package/dist/infra/cipher/tools/implementations/write-memory-tool.d.ts +13 -0
  351. package/dist/infra/cipher/tools/implementations/write-memory-tool.js +52 -0
  352. package/dist/infra/cipher/tools/implementations/write-todos-tool.d.ts +10 -0
  353. package/dist/infra/cipher/tools/implementations/write-todos-tool.js +165 -0
  354. package/dist/infra/cipher/tools/index.d.ts +18 -0
  355. package/dist/infra/cipher/tools/index.js +19 -0
  356. package/dist/infra/cipher/tools/policy-engine.d.ts +80 -0
  357. package/dist/infra/cipher/tools/policy-engine.js +110 -0
  358. package/dist/infra/cipher/tools/tool-invocation-queue.d.ts +191 -0
  359. package/dist/infra/cipher/tools/tool-invocation-queue.js +254 -0
  360. package/dist/infra/cipher/tools/tool-invocation.d.ts +216 -0
  361. package/dist/infra/cipher/tools/tool-invocation.js +294 -0
  362. package/dist/infra/cipher/tools/tool-manager.d.ts +135 -0
  363. package/dist/infra/cipher/tools/tool-manager.js +209 -0
  364. package/dist/infra/cipher/tools/tool-markers.d.ts +48 -0
  365. package/dist/infra/cipher/tools/tool-markers.js +49 -0
  366. package/dist/infra/cipher/tools/tool-provider.d.ts +77 -0
  367. package/dist/infra/cipher/tools/tool-provider.js +196 -0
  368. package/dist/infra/cipher/tools/tool-registry.d.ts +52 -0
  369. package/dist/infra/cipher/tools/tool-registry.js +144 -0
  370. package/dist/infra/cipher/tools/utils/schema-converter.d.ts +10 -0
  371. package/dist/infra/cipher/tools/utils/schema-converter.js +29 -0
  372. package/dist/infra/cipher/validation/workspace-validator.d.ts +19 -0
  373. package/dist/infra/cipher/validation/workspace-validator.js +37 -0
  374. package/dist/infra/cipher/watcher/coding-agent-log-watcher.d.ts +14 -0
  375. package/dist/infra/cipher/watcher/coding-agent-log-watcher.js +55 -0
  376. package/dist/infra/cogit/context-tree-to-push-context-mapper.d.ts +21 -0
  377. package/dist/infra/cogit/context-tree-to-push-context-mapper.js +32 -0
  378. package/dist/infra/cogit/http-cogit-pull-service.d.ts +15 -0
  379. package/dist/infra/cogit/http-cogit-pull-service.js +30 -0
  380. package/dist/infra/cogit/http-cogit-push-service.d.ts +17 -0
  381. package/dist/infra/cogit/http-cogit-push-service.js +104 -0
  382. package/dist/infra/config/file-config-store.js +9 -3
  383. package/dist/infra/context-tree/file-context-file-reader.d.ts +14 -0
  384. package/dist/infra/context-tree/file-context-file-reader.js +46 -0
  385. package/dist/infra/context-tree/file-context-tree-service.d.ts +14 -0
  386. package/dist/infra/context-tree/file-context-tree-service.js +46 -0
  387. package/dist/infra/context-tree/file-context-tree-snapshot-service.d.ts +34 -0
  388. package/dist/infra/context-tree/file-context-tree-snapshot-service.js +117 -0
  389. package/dist/infra/context-tree/file-context-tree-writer-service.d.ts +22 -0
  390. package/dist/infra/context-tree/file-context-tree-writer-service.js +61 -0
  391. package/dist/infra/memory/http-memory-retrieval-service.js +2 -1
  392. package/dist/infra/memory/http-memory-storage-service.js +4 -3
  393. package/dist/infra/parsers/clean/clean-claude-service.d.ts +111 -0
  394. package/dist/infra/parsers/clean/clean-claude-service.js +271 -0
  395. package/dist/infra/parsers/clean/clean-codex-service.d.ts +231 -0
  396. package/dist/infra/parsers/clean/clean-codex-service.js +534 -0
  397. package/dist/infra/parsers/clean/clean-copilot-service.d.ts +255 -0
  398. package/dist/infra/parsers/clean/clean-copilot-service.js +729 -0
  399. package/dist/infra/parsers/clean/clean-cursor-service.d.ts +161 -0
  400. package/dist/infra/parsers/clean/clean-cursor-service.js +432 -0
  401. package/dist/infra/parsers/clean/clean-parser-service-factory.d.ts +54 -0
  402. package/dist/infra/parsers/clean/clean-parser-service-factory.js +80 -0
  403. package/dist/infra/parsers/clean/shared.d.ts +84 -0
  404. package/dist/infra/parsers/clean/shared.js +273 -0
  405. package/dist/infra/parsers/raw/raw-claude-service.d.ts +195 -0
  406. package/dist/infra/parsers/raw/raw-claude-service.js +548 -0
  407. package/dist/infra/parsers/raw/raw-codex-service.d.ts +313 -0
  408. package/dist/infra/parsers/raw/raw-codex-service.js +782 -0
  409. package/dist/infra/parsers/raw/raw-copilot-service.d.ts +196 -0
  410. package/dist/infra/parsers/raw/raw-copilot-service.js +558 -0
  411. package/dist/infra/parsers/raw/raw-cursor-service.d.ts +316 -0
  412. package/dist/infra/parsers/raw/raw-cursor-service.js +818 -0
  413. package/dist/infra/parsers/raw/raw-parser-service-factory.d.ts +54 -0
  414. package/dist/infra/parsers/raw/raw-parser-service-factory.js +81 -0
  415. package/dist/infra/space/http-space-service.js +2 -1
  416. package/dist/infra/team/http-team-service.js +2 -1
  417. package/dist/infra/user/http-user-service.js +2 -1
  418. package/dist/infra/watcher/file-watcher-service.d.ts +10 -0
  419. package/dist/infra/watcher/file-watcher-service.js +81 -0
  420. package/dist/infra/workspace/workspace-detector-service.d.ts +60 -0
  421. package/dist/infra/workspace/workspace-detector-service.js +165 -0
  422. package/dist/resources/prompts/curate-context-tree-curation.yml +48 -0
  423. package/dist/resources/prompts/modes/autonomous.yml +9 -0
  424. package/dist/resources/prompts/query-context-tree-retrieval.yml +49 -0
  425. package/dist/resources/prompts/reflection.yml +27 -0
  426. package/dist/resources/prompts/system-prompt.yml +82 -0
  427. package/dist/resources/prompts/tool-outputs.yml +30 -0
  428. package/dist/templates/README.md +6 -7
  429. package/dist/templates/sections/command-reference.md +40 -111
  430. package/dist/templates/sections/workflow.md +3 -30
  431. package/dist/utils/emoji-helpers.d.ts +38 -0
  432. package/dist/utils/emoji-helpers.js +42 -0
  433. package/dist/utils/error-handler.d.ts +51 -0
  434. package/dist/utils/error-handler.js +169 -0
  435. package/dist/utils/error-helpers.d.ts +30 -0
  436. package/dist/utils/error-helpers.js +47 -0
  437. package/dist/utils/file-helpers.d.ts +15 -0
  438. package/dist/utils/file-helpers.js +44 -0
  439. package/dist/utils/oclif-error-helpers.d.ts +40 -0
  440. package/dist/utils/oclif-error-helpers.js +46 -0
  441. package/dist/utils/tool-display-formatter.d.ts +53 -0
  442. package/dist/utils/tool-display-formatter.js +257 -0
  443. package/oclif.manifest.json +381 -141
  444. package/package.json +27 -6
  445. package/dist/commands/add.d.ts +0 -49
  446. package/dist/commands/add.js +0 -192
  447. package/dist/commands/complete.d.ts +0 -108
  448. package/dist/commands/complete.js +0 -340
  449. package/dist/commands/retrieve.d.ts +0 -26
  450. package/dist/commands/retrieve.js +0 -101
  451. package/dist/core/domain/entities/curator-output.d.ts +0 -14
  452. package/dist/core/domain/entities/curator-output.js +0 -23
  453. package/dist/core/domain/entities/delta-batch.d.ts +0 -30
  454. package/dist/core/domain/entities/delta-batch.js +0 -52
  455. package/dist/core/domain/entities/delta-operation.d.ts +0 -31
  456. package/dist/core/domain/entities/delta-operation.js +0 -50
  457. package/dist/core/domain/entities/executor-output.d.ts +0 -27
  458. package/dist/core/domain/entities/executor-output.js +0 -33
  459. package/dist/core/domain/entities/reflector-output.d.ts +0 -38
  460. package/dist/core/domain/entities/reflector-output.js +0 -44
  461. package/dist/core/interfaces/i-ace-prompt-builder.d.ts +0 -48
  462. package/dist/core/interfaces/i-bullet-content-store.d.ts +0 -36
  463. package/dist/core/interfaces/i-delta-store.d.ts +0 -15
  464. package/dist/core/interfaces/i-executor-output-store.d.ts +0 -14
  465. package/dist/core/interfaces/i-playbook-service.d.ts +0 -69
  466. package/dist/core/interfaces/i-playbook-store.d.ts +0 -38
  467. package/dist/core/interfaces/i-reflection-store.d.ts +0 -21
  468. package/dist/infra/ace/ace-file-utils.d.ts +0 -46
  469. package/dist/infra/ace/ace-file-utils.js +0 -83
  470. package/dist/infra/ace/ace-prompt-templates.d.ts +0 -13
  471. package/dist/infra/ace/ace-prompt-templates.js +0 -177
  472. package/dist/infra/ace/file-bullet-content-store.d.ts +0 -27
  473. package/dist/infra/ace/file-bullet-content-store.js +0 -89
  474. package/dist/infra/ace/file-delta-store.d.ts +0 -9
  475. package/dist/infra/ace/file-delta-store.js +0 -26
  476. package/dist/infra/ace/file-executor-output-store.d.ts +0 -9
  477. package/dist/infra/ace/file-executor-output-store.js +0 -26
  478. package/dist/infra/ace/file-playbook-store.d.ts +0 -29
  479. package/dist/infra/ace/file-playbook-store.js +0 -107
  480. package/dist/infra/ace/file-reflection-store.d.ts +0 -10
  481. package/dist/infra/ace/file-reflection-store.js +0 -55
  482. package/dist/infra/playbook/file-playbook-service.d.ts +0 -42
  483. package/dist/infra/playbook/file-playbook-service.js +0 -132
  484. /package/dist/core/{interfaces/i-ace-prompt-builder.js → domain/cipher/blob/types.js} +0 -0
  485. /package/dist/core/{interfaces/i-bullet-content-store.js → domain/cipher/file-system/types.js} +0 -0
  486. /package/dist/core/{interfaces/i-delta-store.js → domain/cipher/process/types.js} +0 -0
  487. /package/dist/core/{interfaces/i-executor-output-store.js → domain/cipher/session/types.js} +0 -0
  488. /package/dist/core/{interfaces/i-playbook-service.js → domain/cipher/storage/history-types.js} +0 -0
  489. /package/dist/core/{interfaces/i-playbook-store.js → domain/cipher/system-prompt/types.js} +0 -0
  490. /package/dist/core/{interfaces/i-reflection-store.js → domain/cipher/tools/types.js} +0 -0
@@ -0,0 +1,55 @@
1
+ import { z } from 'zod';
2
+ import { ToolName } from '../../../../core/domain/cipher/tools/constants.js';
3
+ /**
4
+ * Input schema for kill_process tool.
5
+ */
6
+ const KillProcessInputSchema = z
7
+ .object({
8
+ /**
9
+ * Unique process identifier from bash_exec.
10
+ */
11
+ processId: z.string().describe('Unique process identifier from bash_exec'),
12
+ })
13
+ .strict();
14
+ /**
15
+ * Create kill_process tool.
16
+ *
17
+ * Terminates a background process started by bash_exec.
18
+ * Uses graceful shutdown (SIGTERM) with escalation to SIGKILL after 5 seconds.
19
+ *
20
+ * @param processService - Process service for killing processes
21
+ * @returns kill_process tool instance
22
+ */
23
+ export function createKillProcessTool(processService) {
24
+ return {
25
+ description: `Terminate a background process started by bash_exec.
26
+
27
+ Features:
28
+ - Graceful shutdown: Sends SIGTERM first to allow cleanup
29
+ - Force kill: Escalates to SIGKILL after 5 seconds if still running
30
+ - Idempotent: Safe to call on already-terminated processes
31
+
32
+ Signal handling:
33
+ 1. Sends SIGTERM (allows process to cleanup gracefully)
34
+ 2. Waits 5 seconds
35
+ 3. Sends SIGKILL if process still running (force terminate)
36
+
37
+ Use cases:
38
+ - Stop long-running commands that are no longer needed
39
+ - Cancel background processes that are taking too long
40
+ - Clean up processes before starting new ones`,
41
+ async execute(input, _context) {
42
+ const { processId } = input;
43
+ // Kill process via process service
44
+ await processService.killProcess(processId);
45
+ // Return success confirmation
46
+ return {
47
+ message: `Process ${processId} terminated successfully`,
48
+ processId,
49
+ success: true,
50
+ };
51
+ },
52
+ id: ToolName.KILL_PROCESS,
53
+ inputSchema: KillProcessInputSchema,
54
+ };
55
+ }
@@ -0,0 +1,12 @@
1
+ import type { Tool } from '../../../../core/domain/cipher/tools/types.js';
2
+ import type { MemoryManager } from '../../memory/memory-manager.js';
3
+ /**
4
+ * Creates the list memories tool.
5
+ *
6
+ * Lists and filters memories stored in the scratch pad. Supports filtering by
7
+ * tags, pinned status, and source. Results are sorted by most recently updated first.
8
+ *
9
+ * @param memoryManager - Memory manager service dependency
10
+ * @returns Configured list memories tool
11
+ */
12
+ export declare function createListMemoriesTool(memoryManager: MemoryManager): Tool;
@@ -0,0 +1,63 @@
1
+ import { z } from 'zod';
2
+ import { ToolName } from '../../../../core/domain/cipher/tools/constants.js';
3
+ /**
4
+ * Input schema for list memories tool.
5
+ */
6
+ const ListMemoriesInputSchema = z
7
+ .object({
8
+ limit: z
9
+ .number()
10
+ .int()
11
+ .positive()
12
+ .optional()
13
+ .describe('Maximum number of memories to return'),
14
+ offset: z
15
+ .number()
16
+ .int()
17
+ .nonnegative()
18
+ .optional()
19
+ .describe('Number of memories to skip (for pagination)'),
20
+ pinned: z.boolean().optional().describe('Filter by pinned status'),
21
+ source: z
22
+ .enum(['agent', 'system', 'user'])
23
+ .optional()
24
+ .describe('Filter by source (default: agent)'),
25
+ })
26
+ .strict();
27
+ /**
28
+ * Creates the list memories tool.
29
+ *
30
+ * Lists and filters memories stored in the scratch pad. Supports filtering by
31
+ * tags, pinned status, and source. Results are sorted by most recently updated first.
32
+ *
33
+ * @param memoryManager - Memory manager service dependency
34
+ * @returns Configured list memories tool
35
+ */
36
+ export function createListMemoriesTool(memoryManager) {
37
+ return {
38
+ description: 'List and filter memories from the scratch pad. Returns memories sorted by most recent first. Use this to discover what context has been stored.',
39
+ async execute(input, _context) {
40
+ const { limit, offset, pinned, source } = input;
41
+ // List memories with filters
42
+ const memories = await memoryManager.list({
43
+ limit,
44
+ offset,
45
+ pinned,
46
+ source,
47
+ });
48
+ // Return formatted result with preview
49
+ return {
50
+ count: memories.length,
51
+ memories: memories.map(m => ({
52
+ contentPreview: m.content.length > 200 ? `${m.content.slice(0, 200)}...` : m.content,
53
+ createdAt: new Date(m.createdAt).toISOString(),
54
+ id: m.id,
55
+ pinned: m.metadata?.pinned ?? false,
56
+ updatedAt: new Date(m.updatedAt).toISOString(),
57
+ })),
58
+ };
59
+ },
60
+ id: ToolName.LIST_MEMORIES,
61
+ inputSchema: ListMemoriesInputSchema,
62
+ };
63
+ }
@@ -0,0 +1,12 @@
1
+ import type { Tool } from '../../../../core/domain/cipher/tools/types.js';
2
+ import type { IFileSystem } from '../../../../core/interfaces/cipher/i-file-system.js';
3
+ /**
4
+ * Creates the read file tool.
5
+ *
6
+ * Reads the contents of a file with optional pagination support.
7
+ * Supports offset (starting line) and limit (max lines) for large files.
8
+ *
9
+ * @param fileSystemService - File system service dependency
10
+ * @returns Configured read file tool
11
+ */
12
+ export declare function createReadFileTool(fileSystemService: IFileSystem): Tool;
@@ -0,0 +1,54 @@
1
+ import { z } from 'zod';
2
+ import { ToolName } from '../../../../core/domain/cipher/tools/constants.js';
3
+ /**
4
+ * Input schema for read file tool.
5
+ */
6
+ const ReadFileInputSchema = z
7
+ .object({
8
+ filePath: z.string().describe('Absolute path to the file to read'),
9
+ limit: z
10
+ .number()
11
+ .int()
12
+ .positive()
13
+ .optional()
14
+ .describe('Maximum number of lines to read (optional)'),
15
+ offset: z
16
+ .number()
17
+ .int()
18
+ .min(1)
19
+ .optional()
20
+ .describe('Starting line number (1-based, optional)'),
21
+ })
22
+ .strict();
23
+ /**
24
+ * Creates the read file tool.
25
+ *
26
+ * Reads the contents of a file with optional pagination support.
27
+ * Supports offset (starting line) and limit (max lines) for large files.
28
+ *
29
+ * @param fileSystemService - File system service dependency
30
+ * @returns Configured read file tool
31
+ */
32
+ export function createReadFileTool(fileSystemService) {
33
+ return {
34
+ description: 'Read the contents of a file. Supports pagination with offset (1-based line number) and limit (max lines).',
35
+ async execute(input, _context) {
36
+ const { filePath, limit, offset } = input;
37
+ // Call file system service
38
+ const result = await fileSystemService.readFile(filePath, {
39
+ limit,
40
+ offset,
41
+ });
42
+ // Return formatted result
43
+ return {
44
+ content: result.content,
45
+ encoding: result.encoding,
46
+ lines: result.lines,
47
+ size: result.size,
48
+ truncated: result.truncated,
49
+ };
50
+ },
51
+ id: ToolName.READ_FILE,
52
+ inputSchema: ReadFileInputSchema,
53
+ };
54
+ }
@@ -0,0 +1,12 @@
1
+ import type { Tool } from '../../../../core/domain/cipher/tools/types.js';
2
+ import type { MemoryManager } from '../../memory/memory-manager.js';
3
+ /**
4
+ * Read memory tool.
5
+ *
6
+ * Retrieves a specific memory by its ID. Use this to recall previously stored
7
+ * context, intermediate results, or findings from the scratch pad.
8
+ *
9
+ * @param memoryManager - Memory manager service dependency
10
+ * @returns Configured read memory tool
11
+ */
12
+ export declare function createReadMemoryTool(memoryManager: MemoryManager): Tool;
@@ -0,0 +1,39 @@
1
+ import { z } from 'zod';
2
+ import { ToolName } from '../../../../core/domain/cipher/tools/constants.js';
3
+ /**
4
+ * Input schema for read memory tool.
5
+ */
6
+ const ReadMemoryInputSchema = z
7
+ .object({
8
+ id: z.string().min(1).describe('Unique identifier of the memory to retrieve'),
9
+ })
10
+ .strict();
11
+ /**
12
+ * Read memory tool.
13
+ *
14
+ * Retrieves a specific memory by its ID. Use this to recall previously stored
15
+ * context, intermediate results, or findings from the scratch pad.
16
+ *
17
+ * @param memoryManager - Memory manager service dependency
18
+ * @returns Configured read memory tool
19
+ */
20
+ export function createReadMemoryTool(memoryManager) {
21
+ return {
22
+ description: 'Read a specific memory by ID. Use this to retrieve previously stored context, findings, or intermediate results from the scratch pad.',
23
+ async execute(input, _context) {
24
+ const { id } = input;
25
+ // Retrieve memory
26
+ const memory = await memoryManager.get(id);
27
+ // Return formatted result
28
+ return {
29
+ content: memory.content,
30
+ createdAt: new Date(memory.createdAt).toISOString(),
31
+ id: memory.id,
32
+ metadata: memory.metadata,
33
+ updatedAt: new Date(memory.updatedAt).toISOString(),
34
+ };
35
+ },
36
+ id: ToolName.READ_MEMORY,
37
+ inputSchema: ReadMemoryInputSchema,
38
+ };
39
+ }
@@ -0,0 +1,10 @@
1
+ import type { Tool } from '../../../../core/domain/cipher/tools/types.js';
2
+ /**
3
+ * Creates the search history tool.
4
+ *
5
+ * NOTE: This is a stub implementation. SearchService is not yet implemented.
6
+ * This tool will throw an error until the SearchService is available.
7
+ *
8
+ * @returns Configured search history tool (stub)
9
+ */
10
+ export declare function createSearchHistoryTool(): Tool;
@@ -0,0 +1,36 @@
1
+ import { z } from 'zod';
2
+ import { ToolName } from '../../../../core/domain/cipher/tools/constants.js';
3
+ /**
4
+ * Input schema for search history tool.
5
+ */
6
+ const SearchHistoryInputSchema = z
7
+ .object({
8
+ limit: z.number().optional().default(20).describe('Maximum number of results to return (default: 20)'),
9
+ mode: z
10
+ .enum(['messages', 'sessions'])
11
+ .describe('Search mode: "messages" searches for individual messages, "sessions" finds sessions containing the query'),
12
+ offset: z.number().optional().default(0).describe('Offset for pagination (default: 0)'),
13
+ query: z.string().describe('The search query to find in conversation history'),
14
+ role: z.enum(['user', 'assistant', 'system', 'tool']).optional().describe('Filter by message role (optional)'),
15
+ sessionId: z.string().optional().describe('Limit search to a specific session (optional)'),
16
+ })
17
+ .strict();
18
+ /**
19
+ * Creates the search history tool.
20
+ *
21
+ * NOTE: This is a stub implementation. SearchService is not yet implemented.
22
+ * This tool will throw an error until the SearchService is available.
23
+ *
24
+ * @returns Configured search history tool (stub)
25
+ */
26
+ export function createSearchHistoryTool() {
27
+ return {
28
+ description: 'Search conversation history. Supports searching messages or sessions. Can filter by role and session.',
29
+ async execute(_input, _context) {
30
+ // Stub implementation - SearchService not yet available
31
+ throw new Error('Search history tool is not yet implemented. This feature requires the SearchService which is not currently available.');
32
+ },
33
+ id: ToolName.SEARCH_HISTORY,
34
+ inputSchema: SearchHistoryInputSchema,
35
+ };
36
+ }
@@ -0,0 +1,12 @@
1
+ import type { Tool } from '../../../../core/domain/cipher/tools/types.js';
2
+ import type { IFileSystem } from '../../../../core/interfaces/cipher/i-file-system.js';
3
+ /**
4
+ * Creates the write file tool.
5
+ *
6
+ * Writes content to a file, overwriting if it exists.
7
+ * Can optionally create parent directories.
8
+ *
9
+ * @param fileSystemService - File system service dependency
10
+ * @returns Configured write file tool
11
+ */
12
+ export declare function createWriteFileTool(fileSystemService: IFileSystem): Tool;
@@ -0,0 +1,52 @@
1
+ import { z } from 'zod';
2
+ import { ToolName } from '../../../../core/domain/cipher/tools/constants.js';
3
+ import { sanitizeFolderName } from '../../../../utils/file-helpers.js';
4
+ /**
5
+ * Input schema for write file tool.
6
+ */
7
+ const WriteFileInputSchema = z
8
+ .object({
9
+ content: z.string().describe('Content to write to the file'),
10
+ createDirs: z
11
+ .boolean()
12
+ .optional()
13
+ .default(false)
14
+ .describe("Create parent directories if they don't exist (default: false)"),
15
+ encoding: z
16
+ .enum(['utf8', 'ascii', 'latin1', 'utf16le', 'base64', 'hex'])
17
+ .optional()
18
+ .default('utf8')
19
+ .describe('File encoding (default: utf8)'),
20
+ filePath: z.string().describe('Absolute path where the file should be written'),
21
+ })
22
+ .strict();
23
+ /**
24
+ * Creates the write file tool.
25
+ *
26
+ * Writes content to a file, overwriting if it exists.
27
+ * Can optionally create parent directories.
28
+ *
29
+ * @param fileSystemService - File system service dependency
30
+ * @returns Configured write file tool
31
+ */
32
+ export function createWriteFileTool(fileSystemService) {
33
+ return {
34
+ description: 'Write content to a file. Overwrites existing files. Can optionally create parent directories.',
35
+ async execute(input, _context) {
36
+ const { content, createDirs, encoding, filePath } = input;
37
+ // Call file system service
38
+ const result = await fileSystemService.writeFile(sanitizeFolderName(filePath), content, {
39
+ createDirs,
40
+ encoding: encoding,
41
+ });
42
+ // Return formatted result
43
+ return {
44
+ bytesWritten: result.bytesWritten,
45
+ path: result.path,
46
+ success: result.success,
47
+ };
48
+ },
49
+ id: ToolName.WRITE_FILE,
50
+ inputSchema: WriteFileInputSchema,
51
+ };
52
+ }
@@ -0,0 +1,13 @@
1
+ import type { Tool } from '../../../../core/domain/cipher/tools/types.js';
2
+ import type { MemoryManager } from '../../memory/memory-manager.js';
3
+ /**
4
+ * Creates the write memory tool.
5
+ *
6
+ * Stores content in the agent's memory as a scratch pad for maintaining context
7
+ * across tool invocations. Memories persist across sessions and can be tagged
8
+ * for organization.
9
+ *
10
+ * @param memoryManager - Memory manager service dependency
11
+ * @returns Configured write memory tool
12
+ */
13
+ export declare function createWriteMemoryTool(memoryManager: MemoryManager): Tool;
@@ -0,0 +1,52 @@
1
+ import { z } from 'zod';
2
+ import { ToolName } from '../../../../core/domain/cipher/tools/constants.js';
3
+ /**
4
+ * Input schema for write memory tool.
5
+ */
6
+ const WriteMemoryInputSchema = z
7
+ .object({
8
+ content: z
9
+ .string()
10
+ .min(1, 'Memory content cannot be empty')
11
+ .max(10_000, 'Memory content cannot exceed 10,000 characters')
12
+ .describe('The content to store in memory'),
13
+ pinned: z
14
+ .boolean()
15
+ .optional()
16
+ .describe('Whether to pin this memory for auto-loading (default: false)'),
17
+ })
18
+ .strict();
19
+ /**
20
+ * Creates the write memory tool.
21
+ *
22
+ * Stores content in the agent's memory as a scratch pad for maintaining context
23
+ * across tool invocations. Memories persist across sessions and can be tagged
24
+ * for organization.
25
+ *
26
+ * @param memoryManager - Memory manager service dependency
27
+ * @returns Configured write memory tool
28
+ */
29
+ export function createWriteMemoryTool(memoryManager) {
30
+ return {
31
+ description: 'Write content to agent memory as a scratch pad. Use this to store intermediate results, findings, or context that should persist across tool calls. Memories can be tagged and pinned for easy retrieval.',
32
+ async execute(input, _context) {
33
+ const { content, pinned } = input;
34
+ // Create memory with agent source
35
+ const memory = await memoryManager.create({
36
+ content,
37
+ metadata: {
38
+ pinned: pinned ?? false,
39
+ source: 'agent',
40
+ },
41
+ });
42
+ // Return formatted result
43
+ return {
44
+ content: memory.content,
45
+ createdAt: new Date(memory.createdAt).toISOString(),
46
+ id: memory.id,
47
+ };
48
+ },
49
+ id: ToolName.WRITE_MEMORY,
50
+ inputSchema: WriteMemoryInputSchema,
51
+ };
52
+ }
@@ -0,0 +1,10 @@
1
+ import type { Tool } from '../../../../core/domain/cipher/tools/types.js';
2
+ /**
3
+ * Creates the write todos tool.
4
+ *
5
+ * Manages a structured task list for planning-based execution.
6
+ * Validates that only one task is in_progress at any time.
7
+ *
8
+ * @returns Configured write todos tool
9
+ */
10
+ export declare function createWriteTodosTool(): Tool;
@@ -0,0 +1,165 @@
1
+ import { z } from 'zod';
2
+ import { TODO_STATUSES } from '../../../../core/domain/cipher/todos/types.js';
3
+ import { ToolName } from '../../../../core/domain/cipher/tools/constants.js';
4
+ /**
5
+ * Schema for a single todo item.
6
+ */
7
+ const TodoSchema = z.object({
8
+ activeForm: z
9
+ .string()
10
+ .min(1)
11
+ .describe('Present continuous form shown during execution (e.g., "Running tests")'),
12
+ content: z.string().min(1).describe('Imperative description of the task (e.g., "Run tests")'),
13
+ status: z
14
+ .enum(TODO_STATUSES)
15
+ .describe('Task status: pending, in_progress (only ONE at a time), completed, or cancelled'),
16
+ });
17
+ /**
18
+ * Input schema for write todos tool.
19
+ */
20
+ const WriteTodosInputSchema = z
21
+ .object({
22
+ todos: z.array(TodoSchema).min(1).describe('List of todo items to track'),
23
+ })
24
+ .strict();
25
+ /**
26
+ * Tool description with detailed usage guidance.
27
+ * This helps the LLM understand when to use the tool and how.
28
+ */
29
+ const TOOL_DESCRIPTION = `Use this tool to create and manage a structured task list for the current session. This helps track progress, organize complex tasks, and demonstrate thoroughness to the user.
30
+
31
+ ## When to Use This Tool
32
+ Use this tool proactively in these scenarios:
33
+
34
+ 1. **Complex multi-step tasks** - When a task requires 3 or more distinct steps
35
+ 2. **Non-trivial and complex tasks** - Tasks that require careful planning or multiple operations
36
+ 3. **User explicitly requests todo list** - When the user directly asks to use the todo list
37
+ 4. **User provides multiple tasks** - When users provide a list of things to be done
38
+ 5. **After receiving new instructions** - Immediately capture user requirements as todos
39
+ 6. **When you start working on a task** - Mark it as in_progress BEFORE beginning work
40
+ 7. **After completing a task** - Mark it as completed and add any follow-up tasks
41
+
42
+ ## When NOT to Use This Tool
43
+ Skip using this tool when:
44
+ 1. There is only a single, straightforward task
45
+ 2. The task is trivial and tracking provides no organizational benefit
46
+ 3. The task can be completed in less than 3 trivial steps
47
+ 4. The task is purely conversational or informational
48
+
49
+ ## Task States
50
+ - **pending**: Task not yet started
51
+ - **in_progress**: Currently working on (limit to ONE task at a time)
52
+ - **completed**: Task finished successfully
53
+ - **cancelled**: Task no longer needed
54
+
55
+ ## Important Rules
56
+ - ONLY ONE task can be "in_progress" at any time
57
+ - Mark tasks complete IMMEDIATELY after finishing (don't batch completions)
58
+ - Task descriptions need both forms:
59
+ - content: Imperative form (e.g., "Run tests")
60
+ - activeForm: Present continuous form (e.g., "Running tests")`;
61
+ /**
62
+ * Validates that only one todo is in_progress.
63
+ *
64
+ * @param todos - Array of todos to validate
65
+ * @returns Error message if invalid, null if valid
66
+ */
67
+ function validateSingleInProgress(todos) {
68
+ const inProgressCount = todos.filter((todo) => todo.status === 'in_progress').length;
69
+ if (inProgressCount > 1) {
70
+ return `Invalid parameters: Only one task can be "in_progress" at a time. Found ${inProgressCount} tasks in progress.`;
71
+ }
72
+ return null;
73
+ }
74
+ /**
75
+ * Formats the todo list for LLM response.
76
+ *
77
+ * @param todos - Array of todos
78
+ * @returns Formatted string representation
79
+ */
80
+ function formatTodosForLLM(todos) {
81
+ const lines = ['Todo list updated:'];
82
+ for (const todo of todos) {
83
+ const statusIcon = getStatusIcon(todo.status);
84
+ lines.push(`${statusIcon} [${todo.status}] ${todo.content}`);
85
+ }
86
+ const stats = getTodoStats(todos);
87
+ const progressLines = [
88
+ '',
89
+ `Progress: ${stats.completed}/${stats.total} completed`,
90
+ ];
91
+ if (stats.inProgress > 0) {
92
+ const currentTask = todos.find((t) => t.status === 'in_progress');
93
+ if (currentTask) {
94
+ progressLines.push(`Currently: ${currentTask.activeForm}`);
95
+ }
96
+ }
97
+ return [...lines, ...progressLines].join('\n');
98
+ }
99
+ /**
100
+ * Gets icon for todo status.
101
+ *
102
+ * @param status - Todo status
103
+ * @returns Status icon
104
+ */
105
+ function getStatusIcon(status) {
106
+ switch (status) {
107
+ case 'cancelled': {
108
+ return '⊘';
109
+ }
110
+ case 'completed': {
111
+ return '✓';
112
+ }
113
+ case 'in_progress': {
114
+ return '→';
115
+ }
116
+ case 'pending': {
117
+ return '○';
118
+ }
119
+ }
120
+ }
121
+ /**
122
+ * Gets statistics about the todo list.
123
+ *
124
+ * @param todos - Array of todos
125
+ * @returns Statistics object
126
+ */
127
+ function getTodoStats(todos) {
128
+ return {
129
+ cancelled: todos.filter((t) => t.status === 'cancelled').length,
130
+ completed: todos.filter((t) => t.status === 'completed').length,
131
+ inProgress: todos.filter((t) => t.status === 'in_progress').length,
132
+ pending: todos.filter((t) => t.status === 'pending').length,
133
+ total: todos.length,
134
+ };
135
+ }
136
+ /**
137
+ * Creates the write todos tool.
138
+ *
139
+ * Manages a structured task list for planning-based execution.
140
+ * Validates that only one task is in_progress at any time.
141
+ *
142
+ * @returns Configured write todos tool
143
+ */
144
+ export function createWriteTodosTool() {
145
+ return {
146
+ description: TOOL_DESCRIPTION,
147
+ async execute(input, _context) {
148
+ const { todos } = input;
149
+ // Validate only one in_progress
150
+ const validationError = validateSingleInProgress(todos);
151
+ if (validationError) {
152
+ return validationError;
153
+ }
154
+ // Format response for LLM
155
+ const llmContent = formatTodosForLLM(todos);
156
+ // Return both LLM content and display content
157
+ return {
158
+ llmContent,
159
+ returnDisplay: { todos },
160
+ };
161
+ },
162
+ id: ToolName.WRITE_TODOS,
163
+ inputSchema: WriteTodosInputSchema,
164
+ };
165
+ }
@@ -0,0 +1,18 @@
1
+ export { ToolError, ToolExecutionError, ToolNotFoundError, ToolProviderNotInitializedError, ToolValidationError, } from '../../../core/domain/cipher/errors/tool-error.js';
2
+ export { ToolName } from '../../../core/domain/cipher/tools/constants.js';
3
+ export type { KnownTool } from '../../../core/domain/cipher/tools/constants.js';
4
+ export type { JSONSchema7, Tool, ToolExecutionContext, ToolSet } from '../../../core/domain/cipher/tools/types.js';
5
+ export type { IToolProvider } from '../../../core/interfaces/cipher/i-tool-provider.js';
6
+ export { createCreateKnowledgeTopicTool } from './implementations/create-knowledge-topic-tool.js';
7
+ export { createDetectDomainsTool } from './implementations/detect-domains-tool.js';
8
+ export { createEditFileTool } from './implementations/edit-file-tool.js';
9
+ export { createGlobFilesTool } from './implementations/glob-files-tool.js';
10
+ export { createGrepContentTool } from './implementations/grep-content-tool.js';
11
+ export { createReadFileTool } from './implementations/read-file-tool.js';
12
+ export { createSearchHistoryTool } from './implementations/search-history-tool.js';
13
+ export { createWriteFileTool } from './implementations/write-file-tool.js';
14
+ export { ToolManager } from './tool-manager.js';
15
+ export { ToolProvider } from './tool-provider.js';
16
+ export type { ToolFactory, ToolRegistryEntry, ToolServices } from './tool-registry.js';
17
+ export { TOOL_REGISTRY } from './tool-registry.js';
18
+ export { convertZodToJsonSchema } from './utils/schema-converter.js';
@@ -0,0 +1,19 @@
1
+ // Errors
2
+ export { ToolError, ToolExecutionError, ToolNotFoundError, ToolProviderNotInitializedError, ToolValidationError, } from '../../../core/domain/cipher/errors/tool-error.js';
3
+ // Constants
4
+ export { ToolName } from '../../../core/domain/cipher/tools/constants.js';
5
+ // Tool implementations (for direct access if needed)
6
+ export { createCreateKnowledgeTopicTool } from './implementations/create-knowledge-topic-tool.js';
7
+ export { createDetectDomainsTool } from './implementations/detect-domains-tool.js';
8
+ export { createEditFileTool } from './implementations/edit-file-tool.js';
9
+ export { createGlobFilesTool } from './implementations/glob-files-tool.js';
10
+ export { createGrepContentTool } from './implementations/grep-content-tool.js';
11
+ export { createReadFileTool } from './implementations/read-file-tool.js';
12
+ export { createSearchHistoryTool } from './implementations/search-history-tool.js';
13
+ export { createWriteFileTool } from './implementations/write-file-tool.js';
14
+ // Registry and provider
15
+ export { ToolManager } from './tool-manager.js';
16
+ export { ToolProvider } from './tool-provider.js';
17
+ export { TOOL_REGISTRY } from './tool-registry.js';
18
+ // Utilities
19
+ export { convertZodToJsonSchema } from './utils/schema-converter.js';