smithers-orchestrator 0.2.8 → 0.2.10

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 (846) hide show
  1. package/dist/bin/cli.js +256 -154
  2. package/dist/src/commands/cli-utils.d.ts +12 -0
  3. package/dist/src/commands/cli-utils.d.ts.map +1 -0
  4. package/dist/src/commands/cli-utils.js +49 -0
  5. package/dist/src/commands/cli-utils.js.map +1 -0
  6. package/dist/src/commands/db/current-view.d.ts +3 -0
  7. package/dist/src/commands/db/current-view.d.ts.map +1 -0
  8. package/dist/src/commands/db/current-view.js +44 -0
  9. package/dist/src/commands/db/current-view.js.map +1 -0
  10. package/dist/src/commands/db/executions-view.d.ts +3 -0
  11. package/dist/src/commands/db/executions-view.d.ts.map +1 -0
  12. package/dist/src/commands/db/executions-view.js +34 -0
  13. package/dist/src/commands/db/executions-view.js.map +1 -0
  14. package/dist/src/commands/db/help.d.ts +2 -0
  15. package/dist/src/commands/db/help.d.ts.map +1 -0
  16. package/dist/src/commands/db/help.js +17 -0
  17. package/dist/src/commands/db/help.js.map +1 -0
  18. package/dist/src/commands/db/index.d.ts +13 -0
  19. package/dist/src/commands/db/index.d.ts.map +1 -0
  20. package/dist/src/commands/db/index.js +70 -0
  21. package/dist/src/commands/db/index.js.map +1 -0
  22. package/dist/src/commands/db/memories-view.d.ts +3 -0
  23. package/dist/src/commands/db/memories-view.d.ts.map +1 -0
  24. package/dist/src/commands/db/memories-view.js +30 -0
  25. package/dist/src/commands/db/memories-view.js.map +1 -0
  26. package/dist/src/commands/db/recovery-view.d.ts +3 -0
  27. package/dist/src/commands/db/recovery-view.d.ts.map +1 -0
  28. package/dist/src/commands/db/recovery-view.js +36 -0
  29. package/dist/src/commands/db/recovery-view.js.map +1 -0
  30. package/dist/src/commands/db/state-view.d.ts +3 -0
  31. package/dist/src/commands/db/state-view.d.ts.map +1 -0
  32. package/dist/src/commands/db/state-view.js +13 -0
  33. package/dist/src/commands/db/state-view.js.map +1 -0
  34. package/dist/src/commands/db/stats-view.d.ts +3 -0
  35. package/dist/src/commands/db/stats-view.d.ts.map +1 -0
  36. package/dist/src/commands/db/stats-view.js +23 -0
  37. package/dist/src/commands/db/stats-view.js.map +1 -0
  38. package/dist/src/commands/db/transitions-view.d.ts +3 -0
  39. package/dist/src/commands/db/transitions-view.d.ts.map +1 -0
  40. package/dist/src/commands/db/transitions-view.js +22 -0
  41. package/dist/src/commands/db/transitions-view.js.map +1 -0
  42. package/dist/src/commands/db/view-utils.d.ts +9 -0
  43. package/dist/src/commands/db/view-utils.d.ts.map +1 -0
  44. package/dist/src/commands/db/view-utils.js +29 -0
  45. package/dist/src/commands/db/view-utils.js.map +1 -0
  46. package/dist/src/commands/db.d.ts +2 -0
  47. package/dist/src/commands/db.d.ts.map +1 -0
  48. package/dist/src/commands/db.js +2 -0
  49. package/dist/src/commands/db.js.map +1 -0
  50. package/dist/src/commands/init.d.ts +14 -0
  51. package/dist/src/commands/init.d.ts.map +1 -0
  52. package/dist/src/commands/init.js +107 -0
  53. package/dist/src/commands/init.js.map +1 -0
  54. package/dist/src/commands/monitor.d.ts +14 -0
  55. package/dist/src/commands/monitor.d.ts.map +1 -0
  56. package/dist/src/commands/monitor.js +122 -0
  57. package/dist/src/commands/monitor.js.map +1 -0
  58. package/dist/src/commands/run.d.ts +13 -0
  59. package/dist/src/commands/run.d.ts.map +1 -0
  60. package/dist/src/commands/run.js +62 -0
  61. package/dist/src/commands/run.js.map +1 -0
  62. package/dist/src/commands/test-utils.d.ts +3 -0
  63. package/dist/src/commands/test-utils.d.ts.map +1 -0
  64. package/dist/src/commands/test-utils.js +14 -0
  65. package/dist/src/commands/test-utils.js.map +1 -0
  66. package/dist/src/components/Claude.d.ts +19 -0
  67. package/dist/src/components/Claude.d.ts.map +1 -0
  68. package/dist/src/components/Claude.js +438 -0
  69. package/dist/src/components/Claude.js.map +1 -0
  70. package/dist/src/components/ClaudeApi.d.ts +29 -0
  71. package/dist/src/components/ClaudeApi.d.ts.map +1 -0
  72. package/dist/src/components/ClaudeApi.js +21 -0
  73. package/dist/src/components/ClaudeApi.js.map +1 -0
  74. package/dist/src/components/Constraints.d.ts +24 -0
  75. package/dist/src/components/Constraints.d.ts.map +1 -0
  76. package/dist/src/components/Constraints.js +22 -0
  77. package/dist/src/components/Constraints.js.map +1 -0
  78. package/dist/src/components/Each.d.ts +7 -0
  79. package/dist/src/components/Each.d.ts.map +1 -0
  80. package/dist/src/components/Each.js +5 -0
  81. package/dist/src/components/Each.js.map +1 -0
  82. package/dist/src/components/End.d.ts +62 -0
  83. package/dist/src/components/End.d.ts.map +1 -0
  84. package/dist/src/components/End.js +81 -0
  85. package/dist/src/components/End.js.map +1 -0
  86. package/dist/src/components/ExecutionContext.d.ts +11 -0
  87. package/dist/src/components/ExecutionContext.d.ts.map +1 -0
  88. package/dist/src/components/ExecutionContext.js +10 -0
  89. package/dist/src/components/ExecutionContext.js.map +1 -0
  90. package/dist/src/components/ExecutionScope.d.ts +12 -0
  91. package/dist/src/components/ExecutionScope.d.ts.map +1 -0
  92. package/dist/src/components/ExecutionScope.js +18 -0
  93. package/dist/src/components/ExecutionScope.js.map +1 -0
  94. package/dist/src/components/Git/Commit.d.ts +33 -0
  95. package/dist/src/components/Git/Commit.d.ts.map +1 -0
  96. package/dist/src/components/Git/Commit.js +144 -0
  97. package/dist/src/components/Git/Commit.js.map +1 -0
  98. package/dist/src/components/Git/Notes.d.ts +25 -0
  99. package/dist/src/components/Git/Notes.d.ts.map +1 -0
  100. package/dist/src/components/Git/Notes.js +84 -0
  101. package/dist/src/components/Git/Notes.js.map +1 -0
  102. package/dist/src/components/Git/index.d.ts +3 -0
  103. package/dist/src/components/Git/index.d.ts.map +1 -0
  104. package/dist/src/components/Git/index.js +4 -1697
  105. package/dist/src/components/Git/index.js.map +1 -0
  106. package/dist/src/components/Hooks/OnCIFailure.d.ts +25 -0
  107. package/dist/src/components/Hooks/OnCIFailure.d.ts.map +1 -0
  108. package/dist/src/components/Hooks/OnCIFailure.js +169 -0
  109. package/dist/src/components/Hooks/OnCIFailure.js.map +1 -0
  110. package/dist/src/components/Hooks/PostCommit.d.ts +16 -0
  111. package/dist/src/components/Hooks/PostCommit.d.ts.map +1 -0
  112. package/dist/src/components/Hooks/PostCommit.js +128 -0
  113. package/dist/src/components/Hooks/PostCommit.js.map +1 -0
  114. package/dist/src/components/Hooks/index.d.ts +3 -0
  115. package/dist/src/components/Hooks/index.d.ts.map +1 -0
  116. package/dist/src/components/Hooks/index.js +5 -1718
  117. package/dist/src/components/Hooks/index.js.map +1 -0
  118. package/dist/src/components/Human.d.ts +32 -0
  119. package/dist/src/components/Human.d.ts.map +1 -0
  120. package/dist/src/components/Human.js +68 -0
  121. package/dist/src/components/Human.js.map +1 -0
  122. package/dist/src/components/If.d.ts +24 -0
  123. package/dist/src/components/If.d.ts.map +1 -0
  124. package/dist/src/components/If.js +4 -0
  125. package/dist/src/components/If.js.map +1 -0
  126. package/dist/src/components/JJ/Commit.d.ts +15 -0
  127. package/dist/src/components/JJ/Commit.d.ts.map +1 -0
  128. package/dist/src/components/JJ/Commit.js +80 -0
  129. package/dist/src/components/JJ/Commit.js.map +1 -0
  130. package/dist/src/components/JJ/Describe.d.ts +14 -0
  131. package/dist/src/components/JJ/Describe.d.ts.map +1 -0
  132. package/dist/src/components/JJ/Describe.js +64 -0
  133. package/dist/src/components/JJ/Describe.js.map +1 -0
  134. package/dist/src/components/JJ/Rebase.d.ts +15 -0
  135. package/dist/src/components/JJ/Rebase.d.ts.map +1 -0
  136. package/dist/src/components/JJ/Rebase.js +136 -0
  137. package/dist/src/components/JJ/Rebase.js.map +1 -0
  138. package/dist/src/components/JJ/Snapshot.d.ts +13 -0
  139. package/dist/src/components/JJ/Snapshot.d.ts.map +1 -0
  140. package/dist/src/components/JJ/Snapshot.js +63 -0
  141. package/dist/src/components/JJ/Snapshot.js.map +1 -0
  142. package/dist/src/components/JJ/Status.d.ts +18 -0
  143. package/dist/src/components/JJ/Status.d.ts.map +1 -0
  144. package/dist/src/components/JJ/Status.js +77 -0
  145. package/dist/src/components/JJ/Status.js.map +1 -0
  146. package/dist/src/components/JJ/index.d.ts +7 -0
  147. package/dist/src/components/JJ/index.d.ts.map +1 -0
  148. package/dist/src/components/JJ/index.js +10 -1859
  149. package/dist/src/components/JJ/index.js.map +1 -0
  150. package/dist/src/components/MCP/Sqlite.d.ts +25 -0
  151. package/dist/src/components/MCP/Sqlite.d.ts.map +1 -0
  152. package/dist/src/components/MCP/Sqlite.js +23 -0
  153. package/dist/src/components/MCP/Sqlite.js.map +1 -0
  154. package/dist/src/components/MCP/index.d.ts +2 -0
  155. package/dist/src/components/MCP/index.d.ts.map +1 -0
  156. package/dist/src/components/MCP/index.js +4 -44
  157. package/dist/src/components/MCP/index.js.map +1 -0
  158. package/dist/src/components/Parallel.d.ts +25 -0
  159. package/dist/src/components/Parallel.d.ts.map +1 -0
  160. package/dist/src/components/Parallel.js +24 -0
  161. package/dist/src/components/Parallel.js.map +1 -0
  162. package/dist/src/components/Persona.d.ts +24 -0
  163. package/dist/src/components/Persona.d.ts.map +1 -0
  164. package/dist/src/components/Persona.js +21 -0
  165. package/dist/src/components/Persona.js.map +1 -0
  166. package/dist/src/components/Phase.d.ts +49 -0
  167. package/dist/src/components/Phase.d.ts.map +1 -0
  168. package/dist/src/components/Phase.js +128 -0
  169. package/dist/src/components/Phase.js.map +1 -0
  170. package/dist/src/components/PhaseContext.d.ts +6 -0
  171. package/dist/src/components/PhaseContext.d.ts.map +1 -0
  172. package/dist/src/components/PhaseContext.js +6 -0
  173. package/dist/src/components/PhaseContext.js.map +1 -0
  174. package/dist/src/components/PhaseRegistry.d.ts +16 -0
  175. package/dist/src/components/PhaseRegistry.d.ts.map +1 -0
  176. package/dist/src/components/PhaseRegistry.js +73 -0
  177. package/dist/src/components/PhaseRegistry.js.map +1 -0
  178. package/dist/src/components/Ralph/utils.d.ts +14 -0
  179. package/dist/src/components/Ralph/utils.d.ts.map +1 -0
  180. package/dist/src/components/Ralph/utils.js +33 -0
  181. package/dist/src/components/Ralph/utils.js.map +1 -0
  182. package/dist/src/components/Ralph.d.ts +83 -0
  183. package/dist/src/components/Ralph.d.ts.map +1 -0
  184. package/dist/src/components/Ralph.js +82 -0
  185. package/dist/src/components/Ralph.js.map +1 -0
  186. package/dist/src/components/Review/Review.d.ts +9 -0
  187. package/dist/src/components/Review/Review.d.ts.map +1 -0
  188. package/dist/src/components/Review/Review.js +255 -0
  189. package/dist/src/components/Review/Review.js.map +1 -0
  190. package/dist/src/components/Review/index.d.ts +3 -0
  191. package/dist/src/components/Review/index.d.ts.map +1 -0
  192. package/dist/src/components/Review/index.js +2 -0
  193. package/dist/src/components/Review/index.js.map +1 -0
  194. package/dist/src/components/Review/types.d.ts +49 -0
  195. package/dist/src/components/Review/types.d.ts.map +1 -0
  196. package/dist/src/components/Review/types.js +2 -0
  197. package/dist/src/components/Review/types.js.map +1 -0
  198. package/dist/src/components/Review.d.ts +3 -0
  199. package/dist/src/components/Review.d.ts.map +1 -0
  200. package/dist/src/components/Review.js +2 -0
  201. package/dist/src/components/Review.js.map +1 -0
  202. package/dist/src/components/Smithers.d.ts +94 -0
  203. package/dist/src/components/Smithers.d.ts.map +1 -0
  204. package/dist/src/components/Smithers.js +240 -0
  205. package/dist/src/components/Smithers.js.map +1 -0
  206. package/dist/src/components/SmithersProvider.d.ts +274 -0
  207. package/dist/src/components/SmithersProvider.d.ts.map +1 -0
  208. package/dist/src/components/SmithersProvider.js +469 -0
  209. package/dist/src/components/SmithersProvider.js.map +1 -0
  210. package/dist/src/components/Step.d.ts +77 -0
  211. package/dist/src/components/Step.d.ts.map +1 -0
  212. package/dist/src/components/Step.js +313 -0
  213. package/dist/src/components/Step.js.map +1 -0
  214. package/dist/src/components/StepContext.d.ts +6 -0
  215. package/dist/src/components/StepContext.d.ts.map +1 -0
  216. package/dist/src/components/StepContext.js +6 -0
  217. package/dist/src/components/StepContext.js.map +1 -0
  218. package/dist/src/components/Stop.d.ts +22 -0
  219. package/dist/src/components/Stop.d.ts.map +1 -0
  220. package/dist/src/components/Stop.js +25 -0
  221. package/dist/src/components/Stop.js.map +1 -0
  222. package/dist/src/components/Subagent.d.ts +25 -0
  223. package/dist/src/components/Subagent.d.ts.map +1 -0
  224. package/dist/src/components/Subagent.js +21 -0
  225. package/dist/src/components/Subagent.js.map +1 -0
  226. package/dist/src/components/Task.d.ts +22 -0
  227. package/dist/src/components/Task.d.ts.map +1 -0
  228. package/dist/src/components/Task.js +19 -0
  229. package/dist/src/components/Task.js.map +1 -0
  230. package/dist/src/components/While.d.ts +17 -0
  231. package/dist/src/components/While.d.ts.map +1 -0
  232. package/dist/src/components/While.js +62 -0
  233. package/dist/src/components/While.js.map +1 -0
  234. package/dist/src/components/Worktree.d.ts +17 -0
  235. package/dist/src/components/Worktree.d.ts.map +1 -0
  236. package/dist/src/components/Worktree.js +105 -0
  237. package/dist/src/components/Worktree.js.map +1 -0
  238. package/dist/src/components/WorktreeProvider.d.ts +12 -0
  239. package/dist/src/components/WorktreeProvider.d.ts.map +1 -0
  240. package/dist/src/components/WorktreeProvider.js +10 -0
  241. package/dist/src/components/WorktreeProvider.js.map +1 -0
  242. package/dist/src/components/agents/ClaudeCodeCLI.d.ts +3 -0
  243. package/dist/src/components/agents/ClaudeCodeCLI.d.ts.map +1 -0
  244. package/dist/src/components/agents/ClaudeCodeCLI.js +12 -0
  245. package/dist/src/components/agents/ClaudeCodeCLI.js.map +1 -0
  246. package/dist/src/components/agents/SmithersCLI.d.ts +78 -0
  247. package/dist/src/components/agents/SmithersCLI.d.ts.map +1 -0
  248. package/dist/src/components/agents/SmithersCLI.js +280 -0
  249. package/dist/src/components/agents/SmithersCLI.js.map +1 -0
  250. package/dist/src/components/agents/claude-cli/arg-builder.d.ts +19 -0
  251. package/dist/src/components/agents/claude-cli/arg-builder.d.ts.map +1 -0
  252. package/dist/src/components/agents/claude-cli/arg-builder.js +84 -0
  253. package/dist/src/components/agents/claude-cli/arg-builder.js.map +1 -0
  254. package/dist/src/components/agents/claude-cli/executor.d.ts +23 -0
  255. package/dist/src/components/agents/claude-cli/executor.d.ts.map +1 -0
  256. package/dist/src/components/agents/claude-cli/executor.js +301 -0
  257. package/dist/src/components/agents/claude-cli/executor.js.map +1 -0
  258. package/dist/src/components/agents/claude-cli/index.d.ts +6 -0
  259. package/dist/src/components/agents/claude-cli/index.d.ts.map +1 -0
  260. package/dist/src/components/agents/claude-cli/index.js +11 -0
  261. package/dist/src/components/agents/claude-cli/index.js.map +1 -0
  262. package/dist/src/components/agents/claude-cli/message-parser.d.ts +37 -0
  263. package/dist/src/components/agents/claude-cli/message-parser.d.ts.map +1 -0
  264. package/dist/src/components/agents/claude-cli/message-parser.js +152 -0
  265. package/dist/src/components/agents/claude-cli/message-parser.js.map +1 -0
  266. package/dist/src/components/agents/claude-cli/output-parser.d.ts +18 -0
  267. package/dist/src/components/agents/claude-cli/output-parser.d.ts.map +1 -0
  268. package/dist/src/components/agents/claude-cli/output-parser.js +144 -0
  269. package/dist/src/components/agents/claude-cli/output-parser.js.map +1 -0
  270. package/dist/src/components/agents/claude-cli/stop-conditions.d.ts +9 -0
  271. package/dist/src/components/agents/claude-cli/stop-conditions.d.ts.map +1 -0
  272. package/dist/src/components/agents/claude-cli/stop-conditions.js +79 -0
  273. package/dist/src/components/agents/claude-cli/stop-conditions.js.map +1 -0
  274. package/dist/src/components/agents/types/agents.d.ts +197 -0
  275. package/dist/src/components/agents/types/agents.d.ts.map +1 -0
  276. package/dist/src/components/agents/types/agents.js +3 -0
  277. package/dist/src/components/agents/types/agents.js.map +1 -0
  278. package/dist/src/components/agents/types/execution.d.ts +128 -0
  279. package/dist/src/components/agents/types/execution.d.ts.map +1 -0
  280. package/dist/src/components/agents/types/execution.js +3 -0
  281. package/dist/src/components/agents/types/execution.js.map +1 -0
  282. package/dist/src/components/agents/types/index.d.ts +5 -0
  283. package/dist/src/components/agents/types/index.d.ts.map +1 -0
  284. package/dist/src/components/agents/types/index.js +4 -0
  285. package/dist/src/components/agents/types/index.js.map +1 -0
  286. package/dist/src/components/agents/types/schema.d.ts +11 -0
  287. package/dist/src/components/agents/types/schema.d.ts.map +1 -0
  288. package/dist/src/components/agents/types/schema.js +3 -0
  289. package/dist/src/components/agents/types/schema.js.map +1 -0
  290. package/dist/src/components/agents/types/tools.d.ts +5 -0
  291. package/dist/src/components/agents/types/tools.d.ts.map +1 -0
  292. package/dist/src/components/agents/types/tools.js +3 -0
  293. package/dist/src/components/agents/types/tools.js.map +1 -0
  294. package/dist/src/components/agents/types.d.ts +2 -0
  295. package/dist/src/components/agents/types.d.ts.map +1 -0
  296. package/dist/src/components/agents/types.js +4 -0
  297. package/dist/src/components/agents/types.js.map +1 -0
  298. package/dist/src/components/index.d.ts +34 -0
  299. package/dist/src/components/index.d.ts.map +1 -0
  300. package/dist/src/components/index.js +49 -5036
  301. package/dist/src/components/index.js.map +1 -0
  302. package/dist/src/core/index.d.ts +7 -0
  303. package/dist/src/core/index.d.ts.map +1 -0
  304. package/dist/src/core/index.js +6 -179
  305. package/dist/src/core/index.js.map +1 -0
  306. package/dist/src/db/agents.d.ts +28 -0
  307. package/dist/src/db/agents.d.ts.map +1 -0
  308. package/dist/src/db/agents.js +134 -0
  309. package/dist/src/db/agents.js.map +1 -0
  310. package/dist/src/db/artifacts.d.ts +12 -0
  311. package/dist/src/db/artifacts.d.ts.map +1 -0
  312. package/dist/src/db/artifacts.js +46 -0
  313. package/dist/src/db/artifacts.js.map +1 -0
  314. package/dist/src/db/build-state.d.ts +28 -0
  315. package/dist/src/db/build-state.d.ts.map +1 -0
  316. package/dist/src/db/build-state.js +108 -0
  317. package/dist/src/db/build-state.js.map +1 -0
  318. package/dist/src/db/execution.d.ts +19 -0
  319. package/dist/src/db/execution.d.ts.map +1 -0
  320. package/dist/src/db/execution.js +84 -0
  321. package/dist/src/db/execution.js.map +1 -0
  322. package/dist/src/db/human.d.ts +91 -0
  323. package/dist/src/db/human.d.ts.map +1 -0
  324. package/dist/src/db/human.js +89 -0
  325. package/dist/src/db/human.js.map +1 -0
  326. package/dist/src/db/index.d.ts +112 -0
  327. package/dist/src/db/index.d.ts.map +1 -0
  328. package/dist/src/db/index.js +175 -2158
  329. package/dist/src/db/index.js.map +1 -0
  330. package/dist/src/db/memories.d.ts +24 -0
  331. package/dist/src/db/memories.d.ts.map +1 -0
  332. package/dist/src/db/memories.js +105 -0
  333. package/dist/src/db/memories.js.map +1 -0
  334. package/dist/src/db/phases.d.ts +17 -0
  335. package/dist/src/db/phases.d.ts.map +1 -0
  336. package/dist/src/db/phases.js +50 -0
  337. package/dist/src/db/phases.js.map +1 -0
  338. package/dist/src/db/query.d.ts +8 -0
  339. package/dist/src/db/query.d.ts.map +1 -0
  340. package/dist/src/db/query.js +8 -0
  341. package/dist/src/db/query.js.map +1 -0
  342. package/dist/src/db/render-frames.d.ts +49 -0
  343. package/dist/src/db/render-frames.d.ts.map +1 -0
  344. package/dist/src/db/render-frames.js +71 -0
  345. package/dist/src/db/render-frames.js.map +1 -0
  346. package/dist/src/db/state.d.ts +20 -0
  347. package/dist/src/db/state.d.ts.map +1 -0
  348. package/dist/src/db/state.js +79 -0
  349. package/dist/src/db/state.js.map +1 -0
  350. package/dist/src/db/steps.d.ts +23 -0
  351. package/dist/src/db/steps.d.ts.map +1 -0
  352. package/dist/src/db/steps.js +57 -0
  353. package/dist/src/db/steps.js.map +1 -0
  354. package/dist/src/db/tasks.d.ts +56 -0
  355. package/dist/src/db/tasks.d.ts.map +1 -0
  356. package/dist/src/db/tasks.js +82 -0
  357. package/dist/src/db/tasks.js.map +1 -0
  358. package/dist/src/db/tools.d.ts +15 -0
  359. package/dist/src/db/tools.d.ts.map +1 -0
  360. package/dist/src/db/tools.js +60 -0
  361. package/dist/src/db/tools.js.map +1 -0
  362. package/dist/src/db/types.d.ts +236 -0
  363. package/dist/src/db/types.d.ts.map +1 -0
  364. package/dist/src/db/types.js +3 -0
  365. package/dist/src/db/types.js.map +1 -0
  366. package/dist/src/db/utils.d.ts +4 -0
  367. package/dist/src/db/utils.d.ts.map +1 -0
  368. package/dist/src/db/utils.js +17 -0
  369. package/dist/src/db/utils.js.map +1 -0
  370. package/dist/src/db/vcs-queue.d.ts +21 -0
  371. package/dist/src/db/vcs-queue.d.ts.map +1 -0
  372. package/dist/src/db/vcs-queue.js +27 -0
  373. package/dist/src/db/vcs-queue.js.map +1 -0
  374. package/dist/src/db/vcs.d.ts +61 -0
  375. package/dist/src/db/vcs.d.ts.map +1 -0
  376. package/dist/src/db/vcs.js +230 -0
  377. package/dist/src/db/vcs.js.map +1 -0
  378. package/dist/src/debug/index.d.ts +46 -0
  379. package/dist/src/debug/index.d.ts.map +1 -0
  380. package/dist/src/debug/index.js +181 -0
  381. package/dist/src/debug/index.js.map +1 -0
  382. package/dist/src/hooks/ai-sdk.d.ts +10 -0
  383. package/dist/src/hooks/ai-sdk.d.ts.map +1 -0
  384. package/dist/src/hooks/ai-sdk.js +32 -27
  385. package/dist/src/hooks/ai-sdk.js.map +1 -0
  386. package/dist/src/hooks/index.d.ts +7 -0
  387. package/dist/src/hooks/index.d.ts.map +1 -0
  388. package/dist/src/hooks/index.js +8 -1834
  389. package/dist/src/hooks/index.js.map +1 -0
  390. package/dist/src/hooks/useCaptureRenderFrame.d.ts +7 -0
  391. package/dist/src/hooks/useCaptureRenderFrame.d.ts.map +1 -0
  392. package/dist/src/hooks/useCaptureRenderFrame.js +24 -0
  393. package/dist/src/hooks/useCaptureRenderFrame.js.map +1 -0
  394. package/dist/src/hooks/useCommitWithRetry.d.ts +12 -0
  395. package/dist/src/hooks/useCommitWithRetry.d.ts.map +1 -0
  396. package/dist/src/hooks/useCommitWithRetry.js +40 -0
  397. package/dist/src/hooks/useCommitWithRetry.js.map +1 -0
  398. package/dist/src/hooks/useHuman.d.ts +37 -0
  399. package/dist/src/hooks/useHuman.d.ts.map +1 -0
  400. package/dist/src/hooks/useHuman.js +75 -0
  401. package/dist/src/hooks/useHuman.js.map +1 -0
  402. package/dist/src/hooks/useHumanInteractive.d.ts +36 -0
  403. package/dist/src/hooks/useHumanInteractive.d.ts.map +1 -0
  404. package/dist/src/hooks/useHumanInteractive.js +193 -0
  405. package/dist/src/hooks/useHumanInteractive.js.map +1 -0
  406. package/dist/src/hooks/useRalphCount.d.ts +8 -0
  407. package/dist/src/hooks/useRalphCount.d.ts.map +1 -0
  408. package/dist/src/hooks/useRalphCount.js +16 -0
  409. package/dist/src/hooks/useRalphCount.js.map +1 -0
  410. package/dist/src/index.d.ts +9 -0
  411. package/dist/src/index.d.ts.map +1 -0
  412. package/dist/src/index.js +10 -11848
  413. package/dist/src/index.js.map +1 -0
  414. package/dist/src/jsx-runtime.d.ts +9 -0
  415. package/dist/src/jsx-runtime.d.ts.map +1 -0
  416. package/dist/src/jsx-runtime.js +8 -0
  417. package/dist/src/jsx-runtime.js.map +1 -0
  418. package/dist/src/middleware/caching.d.ts +23 -0
  419. package/dist/src/middleware/caching.d.ts.map +1 -0
  420. package/dist/src/middleware/caching.js +73 -0
  421. package/dist/src/middleware/caching.js.map +1 -0
  422. package/dist/src/middleware/compose.d.ts +11 -0
  423. package/dist/src/middleware/compose.d.ts.map +1 -0
  424. package/dist/src/middleware/compose.js +110 -0
  425. package/dist/src/middleware/compose.js.map +1 -0
  426. package/dist/src/middleware/cost-tracking.d.ts +14 -0
  427. package/dist/src/middleware/cost-tracking.d.ts.map +1 -0
  428. package/dist/src/middleware/cost-tracking.js +25 -0
  429. package/dist/src/middleware/cost-tracking.js.map +1 -0
  430. package/dist/src/middleware/extract-json.d.ts +6 -0
  431. package/dist/src/middleware/extract-json.d.ts.map +1 -0
  432. package/dist/src/middleware/extract-json.js +34 -0
  433. package/dist/src/middleware/extract-json.js.map +1 -0
  434. package/dist/src/middleware/extract-reasoning.d.ts +9 -0
  435. package/dist/src/middleware/extract-reasoning.d.ts.map +1 -0
  436. package/dist/src/middleware/extract-reasoning.js +27 -0
  437. package/dist/src/middleware/extract-reasoning.js.map +1 -0
  438. package/dist/src/middleware/index.d.ts +23 -0
  439. package/dist/src/middleware/index.d.ts.map +1 -0
  440. package/dist/src/middleware/index.js +12 -698
  441. package/dist/src/middleware/index.js.map +1 -0
  442. package/dist/src/middleware/logging.d.ts +19 -0
  443. package/dist/src/middleware/logging.d.ts.map +1 -0
  444. package/dist/src/middleware/logging.js +56 -0
  445. package/dist/src/middleware/logging.js.map +1 -0
  446. package/dist/src/middleware/rate-limiting.d.ts +7 -0
  447. package/dist/src/middleware/rate-limiting.d.ts.map +1 -0
  448. package/dist/src/middleware/rate-limiting.js +59 -0
  449. package/dist/src/middleware/rate-limiting.js.map +1 -0
  450. package/dist/src/middleware/redact-secrets.d.ts +7 -0
  451. package/dist/src/middleware/redact-secrets.d.ts.map +1 -0
  452. package/dist/src/middleware/redact-secrets.js +29 -0
  453. package/dist/src/middleware/redact-secrets.js.map +1 -0
  454. package/dist/src/middleware/retry.d.ts +11 -0
  455. package/dist/src/middleware/retry.d.ts.map +1 -0
  456. package/dist/src/middleware/retry.js +35 -0
  457. package/dist/src/middleware/retry.js.map +1 -0
  458. package/dist/src/middleware/timeout.d.ts +8 -0
  459. package/dist/src/middleware/timeout.d.ts.map +1 -0
  460. package/dist/src/middleware/timeout.js +26 -0
  461. package/dist/src/middleware/timeout.js.map +1 -0
  462. package/dist/src/middleware/types.d.ts +32 -0
  463. package/dist/src/middleware/types.d.ts.map +1 -0
  464. package/dist/src/middleware/types.js +2 -0
  465. package/dist/src/middleware/types.js.map +1 -0
  466. package/dist/src/middleware/validation.d.ts +11 -0
  467. package/dist/src/middleware/validation.d.ts.map +1 -0
  468. package/dist/src/middleware/validation.js +25 -0
  469. package/dist/src/middleware/validation.js.map +1 -0
  470. package/dist/src/monitor/haiku-summarizer.d.ts +10 -0
  471. package/dist/src/monitor/haiku-summarizer.d.ts.map +1 -0
  472. package/dist/src/monitor/haiku-summarizer.js +59 -0
  473. package/dist/src/monitor/haiku-summarizer.js.map +1 -0
  474. package/dist/src/monitor/index.d.ts +8 -0
  475. package/dist/src/monitor/index.d.ts.map +1 -0
  476. package/dist/src/monitor/index.js +6 -4388
  477. package/dist/src/monitor/index.js.map +1 -0
  478. package/dist/src/monitor/log-writer.d.ts +51 -0
  479. package/dist/src/monitor/log-writer.d.ts.map +1 -0
  480. package/dist/src/monitor/log-writer.js +183 -0
  481. package/dist/src/monitor/log-writer.js.map +1 -0
  482. package/dist/src/monitor/output-parser.d.ts +22 -0
  483. package/dist/src/monitor/output-parser.d.ts.map +1 -0
  484. package/dist/src/monitor/output-parser.js +114 -0
  485. package/dist/src/monitor/output-parser.js.map +1 -0
  486. package/dist/src/monitor/stream-formatter.d.ts +26 -0
  487. package/dist/src/monitor/stream-formatter.d.ts.map +1 -0
  488. package/dist/src/monitor/stream-formatter.js +137 -0
  489. package/dist/src/monitor/stream-formatter.js.map +1 -0
  490. package/dist/src/rate-limits/index.d.ts +8 -0
  491. package/dist/src/rate-limits/index.d.ts.map +1 -0
  492. package/dist/src/rate-limits/index.js +7 -4309
  493. package/dist/src/rate-limits/index.js.map +1 -0
  494. package/dist/src/rate-limits/middleware.d.ts +10 -0
  495. package/dist/src/rate-limits/middleware.d.ts.map +1 -0
  496. package/dist/src/rate-limits/middleware.js +18 -0
  497. package/dist/src/rate-limits/middleware.js.map +1 -0
  498. package/dist/src/rate-limits/monitor.d.ts +18 -0
  499. package/dist/src/rate-limits/monitor.d.ts.map +1 -0
  500. package/dist/src/rate-limits/monitor.js +101 -0
  501. package/dist/src/rate-limits/monitor.js.map +1 -0
  502. package/dist/src/rate-limits/providers/anthropic.d.ts +6 -0
  503. package/dist/src/rate-limits/providers/anthropic.d.ts.map +1 -0
  504. package/dist/src/rate-limits/providers/anthropic.js +58 -0
  505. package/dist/src/rate-limits/providers/anthropic.js.map +1 -0
  506. package/dist/src/rate-limits/providers/base.d.ts +2 -0
  507. package/dist/src/rate-limits/providers/base.d.ts.map +1 -0
  508. package/dist/src/rate-limits/providers/base.js +2 -0
  509. package/dist/src/rate-limits/providers/base.js.map +1 -0
  510. package/dist/src/rate-limits/providers/openai.d.ts +7 -0
  511. package/dist/src/rate-limits/providers/openai.d.ts.map +1 -0
  512. package/dist/src/rate-limits/providers/openai.js +85 -0
  513. package/dist/src/rate-limits/providers/openai.js.map +1 -0
  514. package/dist/src/rate-limits/store.d.ts +16 -0
  515. package/dist/src/rate-limits/store.d.ts.map +1 -0
  516. package/dist/src/rate-limits/store.js +65 -0
  517. package/dist/src/rate-limits/store.js.map +1 -0
  518. package/dist/src/rate-limits/throttle.d.ts +10 -0
  519. package/dist/src/rate-limits/throttle.d.ts.map +1 -0
  520. package/dist/src/rate-limits/throttle.js +52 -0
  521. package/dist/src/rate-limits/throttle.js.map +1 -0
  522. package/dist/src/rate-limits/types.d.ts +76 -0
  523. package/dist/src/rate-limits/types.d.ts.map +1 -0
  524. package/dist/src/rate-limits/types.js +2 -0
  525. package/dist/src/rate-limits/types.js.map +1 -0
  526. package/dist/src/reactive-sqlite/database.d.ts +106 -0
  527. package/dist/src/reactive-sqlite/database.d.ts.map +1 -0
  528. package/dist/src/reactive-sqlite/database.js +278 -0
  529. package/dist/src/reactive-sqlite/database.js.map +1 -0
  530. package/dist/src/reactive-sqlite/hooks/context.d.ts +59 -0
  531. package/dist/src/reactive-sqlite/hooks/context.d.ts.map +1 -0
  532. package/dist/src/reactive-sqlite/hooks/context.js +60 -0
  533. package/dist/src/reactive-sqlite/hooks/context.js.map +1 -0
  534. package/dist/src/reactive-sqlite/hooks/index.d.ts +12 -0
  535. package/dist/src/reactive-sqlite/hooks/index.d.ts.map +1 -0
  536. package/dist/src/reactive-sqlite/hooks/index.js +12 -0
  537. package/dist/src/reactive-sqlite/hooks/index.js.map +1 -0
  538. package/dist/src/reactive-sqlite/hooks/shared.d.ts +32 -0
  539. package/dist/src/reactive-sqlite/hooks/shared.d.ts.map +1 -0
  540. package/dist/src/reactive-sqlite/hooks/shared.js +62 -0
  541. package/dist/src/reactive-sqlite/hooks/shared.js.map +1 -0
  542. package/dist/src/reactive-sqlite/hooks/useMutation.d.ts +33 -0
  543. package/dist/src/reactive-sqlite/hooks/useMutation.d.ts.map +1 -0
  544. package/dist/src/reactive-sqlite/hooks/useMutation.js +113 -0
  545. package/dist/src/reactive-sqlite/hooks/useMutation.js.map +1 -0
  546. package/dist/src/reactive-sqlite/hooks/useQuery.d.ts +34 -0
  547. package/dist/src/reactive-sqlite/hooks/useQuery.d.ts.map +1 -0
  548. package/dist/src/reactive-sqlite/hooks/useQuery.js +140 -0
  549. package/dist/src/reactive-sqlite/hooks/useQuery.js.map +1 -0
  550. package/dist/src/reactive-sqlite/hooks/useQueryOne.d.ts +37 -0
  551. package/dist/src/reactive-sqlite/hooks/useQueryOne.d.ts.map +1 -0
  552. package/dist/src/reactive-sqlite/hooks/useQueryOne.js +87 -0
  553. package/dist/src/reactive-sqlite/hooks/useQueryOne.js.map +1 -0
  554. package/dist/src/reactive-sqlite/hooks/useQueryValue.d.ts +31 -0
  555. package/dist/src/reactive-sqlite/hooks/useQueryValue.d.ts.map +1 -0
  556. package/dist/src/reactive-sqlite/hooks/useQueryValue.js +83 -0
  557. package/dist/src/reactive-sqlite/hooks/useQueryValue.js.map +1 -0
  558. package/dist/src/reactive-sqlite/hooks.d.ts +7 -0
  559. package/dist/src/reactive-sqlite/hooks.d.ts.map +1 -0
  560. package/dist/src/reactive-sqlite/hooks.js +7 -0
  561. package/dist/src/reactive-sqlite/hooks.js.map +1 -0
  562. package/dist/src/reactive-sqlite/index.d.ts +38 -0
  563. package/dist/src/reactive-sqlite/index.d.ts.map +1 -0
  564. package/dist/src/reactive-sqlite/index.js +40 -765
  565. package/dist/src/reactive-sqlite/index.js.map +1 -0
  566. package/dist/src/reactive-sqlite/parser.d.ts +38 -0
  567. package/dist/src/reactive-sqlite/parser.d.ts.map +1 -0
  568. package/dist/src/reactive-sqlite/parser.js +222 -0
  569. package/dist/src/reactive-sqlite/parser.js.map +1 -0
  570. package/dist/src/reactive-sqlite/types.d.ts +99 -0
  571. package/dist/src/reactive-sqlite/types.d.ts.map +1 -0
  572. package/dist/src/reactive-sqlite/types.js +5 -0
  573. package/dist/src/reactive-sqlite/types.js.map +1 -0
  574. package/dist/src/reconciler/hooks.d.ts +101 -0
  575. package/dist/src/reconciler/hooks.d.ts.map +1 -0
  576. package/dist/src/reconciler/hooks.js +178 -0
  577. package/dist/src/reconciler/hooks.js.map +1 -0
  578. package/dist/src/reconciler/host-config.d.ts +10 -0
  579. package/dist/src/reconciler/host-config.d.ts.map +1 -0
  580. package/dist/src/reconciler/host-config.js +242 -0
  581. package/dist/src/reconciler/host-config.js.map +1 -0
  582. package/dist/src/reconciler/index.d.ts +15 -0
  583. package/dist/src/reconciler/index.d.ts.map +1 -0
  584. package/dist/src/reconciler/index.js +19 -1976
  585. package/dist/src/reconciler/index.js.map +1 -0
  586. package/dist/src/reconciler/jsx-runtime.d.ts +18 -0
  587. package/dist/src/reconciler/jsx-runtime.d.ts.map +1 -0
  588. package/dist/src/reconciler/jsx-runtime.js +26 -58
  589. package/dist/src/reconciler/jsx-runtime.js.map +1 -0
  590. package/dist/src/reconciler/methods.d.ts +20 -0
  591. package/dist/src/reconciler/methods.d.ts.map +1 -0
  592. package/dist/src/reconciler/methods.js +98 -0
  593. package/dist/src/reconciler/methods.js.map +1 -0
  594. package/dist/src/reconciler/root.d.ts +37 -0
  595. package/dist/src/reconciler/root.d.ts.map +1 -0
  596. package/dist/src/reconciler/root.js +134 -0
  597. package/dist/src/reconciler/root.js.map +1 -0
  598. package/dist/src/reconciler/serialize.d.ts +15 -0
  599. package/dist/src/reconciler/serialize.d.ts.map +1 -0
  600. package/dist/src/reconciler/serialize.js +226 -0
  601. package/dist/src/reconciler/serialize.js.map +1 -0
  602. package/dist/src/reconciler/types.d.ts +57 -0
  603. package/dist/src/reconciler/types.d.ts.map +1 -0
  604. package/dist/src/reconciler/types.js +11 -0
  605. package/dist/src/reconciler/types.js.map +1 -0
  606. package/dist/src/streaming/claude-parser.d.ts +12 -0
  607. package/dist/src/streaming/claude-parser.d.ts.map +1 -0
  608. package/dist/src/streaming/claude-parser.js +197 -0
  609. package/dist/src/streaming/claude-parser.js.map +1 -0
  610. package/dist/src/streaming/types.d.ts +12 -0
  611. package/dist/src/streaming/types.d.ts.map +1 -0
  612. package/dist/src/streaming/types.js +3 -0
  613. package/dist/src/streaming/types.js.map +1 -0
  614. package/dist/src/streaming/v3-compat.d.ts +96 -0
  615. package/dist/src/streaming/v3-compat.d.ts.map +1 -0
  616. package/dist/src/streaming/v3-compat.js +3 -0
  617. package/dist/src/streaming/v3-compat.js.map +1 -0
  618. package/dist/src/tools/ReportTool.d.ts +46 -0
  619. package/dist/src/tools/ReportTool.d.ts.map +1 -0
  620. package/dist/src/tools/ReportTool.js +128 -0
  621. package/dist/src/tools/ReportTool.js.map +1 -0
  622. package/dist/src/tools/createSmithersTool.d.ts +34 -0
  623. package/dist/src/tools/createSmithersTool.d.ts.map +1 -0
  624. package/dist/src/tools/createSmithersTool.js +63 -0
  625. package/dist/src/tools/createSmithersTool.js.map +1 -0
  626. package/dist/src/tools/index.d.ts +8 -0
  627. package/dist/src/tools/index.d.ts.map +1 -0
  628. package/dist/src/tools/index.js +7 -13875
  629. package/dist/src/tools/index.js.map +1 -0
  630. package/dist/src/tools/registry.d.ts +139 -0
  631. package/dist/src/tools/registry.d.ts.map +1 -0
  632. package/dist/src/tools/registry.js +155 -0
  633. package/dist/src/tools/registry.js.map +1 -0
  634. package/dist/src/tools/smithers-mcp-server.d.ts +2 -0
  635. package/dist/src/tools/smithers-mcp-server.d.ts.map +1 -0
  636. package/dist/src/tools/smithers-mcp-server.js +24 -0
  637. package/dist/src/tools/smithers-mcp-server.js.map +1 -0
  638. package/dist/src/tools/tool-to-mcp.d.ts +13 -0
  639. package/dist/src/tools/tool-to-mcp.d.ts.map +1 -0
  640. package/dist/src/tools/tool-to-mcp.js +24 -0
  641. package/dist/src/tools/tool-to-mcp.js.map +1 -0
  642. package/dist/src/tools/types.d.ts +44 -0
  643. package/dist/src/tools/types.d.ts.map +1 -0
  644. package/dist/src/tools/types.js +2 -0
  645. package/dist/src/tools/types.js.map +1 -0
  646. package/dist/src/transport/smithers-chat-transport.d.ts +55 -0
  647. package/dist/src/transport/smithers-chat-transport.d.ts.map +1 -0
  648. package/dist/src/transport/smithers-chat-transport.js +390 -0
  649. package/dist/src/transport/smithers-chat-transport.js.map +1 -0
  650. package/dist/src/transport/types.d.ts +49 -0
  651. package/dist/src/transport/types.d.ts.map +1 -0
  652. package/dist/src/transport/types.js +2 -0
  653. package/dist/src/transport/types.js.map +1 -0
  654. package/dist/src/tui/App.d.ts +12 -0
  655. package/dist/src/tui/App.d.ts.map +1 -0
  656. package/dist/src/tui/App.js +94 -0
  657. package/dist/src/tui/App.js.map +1 -0
  658. package/dist/src/tui/components/index.d.ts +4 -0
  659. package/dist/src/tui/components/index.d.ts.map +1 -0
  660. package/dist/src/tui/components/index.js +5 -0
  661. package/dist/src/tui/components/index.js.map +1 -0
  662. package/dist/src/tui/components/layout/Header.d.ts +6 -0
  663. package/dist/src/tui/components/layout/Header.d.ts.map +1 -0
  664. package/dist/src/tui/components/layout/Header.js +20 -0
  665. package/dist/src/tui/components/layout/Header.js.map +1 -0
  666. package/dist/src/tui/components/layout/StatusBar.d.ts +7 -0
  667. package/dist/src/tui/components/layout/StatusBar.d.ts.map +1 -0
  668. package/dist/src/tui/components/layout/StatusBar.js +15 -0
  669. package/dist/src/tui/components/layout/StatusBar.js.map +1 -0
  670. package/dist/src/tui/components/layout/TabBar.d.ts +8 -0
  671. package/dist/src/tui/components/layout/TabBar.d.ts.map +1 -0
  672. package/dist/src/tui/components/layout/TabBar.js +26 -0
  673. package/dist/src/tui/components/layout/TabBar.js.map +1 -0
  674. package/dist/src/tui/components/layout/index.d.ts +4 -0
  675. package/dist/src/tui/components/layout/index.d.ts.map +1 -0
  676. package/dist/src/tui/components/layout/index.js +5 -0
  677. package/dist/src/tui/components/layout/index.js.map +1 -0
  678. package/dist/src/tui/components/shared/ScrollableList.d.ts +11 -0
  679. package/dist/src/tui/components/shared/ScrollableList.d.ts.map +1 -0
  680. package/dist/src/tui/components/shared/ScrollableList.js +62 -0
  681. package/dist/src/tui/components/shared/ScrollableList.js.map +1 -0
  682. package/dist/src/tui/components/shared/XMLViewer.d.ts +6 -0
  683. package/dist/src/tui/components/shared/XMLViewer.d.ts.map +1 -0
  684. package/dist/src/tui/components/shared/XMLViewer.js +26 -0
  685. package/dist/src/tui/components/shared/XMLViewer.js.map +1 -0
  686. package/dist/src/tui/components/shared/index.d.ts +3 -0
  687. package/dist/src/tui/components/shared/index.d.ts.map +1 -0
  688. package/dist/src/tui/components/shared/index.js +4 -0
  689. package/dist/src/tui/components/shared/index.js.map +1 -0
  690. package/dist/src/tui/components/views/ChatInterface.d.ts +7 -0
  691. package/dist/src/tui/components/views/ChatInterface.d.ts.map +1 -0
  692. package/dist/src/tui/components/views/ChatInterface.js +46 -0
  693. package/dist/src/tui/components/views/ChatInterface.js.map +1 -0
  694. package/dist/src/tui/components/views/DatabaseExplorer.d.ts +7 -0
  695. package/dist/src/tui/components/views/DatabaseExplorer.d.ts.map +1 -0
  696. package/dist/src/tui/components/views/DatabaseExplorer.js +90 -0
  697. package/dist/src/tui/components/views/DatabaseExplorer.js.map +1 -0
  698. package/dist/src/tui/components/views/ExecutionTimeline.d.ts +7 -0
  699. package/dist/src/tui/components/views/ExecutionTimeline.d.ts.map +1 -0
  700. package/dist/src/tui/components/views/ExecutionTimeline.js +84 -0
  701. package/dist/src/tui/components/views/ExecutionTimeline.js.map +1 -0
  702. package/dist/src/tui/components/views/HumanInteractionHandler.d.ts +7 -0
  703. package/dist/src/tui/components/views/HumanInteractionHandler.d.ts.map +1 -0
  704. package/dist/src/tui/components/views/HumanInteractionHandler.js +80 -0
  705. package/dist/src/tui/components/views/HumanInteractionHandler.js.map +1 -0
  706. package/dist/src/tui/components/views/RenderFrameInspector.d.ts +7 -0
  707. package/dist/src/tui/components/views/RenderFrameInspector.d.ts.map +1 -0
  708. package/dist/src/tui/components/views/RenderFrameInspector.js +37 -0
  709. package/dist/src/tui/components/views/RenderFrameInspector.js.map +1 -0
  710. package/dist/src/tui/components/views/ReportViewer.d.ts +7 -0
  711. package/dist/src/tui/components/views/ReportViewer.d.ts.map +1 -0
  712. package/dist/src/tui/components/views/ReportViewer.js +68 -0
  713. package/dist/src/tui/components/views/ReportViewer.js.map +1 -0
  714. package/dist/src/tui/components/views/index.d.ts +7 -0
  715. package/dist/src/tui/components/views/index.d.ts.map +1 -0
  716. package/dist/src/tui/components/views/index.js +8 -0
  717. package/dist/src/tui/components/views/index.js.map +1 -0
  718. package/dist/src/tui/hooks/index.d.ts +8 -0
  719. package/dist/src/tui/hooks/index.d.ts.map +1 -0
  720. package/dist/src/tui/hooks/index.js +9 -0
  721. package/dist/src/tui/hooks/index.js.map +1 -0
  722. package/dist/src/tui/hooks/useClaudeChat.d.ts +12 -0
  723. package/dist/src/tui/hooks/useClaudeChat.d.ts.map +1 -0
  724. package/dist/src/tui/hooks/useClaudeChat.js +61 -0
  725. package/dist/src/tui/hooks/useClaudeChat.js.map +1 -0
  726. package/dist/src/tui/hooks/useHumanRequests.d.ts +13 -0
  727. package/dist/src/tui/hooks/useHumanRequests.d.ts.map +1 -0
  728. package/dist/src/tui/hooks/useHumanRequests.js +67 -0
  729. package/dist/src/tui/hooks/useHumanRequests.js.map +1 -0
  730. package/dist/src/tui/hooks/usePollEvents.d.ts +11 -0
  731. package/dist/src/tui/hooks/usePollEvents.d.ts.map +1 -0
  732. package/dist/src/tui/hooks/usePollEvents.js +56 -0
  733. package/dist/src/tui/hooks/usePollEvents.js.map +1 -0
  734. package/dist/src/tui/hooks/usePollTableData.d.ts +7 -0
  735. package/dist/src/tui/hooks/usePollTableData.d.ts.map +1 -0
  736. package/dist/src/tui/hooks/usePollTableData.js +42 -0
  737. package/dist/src/tui/hooks/usePollTableData.js.map +1 -0
  738. package/dist/src/tui/hooks/useRenderFrames.d.ts +15 -0
  739. package/dist/src/tui/hooks/useRenderFrames.d.ts.map +1 -0
  740. package/dist/src/tui/hooks/useRenderFrames.js +67 -0
  741. package/dist/src/tui/hooks/useRenderFrames.js.map +1 -0
  742. package/dist/src/tui/hooks/useReportGenerator.d.ts +10 -0
  743. package/dist/src/tui/hooks/useReportGenerator.d.ts.map +1 -0
  744. package/dist/src/tui/hooks/useReportGenerator.js +58 -0
  745. package/dist/src/tui/hooks/useReportGenerator.js.map +1 -0
  746. package/dist/src/tui/hooks/useSmithersConnection.d.ts +21 -0
  747. package/dist/src/tui/hooks/useSmithersConnection.d.ts.map +1 -0
  748. package/dist/src/tui/hooks/useSmithersConnection.js +79 -0
  749. package/dist/src/tui/hooks/useSmithersConnection.js.map +1 -0
  750. package/dist/src/tui/index.d.ts +5 -0
  751. package/dist/src/tui/index.d.ts.map +1 -0
  752. package/dist/src/tui/index.js +18 -0
  753. package/dist/src/tui/index.js.map +1 -0
  754. package/dist/src/tui/services/claude-assistant.d.ts +12 -0
  755. package/dist/src/tui/services/claude-assistant.d.ts.map +1 -0
  756. package/dist/src/tui/services/claude-assistant.js +75 -0
  757. package/dist/src/tui/services/claude-assistant.js.map +1 -0
  758. package/dist/src/tui/services/index.d.ts +3 -0
  759. package/dist/src/tui/services/index.d.ts.map +1 -0
  760. package/dist/src/tui/services/index.js +4 -0
  761. package/dist/src/tui/services/index.js.map +1 -0
  762. package/dist/src/tui/services/report-generator.d.ts +13 -0
  763. package/dist/src/tui/services/report-generator.d.ts.map +1 -0
  764. package/dist/src/tui/services/report-generator.js +139 -0
  765. package/dist/src/tui/services/report-generator.js.map +1 -0
  766. package/dist/src/tui/state.d.ts +4 -0
  767. package/dist/src/tui/state.d.ts.map +1 -0
  768. package/dist/src/tui/state.js +38 -0
  769. package/dist/src/tui/state.js.map +1 -0
  770. package/dist/src/tui/utils/colors.d.ts +19 -0
  771. package/dist/src/tui/utils/colors.d.ts.map +1 -0
  772. package/dist/src/tui/utils/colors.js +34 -0
  773. package/dist/src/tui/utils/colors.js.map +1 -0
  774. package/dist/src/tui/utils/format.d.ts +6 -0
  775. package/dist/src/tui/utils/format.d.ts.map +1 -0
  776. package/dist/src/tui/utils/format.js +38 -0
  777. package/dist/src/tui/utils/format.js.map +1 -0
  778. package/dist/src/tui/utils/index.d.ts +3 -0
  779. package/dist/src/tui/utils/index.d.ts.map +1 -0
  780. package/dist/src/tui/utils/index.js +4 -0
  781. package/dist/src/tui/utils/index.js.map +1 -0
  782. package/dist/src/utils/capture.d.ts +63 -0
  783. package/dist/src/utils/capture.d.ts.map +1 -0
  784. package/dist/src/utils/capture.js +376 -0
  785. package/dist/src/utils/capture.js.map +1 -0
  786. package/dist/src/utils/extract-text.d.ts +3 -0
  787. package/dist/src/utils/extract-text.d.ts.map +1 -0
  788. package/dist/src/utils/extract-text.js +19 -0
  789. package/dist/src/utils/extract-text.js.map +1 -0
  790. package/dist/src/utils/mcp-config.d.ts +24 -0
  791. package/dist/src/utils/mcp-config.d.ts.map +1 -0
  792. package/dist/src/utils/mcp-config.js +84 -0
  793. package/dist/src/utils/mcp-config.js.map +1 -0
  794. package/dist/src/utils/scope.d.ts +4 -0
  795. package/dist/src/utils/scope.d.ts.map +1 -0
  796. package/dist/src/utils/scope.js +21 -0
  797. package/dist/src/utils/scope.js.map +1 -0
  798. package/dist/src/utils/structured-output/index.d.ts +5 -0
  799. package/dist/src/utils/structured-output/index.d.ts.map +1 -0
  800. package/dist/src/utils/structured-output/index.js +9 -0
  801. package/dist/src/utils/structured-output/index.js.map +1 -0
  802. package/dist/src/utils/structured-output/prompt-generator.d.ts +10 -0
  803. package/dist/src/utils/structured-output/prompt-generator.d.ts.map +1 -0
  804. package/dist/src/utils/structured-output/prompt-generator.js +39 -0
  805. package/dist/src/utils/structured-output/prompt-generator.js.map +1 -0
  806. package/dist/src/utils/structured-output/types.d.ts +16 -0
  807. package/dist/src/utils/structured-output/types.d.ts.map +1 -0
  808. package/dist/src/utils/structured-output/types.js +4 -0
  809. package/dist/src/utils/structured-output/types.js.map +1 -0
  810. package/dist/src/utils/structured-output/validator.d.ts +11 -0
  811. package/dist/src/utils/structured-output/validator.d.ts.map +1 -0
  812. package/dist/src/utils/structured-output/validator.js +69 -0
  813. package/dist/src/utils/structured-output/validator.js.map +1 -0
  814. package/dist/src/utils/structured-output/zod-converter.d.ts +12 -0
  815. package/dist/src/utils/structured-output/zod-converter.d.ts.map +1 -0
  816. package/dist/src/utils/structured-output/zod-converter.js +108 -0
  817. package/dist/src/utils/structured-output/zod-converter.js.map +1 -0
  818. package/dist/src/utils/structured-output.d.ts +2 -0
  819. package/dist/src/utils/structured-output.d.ts.map +1 -0
  820. package/dist/src/utils/structured-output.js +10 -0
  821. package/dist/src/utils/structured-output.js.map +1 -0
  822. package/dist/src/utils/vcs/git.d.ts +73 -0
  823. package/dist/src/utils/vcs/git.d.ts.map +1 -0
  824. package/dist/src/utils/vcs/git.js +260 -0
  825. package/dist/src/utils/vcs/git.js.map +1 -0
  826. package/dist/src/utils/vcs/index.d.ts +5 -0
  827. package/dist/src/utils/vcs/index.d.ts.map +1 -0
  828. package/dist/src/utils/vcs/index.js +9 -0
  829. package/dist/src/utils/vcs/index.js.map +1 -0
  830. package/dist/src/utils/vcs/jj.d.ts +62 -0
  831. package/dist/src/utils/vcs/jj.d.ts.map +1 -0
  832. package/dist/src/utils/vcs/jj.js +151 -0
  833. package/dist/src/utils/vcs/jj.js.map +1 -0
  834. package/dist/src/utils/vcs/parsers.d.ts +14 -0
  835. package/dist/src/utils/vcs/parsers.d.ts.map +1 -0
  836. package/dist/src/utils/vcs/parsers.js +73 -0
  837. package/dist/src/utils/vcs/parsers.js.map +1 -0
  838. package/dist/src/utils/vcs/types.d.ts +62 -0
  839. package/dist/src/utils/vcs/types.d.ts.map +1 -0
  840. package/dist/src/utils/vcs/types.js +3 -0
  841. package/dist/src/utils/vcs/types.js.map +1 -0
  842. package/dist/src/utils/vcs.d.ts +2 -0
  843. package/dist/src/utils/vcs.d.ts.map +1 -0
  844. package/dist/src/utils/vcs.js +4 -0
  845. package/dist/src/utils/vcs.js.map +1 -0
  846. package/package.json +2 -2
package/dist/bin/cli.js CHANGED
@@ -60651,7 +60651,7 @@ function createRoot(renderer) {
60651
60651
  }
60652
60652
 
60653
60653
  // src/tui/App.tsx
60654
- var import_react34 = __toESM(require_react(), 1);
60654
+ var import_react31 = __toESM(require_react(), 1);
60655
60655
 
60656
60656
  // src/tui/utils/colors.ts
60657
60657
  var colors = {
@@ -60816,19 +60816,53 @@ function StatusBar({ isConnected, error: error2, dbPath }) {
60816
60816
  }, undefined, true, undefined, this);
60817
60817
  }
60818
60818
 
60819
- // src/tui/components/views/ExecutionTimeline.tsx
60820
- var import_react17 = __toESM(require_react(), 1);
60821
-
60822
60819
  // src/tui/hooks/usePollEvents.ts
60820
+ init_hooks();
60821
+
60822
+ // src/tui/state.ts
60823
+ init_reactive_sqlite();
60824
+ init_reactive_sqlite();
60823
60825
  var import_react16 = __toESM(require_react(), 1);
60826
+ var tuiDb = new ReactiveDatabase(":memory:");
60827
+ tuiDb.exec("CREATE TABLE IF NOT EXISTS tui_state (key TEXT PRIMARY KEY, value TEXT)");
60828
+ function parseValue(raw, fallback) {
60829
+ if (!raw)
60830
+ return fallback;
60831
+ try {
60832
+ return JSON.parse(raw);
60833
+ } catch {
60834
+ return fallback;
60835
+ }
60836
+ }
60837
+ function readTuiState(key, fallback) {
60838
+ const row = tuiDb.queryOne("SELECT value FROM tui_state WHERE key = ?", [key]);
60839
+ return row ? parseValue(row.value, fallback) : fallback;
60840
+ }
60841
+ function writeTuiState(key, value) {
60842
+ const jsonValue = JSON.stringify(value);
60843
+ tuiDb.run("INSERT INTO tui_state (key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = ?", [key, jsonValue, jsonValue]);
60844
+ }
60845
+ function useTuiState(key, fallback) {
60846
+ const { data: raw } = useQueryValue(tuiDb, "SELECT value FROM tui_state WHERE key = ?", [key]);
60847
+ const value = parseValue(raw, fallback);
60848
+ const setValue = import_react16.useCallback((next) => {
60849
+ const resolved = typeof next === "function" ? next(readTuiState(key, fallback)) : next;
60850
+ writeTuiState(key, resolved);
60851
+ }, [key, fallback]);
60852
+ return [value, setValue];
60853
+ }
60854
+
60855
+ // src/tui/hooks/usePollEvents.ts
60856
+ var EVENTS_KEY = "tui:timeline:events";
60857
+ var EMPTY_EVENTS = [];
60824
60858
  function usePollEvents(db) {
60825
- const [events, setEvents] = import_react16.useState([]);
60826
- import_react16.useEffect(() => {
60859
+ const [events, setEvents] = useTuiState(EVENTS_KEY, EMPTY_EVENTS);
60860
+ useEffectOnValueChange(db, () => {
60827
60861
  const pollEvents = () => {
60828
60862
  try {
60829
60863
  const execution = db.execution.current();
60830
60864
  if (!execution) {
60831
- setEvents([]);
60865
+ setEvents(EMPTY_EVENTS);
60832
60866
  return;
60833
60867
  }
60834
60868
  const phases = db.query("SELECT id, name, status, created_at as timestamp FROM phases WHERE execution_id = ? ORDER BY created_at DESC LIMIT 20", [execution.id]);
@@ -60868,7 +60902,7 @@ function usePollEvents(db) {
60868
60902
  pollEvents();
60869
60903
  const interval = setInterval(pollEvents, 500);
60870
60904
  return () => clearInterval(interval);
60871
- }, [db]);
60905
+ }, [setEvents]);
60872
60906
  return events;
60873
60907
  }
60874
60908
 
@@ -60911,15 +60945,27 @@ function formatValue(value) {
60911
60945
  }
60912
60946
 
60913
60947
  // src/tui/components/views/ExecutionTimeline.tsx
60948
+ init_hooks();
60914
60949
  var jsx_dev_runtime5 = __toESM(require_jsx_dev_runtime(), 1);
60915
60950
  function ExecutionTimeline({ db, height }) {
60916
60951
  const events = usePollEvents(db);
60917
- const [selectedIndex, setSelectedIndex] = import_react17.useState(0);
60918
- const [scrollOffset, setScrollOffset] = import_react17.useState(0);
60952
+ const [selectedIndex, setSelectedIndex] = useTuiState("tui:timeline:selectedIndex", 0);
60953
+ const [scrollOffset, setScrollOffset] = useTuiState("tui:timeline:scrollOffset", 0);
60919
60954
  const visibleHeight = height - 4;
60955
+ const clampKey = `${events.length}:${visibleHeight}`;
60956
+ useEffectOnValueChange(clampKey, () => {
60957
+ const maxIndex = Math.max(0, events.length - 1);
60958
+ if (selectedIndex > maxIndex) {
60959
+ setSelectedIndex(maxIndex);
60960
+ }
60961
+ const maxOffset = Math.max(0, events.length - visibleHeight);
60962
+ if (scrollOffset > maxOffset) {
60963
+ setScrollOffset(maxOffset);
60964
+ }
60965
+ }, [events.length, visibleHeight, selectedIndex, scrollOffset, setSelectedIndex, setScrollOffset]);
60920
60966
  useKeyboard((key) => {
60921
60967
  if (key.name === "j" || key.name === "down") {
60922
- const newIndex = Math.min(selectedIndex + 1, events.length - 1);
60968
+ const newIndex = Math.min(selectedIndex + 1, Math.max(0, events.length - 1));
60923
60969
  setSelectedIndex(newIndex);
60924
60970
  if (newIndex >= scrollOffset + visibleHeight) {
60925
60971
  setScrollOffset(newIndex - visibleHeight + 1);
@@ -60934,7 +60980,7 @@ function ExecutionTimeline({ db, height }) {
60934
60980
  setSelectedIndex(0);
60935
60981
  setScrollOffset(0);
60936
60982
  } else if (key.name === "G" || key.shift && key.name === "g") {
60937
- setSelectedIndex(events.length - 1);
60983
+ setSelectedIndex(Math.max(0, events.length - 1));
60938
60984
  setScrollOffset(Math.max(0, events.length - visibleHeight));
60939
60985
  }
60940
60986
  });
@@ -61028,11 +61074,16 @@ function getTypeColor(type) {
61028
61074
  }
61029
61075
 
61030
61076
  // src/tui/hooks/useRenderFrames.ts
61031
- var import_react19 = __toESM(require_react(), 1);
61077
+ init_hooks();
61078
+ var import_react18 = __toESM(require_react(), 1);
61079
+ var EMPTY_FRAMES = [];
61032
61080
  function useRenderFrames(db, executionId) {
61033
- const [frames, setFrames] = import_react19.useState([]);
61034
- const [currentIndex, setCurrentIndex] = import_react19.useState(0);
61035
- import_react19.useEffect(() => {
61081
+ const framesKey = executionId ? `tui:renderFrames:${executionId}:frames` : "tui:renderFrames:frames";
61082
+ const indexKey = executionId ? `tui:renderFrames:${executionId}:index` : "tui:renderFrames:index";
61083
+ const [frames, setFrames] = useTuiState(framesKey, EMPTY_FRAMES);
61084
+ const [currentIndex, setCurrentIndex] = useTuiState(indexKey, 0);
61085
+ const pollKey = import_react18.useMemo(() => ({ db, executionId }), [db, executionId]);
61086
+ useEffectOnValueChange(pollKey, () => {
61036
61087
  const pollFrames = () => {
61037
61088
  try {
61038
61089
  const allFrames = executionId ? db.renderFrames.listForExecution(executionId) : db.renderFrames.list();
@@ -61044,21 +61095,27 @@ function useRenderFrames(db, executionId) {
61044
61095
  pollFrames();
61045
61096
  const interval = setInterval(pollFrames, 500);
61046
61097
  return () => clearInterval(interval);
61047
- }, [db, executionId]);
61048
- const goToFrame = import_react19.useCallback((index) => {
61098
+ }, [db, executionId, setFrames]);
61099
+ useEffectOnValueChange(frames.length, () => {
61100
+ const maxIndex = Math.max(0, frames.length - 1);
61101
+ if (currentIndex > maxIndex) {
61102
+ setCurrentIndex(maxIndex);
61103
+ }
61104
+ }, [frames.length, currentIndex, setCurrentIndex]);
61105
+ const goToFrame = import_react18.useCallback((index) => {
61049
61106
  const clampedIndex = Math.max(0, Math.min(index, frames.length - 1));
61050
61107
  setCurrentIndex(clampedIndex);
61051
- }, [frames.length]);
61052
- const nextFrame = import_react19.useCallback(() => {
61108
+ }, [frames.length, setCurrentIndex]);
61109
+ const nextFrame = import_react18.useCallback(() => {
61053
61110
  goToFrame(currentIndex + 1);
61054
61111
  }, [currentIndex, goToFrame]);
61055
- const prevFrame = import_react19.useCallback(() => {
61112
+ const prevFrame = import_react18.useCallback(() => {
61056
61113
  goToFrame(currentIndex - 1);
61057
61114
  }, [currentIndex, goToFrame]);
61058
- const goToLatest = import_react19.useCallback(() => {
61115
+ const goToLatest = import_react18.useCallback(() => {
61059
61116
  goToFrame(frames.length - 1);
61060
61117
  }, [frames.length, goToFrame]);
61061
- const goToFirst = import_react19.useCallback(() => {
61118
+ const goToFirst = import_react18.useCallback(() => {
61062
61119
  goToFrame(0);
61063
61120
  }, [goToFrame]);
61064
61121
  const currentFrame = frames[currentIndex] ?? null;
@@ -61179,11 +61236,9 @@ function RenderFrameInspector({ db, height }) {
61179
61236
  }, undefined, true, undefined, this);
61180
61237
  }
61181
61238
 
61182
- // src/tui/components/views/DatabaseExplorer.tsx
61183
- var import_react22 = __toESM(require_react(), 1);
61184
-
61185
61239
  // src/tui/hooks/usePollTableData.ts
61186
- var import_react21 = __toESM(require_react(), 1);
61240
+ init_hooks();
61241
+ var import_react20 = __toESM(require_react(), 1);
61187
61242
  var ALLOWED_TABLES2 = [
61188
61243
  "executions",
61189
61244
  "phases",
@@ -61202,13 +61257,18 @@ var ALLOWED_TABLES2 = [
61202
61257
  "snapshots",
61203
61258
  "reviews"
61204
61259
  ];
61260
+ var EMPTY_COLUMNS = [];
61261
+ var EMPTY_DATA = [];
61205
61262
  function usePollTableData(db, tableName) {
61206
- const [columns, setColumns] = import_react21.useState([]);
61207
- const [data, setData] = import_react21.useState([]);
61208
- import_react21.useEffect(() => {
61263
+ const columnsKey = `tui:table:${tableName}:columns`;
61264
+ const dataKey = `tui:table:${tableName}:rows`;
61265
+ const [columns, setColumns] = useTuiState(columnsKey, EMPTY_COLUMNS);
61266
+ const [data, setData] = useTuiState(dataKey, EMPTY_DATA);
61267
+ const pollKey = import_react20.useMemo(() => ({ db, tableName }), [db, tableName]);
61268
+ useEffectOnValueChange(pollKey, () => {
61209
61269
  if (!ALLOWED_TABLES2.includes(tableName)) {
61210
- setColumns([]);
61211
- setData([]);
61270
+ setColumns(EMPTY_COLUMNS);
61271
+ setData(EMPTY_DATA);
61212
61272
  return;
61213
61273
  }
61214
61274
  const poll = () => {
@@ -61219,18 +61279,19 @@ function usePollTableData(db, tableName) {
61219
61279
  setData(tableData);
61220
61280
  } catch (err) {
61221
61281
  console.debug("[usePollTableData] Polling error:", err);
61222
- setColumns([]);
61223
- setData([]);
61282
+ setColumns(EMPTY_COLUMNS);
61283
+ setData(EMPTY_DATA);
61224
61284
  }
61225
61285
  };
61226
61286
  poll();
61227
61287
  const interval = setInterval(poll, 500);
61228
61288
  return () => clearInterval(interval);
61229
- }, [db, tableName]);
61289
+ }, [setColumns, setData, tableName, db]);
61230
61290
  return { columns, data };
61231
61291
  }
61232
61292
 
61233
61293
  // src/tui/components/views/DatabaseExplorer.tsx
61294
+ init_hooks();
61234
61295
  var jsx_dev_runtime7 = __toESM(require_jsx_dev_runtime(), 1);
61235
61296
  var TABLES = [
61236
61297
  "executions",
@@ -61251,11 +61312,18 @@ var TABLES = [
61251
61312
  "reviews"
61252
61313
  ];
61253
61314
  function DatabaseExplorer({ db, height }) {
61254
- const [selectedTable, setSelectedTable] = import_react22.useState(0);
61255
- const [rowOffset, setRowOffset] = import_react22.useState(0);
61256
- const [isTableListFocused, setIsTableListFocused] = import_react22.useState(true);
61315
+ const [selectedTable, setSelectedTable] = useTuiState("tui:db:selectedTable", 0);
61316
+ const [rowOffset, setRowOffset] = useTuiState("tui:db:rowOffset", 0);
61317
+ const [isTableListFocused, setIsTableListFocused] = useTuiState("tui:db:isTableListFocused", true);
61257
61318
  const tableName = TABLES[selectedTable] ?? "executions";
61258
61319
  const { columns, data: tableData } = usePollTableData(db, tableName);
61320
+ const visibleRowsCount = height - 8;
61321
+ useEffectOnValueChange(`${tableData.length}:${visibleRowsCount}`, () => {
61322
+ const maxOffset = Math.max(0, tableData.length - visibleRowsCount);
61323
+ if (rowOffset > maxOffset) {
61324
+ setRowOffset(maxOffset);
61325
+ }
61326
+ }, [rowOffset, setRowOffset, tableData.length, visibleRowsCount]);
61259
61327
  const handleSelectTable = (index) => {
61260
61328
  setSelectedTable(index);
61261
61329
  setRowOffset(0);
@@ -61271,13 +61339,14 @@ function DatabaseExplorer({ db, height }) {
61271
61339
  }
61272
61340
  } else {
61273
61341
  if (key.name === "j" || key.name === "down") {
61274
- setRowOffset((prev) => Math.min(prev + 1, Math.max(0, tableData.length - 5)));
61342
+ const maxOffset = Math.max(0, tableData.length - visibleRowsCount);
61343
+ setRowOffset((prev) => Math.min(prev + 1, maxOffset));
61275
61344
  } else if (key.name === "k" || key.name === "up") {
61276
61345
  setRowOffset((prev) => Math.max(prev - 1, 0));
61277
61346
  }
61278
61347
  }
61279
61348
  });
61280
- const visibleRows = tableData.slice(rowOffset, rowOffset + height - 8);
61349
+ const visibleRows = tableData.slice(rowOffset, rowOffset + visibleRowsCount);
61281
61350
  return /* @__PURE__ */ jsx_dev_runtime7.jsxDEV("box", {
61282
61351
  style: { flexDirection: "row", width: "100%", height: "100%" },
61283
61352
  children: [
@@ -61371,10 +61440,10 @@ function DatabaseExplorer({ db, height }) {
61371
61440
  }
61372
61441
 
61373
61442
  // src/tui/components/views/ChatInterface.tsx
61374
- var import_react25 = __toESM(require_react(), 1);
61443
+ var import_react23 = __toESM(require_react(), 1);
61375
61444
 
61376
61445
  // src/tui/hooks/useClaudeChat.ts
61377
- var import_react24 = __toESM(require_react(), 1);
61446
+ var import_react22 = __toESM(require_react(), 1);
61378
61447
 
61379
61448
  // src/tui/services/claude-assistant.ts
61380
61449
  var SYSTEM_PROMPT = `You are an observability assistant for Smithers orchestrator.
@@ -61454,13 +61523,17 @@ ${contextSummary}`;
61454
61523
  }
61455
61524
 
61456
61525
  // src/tui/hooks/useClaudeChat.ts
61526
+ var MESSAGES_KEY = "tui:chat:messages";
61527
+ var LOADING_KEY = "tui:chat:loading";
61528
+ var ERROR_KEY = "tui:chat:error";
61529
+ var EMPTY_MESSAGES = [];
61457
61530
  function useClaudeChat(db) {
61458
- const [messages, setMessages] = import_react24.useState([]);
61459
- const [isLoading, setIsLoading] = import_react24.useState(false);
61460
- const [error2, setError] = import_react24.useState(null);
61531
+ const [messages, setMessages] = useTuiState(MESSAGES_KEY, EMPTY_MESSAGES);
61532
+ const [isLoading, setIsLoading] = useTuiState(LOADING_KEY, false);
61533
+ const [error2, setError] = useTuiState(ERROR_KEY, null);
61461
61534
  const isAvailable = !!process.env["ANTHROPIC_API_KEY"];
61462
- const assistant = createClaudeAssistant(db);
61463
- const sendMessage = import_react24.useCallback(async (content) => {
61535
+ const assistant = import_react22.useMemo(() => createClaudeAssistant(db), [db]);
61536
+ const sendMessage = import_react22.useCallback(async (content) => {
61464
61537
  if (!isAvailable) {
61465
61538
  setError("ANTHROPIC_API_KEY not set. Claude chat is unavailable.");
61466
61539
  return;
@@ -61470,11 +61543,13 @@ function useClaudeChat(db) {
61470
61543
  content,
61471
61544
  timestamp: new Date().toISOString()
61472
61545
  };
61473
- setMessages((prev) => [...prev, userMessage]);
61546
+ const history = readTuiState(MESSAGES_KEY, EMPTY_MESSAGES);
61547
+ const nextMessages = [...history, userMessage];
61548
+ setMessages(nextMessages);
61474
61549
  setIsLoading(true);
61475
61550
  setError(null);
61476
61551
  try {
61477
- const response = await assistant.chat([...messages, userMessage]);
61552
+ const response = await assistant.chat(nextMessages);
61478
61553
  const assistantMessage = {
61479
61554
  role: "assistant",
61480
61555
  content: response,
@@ -61486,11 +61561,11 @@ function useClaudeChat(db) {
61486
61561
  } finally {
61487
61562
  setIsLoading(false);
61488
61563
  }
61489
- }, [messages, isAvailable, assistant]);
61490
- const clearHistory = import_react24.useCallback(() => {
61564
+ }, [assistant, isAvailable, setError, setIsLoading, setMessages]);
61565
+ const clearHistory = import_react22.useCallback(() => {
61491
61566
  setMessages([]);
61492
61567
  setError(null);
61493
- }, []);
61568
+ }, [setMessages, setError]);
61494
61569
  return {
61495
61570
  messages,
61496
61571
  isLoading,
@@ -61505,9 +61580,9 @@ function useClaudeChat(db) {
61505
61580
  var jsx_dev_runtime8 = __toESM(require_jsx_dev_runtime(), 1);
61506
61581
  function ChatInterface({ db }) {
61507
61582
  const { messages, isLoading, error: error2, isAvailable, sendMessage, clearHistory } = useClaudeChat(db);
61508
- const [inputValue, setInputValue] = import_react25.useState("");
61509
- const [isInputFocused, setIsInputFocused] = import_react25.useState(true);
61510
- const handleSubmit = import_react25.useCallback(async () => {
61583
+ const [inputValue, setInputValue] = useTuiState("tui:chat:input", "");
61584
+ const [isInputFocused, setIsInputFocused] = useTuiState("tui:chat:focus", true);
61585
+ const handleSubmit = import_react23.useCallback(async () => {
61511
61586
  if (!inputValue.trim())
61512
61587
  return;
61513
61588
  const message = inputValue.trim();
@@ -61519,7 +61594,7 @@ function ChatInterface({ db }) {
61519
61594
  clearHistory();
61520
61595
  }
61521
61596
  if (key.name === "tab") {
61522
- setIsInputFocused(!isInputFocused);
61597
+ setIsInputFocused((prev) => !prev);
61523
61598
  }
61524
61599
  });
61525
61600
  if (!isAvailable) {
@@ -61627,32 +61702,36 @@ function ChatInterface({ db }) {
61627
61702
  }
61628
61703
 
61629
61704
  // src/tui/components/views/HumanInteractionHandler.tsx
61630
- var import_react28 = __toESM(require_react(), 1);
61705
+ var import_react26 = __toESM(require_react(), 1);
61631
61706
 
61632
61707
  // src/tui/hooks/useHumanRequests.ts
61633
- var import_react27 = __toESM(require_react(), 1);
61708
+ init_hooks();
61709
+ var import_react25 = __toESM(require_react(), 1);
61634
61710
  function useHumanRequests(db) {
61635
- const [pendingRequests, setPendingRequests] = import_react27.useState([]);
61636
- const [selectedIndex, setSelectedIndex] = import_react27.useState(0);
61637
- const refreshRequests = import_react27.useCallback(() => {
61711
+ const [pendingRequests, setPendingRequests] = useTuiState("tui:human:pendingRequests", []);
61712
+ const [selectedIndex, setSelectedIndex] = useTuiState("tui:human:selectedIndex", 0);
61713
+ const refreshRequests = import_react25.useCallback(() => {
61638
61714
  try {
61639
61715
  const pending = db.human.listPending();
61640
61716
  setPendingRequests(pending);
61641
- if (selectedIndex >= pending.length && pending.length > 0) {
61642
- setSelectedIndex(pending.length - 1);
61643
- }
61644
61717
  } catch {}
61645
- }, [db, selectedIndex]);
61646
- import_react27.useEffect(() => {
61718
+ }, [db, setPendingRequests]);
61719
+ useEffectOnValueChange(db, () => {
61647
61720
  refreshRequests();
61648
61721
  const interval = setInterval(refreshRequests, 500);
61649
61722
  return () => clearInterval(interval);
61650
61723
  }, [refreshRequests]);
61651
- const selectRequest = import_react27.useCallback((index) => {
61724
+ useEffectOnValueChange(pendingRequests.length, () => {
61725
+ const maxIndex = Math.max(0, pendingRequests.length - 1);
61726
+ if (selectedIndex > maxIndex) {
61727
+ setSelectedIndex(maxIndex);
61728
+ }
61729
+ }, [pendingRequests.length, selectedIndex, setSelectedIndex]);
61730
+ const selectRequest = import_react25.useCallback((index) => {
61652
61731
  const clampedIndex = Math.max(0, Math.min(index, pendingRequests.length - 1));
61653
61732
  setSelectedIndex(clampedIndex);
61654
- }, [pendingRequests.length]);
61655
- const approveRequest = import_react27.useCallback((response) => {
61733
+ }, [pendingRequests.length, setSelectedIndex]);
61734
+ const approveRequest = import_react25.useCallback((response) => {
61656
61735
  const request = pendingRequests[selectedIndex];
61657
61736
  if (!request)
61658
61737
  return;
@@ -61661,7 +61740,7 @@ function useHumanRequests(db) {
61661
61740
  refreshRequests();
61662
61741
  } catch {}
61663
61742
  }, [db, pendingRequests, selectedIndex, refreshRequests]);
61664
- const rejectRequest = import_react27.useCallback((response) => {
61743
+ const rejectRequest = import_react25.useCallback((response) => {
61665
61744
  const request = pendingRequests[selectedIndex];
61666
61745
  if (!request)
61667
61746
  return;
@@ -61683,6 +61762,7 @@ function useHumanRequests(db) {
61683
61762
  }
61684
61763
 
61685
61764
  // src/tui/components/views/HumanInteractionHandler.tsx
61765
+ init_hooks();
61686
61766
  var jsx_dev_runtime9 = __toESM(require_jsx_dev_runtime(), 1);
61687
61767
  function HumanInteractionHandler({ db }) {
61688
61768
  const {
@@ -61693,9 +61773,15 @@ function HumanInteractionHandler({ db }) {
61693
61773
  approveRequest,
61694
61774
  rejectRequest
61695
61775
  } = useHumanRequests(db);
61696
- const [responseText, setResponseText] = import_react28.useState("");
61697
- const [selectedOption, setSelectedOption] = import_react28.useState(0);
61698
- const handleApprove = import_react28.useCallback(() => {
61776
+ const [responseText, setResponseText] = useTuiState("tui:human:responseText", "");
61777
+ const [selectedOption, setSelectedOption] = useTuiState("tui:human:selectedOption", 0);
61778
+ useEffectOnValueChange(selectedRequest?.options?.length ?? 0, () => {
61779
+ const maxIndex = Math.max(0, (selectedRequest?.options?.length ?? 0) - 1);
61780
+ if (selectedOption > maxIndex) {
61781
+ setSelectedOption(maxIndex);
61782
+ }
61783
+ }, [selectedOption, selectedRequest?.options?.length, setSelectedOption]);
61784
+ const handleApprove = import_react26.useCallback(() => {
61699
61785
  if (selectedRequest?.options && selectedRequest.options.length > 0) {
61700
61786
  approveRequest(selectedRequest.options[selectedOption]);
61701
61787
  } else if (responseText.trim()) {
@@ -61708,7 +61794,7 @@ function HumanInteractionHandler({ db }) {
61708
61794
  useKeyboard((key) => {
61709
61795
  if (key.name === "j" || key.name === "down") {
61710
61796
  if (selectedRequest?.options && selectedRequest.options.length > 0) {
61711
- setSelectedOption((prev) => Math.min(prev + 1, selectedRequest.options.length - 1));
61797
+ setSelectedOption((prev) => Math.min(prev + 1, Math.max(0, selectedRequest.options.length - 1)));
61712
61798
  } else {
61713
61799
  selectRequest(selectedIndex + 1);
61714
61800
  }
@@ -61879,11 +61965,8 @@ function HumanInteractionHandler({ db }) {
61879
61965
  }, undefined, true, undefined, this);
61880
61966
  }
61881
61967
 
61882
- // src/tui/components/views/ReportViewer.tsx
61883
- var import_react31 = __toESM(require_react(), 1);
61884
-
61885
61968
  // src/tui/hooks/useReportGenerator.ts
61886
- var import_react30 = __toESM(require_react(), 1);
61969
+ var import_react28 = __toESM(require_react(), 1);
61887
61970
 
61888
61971
  // src/tui/services/report-generator.ts
61889
61972
  function gatherMetrics(db) {
@@ -62030,25 +62113,17 @@ ${analysis}` : metricsReport;
62030
62113
  }
62031
62114
 
62032
62115
  // src/tui/hooks/useReportGenerator.ts
62116
+ init_hooks();
62033
62117
  var REPORT_INTERVAL_MS = 10 * 60 * 1000;
62118
+ var REPORTS_KEY = "tui:reports:list";
62119
+ var GENERATING_KEY = "tui:reports:generating";
62120
+ var LAST_GENERATED_KEY = "tui:reports:lastGeneratedAt";
62121
+ var EMPTY_REPORTS = [];
62034
62122
  function useReportGenerator(db) {
62035
- const [reports, setReports] = import_react30.useState([]);
62036
- const [isGenerating, setIsGenerating] = import_react30.useState(false);
62037
- const [lastGeneratedAt, setLastGeneratedAt] = import_react30.useState(null);
62038
- import_react30.useEffect(() => {
62039
- const loadReports = () => {
62040
- try {
62041
- const dbReports = db.query("SELECT * FROM reports WHERE type = 'auto_summary' ORDER BY created_at DESC LIMIT 50");
62042
- setReports(dbReports);
62043
- } catch (err) {
62044
- console.debug("[useReportGenerator] Load error:", err);
62045
- }
62046
- };
62047
- loadReports();
62048
- const interval = setInterval(loadReports, 5000);
62049
- return () => clearInterval(interval);
62050
- }, [db]);
62051
- const generateNow = import_react30.useCallback(async () => {
62123
+ const [reports, setReports] = useTuiState(REPORTS_KEY, EMPTY_REPORTS);
62124
+ const [isGenerating, setIsGenerating] = useTuiState(GENERATING_KEY, false);
62125
+ const [lastGeneratedAt, setLastGeneratedAt] = useTuiState(LAST_GENERATED_KEY, null);
62126
+ const generateNow = import_react28.useCallback(async () => {
62052
62127
  setIsGenerating(true);
62053
62128
  try {
62054
62129
  const report = await generateReport(db);
@@ -62061,13 +62136,26 @@ function useReportGenerator(db) {
62061
62136
  } finally {
62062
62137
  setIsGenerating(false);
62063
62138
  }
62064
- }, [db]);
62065
- import_react30.useEffect(() => {
62066
- const interval = setInterval(() => {
62139
+ }, [db, setIsGenerating, setReports, setLastGeneratedAt]);
62140
+ useEffectOnValueChange(db, () => {
62141
+ const loadReports = () => {
62142
+ try {
62143
+ const dbReports = db.query("SELECT * FROM reports WHERE type = 'auto_summary' ORDER BY created_at DESC LIMIT 50");
62144
+ setReports(dbReports);
62145
+ } catch (err) {
62146
+ console.debug("[useReportGenerator] Load error:", err);
62147
+ }
62148
+ };
62149
+ loadReports();
62150
+ const loadInterval = setInterval(loadReports, 5000);
62151
+ const generateInterval = setInterval(() => {
62067
62152
  generateNow();
62068
62153
  }, REPORT_INTERVAL_MS);
62069
- return () => clearInterval(interval);
62070
- }, [generateNow]);
62154
+ return () => {
62155
+ clearInterval(loadInterval);
62156
+ clearInterval(generateInterval);
62157
+ };
62158
+ }, [db, generateNow, setReports]);
62071
62159
  return {
62072
62160
  reports,
62073
62161
  isGenerating,
@@ -62077,13 +62165,20 @@ function useReportGenerator(db) {
62077
62165
  }
62078
62166
 
62079
62167
  // src/tui/components/views/ReportViewer.tsx
62168
+ init_hooks();
62080
62169
  var jsx_dev_runtime10 = __toESM(require_jsx_dev_runtime(), 1);
62081
62170
  function ReportViewer({ db }) {
62082
62171
  const { reports, isGenerating, generateNow } = useReportGenerator(db);
62083
- const [selectedIndex, setSelectedIndex] = import_react31.useState(0);
62172
+ const [selectedIndex, setSelectedIndex] = useTuiState("tui:reports:selectedIndex", 0);
62173
+ useEffectOnValueChange(reports.length, () => {
62174
+ const maxIndex = Math.max(0, reports.length - 1);
62175
+ if (selectedIndex > maxIndex) {
62176
+ setSelectedIndex(maxIndex);
62177
+ }
62178
+ }, [reports.length, selectedIndex, setSelectedIndex]);
62084
62179
  useKeyboard((key) => {
62085
62180
  if (key.name === "j" || key.name === "down") {
62086
- setSelectedIndex((prev) => Math.min(prev + 1, reports.length - 1));
62181
+ setSelectedIndex((prev) => Math.min(prev + 1, Math.max(0, reports.length - 1)));
62087
62182
  } else if (key.name === "k" || key.name === "up") {
62088
62183
  setSelectedIndex((prev) => Math.max(prev - 1, 0));
62089
62184
  } else if (key.name === "r") {
@@ -62230,60 +62325,67 @@ function getLineColor(line) {
62230
62325
 
62231
62326
  // src/tui/hooks/useSmithersConnection.ts
62232
62327
  init_db();
62233
- var import_react33 = __toESM(require_react(), 1);
62328
+ init_hooks();
62329
+ var import_react30 = __toESM(require_react(), 1);
62330
+ var EMPTY_EXECUTIONS = [];
62234
62331
  function useSmithersConnection(dbPath) {
62235
- const [db, setDb] = import_react33.useState(null);
62236
- const [isConnected, setIsConnected] = import_react33.useState(false);
62237
- const [error2, setError] = import_react33.useState(null);
62238
- const [currentExecution, setCurrentExecution] = import_react33.useState(null);
62239
- const [executions, setExecutions] = import_react33.useState([]);
62240
- import_react33.useEffect(() => {
62241
- let smithersDb = null;
62242
- let pollInterval = null;
62243
- const connect = () => {
62244
- try {
62245
- const fullPath = dbPath.endsWith(".db") ? dbPath : `${dbPath}/smithers.db`;
62246
- smithersDb = createSmithersDB({ path: fullPath });
62247
- setDb(smithersDb);
62248
- setIsConnected(true);
62249
- setError(null);
62250
- const pollData = () => {
62251
- try {
62252
- const current = smithersDb?.execution.current();
62253
- if (current) {
62254
- setCurrentExecution({
62255
- ...current,
62256
- started_at: current.started_at?.toISOString() ?? null,
62257
- completed_at: current.completed_at?.toISOString() ?? null
62258
- });
62259
- } else {
62260
- setCurrentExecution(null);
62261
- }
62262
- const allExecs = smithersDb?.execution.list() ?? [];
62263
- setExecutions(allExecs.map((e) => ({
62264
- ...e,
62265
- started_at: e.started_at?.toISOString() ?? null,
62266
- completed_at: e.completed_at?.toISOString() ?? null
62267
- })));
62268
- } catch {}
62269
- };
62270
- pollData();
62271
- pollInterval = setInterval(pollData, 500);
62272
- } catch (e) {
62273
- setError(e instanceof Error ? e.message : "Connection failed");
62274
- setIsConnected(false);
62332
+ const dbRef = import_react30.useRef(null);
62333
+ const pollIntervalRef = import_react30.useRef(null);
62334
+ const keyBase = `tui:connection:${dbPath}`;
62335
+ const [isConnected, setIsConnected] = useTuiState(`${keyBase}:connected`, false);
62336
+ const [error2, setError] = useTuiState(`${keyBase}:error`, null);
62337
+ const [currentExecution, setCurrentExecution] = useTuiState(`${keyBase}:currentExecution`, null);
62338
+ const [executions, setExecutions] = useTuiState(`${keyBase}:executions`, EMPTY_EXECUTIONS);
62339
+ useEffectOnValueChange(dbPath, () => {
62340
+ const cleanup = () => {
62341
+ if (pollIntervalRef.current) {
62342
+ clearInterval(pollIntervalRef.current);
62343
+ pollIntervalRef.current = null;
62344
+ }
62345
+ if (dbRef.current) {
62346
+ dbRef.current.close();
62347
+ dbRef.current = null;
62275
62348
  }
62276
62349
  };
62277
- connect();
62278
- return () => {
62279
- if (pollInterval)
62280
- clearInterval(pollInterval);
62281
- if (smithersDb)
62282
- smithersDb.close();
62283
- };
62284
- }, [dbPath]);
62350
+ cleanup();
62351
+ try {
62352
+ const fullPath = dbPath.endsWith(".db") ? dbPath : `${dbPath}/smithers.db`;
62353
+ const smithersDb = createSmithersDB({ path: fullPath });
62354
+ dbRef.current = smithersDb;
62355
+ setIsConnected(true);
62356
+ setError(null);
62357
+ const pollData = () => {
62358
+ try {
62359
+ const current = smithersDb.execution.current();
62360
+ if (current) {
62361
+ setCurrentExecution({
62362
+ ...current,
62363
+ started_at: current.started_at?.toISOString() ?? null,
62364
+ completed_at: current.completed_at?.toISOString() ?? null
62365
+ });
62366
+ } else {
62367
+ setCurrentExecution(null);
62368
+ }
62369
+ const allExecs = smithersDb.execution.list();
62370
+ setExecutions(allExecs.map((e) => ({
62371
+ ...e,
62372
+ started_at: e.started_at?.toISOString() ?? null,
62373
+ completed_at: e.completed_at?.toISOString() ?? null
62374
+ })));
62375
+ } catch {}
62376
+ };
62377
+ pollData();
62378
+ pollIntervalRef.current = setInterval(pollData, 500);
62379
+ } catch (e) {
62380
+ setError(e instanceof Error ? e.message : "Connection failed");
62381
+ setIsConnected(false);
62382
+ setCurrentExecution(null);
62383
+ setExecutions(EMPTY_EXECUTIONS);
62384
+ }
62385
+ return cleanup;
62386
+ }, [dbPath, setCurrentExecution, setError, setExecutions, setIsConnected]);
62285
62387
  return {
62286
- db,
62388
+ db: dbRef.current,
62287
62389
  isConnected,
62288
62390
  error: error2,
62289
62391
  currentExecution,
@@ -62302,7 +62404,7 @@ var TABS = [
62302
62404
  { key: "reports", label: "Reports", shortcut: "F6" }
62303
62405
  ];
62304
62406
  function App({ dbPath }) {
62305
- const [activeTab, setActiveTab] = import_react34.useState("timeline");
62407
+ const [activeTab, setActiveTab] = useTuiState("tui:app:activeTab", "timeline");
62306
62408
  const { height } = useTerminalDimensions();
62307
62409
  const { db, isConnected, error: error2, currentExecution } = useSmithersConnection(dbPath);
62308
62410
  useKeyboard((key) => {
@@ -62331,7 +62433,7 @@ function App({ dbPath }) {
62331
62433
  }
62332
62434
  });
62333
62435
  const contentHeight = Math.max(height - 6, 10);
62334
- const renderView = import_react34.useCallback(() => {
62436
+ const renderView = import_react31.useCallback(() => {
62335
62437
  if (!db) {
62336
62438
  return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV("text", {
62337
62439
  content: "Connecting to database...",