byterover-cli 0.4.1 → 1.0.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 (474) hide show
  1. package/README.md +1 -9
  2. package/dist/commands/curate.d.ts +1 -3
  3. package/dist/commands/curate.js +14 -51
  4. package/dist/commands/main.d.ts +8 -0
  5. package/dist/commands/main.js +29 -8
  6. package/dist/commands/query.d.ts +1 -3
  7. package/dist/commands/query.js +8 -35
  8. package/dist/config/context-tree-domains.d.ts +5 -0
  9. package/dist/config/context-tree-domains.js +6 -1
  10. package/dist/config/environment.js +9 -9
  11. package/dist/constants.d.ts +14 -0
  12. package/dist/constants.js +18 -0
  13. package/dist/core/domain/cipher/agent/agent-info.d.ts +199 -0
  14. package/dist/core/domain/cipher/agent/agent-info.js +143 -0
  15. package/dist/core/domain/cipher/agent/agent-registry.d.ts +96 -0
  16. package/dist/core/domain/cipher/agent/agent-registry.js +254 -0
  17. package/dist/core/domain/cipher/agent/index.d.ts +4 -1
  18. package/dist/core/domain/cipher/agent/index.js +7 -1
  19. package/dist/core/domain/cipher/agent-events/types.d.ts +355 -2
  20. package/dist/core/domain/cipher/agent-events/types.js +11 -0
  21. package/dist/core/domain/cipher/errors/error-normalizer.d.ts +156 -0
  22. package/dist/core/domain/cipher/errors/error-normalizer.js +379 -0
  23. package/dist/core/domain/cipher/errors/file-system-error.d.ts +2 -1
  24. package/dist/core/domain/cipher/errors/file-system-error.js +3 -2
  25. package/dist/core/domain/cipher/errors/system-prompt-error-codes.d.ts +79 -0
  26. package/dist/core/domain/cipher/errors/system-prompt-error-codes.js +80 -0
  27. package/dist/core/domain/cipher/errors/system-prompt-error.d.ts +114 -0
  28. package/dist/core/domain/cipher/errors/system-prompt-error.js +144 -0
  29. package/dist/core/domain/cipher/file-system/types.d.ts +57 -0
  30. package/dist/core/domain/cipher/llm/error-codes.d.ts +51 -0
  31. package/dist/core/domain/cipher/llm/error-codes.js +51 -0
  32. package/dist/core/domain/cipher/llm/index.d.ts +9 -0
  33. package/dist/core/domain/cipher/llm/index.js +13 -0
  34. package/dist/core/domain/cipher/llm/registry.d.ts +113 -0
  35. package/dist/core/domain/cipher/llm/registry.js +244 -0
  36. package/dist/core/domain/cipher/llm/schemas.d.ts +155 -0
  37. package/dist/core/domain/cipher/llm/schemas.js +151 -0
  38. package/dist/core/domain/cipher/llm/types.d.ts +121 -0
  39. package/dist/core/domain/cipher/llm/types.js +60 -0
  40. package/dist/core/domain/cipher/storage/message-storage-types.d.ts +114 -5
  41. package/dist/core/domain/cipher/streaming/types.d.ts +119 -0
  42. package/dist/core/domain/cipher/streaming/types.js +16 -0
  43. package/dist/core/domain/cipher/system-prompt/types.d.ts +44 -0
  44. package/dist/core/domain/cipher/todos/types.d.ts +34 -0
  45. package/dist/core/domain/cipher/tools/constants.d.ts +5 -2
  46. package/dist/core/domain/cipher/tools/constants.js +5 -2
  47. package/dist/core/domain/cipher/tools/types.d.ts +31 -0
  48. package/dist/core/domain/errors/connection-error.d.ts +33 -0
  49. package/dist/core/domain/errors/connection-error.js +54 -0
  50. package/dist/core/domain/errors/core-process-error.d.ts +27 -0
  51. package/dist/core/domain/errors/core-process-error.js +43 -0
  52. package/dist/core/domain/errors/task-error.d.ts +64 -0
  53. package/dist/core/domain/errors/task-error.js +116 -0
  54. package/dist/core/domain/errors/transport-error.d.ts +72 -0
  55. package/dist/core/domain/errors/transport-error.js +114 -0
  56. package/dist/core/domain/instance/index.d.ts +1 -0
  57. package/dist/core/domain/instance/index.js +1 -0
  58. package/dist/core/domain/instance/types.d.ts +57 -0
  59. package/dist/core/domain/instance/types.js +72 -0
  60. package/dist/core/domain/knowledge/directory-manager.d.ts +16 -0
  61. package/dist/core/domain/knowledge/directory-manager.js +31 -0
  62. package/dist/core/domain/transport/index.d.ts +2 -0
  63. package/dist/core/domain/transport/index.js +2 -0
  64. package/dist/core/domain/transport/schemas.d.ts +1149 -0
  65. package/dist/core/domain/transport/schemas.js +554 -0
  66. package/dist/core/domain/transport/types.d.ts +67 -0
  67. package/dist/core/domain/transport/types.js +7 -0
  68. package/dist/core/interfaces/cipher/cipher-services.d.ts +15 -3
  69. package/dist/core/interfaces/cipher/i-chat-session.d.ts +47 -5
  70. package/dist/core/interfaces/cipher/i-cipher-agent.d.ts +39 -4
  71. package/dist/core/interfaces/cipher/i-content-generator.d.ts +3 -5
  72. package/dist/core/interfaces/cipher/i-file-system.d.ts +12 -1
  73. package/dist/core/interfaces/cipher/i-llm-service.d.ts +4 -5
  74. package/dist/core/interfaces/cipher/i-todo-storage.d.ts +24 -0
  75. package/dist/core/interfaces/cipher/i-todo-storage.js +1 -0
  76. package/dist/core/interfaces/cipher/i-tool-plugin.d.ts +90 -0
  77. package/dist/core/interfaces/cipher/i-tool-plugin.js +1 -0
  78. package/dist/core/interfaces/cipher/i-tool-provider.d.ts +3 -2
  79. package/dist/core/interfaces/cipher/i-tool-scheduler.d.ts +4 -0
  80. package/dist/core/interfaces/cipher/index.d.ts +35 -0
  81. package/dist/core/interfaces/cipher/index.js +11 -0
  82. package/dist/core/interfaces/cipher/message-factory.d.ts +155 -0
  83. package/dist/core/interfaces/cipher/message-factory.js +252 -0
  84. package/dist/core/interfaces/cipher/message-type-guards.d.ts +139 -0
  85. package/dist/core/interfaces/cipher/message-type-guards.js +173 -0
  86. package/dist/core/interfaces/cipher/message-types.d.ts +279 -5
  87. package/dist/core/interfaces/cipher/message-types.js +6 -0
  88. package/dist/core/interfaces/cipher/sanitization-types.d.ts +147 -0
  89. package/dist/core/interfaces/cipher/sanitization-types.js +46 -0
  90. package/dist/core/interfaces/executor/i-curate-executor.d.ts +34 -0
  91. package/dist/core/interfaces/executor/i-curate-executor.js +1 -0
  92. package/dist/core/interfaces/executor/i-query-executor.d.ts +32 -0
  93. package/dist/core/interfaces/executor/i-query-executor.js +1 -0
  94. package/dist/core/interfaces/executor/index.d.ts +2 -0
  95. package/dist/core/interfaces/executor/index.js +2 -0
  96. package/dist/core/interfaces/instance/i-instance-discovery.d.ts +45 -0
  97. package/dist/core/interfaces/instance/i-instance-discovery.js +1 -0
  98. package/dist/core/interfaces/instance/i-instance-manager.d.ts +58 -0
  99. package/dist/core/interfaces/instance/i-instance-manager.js +1 -0
  100. package/dist/core/interfaces/instance/index.d.ts +2 -0
  101. package/dist/core/interfaces/instance/index.js +2 -0
  102. package/dist/core/interfaces/noop-implementations.d.ts +53 -0
  103. package/dist/core/interfaces/noop-implementations.js +62 -0
  104. package/dist/core/interfaces/transport/i-transport-client.d.ts +97 -0
  105. package/dist/core/interfaces/transport/i-transport-client.js +1 -0
  106. package/dist/core/interfaces/transport/i-transport-server.d.ts +93 -0
  107. package/dist/core/interfaces/transport/i-transport-server.js +1 -0
  108. package/dist/core/interfaces/transport/index.d.ts +2 -0
  109. package/dist/core/interfaces/transport/index.js +2 -0
  110. package/dist/infra/cipher/agent/agent-error-codes.d.ts +16 -0
  111. package/dist/infra/cipher/agent/agent-error-codes.js +17 -0
  112. package/dist/infra/cipher/agent/agent-error.d.ts +54 -0
  113. package/dist/infra/cipher/agent/agent-error.js +79 -0
  114. package/dist/infra/cipher/agent/agent-schemas.d.ts +264 -0
  115. package/dist/infra/cipher/agent/agent-schemas.js +97 -0
  116. package/dist/infra/cipher/agent/agent-state-manager.d.ts +140 -0
  117. package/dist/infra/cipher/agent/agent-state-manager.js +275 -0
  118. package/dist/infra/cipher/agent/base-agent.d.ts +118 -0
  119. package/dist/infra/cipher/agent/base-agent.js +240 -0
  120. package/dist/infra/cipher/agent/cipher-agent.d.ts +165 -0
  121. package/dist/infra/cipher/agent/cipher-agent.js +546 -0
  122. package/dist/infra/cipher/agent/index.d.ts +22 -0
  123. package/dist/infra/cipher/agent/index.js +24 -0
  124. package/dist/infra/cipher/agent/service-initializer.d.ts +79 -0
  125. package/dist/infra/cipher/{agent-service-factory.js → agent/service-initializer.js} +117 -68
  126. package/dist/infra/cipher/agent/types.d.ts +35 -0
  127. package/dist/infra/cipher/agent/types.js +1 -0
  128. package/dist/infra/cipher/blob/blob-reference-resolver.d.ts +107 -0
  129. package/dist/infra/cipher/blob/blob-reference-resolver.js +228 -0
  130. package/dist/infra/cipher/blob/blob-reference-utils.d.ts +117 -0
  131. package/dist/infra/cipher/blob/blob-reference-utils.js +230 -0
  132. package/dist/infra/cipher/consumer/consumer-lock.js +1 -0
  133. package/dist/infra/cipher/consumer/consumer-service.js +1 -0
  134. package/dist/infra/cipher/consumer/execution-consumer.d.ts +6 -1
  135. package/dist/infra/cipher/consumer/execution-consumer.js +54 -16
  136. package/dist/infra/cipher/consumer/index.d.ts +1 -1
  137. package/dist/infra/cipher/consumer/index.js +2 -1
  138. package/dist/infra/cipher/consumer/queue-polling-service.js +1 -0
  139. package/dist/infra/cipher/file-system/binary-utils.d.ts +43 -0
  140. package/dist/infra/cipher/file-system/binary-utils.js +164 -0
  141. package/dist/infra/cipher/file-system/context-tree-file-system-factory.d.ts +9 -0
  142. package/dist/infra/cipher/file-system/context-tree-file-system-factory.js +24 -0
  143. package/dist/infra/cipher/file-system/file-system-service.d.ts +17 -1
  144. package/dist/infra/cipher/file-system/file-system-service.js +327 -36
  145. package/dist/infra/cipher/file-system/path-validator.d.ts +32 -0
  146. package/dist/infra/cipher/file-system/path-validator.js +111 -6
  147. package/dist/infra/cipher/interactive-loop.js +41 -33
  148. package/dist/infra/cipher/llm/capability-cache.d.ts +87 -0
  149. package/dist/infra/cipher/llm/capability-cache.js +125 -0
  150. package/dist/infra/cipher/llm/context/compaction/compaction-service.d.ts +32 -0
  151. package/dist/infra/cipher/llm/context/compaction/compaction-service.js +44 -3
  152. package/dist/infra/cipher/llm/context/compression/enhanced-compaction.d.ts +112 -0
  153. package/dist/infra/cipher/llm/context/compression/enhanced-compaction.js +175 -0
  154. package/dist/infra/cipher/llm/context/compression/filter-compacted.d.ts +83 -0
  155. package/dist/infra/cipher/llm/context/compression/filter-compacted.js +150 -0
  156. package/dist/infra/cipher/llm/context/compression/index.d.ts +5 -0
  157. package/dist/infra/cipher/llm/context/compression/index.js +6 -0
  158. package/dist/infra/cipher/llm/context/compression/reactive-overflow.d.ts +107 -0
  159. package/dist/infra/cipher/llm/context/compression/reactive-overflow.js +272 -0
  160. package/dist/infra/cipher/llm/context/context-manager.d.ts +47 -1
  161. package/dist/infra/cipher/llm/context/context-manager.js +129 -0
  162. package/dist/infra/cipher/llm/context/utils.js +17 -4
  163. package/dist/infra/cipher/llm/generators/byterover-content-generator.js +4 -2
  164. package/dist/infra/cipher/llm/internal-llm-service.d.ts +50 -17
  165. package/dist/infra/cipher/llm/internal-llm-service.js +273 -50
  166. package/dist/infra/cipher/llm/openrouter-llm-service.d.ts +6 -8
  167. package/dist/infra/cipher/llm/openrouter-llm-service.js +14 -16
  168. package/dist/infra/cipher/llm/retry/retry-policy.d.ts +1 -0
  169. package/dist/infra/cipher/llm/retry/retry-policy.js +11 -0
  170. package/dist/infra/cipher/llm/retry/retry-with-backoff.js +3 -2
  171. package/dist/infra/cipher/llm/sanitization/base64-utils.d.ts +102 -0
  172. package/dist/infra/cipher/llm/sanitization/base64-utils.js +182 -0
  173. package/dist/infra/cipher/llm/sanitization/index.d.ts +12 -0
  174. package/dist/infra/cipher/llm/sanitization/index.js +13 -0
  175. package/dist/infra/cipher/llm/sanitization/tool-sanitizer.d.ts +74 -0
  176. package/dist/infra/cipher/llm/sanitization/tool-sanitizer.js +398 -0
  177. package/dist/infra/cipher/llm/stream-processor.d.ts +158 -0
  178. package/dist/infra/cipher/llm/stream-processor.js +276 -0
  179. package/dist/infra/cipher/llm/tokenizers/claude-tokenizer.d.ts +13 -20
  180. package/dist/infra/cipher/llm/tokenizers/claude-tokenizer.js +17 -24
  181. package/dist/infra/cipher/llm/tokenizers/gemini-tokenizer.d.ts +12 -11
  182. package/dist/infra/cipher/llm/tokenizers/gemini-tokenizer.js +16 -15
  183. package/dist/infra/cipher/llm/tokenizers/openrouter-tokenizer.d.ts +15 -7
  184. package/dist/infra/cipher/llm/tokenizers/openrouter-tokenizer.js +22 -10
  185. package/dist/infra/cipher/llm/tool-output-processor.d.ts +51 -0
  186. package/dist/infra/cipher/llm/tool-output-processor.js +139 -0
  187. package/dist/infra/cipher/process/command-validator.d.ts +23 -0
  188. package/dist/infra/cipher/process/command-validator.js +75 -0
  189. package/dist/infra/cipher/process/path-utils.d.ts +66 -0
  190. package/dist/infra/cipher/process/path-utils.js +94 -0
  191. package/dist/infra/cipher/process/process-service.d.ts +32 -0
  192. package/dist/infra/cipher/process/process-service.js +98 -17
  193. package/dist/infra/cipher/session/chat-session.d.ts +56 -7
  194. package/dist/infra/cipher/session/chat-session.js +163 -13
  195. package/dist/infra/cipher/session/index.d.ts +1 -0
  196. package/dist/infra/cipher/session/index.js +2 -0
  197. package/dist/infra/cipher/session/message-queue.d.ts +65 -0
  198. package/dist/infra/cipher/session/message-queue.js +90 -0
  199. package/dist/infra/cipher/session/session-manager.d.ts +106 -5
  200. package/dist/infra/cipher/session/session-manager.js +254 -7
  201. package/dist/infra/cipher/session/session-status.d.ts +137 -0
  202. package/dist/infra/cipher/session/session-status.js +184 -0
  203. package/dist/infra/cipher/session/title-generator.d.ts +8 -0
  204. package/dist/infra/cipher/session/title-generator.js +31 -0
  205. package/dist/infra/cipher/storage/message-storage-service.d.ts +65 -2
  206. package/dist/infra/cipher/storage/message-storage-service.js +300 -54
  207. package/dist/infra/cipher/storage/tool-part-factory.d.ts +116 -0
  208. package/dist/infra/cipher/storage/tool-part-factory.js +197 -0
  209. package/dist/infra/cipher/system-prompt/contributor-schemas.d.ts +516 -0
  210. package/dist/infra/cipher/system-prompt/contributor-schemas.js +85 -0
  211. package/dist/infra/cipher/system-prompt/contributors/agent-prompt-contributor.d.ts +59 -0
  212. package/dist/infra/cipher/system-prompt/contributors/agent-prompt-contributor.js +131 -0
  213. package/dist/infra/cipher/system-prompt/contributors/companion-contributor.d.ts +54 -0
  214. package/dist/infra/cipher/system-prompt/contributors/companion-contributor.js +107 -0
  215. package/dist/infra/cipher/system-prompt/contributors/context-tree-structure-contributor.d.ts +68 -0
  216. package/dist/infra/cipher/system-prompt/contributors/context-tree-structure-contributor.js +179 -0
  217. package/dist/infra/cipher/system-prompt/contributors/datetime-contributor.d.ts +25 -0
  218. package/dist/infra/cipher/system-prompt/contributors/datetime-contributor.js +29 -0
  219. package/dist/infra/cipher/system-prompt/contributors/environment-contributor.d.ts +25 -0
  220. package/dist/infra/cipher/system-prompt/contributors/environment-contributor.js +54 -0
  221. package/dist/infra/cipher/system-prompt/contributors/file-contributor.d.ts +60 -0
  222. package/dist/infra/cipher/system-prompt/contributors/file-contributor.js +128 -0
  223. package/dist/infra/cipher/system-prompt/contributors/index.d.ts +13 -0
  224. package/dist/infra/cipher/system-prompt/contributors/index.js +8 -0
  225. package/dist/infra/cipher/system-prompt/contributors/memory-contributor.d.ts +40 -0
  226. package/dist/infra/cipher/system-prompt/contributors/memory-contributor.js +56 -0
  227. package/dist/infra/cipher/system-prompt/contributors/static-contributor.d.ts +26 -0
  228. package/dist/infra/cipher/system-prompt/contributors/static-contributor.js +31 -0
  229. package/dist/infra/cipher/system-prompt/environment-context-builder.d.ts +112 -0
  230. package/dist/infra/cipher/system-prompt/environment-context-builder.js +256 -0
  231. package/dist/infra/cipher/system-prompt/prompt-cache.d.ts +102 -0
  232. package/dist/infra/cipher/system-prompt/prompt-cache.js +156 -0
  233. package/dist/infra/cipher/system-prompt/schemas.d.ts +151 -0
  234. package/dist/infra/cipher/system-prompt/schemas.js +94 -0
  235. package/dist/infra/cipher/system-prompt/system-prompt-manager.d.ts +136 -0
  236. package/dist/infra/cipher/system-prompt/system-prompt-manager.js +307 -0
  237. package/dist/infra/cipher/todos/todo-storage-service.d.ts +26 -0
  238. package/dist/infra/cipher/todos/todo-storage-service.js +28 -0
  239. package/dist/infra/cipher/tools/core-tool-scheduler.js +5 -1
  240. package/dist/infra/cipher/tools/default-policy-rules.js +1 -1
  241. package/dist/infra/cipher/tools/implementations/bash-exec-tool.d.ts +1 -0
  242. package/dist/infra/cipher/tools/implementations/bash-exec-tool.js +27 -10
  243. package/dist/infra/cipher/tools/implementations/bash-output-tool.js +1 -5
  244. package/dist/infra/cipher/tools/implementations/batch-tool.d.ts +12 -0
  245. package/dist/infra/cipher/tools/implementations/batch-tool.js +142 -0
  246. package/dist/infra/cipher/tools/implementations/curate-tool.js +195 -68
  247. package/dist/infra/cipher/tools/implementations/list-directory-tool.d.ts +12 -0
  248. package/dist/infra/cipher/tools/implementations/list-directory-tool.js +52 -0
  249. package/dist/infra/cipher/tools/implementations/read-file-tool.d.ts +8 -1
  250. package/dist/infra/cipher/tools/implementations/read-file-tool.js +17 -7
  251. package/dist/infra/cipher/tools/implementations/read-todos-tool.d.ts +11 -0
  252. package/dist/infra/cipher/tools/implementations/read-todos-tool.js +39 -0
  253. package/dist/infra/cipher/tools/implementations/{detect-domains-tool.d.ts → spec-analyze-tool.d.ts} +1 -1
  254. package/dist/infra/cipher/tools/implementations/{detect-domains-tool.js → spec-analyze-tool.js} +9 -7
  255. package/dist/infra/cipher/tools/implementations/task-tool.d.ts +34 -0
  256. package/dist/infra/cipher/tools/implementations/task-tool.js +207 -0
  257. package/dist/infra/cipher/tools/implementations/write-todos-tool.d.ts +4 -1
  258. package/dist/infra/cipher/tools/implementations/write-todos-tool.js +19 -63
  259. package/dist/infra/cipher/tools/index.d.ts +1 -1
  260. package/dist/infra/cipher/tools/index.js +1 -1
  261. package/dist/infra/cipher/tools/plugins/index.d.ts +3 -0
  262. package/dist/infra/cipher/tools/plugins/index.js +2 -0
  263. package/dist/infra/cipher/tools/plugins/logging-plugin.d.ts +28 -0
  264. package/dist/infra/cipher/tools/plugins/logging-plugin.js +66 -0
  265. package/dist/infra/cipher/tools/plugins/plugin-manager.d.ts +81 -0
  266. package/dist/infra/cipher/tools/plugins/plugin-manager.js +122 -0
  267. package/dist/infra/cipher/tools/streaming/index.d.ts +1 -0
  268. package/dist/infra/cipher/tools/streaming/index.js +1 -0
  269. package/dist/infra/cipher/tools/streaming/metadata-handler.d.ts +31 -0
  270. package/dist/infra/cipher/tools/streaming/metadata-handler.js +39 -0
  271. package/dist/infra/cipher/tools/tool-description-loader.d.ts +57 -0
  272. package/dist/infra/cipher/tools/tool-description-loader.js +108 -0
  273. package/dist/infra/cipher/tools/tool-manager.d.ts +38 -4
  274. package/dist/infra/cipher/tools/tool-manager.js +107 -11
  275. package/dist/infra/cipher/tools/tool-provider-getter.d.ts +6 -0
  276. package/dist/infra/cipher/tools/tool-provider-getter.js +1 -0
  277. package/dist/infra/cipher/tools/tool-provider.d.ts +32 -7
  278. package/dist/infra/cipher/tools/tool-provider.js +81 -25
  279. package/dist/infra/cipher/tools/tool-registry.d.ts +23 -0
  280. package/dist/infra/cipher/tools/tool-registry.js +58 -16
  281. package/dist/infra/context-tree/file-context-tree-snapshot-service.js +10 -4
  282. package/dist/infra/context-tree/file-context-tree-writer-service.d.ts +4 -3
  283. package/dist/infra/context-tree/file-context-tree-writer-service.js +6 -4
  284. package/dist/infra/context-tree/path-utils.d.ts +7 -0
  285. package/dist/infra/context-tree/path-utils.js +7 -0
  286. package/dist/infra/core/executors/curate-executor.d.ts +35 -0
  287. package/dist/infra/core/executors/curate-executor.js +123 -0
  288. package/dist/infra/core/executors/index.d.ts +2 -0
  289. package/dist/infra/core/executors/index.js +2 -0
  290. package/dist/infra/core/executors/query-executor.d.ts +23 -0
  291. package/dist/infra/core/executors/query-executor.js +51 -0
  292. package/dist/infra/core/task-processor.d.ts +81 -0
  293. package/dist/infra/core/task-processor.js +115 -0
  294. package/dist/infra/instance/file-instance-discovery.d.ts +31 -0
  295. package/dist/infra/instance/file-instance-discovery.js +84 -0
  296. package/dist/infra/instance/file-instance-manager.d.ts +46 -0
  297. package/dist/infra/instance/file-instance-manager.js +123 -0
  298. package/dist/infra/instance/index.d.ts +3 -0
  299. package/dist/infra/instance/index.js +3 -0
  300. package/dist/infra/instance/process-utils.d.ts +14 -0
  301. package/dist/infra/instance/process-utils.js +39 -0
  302. package/dist/infra/process/agent-worker.d.ts +20 -0
  303. package/dist/infra/process/agent-worker.js +602 -0
  304. package/dist/infra/process/index.d.ts +12 -0
  305. package/dist/infra/process/index.js +11 -0
  306. package/dist/infra/process/ipc-types.d.ts +55 -0
  307. package/dist/infra/process/ipc-types.js +12 -0
  308. package/dist/infra/process/process-manager.d.ts +154 -0
  309. package/dist/infra/process/process-manager.js +471 -0
  310. package/dist/infra/process/task-queue-manager.d.ts +123 -0
  311. package/dist/infra/process/task-queue-manager.js +226 -0
  312. package/dist/infra/process/transport-handlers.d.ts +124 -0
  313. package/dist/infra/process/transport-handlers.js +348 -0
  314. package/dist/infra/process/transport-worker.d.ts +20 -0
  315. package/dist/infra/process/transport-worker.js +168 -0
  316. package/dist/infra/repl/commands/curate-command.js +0 -5
  317. package/dist/infra/repl/commands/query-command.js +0 -3
  318. package/dist/infra/repl/repl-startup.d.ts +4 -0
  319. package/dist/infra/repl/repl-startup.js +8 -1
  320. package/dist/infra/repl/transport-client-helper.d.ts +9 -0
  321. package/dist/infra/repl/transport-client-helper.js +96 -0
  322. package/dist/infra/transport/index.d.ts +4 -0
  323. package/dist/infra/transport/index.js +4 -0
  324. package/dist/infra/transport/port-utils.d.ts +42 -0
  325. package/dist/infra/transport/port-utils.js +84 -0
  326. package/dist/infra/transport/socket-io-transport-client.d.ts +45 -0
  327. package/dist/infra/transport/socket-io-transport-client.js +270 -0
  328. package/dist/infra/transport/socket-io-transport-server.d.ts +35 -0
  329. package/dist/infra/transport/socket-io-transport-server.js +207 -0
  330. package/dist/infra/transport/transport-client-factory.d.ts +76 -0
  331. package/dist/infra/transport/transport-client-factory.js +168 -0
  332. package/dist/infra/transport/transport-factory.d.ts +33 -0
  333. package/dist/infra/transport/transport-factory.js +59 -0
  334. package/dist/infra/usecase/curate-use-case.d.ts +8 -55
  335. package/dist/infra/usecase/curate-use-case.js +71 -262
  336. package/dist/infra/usecase/init-use-case.js +3 -2
  337. package/dist/infra/usecase/query-use-case.d.ts +18 -45
  338. package/dist/infra/usecase/query-use-case.js +250 -326
  339. package/dist/infra/usecase/status-use-case.js +1 -1
  340. package/dist/resources/prompts/{curate-context-tree-curation.yml → curate.yml} +25 -22
  341. package/dist/resources/prompts/explore.yml +78 -0
  342. package/dist/resources/prompts/plan.yml +114 -0
  343. package/dist/resources/prompts/reflection.yml +1 -1
  344. package/dist/resources/prompts/system-prompt.yml +15 -8
  345. package/dist/resources/prompts/tool-outputs.yml +0 -5
  346. package/dist/resources/tools/bash_exec.txt +98 -0
  347. package/dist/resources/tools/bash_output.txt +40 -0
  348. package/dist/resources/tools/batch.txt +28 -0
  349. package/dist/resources/tools/create_knowledge_topic.txt +23 -0
  350. package/dist/resources/tools/curate.txt +22 -0
  351. package/dist/resources/tools/delete_memory.txt +1 -0
  352. package/dist/resources/tools/detect_domains.txt +11 -0
  353. package/dist/resources/tools/edit_file.txt +1 -0
  354. package/dist/resources/tools/edit_memory.txt +1 -0
  355. package/dist/resources/tools/glob_files.txt +20 -0
  356. package/dist/resources/tools/grep_content.txt +18 -0
  357. package/dist/resources/tools/kill_process.txt +16 -0
  358. package/dist/resources/tools/list_directory.txt +16 -0
  359. package/dist/resources/tools/list_memories.txt +1 -0
  360. package/dist/resources/tools/read_file.txt +31 -0
  361. package/dist/resources/tools/read_memory.txt +1 -0
  362. package/dist/resources/tools/read_todos.txt +17 -0
  363. package/dist/resources/tools/search_history.txt +1 -0
  364. package/dist/resources/tools/task.txt +23 -0
  365. package/dist/resources/tools/write_file.txt +1 -0
  366. package/dist/resources/tools/write_memory.txt +1 -0
  367. package/dist/resources/tools/write_todos.txt +29 -0
  368. package/dist/tui/app.js +9 -13
  369. package/dist/tui/components/command-details.d.ts +14 -0
  370. package/dist/tui/components/command-details.js +35 -0
  371. package/dist/tui/components/execution/execution-changes.d.ts +5 -0
  372. package/dist/tui/components/execution/execution-changes.js +19 -4
  373. package/dist/tui/components/execution/execution-content.d.ts +4 -2
  374. package/dist/tui/components/execution/execution-content.js +26 -13
  375. package/dist/tui/components/execution/execution-input.js +3 -3
  376. package/dist/tui/components/execution/execution-progress.d.ts +2 -2
  377. package/dist/tui/components/execution/execution-progress.js +8 -6
  378. package/dist/tui/components/execution/log-item.d.ts +3 -4
  379. package/dist/tui/components/execution/log-item.js +2 -5
  380. package/dist/tui/components/footer.js +9 -4
  381. package/dist/tui/components/header.d.ts +3 -3
  382. package/dist/tui/components/header.js +5 -3
  383. package/dist/tui/components/index.d.ts +1 -0
  384. package/dist/tui/components/index.js +1 -0
  385. package/dist/tui/components/onboarding/copyable-prompt.d.ts +5 -3
  386. package/dist/tui/components/onboarding/copyable-prompt.js +7 -8
  387. package/dist/tui/components/onboarding/onboarding-flow.js +35 -25
  388. package/dist/tui/components/scrollable-list.js +12 -10
  389. package/dist/tui/components/suggestions.js +39 -41
  390. package/dist/tui/components/tab-bar.d.ts +2 -1
  391. package/dist/tui/components/tab-bar.js +3 -4
  392. package/dist/tui/constants.d.ts +0 -5
  393. package/dist/tui/constants.js +0 -5
  394. package/dist/tui/contexts/auth-context.js +9 -2
  395. package/dist/tui/contexts/{use-commands.js → commands-context.js} +3 -3
  396. package/dist/tui/contexts/index.d.ts +6 -1
  397. package/dist/tui/contexts/index.js +6 -1
  398. package/dist/tui/contexts/onboarding-context.d.ts +1 -1
  399. package/dist/tui/contexts/onboarding-context.js +9 -9
  400. package/dist/tui/contexts/tasks-context.d.ts +84 -0
  401. package/dist/tui/contexts/tasks-context.js +218 -0
  402. package/dist/tui/contexts/transport-context.d.ts +29 -0
  403. package/dist/tui/contexts/transport-context.js +82 -0
  404. package/dist/tui/hooks/index.d.ts +10 -6
  405. package/dist/tui/hooks/index.js +7 -6
  406. package/dist/tui/hooks/use-activity-logs.d.ts +3 -11
  407. package/dist/tui/hooks/use-activity-logs.js +87 -34
  408. package/dist/tui/hooks/use-auth-polling.d.ts +24 -0
  409. package/dist/tui/hooks/use-auth-polling.js +104 -0
  410. package/dist/tui/hooks/use-slash-command-processor.js +0 -1
  411. package/dist/tui/hooks/use-slash-completion.js +1 -1
  412. package/dist/tui/hooks/use-tab-navigation.d.ts +2 -1
  413. package/dist/tui/hooks/use-tab-navigation.js +16 -7
  414. package/dist/tui/hooks/use-terminal-breakpoint.d.ts +21 -0
  415. package/dist/tui/hooks/use-terminal-breakpoint.js +38 -0
  416. package/dist/tui/hooks/use-ui-heights.d.ts +120 -0
  417. package/dist/tui/hooks/use-ui-heights.js +88 -0
  418. package/dist/tui/providers/app-providers.js +2 -6
  419. package/dist/tui/types/commands.d.ts +0 -26
  420. package/dist/tui/types/index.d.ts +1 -1
  421. package/dist/tui/types/ui.d.ts +9 -4
  422. package/dist/tui/utils/line.d.ts +11 -0
  423. package/dist/tui/utils/line.js +16 -0
  424. package/dist/tui/utils/log.d.ts +27 -0
  425. package/dist/tui/utils/log.js +114 -0
  426. package/dist/tui/views/command-view.d.ts +7 -0
  427. package/dist/tui/views/command-view.js +103 -80
  428. package/dist/tui/views/login-view.js +7 -4
  429. package/dist/tui/views/logs-view.d.ts +13 -0
  430. package/dist/tui/views/logs-view.js +27 -52
  431. package/dist/utils/connection-error-handler.d.ts +16 -0
  432. package/dist/utils/connection-error-handler.js +49 -0
  433. package/dist/utils/crash-log.d.ts +14 -0
  434. package/dist/utils/crash-log.js +19 -0
  435. package/dist/utils/file-helpers.d.ts +14 -0
  436. package/dist/utils/file-helpers.js +21 -0
  437. package/dist/utils/global-logs-path.d.ts +11 -0
  438. package/dist/utils/global-logs-path.js +37 -0
  439. package/dist/utils/process-logger.d.ts +53 -0
  440. package/dist/utils/process-logger.js +253 -0
  441. package/dist/utils/sandbox-detector.d.ts +31 -0
  442. package/dist/utils/sandbox-detector.js +122 -0
  443. package/oclif.manifest.json +10 -198
  444. package/package.json +5 -1
  445. package/dist/commands/cipher-agent/run.d.ts +0 -142
  446. package/dist/commands/cipher-agent/run.js +0 -555
  447. package/dist/commands/cipher-agent/set-prompt.d.ts +0 -16
  448. package/dist/commands/cipher-agent/set-prompt.js +0 -58
  449. package/dist/commands/cipher-agent/show-prompt.d.ts +0 -13
  450. package/dist/commands/cipher-agent/show-prompt.js +0 -53
  451. package/dist/commands/foo.d.ts +0 -14
  452. package/dist/commands/foo.js +0 -66
  453. package/dist/infra/cipher/agent-service-factory.d.ts +0 -93
  454. package/dist/infra/cipher/cipher-agent-state-manager.d.ts +0 -63
  455. package/dist/infra/cipher/cipher-agent-state-manager.js +0 -108
  456. package/dist/infra/cipher/cipher-agent.d.ts +0 -182
  457. package/dist/infra/cipher/cipher-agent.js +0 -317
  458. package/dist/infra/cipher/system-prompt/simple-prompt-factory.d.ts +0 -106
  459. package/dist/infra/cipher/system-prompt/simple-prompt-factory.js +0 -297
  460. package/dist/infra/cipher/tools/implementations/find-knowledge-topics-tool.d.ts +0 -7
  461. package/dist/infra/cipher/tools/implementations/find-knowledge-topics-tool.js +0 -424
  462. package/dist/resources/prompts/modes/autonomous.yml +0 -9
  463. package/dist/resources/prompts/query-context-tree-retrieval.yml +0 -48
  464. package/dist/tui/contexts/consumer.d.ts +0 -31
  465. package/dist/tui/contexts/consumer.js +0 -56
  466. package/dist/tui/hooks/use-consumer.d.ts +0 -12
  467. package/dist/tui/hooks/use-consumer.js +0 -50
  468. package/dist/tui/hooks/use-queue-polling.d.ts +0 -31
  469. package/dist/tui/hooks/use-queue-polling.js +0 -90
  470. /package/dist/tui/contexts/{use-commands.d.ts → commands-context.d.ts} +0 -0
  471. /package/dist/tui/contexts/{use-mode.d.ts → mode-context.d.ts} +0 -0
  472. /package/dist/tui/contexts/{use-mode.js → mode-context.js} +0 -0
  473. /package/dist/tui/contexts/{use-theme.d.ts → theme-context.d.ts} +0 -0
  474. /package/dist/tui/contexts/{use-theme.js → theme-context.js} +0 -0
@@ -0,0 +1,144 @@
1
+ import { SystemPromptErrorCode } from './system-prompt-error-codes.js';
2
+ /**
3
+ * Base error class for system prompt operations.
4
+ *
5
+ * All system prompt-specific errors use this class with factory methods.
6
+ */
7
+ export class SystemPromptError extends Error {
8
+ code;
9
+ details;
10
+ suggestion;
11
+ /**
12
+ * Creates a new system prompt error.
13
+ *
14
+ * @param message - Error message describing what went wrong
15
+ * @param code - Error code for categorization
16
+ * @param details - Additional error context
17
+ * @param suggestion - Optional recovery suggestion
18
+ */
19
+ constructor(message, code, details, suggestion) {
20
+ super(message);
21
+ this.name = 'SystemPromptError';
22
+ this.code = code;
23
+ this.details = details;
24
+ this.suggestion = suggestion;
25
+ }
26
+ /**
27
+ * Factory method: Cache operation failed.
28
+ *
29
+ * @param operation - The cache operation that failed (get, set, invalidate)
30
+ * @param reason - Reason for the failure
31
+ * @returns SystemPromptError instance
32
+ */
33
+ static cacheOperationFailed(operation, reason) {
34
+ return new SystemPromptError(`Cache ${operation} operation failed: ${reason}`, SystemPromptErrorCode.CACHE_OPERATION_FAILED, { operation, reason }, 'Clear the cache and retry, or check file system permissions.');
35
+ }
36
+ /**
37
+ * Factory method: Prompt configuration is invalid.
38
+ *
39
+ * @param reason - Reason why configuration is invalid
40
+ * @param validationErrors - Optional validation error details
41
+ * @returns SystemPromptError instance
42
+ */
43
+ static configInvalid(reason, validationErrors) {
44
+ return new SystemPromptError(`Invalid prompt configuration: ${reason}`, SystemPromptErrorCode.CONFIG_INVALID, { reason, validationErrors }, 'Review the prompt YAML structure and fix any schema violations.');
45
+ }
46
+ /**
47
+ * Factory method: Required field missing from configuration.
48
+ *
49
+ * @param field - Name of the missing field
50
+ * @param filepath - Path to the config file
51
+ * @returns SystemPromptError instance
52
+ */
53
+ static configMissingField(field, filepath) {
54
+ return new SystemPromptError(`Missing required field '${field}' in ${filepath}`, SystemPromptErrorCode.CONFIG_MISSING_FIELD, { field, filepath }, `Add the '${field}' field to the prompt configuration.`);
55
+ }
56
+ /**
57
+ * Factory method: Contributor execution failed.
58
+ *
59
+ * @param contributorId - ID of the failing contributor
60
+ * @param reason - Reason for the failure
61
+ * @returns SystemPromptError instance
62
+ */
63
+ static contributorExecutionFailed(contributorId, reason) {
64
+ return new SystemPromptError(`Contributor '${contributorId}' execution failed: ${reason}`, SystemPromptErrorCode.CONTRIBUTOR_EXECUTION_FAILED, { contributorId, reason }, 'Check contributor implementation and its dependencies.');
65
+ }
66
+ /**
67
+ * Factory method: Invalid contributor configuration.
68
+ *
69
+ * @param config - The invalid configuration object
70
+ * @returns SystemPromptError instance
71
+ */
72
+ static contributorInvalidConfig(config) {
73
+ return new SystemPromptError('Invalid contributor configuration', SystemPromptErrorCode.CONTRIBUTOR_INVALID_CONFIG, { config }, 'Verify contributor type and ensure all required fields are present.');
74
+ }
75
+ /**
76
+ * Factory method: Contributor not found in registry.
77
+ *
78
+ * @param contributorId - ID of the missing contributor
79
+ * @returns SystemPromptError instance
80
+ */
81
+ static contributorNotFound(contributorId) {
82
+ return new SystemPromptError(`Contributor not found: ${contributorId}`, SystemPromptErrorCode.CONTRIBUTOR_NOT_FOUND, { contributorId }, 'Register the contributor before using it in the configuration.');
83
+ }
84
+ /**
85
+ * Factory method: Prompt file not found.
86
+ *
87
+ * @param filepath - Path to the missing file
88
+ * @returns SystemPromptError instance
89
+ */
90
+ static fileNotFound(filepath) {
91
+ return new SystemPromptError(`Prompt file not found: ${filepath}`, SystemPromptErrorCode.FILE_NOT_FOUND, { filepath }, 'Check that the prompt file exists at the expected path.');
92
+ }
93
+ /**
94
+ * Factory method: Failed to read prompt file.
95
+ *
96
+ * @param filepath - Path to the file
97
+ * @param reason - Reason for the failure
98
+ * @returns SystemPromptError instance
99
+ */
100
+ static fileReadFailed(filepath, reason) {
101
+ return new SystemPromptError(`Failed to read prompt file ${filepath}: ${reason}`, SystemPromptErrorCode.FILE_READ_FAILED, { filepath, reason }, 'Check file permissions and encoding (UTF-8 expected).');
102
+ }
103
+ /**
104
+ * Factory method: File exceeds maximum allowed size.
105
+ *
106
+ * @param filepath - Path to the file
107
+ * @param size - Actual file size in bytes
108
+ * @param maxSize - Maximum allowed size in bytes
109
+ * @returns SystemPromptError instance
110
+ */
111
+ static fileTooLarge(filepath, size, maxSize) {
112
+ return new SystemPromptError(`File ${filepath} exceeds maximum size (${size} > ${maxSize} bytes)`, SystemPromptErrorCode.FILE_TOO_LARGE, { filepath, maxSize, size }, `Reduce file size to under ${maxSize} bytes.`);
113
+ }
114
+ /**
115
+ * Factory method: Invalid file type for prompt loading.
116
+ *
117
+ * @param filepath - Path to the invalid file
118
+ * @param allowedExtensions - List of allowed file extensions
119
+ * @returns SystemPromptError instance
120
+ */
121
+ static invalidFileType(filepath, allowedExtensions) {
122
+ return new SystemPromptError(`Invalid file type for ${filepath}. Expected: ${allowedExtensions.join(', ')}`, SystemPromptErrorCode.FILE_INVALID_TYPE, { allowedExtensions, filepath }, `Use one of the supported file types: ${allowedExtensions.join(', ')}`);
123
+ }
124
+ /**
125
+ * Factory method: Template rendering failed.
126
+ *
127
+ * @param reason - Reason for the failure
128
+ * @param templatePreview - Preview of the template (first 100 chars)
129
+ * @returns SystemPromptError instance
130
+ */
131
+ static templateRenderFailed(reason, templatePreview) {
132
+ return new SystemPromptError(`Template render failed: ${reason}`, SystemPromptErrorCode.TEMPLATE_RENDER_FAILED, { reason, templatePreview }, 'Check template syntax and ensure all variable placeholders are valid.');
133
+ }
134
+ /**
135
+ * Factory method: Required template variable is missing.
136
+ *
137
+ * @param variable - Name of the missing variable
138
+ * @param template - Path or identifier of the template
139
+ * @returns SystemPromptError instance
140
+ */
141
+ static templateVariableMissing(variable, template) {
142
+ return new SystemPromptError(`Missing required template variable '${variable}' in ${template}`, SystemPromptErrorCode.TEMPLATE_VARIABLE_MISSING, { template, variable }, `Provide a value for the '${variable}' variable in the build context.`);
143
+ }
144
+ }
@@ -77,18 +77,73 @@ export interface SearchOptions {
77
77
  /** Maximum number of matches to return */
78
78
  maxResults?: number;
79
79
  }
80
+ /**
81
+ * Options for listing directory contents.
82
+ */
83
+ export interface ListDirectoryOptions {
84
+ /** Additional glob patterns to ignore (merged with defaults) */
85
+ ignore?: string[];
86
+ /** Maximum number of files to return (default: 100) */
87
+ maxResults?: number;
88
+ }
89
+ /**
90
+ * Entry in directory listing.
91
+ */
92
+ export interface DirectoryEntry {
93
+ /** Whether this is a directory */
94
+ isDirectory: boolean;
95
+ /** Entry name (file or directory name, not full path) */
96
+ name: string;
97
+ /** Relative path from the listed directory */
98
+ path: string;
99
+ }
100
+ /**
101
+ * Result of a directory listing operation.
102
+ */
103
+ export interface ListDirectoryResult {
104
+ /** Total number of entries found */
105
+ count: number;
106
+ /** Array of directory entries */
107
+ entries: DirectoryEntry[];
108
+ /** Formatted tree output string */
109
+ tree: string;
110
+ /** Whether results were truncated */
111
+ truncated: boolean;
112
+ }
113
+ /**
114
+ * Attachment data for binary files (images, PDFs).
115
+ * Used to return base64-encoded content for multimodal LLM consumption.
116
+ */
117
+ export interface FileAttachment {
118
+ /** Base64-encoded file content */
119
+ base64: string;
120
+ /** Original file name */
121
+ fileName: string;
122
+ /** MIME type (e.g., 'image/png', 'application/pdf') */
123
+ mimeType: string;
124
+ }
80
125
  /**
81
126
  * Result of a file read operation.
82
127
  */
83
128
  export interface FileContent {
129
+ /** Attachment data for binary files (images, PDFs) */
130
+ attachment?: FileAttachment;
84
131
  /** File content as string */
85
132
  content: string;
86
133
  /** Character encoding used */
87
134
  encoding: string;
135
+ /** Formatted content with line numbers (00001| content format) */
136
+ formattedContent: string;
88
137
  /** Total number of lines in the returned content */
89
138
  lines: number;
139
+ /** Human-readable message about file status (truncation info, etc.) */
140
+ message: string;
141
+ /** Preview of content (first 20 lines) for UI display */
142
+ preview?: string;
90
143
  /** File size in bytes */
91
144
  size: number;
145
+ /** Total lines in the entire file */
146
+ totalLines: number;
92
147
  /** Whether content was truncated due to size/line limits */
93
148
  truncated: boolean;
94
149
  }
@@ -161,6 +216,8 @@ export interface SearchMatch {
161
216
  line: string;
162
217
  /** Line number (1-based) */
163
218
  lineNumber: number;
219
+ /** File modification time in milliseconds (for sorting by recency) */
220
+ mtime?: number;
164
221
  }
165
222
  /**
166
223
  * Result of a content search operation.
@@ -0,0 +1,51 @@
1
+ /**
2
+ * LLM Error Codes
3
+ *
4
+ * Centralized error codes for LLM-related operations.
5
+ * Following Dexto's pattern for typed error handling.
6
+ */
7
+ /**
8
+ * LLM-specific error codes.
9
+ */
10
+ export declare const LLMErrorCode: {
11
+ readonly API_KEY_INVALID: "LLM_API_KEY_INVALID";
12
+ readonly API_KEY_MISSING: "LLM_API_KEY_MISSING";
13
+ readonly BASE_URL_INVALID: "LLM_BASE_URL_INVALID";
14
+ readonly BASE_URL_MISSING: "LLM_BASE_URL_MISSING";
15
+ readonly COMPRESSION_FAILED: "LLM_COMPRESSION_FAILED";
16
+ readonly CONTEXT_OVERFLOW: "LLM_CONTEXT_OVERFLOW";
17
+ readonly GENERATION_FAILED: "LLM_GENERATION_FAILED";
18
+ readonly INPUT_FILE_UNSUPPORTED: "LLM_INPUT_FILE_UNSUPPORTED";
19
+ readonly INPUT_IMAGE_UNSUPPORTED: "LLM_INPUT_IMAGE_UNSUPPORTED";
20
+ readonly INPUT_TEXT_INVALID: "LLM_INPUT_TEXT_INVALID";
21
+ readonly MODEL_INCOMPATIBLE: "LLM_MODEL_INCOMPATIBLE";
22
+ readonly MODEL_UNKNOWN: "LLM_MODEL_UNKNOWN";
23
+ readonly PROVIDER_UNSUPPORTED: "LLM_PROVIDER_UNSUPPORTED";
24
+ readonly RATE_LIMIT_EXCEEDED: "LLM_RATE_LIMIT_EXCEEDED";
25
+ readonly REQUEST_INVALID_SCHEMA: "LLM_REQUEST_INVALID_SCHEMA";
26
+ readonly SWITCH_FAILED: "LLM_SWITCH_FAILED";
27
+ readonly SWITCH_INPUT_MISSING: "LLM_SWITCH_INPUT_MISSING";
28
+ readonly TOKENS_EXCEEDED: "LLM_TOKENS_EXCEEDED";
29
+ };
30
+ /**
31
+ * Type for LLM error codes.
32
+ */
33
+ export type LLMErrorCodeType = (typeof LLMErrorCode)[keyof typeof LLMErrorCode];
34
+ /**
35
+ * Error scope for categorizing errors.
36
+ */
37
+ export declare const ErrorScope: {
38
+ readonly CONFIG: "config";
39
+ readonly LLM: "llm";
40
+ readonly VALIDATION: "validation";
41
+ };
42
+ export type ErrorScopeType = (typeof ErrorScope)[keyof typeof ErrorScope];
43
+ /**
44
+ * Error type for categorizing error severity.
45
+ */
46
+ export declare const ErrorType: {
47
+ readonly SYSTEM: "system";
48
+ readonly TRANSIENT: "transient";
49
+ readonly USER: "user";
50
+ };
51
+ export type ErrorTypeValue = (typeof ErrorType)[keyof typeof ErrorType];
@@ -0,0 +1,51 @@
1
+ /**
2
+ * LLM Error Codes
3
+ *
4
+ * Centralized error codes for LLM-related operations.
5
+ * Following Dexto's pattern for typed error handling.
6
+ */
7
+ /**
8
+ * LLM-specific error codes.
9
+ */
10
+ export const LLMErrorCode = {
11
+ // Configuration errors
12
+ API_KEY_INVALID: 'LLM_API_KEY_INVALID',
13
+ API_KEY_MISSING: 'LLM_API_KEY_MISSING',
14
+ BASE_URL_INVALID: 'LLM_BASE_URL_INVALID',
15
+ BASE_URL_MISSING: 'LLM_BASE_URL_MISSING',
16
+ // Context errors
17
+ COMPRESSION_FAILED: 'LLM_COMPRESSION_FAILED',
18
+ CONTEXT_OVERFLOW: 'LLM_CONTEXT_OVERFLOW',
19
+ // Operation errors
20
+ GENERATION_FAILED: 'LLM_GENERATION_FAILED',
21
+ // Input validation errors
22
+ INPUT_FILE_UNSUPPORTED: 'LLM_INPUT_FILE_UNSUPPORTED',
23
+ INPUT_IMAGE_UNSUPPORTED: 'LLM_INPUT_IMAGE_UNSUPPORTED',
24
+ INPUT_TEXT_INVALID: 'LLM_INPUT_TEXT_INVALID',
25
+ // Model errors
26
+ MODEL_INCOMPATIBLE: 'LLM_MODEL_INCOMPATIBLE',
27
+ MODEL_UNKNOWN: 'LLM_MODEL_UNKNOWN',
28
+ PROVIDER_UNSUPPORTED: 'LLM_PROVIDER_UNSUPPORTED',
29
+ // Limit errors
30
+ RATE_LIMIT_EXCEEDED: 'LLM_RATE_LIMIT_EXCEEDED',
31
+ REQUEST_INVALID_SCHEMA: 'LLM_REQUEST_INVALID_SCHEMA',
32
+ SWITCH_FAILED: 'LLM_SWITCH_FAILED',
33
+ SWITCH_INPUT_MISSING: 'LLM_SWITCH_INPUT_MISSING',
34
+ TOKENS_EXCEEDED: 'LLM_TOKENS_EXCEEDED',
35
+ };
36
+ /**
37
+ * Error scope for categorizing errors.
38
+ */
39
+ export const ErrorScope = {
40
+ CONFIG: 'config',
41
+ LLM: 'llm',
42
+ VALIDATION: 'validation',
43
+ };
44
+ /**
45
+ * Error type for categorizing error severity.
46
+ */
47
+ export const ErrorType = {
48
+ SYSTEM: 'system', // System/infrastructure error
49
+ TRANSIENT: 'transient', // Temporary error (retry may help)
50
+ USER: 'user', // User-correctable error
51
+ };
@@ -0,0 +1,9 @@
1
+ /**
2
+ * LLM Domain Module
3
+ *
4
+ * Exports types, registry, and utilities for LLM provider abstraction.
5
+ */
6
+ export { ErrorScope, type ErrorScopeType, ErrorType, type ErrorTypeValue, LLMErrorCode, type LLMErrorCodeType, } from './error-codes.js';
7
+ export { acceptsAnyModel, DEFAULT_CHARS_PER_TOKEN, DEFAULT_MAX_INPUT_TOKENS, getCharsPerToken, getDefaultModelForProvider, getEffectiveMaxInputTokens, getMaxInputTokensForModel, getModelCapabilities, getModelInfo, getModelInfoWithFallback, getProviderFromModel, getSupportedFileTypesForModel, getSupportedModels, isValidProviderModel, LLM_REGISTRY, modelSupportsFileType, } from './registry.js';
8
+ export { type LLMConfig, LLMConfigBaseSchema, LLMConfigSchema, type LLMUpdates, LLMUpdatesSchema, safeParseLLMConfig, type ValidatedLLMConfig, validateLLMConfig, validateLLMUpdates, } from './schemas.js';
9
+ export { getAllowedMimeTypes, getFileTypeFromMimeType, isSupportedMimeType, LLM_PROVIDERS, type LLMContext, type LLMProvider, type LLMTokenUsage, MIME_TYPE_TO_FILE_TYPE, type ModelCapabilities, type ModelInfo, type ProviderInfo, SUPPORTED_FILE_TYPES, type SupportedFileType, } from './types.js';
@@ -0,0 +1,13 @@
1
+ /**
2
+ * LLM Domain Module
3
+ *
4
+ * Exports types, registry, and utilities for LLM provider abstraction.
5
+ */
6
+ // Error Codes
7
+ export { ErrorScope, ErrorType, LLMErrorCode, } from './error-codes.js';
8
+ // Registry
9
+ export { acceptsAnyModel, DEFAULT_CHARS_PER_TOKEN, DEFAULT_MAX_INPUT_TOKENS, getCharsPerToken, getDefaultModelForProvider, getEffectiveMaxInputTokens, getMaxInputTokensForModel, getModelCapabilities, getModelInfo, getModelInfoWithFallback, getProviderFromModel, getSupportedFileTypesForModel, getSupportedModels, isValidProviderModel, LLM_REGISTRY, modelSupportsFileType, } from './registry.js';
10
+ // Schemas
11
+ export { LLMConfigBaseSchema, LLMConfigSchema, LLMUpdatesSchema, safeParseLLMConfig, validateLLMConfig, validateLLMUpdates, } from './schemas.js';
12
+ // Types
13
+ export { getAllowedMimeTypes, getFileTypeFromMimeType, isSupportedMimeType, LLM_PROVIDERS, MIME_TYPE_TO_FILE_TYPE, SUPPORTED_FILE_TYPES, } from './types.js';
@@ -0,0 +1,113 @@
1
+ /**
2
+ * LLM Model Registry - Single Source of Truth for Model Metadata.
3
+ *
4
+ * This registry provides centralized model information including:
5
+ * - Context window sizes (maxInputTokens)
6
+ * - Character-per-token ratios for estimation
7
+ * - Supported file types for multimodal input
8
+ * - Model capabilities
9
+ *
10
+ * Following patterns from Dexto's LLM registry.
11
+ */
12
+ import { type LLMProvider, type ModelCapabilities, type ModelInfo, type ProviderInfo, type SupportedFileType } from './types.js';
13
+ /** Default fallback for unknown models */
14
+ export declare const DEFAULT_MAX_INPUT_TOKENS = 128000;
15
+ export declare const DEFAULT_CHARS_PER_TOKEN = 4;
16
+ /**
17
+ * LLM Model Registry
18
+ *
19
+ * IMPORTANT: supportedFileTypes is the SINGLE SOURCE OF TRUTH for file upload capabilities:
20
+ * - Empty array [] = Model does NOT support file uploads
21
+ * - Specific types ['image', 'pdf'] = Model supports ONLY those file types
22
+ */
23
+ export declare const LLM_REGISTRY: Record<LLMProvider, ProviderInfo>;
24
+ /**
25
+ * Get model information from the registry.
26
+ * @param provider - LLM provider
27
+ * @param model - Model name
28
+ * @returns ModelInfo or undefined if not found
29
+ */
30
+ export declare function getModelInfo(provider: LLMProvider, model: string): ModelInfo | undefined;
31
+ /**
32
+ * Get model info with fallback for unknown models.
33
+ * @param provider - LLM provider
34
+ * @param model - Model name
35
+ * @returns ModelInfo (falls back to default values for unknown models)
36
+ */
37
+ export declare function getModelInfoWithFallback(provider: LLMProvider, model: string): ModelInfo;
38
+ /**
39
+ * Get characters per token ratio for a model.
40
+ * @param provider - LLM provider
41
+ * @param model - Model name
42
+ * @returns Characters per token ratio
43
+ */
44
+ export declare function getCharsPerToken(provider: LLMProvider, model: string): number;
45
+ /**
46
+ * Get maximum input tokens for a model.
47
+ * @param provider - LLM provider
48
+ * @param model - Model name
49
+ * @returns Maximum input tokens
50
+ */
51
+ export declare function getMaxInputTokensForModel(provider: LLMProvider, model: string): number;
52
+ /**
53
+ * Check if a model is valid for a provider.
54
+ * @param provider - LLM provider
55
+ * @param model - Model name
56
+ * @returns true if the model is in the registry
57
+ */
58
+ export declare function isValidProviderModel(provider: LLMProvider, model: string): boolean;
59
+ /**
60
+ * Get supported models for a provider.
61
+ * @param provider - LLM provider
62
+ * @returns Array of model names
63
+ */
64
+ export declare function getSupportedModels(provider: LLMProvider): string[];
65
+ /**
66
+ * Get the default model for a provider.
67
+ * @param provider - LLM provider
68
+ * @returns Default model name
69
+ */
70
+ export declare function getDefaultModelForProvider(provider: LLMProvider): string;
71
+ /**
72
+ * Infer provider from model name.
73
+ * @param model - Model name
74
+ * @returns LLMProvider or undefined if not found
75
+ */
76
+ export declare function getProviderFromModel(model: string): LLMProvider | undefined;
77
+ /**
78
+ * Get supported file types for a model.
79
+ * @param provider - LLM provider
80
+ * @param model - Model name
81
+ * @returns Array of supported file types
82
+ */
83
+ export declare function getSupportedFileTypesForModel(provider: LLMProvider, model: string): SupportedFileType[];
84
+ /**
85
+ * Check if a model supports a specific file type.
86
+ * @param provider - LLM provider
87
+ * @param model - Model name
88
+ * @param fileType - File type to check
89
+ * @returns true if the model supports the file type
90
+ */
91
+ export declare function modelSupportsFileType(provider: LLMProvider, model: string, fileType: SupportedFileType): boolean;
92
+ /**
93
+ * Get model capabilities.
94
+ * @param provider - LLM provider
95
+ * @param model - Model name
96
+ * @returns ModelCapabilities
97
+ */
98
+ export declare function getModelCapabilities(provider: LLMProvider, model: string): ModelCapabilities;
99
+ /**
100
+ * Get effective max input tokens considering config override.
101
+ * @param provider - LLM provider
102
+ * @param model - Model name
103
+ * @param configuredMax - Optional configured max from user
104
+ * @returns Effective max input tokens (min of model limit and configured limit)
105
+ */
106
+ export declare function getEffectiveMaxInputTokens(provider: LLMProvider, model: string, configuredMax?: number): number;
107
+ /**
108
+ * Check if OpenRouter accepts any model (custom models).
109
+ * OpenRouter can route to many models not in our registry.
110
+ * @param provider - LLM provider
111
+ * @returns true if provider accepts arbitrary models
112
+ */
113
+ export declare function acceptsAnyModel(provider: LLMProvider): boolean;