@dreb/coding-agent 1.16.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 (809) hide show
  1. package/CHANGELOG.md +3316 -0
  2. package/README.md +657 -0
  3. package/agents/code-reviewer.md +55 -0
  4. package/agents/completeness-checker.md +71 -0
  5. package/agents/error-auditor.md +65 -0
  6. package/agents/explore.md +13 -0
  7. package/agents/feature-dev.md +23 -0
  8. package/agents/independent-assessor.md +61 -0
  9. package/agents/sandbox.md +14 -0
  10. package/agents/simplifier.md +69 -0
  11. package/agents/test-reviewer.md +63 -0
  12. package/dist/bun/cli.d.ts +3 -0
  13. package/dist/bun/cli.d.ts.map +1 -0
  14. package/dist/bun/cli.js +7 -0
  15. package/dist/bun/cli.js.map +1 -0
  16. package/dist/bun/register-bedrock.d.ts +2 -0
  17. package/dist/bun/register-bedrock.d.ts.map +1 -0
  18. package/dist/bun/register-bedrock.js +4 -0
  19. package/dist/bun/register-bedrock.js.map +1 -0
  20. package/dist/cli/args.d.ts +50 -0
  21. package/dist/cli/args.d.ts.map +1 -0
  22. package/dist/cli/args.js +310 -0
  23. package/dist/cli/args.js.map +1 -0
  24. package/dist/cli/config-selector.d.ts +14 -0
  25. package/dist/cli/config-selector.d.ts.map +1 -0
  26. package/dist/cli/config-selector.js +31 -0
  27. package/dist/cli/config-selector.js.map +1 -0
  28. package/dist/cli/file-processor.d.ts +15 -0
  29. package/dist/cli/file-processor.d.ts.map +1 -0
  30. package/dist/cli/file-processor.js +83 -0
  31. package/dist/cli/file-processor.js.map +1 -0
  32. package/dist/cli/initial-message.d.ts +18 -0
  33. package/dist/cli/initial-message.d.ts.map +1 -0
  34. package/dist/cli/initial-message.js +22 -0
  35. package/dist/cli/initial-message.js.map +1 -0
  36. package/dist/cli/list-models.d.ts +9 -0
  37. package/dist/cli/list-models.d.ts.map +1 -0
  38. package/dist/cli/list-models.js +92 -0
  39. package/dist/cli/list-models.js.map +1 -0
  40. package/dist/cli/session-picker.d.ts +9 -0
  41. package/dist/cli/session-picker.d.ts.map +1 -0
  42. package/dist/cli/session-picker.js +35 -0
  43. package/dist/cli/session-picker.js.map +1 -0
  44. package/dist/cli.d.ts +3 -0
  45. package/dist/cli.d.ts.map +1 -0
  46. package/dist/cli.js +14 -0
  47. package/dist/cli.js.map +1 -0
  48. package/dist/config.d.ts +76 -0
  49. package/dist/config.d.ts.map +1 -0
  50. package/dist/config.js +234 -0
  51. package/dist/config.js.map +1 -0
  52. package/dist/core/agent-session.d.ts +658 -0
  53. package/dist/core/agent-session.d.ts.map +1 -0
  54. package/dist/core/agent-session.js +2898 -0
  55. package/dist/core/agent-session.js.map +1 -0
  56. package/dist/core/auth-storage.d.ts +130 -0
  57. package/dist/core/auth-storage.d.ts.map +1 -0
  58. package/dist/core/auth-storage.js +421 -0
  59. package/dist/core/auth-storage.js.map +1 -0
  60. package/dist/core/bash-executor.d.ts +46 -0
  61. package/dist/core/bash-executor.d.ts.map +1 -0
  62. package/dist/core/bash-executor.js +113 -0
  63. package/dist/core/bash-executor.js.map +1 -0
  64. package/dist/core/buddy/buddy-controller.d.ts +139 -0
  65. package/dist/core/buddy/buddy-controller.d.ts.map +1 -0
  66. package/dist/core/buddy/buddy-controller.js +428 -0
  67. package/dist/core/buddy/buddy-controller.js.map +1 -0
  68. package/dist/core/buddy/buddy-manager.d.ts +68 -0
  69. package/dist/core/buddy/buddy-manager.d.ts.map +1 -0
  70. package/dist/core/buddy/buddy-manager.js +399 -0
  71. package/dist/core/buddy/buddy-manager.js.map +1 -0
  72. package/dist/core/buddy/buddy-prng.d.ts +28 -0
  73. package/dist/core/buddy/buddy-prng.d.ts.map +1 -0
  74. package/dist/core/buddy/buddy-prng.js +65 -0
  75. package/dist/core/buddy/buddy-prng.js.map +1 -0
  76. package/dist/core/buddy/buddy-species.d.ts +37 -0
  77. package/dist/core/buddy/buddy-species.d.ts.map +1 -0
  78. package/dist/core/buddy/buddy-species.js +287 -0
  79. package/dist/core/buddy/buddy-species.js.map +1 -0
  80. package/dist/core/buddy/buddy-types.d.ts +58 -0
  81. package/dist/core/buddy/buddy-types.d.ts.map +1 -0
  82. package/dist/core/buddy/buddy-types.js +46 -0
  83. package/dist/core/buddy/buddy-types.js.map +1 -0
  84. package/dist/core/buddy/index.d.ts +7 -0
  85. package/dist/core/buddy/index.d.ts.map +1 -0
  86. package/dist/core/buddy/index.js +6 -0
  87. package/dist/core/buddy/index.js.map +1 -0
  88. package/dist/core/compaction/branch-summarization.d.ts +86 -0
  89. package/dist/core/compaction/branch-summarization.d.ts.map +1 -0
  90. package/dist/core/compaction/branch-summarization.js +243 -0
  91. package/dist/core/compaction/branch-summarization.js.map +1 -0
  92. package/dist/core/compaction/compaction.d.ts +121 -0
  93. package/dist/core/compaction/compaction.d.ts.map +1 -0
  94. package/dist/core/compaction/compaction.js +612 -0
  95. package/dist/core/compaction/compaction.js.map +1 -0
  96. package/dist/core/compaction/index.d.ts +7 -0
  97. package/dist/core/compaction/index.d.ts.map +1 -0
  98. package/dist/core/compaction/index.js +7 -0
  99. package/dist/core/compaction/index.js.map +1 -0
  100. package/dist/core/compaction/utils.d.ts +38 -0
  101. package/dist/core/compaction/utils.d.ts.map +1 -0
  102. package/dist/core/compaction/utils.js +153 -0
  103. package/dist/core/compaction/utils.js.map +1 -0
  104. package/dist/core/defaults.d.ts +3 -0
  105. package/dist/core/defaults.d.ts.map +1 -0
  106. package/dist/core/defaults.js +2 -0
  107. package/dist/core/defaults.js.map +1 -0
  108. package/dist/core/diagnostics.d.ts +15 -0
  109. package/dist/core/diagnostics.d.ts.map +1 -0
  110. package/dist/core/diagnostics.js +2 -0
  111. package/dist/core/diagnostics.js.map +1 -0
  112. package/dist/core/event-bus.d.ts +9 -0
  113. package/dist/core/event-bus.d.ts.map +1 -0
  114. package/dist/core/event-bus.js +25 -0
  115. package/dist/core/event-bus.js.map +1 -0
  116. package/dist/core/exec.d.ts +29 -0
  117. package/dist/core/exec.d.ts.map +1 -0
  118. package/dist/core/exec.js +75 -0
  119. package/dist/core/exec.js.map +1 -0
  120. package/dist/core/export-html/ansi-to-html.d.ts +22 -0
  121. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -0
  122. package/dist/core/export-html/ansi-to-html.js +249 -0
  123. package/dist/core/export-html/ansi-to-html.js.map +1 -0
  124. package/dist/core/export-html/index.d.ts +37 -0
  125. package/dist/core/export-html/index.d.ts.map +1 -0
  126. package/dist/core/export-html/index.js +224 -0
  127. package/dist/core/export-html/index.js.map +1 -0
  128. package/dist/core/export-html/template.css +1001 -0
  129. package/dist/core/export-html/template.html +55 -0
  130. package/dist/core/export-html/template.js +1690 -0
  131. package/dist/core/export-html/tool-renderer.d.ts +38 -0
  132. package/dist/core/export-html/tool-renderer.d.ts.map +1 -0
  133. package/dist/core/export-html/tool-renderer.js +95 -0
  134. package/dist/core/export-html/tool-renderer.js.map +1 -0
  135. package/dist/core/export-html/vendor/highlight.min.js +1213 -0
  136. package/dist/core/export-html/vendor/marked.min.js +6 -0
  137. package/dist/core/extensions/index.d.ts +12 -0
  138. package/dist/core/extensions/index.d.ts.map +1 -0
  139. package/dist/core/extensions/index.js +9 -0
  140. package/dist/core/extensions/index.js.map +1 -0
  141. package/dist/core/extensions/loader.d.ts +25 -0
  142. package/dist/core/extensions/loader.d.ts.map +1 -0
  143. package/dist/core/extensions/loader.js +436 -0
  144. package/dist/core/extensions/loader.js.map +1 -0
  145. package/dist/core/extensions/runner.d.ts +147 -0
  146. package/dist/core/extensions/runner.d.ts.map +1 -0
  147. package/dist/core/extensions/runner.js +696 -0
  148. package/dist/core/extensions/runner.js.map +1 -0
  149. package/dist/core/extensions/types.d.ts +1072 -0
  150. package/dist/core/extensions/types.d.ts.map +1 -0
  151. package/dist/core/extensions/types.js +35 -0
  152. package/dist/core/extensions/types.js.map +1 -0
  153. package/dist/core/extensions/wrapper.d.ts +20 -0
  154. package/dist/core/extensions/wrapper.d.ts.map +1 -0
  155. package/dist/core/extensions/wrapper.js +22 -0
  156. package/dist/core/extensions/wrapper.js.map +1 -0
  157. package/dist/core/footer-data-provider.d.ts +44 -0
  158. package/dist/core/footer-data-provider.d.ts.map +1 -0
  159. package/dist/core/footer-data-provider.js +252 -0
  160. package/dist/core/footer-data-provider.js.map +1 -0
  161. package/dist/core/forbidden-commands.d.ts +31 -0
  162. package/dist/core/forbidden-commands.d.ts.map +1 -0
  163. package/dist/core/forbidden-commands.js +184 -0
  164. package/dist/core/forbidden-commands.js.map +1 -0
  165. package/dist/core/git-root.d.ts +6 -0
  166. package/dist/core/git-root.d.ts.map +1 -0
  167. package/dist/core/git-root.js +32 -0
  168. package/dist/core/git-root.js.map +1 -0
  169. package/dist/core/index.d.ts +10 -0
  170. package/dist/core/index.d.ts.map +1 -0
  171. package/dist/core/index.js +10 -0
  172. package/dist/core/index.js.map +1 -0
  173. package/dist/core/keybindings.d.ts +280 -0
  174. package/dist/core/keybindings.d.ts.map +1 -0
  175. package/dist/core/keybindings.js +245 -0
  176. package/dist/core/keybindings.js.map +1 -0
  177. package/dist/core/memory-prompt.d.ts +10 -0
  178. package/dist/core/memory-prompt.d.ts.map +1 -0
  179. package/dist/core/memory-prompt.js +95 -0
  180. package/dist/core/memory-prompt.js.map +1 -0
  181. package/dist/core/messages.d.ts +77 -0
  182. package/dist/core/messages.d.ts.map +1 -0
  183. package/dist/core/messages.js +123 -0
  184. package/dist/core/messages.js.map +1 -0
  185. package/dist/core/model-registry.d.ts +114 -0
  186. package/dist/core/model-registry.d.ts.map +1 -0
  187. package/dist/core/model-registry.js +563 -0
  188. package/dist/core/model-registry.js.map +1 -0
  189. package/dist/core/model-resolver.d.ts +116 -0
  190. package/dist/core/model-resolver.d.ts.map +1 -0
  191. package/dist/core/model-resolver.js +465 -0
  192. package/dist/core/model-resolver.js.map +1 -0
  193. package/dist/core/output-guard.d.ts +6 -0
  194. package/dist/core/output-guard.d.ts.map +1 -0
  195. package/dist/core/output-guard.js +59 -0
  196. package/dist/core/output-guard.js.map +1 -0
  197. package/dist/core/package-manager.d.ts +172 -0
  198. package/dist/core/package-manager.d.ts.map +1 -0
  199. package/dist/core/package-manager.js +1767 -0
  200. package/dist/core/package-manager.js.map +1 -0
  201. package/dist/core/prompt-templates.d.ts +51 -0
  202. package/dist/core/prompt-templates.d.ts.map +1 -0
  203. package/dist/core/prompt-templates.js +251 -0
  204. package/dist/core/prompt-templates.js.map +1 -0
  205. package/dist/core/resolve-config-value.d.ts +17 -0
  206. package/dist/core/resolve-config-value.d.ts.map +1 -0
  207. package/dist/core/resolve-config-value.js +94 -0
  208. package/dist/core/resolve-config-value.js.map +1 -0
  209. package/dist/core/resource-loader.d.ts +205 -0
  210. package/dist/core/resource-loader.d.ts.map +1 -0
  211. package/dist/core/resource-loader.js +866 -0
  212. package/dist/core/resource-loader.js.map +1 -0
  213. package/dist/core/sdk.d.ts +92 -0
  214. package/dist/core/sdk.d.ts.map +1 -0
  215. package/dist/core/sdk.js +258 -0
  216. package/dist/core/sdk.js.map +1 -0
  217. package/dist/core/search/chunker.d.ts +21 -0
  218. package/dist/core/search/chunker.d.ts.map +1 -0
  219. package/dist/core/search/chunker.js +51 -0
  220. package/dist/core/search/chunker.js.map +1 -0
  221. package/dist/core/search/db.d.ts +89 -0
  222. package/dist/core/search/db.d.ts.map +1 -0
  223. package/dist/core/search/db.js +406 -0
  224. package/dist/core/search/db.js.map +1 -0
  225. package/dist/core/search/embedder.d.ts +51 -0
  226. package/dist/core/search/embedder.d.ts.map +1 -0
  227. package/dist/core/search/embedder.js +143 -0
  228. package/dist/core/search/embedder.js.map +1 -0
  229. package/dist/core/search/index-manager.d.ts +55 -0
  230. package/dist/core/search/index-manager.d.ts.map +1 -0
  231. package/dist/core/search/index-manager.js +311 -0
  232. package/dist/core/search/index-manager.js.map +1 -0
  233. package/dist/core/search/metrics/bm25.d.ts +10 -0
  234. package/dist/core/search/metrics/bm25.d.ts.map +1 -0
  235. package/dist/core/search/metrics/bm25.js +32 -0
  236. package/dist/core/search/metrics/bm25.js.map +1 -0
  237. package/dist/core/search/metrics/git-recency.d.ts +14 -0
  238. package/dist/core/search/metrics/git-recency.d.ts.map +1 -0
  239. package/dist/core/search/metrics/git-recency.js +123 -0
  240. package/dist/core/search/metrics/git-recency.js.map +1 -0
  241. package/dist/core/search/metrics/import-graph.d.ts +15 -0
  242. package/dist/core/search/metrics/import-graph.d.ts.map +1 -0
  243. package/dist/core/search/metrics/import-graph.js +115 -0
  244. package/dist/core/search/metrics/import-graph.js.map +1 -0
  245. package/dist/core/search/metrics/path-match.d.ts +13 -0
  246. package/dist/core/search/metrics/path-match.d.ts.map +1 -0
  247. package/dist/core/search/metrics/path-match.js +54 -0
  248. package/dist/core/search/metrics/path-match.js.map +1 -0
  249. package/dist/core/search/metrics/symbol-match.d.ts +12 -0
  250. package/dist/core/search/metrics/symbol-match.d.ts.map +1 -0
  251. package/dist/core/search/metrics/symbol-match.js +62 -0
  252. package/dist/core/search/metrics/symbol-match.js.map +1 -0
  253. package/dist/core/search/metrics/tokenize.d.ts +12 -0
  254. package/dist/core/search/metrics/tokenize.d.ts.map +1 -0
  255. package/dist/core/search/metrics/tokenize.js +29 -0
  256. package/dist/core/search/metrics/tokenize.js.map +1 -0
  257. package/dist/core/search/poem.d.ts +38 -0
  258. package/dist/core/search/poem.d.ts.map +1 -0
  259. package/dist/core/search/poem.js +214 -0
  260. package/dist/core/search/poem.js.map +1 -0
  261. package/dist/core/search/query-classifier.d.ts +17 -0
  262. package/dist/core/search/query-classifier.d.ts.map +1 -0
  263. package/dist/core/search/query-classifier.js +54 -0
  264. package/dist/core/search/query-classifier.js.map +1 -0
  265. package/dist/core/search/scanner.d.ts +30 -0
  266. package/dist/core/search/scanner.d.ts.map +1 -0
  267. package/dist/core/search/scanner.js +335 -0
  268. package/dist/core/search/scanner.js.map +1 -0
  269. package/dist/core/search/search.d.ts +42 -0
  270. package/dist/core/search/search.d.ts.map +1 -0
  271. package/dist/core/search/search.js +337 -0
  272. package/dist/core/search/search.js.map +1 -0
  273. package/dist/core/search/text-chunker.d.ts +15 -0
  274. package/dist/core/search/text-chunker.d.ts.map +1 -0
  275. package/dist/core/search/text-chunker.js +580 -0
  276. package/dist/core/search/text-chunker.js.map +1 -0
  277. package/dist/core/search/tree-sitter-chunker.d.ts +25 -0
  278. package/dist/core/search/tree-sitter-chunker.d.ts.map +1 -0
  279. package/dist/core/search/tree-sitter-chunker.js +357 -0
  280. package/dist/core/search/tree-sitter-chunker.js.map +1 -0
  281. package/dist/core/search/types.d.ts +96 -0
  282. package/dist/core/search/types.d.ts.map +1 -0
  283. package/dist/core/search/types.js +6 -0
  284. package/dist/core/search/types.js.map +1 -0
  285. package/dist/core/search/vector-store.d.ts +43 -0
  286. package/dist/core/search/vector-store.d.ts.map +1 -0
  287. package/dist/core/search/vector-store.js +73 -0
  288. package/dist/core/search/vector-store.js.map +1 -0
  289. package/dist/core/session-manager.d.ts +329 -0
  290. package/dist/core/session-manager.d.ts.map +1 -0
  291. package/dist/core/session-manager.js +1097 -0
  292. package/dist/core/session-manager.js.map +1 -0
  293. package/dist/core/settings-manager.d.ts +239 -0
  294. package/dist/core/settings-manager.d.ts.map +1 -0
  295. package/dist/core/settings-manager.js +705 -0
  296. package/dist/core/settings-manager.js.map +1 -0
  297. package/dist/core/skills.d.ts +67 -0
  298. package/dist/core/skills.d.ts.map +1 -0
  299. package/dist/core/skills.js +428 -0
  300. package/dist/core/skills.js.map +1 -0
  301. package/dist/core/slash-commands.d.ts +14 -0
  302. package/dist/core/slash-commands.d.ts.map +1 -0
  303. package/dist/core/slash-commands.js +23 -0
  304. package/dist/core/slash-commands.js.map +1 -0
  305. package/dist/core/source-info.d.ts +18 -0
  306. package/dist/core/source-info.d.ts.map +1 -0
  307. package/dist/core/source-info.js +19 -0
  308. package/dist/core/source-info.js.map +1 -0
  309. package/dist/core/system-prompt.d.ts +33 -0
  310. package/dist/core/system-prompt.d.ts.map +1 -0
  311. package/dist/core/system-prompt.js +184 -0
  312. package/dist/core/system-prompt.js.map +1 -0
  313. package/dist/core/timings.d.ts +8 -0
  314. package/dist/core/timings.d.ts.map +1 -0
  315. package/dist/core/timings.js +31 -0
  316. package/dist/core/timings.js.map +1 -0
  317. package/dist/core/tools/bash.d.ts +73 -0
  318. package/dist/core/tools/bash.d.ts.map +1 -0
  319. package/dist/core/tools/bash.js +342 -0
  320. package/dist/core/tools/bash.js.map +1 -0
  321. package/dist/core/tools/edit-diff.d.ts +63 -0
  322. package/dist/core/tools/edit-diff.d.ts.map +1 -0
  323. package/dist/core/tools/edit-diff.js +244 -0
  324. package/dist/core/tools/edit-diff.js.map +1 -0
  325. package/dist/core/tools/edit.d.ts +51 -0
  326. package/dist/core/tools/edit.d.ts.map +1 -0
  327. package/dist/core/tools/edit.js +218 -0
  328. package/dist/core/tools/edit.js.map +1 -0
  329. package/dist/core/tools/file-mutation-queue.d.ts +6 -0
  330. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -0
  331. package/dist/core/tools/file-mutation-queue.js +37 -0
  332. package/dist/core/tools/file-mutation-queue.js.map +1 -0
  333. package/dist/core/tools/find.d.ts +46 -0
  334. package/dist/core/tools/find.d.ts.map +1 -0
  335. package/dist/core/tools/find.js +241 -0
  336. package/dist/core/tools/find.js.map +1 -0
  337. package/dist/core/tools/grep.d.ts +56 -0
  338. package/dist/core/tools/grep.d.ts.map +1 -0
  339. package/dist/core/tools/grep.js +293 -0
  340. package/dist/core/tools/grep.js.map +1 -0
  341. package/dist/core/tools/index.d.ts +176 -0
  342. package/dist/core/tools/index.d.ts.map +1 -0
  343. package/dist/core/tools/index.js +137 -0
  344. package/dist/core/tools/index.js.map +1 -0
  345. package/dist/core/tools/ls.d.ts +46 -0
  346. package/dist/core/tools/ls.d.ts.map +1 -0
  347. package/dist/core/tools/ls.js +172 -0
  348. package/dist/core/tools/ls.js.map +1 -0
  349. package/dist/core/tools/path-utils.d.ts +8 -0
  350. package/dist/core/tools/path-utils.d.ts.map +1 -0
  351. package/dist/core/tools/path-utils.js +81 -0
  352. package/dist/core/tools/path-utils.js.map +1 -0
  353. package/dist/core/tools/read.d.ts +46 -0
  354. package/dist/core/tools/read.d.ts.map +1 -0
  355. package/dist/core/tools/read.js +225 -0
  356. package/dist/core/tools/read.js.map +1 -0
  357. package/dist/core/tools/render-utils.d.ts +21 -0
  358. package/dist/core/tools/render-utils.d.ts.map +1 -0
  359. package/dist/core/tools/render-utils.js +49 -0
  360. package/dist/core/tools/render-utils.js.map +1 -0
  361. package/dist/core/tools/search.d.ts +29 -0
  362. package/dist/core/tools/search.d.ts.map +1 -0
  363. package/dist/core/tools/search.js +187 -0
  364. package/dist/core/tools/search.js.map +1 -0
  365. package/dist/core/tools/skill.d.ts +26 -0
  366. package/dist/core/tools/skill.d.ts.map +1 -0
  367. package/dist/core/tools/skill.js +127 -0
  368. package/dist/core/tools/skill.js.map +1 -0
  369. package/dist/core/tools/subagent.d.ts +147 -0
  370. package/dist/core/tools/subagent.d.ts.map +1 -0
  371. package/dist/core/tools/subagent.js +950 -0
  372. package/dist/core/tools/subagent.js.map +1 -0
  373. package/dist/core/tools/tasks.d.ts +32 -0
  374. package/dist/core/tools/tasks.d.ts.map +1 -0
  375. package/dist/core/tools/tasks.js +110 -0
  376. package/dist/core/tools/tasks.js.map +1 -0
  377. package/dist/core/tools/tmp-read.d.ts +11 -0
  378. package/dist/core/tools/tmp-read.d.ts.map +1 -0
  379. package/dist/core/tools/tmp-read.js +63 -0
  380. package/dist/core/tools/tmp-read.js.map +1 -0
  381. package/dist/core/tools/tool-definition-wrapper.d.ts +14 -0
  382. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -0
  383. package/dist/core/tools/tool-definition-wrapper.js +30 -0
  384. package/dist/core/tools/tool-definition-wrapper.js.map +1 -0
  385. package/dist/core/tools/truncate.d.ts +70 -0
  386. package/dist/core/tools/truncate.d.ts.map +1 -0
  387. package/dist/core/tools/truncate.js +205 -0
  388. package/dist/core/tools/truncate.js.map +1 -0
  389. package/dist/core/tools/web.d.ts +42 -0
  390. package/dist/core/tools/web.d.ts.map +1 -0
  391. package/dist/core/tools/web.js +518 -0
  392. package/dist/core/tools/web.js.map +1 -0
  393. package/dist/core/tools/write.d.ts +35 -0
  394. package/dist/core/tools/write.d.ts.map +1 -0
  395. package/dist/core/tools/write.js +216 -0
  396. package/dist/core/tools/write.js.map +1 -0
  397. package/dist/index.d.ts +28 -0
  398. package/dist/index.d.ts.map +1 -0
  399. package/dist/index.js +43 -0
  400. package/dist/index.js.map +1 -0
  401. package/dist/main.d.ts +8 -0
  402. package/dist/main.d.ts.map +1 -0
  403. package/dist/main.js +789 -0
  404. package/dist/main.js.map +1 -0
  405. package/dist/migrations.d.ts +33 -0
  406. package/dist/migrations.d.ts.map +1 -0
  407. package/dist/migrations.js +261 -0
  408. package/dist/migrations.js.map +1 -0
  409. package/dist/modes/index.d.ts +9 -0
  410. package/dist/modes/index.d.ts.map +1 -0
  411. package/dist/modes/index.js +8 -0
  412. package/dist/modes/index.js.map +1 -0
  413. package/dist/modes/interactive/components/armin.d.ts +34 -0
  414. package/dist/modes/interactive/components/armin.d.ts.map +1 -0
  415. package/dist/modes/interactive/components/armin.js +333 -0
  416. package/dist/modes/interactive/components/armin.js.map +1 -0
  417. package/dist/modes/interactive/components/assistant-message.d.ts +16 -0
  418. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -0
  419. package/dist/modes/interactive/components/assistant-message.js +96 -0
  420. package/dist/modes/interactive/components/assistant-message.js.map +1 -0
  421. package/dist/modes/interactive/components/bash-execution.d.ts +34 -0
  422. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -0
  423. package/dist/modes/interactive/components/bash-execution.js +175 -0
  424. package/dist/modes/interactive/components/bash-execution.js.map +1 -0
  425. package/dist/modes/interactive/components/bordered-loader.d.ts +16 -0
  426. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -0
  427. package/dist/modes/interactive/components/bordered-loader.js +51 -0
  428. package/dist/modes/interactive/components/bordered-loader.js.map +1 -0
  429. package/dist/modes/interactive/components/branch-summary-message.d.ts +16 -0
  430. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -0
  431. package/dist/modes/interactive/components/branch-summary-message.js +44 -0
  432. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -0
  433. package/dist/modes/interactive/components/buddy-component.d.ts +58 -0
  434. package/dist/modes/interactive/components/buddy-component.d.ts.map +1 -0
  435. package/dist/modes/interactive/components/buddy-component.js +351 -0
  436. package/dist/modes/interactive/components/buddy-component.js.map +1 -0
  437. package/dist/modes/interactive/components/compaction-summary-message.d.ts +16 -0
  438. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -0
  439. package/dist/modes/interactive/components/compaction-summary-message.js +45 -0
  440. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -0
  441. package/dist/modes/interactive/components/config-selector.d.ts +71 -0
  442. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -0
  443. package/dist/modes/interactive/components/config-selector.js +479 -0
  444. package/dist/modes/interactive/components/config-selector.js.map +1 -0
  445. package/dist/modes/interactive/components/countdown-timer.d.ts +14 -0
  446. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -0
  447. package/dist/modes/interactive/components/countdown-timer.js +33 -0
  448. package/dist/modes/interactive/components/countdown-timer.js.map +1 -0
  449. package/dist/modes/interactive/components/custom-editor.d.ts +21 -0
  450. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -0
  451. package/dist/modes/interactive/components/custom-editor.js +70 -0
  452. package/dist/modes/interactive/components/custom-editor.js.map +1 -0
  453. package/dist/modes/interactive/components/custom-message.d.ts +20 -0
  454. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -0
  455. package/dist/modes/interactive/components/custom-message.js +79 -0
  456. package/dist/modes/interactive/components/custom-message.js.map +1 -0
  457. package/dist/modes/interactive/components/daxnuts.d.ts +23 -0
  458. package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -0
  459. package/dist/modes/interactive/components/daxnuts.js +140 -0
  460. package/dist/modes/interactive/components/daxnuts.js.map +1 -0
  461. package/dist/modes/interactive/components/diff.d.ts +12 -0
  462. package/dist/modes/interactive/components/diff.d.ts.map +1 -0
  463. package/dist/modes/interactive/components/diff.js +133 -0
  464. package/dist/modes/interactive/components/diff.js.map +1 -0
  465. package/dist/modes/interactive/components/dynamic-border.d.ts +15 -0
  466. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -0
  467. package/dist/modes/interactive/components/dynamic-border.js +21 -0
  468. package/dist/modes/interactive/components/dynamic-border.js.map +1 -0
  469. package/dist/modes/interactive/components/extension-editor.d.ts +20 -0
  470. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -0
  471. package/dist/modes/interactive/components/extension-editor.js +111 -0
  472. package/dist/modes/interactive/components/extension-editor.js.map +1 -0
  473. package/dist/modes/interactive/components/extension-input.d.ts +23 -0
  474. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -0
  475. package/dist/modes/interactive/components/extension-input.js +61 -0
  476. package/dist/modes/interactive/components/extension-input.js.map +1 -0
  477. package/dist/modes/interactive/components/extension-selector.d.ts +24 -0
  478. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -0
  479. package/dist/modes/interactive/components/extension-selector.js +78 -0
  480. package/dist/modes/interactive/components/extension-selector.js.map +1 -0
  481. package/dist/modes/interactive/components/footer.d.ts +26 -0
  482. package/dist/modes/interactive/components/footer.d.ts.map +1 -0
  483. package/dist/modes/interactive/components/footer.js +198 -0
  484. package/dist/modes/interactive/components/footer.js.map +1 -0
  485. package/dist/modes/interactive/components/index.d.ts +33 -0
  486. package/dist/modes/interactive/components/index.d.ts.map +1 -0
  487. package/dist/modes/interactive/components/index.js +34 -0
  488. package/dist/modes/interactive/components/index.js.map +1 -0
  489. package/dist/modes/interactive/components/keybinding-hints.d.ts +8 -0
  490. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -0
  491. package/dist/modes/interactive/components/keybinding-hints.js +22 -0
  492. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -0
  493. package/dist/modes/interactive/components/login-dialog.d.ts +42 -0
  494. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -0
  495. package/dist/modes/interactive/components/login-dialog.js +145 -0
  496. package/dist/modes/interactive/components/login-dialog.js.map +1 -0
  497. package/dist/modes/interactive/components/model-selector.d.ts +47 -0
  498. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -0
  499. package/dist/modes/interactive/components/model-selector.js +275 -0
  500. package/dist/modes/interactive/components/model-selector.js.map +1 -0
  501. package/dist/modes/interactive/components/oauth-selector.d.ts +19 -0
  502. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -0
  503. package/dist/modes/interactive/components/oauth-selector.js +97 -0
  504. package/dist/modes/interactive/components/oauth-selector.js.map +1 -0
  505. package/dist/modes/interactive/components/scoped-models-selector.d.ts +49 -0
  506. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -0
  507. package/dist/modes/interactive/components/scoped-models-selector.js +275 -0
  508. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -0
  509. package/dist/modes/interactive/components/session-selector-search.d.ts +23 -0
  510. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -0
  511. package/dist/modes/interactive/components/session-selector-search.js +155 -0
  512. package/dist/modes/interactive/components/session-selector-search.js.map +1 -0
  513. package/dist/modes/interactive/components/session-selector.d.ts +95 -0
  514. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -0
  515. package/dist/modes/interactive/components/session-selector.js +848 -0
  516. package/dist/modes/interactive/components/session-selector.js.map +1 -0
  517. package/dist/modes/interactive/components/settings-selector.d.ts +58 -0
  518. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -0
  519. package/dist/modes/interactive/components/settings-selector.js +301 -0
  520. package/dist/modes/interactive/components/settings-selector.js.map +1 -0
  521. package/dist/modes/interactive/components/show-images-selector.d.ts +10 -0
  522. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -0
  523. package/dist/modes/interactive/components/show-images-selector.js +39 -0
  524. package/dist/modes/interactive/components/show-images-selector.js.map +1 -0
  525. package/dist/modes/interactive/components/skill-invocation-message.d.ts +17 -0
  526. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -0
  527. package/dist/modes/interactive/components/skill-invocation-message.js +47 -0
  528. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -0
  529. package/dist/modes/interactive/components/tasks-panel.d.ts +20 -0
  530. package/dist/modes/interactive/components/tasks-panel.d.ts.map +1 -0
  531. package/dist/modes/interactive/components/tasks-panel.js +66 -0
  532. package/dist/modes/interactive/components/tasks-panel.js.map +1 -0
  533. package/dist/modes/interactive/components/theme-selector.d.ts +11 -0
  534. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -0
  535. package/dist/modes/interactive/components/theme-selector.js +50 -0
  536. package/dist/modes/interactive/components/theme-selector.js.map +1 -0
  537. package/dist/modes/interactive/components/thinking-selector.d.ts +11 -0
  538. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -0
  539. package/dist/modes/interactive/components/thinking-selector.js +51 -0
  540. package/dist/modes/interactive/components/thinking-selector.js.map +1 -0
  541. package/dist/modes/interactive/components/tool-execution.d.ts +59 -0
  542. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -0
  543. package/dist/modes/interactive/components/tool-execution.js +279 -0
  544. package/dist/modes/interactive/components/tool-execution.js.map +1 -0
  545. package/dist/modes/interactive/components/tree-selector.d.ts +87 -0
  546. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -0
  547. package/dist/modes/interactive/components/tree-selector.js +1051 -0
  548. package/dist/modes/interactive/components/tree-selector.js.map +1 -0
  549. package/dist/modes/interactive/components/user-message-selector.d.ts +30 -0
  550. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -0
  551. package/dist/modes/interactive/components/user-message-selector.js +113 -0
  552. package/dist/modes/interactive/components/user-message-selector.js.map +1 -0
  553. package/dist/modes/interactive/components/user-message.d.ts +9 -0
  554. package/dist/modes/interactive/components/user-message.d.ts.map +1 -0
  555. package/dist/modes/interactive/components/user-message.js +28 -0
  556. package/dist/modes/interactive/components/user-message.js.map +1 -0
  557. package/dist/modes/interactive/components/visual-truncate.d.ts +24 -0
  558. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -0
  559. package/dist/modes/interactive/components/visual-truncate.js +33 -0
  560. package/dist/modes/interactive/components/visual-truncate.js.map +1 -0
  561. package/dist/modes/interactive/interactive-mode.d.ts +338 -0
  562. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -0
  563. package/dist/modes/interactive/interactive-mode.js +4167 -0
  564. package/dist/modes/interactive/interactive-mode.js.map +1 -0
  565. package/dist/modes/interactive/theme/dark.json +85 -0
  566. package/dist/modes/interactive/theme/light.json +84 -0
  567. package/dist/modes/interactive/theme/theme-schema.json +335 -0
  568. package/dist/modes/interactive/theme/theme.d.ts +81 -0
  569. package/dist/modes/interactive/theme/theme.d.ts.map +1 -0
  570. package/dist/modes/interactive/theme/theme.js +975 -0
  571. package/dist/modes/interactive/theme/theme.js.map +1 -0
  572. package/dist/modes/print-mode.d.ts +28 -0
  573. package/dist/modes/print-mode.d.ts.map +1 -0
  574. package/dist/modes/print-mode.js +107 -0
  575. package/dist/modes/print-mode.js.map +1 -0
  576. package/dist/modes/rpc/index.d.ts +10 -0
  577. package/dist/modes/rpc/index.d.ts.map +1 -0
  578. package/dist/modes/rpc/index.js +8 -0
  579. package/dist/modes/rpc/index.js.map +1 -0
  580. package/dist/modes/rpc/jsonl.d.ts +17 -0
  581. package/dist/modes/rpc/jsonl.d.ts.map +1 -0
  582. package/dist/modes/rpc/jsonl.js +49 -0
  583. package/dist/modes/rpc/jsonl.js.map +1 -0
  584. package/dist/modes/rpc/rpc-client.d.ts +237 -0
  585. package/dist/modes/rpc/rpc-client.d.ts.map +1 -0
  586. package/dist/modes/rpc/rpc-client.js +448 -0
  587. package/dist/modes/rpc/rpc-client.js.map +1 -0
  588. package/dist/modes/rpc/rpc-mode.d.ts +20 -0
  589. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -0
  590. package/dist/modes/rpc/rpc-mode.js +592 -0
  591. package/dist/modes/rpc/rpc-mode.js.map +1 -0
  592. package/dist/modes/rpc/rpc-types.d.ts +471 -0
  593. package/dist/modes/rpc/rpc-types.d.ts.map +1 -0
  594. package/dist/modes/rpc/rpc-types.js +8 -0
  595. package/dist/modes/rpc/rpc-types.js.map +1 -0
  596. package/dist/utils/changelog.d.ts +21 -0
  597. package/dist/utils/changelog.d.ts.map +1 -0
  598. package/dist/utils/changelog.js +87 -0
  599. package/dist/utils/changelog.js.map +1 -0
  600. package/dist/utils/child-process.d.ts +11 -0
  601. package/dist/utils/child-process.d.ts.map +1 -0
  602. package/dist/utils/child-process.js +78 -0
  603. package/dist/utils/child-process.js.map +1 -0
  604. package/dist/utils/clipboard-image.d.ts +11 -0
  605. package/dist/utils/clipboard-image.d.ts.map +1 -0
  606. package/dist/utils/clipboard-image.js +245 -0
  607. package/dist/utils/clipboard-image.js.map +1 -0
  608. package/dist/utils/clipboard-native.d.ts +8 -0
  609. package/dist/utils/clipboard-native.d.ts.map +1 -0
  610. package/dist/utils/clipboard-native.js +14 -0
  611. package/dist/utils/clipboard-native.js.map +1 -0
  612. package/dist/utils/clipboard.d.ts +2 -0
  613. package/dist/utils/clipboard.d.ts.map +1 -0
  614. package/dist/utils/clipboard.js +78 -0
  615. package/dist/utils/clipboard.js.map +1 -0
  616. package/dist/utils/exif-orientation.d.ts +5 -0
  617. package/dist/utils/exif-orientation.d.ts.map +1 -0
  618. package/dist/utils/exif-orientation.js +158 -0
  619. package/dist/utils/exif-orientation.js.map +1 -0
  620. package/dist/utils/frontmatter.d.ts +8 -0
  621. package/dist/utils/frontmatter.d.ts.map +1 -0
  622. package/dist/utils/frontmatter.js +26 -0
  623. package/dist/utils/frontmatter.js.map +1 -0
  624. package/dist/utils/git.d.ts +26 -0
  625. package/dist/utils/git.d.ts.map +1 -0
  626. package/dist/utils/git.js +163 -0
  627. package/dist/utils/git.js.map +1 -0
  628. package/dist/utils/image-convert.d.ts +9 -0
  629. package/dist/utils/image-convert.d.ts.map +1 -0
  630. package/dist/utils/image-convert.js +39 -0
  631. package/dist/utils/image-convert.js.map +1 -0
  632. package/dist/utils/image-resize.d.ts +36 -0
  633. package/dist/utils/image-resize.d.ts.map +1 -0
  634. package/dist/utils/image-resize.js +137 -0
  635. package/dist/utils/image-resize.js.map +1 -0
  636. package/dist/utils/mime.d.ts +2 -0
  637. package/dist/utils/mime.d.ts.map +1 -0
  638. package/dist/utils/mime.js +26 -0
  639. package/dist/utils/mime.js.map +1 -0
  640. package/dist/utils/photon.d.ts +21 -0
  641. package/dist/utils/photon.d.ts.map +1 -0
  642. package/dist/utils/photon.js +121 -0
  643. package/dist/utils/photon.js.map +1 -0
  644. package/dist/utils/shell.d.ts +26 -0
  645. package/dist/utils/shell.d.ts.map +1 -0
  646. package/dist/utils/shell.js +186 -0
  647. package/dist/utils/shell.js.map +1 -0
  648. package/dist/utils/sleep.d.ts +5 -0
  649. package/dist/utils/sleep.d.ts.map +1 -0
  650. package/dist/utils/sleep.js +17 -0
  651. package/dist/utils/sleep.js.map +1 -0
  652. package/dist/utils/tools-manager.d.ts +3 -0
  653. package/dist/utils/tools-manager.d.ts.map +1 -0
  654. package/dist/utils/tools-manager.js +252 -0
  655. package/dist/utils/tools-manager.js.map +1 -0
  656. package/dist/utils/xml.d.ts +2 -0
  657. package/dist/utils/xml.d.ts.map +1 -0
  658. package/dist/utils/xml.js +9 -0
  659. package/dist/utils/xml.js.map +1 -0
  660. package/docs/buddy.md +111 -0
  661. package/docs/compaction.md +392 -0
  662. package/docs/custom-provider.md +599 -0
  663. package/docs/development.md +108 -0
  664. package/docs/extensions.md +2130 -0
  665. package/docs/images/doom-extension.png +0 -0
  666. package/docs/images/interactive-mode.png +0 -0
  667. package/docs/images/tree-view.png +0 -0
  668. package/docs/json.md +112 -0
  669. package/docs/keybindings.md +174 -0
  670. package/docs/mach6.md +150 -0
  671. package/docs/models.md +335 -0
  672. package/docs/packages.md +197 -0
  673. package/docs/prompt-templates.md +67 -0
  674. package/docs/providers.md +194 -0
  675. package/docs/rpc.md +1426 -0
  676. package/docs/sdk.md +969 -0
  677. package/docs/session.md +412 -0
  678. package/docs/settings.md +247 -0
  679. package/docs/shell-aliases.md +55 -0
  680. package/docs/skills.md +296 -0
  681. package/docs/terminal-setup.md +104 -0
  682. package/docs/termux.md +127 -0
  683. package/docs/themes.md +295 -0
  684. package/docs/tmux.md +61 -0
  685. package/docs/tree.md +228 -0
  686. package/docs/tui.md +887 -0
  687. package/docs/windows.md +61 -0
  688. package/examples/README.md +25 -0
  689. package/examples/extensions/README.md +205 -0
  690. package/examples/extensions/antigravity-image-gen.ts +418 -0
  691. package/examples/extensions/auto-commit-on-exit.ts +49 -0
  692. package/examples/extensions/bash-spawn-hook.ts +30 -0
  693. package/examples/extensions/bookmark.ts +50 -0
  694. package/examples/extensions/built-in-tool-renderer.ts +246 -0
  695. package/examples/extensions/claude-rules.ts +86 -0
  696. package/examples/extensions/commands.ts +72 -0
  697. package/examples/extensions/confirm-destructive.ts +59 -0
  698. package/examples/extensions/custom-compaction.ts +114 -0
  699. package/examples/extensions/custom-footer.ts +64 -0
  700. package/examples/extensions/custom-header.ts +73 -0
  701. package/examples/extensions/custom-provider-anthropic/index.ts +604 -0
  702. package/examples/extensions/custom-provider-anthropic/package-lock.json +24 -0
  703. package/examples/extensions/custom-provider-anthropic/package.json +19 -0
  704. package/examples/extensions/custom-provider-gitlab-duo/index.ts +349 -0
  705. package/examples/extensions/custom-provider-gitlab-duo/package.json +16 -0
  706. package/examples/extensions/custom-provider-gitlab-duo/test.ts +82 -0
  707. package/examples/extensions/custom-provider-qwen-cli/index.ts +345 -0
  708. package/examples/extensions/custom-provider-qwen-cli/package.json +16 -0
  709. package/examples/extensions/dirty-repo-guard.ts +56 -0
  710. package/examples/extensions/doom-overlay/README.md +46 -0
  711. package/examples/extensions/doom-overlay/doom/build/doom.js +21 -0
  712. package/examples/extensions/doom-overlay/doom/build/doom.wasm +0 -0
  713. package/examples/extensions/doom-overlay/doom/build.sh +152 -0
  714. package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +73 -0
  715. package/examples/extensions/doom-overlay/doom-component.ts +132 -0
  716. package/examples/extensions/doom-overlay/doom-engine.ts +173 -0
  717. package/examples/extensions/doom-overlay/doom-keys.ts +104 -0
  718. package/examples/extensions/doom-overlay/index.ts +74 -0
  719. package/examples/extensions/doom-overlay/wad-finder.ts +51 -0
  720. package/examples/extensions/dynamic-resources/SKILL.md +8 -0
  721. package/examples/extensions/dynamic-resources/dynamic.json +79 -0
  722. package/examples/extensions/dynamic-resources/dynamic.md +5 -0
  723. package/examples/extensions/dynamic-resources/index.ts +15 -0
  724. package/examples/extensions/dynamic-tools.ts +74 -0
  725. package/examples/extensions/event-bus.ts +43 -0
  726. package/examples/extensions/file-trigger.ts +41 -0
  727. package/examples/extensions/git-checkpoint.ts +53 -0
  728. package/examples/extensions/handoff.ts +150 -0
  729. package/examples/extensions/hello.ts +25 -0
  730. package/examples/extensions/inline-bash.ts +94 -0
  731. package/examples/extensions/input-transform.ts +43 -0
  732. package/examples/extensions/interactive-shell.ts +196 -0
  733. package/examples/extensions/mac-system-theme.ts +47 -0
  734. package/examples/extensions/message-renderer.ts +59 -0
  735. package/examples/extensions/minimal-mode.ts +426 -0
  736. package/examples/extensions/modal-editor.ts +85 -0
  737. package/examples/extensions/model-status.ts +31 -0
  738. package/examples/extensions/notify.ts +55 -0
  739. package/examples/extensions/overlay-qa-tests.ts +1348 -0
  740. package/examples/extensions/overlay-test.ts +150 -0
  741. package/examples/extensions/permission-gate.ts +34 -0
  742. package/examples/extensions/pirate.ts +47 -0
  743. package/examples/extensions/plan-mode/README.md +65 -0
  744. package/examples/extensions/plan-mode/index.ts +340 -0
  745. package/examples/extensions/plan-mode/utils.ts +168 -0
  746. package/examples/extensions/preset.ts +403 -0
  747. package/examples/extensions/protected-paths.ts +30 -0
  748. package/examples/extensions/provider-payload.ts +14 -0
  749. package/examples/extensions/qna.ts +119 -0
  750. package/examples/extensions/question.ts +264 -0
  751. package/examples/extensions/questionnaire.ts +427 -0
  752. package/examples/extensions/rainbow-editor.ts +88 -0
  753. package/examples/extensions/reload-runtime.ts +37 -0
  754. package/examples/extensions/rpc-demo.ts +124 -0
  755. package/examples/extensions/sandbox/index.ts +317 -0
  756. package/examples/extensions/sandbox/package-lock.json +92 -0
  757. package/examples/extensions/sandbox/package.json +19 -0
  758. package/examples/extensions/send-user-message.ts +97 -0
  759. package/examples/extensions/session-name.ts +27 -0
  760. package/examples/extensions/shutdown-command.ts +63 -0
  761. package/examples/extensions/snake.ts +343 -0
  762. package/examples/extensions/space-invaders.ts +560 -0
  763. package/examples/extensions/ssh.ts +220 -0
  764. package/examples/extensions/status-line.ts +40 -0
  765. package/examples/extensions/subagent/README.md +172 -0
  766. package/examples/extensions/subagent/agents/planner.md +37 -0
  767. package/examples/extensions/subagent/agents/reviewer.md +35 -0
  768. package/examples/extensions/subagent/agents/scout.md +50 -0
  769. package/examples/extensions/subagent/agents/worker.md +24 -0
  770. package/examples/extensions/subagent/agents.ts +126 -0
  771. package/examples/extensions/subagent/index.ts +986 -0
  772. package/examples/extensions/subagent/prompts/implement-and-review.md +10 -0
  773. package/examples/extensions/subagent/prompts/implement.md +10 -0
  774. package/examples/extensions/subagent/prompts/scout-and-plan.md +9 -0
  775. package/examples/extensions/summarize.ts +195 -0
  776. package/examples/extensions/system-prompt-header.ts +17 -0
  777. package/examples/extensions/timed-confirm.ts +70 -0
  778. package/examples/extensions/titlebar-spinner.ts +58 -0
  779. package/examples/extensions/todo.ts +299 -0
  780. package/examples/extensions/tool-override.ts +144 -0
  781. package/examples/extensions/tools.ts +146 -0
  782. package/examples/extensions/trigger-compact.ts +40 -0
  783. package/examples/extensions/truncated-tool.ts +195 -0
  784. package/examples/extensions/widget-placement.ts +17 -0
  785. package/examples/extensions/with-deps/index.ts +32 -0
  786. package/examples/extensions/with-deps/package-lock.json +31 -0
  787. package/examples/extensions/with-deps/package.json +22 -0
  788. package/examples/rpc-extension-ui.ts +632 -0
  789. package/examples/sdk/01-minimal.ts +22 -0
  790. package/examples/sdk/02-custom-model.ts +49 -0
  791. package/examples/sdk/03-custom-prompt.ts +55 -0
  792. package/examples/sdk/04-skills.ts +53 -0
  793. package/examples/sdk/05-tools.ts +56 -0
  794. package/examples/sdk/06-extensions.ts +88 -0
  795. package/examples/sdk/07-context-files.ts +40 -0
  796. package/examples/sdk/08-prompt-templates.ts +48 -0
  797. package/examples/sdk/09-api-keys-and-oauth.ts +48 -0
  798. package/examples/sdk/10-settings.ts +51 -0
  799. package/examples/sdk/11-sessions.ts +48 -0
  800. package/examples/sdk/12-full-control.ts +87 -0
  801. package/examples/sdk/README.md +144 -0
  802. package/package.json +123 -0
  803. package/skills/mach6-implement/SKILL.md +170 -0
  804. package/skills/mach6-issue/SKILL.md +129 -0
  805. package/skills/mach6-plan/SKILL.md +123 -0
  806. package/skills/mach6-publish/SKILL.md +188 -0
  807. package/skills/mach6-push/SKILL.md +101 -0
  808. package/skills/mach6-review/SKILL.md +192 -0
  809. package/skills/telegram-send/SKILL.md +46 -0
package/docs/sdk.md ADDED
@@ -0,0 +1,969 @@
1
+ > dreb can help you use the SDK. Ask it to build an integration for your use case.
2
+
3
+ # SDK
4
+
5
+ The SDK provides programmatic access to dreb's agent capabilities. Use it to embed dreb in other applications, build custom interfaces, or integrate with automated workflows.
6
+
7
+ **Example use cases:**
8
+ - Build a custom UI (web, desktop, mobile)
9
+ - Integrate agent capabilities into existing applications
10
+ - Create automated pipelines with agent reasoning
11
+ - Build custom tools that spawn sub-agents
12
+ - Test agent behavior programmatically
13
+
14
+ See [examples/sdk/](../examples/sdk/) for working examples from minimal to full control.
15
+
16
+ ## Quick Start
17
+
18
+ ```typescript
19
+ import { AuthStorage, createAgentSession, ModelRegistry, SessionManager } from "@dreb/coding-agent";
20
+
21
+ // Set up credential storage and model registry
22
+ const authStorage = AuthStorage.create();
23
+ const modelRegistry = new ModelRegistry(authStorage);
24
+
25
+ const { session } = await createAgentSession({
26
+ sessionManager: SessionManager.inMemory(),
27
+ authStorage,
28
+ modelRegistry,
29
+ });
30
+
31
+ session.subscribe((event) => {
32
+ if (event.type === "message_update" && event.assistantMessageEvent.type === "text_delta") {
33
+ process.stdout.write(event.assistantMessageEvent.delta);
34
+ }
35
+ });
36
+
37
+ await session.prompt("What files are in the current directory?");
38
+ ```
39
+
40
+ ## Installation
41
+
42
+ ```bash
43
+ npm install @dreb/coding-agent
44
+ ```
45
+
46
+ The SDK is included in the main package. No separate installation needed.
47
+
48
+ ## Core Concepts
49
+
50
+ ### createAgentSession()
51
+
52
+ The main factory function. Creates an `AgentSession` with configurable options.
53
+
54
+ `createAgentSession()` uses a `ResourceLoader` to supply extensions, skills, prompt templates, themes, and context files. If you do not provide one, it uses `DefaultResourceLoader` with standard discovery.
55
+
56
+ ```typescript
57
+ import { createAgentSession } from "@dreb/coding-agent";
58
+
59
+ // Minimal: defaults with DefaultResourceLoader
60
+ const { session } = await createAgentSession();
61
+
62
+ // Custom: override specific options
63
+ const { session } = await createAgentSession({
64
+ model: myModel,
65
+ tools: [readTool, bashTool],
66
+ sessionManager: SessionManager.inMemory(),
67
+ });
68
+ ```
69
+
70
+ ### AgentSession
71
+
72
+ The session manages the agent lifecycle, message history, and event streaming.
73
+
74
+ ```typescript
75
+ interface AgentSession {
76
+ // Send a prompt and wait for completion
77
+ // If streaming, requires streamingBehavior option to queue the message
78
+ prompt(text: string, options?: PromptOptions): Promise<void>;
79
+
80
+ // Queue messages during streaming
81
+ steer(text: string, images?: ImageContent[]): Promise<void>; // Queue for delivery after the current assistant turn finishes its tool calls
82
+ followUp(text: string, images?: ImageContent[]): Promise<void>; // Wait: delivered only when agent finishes
83
+
84
+ // Subscribe to events (returns unsubscribe function)
85
+ subscribe(listener: (event: AgentSessionEvent) => void): () => void;
86
+
87
+ // Session info
88
+ sessionFile: string | undefined; // undefined for in-memory
89
+ sessionId: string;
90
+
91
+ // Model control
92
+ setModel(model: Model): Promise<void>;
93
+ setThinkingLevel(level: ThinkingLevel): void;
94
+ cycleModel(): Promise<ModelCycleResult | undefined>;
95
+ cycleThinkingLevel(): ThinkingLevel | undefined;
96
+
97
+ // State access
98
+ agent: Agent;
99
+ model: Model | undefined;
100
+ thinkingLevel: ThinkingLevel;
101
+ messages: AgentMessage[];
102
+ isStreaming: boolean;
103
+
104
+ // Session management
105
+ newSession(options?: { parentSession?: string; setup?: (sessionManager: SessionManager) => Promise<void> }): Promise<boolean>; // Returns false if cancelled by hook
106
+ switchSession(sessionPath: string): Promise<boolean>;
107
+
108
+ // Forking
109
+ fork(entryId: string): Promise<{ selectedText: string; cancelled: boolean }>; // Creates new session file
110
+ navigateTree(targetId: string, options?: { summarize?: boolean; customInstructions?: string; replaceInstructions?: boolean; label?: string }): Promise<{ editorText?: string; cancelled: boolean; aborted?: boolean; summaryEntry?: BranchSummaryEntry }>; // In-place navigation
111
+
112
+ // Hook message injection
113
+ sendHookMessage(message: HookMessage, triggerTurn?: boolean): Promise<void>;
114
+
115
+ // Compaction
116
+ compact(customInstructions?: string): Promise<CompactionResult>;
117
+ abortCompaction(): void;
118
+
119
+ // Abort current operation
120
+ abort(): Promise<void>;
121
+
122
+ // Cleanup
123
+ dispose(): void;
124
+ }
125
+ ```
126
+
127
+ ### Prompting and Message Queueing
128
+
129
+ The `prompt()` method handles prompt templates, extension commands, and message sending:
130
+
131
+ ```typescript
132
+ // Basic prompt (when not streaming)
133
+ await session.prompt("What files are here?");
134
+
135
+ // With images
136
+ await session.prompt("What's in this image?", {
137
+ images: [{ type: "image", source: { type: "base64", mediaType: "image/png", data: "..." } }]
138
+ });
139
+
140
+ // During streaming: must specify how to queue the message
141
+ await session.prompt("Stop and do this instead", { streamingBehavior: "steer" });
142
+ await session.prompt("After you're done, also check X", { streamingBehavior: "followUp" });
143
+ ```
144
+
145
+ **Behavior:**
146
+ - **Extension commands** (e.g., `/mycommand`): Execute immediately, even during streaming. They manage their own LLM interaction via `dreb.sendMessage()`.
147
+ - **File-based prompt templates** (from `.md` files): Expanded to their content before sending/queueing.
148
+ - **During streaming without `streamingBehavior`**: Throws an error. Use `steer()` or `followUp()` directly, or specify the option.
149
+
150
+ For explicit queueing during streaming:
151
+
152
+ ```typescript
153
+ // Queue a steering message for delivery after the current assistant turn finishes its tool calls
154
+ await session.steer("New instruction");
155
+
156
+ // Wait for agent to finish (delivered only when agent stops)
157
+ await session.followUp("After you're done, also do this");
158
+ ```
159
+
160
+ Both `steer()` and `followUp()` expand file-based prompt templates but error on extension commands (extension commands cannot be queued).
161
+
162
+ ### Agent and AgentState
163
+
164
+ The `Agent` class (from `@dreb/agent-core`) handles the core LLM interaction. Access it via `session.agent`.
165
+
166
+ ```typescript
167
+ // Access current state
168
+ const state = session.agent.state;
169
+
170
+ // state.messages: AgentMessage[] - conversation history
171
+ // state.model: Model - current model
172
+ // state.thinkingLevel: ThinkingLevel - current thinking level
173
+ // state.systemPrompt: string - system prompt
174
+ // state.tools: Tool[] - available tools
175
+
176
+ // Replace messages (useful for branching, restoration)
177
+ session.agent.replaceMessages(messages);
178
+
179
+ // Wait for agent to finish processing
180
+ await session.agent.waitForIdle();
181
+ ```
182
+
183
+ ### Events
184
+
185
+ Subscribe to events to receive streaming output and lifecycle notifications.
186
+
187
+ ```typescript
188
+ session.subscribe((event) => {
189
+ switch (event.type) {
190
+ // Streaming text from assistant
191
+ case "message_update":
192
+ if (event.assistantMessageEvent.type === "text_delta") {
193
+ process.stdout.write(event.assistantMessageEvent.delta);
194
+ }
195
+ if (event.assistantMessageEvent.type === "thinking_delta") {
196
+ // Thinking output (if thinking enabled)
197
+ }
198
+ break;
199
+
200
+ // Tool execution
201
+ case "tool_execution_start":
202
+ console.log(`Tool: ${event.toolName}`);
203
+ break;
204
+ case "tool_execution_update":
205
+ // Streaming tool output
206
+ break;
207
+ case "tool_execution_end":
208
+ console.log(`Result: ${event.isError ? "error" : "success"}`);
209
+ break;
210
+
211
+ // Message lifecycle
212
+ case "message_start":
213
+ // New message starting
214
+ break;
215
+ case "message_end":
216
+ // Message complete
217
+ break;
218
+
219
+ // Agent lifecycle
220
+ case "agent_start":
221
+ // Agent started processing prompt
222
+ // event.model?: { provider: string; id: string } — resolved model
223
+ break;
224
+ case "agent_end":
225
+ // Agent finished (event.messages contains new messages)
226
+ break;
227
+
228
+ // Turn lifecycle (one LLM response + tool calls)
229
+ case "turn_start":
230
+ break;
231
+ case "turn_end":
232
+ // event.message: assistant response
233
+ // event.toolResults: tool results from this turn
234
+ break;
235
+
236
+ // Session events (auto-compaction, retry)
237
+ case "auto_compaction_start":
238
+ case "auto_compaction_end":
239
+ case "auto_retry_start":
240
+ case "auto_retry_end":
241
+ break;
242
+ }
243
+ });
244
+ ```
245
+
246
+ ## Options Reference
247
+
248
+ ### Directories
249
+
250
+ ```typescript
251
+ const { session } = await createAgentSession({
252
+ // Working directory for DefaultResourceLoader discovery
253
+ cwd: process.cwd(), // default
254
+
255
+ // Global config directory
256
+ agentDir: "~/.dreb/agent", // default (expands ~)
257
+ });
258
+ ```
259
+
260
+ `cwd` is used by `DefaultResourceLoader` for:
261
+ - Project extensions (`.dreb/extensions/`)
262
+ - Project skills:
263
+ - `.dreb/skills/`
264
+ - `.agents/skills/` in `cwd` and ancestor directories (up to git repo root, or filesystem root when not in a repo)
265
+ - Project prompts (`.dreb/prompts/`)
266
+ - Context files (`AGENTS.md` walking up from cwd)
267
+ - Session directory naming
268
+
269
+ `agentDir` is used by `DefaultResourceLoader` for:
270
+ - Global extensions (`extensions/`)
271
+ - Global skills:
272
+ - `skills/` under `agentDir` (for example `~/.dreb/agent/skills/`)
273
+ - `~/.agents/skills/`
274
+ - Global prompts (`prompts/`)
275
+ - Global context file (`AGENTS.md`)
276
+ - Settings (`settings.json`)
277
+ - Custom models (`models.json`)
278
+ - Credentials (`auth.json`)
279
+ - Sessions (`sessions/`)
280
+
281
+ When you pass a custom `ResourceLoader`, `cwd` and `agentDir` no longer control resource discovery. They still influence session naming and tool path resolution.
282
+
283
+ ### Model
284
+
285
+ ```typescript
286
+ import { getModel } from "@dreb/ai";
287
+ import { AuthStorage, ModelRegistry } from "@dreb/coding-agent";
288
+
289
+ const authStorage = AuthStorage.create();
290
+ const modelRegistry = new ModelRegistry(authStorage);
291
+
292
+ // Find specific built-in model (doesn't check if API key exists)
293
+ const opus = getModel("anthropic", "claude-opus-4-5");
294
+ if (!opus) throw new Error("Model not found");
295
+
296
+ // Find any model by provider/id, including custom models from models.json
297
+ // (doesn't check if API key exists)
298
+ const customModel = modelRegistry.find("my-provider", "my-model");
299
+
300
+ // Get only models that have valid API keys configured
301
+ const available = await modelRegistry.getAvailable();
302
+
303
+ const { session } = await createAgentSession({
304
+ model: opus,
305
+ thinkingLevel: "medium", // off, minimal, low, medium, high, xhigh
306
+
307
+ // Models for cycling (Ctrl+P in interactive mode)
308
+ scopedModels: [
309
+ { model: opus, thinkingLevel: "high" },
310
+ { model: haiku, thinkingLevel: "off" },
311
+ ],
312
+
313
+ authStorage,
314
+ modelRegistry,
315
+ });
316
+ ```
317
+
318
+ If no model is provided:
319
+ 1. Tries to restore from session (if continuing)
320
+ 2. Uses default from settings
321
+ 3. Falls back to first available model
322
+
323
+ > See [examples/sdk/02-custom-model.ts](../examples/sdk/02-custom-model.ts)
324
+
325
+ ### API Keys and OAuth
326
+
327
+ API key resolution priority (handled by AuthStorage):
328
+ 1. Runtime overrides (via `setRuntimeApiKey`, not persisted)
329
+ 2. Stored credentials in `auth.json` (API keys or OAuth tokens)
330
+ 3. Environment variables (`ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, etc.)
331
+ 4. Fallback resolver (for custom provider keys from `models.json`)
332
+
333
+ ```typescript
334
+ import { AuthStorage, ModelRegistry } from "@dreb/coding-agent";
335
+
336
+ // Default: uses ~/.dreb/agent/auth.json and ~/.dreb/agent/models.json
337
+ const authStorage = AuthStorage.create();
338
+ const modelRegistry = new ModelRegistry(authStorage);
339
+
340
+ const { session } = await createAgentSession({
341
+ sessionManager: SessionManager.inMemory(),
342
+ authStorage,
343
+ modelRegistry,
344
+ });
345
+
346
+ // Runtime API key override (not persisted to disk)
347
+ authStorage.setRuntimeApiKey("anthropic", "sk-my-temp-key");
348
+
349
+ // Custom auth storage location
350
+ const customAuth = AuthStorage.create("/my/app/auth.json");
351
+ const customRegistry = new ModelRegistry(customAuth, "/my/app/models.json");
352
+
353
+ const { session } = await createAgentSession({
354
+ sessionManager: SessionManager.inMemory(),
355
+ authStorage: customAuth,
356
+ modelRegistry: customRegistry,
357
+ });
358
+
359
+ // No custom models.json (built-in models only)
360
+ const simpleRegistry = new ModelRegistry(authStorage);
361
+ ```
362
+
363
+ > See [examples/sdk/09-api-keys-and-oauth.ts](../examples/sdk/09-api-keys-and-oauth.ts)
364
+
365
+ ### System Prompt
366
+
367
+ Use a `ResourceLoader` to override the system prompt:
368
+
369
+ ```typescript
370
+ import { createAgentSession, DefaultResourceLoader } from "@dreb/coding-agent";
371
+
372
+ const loader = new DefaultResourceLoader({
373
+ systemPromptOverride: () => "You are a helpful assistant.",
374
+ });
375
+ await loader.reload();
376
+
377
+ const { session } = await createAgentSession({ resourceLoader: loader });
378
+ ```
379
+
380
+ > See [examples/sdk/03-custom-prompt.ts](../examples/sdk/03-custom-prompt.ts)
381
+
382
+ ### Tools
383
+
384
+ ```typescript
385
+ import {
386
+ codingTools, // read, bash, edit, write (subset — default is all 11)
387
+ readOnlyTools, // read, grep, find, ls
388
+ readTool, bashTool, editTool, writeTool,
389
+ grepTool, findTool, lsTool,
390
+ } from "@dreb/coding-agent";
391
+
392
+ // Use built-in tool set
393
+ const { session } = await createAgentSession({
394
+ tools: readOnlyTools,
395
+ });
396
+
397
+ // Pick specific tools
398
+ const { session } = await createAgentSession({
399
+ tools: [readTool, bashTool, grepTool],
400
+ });
401
+ ```
402
+
403
+ #### Tools with Custom cwd
404
+
405
+ **Important:** The pre-built tool instances (`readTool`, `bashTool`, etc.) use `process.cwd()` for path resolution. When you specify a custom `cwd` AND provide explicit `tools`, you must use the tool factory functions to ensure paths resolve correctly:
406
+
407
+ ```typescript
408
+ import {
409
+ createCodingTools, // Creates [read, bash, edit, write] for specific cwd
410
+ createReadOnlyTools, // Creates [read, grep, find, ls] for specific cwd
411
+ createReadTool,
412
+ createBashTool,
413
+ createEditTool,
414
+ createWriteTool,
415
+ createGrepTool,
416
+ createFindTool,
417
+ createLsTool,
418
+ } from "@dreb/coding-agent";
419
+
420
+ const cwd = "/path/to/project";
421
+
422
+ // Use factory for tool sets
423
+ const { session } = await createAgentSession({
424
+ cwd,
425
+ tools: createCodingTools(cwd), // Tools resolve paths relative to cwd
426
+ });
427
+
428
+ // Or pick specific tools
429
+ const { session } = await createAgentSession({
430
+ cwd,
431
+ tools: [createReadTool(cwd), createBashTool(cwd), createGrepTool(cwd)],
432
+ });
433
+ ```
434
+
435
+ **When you don't need factories:**
436
+ - If you omit `tools`, dreb automatically creates them with the correct `cwd`
437
+ - If you use `process.cwd()` as your `cwd`, the pre-built instances work fine
438
+
439
+ **When you must use factories:**
440
+ - When you specify both `cwd` (different from `process.cwd()`) AND `tools`
441
+
442
+ > See [examples/sdk/05-tools.ts](../examples/sdk/05-tools.ts)
443
+
444
+ ### Custom Tools
445
+
446
+ ```typescript
447
+ import { Type } from "@sinclair/typebox";
448
+ import { createAgentSession, type ToolDefinition } from "@dreb/coding-agent";
449
+
450
+ // Inline custom tool
451
+ const myTool: ToolDefinition = {
452
+ name: "my_tool",
453
+ label: "My Tool",
454
+ description: "Does something useful",
455
+ parameters: Type.Object({
456
+ input: Type.String({ description: "Input value" }),
457
+ }),
458
+ execute: async (toolCallId, params, signal, onUpdate, ctx) => ({
459
+ content: [{ type: "text", text: `Result: ${params.input}` }],
460
+ details: {},
461
+ }),
462
+ };
463
+
464
+ // Pass custom tools directly
465
+ const { session } = await createAgentSession({
466
+ customTools: [myTool],
467
+ });
468
+ ```
469
+
470
+ Custom tools passed via `customTools` are combined with extension-registered tools. Extensions loaded by the ResourceLoader can also register tools via `dreb.registerTool()`.
471
+
472
+ > See [examples/sdk/05-tools.ts](../examples/sdk/05-tools.ts)
473
+
474
+ ### Extensions
475
+
476
+ Extensions are loaded by the `ResourceLoader`. `DefaultResourceLoader` discovers extensions from `~/.dreb/agent/extensions/`, `.dreb/extensions/`, and settings.json extension sources.
477
+
478
+ ```typescript
479
+ import { createAgentSession, DefaultResourceLoader } from "@dreb/coding-agent";
480
+
481
+ const loader = new DefaultResourceLoader({
482
+ additionalExtensionPaths: ["/path/to/my-extension.ts"],
483
+ extensionFactories: [
484
+ (dreb) => {
485
+ dreb.on("agent_start", () => {
486
+ console.log("[Inline Extension] Agent starting");
487
+ });
488
+ },
489
+ ],
490
+ });
491
+ await loader.reload();
492
+
493
+ const { session } = await createAgentSession({ resourceLoader: loader });
494
+ ```
495
+
496
+ Extensions can register tools, subscribe to events, add commands, and more. See [extensions.md](extensions.md) for the full API.
497
+
498
+ **Event Bus:** Extensions can communicate via `dreb.events`. Pass a shared `eventBus` to `DefaultResourceLoader` if you need to emit or listen from outside:
499
+
500
+ ```typescript
501
+ import { createEventBus, DefaultResourceLoader } from "@dreb/coding-agent";
502
+
503
+ const eventBus = createEventBus();
504
+ const loader = new DefaultResourceLoader({
505
+ eventBus,
506
+ });
507
+ await loader.reload();
508
+
509
+ eventBus.on("my-extension:status", (data) => console.log(data));
510
+ ```
511
+
512
+ > See [examples/sdk/06-extensions.ts](../examples/sdk/06-extensions.ts) and [docs/extensions.md](extensions.md)
513
+
514
+ ### Skills
515
+
516
+ ```typescript
517
+ import {
518
+ createAgentSession,
519
+ DefaultResourceLoader,
520
+ type Skill,
521
+ } from "@dreb/coding-agent";
522
+
523
+ const customSkill: Skill = {
524
+ name: "my-skill",
525
+ description: "Custom instructions",
526
+ filePath: "/path/to/SKILL.md",
527
+ baseDir: "/path/to",
528
+ source: "custom",
529
+ };
530
+
531
+ const loader = new DefaultResourceLoader({
532
+ skillsOverride: (current) => ({
533
+ skills: [...current.skills, customSkill],
534
+ diagnostics: current.diagnostics,
535
+ }),
536
+ });
537
+ await loader.reload();
538
+
539
+ const { session } = await createAgentSession({ resourceLoader: loader });
540
+ ```
541
+
542
+ > See [examples/sdk/04-skills.ts](../examples/sdk/04-skills.ts)
543
+
544
+ ### Context Files
545
+
546
+ ```typescript
547
+ import { createAgentSession, DefaultResourceLoader } from "@dreb/coding-agent";
548
+
549
+ const loader = new DefaultResourceLoader({
550
+ agentsFilesOverride: (current) => ({
551
+ agentsFiles: [
552
+ ...current.agentsFiles,
553
+ { path: "/virtual/AGENTS.md", content: "# Guidelines\n\n- Be concise" },
554
+ ],
555
+ }),
556
+ });
557
+ await loader.reload();
558
+
559
+ const { session } = await createAgentSession({ resourceLoader: loader });
560
+ ```
561
+
562
+ > See [examples/sdk/07-context-files.ts](../examples/sdk/07-context-files.ts)
563
+
564
+ ### Slash Commands
565
+
566
+ ```typescript
567
+ import {
568
+ createAgentSession,
569
+ DefaultResourceLoader,
570
+ type PromptTemplate,
571
+ } from "@dreb/coding-agent";
572
+
573
+ const customCommand: PromptTemplate = {
574
+ name: "deploy",
575
+ description: "Deploy the application",
576
+ source: "(custom)",
577
+ content: "# Deploy\n\n1. Build\n2. Test\n3. Deploy",
578
+ };
579
+
580
+ const loader = new DefaultResourceLoader({
581
+ promptsOverride: (current) => ({
582
+ prompts: [...current.prompts, customCommand],
583
+ diagnostics: current.diagnostics,
584
+ }),
585
+ });
586
+ await loader.reload();
587
+
588
+ const { session } = await createAgentSession({ resourceLoader: loader });
589
+ ```
590
+
591
+ > See [examples/sdk/08-prompt-templates.ts](../examples/sdk/08-prompt-templates.ts)
592
+
593
+ ### Session Management
594
+
595
+ Sessions use a tree structure with `id`/`parentId` linking, enabling in-place branching.
596
+
597
+ ```typescript
598
+ import { createAgentSession, SessionManager } from "@dreb/coding-agent";
599
+
600
+ // In-memory (no persistence)
601
+ const { session } = await createAgentSession({
602
+ sessionManager: SessionManager.inMemory(),
603
+ });
604
+
605
+ // New persistent session
606
+ const { session } = await createAgentSession({
607
+ sessionManager: SessionManager.create(process.cwd()),
608
+ });
609
+
610
+ // Continue most recent
611
+ const { session, modelFallbackMessage } = await createAgentSession({
612
+ sessionManager: SessionManager.continueRecent(process.cwd()),
613
+ });
614
+ if (modelFallbackMessage) {
615
+ console.log("Note:", modelFallbackMessage);
616
+ }
617
+
618
+ // Open specific file
619
+ const { session } = await createAgentSession({
620
+ sessionManager: SessionManager.open("/path/to/session.jsonl"),
621
+ });
622
+
623
+ // List available sessions (async with optional progress callback)
624
+ const sessions = await SessionManager.list(process.cwd());
625
+ for (const info of sessions) {
626
+ console.log(`${info.id}: ${info.firstMessage} (${info.messageCount} messages, cwd: ${info.cwd})`);
627
+ }
628
+
629
+ // List all sessions across all projects
630
+ const allSessions = await SessionManager.listAll((loaded, total) => {
631
+ console.log(`Loading ${loaded}/${total}...`);
632
+ });
633
+
634
+ // Custom session directory (no cwd encoding)
635
+ const customDir = "/path/to/my-sessions";
636
+ const { session } = await createAgentSession({
637
+ sessionManager: SessionManager.create(process.cwd(), customDir),
638
+ });
639
+ ```
640
+
641
+ **SessionManager tree API:**
642
+
643
+ ```typescript
644
+ const sm = SessionManager.open("/path/to/session.jsonl");
645
+
646
+ // Tree traversal
647
+ const entries = sm.getEntries(); // All entries (excludes header)
648
+ const tree = sm.getTree(); // Full tree structure
649
+ const path = sm.getPath(); // Path from root to current leaf
650
+ const leaf = sm.getLeafEntry(); // Current leaf entry
651
+ const entry = sm.getEntry(id); // Get entry by ID
652
+ const children = sm.getChildren(id); // Direct children of entry
653
+
654
+ // Labels
655
+ const label = sm.getLabel(id); // Get label for entry
656
+ sm.appendLabelChange(id, "checkpoint"); // Set label
657
+
658
+ // Branching
659
+ sm.branch(entryId); // Move leaf to earlier entry
660
+ sm.branchWithSummary(id, "Summary..."); // Branch with context summary
661
+ sm.createBranchedSession(leafId); // Extract path to new file
662
+ ```
663
+
664
+ > See [examples/sdk/11-sessions.ts](../examples/sdk/11-sessions.ts) and [docs/session.md](session.md)
665
+
666
+ ### Settings Management
667
+
668
+ ```typescript
669
+ import { createAgentSession, SettingsManager, SessionManager } from "@dreb/coding-agent";
670
+
671
+ // Default: loads from files (global + project merged)
672
+ const { session } = await createAgentSession({
673
+ settingsManager: SettingsManager.create(),
674
+ });
675
+
676
+ // With overrides
677
+ const settingsManager = SettingsManager.create();
678
+ settingsManager.applyOverrides({
679
+ compaction: { enabled: false },
680
+ retry: { enabled: true, maxRetries: 5 },
681
+ });
682
+ const { session } = await createAgentSession({ settingsManager });
683
+
684
+ // In-memory (no file I/O, for testing)
685
+ const { session } = await createAgentSession({
686
+ settingsManager: SettingsManager.inMemory({ compaction: { enabled: false } }),
687
+ sessionManager: SessionManager.inMemory(),
688
+ });
689
+
690
+ // Custom directories
691
+ const { session } = await createAgentSession({
692
+ settingsManager: SettingsManager.create("/custom/cwd", "/custom/agent"),
693
+ });
694
+ ```
695
+
696
+ **Static factories:**
697
+ - `SettingsManager.create(cwd?, agentDir?)` - Load from files
698
+ - `SettingsManager.inMemory(settings?)` - No file I/O
699
+
700
+ **Project-specific settings:**
701
+
702
+ Settings load from two locations and merge:
703
+ 1. Global: `~/.dreb/agent/settings.json`
704
+ 2. Project: `<cwd>/.dreb/settings.json`
705
+
706
+ Project overrides global. Nested objects merge keys. Setters modify global settings by default.
707
+
708
+ **Persistence and error handling semantics:**
709
+
710
+ - Settings getters/setters are synchronous for in-memory state.
711
+ - Setters enqueue persistence writes asynchronously.
712
+ - Call `await settingsManager.flush()` when you need a durability boundary (for example, before process exit or before asserting file contents in tests).
713
+ - `SettingsManager` does not print settings I/O errors. Use `settingsManager.drainErrors()` and report them in your app layer.
714
+
715
+ > See [examples/sdk/10-settings.ts](../examples/sdk/10-settings.ts)
716
+
717
+ ## ResourceLoader
718
+
719
+ Use `DefaultResourceLoader` to discover extensions, skills, prompts, themes, and context files.
720
+
721
+ ```typescript
722
+ import {
723
+ DefaultResourceLoader,
724
+ getAgentDir,
725
+ } from "@dreb/coding-agent";
726
+
727
+ const loader = new DefaultResourceLoader({
728
+ cwd,
729
+ agentDir: getAgentDir(),
730
+ });
731
+ await loader.reload();
732
+
733
+ const extensions = loader.getExtensions();
734
+ const skills = loader.getSkills();
735
+ const prompts = loader.getPrompts();
736
+ const themes = loader.getThemes();
737
+ const contextFiles = loader.getAgentsFiles().agentsFiles;
738
+ ```
739
+
740
+ ## Return Value
741
+
742
+ `createAgentSession()` returns:
743
+
744
+ ```typescript
745
+ interface CreateAgentSessionResult {
746
+ // The session
747
+ session: AgentSession;
748
+
749
+ // Extensions result (for runner setup)
750
+ extensionsResult: LoadExtensionsResult;
751
+
752
+ // Warning if session model couldn't be restored
753
+ modelFallbackMessage?: string;
754
+ }
755
+
756
+ interface LoadExtensionsResult {
757
+ extensions: Extension[];
758
+ errors: Array<{ path: string; error: string }>;
759
+ runtime: ExtensionRuntime;
760
+ }
761
+ ```
762
+
763
+ ## Complete Example
764
+
765
+ ```typescript
766
+ import { getModel } from "@dreb/ai";
767
+ import { Type } from "@sinclair/typebox";
768
+ import {
769
+ AuthStorage,
770
+ createAgentSession,
771
+ DefaultResourceLoader,
772
+ ModelRegistry,
773
+ SessionManager,
774
+ SettingsManager,
775
+ readTool,
776
+ bashTool,
777
+ type ToolDefinition,
778
+ } from "@dreb/coding-agent";
779
+
780
+ // Set up auth storage (custom location)
781
+ const authStorage = AuthStorage.create("/custom/agent/auth.json");
782
+
783
+ // Runtime API key override (not persisted)
784
+ if (process.env.MY_KEY) {
785
+ authStorage.setRuntimeApiKey("anthropic", process.env.MY_KEY);
786
+ }
787
+
788
+ // Model registry (no custom models.json)
789
+ const modelRegistry = new ModelRegistry(authStorage);
790
+
791
+ // Inline tool
792
+ const statusTool: ToolDefinition = {
793
+ name: "status",
794
+ label: "Status",
795
+ description: "Get system status",
796
+ parameters: Type.Object({}),
797
+ execute: async () => ({
798
+ content: [{ type: "text", text: `Uptime: ${process.uptime()}s` }],
799
+ details: {},
800
+ }),
801
+ };
802
+
803
+ const model = getModel("anthropic", "claude-opus-4-5");
804
+ if (!model) throw new Error("Model not found");
805
+
806
+ // In-memory settings with overrides
807
+ const settingsManager = SettingsManager.inMemory({
808
+ compaction: { enabled: false },
809
+ retry: { enabled: true, maxRetries: 2 },
810
+ });
811
+
812
+ const loader = new DefaultResourceLoader({
813
+ cwd: process.cwd(),
814
+ agentDir: "/custom/agent",
815
+ settingsManager,
816
+ systemPromptOverride: () => "You are a minimal assistant. Be concise.",
817
+ });
818
+ await loader.reload();
819
+
820
+ const { session } = await createAgentSession({
821
+ cwd: process.cwd(),
822
+ agentDir: "/custom/agent",
823
+
824
+ model,
825
+ thinkingLevel: "off",
826
+ authStorage,
827
+ modelRegistry,
828
+
829
+ tools: [readTool, bashTool],
830
+ customTools: [statusTool],
831
+ resourceLoader: loader,
832
+
833
+ sessionManager: SessionManager.inMemory(),
834
+ settingsManager,
835
+ });
836
+
837
+ session.subscribe((event) => {
838
+ if (event.type === "message_update" && event.assistantMessageEvent.type === "text_delta") {
839
+ process.stdout.write(event.assistantMessageEvent.delta);
840
+ }
841
+ });
842
+
843
+ await session.prompt("Get status and list files.");
844
+ ```
845
+
846
+ ## Run Modes
847
+
848
+ The SDK exports run mode utilities for building custom interfaces on top of `createAgentSession()`:
849
+
850
+ ### InteractiveMode
851
+
852
+ Full TUI interactive mode with editor, chat history, and all built-in commands:
853
+
854
+ ```typescript
855
+ import { createAgentSession, InteractiveMode } from "@dreb/coding-agent";
856
+
857
+ const { session } = await createAgentSession({ /* ... */ });
858
+
859
+ const mode = new InteractiveMode(session, {
860
+ // All optional
861
+ migratedProviders: [], // Show migration warnings
862
+ modelFallbackMessage: undefined, // Show model restore warning
863
+ initialMessage: "Hello", // Send on startup
864
+ initialImages: [], // Images with initial message
865
+ initialMessages: [], // Additional startup prompts
866
+ });
867
+
868
+ await mode.run(); // Blocks until exit
869
+ ```
870
+
871
+ ### runPrintMode
872
+
873
+ Single-shot mode: send prompts, output result, exit:
874
+
875
+ ```typescript
876
+ import { createAgentSession, runPrintMode } from "@dreb/coding-agent";
877
+
878
+ const { session } = await createAgentSession({ /* ... */ });
879
+
880
+ await runPrintMode(session, {
881
+ mode: "text", // "text" for final response, "json" for all events
882
+ initialMessage: "Hello", // First message (can include @file content)
883
+ initialImages: [], // Images with initial message
884
+ messages: ["Follow up"], // Additional prompts
885
+ });
886
+ ```
887
+
888
+ ### runRpcMode
889
+
890
+ JSON-RPC mode for subprocess integration:
891
+
892
+ ```typescript
893
+ import { createAgentSession, runRpcMode } from "@dreb/coding-agent";
894
+
895
+ const { session } = await createAgentSession({ /* ... */ });
896
+
897
+ await runRpcMode(session); // Reads JSON commands from stdin, writes to stdout
898
+ ```
899
+
900
+ See [RPC documentation](rpc.md) for the JSON protocol.
901
+
902
+ ## RPC Mode Alternative
903
+
904
+ For subprocess-based integration without building with the SDK, use the CLI directly:
905
+
906
+ ```bash
907
+ dreb --mode rpc --no-session
908
+ ```
909
+
910
+ See [RPC documentation](rpc.md) for the JSON protocol.
911
+
912
+ The SDK is preferred when:
913
+ - You want type safety
914
+ - You're in the same Node.js process
915
+ - You need direct access to agent state
916
+ - You want to customize tools/extensions programmatically
917
+
918
+ RPC mode is preferred when:
919
+ - You're integrating from another language
920
+ - You want process isolation
921
+ - You're building a language-agnostic client
922
+
923
+ ## Exports
924
+
925
+ The main entry point exports:
926
+
927
+ ```typescript
928
+ // Factory
929
+ createAgentSession
930
+
931
+ // Auth and Models
932
+ AuthStorage
933
+ ModelRegistry
934
+
935
+ // Resource loading
936
+ DefaultResourceLoader
937
+ type ResourceLoader
938
+ createEventBus
939
+
940
+ // Helpers
941
+ getAgentDir
942
+
943
+ // Session management
944
+ SessionManager
945
+ SettingsManager
946
+
947
+ // Built-in tools (use process.cwd())
948
+ codingTools
949
+ readOnlyTools
950
+ readTool, bashTool, editTool, writeTool
951
+ grepTool, findTool, lsTool
952
+
953
+ // Tool factories (for custom cwd)
954
+ createCodingTools
955
+ createReadOnlyTools
956
+ createReadTool, createBashTool, createEditTool, createWriteTool
957
+ createGrepTool, createFindTool, createLsTool
958
+
959
+ // Types
960
+ type CreateAgentSessionOptions
961
+ type CreateAgentSessionResult
962
+ type ExtensionFactory
963
+ type ExtensionAPI
964
+ type ToolDefinition
965
+ type Skill
966
+ type PromptTemplate
967
+ ```
968
+
969
+ For extension types, see [extensions.md](extensions.md) for the full API.