zilmate 1.8.0 → 1.8.5

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 (315) hide show
  1. package/.agents/skills/copywriting/SKILL.md +252 -0
  2. package/.agents/skills/copywriting/evals/evals.json +111 -0
  3. package/.agents/skills/copywriting/references/copy-frameworks.md +344 -0
  4. package/.agents/skills/copywriting/references/natural-transitions.md +272 -0
  5. package/.agents/skills/firecrawl-deep-research/SKILL.md +108 -0
  6. package/.agents/skills/shadcn/SKILL.md +267 -0
  7. package/.agents/skills/shadcn/agents/openai.yml +5 -0
  8. package/.agents/skills/shadcn/assets/shadcn-small.png +0 -0
  9. package/.agents/skills/shadcn/assets/shadcn.png +0 -0
  10. package/.agents/skills/shadcn/cli.md +290 -0
  11. package/.agents/skills/shadcn/customization.md +209 -0
  12. package/.agents/skills/shadcn/evals/evals.json +47 -0
  13. package/.agents/skills/shadcn/mcp.md +105 -0
  14. package/.agents/skills/shadcn/registry.md +277 -0
  15. package/.agents/skills/shadcn/rules/base-vs-radix.md +306 -0
  16. package/.agents/skills/shadcn/rules/composition.md +195 -0
  17. package/.agents/skills/shadcn/rules/forms.md +192 -0
  18. package/.agents/skills/shadcn/rules/icons.md +101 -0
  19. package/.agents/skills/shadcn/rules/styling.md +162 -0
  20. package/.agents/skills/tavily-research/SKILL.md +100 -0
  21. package/.agents/skills/upstash/SKILL.md +48 -0
  22. package/.agents/skills/upstash/upstash-box-js/overview.md +243 -0
  23. package/.agents/skills/upstash/upstash-box-py/overview.md +275 -0
  24. package/.agents/skills/upstash/upstash-cli/overview.md +138 -0
  25. package/.agents/skills/upstash/upstash-qstash-js/advanced/callbacks.md +147 -0
  26. package/.agents/skills/upstash/upstash-qstash-js/advanced/deduplication.md +86 -0
  27. package/.agents/skills/upstash/upstash-qstash-js/advanced/dlq.md +164 -0
  28. package/.agents/skills/upstash/upstash-qstash-js/advanced/multi-region/summary.md +388 -0
  29. package/.agents/skills/upstash/upstash-qstash-js/advanced/multi-region/verify-multi-region-setup.ts +388 -0
  30. package/.agents/skills/upstash/upstash-qstash-js/fundamentals/local-development.md +106 -0
  31. package/.agents/skills/upstash/upstash-qstash-js/fundamentals/publishing-messages.md +144 -0
  32. package/.agents/skills/upstash/upstash-qstash-js/fundamentals/queues-and-flow-control.md +148 -0
  33. package/.agents/skills/upstash/upstash-qstash-js/fundamentals/schedules.md +177 -0
  34. package/.agents/skills/upstash/upstash-qstash-js/fundamentals/url-groups.md +127 -0
  35. package/.agents/skills/upstash/upstash-qstash-js/overview.md +81 -0
  36. package/.agents/skills/upstash/upstash-qstash-js/verification/platform-specific/nextjs.md +171 -0
  37. package/.agents/skills/upstash/upstash-qstash-js/verification/receiver.md +213 -0
  38. package/.agents/skills/upstash/upstash-ratelimit-js/algorithms.md +84 -0
  39. package/.agents/skills/upstash/upstash-ratelimit-js/features.md +117 -0
  40. package/.agents/skills/upstash/upstash-ratelimit-js/methods-getting-started.md +77 -0
  41. package/.agents/skills/upstash/upstash-ratelimit-js/overview.md +26 -0
  42. package/.agents/skills/upstash/upstash-ratelimit-js/pricing-cost.md +146 -0
  43. package/.agents/skills/upstash/upstash-ratelimit-js/traffic-protection.md +77 -0
  44. package/.agents/skills/upstash/upstash-redis-js/advanced-features/auto-pipeline.md +49 -0
  45. package/.agents/skills/upstash/upstash-redis-js/advanced-features/pipeline-and-transactions.md +42 -0
  46. package/.agents/skills/upstash/upstash-redis-js/advanced-features/scripting.md +124 -0
  47. package/.agents/skills/upstash/upstash-redis-js/data-structures/hashes.md +71 -0
  48. package/.agents/skills/upstash/upstash-redis-js/data-structures/json.md +133 -0
  49. package/.agents/skills/upstash/upstash-redis-js/data-structures/lists.md +72 -0
  50. package/.agents/skills/upstash/upstash-redis-js/data-structures/sets.md +90 -0
  51. package/.agents/skills/upstash/upstash-redis-js/data-structures/sorted-sets.md +126 -0
  52. package/.agents/skills/upstash/upstash-redis-js/data-structures/streams.md +196 -0
  53. package/.agents/skills/upstash/upstash-redis-js/data-structures/strings.md +73 -0
  54. package/.agents/skills/upstash/upstash-redis-js/migrations/from-ioredis.md +163 -0
  55. package/.agents/skills/upstash/upstash-redis-js/migrations/from-redis-node.md +205 -0
  56. package/.agents/skills/upstash/upstash-redis-js/overview.md +183 -0
  57. package/.agents/skills/upstash/upstash-redis-js/patterns/caching.md +58 -0
  58. package/.agents/skills/upstash/upstash-redis-js/patterns/distributed-locks.md +130 -0
  59. package/.agents/skills/upstash/upstash-redis-js/patterns/leaderboard.md +134 -0
  60. package/.agents/skills/upstash/upstash-redis-js/patterns/rate-limiting.md +187 -0
  61. package/.agents/skills/upstash/upstash-redis-js/patterns/session-management.md +217 -0
  62. package/.agents/skills/upstash/upstash-redis-js/performance/batching-operations.md +76 -0
  63. package/.agents/skills/upstash/upstash-redis-js/performance/data-serialization.md +134 -0
  64. package/.agents/skills/upstash/upstash-redis-js/performance/error-handling.md +118 -0
  65. package/.agents/skills/upstash/upstash-redis-js/performance/pipeline-optimization.md +105 -0
  66. package/.agents/skills/upstash/upstash-redis-js/performance/redis-replicas.md +14 -0
  67. package/.agents/skills/upstash/upstash-redis-js/performance/ttl-expiration.md +32 -0
  68. package/.agents/skills/upstash/upstash-redis-js/search/adapters.md +99 -0
  69. package/.agents/skills/upstash/upstash-redis-js/search/commands/aggregating.md +234 -0
  70. package/.agents/skills/upstash/upstash-redis-js/search/commands/aliases.md +76 -0
  71. package/.agents/skills/upstash/upstash-redis-js/search/commands/index-management.md +124 -0
  72. package/.agents/skills/upstash/upstash-redis-js/search/commands/querying.md +315 -0
  73. package/.agents/skills/upstash/upstash-redis-js/search/overview.md +155 -0
  74. package/.agents/skills/upstash/upstash-redis-start/overview.md +71 -0
  75. package/.agents/skills/upstash/upstash-search-js/overview.md +48 -0
  76. package/.agents/skills/upstash/upstash-search-js/quick-start.md +158 -0
  77. package/.agents/skills/upstash/upstash-search-js/sdk-overview.md +158 -0
  78. package/.agents/skills/upstash/upstash-vector-js/features/filtering-and-metadata.md +82 -0
  79. package/.agents/skills/upstash/upstash-vector-js/features/index-structure.md +193 -0
  80. package/.agents/skills/upstash/upstash-vector-js/features/namespaces.md +32 -0
  81. package/.agents/skills/upstash/upstash-vector-js/overview.md +44 -0
  82. package/.agents/skills/upstash/upstash-vector-js/sdk-methods.md +210 -0
  83. package/.agents/skills/upstash/upstash-workflow-js/agents.md +248 -0
  84. package/.agents/skills/upstash/upstash-workflow-js/basics/client.md +180 -0
  85. package/.agents/skills/upstash/upstash-workflow-js/basics/context.md +230 -0
  86. package/.agents/skills/upstash/upstash-workflow-js/basics/serve.md +70 -0
  87. package/.agents/skills/upstash/upstash-workflow-js/features/flow-control.md +145 -0
  88. package/.agents/skills/upstash/upstash-workflow-js/features/invoke.md +97 -0
  89. package/.agents/skills/upstash/upstash-workflow-js/features/retries-failures-reliability.md +239 -0
  90. package/.agents/skills/upstash/upstash-workflow-js/features/wait-for-event.md +97 -0
  91. package/.agents/skills/upstash/upstash-workflow-js/features/webhooks.md +79 -0
  92. package/.agents/skills/upstash/upstash-workflow-js/how-to/local-dev.md +177 -0
  93. package/.agents/skills/upstash/upstash-workflow-js/how-to/middleware.md +166 -0
  94. package/.agents/skills/upstash/upstash-workflow-js/how-to/migrations.md +201 -0
  95. package/.agents/skills/upstash/upstash-workflow-js/how-to/realtime.md +186 -0
  96. package/.agents/skills/upstash/upstash-workflow-js/overview.md +55 -0
  97. package/.agents/skills/upstash/upstash-workflow-js/rest-api.md +156 -0
  98. package/.agents/skills/upstash/upstash-workflow-js/troubleshooting.md +201 -0
  99. package/.agents/skills/upstash-box-js/SKILL.md +248 -0
  100. package/.agents/skills/upstash-box-py/SKILL.md +280 -0
  101. package/.agents/skills/upstash-cli/SKILL.md +143 -0
  102. package/.agents/skills/upstash-qstash-js/SKILL.md +86 -0
  103. package/.agents/skills/upstash-qstash-js/advanced/callbacks.md +147 -0
  104. package/.agents/skills/upstash-qstash-js/advanced/deduplication.md +86 -0
  105. package/.agents/skills/upstash-qstash-js/advanced/dlq.md +164 -0
  106. package/.agents/skills/upstash-qstash-js/advanced/multi-region/summary.md +388 -0
  107. package/.agents/skills/upstash-qstash-js/advanced/multi-region/verify-multi-region-setup.ts +388 -0
  108. package/.agents/skills/upstash-qstash-js/fundamentals/local-development.md +106 -0
  109. package/.agents/skills/upstash-qstash-js/fundamentals/publishing-messages.md +144 -0
  110. package/.agents/skills/upstash-qstash-js/fundamentals/queues-and-flow-control.md +148 -0
  111. package/.agents/skills/upstash-qstash-js/fundamentals/schedules.md +177 -0
  112. package/.agents/skills/upstash-qstash-js/fundamentals/url-groups.md +127 -0
  113. package/.agents/skills/upstash-qstash-js/verification/platform-specific/nextjs.md +171 -0
  114. package/.agents/skills/upstash-qstash-js/verification/receiver.md +213 -0
  115. package/.agents/skills/upstash-ratelimit-js/SKILL.md +31 -0
  116. package/.agents/skills/upstash-ratelimit-js/algorithms.md +84 -0
  117. package/.agents/skills/upstash-ratelimit-js/features.md +117 -0
  118. package/.agents/skills/upstash-ratelimit-js/methods-getting-started.md +77 -0
  119. package/.agents/skills/upstash-ratelimit-js/pricing-cost.md +146 -0
  120. package/.agents/skills/upstash-ratelimit-js/traffic-protection.md +77 -0
  121. package/.agents/skills/upstash-redis-js/SKILL.md +188 -0
  122. package/.agents/skills/upstash-redis-js/advanced-features/auto-pipeline.md +49 -0
  123. package/.agents/skills/upstash-redis-js/advanced-features/pipeline-and-transactions.md +42 -0
  124. package/.agents/skills/upstash-redis-js/advanced-features/scripting.md +124 -0
  125. package/.agents/skills/upstash-redis-js/data-structures/hashes.md +71 -0
  126. package/.agents/skills/upstash-redis-js/data-structures/json.md +133 -0
  127. package/.agents/skills/upstash-redis-js/data-structures/lists.md +72 -0
  128. package/.agents/skills/upstash-redis-js/data-structures/sets.md +90 -0
  129. package/.agents/skills/upstash-redis-js/data-structures/sorted-sets.md +126 -0
  130. package/.agents/skills/upstash-redis-js/data-structures/streams.md +196 -0
  131. package/.agents/skills/upstash-redis-js/data-structures/strings.md +73 -0
  132. package/.agents/skills/upstash-redis-js/migrations/from-ioredis.md +163 -0
  133. package/.agents/skills/upstash-redis-js/migrations/from-redis-node.md +205 -0
  134. package/.agents/skills/upstash-redis-js/patterns/caching.md +58 -0
  135. package/.agents/skills/upstash-redis-js/patterns/distributed-locks.md +130 -0
  136. package/.agents/skills/upstash-redis-js/patterns/leaderboard.md +134 -0
  137. package/.agents/skills/upstash-redis-js/patterns/rate-limiting.md +187 -0
  138. package/.agents/skills/upstash-redis-js/patterns/session-management.md +217 -0
  139. package/.agents/skills/upstash-redis-js/performance/batching-operations.md +76 -0
  140. package/.agents/skills/upstash-redis-js/performance/data-serialization.md +134 -0
  141. package/.agents/skills/upstash-redis-js/performance/error-handling.md +118 -0
  142. package/.agents/skills/upstash-redis-js/performance/pipeline-optimization.md +105 -0
  143. package/.agents/skills/upstash-redis-js/performance/redis-replicas.md +14 -0
  144. package/.agents/skills/upstash-redis-js/performance/ttl-expiration.md +32 -0
  145. package/.agents/skills/upstash-redis-js/search/adapters.md +99 -0
  146. package/.agents/skills/upstash-redis-js/search/commands/aggregating.md +234 -0
  147. package/.agents/skills/upstash-redis-js/search/commands/aliases.md +76 -0
  148. package/.agents/skills/upstash-redis-js/search/commands/index-management.md +124 -0
  149. package/.agents/skills/upstash-redis-js/search/commands/querying.md +315 -0
  150. package/.agents/skills/upstash-redis-js/search/overview.md +155 -0
  151. package/.agents/skills/upstash-redis-start/SKILL.md +76 -0
  152. package/.agents/skills/upstash-search-js/SKILL.md +53 -0
  153. package/.agents/skills/upstash-search-js/quick-start.md +158 -0
  154. package/.agents/skills/upstash-search-js/sdk-overview.md +158 -0
  155. package/.agents/skills/upstash-vector-js/SKILL.md +49 -0
  156. package/.agents/skills/upstash-vector-js/features/filtering-and-metadata.md +82 -0
  157. package/.agents/skills/upstash-vector-js/features/index-structure.md +193 -0
  158. package/.agents/skills/upstash-vector-js/features/namespaces.md +32 -0
  159. package/.agents/skills/upstash-vector-js/sdk-methods.md +210 -0
  160. package/.agents/skills/upstash-workflow-js/SKILL.md +60 -0
  161. package/.agents/skills/upstash-workflow-js/agents.md +248 -0
  162. package/.agents/skills/upstash-workflow-js/basics/client.md +180 -0
  163. package/.agents/skills/upstash-workflow-js/basics/context.md +230 -0
  164. package/.agents/skills/upstash-workflow-js/basics/serve.md +70 -0
  165. package/.agents/skills/upstash-workflow-js/features/flow-control.md +145 -0
  166. package/.agents/skills/upstash-workflow-js/features/invoke.md +97 -0
  167. package/.agents/skills/upstash-workflow-js/features/retries-failures-reliability.md +239 -0
  168. package/.agents/skills/upstash-workflow-js/features/wait-for-event.md +97 -0
  169. package/.agents/skills/upstash-workflow-js/features/webhooks.md +79 -0
  170. package/.agents/skills/upstash-workflow-js/how-to/local-dev.md +177 -0
  171. package/.agents/skills/upstash-workflow-js/how-to/middleware.md +166 -0
  172. package/.agents/skills/upstash-workflow-js/how-to/migrations.md +201 -0
  173. package/.agents/skills/upstash-workflow-js/how-to/realtime.md +186 -0
  174. package/.agents/skills/upstash-workflow-js/rest-api.md +156 -0
  175. package/.agents/skills/upstash-workflow-js/troubleshooting.md +201 -0
  176. package/dist/agents/coding.agent.d.ts +185 -42
  177. package/dist/agents/coding.agent.d.ts.map +1 -1
  178. package/dist/agents/coding.agent.js +42 -5
  179. package/dist/agents/coding.agent.js.map +1 -1
  180. package/dist/agents/manager.d.ts +216 -41
  181. package/dist/agents/manager.d.ts.map +1 -1
  182. package/dist/agents/manager.js +103 -140
  183. package/dist/agents/manager.js.map +1 -1
  184. package/dist/agents/security.agent.d.ts +3 -3
  185. package/dist/agents/swarm/development/lead.d.ts +3 -0
  186. package/dist/agents/swarm/development/lead.d.ts.map +1 -0
  187. package/dist/agents/swarm/development/lead.js +24 -0
  188. package/dist/agents/swarm/development/lead.js.map +1 -0
  189. package/dist/agents/swarm/main.d.ts +69 -0
  190. package/dist/agents/swarm/main.d.ts.map +1 -1
  191. package/dist/agents/swarm/main.js +65 -11
  192. package/dist/agents/swarm/main.js.map +1 -1
  193. package/dist/agents/swarm/registry.d.ts +2 -1
  194. package/dist/agents/swarm/registry.d.ts.map +1 -1
  195. package/dist/agents/swarm/registry.js +225 -95
  196. package/dist/agents/swarm/registry.js.map +1 -1
  197. package/dist/cli/composer.d.ts.map +1 -1
  198. package/dist/cli/composer.js +85 -30
  199. package/dist/cli/composer.js.map +1 -1
  200. package/dist/cli/confirm.d.ts +2 -2
  201. package/dist/cli/confirm.d.ts.map +1 -1
  202. package/dist/cli/confirm.js +373 -4
  203. package/dist/cli/confirm.js.map +1 -1
  204. package/dist/cli/doctor.d.ts +1 -0
  205. package/dist/cli/doctor.d.ts.map +1 -1
  206. package/dist/cli/doctor.js +47 -2
  207. package/dist/cli/doctor.js.map +1 -1
  208. package/dist/cli/format.d.ts +4 -0
  209. package/dist/cli/format.d.ts.map +1 -1
  210. package/dist/cli/format.js +352 -65
  211. package/dist/cli/format.js.map +1 -1
  212. package/dist/cli/interactive.d.ts.map +1 -1
  213. package/dist/cli/interactive.js +80 -2
  214. package/dist/cli/interactive.js.map +1 -1
  215. package/dist/cli/menu.d.ts.map +1 -1
  216. package/dist/cli/menu.js +93 -83
  217. package/dist/cli/menu.js.map +1 -1
  218. package/dist/cli/render.d.ts.map +1 -1
  219. package/dist/cli/render.js +2 -1
  220. package/dist/cli/render.js.map +1 -1
  221. package/dist/cli/setup.d.ts.map +1 -1
  222. package/dist/cli/setup.js +262 -27
  223. package/dist/cli/setup.js.map +1 -1
  224. package/dist/cli/swarm.d.ts.map +1 -1
  225. package/dist/cli/swarm.js +13 -10
  226. package/dist/cli/swarm.js.map +1 -1
  227. package/dist/cli/theme.d.ts +7 -1
  228. package/dist/cli/theme.d.ts.map +1 -1
  229. package/dist/cli/theme.js +4 -16
  230. package/dist/cli/theme.js.map +1 -1
  231. package/dist/cli/update.d.ts.map +1 -1
  232. package/dist/cli/update.js +27 -4
  233. package/dist/cli/update.js.map +1 -1
  234. package/dist/config/env.d.ts +3 -1
  235. package/dist/config/env.d.ts.map +1 -1
  236. package/dist/config/env.js +22 -2
  237. package/dist/config/env.js.map +1 -1
  238. package/dist/config/models.d.ts +1 -0
  239. package/dist/config/models.d.ts.map +1 -1
  240. package/dist/config/models.js +17 -1
  241. package/dist/config/models.js.map +1 -1
  242. package/dist/documents/pdf.d.ts.map +1 -1
  243. package/dist/documents/pdf.js +282 -22
  244. package/dist/documents/pdf.js.map +1 -1
  245. package/dist/documents/slides.d.ts.map +1 -1
  246. package/dist/documents/slides.js +160 -30
  247. package/dist/documents/slides.js.map +1 -1
  248. package/dist/index.js +73 -18
  249. package/dist/index.js.map +1 -1
  250. package/dist/memory/history.js +1 -1
  251. package/dist/observability/doctor.d.ts.map +1 -1
  252. package/dist/observability/doctor.js +3 -0
  253. package/dist/observability/doctor.js.map +1 -1
  254. package/dist/runtime/progress.d.ts +5 -1
  255. package/dist/runtime/progress.d.ts.map +1 -1
  256. package/dist/runtime/progress.js.map +1 -1
  257. package/dist/runtime/swarm.d.ts +1 -1
  258. package/dist/runtime/swarm.d.ts.map +1 -1
  259. package/dist/runtime/swarm.js +19 -3
  260. package/dist/runtime/swarm.js.map +1 -1
  261. package/dist/runtime/tool-utils.d.ts +2 -0
  262. package/dist/runtime/tool-utils.d.ts.map +1 -1
  263. package/dist/runtime/tool-utils.js +91 -0
  264. package/dist/runtime/tool-utils.js.map +1 -1
  265. package/dist/server.js +1 -1
  266. package/dist/server.js.map +1 -1
  267. package/dist/skills/loader.d.ts.map +1 -1
  268. package/dist/skills/loader.js +16 -0
  269. package/dist/skills/loader.js.map +1 -1
  270. package/dist/test-call.d.ts +2 -0
  271. package/dist/test-call.d.ts.map +1 -0
  272. package/dist/test-call.js +29 -0
  273. package/dist/test-call.js.map +1 -0
  274. package/dist/test-manager-call.d.ts +2 -0
  275. package/dist/test-manager-call.d.ts.map +1 -0
  276. package/dist/test-manager-call.js +138 -0
  277. package/dist/test-manager-call.js.map +1 -0
  278. package/dist/test-manager-filtered.d.ts +2 -0
  279. package/dist/test-manager-filtered.d.ts.map +1 -0
  280. package/dist/test-manager-filtered.js +130 -0
  281. package/dist/test-manager-filtered.js.map +1 -0
  282. package/dist/test-mcp-call.d.ts +2 -0
  283. package/dist/test-mcp-call.d.ts.map +1 -0
  284. package/dist/test-mcp-call.js +103 -0
  285. package/dist/test-mcp-call.js.map +1 -0
  286. package/dist/tools/composio.tool.d.ts +1 -1
  287. package/dist/tools/composio.tool.d.ts.map +1 -1
  288. package/dist/tools/composio.tool.js +7 -16
  289. package/dist/tools/composio.tool.js.map +1 -1
  290. package/dist/tools/daytona-browser.tool.js +1 -1
  291. package/dist/tools/daytona-browser.tool.js.map +1 -1
  292. package/dist/tools/executive.tool.d.ts +40 -0
  293. package/dist/tools/executive.tool.d.ts.map +1 -0
  294. package/dist/tools/executive.tool.js +74 -0
  295. package/dist/tools/executive.tool.js.map +1 -0
  296. package/dist/tools/filesystem.tool.d.ts +183 -40
  297. package/dist/tools/filesystem.tool.d.ts.map +1 -1
  298. package/dist/tools/filesystem.tool.js +564 -111
  299. package/dist/tools/filesystem.tool.js.map +1 -1
  300. package/dist/tools/mcp.tool.d.ts +56 -0
  301. package/dist/tools/mcp.tool.d.ts.map +1 -0
  302. package/dist/tools/mcp.tool.js +285 -0
  303. package/dist/tools/mcp.tool.js.map +1 -0
  304. package/dist/tools/osint.tool.d.ts +4 -4
  305. package/dist/tools/pentest.tool.d.ts +2 -2
  306. package/dist/tools/setup-assistant.tool.d.ts +1 -1
  307. package/dist/tools/setup-assistant.tool.js +1 -1
  308. package/dist/tools/setup-assistant.tool.js.map +1 -1
  309. package/dist/workspace/paths.d.ts +1 -0
  310. package/dist/workspace/paths.d.ts.map +1 -1
  311. package/dist/workspace/paths.js +3 -4
  312. package/dist/workspace/paths.js.map +1 -1
  313. package/package.json +8 -4
  314. package/scripts/postinstall.mjs +19 -4
  315. package/scripts/release-github.mjs +11 -11
@@ -1,7 +1,9 @@
1
1
  import { access, mkdir, readFile, unlink, writeFile } from 'node:fs/promises';
2
2
  import { constants, existsSync } from 'node:fs';
3
+ import { execSync } from 'node:child_process';
3
4
  import path from 'node:path';
4
5
  import { fileURLToPath } from 'node:url';
6
+ import chalk from 'chalk';
5
7
  import { env, hasComposio, hasDeepgram, hasGatewayAuth, hasQStash, hasRedis, hasChatIntegration } from '../config/env.js';
6
8
  import { getModelAvailability, models } from '../config/models.js';
7
9
  import { getComposioStatus } from '../tools/composio.tool.js';
@@ -12,6 +14,8 @@ import { getLocalDataRoot } from '../memory/local-store.js';
12
14
  import { cloudflareTunnelDoctor } from './tunnel.js';
13
15
  import { skillsRegistryDoctor } from '../skills/registry.js';
14
16
  import { checkDependency } from '../observability/doctor.js';
17
+ import { mcpManagementTools } from '../tools/mcp.tool.js';
18
+ import { confirmPrompt } from './prompt.js';
15
19
  const projectRoot = path.resolve(fileURLToPath(new URL('../..', import.meta.url)));
16
20
  async function packageVersion() {
17
21
  try {
@@ -180,13 +184,39 @@ export async function runDoctor(options = {}) {
180
184
  status: 'pass',
181
185
  detail: 'PDF + slide deck generation available (pdfkit, pptxgenjs)',
182
186
  });
183
- const hasPlaywright = await checkDependency('npx playwright --version').catch(() => false);
187
+ let hasPlaywright = await checkDependency('npx playwright --version').catch(() => false);
188
+ if (!hasPlaywright && options.interactive && process.stdin.isTTY) {
189
+ const confirm = await confirmPrompt('Playwright is missing. Install now?');
190
+ if (confirm) {
191
+ try {
192
+ console.log('Installing Playwright browser binaries...');
193
+ execSync('npx playwright install', { stdio: 'inherit' });
194
+ hasPlaywright = await checkDependency('npx playwright --version').catch(() => false);
195
+ }
196
+ catch (e) {
197
+ console.log(chalk.red(`Failed to install Playwright: ${e instanceof Error ? e.message : String(e)}`));
198
+ }
199
+ }
200
+ }
184
201
  checks.push({
185
202
  name: 'Browser Automation',
186
203
  status: hasPlaywright ? 'pass' : 'warn',
187
204
  detail: hasPlaywright ? 'Playwright is available' : 'Run: npx playwright install',
188
205
  });
189
- const hasRembg = await checkDependency('rembg --version').catch(() => false);
206
+ let hasRembg = await checkDependency('rembg --version').catch(() => false);
207
+ if (!hasRembg && options.interactive && process.stdin.isTTY) {
208
+ const confirm = await confirmPrompt('rembg is missing. Install now?');
209
+ if (confirm) {
210
+ try {
211
+ console.log('Installing rembg python package...');
212
+ execSync('pip install rembg', { stdio: 'inherit' });
213
+ hasRembg = await checkDependency('rembg --version').catch(() => false);
214
+ }
215
+ catch (e) {
216
+ console.log(chalk.red(`Failed to install rembg: ${e instanceof Error ? e.message : String(e)}`));
217
+ }
218
+ }
219
+ }
190
220
  checks.push({
191
221
  name: 'Image Intelligence',
192
222
  status: hasRembg ? 'pass' : 'warn',
@@ -229,6 +259,21 @@ export async function runDoctor(options = {}) {
229
259
  checks.push({ name: 'Memory folder', status: 'fail', detail: error instanceof Error ? error.message : String(error) });
230
260
  }
231
261
  if (options.live) {
262
+ try {
263
+ const mcpResult = await mcpManagementTools.listMCPServers.execute({});
264
+ const enabled = mcpResult.servers.filter((s) => s.enabled);
265
+ const active = mcpResult.servers.filter((s) => s.active);
266
+ checks.push({
267
+ name: 'MCP Servers',
268
+ status: enabled.length > 0 ? (active.length === enabled.length ? 'pass' : 'warn') : 'warn',
269
+ detail: enabled.length > 0
270
+ ? `${active.length}/${enabled.length} enabled servers are active`
271
+ : 'No MCP servers are enabled',
272
+ });
273
+ }
274
+ catch (error) {
275
+ checks.push({ name: 'MCP Servers', status: 'fail', detail: String(error) });
276
+ }
232
277
  if (hasGatewayAuth()) {
233
278
  try {
234
279
  const availability = await getModelAvailability();
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
@@ -14,5 +14,9 @@ export declare function printUserPrompt(): string;
14
14
  export declare function printThinking(): void;
15
15
  export declare function printProgress(event: ProgressEvent): void;
16
16
  export declare function createProgressPrinter(): (event: ProgressEvent) => void;
17
+ export declare function stripAnsi(str: string): string;
18
+ export declare function padAnsiLine(line: string, targetWidth: number): string;
19
+ export declare function renderMarkdownToBoxLines(markdown: string, width: number): string[];
20
+ export declare function agentCard(agentName: string, dept: string, content: string, width?: number): string;
17
21
  export declare function printError(message: string): void;
18
22
  //# sourceMappingURL=format.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/cli/format.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAoI5D,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,UAI9C;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,QAE7C;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,QAEvC;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,UAIjD;AAMD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,QAUtE;AAgCD,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,QAyB7D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,SAAO,UAEtD;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,CAAC,EAAE,MAAM,QAQnD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,QAK1D;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAEvD;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,QAK9C;AAED,wBAAgB,eAAe,WAE9B;AAED,wBAAgB,aAAa,SAE5B;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,aAAa,QAEjD;AAID,wBAAgB,qBAAqB,KAC3B,OAAO,aAAa,UAC7B;AA8ED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,QAEzC"}
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/cli/format.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAmI5D,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,UAI9C;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,QAE7C;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,QAEvC;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,UAIjD;AAMD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,QAUtE;AAmDD,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,QAyB7D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,SAAO,UAEtD;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,CAAC,EAAE,MAAM,QAQnD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,QAK1D;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAEvD;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,QAK9C;AAED,wBAAgB,eAAe,WAE9B;AAED,wBAAgB,aAAa,SAE5B;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,aAAa,QAEjD;AAED,wBAAgB,qBAAqB,KAC3B,OAAO,aAAa,UAC7B;AAGD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAMrE;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CA2FlF;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,SAAK,UAkBrF;AA4QD,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,QAEzC"}
@@ -1,7 +1,7 @@
1
1
  import chalk from 'chalk';
2
2
  import logUpdate from 'log-update';
3
3
  import { marked } from 'marked';
4
- import { agentCard, toolBadge, theme as zilTheme } from './theme.js';
4
+ import { getDeptTheme, toolBadge, wrapText, theme as zilTheme, boxLine } from './theme.js';
5
5
  const maxWidth = () => Math.min(process.stdout.columns || 96, 110);
6
6
  const divider = (color = chalk.gray) => color('─'.repeat(Math.min(maxWidth(), 88)));
7
7
  const zilmateBanner = String.raw `
@@ -167,19 +167,33 @@ function colorCell(value) {
167
167
  }
168
168
  function tableWidths(headers, rows) {
169
169
  const available = Math.max(40, maxWidth() - headers.length * 3 - 1);
170
- const minimums = headers.map((header) => Math.min(Math.max(header.length, 6), 12));
170
+ const minimums = headers.map((header) => Math.min(Math.max(header.length, 4), 12));
171
171
  const natural = headers.map((header, index) => Math.max(header.length, ...rows.map((row) => plain(row[index]).length)));
172
- let widths = natural.map((width, index) => Math.max(minimums[index], Math.min(width, index === headers.length - 1 ? 52 : 22)));
173
- let total = widths.reduce((sum, width) => sum + width, 0);
174
- while (total > available) {
175
- const index = widths
176
- .map((width, itemIndex) => ({ width, itemIndex, min: minimums[itemIndex] }))
177
- .filter((item) => item.width > item.min)
178
- .sort((a, b) => b.width - a.width)[0]?.itemIndex;
179
- if (index === undefined)
172
+ const totalNatural = natural.reduce((sum, w) => sum + w, 0);
173
+ if (totalNatural <= available) {
174
+ return natural;
175
+ }
176
+ let widths = [...minimums];
177
+ let total = widths.reduce((sum, w) => sum + w, 0);
178
+ if (total >= available) {
179
+ return widths;
180
+ }
181
+ let remaining = available - total;
182
+ while (remaining > 0) {
183
+ let bestIndex = -1;
184
+ let maxDiff = -1;
185
+ for (let i = 0; i < widths.length; i++) {
186
+ const diff = natural[i] - widths[i];
187
+ if (diff > maxDiff) {
188
+ maxDiff = diff;
189
+ bestIndex = i;
190
+ }
191
+ }
192
+ if (bestIndex === -1 || maxDiff <= 0) {
180
193
  break;
181
- widths[index] = widths[index] - 1;
182
- total -= 1;
194
+ }
195
+ widths[bestIndex] += 1;
196
+ remaining -= 1;
183
197
  }
184
198
  return widths;
185
199
  }
@@ -244,78 +258,351 @@ export function printThinking() {
244
258
  export function printProgress(event) {
245
259
  printProgressWithSticky(event);
246
260
  }
247
- let activeSpinner;
248
261
  export function createProgressPrinter() {
249
262
  return (event) => printProgressWithSticky(event);
250
263
  }
264
+ // ─── Formatting helpers ───────────────────────────────────────────────────────
265
+ export function stripAnsi(str) {
266
+ return str.replace(/\x1b\[[0-9;]*m/g, '');
267
+ }
268
+ export function padAnsiLine(line, targetWidth) {
269
+ const visibleLen = stripAnsi(line).length;
270
+ if (visibleLen >= targetWidth) {
271
+ return line;
272
+ }
273
+ return line + ' '.repeat(targetWidth - visibleLen);
274
+ }
275
+ export function renderMarkdownToBoxLines(markdown, width) {
276
+ const cleaned = protectMachineTokens(markdown.trim());
277
+ if (!cleaned)
278
+ return [];
279
+ const tokens = marked.lexer(cleaned);
280
+ const lines = [];
281
+ for (let i = 0; i < tokens.length; i++) {
282
+ const token = tokens[i];
283
+ if (!token)
284
+ continue;
285
+ // Handle space tokens
286
+ if (token.type === 'space') {
287
+ if (lines.length > 0 && lines[lines.length - 1] !== '') {
288
+ lines.push('');
289
+ }
290
+ continue;
291
+ }
292
+ switch (token.type) {
293
+ case 'heading': {
294
+ const headingToken = token;
295
+ const wrapped = wrapText(headingToken.text, width);
296
+ wrapped.forEach(line => {
297
+ lines.push(chalk.bold.cyan(renderInline(line)));
298
+ });
299
+ break;
300
+ }
301
+ case 'paragraph': {
302
+ const paragraphToken = token;
303
+ const wrapped = wrapText(paragraphToken.text, width);
304
+ wrapped.forEach(line => {
305
+ lines.push(zilTheme.text(renderInline(line)));
306
+ });
307
+ break;
308
+ }
309
+ case 'list': {
310
+ const listToken = token;
311
+ listToken.items.forEach((item, idx) => {
312
+ const bullet = listToken.ordered ? `${idx + 1}. ` : '• ';
313
+ const bulletLen = bullet.length;
314
+ const wrapped = wrapText(item.text, width - bulletLen);
315
+ if (wrapped.length > 0) {
316
+ lines.push(chalk.cyan(bullet) + zilTheme.text(renderInline(wrapped[0])));
317
+ for (let j = 1; j < wrapped.length; j++) {
318
+ lines.push(' '.repeat(bulletLen) + zilTheme.text(renderInline(wrapped[j])));
319
+ }
320
+ }
321
+ });
322
+ break;
323
+ }
324
+ case 'code': {
325
+ const codeToken = token;
326
+ const codeLines = codeToken.text.split('\n');
327
+ codeLines.forEach(line => {
328
+ const wrapped = wrapText(line, width - 2);
329
+ wrapped.forEach((wl, idx) => {
330
+ const prefix = idx === 0 ? '▕ ' : ' ';
331
+ lines.push(chalk.gray(prefix) + chalk.yellow(wl));
332
+ });
333
+ });
334
+ break;
335
+ }
336
+ case 'blockquote': {
337
+ const blockquoteToken = token;
338
+ const wrapped = wrapText(blockquoteToken.text, width - 2);
339
+ wrapped.forEach(line => {
340
+ lines.push(chalk.gray('│ ') + chalk.italic(renderInline(line)));
341
+ });
342
+ break;
343
+ }
344
+ case 'hr': {
345
+ lines.push(chalk.gray('─'.repeat(width)));
346
+ break;
347
+ }
348
+ default: {
349
+ if ('raw' in token) {
350
+ const wrapped = wrapText(String(token.raw).trim(), width);
351
+ wrapped.forEach(line => {
352
+ lines.push(zilTheme.text(renderInline(line)));
353
+ });
354
+ }
355
+ }
356
+ }
357
+ // Add an empty line between blocks, unless it's the last block or next is space
358
+ if (i < tokens.length - 1 && tokens[i + 1]?.type !== 'space') {
359
+ lines.push('');
360
+ }
361
+ }
362
+ return lines;
363
+ }
364
+ export function agentCard(agentName, dept, content, width = 80) {
365
+ const { color, icon } = getDeptTheme(dept);
366
+ const innerWidth = width - 4;
367
+ // Render markdown to box lines of width innerWidth
368
+ const lines = renderMarkdownToBoxLines(content, innerWidth);
369
+ const header = color(`╭─ ${icon} ${agentName.toUpperCase()} ──`);
370
+ const visibleHeaderLen = stripAnsi(header).length;
371
+ const top = header + color('─'.repeat(Math.max(0, width - visibleHeaderLen - 1)) + '╮');
372
+ const result = [top];
373
+ for (const line of lines) {
374
+ const padded = padAnsiLine(line, innerWidth);
375
+ result.push(color('│ ') + padded + color(' │'));
376
+ }
377
+ result.push(color(`╰${'─'.repeat(width - 2)}╯`));
378
+ return result.join('\n');
379
+ }
380
+ const displayState = {
381
+ activeSpecialist: null,
382
+ activeDept: null,
383
+ stepCount: 0,
384
+ toolStartTimes: new Map(),
385
+ sessionStart: Date.now(),
386
+ thinkStart: 0,
387
+ };
388
+ // ─── Helpers ──────────────────────────────────────────────────────────────────
389
+ function fmtMs(ms) {
390
+ if (ms < 1000)
391
+ return chalk.gray(`${ms}ms`);
392
+ return chalk.gray(`${(ms / 1000).toFixed(1)}s`);
393
+ }
394
+ function fmtElapsed(startMs) {
395
+ return fmtMs(Date.now() - startMs);
396
+ }
397
+ /** Right-align a string to fill the terminal width, padding with spaces */
398
+ function rightAlign(left, right, width) {
399
+ // ANSI escape codes add invisible chars — approximate visible length by stripping them
400
+ const visibleLeft = left.replace(/\x1b\[[0-9;]*m/g, '');
401
+ const visibleRight = right.replace(/\x1b\[[0-9;]*m/g, '');
402
+ const gap = Math.max(1, width - visibleLeft.length - visibleRight.length);
403
+ return left + ' '.repeat(gap) + right;
404
+ }
405
+ function truncate(str, max) {
406
+ if (!str)
407
+ return '';
408
+ const s = str.replace(/\n/g, ' ').trim();
409
+ return s.length > max ? `${s.slice(0, max - 1)}…` : s;
410
+ }
411
+ /** Indent prefix: '' for CEO-level, ' ' for COO, ' ' for specialist tools */
412
+ function indent() {
413
+ return displayState.activeSpecialist ? ' ' : ' ';
414
+ }
415
+ // ─── Specialist panel renderers ───────────────────────────────────────────────
416
+ function openSpecialistPanel(name, dept, detail) {
417
+ const w = Math.min(maxWidth(), 90);
418
+ const { color, icon } = getDeptTheme(dept);
419
+ const deptLabel = `${icon} ${dept.toUpperCase()} · ${name}`;
420
+ const header = color(`╭─ ${deptLabel} ──`);
421
+ const visibleHeaderLen = stripAnsi(header).length;
422
+ const top = header + color('─'.repeat(Math.max(0, w - visibleHeaderLen - 1)) + '╮');
423
+ console.log('');
424
+ // Panel header: ╭─ 🎯 STRATEGY · Market Analyst ──────────────────────────╮
425
+ console.log(top);
426
+ if (detail) {
427
+ const inner = w - 4;
428
+ const lines = wrapText(truncate(detail, inner * 2), inner);
429
+ for (const line of lines.slice(0, 2)) {
430
+ const padded = padAnsiLine(chalk.hex('#94A3B8')(line), inner);
431
+ console.log(color('│ ') + padded + color(' │'));
432
+ }
433
+ console.log(color(`├${'─'.repeat(w - 2)}┤`));
434
+ }
435
+ }
436
+ function closeSpecialistPanel(name, dept, durationMs) {
437
+ const w = Math.min(maxWidth(), 90);
438
+ const { color } = getDeptTheme(dept);
439
+ const timing = durationMs !== undefined ? ` ${fmtMs(durationMs)}` : '';
440
+ const doneLabel = chalk.green('✔ done') + timing;
441
+ const visibleLen = stripAnsi(doneLabel).length;
442
+ const pad = Math.max(0, w - visibleLen - 4);
443
+ console.log(color(`╰${'─'.repeat(pad)}╯`) + ' ' + doneLabel);
444
+ console.log('');
445
+ }
446
+ // ─── Thinking ticker state ────────────────────────────────────────────────────
447
+ let thinkingTimer = null;
448
+ let thinkingFrame = 0;
449
+ let thinkingLabel = 'Thinking';
450
+ function triggerThinkingTick() {
451
+ const w = Math.min(maxWidth(), 90);
452
+ const frames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
453
+ const elapsed = fmtElapsed(displayState.thinkStart || Date.now());
454
+ const hint = chalk.gray('(Ctrl+C to interrupt)');
455
+ const spinner = frames[thinkingFrame % frames.length];
456
+ thinkingFrame++;
457
+ const leftText = `${zilTheme.thinking(spinner)} ${zilTheme.thinking(thinkingLabel)}`;
458
+ const rightText = `${hint} ${elapsed}`;
459
+ const innerW = w - 4;
460
+ const aligned = rightAlign(leftText, rightText, innerW);
461
+ const top = boxLine('top', w, zilTheme.thinking);
462
+ const mid = zilTheme.thinking('│ ') + aligned + zilTheme.thinking(' │');
463
+ const bot = boxLine('bot', w, zilTheme.thinking);
464
+ logUpdate(`${top}\n${mid}\n${bot}`);
465
+ }
466
+ function startThinkingTicker(label) {
467
+ thinkingLabel = label;
468
+ if (thinkingTimer)
469
+ return;
470
+ thinkingFrame = 0;
471
+ thinkingTimer = setInterval(triggerThinkingTick, 80);
472
+ triggerThinkingTick();
473
+ }
474
+ function stopThinkingTicker() {
475
+ if (thinkingTimer) {
476
+ clearInterval(thinkingTimer);
477
+ thinkingTimer = null;
478
+ }
479
+ }
480
+ // ─── Main handler ─────────────────────────────────────────────────────────────
251
481
  function printProgressWithSticky(event) {
482
+ const w = Math.min(maxWidth(), 90);
483
+ // ── Thinking: live animated line via logUpdate ───────────────────────────
252
484
  if (event.type === 'thinking') {
253
- const detail = event.detail ? ` ${chalk.gray(`(${event.detail})`)}` : '';
254
- logUpdate(`${zilTheme.thinking('✶')} ${zilTheme.thinking(event.label || 'Thinking')}${detail} ${chalk.gray('(Ctrl+C to interrupt)')}`);
485
+ displayState.thinkStart = displayState.thinkStart || Date.now();
486
+ startThinkingTicker(event.label || 'Thinking');
255
487
  return;
256
488
  }
489
+ // ── Done: clear spinner, show total time ────────────────────────────────
257
490
  if (event.type === 'done') {
491
+ stopThinkingTicker();
258
492
  logUpdate.clear();
259
493
  logUpdate.done();
260
- console.log(chalk.green(`✓ ${event.label}`));
494
+ const total = fmtMs(Date.now() - displayState.sessionStart);
495
+ console.log(chalk.green(`✔ ${event.label}`) + chalk.gray(` (total ${total})`));
496
+ // Reset session state
497
+ displayState.activeSpecialist = null;
498
+ displayState.activeDept = null;
499
+ displayState.stepCount = 0;
500
+ displayState.sessionStart = Date.now();
501
+ displayState.thinkStart = 0;
261
502
  return;
262
503
  }
504
+ // Clear the live spinner line before printing a permanent line
263
505
  logUpdate.clear();
264
- if (event.type === 'tool:start') {
265
- console.log(toolBadge(event.label, 'start') + (event.detail ? chalk.gray(` — ${event.detail.slice(0, 80)}`) : ''));
266
- return;
506
+ // ── Specialist start: open department panel ──────────────────────────────
507
+ if (event.type === 'specialist:start') {
508
+ displayState.activeSpecialist = event.agent || event.label;
509
+ displayState.activeDept = event.department || 'General';
510
+ openSpecialistPanel(event.label, displayState.activeDept, event.detail);
267
511
  }
268
- if (event.type === 'tool:end') {
269
- console.log(chalk.gray(' └ ') + toolBadge(event.label, 'end') + (event.detail ? chalk.gray(` · ${event.detail.slice(0, 100)}`) : ''));
270
- return;
512
+ // ── Specialist end: close department panel ───────────────────────────────
513
+ else if (event.type === 'specialist:end') {
514
+ const dept = event.department || displayState.activeDept || 'General';
515
+ closeSpecialistPanel(event.label, dept, event.durationMs);
516
+ displayState.activeSpecialist = null;
517
+ displayState.activeDept = null;
271
518
  }
272
- if (event.type === 'tool:error') {
273
- console.log(toolBadge(event.label, 'error') + chalk.red(` — ${event.detail || 'Failed'}`));
274
- return;
519
+ // ── Tool start ───────────────────────────────────────────────────────────
520
+ else if (event.type === 'tool:start') {
521
+ displayState.toolStartTimes.set(event.label, Date.now());
522
+ const pfx = indent();
523
+ const pipe = displayState.activeSpecialist ? chalk.hex('#475569')('│ ') : '';
524
+ const branch = chalk.hex('#475569')('├─ ');
525
+ const badge = toolBadge(event.label, 'start');
526
+ const detail = event.detail ? chalk.gray(` — ${truncate(event.detail, 72)}`) : '';
527
+ console.log(`${pfx}${pipe}${branch}${badge}${detail}`);
275
528
  }
276
- if (event.type === 'subagent:start') {
529
+ // ── Tool end ─────────────────────────────────────────────────────────────
530
+ else if (event.type === 'tool:end') {
531
+ const startTime = displayState.toolStartTimes.get(event.label);
532
+ displayState.toolStartTimes.delete(event.label);
533
+ const timing = startTime ? ` ${fmtMs(Date.now() - startTime)}` : '';
534
+ const pfx = indent();
535
+ const pipe = displayState.activeSpecialist ? chalk.hex('#475569')('│ ') : '';
536
+ const elbow = chalk.hex('#475569')('│ └ ');
537
+ const badge = toolBadge(event.label, 'end');
538
+ const detail = event.detail ? chalk.gray(` · ${truncate(event.detail, 60)}`) : '';
539
+ console.log(`${pfx}${pipe}${elbow}${badge}${detail}${timing}`);
540
+ }
541
+ // ── Tool error ───────────────────────────────────────────────────────────
542
+ else if (event.type === 'tool:error') {
543
+ displayState.toolStartTimes.delete(event.label);
544
+ const pfx = indent();
545
+ const pipe = displayState.activeSpecialist ? chalk.hex('#475569')('│ ') : '';
546
+ const elbow = chalk.hex('#475569')('│ └ ');
547
+ const badge = toolBadge(event.label, 'error');
548
+ const err = chalk.red(` — ${truncate(event.detail || 'Failed', 80)}`);
549
+ console.log(`${pfx}${pipe}${elbow}${badge}${err}`);
550
+ }
551
+ // ── Subagent start (non-swarm agents like coding, research) ─────────────
552
+ else if (event.type === 'subagent:start') {
277
553
  const isDept = event.agent?.startsWith('dept:');
278
- const deptName = (isDept ? event.agent.split(':')[1] : event.agent) || 'General';
279
- console.log('\n' + agentCard(deptName, deptName, event.label + (event.detail ? `\n\n${event.detail}` : ''), maxWidth()));
280
- return;
554
+ const deptName = (isDept ? event.agent.split(':')[1] : event.department) || 'General';
555
+ const agentDisplay = event.label;
556
+ console.log('');
557
+ console.log(agentCard(agentDisplay, deptName, agentDisplay + (event.detail ? `\n\n${event.detail}` : ''), w));
558
+ }
559
+ // ── Subagent step (e.g. coding agent tool calls) ─────────────────────────
560
+ else if (event.type === 'subagent:step') {
561
+ const agentTag = event.agent ? chalk.hex('#A78BFA')(`[${event.agent}] `) : '';
562
+ console.log(` ${agentTag}${chalk.hex('#6366F1')('│')} ${chalk.hex('#C4B5FD')(event.label)}`);
563
+ }
564
+ // ── Subagent end ─────────────────────────────────────────────────────────
565
+ else if (event.type === 'subagent:end') {
566
+ const agentTag = event.agent ? chalk.hex('#A78BFA')(`[${event.agent}] `) : '';
567
+ console.log(` ${agentTag}${chalk.green('◆')} ${chalk.green(event.label)}`);
568
+ }
569
+ // ── Step (Manager/COO summary of tool calls used in a loop step) ─────────
570
+ else if (event.type === 'step') {
571
+ displayState.stepCount += 1;
572
+ const counter = chalk.hex('#64748B')(`[${displayState.stepCount}]`);
573
+ const arrow = chalk.hex('#8B5CF6')('→');
574
+ const label = chalk.hex('#C4B5FD')(event.label);
575
+ const detail = event.detail ? chalk.gray(` · ${truncate(event.detail, 64)}`) : '';
576
+ console.log(`${arrow} ${counter} ${label}${detail}`);
577
+ }
578
+ else {
579
+ // ── Search / fetch events ────────────────────────────────────────────────
580
+ const simpleIcons = {
581
+ 'search:start': '⌕',
582
+ 'search:end': '✓',
583
+ 'fetch:start': '↓',
584
+ 'fetch:end': '✓',
585
+ };
586
+ const simpleColors = {
587
+ 'search:start': chalk.blue,
588
+ 'search:end': chalk.green,
589
+ 'fetch:start': chalk.blue,
590
+ 'fetch:end': chalk.green,
591
+ };
592
+ const icon = simpleIcons[event.type];
593
+ const color = simpleColors[event.type];
594
+ if (icon && color) {
595
+ const detail = event.detail ? chalk.gray(` — ${truncate(event.detail, 80)}`) : '';
596
+ console.log(` ${color(`${icon} ${event.label}`)}${detail}`);
597
+ }
598
+ }
599
+ // If the thinking ticker is active, trigger an immediate tick to draw the status card
600
+ // at the new bottom of the terminal.
601
+ if (thinkingTimer) {
602
+ triggerThinkingTick();
281
603
  }
282
- const icons = {
283
- thinking: '…',
284
- step: '→',
285
- 'tool:start': '▶',
286
- 'tool:end': '✓',
287
- 'tool:error': '✖',
288
- 'search:start': '⌕',
289
- 'search:end': '✓',
290
- 'fetch:start': '↓',
291
- 'fetch:end': '✓',
292
- done: '✓',
293
- 'subagent:start': '◆',
294
- 'subagent:step': '│',
295
- 'subagent:end': '◆',
296
- };
297
- const colors = {
298
- thinking: chalk.gray,
299
- step: chalk.magenta,
300
- 'tool:start': chalk.cyan,
301
- 'tool:end': chalk.green,
302
- 'tool:error': chalk.red,
303
- 'search:start': chalk.blue,
304
- 'search:end': chalk.green,
305
- 'fetch:start': chalk.blue,
306
- 'fetch:end': chalk.green,
307
- done: chalk.green,
308
- 'subagent:start': chalk.bold.magenta,
309
- 'subagent:step': chalk.magenta,
310
- 'subagent:end': chalk.bold.green,
311
- };
312
- const icon = icons[event.type];
313
- const color = colors[event.type];
314
- const prefix = event.agent && event.type.startsWith('subagent') ? chalk.magenta(`[${event.agent}] `) : '';
315
- const detail = event.detail ? chalk.gray(` — ${event.detail.length > 120 ? `${event.detail.slice(0, 117)}...` : event.detail}`) : '';
316
- console.log(`${prefix}${color(`${icon} ${event.label}`)}${detail}`);
317
604
  }
318
605
  export function printError(message) {
319
- console.error(chalk.red(message));
606
+ console.error(chalk.red(`✖ ${message}`));
320
607
  }
321
608
  //# sourceMappingURL=format.js.map