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,216 @@
1
+ /**
2
+ * Tool Invocation Builder Pattern
3
+ *
4
+ * Implements a two-phase tool execution architecture:
5
+ * 1. Builder Phase: Validate tool call and build invocation
6
+ * 2. Invocation Phase: Execute the validated invocation
7
+ *
8
+ * This separation enables:
9
+ * - Early validation before execution
10
+ * - Queuing of validated invocations
11
+ * - Retry logic without re-validation
12
+ * - Better error handling and debugging
13
+ */
14
+ import type { Tool, ToolExecutionContext } from '../../../core/domain/cipher/tools/types.js';
15
+ import { ToolError } from '../../../core/domain/cipher/tools/tool-error.js';
16
+ /**
17
+ * Status of a tool invocation.
18
+ *
19
+ * Simplified for autonomous execution - no AWAITING_APPROVAL or CANCELLED states.
20
+ * Added DENIED for policy rejections.
21
+ */
22
+ export declare enum ToolInvocationStatus {
23
+ /**
24
+ * Invocation completed successfully
25
+ */
26
+ COMPLETED = "COMPLETED",
27
+ /**
28
+ * Invocation was denied by policy
29
+ */
30
+ DENIED = "DENIED",
31
+ /**
32
+ * Invocation failed with error
33
+ */
34
+ ERROR = "ERROR",
35
+ /**
36
+ * Invocation is currently executing
37
+ */
38
+ EXECUTING = "EXECUTING",
39
+ /**
40
+ * Invocation is scheduled for execution
41
+ */
42
+ SCHEDULED = "SCHEDULED",
43
+ /**
44
+ * Invocation is validating (builder phase)
45
+ */
46
+ VALIDATING = "VALIDATING"
47
+ }
48
+ /**
49
+ * Result from tool invocation execution
50
+ */
51
+ export interface ToolInvocationResult {
52
+ /**
53
+ * Duration of execution in milliseconds
54
+ */
55
+ durationMs: number;
56
+ /**
57
+ * Error if execution failed
58
+ */
59
+ error?: ToolError;
60
+ /**
61
+ * Execution result (if successful)
62
+ */
63
+ result?: unknown;
64
+ /**
65
+ * Final status after execution
66
+ */
67
+ status: ToolInvocationStatus;
68
+ /**
69
+ * Timestamp when execution completed
70
+ */
71
+ timestamp: number;
72
+ }
73
+ /**
74
+ * Options for creating a tool invocation
75
+ */
76
+ export interface ToolInvocationOptions {
77
+ /**
78
+ * Validated tool arguments
79
+ */
80
+ args: Record<string, unknown>;
81
+ /**
82
+ * Execution context (sessionId, etc.)
83
+ */
84
+ context: ToolExecutionContext;
85
+ /**
86
+ * Unique identifier for this invocation
87
+ */
88
+ id: string;
89
+ /**
90
+ * Tool instance
91
+ */
92
+ tool: Tool;
93
+ /**
94
+ * Tool name
95
+ */
96
+ toolName: string;
97
+ }
98
+ /**
99
+ * Validated tool invocation ready for execution
100
+ *
101
+ * Contains all information needed to execute a tool call:
102
+ * - Tool reference and metadata
103
+ * - Validated arguments
104
+ * - Execution context
105
+ * - Status tracking
106
+ */
107
+ export declare class ToolInvocation {
108
+ /**
109
+ * Validated tool arguments
110
+ */
111
+ readonly args: Record<string, unknown>;
112
+ /**
113
+ * Execution context (sessionId, etc.)
114
+ */
115
+ readonly context: ToolExecutionContext;
116
+ /**
117
+ * Unique identifier for this invocation
118
+ */
119
+ readonly id: string;
120
+ /**
121
+ * Tool instance
122
+ */
123
+ readonly tool: Tool;
124
+ /**
125
+ * Tool name
126
+ */
127
+ readonly toolName: string;
128
+ /**
129
+ * Current status
130
+ */
131
+ private _status;
132
+ /**
133
+ * Timestamp when invocation was created
134
+ */
135
+ private readonly createdAt;
136
+ /**
137
+ * Create a new tool invocation
138
+ *
139
+ * @param options - Tool invocation options
140
+ */
141
+ constructor(options: ToolInvocationOptions);
142
+ /**
143
+ * Get current status
144
+ */
145
+ get status(): ToolInvocationStatus;
146
+ /**
147
+ * Mark this invocation as denied by policy.
148
+ *
149
+ * Can only deny if not yet executing or completed.
150
+ *
151
+ * @returns True if denied, false if already executing/completed
152
+ */
153
+ deny(): boolean;
154
+ /**
155
+ * Execute this invocation
156
+ *
157
+ * Transitions through states:
158
+ * SCHEDULED -> EXECUTING -> COMPLETED/ERROR
159
+ *
160
+ * @returns Execution result
161
+ */
162
+ execute(): Promise<ToolInvocationResult>;
163
+ /**
164
+ * Get age of this invocation in milliseconds
165
+ */
166
+ getAge(): number;
167
+ /**
168
+ * Check if invocation can be executed
169
+ */
170
+ isExecutable(): boolean;
171
+ }
172
+ /**
173
+ * Builder for creating validated tool invocations
174
+ *
175
+ * Validates tool existence, arguments, and builds executable invocations.
176
+ * Separates validation concerns from execution.
177
+ */
178
+ export declare class ToolInvocationBuilder {
179
+ /**
180
+ * Map of tool name to tool instance
181
+ */
182
+ private readonly tools;
183
+ /**
184
+ * Create a new tool invocation builder
185
+ *
186
+ * @param tools - Map of available tools
187
+ */
188
+ constructor(tools: Map<string, Tool>);
189
+ /**
190
+ * Build and validate a tool invocation
191
+ *
192
+ * Performs validation:
193
+ * 1. Tool exists
194
+ * 2. Arguments match schema
195
+ * 3. Required parameters present
196
+ *
197
+ * @param id - Unique invocation ID (e.g., from LLM tool call)
198
+ * @param toolName - Name of tool to invoke
199
+ * @param args - Tool arguments
200
+ * @param context - Execution context
201
+ * @returns Validated tool invocation ready for execution
202
+ * @throws ToolError if validation fails
203
+ */
204
+ build(id: string, toolName: string, args: Record<string, unknown>, context?: ToolExecutionContext): ToolInvocation;
205
+ /**
206
+ * Validate tool arguments without building invocation
207
+ *
208
+ * Useful for pre-validation or dry-run checks.
209
+ *
210
+ * @param toolName - Name of tool
211
+ * @param args - Arguments to validate
212
+ * @returns True if valid
213
+ * @throws ToolError if validation fails
214
+ */
215
+ validate(toolName: string, args: Record<string, unknown>): boolean;
216
+ }
@@ -0,0 +1,294 @@
1
+ /**
2
+ * Tool Invocation Builder Pattern
3
+ *
4
+ * Implements a two-phase tool execution architecture:
5
+ * 1. Builder Phase: Validate tool call and build invocation
6
+ * 2. Invocation Phase: Execute the validated invocation
7
+ *
8
+ * This separation enables:
9
+ * - Early validation before execution
10
+ * - Queuing of validated invocations
11
+ * - Retry logic without re-validation
12
+ * - Better error handling and debugging
13
+ */
14
+ import { ToolError, ToolErrorType } from '../../../core/domain/cipher/tools/tool-error.js';
15
+ /**
16
+ * Status of a tool invocation.
17
+ *
18
+ * Simplified for autonomous execution - no AWAITING_APPROVAL or CANCELLED states.
19
+ * Added DENIED for policy rejections.
20
+ */
21
+ export var ToolInvocationStatus;
22
+ (function (ToolInvocationStatus) {
23
+ /**
24
+ * Invocation completed successfully
25
+ */
26
+ ToolInvocationStatus["COMPLETED"] = "COMPLETED";
27
+ /**
28
+ * Invocation was denied by policy
29
+ */
30
+ ToolInvocationStatus["DENIED"] = "DENIED";
31
+ /**
32
+ * Invocation failed with error
33
+ */
34
+ ToolInvocationStatus["ERROR"] = "ERROR";
35
+ /**
36
+ * Invocation is currently executing
37
+ */
38
+ ToolInvocationStatus["EXECUTING"] = "EXECUTING";
39
+ /**
40
+ * Invocation is scheduled for execution
41
+ */
42
+ ToolInvocationStatus["SCHEDULED"] = "SCHEDULED";
43
+ /**
44
+ * Invocation is validating (builder phase)
45
+ */
46
+ ToolInvocationStatus["VALIDATING"] = "VALIDATING";
47
+ })(ToolInvocationStatus || (ToolInvocationStatus = {}));
48
+ /**
49
+ * Validated tool invocation ready for execution
50
+ *
51
+ * Contains all information needed to execute a tool call:
52
+ * - Tool reference and metadata
53
+ * - Validated arguments
54
+ * - Execution context
55
+ * - Status tracking
56
+ */
57
+ export class ToolInvocation {
58
+ /**
59
+ * Validated tool arguments
60
+ */
61
+ args;
62
+ /**
63
+ * Execution context (sessionId, etc.)
64
+ */
65
+ context;
66
+ /**
67
+ * Unique identifier for this invocation
68
+ */
69
+ id;
70
+ /**
71
+ * Tool instance
72
+ */
73
+ tool;
74
+ /**
75
+ * Tool name
76
+ */
77
+ toolName;
78
+ /**
79
+ * Current status
80
+ */
81
+ _status = ToolInvocationStatus.SCHEDULED;
82
+ /**
83
+ * Timestamp when invocation was created
84
+ */
85
+ createdAt = Date.now();
86
+ /**
87
+ * Create a new tool invocation
88
+ *
89
+ * @param options - Tool invocation options
90
+ */
91
+ constructor(options) {
92
+ this.id = options.id;
93
+ this.toolName = options.toolName;
94
+ this.tool = options.tool;
95
+ this.args = options.args;
96
+ this.context = options.context;
97
+ }
98
+ /**
99
+ * Get current status
100
+ */
101
+ get status() {
102
+ return this._status;
103
+ }
104
+ /**
105
+ * Mark this invocation as denied by policy.
106
+ *
107
+ * Can only deny if not yet executing or completed.
108
+ *
109
+ * @returns True if denied, false if already executing/completed
110
+ */
111
+ deny() {
112
+ if (this._status === ToolInvocationStatus.EXECUTING ||
113
+ this._status === ToolInvocationStatus.COMPLETED ||
114
+ this._status === ToolInvocationStatus.ERROR ||
115
+ this._status === ToolInvocationStatus.DENIED) {
116
+ return false;
117
+ }
118
+ this._status = ToolInvocationStatus.DENIED;
119
+ return true;
120
+ }
121
+ /**
122
+ * Execute this invocation
123
+ *
124
+ * Transitions through states:
125
+ * SCHEDULED -> EXECUTING -> COMPLETED/ERROR
126
+ *
127
+ * @returns Execution result
128
+ */
129
+ async execute() {
130
+ // Check if invocation was denied by policy
131
+ if (this._status === ToolInvocationStatus.DENIED) {
132
+ return {
133
+ durationMs: 0,
134
+ error: new ToolError('Tool invocation was denied by policy', ToolErrorType.PERMISSION_DENIED, this.toolName),
135
+ status: ToolInvocationStatus.DENIED,
136
+ timestamp: Date.now(),
137
+ };
138
+ }
139
+ // Check if invocation is in executable state
140
+ if (this._status !== ToolInvocationStatus.SCHEDULED) {
141
+ return {
142
+ durationMs: 0,
143
+ error: new ToolError(`Cannot execute invocation in status: ${this._status}`, ToolErrorType.EXECUTION_FAILED, this.toolName),
144
+ status: this._status,
145
+ timestamp: Date.now(),
146
+ };
147
+ }
148
+ // Start execution
149
+ this._status = ToolInvocationStatus.EXECUTING;
150
+ const startTime = Date.now();
151
+ try {
152
+ // Execute tool with validated arguments
153
+ const result = await this.tool.execute(this.args, this.context);
154
+ // Mark as completed
155
+ this._status = ToolInvocationStatus.COMPLETED;
156
+ const durationMs = Date.now() - startTime;
157
+ return {
158
+ durationMs,
159
+ result,
160
+ status: ToolInvocationStatus.COMPLETED,
161
+ timestamp: Date.now(),
162
+ };
163
+ }
164
+ catch (error) {
165
+ // Mark as error
166
+ this._status = ToolInvocationStatus.ERROR;
167
+ const durationMs = Date.now() - startTime;
168
+ // Convert to ToolError
169
+ const toolError = error instanceof ToolError
170
+ ? error
171
+ : new ToolError(error instanceof Error ? error.message : String(error), ToolErrorType.EXECUTION_FAILED, this.toolName, { originalError: error instanceof Error ? error : undefined });
172
+ return {
173
+ durationMs,
174
+ error: toolError,
175
+ status: ToolInvocationStatus.ERROR,
176
+ timestamp: Date.now(),
177
+ };
178
+ }
179
+ }
180
+ /**
181
+ * Get age of this invocation in milliseconds
182
+ */
183
+ getAge() {
184
+ return Date.now() - this.createdAt;
185
+ }
186
+ /**
187
+ * Check if invocation can be executed
188
+ */
189
+ isExecutable() {
190
+ return this._status === ToolInvocationStatus.SCHEDULED;
191
+ }
192
+ }
193
+ /**
194
+ * Builder for creating validated tool invocations
195
+ *
196
+ * Validates tool existence, arguments, and builds executable invocations.
197
+ * Separates validation concerns from execution.
198
+ */
199
+ export class ToolInvocationBuilder {
200
+ /**
201
+ * Map of tool name to tool instance
202
+ */
203
+ tools;
204
+ /**
205
+ * Create a new tool invocation builder
206
+ *
207
+ * @param tools - Map of available tools
208
+ */
209
+ constructor(tools) {
210
+ this.tools = tools;
211
+ }
212
+ /**
213
+ * Build and validate a tool invocation
214
+ *
215
+ * Performs validation:
216
+ * 1. Tool exists
217
+ * 2. Arguments match schema
218
+ * 3. Required parameters present
219
+ *
220
+ * @param id - Unique invocation ID (e.g., from LLM tool call)
221
+ * @param toolName - Name of tool to invoke
222
+ * @param args - Tool arguments
223
+ * @param context - Execution context
224
+ * @returns Validated tool invocation ready for execution
225
+ * @throws ToolError if validation fails
226
+ */
227
+ build(id, toolName, args, context = {}) {
228
+ // Check tool exists
229
+ const tool = this.tools.get(toolName);
230
+ if (!tool) {
231
+ throw new ToolError(`Tool '${toolName}' not found`, ToolErrorType.TOOL_NOT_FOUND, toolName, {
232
+ context: {
233
+ availableTools: [...this.tools.keys()],
234
+ },
235
+ });
236
+ }
237
+ // Validate arguments against schema
238
+ try {
239
+ const validatedArgs = tool.inputSchema.parse(args);
240
+ // Create invocation with validated arguments
241
+ return new ToolInvocation({
242
+ args: validatedArgs,
243
+ context,
244
+ id,
245
+ tool,
246
+ toolName,
247
+ });
248
+ }
249
+ catch (error) {
250
+ // Handle Zod validation errors
251
+ if (error && typeof error === 'object' && 'errors' in error) {
252
+ const zodError = error;
253
+ const errorMessages = zodError.errors
254
+ .map((err) => `${err.path.join('.')}: ${err.message}`)
255
+ .join('; ');
256
+ throw new ToolError(`Invalid arguments: ${errorMessages}`, ToolErrorType.INVALID_PARAMS, toolName, { originalError: error instanceof Error ? error : undefined });
257
+ }
258
+ // Handle other validation errors
259
+ throw new ToolError(error instanceof Error ? error.message : String(error), ToolErrorType.PARAM_VALIDATION_FAILED, toolName, { originalError: error instanceof Error ? error : undefined });
260
+ }
261
+ }
262
+ /**
263
+ * Validate tool arguments without building invocation
264
+ *
265
+ * Useful for pre-validation or dry-run checks.
266
+ *
267
+ * @param toolName - Name of tool
268
+ * @param args - Arguments to validate
269
+ * @returns True if valid
270
+ * @throws ToolError if validation fails
271
+ */
272
+ validate(toolName, args) {
273
+ // Check tool exists
274
+ const tool = this.tools.get(toolName);
275
+ if (!tool) {
276
+ throw new ToolError(`Tool '${toolName}' not found`, ToolErrorType.TOOL_NOT_FOUND, toolName);
277
+ }
278
+ // Validate against schema
279
+ try {
280
+ tool.inputSchema.parse(args);
281
+ return true;
282
+ }
283
+ catch (error) {
284
+ if (error && typeof error === 'object' && 'errors' in error) {
285
+ const zodError = error;
286
+ const errorMessages = zodError.errors
287
+ .map((err) => `${err.path.join('.')}: ${err.message}`)
288
+ .join('; ');
289
+ throw new ToolError(`Invalid arguments: ${errorMessages}`, ToolErrorType.INVALID_PARAMS, toolName, { originalError: error instanceof Error ? error : undefined });
290
+ }
291
+ throw new ToolError(error instanceof Error ? error.message : String(error), ToolErrorType.PARAM_VALIDATION_FAILED, toolName, { originalError: error instanceof Error ? error : undefined });
292
+ }
293
+ }
294
+ }
@@ -0,0 +1,135 @@
1
+ import type { ToolSet } from '../../../core/domain/cipher/tools/types.js';
2
+ import type { IToolProvider } from '../../../core/interfaces/cipher/i-tool-provider.js';
3
+ import type { IToolScheduler } from '../../../core/interfaces/cipher/i-tool-scheduler.js';
4
+ import type { ToolMarker } from './tool-markers.js';
5
+ import { type ToolExecutionResult } from '../../../core/domain/cipher/tools/tool-error.js';
6
+ /**
7
+ * Tool Manager for CipherAgent
8
+ *
9
+ * Provides a clean interface for tool discovery and execution.
10
+ * Wraps ToolProvider with caching for improved performance.
11
+ *
12
+ * Features:
13
+ * - Optional scheduler integration for policy-based execution
14
+ * - Tool caching for performance
15
+ * - Structured error handling with classification
16
+ *
17
+ * When a scheduler is provided, tool execution flows through:
18
+ * 1. Policy check (ALLOW/DENY)
19
+ * 2. Execution (if allowed)
20
+ *
21
+ * Without a scheduler, tools execute directly via the provider.
22
+ */
23
+ export declare class ToolManager {
24
+ /**
25
+ * Read-only tools allowed for query operations
26
+ */
27
+ private static readonly QUERY_TOOL_NAMES;
28
+ private cacheValid;
29
+ private readonly scheduler?;
30
+ private readonly toolProvider;
31
+ private toolsCache;
32
+ /**
33
+ * Creates a new tool manager
34
+ *
35
+ * @param toolProvider - Tool provider instance
36
+ * @param scheduler - Optional tool scheduler for policy-based execution
37
+ */
38
+ constructor(toolProvider: IToolProvider, scheduler?: IToolScheduler);
39
+ /**
40
+ * Execute a tool by name with structured error handling.
41
+ *
42
+ * Returns a structured result that includes success status, content,
43
+ * error classification, and metadata. This enables better error handling
44
+ * and provides actionable feedback to the LLM.
45
+ *
46
+ * When a scheduler is configured, execution flows through:
47
+ * 1. Policy check (ALLOW/DENY)
48
+ * 2. Execution (if allowed)
49
+ *
50
+ * Without a scheduler, tools execute directly via the provider.
51
+ *
52
+ * @param toolName - Name of the tool to execute
53
+ * @param args - Tool arguments (validated by provider)
54
+ * @param sessionId - Optional session ID for context
55
+ * @returns Structured tool execution result
56
+ */
57
+ executeTool(toolName: string, args: Record<string, unknown>, sessionId?: string): Promise<ToolExecutionResult>;
58
+ /**
59
+ * Get all available tools in JSON Schema format.
60
+ * Results are cached for performance.
61
+ *
62
+ * @returns Tool set with JSON Schema definitions for LLM
63
+ */
64
+ getAllTools(): ToolSet;
65
+ /**
66
+ * Get all available tool markers from registered tools.
67
+ *
68
+ * @returns Set of tool marker strings
69
+ */
70
+ getAvailableMarkers(): Set<string>;
71
+ /**
72
+ * Get the count of registered tools.
73
+ *
74
+ * @returns Number of available tools
75
+ */
76
+ getToolCount(): number;
77
+ /**
78
+ * Get names of all registered tools.
79
+ *
80
+ * @returns Array of tool names
81
+ */
82
+ getToolNames(): string[];
83
+ /**
84
+ * Get filtered tool names based on command type.
85
+ * For 'query' command, returns only read-only discovery tools.
86
+ * For other commands, returns all tools.
87
+ *
88
+ * @param commandType - The command type ('add', 'query', etc.)
89
+ * @returns Array of filtered tool names
90
+ */
91
+ getToolNamesForCommand(commandType?: string): string[];
92
+ /**
93
+ * Get tool names that have a specific marker.
94
+ *
95
+ * @param marker - The tool marker to filter by
96
+ * @returns Array of tool names with the specified marker
97
+ */
98
+ getToolsByMarker(marker: ToolMarker): string[];
99
+ /**
100
+ * Get filtered tools based on command type.
101
+ * For 'query' command, returns only read-only discovery tools.
102
+ * For other commands, returns all tools.
103
+ *
104
+ * @param commandType - The command type ('add', 'query', etc.)
105
+ * @returns Filtered tool set with JSON Schema definitions
106
+ */
107
+ getToolsForCommand(commandType?: string): ToolSet;
108
+ /**
109
+ * Check if a tool exists.
110
+ *
111
+ * @param toolName - Name of the tool
112
+ * @returns True if the tool exists
113
+ */
114
+ hasTool(toolName: string): boolean;
115
+ /**
116
+ * Initialize the tool manager.
117
+ * Registers all available tools and invalidates cache.
118
+ */
119
+ initialize(): Promise<void>;
120
+ /**
121
+ * Refresh tool discovery.
122
+ * Invalidates the tool cache, forcing a rebuild on next getAllTools() call.
123
+ *
124
+ * Useful when:
125
+ * - Adding/removing tools dynamically (future)
126
+ * - MCP servers connect/disconnect (future)
127
+ * - Manual cache clearing needed
128
+ */
129
+ refresh(): void;
130
+ /**
131
+ * Invalidates the tool cache.
132
+ * Next call to getAllTools() will rebuild the cache.
133
+ */
134
+ private invalidateCache;
135
+ }