profclaw 0.0.1-beta.3 → 2.3.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 (535) hide show
  1. package/.env.example +14 -2
  2. package/CHANGELOG.md +54 -34
  3. package/CONTRIBUTING.md +23 -5
  4. package/Dockerfile +39 -23
  5. package/README.md +271 -72
  6. package/dist/agents/agent-summary.d.ts +44 -0
  7. package/dist/agents/agent-summary.js +176 -0
  8. package/dist/agents/auto-memory.d.ts +59 -0
  9. package/dist/agents/auto-memory.js +310 -0
  10. package/dist/agents/checkpoint-manager.d.ts +76 -0
  11. package/dist/agents/checkpoint-manager.js +156 -0
  12. package/dist/agents/circuit-breaker.d.ts +54 -0
  13. package/dist/agents/circuit-breaker.js +153 -0
  14. package/dist/agents/context-compactor.d.ts +70 -0
  15. package/dist/agents/context-compactor.js +361 -0
  16. package/dist/agents/conversation-branch.d.ts +55 -0
  17. package/dist/agents/conversation-branch.js +115 -0
  18. package/dist/agents/error-recovery.d.ts +44 -0
  19. package/dist/agents/error-recovery.js +197 -0
  20. package/dist/agents/events.d.ts +76 -0
  21. package/dist/agents/events.js +8 -0
  22. package/dist/agents/executor.d.ts +35 -1
  23. package/dist/agents/executor.js +573 -124
  24. package/dist/agents/file-snapshots.d.ts +72 -0
  25. package/dist/agents/file-snapshots.js +182 -0
  26. package/dist/agents/index.d.ts +2 -0
  27. package/dist/agents/orchestrator.d.ts +183 -0
  28. package/dist/agents/orchestrator.js +495 -0
  29. package/dist/agents/permissions.d.ts +63 -0
  30. package/dist/agents/permissions.js +138 -0
  31. package/dist/agents/plan-mode.d.ts +71 -0
  32. package/dist/agents/plan-mode.js +186 -0
  33. package/dist/agents/prompt-suggestions.d.ts +33 -0
  34. package/dist/agents/prompt-suggestions.js +208 -0
  35. package/dist/agents/rate-limit-monitor.d.ts +56 -0
  36. package/dist/agents/rate-limit-monitor.js +224 -0
  37. package/dist/agents/result-store.d.ts +37 -0
  38. package/dist/agents/result-store.js +104 -0
  39. package/dist/agents/session-diff.d.ts +43 -0
  40. package/dist/agents/session-diff.js +258 -0
  41. package/dist/agents/tool-loader.d.ts +65 -0
  42. package/dist/agents/tool-loader.js +273 -0
  43. package/dist/agents/transcript.d.ts +96 -0
  44. package/dist/agents/transcript.js +267 -0
  45. package/dist/agents/worktree-manager.d.ts +80 -0
  46. package/dist/agents/worktree-manager.js +203 -0
  47. package/dist/auth/middleware.js +14 -0
  48. package/dist/chat/agentic-executor.d.ts +7 -0
  49. package/dist/chat/agentic-executor.js +253 -30
  50. package/dist/chat/conversations.d.ts +2 -0
  51. package/dist/chat/conversations.js +8 -0
  52. package/dist/chat/execution/executor.d.ts +8 -0
  53. package/dist/chat/execution/executor.js +157 -103
  54. package/dist/chat/execution/index.js +5 -1
  55. package/dist/chat/execution/tool-router.js +40 -14
  56. package/dist/chat/execution/tools/canvas.d.ts +2 -2
  57. package/dist/chat/execution/tools/code-tools.d.ts +66 -0
  58. package/dist/chat/execution/tools/code-tools.js +353 -0
  59. package/dist/chat/execution/tools/complete-task.d.ts +2 -2
  60. package/dist/chat/execution/tools/cron-tool.d.ts +26 -10
  61. package/dist/chat/execution/tools/cron-tool.js +48 -3
  62. package/dist/chat/execution/tools/decompose-task.d.ts +58 -0
  63. package/dist/chat/execution/tools/decompose-task.js +166 -0
  64. package/dist/chat/execution/tools/exec.d.ts +5 -2
  65. package/dist/chat/execution/tools/exec.js +294 -155
  66. package/dist/chat/execution/tools/feed-tools.d.ts +77 -0
  67. package/dist/chat/execution/tools/feed-tools.js +142 -0
  68. package/dist/chat/execution/tools/file-ops.d.ts +1 -1
  69. package/dist/chat/execution/tools/github.d.ts +2 -2
  70. package/dist/chat/execution/tools/index.d.ts +15 -3
  71. package/dist/chat/execution/tools/index.js +125 -12
  72. package/dist/chat/execution/tools/integrations.d.ts +8 -8
  73. package/dist/chat/execution/tools/multi-patch.d.ts +53 -0
  74. package/dist/chat/execution/tools/multi-patch.js +373 -0
  75. package/dist/chat/execution/tools/openai-image-gen.d.ts +2 -2
  76. package/dist/chat/execution/tools/plan-tools.d.ts +80 -0
  77. package/dist/chat/execution/tools/plan-tools.js +134 -0
  78. package/dist/chat/execution/tools/profclaw-ops.d.ts +6 -6
  79. package/dist/chat/execution/tools/repl-tool.d.ts +46 -0
  80. package/dist/chat/execution/tools/repl-tool.js +207 -0
  81. package/dist/chat/execution/tools/sessions-send.d.ts +2 -2
  82. package/dist/chat/execution/tools/slack-actions.d.ts +2 -2
  83. package/dist/chat/execution/tools/system.d.ts +4 -4
  84. package/dist/chat/execution/tools/todo-tool.d.ts +72 -0
  85. package/dist/chat/execution/tools/todo-tool.js +152 -0
  86. package/dist/chat/execution/tools/tool-search.d.ts +50 -0
  87. package/dist/chat/execution/tools/tool-search.js +155 -0
  88. package/dist/chat/execution/types.d.ts +21 -14
  89. package/dist/chat/execution/workflows/executor.d.ts +11 -0
  90. package/dist/chat/execution/workflows/executor.js +99 -1
  91. package/dist/chat/execution/workflows/types.d.ts +35 -2
  92. package/dist/chat/format/index.d.ts +1 -0
  93. package/dist/chat/format/index.js +1 -0
  94. package/dist/chat/format/markdown-convert.d.ts +23 -0
  95. package/dist/chat/format/markdown-convert.js +149 -0
  96. package/dist/chat/index.d.ts +1 -1
  97. package/dist/chat/index.js +1 -1
  98. package/dist/chat/message-handler.js +58 -6
  99. package/dist/chat/proactive/index.d.ts +62 -0
  100. package/dist/chat/proactive/index.js +147 -0
  101. package/dist/chat/prompt-adapter.js +2 -0
  102. package/dist/chat/providers/irc/index.d.ts +2 -2
  103. package/dist/chat/providers/slack/index.d.ts +2 -2
  104. package/dist/chat/providers/telegram/index.d.ts +2 -0
  105. package/dist/chat/providers/telegram/index.js +21 -2
  106. package/dist/chat/system-prompts.d.ts +3 -3
  107. package/dist/chat/system-prompts.js +116 -61
  108. package/dist/chat/tools.d.ts +6 -6
  109. package/dist/cli/commands/auth.js +64 -1
  110. package/dist/cli/commands/chat.js +1327 -138
  111. package/dist/cli/commands/doctor.js +222 -16
  112. package/dist/cli/commands/history.d.ts +3 -0
  113. package/dist/cli/commands/history.js +138 -0
  114. package/dist/cli/commands/import.d.ts +44 -0
  115. package/dist/cli/commands/import.js +526 -0
  116. package/dist/cli/commands/init.d.ts +13 -0
  117. package/dist/cli/commands/init.js +381 -0
  118. package/dist/cli/commands/models.js +39 -26
  119. package/dist/cli/commands/onboard.js +263 -98
  120. package/dist/cli/commands/plan.d.ts +13 -0
  121. package/dist/cli/commands/plan.js +184 -0
  122. package/dist/cli/commands/serve.d.ts +7 -0
  123. package/dist/cli/commands/serve.js +77 -18
  124. package/dist/cli/commands/setup.js +375 -91
  125. package/dist/cli/commands/status.js +54 -0
  126. package/dist/cli/commands/tools.js +13 -13
  127. package/dist/cli/commands/tui.js +26 -1
  128. package/dist/cli/index.js +19 -6
  129. package/dist/cli/ink/App.d.ts +13 -0
  130. package/dist/cli/ink/App.js +6 -0
  131. package/dist/cli/ink/ChatApp.d.ts +60 -0
  132. package/dist/cli/ink/ChatApp.js +325 -0
  133. package/dist/cli/ink/DashboardApp.d.ts +3 -0
  134. package/dist/cli/ink/DashboardApp.js +143 -0
  135. package/dist/cli/ink/components/AgentStatus.d.ts +17 -0
  136. package/dist/cli/ink/components/AgentStatus.js +33 -0
  137. package/dist/cli/ink/components/ChannelList.d.ts +17 -0
  138. package/dist/cli/ink/components/ChannelList.js +33 -0
  139. package/dist/cli/ink/components/ConnectionStatus.d.ts +19 -0
  140. package/dist/cli/ink/components/ConnectionStatus.js +50 -0
  141. package/dist/cli/ink/components/CostBar.d.ts +19 -0
  142. package/dist/cli/ink/components/CostBar.js +35 -0
  143. package/dist/cli/ink/components/HookStatus.d.ts +15 -0
  144. package/dist/cli/ink/components/HookStatus.js +7 -0
  145. package/dist/cli/ink/components/PermissionPrompt.d.ts +21 -0
  146. package/dist/cli/ink/components/PermissionPrompt.js +51 -0
  147. package/dist/cli/ink/components/PlanView.d.ts +23 -0
  148. package/dist/cli/ink/components/PlanView.js +26 -0
  149. package/dist/cli/ink/components/ProviderList.d.ts +16 -0
  150. package/dist/cli/ink/components/ProviderList.js +16 -0
  151. package/dist/cli/ink/components/SessionHeader.d.ts +15 -0
  152. package/dist/cli/ink/components/SessionHeader.js +15 -0
  153. package/dist/cli/ink/components/StreamingMessage.d.ts +20 -0
  154. package/dist/cli/ink/components/StreamingMessage.js +27 -0
  155. package/dist/cli/ink/components/SuggestionBar.d.ts +15 -0
  156. package/dist/cli/ink/components/SuggestionBar.js +28 -0
  157. package/dist/cli/ink/components/SystemHealth.d.ts +20 -0
  158. package/dist/cli/ink/components/SystemHealth.js +39 -0
  159. package/dist/cli/ink/components/TaskList.d.ts +17 -0
  160. package/dist/cli/ink/components/TaskList.js +59 -0
  161. package/dist/cli/ink/components/ToolCall.d.ts +17 -0
  162. package/dist/cli/ink/components/ToolCall.js +43 -0
  163. package/dist/cli/ink/index.d.ts +23 -0
  164. package/dist/cli/ink/index.js +15 -0
  165. package/dist/cli/ink/keybindings.d.ts +35 -0
  166. package/dist/cli/ink/keybindings.js +105 -0
  167. package/dist/cli/ink/markdown-renderer.d.ts +47 -0
  168. package/dist/cli/ink/markdown-renderer.js +380 -0
  169. package/dist/cli/ink/output-styles.d.ts +39 -0
  170. package/dist/cli/ink/output-styles.js +119 -0
  171. package/dist/cli/interactive/auto-serve.d.ts +38 -0
  172. package/dist/cli/interactive/auto-serve.js +209 -0
  173. package/dist/cli/interactive/index.d.ts +25 -0
  174. package/dist/cli/interactive/index.js +23 -0
  175. package/dist/cli/interactive/picker.d.ts +28 -0
  176. package/dist/cli/interactive/picker.js +153 -0
  177. package/dist/cli/interactive/renderer.d.ts +26 -0
  178. package/dist/cli/interactive/renderer.js +555 -0
  179. package/dist/cli/interactive/repl.d.ts +14 -0
  180. package/dist/cli/interactive/repl.js +1516 -0
  181. package/dist/cli/interactive/stream-client.d.ts +59 -0
  182. package/dist/cli/interactive/stream-client.js +506 -0
  183. package/dist/cli/interactive/types.d.ts +121 -0
  184. package/dist/cli/interactive/types.js +10 -0
  185. package/dist/cli/providers.d.ts +15 -0
  186. package/dist/cli/providers.js +41 -0
  187. package/dist/cli/utils/api.d.ts +9 -0
  188. package/dist/cli/utils/api.js +58 -2
  189. package/dist/core/deployment.js +2 -0
  190. package/dist/cron/natural-language.d.ts +54 -0
  191. package/dist/cron/natural-language.js +569 -0
  192. package/dist/cron/scheduler.d.ts +34 -4
  193. package/dist/cron/scheduler.js +141 -9
  194. package/dist/cron/templates.d.ts +1 -1
  195. package/dist/cron/templates.js +219 -0
  196. package/dist/feeds/feed-engine.d.ts +149 -0
  197. package/dist/feeds/feed-engine.js +600 -0
  198. package/dist/feeds/index.d.ts +9 -0
  199. package/dist/feeds/index.js +8 -0
  200. package/dist/gateway/router.js +6 -1
  201. package/dist/hooks/built-in/audit-log.d.ts +11 -0
  202. package/dist/hooks/built-in/audit-log.js +84 -0
  203. package/dist/hooks/built-in/cost-warning.d.ts +10 -0
  204. package/dist/hooks/built-in/cost-warning.js +59 -0
  205. package/dist/hooks/built-in/dangerous-tool.d.ts +32 -0
  206. package/dist/hooks/built-in/dangerous-tool.js +80 -0
  207. package/dist/hooks/built-in/index.d.ts +14 -0
  208. package/dist/hooks/built-in/index.js +20 -0
  209. package/dist/hooks/index.d.ts +3 -0
  210. package/dist/hooks/index.js +6 -0
  211. package/dist/hooks/loader.d.ts +17 -0
  212. package/dist/hooks/loader.js +142 -0
  213. package/dist/hooks/registry.d.ts +62 -0
  214. package/dist/hooks/registry.js +127 -0
  215. package/dist/integrations/web-search.js +6 -3
  216. package/dist/memory/index.d.ts +1 -0
  217. package/dist/memory/index.js +2 -0
  218. package/dist/memory/memory-service.js +14 -13
  219. package/dist/memory/observational.d.ts +62 -0
  220. package/dist/memory/observational.js +396 -0
  221. package/dist/middleware/content-filter.d.ts +22 -0
  222. package/dist/middleware/content-filter.js +69 -0
  223. package/dist/middleware/request-validator.d.ts +159 -0
  224. package/dist/middleware/request-validator.js +93 -0
  225. package/dist/plugins/sdk.d.ts +22 -0
  226. package/dist/plugins/sdk.js +17 -1
  227. package/dist/projects/types.d.ts +10 -10
  228. package/dist/providers/ai-sdk.d.ts +11 -0
  229. package/dist/providers/ai-sdk.js +97 -18
  230. package/dist/providers/core/models.js +67 -1
  231. package/dist/providers/core/types.d.ts +3 -0
  232. package/dist/providers/index.d.ts +1 -0
  233. package/dist/providers/index.js +1 -0
  234. package/dist/providers/smart-router.d.ts +118 -0
  235. package/dist/providers/smart-router.js +685 -0
  236. package/dist/providers/types.d.ts +16 -16
  237. package/dist/routes/agents.js +50 -0
  238. package/dist/routes/auth.js +8 -1
  239. package/dist/routes/channels.d.ts +12 -0
  240. package/dist/routes/channels.js +166 -0
  241. package/dist/routes/chat.js +259 -14
  242. package/dist/routes/costs.js +32 -0
  243. package/dist/routes/cron.js +80 -5
  244. package/dist/routes/feeds.d.ts +10 -0
  245. package/dist/routes/feeds.js +168 -0
  246. package/dist/routes/mcp.js +21 -0
  247. package/dist/routes/memory.js +130 -0
  248. package/dist/routes/skills.js +129 -0
  249. package/dist/routes/teams.d.ts +9 -0
  250. package/dist/routes/teams.js +210 -0
  251. package/dist/routes/tools.js +14 -0
  252. package/dist/routes/users.js +2 -0
  253. package/dist/server/route-loader.js +4 -1
  254. package/dist/server/stream-bridge.d.ts +19 -0
  255. package/dist/server/stream-bridge.js +38 -0
  256. package/dist/server.js +421 -141
  257. package/dist/skills/marketplace.d.ts +87 -0
  258. package/dist/skills/marketplace.js +268 -0
  259. package/dist/storage/index.d.ts +14 -0
  260. package/dist/storage/index.js +64 -3
  261. package/dist/storage/schema.d.ts +4 -4
  262. package/dist/storage/schema.js +1 -1
  263. package/dist/teams/index.d.ts +110 -0
  264. package/dist/teams/index.js +365 -0
  265. package/dist/tickets/types.d.ts +39 -39
  266. package/dist/types/summary.d.ts +5 -5
  267. package/dist/utils/auto-update.d.ts +23 -0
  268. package/dist/utils/auto-update.js +157 -0
  269. package/dist/utils/offline-detect.d.ts +55 -0
  270. package/dist/utils/offline-detect.js +121 -0
  271. package/dist/utils/pid-file.d.ts +36 -0
  272. package/dist/utils/pid-file.js +125 -0
  273. package/dist/utils/prevent-sleep.d.ts +27 -0
  274. package/dist/utils/prevent-sleep.js +95 -0
  275. package/dist/utils/sanitizer.d.ts +57 -0
  276. package/dist/utils/sanitizer.js +174 -0
  277. package/docker-compose.yml +13 -137
  278. package/package.json +31 -6
  279. package/skills/deploy-cloudflare/SKILL.md +62 -0
  280. package/skills/deploy-vercel/SKILL.md +67 -0
  281. package/skills/docker-deploy/SKILL.md +158 -0
  282. package/skills/full-stack-builder/SKILL.md +92 -0
  283. package/skills/git-workflow/SKILL.md +3 -3
  284. package/skills/humanizer/SKILL.md +488 -0
  285. package/skills/profclaw-assistant/SKILL.md +85 -56
  286. package/ui/dist/assets/ActivityView-Da6HQ8ws.js +1 -0
  287. package/ui/dist/assets/AgentList-H58R0kX3.js +1 -0
  288. package/ui/dist/assets/AnalyticsDashboard-B28AeRsc.js +1 -0
  289. package/ui/dist/assets/AreaChart-DwLzeAQ8.js +1 -0
  290. package/ui/dist/assets/CartesianChart-piKQsTAR.js +36 -0
  291. package/ui/dist/assets/ChatView-Dbj8rxU5.js +10 -0
  292. package/ui/dist/assets/CostsDashboard-C6F5df0F.js +1 -0
  293. package/ui/dist/assets/EstimateSelect-wga0rUKX.js +1 -0
  294. package/ui/dist/assets/FeedDashboard-Ef6FEzEf.js +1 -0
  295. package/ui/dist/assets/FloatingChatbot-0yhkUeCq.js +2 -0
  296. package/ui/dist/assets/InviteCodeManagement-tUXfx4Bc.js +2 -0
  297. package/ui/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  298. package/ui/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  299. package/ui/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  300. package/ui/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  301. package/ui/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  302. package/ui/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  303. package/ui/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  304. package/ui/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  305. package/ui/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  306. package/ui/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  307. package/ui/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  308. package/ui/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  309. package/ui/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  310. package/ui/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  311. package/ui/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  312. package/ui/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  313. package/ui/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  314. package/ui/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  315. package/ui/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  316. package/ui/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  317. package/ui/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  318. package/ui/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  319. package/ui/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  320. package/ui/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  321. package/ui/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  322. package/ui/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  323. package/ui/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  324. package/ui/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  325. package/ui/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  326. package/ui/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  327. package/ui/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  328. package/ui/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  329. package/ui/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  330. package/ui/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  331. package/ui/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  332. package/ui/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  333. package/ui/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  334. package/ui/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  335. package/ui/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  336. package/ui/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  337. package/ui/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  338. package/ui/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  339. package/ui/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  340. package/ui/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  341. package/ui/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  342. package/ui/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  343. package/ui/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  344. package/ui/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  345. package/ui/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  346. package/ui/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  347. package/ui/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  348. package/ui/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  349. package/ui/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  350. package/ui/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  351. package/ui/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  352. package/ui/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  353. package/ui/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  354. package/ui/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  355. package/ui/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  356. package/ui/dist/assets/MarketplacePage-DGrLtolR.js +1 -0
  357. package/ui/dist/assets/{ProjectDetail-DlYUcOss.js → ProjectDetail-BgWvA6UP.js} +2 -2
  358. package/ui/dist/assets/ProjectIcon-TDuliqwg.js +1 -0
  359. package/ui/dist/assets/ProjectList-DXgM4187.js +1 -0
  360. package/ui/dist/assets/{Settings-CgPqzUvj.js → Settings-xA8Zhi3p.js} +3 -3
  361. package/ui/dist/assets/StatusIndicator-B8vfFAxg.js +1 -0
  362. package/ui/dist/assets/{SummaryDetail-CwLAfHgJ.js → SummaryDetail-eedRfTtF.js} +2 -2
  363. package/ui/dist/assets/SummaryList-CLNX2P84.js +1 -0
  364. package/ui/dist/assets/TaskDetail-BtWclNiR.js +1 -0
  365. package/ui/dist/assets/TaskList-JjODAgSc.js +1 -0
  366. package/ui/dist/assets/TeamsPage-CBK5iAyx.js +1 -0
  367. package/ui/dist/assets/TicketBoard-C9aJNNYp.js +1 -0
  368. package/ui/dist/assets/TicketDetail-CV5JmL31.js +1 -0
  369. package/ui/dist/assets/TicketList-68V4lzUz.js +1 -0
  370. package/ui/dist/assets/UserManagement-DKTb6UpE.js +2 -0
  371. package/ui/dist/assets/ViewSwitcher-BvdQht2Y.js +1 -0
  372. package/ui/dist/assets/alert-dialog-O6qBOv_f.js +1 -0
  373. package/ui/dist/assets/{archive-CGck7gxR.js → archive-CX7UvZpf.js} +1 -1
  374. package/ui/dist/assets/badge-BbfnwDJP.js +1 -0
  375. package/ui/dist/assets/{bug-DqSGPUUE.js → bug-3WX0394-.js} +1 -1
  376. package/ui/dist/assets/{calendar-BuZ4zbPW.js → calendar-buq77TaS.js} +1 -1
  377. package/ui/dist/assets/{chevron-up-DcJ4LL_N.js → chevron-up-4ymsBJRo.js} +1 -1
  378. package/ui/dist/assets/{circle-x-C78PNZjF.js → circle-x-ByXtwR6Y.js} +1 -1
  379. package/ui/dist/assets/constants-CVdDh7p0.js +1 -0
  380. package/ui/dist/assets/{cpu-Ck6AoG8c.js → cpu-CiuoCeDY.js} +1 -1
  381. package/ui/dist/assets/{database-CA2w8Lvt.js → database-BWXSBg5a.js} +1 -1
  382. package/ui/dist/assets/dialog-lDg4NvMV.js +1 -0
  383. package/ui/dist/assets/dollar-sign-Dmijd6DP.js +1 -0
  384. package/ui/dist/assets/{ellipsis-FhHKRbfl.js → ellipsis-vT-5SVIp.js} +1 -1
  385. package/ui/dist/assets/{ellipsis-vertical-CO0UqE4-.js → ellipsis-vertical-B4tAX_bL.js} +1 -1
  386. package/ui/dist/assets/feature-markdown-DBo5Q7uq.js +289 -0
  387. package/ui/dist/assets/{file-code-ChnhYYj1.js → file-code-ChOWdKXf.js} +1 -1
  388. package/ui/dist/assets/{folder-open-CHwA1-ve.js → folder-open-CkOUbIiP.js} +1 -1
  389. package/ui/dist/assets/{funnel-ByEjRFNB.js → funnel-uZkoSPP-.js} +1 -1
  390. package/ui/dist/assets/{git-branch-GTOPQgU4.js → git-branch-CwvUxj7C.js} +1 -1
  391. package/ui/dist/assets/{git-commit-horizontal-F5M84Kut.js → git-commit-horizontal-lxPzCvhD.js} +1 -1
  392. package/ui/dist/assets/{globe-CQWfr7hT.js → globe-D_WpJdsj.js} +1 -1
  393. package/ui/dist/assets/{hash-nKC9gtLg.js → hash-CA0hJ7vh.js} +1 -1
  394. package/ui/dist/assets/{history-DfFSA9xJ.js → history-CEWMLELs.js} +1 -1
  395. package/ui/dist/assets/inbox-ehtOptTV.js +1 -0
  396. package/ui/dist/assets/{index-a4Fxq0Hb.js → index-C1rhbml4.js} +3 -3
  397. package/ui/dist/assets/index-CR8gfCHv.js +1 -0
  398. package/ui/dist/assets/index-DVXMpWai.js +1 -0
  399. package/ui/dist/assets/index-DaDJMM2v.js +1 -0
  400. package/ui/dist/assets/index-Djdq_0xu.js +1 -0
  401. package/ui/dist/assets/index-M46Gcb8K.css +1 -0
  402. package/ui/dist/assets/index-sEBN7w8J.js +109 -0
  403. package/ui/dist/assets/layers-C6Mhf8Nk.js +1 -0
  404. package/ui/dist/assets/{layout-dashboard-WmgjMhWF.js → layout-dashboard-BRUM0kpT.js} +1 -1
  405. package/ui/dist/assets/{lightbulb-Bo8hEr7B.js → lightbulb-CN2q1O5l.js} +1 -1
  406. package/ui/dist/assets/{link-2-YqrpQXBH.js → link-2-CC4E28yJ.js} +1 -1
  407. package/ui/dist/assets/markdown-renderer-C6ENbB0u.js +10 -0
  408. package/ui/dist/assets/markdown-renderer-CfVKi3_s.css +1 -0
  409. package/ui/dist/assets/{message-square-CD0H5hot.js → message-square-Bbb241am.js} +1 -1
  410. package/ui/dist/assets/package-CwT3IzFx.js +1 -0
  411. package/ui/dist/assets/{pencil-DpFnj5dn.js → pencil-CDmiHzoj.js} +1 -1
  412. package/ui/dist/assets/{play-DVgea_jT.js → play-tjy5jMQX.js} +1 -1
  413. package/ui/dist/assets/popover-CFHZf3pE.js +1 -0
  414. package/ui/dist/assets/progress-BboUHuLf.js +1 -0
  415. package/ui/dist/assets/{rocket-BFxPYGx9.js → rocket--8ZHgdXJ.js} +1 -1
  416. package/ui/dist/assets/select-n108rXny.js +1 -0
  417. package/ui/dist/assets/{send-eYnW_7n-.js → send-Cu7MR2Qh.js} +1 -1
  418. package/ui/dist/assets/server-DmodxZp-.js +1 -0
  419. package/ui/dist/assets/{settings-2-scXUOuE_.js → settings-2-CkRNqkxj.js} +1 -1
  420. package/ui/dist/assets/sheet-7aUJkyzU.js +1 -0
  421. package/ui/dist/assets/{shield-check-PEr7nmVw.js → shield-check-ViI3nMKE.js} +1 -1
  422. package/ui/dist/assets/{shield-off-CLtXio62.js → shield-off-DN3tagkn.js} +1 -1
  423. package/ui/dist/assets/skeleton-C0E1Nfro.js +1 -0
  424. package/ui/dist/assets/{smartphone-DusFfY0U.js → smartphone-5FghiXpA.js} +1 -1
  425. package/ui/dist/assets/{square-e1yxB2eR.js → square-DiNSx8K7.js} +1 -1
  426. package/ui/dist/assets/star-DhdFVidS.js +1 -0
  427. package/ui/dist/assets/switch-CIgVbZqQ.js +1 -0
  428. package/ui/dist/assets/table-BC56FVMV.js +1 -0
  429. package/ui/dist/assets/{tag-tAwMmQ9G.js → tag-CH_vQliw.js} +1 -1
  430. package/ui/dist/assets/textarea-CxDiKFXZ.js +1 -0
  431. package/ui/dist/assets/{timer-Vel1N3RP.js → timer-CdGVTb60.js} +1 -1
  432. package/ui/dist/assets/tooltip-BuW9A5UO.js +1 -0
  433. package/ui/dist/assets/{trash-2-eM-CNwsZ.js → trash-2-CucZJL0N.js} +1 -1
  434. package/ui/dist/assets/trending-down-BCezC1z2.js +1 -0
  435. package/ui/dist/assets/{trending-up-BGafmjRo.js → trending-up-C5OYX2k2.js} +1 -1
  436. package/ui/dist/assets/vendor-query-C0p7b53x.js +4 -0
  437. package/ui/dist/assets/vendor-react-Mc5_kfYG.js +12 -0
  438. package/ui/dist/assets/vendor-ui-CXPAUBFv.js +51 -0
  439. package/ui/dist/assets/{wand-sparkles-DPvcd9Pi.js → wand-sparkles-BaH6pJnc.js} +1 -1
  440. package/ui/dist/assets/{wrench-B8s3zYVV.js → wrench-CjxjP6ok.js} +1 -1
  441. package/ui/dist/index.html +5 -2
  442. package/dist/chat/auto-reply.d.ts +0 -90
  443. package/dist/chat/auto-reply.js +0 -272
  444. package/dist/chat/execution/pty.d.ts +0 -92
  445. package/dist/chat/execution/pty.js +0 -285
  446. package/dist/chat/execution/tools/glinr-ops.d.ts +0 -202
  447. package/dist/chat/execution/tools/glinr-ops.js +0 -694
  448. package/dist/cli/commands/browser.d.ts +0 -3
  449. package/dist/cli/commands/browser.js +0 -138
  450. package/dist/cli/commands/canvas.d.ts +0 -3
  451. package/dist/cli/commands/canvas.js +0 -155
  452. package/dist/cli/commands/nodes.d.ts +0 -3
  453. package/dist/cli/commands/nodes.js +0 -193
  454. package/dist/diagnostics/exporters.d.ts +0 -21
  455. package/dist/diagnostics/exporters.js +0 -138
  456. package/dist/diagnostics/index.d.ts +0 -10
  457. package/dist/diagnostics/index.js +0 -9
  458. package/dist/diagnostics/middleware.d.ts +0 -12
  459. package/dist/diagnostics/middleware.js +0 -58
  460. package/dist/diagnostics/tracer.d.ts +0 -133
  461. package/dist/diagnostics/tracer.js +0 -257
  462. package/dist/discovery/index.d.ts +0 -8
  463. package/dist/discovery/index.js +0 -7
  464. package/dist/discovery/mdns.d.ts +0 -40
  465. package/dist/discovery/mdns.js +0 -249
  466. package/dist/plugins/registry.d.ts +0 -122
  467. package/dist/plugins/registry.js +0 -352
  468. package/dist/plugins/sandbox.d.ts +0 -77
  469. package/dist/plugins/sandbox.js +0 -287
  470. package/dist/plugins/search/brave.d.ts +0 -9
  471. package/dist/plugins/search/brave.js +0 -157
  472. package/dist/plugins/search/duckduckgo.d.ts +0 -9
  473. package/dist/plugins/search/duckduckgo.js +0 -171
  474. package/dist/plugins/search/index.d.ts +0 -13
  475. package/dist/plugins/search/index.js +0 -23
  476. package/dist/plugins/search/searxng.d.ts +0 -9
  477. package/dist/plugins/search/searxng.js +0 -170
  478. package/dist/plugins/search/serper.d.ts +0 -9
  479. package/dist/plugins/search/serper.js +0 -135
  480. package/dist/plugins/search/tavily.d.ts +0 -9
  481. package/dist/plugins/search/tavily.js +0 -146
  482. package/dist/providers/adapters/anthropic.d.ts +0 -26
  483. package/dist/providers/adapters/anthropic.js +0 -306
  484. package/dist/providers/adapters/base.d.ts +0 -53
  485. package/dist/providers/adapters/base.js +0 -99
  486. package/dist/providers/adapters/ollama.d.ts +0 -30
  487. package/dist/providers/adapters/ollama.js +0 -292
  488. package/dist/utils/ai-cache.d.ts +0 -72
  489. package/dist/utils/ai-cache.js +0 -204
  490. package/dist/utils/file-lock.d.ts +0 -85
  491. package/dist/utils/file-lock.js +0 -204
  492. package/ui/dist/assets/ActivityView-DIPQSJ_d.js +0 -1
  493. package/ui/dist/assets/AgentList-CqyaYrcq.js +0 -1
  494. package/ui/dist/assets/AnalyticsDashboard-C-mjuGHT.js +0 -1
  495. package/ui/dist/assets/AreaChart-CfYWmbtr.js +0 -1
  496. package/ui/dist/assets/CartesianChart-BaQ3It0c.js +0 -36
  497. package/ui/dist/assets/ChatView-DxxQy6pl.js +0 -10
  498. package/ui/dist/assets/CostsDashboard-CDBBcGkg.js +0 -1
  499. package/ui/dist/assets/EstimateSelect-CDjf5qKl.js +0 -1
  500. package/ui/dist/assets/FloatingChatbot-CZHjvJIe.js +0 -2
  501. package/ui/dist/assets/InviteCodeManagement-DTm-IPTm.js +0 -2
  502. package/ui/dist/assets/ProjectIcon-BMRpnM04.js +0 -1
  503. package/ui/dist/assets/ProjectList-D85TN0i0.js +0 -4
  504. package/ui/dist/assets/StatusIndicator-yig0uZEA.js +0 -1
  505. package/ui/dist/assets/SummaryList-BvS5Idnu.js +0 -1
  506. package/ui/dist/assets/TaskDetail-zarC1fOt.js +0 -1
  507. package/ui/dist/assets/TaskList-CyJq3ANE.js +0 -1
  508. package/ui/dist/assets/TicketBoard-BlWr3-iH.js +0 -1
  509. package/ui/dist/assets/TicketDetail-DmqWKj2W.js +0 -1
  510. package/ui/dist/assets/TicketList-Scj4pMWa.js +0 -1
  511. package/ui/dist/assets/UserManagement-BH7uG7dw.js +0 -2
  512. package/ui/dist/assets/ViewSwitcher-3HzZUdWn.js +0 -1
  513. package/ui/dist/assets/alert-dialog-DWPb2IfQ.js +0 -7
  514. package/ui/dist/assets/badge-DEmc3Z_l.js +0 -1
  515. package/ui/dist/assets/brain-CfFdLVqb.js +0 -1
  516. package/ui/dist/assets/constants-DhDjZe4P.js +0 -1
  517. package/ui/dist/assets/dialog-BOdGWhgE.js +0 -1
  518. package/ui/dist/assets/index--JkIxVXb.js +0 -67
  519. package/ui/dist/assets/index-Ca3vk7Gq.js +0 -1
  520. package/ui/dist/assets/index-DHGvP9mp.js +0 -1
  521. package/ui/dist/assets/index-DeI8lKRR.js +0 -1
  522. package/ui/dist/assets/index-WclMPci1.css +0 -1
  523. package/ui/dist/assets/index-Z4-RtZcs.js +0 -1
  524. package/ui/dist/assets/layers-DFeLExSa.js +0 -1
  525. package/ui/dist/assets/markdown-renderer-Croje6Xe.js +0 -36
  526. package/ui/dist/assets/popover-JXecfWG5.js +0 -1
  527. package/ui/dist/assets/progress-C1ghf1Fu.js +0 -1
  528. package/ui/dist/assets/select-MADP8m6Q.js +0 -1
  529. package/ui/dist/assets/server-CPMaysH8.js +0 -1
  530. package/ui/dist/assets/sheet-r6NSOxi-.js +0 -1
  531. package/ui/dist/assets/skeleton-C9oEzNlU.js +0 -1
  532. package/ui/dist/assets/switch-tNs0n-kz.js +0 -1
  533. package/ui/dist/assets/table-CXxtLicg.js +0 -1
  534. package/ui/dist/assets/textarea-BjiEeIWh.js +0 -1
  535. package/ui/dist/assets/tooltip-ZMwtfr1J.js +0 -1
@@ -0,0 +1,15 @@
1
+ /**
2
+ * SuggestionBar
3
+ *
4
+ * Renders 2-3 dimmed follow-up prompt suggestions below the last assistant
5
+ * response. The user can press 1, 2, or 3 to select a suggestion.
6
+ */
7
+ import React from 'react';
8
+ import type { Suggestion } from '../../../agents/prompt-suggestions.js';
9
+ export interface SuggestionBarProps {
10
+ suggestions: Suggestion[];
11
+ isActive: boolean;
12
+ onSelect: (text: string) => void;
13
+ }
14
+ export declare const SuggestionBar: React.FC<SuggestionBarProps>;
15
+ //# sourceMappingURL=SuggestionBar.d.ts.map
@@ -0,0 +1,28 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text, useInput } from 'ink';
3
+ // ── Category colors ───────────────────────────────────────────────────────────
4
+ function categoryColor(category) {
5
+ switch (category) {
6
+ case 'action': return 'yellow';
7
+ case 'deeper': return 'cyan';
8
+ case 'related': return 'magenta';
9
+ case 'follow-up':
10
+ default: return 'white';
11
+ }
12
+ }
13
+ // ── Component ─────────────────────────────────────────────────────────────────
14
+ export const SuggestionBar = ({ suggestions, isActive, onSelect, }) => {
15
+ useInput((input) => {
16
+ const digit = parseInt(input, 10);
17
+ if (!isNaN(digit) && digit >= 1 && digit <= suggestions.length) {
18
+ const suggestion = suggestions[digit - 1];
19
+ if (suggestion) {
20
+ onSelect(suggestion.text);
21
+ }
22
+ }
23
+ }, { isActive });
24
+ if (suggestions.length === 0)
25
+ return null;
26
+ return (_jsxs(Box, { flexDirection: "column", paddingX: 2, paddingY: 0, marginTop: 0, children: [_jsx(Text, { dimColor: true, children: " \u254C suggestions \u254C" }), suggestions.map((s, i) => (_jsxs(Box, { flexDirection: "row", gap: 1, children: [_jsx(Text, { dimColor: true, bold: true, children: ` ${i + 1}.` }), _jsx(Text, { dimColor: true, color: categoryColor(s.category), children: s.text })] }, i))), _jsxs(Text, { dimColor: true, children: [" press 1\u2013", suggestions.length, " to use"] })] }));
27
+ };
28
+ //# sourceMappingURL=SuggestionBar.js.map
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ export interface SystemMetrics {
3
+ version?: string;
4
+ uptime?: number;
5
+ mode?: string;
6
+ healthy?: boolean;
7
+ memoryUsedMb?: number;
8
+ memoryTotalMb?: number;
9
+ cpuPercent?: number;
10
+ queueBackend?: 'redis' | 'memory';
11
+ degraded?: boolean;
12
+ }
13
+ interface SystemHealthProps {
14
+ metrics: SystemMetrics;
15
+ loading?: boolean;
16
+ error?: string;
17
+ }
18
+ export declare function SystemHealth({ metrics, loading, error }: SystemHealthProps): React.ReactElement;
19
+ export {};
20
+ //# sourceMappingURL=SystemHealth.d.ts.map
@@ -0,0 +1,39 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ function formatUptime(seconds) {
4
+ const d = Math.floor(seconds / 86400);
5
+ const h = Math.floor((seconds % 86400) / 3600);
6
+ const m = Math.floor((seconds % 3600) / 60);
7
+ const parts = [];
8
+ if (d > 0)
9
+ parts.push(`${d}d`);
10
+ if (h > 0)
11
+ parts.push(`${h}h`);
12
+ parts.push(`${m}m`);
13
+ return parts.join(' ');
14
+ }
15
+ function HealthRow({ label, value, color = 'white', dimColor = false }) {
16
+ return (_jsxs(Box, { gap: 0, children: [_jsx(Text, { dimColor: true, children: ' ' + label.padEnd(16) }), _jsx(Text, { color: dimColor ? undefined : color, dimColor: dimColor, children: value })] }));
17
+ }
18
+ export function SystemHealth({ metrics, loading, error }) {
19
+ if (loading) {
20
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, color: "white", children: "System Health" }), _jsx(Text, { dimColor: true, children: " Loading..." })] }));
21
+ }
22
+ if (error) {
23
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, color: "white", children: "System Health" }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { color: "red", children: " Unable to connect to profClaw server." }), _jsx(Text, { dimColor: true, children: " Is it running? Try: profclaw serve" })] })] }));
24
+ }
25
+ const healthColor = metrics.healthy ? 'green' : 'red';
26
+ const healthLabel = metrics.healthy
27
+ ? '● healthy'
28
+ : metrics.degraded
29
+ ? '● degraded'
30
+ : '● unhealthy';
31
+ const memUsage = metrics.memoryUsedMb != null && metrics.memoryTotalMb != null
32
+ ? `${metrics.memoryUsedMb}MB / ${metrics.memoryTotalMb}MB`
33
+ : undefined;
34
+ const cpuColor = (metrics.cpuPercent ?? 0) > 80 ? 'red'
35
+ : (metrics.cpuPercent ?? 0) > 50 ? 'yellow'
36
+ : 'green';
37
+ return (_jsxs(Box, { flexDirection: "column", gap: 0, children: [_jsxs(Box, { gap: 2, children: [_jsx(Text, { bold: true, color: "white", children: "System Health" }), metrics.degraded && (_jsx(Text, { color: "yellow", bold: true, children: "\u26A0 DEGRADED" }))] }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [metrics.version && (_jsx(HealthRow, { label: "Version", value: metrics.version, dimColor: true })), _jsx(HealthRow, { label: "Status", value: healthLabel, color: healthColor }), _jsx(HealthRow, { label: "Mode", value: metrics.mode ?? 'mini', color: "cyan" }), metrics.uptime != null && (_jsx(HealthRow, { label: "Uptime", value: formatUptime(metrics.uptime), dimColor: true })), memUsage && (_jsx(HealthRow, { label: "Memory", value: memUsage, dimColor: true })), metrics.cpuPercent != null && (_jsx(HealthRow, { label: "CPU", value: `${metrics.cpuPercent.toFixed(1)}%`, color: cpuColor })), _jsx(HealthRow, { label: "Queue backend", value: metrics.queueBackend ?? 'memory', color: metrics.queueBackend === 'redis' ? 'green' : 'yellow' })] })] }));
38
+ }
39
+ //# sourceMappingURL=SystemHealth.js.map
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ export type TaskStatus = 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';
3
+ export interface Task {
4
+ id: string;
5
+ title: string;
6
+ status: TaskStatus;
7
+ createdAt: string;
8
+ durationMs?: number;
9
+ }
10
+ interface TaskListProps {
11
+ tasks: Task[];
12
+ loading?: boolean;
13
+ error?: string;
14
+ }
15
+ export declare function TaskList({ tasks, loading, error }: TaskListProps): React.ReactElement;
16
+ export {};
17
+ //# sourceMappingURL=TaskList.d.ts.map
@@ -0,0 +1,59 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ function statusColor(status) {
4
+ const map = {
5
+ pending: 'gray',
6
+ running: 'yellow',
7
+ completed: 'green',
8
+ failed: 'red',
9
+ cancelled: 'gray',
10
+ };
11
+ return map[status];
12
+ }
13
+ function statusLabel(status) {
14
+ const map = {
15
+ pending: 'pending',
16
+ running: 'running',
17
+ completed: 'done',
18
+ failed: 'failed',
19
+ cancelled: 'cancel',
20
+ };
21
+ return map[status];
22
+ }
23
+ function formatDuration(ms) {
24
+ if (ms == null)
25
+ return '-';
26
+ if (ms < 1000)
27
+ return `${ms}ms`;
28
+ if (ms < 60000)
29
+ return `${(ms / 1000).toFixed(1)}s`;
30
+ return `${Math.floor(ms / 60000)}m${Math.floor((ms % 60000) / 1000)}s`;
31
+ }
32
+ function formatRelative(iso) {
33
+ const diff = Date.now() - new Date(iso).getTime();
34
+ const s = Math.floor(diff / 1000);
35
+ if (s < 60)
36
+ return `${s}s ago`;
37
+ const m = Math.floor(s / 60);
38
+ if (m < 60)
39
+ return `${m}m ago`;
40
+ const h = Math.floor(m / 60);
41
+ if (h < 24)
42
+ return `${h}h ago`;
43
+ return `${Math.floor(h / 24)}d ago`;
44
+ }
45
+ function truncateId(id) {
46
+ if (!id)
47
+ return '—';
48
+ return id.length > 8 ? id.slice(0, 8) : id;
49
+ }
50
+ function truncateTitle(title, max = 30) {
51
+ if (!title)
52
+ return '(untitled)';
53
+ return title.length > max ? title.slice(0, max - 1) + '…' : title;
54
+ }
55
+ export function TaskList({ tasks, loading, error }) {
56
+ const sorted = [...tasks].sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
57
+ return (_jsxs(Box, { flexDirection: "column", gap: 0, children: [_jsx(Text, { bold: true, color: "white", children: "Recent Tasks" }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [loading && _jsx(Text, { dimColor: true, children: " Loading tasks..." }), error && _jsxs(Text, { color: "red", children: [" ", error] }), !loading && !error && sorted.length === 0 && (_jsx(Text, { dimColor: true, children: " No tasks yet" })), !loading && !error && sorted.length > 0 && (_jsxs(_Fragment, { children: [_jsxs(Box, { gap: 2, marginBottom: 1, children: [_jsx(Text, { dimColor: true, bold: true, children: ' ID'.padEnd(10) }), _jsx(Text, { dimColor: true, bold: true, children: 'Title'.padEnd(32) }), _jsx(Text, { dimColor: true, bold: true, children: 'Status'.padEnd(10) }), _jsx(Text, { dimColor: true, bold: true, children: 'Created'.padEnd(10) }), _jsx(Text, { dimColor: true, bold: true, children: "Duration" })] }), sorted.map((t) => (_jsxs(Box, { gap: 2, children: [_jsx(Text, { dimColor: true, children: ' ' + truncateId(t.id).padEnd(8) }), _jsx(Text, { children: truncateTitle(t.title).padEnd(31) }), _jsx(Box, { width: 10, children: _jsx(Text, { color: statusColor(t.status), children: statusLabel(t.status).padEnd(8) }) }), _jsx(Text, { dimColor: true, children: formatRelative(t.createdAt).padEnd(10) }), _jsx(Text, { dimColor: true, children: formatDuration(t.durationMs) })] }, t.id)))] }))] })] }));
58
+ }
59
+ //# sourceMappingURL=TaskList.js.map
@@ -0,0 +1,17 @@
1
+ /**
2
+ * ToolCall Component
3
+ *
4
+ * Renders a single tool call with name, args preview, result, and duration.
5
+ * Color-coded: green for success, red for error, yellow for timeout/pending.
6
+ */
7
+ import React from 'react';
8
+ export type ToolCallStatus = 'pending' | 'running' | 'success' | 'error' | 'timeout';
9
+ export interface ToolCallProps {
10
+ name: string;
11
+ args: Record<string, unknown>;
12
+ result?: unknown;
13
+ status: ToolCallStatus;
14
+ durationMs?: number;
15
+ }
16
+ export declare const ToolCall: React.FC<ToolCallProps>;
17
+ //# sourceMappingURL=ToolCall.d.ts.map
@@ -0,0 +1,43 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ function argsPreview(args, maxLen = 60) {
4
+ const entries = Object.entries(args);
5
+ if (entries.length === 0)
6
+ return '{}';
7
+ const [, firstVal] = entries[0];
8
+ const preview = String(firstVal ?? '');
9
+ return preview.length > maxLen ? preview.slice(0, maxLen - 1) + '…' : preview;
10
+ }
11
+ function resultPreview(result, maxLen = 80) {
12
+ if (result === undefined || result === null)
13
+ return '';
14
+ const str = typeof result === 'string' ? result : JSON.stringify(result);
15
+ return str.length > maxLen ? str.slice(0, maxLen - 1) + '…' : str;
16
+ }
17
+ const STATUS_COLOR = {
18
+ pending: 'gray',
19
+ running: 'yellow',
20
+ success: 'green',
21
+ error: 'red',
22
+ timeout: 'yellow',
23
+ };
24
+ const STATUS_ICON = {
25
+ pending: '○',
26
+ running: '◎',
27
+ success: '✓',
28
+ error: '✗',
29
+ timeout: '⏱',
30
+ };
31
+ function formatDuration(ms) {
32
+ if (ms < 1000)
33
+ return `${ms}ms`;
34
+ return `${(ms / 1000).toFixed(1)}s`;
35
+ }
36
+ export const ToolCall = ({ name, args, result, status, durationMs, }) => {
37
+ const color = STATUS_COLOR[status];
38
+ const icon = STATUS_ICON[status];
39
+ const preview = argsPreview(args);
40
+ const res = result !== undefined ? resultPreview(result) : undefined;
41
+ return (_jsxs(Box, { flexDirection: "column", paddingX: 1, marginY: 0, children: [_jsxs(Box, { flexDirection: "row", gap: 1, children: [_jsx(Text, { color: color, children: icon }), _jsx(Text, { color: "yellow", bold: true, children: name }), preview.length > 0 && _jsx(Text, { dimColor: true, children: preview }), durationMs !== undefined && (_jsxs(Text, { dimColor: true, children: ["(", formatDuration(durationMs), ")"] }))] }), res !== undefined && res.length > 0 && (_jsx(Box, { paddingLeft: 3, children: _jsx(Text, { color: status === 'error' ? 'red' : 'gray', children: res }) }))] }));
42
+ };
43
+ //# sourceMappingURL=ToolCall.js.map
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Ink TUI — Barrel exports
3
+ *
4
+ * All public components and types for the Ink-based TUI layer.
5
+ */
6
+ export { App } from './App.js';
7
+ export { ChatApp } from './ChatApp.js';
8
+ export type { ChatAppProps, PendingPermission, PickerOption } from './ChatApp.js';
9
+ export { AgentStatus } from './components/AgentStatus.js';
10
+ export type { AgentStatusProps, AgentStatusState } from './components/AgentStatus.js';
11
+ export { CostBar } from './components/CostBar.js';
12
+ export type { CostBarProps } from './components/CostBar.js';
13
+ export { PermissionPrompt } from './components/PermissionPrompt.js';
14
+ export type { PermissionPromptProps, PermissionDecision, PermissionLevel, } from './components/PermissionPrompt.js';
15
+ export { PlanView } from './components/PlanView.js';
16
+ export type { PlanViewProps, PlanStep, PlanStepStatus } from './components/PlanView.js';
17
+ export { SessionHeader } from './components/SessionHeader.js';
18
+ export type { SessionHeaderProps } from './components/SessionHeader.js';
19
+ export { StreamingMessage } from './components/StreamingMessage.js';
20
+ export type { StreamingMessageProps } from './components/StreamingMessage.js';
21
+ export { ToolCall } from './components/ToolCall.js';
22
+ export type { ToolCallProps, ToolCallStatus } from './components/ToolCall.js';
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Ink TUI — Barrel exports
3
+ *
4
+ * All public components and types for the Ink-based TUI layer.
5
+ */
6
+ export { App } from './App.js';
7
+ export { ChatApp } from './ChatApp.js';
8
+ export { AgentStatus } from './components/AgentStatus.js';
9
+ export { CostBar } from './components/CostBar.js';
10
+ export { PermissionPrompt } from './components/PermissionPrompt.js';
11
+ export { PlanView } from './components/PlanView.js';
12
+ export { SessionHeader } from './components/SessionHeader.js';
13
+ export { StreamingMessage } from './components/StreamingMessage.js';
14
+ export { ToolCall } from './components/ToolCall.js';
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Keybindings Configuration
3
+ *
4
+ * Loads, saves, and matches keyboard shortcuts.
5
+ * User overrides are read from .profclaw/keybindings.json and merged
6
+ * with the default set so unknown keys are always preserved.
7
+ */
8
+ export interface Keybinding {
9
+ key: string;
10
+ action: string;
11
+ description: string;
12
+ }
13
+ export interface KeyModifiers {
14
+ ctrl?: boolean;
15
+ alt?: boolean;
16
+ shift?: boolean;
17
+ }
18
+ export declare const DEFAULT_KEYBINDINGS: Keybinding[];
19
+ /**
20
+ * Load keybindings from the config file, merged with defaults.
21
+ * User-defined entries override defaults by `action`; entries in the config
22
+ * that don't match any default action are appended as custom bindings.
23
+ */
24
+ export declare function loadKeybindings(configPath?: string): Keybinding[];
25
+ /**
26
+ * Persist keybindings to the config file.
27
+ * Creates the .profclaw directory if it doesn't exist.
28
+ */
29
+ export declare function saveKeybindings(bindings: Keybinding[], configPath?: string): void;
30
+ /**
31
+ * Find the first keybinding matching a key + modifier combination.
32
+ * Returns undefined when no match is found.
33
+ */
34
+ export declare function matchKeybinding(key: string, modifiers: KeyModifiers, bindings: Keybinding[]): Keybinding | undefined;
35
+ //# sourceMappingURL=keybindings.d.ts.map
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Keybindings Configuration
3
+ *
4
+ * Loads, saves, and matches keyboard shortcuts.
5
+ * User overrides are read from .profclaw/keybindings.json and merged
6
+ * with the default set so unknown keys are always preserved.
7
+ */
8
+ import fs from 'fs';
9
+ import path from 'path';
10
+ // ── Defaults ──────────────────────────────────────────────────────────────────
11
+ export const DEFAULT_KEYBINDINGS = [
12
+ { key: 'ctrl+l', action: 'clear', description: 'Clear screen' },
13
+ { key: 'ctrl+c', action: 'cancel', description: 'Cancel current operation' },
14
+ { key: 'ctrl+d', action: 'exit', description: 'Quit' },
15
+ { key: 'alt+enter', action: 'multiline', description: 'Enter multiline mode' },
16
+ { key: 'shift+tab', action: 'toggle-thinking', description: 'Toggle thinking display' },
17
+ { key: 'ctrl+p', action: 'session-picker', description: 'Open session picker' },
18
+ ];
19
+ // ── Helpers ───────────────────────────────────────────────────────────────────
20
+ function defaultConfigPath() {
21
+ return path.join(process.cwd(), '.profclaw', 'keybindings.json');
22
+ }
23
+ /**
24
+ * Normalise a key string to lowercase with sorted modifiers so comparisons
25
+ * are consistent regardless of how the caller orders modifier names.
26
+ * e.g. "Ctrl+Shift+L" → "ctrl+shift+l"
27
+ */
28
+ function normaliseKey(key) {
29
+ const parts = key.toLowerCase().split('+').map(p => p.trim());
30
+ const modifiers = parts.filter(p => ['ctrl', 'alt', 'shift'].includes(p)).sort();
31
+ const rest = parts.filter(p => !['ctrl', 'alt', 'shift'].includes(p));
32
+ return [...modifiers, ...rest].join('+');
33
+ }
34
+ /**
35
+ * Build a normalised key string from a bare key name and a modifiers object
36
+ * (as produced by Ink's `useInput` hook).
37
+ */
38
+ function buildKeyString(key, modifiers) {
39
+ const parts = [];
40
+ if (modifiers.ctrl)
41
+ parts.push('ctrl');
42
+ if (modifiers.alt)
43
+ parts.push('alt');
44
+ if (modifiers.shift)
45
+ parts.push('shift');
46
+ parts.push(key.toLowerCase());
47
+ return parts.join('+');
48
+ }
49
+ // ── Public API ────────────────────────────────────────────────────────────────
50
+ /**
51
+ * Load keybindings from the config file, merged with defaults.
52
+ * User-defined entries override defaults by `action`; entries in the config
53
+ * that don't match any default action are appended as custom bindings.
54
+ */
55
+ export function loadKeybindings(configPath) {
56
+ const filePath = configPath ?? defaultConfigPath();
57
+ let userBindings = [];
58
+ if (fs.existsSync(filePath)) {
59
+ try {
60
+ const raw = fs.readFileSync(filePath, 'utf8');
61
+ userBindings = JSON.parse(raw);
62
+ }
63
+ catch {
64
+ // Malformed JSON — fall back to defaults silently
65
+ }
66
+ }
67
+ if (userBindings.length === 0) {
68
+ return [...DEFAULT_KEYBINDINGS];
69
+ }
70
+ // Merge: for each default, check if user overrides by action
71
+ const userByAction = new Map(userBindings.map(b => [b.action, b]));
72
+ const merged = DEFAULT_KEYBINDINGS.map(def => {
73
+ const override = userByAction.get(def.action);
74
+ return override ? { ...def, ...override } : def;
75
+ });
76
+ // Append any custom user bindings whose action isn't in the defaults
77
+ const defaultActions = new Set(DEFAULT_KEYBINDINGS.map(b => b.action));
78
+ for (const binding of userBindings) {
79
+ if (!defaultActions.has(binding.action)) {
80
+ merged.push(binding);
81
+ }
82
+ }
83
+ return merged;
84
+ }
85
+ /**
86
+ * Persist keybindings to the config file.
87
+ * Creates the .profclaw directory if it doesn't exist.
88
+ */
89
+ export function saveKeybindings(bindings, configPath) {
90
+ const filePath = configPath ?? defaultConfigPath();
91
+ const dir = path.dirname(filePath);
92
+ if (!fs.existsSync(dir)) {
93
+ fs.mkdirSync(dir, { recursive: true });
94
+ }
95
+ fs.writeFileSync(filePath, JSON.stringify(bindings, null, 2), 'utf8');
96
+ }
97
+ /**
98
+ * Find the first keybinding matching a key + modifier combination.
99
+ * Returns undefined when no match is found.
100
+ */
101
+ export function matchKeybinding(key, modifiers, bindings) {
102
+ const pressed = normaliseKey(buildKeyString(key, modifiers));
103
+ return bindings.find(b => normaliseKey(b.key) === pressed);
104
+ }
105
+ //# sourceMappingURL=keybindings.js.map
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Markdown Renderer for Ink TUI
3
+ *
4
+ * Converts markdown text to Ink React elements with proper formatting.
5
+ * Ports the syntax highlighting and inline formatting patterns from
6
+ * src/cli/interactive/renderer.ts, adapted to output Ink Text/Box nodes
7
+ * instead of ANSI escape codes.
8
+ *
9
+ * Supports:
10
+ * - **bold**, *italic*, `inline code`, ~~strikethrough~~
11
+ * - ```lang ... ``` code blocks with syntax highlighting
12
+ * - # ## ### headings
13
+ * - > blockquotes
14
+ * - - / * bullet lists and 1. numbered lists
15
+ * - [text](url) links
16
+ * - --- horizontal rules
17
+ */
18
+ import type { ReactElement } from 'react';
19
+ export interface RenderOptions {
20
+ maxWidth?: number;
21
+ syntaxHighlight?: boolean;
22
+ linkStyle?: 'inline' | 'footnote' | 'hidden';
23
+ }
24
+ /**
25
+ * Renders a single line of code with syntax highlighting.
26
+ * Returns an array of React elements (one per token).
27
+ */
28
+ export declare function highlightCode(code: string, language: string): ReactElement;
29
+ /**
30
+ * Convert a markdown string to Ink React elements.
31
+ *
32
+ * Handles:
33
+ * - **bold**, *italic*, `inline code`, ~~strikethrough~~
34
+ * - ```lang ... ``` code blocks with optional syntax highlighting
35
+ * - # / ## / ### headings → bold cyan
36
+ * - > blockquotes → dim italic with left border
37
+ * - - / * bullet and 1. numbered lists with indent
38
+ * - [text](url) links
39
+ * - --- horizontal rules
40
+ */
41
+ export declare function renderMarkdown(text: string, options?: RenderOptions): ReactElement;
42
+ /**
43
+ * Strip all markdown formatting from text, returning plain readable text.
44
+ * Used by /copy and /save operations.
45
+ */
46
+ export declare function stripMarkdown(text: string): string;
47
+ //# sourceMappingURL=markdown-renderer.d.ts.map