@agent-native/core 0.14.8 → 0.15.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 (544) hide show
  1. package/README.md +1 -1
  2. package/dist/agent/engine/builder-engine.d.ts.map +1 -1
  3. package/dist/agent/engine/builder-engine.js +30 -9
  4. package/dist/agent/engine/builder-engine.js.map +1 -1
  5. package/dist/agent/engine/registry.d.ts.map +1 -1
  6. package/dist/agent/engine/registry.js +14 -4
  7. package/dist/agent/engine/registry.js.map +1 -1
  8. package/dist/agent/production-agent.d.ts.map +1 -1
  9. package/dist/agent/production-agent.js +71 -4
  10. package/dist/agent/production-agent.js.map +1 -1
  11. package/dist/agent/types.d.ts +9 -0
  12. package/dist/agent/types.d.ts.map +1 -1
  13. package/dist/agent/types.js.map +1 -1
  14. package/dist/appearance/actions/change-appearance.d.ts +3 -0
  15. package/dist/appearance/actions/change-appearance.d.ts.map +1 -0
  16. package/dist/appearance/actions/change-appearance.js +29 -0
  17. package/dist/appearance/actions/change-appearance.js.map +1 -0
  18. package/dist/chat-threads/store.d.ts +53 -2
  19. package/dist/chat-threads/store.d.ts.map +1 -1
  20. package/dist/chat-threads/store.js +172 -12
  21. package/dist/chat-threads/store.js.map +1 -1
  22. package/dist/cli/create.d.ts.map +1 -1
  23. package/dist/cli/create.js +114 -37
  24. package/dist/cli/create.js.map +1 -1
  25. package/dist/cli/index.js +30 -4
  26. package/dist/cli/index.js.map +1 -1
  27. package/dist/cli/workspace-dev.d.ts +25 -1
  28. package/dist/cli/workspace-dev.d.ts.map +1 -1
  29. package/dist/cli/workspace-dev.js +275 -49
  30. package/dist/cli/workspace-dev.js.map +1 -1
  31. package/dist/client/AgentPanel.d.ts +23 -4
  32. package/dist/client/AgentPanel.d.ts.map +1 -1
  33. package/dist/client/AgentPanel.js +276 -53
  34. package/dist/client/AgentPanel.js.map +1 -1
  35. package/dist/client/AppearancePicker.d.ts +11 -0
  36. package/dist/client/AppearancePicker.d.ts.map +1 -0
  37. package/dist/client/AppearancePicker.js +16 -0
  38. package/dist/client/AppearancePicker.js.map +1 -0
  39. package/dist/client/AssistantChat.d.ts +35 -0
  40. package/dist/client/AssistantChat.d.ts.map +1 -1
  41. package/dist/client/AssistantChat.js +315 -32
  42. package/dist/client/AssistantChat.js.map +1 -1
  43. package/dist/client/ConnectBuilderCard.d.ts.map +1 -1
  44. package/dist/client/ConnectBuilderCard.js +5 -2
  45. package/dist/client/ConnectBuilderCard.js.map +1 -1
  46. package/dist/client/ErrorBoundary.d.ts.map +1 -1
  47. package/dist/client/ErrorBoundary.js +8 -10
  48. package/dist/client/ErrorBoundary.js.map +1 -1
  49. package/dist/client/FeedbackButton.d.ts.map +1 -1
  50. package/dist/client/FeedbackButton.js +1 -1
  51. package/dist/client/FeedbackButton.js.map +1 -1
  52. package/dist/client/MultiTabAssistantChat.d.ts +13 -1
  53. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  54. package/dist/client/MultiTabAssistantChat.js +217 -38
  55. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  56. package/dist/client/NewWorkspaceAppFlow.d.ts.map +1 -1
  57. package/dist/client/NewWorkspaceAppFlow.js +37 -14
  58. package/dist/client/NewWorkspaceAppFlow.js.map +1 -1
  59. package/dist/client/agent-chat-adapter.d.ts +5 -0
  60. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  61. package/dist/client/agent-chat-adapter.js +4 -0
  62. package/dist/client/agent-chat-adapter.js.map +1 -1
  63. package/dist/client/agent-sidebar-state.d.ts +12 -0
  64. package/dist/client/agent-sidebar-state.d.ts.map +1 -1
  65. package/dist/client/agent-sidebar-state.js +8 -0
  66. package/dist/client/agent-sidebar-state.js.map +1 -1
  67. package/dist/client/analytics.d.ts.map +1 -1
  68. package/dist/client/analytics.js +175 -3
  69. package/dist/client/analytics.js.map +1 -1
  70. package/dist/client/appearance.d.ts +40 -0
  71. package/dist/client/appearance.d.ts.map +1 -0
  72. package/dist/client/appearance.js +114 -0
  73. package/dist/client/appearance.js.map +1 -0
  74. package/dist/client/builder-frame.d.ts +1 -0
  75. package/dist/client/builder-frame.d.ts.map +1 -1
  76. package/dist/client/builder-frame.js +19 -9
  77. package/dist/client/builder-frame.js.map +1 -1
  78. package/dist/client/components/CodeRequiredDialog.d.ts.map +1 -1
  79. package/dist/client/components/CodeRequiredDialog.js +10 -2
  80. package/dist/client/components/CodeRequiredDialog.js.map +1 -1
  81. package/dist/client/components/ui/dropdown-menu.js +2 -2
  82. package/dist/client/components/ui/dropdown-menu.js.map +1 -1
  83. package/dist/client/components/ui/hover-card.js +1 -1
  84. package/dist/client/components/ui/hover-card.js.map +1 -1
  85. package/dist/client/components/ui/popover.js +1 -1
  86. package/dist/client/components/ui/popover.js.map +1 -1
  87. package/dist/client/composer/PromptComposer.d.ts +7 -0
  88. package/dist/client/composer/PromptComposer.d.ts.map +1 -1
  89. package/dist/client/composer/PromptComposer.js +63 -32
  90. package/dist/client/composer/PromptComposer.js.map +1 -1
  91. package/dist/client/composer/TiptapComposer.d.ts +5 -0
  92. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  93. package/dist/client/composer/TiptapComposer.js +36 -6
  94. package/dist/client/composer/TiptapComposer.js.map +1 -1
  95. package/dist/client/composer/useVoiceDictation.d.ts.map +1 -1
  96. package/dist/client/composer/useVoiceDictation.js +13 -1
  97. package/dist/client/composer/useVoiceDictation.js.map +1 -1
  98. package/dist/client/dev-mode.d.ts +14 -0
  99. package/dist/client/dev-mode.d.ts.map +1 -0
  100. package/dist/client/dev-mode.js +14 -0
  101. package/dist/client/dev-mode.js.map +1 -0
  102. package/dist/client/error-format.d.ts +3 -2
  103. package/dist/client/error-format.d.ts.map +1 -1
  104. package/dist/client/error-format.js +9 -2
  105. package/dist/client/error-format.js.map +1 -1
  106. package/dist/client/extensions/EmbeddedTool.d.ts +20 -0
  107. package/dist/client/extensions/EmbeddedTool.d.ts.map +1 -0
  108. package/dist/client/extensions/EmbeddedTool.js +199 -0
  109. package/dist/client/extensions/EmbeddedTool.js.map +1 -0
  110. package/dist/client/extensions/ExtensionViewer.d.ts.map +1 -1
  111. package/dist/client/extensions/ExtensionViewer.js +24 -2
  112. package/dist/client/extensions/ExtensionViewer.js.map +1 -1
  113. package/dist/client/extensions/ToolEditor.d.ts +5 -0
  114. package/dist/client/extensions/ToolEditor.d.ts.map +1 -0
  115. package/dist/client/extensions/ToolEditor.js +129 -0
  116. package/dist/client/extensions/ToolEditor.js.map +1 -0
  117. package/dist/client/extensions/ToolViewer.d.ts +5 -0
  118. package/dist/client/extensions/ToolViewer.d.ts.map +1 -0
  119. package/dist/client/extensions/ToolViewer.js +400 -0
  120. package/dist/client/extensions/ToolViewer.js.map +1 -0
  121. package/dist/client/extensions/ToolViewerPage.d.ts +2 -0
  122. package/dist/client/extensions/ToolViewerPage.d.ts.map +1 -0
  123. package/dist/client/extensions/ToolViewerPage.js +24 -0
  124. package/dist/client/extensions/ToolViewerPage.js.map +1 -0
  125. package/dist/client/extensions/ToolsListPage.d.ts +2 -0
  126. package/dist/client/extensions/ToolsListPage.d.ts.map +1 -0
  127. package/dist/client/extensions/ToolsListPage.js +67 -0
  128. package/dist/client/extensions/ToolsListPage.js.map +1 -0
  129. package/dist/client/extensions/ToolsSidebarSection.d.ts +2 -0
  130. package/dist/client/extensions/ToolsSidebarSection.d.ts.map +1 -0
  131. package/dist/client/extensions/ToolsSidebarSection.js +236 -0
  132. package/dist/client/extensions/ToolsSidebarSection.js.map +1 -0
  133. package/dist/client/extensions/tool-order.d.ts +7 -0
  134. package/dist/client/extensions/tool-order.d.ts.map +1 -0
  135. package/dist/client/extensions/tool-order.js +47 -0
  136. package/dist/client/extensions/tool-order.js.map +1 -0
  137. package/dist/client/index.d.ts +8 -1
  138. package/dist/client/index.d.ts.map +1 -1
  139. package/dist/client/index.js +7 -0
  140. package/dist/client/index.js.map +1 -1
  141. package/dist/client/onboarding/OnboardingPanel.js +1 -0
  142. package/dist/client/onboarding/OnboardingPanel.js.map +1 -1
  143. package/dist/client/org/InvitationBanner.d.ts.map +1 -1
  144. package/dist/client/org/InvitationBanner.js +23 -2
  145. package/dist/client/org/InvitationBanner.js.map +1 -1
  146. package/dist/client/org/OrgSwitcher.d.ts +5 -4
  147. package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
  148. package/dist/client/org/OrgSwitcher.js +57 -9
  149. package/dist/client/org/OrgSwitcher.js.map +1 -1
  150. package/dist/client/org/hooks.d.ts.map +1 -1
  151. package/dist/client/org/hooks.js +10 -6
  152. package/dist/client/org/hooks.js.map +1 -1
  153. package/dist/client/org/workspace-app-links.d.ts +31 -0
  154. package/dist/client/org/workspace-app-links.d.ts.map +1 -0
  155. package/dist/client/org/workspace-app-links.js +268 -0
  156. package/dist/client/org/workspace-app-links.js.map +1 -0
  157. package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
  158. package/dist/client/resources/ResourcesPanel.js +18 -5
  159. package/dist/client/resources/ResourcesPanel.js.map +1 -1
  160. package/dist/client/resources/use-resources.d.ts +18 -13
  161. package/dist/client/resources/use-resources.d.ts.map +1 -1
  162. package/dist/client/resources/use-resources.js +24 -6
  163. package/dist/client/resources/use-resources.js.map +1 -1
  164. package/dist/client/settings/BackgroundAgentSection.d.ts.map +1 -1
  165. package/dist/client/settings/BackgroundAgentSection.js +9 -1
  166. package/dist/client/settings/BackgroundAgentSection.js.map +1 -1
  167. package/dist/client/settings/BrowserSection.d.ts.map +1 -1
  168. package/dist/client/settings/BrowserSection.js +16 -1
  169. package/dist/client/settings/BrowserSection.js.map +1 -1
  170. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  171. package/dist/client/settings/SettingsPanel.js +4 -1
  172. package/dist/client/settings/SettingsPanel.js.map +1 -1
  173. package/dist/client/settings/VoiceTranscriptionSection.d.ts.map +1 -1
  174. package/dist/client/settings/VoiceTranscriptionSection.js +5 -5
  175. package/dist/client/settings/VoiceTranscriptionSection.js.map +1 -1
  176. package/dist/client/settings/useBuilderStatus.d.ts +8 -0
  177. package/dist/client/settings/useBuilderStatus.d.ts.map +1 -1
  178. package/dist/client/settings/useBuilderStatus.js +50 -13
  179. package/dist/client/settings/useBuilderStatus.js.map +1 -1
  180. package/dist/client/settings/useBuilderStatus.spec.d.ts +2 -0
  181. package/dist/client/settings/useBuilderStatus.spec.d.ts.map +1 -0
  182. package/dist/client/settings/useBuilderStatus.spec.js +64 -0
  183. package/dist/client/settings/useBuilderStatus.spec.js.map +1 -0
  184. package/dist/client/sharing/ShareButton.d.ts +5 -0
  185. package/dist/client/sharing/ShareButton.d.ts.map +1 -1
  186. package/dist/client/sharing/ShareButton.js +60 -6
  187. package/dist/client/sharing/ShareButton.js.map +1 -1
  188. package/dist/client/theme.js +1 -1
  189. package/dist/client/theme.js.map +1 -1
  190. package/dist/client/tools/EmbeddedTool.d.ts +20 -0
  191. package/dist/client/tools/EmbeddedTool.d.ts.map +1 -0
  192. package/dist/client/tools/EmbeddedTool.js +199 -0
  193. package/dist/client/tools/EmbeddedTool.js.map +1 -0
  194. package/dist/client/tools/ExtensionSlot.d.ts +27 -0
  195. package/dist/client/tools/ExtensionSlot.d.ts.map +1 -0
  196. package/dist/client/tools/ExtensionSlot.js +96 -0
  197. package/dist/client/tools/ExtensionSlot.js.map +1 -0
  198. package/dist/client/tools/ToolEditor.d.ts +5 -0
  199. package/dist/client/tools/ToolEditor.d.ts.map +1 -0
  200. package/dist/client/tools/ToolEditor.js +129 -0
  201. package/dist/client/tools/ToolEditor.js.map +1 -0
  202. package/dist/client/tools/ToolViewer.d.ts +5 -0
  203. package/dist/client/tools/ToolViewer.d.ts.map +1 -0
  204. package/dist/client/tools/ToolViewer.js +400 -0
  205. package/dist/client/tools/ToolViewer.js.map +1 -0
  206. package/dist/client/tools/ToolViewerPage.d.ts +2 -0
  207. package/dist/client/tools/ToolViewerPage.d.ts.map +1 -0
  208. package/dist/client/tools/ToolViewerPage.js +24 -0
  209. package/dist/client/tools/ToolViewerPage.js.map +1 -0
  210. package/dist/client/tools/ToolsListPage.d.ts +2 -0
  211. package/dist/client/tools/ToolsListPage.d.ts.map +1 -0
  212. package/dist/client/tools/ToolsListPage.js +67 -0
  213. package/dist/client/tools/ToolsListPage.js.map +1 -0
  214. package/dist/client/tools/ToolsSidebarSection.d.ts +2 -0
  215. package/dist/client/tools/ToolsSidebarSection.d.ts.map +1 -0
  216. package/dist/client/tools/ToolsSidebarSection.js +236 -0
  217. package/dist/client/tools/ToolsSidebarSection.js.map +1 -0
  218. package/dist/client/tools/iframe-bridge.d.ts +38 -0
  219. package/dist/client/tools/iframe-bridge.d.ts.map +1 -0
  220. package/dist/client/tools/iframe-bridge.js +207 -0
  221. package/dist/client/tools/iframe-bridge.js.map +1 -0
  222. package/dist/client/tools/index.d.ts +8 -0
  223. package/dist/client/tools/index.d.ts.map +1 -0
  224. package/dist/client/tools/index.js +8 -0
  225. package/dist/client/tools/index.js.map +1 -0
  226. package/dist/client/tools/tool-order.d.ts +7 -0
  227. package/dist/client/tools/tool-order.d.ts.map +1 -0
  228. package/dist/client/tools/tool-order.js +47 -0
  229. package/dist/client/tools/tool-order.js.map +1 -0
  230. package/dist/client/transcription/BuilderTranscriptionCta.d.ts.map +1 -1
  231. package/dist/client/transcription/BuilderTranscriptionCta.js +2 -3
  232. package/dist/client/transcription/BuilderTranscriptionCta.js.map +1 -1
  233. package/dist/client/use-change-version.d.ts +46 -0
  234. package/dist/client/use-change-version.d.ts.map +1 -0
  235. package/dist/client/use-change-version.js +135 -0
  236. package/dist/client/use-change-version.js.map +1 -0
  237. package/dist/client/use-chat-threads.d.ts +16 -2
  238. package/dist/client/use-chat-threads.d.ts.map +1 -1
  239. package/dist/client/use-chat-threads.js +87 -12
  240. package/dist/client/use-chat-threads.js.map +1 -1
  241. package/dist/client/use-chat-threads.spec.d.ts +2 -0
  242. package/dist/client/use-chat-threads.spec.d.ts.map +1 -0
  243. package/dist/client/use-chat-threads.spec.js +85 -0
  244. package/dist/client/use-chat-threads.spec.js.map +1 -0
  245. package/dist/client/use-db-sync.d.ts +5 -2
  246. package/dist/client/use-db-sync.d.ts.map +1 -1
  247. package/dist/client/use-db-sync.js +41 -16
  248. package/dist/client/use-db-sync.js.map +1 -1
  249. package/dist/client/use-pinch-zoom.d.ts +35 -0
  250. package/dist/client/use-pinch-zoom.d.ts.map +1 -0
  251. package/dist/client/use-pinch-zoom.js +105 -0
  252. package/dist/client/use-pinch-zoom.js.map +1 -0
  253. package/dist/deploy/workspace-deploy.d.ts.map +1 -1
  254. package/dist/deploy/workspace-deploy.js +99 -5
  255. package/dist/deploy/workspace-deploy.js.map +1 -1
  256. package/dist/extensions/actions.d.ts.map +1 -1
  257. package/dist/extensions/actions.js +3 -0
  258. package/dist/extensions/actions.js.map +1 -1
  259. package/dist/extensions/store.d.ts +5 -0
  260. package/dist/extensions/store.d.ts.map +1 -1
  261. package/dist/extensions/store.js +16 -1
  262. package/dist/extensions/store.js.map +1 -1
  263. package/dist/file-upload/actions/upload-image.d.ts +3 -0
  264. package/dist/file-upload/actions/upload-image.d.ts.map +1 -0
  265. package/dist/file-upload/actions/upload-image.js +145 -0
  266. package/dist/file-upload/actions/upload-image.js.map +1 -0
  267. package/dist/file-upload/builder.d.ts.map +1 -1
  268. package/dist/file-upload/builder.js +31 -11
  269. package/dist/file-upload/builder.js.map +1 -1
  270. package/dist/file-upload/index.d.ts +1 -0
  271. package/dist/file-upload/index.d.ts.map +1 -1
  272. package/dist/file-upload/index.js +1 -0
  273. package/dist/file-upload/index.js.map +1 -1
  274. package/dist/file-upload/pre-upload-attachments.d.ts +39 -0
  275. package/dist/file-upload/pre-upload-attachments.d.ts.map +1 -0
  276. package/dist/file-upload/pre-upload-attachments.js +110 -0
  277. package/dist/file-upload/pre-upload-attachments.js.map +1 -0
  278. package/dist/file-upload/registry.d.ts.map +1 -1
  279. package/dist/file-upload/registry.js +8 -7
  280. package/dist/file-upload/registry.js.map +1 -1
  281. package/dist/onboarding/default-steps.js +1 -1
  282. package/dist/onboarding/default-steps.js.map +1 -1
  283. package/dist/org/context.d.ts +15 -1
  284. package/dist/org/context.d.ts.map +1 -1
  285. package/dist/org/context.js +25 -0
  286. package/dist/org/context.js.map +1 -1
  287. package/dist/org/handlers.d.ts +2 -2
  288. package/dist/org/handlers.d.ts.map +1 -1
  289. package/dist/org/handlers.js +3 -17
  290. package/dist/org/handlers.js.map +1 -1
  291. package/dist/org/index.d.ts +1 -1
  292. package/dist/org/index.d.ts.map +1 -1
  293. package/dist/org/index.js +1 -1
  294. package/dist/org/index.js.map +1 -1
  295. package/dist/resources/handlers.d.ts +6 -0
  296. package/dist/resources/handlers.d.ts.map +1 -1
  297. package/dist/resources/handlers.js +30 -6
  298. package/dist/resources/handlers.js.map +1 -1
  299. package/dist/resources/script-helpers.d.ts +11 -2
  300. package/dist/resources/script-helpers.d.ts.map +1 -1
  301. package/dist/resources/script-helpers.js +20 -3
  302. package/dist/resources/script-helpers.js.map +1 -1
  303. package/dist/resources/store.d.ts +28 -3
  304. package/dist/resources/store.d.ts.map +1 -1
  305. package/dist/resources/store.js +170 -20
  306. package/dist/resources/store.js.map +1 -1
  307. package/dist/scripts/resources/list.d.ts +1 -1
  308. package/dist/scripts/resources/list.d.ts.map +1 -1
  309. package/dist/scripts/resources/list.js +16 -4
  310. package/dist/scripts/resources/list.js.map +1 -1
  311. package/dist/scripts/resources/write.d.ts +1 -1
  312. package/dist/scripts/resources/write.d.ts.map +1 -1
  313. package/dist/scripts/resources/write.js +47 -3
  314. package/dist/scripts/resources/write.js.map +1 -1
  315. package/dist/server/action-discovery.d.ts.map +1 -1
  316. package/dist/server/action-discovery.js +8 -3
  317. package/dist/server/action-discovery.js.map +1 -1
  318. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  319. package/dist/server/agent-chat-plugin.js +214 -25
  320. package/dist/server/agent-chat-plugin.js.map +1 -1
  321. package/dist/server/agent-discovery.d.ts +35 -0
  322. package/dist/server/agent-discovery.d.ts.map +1 -1
  323. package/dist/server/agent-discovery.js +139 -8
  324. package/dist/server/agent-discovery.js.map +1 -1
  325. package/dist/server/app-url.d.ts +12 -6
  326. package/dist/server/app-url.d.ts.map +1 -1
  327. package/dist/server/app-url.js +58 -11
  328. package/dist/server/app-url.js.map +1 -1
  329. package/dist/server/auth.d.ts +22 -0
  330. package/dist/server/auth.d.ts.map +1 -1
  331. package/dist/server/auth.js +316 -65
  332. package/dist/server/auth.js.map +1 -1
  333. package/dist/server/better-auth-instance.d.ts +0 -4
  334. package/dist/server/better-auth-instance.d.ts.map +1 -1
  335. package/dist/server/better-auth-instance.js +0 -3
  336. package/dist/server/better-auth-instance.js.map +1 -1
  337. package/dist/server/builder-browser.d.ts.map +1 -1
  338. package/dist/server/builder-browser.js +23 -0
  339. package/dist/server/builder-browser.js.map +1 -1
  340. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  341. package/dist/server/core-routes-plugin.js +29 -14
  342. package/dist/server/core-routes-plugin.js.map +1 -1
  343. package/dist/server/credential-provider.d.ts +14 -0
  344. package/dist/server/credential-provider.d.ts.map +1 -1
  345. package/dist/server/credential-provider.js +88 -11
  346. package/dist/server/credential-provider.js.map +1 -1
  347. package/dist/server/google-auth-plugin.d.ts.map +1 -1
  348. package/dist/server/google-auth-plugin.js +65 -17
  349. package/dist/server/google-auth-plugin.js.map +1 -1
  350. package/dist/server/google-oauth.d.ts.map +1 -1
  351. package/dist/server/google-oauth.js +47 -17
  352. package/dist/server/google-oauth.js.map +1 -1
  353. package/dist/server/index.d.ts +1 -1
  354. package/dist/server/index.d.ts.map +1 -1
  355. package/dist/server/index.js +1 -1
  356. package/dist/server/index.js.map +1 -1
  357. package/dist/server/local-migration.d.ts +41 -0
  358. package/dist/server/local-migration.d.ts.map +1 -0
  359. package/dist/server/local-migration.js +235 -0
  360. package/dist/server/local-migration.js.map +1 -0
  361. package/dist/server/oauth-public-origin.d.ts.map +1 -1
  362. package/dist/server/oauth-public-origin.js +19 -1
  363. package/dist/server/oauth-public-origin.js.map +1 -1
  364. package/dist/server/onboarding-html.d.ts.map +1 -1
  365. package/dist/server/onboarding-html.js +74 -19
  366. package/dist/server/onboarding-html.js.map +1 -1
  367. package/dist/server/poll.d.ts.map +1 -1
  368. package/dist/server/poll.js +20 -5
  369. package/dist/server/poll.js.map +1 -1
  370. package/dist/server/request-context.d.ts +8 -0
  371. package/dist/server/request-context.d.ts.map +1 -1
  372. package/dist/server/request-context.js.map +1 -1
  373. package/dist/shared/index.d.ts +2 -0
  374. package/dist/shared/index.d.ts.map +1 -1
  375. package/dist/shared/index.js +2 -0
  376. package/dist/shared/index.js.map +1 -1
  377. package/dist/shared/llm-connection.d.ts +10 -0
  378. package/dist/shared/llm-connection.d.ts.map +1 -0
  379. package/dist/shared/llm-connection.js +29 -0
  380. package/dist/shared/llm-connection.js.map +1 -0
  381. package/dist/shared/workspace-app-audience.d.ts +25 -0
  382. package/dist/shared/workspace-app-audience.d.ts.map +1 -0
  383. package/dist/shared/workspace-app-audience.js +126 -0
  384. package/dist/shared/workspace-app-audience.js.map +1 -0
  385. package/dist/shared/workspace-app-id.d.ts +1 -1
  386. package/dist/shared/workspace-app-id.d.ts.map +1 -1
  387. package/dist/shared/workspace-app-id.js +1 -0
  388. package/dist/shared/workspace-app-id.js.map +1 -1
  389. package/dist/sharing/access.d.ts.map +1 -1
  390. package/dist/sharing/access.js +46 -5
  391. package/dist/sharing/access.js.map +1 -1
  392. package/dist/sharing/actions/list-resource-shares.d.ts.map +1 -1
  393. package/dist/sharing/actions/list-resource-shares.js +8 -1
  394. package/dist/sharing/actions/list-resource-shares.js.map +1 -1
  395. package/dist/sharing/actions/set-resource-visibility.d.ts.map +1 -1
  396. package/dist/sharing/actions/set-resource-visibility.js +12 -3
  397. package/dist/sharing/actions/set-resource-visibility.js.map +1 -1
  398. package/dist/sharing/actions/share-resource.d.ts.map +1 -1
  399. package/dist/sharing/actions/share-resource.js +50 -1
  400. package/dist/sharing/actions/share-resource.js.map +1 -1
  401. package/dist/sharing/registry.d.ts +26 -0
  402. package/dist/sharing/registry.d.ts.map +1 -1
  403. package/dist/sharing/registry.js.map +1 -1
  404. package/dist/styles/agent-native.css +91 -0
  405. package/dist/templates/default/.agents/skills/adding-a-feature/SKILL.md +72 -0
  406. package/dist/templates/default/.agents/skills/frontend-design/SKILL.md +60 -37
  407. package/dist/templates/default/.agents/skills/real-time-sync/SKILL.md +28 -17
  408. package/dist/templates/default/.agents/skills/shadcn-ui/SKILL.md +79 -0
  409. package/dist/templates/default/AGENTS.md +22 -19
  410. package/dist/templates/default/actions/navigate.ts +3 -0
  411. package/dist/templates/default/app/hooks/use-navigation-state.ts +29 -5
  412. package/dist/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +251 -0
  413. package/dist/templates/workspace-core/.agents/skills/actions/SKILL.md +264 -0
  414. package/dist/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +130 -0
  415. package/dist/templates/workspace-core/.agents/skills/address-feedback/SKILL.md +112 -0
  416. package/dist/templates/workspace-core/.agents/skills/authentication/SKILL.md +88 -0
  417. package/dist/templates/workspace-core/.agents/skills/automations/SKILL.md +191 -0
  418. package/dist/templates/workspace-core/.agents/skills/capture-learnings/SKILL.md +74 -0
  419. package/dist/templates/workspace-core/.agents/skills/client-side-routing/SKILL.md +75 -0
  420. package/dist/templates/workspace-core/.agents/skills/context-awareness/SKILL.md +190 -0
  421. package/dist/templates/workspace-core/.agents/skills/create-skill/SKILL.md +168 -0
  422. package/dist/templates/workspace-core/.agents/skills/delegate-to-agent/SKILL.md +163 -0
  423. package/dist/templates/workspace-core/.agents/skills/extension-points/SKILL.md +205 -0
  424. package/dist/templates/workspace-core/.agents/skills/extensions/SKILL.md +720 -0
  425. package/dist/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +92 -0
  426. package/dist/templates/workspace-core/.agents/skills/integration-webhooks/SKILL.md +285 -0
  427. package/dist/templates/workspace-core/.agents/skills/observability/SKILL.md +192 -0
  428. package/dist/templates/workspace-core/.agents/skills/onboarding/SKILL.md +43 -0
  429. package/dist/templates/workspace-core/.agents/skills/portability/SKILL.md +84 -0
  430. package/dist/templates/workspace-core/.agents/skills/qa/SKILL.md +313 -0
  431. package/dist/templates/workspace-core/.agents/skills/real-time-collab/SKILL.md +112 -0
  432. package/dist/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +165 -0
  433. package/dist/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +41 -0
  434. package/dist/templates/workspace-core/.agents/skills/secrets/SKILL.md +239 -0
  435. package/dist/templates/workspace-core/.agents/skills/security/SKILL.md +191 -0
  436. package/dist/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +79 -0
  437. package/dist/templates/workspace-core/.agents/skills/server-plugins/SKILL.md +73 -0
  438. package/dist/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +79 -0
  439. package/dist/templates/workspace-core/.agents/skills/sharing/SKILL.md +217 -0
  440. package/dist/templates/workspace-core/.agents/skills/storing-data/SKILL.md +132 -0
  441. package/dist/templates/workspace-core/.agents/skills/tracking/SKILL.md +150 -0
  442. package/dist/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +124 -0
  443. package/dist/templates/workspace-core/AGENTS.md +16 -1
  444. package/dist/templates/workspace-root/AGENTS.md +35 -0
  445. package/dist/templates/workspace-root/README.md +7 -0
  446. package/dist/tools/actions.d.ts +3 -0
  447. package/dist/tools/actions.d.ts.map +1 -0
  448. package/dist/tools/actions.js +272 -0
  449. package/dist/tools/actions.js.map +1 -0
  450. package/dist/tools/fetch-tool.d.ts +23 -0
  451. package/dist/tools/fetch-tool.d.ts.map +1 -0
  452. package/dist/tools/fetch-tool.js +178 -0
  453. package/dist/tools/fetch-tool.js.map +1 -0
  454. package/dist/tools/html-shell.d.ts +45 -0
  455. package/dist/tools/html-shell.d.ts.map +1 -0
  456. package/dist/tools/html-shell.js +514 -0
  457. package/dist/tools/html-shell.js.map +1 -0
  458. package/dist/tools/proxy-security.d.ts +12 -0
  459. package/dist/tools/proxy-security.d.ts.map +1 -0
  460. package/dist/tools/proxy-security.js +158 -0
  461. package/dist/tools/proxy-security.js.map +1 -0
  462. package/dist/tools/routes.d.ts +2 -0
  463. package/dist/tools/routes.d.ts.map +1 -0
  464. package/dist/tools/routes.js +627 -0
  465. package/dist/tools/routes.js.map +1 -0
  466. package/dist/tools/schema.d.ts +664 -0
  467. package/dist/tools/schema.d.ts.map +1 -0
  468. package/dist/tools/schema.js +146 -0
  469. package/dist/tools/schema.js.map +1 -0
  470. package/dist/tools/slots/routes.d.ts +15 -0
  471. package/dist/tools/slots/routes.d.ts.map +1 -0
  472. package/dist/tools/slots/routes.js +94 -0
  473. package/dist/tools/slots/routes.js.map +1 -0
  474. package/dist/tools/slots/schema.d.ts +303 -0
  475. package/dist/tools/slots/schema.d.ts.map +1 -0
  476. package/dist/tools/slots/schema.js +76 -0
  477. package/dist/tools/slots/schema.js.map +1 -0
  478. package/dist/tools/slots/store.d.ts +66 -0
  479. package/dist/tools/slots/store.d.ts.map +1 -0
  480. package/dist/tools/slots/store.js +227 -0
  481. package/dist/tools/slots/store.js.map +1 -0
  482. package/dist/tools/store.d.ts +40 -0
  483. package/dist/tools/store.d.ts.map +1 -0
  484. package/dist/tools/store.js +193 -0
  485. package/dist/tools/store.js.map +1 -0
  486. package/dist/tools/theme.d.ts +2 -0
  487. package/dist/tools/theme.d.ts.map +1 -0
  488. package/dist/tools/theme.js +67 -0
  489. package/dist/tools/theme.js.map +1 -0
  490. package/dist/tools/url-safety.d.ts +24 -0
  491. package/dist/tools/url-safety.d.ts.map +1 -0
  492. package/dist/tools/url-safety.js +224 -0
  493. package/dist/tools/url-safety.js.map +1 -0
  494. package/dist/vite/action-types-plugin.d.ts.map +1 -1
  495. package/dist/vite/action-types-plugin.js +4 -0
  496. package/dist/vite/action-types-plugin.js.map +1 -1
  497. package/docs/content/authentication.md +36 -0
  498. package/docs/content/creating-templates.md +15 -0
  499. package/docs/content/dispatch.md +3 -3
  500. package/docs/content/multi-app-workspace.md +5 -0
  501. package/docs/content/tracking.md +12 -0
  502. package/docs/content/workspace-management.md +39 -4
  503. package/package.json +15 -12
  504. package/src/templates/default/.agents/skills/adding-a-feature/SKILL.md +72 -0
  505. package/src/templates/default/.agents/skills/frontend-design/SKILL.md +60 -37
  506. package/src/templates/default/.agents/skills/real-time-sync/SKILL.md +28 -17
  507. package/src/templates/default/.agents/skills/shadcn-ui/SKILL.md +79 -0
  508. package/src/templates/default/AGENTS.md +22 -19
  509. package/src/templates/default/actions/navigate.ts +3 -0
  510. package/src/templates/default/app/hooks/use-navigation-state.ts +29 -5
  511. package/src/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +251 -0
  512. package/src/templates/workspace-core/.agents/skills/actions/SKILL.md +264 -0
  513. package/src/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +130 -0
  514. package/src/templates/workspace-core/.agents/skills/address-feedback/SKILL.md +112 -0
  515. package/src/templates/workspace-core/.agents/skills/authentication/SKILL.md +88 -0
  516. package/src/templates/workspace-core/.agents/skills/automations/SKILL.md +191 -0
  517. package/src/templates/workspace-core/.agents/skills/capture-learnings/SKILL.md +74 -0
  518. package/src/templates/workspace-core/.agents/skills/client-side-routing/SKILL.md +75 -0
  519. package/src/templates/workspace-core/.agents/skills/context-awareness/SKILL.md +190 -0
  520. package/src/templates/workspace-core/.agents/skills/create-skill/SKILL.md +168 -0
  521. package/src/templates/workspace-core/.agents/skills/delegate-to-agent/SKILL.md +163 -0
  522. package/src/templates/workspace-core/.agents/skills/extension-points/SKILL.md +205 -0
  523. package/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +720 -0
  524. package/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +92 -0
  525. package/src/templates/workspace-core/.agents/skills/integration-webhooks/SKILL.md +285 -0
  526. package/src/templates/workspace-core/.agents/skills/observability/SKILL.md +192 -0
  527. package/src/templates/workspace-core/.agents/skills/onboarding/SKILL.md +43 -0
  528. package/src/templates/workspace-core/.agents/skills/portability/SKILL.md +84 -0
  529. package/src/templates/workspace-core/.agents/skills/qa/SKILL.md +313 -0
  530. package/src/templates/workspace-core/.agents/skills/real-time-collab/SKILL.md +112 -0
  531. package/src/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +165 -0
  532. package/src/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +41 -0
  533. package/src/templates/workspace-core/.agents/skills/secrets/SKILL.md +239 -0
  534. package/src/templates/workspace-core/.agents/skills/security/SKILL.md +191 -0
  535. package/src/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +79 -0
  536. package/src/templates/workspace-core/.agents/skills/server-plugins/SKILL.md +73 -0
  537. package/src/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +79 -0
  538. package/src/templates/workspace-core/.agents/skills/sharing/SKILL.md +217 -0
  539. package/src/templates/workspace-core/.agents/skills/storing-data/SKILL.md +132 -0
  540. package/src/templates/workspace-core/.agents/skills/tracking/SKILL.md +150 -0
  541. package/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +124 -0
  542. package/src/templates/workspace-core/AGENTS.md +16 -1
  543. package/src/templates/workspace-root/AGENTS.md +35 -0
  544. package/src/templates/workspace-root/README.md +7 -0
@@ -0,0 +1,268 @@
1
+ import { useEffect, useMemo, useState } from "react";
2
+ import { coreTemplates } from "../../cli/templates-meta.js";
3
+ const DISPATCH_ID = "dispatch";
4
+ export const ORG_SWITCHER_MAX_APP_LINKS = 9;
5
+ function runtimeEnv() {
6
+ return (import.meta.env ?? {});
7
+ }
8
+ function envString(env, key) {
9
+ const value = env[key];
10
+ return typeof value === "string" && value.trim() ? value.trim() : undefined;
11
+ }
12
+ function titleCase(value) {
13
+ return value
14
+ .split(/[-_\s]+/)
15
+ .filter(Boolean)
16
+ .map((part) => part.charAt(0).toUpperCase() + part.slice(1))
17
+ .join(" ");
18
+ }
19
+ function stripTrailingSlash(value) {
20
+ return value.replace(/\/+$/, "");
21
+ }
22
+ function appendPath(base, path) {
23
+ const segment = path.replace(/^\/+/, "");
24
+ try {
25
+ const url = new URL(base);
26
+ url.pathname = `${stripTrailingSlash(url.pathname)}/${segment}`.replace(/\/+/g, "/");
27
+ return url.toString();
28
+ }
29
+ catch {
30
+ return `${stripTrailingSlash(base)}/${segment}`;
31
+ }
32
+ }
33
+ function dispatchBaseHref(href) {
34
+ try {
35
+ const url = new URL(href);
36
+ url.pathname = url.pathname.replace(/\/(?:overview|apps)\/?$/, "") || "/";
37
+ url.search = "";
38
+ url.hash = "";
39
+ return stripTrailingSlash(url.toString());
40
+ }
41
+ catch {
42
+ return stripTrailingSlash(href.replace(/\/(?:overview|apps)\/?$/, "") || "/dispatch");
43
+ }
44
+ }
45
+ function isAbsoluteUrl(value) {
46
+ try {
47
+ new URL(value);
48
+ return true;
49
+ }
50
+ catch {
51
+ return false;
52
+ }
53
+ }
54
+ function workspaceHref(pathValue, explicitUrl, env) {
55
+ const url = explicitUrl?.trim();
56
+ if (url) {
57
+ if (url.startsWith("/"))
58
+ return workspaceHref(url, null, env);
59
+ if (isAbsoluteUrl(url))
60
+ return url;
61
+ return url;
62
+ }
63
+ const path = pathValue.startsWith("/") ? pathValue : `/${pathValue}`;
64
+ const gatewayUrl = envString(env, "VITE_WORKSPACE_GATEWAY_URL");
65
+ if (!gatewayUrl)
66
+ return path;
67
+ try {
68
+ return new URL(path, `${stripTrailingSlash(gatewayUrl)}/`).toString();
69
+ }
70
+ catch {
71
+ return path;
72
+ }
73
+ }
74
+ function appEntryToLink(entry, env) {
75
+ if (!entry || typeof entry !== "object")
76
+ return null;
77
+ const record = entry;
78
+ const id = typeof record.id === "string" ? record.id.trim() : "";
79
+ if (!id)
80
+ return null;
81
+ const pathValue = typeof record.path === "string" && record.path.trim()
82
+ ? record.path.trim()
83
+ : `/${id}`;
84
+ const explicitUrl = typeof record.url === "string" && record.url.trim()
85
+ ? record.url.trim()
86
+ : typeof record.builderUrl === "string" && record.builderUrl.trim()
87
+ ? record.builderUrl.trim()
88
+ : null;
89
+ const baseHref = workspaceHref(pathValue, explicitUrl, env);
90
+ const isDispatch = typeof record.isDispatch === "boolean"
91
+ ? record.isDispatch
92
+ : id === DISPATCH_ID;
93
+ return {
94
+ id,
95
+ name: typeof record.name === "string" && record.name.trim()
96
+ ? record.name.trim()
97
+ : titleCase(id),
98
+ href: isDispatch ? appendPath(baseHref, "overview") : baseHref,
99
+ description: typeof record.description === "string" && record.description.trim()
100
+ ? record.description.trim()
101
+ : undefined,
102
+ isDispatch,
103
+ status: record.status === "pending" ? "pending" : "ready",
104
+ };
105
+ }
106
+ function sortAppLinks(apps) {
107
+ return [...apps].sort((a, b) => {
108
+ if (a.isDispatch && !b.isDispatch)
109
+ return -1;
110
+ if (!a.isDispatch && b.isDispatch)
111
+ return 1;
112
+ if (a.status === "pending" && b.status !== "pending")
113
+ return 1;
114
+ if (a.status !== "pending" && b.status === "pending")
115
+ return -1;
116
+ return a.name.localeCompare(b.name);
117
+ });
118
+ }
119
+ function dedupeAppLinks(apps) {
120
+ const seen = new Set();
121
+ const deduped = [];
122
+ for (const app of apps) {
123
+ if (seen.has(app.id))
124
+ continue;
125
+ seen.add(app.id);
126
+ deduped.push(app);
127
+ }
128
+ return deduped;
129
+ }
130
+ export function parseWorkspaceAppLinks(payload, env = runtimeEnv()) {
131
+ const rawApps = Array.isArray(payload?.apps)
132
+ ? payload.apps
133
+ : Array.isArray(payload)
134
+ ? payload
135
+ : null;
136
+ if (!rawApps)
137
+ return null;
138
+ const apps = rawApps
139
+ .map((entry) => appEntryToLink(entry, env))
140
+ .filter((app) => Boolean(app));
141
+ return apps.length ? sortAppLinks(dedupeAppLinks(apps)) : null;
142
+ }
143
+ export function parseWorkspaceAppLinksJson(raw, env = runtimeEnv()) {
144
+ if (!raw)
145
+ return null;
146
+ try {
147
+ return parseWorkspaceAppLinks(JSON.parse(raw), env);
148
+ }
149
+ catch {
150
+ return null;
151
+ }
152
+ }
153
+ export function defaultOrgAppLinks() {
154
+ return sortAppLinks(coreTemplates()
155
+ .filter((template) => !template.hidden && template.prodUrl)
156
+ .map((template) => ({
157
+ id: template.name,
158
+ name: template.label,
159
+ href: template.name === DISPATCH_ID
160
+ ? appendPath(template.prodUrl, "overview")
161
+ : template.prodUrl,
162
+ description: template.hint,
163
+ isDispatch: template.name === DISPATCH_ID,
164
+ status: "ready",
165
+ })));
166
+ }
167
+ export function isWorkspaceAppEnvironment(env = runtimeEnv()) {
168
+ return (envString(env, "VITE_AGENT_NATIVE_WORKSPACE") === "1" ||
169
+ Boolean(envString(env, "VITE_WORKSPACE_GATEWAY_URL")) ||
170
+ Boolean(envString(env, "VITE_AGENT_NATIVE_WORKSPACE_APPS_JSON")));
171
+ }
172
+ export function dispatchOverviewHref(apps, env = runtimeEnv()) {
173
+ const dispatch = apps.find((app) => app.isDispatch);
174
+ if (dispatch)
175
+ return appendPath(dispatchBaseHref(dispatch.href), "overview");
176
+ return appendPath(workspaceHref("/dispatch", null, env), "overview");
177
+ }
178
+ export function dispatchAppsHref(apps, env = runtimeEnv()) {
179
+ const dispatch = apps.find((app) => app.isDispatch);
180
+ if (dispatch)
181
+ return appendPath(dispatchBaseHref(dispatch.href), "apps");
182
+ return appendPath(workspaceHref("/dispatch", null, env), "apps");
183
+ }
184
+ export function visibleOrgAppLinks(apps, max = ORG_SWITCHER_MAX_APP_LINKS) {
185
+ const links = sortAppLinks(apps).slice(0, max);
186
+ return {
187
+ links,
188
+ overflowCount: Math.max(0, apps.length - links.length),
189
+ };
190
+ }
191
+ function initialWorkspaceLinks(env) {
192
+ return (parseWorkspaceAppLinksJson(envString(env, "VITE_AGENT_NATIVE_WORKSPACE_APPS_JSON"), env) ?? [
193
+ {
194
+ id: DISPATCH_ID,
195
+ name: "Dispatch",
196
+ href: appendPath(workspaceHref("/dispatch", null, env), "overview"),
197
+ description: "Workspace hub",
198
+ isDispatch: true,
199
+ status: "ready",
200
+ },
201
+ ]);
202
+ }
203
+ function workspaceAppFetchUrls(env) {
204
+ const urls = [];
205
+ const gatewayUrl = envString(env, "VITE_WORKSPACE_GATEWAY_URL");
206
+ if (gatewayUrl) {
207
+ try {
208
+ urls.push(new URL("/_workspace/apps", `${stripTrailingSlash(gatewayUrl)}/`).toString());
209
+ }
210
+ catch {
211
+ // Fall through to the same-origin Dispatch action below.
212
+ }
213
+ }
214
+ urls.push("/_agent-native/actions/list-workspace-apps?includeAgentCards=false");
215
+ return urls;
216
+ }
217
+ export function useOrgSwitcherAppLinks(enabled) {
218
+ const env = useMemo(() => runtimeEnv(), []);
219
+ const isWorkspace = useMemo(() => isWorkspaceAppEnvironment(env), [env]);
220
+ const [apps, setApps] = useState(() => isWorkspace ? initialWorkspaceLinks(env) : defaultOrgAppLinks());
221
+ const [isLoading, setIsLoading] = useState(false);
222
+ useEffect(() => {
223
+ if (!enabled || !isWorkspace)
224
+ return;
225
+ let cancelled = false;
226
+ async function refresh() {
227
+ setIsLoading(true);
228
+ try {
229
+ for (const url of workspaceAppFetchUrls(env)) {
230
+ try {
231
+ const response = await fetch(url, {
232
+ credentials: "include",
233
+ headers: { accept: "application/json" },
234
+ });
235
+ if (!response.ok)
236
+ continue;
237
+ const parsed = await response.json().catch(() => null);
238
+ const links = parseWorkspaceAppLinks(parsed, env);
239
+ if (links?.length) {
240
+ if (!cancelled)
241
+ setApps(links);
242
+ return;
243
+ }
244
+ }
245
+ catch {
246
+ // Try the next source; the static manifest remains available.
247
+ }
248
+ }
249
+ }
250
+ finally {
251
+ if (!cancelled)
252
+ setIsLoading(false);
253
+ }
254
+ }
255
+ void refresh();
256
+ return () => {
257
+ cancelled = true;
258
+ };
259
+ }, [enabled, env, isWorkspace]);
260
+ return {
261
+ apps,
262
+ isWorkspace,
263
+ isLoading,
264
+ dispatchHref: dispatchOverviewHref(apps, env),
265
+ dispatchAllAppsHref: dispatchAppsHref(apps, env),
266
+ };
267
+ }
268
+ //# sourceMappingURL=workspace-app-links.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-app-links.js","sourceRoot":"","sources":["../../../src/client/org/workspace-app-links.ts"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useMemo, useState } from \"react\";\nimport { coreTemplates } from \"../../cli/templates-meta.js\";\n\nexport interface OrgSwitcherAppLink {\n id: string;\n name: string;\n href: string;\n description?: string;\n isDispatch: boolean;\n status?: \"ready\" | \"pending\";\n}\n\nexport interface VisibleOrgAppLinks {\n links: OrgSwitcherAppLink[];\n overflowCount: number;\n}\n\ntype RuntimeEnv = Record<string, string | boolean | undefined>;\n\nconst DISPATCH_ID = \"dispatch\";\nexport const ORG_SWITCHER_MAX_APP_LINKS = 9;\n\nfunction runtimeEnv(): RuntimeEnv {\n return (\n (\n import.meta as unknown as {\n env?: RuntimeEnv;\n }\n ).env ?? {}\n );\n}\n\nfunction envString(env: RuntimeEnv, key: string): string | undefined {\n const value = env[key];\n return typeof value === \"string\" && value.trim() ? value.trim() : undefined;\n}\n\nfunction titleCase(value: string): string {\n return value\n .split(/[-_\\s]+/)\n .filter(Boolean)\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(\" \");\n}\n\nfunction stripTrailingSlash(value: string): string {\n return value.replace(/\\/+$/, \"\");\n}\n\nfunction appendPath(base: string, path: string): string {\n const segment = path.replace(/^\\/+/, \"\");\n try {\n const url = new URL(base);\n url.pathname = `${stripTrailingSlash(url.pathname)}/${segment}`.replace(\n /\\/+/g,\n \"/\",\n );\n return url.toString();\n } catch {\n return `${stripTrailingSlash(base)}/${segment}`;\n }\n}\n\nfunction dispatchBaseHref(href: string): string {\n try {\n const url = new URL(href);\n url.pathname = url.pathname.replace(/\\/(?:overview|apps)\\/?$/, \"\") || \"/\";\n url.search = \"\";\n url.hash = \"\";\n return stripTrailingSlash(url.toString());\n } catch {\n return stripTrailingSlash(\n href.replace(/\\/(?:overview|apps)\\/?$/, \"\") || \"/dispatch\",\n );\n }\n}\n\nfunction isAbsoluteUrl(value: string): boolean {\n try {\n new URL(value);\n return true;\n } catch {\n return false;\n }\n}\n\nfunction workspaceHref(\n pathValue: string,\n explicitUrl: string | null | undefined,\n env: RuntimeEnv,\n): string {\n const url = explicitUrl?.trim();\n if (url) {\n if (url.startsWith(\"/\")) return workspaceHref(url, null, env);\n if (isAbsoluteUrl(url)) return url;\n return url;\n }\n\n const path = pathValue.startsWith(\"/\") ? pathValue : `/${pathValue}`;\n const gatewayUrl = envString(env, \"VITE_WORKSPACE_GATEWAY_URL\");\n if (!gatewayUrl) return path;\n\n try {\n return new URL(path, `${stripTrailingSlash(gatewayUrl)}/`).toString();\n } catch {\n return path;\n }\n}\n\nfunction appEntryToLink(\n entry: unknown,\n env: RuntimeEnv,\n): OrgSwitcherAppLink | null {\n if (!entry || typeof entry !== \"object\") return null;\n const record = entry as Record<string, unknown>;\n const id = typeof record.id === \"string\" ? record.id.trim() : \"\";\n if (!id) return null;\n\n const pathValue =\n typeof record.path === \"string\" && record.path.trim()\n ? record.path.trim()\n : `/${id}`;\n const explicitUrl =\n typeof record.url === \"string\" && record.url.trim()\n ? record.url.trim()\n : typeof record.builderUrl === \"string\" && record.builderUrl.trim()\n ? record.builderUrl.trim()\n : null;\n const baseHref = workspaceHref(pathValue, explicitUrl, env);\n const isDispatch =\n typeof record.isDispatch === \"boolean\"\n ? record.isDispatch\n : id === DISPATCH_ID;\n\n return {\n id,\n name:\n typeof record.name === \"string\" && record.name.trim()\n ? record.name.trim()\n : titleCase(id),\n href: isDispatch ? appendPath(baseHref, \"overview\") : baseHref,\n description:\n typeof record.description === \"string\" && record.description.trim()\n ? record.description.trim()\n : undefined,\n isDispatch,\n status: record.status === \"pending\" ? \"pending\" : \"ready\",\n };\n}\n\nfunction sortAppLinks(apps: OrgSwitcherAppLink[]): OrgSwitcherAppLink[] {\n return [...apps].sort((a, b) => {\n if (a.isDispatch && !b.isDispatch) return -1;\n if (!a.isDispatch && b.isDispatch) return 1;\n if (a.status === \"pending\" && b.status !== \"pending\") return 1;\n if (a.status !== \"pending\" && b.status === \"pending\") return -1;\n return a.name.localeCompare(b.name);\n });\n}\n\nfunction dedupeAppLinks(apps: OrgSwitcherAppLink[]): OrgSwitcherAppLink[] {\n const seen = new Set<string>();\n const deduped: OrgSwitcherAppLink[] = [];\n for (const app of apps) {\n if (seen.has(app.id)) continue;\n seen.add(app.id);\n deduped.push(app);\n }\n return deduped;\n}\n\nexport function parseWorkspaceAppLinks(\n payload: unknown,\n env: RuntimeEnv = runtimeEnv(),\n): OrgSwitcherAppLink[] | null {\n const rawApps = Array.isArray((payload as { apps?: unknown[] })?.apps)\n ? (payload as { apps: unknown[] }).apps\n : Array.isArray(payload)\n ? payload\n : null;\n if (!rawApps) return null;\n\n const apps = rawApps\n .map((entry) => appEntryToLink(entry, env))\n .filter((app): app is OrgSwitcherAppLink => Boolean(app));\n\n return apps.length ? sortAppLinks(dedupeAppLinks(apps)) : null;\n}\n\nexport function parseWorkspaceAppLinksJson(\n raw: string | undefined,\n env: RuntimeEnv = runtimeEnv(),\n): OrgSwitcherAppLink[] | null {\n if (!raw) return null;\n try {\n return parseWorkspaceAppLinks(JSON.parse(raw), env);\n } catch {\n return null;\n }\n}\n\nexport function defaultOrgAppLinks(): OrgSwitcherAppLink[] {\n return sortAppLinks(\n coreTemplates()\n .filter((template) => !template.hidden && template.prodUrl)\n .map((template) => ({\n id: template.name,\n name: template.label,\n href:\n template.name === DISPATCH_ID\n ? appendPath(template.prodUrl!, \"overview\")\n : template.prodUrl!,\n description: template.hint,\n isDispatch: template.name === DISPATCH_ID,\n status: \"ready\" as const,\n })),\n );\n}\n\nexport function isWorkspaceAppEnvironment(\n env: RuntimeEnv = runtimeEnv(),\n): boolean {\n return (\n envString(env, \"VITE_AGENT_NATIVE_WORKSPACE\") === \"1\" ||\n Boolean(envString(env, \"VITE_WORKSPACE_GATEWAY_URL\")) ||\n Boolean(envString(env, \"VITE_AGENT_NATIVE_WORKSPACE_APPS_JSON\"))\n );\n}\n\nexport function dispatchOverviewHref(\n apps: OrgSwitcherAppLink[],\n env: RuntimeEnv = runtimeEnv(),\n): string {\n const dispatch = apps.find((app) => app.isDispatch);\n if (dispatch) return appendPath(dispatchBaseHref(dispatch.href), \"overview\");\n return appendPath(workspaceHref(\"/dispatch\", null, env), \"overview\");\n}\n\nexport function dispatchAppsHref(\n apps: OrgSwitcherAppLink[],\n env: RuntimeEnv = runtimeEnv(),\n): string {\n const dispatch = apps.find((app) => app.isDispatch);\n if (dispatch) return appendPath(dispatchBaseHref(dispatch.href), \"apps\");\n return appendPath(workspaceHref(\"/dispatch\", null, env), \"apps\");\n}\n\nexport function visibleOrgAppLinks(\n apps: OrgSwitcherAppLink[],\n max = ORG_SWITCHER_MAX_APP_LINKS,\n): VisibleOrgAppLinks {\n const links = sortAppLinks(apps).slice(0, max);\n return {\n links,\n overflowCount: Math.max(0, apps.length - links.length),\n };\n}\n\nfunction initialWorkspaceLinks(env: RuntimeEnv): OrgSwitcherAppLink[] {\n return (\n parseWorkspaceAppLinksJson(\n envString(env, \"VITE_AGENT_NATIVE_WORKSPACE_APPS_JSON\"),\n env,\n ) ?? [\n {\n id: DISPATCH_ID,\n name: \"Dispatch\",\n href: appendPath(workspaceHref(\"/dispatch\", null, env), \"overview\"),\n description: \"Workspace hub\",\n isDispatch: true,\n status: \"ready\",\n },\n ]\n );\n}\n\nfunction workspaceAppFetchUrls(env: RuntimeEnv): string[] {\n const urls: string[] = [];\n const gatewayUrl = envString(env, \"VITE_WORKSPACE_GATEWAY_URL\");\n if (gatewayUrl) {\n try {\n urls.push(\n new URL(\n \"/_workspace/apps\",\n `${stripTrailingSlash(gatewayUrl)}/`,\n ).toString(),\n );\n } catch {\n // Fall through to the same-origin Dispatch action below.\n }\n }\n urls.push(\n \"/_agent-native/actions/list-workspace-apps?includeAgentCards=false\",\n );\n return urls;\n}\n\nexport interface UseOrgSwitcherAppLinksResult {\n apps: OrgSwitcherAppLink[];\n isWorkspace: boolean;\n isLoading: boolean;\n dispatchHref: string;\n dispatchAllAppsHref: string;\n}\n\nexport function useOrgSwitcherAppLinks(\n enabled: boolean,\n): UseOrgSwitcherAppLinksResult {\n const env = useMemo(() => runtimeEnv(), []);\n const isWorkspace = useMemo(() => isWorkspaceAppEnvironment(env), [env]);\n const [apps, setApps] = useState<OrgSwitcherAppLink[]>(() =>\n isWorkspace ? initialWorkspaceLinks(env) : defaultOrgAppLinks(),\n );\n const [isLoading, setIsLoading] = useState(false);\n\n useEffect(() => {\n if (!enabled || !isWorkspace) return;\n let cancelled = false;\n\n async function refresh() {\n setIsLoading(true);\n try {\n for (const url of workspaceAppFetchUrls(env)) {\n try {\n const response = await fetch(url, {\n credentials: \"include\",\n headers: { accept: \"application/json\" },\n });\n if (!response.ok) continue;\n const parsed = await response.json().catch(() => null);\n const links = parseWorkspaceAppLinks(parsed, env);\n if (links?.length) {\n if (!cancelled) setApps(links);\n return;\n }\n } catch {\n // Try the next source; the static manifest remains available.\n }\n }\n } finally {\n if (!cancelled) setIsLoading(false);\n }\n }\n\n void refresh();\n return () => {\n cancelled = true;\n };\n }, [enabled, env, isWorkspace]);\n\n return {\n apps,\n isWorkspace,\n isLoading,\n dispatchHref: dispatchOverviewHref(apps, env),\n dispatchAllAppsHref: dispatchAppsHref(apps, env),\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ResourcesPanel.d.ts","sourceRoot":"","sources":["../../../src/client/resources/ResourcesPanel.tsx"],"names":[],"mappings":"AAs8BA,wBAAgB,cAAc,4CA0jB7B"}
1
+ {"version":3,"file":"ResourcesPanel.d.ts","sourceRoot":"","sources":["../../../src/client/resources/ResourcesPanel.tsx"],"names":[],"mappings":"AA08BA,wBAAgB,cAAc,4CA6lB7B"}
@@ -451,6 +451,10 @@ Create skill files under \`skills/<name>/SKILL.md\` to give the agent specialize
451
451
  | Skill | Path | Description |
452
452
  |-------|------|-------------|
453
453
  | *(use the skill button to create one)* | \`skills/example/SKILL.md\` | |
454
+
455
+ ## Workspace files
456
+
457
+ Workspace resources are for files users intentionally add, edit, or manage. Agents may create hidden \`agent_scratch\` resources for temporary working notes, scripts, or intermediate results; only promote those files into workspace visibility when a user explicitly asks to keep them.
454
458
  `;
455
459
  // BuilderBrowserCard moved to settings/BrowserSection.tsx
456
460
  export function ResourcesPanel() {
@@ -471,13 +475,18 @@ export function ResourcesPanel() {
471
475
  catch { }
472
476
  return "visual";
473
477
  });
478
+ const [showAgentScratch, setShowAgentScratch] = useState(false);
474
479
  useEffect(() => {
475
480
  setToolbarDeleteConfirmId(null);
476
481
  }, [selectedResourceId]);
477
482
  const [saveStatus, setSaveStatus] = useState("idle");
478
483
  const fileInputRef = useRef(null);
479
- const sharedTreeQuery = useResourceTree("shared");
480
- const personalTreeQuery = useResourceTree("personal");
484
+ const sharedTreeQuery = useResourceTree("shared", {
485
+ includeAgentScratch: showAgentScratch,
486
+ });
487
+ const personalTreeQuery = useResourceTree("personal", {
488
+ includeAgentScratch: showAgentScratch,
489
+ });
481
490
  const mcpServersQuery = useMcpServers();
482
491
  const createMcpServer = useCreateMcpServer();
483
492
  const deleteMcpServer = useDeleteMcpServer();
@@ -486,8 +495,8 @@ export function ResourcesPanel() {
486
495
  // table — the virtual ids carry the `mcp:<scope>:<id>` prefix that
487
496
  // `handleSelect` and `handleDelete` below recognize to route back to
488
497
  // the MCP endpoints.
489
- const personalTree = withAgentScratchFolder(withMcpServersFolder(personalTreeQuery.data ?? [], mcpServersQuery.data?.user ?? []));
490
- const sharedTree = withMcpServersFolder(sharedTreeQuery.data ?? [], mcpServersQuery.data?.org ?? []);
498
+ const personalTree = withAgentScratchFolder(withMcpServersFolder(personalTreeQuery.data ?? [], mcpServersQuery.data?.user ?? []), { show: showAgentScratch });
499
+ const sharedTree = withAgentScratchFolder(withMcpServersFolder(sharedTreeQuery.data ?? [], mcpServersQuery.data?.org ?? []), { show: showAgentScratch });
491
500
  const orgRole = mcpServersQuery.data?.role ?? org?.role ?? null;
492
501
  const hasOrgForMcp = !!(mcpServersQuery.data?.orgId ?? org?.orgId);
493
502
  const canCreateOrgMcp = hasOrgForMcp && (orgRole === "owner" || orgRole === "admin");
@@ -657,7 +666,11 @@ export function ResourcesPanel() {
657
666
  : "Delete resource", className: cn("flex h-6 w-6 items-center justify-center rounded-md text-muted-foreground hover:text-destructive hover:bg-accent/50", toolbarDeleteConfirmId === selectedResourceId &&
658
667
  "bg-destructive/10 text-destructive"), children: _jsx(IconTrash, { className: "h-3.5 w-3.5" }) }) }), _jsx(TooltipContent, { children: toolbarDeleteConfirmId === selectedResourceId
659
668
  ? "Click again to delete"
660
- : "Delete resource" })] }) })] })] })) : (_jsxs("div", { className: "absolute top-1 right-1 z-10 flex items-center gap-1", children: [_jsx(CreateMenu, { scope: activeScope, onCreateFile: handleCreateFromToolbar, onCreateResource: handleCreateResourceFromToolbar, onCreateMcpServer: handleCreateMcpServer, canCreateOrgMcp: canCreateOrgMcp, hasOrg: hasOrgForMcp }), _jsx(TooltipProvider, { delayDuration: 200, children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("button", { onClick: () => fileInputRef.current?.click(), "aria-label": "Upload file", className: "flex h-6 w-6 items-center justify-center rounded-md text-muted-foreground hover:text-foreground hover:bg-accent/50", children: _jsx(IconUpload, { className: "h-3.5 w-3.5" }) }) }), _jsx(TooltipContent, { children: "Upload file" })] }) }), _jsx(TooltipProvider, { delayDuration: 200, children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("a", { href: WORKSPACE_DOCS_URL, target: "_blank", rel: "noopener noreferrer", "aria-label": "Open Workspace docs", className: "flex h-6 w-6 items-center justify-center rounded-md text-muted-foreground hover:text-foreground hover:bg-accent/50", children: _jsx(IconHelp, { className: "h-3.5 w-3.5" }) }) }), _jsx(TooltipContent, { side: "left", sideOffset: 8, children: "Open Workspace docs" })] }) }), _jsx("input", { ref: fileInputRef, type: "file", multiple: true, className: "hidden", onChange: (e) => {
669
+ : "Delete resource" })] }) })] })] })) : (_jsxs("div", { className: "absolute top-1 right-1 z-10 flex items-center gap-1", children: [_jsx(CreateMenu, { scope: activeScope, onCreateFile: handleCreateFromToolbar, onCreateResource: handleCreateResourceFromToolbar, onCreateMcpServer: handleCreateMcpServer, canCreateOrgMcp: canCreateOrgMcp, hasOrg: hasOrgForMcp }), _jsx(TooltipProvider, { delayDuration: 200, children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("button", { onClick: () => fileInputRef.current?.click(), "aria-label": "Upload file", className: "flex h-6 w-6 items-center justify-center rounded-md text-muted-foreground hover:text-foreground hover:bg-accent/50", children: _jsx(IconUpload, { className: "h-3.5 w-3.5" }) }) }), _jsx(TooltipContent, { children: "Upload file" })] }) }), _jsx(TooltipProvider, { delayDuration: 200, children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("button", { type: "button", onClick: () => setShowAgentScratch((value) => !value), "aria-label": showAgentScratch
670
+ ? "Hide agent scratch files"
671
+ : "Show agent scratch files", className: cn("flex h-6 w-6 items-center justify-center rounded-md text-muted-foreground hover:text-foreground hover:bg-accent/50", showAgentScratch && "bg-accent/50 text-foreground"), children: _jsx(IconEye, { className: "h-3.5 w-3.5" }) }) }), _jsx(TooltipContent, { children: showAgentScratch
672
+ ? "Hide agent scratch files"
673
+ : "Show agent scratch files" })] }) }), _jsx(TooltipProvider, { delayDuration: 200, children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("a", { href: WORKSPACE_DOCS_URL, target: "_blank", rel: "noopener noreferrer", "aria-label": "Open Workspace docs", className: "flex h-6 w-6 items-center justify-center rounded-md text-muted-foreground hover:text-foreground hover:bg-accent/50", children: _jsx(IconHelp, { className: "h-3.5 w-3.5" }) }) }), _jsx(TooltipContent, { side: "left", sideOffset: 8, children: "Open Workspace docs" })] }) }), _jsx("input", { ref: fileInputRef, type: "file", multiple: true, className: "hidden", onChange: (e) => {
661
674
  if (e.target.files && e.target.files.length > 0) {
662
675
  handleUploadFiles(e.target.files);
663
676
  e.target.value = "";