byterover-cli 0.4.1 → 1.0.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 (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,379 @@
1
+ /**
2
+ * Error Normalizer
3
+ *
4
+ * Converts various error types into a unified, normalized format.
5
+ * Following the OpenCode pattern of MessageV2.fromError() for consistent
6
+ * error handling across providers.
7
+ *
8
+ * Key features:
9
+ * - Discriminated union for error types
10
+ * - Provider-agnostic error representation
11
+ * - Retryable error detection
12
+ * - Consistent error structure for UI consumption
13
+ */
14
+ import { LlmConfigurationError, LlmError, LlmGenerationError, LlmMaxIterationsError, LlmMissingToolExecutorError, LlmRateLimitError, LlmResponseParsingError, LlmToolExecutionError, } from './llm-error.js';
15
+ import { SessionCancelledError } from './session-error.js';
16
+ import { ToolError } from './tool-error.js';
17
+ /**
18
+ * Normalize abort-related errors.
19
+ */
20
+ function normalizeAbortError(error) {
21
+ if (error instanceof DOMException && error.name === 'AbortError') {
22
+ return {
23
+ message: error.message || 'Operation was aborted',
24
+ type: 'aborted',
25
+ };
26
+ }
27
+ if (error instanceof Error && error.name === 'AbortError') {
28
+ return {
29
+ message: error.message || 'Operation was aborted',
30
+ type: 'aborted',
31
+ };
32
+ }
33
+ if (error instanceof SessionCancelledError) {
34
+ return {
35
+ message: error.message,
36
+ type: 'aborted',
37
+ };
38
+ }
39
+ return null;
40
+ }
41
+ /**
42
+ * Normalize LLM rate limit errors.
43
+ */
44
+ function normalizeLlmRateLimitError(error, context) {
45
+ return {
46
+ message: error.message,
47
+ providerId: error.provider ?? context?.providerId ?? 'unknown',
48
+ retryAfter: error.retryAfter,
49
+ type: 'rate_limit',
50
+ };
51
+ }
52
+ /**
53
+ * Normalize LLM configuration errors.
54
+ */
55
+ function normalizeLlmConfigError(error, context) {
56
+ return {
57
+ configKey: error.configKey,
58
+ message: error.message,
59
+ providerId: error.provider ?? context?.providerId,
60
+ type: 'config',
61
+ };
62
+ }
63
+ /**
64
+ * Normalize LLM tool execution errors.
65
+ */
66
+ function normalizeLlmToolExecutionError(error) {
67
+ return {
68
+ message: error.message,
69
+ toolName: error.toolName,
70
+ type: 'tool',
71
+ };
72
+ }
73
+ /**
74
+ * Normalize LLM max iterations errors.
75
+ */
76
+ function normalizeLlmMaxIterationsError(error) {
77
+ return {
78
+ maxTokens: error.maxIterations,
79
+ message: error.message,
80
+ type: 'output_length',
81
+ };
82
+ }
83
+ /**
84
+ * Normalize LLM response parsing errors.
85
+ */
86
+ function normalizeLlmResponseParsingError(error, context) {
87
+ return {
88
+ isRetryable: false,
89
+ message: error.message,
90
+ model: error.model ?? context?.model,
91
+ providerId: error.provider ?? context?.providerId,
92
+ type: 'api',
93
+ };
94
+ }
95
+ /**
96
+ * Normalize LLM missing tool executor errors.
97
+ */
98
+ function normalizeLlmMissingToolExecutorError(error, context) {
99
+ return {
100
+ configKey: 'toolExecutor',
101
+ message: error.message,
102
+ providerId: error.provider ?? context?.providerId,
103
+ type: 'config',
104
+ };
105
+ }
106
+ /**
107
+ * Normalize LLM generation errors.
108
+ */
109
+ function normalizeLlmGenerationError(error, context) {
110
+ const isRetryable = isRetryableError(error);
111
+ return {
112
+ isRetryable,
113
+ message: error.message,
114
+ model: error.model ?? context?.model,
115
+ providerId: error.provider ?? context?.providerId,
116
+ type: 'api',
117
+ };
118
+ }
119
+ /**
120
+ * Normalize generic LLM errors.
121
+ */
122
+ function normalizeGenericLlmError(error, context) {
123
+ const isRetryable = isRetryableError(error);
124
+ return {
125
+ isRetryable,
126
+ message: error.message,
127
+ model: error.model ?? context?.model,
128
+ providerId: error.provider ?? context?.providerId,
129
+ type: 'api',
130
+ };
131
+ }
132
+ /**
133
+ * Normalize LLM-specific errors.
134
+ */
135
+ function normalizeLlmError(error, context) {
136
+ if (error instanceof LlmRateLimitError) {
137
+ return normalizeLlmRateLimitError(error, context);
138
+ }
139
+ if (error instanceof LlmConfigurationError) {
140
+ return normalizeLlmConfigError(error, context);
141
+ }
142
+ if (error instanceof LlmToolExecutionError) {
143
+ return normalizeLlmToolExecutionError(error);
144
+ }
145
+ if (error instanceof LlmMaxIterationsError) {
146
+ return normalizeLlmMaxIterationsError(error);
147
+ }
148
+ if (error instanceof LlmResponseParsingError) {
149
+ return normalizeLlmResponseParsingError(error, context);
150
+ }
151
+ if (error instanceof LlmMissingToolExecutorError) {
152
+ return normalizeLlmMissingToolExecutorError(error, context);
153
+ }
154
+ if (error instanceof LlmGenerationError) {
155
+ return normalizeLlmGenerationError(error, context);
156
+ }
157
+ if (error instanceof LlmError) {
158
+ return normalizeGenericLlmError(error, context);
159
+ }
160
+ return null;
161
+ }
162
+ /**
163
+ * Normalize tool-related errors.
164
+ */
165
+ function normalizeToolError(error) {
166
+ if (error instanceof ToolError) {
167
+ const toolName = error.details?.toolName ?? 'unknown';
168
+ return {
169
+ message: error.message,
170
+ toolName,
171
+ type: 'tool',
172
+ };
173
+ }
174
+ return null;
175
+ }
176
+ /**
177
+ * Normalize generic Error instances.
178
+ */
179
+ function normalizeGenericError(error, context) {
180
+ if (isAuthError(error)) {
181
+ return {
182
+ message: error.message,
183
+ providerId: context?.providerId ?? 'unknown',
184
+ type: 'auth',
185
+ };
186
+ }
187
+ if (isRateLimitPattern(error.message)) {
188
+ return {
189
+ message: error.message,
190
+ providerId: context?.providerId ?? 'unknown',
191
+ type: 'rate_limit',
192
+ };
193
+ }
194
+ return {
195
+ message: error.message,
196
+ originalError: error,
197
+ type: 'unknown',
198
+ };
199
+ }
200
+ /**
201
+ * Normalize any error into a consistent format.
202
+ *
203
+ * This function handles all known error types and converts them
204
+ * to a unified NormalizedError format for consistent handling.
205
+ *
206
+ * @param error - The error to normalize
207
+ * @param context - Optional context about the operation
208
+ * @returns Normalized error with consistent structure
209
+ *
210
+ * @example
211
+ * ```typescript
212
+ * try {
213
+ * await llm.generate(prompt)
214
+ * } catch (error) {
215
+ * const normalized = normalizeError(error, { providerId: 'claude' })
216
+ *
217
+ * switch (normalized.type) {
218
+ * case 'rate_limit':
219
+ * await sleep(normalized.retryAfter * 1000)
220
+ * break
221
+ * case 'auth':
222
+ * showLoginPrompt()
223
+ * break
224
+ * default:
225
+ * logError(normalized.message)
226
+ * }
227
+ * }
228
+ * ```
229
+ */
230
+ export function normalizeError(error, context) {
231
+ if (error === null || error === undefined) {
232
+ return {
233
+ message: 'Unknown error occurred',
234
+ type: 'unknown',
235
+ };
236
+ }
237
+ const abortError = normalizeAbortError(error);
238
+ if (abortError) {
239
+ return abortError;
240
+ }
241
+ const llmError = normalizeLlmError(error, context);
242
+ if (llmError) {
243
+ return llmError;
244
+ }
245
+ const toolError = normalizeToolError(error);
246
+ if (toolError) {
247
+ return toolError;
248
+ }
249
+ if (error instanceof Error) {
250
+ return normalizeGenericError(error, context);
251
+ }
252
+ if (typeof error === 'string') {
253
+ return {
254
+ message: error,
255
+ type: 'unknown',
256
+ };
257
+ }
258
+ if (typeof error === 'object' && 'message' in error && typeof error.message === 'string') {
259
+ return {
260
+ message: error.message,
261
+ type: 'unknown',
262
+ };
263
+ }
264
+ return {
265
+ message: String(error),
266
+ type: 'unknown',
267
+ };
268
+ }
269
+ /**
270
+ * Check if an error is retryable.
271
+ */
272
+ function isRetryableError(error) {
273
+ const message = error.message.toLowerCase();
274
+ // Network errors are usually retryable
275
+ if (message.includes('network') || message.includes('timeout') || message.includes('econnreset')) {
276
+ return true;
277
+ }
278
+ // Server errors (5xx) are usually retryable
279
+ if (message.includes('500') || message.includes('502') || message.includes('503') || message.includes('504')) {
280
+ return true;
281
+ }
282
+ // Rate limits are retryable
283
+ if (message.includes('rate limit') || message.includes('too many requests') || message.includes('429')) {
284
+ return true;
285
+ }
286
+ // Overloaded errors are retryable
287
+ if (message.includes('overloaded') || message.includes('capacity')) {
288
+ return true;
289
+ }
290
+ return false;
291
+ }
292
+ /**
293
+ * Check if an error looks like an auth error.
294
+ */
295
+ function isAuthError(error) {
296
+ const message = error.message.toLowerCase();
297
+ return (message.includes('unauthorized') ||
298
+ message.includes('authentication') ||
299
+ message.includes('api key') ||
300
+ message.includes('invalid key') ||
301
+ message.includes('401') ||
302
+ message.includes('403'));
303
+ }
304
+ /**
305
+ * Check if a message looks like a rate limit error.
306
+ */
307
+ function isRateLimitPattern(message) {
308
+ const lower = message.toLowerCase();
309
+ return (lower.includes('rate limit') ||
310
+ lower.includes('too many requests') ||
311
+ lower.includes('429') ||
312
+ lower.includes('quota exceeded'));
313
+ }
314
+ /**
315
+ * Check if a normalized error is retryable.
316
+ */
317
+ export function isNormalizedErrorRetryable(error) {
318
+ switch (error.type) {
319
+ case 'aborted': {
320
+ return false;
321
+ }
322
+ case 'api': {
323
+ return error.isRetryable;
324
+ }
325
+ case 'auth': {
326
+ return false;
327
+ }
328
+ case 'config': {
329
+ return false;
330
+ }
331
+ case 'output_length': {
332
+ return false;
333
+ }
334
+ case 'rate_limit': {
335
+ return true;
336
+ }
337
+ case 'tool': {
338
+ return false;
339
+ }
340
+ case 'unknown': {
341
+ return false;
342
+ }
343
+ }
344
+ }
345
+ /**
346
+ * Get a user-friendly message for a normalized error.
347
+ */
348
+ export function getErrorDisplayMessage(error) {
349
+ switch (error.type) {
350
+ case 'aborted': {
351
+ return 'Operation was cancelled.';
352
+ }
353
+ case 'api': {
354
+ return error.isRetryable
355
+ ? 'Temporary error. Please try again.'
356
+ : `API error: ${error.message}`;
357
+ }
358
+ case 'auth': {
359
+ return `Authentication failed with ${error.providerId}. Please check your API key.`;
360
+ }
361
+ case 'config': {
362
+ return `Configuration error: ${error.message}`;
363
+ }
364
+ case 'output_length': {
365
+ return 'Response was too long and was truncated.';
366
+ }
367
+ case 'rate_limit': {
368
+ return error.retryAfter
369
+ ? `Rate limit exceeded. Retry in ${error.retryAfter} seconds.`
370
+ : 'Rate limit exceeded. Please wait and try again.';
371
+ }
372
+ case 'tool': {
373
+ return `Tool "${error.toolName}" failed: ${error.message}`;
374
+ }
375
+ case 'unknown': {
376
+ return error.message || 'An unexpected error occurred.';
377
+ }
378
+ }
379
+ }
@@ -20,8 +20,9 @@ export declare class FileNotFoundError extends FileSystemError {
20
20
  /**
21
21
  * Creates a new file not found error
22
22
  * @param path - Path to the file that was not found
23
+ * @param customMessage - Optional custom message (e.g., with suggestions)
23
24
  */
24
- constructor(path: string);
25
+ constructor(path: string, customMessage?: string);
25
26
  }
26
27
  /**
27
28
  * Error thrown when a directory is not found.
@@ -25,9 +25,10 @@ export class FileNotFoundError extends FileSystemError {
25
25
  /**
26
26
  * Creates a new file not found error
27
27
  * @param path - Path to the file that was not found
28
+ * @param customMessage - Optional custom message (e.g., with suggestions)
28
29
  */
29
- constructor(path) {
30
- super(`File not found: ${path}`, 'FILE_NOT_FOUND', { path });
30
+ constructor(path, customMessage) {
31
+ super(customMessage ?? `File not found: ${path}`, 'FILE_NOT_FOUND', { path });
31
32
  this.name = 'FileNotFoundError';
32
33
  }
33
34
  }
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Error codes for system prompt operations.
3
+ *
4
+ * Used by SystemPromptError factory to create structured error objects.
5
+ */
6
+ export declare enum SystemPromptErrorCode {
7
+ /**
8
+ * Cache operation failed.
9
+ *
10
+ * Error during cache read, write, or invalidation.
11
+ */
12
+ CACHE_OPERATION_FAILED = "CACHE_OPERATION_FAILED",
13
+ /**
14
+ * Prompt configuration is invalid.
15
+ *
16
+ * YAML structure doesn't match expected schema.
17
+ */
18
+ CONFIG_INVALID = "CONFIG_INVALID",
19
+ /**
20
+ * Required field missing from configuration.
21
+ *
22
+ * A mandatory field like 'prompt' or 'prompts' is not present.
23
+ */
24
+ CONFIG_MISSING_FIELD = "CONFIG_MISSING_FIELD",
25
+ /**
26
+ * Contributor execution failed.
27
+ *
28
+ * Error occurred while generating contributor content.
29
+ */
30
+ CONTRIBUTOR_EXECUTION_FAILED = "CONTRIBUTOR_EXECUTION_FAILED",
31
+ /**
32
+ * Invalid contributor configuration.
33
+ *
34
+ * Contributor config doesn't match expected structure.
35
+ */
36
+ CONTRIBUTOR_INVALID_CONFIG = "CONTRIBUTOR_INVALID_CONFIG",
37
+ /**
38
+ * Contributor not found in registry.
39
+ *
40
+ * The specified contributor ID is not registered.
41
+ */
42
+ CONTRIBUTOR_NOT_FOUND = "CONTRIBUTOR_NOT_FOUND",
43
+ /**
44
+ * Invalid file type for prompt loading.
45
+ *
46
+ * File extension is not in the allowed list (e.g., .yml, .yaml).
47
+ */
48
+ FILE_INVALID_TYPE = "FILE_INVALID_TYPE",
49
+ /**
50
+ * Prompt file not found.
51
+ *
52
+ * The specified YAML prompt file does not exist at the expected path.
53
+ */
54
+ FILE_NOT_FOUND = "FILE_NOT_FOUND",
55
+ /**
56
+ * Failed to read prompt file.
57
+ *
58
+ * I/O error when attempting to read file contents.
59
+ */
60
+ FILE_READ_FAILED = "FILE_READ_FAILED",
61
+ /**
62
+ * File exceeds maximum allowed size.
63
+ *
64
+ * Prompt files have a size limit to prevent memory issues.
65
+ */
66
+ FILE_TOO_LARGE = "FILE_TOO_LARGE",
67
+ /**
68
+ * Template rendering failed.
69
+ *
70
+ * Error during variable substitution in template.
71
+ */
72
+ TEMPLATE_RENDER_FAILED = "TEMPLATE_RENDER_FAILED",
73
+ /**
74
+ * Required template variable is missing.
75
+ *
76
+ * A placeholder in the template has no corresponding value.
77
+ */
78
+ TEMPLATE_VARIABLE_MISSING = "TEMPLATE_VARIABLE_MISSING"
79
+ }
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Error codes for system prompt operations.
3
+ *
4
+ * Used by SystemPromptError factory to create structured error objects.
5
+ */
6
+ export var SystemPromptErrorCode;
7
+ (function (SystemPromptErrorCode) {
8
+ /**
9
+ * Cache operation failed.
10
+ *
11
+ * Error during cache read, write, or invalidation.
12
+ */
13
+ SystemPromptErrorCode["CACHE_OPERATION_FAILED"] = "CACHE_OPERATION_FAILED";
14
+ /**
15
+ * Prompt configuration is invalid.
16
+ *
17
+ * YAML structure doesn't match expected schema.
18
+ */
19
+ SystemPromptErrorCode["CONFIG_INVALID"] = "CONFIG_INVALID";
20
+ /**
21
+ * Required field missing from configuration.
22
+ *
23
+ * A mandatory field like 'prompt' or 'prompts' is not present.
24
+ */
25
+ SystemPromptErrorCode["CONFIG_MISSING_FIELD"] = "CONFIG_MISSING_FIELD";
26
+ /**
27
+ * Contributor execution failed.
28
+ *
29
+ * Error occurred while generating contributor content.
30
+ */
31
+ SystemPromptErrorCode["CONTRIBUTOR_EXECUTION_FAILED"] = "CONTRIBUTOR_EXECUTION_FAILED";
32
+ /**
33
+ * Invalid contributor configuration.
34
+ *
35
+ * Contributor config doesn't match expected structure.
36
+ */
37
+ SystemPromptErrorCode["CONTRIBUTOR_INVALID_CONFIG"] = "CONTRIBUTOR_INVALID_CONFIG";
38
+ /**
39
+ * Contributor not found in registry.
40
+ *
41
+ * The specified contributor ID is not registered.
42
+ */
43
+ SystemPromptErrorCode["CONTRIBUTOR_NOT_FOUND"] = "CONTRIBUTOR_NOT_FOUND";
44
+ /**
45
+ * Invalid file type for prompt loading.
46
+ *
47
+ * File extension is not in the allowed list (e.g., .yml, .yaml).
48
+ */
49
+ SystemPromptErrorCode["FILE_INVALID_TYPE"] = "FILE_INVALID_TYPE";
50
+ /**
51
+ * Prompt file not found.
52
+ *
53
+ * The specified YAML prompt file does not exist at the expected path.
54
+ */
55
+ SystemPromptErrorCode["FILE_NOT_FOUND"] = "FILE_NOT_FOUND";
56
+ /**
57
+ * Failed to read prompt file.
58
+ *
59
+ * I/O error when attempting to read file contents.
60
+ */
61
+ SystemPromptErrorCode["FILE_READ_FAILED"] = "FILE_READ_FAILED";
62
+ /**
63
+ * File exceeds maximum allowed size.
64
+ *
65
+ * Prompt files have a size limit to prevent memory issues.
66
+ */
67
+ SystemPromptErrorCode["FILE_TOO_LARGE"] = "FILE_TOO_LARGE";
68
+ /**
69
+ * Template rendering failed.
70
+ *
71
+ * Error during variable substitution in template.
72
+ */
73
+ SystemPromptErrorCode["TEMPLATE_RENDER_FAILED"] = "TEMPLATE_RENDER_FAILED";
74
+ /**
75
+ * Required template variable is missing.
76
+ *
77
+ * A placeholder in the template has no corresponding value.
78
+ */
79
+ SystemPromptErrorCode["TEMPLATE_VARIABLE_MISSING"] = "TEMPLATE_VARIABLE_MISSING";
80
+ })(SystemPromptErrorCode || (SystemPromptErrorCode = {}));
@@ -0,0 +1,114 @@
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 declare class SystemPromptError extends Error {
8
+ readonly code: SystemPromptErrorCode;
9
+ readonly details?: Record<string, unknown>;
10
+ readonly suggestion?: string;
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: string, code: SystemPromptErrorCode, details?: Record<string, unknown>, suggestion?: string);
20
+ /**
21
+ * Factory method: Cache operation failed.
22
+ *
23
+ * @param operation - The cache operation that failed (get, set, invalidate)
24
+ * @param reason - Reason for the failure
25
+ * @returns SystemPromptError instance
26
+ */
27
+ static cacheOperationFailed(operation: string, reason: string): SystemPromptError;
28
+ /**
29
+ * Factory method: Prompt configuration is invalid.
30
+ *
31
+ * @param reason - Reason why configuration is invalid
32
+ * @param validationErrors - Optional validation error details
33
+ * @returns SystemPromptError instance
34
+ */
35
+ static configInvalid(reason: string, validationErrors?: unknown): SystemPromptError;
36
+ /**
37
+ * Factory method: Required field missing from configuration.
38
+ *
39
+ * @param field - Name of the missing field
40
+ * @param filepath - Path to the config file
41
+ * @returns SystemPromptError instance
42
+ */
43
+ static configMissingField(field: string, filepath: string): SystemPromptError;
44
+ /**
45
+ * Factory method: Contributor execution failed.
46
+ *
47
+ * @param contributorId - ID of the failing contributor
48
+ * @param reason - Reason for the failure
49
+ * @returns SystemPromptError instance
50
+ */
51
+ static contributorExecutionFailed(contributorId: string, reason: string): SystemPromptError;
52
+ /**
53
+ * Factory method: Invalid contributor configuration.
54
+ *
55
+ * @param config - The invalid configuration object
56
+ * @returns SystemPromptError instance
57
+ */
58
+ static contributorInvalidConfig(config: unknown): SystemPromptError;
59
+ /**
60
+ * Factory method: Contributor not found in registry.
61
+ *
62
+ * @param contributorId - ID of the missing contributor
63
+ * @returns SystemPromptError instance
64
+ */
65
+ static contributorNotFound(contributorId: string): SystemPromptError;
66
+ /**
67
+ * Factory method: Prompt file not found.
68
+ *
69
+ * @param filepath - Path to the missing file
70
+ * @returns SystemPromptError instance
71
+ */
72
+ static fileNotFound(filepath: string): SystemPromptError;
73
+ /**
74
+ * Factory method: Failed to read prompt file.
75
+ *
76
+ * @param filepath - Path to the file
77
+ * @param reason - Reason for the failure
78
+ * @returns SystemPromptError instance
79
+ */
80
+ static fileReadFailed(filepath: string, reason: string): SystemPromptError;
81
+ /**
82
+ * Factory method: File exceeds maximum allowed size.
83
+ *
84
+ * @param filepath - Path to the file
85
+ * @param size - Actual file size in bytes
86
+ * @param maxSize - Maximum allowed size in bytes
87
+ * @returns SystemPromptError instance
88
+ */
89
+ static fileTooLarge(filepath: string, size: number, maxSize: number): SystemPromptError;
90
+ /**
91
+ * Factory method: Invalid file type for prompt loading.
92
+ *
93
+ * @param filepath - Path to the invalid file
94
+ * @param allowedExtensions - List of allowed file extensions
95
+ * @returns SystemPromptError instance
96
+ */
97
+ static invalidFileType(filepath: string, allowedExtensions: string[]): SystemPromptError;
98
+ /**
99
+ * Factory method: Template rendering failed.
100
+ *
101
+ * @param reason - Reason for the failure
102
+ * @param templatePreview - Preview of the template (first 100 chars)
103
+ * @returns SystemPromptError instance
104
+ */
105
+ static templateRenderFailed(reason: string, templatePreview?: string): SystemPromptError;
106
+ /**
107
+ * Factory method: Required template variable is missing.
108
+ *
109
+ * @param variable - Name of the missing variable
110
+ * @param template - Path or identifier of the template
111
+ * @returns SystemPromptError instance
112
+ */
113
+ static templateVariableMissing(variable: string, template: string): SystemPromptError;
114
+ }