madarx 2.17.0 → 2.18.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 (511) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-build-manifest.json +536 -536
  3. package/.next/standalone/.next/app-path-routes-manifest.json +68 -68
  4. package/.next/standalone/.next/build-manifest.json +5 -5
  5. package/.next/standalone/.next/prerender-manifest.json +15 -15
  6. package/.next/standalone/.next/react-loadable-manifest.json +1 -1
  7. package/.next/standalone/.next/server/app/_not-found/page.js +1 -1
  8. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  9. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  10. package/.next/standalone/.next/server/app/_not-found.html +2 -1
  11. package/.next/standalone/.next/server/app/_not-found.rsc +4 -4
  12. package/.next/standalone/.next/server/app/activity/page.js +1 -1
  13. package/.next/standalone/.next/server/app/activity/page.js.nft.json +1 -1
  14. package/.next/standalone/.next/server/app/activity/page_client-reference-manifest.js +1 -1
  15. package/.next/standalone/.next/server/app/admin/page.js +4 -4
  16. package/.next/standalone/.next/server/app/admin/page.js.nft.json +1 -1
  17. package/.next/standalone/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  18. package/.next/standalone/.next/server/app/agents/[id]/page.js +4 -4
  19. package/.next/standalone/.next/server/app/agents/[id]/page.js.nft.json +1 -1
  20. package/.next/standalone/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
  21. package/.next/standalone/.next/server/app/agents/page.js +1 -1
  22. package/.next/standalone/.next/server/app/agents/page.js.nft.json +1 -1
  23. package/.next/standalone/.next/server/app/agents/page_client-reference-manifest.js +1 -1
  24. package/.next/standalone/.next/server/app/api/activity/route_client-reference-manifest.js +1 -1
  25. package/.next/standalone/.next/server/app/api/admin/audit-export/route_client-reference-manifest.js +1 -1
  26. package/.next/standalone/.next/server/app/api/admin/share-links/route_client-reference-manifest.js +1 -1
  27. package/.next/standalone/.next/server/app/api/agent-memory/route_client-reference-manifest.js +1 -1
  28. package/.next/standalone/.next/server/app/api/agent-runs/[id]/cancel/route_client-reference-manifest.js +1 -1
  29. package/.next/standalone/.next/server/app/api/agent-runs/[id]/events/route_client-reference-manifest.js +1 -1
  30. package/.next/standalone/.next/server/app/api/agent-runs/[id]/log/route_client-reference-manifest.js +1 -1
  31. package/.next/standalone/.next/server/app/api/agent-runs/[id]/route_client-reference-manifest.js +1 -1
  32. package/.next/standalone/.next/server/app/api/agent-runs/route_client-reference-manifest.js +1 -1
  33. package/.next/standalone/.next/server/app/api/agents/[id]/active-run/route_client-reference-manifest.js +1 -1
  34. package/.next/standalone/.next/server/app/api/agents/[id]/chain/route_client-reference-manifest.js +1 -1
  35. package/.next/standalone/.next/server/app/api/agents/[id]/memory/route_client-reference-manifest.js +1 -1
  36. package/.next/standalone/.next/server/app/api/agents/[id]/reports/route_client-reference-manifest.js +1 -1
  37. package/.next/standalone/.next/server/app/api/agents/[id]/run/route_client-reference-manifest.js +1 -1
  38. package/.next/standalone/.next/server/app/api/agents/[id]/skills/route_client-reference-manifest.js +1 -1
  39. package/.next/standalone/.next/server/app/api/agents/create/route_client-reference-manifest.js +1 -1
  40. package/.next/standalone/.next/server/app/api/agents/ops/route_client-reference-manifest.js +1 -1
  41. package/.next/standalone/.next/server/app/api/approvals/[id]/route_client-reference-manifest.js +1 -1
  42. package/.next/standalone/.next/server/app/api/approvals/route_client-reference-manifest.js +1 -1
  43. package/.next/standalone/.next/server/app/api/artifacts/[id]/acl/route_client-reference-manifest.js +1 -1
  44. package/.next/standalone/.next/server/app/api/artifacts/[id]/protect/route_client-reference-manifest.js +1 -1
  45. package/.next/standalone/.next/server/app/api/artifacts/[id]/raw/route_client-reference-manifest.js +1 -1
  46. package/.next/standalone/.next/server/app/api/artifacts/[id]/route_client-reference-manifest.js +1 -1
  47. package/.next/standalone/.next/server/app/api/artifacts/[id]/share-link/[linkId]/route_client-reference-manifest.js +1 -1
  48. package/.next/standalone/.next/server/app/api/artifacts/[id]/share-link/route_client-reference-manifest.js +1 -1
  49. package/.next/standalone/.next/server/app/api/artifacts/upload/route_client-reference-manifest.js +1 -1
  50. package/.next/standalone/.next/server/app/api/audit/list/route_client-reference-manifest.js +1 -1
  51. package/.next/standalone/.next/server/app/api/audit/search/route_client-reference-manifest.js +1 -1
  52. package/.next/standalone/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
  53. package/.next/standalone/.next/server/app/api/auth/config/route_client-reference-manifest.js +1 -1
  54. package/.next/standalone/.next/server/app/api/auth/join-bootstrap/route_client-reference-manifest.js +1 -1
  55. package/.next/standalone/.next/server/app/api/auth/session/route_client-reference-manifest.js +1 -1
  56. package/.next/standalone/.next/server/app/api/brand/route_client-reference-manifest.js +1 -1
  57. package/.next/standalone/.next/server/app/api/brand/share/route_client-reference-manifest.js +1 -1
  58. package/.next/standalone/.next/server/app/api/chat/sessions/[id]/route_client-reference-manifest.js +1 -1
  59. package/.next/standalone/.next/server/app/api/chat/sessions/route_client-reference-manifest.js +1 -1
  60. package/.next/standalone/.next/server/app/api/config/env/route.js +1 -1
  61. package/.next/standalone/.next/server/app/api/config/env/route_client-reference-manifest.js +1 -1
  62. package/.next/standalone/.next/server/app/api/config/route_client-reference-manifest.js +1 -1
  63. package/.next/standalone/.next/server/app/api/connections/[service]/route_client-reference-manifest.js +1 -1
  64. package/.next/standalone/.next/server/app/api/connections/[service]/verify/route.js +1 -1
  65. package/.next/standalone/.next/server/app/api/connections/[service]/verify/route_client-reference-manifest.js +1 -1
  66. package/.next/standalone/.next/server/app/api/connections/route_client-reference-manifest.js +1 -1
  67. package/.next/standalone/.next/server/app/api/cron/tick/route_client-reference-manifest.js +1 -1
  68. package/.next/standalone/.next/server/app/api/dashboard/spaces/[id]/move/route_client-reference-manifest.js +1 -1
  69. package/.next/standalone/.next/server/app/api/dashboard/spaces/[id]/route_client-reference-manifest.js +1 -1
  70. package/.next/standalone/.next/server/app/api/dashboard/spaces/[id]/share-link/[linkId]/route_client-reference-manifest.js +1 -1
  71. package/.next/standalone/.next/server/app/api/dashboard/spaces/[id]/share-link/route_client-reference-manifest.js +1 -1
  72. package/.next/standalone/.next/server/app/api/dashboard/spaces/import/route_client-reference-manifest.js +1 -1
  73. package/.next/standalone/.next/server/app/api/dashboard/spaces/route_client-reference-manifest.js +1 -1
  74. package/.next/standalone/.next/server/app/api/disk/files/[id]/blob/route_client-reference-manifest.js +1 -1
  75. package/.next/standalone/.next/server/app/api/disk/files/[id]/route_client-reference-manifest.js +1 -1
  76. package/.next/standalone/.next/server/app/api/disk/files/[id]/transcribe/route_client-reference-manifest.js +1 -1
  77. package/.next/standalone/.next/server/app/api/disk/files/route_client-reference-manifest.js +1 -1
  78. package/.next/standalone/.next/server/app/api/disk/folders/route_client-reference-manifest.js +1 -1
  79. package/.next/standalone/.next/server/app/api/events/since/[cursor]/route_client-reference-manifest.js +1 -1
  80. package/.next/standalone/.next/server/app/api/events/stream/route_client-reference-manifest.js +1 -1
  81. package/.next/standalone/.next/server/app/api/fs/create-folder/route_client-reference-manifest.js +1 -1
  82. package/.next/standalone/.next/server/app/api/fs/pick-folder/route.js +2 -2
  83. package/.next/standalone/.next/server/app/api/fs/pick-folder/route_client-reference-manifest.js +1 -1
  84. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/blueprint/route_client-reference-manifest.js +1 -1
  85. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/diagnostic/route_client-reference-manifest.js +1 -1
  86. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/governance/route_client-reference-manifest.js +1 -1
  87. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/interview/route_client-reference-manifest.js +1 -1
  88. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/pilot/route_client-reference-manifest.js +1 -1
  89. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/quarterly/route_client-reference-manifest.js +1 -1
  90. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/route_client-reference-manifest.js +1 -1
  91. package/.next/standalone/.next/server/app/api/hail/engagements/[id]/setup-package/route_client-reference-manifest.js +1 -1
  92. package/.next/standalone/.next/server/app/api/hail/engagements/route_client-reference-manifest.js +1 -1
  93. package/.next/standalone/.next/server/app/api/hail/interviews/[id]/responses/route_client-reference-manifest.js +1 -1
  94. package/.next/standalone/.next/server/app/api/hail/interviews/[id]/route_client-reference-manifest.js +1 -1
  95. package/.next/standalone/.next/server/app/api/hail/setup-packages/[id]/apply/route_client-reference-manifest.js +1 -1
  96. package/.next/standalone/.next/server/app/api/hail/setup-packages/validate/route_client-reference-manifest.js +1 -1
  97. package/.next/standalone/.next/server/app/api/heartbeat/tick/route_client-reference-manifest.js +1 -1
  98. package/.next/standalone/.next/server/app/api/heartbeat/worker/route_client-reference-manifest.js +1 -1
  99. package/.next/standalone/.next/server/app/api/help/route_client-reference-manifest.js +1 -1
  100. package/.next/standalone/.next/server/app/api/hermes/jobs/[id]/events/route_client-reference-manifest.js +1 -1
  101. package/.next/standalone/.next/server/app/api/hermes/jobs/[id]/route_client-reference-manifest.js +1 -1
  102. package/.next/standalone/.next/server/app/api/hermes/jobs/route_client-reference-manifest.js +1 -1
  103. package/.next/standalone/.next/server/app/api/integrations/google/callback/route_client-reference-manifest.js +1 -1
  104. package/.next/standalone/.next/server/app/api/integrations/google/oauth/route_client-reference-manifest.js +1 -1
  105. package/.next/standalone/.next/server/app/api/marketplace/[id]/route_client-reference-manifest.js +1 -1
  106. package/.next/standalone/.next/server/app/api/marketplace/open-design/route_client-reference-manifest.js +1 -1
  107. package/.next/standalone/.next/server/app/api/marketplace/route_client-reference-manifest.js +1 -1
  108. package/.next/standalone/.next/server/app/api/mines/import-roots/route_client-reference-manifest.js +1 -1
  109. package/.next/standalone/.next/server/app/api/mines/portfolio/route_client-reference-manifest.js +1 -1
  110. package/.next/standalone/.next/server/app/api/mines/projects/[id]/chunks/route_client-reference-manifest.js +1 -1
  111. package/.next/standalone/.next/server/app/api/mines/projects/[id]/diligence/route_client-reference-manifest.js +1 -1
  112. package/.next/standalone/.next/server/app/api/mines/projects/[id]/import/route_client-reference-manifest.js +1 -1
  113. package/.next/standalone/.next/server/app/api/mines/projects/[id]/publish/route_client-reference-manifest.js +1 -1
  114. package/.next/standalone/.next/server/app/api/mines/projects/route_client-reference-manifest.js +1 -1
  115. package/.next/standalone/.next/server/app/api/missions/route_client-reference-manifest.js +1 -1
  116. package/.next/standalone/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  117. package/.next/standalone/.next/server/app/api/onboarding/blueprint/route_client-reference-manifest.js +1 -1
  118. package/.next/standalone/.next/server/app/api/onboarding/launch/route_client-reference-manifest.js +1 -1
  119. package/.next/standalone/.next/server/app/api/orchestrator/command/route_client-reference-manifest.js +1 -1
  120. package/.next/standalone/.next/server/app/api/orchestrator/stream/route.js +13 -13
  121. package/.next/standalone/.next/server/app/api/orchestrator/stream/route_client-reference-manifest.js +1 -1
  122. package/.next/standalone/.next/server/app/api/orchestrator/upload/route_client-reference-manifest.js +1 -1
  123. package/.next/standalone/.next/server/app/api/org/route_client-reference-manifest.js +1 -1
  124. package/.next/standalone/.next/server/app/api/orgs/[id]/invites/[inviteId]/route_client-reference-manifest.js +1 -1
  125. package/.next/standalone/.next/server/app/api/orgs/[id]/invites/route_client-reference-manifest.js +1 -1
  126. package/.next/standalone/.next/server/app/api/orgs/[id]/members/[userId]/role/route_client-reference-manifest.js +1 -1
  127. package/.next/standalone/.next/server/app/api/orgs/[id]/members/[userId]/route_client-reference-manifest.js +1 -1
  128. package/.next/standalone/.next/server/app/api/orgs/[id]/members/route_client-reference-manifest.js +1 -1
  129. package/.next/standalone/.next/server/app/api/orgs/[id]/route_client-reference-manifest.js +1 -1
  130. package/.next/standalone/.next/server/app/api/orgs/invites/pending/route_client-reference-manifest.js +1 -1
  131. package/.next/standalone/.next/server/app/api/orgs/join/route_client-reference-manifest.js +1 -1
  132. package/.next/standalone/.next/server/app/api/orgs/join-complete/route_client-reference-manifest.js +1 -1
  133. package/.next/standalone/.next/server/app/api/orgs/route_client-reference-manifest.js +1 -1
  134. package/.next/standalone/.next/server/app/api/printing-press/clis/route_client-reference-manifest.js +1 -1
  135. package/.next/standalone/.next/server/app/api/printing-press/install/route_client-reference-manifest.js +1 -1
  136. package/.next/standalone/.next/server/app/api/printing-press/security-mode/route_client-reference-manifest.js +1 -1
  137. package/.next/standalone/.next/server/app/api/privacy/config/route_client-reference-manifest.js +1 -1
  138. package/.next/standalone/.next/server/app/api/privacy/verify/route_client-reference-manifest.js +1 -1
  139. package/.next/standalone/.next/server/app/api/processes/[id]/route_client-reference-manifest.js +1 -1
  140. package/.next/standalone/.next/server/app/api/processes/[id]/share-link/route_client-reference-manifest.js +1 -1
  141. package/.next/standalone/.next/server/app/api/processes/[id]/stages/[stageId]/override/route_client-reference-manifest.js +1 -1
  142. package/.next/standalone/.next/server/app/api/processes/[id]/stages/[stageId]/retry/route_client-reference-manifest.js +1 -1
  143. package/.next/standalone/.next/server/app/api/processes/[id]/stages/[stageId]/submit/route_client-reference-manifest.js +1 -1
  144. package/.next/standalone/.next/server/app/api/processes/definitions/[slug]/route_client-reference-manifest.js +1 -1
  145. package/.next/standalone/.next/server/app/api/processes/definitions/[slug]/settings/route_client-reference-manifest.js +1 -1
  146. package/.next/standalone/.next/server/app/api/processes/definitions/route_client-reference-manifest.js +1 -1
  147. package/.next/standalone/.next/server/app/api/processes/definitions/validate/route_client-reference-manifest.js +1 -1
  148. package/.next/standalone/.next/server/app/api/processes/route_client-reference-manifest.js +1 -1
  149. package/.next/standalone/.next/server/app/api/processes/start-and-route/route_client-reference-manifest.js +1 -1
  150. package/.next/standalone/.next/server/app/api/projects/[slug]/library/route_client-reference-manifest.js +1 -1
  151. package/.next/standalone/.next/server/app/api/projects/[slug]/route_client-reference-manifest.js +1 -1
  152. package/.next/standalone/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  153. package/.next/standalone/.next/server/app/api/runs/approve-claude-run/route_client-reference-manifest.js +1 -1
  154. package/.next/standalone/.next/server/app/api/runs/claude-code-dry-run/route_client-reference-manifest.js +1 -1
  155. package/.next/standalone/.next/server/app/api/runs/competitor-report/route_client-reference-manifest.js +1 -1
  156. package/.next/standalone/.next/server/app/api/runs/engine-ping/route_client-reference-manifest.js +1 -1
  157. package/.next/standalone/.next/server/app/api/runs/marketing-plan/route_client-reference-manifest.js +1 -1
  158. package/.next/standalone/.next/server/app/api/schedules/upsert/route_client-reference-manifest.js +1 -1
  159. package/.next/standalone/.next/server/app/api/secrets/[name]/route_client-reference-manifest.js +1 -1
  160. package/.next/standalone/.next/server/app/api/secrets/route_client-reference-manifest.js +1 -1
  161. package/.next/standalone/.next/server/app/api/settings/trust-mode/route_client-reference-manifest.js +1 -1
  162. package/.next/standalone/.next/server/app/api/share/[token]/otp/route_client-reference-manifest.js +1 -1
  163. package/.next/standalone/.next/server/app/api/share/[token]/route_client-reference-manifest.js +1 -1
  164. package/.next/standalone/.next/server/app/api/share/[token]/verify/route_client-reference-manifest.js +1 -1
  165. package/.next/standalone/.next/server/app/api/share/space/[token]/otp/route_client-reference-manifest.js +1 -1
  166. package/.next/standalone/.next/server/app/api/share/space/[token]/route_client-reference-manifest.js +1 -1
  167. package/.next/standalone/.next/server/app/api/share/space/[token]/verify/route_client-reference-manifest.js +1 -1
  168. package/.next/standalone/.next/server/app/api/shared/spaces/[id]/acl/route_client-reference-manifest.js +1 -1
  169. package/.next/standalone/.next/server/app/api/shared/spaces/publish/route_client-reference-manifest.js +1 -1
  170. package/.next/standalone/.next/server/app/api/shared/spaces/route_client-reference-manifest.js +1 -1
  171. package/.next/standalone/.next/server/app/api/shared/spaces/status/route_client-reference-manifest.js +1 -1
  172. package/.next/standalone/.next/server/app/api/shared/spaces/unpublish/route_client-reference-manifest.js +1 -1
  173. package/.next/standalone/.next/server/app/api/state/route_client-reference-manifest.js +1 -1
  174. package/.next/standalone/.next/server/app/api/system/update/route_client-reference-manifest.js +1 -1
  175. package/.next/standalone/.next/server/app/api/tasks/[id]/active-run/route_client-reference-manifest.js +1 -1
  176. package/.next/standalone/.next/server/app/api/tasks/[id]/attachments/route_client-reference-manifest.js +1 -1
  177. package/.next/standalone/.next/server/app/api/tasks/[id]/checklist/[itemId]/route_client-reference-manifest.js +1 -1
  178. package/.next/standalone/.next/server/app/api/tasks/[id]/checklist/route_client-reference-manifest.js +1 -1
  179. package/.next/standalone/.next/server/app/api/tasks/[id]/checkout/route_client-reference-manifest.js +1 -1
  180. package/.next/standalone/.next/server/app/api/tasks/[id]/children/route_client-reference-manifest.js +1 -1
  181. package/.next/standalone/.next/server/app/api/tasks/[id]/comments/route_client-reference-manifest.js +1 -1
  182. package/.next/standalone/.next/server/app/api/tasks/[id]/events/route_client-reference-manifest.js +1 -1
  183. package/.next/standalone/.next/server/app/api/tasks/[id]/live-runs/route_client-reference-manifest.js +1 -1
  184. package/.next/standalone/.next/server/app/api/tasks/[id]/release/route_client-reference-manifest.js +1 -1
  185. package/.next/standalone/.next/server/app/api/tasks/[id]/route_client-reference-manifest.js +1 -1
  186. package/.next/standalone/.next/server/app/api/tasks/route_client-reference-manifest.js +1 -1
  187. package/.next/standalone/.next/server/app/api/tool-allowlists/[id]/route_client-reference-manifest.js +1 -1
  188. package/.next/standalone/.next/server/app/api/tool-allowlists/route_client-reference-manifest.js +1 -1
  189. package/.next/standalone/.next/server/app/api/tool-egress/route_client-reference-manifest.js +1 -1
  190. package/.next/standalone/.next/server/app/api/tools/[name]/approve/route_client-reference-manifest.js +1 -1
  191. package/.next/standalone/.next/server/app/api/tools/[name]/route_client-reference-manifest.js +1 -1
  192. package/.next/standalone/.next/server/app/api/tools/route_client-reference-manifest.js +1 -1
  193. package/.next/standalone/.next/server/app/api/transcripts/route_client-reference-manifest.js +1 -1
  194. package/.next/standalone/.next/server/app/api/voice/providers/route_client-reference-manifest.js +1 -1
  195. package/.next/standalone/.next/server/app/api/voice/realtime/context/route_client-reference-manifest.js +1 -1
  196. package/.next/standalone/.next/server/app/api/voice/realtime/session/route.js +2 -2
  197. package/.next/standalone/.next/server/app/api/voice/realtime/session/route_client-reference-manifest.js +1 -1
  198. package/.next/standalone/.next/server/app/api/voice/realtime/tool-result/route.js +2 -2
  199. package/.next/standalone/.next/server/app/api/voice/realtime/tool-result/route_client-reference-manifest.js +1 -1
  200. package/.next/standalone/.next/server/app/api/voice/realtime/tools/route.js +1 -1
  201. package/.next/standalone/.next/server/app/api/voice/realtime/tools/route_client-reference-manifest.js +1 -1
  202. package/.next/standalone/.next/server/app/api/voice/tts/route_client-reference-manifest.js +1 -1
  203. package/.next/standalone/.next/server/app/api/whatsapp/allowlist/route_client-reference-manifest.js +1 -1
  204. package/.next/standalone/.next/server/app/api/whatsapp/disconnect/route_client-reference-manifest.js +1 -1
  205. package/.next/standalone/.next/server/app/api/whatsapp/messages/route_client-reference-manifest.js +1 -1
  206. package/.next/standalone/.next/server/app/api/whatsapp/qr/route_client-reference-manifest.js +1 -1
  207. package/.next/standalone/.next/server/app/api/whatsapp/send/route_client-reference-manifest.js +1 -1
  208. package/.next/standalone/.next/server/app/api/whatsapp/status/route_client-reference-manifest.js +1 -1
  209. package/.next/standalone/.next/server/app/approvals/page.js +2 -2
  210. package/.next/standalone/.next/server/app/approvals/page.js.nft.json +1 -1
  211. package/.next/standalone/.next/server/app/approvals/page_client-reference-manifest.js +1 -1
  212. package/.next/standalone/.next/server/app/architecture/page.js +1 -1
  213. package/.next/standalone/.next/server/app/architecture/page.js.nft.json +1 -1
  214. package/.next/standalone/.next/server/app/architecture/page_client-reference-manifest.js +1 -1
  215. package/.next/standalone/.next/server/app/architecture.html +2 -2
  216. package/.next/standalone/.next/server/app/architecture.rsc +4 -4
  217. package/.next/standalone/.next/server/app/audit/live/page.js +1 -1
  218. package/.next/standalone/.next/server/app/audit/live/page.js.nft.json +1 -1
  219. package/.next/standalone/.next/server/app/audit/live/page_client-reference-manifest.js +1 -1
  220. package/.next/standalone/.next/server/app/audit/page.js +1 -1
  221. package/.next/standalone/.next/server/app/audit/page.js.nft.json +1 -1
  222. package/.next/standalone/.next/server/app/audit/page_client-reference-manifest.js +1 -1
  223. package/.next/standalone/.next/server/app/brand/page.js +1 -1
  224. package/.next/standalone/.next/server/app/brand/page.js.nft.json +1 -1
  225. package/.next/standalone/.next/server/app/brand/page_client-reference-manifest.js +1 -1
  226. package/.next/standalone/.next/server/app/brand.html +2 -1
  227. package/.next/standalone/.next/server/app/brand.rsc +4 -4
  228. package/.next/standalone/.next/server/app/disk/page.js +1 -1
  229. package/.next/standalone/.next/server/app/disk/page.js.nft.json +1 -1
  230. package/.next/standalone/.next/server/app/disk/page_client-reference-manifest.js +1 -1
  231. package/.next/standalone/.next/server/app/federated-ai/page.js +1 -1
  232. package/.next/standalone/.next/server/app/federated-ai/page.js.nft.json +1 -1
  233. package/.next/standalone/.next/server/app/federated-ai/page_client-reference-manifest.js +1 -1
  234. package/.next/standalone/.next/server/app/federated-ai.html +2 -2
  235. package/.next/standalone/.next/server/app/federated-ai.rsc +4 -4
  236. package/.next/standalone/.next/server/app/hail/[id]/governance/page.js +1 -1
  237. package/.next/standalone/.next/server/app/hail/[id]/governance/page.js.nft.json +1 -1
  238. package/.next/standalone/.next/server/app/hail/[id]/governance/page_client-reference-manifest.js +1 -1
  239. package/.next/standalone/.next/server/app/hail/[id]/interview/page.js +1 -1
  240. package/.next/standalone/.next/server/app/hail/[id]/interview/page.js.nft.json +1 -1
  241. package/.next/standalone/.next/server/app/hail/[id]/interview/page_client-reference-manifest.js +1 -1
  242. package/.next/standalone/.next/server/app/hail/[id]/page.js +1 -1
  243. package/.next/standalone/.next/server/app/hail/[id]/page.js.nft.json +1 -1
  244. package/.next/standalone/.next/server/app/hail/[id]/page_client-reference-manifest.js +1 -1
  245. package/.next/standalone/.next/server/app/hail/[id]/setup/page.js +1 -1
  246. package/.next/standalone/.next/server/app/hail/[id]/setup/page.js.nft.json +1 -1
  247. package/.next/standalone/.next/server/app/hail/[id]/setup/page_client-reference-manifest.js +1 -1
  248. package/.next/standalone/.next/server/app/hail/page.js +2 -2
  249. package/.next/standalone/.next/server/app/hail/page.js.nft.json +1 -1
  250. package/.next/standalone/.next/server/app/hail/page_client-reference-manifest.js +1 -1
  251. package/.next/standalone/.next/server/app/help/[slug]/page.js +1 -1
  252. package/.next/standalone/.next/server/app/help/[slug]/page.js.nft.json +1 -1
  253. package/.next/standalone/.next/server/app/help/[slug]/page_client-reference-manifest.js +1 -1
  254. package/.next/standalone/.next/server/app/help/page.js +1 -1
  255. package/.next/standalone/.next/server/app/help/page.js.nft.json +1 -1
  256. package/.next/standalone/.next/server/app/help/page_client-reference-manifest.js +1 -1
  257. package/.next/standalone/.next/server/app/index.html +2 -2
  258. package/.next/standalone/.next/server/app/index.rsc +5 -5
  259. package/.next/standalone/.next/server/app/join/page.js +1 -1
  260. package/.next/standalone/.next/server/app/join/page.js.nft.json +1 -1
  261. package/.next/standalone/.next/server/app/join/page_client-reference-manifest.js +1 -1
  262. package/.next/standalone/.next/server/app/join.html +1 -1
  263. package/.next/standalone/.next/server/app/join.rsc +4 -4
  264. package/.next/standalone/.next/server/app/login/page.js +1 -1
  265. package/.next/standalone/.next/server/app/login/page.js.nft.json +1 -1
  266. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  267. package/.next/standalone/.next/server/app/marketplace/page.js +4 -4
  268. package/.next/standalone/.next/server/app/marketplace/page.js.nft.json +1 -1
  269. package/.next/standalone/.next/server/app/marketplace/page_client-reference-manifest.js +1 -1
  270. package/.next/standalone/.next/server/app/mines/[projectId]/page.js +1 -1
  271. package/.next/standalone/.next/server/app/mines/[projectId]/page.js.nft.json +1 -1
  272. package/.next/standalone/.next/server/app/mines/[projectId]/page_client-reference-manifest.js +1 -1
  273. package/.next/standalone/.next/server/app/mines/[projectId]/results/page.js +1 -1
  274. package/.next/standalone/.next/server/app/mines/[projectId]/results/page.js.nft.json +1 -1
  275. package/.next/standalone/.next/server/app/mines/[projectId]/results/page_client-reference-manifest.js +1 -1
  276. package/.next/standalone/.next/server/app/mines/page.js +1 -1
  277. package/.next/standalone/.next/server/app/mines/page.js.nft.json +1 -1
  278. package/.next/standalone/.next/server/app/mines/page_client-reference-manifest.js +1 -1
  279. package/.next/standalone/.next/server/app/missions/page.js +2 -2
  280. package/.next/standalone/.next/server/app/missions/page.js.nft.json +1 -1
  281. package/.next/standalone/.next/server/app/missions/page_client-reference-manifest.js +1 -1
  282. package/.next/standalone/.next/server/app/onboarding/org/page.js +1 -1
  283. package/.next/standalone/.next/server/app/onboarding/org/page.js.nft.json +1 -1
  284. package/.next/standalone/.next/server/app/onboarding/org/page_client-reference-manifest.js +1 -1
  285. package/.next/standalone/.next/server/app/onboarding/page.js +1 -1
  286. package/.next/standalone/.next/server/app/onboarding/page.js.nft.json +1 -1
  287. package/.next/standalone/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  288. package/.next/standalone/.next/server/app/onboarding.html +2 -2
  289. package/.next/standalone/.next/server/app/onboarding.rsc +4 -4
  290. package/.next/standalone/.next/server/app/org/page.js +1 -1
  291. package/.next/standalone/.next/server/app/org/page.js.nft.json +1 -1
  292. package/.next/standalone/.next/server/app/org/page_client-reference-manifest.js +1 -1
  293. package/.next/standalone/.next/server/app/page.js +5 -5
  294. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  295. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  296. package/.next/standalone/.next/server/app/projects/[slug]/log/page.js +1 -1
  297. package/.next/standalone/.next/server/app/projects/[slug]/log/page.js.nft.json +1 -1
  298. package/.next/standalone/.next/server/app/projects/[slug]/log/page_client-reference-manifest.js +1 -1
  299. package/.next/standalone/.next/server/app/projects/[slug]/page.js +1 -1
  300. package/.next/standalone/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
  301. package/.next/standalone/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  302. package/.next/standalone/.next/server/app/projects/new/page.js +3 -3
  303. package/.next/standalone/.next/server/app/projects/new/page.js.nft.json +1 -1
  304. package/.next/standalone/.next/server/app/projects/new/page_client-reference-manifest.js +1 -1
  305. package/.next/standalone/.next/server/app/projects/new.html +2 -2
  306. package/.next/standalone/.next/server/app/projects/new.rsc +5 -5
  307. package/.next/standalone/.next/server/app/projects/page.js +34 -24
  308. package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
  309. package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  310. package/.next/standalone/.next/server/app/reports/[file]/route_client-reference-manifest.js +1 -1
  311. package/.next/standalone/.next/server/app/reports/page.js +1 -1
  312. package/.next/standalone/.next/server/app/reports/page.js.nft.json +1 -1
  313. package/.next/standalone/.next/server/app/reports/page_client-reference-manifest.js +1 -1
  314. package/.next/standalone/.next/server/app/runtime/page.js +1 -1
  315. package/.next/standalone/.next/server/app/runtime/page.js.nft.json +1 -1
  316. package/.next/standalone/.next/server/app/runtime/page_client-reference-manifest.js +1 -1
  317. package/.next/standalone/.next/server/app/schedules/page.js +2 -2
  318. package/.next/standalone/.next/server/app/schedules/page.js.nft.json +1 -1
  319. package/.next/standalone/.next/server/app/schedules/page_client-reference-manifest.js +1 -1
  320. package/.next/standalone/.next/server/app/settings/account/page.js +1 -1
  321. package/.next/standalone/.next/server/app/settings/account/page.js.nft.json +1 -1
  322. package/.next/standalone/.next/server/app/settings/account/page_client-reference-manifest.js +1 -1
  323. package/.next/standalone/.next/server/app/settings/advanced/page.js +1 -1
  324. package/.next/standalone/.next/server/app/settings/advanced/page.js.nft.json +1 -1
  325. package/.next/standalone/.next/server/app/settings/advanced/page_client-reference-manifest.js +1 -1
  326. package/.next/standalone/.next/server/app/settings/appearance/page.js +1 -1
  327. package/.next/standalone/.next/server/app/settings/appearance/page.js.nft.json +1 -1
  328. package/.next/standalone/.next/server/app/settings/appearance/page_client-reference-manifest.js +1 -1
  329. package/.next/standalone/.next/server/app/settings/brand/page.js +1 -1
  330. package/.next/standalone/.next/server/app/settings/brand/page.js.nft.json +1 -1
  331. package/.next/standalone/.next/server/app/settings/brand/page_client-reference-manifest.js +1 -1
  332. package/.next/standalone/.next/server/app/settings/brand.html +2 -2
  333. package/.next/standalone/.next/server/app/settings/brand.rsc +5 -5
  334. package/.next/standalone/.next/server/app/settings/connectors/page.js +1 -1
  335. package/.next/standalone/.next/server/app/settings/connectors/page.js.nft.json +1 -1
  336. package/.next/standalone/.next/server/app/settings/connectors/page_client-reference-manifest.js +1 -1
  337. package/.next/standalone/.next/server/app/settings/engines/page.js +1 -1
  338. package/.next/standalone/.next/server/app/settings/engines/page.js.nft.json +1 -1
  339. package/.next/standalone/.next/server/app/settings/engines/page_client-reference-manifest.js +1 -1
  340. package/.next/standalone/.next/server/app/settings/onboarding/page.js +1 -1
  341. package/.next/standalone/.next/server/app/settings/onboarding/page.js.nft.json +1 -1
  342. package/.next/standalone/.next/server/app/settings/onboarding/page_client-reference-manifest.js +1 -1
  343. package/.next/standalone/.next/server/app/settings/onboarding.html +2 -2
  344. package/.next/standalone/.next/server/app/settings/onboarding.rsc +5 -5
  345. package/.next/standalone/.next/server/app/settings/organization/page.js +2 -2
  346. package/.next/standalone/.next/server/app/settings/organization/page.js.nft.json +1 -1
  347. package/.next/standalone/.next/server/app/settings/organization/page_client-reference-manifest.js +1 -1
  348. package/.next/standalone/.next/server/app/settings/page.js +1 -1
  349. package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
  350. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  351. package/.next/standalone/.next/server/app/settings/runtime/page.js +1 -1
  352. package/.next/standalone/.next/server/app/settings/runtime/page.js.nft.json +1 -1
  353. package/.next/standalone/.next/server/app/settings/runtime/page_client-reference-manifest.js +1 -1
  354. package/.next/standalone/.next/server/app/settings/team/page.js +1 -1
  355. package/.next/standalone/.next/server/app/settings/team/page.js.nft.json +1 -1
  356. package/.next/standalone/.next/server/app/settings/team/page_client-reference-manifest.js +1 -1
  357. package/.next/standalone/.next/server/app/settings/tools/page.js +1 -1
  358. package/.next/standalone/.next/server/app/settings/tools/page.js.nft.json +1 -1
  359. package/.next/standalone/.next/server/app/settings/tools/page_client-reference-manifest.js +1 -1
  360. package/.next/standalone/.next/server/app/settings.html +2 -2
  361. package/.next/standalone/.next/server/app/settings.rsc +5 -5
  362. package/.next/standalone/.next/server/app/share/[token]/page.js +1 -1
  363. package/.next/standalone/.next/server/app/share/[token]/page.js.nft.json +1 -1
  364. package/.next/standalone/.next/server/app/share/[token]/page_client-reference-manifest.js +1 -1
  365. package/.next/standalone/.next/server/app/share/space/[token]/page.js +1 -1
  366. package/.next/standalone/.next/server/app/share/space/[token]/page.js.nft.json +1 -1
  367. package/.next/standalone/.next/server/app/share/space/[token]/page_client-reference-manifest.js +1 -1
  368. package/.next/standalone/.next/server/app/tasks/[id]/page.js +2 -2
  369. package/.next/standalone/.next/server/app/tasks/[id]/page.js.nft.json +1 -1
  370. package/.next/standalone/.next/server/app/tasks/[id]/page_client-reference-manifest.js +1 -1
  371. package/.next/standalone/.next/server/app/tasks/page.js +2 -2
  372. package/.next/standalone/.next/server/app/tasks/page.js.nft.json +1 -1
  373. package/.next/standalone/.next/server/app/tasks/page_client-reference-manifest.js +1 -1
  374. package/.next/standalone/.next/server/app/team/[agentId]/page.js +1 -1
  375. package/.next/standalone/.next/server/app/team/[agentId]/page.js.nft.json +1 -1
  376. package/.next/standalone/.next/server/app/team/[agentId]/page_client-reference-manifest.js +1 -1
  377. package/.next/standalone/.next/server/app/team/page.js +1 -1
  378. package/.next/standalone/.next/server/app/team/page.js.nft.json +1 -1
  379. package/.next/standalone/.next/server/app/team/page_client-reference-manifest.js +1 -1
  380. package/.next/standalone/.next/server/app/tools/page.js +1 -1
  381. package/.next/standalone/.next/server/app/tools/page.js.nft.json +1 -1
  382. package/.next/standalone/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  383. package/.next/standalone/.next/server/app/whatsapp/page.js +1 -1
  384. package/.next/standalone/.next/server/app/whatsapp/page.js.nft.json +1 -1
  385. package/.next/standalone/.next/server/app/whatsapp/page_client-reference-manifest.js +1 -1
  386. package/.next/standalone/.next/server/app/whatsapp.html +2 -2
  387. package/.next/standalone/.next/server/app/whatsapp.rsc +4 -4
  388. package/.next/standalone/.next/server/app/workflows/[caseId]/page.js +1 -1
  389. package/.next/standalone/.next/server/app/workflows/[caseId]/page.js.nft.json +1 -1
  390. package/.next/standalone/.next/server/app/workflows/[caseId]/page_client-reference-manifest.js +1 -1
  391. package/.next/standalone/.next/server/app/workflows/new/[caseId]/page.js +1 -1
  392. package/.next/standalone/.next/server/app/workflows/new/[caseId]/page.js.nft.json +1 -1
  393. package/.next/standalone/.next/server/app/workflows/new/[caseId]/page_client-reference-manifest.js +1 -1
  394. package/.next/standalone/.next/server/app/workflows/new/definition/page.js +1 -1
  395. package/.next/standalone/.next/server/app/workflows/new/definition/page.js.nft.json +1 -1
  396. package/.next/standalone/.next/server/app/workflows/new/definition/page_client-reference-manifest.js +1 -1
  397. package/.next/standalone/.next/server/app/workflows/page.js +1 -1
  398. package/.next/standalone/.next/server/app/workflows/page.js.nft.json +1 -1
  399. package/.next/standalone/.next/server/app/workflows/page_client-reference-manifest.js +1 -1
  400. package/.next/standalone/.next/server/app/workflows/share/[caseId]/page.js +1 -1
  401. package/.next/standalone/.next/server/app/workflows/share/[caseId]/page.js.nft.json +1 -1
  402. package/.next/standalone/.next/server/app/workflows/share/[caseId]/page_client-reference-manifest.js +1 -1
  403. package/.next/standalone/.next/server/app-paths-manifest.json +68 -68
  404. package/.next/standalone/.next/server/chunks/1648.js +1 -1
  405. package/.next/standalone/.next/server/chunks/1699.js +35 -18
  406. package/.next/standalone/.next/server/chunks/{3806.js → 3379.js} +1 -1
  407. package/.next/standalone/.next/server/chunks/4804.js +1 -1
  408. package/.next/standalone/.next/server/chunks/6059.js +1 -1
  409. package/.next/standalone/.next/server/chunks/{9195.js → 9483.js} +1 -1
  410. package/.next/standalone/.next/server/functions-config-manifest.json +45 -45
  411. package/.next/standalone/.next/server/middleware-build-manifest.js +1 -1
  412. package/.next/standalone/.next/server/middleware-manifest.json +5 -5
  413. package/.next/standalone/.next/server/middleware-react-loadable-manifest.js +1 -1
  414. package/.next/standalone/.next/server/pages/404.html +2 -1
  415. package/.next/standalone/.next/server/pages/500.html +1 -1
  416. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  417. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  418. package/.next/standalone/.next/static/chunks/494-02cf75066d25e8ac.js +1 -0
  419. package/.next/standalone/.next/static/chunks/8217.9459315d921fdd61.js +1 -0
  420. package/.next/{static/chunks/app/agents/[id]/page-e4bcb0ace2900a11.js → standalone/.next/static/chunks/app/agents/[id]/page-fd263522f6c29653.js} +1 -1
  421. package/.next/{static/chunks/app/agents/page-47a00aa58327a35e.js → standalone/.next/static/chunks/app/agents/page-5860869c305cc54b.js} +1 -1
  422. package/.next/standalone/.next/static/chunks/app/layout-457acc50d33a5e0e.js +1 -0
  423. package/.next/standalone/.next/static/chunks/app/login/page-69e66f7316e3aaf2.js +1 -0
  424. package/.next/standalone/.next/static/chunks/app/marketplace/page-b21a9b2946742aa4.js +1 -0
  425. package/.next/standalone/.next/static/chunks/app/page-9a013fdb2983cbf4.js +1 -0
  426. package/.next/standalone/.next/static/chunks/app/projects/page-3d7140091264933a.js +1 -0
  427. package/.next/standalone/.next/static/chunks/app/settings/layout-fd443bfa8cac181e.js +1 -0
  428. package/.next/standalone/.next/static/chunks/webpack-e4f2cfb4ad98f256.js +1 -0
  429. package/.next/standalone/.next/static/css/31fb2fdadf8f1c6b.css +1 -0
  430. package/.next/standalone/CHANGELOG.md +25 -0
  431. package/.next/standalone/package.json +1 -1
  432. package/.next/static/chunks/494-02cf75066d25e8ac.js +1 -0
  433. package/.next/static/chunks/8217.9459315d921fdd61.js +1 -0
  434. package/.next/{standalone/.next/static/chunks/app/agents/[id]/page-e4bcb0ace2900a11.js → static/chunks/app/agents/[id]/page-fd263522f6c29653.js} +1 -1
  435. package/.next/{standalone/.next/static/chunks/app/agents/page-47a00aa58327a35e.js → static/chunks/app/agents/page-5860869c305cc54b.js} +1 -1
  436. package/.next/static/chunks/app/layout-457acc50d33a5e0e.js +1 -0
  437. package/.next/static/chunks/app/login/page-69e66f7316e3aaf2.js +1 -0
  438. package/.next/static/chunks/app/marketplace/page-b21a9b2946742aa4.js +1 -0
  439. package/.next/static/chunks/app/page-9a013fdb2983cbf4.js +1 -0
  440. package/.next/static/chunks/app/projects/page-3d7140091264933a.js +1 -0
  441. package/.next/static/chunks/app/settings/layout-fd443bfa8cac181e.js +1 -0
  442. package/.next/static/chunks/webpack-e4f2cfb4ad98f256.js +1 -0
  443. package/.next/static/css/31fb2fdadf8f1c6b.css +1 -0
  444. package/CHANGELOG.md +25 -0
  445. package/CLAUDE.md +1 -1
  446. package/README.md +1 -1
  447. package/ai-docs/key-constraints.md +9 -1
  448. package/app/agents/agent-events-bus.js +11 -1
  449. package/app/api/connections/[service]/verify/route.js +29 -1
  450. package/app/api/fs/pick-folder/route.js +13 -11
  451. package/app/api/orchestrator/stream/route.js +92 -9
  452. package/app/api/voice/realtime/session/route.js +4 -0
  453. package/app/components/app-topbar.jsx +265 -28
  454. package/app/components/dashboard/chat-panel.jsx +54 -5
  455. package/app/components/dashboard/thinking-disclosure.jsx +59 -0
  456. package/app/components/dashboard/tool-steps.js +9 -0
  457. package/app/components/dashboard/use-main-agent-stream.js +2 -0
  458. package/app/components/dashboard/use-realtime-voice.js +33 -5
  459. package/app/components/dashboard/use-stream-command.js +29 -2
  460. package/app/components/dashboard/voice-panel.jsx +148 -36
  461. package/app/components/ui/marketplace/install-toggle.jsx +44 -9
  462. package/app/globals.css +148 -8
  463. package/app/login/login-client.jsx +23 -5
  464. package/app/marketplace/connection-setup-modal.jsx +31 -1
  465. package/app/marketplace/connection-setup-steps/api-key-step.jsx +20 -3
  466. package/app/marketplace/install-toast.jsx +1 -1
  467. package/app/marketplace/marketplace-row.jsx +8 -1
  468. package/app/marketplace/marketplace-shell.jsx +78 -7
  469. package/app/marketplace/workflow-card.jsx +2 -1
  470. package/lib/agent-config.js +7 -0
  471. package/lib/agent-engines.js +182 -21
  472. package/lib/auth-config.js +24 -8
  473. package/lib/claude.js +19 -2
  474. package/lib/cli/doctor.js +25 -0
  475. package/lib/connection-seeds.js +1 -1
  476. package/lib/engine-verbosity.js +42 -0
  477. package/lib/env-file.js +3 -0
  478. package/lib/pick-folder-authz.js +15 -0
  479. package/lib/realtime-openai.js +49 -1
  480. package/lib/tools/adapters/browser-session.js +37 -8
  481. package/lib/tools/adapters/github.js +47 -5
  482. package/lib/tools/adapters/skill-bridge.js +146 -0
  483. package/lib/tools/registry.js +40 -4
  484. package/lib/voice/context.js +1 -1
  485. package/lib/voice/tools.js +34 -2
  486. package/package.json +1 -1
  487. package/scripts/migrate-auth-v1.mjs +92 -0
  488. package/.next/standalone/.next/static/chunks/3054-451abdd7b9afc2ac.js +0 -1
  489. package/.next/standalone/.next/static/chunks/8217.0beb0a316c7ad5d8.js +0 -1
  490. package/.next/standalone/.next/static/chunks/app/layout-b7e1918b9125641e.js +0 -1
  491. package/.next/standalone/.next/static/chunks/app/login/page-d2298bc1803944ae.js +0 -1
  492. package/.next/standalone/.next/static/chunks/app/marketplace/page-0b7d3a6309302de3.js +0 -1
  493. package/.next/standalone/.next/static/chunks/app/page-887ef6f96897f78a.js +0 -1
  494. package/.next/standalone/.next/static/chunks/app/projects/page-739d4cc74824d336.js +0 -1
  495. package/.next/standalone/.next/static/chunks/app/settings/layout-08f6b30132b26dd1.js +0 -1
  496. package/.next/standalone/.next/static/chunks/webpack-f916d679fe38a701.js +0 -1
  497. package/.next/standalone/.next/static/css/2587cd46c922a6d8.css +0 -1
  498. package/.next/static/chunks/3054-451abdd7b9afc2ac.js +0 -1
  499. package/.next/static/chunks/8217.0beb0a316c7ad5d8.js +0 -1
  500. package/.next/static/chunks/app/layout-b7e1918b9125641e.js +0 -1
  501. package/.next/static/chunks/app/login/page-d2298bc1803944ae.js +0 -1
  502. package/.next/static/chunks/app/marketplace/page-0b7d3a6309302de3.js +0 -1
  503. package/.next/static/chunks/app/page-887ef6f96897f78a.js +0 -1
  504. package/.next/static/chunks/app/projects/page-739d4cc74824d336.js +0 -1
  505. package/.next/static/chunks/app/settings/layout-08f6b30132b26dd1.js +0 -1
  506. package/.next/static/chunks/webpack-f916d679fe38a701.js +0 -1
  507. package/.next/static/css/2587cd46c922a6d8.css +0 -1
  508. /package/.next/standalone/.next/static/{ZxaTPKGC9lESQlvHfrHgp → -FRz43s1H_LZFhx24FvnL}/_buildManifest.js +0 -0
  509. /package/.next/standalone/.next/static/{ZxaTPKGC9lESQlvHfrHgp → -FRz43s1H_LZFhx24FvnL}/_ssgManifest.js +0 -0
  510. /package/.next/static/{ZxaTPKGC9lESQlvHfrHgp → -FRz43s1H_LZFhx24FvnL}/_buildManifest.js +0 -0
  511. /package/.next/static/{ZxaTPKGC9lESQlvHfrHgp → -FRz43s1H_LZFhx24FvnL}/_ssgManifest.js +0 -0
@@ -25,6 +25,10 @@ export function useStreamCommand({
25
25
  const [liveSteps, setLiveSteps] = useState([]);
26
26
  const [busyStartTime, setBusyStartTime] = useState(null);
27
27
  const [agentPhase, setAgentPhase] = useState('idle');
28
+ // Live reasoning (extended thinking) + engine status line. Engine-agnostic:
29
+ // fed by cli_thinking / cli_status events from any engine that streams them.
30
+ const [liveThinking, setLiveThinking] = useState('');
31
+ const [liveStatus, setLiveStatus] = useState(null);
28
32
  // Approvals harvested from tool_result events with status='approval_required'.
29
33
  // Drained into pending_approvals on the next outgoing request so the server
30
34
  // can inject approval_id into the retried tool call.
@@ -58,6 +62,8 @@ export function useStreamCommand({
58
62
  setChat(c => [...c, { role: 'user', text: clean, attachments: files }]);
59
63
  clearSavedDraft();
60
64
  setLiveSteps([]);
65
+ setLiveThinking('');
66
+ setLiveStatus(null);
61
67
  setAgentPhase('thinking');
62
68
  setBusyStartTime(Date.now());
63
69
  setBusy(true);
@@ -125,13 +131,23 @@ export function useStreamCommand({
125
131
  if (eventName === 'session' && payload.id) {
126
132
  saveLastSessionId(payload.id);
127
133
  if (payload.id !== sessionId) setSessionId(payload.id);
128
- } else if (eventName === 'cli_stream' && payload.text) {
134
+ } else if (eventName === 'cli_stream' && (payload.text || payload.building)) {
129
135
  setAgentPhase(p => p === 'thinking' ? 'responding' : p);
130
136
  setChat(c => {
131
137
  const next = [...c];
132
- next[next.length - 1] = { role: 'agent', text: payload.text, streaming: true };
138
+ next[next.length - 1] = { role: 'agent', text: payload.text || '', streaming: true, building: Boolean(payload.building) };
133
139
  return next;
134
140
  });
141
+ } else if (eventName === 'cli_thinking' && typeof payload.text === 'string') {
142
+ // Accumulated reasoning text (replaces, not appends — server sends
143
+ // the running total). Surfaced in the collapsible Thinking panel.
144
+ setLiveThinking(payload.text);
145
+ setAgentPhase(p => (p === 'responding' || p === 'tool') ? p : 'thinking');
146
+ } else if (eventName === 'cli_status') {
147
+ setLiveStatus(payload && payload.phase ? payload : null);
148
+ if (payload?.phase === 'thinking') {
149
+ setAgentPhase(p => (p === 'responding' || p === 'tool') ? p : 'thinking');
150
+ }
135
151
  } else if (eventName === 'text' && payload.delta) {
136
152
  agentText += payload.delta;
137
153
  setAgentPhase(p => p === 'thinking' ? 'responding' : p);
@@ -165,6 +181,11 @@ export function useStreamCommand({
165
181
  status: isApprovalRequired
166
182
  ? 'awaiting_approval'
167
183
  : (payload.isError ? 'error' : 'done'),
184
+ // Verbose detail: elapsed time + a short output preview so
185
+ // the user can see what each tool actually returned.
186
+ durationMs: typeof payload.durationMs === 'number' ? payload.durationMs : next[i].durationMs,
187
+ preview: payload.output?.preview || next[i].preview || null,
188
+ outLines: payload.output?.lines ?? next[i].outLines,
168
189
  approval_id: isApprovalRequired
169
190
  ? payload.output.approval_request_id
170
191
  : next[i].approval_id || null,
@@ -258,6 +279,10 @@ export function useStreamCommand({
258
279
  setAgentPhase('idle');
259
280
  setLiveText('');
260
281
  setLiveTool(null);
282
+ setLiveStatus(null);
283
+ // Keep liveThinking visible briefly so the reasoning doesn't vanish the
284
+ // instant the answer lands; the disclosure stays collapsible after.
285
+ setTimeout(() => setLiveThinking(''), 4000);
261
286
  // Don't auto-clear when an approval chip needs to stay visible. The
262
287
  // user needs to see and act on the Approve / Deny buttons.
263
288
  setTimeout(() => {
@@ -323,6 +348,8 @@ export function useStreamCommand({
323
348
  liveSteps,
324
349
  busyStartTime,
325
350
  agentPhase,
351
+ liveThinking,
352
+ liveStatus,
326
353
  feedRef,
327
354
  command,
328
355
  stop,
@@ -1,9 +1,23 @@
1
1
  "use client";
2
2
 
3
- import { memo, useCallback, useEffect, useMemo, useState } from 'react';
3
+ import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react';
4
4
  import VoiceOrb from './voice-orb';
5
5
  import { useRealtimeVoice } from './use-realtime-voice';
6
6
  import { useDashboard } from './dashboard-context';
7
+ import { useAccountSession } from '../account-session.jsx';
8
+
9
+ // Derive a friendly first name from the signed-in session. Prefers an explicit
10
+ // display name; otherwise capitalises the email local-part (ak@madarx.io → Ak).
11
+ function greetingNameFrom(session) {
12
+ const dn = session?.display_name && String(session.display_name).trim();
13
+ if (dn) return dn.split(/\s+/)[0];
14
+ const email = session?.email && String(session.email);
15
+ if (email && email.includes('@')) {
16
+ const local = email.split('@')[0].replace(/[._-]+/g, ' ').trim().split(/\s+/)[0];
17
+ if (local) return local.charAt(0).toUpperCase() + local.slice(1);
18
+ }
19
+ return '';
20
+ }
7
21
 
8
22
  const MODE_LABELS = {
9
23
  realtime: 'Live',
@@ -36,6 +50,7 @@ function VoicePanel() {
36
50
  spaces: spacesHook,
37
51
  state,
38
52
  chat,
53
+ mainAgent,
39
54
  setVoiceOpen,
40
55
  setConfigTab,
41
56
  setConfigOpen,
@@ -83,8 +98,100 @@ function VoicePanel() {
83
98
  const [providerError, setProviderError] = useState(null);
84
99
  const [ttsSpeaking, setTtsSpeaking] = useState(false);
85
100
  const [collapsed, setCollapsed] = useState(() => load('madarx:voice-collapsed', '0') === '1');
101
+ // Brain selection. 'realtime' (default) is the proven in-browser-brain path
102
+ // (Realtime reasons + calls tools + speaks). 'transport' routes voice through
103
+ // the same main-agent stream as typed chat (Realtime = STT only, TTS = mouth)
104
+ // — opt-in until verified live, set localStorage madarx:voice-brain='transport'.
105
+ const [brain] = useState(() => load('madarx:voice-brain', 'realtime'));
106
+ const transport = brain === 'transport';
107
+
108
+ // Speak an arbitrary string via the TTS lane. Generalised from speakLast so
109
+ // the orchestrator's reply can be voiced in transport mode.
110
+ const speakText = useCallback(async (text) => {
111
+ const say = String(text || '').trim();
112
+ if (!say) return;
113
+ setProviderError(null);
114
+ try {
115
+ setTtsSpeaking(true);
116
+ const res = await fetch('/api/voice/tts', {
117
+ method: 'POST',
118
+ headers: { 'content-type': 'application/json' },
119
+ body: JSON.stringify({
120
+ text: say.slice(0, 3800),
121
+ provider: ttsProvider,
122
+ voice: ttsVoice || undefined,
123
+ project_id: projectId,
124
+ }),
125
+ });
126
+ if (!res.ok) throw new Error(`tts ${res.status}`);
127
+ const blob = await res.blob();
128
+ const url = URL.createObjectURL(blob);
129
+ const audio = new Audio(url);
130
+ audio.onended = () => { setTtsSpeaking(false); URL.revokeObjectURL(url); };
131
+ audio.onerror = () => { setTtsSpeaking(false); URL.revokeObjectURL(url); };
132
+ await audio.play();
133
+ } catch (err) {
134
+ setTtsSpeaking(false);
135
+ setProviderError(String(err?.message || err));
136
+ }
137
+ }, [projectId, ttsProvider, ttsVoice]);
138
+
139
+ // Transport loop: a final user utterance from Realtime STT is forwarded to
140
+ // the main orchestrator (same brain + tools + gates as typed chat). We mark a
141
+ // reply pending so the busy→idle effect below can voice the answer.
142
+ const pendingSpeakRef = useRef(false);
143
+ const onUserUtterance = useCallback((text) => {
144
+ const said = String(text || '').trim();
145
+ if (!said) return;
146
+ if (mainAgent?.busy) return; // a turn is already in flight; drop barge-in
147
+ pendingSpeakRef.current = true;
148
+ mainAgent?.command?.(said);
149
+ }, [mainAgent]);
86
150
 
87
- const realtime = useRealtimeVoice({ projectId, agentId, activeSpace, allSpaces });
151
+ const { session: account } = useAccountSession();
152
+ const greetingName = useMemo(() => greetingNameFrom(account), [account]);
153
+ const greetingText = greetingName ? `Hello, ${greetingName}.` : 'Hello.';
154
+
155
+ const realtime = useRealtimeVoice({ projectId, agentId, activeSpace, allSpaces, transport, greetingText, onUserUtterance });
156
+
157
+ // Transport-mode greeting: the Realtime model is silent, so speak the hello
158
+ // through the TTS lane once the line goes live. Legacy mode greets via the
159
+ // model itself (handled in the hook's dc.onopen).
160
+ const greetedRef = useRef(false);
161
+ useEffect(() => {
162
+ if (transport && realtime.state === 'live' && !greetedRef.current) {
163
+ greetedRef.current = true;
164
+ speakText(greetingText);
165
+ }
166
+ if (realtime.state === 'idle' || realtime.state === 'ending') greetedRef.current = false;
167
+ }, [transport, realtime.state, greetingText, speakText]);
168
+
169
+ // When a voice-initiated orchestrator turn finishes (busy true→false), speak
170
+ // the freshest assistant reply. Approval pauses surface separately below.
171
+ const prevBusyRef = useRef(false);
172
+ const spokenApprovalRef = useRef(false);
173
+ useEffect(() => {
174
+ const wasBusy = prevBusyRef.current;
175
+ prevBusyRef.current = mainAgent?.busy || false;
176
+ if (!transport) return;
177
+ if (wasBusy && !mainAgent?.busy && pendingSpeakRef.current) {
178
+ pendingSpeakRef.current = false;
179
+ // If the turn paused on an approval, say so instead of reading a
180
+ // half-finished answer; the Approve/Deny controls live in the chat panel.
181
+ const awaiting = (mainAgent?.liveSteps || []).some(s => s.status === 'awaiting_approval');
182
+ if (awaiting) {
183
+ if (!spokenApprovalRef.current) {
184
+ spokenApprovalRef.current = true;
185
+ speakText('That action needs your approval. Open the chat to approve or deny.');
186
+ }
187
+ return;
188
+ }
189
+ spokenApprovalRef.current = false;
190
+ for (let i = chat.length - 1; i >= 0; i--) {
191
+ if (chat[i].role === 'agent' && chat[i].text) { speakText(chat[i].text); break; }
192
+ }
193
+ }
194
+ }, [mainAgent?.busy, mainAgent?.liveSteps, transport, chat, speakText]);
88
195
 
89
196
  // Capability discovery — lets us hide modes we can't run.
90
197
  useEffect(() => {
@@ -122,13 +229,21 @@ function VoicePanel() {
122
229
  return () => window.removeEventListener('storage', onStorage);
123
230
  }, []);
124
231
 
232
+ const awaitingApproval = useMemo(
233
+ () => transport && (mainAgent?.liveSteps || []).some(s => s.status === 'awaiting_approval'),
234
+ [transport, mainAgent?.liveSteps],
235
+ );
236
+
125
237
  const orbState = useMemo(() => {
126
238
  if (realtime.error) return 'error';
127
- if (realtime.pendingToolCalls.length > 0) return 'approval';
239
+ if (awaitingApproval || realtime.pendingToolCalls.length > 0) return 'approval';
240
+ // Transport mode keeps the WebRTC line live while the orchestrator thinks
241
+ // and the TTS lane speaks — surface those as an active orb.
242
+ if (transport && (mainAgent?.busy || ttsSpeaking)) return 'live';
128
243
  if (mode === 'realtime') return realtime.state;
129
244
  if (ttsSpeaking) return 'live';
130
245
  return 'idle';
131
- }, [mode, realtime.error, realtime.pendingToolCalls.length, realtime.state, ttsSpeaking]);
246
+ }, [mode, transport, awaitingApproval, mainAgent?.busy, realtime.error, realtime.pendingToolCalls.length, realtime.state, ttsSpeaking]);
132
247
 
133
248
  const stop = useCallback(() => {
134
249
  realtime.stop();
@@ -142,35 +257,31 @@ function VoicePanel() {
142
257
 
143
258
  // Speak last assistant message via TTS (used in tts mode).
144
259
  const speakLast = useCallback(async () => {
145
- setProviderError(null);
146
260
  const text = await onSpeakLast?.();
147
- if (!text) return;
148
- try {
149
- setTtsSpeaking(true);
150
- const res = await fetch('/api/voice/tts', {
151
- method: 'POST',
152
- headers: { 'content-type': 'application/json' },
153
- body: JSON.stringify({
154
- text: String(text).slice(0, 3800),
155
- provider: ttsProvider,
156
- voice: ttsVoice || undefined,
157
- project_id: projectId,
158
- }),
159
- });
160
- if (!res.ok) throw new Error(`tts ${res.status}`);
161
- const blob = await res.blob();
162
- const url = URL.createObjectURL(blob);
163
- const audio = new Audio(url);
164
- audio.onended = () => { setTtsSpeaking(false); URL.revokeObjectURL(url); };
165
- audio.onerror = () => { setTtsSpeaking(false); URL.revokeObjectURL(url); };
166
- await audio.play();
167
- } catch (err) {
168
- setTtsSpeaking(false);
169
- setProviderError(String(err?.message || err));
170
- }
171
- }, [onSpeakLast, projectId, ttsProvider, ttsVoice]);
261
+ await speakText(text);
262
+ }, [onSpeakLast, speakText]);
172
263
 
173
264
  const liveTranscript = realtime.transcript.slice(-8);
265
+
266
+ // Activity strip source. In transport mode the tools run through the
267
+ // orchestrator, so surface mainAgent.liveSteps; otherwise use the Realtime
268
+ // hook's own tool-call tracking.
269
+ const pendingPills = transport
270
+ ? (mainAgent?.liveSteps || [])
271
+ .filter(s => s.status === 'running')
272
+ .map(s => ({ call_id: s.id, name: s.name }))
273
+ : realtime.pendingToolCalls;
274
+ const recentPills = transport
275
+ ? (mainAgent?.liveSteps || [])
276
+ .filter(s => s.status !== 'running')
277
+ .slice(-6)
278
+ .map(s => ({
279
+ call_id: s.id,
280
+ name: s.name,
281
+ status: s.status === 'awaiting_approval' ? 'approval' : (s.status === 'error' ? 'error' : 'ok'),
282
+ duration_ms: s.durationMs || 0,
283
+ }))
284
+ : (realtime.recentToolCalls || []);
174
285
  const caps = providers?.capabilities;
175
286
  const realtimeAvailable = Boolean(caps?.realtime?.openai);
176
287
  const ttsAvailable = Boolean(caps?.tts?.openai || caps?.tts?.elevenlabs || caps?.tts?.local);
@@ -219,6 +330,9 @@ function VoicePanel() {
219
330
  if (realtime.error) return STATE_COPY.error;
220
331
  if (realtime.pendingToolCalls.length > 0) return STATE_COPY.approval;
221
332
  if (mode === 'realtime') {
333
+ if (awaitingApproval) return 'Needs approval — open chat';
334
+ if (transport && mainAgent?.busy) return 'Thinking…';
335
+ if (transport && ttsSpeaking) return 'Speaking…';
222
336
  if (realtime.muted && isLive) return 'Muted — tap orb to end';
223
337
  if (isLive) return 'Listening — tap orb to end';
224
338
  if (isConnecting) return 'Connecting…';
@@ -302,21 +416,19 @@ function VoicePanel() {
302
416
  <div
303
417
  className={
304
418
  'voice-panel__activity' +
305
- (realtime.pendingToolCalls.length > 0 || (realtime.recentToolCalls && realtime.recentToolCalls.length > 0)
306
- ? ' is-active'
307
- : '')
419
+ (pendingPills.length > 0 || recentPills.length > 0 ? ' is-active' : '')
308
420
  }
309
421
  aria-live="polite"
310
422
  >
311
423
  <div className="voice-panel__activity-track">
312
- {realtime.pendingToolCalls.map(c => (
424
+ {pendingPills.map(c => (
313
425
  <span key={c.call_id} className="voice-panel__activity-pill voice-panel__activity-pill--running">
314
426
  <span className="voice-panel__activity-dot" aria-hidden />
315
427
  {c.name.replace(/_/g, ' ')}
316
428
  </span>
317
429
  ))}
318
- {(realtime.recentToolCalls || [])
319
- .filter(r => !realtime.pendingToolCalls.some(p => p.call_id === r.call_id))
430
+ {recentPills
431
+ .filter(r => !pendingPills.some(p => p.call_id === r.call_id))
320
432
  .slice(-6)
321
433
  .map(r => (
322
434
  <span
@@ -1,18 +1,25 @@
1
+ 'use client';
2
+
3
+ import { useState } from 'react';
4
+
1
5
  /**
2
- * Install toggle button — server-action backed via the surrounding `<form>`.
3
- * Generalised from the .tp-switch toggle on the legacy tools page.
6
+ * Install toggle button.
4
7
  *
5
- * The form action must be a Next.js server action that calls
6
- * `setItemInstalled(id, !installed)`. The action lives outside this component
7
- * so the toggle stays purely presentational and can be reused everywhere a
8
- * marketplace item is rendered.
8
+ * Two modes:
9
+ * - Client mode (preferred): pass `onToggle(nextInstalled) => Promise`. The
10
+ * toggle flips in place via fetch no full-page navigation. Used by the
11
+ * marketplace shell so installing a tool updates the card without a refresh.
12
+ * - Server-action mode (fallback): pass `action` (a Next.js server action). The
13
+ * surrounding `<form>` submits and the action redirects with a toast. Kept for
14
+ * progressive enhancement / no-JS.
9
15
  *
10
16
  * Hidden fields `current_kind` and `slug_hint` are echoed back to the server
11
17
  * action so the post-redirect toast can identify which item changed and which
12
18
  * tab to restore.
13
19
  *
14
20
  * @param {{
15
- * action: any,
21
+ * action?: any,
22
+ * onToggle?: (nextInstalled: boolean) => Promise<any>,
16
23
  * itemId: string,
17
24
  * installed: boolean,
18
25
  * available?: boolean,
@@ -24,6 +31,7 @@
24
31
  */
25
32
  export default function InstallToggle({
26
33
  action,
34
+ onToggle,
27
35
  itemId,
28
36
  installed,
29
37
  available = true,
@@ -32,8 +40,35 @@ export default function InstallToggle({
32
40
  slugHint,
33
41
  currentKind,
34
42
  }) {
35
- const isDisabled = disabled || !available;
43
+ const [busy, setBusy] = useState(false);
44
+ const isDisabled = disabled || !available || busy;
36
45
  const ariaLabel = label || `${installed ? 'Uninstall' : 'Install'} ${itemId}`;
46
+
47
+ // Client mode — no form, no navigation.
48
+ if (typeof onToggle === 'function') {
49
+ return (
50
+ <button
51
+ className={`mkt-toggle ${installed ? 'on' : ''}`}
52
+ type="button"
53
+ role="switch"
54
+ aria-checked={installed}
55
+ aria-label={ariaLabel}
56
+ aria-busy={busy || undefined}
57
+ disabled={isDisabled}
58
+ onClick={async () => {
59
+ if (isDisabled) return;
60
+ setBusy(true);
61
+ try {
62
+ await onToggle(!installed);
63
+ } finally {
64
+ setBusy(false);
65
+ }
66
+ }}
67
+ />
68
+ );
69
+ }
70
+
71
+ // Server-action fallback.
37
72
  return (
38
73
  <form action={action} className="mkt-toggle-form">
39
74
  <input type="hidden" name="item_id" value={itemId} />
@@ -46,7 +81,7 @@ export default function InstallToggle({
46
81
  role="switch"
47
82
  aria-checked={installed}
48
83
  aria-label={ariaLabel}
49
- disabled={isDisabled}
84
+ disabled={disabled || !available}
50
85
  />
51
86
  </form>
52
87
  );
package/app/globals.css CHANGED
@@ -47,7 +47,7 @@
47
47
  --font-mono: ui-monospace, SFMono-Regular, Menlo, monospace;
48
48
  }
49
49
 
50
- :root{--ink:#111318;--muted:#68707b;--gold:#d4b77f;--glass:rgba(255,255,255,.78);--line:rgba(20,22,26,.09);--radius:14px;
50
+ :root{--ink:#111318;--muted:#68707b;--gold:#d4b77f;--glass:rgba(255,255,255,.78);--line:rgba(20,22,26,.09);--radius:14px;--artifact-radius:14px;
51
51
  /* Marketplace brand tokens — see ai-docs/marketplace-brand.md */
52
52
  --mkt-tool-tint:#f3f1ec;
53
53
  --mkt-tool-ink:#3a3f47;
@@ -246,8 +246,21 @@
246
246
  .msg--loading{display:flex;align-items:center;padding:12px 14px;color:#9ca3af;min-height:38px;}
247
247
  .msg--streaming{opacity:.82;position:relative;}
248
248
  .msg--streaming::after{content:'';display:inline-block;width:2px;height:1em;background:currentColor;opacity:.5;margin-left:2px;vertical-align:text-bottom;animation:cursor-blink .9s step-end infinite;}
249
+ .msg--building::after{display:none;}
249
250
  @keyframes cursor-blink{0%,100%{opacity:.5;}50%{opacity:0;}}
250
251
 
252
+ /* Artifact-building placeholder — shown while the agent streams an HTML page
253
+ that will render on the canvas (the raw markup is hidden from chat). */
254
+ .artifact-building{display:inline-flex;align-items:center;gap:9px;padding:8px 13px;border-radius:12px;border:1px solid rgba(17,19,24,.08);background:linear-gradient(100deg,rgba(255,255,255,.6),rgba(247,248,250,.9));font-size:12.5px;color:#4a5059;}
255
+ .artifact-building-orb{width:13px;height:13px;border-radius:50%;flex-shrink:0;background:conic-gradient(from 0deg,var(--accent-500,#c2452a),rgba(194,69,42,.15),var(--accent-500,#c2452a));animation:artifact-spin 1s linear infinite;mask:radial-gradient(circle 3.5px at center,transparent 96%,#000 100%);-webkit-mask:radial-gradient(circle 3.5px at center,transparent 96%,#000 100%);}
256
+ .artifact-building-label{font-weight:600;letter-spacing:.01em;}
257
+ .artifact-building-dots{display:inline-block;}
258
+ .artifact-building-dots i{font-style:normal;opacity:.3;animation:artifact-dot 1.2s ease-in-out infinite;}
259
+ .artifact-building-dots i:nth-child(2){animation-delay:.18s;}
260
+ .artifact-building-dots i:nth-child(3){animation-delay:.36s;}
261
+ @keyframes artifact-spin{to{transform:rotate(360deg);}}
262
+ @keyframes artifact-dot{0%,70%,100%{opacity:.25;}35%{opacity:1;}}
263
+
251
264
  /* Inline delete confirmation — replaces winbar controls in place */
252
265
  .confirm-label{font-size:11.5px;font-weight:600;color:#111318;letter-spacing:-.01em;margin-right:2px;}
253
266
  .confirm-cancel,.confirm-delete{font-size:11px;font-weight:650;padding:3px 11px;border-radius:8px;border:0;cursor:pointer;transition:background .15s,transform .1s;}
@@ -259,9 +272,9 @@
259
272
 
260
273
  /* Fullscreen overlay — canvas-bound, rail + chat stay visible */
261
274
  .artifact-fs{position:absolute;inset:0;z-index:9100;display:flex;flex-direction:column;background:#f8f7f5;backdrop-filter:blur(24px);overflow:hidden;transform-origin:center center;will-change:transform,opacity,border-radius;transition:transform 260ms cubic-bezier(.22,.8,.24,1),opacity 220ms ease,border-radius 260ms cubic-bezier(.22,.8,.24,1),box-shadow 260ms ease;}
262
- .artifact-fs[data-phase="enter"]{transform:scale(.88) translateY(8px);opacity:0;border-radius:22px;box-shadow:0 30px 90px rgba(17,19,24,.18);}
263
- .artifact-fs[data-phase="open"]{transform:scale(1) translateY(0);opacity:1;border-radius:0;box-shadow:0 0 0 rgba(17,19,24,0);}
264
- .artifact-fs[data-phase="exit"]{transform:scale(.88) translateY(8px);opacity:0;border-radius:22px;box-shadow:0 30px 90px rgba(17,19,24,.16);pointer-events:none;}
275
+ .artifact-fs[data-phase="enter"]{transform:scale(.88) translateY(8px);opacity:0;border-radius:var(--artifact-radius);box-shadow:0 30px 90px rgba(17,19,24,.18);}
276
+ .artifact-fs[data-phase="open"]{transform:scale(1) translateY(0);opacity:1;border-radius:var(--artifact-radius);box-shadow:0 0 0 rgba(17,19,24,0);}
277
+ .artifact-fs[data-phase="exit"]{transform:scale(.88) translateY(8px);opacity:0;border-radius:var(--artifact-radius);box-shadow:0 30px 90px rgba(17,19,24,.16);pointer-events:none;}
265
278
  .artifact-fs--docked{bottom:0;}
266
279
  .artifact-fs-bar{flex:0 0 auto;background:rgba(246,247,248,.96);border-bottom:1px solid var(--line);position:relative;z-index:1;}
267
280
  .artifact-fs-content{flex:1;overflow:hidden;position:relative;background:#f8f7f5;}
@@ -270,7 +283,7 @@
270
283
  body:has(.artifact-fs[data-phase="open"]){overflow:hidden;}
271
284
  @media (prefers-reduced-motion: reduce){
272
285
  .artifact-fs{transition:opacity 120ms ease;}
273
- .artifact-fs[data-phase="enter"],.artifact-fs[data-phase="exit"]{transform:none;border-radius:0;}
286
+ .artifact-fs[data-phase="enter"],.artifact-fs[data-phase="exit"]{transform:none;border-radius:var(--artifact-radius);}
274
287
  }
275
288
 
276
289
  /* macOS-style dock — spaces switcher + minimised artifact cards */
@@ -442,7 +455,7 @@ body:has(.artifact-fs[data-phase="open"]){overflow:hidden;}
442
455
  .artifact-window-wrap[data-dragging="true"],.artifact-window-wrap[data-resizing="true"]{transition:none;}
443
456
  @keyframes artifact-enter{from{opacity:0;}to{opacity:1;}}
444
457
  @keyframes artifact-exit{to{opacity:0;transform:translate3d(0,12px,0) scale(.94);}}
445
- .artifact-window{width:100%;height:100%;display:flex;flex-direction:column;transition:transform .18s cubic-bezier(.32,.72,0,1),box-shadow .18s cubic-bezier(.32,.72,0,1);}
458
+ .artifact-window{width:100%;height:100%;display:flex;flex-direction:column;border-radius:var(--artifact-radius);overflow:hidden;transition:transform .18s cubic-bezier(.32,.72,0,1),box-shadow .18s cubic-bezier(.32,.72,0,1);}
446
459
  .artifact-window-wrap.is-dragging .artifact-window{box-shadow:none;}
447
460
  .artifact-window--new{box-shadow:0 18px 48px rgba(32,34,38,.22);}
448
461
 
@@ -985,6 +998,7 @@ a.admin-record-link{display:block;text-decoration:none;color:inherit;transition:
985
998
  .connection-setup-field-help a:hover{text-decoration:underline;}
986
999
  .connection-setup-error{margin:0;padding:10px 12px;background:#ffe3df;color:#9a3325;border-radius:10px;font-size:12.5px;line-height:1.55;}
987
1000
  .connection-setup-error small{display:block;margin-top:4px;font-size:11.5px;color:#7a3a30;}
1001
+ .connection-setup-disabled-hint{margin:0;font-size:12px;line-height:1.5;color:#80611b;}
988
1002
  .connection-setup-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:4px;}
989
1003
  .connection-setup-step-verify{align-items:center;padding:18px 0;color:#68707b;font-size:13px;}
990
1004
  .connection-setup-done-head{display:flex;align-items:center;gap:10px;}
@@ -993,7 +1007,7 @@ a.admin-record-link{display:block;text-decoration:none;color:inherit;transition:
993
1007
  .connection-setup-summary span+span{margin-left:4px;}
994
1008
  .connection-setup-unlocked{margin:0;font-size:12.5px;color:#2d7044;}
995
1009
  .connection-setup-deeplink{margin:0;}
996
- .connection-status{display:inline-flex;align-items:center;padding:4px 9px;border-radius:999px;font-size:10.5px;font-weight:850;letter-spacing:.06em;text-transform:uppercase;background:#eef2f6;color:#59616d;}
1010
+ .connection-status{display:inline-flex;align-items:center;padding:4px 9px;border-radius:999px;font-size:10.5px;font-weight:850;letter-spacing:.06em;text-transform:uppercase;background:#eef2f6;color:#59616d;max-width:100%;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
997
1011
  .connection-status.connected{background:#e8f6ee;color:#2d7044;}
998
1012
  .connection-status.error{background:#ffe3df;color:#9a3325;}
999
1013
  .connection-status.pending{background:#fff4d8;color:#80611b;}
@@ -1602,6 +1616,22 @@ a.admin-record-link{display:block;text-decoration:none;color:inherit;transition:
1602
1616
  /* CLI subprocess steps render as a compact icon-only pill — the model name is irrelevant to the user */
1603
1617
  .tool-step--cli{padding:6px 9px;border-radius:999px;}
1604
1618
  .tool-step--cli .tool-step-icon{color:#3a4150;}
1619
+ /* Verbose tool detail: output preview + elapsed duration */
1620
+ .tool-step-preview{font-size:10.5px;color:#8a9099;font-style:italic;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;opacity:.85;}
1621
+ .tool-step-dur{margin-left:auto;font-size:10px;font-family:ui-monospace,monospace;color:#9ca3af;font-weight:600;letter-spacing:.02em;flex-shrink:0;padding-left:6px;}
1622
+
1623
+ /* ── Live reasoning (extended thinking) disclosure ── */
1624
+ .thinking-disclosure{display:flex;flex-direction:column;gap:0;margin:2px 0;width:fit-content;max-width:100%;}
1625
+ .thinking-toggle{display:inline-flex;align-items:center;gap:7px;padding:5px 10px;border-radius:999px;border:1px solid rgba(17,19,24,.07);background:rgba(255,255,255,.62);color:#68707b;font:inherit;font-size:11.5px;cursor:pointer;width:fit-content;max-width:100%;transition:background .14s,border-color .14s;}
1626
+ .thinking-toggle:hover:not(:disabled){background:rgba(255,255,255,.85);border-color:rgba(17,19,24,.12);}
1627
+ .thinking-toggle:disabled{cursor:default;}
1628
+ .thinking-dot{width:7px;height:7px;border-radius:50%;background:#b0b6bf;flex-shrink:0;}
1629
+ .thinking-dot.pulsing{background:var(--accent-500,#c2452a);animation:livepulse 1.1s ease-in-out infinite;}
1630
+ .thinking-label{font-weight:650;color:#4a5059;letter-spacing:.01em;}
1631
+ .thinking-elapsed{font-size:10px;font-family:ui-monospace,monospace;color:#9ca3af;font-weight:600;background:rgba(17,19,24,.05);border-radius:6px;padding:1px 6px;}
1632
+ .thinking-caret{color:#9ca3af;transition:transform .16s;flex-shrink:0;}
1633
+ .thinking-caret.open{transform:rotate(180deg);}
1634
+ .thinking-body{margin:6px 2px 2px;padding:10px 12px;border-left:2px solid rgba(17,19,24,.10);background:rgba(17,19,24,.025);border-radius:0 8px 8px 0;font-size:12px;line-height:1.55;color:#6a7079;font-style:italic;white-space:pre-wrap;word-break:break-word;max-height:280px;overflow-y:auto;max-width:640px;}
1605
1635
 
1606
1636
  /* ── Runtime popover — compact stats ── */
1607
1637
  .runtime-compact-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;}
@@ -1873,7 +1903,8 @@ a.admin-record-link{display:block;text-decoration:none;color:inherit;transition:
1873
1903
  .mkt-page .mkt-card.kind-workflow::before{background:var(--mkt-workflow-ink);}
1874
1904
  .mkt-page .mkt-card:hover{transform:translateY(-2px);box-shadow:0 12px 32px rgba(17,19,24,.10),0 2px 4px rgba(17,19,24,.04);border-color:rgba(17,19,24,.12);}
1875
1905
  .mkt-page .mkt-card.on{background:linear-gradient(180deg,#fff 0%,#fbfaf7 100%);border-color:rgba(194,69,42,.22);box-shadow:0 6px 18px rgba(194,69,42,.08);}
1876
- .mkt-page .mkt-card-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
1906
+ .mkt-page .mkt-card-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-width:0;}
1907
+ .mkt-page .mkt-card-head > *{min-width:0;}
1877
1908
  .mkt-page .mkt-card-body{display:flex;flex-direction:column;gap:8px;flex:1;min-width:0;}
1878
1909
  .mkt-page .mkt-card-title{margin:0;font:500 15px/1.2 'IBM Plex Mono','SF Mono',ui-monospace,monospace;color:var(--mkt-installed);letter-spacing:-.01em;word-break:break-word;}
1879
1910
  .mkt-page .mkt-card-desc{margin:0;color:#69707b;font-size:13px;line-height:1.55;text-wrap:pretty;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;}
@@ -3643,6 +3674,115 @@ a.admin-record-link{display:block;text-decoration:none;color:inherit;transition:
3643
3674
  0%, 100% { opacity: 1; }
3644
3675
  50% { opacity: .4; }
3645
3676
  }
3677
+ /* ── Background-agent activity: clickable pill + detail popover ── */
3678
+ .app-topbar-activity-wrap { position: relative; display: inline-flex; }
3679
+ .app-topbar-activity {
3680
+ border: 1px solid rgba(20,22,26,.10);
3681
+ cursor: pointer;
3682
+ transition: border-color .14s ease, background .14s ease, box-shadow .14s ease;
3683
+ }
3684
+ .app-topbar-activity:hover { background: rgba(17,19,24,.07); border-color: rgba(20,22,26,.20); }
3685
+ .app-topbar-activity[aria-expanded="true"] { background: rgba(17,19,24,.08); border-color: rgba(20,22,26,.22); }
3686
+ .app-topbar-activity.is-running { border-color: rgba(194,69,42,.28); }
3687
+ .app-topbar-activity.is-running:hover { background: var(--accent-100, #fbe6e0); }
3688
+ .app-topbar-activity-glyph { flex: 0 0 auto; color: #8a9099; }
3689
+ .app-topbar-activity.is-running .app-topbar-activity-glyph { color: var(--accent-600, #a5371f); }
3690
+ /* Static dot only adds noise at idle — keep it for the running pulse only. */
3691
+ .app-topbar-activity:not(.is-running) .app-topbar-dot { display: none; }
3692
+ /* Empty state inside the popover */
3693
+ .bg-activity-empty {
3694
+ display: flex;
3695
+ flex-direction: column;
3696
+ align-items: center;
3697
+ gap: 5px;
3698
+ text-align: center;
3699
+ padding: 20px 14px 16px;
3700
+ color: #69707a;
3701
+ }
3702
+ .bg-activity-empty > svg { color: #b4bac1; margin-bottom: 2px; }
3703
+ .bg-activity-empty span { font-size: 12px; font-weight: 600; color: #4a5059; }
3704
+ .bg-activity-empty small { font-size: 10.5px; color: #9ca3af; }
3705
+ .app-topbar-activity-label {
3706
+ max-width: 220px;
3707
+ overflow: hidden;
3708
+ text-overflow: ellipsis;
3709
+ white-space: nowrap;
3710
+ }
3711
+ .bg-activity-pop {
3712
+ /* Portaled to <body> so it escapes the topbar's backdrop-filter stacking
3713
+ context and paints above canvas artifacts (.artifact-fs is z-index 9100).
3714
+ top/right are set inline from the trigger's viewport rect. Stays below the
3715
+ search (12000) and help (12100) overlays. */
3716
+ position: fixed;
3717
+ z-index: 9300;
3718
+ width: 320px;
3719
+ max-height: min(70vh, 460px);
3720
+ overflow-y: auto;
3721
+ padding: 10px;
3722
+ border-radius: 14px;
3723
+ background: var(--glass, rgba(255,255,255,.92));
3724
+ border: 1px solid rgba(255,255,255,.85);
3725
+ box-shadow: 0 16px 44px rgba(17,19,24,.18), inset 0 1px 0 rgba(255,255,255,.6);
3726
+ backdrop-filter: saturate(160%) blur(16px);
3727
+ -webkit-backdrop-filter: saturate(160%) blur(16px);
3728
+ animation: bgActivityIn .14s ease;
3729
+ }
3730
+ @keyframes bgActivityIn {
3731
+ from { opacity: 0; transform: translateY(-4px); }
3732
+ to { opacity: 1; transform: translateY(0); }
3733
+ }
3734
+ .bg-activity-head { display: flex; flex-direction: column; gap: 1px; padding: 2px 4px 8px; }
3735
+ .bg-activity-head b { font-size: 12px; font-weight: 700; color: #1c1f25; }
3736
+ .bg-activity-head small { font-size: 10.5px; color: #8a9099; font-weight: 500; }
3737
+ .bg-activity-list { display: flex; flex-direction: column; gap: 6px; }
3738
+ .bg-activity-agent {
3739
+ padding: 8px;
3740
+ border-radius: 11px;
3741
+ border: 1px solid rgba(17,19,24,.07);
3742
+ background: rgba(255,255,255,.6);
3743
+ }
3744
+ .bg-activity-agent--running { border-color: rgba(194,69,42,.22); background: var(--accent-50, #fdf2ef); }
3745
+ .bg-activity-agent--failed { border-color: rgba(194,69,42,.28); }
3746
+ .bg-activity-agent-head { display: flex; align-items: center; gap: 7px; min-width: 0; }
3747
+ .bg-activity-agent-icon { display: inline-flex; flex: 0 0 auto; color: #68707b; }
3748
+ .bg-activity-agent--running .bg-activity-agent-icon { color: var(--accent-600, #a5371f); }
3749
+ .bg-activity-agent--complete .bg-activity-agent-icon { color: #2e7d52; }
3750
+ .bg-activity-agent--failed .bg-activity-agent-icon { color: #c2452a; }
3751
+ .bg-activity-agent-name {
3752
+ font-size: 12px; font-weight: 600; color: #1c1f25;
3753
+ overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0;
3754
+ }
3755
+ .bg-activity-agent-by { font-size: 10px; color: #9ca3af; font-weight: 500; flex: 0 0 auto; }
3756
+ .bg-activity-agent-status {
3757
+ margin-left: auto; flex: 0 0 auto;
3758
+ font-size: 10px; font-weight: 600; color: #69707a;
3759
+ font-family: ui-monospace, 'IBM Plex Mono', monospace;
3760
+ }
3761
+ .bg-activity-agent--running .bg-activity-agent-status { color: var(--accent-700, #7c2b19); }
3762
+ .bg-activity-steps { display: flex; flex-direction: column; gap: 3px; margin-top: 7px; padding-left: 2px; }
3763
+ .bg-activity-step { display: flex; align-items: center; gap: 6px; min-width: 0; }
3764
+ .bg-activity-step-icon { display: inline-flex; flex: 0 0 auto; color: #a2a8b0; }
3765
+ .bg-activity-step--done .bg-activity-step-icon { color: #2e7d52; }
3766
+ .bg-activity-step--error .bg-activity-step-icon { color: #c2452a; }
3767
+ .bg-activity-step--running .bg-activity-step-icon { color: var(--accent-500, #c2452a); }
3768
+ .bg-activity-step-name {
3769
+ font-family: ui-monospace, 'IBM Plex Mono', monospace;
3770
+ font-size: 10.5px; color: #4a5059; flex: 0 0 auto; white-space: nowrap;
3771
+ }
3772
+ .bg-activity-step--done .bg-activity-step-name { color: #6b7280; }
3773
+ .bg-activity-step-sub {
3774
+ font-size: 10.5px; color: #8a9099;
3775
+ overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0;
3776
+ }
3777
+ .bg-activity-foot {
3778
+ display: block; margin-top: 9px; padding: 6px 4px 2px;
3779
+ font-size: 11px; font-weight: 600; color: var(--accent-600, #a5371f);
3780
+ text-decoration: none;
3781
+ }
3782
+ .bg-activity-foot:hover { text-decoration: underline; }
3783
+ @media (max-width: 980px) {
3784
+ .bg-activity-pop { width: min(320px, calc(100vw - 28px)); }
3785
+ }
3646
3786
  .app-topbar-search {
3647
3787
  display: inline-flex;
3648
3788
  align-items: center;