@agent-native/core 0.5.0-dev.b51eaae → 0.7.1

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 (1011) hide show
  1. package/README.md +49 -37
  2. package/dist/a2a/agent-card.d.ts.map +1 -1
  3. package/dist/a2a/agent-card.js +12 -1
  4. package/dist/a2a/agent-card.js.map +1 -1
  5. package/dist/a2a/client.d.ts +11 -0
  6. package/dist/a2a/client.d.ts.map +1 -1
  7. package/dist/a2a/client.js +38 -1
  8. package/dist/a2a/client.js.map +1 -1
  9. package/dist/a2a/index.d.ts +1 -1
  10. package/dist/a2a/index.d.ts.map +1 -1
  11. package/dist/a2a/index.js +1 -1
  12. package/dist/a2a/index.js.map +1 -1
  13. package/dist/a2a/server.d.ts +4 -0
  14. package/dist/a2a/server.d.ts.map +1 -1
  15. package/dist/a2a/server.js +53 -8
  16. package/dist/a2a/server.js.map +1 -1
  17. package/dist/a2a/types.d.ts +1 -0
  18. package/dist/a2a/types.d.ts.map +1 -1
  19. package/dist/action.d.ts +64 -30
  20. package/dist/action.d.ts.map +1 -1
  21. package/dist/action.js +224 -27
  22. package/dist/action.js.map +1 -1
  23. package/dist/agent/engine/ai-sdk-engine.d.ts +24 -0
  24. package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -0
  25. package/dist/agent/engine/ai-sdk-engine.js +302 -0
  26. package/dist/agent/engine/ai-sdk-engine.js.map +1 -0
  27. package/dist/agent/engine/anthropic-engine.d.ts +24 -0
  28. package/dist/agent/engine/anthropic-engine.d.ts.map +1 -0
  29. package/dist/agent/engine/anthropic-engine.js +169 -0
  30. package/dist/agent/engine/anthropic-engine.js.map +1 -0
  31. package/dist/agent/engine/builtin.d.ts +12 -0
  32. package/dist/agent/engine/builtin.d.ts.map +1 -0
  33. package/dist/agent/engine/builtin.js +72 -0
  34. package/dist/agent/engine/builtin.js.map +1 -0
  35. package/dist/agent/engine/index.d.ts +9 -0
  36. package/dist/agent/engine/index.d.ts.map +1 -0
  37. package/dist/agent/engine/index.js +8 -0
  38. package/dist/agent/engine/index.js.map +1 -0
  39. package/dist/agent/engine/registry.d.ts +61 -0
  40. package/dist/agent/engine/registry.d.ts.map +1 -0
  41. package/dist/agent/engine/registry.js +101 -0
  42. package/dist/agent/engine/registry.js.map +1 -0
  43. package/dist/agent/engine/translate-ai-sdk.d.ts +20 -0
  44. package/dist/agent/engine/translate-ai-sdk.d.ts.map +1 -0
  45. package/dist/agent/engine/translate-ai-sdk.js +174 -0
  46. package/dist/agent/engine/translate-ai-sdk.js.map +1 -0
  47. package/dist/agent/engine/translate-anthropic.d.ts +23 -0
  48. package/dist/agent/engine/translate-anthropic.d.ts.map +1 -0
  49. package/dist/agent/engine/translate-anthropic.js +140 -0
  50. package/dist/agent/engine/translate-anthropic.js.map +1 -0
  51. package/dist/agent/engine/types.d.ts +168 -0
  52. package/dist/agent/engine/types.d.ts.map +1 -0
  53. package/dist/agent/engine/types.js +13 -0
  54. package/dist/agent/engine/types.js.map +1 -0
  55. package/dist/agent/production-agent.d.ts +48 -2
  56. package/dist/agent/production-agent.d.ts.map +1 -1
  57. package/dist/agent/production-agent.js +369 -79
  58. package/dist/agent/production-agent.js.map +1 -1
  59. package/dist/agent/run-manager.d.ts +1 -1
  60. package/dist/agent/run-manager.d.ts.map +1 -1
  61. package/dist/agent/run-manager.js +15 -9
  62. package/dist/agent/run-manager.js.map +1 -1
  63. package/dist/agent/run-store.d.ts.map +1 -1
  64. package/dist/agent/run-store.js +5 -5
  65. package/dist/agent/run-store.js.map +1 -1
  66. package/dist/agent/thread-data-builder.d.ts +1 -0
  67. package/dist/agent/thread-data-builder.d.ts.map +1 -1
  68. package/dist/agent/thread-data-builder.js +4 -1
  69. package/dist/agent/thread-data-builder.js.map +1 -1
  70. package/dist/agent/types.d.ts +23 -2
  71. package/dist/agent/types.d.ts.map +1 -1
  72. package/dist/application-state/handlers.d.ts +8 -8
  73. package/dist/application-state/handlers.d.ts.map +1 -1
  74. package/dist/application-state/handlers.js +3 -2
  75. package/dist/application-state/handlers.js.map +1 -1
  76. package/dist/application-state/script-helpers.d.ts.map +1 -1
  77. package/dist/application-state/script-helpers.js +47 -9
  78. package/dist/application-state/script-helpers.js.map +1 -1
  79. package/dist/chat-threads/store.d.ts +14 -0
  80. package/dist/chat-threads/store.d.ts.map +1 -1
  81. package/dist/chat-threads/store.js +32 -0
  82. package/dist/chat-threads/store.js.map +1 -1
  83. package/dist/cli/create-workspace.d.ts +8 -0
  84. package/dist/cli/create-workspace.d.ts.map +1 -0
  85. package/dist/cli/create-workspace.js +18 -0
  86. package/dist/cli/create-workspace.js.map +1 -0
  87. package/dist/cli/create.d.ts +36 -2
  88. package/dist/cli/create.d.ts.map +1 -1
  89. package/dist/cli/create.js +509 -61
  90. package/dist/cli/create.js.map +1 -1
  91. package/dist/cli/index.js +73 -6
  92. package/dist/cli/index.js.map +1 -1
  93. package/dist/cli/workspacify.d.ts +18 -0
  94. package/dist/cli/workspacify.d.ts.map +1 -0
  95. package/dist/cli/workspacify.js +74 -0
  96. package/dist/cli/workspacify.js.map +1 -0
  97. package/dist/client/AgentPanel.d.ts +6 -2
  98. package/dist/client/AgentPanel.d.ts.map +1 -1
  99. package/dist/client/AgentPanel.js +314 -180
  100. package/dist/client/AgentPanel.js.map +1 -1
  101. package/dist/client/AgentTaskCard.d.ts +12 -0
  102. package/dist/client/AgentTaskCard.d.ts.map +1 -0
  103. package/dist/client/AgentTaskCard.js +146 -0
  104. package/dist/client/AgentTaskCard.js.map +1 -0
  105. package/dist/client/AssistantChat.d.ts +13 -2
  106. package/dist/client/AssistantChat.d.ts.map +1 -1
  107. package/dist/client/AssistantChat.js +344 -122
  108. package/dist/client/AssistantChat.js.map +1 -1
  109. package/dist/client/MultiTabAssistantChat.d.ts +7 -1
  110. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  111. package/dist/client/MultiTabAssistantChat.js +345 -63
  112. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  113. package/dist/client/PoweredByBadge.js +2 -2
  114. package/dist/client/PoweredByBadge.js.map +1 -1
  115. package/dist/client/Turnstile.d.ts.map +1 -1
  116. package/dist/client/Turnstile.js +2 -3
  117. package/dist/client/Turnstile.js.map +1 -1
  118. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  119. package/dist/client/agent-chat-adapter.js +63 -2
  120. package/dist/client/agent-chat-adapter.js.map +1 -1
  121. package/dist/client/agent-chat.d.ts +14 -1
  122. package/dist/client/agent-chat.d.ts.map +1 -1
  123. package/dist/client/agent-chat.js +4 -2
  124. package/dist/client/agent-chat.js.map +1 -1
  125. package/dist/client/components/CodeAgentIndicator.d.ts +14 -0
  126. package/dist/client/components/CodeAgentIndicator.d.ts.map +1 -0
  127. package/dist/client/components/CodeAgentIndicator.js +29 -0
  128. package/dist/client/components/CodeAgentIndicator.js.map +1 -0
  129. package/dist/client/components/CodeRequiredDialog.d.ts.map +1 -1
  130. package/dist/client/components/CodeRequiredDialog.js +86 -5
  131. package/dist/client/components/CodeRequiredDialog.js.map +1 -1
  132. package/dist/client/composer/MentionPopover.d.ts +4 -1
  133. package/dist/client/composer/MentionPopover.d.ts.map +1 -1
  134. package/dist/client/composer/MentionPopover.js +51 -8
  135. package/dist/client/composer/MentionPopover.js.map +1 -1
  136. package/dist/client/composer/TiptapComposer.d.ts +8 -1
  137. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  138. package/dist/client/composer/TiptapComposer.js +149 -17
  139. package/dist/client/composer/TiptapComposer.js.map +1 -1
  140. package/dist/client/composer/index.d.ts +1 -1
  141. package/dist/client/composer/index.d.ts.map +1 -1
  142. package/dist/client/composer/types.d.ts +6 -1
  143. package/dist/client/composer/types.d.ts.map +1 -1
  144. package/dist/client/composer/use-mention-search.d.ts.map +1 -1
  145. package/dist/client/composer/use-mention-search.js +46 -13
  146. package/dist/client/composer/use-mention-search.js.map +1 -1
  147. package/dist/client/frame-protocol.d.ts +54 -0
  148. package/dist/client/frame-protocol.d.ts.map +1 -0
  149. package/dist/client/frame-protocol.js +9 -0
  150. package/dist/client/frame-protocol.js.map +1 -0
  151. package/dist/client/frame.d.ts +56 -0
  152. package/dist/client/frame.d.ts.map +1 -0
  153. package/dist/client/{harness.js → frame.js} +49 -26
  154. package/dist/client/frame.js.map +1 -0
  155. package/dist/client/index.d.ts +7 -3
  156. package/dist/client/index.d.ts.map +1 -1
  157. package/dist/client/index.js +6 -3
  158. package/dist/client/index.js.map +1 -1
  159. package/dist/client/integrations/IntegrationCard.d.ts +6 -0
  160. package/dist/client/integrations/IntegrationCard.d.ts.map +1 -0
  161. package/dist/client/integrations/IntegrationCard.js +45 -0
  162. package/dist/client/integrations/IntegrationCard.js.map +1 -0
  163. package/dist/client/integrations/IntegrationsPanel.d.ts +2 -0
  164. package/dist/client/integrations/IntegrationsPanel.d.ts.map +1 -0
  165. package/dist/client/integrations/IntegrationsPanel.js +162 -0
  166. package/dist/client/integrations/IntegrationsPanel.js.map +1 -0
  167. package/dist/client/integrations/index.d.ts +4 -0
  168. package/dist/client/integrations/index.d.ts.map +1 -0
  169. package/dist/client/integrations/index.js +3 -0
  170. package/dist/client/integrations/index.js.map +1 -0
  171. package/dist/client/integrations/useIntegrationStatus.d.ts +15 -0
  172. package/dist/client/integrations/useIntegrationStatus.d.ts.map +1 -0
  173. package/dist/client/integrations/useIntegrationStatus.js +37 -0
  174. package/dist/client/integrations/useIntegrationStatus.js.map +1 -0
  175. package/dist/client/onboarding/OnboardingBanner.d.ts +13 -0
  176. package/dist/client/onboarding/OnboardingBanner.d.ts.map +1 -0
  177. package/dist/client/onboarding/OnboardingBanner.js +36 -0
  178. package/dist/client/onboarding/OnboardingBanner.js.map +1 -0
  179. package/dist/client/onboarding/OnboardingPanel.d.ts +16 -0
  180. package/dist/client/onboarding/OnboardingPanel.d.ts.map +1 -0
  181. package/dist/client/onboarding/OnboardingPanel.js +360 -0
  182. package/dist/client/onboarding/OnboardingPanel.js.map +1 -0
  183. package/dist/client/onboarding/SetupButton.d.ts +10 -0
  184. package/dist/client/onboarding/SetupButton.d.ts.map +1 -0
  185. package/dist/client/onboarding/SetupButton.js +26 -0
  186. package/dist/client/onboarding/SetupButton.js.map +1 -0
  187. package/dist/client/onboarding/index.d.ts +12 -0
  188. package/dist/client/onboarding/index.d.ts.map +1 -0
  189. package/dist/client/onboarding/index.js +11 -0
  190. package/dist/client/onboarding/index.js.map +1 -0
  191. package/dist/client/onboarding/use-onboarding.d.ts +34 -0
  192. package/dist/client/onboarding/use-onboarding.d.ts.map +1 -0
  193. package/dist/client/onboarding/use-onboarding.js +101 -0
  194. package/dist/client/onboarding/use-onboarding.js.map +1 -0
  195. package/dist/client/org/InvitationBanner.d.ts +9 -0
  196. package/dist/client/org/InvitationBanner.d.ts.map +1 -0
  197. package/dist/client/org/InvitationBanner.js +17 -0
  198. package/dist/client/org/InvitationBanner.js.map +1 -0
  199. package/dist/client/org/OrgSwitcher.d.ts +14 -0
  200. package/dist/client/org/OrgSwitcher.d.ts.map +1 -0
  201. package/dist/client/org/OrgSwitcher.js +51 -0
  202. package/dist/client/org/OrgSwitcher.js.map +1 -0
  203. package/dist/client/org/TeamPage.d.ts +28 -0
  204. package/dist/client/org/TeamPage.d.ts.map +1 -0
  205. package/dist/client/org/TeamPage.js +216 -0
  206. package/dist/client/org/TeamPage.js.map +1 -0
  207. package/dist/client/org/hooks.d.ts +14 -0
  208. package/dist/client/org/hooks.d.ts.map +1 -0
  209. package/dist/client/org/hooks.js +101 -0
  210. package/dist/client/org/hooks.js.map +1 -0
  211. package/dist/client/org/index.d.ts +6 -0
  212. package/dist/client/org/index.d.ts.map +1 -0
  213. package/dist/client/org/index.js +6 -0
  214. package/dist/client/org/index.js.map +1 -0
  215. package/dist/client/resources/ResourceEditor.d.ts +8 -1
  216. package/dist/client/resources/ResourceEditor.d.ts.map +1 -1
  217. package/dist/client/resources/ResourceEditor.js +141 -89
  218. package/dist/client/resources/ResourceEditor.js.map +1 -1
  219. package/dist/client/resources/ResourceTree.d.ts +5 -1
  220. package/dist/client/resources/ResourceTree.d.ts.map +1 -1
  221. package/dist/client/resources/ResourceTree.js +33 -5
  222. package/dist/client/resources/ResourceTree.js.map +1 -1
  223. package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
  224. package/dist/client/resources/ResourcesPanel.js +260 -109
  225. package/dist/client/resources/ResourcesPanel.js.map +1 -1
  226. package/dist/client/resources/use-resources.d.ts +15 -0
  227. package/dist/client/resources/use-resources.d.ts.map +1 -1
  228. package/dist/client/resources/use-resources.js +2 -2
  229. package/dist/client/resources/use-resources.js.map +1 -1
  230. package/dist/client/settings/AgentsSection.d.ts +2 -0
  231. package/dist/client/settings/AgentsSection.d.ts.map +1 -0
  232. package/dist/client/settings/AgentsSection.js +198 -0
  233. package/dist/client/settings/AgentsSection.js.map +1 -0
  234. package/dist/client/settings/BackgroundAgentSection.d.ts +2 -0
  235. package/dist/client/settings/BackgroundAgentSection.d.ts.map +1 -0
  236. package/dist/client/settings/BackgroundAgentSection.js +46 -0
  237. package/dist/client/settings/BackgroundAgentSection.js.map +1 -0
  238. package/dist/client/settings/BrowserSection.d.ts +2 -0
  239. package/dist/client/settings/BrowserSection.d.ts.map +1 -0
  240. package/dist/client/settings/BrowserSection.js +10 -0
  241. package/dist/client/settings/BrowserSection.js.map +1 -0
  242. package/dist/client/settings/ComingSoonSection.d.ts +13 -0
  243. package/dist/client/settings/ComingSoonSection.d.ts.map +1 -0
  244. package/dist/client/settings/ComingSoonSection.js +9 -0
  245. package/dist/client/settings/ComingSoonSection.js.map +1 -0
  246. package/dist/client/settings/LLMSection.d.ts +2 -0
  247. package/dist/client/settings/LLMSection.d.ts.map +1 -0
  248. package/dist/client/settings/LLMSection.js +64 -0
  249. package/dist/client/settings/LLMSection.js.map +1 -0
  250. package/dist/client/settings/SettingsPanel.d.ts +8 -0
  251. package/dist/client/settings/SettingsPanel.d.ts.map +1 -0
  252. package/dist/client/settings/SettingsPanel.js +118 -0
  253. package/dist/client/settings/SettingsPanel.js.map +1 -0
  254. package/dist/client/settings/SettingsSection.d.ts +19 -0
  255. package/dist/client/settings/SettingsSection.d.ts.map +1 -0
  256. package/dist/client/settings/SettingsSection.js +10 -0
  257. package/dist/client/settings/SettingsSection.js.map +1 -0
  258. package/dist/client/settings/index.d.ts +3 -0
  259. package/dist/client/settings/index.d.ts.map +1 -0
  260. package/dist/client/settings/index.js +3 -0
  261. package/dist/client/settings/index.js.map +1 -0
  262. package/dist/client/settings/useBuilderStatus.d.ts +22 -0
  263. package/dist/client/settings/useBuilderStatus.d.ts.map +1 -0
  264. package/dist/client/settings/useBuilderStatus.js +41 -0
  265. package/dist/client/settings/useBuilderStatus.js.map +1 -0
  266. package/dist/client/sse-event-processor.d.ts +9 -1
  267. package/dist/client/sse-event-processor.d.ts.map +1 -1
  268. package/dist/client/sse-event-processor.js +36 -3
  269. package/dist/client/sse-event-processor.js.map +1 -1
  270. package/dist/client/terminal/AgentTerminal.d.ts +4 -4
  271. package/dist/client/terminal/AgentTerminal.d.ts.map +1 -1
  272. package/dist/client/terminal/AgentTerminal.js +14 -14
  273. package/dist/client/terminal/AgentTerminal.js.map +1 -1
  274. package/dist/client/use-action.d.ts +51 -0
  275. package/dist/client/use-action.d.ts.map +1 -0
  276. package/dist/client/use-action.js +102 -0
  277. package/dist/client/use-action.js.map +1 -0
  278. package/dist/client/use-avatar.d.ts +15 -0
  279. package/dist/client/use-avatar.d.ts.map +1 -0
  280. package/dist/client/use-avatar.js +116 -0
  281. package/dist/client/use-avatar.js.map +1 -0
  282. package/dist/client/use-chat-threads.d.ts +1 -1
  283. package/dist/client/use-chat-threads.d.ts.map +1 -1
  284. package/dist/client/use-chat-threads.js +34 -18
  285. package/dist/client/use-chat-threads.js.map +1 -1
  286. package/dist/client/use-dev-mode.d.ts.map +1 -1
  287. package/dist/client/use-dev-mode.js +2 -0
  288. package/dist/client/use-dev-mode.js.map +1 -1
  289. package/dist/client/use-send-to-agent-chat.d.ts +7 -4
  290. package/dist/client/use-send-to-agent-chat.d.ts.map +1 -1
  291. package/dist/client/use-send-to-agent-chat.js +31 -10
  292. package/dist/client/use-send-to-agent-chat.js.map +1 -1
  293. package/dist/collab/awareness.d.ts +41 -0
  294. package/dist/collab/awareness.d.ts.map +1 -0
  295. package/dist/collab/awareness.js +82 -0
  296. package/dist/collab/awareness.js.map +1 -0
  297. package/dist/collab/client.d.ts +49 -0
  298. package/dist/collab/client.d.ts.map +1 -0
  299. package/dist/collab/client.js +250 -0
  300. package/dist/collab/client.js.map +1 -0
  301. package/dist/collab/emitter.d.ts +12 -0
  302. package/dist/collab/emitter.d.ts.map +1 -0
  303. package/dist/collab/emitter.js +16 -0
  304. package/dist/collab/emitter.js.map +1 -0
  305. package/dist/collab/index.d.ts +7 -0
  306. package/dist/collab/index.d.ts.map +1 -0
  307. package/dist/collab/index.js +14 -0
  308. package/dist/collab/index.js.map +1 -0
  309. package/dist/collab/routes.d.ts +69 -0
  310. package/dist/collab/routes.d.ts.map +1 -0
  311. package/dist/collab/routes.js +98 -0
  312. package/dist/collab/routes.js.map +1 -0
  313. package/dist/collab/storage.d.ts +18 -0
  314. package/dist/collab/storage.d.ts.map +1 -0
  315. package/dist/collab/storage.js +94 -0
  316. package/dist/collab/storage.js.map +1 -0
  317. package/dist/collab/text-to-yjs.d.ts +23 -0
  318. package/dist/collab/text-to-yjs.d.ts.map +1 -0
  319. package/dist/collab/text-to-yjs.js +63 -0
  320. package/dist/collab/text-to-yjs.js.map +1 -0
  321. package/dist/collab/xml-ops.d.ts +20 -0
  322. package/dist/collab/xml-ops.d.ts.map +1 -0
  323. package/dist/collab/xml-ops.js +59 -0
  324. package/dist/collab/xml-ops.js.map +1 -0
  325. package/dist/collab/ydoc-manager.d.ts +52 -0
  326. package/dist/collab/ydoc-manager.d.ts.map +1 -0
  327. package/dist/collab/ydoc-manager.js +154 -0
  328. package/dist/collab/ydoc-manager.js.map +1 -0
  329. package/dist/db/client.d.ts +10 -0
  330. package/dist/db/client.d.ts.map +1 -1
  331. package/dist/db/client.js +43 -2
  332. package/dist/db/client.js.map +1 -1
  333. package/dist/db/create-get-db.js.map +1 -1
  334. package/dist/db/index.d.ts +1 -1
  335. package/dist/db/index.d.ts.map +1 -1
  336. package/dist/db/index.js +1 -1
  337. package/dist/db/index.js.map +1 -1
  338. package/dist/db/migrations.d.ts +9 -1
  339. package/dist/db/migrations.d.ts.map +1 -1
  340. package/dist/db/migrations.js +45 -20
  341. package/dist/db/migrations.js.map +1 -1
  342. package/dist/db/schema.d.ts +8 -1
  343. package/dist/db/schema.d.ts.map +1 -1
  344. package/dist/db/schema.js +13 -2
  345. package/dist/db/schema.js.map +1 -1
  346. package/dist/deploy/build.js +795 -86
  347. package/dist/deploy/build.js.map +1 -1
  348. package/dist/deploy/route-discovery.d.ts +22 -4
  349. package/dist/deploy/route-discovery.d.ts.map +1 -1
  350. package/dist/deploy/route-discovery.js +148 -35
  351. package/dist/deploy/route-discovery.js.map +1 -1
  352. package/dist/deploy/workspace-core.d.ts +28 -0
  353. package/dist/deploy/workspace-core.d.ts.map +1 -0
  354. package/dist/deploy/workspace-core.js +223 -0
  355. package/dist/deploy/workspace-core.js.map +1 -0
  356. package/dist/deploy/workspace-deploy.d.ts +11 -0
  357. package/dist/deploy/workspace-deploy.d.ts.map +1 -0
  358. package/dist/deploy/workspace-deploy.js +148 -0
  359. package/dist/deploy/workspace-deploy.js.map +1 -0
  360. package/dist/file-upload/builder.d.ts +11 -0
  361. package/dist/file-upload/builder.d.ts.map +1 -0
  362. package/dist/file-upload/builder.js +53 -0
  363. package/dist/file-upload/builder.js.map +1 -0
  364. package/dist/file-upload/index.d.ts +4 -0
  365. package/dist/file-upload/index.d.ts.map +1 -0
  366. package/dist/file-upload/index.js +3 -0
  367. package/dist/file-upload/index.js.map +1 -0
  368. package/dist/file-upload/registry.d.ts +23 -0
  369. package/dist/file-upload/registry.d.ts.map +1 -0
  370. package/dist/file-upload/registry.js +52 -0
  371. package/dist/file-upload/registry.js.map +1 -0
  372. package/dist/file-upload/types.d.ts +37 -0
  373. package/dist/file-upload/types.d.ts.map +1 -0
  374. package/dist/file-upload/types.js +10 -0
  375. package/dist/file-upload/types.js.map +1 -0
  376. package/dist/index.browser.d.ts +2 -0
  377. package/dist/index.browser.d.ts.map +1 -1
  378. package/dist/index.browser.js +4 -0
  379. package/dist/index.browser.js.map +1 -1
  380. package/dist/index.d.ts +3 -3
  381. package/dist/index.d.ts.map +1 -1
  382. package/dist/index.js +2 -2
  383. package/dist/index.js.map +1 -1
  384. package/dist/integrations/adapters/google-docs.d.ts +89 -0
  385. package/dist/integrations/adapters/google-docs.d.ts.map +1 -0
  386. package/dist/integrations/adapters/google-docs.js +261 -0
  387. package/dist/integrations/adapters/google-docs.js.map +1 -0
  388. package/dist/integrations/adapters/slack.d.ts +10 -0
  389. package/dist/integrations/adapters/slack.d.ts.map +1 -0
  390. package/dist/integrations/adapters/slack.js +249 -0
  391. package/dist/integrations/adapters/slack.js.map +1 -0
  392. package/dist/integrations/adapters/telegram.d.ts +12 -0
  393. package/dist/integrations/adapters/telegram.d.ts.map +1 -0
  394. package/dist/integrations/adapters/telegram.js +216 -0
  395. package/dist/integrations/adapters/telegram.js.map +1 -0
  396. package/dist/integrations/adapters/whatsapp.d.ts +14 -0
  397. package/dist/integrations/adapters/whatsapp.d.ts.map +1 -0
  398. package/dist/integrations/adapters/whatsapp.js +205 -0
  399. package/dist/integrations/adapters/whatsapp.js.map +1 -0
  400. package/dist/integrations/config-store.d.ts +24 -0
  401. package/dist/integrations/config-store.d.ts.map +1 -0
  402. package/dist/integrations/config-store.js +92 -0
  403. package/dist/integrations/config-store.js.map +1 -0
  404. package/dist/integrations/google-docs-poller.d.ts +54 -0
  405. package/dist/integrations/google-docs-poller.d.ts.map +1 -0
  406. package/dist/integrations/google-docs-poller.js +442 -0
  407. package/dist/integrations/google-docs-poller.js.map +1 -0
  408. package/dist/integrations/index.d.ts +10 -0
  409. package/dist/integrations/index.d.ts.map +1 -0
  410. package/dist/integrations/index.js +13 -0
  411. package/dist/integrations/index.js.map +1 -0
  412. package/dist/integrations/plugin.d.ts +20 -0
  413. package/dist/integrations/plugin.d.ts.map +1 -0
  414. package/dist/integrations/plugin.js +260 -0
  415. package/dist/integrations/plugin.js.map +1 -0
  416. package/dist/integrations/thread-mapping-store.d.ts +25 -0
  417. package/dist/integrations/thread-mapping-store.d.ts.map +1 -0
  418. package/dist/integrations/thread-mapping-store.js +95 -0
  419. package/dist/integrations/thread-mapping-store.js.map +1 -0
  420. package/dist/integrations/types.d.ts +144 -0
  421. package/dist/integrations/types.d.ts.map +1 -0
  422. package/dist/integrations/types.js +2 -0
  423. package/dist/integrations/types.js.map +1 -0
  424. package/dist/integrations/webhook-handler.d.ts +40 -0
  425. package/dist/integrations/webhook-handler.d.ts.map +1 -0
  426. package/dist/integrations/webhook-handler.js +220 -0
  427. package/dist/integrations/webhook-handler.js.map +1 -0
  428. package/dist/jobs/cron.d.ts +14 -0
  429. package/dist/jobs/cron.d.ts.map +1 -0
  430. package/dist/jobs/cron.js +100 -0
  431. package/dist/jobs/cron.js.map +1 -0
  432. package/dist/jobs/index.d.ts +4 -0
  433. package/dist/jobs/index.d.ts.map +1 -0
  434. package/dist/jobs/index.js +4 -0
  435. package/dist/jobs/index.js.map +1 -0
  436. package/dist/jobs/scheduler.d.ts +32 -0
  437. package/dist/jobs/scheduler.d.ts.map +1 -0
  438. package/dist/jobs/scheduler.js +226 -0
  439. package/dist/jobs/scheduler.js.map +1 -0
  440. package/dist/jobs/tools.d.ts +3 -0
  441. package/dist/jobs/tools.d.ts.map +1 -0
  442. package/dist/jobs/tools.js +209 -0
  443. package/dist/jobs/tools.js.map +1 -0
  444. package/dist/mcp/index.d.ts +3 -0
  445. package/dist/mcp/index.d.ts.map +1 -0
  446. package/dist/mcp/index.js +2 -0
  447. package/dist/mcp/index.js.map +1 -0
  448. package/dist/mcp/server.d.ts +26 -0
  449. package/dist/mcp/server.d.ts.map +1 -0
  450. package/dist/mcp/server.js +182 -0
  451. package/dist/mcp/server.js.map +1 -0
  452. package/dist/mcp-client/config.d.ts +46 -0
  453. package/dist/mcp-client/config.d.ts.map +1 -0
  454. package/dist/mcp-client/config.js +152 -0
  455. package/dist/mcp-client/config.js.map +1 -0
  456. package/dist/mcp-client/index.d.ts +17 -0
  457. package/dist/mcp-client/index.d.ts.map +1 -0
  458. package/dist/mcp-client/index.js +53 -0
  459. package/dist/mcp-client/index.js.map +1 -0
  460. package/dist/mcp-client/manager.d.ts +76 -0
  461. package/dist/mcp-client/manager.d.ts.map +1 -0
  462. package/dist/mcp-client/manager.js +212 -0
  463. package/dist/mcp-client/manager.js.map +1 -0
  464. package/dist/oauth-tokens/index.d.ts +1 -1
  465. package/dist/oauth-tokens/index.d.ts.map +1 -1
  466. package/dist/oauth-tokens/index.js +1 -1
  467. package/dist/oauth-tokens/index.js.map +1 -1
  468. package/dist/oauth-tokens/store.d.ts +5 -0
  469. package/dist/oauth-tokens/store.d.ts.map +1 -1
  470. package/dist/oauth-tokens/store.js +33 -8
  471. package/dist/oauth-tokens/store.js.map +1 -1
  472. package/dist/onboarding/default-steps.d.ts +10 -0
  473. package/dist/onboarding/default-steps.d.ts.map +1 -0
  474. package/dist/onboarding/default-steps.js +164 -0
  475. package/dist/onboarding/default-steps.js.map +1 -0
  476. package/dist/onboarding/index.d.ts +12 -0
  477. package/dist/onboarding/index.d.ts.map +1 -0
  478. package/dist/onboarding/index.js +11 -0
  479. package/dist/onboarding/index.js.map +1 -0
  480. package/dist/onboarding/plugin.d.ts +19 -0
  481. package/dist/onboarding/plugin.d.ts.map +1 -0
  482. package/dist/onboarding/plugin.js +147 -0
  483. package/dist/onboarding/plugin.js.map +1 -0
  484. package/dist/onboarding/registry.d.ts +24 -0
  485. package/dist/onboarding/registry.d.ts.map +1 -0
  486. package/dist/onboarding/registry.js +40 -0
  487. package/dist/onboarding/registry.js.map +1 -0
  488. package/dist/onboarding/types.d.ts +71 -0
  489. package/dist/onboarding/types.d.ts.map +1 -0
  490. package/dist/onboarding/types.js +10 -0
  491. package/dist/onboarding/types.js.map +1 -0
  492. package/dist/org/context.d.ts +11 -0
  493. package/dist/org/context.d.ts.map +1 -0
  494. package/dist/org/context.js +61 -0
  495. package/dist/org/context.js.map +1 -0
  496. package/dist/org/handlers.d.ts +66 -0
  497. package/dist/org/handlers.d.ts.map +1 -0
  498. package/dist/org/handlers.js +306 -0
  499. package/dist/org/handlers.js.map +1 -0
  500. package/dist/org/index.d.ts +7 -0
  501. package/dist/org/index.d.ts.map +1 -0
  502. package/dist/org/index.js +11 -0
  503. package/dist/org/index.js.map +1 -0
  504. package/dist/org/migrations.d.ts +10 -0
  505. package/dist/org/migrations.d.ts.map +1 -0
  506. package/dist/org/migrations.js +39 -0
  507. package/dist/org/migrations.js.map +1 -0
  508. package/dist/org/plugin.d.ts +26 -0
  509. package/dist/org/plugin.d.ts.map +1 -0
  510. package/dist/org/plugin.js +94 -0
  511. package/dist/org/plugin.js.map +1 -0
  512. package/dist/org/schema.d.ts +301 -0
  513. package/dist/org/schema.d.ts.map +1 -0
  514. package/dist/org/schema.js +23 -0
  515. package/dist/org/schema.js.map +1 -0
  516. package/dist/org/types.d.ts +42 -0
  517. package/dist/org/types.d.ts.map +1 -0
  518. package/dist/org/types.js +5 -0
  519. package/dist/org/types.js.map +1 -0
  520. package/dist/resources/agents.d.ts +4 -0
  521. package/dist/resources/agents.d.ts.map +1 -0
  522. package/dist/resources/agents.js +44 -0
  523. package/dist/resources/agents.js.map +1 -0
  524. package/dist/resources/handlers.d.ts +27 -1
  525. package/dist/resources/handlers.d.ts.map +1 -1
  526. package/dist/resources/handlers.js +121 -11
  527. package/dist/resources/handlers.js.map +1 -1
  528. package/dist/resources/metadata.d.ts +48 -0
  529. package/dist/resources/metadata.d.ts.map +1 -0
  530. package/dist/resources/metadata.js +150 -0
  531. package/dist/resources/metadata.js.map +1 -0
  532. package/dist/resources/script-helpers.d.ts.map +1 -1
  533. package/dist/resources/script-helpers.js +3 -2
  534. package/dist/resources/script-helpers.js.map +1 -1
  535. package/dist/resources/store.d.ts +5 -0
  536. package/dist/resources/store.d.ts.map +1 -1
  537. package/dist/resources/store.js +76 -17
  538. package/dist/resources/store.js.map +1 -1
  539. package/dist/scripts/agent-engines/list-agent-engines.d.ts +7 -0
  540. package/dist/scripts/agent-engines/list-agent-engines.d.ts.map +1 -0
  541. package/dist/scripts/agent-engines/list-agent-engines.js +42 -0
  542. package/dist/scripts/agent-engines/list-agent-engines.js.map +1 -0
  543. package/dist/scripts/agent-engines/set-agent-engine.d.ts +7 -0
  544. package/dist/scripts/agent-engines/set-agent-engine.d.ts.map +1 -0
  545. package/dist/scripts/agent-engines/set-agent-engine.js +57 -0
  546. package/dist/scripts/agent-engines/set-agent-engine.js.map +1 -0
  547. package/dist/scripts/agent-engines/test-agent-engine.d.ts +7 -0
  548. package/dist/scripts/agent-engines/test-agent-engine.d.ts.map +1 -0
  549. package/dist/scripts/agent-engines/test-agent-engine.js +102 -0
  550. package/dist/scripts/agent-engines/test-agent-engine.js.map +1 -0
  551. package/dist/scripts/call-agent.d.ts +1 -1
  552. package/dist/scripts/call-agent.d.ts.map +1 -1
  553. package/dist/scripts/call-agent.js +13 -8
  554. package/dist/scripts/call-agent.js.map +1 -1
  555. package/dist/scripts/chat/index.d.ts +2 -0
  556. package/dist/scripts/chat/index.d.ts.map +1 -0
  557. package/dist/scripts/chat/index.js +5 -0
  558. package/dist/scripts/chat/index.js.map +1 -0
  559. package/dist/scripts/chat/open-chat.d.ts +11 -0
  560. package/dist/scripts/chat/open-chat.d.ts.map +1 -0
  561. package/dist/scripts/chat/open-chat.js +48 -0
  562. package/dist/scripts/chat/open-chat.js.map +1 -0
  563. package/dist/scripts/chat/search-chats.d.ts +10 -0
  564. package/dist/scripts/chat/search-chats.d.ts.map +1 -0
  565. package/dist/scripts/chat/search-chats.js +90 -0
  566. package/dist/scripts/chat/search-chats.js.map +1 -0
  567. package/dist/scripts/core-scripts.d.ts.map +1 -1
  568. package/dist/scripts/core-scripts.js +4 -0
  569. package/dist/scripts/core-scripts.js.map +1 -1
  570. package/dist/scripts/db/check-scoping.d.ts +14 -0
  571. package/dist/scripts/db/check-scoping.d.ts.map +1 -0
  572. package/dist/scripts/db/check-scoping.js +174 -0
  573. package/dist/scripts/db/check-scoping.js.map +1 -0
  574. package/dist/scripts/db/exec.d.ts +3 -2
  575. package/dist/scripts/db/exec.d.ts.map +1 -1
  576. package/dist/scripts/db/exec.js +35 -19
  577. package/dist/scripts/db/exec.js.map +1 -1
  578. package/dist/scripts/db/index.d.ts.map +1 -1
  579. package/dist/scripts/db/index.js +2 -0
  580. package/dist/scripts/db/index.js.map +1 -1
  581. package/dist/scripts/db/patch.d.ts +50 -0
  582. package/dist/scripts/db/patch.d.ts.map +1 -0
  583. package/dist/scripts/db/patch.js +392 -0
  584. package/dist/scripts/db/patch.js.map +1 -0
  585. package/dist/scripts/db/scoping.d.ts +8 -2
  586. package/dist/scripts/db/scoping.d.ts.map +1 -1
  587. package/dist/scripts/db/scoping.js +66 -47
  588. package/dist/scripts/db/scoping.js.map +1 -1
  589. package/dist/scripts/dev/index.d.ts.map +1 -1
  590. package/dist/scripts/dev/index.js +64 -1
  591. package/dist/scripts/dev/index.js.map +1 -1
  592. package/dist/scripts/docs/index.d.ts +2 -0
  593. package/dist/scripts/docs/index.d.ts.map +1 -0
  594. package/dist/scripts/docs/index.js +4 -0
  595. package/dist/scripts/docs/index.js.map +1 -0
  596. package/dist/scripts/docs/search.d.ts +13 -0
  597. package/dist/scripts/docs/search.d.ts.map +1 -0
  598. package/dist/scripts/docs/search.js +130 -0
  599. package/dist/scripts/docs/search.js.map +1 -0
  600. package/dist/scripts/parse-args.d.ts +14 -0
  601. package/dist/scripts/parse-args.d.ts.map +1 -0
  602. package/dist/scripts/parse-args.js +45 -0
  603. package/dist/scripts/parse-args.js.map +1 -0
  604. package/dist/scripts/resources/delete-memory.d.ts +7 -0
  605. package/dist/scripts/resources/delete-memory.d.ts.map +1 -0
  606. package/dist/scripts/resources/delete-memory.js +49 -0
  607. package/dist/scripts/resources/delete-memory.js.map +1 -0
  608. package/dist/scripts/resources/delete.d.ts.map +1 -1
  609. package/dist/scripts/resources/delete.js +2 -1
  610. package/dist/scripts/resources/delete.js.map +1 -1
  611. package/dist/scripts/resources/index.d.ts.map +1 -1
  612. package/dist/scripts/resources/index.js +2 -0
  613. package/dist/scripts/resources/index.js.map +1 -1
  614. package/dist/scripts/resources/list.d.ts.map +1 -1
  615. package/dist/scripts/resources/list.js +2 -1
  616. package/dist/scripts/resources/list.js.map +1 -1
  617. package/dist/scripts/resources/migrate-learnings.d.ts.map +1 -1
  618. package/dist/scripts/resources/migrate-learnings.js +2 -1
  619. package/dist/scripts/resources/migrate-learnings.js.map +1 -1
  620. package/dist/scripts/resources/read.d.ts.map +1 -1
  621. package/dist/scripts/resources/read.js +2 -1
  622. package/dist/scripts/resources/read.js.map +1 -1
  623. package/dist/scripts/resources/save-memory.d.ts +9 -0
  624. package/dist/scripts/resources/save-memory.d.ts.map +1 -0
  625. package/dist/scripts/resources/save-memory.js +78 -0
  626. package/dist/scripts/resources/save-memory.js.map +1 -0
  627. package/dist/scripts/resources/write.d.ts.map +1 -1
  628. package/dist/scripts/resources/write.js +2 -1
  629. package/dist/scripts/resources/write.js.map +1 -1
  630. package/dist/scripts/runner.d.ts.map +1 -1
  631. package/dist/scripts/runner.js +10 -2
  632. package/dist/scripts/runner.js.map +1 -1
  633. package/dist/scripts/utils.d.ts +9 -8
  634. package/dist/scripts/utils.d.ts.map +1 -1
  635. package/dist/scripts/utils.js +40 -35
  636. package/dist/scripts/utils.js.map +1 -1
  637. package/dist/server/action-discovery.d.ts +5 -0
  638. package/dist/server/action-discovery.d.ts.map +1 -1
  639. package/dist/server/action-discovery.js +132 -33
  640. package/dist/server/action-discovery.js.map +1 -1
  641. package/dist/server/action-routes.d.ts +15 -0
  642. package/dist/server/action-routes.d.ts.map +1 -0
  643. package/dist/server/action-routes.js +111 -0
  644. package/dist/server/action-routes.js.map +1 -0
  645. package/dist/server/agent-chat-plugin.d.ts +23 -0
  646. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  647. package/dist/server/agent-chat-plugin.js +1474 -266
  648. package/dist/server/agent-chat-plugin.js.map +1 -1
  649. package/dist/server/agent-discovery.d.ts +8 -3
  650. package/dist/server/agent-discovery.d.ts.map +1 -1
  651. package/dist/server/agent-discovery.js +57 -8
  652. package/dist/server/agent-discovery.js.map +1 -1
  653. package/dist/server/agent-teams.d.ts +70 -0
  654. package/dist/server/agent-teams.d.ts.map +1 -0
  655. package/dist/server/agent-teams.js +368 -0
  656. package/dist/server/agent-teams.js.map +1 -0
  657. package/dist/server/agents-bundle.d.ts +115 -0
  658. package/dist/server/agents-bundle.d.ts.map +1 -0
  659. package/dist/server/agents-bundle.js +275 -0
  660. package/dist/server/agents-bundle.js.map +1 -0
  661. package/dist/server/auth-plugin.d.ts +3 -3
  662. package/dist/server/auth-plugin.d.ts.map +1 -1
  663. package/dist/server/auth-plugin.js +9 -10
  664. package/dist/server/auth-plugin.js.map +1 -1
  665. package/dist/server/auth.d.ts +55 -33
  666. package/dist/server/auth.d.ts.map +1 -1
  667. package/dist/server/auth.js +640 -610
  668. package/dist/server/auth.js.map +1 -1
  669. package/dist/server/better-auth-instance.d.ts +72 -0
  670. package/dist/server/better-auth-instance.d.ts.map +1 -0
  671. package/dist/server/better-auth-instance.js +340 -0
  672. package/dist/server/better-auth-instance.js.map +1 -0
  673. package/dist/server/builder-browser.d.ts +40 -0
  674. package/dist/server/builder-browser.d.ts.map +1 -0
  675. package/dist/server/builder-browser.js +166 -0
  676. package/dist/server/builder-browser.js.map +1 -0
  677. package/dist/server/collab-plugin.d.ts +29 -0
  678. package/dist/server/collab-plugin.d.ts.map +1 -0
  679. package/dist/server/collab-plugin.js +85 -0
  680. package/dist/server/collab-plugin.js.map +1 -0
  681. package/dist/server/core-routes-plugin.d.ts +0 -3
  682. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  683. package/dist/server/core-routes-plugin.js +248 -32
  684. package/dist/server/core-routes-plugin.js.map +1 -1
  685. package/dist/server/create-server.d.ts +1 -1
  686. package/dist/server/create-server.d.ts.map +1 -1
  687. package/dist/server/create-server.js +39 -16
  688. package/dist/server/create-server.js.map +1 -1
  689. package/dist/server/credential-provider.d.ts +37 -0
  690. package/dist/server/credential-provider.d.ts.map +1 -0
  691. package/dist/server/credential-provider.js +49 -0
  692. package/dist/server/credential-provider.js.map +1 -0
  693. package/dist/server/framework-request-handler.d.ts +47 -0
  694. package/dist/server/framework-request-handler.d.ts.map +1 -0
  695. package/dist/server/framework-request-handler.js +207 -0
  696. package/dist/server/framework-request-handler.js.map +1 -0
  697. package/dist/server/google-auth-plugin.d.ts +4 -0
  698. package/dist/server/google-auth-plugin.d.ts.map +1 -1
  699. package/dist/server/google-auth-plugin.js +14 -13
  700. package/dist/server/google-auth-plugin.js.map +1 -1
  701. package/dist/server/google-oauth.d.ts +3 -3
  702. package/dist/server/google-oauth.d.ts.map +1 -1
  703. package/dist/server/google-oauth.js +51 -24
  704. package/dist/server/google-oauth.js.map +1 -1
  705. package/dist/server/h3-helpers.d.ts +23 -0
  706. package/dist/server/h3-helpers.d.ts.map +1 -0
  707. package/dist/server/h3-helpers.js +37 -0
  708. package/dist/server/h3-helpers.js.map +1 -0
  709. package/dist/server/index.d.ts +12 -4
  710. package/dist/server/index.d.ts.map +1 -1
  711. package/dist/server/index.js +15 -4
  712. package/dist/server/index.js.map +1 -1
  713. package/dist/server/local-migration.d.ts +32 -0
  714. package/dist/server/local-migration.d.ts.map +1 -0
  715. package/dist/server/local-migration.js +205 -0
  716. package/dist/server/local-migration.js.map +1 -0
  717. package/dist/server/oauth-helpers.d.ts +5 -6
  718. package/dist/server/oauth-helpers.d.ts.map +1 -1
  719. package/dist/server/oauth-helpers.js +10 -11
  720. package/dist/server/oauth-helpers.js.map +1 -1
  721. package/dist/server/onboarding-html.d.ts +24 -0
  722. package/dist/server/onboarding-html.d.ts.map +1 -0
  723. package/dist/server/onboarding-html.js +438 -0
  724. package/dist/server/onboarding-html.js.map +1 -0
  725. package/dist/server/poll.d.ts +7 -2
  726. package/dist/server/poll.d.ts.map +1 -1
  727. package/dist/server/poll.js +48 -1
  728. package/dist/server/poll.js.map +1 -1
  729. package/dist/server/request-context.d.ts +20 -0
  730. package/dist/server/request-context.d.ts.map +1 -0
  731. package/dist/server/request-context.js +41 -0
  732. package/dist/server/request-context.js.map +1 -0
  733. package/dist/server/resources-plugin.d.ts.map +1 -1
  734. package/dist/server/resources-plugin.js +4 -3
  735. package/dist/server/resources-plugin.js.map +1 -1
  736. package/dist/server/schema-prompt.d.ts +16 -0
  737. package/dist/server/schema-prompt.d.ts.map +1 -0
  738. package/dist/server/schema-prompt.js +275 -0
  739. package/dist/server/schema-prompt.js.map +1 -0
  740. package/dist/server/sse.d.ts +3 -20
  741. package/dist/server/sse.d.ts.map +1 -1
  742. package/dist/server/sse.js +1 -29
  743. package/dist/server/sse.js.map +1 -1
  744. package/dist/server/ssr-handler.d.ts +6 -0
  745. package/dist/server/ssr-handler.d.ts.map +1 -0
  746. package/dist/server/ssr-handler.js +55 -0
  747. package/dist/server/ssr-handler.js.map +1 -0
  748. package/dist/settings/handlers.d.ts +3 -3
  749. package/dist/settings/handlers.d.ts.map +1 -1
  750. package/dist/settings/handlers.js +2 -1
  751. package/dist/settings/handlers.js.map +1 -1
  752. package/dist/settings/index.d.ts +1 -0
  753. package/dist/settings/index.d.ts.map +1 -1
  754. package/dist/settings/index.js +2 -0
  755. package/dist/settings/index.js.map +1 -1
  756. package/dist/settings/org-settings.d.ts +22 -0
  757. package/dist/settings/org-settings.d.ts.map +1 -0
  758. package/dist/settings/org-settings.js +45 -0
  759. package/dist/settings/org-settings.js.map +1 -0
  760. package/dist/shared/agent-chat.d.ts +5 -5
  761. package/dist/shared/agent-chat.d.ts.map +1 -1
  762. package/dist/shared/agent-chat.js +8 -8
  763. package/dist/shared/agent-chat.js.map +1 -1
  764. package/dist/shared/agent-env.d.ts +1 -1
  765. package/dist/shared/agent-env.js +1 -1
  766. package/dist/shared/runtime.d.ts +14 -0
  767. package/dist/shared/runtime.d.ts.map +1 -0
  768. package/dist/shared/runtime.js +25 -0
  769. package/dist/shared/runtime.js.map +1 -0
  770. package/dist/templates/default/.agents/skills/actions/SKILL.md +143 -0
  771. package/dist/templates/default/.agents/skills/agent-engines/SKILL.md +127 -0
  772. package/dist/templates/default/.agents/skills/capture-learnings/SKILL.md +50 -0
  773. package/dist/templates/default/.agents/skills/create-skill/SKILL.md +167 -0
  774. package/dist/templates/default/.agents/skills/delegate-to-agent/SKILL.md +90 -0
  775. package/dist/templates/default/.agents/skills/frontend-design/SKILL.md +69 -0
  776. package/dist/templates/default/.agents/skills/real-time-collab/SKILL.md +183 -0
  777. package/dist/templates/default/.agents/skills/real-time-sync/SKILL.md +112 -0
  778. package/dist/templates/default/.agents/skills/security/SKILL.md +213 -0
  779. package/dist/templates/default/.agents/skills/self-modifying-code/SKILL.md +79 -0
  780. package/{src/templates/default/.agents/skills/files-as-database → dist/templates/default/.agents/skills/storing-data}/SKILL.md +7 -1
  781. package/dist/templates/default/.claude/settings.json +100 -0
  782. package/dist/templates/default/.env.example +5 -0
  783. package/dist/templates/default/.prettierrc +5 -0
  784. package/dist/templates/default/AGENTS.md +110 -0
  785. package/dist/templates/default/DEVELOPING.md +117 -0
  786. package/dist/templates/default/_gitignore +38 -0
  787. package/dist/templates/default/actions/hello.ts +20 -0
  788. package/dist/templates/default/actions/navigate.ts +53 -0
  789. package/dist/templates/default/actions/run.ts +2 -0
  790. package/dist/templates/default/actions/view-screen.ts +39 -0
  791. package/dist/templates/default/app/entry.client.tsx +4 -0
  792. package/dist/templates/default/app/entry.server.tsx +56 -0
  793. package/dist/templates/default/app/global.css +95 -0
  794. package/dist/templates/default/app/lib/utils.ts +1 -0
  795. package/dist/templates/default/app/root.tsx +110 -0
  796. package/dist/templates/default/app/routes/_index.tsx +62 -0
  797. package/dist/templates/default/app/routes.ts +4 -0
  798. package/dist/templates/default/app/vite-env.d.ts +6 -0
  799. package/dist/templates/default/components.json +20 -0
  800. package/dist/templates/default/data/.gitkeep +0 -0
  801. package/dist/templates/default/data/sync-config.json +1 -0
  802. package/dist/templates/default/learnings.defaults.md +5 -0
  803. package/dist/templates/default/learnings.md +0 -0
  804. package/dist/templates/default/package.json +46 -0
  805. package/dist/templates/default/postcss.config.js +6 -0
  806. package/dist/templates/default/public/icon-180.svg +4 -0
  807. package/dist/templates/default/public/icon-192.svg +4 -0
  808. package/dist/templates/default/public/icon-512.svg +4 -0
  809. package/dist/templates/default/public/manifest.json +13 -0
  810. package/dist/templates/default/react-router.config.ts +6 -0
  811. package/dist/templates/default/server/middleware/auth.ts +15 -0
  812. package/dist/templates/default/server/plugins/.gitkeep +0 -0
  813. package/dist/templates/default/server/routes/[...page].get.ts +5 -0
  814. package/dist/templates/default/server/routes/api/hello.get.ts +5 -0
  815. package/dist/templates/default/shared/api.ts +6 -0
  816. package/dist/templates/default/ssr-entry.ts +20 -0
  817. package/dist/templates/default/tailwind.config.ts +7 -0
  818. package/dist/templates/default/tsconfig.json +11 -0
  819. package/dist/templates/default/vite.config.ts +6 -0
  820. package/dist/templates/workspace-core/AGENTS.md +62 -0
  821. package/dist/templates/workspace-core/actions/company-directory.ts +38 -0
  822. package/dist/templates/workspace-core/package.json +39 -0
  823. package/dist/templates/workspace-core/skills/company-policies/SKILL.md +42 -0
  824. package/dist/templates/workspace-core/src/client/AuthenticatedLayout.tsx +37 -0
  825. package/dist/templates/workspace-core/src/client/index.ts +26 -0
  826. package/dist/templates/workspace-core/src/credentials.ts +29 -0
  827. package/dist/templates/workspace-core/src/index.ts +21 -0
  828. package/dist/templates/workspace-core/src/server/agent-chat-plugin.ts +30 -0
  829. package/dist/templates/workspace-core/src/server/auth-plugin.ts +35 -0
  830. package/dist/templates/workspace-core/src/server/index.ts +22 -0
  831. package/dist/templates/workspace-core/tailwind.preset.ts +34 -0
  832. package/dist/templates/workspace-core/tsconfig.json +9 -0
  833. package/dist/templates/workspace-root/.env.example +37 -0
  834. package/dist/templates/workspace-root/README.md +62 -0
  835. package/dist/templates/workspace-root/_gitignore +23 -0
  836. package/dist/templates/workspace-root/package.json +18 -0
  837. package/dist/templates/workspace-root/pnpm-workspace.yaml +3 -0
  838. package/dist/templates/workspace-root/tsconfig.base.json +21 -0
  839. package/dist/terminal/cli-registry.d.ts +1 -1
  840. package/dist/terminal/cli-registry.d.ts.map +1 -1
  841. package/dist/terminal/cli-registry.js +7 -7
  842. package/dist/terminal/cli-registry.js.map +1 -1
  843. package/dist/terminal/pty-server.d.ts +1 -1
  844. package/dist/terminal/pty-server.d.ts.map +1 -1
  845. package/dist/terminal/pty-server.js +34 -12
  846. package/dist/terminal/pty-server.js.map +1 -1
  847. package/dist/terminal/terminal-plugin.d.ts +0 -9
  848. package/dist/terminal/terminal-plugin.d.ts.map +1 -1
  849. package/dist/terminal/terminal-plugin.js +57 -14
  850. package/dist/terminal/terminal-plugin.js.map +1 -1
  851. package/dist/usage/store.d.ts +29 -0
  852. package/dist/usage/store.d.ts.map +1 -0
  853. package/dist/usage/store.js +102 -0
  854. package/dist/usage/store.js.map +1 -0
  855. package/dist/vite/action-types-plugin.d.ts +13 -0
  856. package/dist/vite/action-types-plugin.d.ts.map +1 -0
  857. package/dist/vite/action-types-plugin.js +132 -0
  858. package/dist/vite/action-types-plugin.js.map +1 -0
  859. package/dist/vite/agents-bundle-plugin.d.ts +3 -0
  860. package/dist/vite/agents-bundle-plugin.d.ts.map +1 -0
  861. package/dist/vite/agents-bundle-plugin.js +137 -0
  862. package/dist/vite/agents-bundle-plugin.js.map +1 -0
  863. package/dist/vite/client.d.ts +21 -0
  864. package/dist/vite/client.d.ts.map +1 -1
  865. package/dist/vite/client.js +297 -37
  866. package/dist/vite/client.js.map +1 -1
  867. package/dist/vite/index.d.ts +2 -1
  868. package/dist/vite/index.d.ts.map +1 -1
  869. package/dist/vite/index.js +2 -1
  870. package/dist/vite/index.js.map +1 -1
  871. package/docs/content/a2a-protocol.md +223 -0
  872. package/docs/content/actions.md +129 -0
  873. package/docs/content/agent-mentions.md +171 -0
  874. package/docs/content/authentication.md +155 -0
  875. package/docs/content/cli-adapters.md +244 -0
  876. package/docs/content/client.md +175 -0
  877. package/docs/content/context-awareness.md +168 -0
  878. package/docs/content/creating-templates.md +311 -0
  879. package/docs/content/database.md +82 -0
  880. package/docs/content/deployment.md +180 -0
  881. package/docs/content/enterprise-workspace.md +235 -0
  882. package/docs/content/faq.md +101 -0
  883. package/docs/content/file-uploads.md +102 -0
  884. package/docs/content/frames.md +47 -0
  885. package/docs/content/getting-started.md +104 -0
  886. package/docs/content/integrations.md +198 -0
  887. package/docs/content/key-concepts.md +246 -0
  888. package/docs/content/mcp-clients.md +110 -0
  889. package/docs/content/mcp-protocol.md +168 -0
  890. package/docs/content/onboarding.md +107 -0
  891. package/docs/content/real-time-collaboration.md +185 -0
  892. package/docs/content/resources.md +277 -0
  893. package/docs/content/security.md +158 -0
  894. package/docs/content/server.md +200 -0
  895. package/docs/content/skills-guide.md +107 -0
  896. package/docs/content/what-is-agent-native.md +100 -0
  897. package/docs/content/workspace-management.md +224 -0
  898. package/package.json +78 -20
  899. package/src/templates/default/.agents/skills/actions/SKILL.md +14 -7
  900. package/src/templates/default/.agents/skills/agent-engines/SKILL.md +127 -0
  901. package/src/templates/default/.agents/skills/real-time-collab/SKILL.md +183 -0
  902. package/src/templates/default/.agents/skills/security/SKILL.md +213 -0
  903. package/src/templates/default/.agents/skills/storing-data/SKILL.md +116 -0
  904. package/src/templates/default/.claude/settings.json +13 -0
  905. package/src/templates/default/AGENTS.md +25 -9
  906. package/src/templates/default/_gitignore +1 -0
  907. package/src/templates/default/actions/view-screen.ts +1 -1
  908. package/src/templates/default/app/root.tsx +4 -1
  909. package/src/templates/default/package.json +2 -2
  910. package/src/templates/default/server/middleware/auth.ts +15 -0
  911. package/src/templates/default/server/routes/[...page].get.ts +2 -9
  912. package/src/templates/default/ssr-entry.ts +20 -0
  913. package/src/templates/workspace-core/AGENTS.md +62 -0
  914. package/src/templates/workspace-core/actions/company-directory.ts +38 -0
  915. package/src/templates/workspace-core/package.json +39 -0
  916. package/src/templates/workspace-core/skills/company-policies/SKILL.md +42 -0
  917. package/src/templates/workspace-core/src/client/AuthenticatedLayout.tsx +37 -0
  918. package/src/templates/workspace-core/src/client/index.ts +26 -0
  919. package/src/templates/workspace-core/src/credentials.ts +29 -0
  920. package/src/templates/workspace-core/src/index.ts +21 -0
  921. package/src/templates/workspace-core/src/server/agent-chat-plugin.ts +30 -0
  922. package/src/templates/workspace-core/src/server/auth-plugin.ts +35 -0
  923. package/src/templates/workspace-core/src/server/index.ts +22 -0
  924. package/src/templates/workspace-core/tailwind.preset.ts +34 -0
  925. package/src/templates/workspace-core/tsconfig.json +9 -0
  926. package/src/templates/workspace-root/.env.example +37 -0
  927. package/src/templates/workspace-root/README.md +62 -0
  928. package/src/templates/workspace-root/_gitignore +23 -0
  929. package/src/templates/workspace-root/package.json +18 -0
  930. package/src/templates/workspace-root/pnpm-workspace.yaml +3 -0
  931. package/src/templates/workspace-root/tsconfig.base.json +21 -0
  932. package/dist/adapters/convex/adapter.d.ts +0 -24
  933. package/dist/adapters/convex/adapter.d.ts.map +0 -1
  934. package/dist/adapters/convex/adapter.js +0 -125
  935. package/dist/adapters/convex/adapter.js.map +0 -1
  936. package/dist/adapters/convex/index.d.ts +0 -4
  937. package/dist/adapters/convex/index.d.ts.map +0 -1
  938. package/dist/adapters/convex/index.js +0 -3
  939. package/dist/adapters/convex/index.js.map +0 -1
  940. package/dist/adapters/drizzle/adapter.d.ts +0 -36
  941. package/dist/adapters/drizzle/adapter.d.ts.map +0 -1
  942. package/dist/adapters/drizzle/adapter.js +0 -210
  943. package/dist/adapters/drizzle/adapter.js.map +0 -1
  944. package/dist/adapters/drizzle/index.d.ts +0 -3
  945. package/dist/adapters/drizzle/index.d.ts.map +0 -1
  946. package/dist/adapters/drizzle/index.js +0 -3
  947. package/dist/adapters/drizzle/index.js.map +0 -1
  948. package/dist/adapters/drizzle/schema.d.ts +0 -146
  949. package/dist/adapters/drizzle/schema.d.ts.map +0 -1
  950. package/dist/adapters/drizzle/schema.js +0 -20
  951. package/dist/adapters/drizzle/schema.js.map +0 -1
  952. package/dist/adapters/firestore/adapter.d.ts +0 -48
  953. package/dist/adapters/firestore/adapter.d.ts.map +0 -1
  954. package/dist/adapters/firestore/adapter.js +0 -62
  955. package/dist/adapters/firestore/adapter.js.map +0 -1
  956. package/dist/adapters/firestore/index.d.ts +0 -4
  957. package/dist/adapters/firestore/index.d.ts.map +0 -1
  958. package/dist/adapters/firestore/index.js +0 -3
  959. package/dist/adapters/firestore/index.js.map +0 -1
  960. package/dist/adapters/supabase/adapter.d.ts +0 -43
  961. package/dist/adapters/supabase/adapter.d.ts.map +0 -1
  962. package/dist/adapters/supabase/adapter.js +0 -137
  963. package/dist/adapters/supabase/adapter.js.map +0 -1
  964. package/dist/adapters/supabase/index.d.ts +0 -3
  965. package/dist/adapters/supabase/index.d.ts.map +0 -1
  966. package/dist/adapters/supabase/index.js +0 -3
  967. package/dist/adapters/supabase/index.js.map +0 -1
  968. package/dist/adapters/sync/config.d.ts +0 -40
  969. package/dist/adapters/sync/config.d.ts.map +0 -1
  970. package/dist/adapters/sync/config.js +0 -209
  971. package/dist/adapters/sync/config.js.map +0 -1
  972. package/dist/adapters/sync/create-file-sync.d.ts +0 -32
  973. package/dist/adapters/sync/create-file-sync.d.ts.map +0 -1
  974. package/dist/adapters/sync/create-file-sync.js +0 -218
  975. package/dist/adapters/sync/create-file-sync.js.map +0 -1
  976. package/dist/adapters/sync/file-sync.d.ts +0 -94
  977. package/dist/adapters/sync/file-sync.d.ts.map +0 -1
  978. package/dist/adapters/sync/file-sync.js +0 -671
  979. package/dist/adapters/sync/file-sync.js.map +0 -1
  980. package/dist/adapters/sync/index.d.ts +0 -6
  981. package/dist/adapters/sync/index.d.ts.map +0 -1
  982. package/dist/adapters/sync/index.js +0 -6
  983. package/dist/adapters/sync/index.js.map +0 -1
  984. package/dist/adapters/sync/merge.d.ts +0 -21
  985. package/dist/adapters/sync/merge.d.ts.map +0 -1
  986. package/dist/adapters/sync/merge.js +0 -132
  987. package/dist/adapters/sync/merge.js.map +0 -1
  988. package/dist/adapters/sync/types.d.ts +0 -62
  989. package/dist/adapters/sync/types.d.ts.map +0 -1
  990. package/dist/adapters/sync/types.js +0 -23
  991. package/dist/adapters/sync/types.js.map +0 -1
  992. package/dist/client/harness.d.ts +0 -48
  993. package/dist/client/harness.d.ts.map +0 -1
  994. package/dist/client/harness.js.map +0 -1
  995. package/dist/client/use-file-sync-status.d.ts +0 -21
  996. package/dist/client/use-file-sync-status.d.ts.map +0 -1
  997. package/dist/client/use-file-sync-status.js +0 -65
  998. package/dist/client/use-file-sync-status.js.map +0 -1
  999. package/dist/server/default-watcher.d.ts +0 -23
  1000. package/dist/server/default-watcher.d.ts.map +0 -1
  1001. package/dist/server/default-watcher.js +0 -57
  1002. package/dist/server/default-watcher.js.map +0 -1
  1003. package/dist/server/file-sync-plugin.d.ts +0 -7
  1004. package/dist/server/file-sync-plugin.d.ts.map +0 -1
  1005. package/dist/server/file-sync-plugin.js +0 -38
  1006. package/dist/server/file-sync-plugin.js.map +0 -1
  1007. package/dist/vite/dev-api-server.d.ts +0 -10
  1008. package/dist/vite/dev-api-server.d.ts.map +0 -1
  1009. package/dist/vite/dev-api-server.js +0 -243
  1010. package/dist/vite/dev-api-server.js.map +0 -1
  1011. /package/{src/templates/default/application-state/.gitkeep → dist/templates/default/.ignore} +0 -0
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  /**
3
- * AgentPanel — unified agent component with chat and CLI terminal modes.
3
+ * AgentPanel — unified agent component with chat, CLI, and workspace modes.
4
4
  *
5
5
  * A self-contained panel with no layout opinions — drop it into a sidebar,
6
6
  * popover, dialog, full page, or any container. It fills its parent via
@@ -23,9 +23,8 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
23
23
  */
24
24
  import ReactDOM from "react-dom";
25
25
  import { useState, useEffect, useRef, useCallback, lazy, Suspense, startTransition, } from "react";
26
- import * as SelectPrimitive from "@radix-ui/react-select";
27
26
  import * as TooltipPrimitive from "@radix-ui/react-tooltip";
28
- import { IconMessage, IconTerminal2, IconSettings, IconLayoutSidebarRightCollapse, IconChevronDown, IconCheck, IconPlus, IconFolder, IconX, IconPencil, IconDotsVertical, IconHistory, } from "@tabler/icons-react";
27
+ import { IconMessage, IconTerminal2, IconSettings, IconLayoutSidebarRightCollapse, IconLayoutGrid, IconCheck, IconPlus, IconX, IconDotsVertical, IconHistory, } from "@tabler/icons-react";
29
28
  import { MultiTabAssistantChat, } from "./MultiTabAssistantChat.js";
30
29
  import { useDevMode } from "./use-dev-mode.js";
31
30
  import { cn } from "./utils.js";
@@ -35,8 +34,21 @@ const AgentTerminal = lazy(() => import("./terminal/index.js").then((m) => ({ de
35
34
  const ResourcesPanel = lazy(() => import("./resources/ResourcesPanel.js").then((m) => ({
36
35
  default: m.ResourcesPanel,
37
36
  })));
37
+ // Lazy-load SettingsPanel to avoid bundling when not needed
38
+ const SettingsPanel = lazy(() => import("./settings/index.js").then((m) => ({
39
+ default: m.SettingsPanel,
40
+ })));
41
+ // Lazy-load OnboardingPanel — only pulled in when onboarding is active.
42
+ const OnboardingPanel = lazy(() => import("./onboarding/OnboardingPanel.js").then((m) => ({
43
+ default: m.OnboardingPanel,
44
+ })));
45
+ // Lazy-load SetupButton — the header entry-point that re-opens the
46
+ // onboarding panel after the user has dismissed it.
47
+ const SetupButton = lazy(() => import("./onboarding/SetupButton.js").then((m) => ({
48
+ default: m.SetupButton,
49
+ })));
38
50
  const CLI_STORAGE_KEY = "agent-native-cli-command";
39
- const CLI_DEFAULT = "builder";
51
+ const CLI_DEFAULT = "claude";
40
52
  const EXEC_MODE_KEY = "agent-native-exec-mode";
41
53
  const AGENT_PANEL_FONT_FAMILY = 'ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif';
42
54
  const AGENT_PANEL_ROOT_STYLE = {
@@ -46,7 +58,7 @@ const AGENT_PANEL_ROOT_STYLE = {
46
58
  };
47
59
  const AGENT_PANEL_HEADER_CLASS = "relative z-[240] flex h-11 shrink-0 items-center justify-between gap-2 border-b border-border";
48
60
  const AGENT_PANEL_HEADER_STYLE = {
49
- paddingLeft: 12,
61
+ paddingLeft: 8,
50
62
  paddingRight: 8,
51
63
  };
52
64
  const AGENT_PANEL_CONTROL_STYLE = {
@@ -60,118 +72,50 @@ function useAvailableClis() {
60
72
  // Returns 404 gracefully when the plugin isn't loaded.
61
73
  fetch("/_agent-native/available-clis")
62
74
  .then((r) => (r.ok ? r.json() : []))
63
- .then((data) => setClis(data))
75
+ .then((data) => setClis(Array.isArray(data) ? data : []))
64
76
  .catch(() => { });
65
77
  }, []);
66
78
  return clis;
67
79
  }
68
- function useCliSelection() {
80
+ function useCliSelection(keyPrefix) {
81
+ const cliKey = `${CLI_STORAGE_KEY}${keyPrefix}`;
69
82
  const [selected, setSelected] = useState(CLI_DEFAULT);
70
83
  useEffect(() => {
71
84
  try {
72
- const saved = localStorage.getItem(CLI_STORAGE_KEY);
85
+ const saved = localStorage.getItem(cliKey);
73
86
  if (saved)
74
87
  setSelected(saved);
75
88
  }
76
89
  catch { }
77
- }, []);
90
+ }, [cliKey]);
78
91
  const select = (cmd) => {
79
92
  setSelected(cmd);
80
93
  try {
81
- localStorage.setItem(CLI_STORAGE_KEY, cmd);
94
+ localStorage.setItem(cliKey, cmd);
82
95
  }
83
96
  catch { }
84
97
  };
85
98
  return [selected, select];
86
99
  }
87
100
  // Detect dev mode at build time (Vite replaces this)
88
- const IS_DEV = typeof import.meta !== "undefined" &&
89
- typeof import.meta.env !== "undefined" &&
90
- import.meta.env.DEV === true;
91
- function SettingsSelect({ label, value, options, onValueChange, }) {
92
- const selected = options.find((option) => option.value === value);
93
- return (_jsxs("div", { className: "space-y-1.5", children: [_jsx("p", { className: "text-[12px] font-medium text-foreground", children: label }), _jsxs(SelectPrimitive.Root, { value: value, onValueChange: onValueChange, children: [_jsxs(SelectPrimitive.Trigger, { className: "flex h-9 w-full items-center justify-between rounded-md border border-border bg-background px-3 text-left text-[12px] text-foreground outline-none transition-colors hover:bg-accent/40 data-[placeholder]:text-muted-foreground", "aria-label": label, style: AGENT_PANEL_CONTROL_STYLE, children: [_jsx(SelectPrimitive.Value, { children: selected?.label ?? value }), _jsx(SelectPrimitive.Icon, { asChild: true, children: _jsx(IconChevronDown, { size: 14, className: "text-muted-foreground" }) })] }), _jsx(SelectPrimitive.Portal, { children: _jsx(SelectPrimitive.Content, { position: "popper", sideOffset: 6, className: "z-[9999] w-[var(--radix-select-trigger-width)] overflow-hidden rounded-lg border border-border bg-popover shadow-lg", children: _jsx(SelectPrimitive.Viewport, { className: "p-1", children: options.map((option) => (_jsxs(SelectPrimitive.Item, { value: option.value, className: "relative flex w-full cursor-pointer select-none items-start gap-2 rounded-md px-8 py-2.5 text-[12px] outline-none data-[highlighted]:bg-accent/60 data-[state=checked]:bg-accent/40", style: AGENT_PANEL_CONTROL_STYLE, children: [_jsx("span", { className: "absolute left-2 top-2.5 flex h-4 w-4 items-center justify-center text-muted-foreground", children: _jsx(SelectPrimitive.ItemIndicator, { children: _jsx(IconCheck, { size: 14 }) }) }), _jsxs("div", { className: "flex min-w-0 flex-col", children: [_jsx(SelectPrimitive.ItemText, { children: _jsx("span", { className: "text-foreground", children: option.label }) }), option.description ? (_jsx("span", { className: "mt-0.5 text-[11px] leading-relaxed text-muted-foreground", children: option.description })) : null] })] }, option.value))) }) }) })] })] }));
94
- }
101
+ const IS_DEV = import.meta.env?.DEV === true;
102
+ // ─── Settings panel components moved to ./settings/ ────────────────────────
95
103
  function IconTooltip({ content, children, }) {
96
104
  return (_jsx(TooltipPrimitive.Provider, { delayDuration: 250, children: _jsxs(TooltipPrimitive.Root, { children: [_jsx(TooltipPrimitive.Trigger, { asChild: true, children: children }), _jsx(TooltipPrimitive.Portal, { children: _jsxs(TooltipPrimitive.Content, { side: "bottom", sideOffset: 8, className: "z-[230] overflow-hidden rounded-md border border-border bg-popover px-2 py-1 text-[11px] text-foreground shadow-md", children: [content, _jsx(TooltipPrimitive.Arrow, { className: "fill-popover" })] }) })] }) }));
97
105
  }
98
- // ─── Agent Settings Popover ──────────────────────────────────────────────────
99
- function AgentSettingsPopover({ isDevMode, onToggle, }) {
100
- const [open, setOpen] = useState(false);
101
- const popoverRef = useRef(null);
102
- const buttonRef = useRef(null);
103
- // Close on outside click
104
- useEffect(() => {
105
- if (!open)
106
- return;
107
- function handleClick(e) {
108
- const target = e.target;
109
- // Ignore clicks inside the popover itself or its trigger button
110
- if (popoverRef.current?.contains(target))
111
- return;
112
- if (buttonRef.current?.contains(target))
113
- return;
114
- // Ignore clicks inside portaled Radix Select content (rendered outside the popover DOM)
115
- if (target.closest?.("[data-radix-popper-content-wrapper], [data-radix-select-viewport], [role='listbox']"))
116
- return;
117
- setOpen(false);
118
- }
119
- document.addEventListener("mousedown", handleClick);
120
- return () => document.removeEventListener("mousedown", handleClick);
121
- }, [open]);
122
- // Close on Escape
123
- useEffect(() => {
124
- if (!open)
125
- return;
126
- function handleKey(e) {
127
- if (e.key === "Escape")
128
- setOpen(false);
129
- }
130
- document.addEventListener("keydown", handleKey);
131
- return () => document.removeEventListener("keydown", handleKey);
132
- }, [open]);
133
- const environmentOptions = [
134
- {
135
- value: "production",
136
- label: "Production",
137
- description: "Restricted to app tools only.",
138
- },
139
- {
140
- value: "development",
141
- label: "Development",
142
- description: "Full access to code editing, shell, and files.",
143
- },
144
- ];
145
- // Compute fixed position from the button so the popover escapes all
146
- // stacking contexts (the CLI terminal otherwise paints over it).
147
- const [pos, setPos] = useState(null);
148
- useEffect(() => {
149
- if (!open || !buttonRef.current)
150
- return;
151
- const rect = buttonRef.current.getBoundingClientRect();
152
- setPos({
153
- top: rect.bottom + 6,
154
- right: window.innerWidth - rect.right,
155
- });
156
- }, [open]);
157
- return (_jsxs("div", { className: "relative", children: [_jsx("button", { ref: buttonRef, onClick: () => setOpen(!open), className: cn("flex h-6 w-6 items-center justify-center rounded-md text-muted-foreground hover:text-foreground hover:bg-accent/50", open && "bg-accent/50 text-foreground"), title: "Agent settings", children: _jsx(IconSettings, { size: 14 }) }), open &&
158
- pos &&
159
- ReactDOM.createPortal(_jsx("div", { ref: popoverRef, className: "fixed z-[9990] w-72 rounded-lg border border-border bg-popover shadow-md animate-in fade-in-0 zoom-in-95 duration-100", style: { top: pos.top, right: pos.right }, children: _jsx("div", { className: "space-y-3 p-3", children: _jsx(SettingsSelect, { label: "Environment", value: isDevMode ? "development" : "production", options: environmentOptions, onValueChange: (next) => {
160
- const nextIsDev = next === "development";
161
- if (nextIsDev !== isDevMode)
162
- onToggle();
163
- } }) }) }), document.body)] }));
164
- }
165
106
  function useClientOnly() {
166
107
  const [mounted, setMounted] = useState(false);
167
108
  useEffect(() => setMounted(true), []);
168
109
  return mounted;
169
110
  }
170
- export function AgentPanel({ defaultMode = "chat", className, apiUrl, emptyStateText, suggestions, showHeader = true, onCollapse, }) {
111
+ export function AgentPanel({ defaultMode = "chat", className, apiUrl, emptyStateText, suggestions, showHeader = true, onCollapse, devAppUrl, storageKey, }) {
171
112
  const mounted = useClientOnly();
113
+ const keyPrefix = storageKey ? `:${storageKey}` : "";
114
+ const execModeKey = `${EXEC_MODE_KEY}${keyPrefix}`;
115
+ const panelModeKey = `agent-native-panel-mode${keyPrefix}`;
172
116
  const [execMode, setExecMode] = useState(() => {
173
117
  try {
174
- const saved = localStorage.getItem(EXEC_MODE_KEY);
118
+ const saved = localStorage.getItem(execModeKey);
175
119
  if (saved === "build" || saved === "plan")
176
120
  return saved;
177
121
  }
@@ -181,17 +125,20 @@ export function AgentPanel({ defaultMode = "chat", className, apiUrl, emptyState
181
125
  const switchExecMode = useCallback((next) => {
182
126
  setExecMode(next);
183
127
  try {
184
- localStorage.setItem(EXEC_MODE_KEY, next);
128
+ localStorage.setItem(execModeKey, next);
185
129
  }
186
130
  catch { }
187
131
  window.dispatchEvent(new CustomEvent("agent-panel:exec-mode-change", {
188
132
  detail: { mode: next },
189
133
  }));
190
- }, []);
134
+ }, [execModeKey]);
191
135
  const [mode, setMode] = useState(() => {
192
136
  try {
193
- const saved = localStorage.getItem("agent-native-panel-mode");
194
- if (saved === "chat" || saved === "cli" || saved === "resources")
137
+ const saved = localStorage.getItem(panelModeKey);
138
+ if (saved === "chat" ||
139
+ saved === "cli" ||
140
+ saved === "resources" ||
141
+ saved === "settings")
195
142
  return saved;
196
143
  }
197
144
  catch { }
@@ -199,13 +146,31 @@ export function AgentPanel({ defaultMode = "chat", className, apiUrl, emptyState
199
146
  });
200
147
  useEffect(() => {
201
148
  try {
202
- localStorage.setItem("agent-native-panel-mode", mode);
149
+ localStorage.setItem(panelModeKey, mode);
203
150
  }
204
151
  catch { }
205
- }, [mode]);
152
+ }, [mode, panelModeKey]);
206
153
  const switchMode = useCallback((m) => {
207
154
  startTransition(() => setMode(m));
208
155
  }, []);
156
+ // Listen for mode changes from the frame parent (via AgentSidebar)
157
+ useEffect(() => {
158
+ function handler(e) {
159
+ const detail = e.detail;
160
+ if (detail?.mode)
161
+ switchMode(detail.mode);
162
+ }
163
+ window.addEventListener("agent-panel:set-mode", handler);
164
+ return () => window.removeEventListener("agent-panel:set-mode", handler);
165
+ }, [switchMode]);
166
+ // Open settings tab when requested (replaces the old popover open event)
167
+ useEffect(() => {
168
+ function handleOpenSettings() {
169
+ switchMode("settings");
170
+ }
171
+ window.addEventListener("agent-panel:open-settings", handleOpenSettings);
172
+ return () => window.removeEventListener("agent-panel:open-settings", handleOpenSettings);
173
+ }, [switchMode]);
209
174
  // CLI terminal tabs (ephemeral — not persisted to SQL)
210
175
  const [cliTabs, setCliTabs] = useState(["cli-1"]);
211
176
  const [activeCliTab, setActiveCliTab] = useState("cli-1");
@@ -217,8 +182,12 @@ export function AgentPanel({ defaultMode = "chat", className, apiUrl, emptyState
217
182
  }, []);
218
183
  const closeCliTab = useCallback((id) => {
219
184
  setCliTabs((prev) => {
220
- if (prev.length <= 1)
221
- return prev;
185
+ if (prev.length <= 1) {
186
+ // Last tab — replace with a new one (acts as "clear")
187
+ const newId = `cli-${++cliCounter.current}`;
188
+ setActiveCliTab(newId);
189
+ return [newId];
190
+ }
222
191
  const next = prev.filter((t) => t !== id);
223
192
  if (id === activeCliTab) {
224
193
  const idx = prev.indexOf(id);
@@ -237,9 +206,25 @@ export function AgentPanel({ defaultMode = "chat", className, apiUrl, emptyState
237
206
  setActiveCliTab(id);
238
207
  }, []);
239
208
  const availableClis = useAvailableClis();
240
- const [selectedCli, selectCli] = useCliSelection();
209
+ const [selectedCli, selectCli] = useCliSelection(keyPrefix);
241
210
  const selectedLabel = availableClis.find((c) => c.command === selectedCli)?.label || selectedCli;
242
211
  const { isDevMode, canToggle, setDevMode } = useDevMode(apiUrl);
212
+ // Notify frame when dev mode changes — use both a local CustomEvent (for
213
+ // when AgentPanel is rendered directly in the frame) AND postMessage (for
214
+ // when AgentPanel is inside the iframe and needs to cross the boundary).
215
+ const prevIsDevMode = useRef(isDevMode);
216
+ useEffect(() => {
217
+ if (prevIsDevMode.current !== isDevMode) {
218
+ prevIsDevMode.current = isDevMode;
219
+ window.dispatchEvent(new CustomEvent("agent-panel:dev-mode-change", {
220
+ detail: { isDevMode },
221
+ }));
222
+ // Cross iframe boundary to the frame parent
223
+ if (window.parent !== window) {
224
+ window.parent.postMessage({ type: "builder.devModeChange", data: { isDevMode } }, "*");
225
+ }
226
+ }
227
+ }, [isDevMode]);
243
228
  const isLocalhost = mounted &&
244
229
  typeof window !== "undefined" &&
245
230
  (window.location.hostname === "localhost" ||
@@ -248,16 +233,19 @@ export function AgentPanel({ defaultMode = "chat", className, apiUrl, emptyState
248
233
  const showDevToggle = canToggle && isLocalhost;
249
234
  const renderModeButtons = useCallback((activeMode) => (_jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [_jsxs("button", { onClick: () => switchMode("chat"), className: cn("flex items-center gap-1 rounded-md px-2 py-1 text-[12px] leading-none", activeMode === "chat"
250
235
  ? "bg-accent text-foreground"
251
- : "text-muted-foreground hover:bg-accent/50 hover:text-foreground"), title: "Chat mode", style: AGENT_PANEL_CONTROL_STYLE, children: [_jsx(IconMessage, { size: 14 }), "Chat"] }), isDevMode && (_jsxs("button", { onClick: () => switchMode("cli"), className: cn("flex items-center gap-1 rounded-md px-2 py-1 text-[12px] leading-none", activeMode === "cli"
236
+ : "text-muted-foreground hover:bg-accent/50 hover:text-foreground"), title: "Chat mode", style: AGENT_PANEL_CONTROL_STYLE, children: [_jsx(IconMessage, { size: 14 }), "Chat"] }), _jsxs("button", { onClick: () => switchMode("cli"), className: cn("flex items-center gap-1 rounded-md px-2 py-1 text-[12px] leading-none", activeMode === "cli"
237
+ ? "bg-accent text-foreground"
238
+ : "text-muted-foreground hover:bg-accent/50 hover:text-foreground"), title: "CLI terminal mode", style: AGENT_PANEL_CONTROL_STYLE, children: [_jsx(IconTerminal2, { size: 14 }), "CLI"] }), _jsxs("button", { onClick: () => switchMode("resources"), className: cn("flex items-center gap-1 rounded-md px-2 py-1 text-[12px] leading-none", activeMode === "resources"
252
239
  ? "bg-accent text-foreground"
253
- : "text-muted-foreground hover:bg-accent/50 hover:text-foreground"), title: "CLI terminal mode", style: AGENT_PANEL_CONTROL_STYLE, children: [_jsx(IconTerminal2, { size: 14 }), "CLI"] })), _jsxs("button", { onClick: () => switchMode("resources"), className: cn("flex items-center gap-1 rounded-md px-2 py-1 text-[12px] leading-none", activeMode === "resources"
240
+ : "text-muted-foreground hover:bg-accent/50 hover:text-foreground"), title: "Workspace files, agents, skills, and tasks", style: AGENT_PANEL_CONTROL_STYLE, children: [_jsx(IconLayoutGrid, { size: 14 }), "Workspace"] }), _jsx("button", { onClick: () => switchMode("settings"), className: cn("flex items-center justify-center rounded-md px-1.5 py-1", activeMode === "settings"
254
241
  ? "bg-accent text-foreground"
255
- : "text-muted-foreground hover:bg-accent/50 hover:text-foreground"), title: "Files & resources", style: AGENT_PANEL_CONTROL_STYLE, children: [_jsx(IconFolder, { size: 14 }), "Files"] })] })), [isDevMode]);
256
- const renderHeaderActions = useCallback(() => (_jsxs("div", { className: "flex shrink-0 items-center gap-1.5", children: [showDevToggle && (_jsx(IconTooltip, { content: "Agent settings", children: _jsx("div", { children: _jsx(AgentSettingsPopover, { isDevMode: isDevMode, onToggle: () => setDevMode(!isDevMode) }) }) })), onCollapse && (_jsx(IconTooltip, { content: "Collapse sidebar", children: _jsx("button", { onClick: onCollapse, className: "flex h-6 w-6 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-accent/50", children: _jsx(IconLayoutSidebarRightCollapse, { size: 14 }) }) }))] })), [isDevMode, onCollapse, setDevMode, showDevToggle]);
242
+ : "text-muted-foreground hover:bg-accent/50 hover:text-foreground"), title: "Setup and configuration", children: _jsx(IconSettings, { size: 14 }) })] })), [isDevMode]);
243
+ const renderHeaderActions = useCallback(() => (_jsxs("div", { className: "flex shrink-0 items-center gap-1.5", children: [_jsx(Suspense, { fallback: null, children: _jsx(SetupButton, {}) }), onCollapse && (_jsx(IconTooltip, { content: "Collapse sidebar", children: _jsx("button", { onClick: onCollapse, className: "flex h-6 w-6 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-accent/50", children: _jsx(IconLayoutSidebarRightCollapse, { size: 14 }) }) }))] })), [onCollapse]);
257
244
  const [tabMenuOpen, setTabMenuOpen] = useState(null);
258
245
  const [cliPickerOpen, setCliPickerOpen] = useState(false);
246
+ const cliPickerBtnRef = useRef(null);
259
247
  // Ref callback: scroll the active tab into view in the overflow container.
260
- // Manually calculates scroll position to avoid scrollIntoView moving outer containers.
248
+ // Uses getBoundingClientRect for reliable positioning regardless of offsetParent.
261
249
  const activeTabRefCb = useCallback((el) => {
262
250
  if (!el)
263
251
  return;
@@ -266,78 +254,120 @@ export function AgentPanel({ defaultMode = "chat", className, apiUrl, emptyState
266
254
  return;
267
255
  // Use rAF so layout is settled after React commit
268
256
  requestAnimationFrame(() => {
269
- const tabLeft = el.offsetLeft;
270
- const tabRight = tabLeft + el.offsetWidth;
271
- const scrollLeft = container.scrollLeft;
272
- const viewWidth = container.clientWidth;
273
- if (tabLeft < scrollLeft) {
274
- container.scrollLeft = tabLeft;
257
+ const containerRect = container.getBoundingClientRect();
258
+ const tabRect = el.getBoundingClientRect();
259
+ if (tabRect.left < containerRect.left) {
260
+ container.scrollLeft += tabRect.left - containerRect.left;
275
261
  }
276
- else if (tabRight > scrollLeft + viewWidth) {
277
- container.scrollLeft = tabRight - viewWidth;
262
+ else if (tabRect.right > containerRect.right) {
263
+ container.scrollLeft += tabRect.right - containerRect.right;
278
264
  }
279
265
  });
280
266
  }, []);
281
- const renderChatHeader = useCallback(({ tabs, activeTabId, setActiveTabId, addTab, closeTab, closeOtherTabs, closeAllTabs, showHistory, toggleHistory, }) => (_jsxs("div", { className: "flex flex-col shrink-0", children: [_jsxs("div", { className: AGENT_PANEL_HEADER_CLASS, style: AGENT_PANEL_HEADER_STYLE, children: [_jsx("div", { className: "flex min-w-0 flex-1 items-center gap-1 overflow-hidden", children: renderModeButtons(mode) }), _jsx("div", { className: "flex items-center gap-0.5", children: renderHeaderActions() })] }), (mode === "chat" || mode === "cli") && (_jsxs("div", { className: "flex items-center px-1 py-1 border-b border-border gap-0.5", children: [_jsx("div", { className: "flex items-center gap-0.5 min-w-0 overflow-x-auto scrollbar-none flex-1", children: mode === "chat"
282
- ? tabs.map((tab) => (_jsxs("div", { role: "button", tabIndex: 0, ref: tab.id === activeTabId ? activeTabRefCb : undefined, onClick: () => setActiveTabId(tab.id), className: cn("agent-tab relative flex shrink-0 items-center gap-1 rounded-md px-2.5 py-1.5 text-[11px] font-medium cursor-pointer max-w-[150px]", tab.id === activeTabId
283
- ? "bg-accent text-foreground"
284
- : "text-muted-foreground hover:bg-accent hover:text-foreground"), children: [_jsx("span", { className: "truncate pr-1", children: tab.label }), tab.status === "running" && (_jsx("span", { className: "h-1.5 w-1.5 shrink-0 rounded-full bg-muted-foreground/50 animate-pulse" })), tabs.length > 1 && (_jsx("button", { type: "button", onClick: (e) => {
285
- e.stopPropagation();
286
- closeTab(tab.id);
287
- }, className: "agent-tab-close flex items-center justify-end text-muted-foreground hover:text-foreground", style: {
288
- position: "absolute",
289
- right: 0,
290
- top: 0,
291
- bottom: 0,
292
- width: 28,
293
- paddingRight: 6,
294
- borderRadius: "0 6px 6px 0",
295
- background: "linear-gradient(to right, transparent, hsl(var(--accent)) 40%)",
296
- }, children: _jsx(IconX, { size: 10 }) }))] }, tab.id)))
297
- : cliTabs.map((id, i) => (_jsxs("div", { role: "button", tabIndex: 0, ref: id === activeCliTab ? activeTabRefCb : undefined, onClick: () => setActiveCliTab(id), className: cn("agent-tab relative flex shrink-0 items-center gap-1 rounded-md px-2.5 py-1.5 text-[11px] font-medium cursor-pointer", id === activeCliTab
298
- ? "bg-accent text-foreground"
299
- : "text-muted-foreground hover:bg-accent hover:text-foreground"), children: [_jsxs("span", { children: ["Terminal ", i + 1] }), cliTabs.length > 1 && (_jsx("button", { type: "button", onClick: (e) => {
300
- e.stopPropagation();
301
- closeCliTab(id);
302
- }, className: "agent-tab-close flex items-center justify-end text-muted-foreground hover:text-foreground", style: {
303
- position: "absolute",
304
- right: 0,
305
- top: 0,
306
- bottom: 0,
307
- width: 28,
308
- paddingRight: 6,
309
- borderRadius: "0 6px 6px 0",
310
- background: "linear-gradient(to right, transparent, hsl(var(--accent)) 40%)",
311
- }, children: _jsx(IconX, { size: 10 }) }))] }, id))) }), _jsxs("div", { className: "flex items-center gap-0.5 shrink-0 ml-auto", children: [mode === "chat" && (_jsxs(_Fragment, { children: [_jsx(IconTooltip, { content: "New chat", children: _jsx("button", { onClick: addTab, className: "flex h-5 w-5 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-accent/50", children: _jsx(IconPlus, { size: 14 }) }) }), toggleHistory && (_jsx(IconTooltip, { content: "Chat history", children: _jsx("button", { onClick: toggleHistory, className: cn("flex h-5 w-5 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-accent/50", showHistory && "bg-accent text-foreground"), children: _jsx(IconHistory, { size: 14 }) }) })), _jsxs("div", { className: "relative", children: [_jsx(IconTooltip, { content: "Tab options", children: _jsx("button", { onClick: () => setTabMenuOpen(tabMenuOpen === "__chat_global"
312
- ? null
313
- : "__chat_global"), className: cn("flex h-5 w-5 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-accent/50", tabMenuOpen === "__chat_global" &&
314
- "bg-accent text-foreground"), children: _jsx(IconDotsVertical, { size: 14 }) }) }), tabMenuOpen === "__chat_global" && (_jsxs(_Fragment, { children: [_jsx("div", { className: "fixed inset-0 z-40", onClick: () => setTabMenuOpen(null) }), _jsxs("div", { className: "absolute right-0 top-full mt-1 z-50 w-44 rounded-md border border-border bg-popover py-1 shadow-lg", children: [_jsxs("button", { className: "flex w-full items-center justify-between px-3 py-1.5 text-xs text-foreground hover:bg-accent", onClick: () => {
315
- closeTab(activeTabId);
316
- setTabMenuOpen(null);
317
- }, children: ["Close Tab", _jsxs("kbd", { className: "text-[10px] text-muted-foreground", children: ["\u2318", "W"] })] }), _jsx("button", { className: "flex w-full items-center px-3 py-1.5 text-xs text-foreground hover:bg-accent", onClick: () => {
318
- closeOtherTabs(activeTabId);
319
- setTabMenuOpen(null);
320
- }, children: "Close Other Tabs" }), _jsx("button", { className: "flex w-full items-center px-3 py-1.5 text-xs text-foreground hover:bg-accent", onClick: () => {
321
- closeAllTabs();
322
- setTabMenuOpen(null);
323
- }, children: "Close All Tabs" })] })] }))] })] })), mode === "cli" && (_jsxs(_Fragment, { children: [_jsx(IconTooltip, { content: "New terminal", children: _jsx("button", { onClick: addCliTab, className: "flex h-5 w-5 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-accent/50", children: _jsx(IconPlus, { size: 14 }) }) }), availableClis.length > 0 && (_jsxs("div", { className: "relative", children: [_jsx(IconTooltip, { content: `CLI: ${selectedLabel}`, children: _jsx("button", { onClick: () => setCliPickerOpen(!cliPickerOpen), className: cn("flex h-5 w-5 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-accent/50", cliPickerOpen && "bg-accent text-foreground"), children: _jsx(IconSettings, { size: 14 }) }) }), cliPickerOpen && (_jsxs(_Fragment, { children: [_jsx("div", { className: "fixed inset-0 z-40", onClick: () => setCliPickerOpen(false) }), _jsx("div", { className: "absolute right-0 top-full mt-1 z-50 w-48 rounded-md border border-border bg-popover py-1 shadow-lg", children: availableClis.map((cli) => (_jsxs("button", { className: cn("flex w-full items-center gap-2 px-3 py-1.5 text-xs hover:bg-accent", cli.command === selectedCli
324
- ? "text-foreground font-medium"
325
- : "text-muted-foreground"), onClick: () => {
326
- selectCli(cli.command);
327
- setCliPickerOpen(false);
328
- }, children: [cli.command === selectedCli && (_jsx(IconCheck, { size: 12, className: "shrink-0" })), _jsx("span", { className: cli.command !== selectedCli ? "ml-5" : "", children: cli.label })] }, cli.command))) })] }))] })), _jsxs("div", { className: "relative", children: [_jsx(IconTooltip, { content: "Tab options", children: _jsx("button", { onClick: () => setTabMenuOpen(tabMenuOpen === "__cli_global"
329
- ? null
330
- : "__cli_global"), className: cn("flex h-5 w-5 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-accent/50", tabMenuOpen === "__cli_global" &&
331
- "bg-accent text-foreground"), children: _jsx(IconDotsVertical, { size: 14 }) }) }), tabMenuOpen === "__cli_global" && (_jsxs(_Fragment, { children: [_jsx("div", { className: "fixed inset-0 z-40", onClick: () => setTabMenuOpen(null) }), _jsxs("div", { className: "absolute right-0 top-full mt-1 z-50 w-44 rounded-md border border-border bg-popover py-1 shadow-lg", children: [_jsxs("button", { className: "flex w-full items-center justify-between px-3 py-1.5 text-xs text-foreground hover:bg-accent", onClick: () => {
332
- closeCliTab(activeCliTab);
333
- setTabMenuOpen(null);
334
- }, children: ["Close Tab", _jsxs("kbd", { className: "text-[10px] text-muted-foreground", children: ["\u2318", "W"] })] }), _jsx("button", { className: "flex w-full items-center px-3 py-1.5 text-xs text-foreground hover:bg-accent", onClick: () => {
335
- closeOtherCliTabs(activeCliTab);
336
- setTabMenuOpen(null);
337
- }, children: "Close Other Tabs" }), _jsx("button", { className: "flex w-full items-center px-3 py-1.5 text-xs text-foreground hover:bg-accent", onClick: () => {
338
- closeAllCliTabs();
339
- setTabMenuOpen(null);
340
- }, children: "Close All Tabs" })] })] }))] })] }))] })] }))] })), [
267
+ const renderChatHeader = useCallback(({ tabs, activeTabId, setActiveTabId, addTab, closeTab, closeOtherTabs, closeAllTabs, showHistory, toggleHistory, }) => (_jsxs("div", { className: "flex flex-col shrink-0", children: [_jsxs("div", { className: AGENT_PANEL_HEADER_CLASS, style: AGENT_PANEL_HEADER_STYLE, children: [_jsx("div", { className: "flex min-w-0 flex-1 items-center gap-1 overflow-hidden", children: renderModeButtons(mode) }), _jsx("div", { className: "flex items-center gap-0.5", children: renderHeaderActions() })] }), (mode === "chat" || mode === "cli") &&
268
+ (() => {
269
+ // Compute parent/child tab groups for the sub-tab bar
270
+ const activeTab = tabs.find((t) => t.id === activeTabId);
271
+ // The "focus parent" is the parent thread for the active context
272
+ const focusParentId = activeTab?.parentThreadId || activeTabId;
273
+ const childTabs = tabs.filter((t) => t.parentThreadId === focusParentId);
274
+ const hasSubTabs = childTabs.length > 0;
275
+ // Main row: only show top-level (non-child) tabs
276
+ const mainTabs = tabs.filter((t) => !t.parentThreadId);
277
+ return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex items-center px-2 py-1 border-b border-border gap-0.5", children: [_jsx("div", { className: "flex items-center gap-0.5 min-w-0 overflow-x-auto scrollbar-none flex-1", children: mode === "chat"
278
+ ? mainTabs.map((tab) => {
279
+ // Highlight the parent tab if a child is active
280
+ const isActive = tab.id === activeTabId ||
281
+ (tab.id === focusParentId &&
282
+ activeTab?.parentThreadId === tab.id);
283
+ return (_jsxs("div", { role: "button", tabIndex: 0, ref: isActive ? activeTabRefCb : undefined, onClick: () => setActiveTabId(tab.id), className: cn("agent-tab relative flex shrink-0 items-center gap-1 rounded-md px-2.5 py-1.5 text-[11px] font-medium cursor-pointer max-w-[150px]", isActive
284
+ ? "bg-accent text-foreground"
285
+ : "text-muted-foreground hover:bg-accent hover:text-foreground"), children: [_jsx("span", { className: "truncate pr-1", children: tab.label }), tab.status === "running" && (_jsx("span", { className: "h-1.5 w-1.5 shrink-0 rounded-full bg-muted-foreground/50 animate-pulse" })), _jsx("button", { type: "button", onClick: (e) => {
286
+ e.stopPropagation();
287
+ closeTab(tab.id);
288
+ }, className: "agent-tab-close flex items-center justify-end text-muted-foreground hover:text-foreground", style: {
289
+ position: "absolute",
290
+ right: 0,
291
+ top: 0,
292
+ bottom: 0,
293
+ width: 28,
294
+ paddingRight: 6,
295
+ borderRadius: "0 6px 6px 0",
296
+ background: "linear-gradient(to right, transparent, hsl(var(--accent)) 40%)",
297
+ }, children: _jsx(IconX, { size: 10 }) })] }, tab.id));
298
+ })
299
+ : cliTabs.map((id, i) => (_jsxs("div", { role: "button", tabIndex: 0, ref: id === activeCliTab ? activeTabRefCb : undefined, onClick: () => setActiveCliTab(id), className: cn("agent-tab relative flex shrink-0 items-center gap-1 rounded-md px-2.5 py-1.5 text-[11px] font-medium cursor-pointer", id === activeCliTab
300
+ ? "bg-accent text-foreground"
301
+ : "text-muted-foreground hover:bg-accent hover:text-foreground"), children: [_jsxs("span", { children: ["Terminal ", i + 1] }), _jsx("button", { type: "button", onClick: (e) => {
302
+ e.stopPropagation();
303
+ closeCliTab(id);
304
+ }, className: "agent-tab-close flex items-center justify-end text-muted-foreground hover:text-foreground", style: {
305
+ position: "absolute",
306
+ right: 0,
307
+ top: 0,
308
+ bottom: 0,
309
+ width: 28,
310
+ paddingRight: 6,
311
+ borderRadius: "0 6px 6px 0",
312
+ background: "linear-gradient(to right, transparent, hsl(var(--accent)) 40%)",
313
+ }, children: _jsx(IconX, { size: 10 }) })] }, id))) }), _jsxs("div", { className: "flex items-center gap-0.5 shrink-0 ml-auto", children: [mode === "chat" && (_jsxs(_Fragment, { children: [_jsx(IconTooltip, { content: "New chat", children: _jsx("button", { onClick: addTab, className: "flex h-5 w-5 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-accent/50", children: _jsx(IconPlus, { size: 14 }) }) }), toggleHistory && (_jsx(IconTooltip, { content: "Chat history", children: _jsx("button", { onClick: toggleHistory, className: cn("flex h-5 w-5 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-accent/50", showHistory && "bg-accent text-foreground"), children: _jsx(IconHistory, { size: 14 }) }) })), _jsxs("div", { className: "relative", children: [_jsx(IconTooltip, { content: "Tab options", children: _jsx("button", { onClick: () => setTabMenuOpen(tabMenuOpen === "__chat_global"
314
+ ? null
315
+ : "__chat_global"), className: cn("flex h-5 w-5 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-accent/50", tabMenuOpen === "__chat_global" &&
316
+ "bg-accent text-foreground"), children: _jsx(IconDotsVertical, { size: 14 }) }) }), tabMenuOpen === "__chat_global" && (_jsxs(_Fragment, { children: [_jsx("div", { className: "fixed inset-0 z-40", onClick: () => setTabMenuOpen(null) }), _jsxs("div", { className: "absolute right-0 top-full mt-1 z-50 w-44 rounded-md border border-border bg-popover py-1 shadow-lg", children: [_jsxs("button", { className: "flex w-full items-center justify-between px-3 py-1.5 text-xs text-foreground hover:bg-accent", onClick: () => {
317
+ closeTab(activeTabId);
318
+ setTabMenuOpen(null);
319
+ }, children: ["Close Tab", _jsxs("kbd", { className: "text-[10px] text-muted-foreground", children: ["\u2318", "W"] })] }), _jsx("button", { className: "flex w-full items-center px-3 py-1.5 text-xs text-foreground hover:bg-accent", onClick: () => {
320
+ closeOtherTabs(activeTabId);
321
+ setTabMenuOpen(null);
322
+ }, children: "Close Other Tabs" }), _jsx("button", { className: "flex w-full items-center px-3 py-1.5 text-xs text-foreground hover:bg-accent", onClick: () => {
323
+ closeAllTabs();
324
+ setTabMenuOpen(null);
325
+ }, children: "Close All Tabs" })] })] }))] })] })), mode === "cli" && (_jsxs(_Fragment, { children: [_jsx(IconTooltip, { content: "New terminal", children: _jsx("button", { onClick: addCliTab, className: "flex h-5 w-5 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-accent/50", children: _jsx(IconPlus, { size: 14 }) }) }), availableClis.length > 0 && (_jsxs("div", { className: "relative", children: [_jsx(IconTooltip, { content: `CLI: ${selectedLabel}`, children: _jsx("button", { ref: cliPickerBtnRef, onClick: () => setCliPickerOpen(!cliPickerOpen), className: cn("flex h-5 w-5 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-accent/50", cliPickerOpen && "bg-accent text-foreground"), children: _jsx(IconSettings, { size: 14 }) }) }), cliPickerOpen &&
326
+ ReactDOM.createPortal(_jsxs(_Fragment, { children: [_jsx("div", { className: "fixed inset-0 z-[9980]", onClick: () => setCliPickerOpen(false) }), _jsx("div", { className: "fixed z-[9990] w-48 rounded-md border border-border bg-popover py-1 shadow-lg", style: (() => {
327
+ const r = cliPickerBtnRef.current?.getBoundingClientRect();
328
+ if (!r)
329
+ return { top: 0, right: 0 };
330
+ return {
331
+ top: r.bottom + 4,
332
+ right: window.innerWidth - r.right,
333
+ };
334
+ })(), children: availableClis.map((cli) => (_jsxs("button", { className: cn("flex w-full items-center gap-2 px-3 py-1.5 text-xs hover:bg-accent", cli.command === selectedCli
335
+ ? "text-foreground font-medium"
336
+ : "text-muted-foreground"), onClick: () => {
337
+ selectCli(cli.command);
338
+ setCliPickerOpen(false);
339
+ }, children: [cli.command === selectedCli && (_jsx(IconCheck, { size: 12, className: "shrink-0" })), _jsx("span", { className: cli.command !== selectedCli
340
+ ? "ml-5"
341
+ : "", children: cli.label })] }, cli.command))) })] }), document.body)] })), _jsxs("div", { className: "relative", children: [_jsx(IconTooltip, { content: "Tab options", children: _jsx("button", { onClick: () => setTabMenuOpen(tabMenuOpen === "__cli_global"
342
+ ? null
343
+ : "__cli_global"), className: cn("flex h-5 w-5 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-accent/50", tabMenuOpen === "__cli_global" &&
344
+ "bg-accent text-foreground"), children: _jsx(IconDotsVertical, { size: 14 }) }) }), tabMenuOpen === "__cli_global" && (_jsxs(_Fragment, { children: [_jsx("div", { className: "fixed inset-0 z-40", onClick: () => setTabMenuOpen(null) }), _jsxs("div", { className: "absolute right-0 top-full mt-1 z-50 w-44 rounded-md border border-border bg-popover py-1 shadow-lg", children: [_jsxs("button", { className: "flex w-full items-center justify-between px-3 py-1.5 text-xs text-foreground hover:bg-accent", onClick: () => {
345
+ closeCliTab(activeCliTab);
346
+ setTabMenuOpen(null);
347
+ }, children: ["Close Tab", _jsxs("kbd", { className: "text-[10px] text-muted-foreground", children: ["\u2318", "W"] })] }), _jsx("button", { className: "flex w-full items-center px-3 py-1.5 text-xs text-foreground hover:bg-accent", onClick: () => {
348
+ closeOtherCliTabs(activeCliTab);
349
+ setTabMenuOpen(null);
350
+ }, children: "Close Other Tabs" }), _jsx("button", { className: "flex w-full items-center px-3 py-1.5 text-xs text-foreground hover:bg-accent", onClick: () => {
351
+ closeAllCliTabs();
352
+ setTabMenuOpen(null);
353
+ }, children: "Close All Tabs" })] })] }))] })] }))] })] }), mode === "chat" && hasSubTabs && (_jsx("div", { className: "flex items-center px-2 py-0.5 border-b border-border gap-0.5 bg-muted/30", children: _jsxs("div", { className: "flex items-center gap-0.5 min-w-0 overflow-x-auto scrollbar-none flex-1", children: [_jsx("div", { role: "button", tabIndex: 0, onClick: () => setActiveTabId(focusParentId), className: cn("flex shrink-0 items-center gap-1 rounded-md px-2 py-1 text-[10px] font-medium cursor-pointer", activeTabId === focusParentId
354
+ ? "bg-accent text-foreground"
355
+ : "text-muted-foreground hover:bg-accent hover:text-foreground"), children: "Main" }), childTabs.map((tab) => (_jsxs("div", { role: "button", tabIndex: 0, ref: tab.id === activeTabId ? activeTabRefCb : undefined, onClick: () => setActiveTabId(tab.id), className: cn("agent-tab relative flex shrink-0 items-center gap-1 rounded-md px-2 py-1 text-[10px] font-medium cursor-pointer max-w-[140px]", tab.id === activeTabId
356
+ ? "bg-accent text-foreground"
357
+ : "text-muted-foreground hover:bg-accent hover:text-foreground"), children: [_jsx("span", { className: "truncate pr-1", children: tab.subAgentName || tab.label }), tab.status === "running" && (_jsx("span", { className: "h-1 w-1 shrink-0 rounded-full bg-muted-foreground/50 animate-pulse" })), _jsx("button", { type: "button", onClick: (e) => {
358
+ e.stopPropagation();
359
+ closeTab(tab.id);
360
+ }, className: "agent-tab-close flex items-center justify-end text-muted-foreground hover:text-foreground", style: {
361
+ position: "absolute",
362
+ right: 0,
363
+ top: 0,
364
+ bottom: 0,
365
+ width: 24,
366
+ paddingRight: 4,
367
+ borderRadius: "0 6px 6px 0",
368
+ background: "linear-gradient(to right, transparent, hsl(var(--accent)) 40%)",
369
+ }, children: _jsx(IconX, { size: 8 }) })] }, tab.id)))] }) }))] }));
370
+ })()] })), [
341
371
  mode,
342
372
  renderHeaderActions,
343
373
  renderModeButtons,
@@ -356,14 +386,11 @@ export function AgentPanel({ defaultMode = "chat", className, apiUrl, emptyState
356
386
  ]);
357
387
  return (_jsxs("div", { className: cn("agent-panel-root flex flex-1 flex-col min-h-0 h-full text-[13px] leading-[1.2] antialiased", className), style: AGENT_PANEL_ROOT_STYLE, children: [_jsx("style", { dangerouslySetInnerHTML: {
358
388
  __html: ".agent-tab-close{opacity:0}.agent-tab:hover .agent-tab-close{opacity:1}",
359
- } }), _jsx("div", { className: cn("flex flex-col min-h-0", mode === "chat" ? "flex-1" : "shrink-0"), children: mounted && (_jsx(MultiTabAssistantChat, { apiUrl: apiUrl, showHeader: false, renderHeader: showHeader ? renderChatHeader : undefined, renderOverlay: undefined, contentHidden: mode !== "chat", emptyStateText: emptyStateText, suggestions: suggestions, onSwitchToCli: isDevMode ? () => switchMode("cli") : undefined, composerSlot: _jsxs("div", { className: "shrink-0 px-3 pt-1.5 pb-0 flex items-center justify-between gap-2", children: [execMode === "plan" ? (_jsxs("div", { className: "flex items-center gap-1.5 text-[11px] text-amber-700 dark:text-amber-400 min-w-0 truncate", children: [_jsx(IconPencil, { size: 12, className: "shrink-0" }), _jsx("span", { className: "truncate", children: "Plan mode \u2014 will plan before executing" })] })) : (_jsx("div", {})), _jsxs("div", { className: "flex shrink-0 items-center rounded-md border border-border overflow-hidden", style: AGENT_PANEL_CONTROL_STYLE, children: [_jsx("button", { onClick: () => switchExecMode("build"), className: cn("px-2 py-1 text-[11px] leading-none", execMode === "build"
360
- ? "bg-accent text-foreground"
361
- : "text-muted-foreground hover:bg-accent/50 hover:text-foreground"), title: "Build mode \u2014 agent executes immediately", children: "Build" }), _jsx("button", { onClick: () => switchExecMode("plan"), className: cn("px-2 py-1 text-[11px] leading-none", execMode === "plan"
362
- ? "bg-amber-500/20 text-amber-700 dark:text-amber-400"
363
- : "text-muted-foreground hover:bg-accent/50 hover:text-foreground"), title: "Plan mode \u2014 agent plans before executing", children: "Plan" })] })] }) })) }), isDevMode &&
364
- cliTabs.map((id) => (_jsx("div", { className: cn("min-h-0 relative", mode === "cli" ? "flex-1" : "hidden"), style: {
389
+ } }), mounted && mode === "chat" && (_jsx(Suspense, { fallback: null, children: _jsx(OnboardingPanel, {}) })), _jsx("div", { className: cn("flex flex-col min-h-0", mode === "chat" ? "flex-1" : "shrink-0"), children: mounted && (_jsx(MultiTabAssistantChat, { apiUrl: apiUrl, showHeader: false, renderHeader: showHeader ? renderChatHeader : undefined, renderOverlay: undefined, contentHidden: mode !== "chat", emptyStateText: emptyStateText, suggestions: suggestions, onSwitchToCli: () => switchMode("cli"), execMode: execMode, onExecModeChange: switchExecMode, storageKey: storageKey })) }), isDevMode
390
+ ? cliTabs.map((id) => (_jsx("div", { className: cn("min-h-0 relative", mode === "cli" ? "flex-1" : "hidden"), style: {
365
391
  display: mode === "cli" && id === activeCliTab ? undefined : "none",
366
- }, children: _jsx(Suspense, { fallback: _jsx("div", { className: "flex items-center justify-center h-full text-muted-foreground text-sm", children: "Loading terminal..." }), children: _jsx(AgentTerminal, { command: selectedCli, hideInHarness: false, className: "h-full", style: { background: "transparent" } }) }) }, id))), mode === "resources" && (_jsx("div", { className: "flex-1 min-h-0", children: _jsx(Suspense, { fallback: _jsx("div", { className: "flex h-full flex-col min-h-0", children: _jsx("div", { className: "flex shrink-0 items-center justify-between border-b border-border px-2 py-1.5", children: _jsxs("div", { className: "flex items-center gap-1", children: [_jsx("div", { className: "h-5 w-16 rounded bg-muted animate-pulse" }), _jsx("div", { className: "h-5 w-14 rounded bg-muted animate-pulse" })] }) }) }), children: _jsx(ResourcesPanel, {}) }) }))] }));
392
+ }, children: _jsx(Suspense, { fallback: _jsx("div", { className: "flex items-center justify-center h-full text-muted-foreground text-sm", children: "Loading terminal..." }), children: _jsx(AgentTerminal, { command: selectedCli, hideInFrame: false, className: "h-full", style: { background: "transparent" } }) }) }, id)))
393
+ : mode === "cli" && (_jsxs("div", { className: "flex flex-1 flex-col items-center justify-center min-h-0 px-6 gap-3", children: [_jsx("div", { className: "flex h-10 w-10 items-center justify-center rounded-full bg-muted", children: _jsx(IconTerminal2, { className: "h-5 w-5 text-muted-foreground" }) }), _jsxs("div", { className: "text-center max-w-[260px]", children: [_jsx("p", { className: "text-sm font-medium text-foreground mb-1", children: "CLI requires dev mode" }), _jsxs("p", { className: "text-xs text-muted-foreground leading-relaxed", children: ["Run this app locally with", " ", _jsx("code", { className: "bg-muted px-1 py-0.5 rounded text-[10px]", children: "pnpm dev" }), " ", "or use", " ", _jsx("span", { className: "font-medium text-foreground", children: "Builder.io" }), " ", "to access the CLI terminal."] })] })] })), mode === "resources" && (_jsx("div", { className: "flex-1 min-h-0", children: _jsx(Suspense, { fallback: _jsx("div", { className: "flex h-full flex-col min-h-0", children: _jsx("div", { className: "flex shrink-0 items-center justify-between border-b border-border px-2 py-1.5", children: _jsxs("div", { className: "flex items-center gap-1", children: [_jsx("div", { className: "h-5 w-16 rounded bg-muted animate-pulse" }), _jsx("div", { className: "h-5 w-14 rounded bg-muted animate-pulse" })] }) }) }), children: _jsx(ResourcesPanel, {}) }) })), mode === "settings" && (_jsx("div", { className: "flex flex-col flex-1 min-h-0", children: _jsx(Suspense, { fallback: _jsxs("div", { className: "p-3 space-y-2", children: [_jsx("div", { className: "h-10 w-full rounded-lg bg-muted animate-pulse" }), _jsx("div", { className: "h-10 w-full rounded-lg bg-muted animate-pulse" }), _jsx("div", { className: "h-10 w-full rounded-lg bg-muted animate-pulse" })] }), children: _jsx(SettingsPanel, { isDevMode: isDevMode, onToggleDevMode: () => setDevMode(!isDevMode), showDevToggle: showDevToggle, devAppUrl: devAppUrl }) }) }))] }));
367
394
  }
368
395
  // ─── Resize handle ──────────────────────────────────────────────────────────
369
396
  const SIDEBAR_STORAGE_KEY = "agent-native-sidebar-width";
@@ -441,6 +468,12 @@ function ResizeHandle({ position, onDrag, }) {
441
468
  */
442
469
  export function AgentSidebar({ children, emptyStateText = "How can I help you?", suggestions, sidebarWidth = 380, position = "right", defaultOpen = false, }) {
443
470
  const [open, setOpen] = useState(() => {
471
+ // On mobile viewports the sidebar would cover most of the screen, so
472
+ // always start closed regardless of any persisted desktop preference.
473
+ if (typeof window !== "undefined" &&
474
+ window.matchMedia("(max-width: 767px)").matches) {
475
+ return false;
476
+ }
444
477
  try {
445
478
  const saved = localStorage.getItem(SIDEBAR_OPEN_KEY);
446
479
  if (saved !== null)
@@ -449,7 +482,17 @@ export function AgentSidebar({ children, emptyStateText = "How can I help you?",
449
482
  catch { }
450
483
  return defaultOpen;
451
484
  });
485
+ const [presentationMode, setPresentationMode] = useState(false);
452
486
  const [width, setWidth] = useState(sidebarWidth);
487
+ // Track mobile viewport so we can switch to overlay mode.
488
+ const [isMobile, setIsMobile] = useState(() => typeof window !== "undefined" &&
489
+ window.matchMedia("(max-width: 767px)").matches);
490
+ useEffect(() => {
491
+ const mq = window.matchMedia("(max-width: 767px)");
492
+ const handler = (e) => setIsMobile(e.matches);
493
+ mq.addEventListener("change", handler);
494
+ return () => mq.removeEventListener("change", handler);
495
+ }, []);
453
496
  useEffect(() => {
454
497
  try {
455
498
  const saved = localStorage.getItem(SIDEBAR_STORAGE_KEY);
@@ -471,12 +514,27 @@ export function AgentSidebar({ children, emptyStateText = "How can I help you?",
471
514
  return value;
472
515
  });
473
516
  }, []);
517
+ // Track whether the frame is controlling the sidebar (code mode = frame active).
518
+ // Default to true when inside an iframe — assume the frame sidebar is active
519
+ // until told otherwise. This prevents both sidebars flashing after hot reloads.
520
+ const [frameCodeMode, setFrameCodeMode] = useState(() => typeof window !== "undefined" && window.parent !== window);
474
521
  useEffect(() => {
475
522
  const toggleHandler = () => {
476
- setOpenPersisted((prev) => !prev);
523
+ if (frameCodeMode && window.parent !== window) {
524
+ // Forward toggle to frame parent — the frame sidebar handles it
525
+ window.parent.postMessage({ type: "builder.toggleSidebar" }, "*");
526
+ }
527
+ else {
528
+ setOpenPersisted((prev) => !prev);
529
+ }
477
530
  };
478
531
  const openHandler = () => {
479
- setOpenPersisted(true);
532
+ if (frameCodeMode && window.parent !== window) {
533
+ window.parent.postMessage({ type: "builder.toggleSidebar", data: { open: true } }, "*");
534
+ }
535
+ else {
536
+ setOpenPersisted(true);
537
+ }
480
538
  };
481
539
  window.addEventListener("agent-panel:toggle", toggleHandler);
482
540
  window.addEventListener("agent-panel:open", openHandler);
@@ -484,6 +542,45 @@ export function AgentSidebar({ children, emptyStateText = "How can I help you?",
484
542
  window.removeEventListener("agent-panel:toggle", toggleHandler);
485
543
  window.removeEventListener("agent-panel:open", openHandler);
486
544
  };
545
+ }, [setOpenPersisted, frameCodeMode]);
546
+ // Listen for sidebar mode commands from the frame parent.
547
+ // When frame is in "code" mode, hide the app sidebar.
548
+ // When frame is in "app" mode, show the app sidebar, sync width and panel mode.
549
+ useEffect(() => {
550
+ if (window.parent === window)
551
+ return; // Not in an iframe
552
+ function handleMessage(event) {
553
+ if (event.data?.type !== "builder.sidebarMode")
554
+ return;
555
+ const { mode, appMode, width: frameWidth, open: frameOpen, } = event.data.data || {};
556
+ if (mode === "code") {
557
+ // Frame is showing its own sidebar — hide the app's
558
+ setFrameCodeMode(true);
559
+ setOpenPersisted(false);
560
+ }
561
+ else if (mode === "app") {
562
+ // Frame deferred to the app — show and sync width + mode
563
+ setFrameCodeMode(false);
564
+ if (frameOpen !== false) {
565
+ setOpenPersisted(true);
566
+ }
567
+ if (frameWidth &&
568
+ frameWidth >= SIDEBAR_MIN &&
569
+ frameWidth <= SIDEBAR_MAX) {
570
+ setWidth(frameWidth);
571
+ }
572
+ // Sync the panel mode from frame tab selection
573
+ if (appMode === "cli" ||
574
+ appMode === "resources" ||
575
+ appMode === "chat") {
576
+ window.dispatchEvent(new CustomEvent("agent-panel:set-mode", {
577
+ detail: { mode: appMode },
578
+ }));
579
+ }
580
+ }
581
+ }
582
+ window.addEventListener("message", handleMessage);
583
+ return () => window.removeEventListener("message", handleMessage);
487
584
  }, [setOpenPersisted]);
488
585
  // Cmd+I / Ctrl+I to focus the agent chat
489
586
  useEffect(() => {
@@ -496,6 +593,16 @@ export function AgentSidebar({ children, emptyStateText = "How can I help you?",
496
593
  document.addEventListener("keydown", handleKeyDown);
497
594
  return () => document.removeEventListener("keydown", handleKeyDown);
498
595
  }, []);
596
+ // Hide sidebar during presentation mode
597
+ useEffect(() => {
598
+ const handler = (event) => {
599
+ if (event.data?.type !== "builder.presentationMode")
600
+ return;
601
+ setPresentationMode(event.data.data?.active === true);
602
+ };
603
+ window.addEventListener("message", handler);
604
+ return () => window.removeEventListener("message", handler);
605
+ }, []);
499
606
  const handleDrag = useCallback((delta) => {
500
607
  setWidth((prev) => {
501
608
  const next = Math.min(SIDEBAR_MAX, Math.max(SIDEBAR_MIN, prev + delta));
@@ -507,8 +614,35 @@ export function AgentSidebar({ children, emptyStateText = "How can I help you?",
507
614
  });
508
615
  }, []);
509
616
  const isLeft = position === "left";
510
- const sidebar = (_jsxs(_Fragment, { children: [isLeft ? null : _jsx(ResizeHandle, { position: position, onDrag: handleDrag }), _jsx("div", { className: "agent-sidebar-panel flex shrink-0 flex-col overflow-hidden text-[13px] leading-[1.2] antialiased", style: { ...AGENT_PANEL_ROOT_STYLE, width, maxHeight: "100vh" }, children: _jsx(AgentPanel, { emptyStateText: emptyStateText, suggestions: suggestions, onCollapse: () => setOpenPersisted(false) }) }), isLeft ? _jsx(ResizeHandle, { position: position, onDrag: handleDrag }) : null] }));
511
- return (_jsxs("div", { className: "flex min-w-0 flex-1 overflow-hidden", children: [isLeft && open ? sidebar : null, _jsx("div", { className: "flex flex-1 flex-col overflow-hidden min-w-0", children: children }), !isLeft && open ? sidebar : null] }));
617
+ // On mobile the sidebar floats as a fixed overlay so the content below isn't
618
+ // squashed. On desktop it participates in the flex layout as before.
619
+ const mobileSidebarStyle = isMobile
620
+ ? {
621
+ position: "fixed",
622
+ top: 0,
623
+ [isLeft ? "left" : "right"]: 0,
624
+ height: "100%",
625
+ maxWidth: "85vw",
626
+ zIndex: 50,
627
+ background: "hsl(var(--background))",
628
+ borderLeft: isLeft ? "none" : "1px solid hsl(var(--border))",
629
+ borderRight: isLeft ? "1px solid hsl(var(--border))" : "none",
630
+ }
631
+ : {};
632
+ // Always render the sidebar panel (even when closed) so MultiTabAssistantChat
633
+ // stays mounted and can receive messages (e.g. from voice dictation) while
634
+ // the sidebar is visually hidden. When the user opens the sidebar they'll see
635
+ // any in-progress or completed conversations.
636
+ const sidebar = (_jsxs(_Fragment, { children: [!isMobile &&
637
+ (isLeft ? null : open ? (_jsx(ResizeHandle, { position: position, onDrag: handleDrag })) : null), _jsx("div", { className: "agent-sidebar-panel flex shrink-0 flex-col overflow-hidden text-[13px] leading-[1.2] antialiased", style: {
638
+ ...AGENT_PANEL_ROOT_STYLE,
639
+ ...mobileSidebarStyle,
640
+ width,
641
+ maxHeight: "100vh",
642
+ display: open ? "flex" : "none",
643
+ }, children: _jsx(AgentPanel, { emptyStateText: emptyStateText, suggestions: suggestions, onCollapse: () => setOpenPersisted(false) }) }), !isMobile &&
644
+ (isLeft ? (open ? (_jsx(ResizeHandle, { position: position, onDrag: handleDrag })) : null) : null)] }));
645
+ return (_jsxs("div", { className: "flex min-w-0 flex-1 h-screen overflow-hidden", children: [isMobile && open && !presentationMode && (_jsx("div", { className: "fixed inset-0 z-40 bg-black/40", onClick: () => setOpenPersisted(false) })), isLeft && !presentationMode ? sidebar : null, _jsx("div", { className: "flex flex-1 flex-col overflow-auto min-w-0", children: children }), !isLeft && !presentationMode ? sidebar : null] }));
512
646
  }
513
647
  /**
514
648
  * Focus the agent chat composer input.
@@ -536,6 +670,6 @@ export function focusAgentChat() {
536
670
  * Dispatches a custom event that AgentSidebar listens for.
537
671
  */
538
672
  export function AgentToggleButton({ className }) {
539
- return (_jsx("button", { onClick: () => window.dispatchEvent(new Event("agent-panel:toggle")), className: cn("flex h-5 w-5 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-accent/50", className), title: "Toggle agent", children: _jsx(IconMessage, { size: 16 }) }));
673
+ return (_jsx("button", { onClick: () => window.dispatchEvent(new Event("agent-panel:toggle")), className: cn("ml-1.5 flex h-5 w-5 items-center justify-center rounded text-muted-foreground hover:text-foreground hover:bg-accent/50", className), title: "Toggle agent", children: _jsx(IconMessage, { size: 16 }) }));
540
674
  }
541
675
  //# sourceMappingURL=AgentPanel.js.map