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,57 @@
1
+ /**
2
+ * Todo status values.
3
+ * Only ONE task can be "in_progress" at any time.
4
+ */
5
+ export declare const TODO_STATUSES: readonly ["pending", "in_progress", "completed", "cancelled"];
6
+ /**
7
+ * Union type of valid todo statuses.
8
+ */
9
+ export type TodoStatus = (typeof TODO_STATUSES)[number];
10
+ /**
11
+ * Represents a single todo item.
12
+ */
13
+ export interface Todo {
14
+ /**
15
+ * Present continuous form shown during execution.
16
+ * Example: "Running tests", "Building the project"
17
+ */
18
+ activeForm: string;
19
+ /**
20
+ * Imperative description of what needs to be done.
21
+ * Example: "Run tests", "Build the project"
22
+ */
23
+ content: string;
24
+ /**
25
+ * Current status of the todo.
26
+ * - pending: Not yet started
27
+ * - in_progress: Currently working on (only ONE at a time)
28
+ * - completed: Successfully finished
29
+ * - cancelled: No longer needed
30
+ */
31
+ status: TodoStatus;
32
+ }
33
+ /**
34
+ * List of todos maintained by the agent.
35
+ */
36
+ export interface TodoList {
37
+ /**
38
+ * All todo items.
39
+ */
40
+ todos: Todo[];
41
+ }
42
+ /**
43
+ * Result of write_todos tool execution.
44
+ * Contains both LLM-facing content and display-facing content.
45
+ */
46
+ export interface WriteTodosResult {
47
+ /**
48
+ * Content to send back to the LLM.
49
+ */
50
+ llmContent: string;
51
+ /**
52
+ * Display content for rendering to user.
53
+ */
54
+ returnDisplay: {
55
+ todos: Todo[];
56
+ };
57
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Todo status values.
3
+ * Only ONE task can be "in_progress" at any time.
4
+ */
5
+ export const TODO_STATUSES = ['pending', 'in_progress', 'completed', 'cancelled'];
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Known tool names.
3
+ * These constants ensure type safety and prevent typos.
4
+ */
5
+ export declare const ToolName: {
6
+ readonly BASH_EXEC: 'bash_exec';
7
+ readonly BASH_OUTPUT: 'bash_output';
8
+ readonly CREATE_KNOWLEDGE_TOPIC: 'create_knowledge_topic';
9
+ readonly DELETE_MEMORY: 'delete_memory';
10
+ readonly DETECT_DOMAINS: 'detect_domains';
11
+ readonly EDIT_FILE: 'edit_file';
12
+ readonly EDIT_MEMORY: 'edit_memory';
13
+ readonly FIND_KNOWLEDGE_TOPICS: 'find_knowledge_topics';
14
+ readonly GLOB_FILES: 'glob_files';
15
+ readonly GREP_CONTENT: 'grep_content';
16
+ readonly KILL_PROCESS: 'kill_process';
17
+ readonly LIST_MEMORIES: 'list_memories';
18
+ readonly READ_FILE: 'read_file';
19
+ readonly READ_MEMORY: 'read_memory';
20
+ readonly SEARCH_HISTORY: 'search_history';
21
+ readonly WRITE_FILE: 'write_file';
22
+ readonly WRITE_MEMORY: 'write_memory';
23
+ readonly WRITE_TODOS: 'write_todos';
24
+ };
25
+ /**
26
+ * Union type of all known tool names.
27
+ */
28
+ export type KnownTool = (typeof ToolName)[keyof typeof ToolName];
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Known tool names.
3
+ * These constants ensure type safety and prevent typos.
4
+ */
5
+ export const ToolName = {
6
+ BASH_EXEC: 'bash_exec',
7
+ BASH_OUTPUT: 'bash_output',
8
+ CREATE_KNOWLEDGE_TOPIC: 'create_knowledge_topic',
9
+ DELETE_MEMORY: 'delete_memory',
10
+ DETECT_DOMAINS: 'detect_domains',
11
+ EDIT_FILE: 'edit_file',
12
+ EDIT_MEMORY: 'edit_memory',
13
+ FIND_KNOWLEDGE_TOPICS: 'find_knowledge_topics',
14
+ GLOB_FILES: 'glob_files',
15
+ GREP_CONTENT: 'grep_content',
16
+ KILL_PROCESS: 'kill_process',
17
+ LIST_MEMORIES: 'list_memories',
18
+ READ_FILE: 'read_file',
19
+ READ_MEMORY: 'read_memory',
20
+ SEARCH_HISTORY: 'search_history',
21
+ WRITE_FILE: 'write_file',
22
+ WRITE_MEMORY: 'write_memory',
23
+ WRITE_TODOS: 'write_todos',
24
+ };
@@ -0,0 +1,183 @@
1
+ /**
2
+ * Tool Error Types and Classes
3
+ *
4
+ * Provides structured error classification for tool execution failures.
5
+ * Enables better error handling, debugging, and LLM guidance.
6
+ */
7
+ /**
8
+ * Enum of all possible tool error types.
9
+ * Each type represents a specific failure category.
10
+ */
11
+ export declare enum ToolErrorType {
12
+ CANCELLED = "CANCELLED",
13
+ CONFIRMATION_REJECTED = "CONFIRMATION_REJECTED",
14
+ EXECUTION_FAILED = "EXECUTION_FAILED",
15
+ INTERNAL_ERROR = "INTERNAL_ERROR",
16
+ INVALID_PARAM_TYPE = "INVALID_PARAM_TYPE",
17
+ INVALID_PARAMS = "INVALID_PARAMS",
18
+ MISSING_REQUIRED_PARAM = "MISSING_REQUIRED_PARAM",
19
+ PARAM_VALIDATION_FAILED = "PARAM_VALIDATION_FAILED",
20
+ PERMISSION_DENIED = "PERMISSION_DENIED",
21
+ PROVIDER_ERROR = "PROVIDER_ERROR",
22
+ TIMEOUT = "TIMEOUT",
23
+ TOOL_DISABLED = "TOOL_DISABLED",
24
+ TOOL_NOT_FOUND = "TOOL_NOT_FOUND"
25
+ }
26
+ /**
27
+ * Structured result from tool execution.
28
+ * Provides consistent format for both success and error cases.
29
+ */
30
+ export interface ToolExecutionResult {
31
+ /**
32
+ * Tool output content (any type - will be stringified by ToolOutputProcessor)
33
+ * For errors, contains error message formatted for LLM
34
+ */
35
+ content: unknown;
36
+ /**
37
+ * Detailed error message (only present on failure)
38
+ */
39
+ errorMessage?: string;
40
+ /**
41
+ * Error type classification (only present on failure)
42
+ */
43
+ errorType?: ToolErrorType;
44
+ /**
45
+ * Additional metadata about the execution
46
+ */
47
+ metadata?: {
48
+ /**
49
+ * Any other custom metadata
50
+ */
51
+ [key: string]: unknown;
52
+ /**
53
+ * Execution duration in milliseconds
54
+ */
55
+ durationMs?: number;
56
+ /**
57
+ * Original content length before truncation
58
+ */
59
+ originalLength?: number;
60
+ /**
61
+ * Path to file if output was saved
62
+ */
63
+ savedToFile?: string;
64
+ /**
65
+ * Token count for the result (if available)
66
+ */
67
+ tokensUsed?: number;
68
+ /**
69
+ * Whether output was truncated
70
+ */
71
+ truncated?: boolean;
72
+ };
73
+ /**
74
+ * Whether the tool executed successfully
75
+ */
76
+ success: boolean;
77
+ }
78
+ /**
79
+ * Options for creating a ToolError
80
+ */
81
+ export interface ToolErrorOptions {
82
+ /**
83
+ * Additional context about the error
84
+ */
85
+ context?: Record<string, unknown>;
86
+ /**
87
+ * Original error that caused the failure
88
+ */
89
+ originalError?: Error;
90
+ }
91
+ /**
92
+ * Structured error class for tool failures.
93
+ * Wraps error information with type classification.
94
+ */
95
+ export declare class ToolError extends Error {
96
+ /**
97
+ * Additional context about the error
98
+ */
99
+ readonly context?: Record<string, unknown>;
100
+ /**
101
+ * Original error that caused the failure (if any)
102
+ */
103
+ readonly originalError?: Error;
104
+ /**
105
+ * Name of the tool that failed
106
+ */
107
+ readonly toolName: string;
108
+ /**
109
+ * Classified error type
110
+ */
111
+ readonly type: ToolErrorType;
112
+ /**
113
+ * Create a new ToolError
114
+ *
115
+ * @param message - Human-readable error message
116
+ * @param type - Classified error type
117
+ * @param toolName - Name of the tool that failed
118
+ * @param options - Optional error context and original error
119
+ */
120
+ constructor(message: string, type: ToolErrorType, toolName: string, options?: ToolErrorOptions);
121
+ /**
122
+ * Convert error to JSON for serialization
123
+ */
124
+ toJSON(): Record<string, unknown>;
125
+ /**
126
+ * Format error message for LLM consumption
127
+ * Provides clear, actionable error information
128
+ */
129
+ toLLMMessage(): string;
130
+ }
131
+ /**
132
+ * Utility functions for error classification and handling
133
+ */
134
+ export declare class ToolErrorUtils {
135
+ /**
136
+ * Classify an unknown error into a ToolError
137
+ *
138
+ * @param error - Error to classify
139
+ * @param toolName - Name of the tool
140
+ * @returns Classified ToolError
141
+ */
142
+ static classify(error: unknown, toolName: string): ToolError;
143
+ /**
144
+ * Create an error result from a ToolError
145
+ *
146
+ * @param toolError - Tool error to convert
147
+ * @param metadata - Optional metadata
148
+ * @returns Error result
149
+ */
150
+ static createErrorResult(toolError: ToolError, metadata?: ToolExecutionResult['metadata']): ToolExecutionResult;
151
+ /**
152
+ * Create a success result
153
+ *
154
+ * Note: Content is passed through as-is (not stringified here).
155
+ * ToolOutputProcessor.stringify() handles proper JSON serialization later.
156
+ *
157
+ * @param content - Tool output content
158
+ * @param metadata - Optional metadata
159
+ * @returns Success result
160
+ */
161
+ static createSuccess(content: unknown, metadata?: ToolExecutionResult['metadata']): ToolExecutionResult;
162
+ /**
163
+ * Format error for LLM with specific guidance based on error type
164
+ *
165
+ * @param toolError - Tool error to format
166
+ * @returns Formatted error message for LLM
167
+ */
168
+ static formatForLLM(toolError: ToolError): string;
169
+ /**
170
+ * Check if an error is retryable
171
+ *
172
+ * @param toolError - Tool error to check
173
+ * @returns True if the error might succeed on retry
174
+ */
175
+ static isRetryable(toolError: ToolError): boolean;
176
+ /**
177
+ * Get actionable guidance for an error type
178
+ *
179
+ * @param errorType - Type of error
180
+ * @returns Guidance message or null
181
+ */
182
+ private static getGuidanceForErrorType;
183
+ }
@@ -0,0 +1,246 @@
1
+ /**
2
+ * Tool Error Types and Classes
3
+ *
4
+ * Provides structured error classification for tool execution failures.
5
+ * Enables better error handling, debugging, and LLM guidance.
6
+ */
7
+ /**
8
+ * Enum of all possible tool error types.
9
+ * Each type represents a specific failure category.
10
+ */
11
+ export var ToolErrorType;
12
+ (function (ToolErrorType) {
13
+ // Discovery errors - tool not found or unavailable
14
+ ToolErrorType["CANCELLED"] = "CANCELLED";
15
+ ToolErrorType["CONFIRMATION_REJECTED"] = "CONFIRMATION_REJECTED";
16
+ ToolErrorType["EXECUTION_FAILED"] = "EXECUTION_FAILED";
17
+ ToolErrorType["INTERNAL_ERROR"] = "INTERNAL_ERROR";
18
+ ToolErrorType["INVALID_PARAM_TYPE"] = "INVALID_PARAM_TYPE";
19
+ ToolErrorType["INVALID_PARAMS"] = "INVALID_PARAMS";
20
+ ToolErrorType["MISSING_REQUIRED_PARAM"] = "MISSING_REQUIRED_PARAM";
21
+ ToolErrorType["PARAM_VALIDATION_FAILED"] = "PARAM_VALIDATION_FAILED";
22
+ ToolErrorType["PERMISSION_DENIED"] = "PERMISSION_DENIED";
23
+ ToolErrorType["PROVIDER_ERROR"] = "PROVIDER_ERROR";
24
+ ToolErrorType["TIMEOUT"] = "TIMEOUT";
25
+ ToolErrorType["TOOL_DISABLED"] = "TOOL_DISABLED";
26
+ ToolErrorType["TOOL_NOT_FOUND"] = "TOOL_NOT_FOUND";
27
+ })(ToolErrorType || (ToolErrorType = {}));
28
+ /**
29
+ * Structured error class for tool failures.
30
+ * Wraps error information with type classification.
31
+ */
32
+ export class ToolError extends Error {
33
+ /**
34
+ * Additional context about the error
35
+ */
36
+ context;
37
+ /**
38
+ * Original error that caused the failure (if any)
39
+ */
40
+ originalError;
41
+ /**
42
+ * Name of the tool that failed
43
+ */
44
+ toolName;
45
+ /**
46
+ * Classified error type
47
+ */
48
+ type;
49
+ /**
50
+ * Create a new ToolError
51
+ *
52
+ * @param message - Human-readable error message
53
+ * @param type - Classified error type
54
+ * @param toolName - Name of the tool that failed
55
+ * @param options - Optional error context and original error
56
+ */
57
+ constructor(message, type, toolName, options) {
58
+ super(message);
59
+ this.name = 'ToolError';
60
+ this.type = type;
61
+ this.toolName = toolName;
62
+ this.originalError = options?.originalError;
63
+ this.context = options?.context;
64
+ // Maintain proper stack trace
65
+ if (Error.captureStackTrace) {
66
+ Error.captureStackTrace(this, ToolError);
67
+ }
68
+ }
69
+ /**
70
+ * Convert error to JSON for serialization
71
+ */
72
+ toJSON() {
73
+ return {
74
+ context: this.context,
75
+ message: this.message,
76
+ name: this.name,
77
+ originalError: this.originalError?.message,
78
+ toolName: this.toolName,
79
+ type: this.type,
80
+ };
81
+ }
82
+ /**
83
+ * Format error message for LLM consumption
84
+ * Provides clear, actionable error information
85
+ */
86
+ toLLMMessage() {
87
+ const parts = [
88
+ `Tool execution failed: ${this.toolName}`,
89
+ `Error type: ${this.type}`,
90
+ `Message: ${this.message}`,
91
+ ];
92
+ if (this.context && Object.keys(this.context).length > 0) {
93
+ parts.push(`Context: ${JSON.stringify(this.context)}`);
94
+ }
95
+ return parts.join('\n');
96
+ }
97
+ }
98
+ /**
99
+ * Utility functions for error classification and handling
100
+ */
101
+ export class ToolErrorUtils {
102
+ /**
103
+ * Classify an unknown error into a ToolError
104
+ *
105
+ * @param error - Error to classify
106
+ * @param toolName - Name of the tool
107
+ * @returns Classified ToolError
108
+ */
109
+ static classify(error, toolName) {
110
+ // Already a ToolError - return as-is
111
+ if (error instanceof ToolError) {
112
+ return error;
113
+ }
114
+ // Convert to ToolError with classification
115
+ if (error instanceof Error) {
116
+ const message = error.message.toLowerCase();
117
+ // Classify based on error message patterns
118
+ if (message.includes('not found') || message.includes('does not exist')) {
119
+ return new ToolError(error.message, ToolErrorType.TOOL_NOT_FOUND, toolName, { originalError: error });
120
+ }
121
+ if (message.includes('timeout') || message.includes('timed out')) {
122
+ return new ToolError(error.message, ToolErrorType.TIMEOUT, toolName, { originalError: error });
123
+ }
124
+ if (message.includes('permission') || message.includes('unauthorized') || message.includes('forbidden')) {
125
+ return new ToolError(error.message, ToolErrorType.PERMISSION_DENIED, toolName, { originalError: error });
126
+ }
127
+ if (message.includes('cancelled') || message.includes('abort')) {
128
+ return new ToolError(error.message, ToolErrorType.CANCELLED, toolName, { originalError: error });
129
+ }
130
+ if (message.includes('invalid') || message.includes('validation')) {
131
+ return new ToolError(error.message, ToolErrorType.INVALID_PARAMS, toolName, { originalError: error });
132
+ }
133
+ if (message.includes('required') || message.includes('missing')) {
134
+ return new ToolError(error.message, ToolErrorType.MISSING_REQUIRED_PARAM, toolName, { originalError: error });
135
+ }
136
+ // Default to execution failed
137
+ return new ToolError(error.message, ToolErrorType.EXECUTION_FAILED, toolName, { originalError: error });
138
+ }
139
+ // Non-Error object - wrap as internal error
140
+ return new ToolError(String(error), ToolErrorType.INTERNAL_ERROR, toolName, { context: { originalValue: error } });
141
+ }
142
+ /**
143
+ * Create an error result from a ToolError
144
+ *
145
+ * @param toolError - Tool error to convert
146
+ * @param metadata - Optional metadata
147
+ * @returns Error result
148
+ */
149
+ static createErrorResult(toolError, metadata) {
150
+ return {
151
+ content: toolError.toLLMMessage(),
152
+ errorMessage: toolError.message,
153
+ errorType: toolError.type,
154
+ metadata: {
155
+ ...metadata,
156
+ context: toolError.context,
157
+ originalError: toolError.originalError?.message,
158
+ },
159
+ success: false,
160
+ };
161
+ }
162
+ /**
163
+ * Create a success result
164
+ *
165
+ * Note: Content is passed through as-is (not stringified here).
166
+ * ToolOutputProcessor.stringify() handles proper JSON serialization later.
167
+ *
168
+ * @param content - Tool output content
169
+ * @param metadata - Optional metadata
170
+ * @returns Success result
171
+ */
172
+ static createSuccess(content, metadata) {
173
+ return {
174
+ content,
175
+ metadata,
176
+ success: true,
177
+ };
178
+ }
179
+ /**
180
+ * Format error for LLM with specific guidance based on error type
181
+ *
182
+ * @param toolError - Tool error to format
183
+ * @returns Formatted error message for LLM
184
+ */
185
+ static formatForLLM(toolError) {
186
+ const baseMessage = toolError.toLLMMessage();
187
+ // Add specific guidance based on error type
188
+ const guidance = this.getGuidanceForErrorType(toolError.type);
189
+ if (guidance) {
190
+ return `${baseMessage}\n\nGuidance: ${guidance}`;
191
+ }
192
+ return baseMessage;
193
+ }
194
+ /**
195
+ * Check if an error is retryable
196
+ *
197
+ * @param toolError - Tool error to check
198
+ * @returns True if the error might succeed on retry
199
+ */
200
+ static isRetryable(toolError) {
201
+ // Some error types should not be retried
202
+ const nonRetryableTypes = new Set([
203
+ ToolErrorType.CANCELLED,
204
+ ToolErrorType.CONFIRMATION_REJECTED,
205
+ ToolErrorType.EXECUTION_FAILED,
206
+ ToolErrorType.INVALID_PARAM_TYPE,
207
+ ToolErrorType.INVALID_PARAMS,
208
+ ToolErrorType.MISSING_REQUIRED_PARAM,
209
+ ToolErrorType.PARAM_VALIDATION_FAILED,
210
+ ToolErrorType.PERMISSION_DENIED,
211
+ ToolErrorType.TOOL_DISABLED,
212
+ ToolErrorType.TOOL_NOT_FOUND,
213
+ ]);
214
+ return !nonRetryableTypes.has(toolError.type);
215
+ }
216
+ /**
217
+ * Get actionable guidance for an error type
218
+ *
219
+ * @param errorType - Type of error
220
+ * @returns Guidance message or null
221
+ */
222
+ static getGuidanceForErrorType(errorType) {
223
+ switch (errorType) {
224
+ case ToolErrorType.EXECUTION_FAILED: {
225
+ return 'The tool encountered an error during execution. Review the error message and adjust your approach.';
226
+ }
227
+ case ToolErrorType.INVALID_PARAM_TYPE:
228
+ case ToolErrorType.INVALID_PARAMS:
229
+ case ToolErrorType.MISSING_REQUIRED_PARAM: {
230
+ return 'Check the tool schema and ensure all required parameters are provided with correct types.';
231
+ }
232
+ case ToolErrorType.PERMISSION_DENIED: {
233
+ return 'You do not have permission to execute this tool. Consider asking the user for permission.';
234
+ }
235
+ case ToolErrorType.TIMEOUT: {
236
+ return 'The tool execution timed out. Try breaking the task into smaller steps or use a different approach.';
237
+ }
238
+ case ToolErrorType.TOOL_NOT_FOUND: {
239
+ return 'The tool you requested does not exist. Use list_tools to see available tools.';
240
+ }
241
+ default: {
242
+ return null;
243
+ }
244
+ }
245
+ }
246
+ }
@@ -0,0 +1,145 @@
1
+ import type { ZodSchema } from 'zod';
2
+ /**
3
+ * Risk level for tool execution.
4
+ * Used for logging, auditing, and policy decisions.
5
+ */
6
+ export type RiskLevel = 'critical' | 'high' | 'low' | 'medium';
7
+ /**
8
+ * Semantic category for tools.
9
+ * Helps classify tools by their primary function.
10
+ */
11
+ export type ToolCategory = 'discovery' | 'execute' | 'memory' | 'read' | 'write';
12
+ /**
13
+ * Metadata about a tool execution.
14
+ * Computed dynamically based on tool arguments.
15
+ */
16
+ export interface ToolMetadata {
17
+ /**
18
+ * Files or directories that may be affected.
19
+ * Computed from tool arguments.
20
+ */
21
+ affectedLocations?: string[];
22
+ /**
23
+ * Semantic category of this tool.
24
+ */
25
+ category?: ToolCategory;
26
+ /**
27
+ * Risk level for this execution.
28
+ * Useful for logging and auditing.
29
+ */
30
+ riskLevel: RiskLevel;
31
+ }
32
+ /**
33
+ * Represents a tool that can be executed by the LLM.
34
+ * Tools are the primary way for the LLM to interact with the system.
35
+ */
36
+ export interface Tool {
37
+ /** Human-readable description of what the tool does */
38
+ description: string;
39
+ /**
40
+ * The actual function that executes the tool.
41
+ * Input is pre-validated against inputSchema before execution.
42
+ *
43
+ * @param input - Validated input parameters
44
+ * @param context - Optional execution context
45
+ * @returns Tool execution result
46
+ */
47
+ execute: (input: unknown, context?: ToolExecutionContext) => Promise<unknown> | unknown;
48
+ /**
49
+ * Optional: Get metadata about this tool execution.
50
+ * Used for logging, auditing, and policy decisions.
51
+ *
52
+ * @param args - The arguments being passed to the tool
53
+ * @returns Metadata about this execution
54
+ */
55
+ getMetadata?: (args: Record<string, unknown>) => ToolMetadata;
56
+ /** Unique identifier for the tool */
57
+ id: string;
58
+ /** Zod schema defining the input parameters - validated before execution */
59
+ inputSchema: ZodSchema;
60
+ }
61
+ /**
62
+ * Context provided to tools during execution.
63
+ * Contains metadata about the execution environment.
64
+ */
65
+ export interface ToolExecutionContext {
66
+ /** Session ID if available */
67
+ sessionId?: string;
68
+ }
69
+ /**
70
+ * Tool set exposed to the LLM.
71
+ * Maps tool names to their JSON Schema definitions for LLM consumption.
72
+ */
73
+ export interface ToolSet {
74
+ [toolName: string]: {
75
+ /** Human-readable description */
76
+ description?: string;
77
+ /** Tool name (same as key) */
78
+ name?: string;
79
+ /** JSON Schema v7 definition of parameters */
80
+ parameters: JSONSchema7;
81
+ };
82
+ }
83
+ /**
84
+ * JSON Schema v7 type definition.
85
+ * Simplified version for tool parameter schemas.
86
+ */
87
+ export interface JSONSchema7 {
88
+ $id?: string;
89
+ $ref?: string;
90
+ $schema?: string;
91
+ additionalItems?: boolean | JSONSchema7;
92
+ additionalProperties?: boolean | JSONSchema7;
93
+ allOf?: JSONSchema7[];
94
+ anyOf?: JSONSchema7[];
95
+ const?: unknown;
96
+ contains?: JSONSchema7;
97
+ contentEncoding?: string;
98
+ contentMediaType?: string;
99
+ default?: unknown;
100
+ definitions?: {
101
+ [key: string]: JSONSchema7;
102
+ };
103
+ dependencies?: {
104
+ [key: string]: JSONSchema7 | string[];
105
+ };
106
+ description?: string;
107
+ else?: JSONSchema7;
108
+ enum?: unknown[];
109
+ examples?: unknown[];
110
+ exclusiveMaximum?: number;
111
+ exclusiveMinimum?: number;
112
+ format?: string;
113
+ if?: JSONSchema7;
114
+ items?: JSONSchema7 | JSONSchema7[];
115
+ maximum?: number;
116
+ maxItems?: number;
117
+ maxLength?: number;
118
+ maxProperties?: number;
119
+ minimum?: number;
120
+ minItems?: number;
121
+ minLength?: number;
122
+ minProperties?: number;
123
+ multipleOf?: number;
124
+ not?: JSONSchema7;
125
+ oneOf?: JSONSchema7[];
126
+ pattern?: string;
127
+ patternProperties?: {
128
+ [key: string]: JSONSchema7;
129
+ };
130
+ properties?: {
131
+ [key: string]: JSONSchema7;
132
+ };
133
+ propertyNames?: JSONSchema7;
134
+ readOnly?: boolean;
135
+ required?: string[];
136
+ then?: JSONSchema7;
137
+ title?: string;
138
+ type?: JSONSchema7TypeName | JSONSchema7TypeName[];
139
+ uniqueItems?: boolean;
140
+ writeOnly?: boolean;
141
+ }
142
+ /**
143
+ * JSON Schema type names.
144
+ */
145
+ export type JSONSchema7TypeName = 'array' | 'boolean' | 'integer' | 'null' | 'number' | 'object' | 'string';