byterover-cli 0.2.1 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +63 -3
  18. package/dist/commands/init.js +285 -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,80 @@
1
+ /**
2
+ * Policy Engine Implementation.
3
+ *
4
+ * Rule-based ALLOW/DENY decisions for tool execution.
5
+ * Designed for autonomous execution without user confirmation.
6
+ *
7
+ * Rules are evaluated in order - first matching rule wins.
8
+ * If no rule matches, the default decision is used.
9
+ */
10
+ import type { IPolicyEngine, PolicyDecision, PolicyEvaluationResult, PolicyRule } from '../../../core/interfaces/cipher/i-policy-engine.js';
11
+ /**
12
+ * Configuration options for PolicyEngine.
13
+ */
14
+ export interface PolicyEngineConfig {
15
+ /**
16
+ * Default decision when no rule matches.
17
+ * @default 'ALLOW'
18
+ */
19
+ defaultDecision?: PolicyDecision;
20
+ }
21
+ /**
22
+ * Policy Engine implementation.
23
+ *
24
+ * Evaluates tool execution requests against a set of rules.
25
+ * Rules are evaluated in order - first matching rule wins.
26
+ */
27
+ export declare class PolicyEngine implements IPolicyEngine {
28
+ private readonly defaultDecision;
29
+ private rules;
30
+ /**
31
+ * Create a new PolicyEngine.
32
+ *
33
+ * @param config - Configuration options
34
+ */
35
+ constructor(config?: PolicyEngineConfig);
36
+ /**
37
+ * Add a policy rule.
38
+ * Rules are evaluated in the order they are added.
39
+ *
40
+ * @param rule - The policy rule to add
41
+ */
42
+ addRule(rule: PolicyRule): void;
43
+ /**
44
+ * Add multiple policy rules at once.
45
+ *
46
+ * @param rules - The policy rules to add
47
+ */
48
+ addRules(rules: PolicyRule[]): void;
49
+ /**
50
+ * Evaluate a tool execution request against policy rules.
51
+ *
52
+ * Rules are evaluated in order. First matching rule wins.
53
+ * If no rule matches, returns the default decision.
54
+ *
55
+ * @param toolName - Name of the tool to execute
56
+ * @param args - Arguments for the tool
57
+ * @returns Policy evaluation result with decision and reason
58
+ */
59
+ evaluate(toolName: string, args: Record<string, unknown>): PolicyEvaluationResult;
60
+ /**
61
+ * Get all registered policy rules.
62
+ *
63
+ * @returns Read-only array of policy rules
64
+ */
65
+ getRules(): readonly PolicyRule[];
66
+ /**
67
+ * Remove a policy rule by name.
68
+ *
69
+ * @param name - The name of the rule to remove
70
+ */
71
+ removeRule(name: string): void;
72
+ /**
73
+ * Check if a tool name matches a pattern.
74
+ *
75
+ * @param toolName - The tool name to check
76
+ * @param pattern - The pattern to match against
77
+ * @returns True if the tool name matches the pattern
78
+ */
79
+ private matchesPattern;
80
+ }
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Policy Engine Implementation.
3
+ *
4
+ * Rule-based ALLOW/DENY decisions for tool execution.
5
+ * Designed for autonomous execution without user confirmation.
6
+ *
7
+ * Rules are evaluated in order - first matching rule wins.
8
+ * If no rule matches, the default decision is used.
9
+ */
10
+ /**
11
+ * Policy Engine implementation.
12
+ *
13
+ * Evaluates tool execution requests against a set of rules.
14
+ * Rules are evaluated in order - first matching rule wins.
15
+ */
16
+ export class PolicyEngine {
17
+ defaultDecision;
18
+ rules = [];
19
+ /**
20
+ * Create a new PolicyEngine.
21
+ *
22
+ * @param config - Configuration options
23
+ */
24
+ constructor(config = {}) {
25
+ this.defaultDecision = config.defaultDecision ?? 'ALLOW';
26
+ }
27
+ /**
28
+ * Add a policy rule.
29
+ * Rules are evaluated in the order they are added.
30
+ *
31
+ * @param rule - The policy rule to add
32
+ */
33
+ addRule(rule) {
34
+ this.rules.push(rule);
35
+ }
36
+ /**
37
+ * Add multiple policy rules at once.
38
+ *
39
+ * @param rules - The policy rules to add
40
+ */
41
+ addRules(rules) {
42
+ for (const rule of rules) {
43
+ this.addRule(rule);
44
+ }
45
+ }
46
+ /**
47
+ * Evaluate a tool execution request against policy rules.
48
+ *
49
+ * Rules are evaluated in order. First matching rule wins.
50
+ * If no rule matches, returns the default decision.
51
+ *
52
+ * @param toolName - Name of the tool to execute
53
+ * @param args - Arguments for the tool
54
+ * @returns Policy evaluation result with decision and reason
55
+ */
56
+ evaluate(toolName, args) {
57
+ for (const rule of this.rules) {
58
+ // Check if tool pattern matches
59
+ if (!this.matchesPattern(toolName, rule.toolPattern)) {
60
+ continue;
61
+ }
62
+ // Check condition if present
63
+ if (rule.condition && !rule.condition(toolName, args)) {
64
+ continue;
65
+ }
66
+ // Rule matches - return its decision
67
+ return {
68
+ decision: rule.decision,
69
+ reason: rule.reason,
70
+ rule,
71
+ };
72
+ }
73
+ // No rule matched - return default decision
74
+ return {
75
+ decision: this.defaultDecision,
76
+ reason: 'No matching rule, using default policy',
77
+ };
78
+ }
79
+ /**
80
+ * Get all registered policy rules.
81
+ *
82
+ * @returns Read-only array of policy rules
83
+ */
84
+ getRules() {
85
+ return this.rules;
86
+ }
87
+ /**
88
+ * Remove a policy rule by name.
89
+ *
90
+ * @param name - The name of the rule to remove
91
+ */
92
+ removeRule(name) {
93
+ this.rules = this.rules.filter((r) => r.name !== name);
94
+ }
95
+ /**
96
+ * Check if a tool name matches a pattern.
97
+ *
98
+ * @param toolName - The tool name to check
99
+ * @param pattern - The pattern to match against
100
+ * @returns True if the tool name matches the pattern
101
+ */
102
+ matchesPattern(toolName, pattern) {
103
+ if (typeof pattern === 'string') {
104
+ // Exact match or wildcard
105
+ return toolName === pattern || pattern === '*';
106
+ }
107
+ // Regex pattern
108
+ return pattern.test(toolName);
109
+ }
110
+ }
@@ -0,0 +1,191 @@
1
+ /**
2
+ * Tool Invocation Queue System
3
+ *
4
+ * Manages queuing and execution of tool invocations with:
5
+ * - Priority-based ordering
6
+ * - Concurrent execution with configurable limits
7
+ * - Queue state management
8
+ * - Batch execution support
9
+ */
10
+ import type { ToolInvocation, ToolInvocationResult } from './tool-invocation.js';
11
+ /**
12
+ * Priority levels for tool invocations
13
+ */
14
+ export declare enum ToolInvocationPriority {
15
+ /**
16
+ * Critical priority - Execute immediately
17
+ */
18
+ CRITICAL = "CRITICAL",
19
+ /**
20
+ * High priority - Execute before normal
21
+ */
22
+ HIGH = "HIGH",
23
+ /**
24
+ * Low priority - Execute after normal
25
+ */
26
+ LOW = "LOW",
27
+ /**
28
+ * Normal priority - Default priority
29
+ */
30
+ NORMAL = "NORMAL"
31
+ }
32
+ /**
33
+ * Queued invocation with priority and metadata
34
+ */
35
+ export interface QueuedInvocation {
36
+ /**
37
+ * The tool invocation
38
+ */
39
+ invocation: ToolInvocation;
40
+ /**
41
+ * Priority level
42
+ */
43
+ priority: ToolInvocationPriority;
44
+ /**
45
+ * Timestamp when queued
46
+ */
47
+ queuedAt: number;
48
+ }
49
+ /**
50
+ * Configuration for queue execution
51
+ */
52
+ export interface QueueExecutionConfig {
53
+ /**
54
+ * Maximum number of concurrent executions
55
+ * @default 5
56
+ */
57
+ maxConcurrent?: number;
58
+ /**
59
+ * Whether to stop on first error
60
+ * @default false
61
+ */
62
+ stopOnError?: boolean;
63
+ }
64
+ /**
65
+ * Result from queue execution
66
+ */
67
+ export interface QueueExecutionResult {
68
+ /**
69
+ * Number of completed executions
70
+ */
71
+ completed: number;
72
+ /**
73
+ * Duration of queue execution in milliseconds
74
+ */
75
+ durationMs: number;
76
+ /**
77
+ * Number of failed executions
78
+ */
79
+ failed: number;
80
+ /**
81
+ * Individual invocation results
82
+ */
83
+ results: Map<string, ToolInvocationResult>;
84
+ /**
85
+ * Number of skipped executions (due to stopOnError)
86
+ */
87
+ skipped: number;
88
+ }
89
+ /**
90
+ * Default execution configuration
91
+ */
92
+ export declare const DEFAULT_QUEUE_EXECUTION_CONFIG: Required<QueueExecutionConfig>;
93
+ /**
94
+ * Tool invocation queue for managing concurrent tool execution
95
+ *
96
+ * Features:
97
+ * - Priority-based ordering
98
+ * - Configurable concurrency limits
99
+ * - Batch execution with error handling
100
+ * - Queue state management
101
+ */
102
+ export declare class ToolInvocationQueue {
103
+ /**
104
+ * Execution configuration
105
+ */
106
+ private readonly config;
107
+ /**
108
+ * Currently executing invocations
109
+ */
110
+ private readonly executing;
111
+ /**
112
+ * Queue of pending invocations
113
+ */
114
+ private readonly queue;
115
+ /**
116
+ * Create a new tool invocation queue
117
+ *
118
+ * @param config - Execution configuration
119
+ */
120
+ constructor(config?: QueueExecutionConfig);
121
+ /**
122
+ * Add an invocation to the queue
123
+ *
124
+ * @param invocation - Tool invocation to queue
125
+ * @param priority - Priority level (default: NORMAL)
126
+ * @returns True if added, false if already queued
127
+ */
128
+ add(invocation: ToolInvocation, priority?: ToolInvocationPriority): boolean;
129
+ /**
130
+ * Add multiple invocations to the queue
131
+ *
132
+ * @param invocations - Array of invocations with optional priority
133
+ * @returns Number of invocations added
134
+ */
135
+ addBatch(invocations: Array<{
136
+ invocation: ToolInvocation;
137
+ priority?: ToolInvocationPriority;
138
+ }>): number;
139
+ /**
140
+ * Clear all queued invocations
141
+ *
142
+ * Does not affect currently executing invocations.
143
+ * For autonomous mode, invocations are simply removed without status change.
144
+ *
145
+ * @returns Number of invocations cleared
146
+ */
147
+ clear(): number;
148
+ /**
149
+ * Execute all queued invocations
150
+ *
151
+ * Executes invocations with concurrency limit and priority ordering.
152
+ *
153
+ * @returns Execution result with stats and individual results
154
+ */
155
+ execute(): Promise<QueueExecutionResult>;
156
+ /**
157
+ * Get number of currently executing invocations
158
+ */
159
+ getExecutingCount(): number;
160
+ /**
161
+ * Get number of queued invocations
162
+ */
163
+ getQueuedCount(): number;
164
+ /**
165
+ * Check if invocation is queued
166
+ *
167
+ * @param invocationId - ID to check
168
+ * @returns True if queued
169
+ */
170
+ isQueued(invocationId: string): boolean;
171
+ /**
172
+ * Peek at next invocation without removing it
173
+ *
174
+ * @returns Next invocation or undefined if queue is empty
175
+ */
176
+ peek(): ToolInvocation | undefined;
177
+ /**
178
+ * Remove a queued invocation from the queue.
179
+ *
180
+ * For autonomous mode, invocations are simply removed without status change.
181
+ * The invocation remains in SCHEDULED state but will not be executed.
182
+ *
183
+ * @param invocationId - ID of invocation to remove
184
+ * @returns True if removed, false if not found
185
+ */
186
+ remove(invocationId: string): boolean;
187
+ /**
188
+ * Sort queue by priority and queue time
189
+ */
190
+ private sortQueue;
191
+ }
@@ -0,0 +1,254 @@
1
+ /**
2
+ * Tool Invocation Queue System
3
+ *
4
+ * Manages queuing and execution of tool invocations with:
5
+ * - Priority-based ordering
6
+ * - Concurrent execution with configurable limits
7
+ * - Queue state management
8
+ * - Batch execution support
9
+ */
10
+ import { ToolInvocationStatus } from './tool-invocation.js';
11
+ /**
12
+ * Priority levels for tool invocations
13
+ */
14
+ export var ToolInvocationPriority;
15
+ (function (ToolInvocationPriority) {
16
+ /**
17
+ * Critical priority - Execute immediately
18
+ */
19
+ ToolInvocationPriority["CRITICAL"] = "CRITICAL";
20
+ /**
21
+ * High priority - Execute before normal
22
+ */
23
+ ToolInvocationPriority["HIGH"] = "HIGH";
24
+ /**
25
+ * Low priority - Execute after normal
26
+ */
27
+ ToolInvocationPriority["LOW"] = "LOW";
28
+ /**
29
+ * Normal priority - Default priority
30
+ */
31
+ ToolInvocationPriority["NORMAL"] = "NORMAL";
32
+ })(ToolInvocationPriority || (ToolInvocationPriority = {}));
33
+ /**
34
+ * Priority ordering for queue sorting
35
+ */
36
+ const PRIORITY_ORDER = {
37
+ [ToolInvocationPriority.CRITICAL]: 0,
38
+ [ToolInvocationPriority.HIGH]: 1,
39
+ [ToolInvocationPriority.LOW]: 3,
40
+ [ToolInvocationPriority.NORMAL]: 2,
41
+ };
42
+ /**
43
+ * Default execution configuration
44
+ */
45
+ export const DEFAULT_QUEUE_EXECUTION_CONFIG = {
46
+ maxConcurrent: 5,
47
+ stopOnError: false,
48
+ };
49
+ /**
50
+ * Tool invocation queue for managing concurrent tool execution
51
+ *
52
+ * Features:
53
+ * - Priority-based ordering
54
+ * - Configurable concurrency limits
55
+ * - Batch execution with error handling
56
+ * - Queue state management
57
+ */
58
+ export class ToolInvocationQueue {
59
+ /**
60
+ * Execution configuration
61
+ */
62
+ config;
63
+ /**
64
+ * Currently executing invocations
65
+ */
66
+ executing = new Map();
67
+ /**
68
+ * Queue of pending invocations
69
+ */
70
+ queue = [];
71
+ /**
72
+ * Create a new tool invocation queue
73
+ *
74
+ * @param config - Execution configuration
75
+ */
76
+ constructor(config) {
77
+ this.config = {
78
+ ...DEFAULT_QUEUE_EXECUTION_CONFIG,
79
+ ...config,
80
+ };
81
+ }
82
+ /**
83
+ * Add an invocation to the queue
84
+ *
85
+ * @param invocation - Tool invocation to queue
86
+ * @param priority - Priority level (default: NORMAL)
87
+ * @returns True if added, false if already queued
88
+ */
89
+ add(invocation, priority = ToolInvocationPriority.NORMAL) {
90
+ // Check if already queued or executing
91
+ if (this.isQueued(invocation.id) || this.executing.has(invocation.id)) {
92
+ return false;
93
+ }
94
+ // Add to queue
95
+ this.queue.push({
96
+ invocation,
97
+ priority,
98
+ queuedAt: Date.now(),
99
+ });
100
+ // Sort queue by priority
101
+ this.sortQueue();
102
+ return true;
103
+ }
104
+ /**
105
+ * Add multiple invocations to the queue
106
+ *
107
+ * @param invocations - Array of invocations with optional priority
108
+ * @returns Number of invocations added
109
+ */
110
+ addBatch(invocations) {
111
+ let added = 0;
112
+ for (const { invocation, priority } of invocations) {
113
+ if (this.add(invocation, priority)) {
114
+ added++;
115
+ }
116
+ }
117
+ return added;
118
+ }
119
+ /**
120
+ * Clear all queued invocations
121
+ *
122
+ * Does not affect currently executing invocations.
123
+ * For autonomous mode, invocations are simply removed without status change.
124
+ *
125
+ * @returns Number of invocations cleared
126
+ */
127
+ clear() {
128
+ const count = this.queue.length;
129
+ // Simply clear the queue (no status change needed for autonomous mode)
130
+ this.queue.length = 0;
131
+ return count;
132
+ }
133
+ /**
134
+ * Execute all queued invocations
135
+ *
136
+ * Executes invocations with concurrency limit and priority ordering.
137
+ *
138
+ * @returns Execution result with stats and individual results
139
+ */
140
+ async execute() {
141
+ const startTime = Date.now();
142
+ const results = new Map();
143
+ let completed = 0;
144
+ let failed = 0;
145
+ let skipped = 0;
146
+ let shouldStop = false;
147
+ // Execute in batches based on concurrency limit
148
+ while (this.queue.length > 0 && !shouldStop) {
149
+ // Take up to maxConcurrent invocations from queue
150
+ const batch = this.queue.splice(0, this.config.maxConcurrent);
151
+ // Mark as executing
152
+ for (const { invocation } of batch) {
153
+ this.executing.set(invocation.id, invocation);
154
+ }
155
+ // Execute batch concurrently
156
+ // eslint-disable-next-line no-await-in-loop
157
+ const batchResults = await Promise.all(batch.map(async ({ invocation }) => {
158
+ const result = await invocation.execute();
159
+ this.executing.delete(invocation.id);
160
+ return { invocationId: invocation.id, result };
161
+ }));
162
+ // Process batch results
163
+ for (const { invocationId, result } of batchResults) {
164
+ results.set(invocationId, result);
165
+ if (result.status === ToolInvocationStatus.COMPLETED) {
166
+ completed++;
167
+ }
168
+ else if (result.status === ToolInvocationStatus.ERROR) {
169
+ failed++;
170
+ // Stop on error if configured
171
+ if (this.config.stopOnError) {
172
+ shouldStop = true;
173
+ break;
174
+ }
175
+ }
176
+ }
177
+ }
178
+ // Count skipped invocations (remaining in queue when stopOnError triggered)
179
+ if (shouldStop) {
180
+ skipped = this.queue.length;
181
+ // Simply clear remaining (no status change needed for autonomous mode)
182
+ this.queue.length = 0;
183
+ }
184
+ return {
185
+ completed,
186
+ durationMs: Date.now() - startTime,
187
+ failed,
188
+ results,
189
+ skipped,
190
+ };
191
+ }
192
+ /**
193
+ * Get number of currently executing invocations
194
+ */
195
+ getExecutingCount() {
196
+ return this.executing.size;
197
+ }
198
+ /**
199
+ * Get number of queued invocations
200
+ */
201
+ getQueuedCount() {
202
+ return this.queue.length;
203
+ }
204
+ /**
205
+ * Check if invocation is queued
206
+ *
207
+ * @param invocationId - ID to check
208
+ * @returns True if queued
209
+ */
210
+ isQueued(invocationId) {
211
+ return this.queue.some((q) => q.invocation.id === invocationId);
212
+ }
213
+ /**
214
+ * Peek at next invocation without removing it
215
+ *
216
+ * @returns Next invocation or undefined if queue is empty
217
+ */
218
+ peek() {
219
+ return this.queue[0]?.invocation;
220
+ }
221
+ /**
222
+ * Remove a queued invocation from the queue.
223
+ *
224
+ * For autonomous mode, invocations are simply removed without status change.
225
+ * The invocation remains in SCHEDULED state but will not be executed.
226
+ *
227
+ * @param invocationId - ID of invocation to remove
228
+ * @returns True if removed, false if not found
229
+ */
230
+ remove(invocationId) {
231
+ // Find in queue
232
+ const index = this.queue.findIndex((q) => q.invocation.id === invocationId);
233
+ if (index === -1) {
234
+ return false;
235
+ }
236
+ // Remove from queue (no status change needed for autonomous mode)
237
+ this.queue.splice(index, 1);
238
+ return true;
239
+ }
240
+ /**
241
+ * Sort queue by priority and queue time
242
+ */
243
+ sortQueue() {
244
+ this.queue.sort((a, b) => {
245
+ // First sort by priority
246
+ const priorityDiff = PRIORITY_ORDER[a.priority] - PRIORITY_ORDER[b.priority];
247
+ if (priorityDiff !== 0) {
248
+ return priorityDiff;
249
+ }
250
+ // Then by queue time (FIFO within same priority)
251
+ return a.queuedAt - b.queuedAt;
252
+ });
253
+ }
254
+ }