@agent-native/core 0.79.26 → 0.80.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2322) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +39 -0
  3. package/corpus/core/docs/content/a2a-protocol.mdx +97 -9
  4. package/corpus/core/docs/content/actions.mdx +65 -4
  5. package/corpus/core/docs/content/agent-mentions.mdx +68 -4
  6. package/corpus/core/docs/content/agent-surfaces.mdx +112 -8
  7. package/corpus/core/docs/content/agent-teams.mdx +171 -12
  8. package/corpus/core/docs/content/agent-web-surfaces.mdx +51 -4
  9. package/corpus/core/docs/content/authentication.mdx +122 -8
  10. package/corpus/core/docs/content/automations.mdx +110 -8
  11. package/corpus/core/docs/content/blueprint-installer.mdx +42 -4
  12. package/corpus/core/docs/content/cli-adapters.mdx +44 -4
  13. package/corpus/core/docs/content/client.mdx +79 -8
  14. package/corpus/core/docs/content/cloneable-saas.mdx +85 -8
  15. package/corpus/core/docs/content/code-agents-ui.mdx +98 -8
  16. package/corpus/core/docs/content/components.mdx +118 -8
  17. package/corpus/core/docs/content/context-awareness.mdx +98 -8
  18. package/corpus/core/docs/content/creating-templates.mdx +49 -4
  19. package/corpus/core/docs/content/cross-app-sso.mdx +109 -8
  20. package/corpus/core/docs/content/database.mdx +56 -4
  21. package/corpus/core/docs/content/deployment.mdx +103 -8
  22. package/corpus/core/docs/content/dispatch.mdx +134 -8
  23. package/corpus/core/docs/content/drop-in-agent.mdx +63 -4
  24. package/corpus/core/docs/content/durable-background-runs.mdx +98 -8
  25. package/corpus/core/docs/content/durable-resume.mdx +47 -4
  26. package/corpus/core/docs/content/embedding-sdk.mdx +83 -8
  27. package/corpus/core/docs/content/evals.mdx +102 -8
  28. package/corpus/core/docs/content/extensions.mdx +113 -9
  29. package/corpus/core/docs/content/external-agents.mdx +119 -8
  30. package/corpus/core/docs/content/faq.mdx +98 -8
  31. package/corpus/core/docs/content/file-uploads.mdx +61 -4
  32. package/corpus/core/docs/content/frames.mdx +90 -8
  33. package/corpus/core/docs/content/generative-ui.mdx +50 -4
  34. package/corpus/core/docs/content/getting-started.mdx +34 -4
  35. package/corpus/core/docs/content/harness-agents.mdx +77 -8
  36. package/corpus/core/docs/content/human-approval.mdx +50 -4
  37. package/corpus/core/docs/content/key-concepts.mdx +102 -8
  38. package/corpus/core/docs/content/local-file-mode.mdx +58 -4
  39. package/corpus/core/docs/content/locales/ar-SA/a2a-protocol.mdx +97 -9
  40. package/corpus/core/docs/content/locales/ar-SA/actions.mdx +65 -4
  41. package/corpus/core/docs/content/locales/ar-SA/agent-mentions.mdx +68 -4
  42. package/corpus/core/docs/content/locales/ar-SA/agent-surfaces.mdx +114 -8
  43. package/corpus/core/docs/content/locales/ar-SA/agent-teams.mdx +174 -12
  44. package/corpus/core/docs/content/locales/ar-SA/agent-web-surfaces.mdx +49 -4
  45. package/corpus/core/docs/content/locales/ar-SA/authentication.mdx +120 -8
  46. package/corpus/core/docs/content/locales/ar-SA/automations.mdx +110 -8
  47. package/corpus/core/docs/content/locales/ar-SA/blueprint-installer.mdx +42 -4
  48. package/corpus/core/docs/content/locales/ar-SA/cli-adapters.mdx +40 -4
  49. package/corpus/core/docs/content/locales/ar-SA/client.mdx +80 -8
  50. package/corpus/core/docs/content/locales/ar-SA/cloneable-saas.mdx +85 -8
  51. package/corpus/core/docs/content/locales/ar-SA/code-agents-ui.mdx +99 -8
  52. package/corpus/core/docs/content/locales/ar-SA/components.mdx +114 -8
  53. package/corpus/core/docs/content/locales/ar-SA/context-awareness.mdx +100 -8
  54. package/corpus/core/docs/content/locales/ar-SA/creating-templates.mdx +51 -4
  55. package/corpus/core/docs/content/locales/ar-SA/cross-app-sso.mdx +109 -8
  56. package/corpus/core/docs/content/locales/ar-SA/database.mdx +52 -4
  57. package/corpus/core/docs/content/locales/ar-SA/deployment.mdx +103 -8
  58. package/corpus/core/docs/content/locales/ar-SA/dispatch.mdx +134 -8
  59. package/corpus/core/docs/content/locales/ar-SA/drop-in-agent.mdx +63 -4
  60. package/corpus/core/docs/content/locales/ar-SA/durable-resume.mdx +47 -4
  61. package/corpus/core/docs/content/locales/ar-SA/embedding-sdk.mdx +83 -8
  62. package/corpus/core/docs/content/locales/ar-SA/evals.mdx +102 -8
  63. package/corpus/core/docs/content/locales/ar-SA/extensions.mdx +113 -9
  64. package/corpus/core/docs/content/locales/ar-SA/external-agents.mdx +119 -8
  65. package/corpus/core/docs/content/locales/ar-SA/faq.mdx +98 -8
  66. package/corpus/core/docs/content/locales/ar-SA/file-uploads.mdx +61 -4
  67. package/corpus/core/docs/content/locales/ar-SA/frames.mdx +88 -8
  68. package/corpus/core/docs/content/locales/ar-SA/getting-started.mdx +34 -4
  69. package/corpus/core/docs/content/locales/ar-SA/harness-agents.mdx +79 -8
  70. package/corpus/core/docs/content/locales/ar-SA/human-approval.mdx +50 -4
  71. package/corpus/core/docs/content/locales/ar-SA/key-concepts.mdx +107 -8
  72. package/corpus/core/docs/content/locales/ar-SA/local-file-mode.mdx +56 -4
  73. package/corpus/core/docs/content/locales/ar-SA/mcp-apps.mdx +120 -10
  74. package/corpus/core/docs/content/locales/ar-SA/mcp-clients.mdx +133 -8
  75. package/corpus/core/docs/content/locales/ar-SA/mcp-protocol.mdx +105 -8
  76. package/corpus/core/docs/content/locales/ar-SA/messaging.mdx +115 -8
  77. package/corpus/core/docs/content/locales/ar-SA/migration-workbench.mdx +47 -4
  78. package/corpus/core/docs/content/locales/ar-SA/multi-app-workspace.mdx +91 -8
  79. package/corpus/core/docs/content/locales/ar-SA/multi-tenancy.mdx +80 -8
  80. package/corpus/core/docs/content/locales/ar-SA/native-chat-ui.mdx +104 -8
  81. package/corpus/core/docs/content/locales/ar-SA/notifications.mdx +135 -8
  82. package/corpus/core/docs/content/locales/ar-SA/observability.mdx +102 -8
  83. package/corpus/core/docs/content/locales/ar-SA/observational-memory.mdx +87 -8
  84. package/corpus/core/docs/content/locales/ar-SA/onboarding.mdx +45 -4
  85. package/corpus/core/docs/content/locales/ar-SA/plan-plugin.mdx +99 -8
  86. package/corpus/core/docs/content/locales/ar-SA/pr-visual-recap.mdx +125 -8
  87. package/corpus/core/docs/content/locales/ar-SA/processors.mdx +41 -4
  88. package/corpus/core/docs/content/locales/ar-SA/progress.mdx +46 -4
  89. package/corpus/core/docs/content/locales/ar-SA/pure-agent-apps.mdx +48 -4
  90. package/corpus/core/docs/content/locales/ar-SA/real-time-collaboration.mdx +102 -8
  91. package/corpus/core/docs/content/locales/ar-SA/recurring-jobs.mdx +59 -4
  92. package/corpus/core/docs/content/locales/ar-SA/routing.mdx +44 -5
  93. package/corpus/core/docs/content/locales/ar-SA/sandbox-adapters.mdx +43 -4
  94. package/corpus/core/docs/content/locales/ar-SA/security.mdx +80 -8
  95. package/corpus/core/docs/content/locales/ar-SA/server.mdx +173 -12
  96. package/corpus/core/docs/content/locales/ar-SA/sharing.mdx +45 -4
  97. package/corpus/core/docs/content/locales/ar-SA/skills-guide.mdx +118 -9
  98. package/corpus/core/docs/content/locales/ar-SA/template-analytics.mdx +46 -4
  99. package/corpus/core/docs/content/locales/ar-SA/template-assets.mdx +62 -4
  100. package/corpus/core/docs/content/locales/ar-SA/template-brain.mdx +65 -4
  101. package/corpus/core/docs/content/locales/ar-SA/template-calendar.mdx +62 -4
  102. package/corpus/core/docs/content/locales/ar-SA/template-chat.mdx +61 -4
  103. package/corpus/core/docs/content/locales/ar-SA/template-clips.mdx +52 -4
  104. package/corpus/core/docs/content/locales/ar-SA/template-content.mdx +62 -4
  105. package/corpus/core/docs/content/locales/ar-SA/template-design.mdx +101 -4
  106. package/corpus/core/docs/content/locales/ar-SA/template-dispatch.mdx +57 -4
  107. package/corpus/core/docs/content/locales/ar-SA/template-forms.mdx +62 -4
  108. package/corpus/core/docs/content/locales/ar-SA/template-mail.mdx +60 -4
  109. package/corpus/core/docs/content/locales/ar-SA/template-plan.mdx +61 -4
  110. package/corpus/core/docs/content/locales/ar-SA/template-slides.mdx +49 -4
  111. package/corpus/core/docs/content/locales/ar-SA/template-videos.mdx +53 -4
  112. package/corpus/core/docs/content/locales/ar-SA/tracking.mdx +54 -4
  113. package/corpus/core/docs/content/locales/ar-SA/using-your-agent.mdx +51 -4
  114. package/corpus/core/docs/content/locales/ar-SA/voice-input.mdx +43 -4
  115. package/corpus/core/docs/content/locales/ar-SA/what-is-agent-native.mdx +96 -8
  116. package/corpus/core/docs/content/locales/ar-SA/workspace-connections.mdx +128 -8
  117. package/corpus/core/docs/content/locales/ar-SA/workspace-management.mdx +50 -4
  118. package/corpus/core/docs/content/locales/ar-SA/workspace.mdx +112 -8
  119. package/corpus/core/docs/content/locales/ar-SA/writing-agent-instructions.mdx +41 -4
  120. package/corpus/core/docs/content/locales/de-DE/a2a-protocol.mdx +99 -9
  121. package/corpus/core/docs/content/locales/de-DE/actions.mdx +67 -4
  122. package/corpus/core/docs/content/locales/de-DE/agent-mentions.mdx +68 -4
  123. package/corpus/core/docs/content/locales/de-DE/agent-surfaces.mdx +116 -8
  124. package/corpus/core/docs/content/locales/de-DE/agent-teams.mdx +171 -12
  125. package/corpus/core/docs/content/locales/de-DE/agent-web-surfaces.mdx +51 -4
  126. package/corpus/core/docs/content/locales/de-DE/authentication.mdx +122 -8
  127. package/corpus/core/docs/content/locales/de-DE/automations.mdx +110 -8
  128. package/corpus/core/docs/content/locales/de-DE/blueprint-installer.mdx +42 -4
  129. package/corpus/core/docs/content/locales/de-DE/cli-adapters.mdx +44 -4
  130. package/corpus/core/docs/content/locales/de-DE/client.mdx +79 -8
  131. package/corpus/core/docs/content/locales/de-DE/cloneable-saas.mdx +85 -8
  132. package/corpus/core/docs/content/locales/de-DE/code-agents-ui.mdx +100 -8
  133. package/corpus/core/docs/content/locales/de-DE/components.mdx +118 -8
  134. package/corpus/core/docs/content/locales/de-DE/context-awareness.mdx +98 -8
  135. package/corpus/core/docs/content/locales/de-DE/creating-templates.mdx +51 -4
  136. package/corpus/core/docs/content/locales/de-DE/cross-app-sso.mdx +109 -8
  137. package/corpus/core/docs/content/locales/de-DE/database.mdx +52 -4
  138. package/corpus/core/docs/content/locales/de-DE/deployment.mdx +103 -8
  139. package/corpus/core/docs/content/locales/de-DE/dispatch.mdx +134 -8
  140. package/corpus/core/docs/content/locales/de-DE/drop-in-agent.mdx +63 -4
  141. package/corpus/core/docs/content/locales/de-DE/durable-resume.mdx +47 -4
  142. package/corpus/core/docs/content/locales/de-DE/embedding-sdk.mdx +85 -8
  143. package/corpus/core/docs/content/locales/de-DE/evals.mdx +102 -8
  144. package/corpus/core/docs/content/locales/de-DE/extensions.mdx +113 -9
  145. package/corpus/core/docs/content/locales/de-DE/external-agents.mdx +119 -8
  146. package/corpus/core/docs/content/locales/de-DE/faq.mdx +98 -8
  147. package/corpus/core/docs/content/locales/de-DE/file-uploads.mdx +61 -4
  148. package/corpus/core/docs/content/locales/de-DE/frames.mdx +88 -8
  149. package/corpus/core/docs/content/locales/de-DE/getting-started.mdx +34 -4
  150. package/corpus/core/docs/content/locales/de-DE/harness-agents.mdx +79 -8
  151. package/corpus/core/docs/content/locales/de-DE/human-approval.mdx +50 -4
  152. package/corpus/core/docs/content/locales/de-DE/key-concepts.mdx +104 -8
  153. package/corpus/core/docs/content/locales/de-DE/local-file-mode.mdx +58 -4
  154. package/corpus/core/docs/content/locales/de-DE/mcp-apps.mdx +120 -10
  155. package/corpus/core/docs/content/locales/de-DE/mcp-clients.mdx +133 -8
  156. package/corpus/core/docs/content/locales/de-DE/mcp-protocol.mdx +105 -8
  157. package/corpus/core/docs/content/locales/de-DE/messaging.mdx +115 -8
  158. package/corpus/core/docs/content/locales/de-DE/migration-workbench.mdx +47 -4
  159. package/corpus/core/docs/content/locales/de-DE/multi-app-workspace.mdx +91 -8
  160. package/corpus/core/docs/content/locales/de-DE/multi-tenancy.mdx +80 -8
  161. package/corpus/core/docs/content/locales/de-DE/native-chat-ui.mdx +108 -8
  162. package/corpus/core/docs/content/locales/de-DE/notifications.mdx +135 -8
  163. package/corpus/core/docs/content/locales/de-DE/observability.mdx +102 -8
  164. package/corpus/core/docs/content/locales/de-DE/observational-memory.mdx +92 -8
  165. package/corpus/core/docs/content/locales/de-DE/onboarding.mdx +45 -4
  166. package/corpus/core/docs/content/locales/de-DE/plan-plugin.mdx +99 -8
  167. package/corpus/core/docs/content/locales/de-DE/pr-visual-recap.mdx +125 -8
  168. package/corpus/core/docs/content/locales/de-DE/processors.mdx +41 -4
  169. package/corpus/core/docs/content/locales/de-DE/progress.mdx +46 -4
  170. package/corpus/core/docs/content/locales/de-DE/pure-agent-apps.mdx +50 -4
  171. package/corpus/core/docs/content/locales/de-DE/real-time-collaboration.mdx +104 -8
  172. package/corpus/core/docs/content/locales/de-DE/recurring-jobs.mdx +59 -4
  173. package/corpus/core/docs/content/locales/de-DE/routing.mdx +44 -5
  174. package/corpus/core/docs/content/locales/de-DE/sandbox-adapters.mdx +43 -4
  175. package/corpus/core/docs/content/locales/de-DE/security.mdx +80 -8
  176. package/corpus/core/docs/content/locales/de-DE/server.mdx +171 -12
  177. package/corpus/core/docs/content/locales/de-DE/sharing.mdx +45 -4
  178. package/corpus/core/docs/content/locales/de-DE/skills-guide.mdx +118 -9
  179. package/corpus/core/docs/content/locales/de-DE/template-analytics.mdx +46 -4
  180. package/corpus/core/docs/content/locales/de-DE/template-assets.mdx +62 -4
  181. package/corpus/core/docs/content/locales/de-DE/template-brain.mdx +69 -4
  182. package/corpus/core/docs/content/locales/de-DE/template-calendar.mdx +62 -4
  183. package/corpus/core/docs/content/locales/de-DE/template-chat.mdx +61 -4
  184. package/corpus/core/docs/content/locales/de-DE/template-clips.mdx +52 -4
  185. package/corpus/core/docs/content/locales/de-DE/template-content.mdx +60 -4
  186. package/corpus/core/docs/content/locales/de-DE/template-design.mdx +109 -4
  187. package/corpus/core/docs/content/locales/de-DE/template-dispatch.mdx +57 -4
  188. package/corpus/core/docs/content/locales/de-DE/template-forms.mdx +64 -4
  189. package/corpus/core/docs/content/locales/de-DE/template-mail.mdx +60 -4
  190. package/corpus/core/docs/content/locales/de-DE/template-plan.mdx +63 -4
  191. package/corpus/core/docs/content/locales/de-DE/template-slides.mdx +49 -4
  192. package/corpus/core/docs/content/locales/de-DE/template-videos.mdx +53 -4
  193. package/corpus/core/docs/content/locales/de-DE/tracking.mdx +54 -4
  194. package/corpus/core/docs/content/locales/de-DE/using-your-agent.mdx +51 -4
  195. package/corpus/core/docs/content/locales/de-DE/voice-input.mdx +45 -4
  196. package/corpus/core/docs/content/locales/de-DE/what-is-agent-native.mdx +100 -8
  197. package/corpus/core/docs/content/locales/de-DE/workspace-connections.mdx +128 -8
  198. package/corpus/core/docs/content/locales/de-DE/workspace-management.mdx +50 -4
  199. package/corpus/core/docs/content/locales/de-DE/workspace.mdx +111 -8
  200. package/corpus/core/docs/content/locales/de-DE/writing-agent-instructions.mdx +45 -4
  201. package/corpus/core/docs/content/locales/es-ES/a2a-protocol.mdx +99 -9
  202. package/corpus/core/docs/content/locales/es-ES/actions.mdx +67 -4
  203. package/corpus/core/docs/content/locales/es-ES/agent-mentions.mdx +68 -4
  204. package/corpus/core/docs/content/locales/es-ES/agent-surfaces.mdx +120 -8
  205. package/corpus/core/docs/content/locales/es-ES/agent-teams.mdx +172 -12
  206. package/corpus/core/docs/content/locales/es-ES/agent-web-surfaces.mdx +51 -4
  207. package/corpus/core/docs/content/locales/es-ES/authentication.mdx +122 -8
  208. package/corpus/core/docs/content/locales/es-ES/automations.mdx +110 -8
  209. package/corpus/core/docs/content/locales/es-ES/blueprint-installer.mdx +42 -4
  210. package/corpus/core/docs/content/locales/es-ES/cli-adapters.mdx +44 -4
  211. package/corpus/core/docs/content/locales/es-ES/client.mdx +79 -8
  212. package/corpus/core/docs/content/locales/es-ES/cloneable-saas.mdx +85 -8
  213. package/corpus/core/docs/content/locales/es-ES/code-agents-ui.mdx +101 -8
  214. package/corpus/core/docs/content/locales/es-ES/components.mdx +118 -8
  215. package/corpus/core/docs/content/locales/es-ES/context-awareness.mdx +98 -8
  216. package/corpus/core/docs/content/locales/es-ES/creating-templates.mdx +51 -4
  217. package/corpus/core/docs/content/locales/es-ES/cross-app-sso.mdx +109 -8
  218. package/corpus/core/docs/content/locales/es-ES/database.mdx +52 -4
  219. package/corpus/core/docs/content/locales/es-ES/deployment.mdx +103 -8
  220. package/corpus/core/docs/content/locales/es-ES/dispatch.mdx +134 -8
  221. package/corpus/core/docs/content/locales/es-ES/drop-in-agent.mdx +63 -4
  222. package/corpus/core/docs/content/locales/es-ES/durable-resume.mdx +47 -4
  223. package/corpus/core/docs/content/locales/es-ES/embedding-sdk.mdx +87 -8
  224. package/corpus/core/docs/content/locales/es-ES/evals.mdx +102 -8
  225. package/corpus/core/docs/content/locales/es-ES/extensions.mdx +113 -9
  226. package/corpus/core/docs/content/locales/es-ES/external-agents.mdx +119 -8
  227. package/corpus/core/docs/content/locales/es-ES/faq.mdx +98 -8
  228. package/corpus/core/docs/content/locales/es-ES/file-uploads.mdx +61 -4
  229. package/corpus/core/docs/content/locales/es-ES/frames.mdx +88 -8
  230. package/corpus/core/docs/content/locales/es-ES/getting-started.mdx +34 -4
  231. package/corpus/core/docs/content/locales/es-ES/harness-agents.mdx +79 -8
  232. package/corpus/core/docs/content/locales/es-ES/human-approval.mdx +50 -4
  233. package/corpus/core/docs/content/locales/es-ES/key-concepts.mdx +104 -8
  234. package/corpus/core/docs/content/locales/es-ES/local-file-mode.mdx +60 -4
  235. package/corpus/core/docs/content/locales/es-ES/mcp-apps.mdx +120 -10
  236. package/corpus/core/docs/content/locales/es-ES/mcp-clients.mdx +135 -8
  237. package/corpus/core/docs/content/locales/es-ES/mcp-protocol.mdx +105 -8
  238. package/corpus/core/docs/content/locales/es-ES/messaging.mdx +115 -8
  239. package/corpus/core/docs/content/locales/es-ES/migration-workbench.mdx +47 -4
  240. package/corpus/core/docs/content/locales/es-ES/multi-app-workspace.mdx +91 -8
  241. package/corpus/core/docs/content/locales/es-ES/multi-tenancy.mdx +80 -8
  242. package/corpus/core/docs/content/locales/es-ES/native-chat-ui.mdx +108 -8
  243. package/corpus/core/docs/content/locales/es-ES/notifications.mdx +135 -8
  244. package/corpus/core/docs/content/locales/es-ES/observability.mdx +104 -8
  245. package/corpus/core/docs/content/locales/es-ES/observational-memory.mdx +92 -8
  246. package/corpus/core/docs/content/locales/es-ES/onboarding.mdx +45 -4
  247. package/corpus/core/docs/content/locales/es-ES/plan-plugin.mdx +99 -8
  248. package/corpus/core/docs/content/locales/es-ES/pr-visual-recap.mdx +125 -8
  249. package/corpus/core/docs/content/locales/es-ES/processors.mdx +41 -4
  250. package/corpus/core/docs/content/locales/es-ES/progress.mdx +46 -4
  251. package/corpus/core/docs/content/locales/es-ES/pure-agent-apps.mdx +50 -4
  252. package/corpus/core/docs/content/locales/es-ES/real-time-collaboration.mdx +109 -8
  253. package/corpus/core/docs/content/locales/es-ES/recurring-jobs.mdx +59 -4
  254. package/corpus/core/docs/content/locales/es-ES/routing.mdx +44 -5
  255. package/corpus/core/docs/content/locales/es-ES/sandbox-adapters.mdx +44 -4
  256. package/corpus/core/docs/content/locales/es-ES/security.mdx +82 -8
  257. package/corpus/core/docs/content/locales/es-ES/server.mdx +173 -12
  258. package/corpus/core/docs/content/locales/es-ES/sharing.mdx +45 -4
  259. package/corpus/core/docs/content/locales/es-ES/skills-guide.mdx +118 -9
  260. package/corpus/core/docs/content/locales/es-ES/template-analytics.mdx +46 -4
  261. package/corpus/core/docs/content/locales/es-ES/template-assets.mdx +64 -4
  262. package/corpus/core/docs/content/locales/es-ES/template-brain.mdx +69 -4
  263. package/corpus/core/docs/content/locales/es-ES/template-calendar.mdx +62 -4
  264. package/corpus/core/docs/content/locales/es-ES/template-chat.mdx +61 -4
  265. package/corpus/core/docs/content/locales/es-ES/template-clips.mdx +52 -4
  266. package/corpus/core/docs/content/locales/es-ES/template-content.mdx +64 -4
  267. package/corpus/core/docs/content/locales/es-ES/template-design.mdx +108 -4
  268. package/corpus/core/docs/content/locales/es-ES/template-dispatch.mdx +57 -4
  269. package/corpus/core/docs/content/locales/es-ES/template-forms.mdx +64 -4
  270. package/corpus/core/docs/content/locales/es-ES/template-mail.mdx +60 -4
  271. package/corpus/core/docs/content/locales/es-ES/template-plan.mdx +61 -4
  272. package/corpus/core/docs/content/locales/es-ES/template-slides.mdx +49 -4
  273. package/corpus/core/docs/content/locales/es-ES/template-videos.mdx +53 -4
  274. package/corpus/core/docs/content/locales/es-ES/tracking.mdx +54 -4
  275. package/corpus/core/docs/content/locales/es-ES/using-your-agent.mdx +51 -4
  276. package/corpus/core/docs/content/locales/es-ES/voice-input.mdx +45 -4
  277. package/corpus/core/docs/content/locales/es-ES/what-is-agent-native.mdx +99 -8
  278. package/corpus/core/docs/content/locales/es-ES/workspace-connections.mdx +128 -8
  279. package/corpus/core/docs/content/locales/es-ES/workspace-management.mdx +50 -4
  280. package/corpus/core/docs/content/locales/es-ES/workspace.mdx +112 -8
  281. package/corpus/core/docs/content/locales/es-ES/writing-agent-instructions.mdx +46 -4
  282. package/corpus/core/docs/content/locales/fr-FR/a2a-protocol.mdx +97 -9
  283. package/corpus/core/docs/content/locales/fr-FR/actions.mdx +67 -4
  284. package/corpus/core/docs/content/locales/fr-FR/agent-mentions.mdx +68 -4
  285. package/corpus/core/docs/content/locales/fr-FR/agent-surfaces.mdx +118 -8
  286. package/corpus/core/docs/content/locales/fr-FR/agent-teams.mdx +172 -12
  287. package/corpus/core/docs/content/locales/fr-FR/agent-web-surfaces.mdx +51 -4
  288. package/corpus/core/docs/content/locales/fr-FR/authentication.mdx +122 -8
  289. package/corpus/core/docs/content/locales/fr-FR/automations.mdx +110 -8
  290. package/corpus/core/docs/content/locales/fr-FR/blueprint-installer.mdx +42 -4
  291. package/corpus/core/docs/content/locales/fr-FR/cli-adapters.mdx +44 -4
  292. package/corpus/core/docs/content/locales/fr-FR/client.mdx +81 -8
  293. package/corpus/core/docs/content/locales/fr-FR/cloneable-saas.mdx +85 -8
  294. package/corpus/core/docs/content/locales/fr-FR/code-agents-ui.mdx +102 -8
  295. package/corpus/core/docs/content/locales/fr-FR/components.mdx +118 -8
  296. package/corpus/core/docs/content/locales/fr-FR/context-awareness.mdx +98 -8
  297. package/corpus/core/docs/content/locales/fr-FR/creating-templates.mdx +49 -4
  298. package/corpus/core/docs/content/locales/fr-FR/cross-app-sso.mdx +109 -8
  299. package/corpus/core/docs/content/locales/fr-FR/database.mdx +52 -4
  300. package/corpus/core/docs/content/locales/fr-FR/deployment.mdx +103 -8
  301. package/corpus/core/docs/content/locales/fr-FR/dispatch.mdx +134 -8
  302. package/corpus/core/docs/content/locales/fr-FR/drop-in-agent.mdx +63 -4
  303. package/corpus/core/docs/content/locales/fr-FR/durable-resume.mdx +47 -4
  304. package/corpus/core/docs/content/locales/fr-FR/embedding-sdk.mdx +87 -8
  305. package/corpus/core/docs/content/locales/fr-FR/evals.mdx +102 -8
  306. package/corpus/core/docs/content/locales/fr-FR/extensions.mdx +113 -9
  307. package/corpus/core/docs/content/locales/fr-FR/external-agents.mdx +119 -8
  308. package/corpus/core/docs/content/locales/fr-FR/faq.mdx +98 -8
  309. package/corpus/core/docs/content/locales/fr-FR/file-uploads.mdx +61 -4
  310. package/corpus/core/docs/content/locales/fr-FR/frames.mdx +90 -8
  311. package/corpus/core/docs/content/locales/fr-FR/getting-started.mdx +34 -4
  312. package/corpus/core/docs/content/locales/fr-FR/harness-agents.mdx +77 -8
  313. package/corpus/core/docs/content/locales/fr-FR/human-approval.mdx +50 -4
  314. package/corpus/core/docs/content/locales/fr-FR/key-concepts.mdx +106 -8
  315. package/corpus/core/docs/content/locales/fr-FR/local-file-mode.mdx +58 -4
  316. package/corpus/core/docs/content/locales/fr-FR/mcp-apps.mdx +120 -10
  317. package/corpus/core/docs/content/locales/fr-FR/mcp-clients.mdx +135 -8
  318. package/corpus/core/docs/content/locales/fr-FR/mcp-protocol.mdx +105 -8
  319. package/corpus/core/docs/content/locales/fr-FR/messaging.mdx +115 -8
  320. package/corpus/core/docs/content/locales/fr-FR/migration-workbench.mdx +47 -4
  321. package/corpus/core/docs/content/locales/fr-FR/multi-app-workspace.mdx +91 -8
  322. package/corpus/core/docs/content/locales/fr-FR/multi-tenancy.mdx +80 -8
  323. package/corpus/core/docs/content/locales/fr-FR/native-chat-ui.mdx +108 -8
  324. package/corpus/core/docs/content/locales/fr-FR/notifications.mdx +135 -8
  325. package/corpus/core/docs/content/locales/fr-FR/observability.mdx +104 -8
  326. package/corpus/core/docs/content/locales/fr-FR/observational-memory.mdx +89 -8
  327. package/corpus/core/docs/content/locales/fr-FR/onboarding.mdx +45 -4
  328. package/corpus/core/docs/content/locales/fr-FR/plan-plugin.mdx +99 -8
  329. package/corpus/core/docs/content/locales/fr-FR/pr-visual-recap.mdx +126 -8
  330. package/corpus/core/docs/content/locales/fr-FR/processors.mdx +41 -4
  331. package/corpus/core/docs/content/locales/fr-FR/progress.mdx +46 -4
  332. package/corpus/core/docs/content/locales/fr-FR/pure-agent-apps.mdx +48 -4
  333. package/corpus/core/docs/content/locales/fr-FR/real-time-collaboration.mdx +107 -8
  334. package/corpus/core/docs/content/locales/fr-FR/recurring-jobs.mdx +59 -4
  335. package/corpus/core/docs/content/locales/fr-FR/routing.mdx +44 -5
  336. package/corpus/core/docs/content/locales/fr-FR/sandbox-adapters.mdx +44 -4
  337. package/corpus/core/docs/content/locales/fr-FR/security.mdx +82 -8
  338. package/corpus/core/docs/content/locales/fr-FR/server.mdx +173 -12
  339. package/corpus/core/docs/content/locales/fr-FR/sharing.mdx +45 -4
  340. package/corpus/core/docs/content/locales/fr-FR/skills-guide.mdx +118 -9
  341. package/corpus/core/docs/content/locales/fr-FR/template-analytics.mdx +46 -4
  342. package/corpus/core/docs/content/locales/fr-FR/template-assets.mdx +66 -4
  343. package/corpus/core/docs/content/locales/fr-FR/template-brain.mdx +69 -4
  344. package/corpus/core/docs/content/locales/fr-FR/template-calendar.mdx +62 -4
  345. package/corpus/core/docs/content/locales/fr-FR/template-chat.mdx +61 -4
  346. package/corpus/core/docs/content/locales/fr-FR/template-clips.mdx +52 -4
  347. package/corpus/core/docs/content/locales/fr-FR/template-content.mdx +64 -4
  348. package/corpus/core/docs/content/locales/fr-FR/template-design.mdx +107 -4
  349. package/corpus/core/docs/content/locales/fr-FR/template-dispatch.mdx +57 -4
  350. package/corpus/core/docs/content/locales/fr-FR/template-forms.mdx +64 -4
  351. package/corpus/core/docs/content/locales/fr-FR/template-mail.mdx +60 -4
  352. package/corpus/core/docs/content/locales/fr-FR/template-plan.mdx +61 -4
  353. package/corpus/core/docs/content/locales/fr-FR/template-slides.mdx +49 -4
  354. package/corpus/core/docs/content/locales/fr-FR/template-videos.mdx +53 -4
  355. package/corpus/core/docs/content/locales/fr-FR/tracking.mdx +54 -4
  356. package/corpus/core/docs/content/locales/fr-FR/using-your-agent.mdx +51 -4
  357. package/corpus/core/docs/content/locales/fr-FR/voice-input.mdx +45 -4
  358. package/corpus/core/docs/content/locales/fr-FR/what-is-agent-native.mdx +101 -8
  359. package/corpus/core/docs/content/locales/fr-FR/workspace-connections.mdx +128 -8
  360. package/corpus/core/docs/content/locales/fr-FR/workspace-management.mdx +50 -4
  361. package/corpus/core/docs/content/locales/fr-FR/workspace.mdx +112 -8
  362. package/corpus/core/docs/content/locales/fr-FR/writing-agent-instructions.mdx +47 -4
  363. package/corpus/core/docs/content/locales/hi-IN/a2a-protocol.mdx +97 -9
  364. package/corpus/core/docs/content/locales/hi-IN/actions.mdx +63 -4
  365. package/corpus/core/docs/content/locales/hi-IN/agent-mentions.mdx +68 -4
  366. package/corpus/core/docs/content/locales/hi-IN/agent-surfaces.mdx +112 -8
  367. package/corpus/core/docs/content/locales/hi-IN/agent-teams.mdx +171 -12
  368. package/corpus/core/docs/content/locales/hi-IN/agent-web-surfaces.mdx +51 -4
  369. package/corpus/core/docs/content/locales/hi-IN/authentication.mdx +122 -8
  370. package/corpus/core/docs/content/locales/hi-IN/automations.mdx +110 -8
  371. package/corpus/core/docs/content/locales/hi-IN/blueprint-installer.mdx +42 -4
  372. package/corpus/core/docs/content/locales/hi-IN/cli-adapters.mdx +44 -4
  373. package/corpus/core/docs/content/locales/hi-IN/client.mdx +79 -8
  374. package/corpus/core/docs/content/locales/hi-IN/cloneable-saas.mdx +85 -8
  375. package/corpus/core/docs/content/locales/hi-IN/code-agents-ui.mdx +96 -8
  376. package/corpus/core/docs/content/locales/hi-IN/components.mdx +114 -8
  377. package/corpus/core/docs/content/locales/hi-IN/context-awareness.mdx +102 -8
  378. package/corpus/core/docs/content/locales/hi-IN/creating-templates.mdx +53 -4
  379. package/corpus/core/docs/content/locales/hi-IN/cross-app-sso.mdx +109 -8
  380. package/corpus/core/docs/content/locales/hi-IN/database.mdx +52 -4
  381. package/corpus/core/docs/content/locales/hi-IN/deployment.mdx +103 -8
  382. package/corpus/core/docs/content/locales/hi-IN/dispatch.mdx +134 -8
  383. package/corpus/core/docs/content/locales/hi-IN/drop-in-agent.mdx +63 -4
  384. package/corpus/core/docs/content/locales/hi-IN/durable-resume.mdx +47 -4
  385. package/corpus/core/docs/content/locales/hi-IN/embedding-sdk.mdx +83 -8
  386. package/corpus/core/docs/content/locales/hi-IN/evals.mdx +100 -8
  387. package/corpus/core/docs/content/locales/hi-IN/extensions.mdx +113 -9
  388. package/corpus/core/docs/content/locales/hi-IN/external-agents.mdx +119 -8
  389. package/corpus/core/docs/content/locales/hi-IN/faq.mdx +96 -8
  390. package/corpus/core/docs/content/locales/hi-IN/file-uploads.mdx +61 -4
  391. package/corpus/core/docs/content/locales/hi-IN/frames.mdx +88 -8
  392. package/corpus/core/docs/content/locales/hi-IN/getting-started.mdx +34 -4
  393. package/corpus/core/docs/content/locales/hi-IN/harness-agents.mdx +77 -8
  394. package/corpus/core/docs/content/locales/hi-IN/human-approval.mdx +51 -4
  395. package/corpus/core/docs/content/locales/hi-IN/key-concepts.mdx +104 -8
  396. package/corpus/core/docs/content/locales/hi-IN/local-file-mode.mdx +58 -4
  397. package/corpus/core/docs/content/locales/hi-IN/mcp-apps.mdx +120 -10
  398. package/corpus/core/docs/content/locales/hi-IN/mcp-clients.mdx +133 -8
  399. package/corpus/core/docs/content/locales/hi-IN/mcp-protocol.mdx +105 -8
  400. package/corpus/core/docs/content/locales/hi-IN/messaging.mdx +115 -8
  401. package/corpus/core/docs/content/locales/hi-IN/migration-workbench.mdx +45 -4
  402. package/corpus/core/docs/content/locales/hi-IN/multi-app-workspace.mdx +91 -8
  403. package/corpus/core/docs/content/locales/hi-IN/multi-tenancy.mdx +80 -8
  404. package/corpus/core/docs/content/locales/hi-IN/native-chat-ui.mdx +106 -8
  405. package/corpus/core/docs/content/locales/hi-IN/notifications.mdx +135 -8
  406. package/corpus/core/docs/content/locales/hi-IN/observability.mdx +102 -8
  407. package/corpus/core/docs/content/locales/hi-IN/observational-memory.mdx +89 -8
  408. package/corpus/core/docs/content/locales/hi-IN/onboarding.mdx +45 -4
  409. package/corpus/core/docs/content/locales/hi-IN/plan-plugin.mdx +99 -8
  410. package/corpus/core/docs/content/locales/hi-IN/pr-visual-recap.mdx +126 -8
  411. package/corpus/core/docs/content/locales/hi-IN/processors.mdx +41 -4
  412. package/corpus/core/docs/content/locales/hi-IN/progress.mdx +46 -4
  413. package/corpus/core/docs/content/locales/hi-IN/pure-agent-apps.mdx +48 -4
  414. package/corpus/core/docs/content/locales/hi-IN/real-time-collaboration.mdx +106 -8
  415. package/corpus/core/docs/content/locales/hi-IN/recurring-jobs.mdx +59 -4
  416. package/corpus/core/docs/content/locales/hi-IN/routing.mdx +44 -5
  417. package/corpus/core/docs/content/locales/hi-IN/sandbox-adapters.mdx +43 -4
  418. package/corpus/core/docs/content/locales/hi-IN/security.mdx +78 -8
  419. package/corpus/core/docs/content/locales/hi-IN/server.mdx +169 -12
  420. package/corpus/core/docs/content/locales/hi-IN/sharing.mdx +45 -4
  421. package/corpus/core/docs/content/locales/hi-IN/skills-guide.mdx +118 -9
  422. package/corpus/core/docs/content/locales/hi-IN/template-analytics.mdx +46 -4
  423. package/corpus/core/docs/content/locales/hi-IN/template-assets.mdx +62 -4
  424. package/corpus/core/docs/content/locales/hi-IN/template-brain.mdx +69 -4
  425. package/corpus/core/docs/content/locales/hi-IN/template-calendar.mdx +62 -4
  426. package/corpus/core/docs/content/locales/hi-IN/template-chat.mdx +59 -4
  427. package/corpus/core/docs/content/locales/hi-IN/template-clips.mdx +52 -4
  428. package/corpus/core/docs/content/locales/hi-IN/template-content.mdx +62 -4
  429. package/corpus/core/docs/content/locales/hi-IN/template-design.mdx +102 -4
  430. package/corpus/core/docs/content/locales/hi-IN/template-dispatch.mdx +57 -4
  431. package/corpus/core/docs/content/locales/hi-IN/template-forms.mdx +64 -4
  432. package/corpus/core/docs/content/locales/hi-IN/template-mail.mdx +64 -4
  433. package/corpus/core/docs/content/locales/hi-IN/template-plan.mdx +61 -4
  434. package/corpus/core/docs/content/locales/hi-IN/template-slides.mdx +49 -4
  435. package/corpus/core/docs/content/locales/hi-IN/template-videos.mdx +53 -4
  436. package/corpus/core/docs/content/locales/hi-IN/tracking.mdx +54 -4
  437. package/corpus/core/docs/content/locales/hi-IN/using-your-agent.mdx +51 -4
  438. package/corpus/core/docs/content/locales/hi-IN/voice-input.mdx +43 -4
  439. package/corpus/core/docs/content/locales/hi-IN/what-is-agent-native.mdx +97 -8
  440. package/corpus/core/docs/content/locales/hi-IN/workspace-connections.mdx +128 -8
  441. package/corpus/core/docs/content/locales/hi-IN/workspace-management.mdx +50 -4
  442. package/corpus/core/docs/content/locales/hi-IN/workspace.mdx +111 -8
  443. package/corpus/core/docs/content/locales/hi-IN/writing-agent-instructions.mdx +40 -4
  444. package/corpus/core/docs/content/locales/ja-JP/a2a-protocol.mdx +97 -9
  445. package/corpus/core/docs/content/locales/ja-JP/actions.mdx +67 -4
  446. package/corpus/core/docs/content/locales/ja-JP/agent-mentions.mdx +68 -4
  447. package/corpus/core/docs/content/locales/ja-JP/agent-surfaces.mdx +116 -8
  448. package/corpus/core/docs/content/locales/ja-JP/agent-teams.mdx +172 -12
  449. package/corpus/core/docs/content/locales/ja-JP/agent-web-surfaces.mdx +51 -4
  450. package/corpus/core/docs/content/locales/ja-JP/authentication.mdx +122 -8
  451. package/corpus/core/docs/content/locales/ja-JP/automations.mdx +110 -8
  452. package/corpus/core/docs/content/locales/ja-JP/blueprint-installer.mdx +44 -4
  453. package/corpus/core/docs/content/locales/ja-JP/cli-adapters.mdx +44 -4
  454. package/corpus/core/docs/content/locales/ja-JP/client.mdx +79 -8
  455. package/corpus/core/docs/content/locales/ja-JP/cloneable-saas.mdx +85 -8
  456. package/corpus/core/docs/content/locales/ja-JP/code-agents-ui.mdx +100 -8
  457. package/corpus/core/docs/content/locales/ja-JP/components.mdx +116 -8
  458. package/corpus/core/docs/content/locales/ja-JP/context-awareness.mdx +100 -8
  459. package/corpus/core/docs/content/locales/ja-JP/creating-templates.mdx +51 -4
  460. package/corpus/core/docs/content/locales/ja-JP/cross-app-sso.mdx +109 -8
  461. package/corpus/core/docs/content/locales/ja-JP/database.mdx +52 -4
  462. package/corpus/core/docs/content/locales/ja-JP/deployment.mdx +103 -8
  463. package/corpus/core/docs/content/locales/ja-JP/dispatch.mdx +134 -8
  464. package/corpus/core/docs/content/locales/ja-JP/drop-in-agent.mdx +63 -4
  465. package/corpus/core/docs/content/locales/ja-JP/durable-resume.mdx +47 -4
  466. package/corpus/core/docs/content/locales/ja-JP/embedding-sdk.mdx +85 -8
  467. package/corpus/core/docs/content/locales/ja-JP/evals.mdx +102 -8
  468. package/corpus/core/docs/content/locales/ja-JP/extensions.mdx +111 -9
  469. package/corpus/core/docs/content/locales/ja-JP/external-agents.mdx +119 -8
  470. package/corpus/core/docs/content/locales/ja-JP/faq.mdx +98 -8
  471. package/corpus/core/docs/content/locales/ja-JP/file-uploads.mdx +61 -4
  472. package/corpus/core/docs/content/locales/ja-JP/frames.mdx +88 -8
  473. package/corpus/core/docs/content/locales/ja-JP/getting-started.mdx +34 -4
  474. package/corpus/core/docs/content/locales/ja-JP/harness-agents.mdx +79 -8
  475. package/corpus/core/docs/content/locales/ja-JP/human-approval.mdx +50 -4
  476. package/corpus/core/docs/content/locales/ja-JP/key-concepts.mdx +105 -8
  477. package/corpus/core/docs/content/locales/ja-JP/local-file-mode.mdx +58 -4
  478. package/corpus/core/docs/content/locales/ja-JP/mcp-apps.mdx +119 -10
  479. package/corpus/core/docs/content/locales/ja-JP/mcp-clients.mdx +134 -8
  480. package/corpus/core/docs/content/locales/ja-JP/mcp-protocol.mdx +105 -8
  481. package/corpus/core/docs/content/locales/ja-JP/messaging.mdx +115 -8
  482. package/corpus/core/docs/content/locales/ja-JP/migration-workbench.mdx +47 -4
  483. package/corpus/core/docs/content/locales/ja-JP/multi-app-workspace.mdx +91 -8
  484. package/corpus/core/docs/content/locales/ja-JP/multi-tenancy.mdx +80 -8
  485. package/corpus/core/docs/content/locales/ja-JP/native-chat-ui.mdx +104 -8
  486. package/corpus/core/docs/content/locales/ja-JP/notifications.mdx +135 -8
  487. package/corpus/core/docs/content/locales/ja-JP/observability.mdx +104 -8
  488. package/corpus/core/docs/content/locales/ja-JP/observational-memory.mdx +89 -8
  489. package/corpus/core/docs/content/locales/ja-JP/onboarding.mdx +45 -4
  490. package/corpus/core/docs/content/locales/ja-JP/plan-plugin.mdx +99 -8
  491. package/corpus/core/docs/content/locales/ja-JP/pr-visual-recap.mdx +123 -8
  492. package/corpus/core/docs/content/locales/ja-JP/processors.mdx +39 -4
  493. package/corpus/core/docs/content/locales/ja-JP/progress.mdx +46 -4
  494. package/corpus/core/docs/content/locales/ja-JP/pure-agent-apps.mdx +48 -4
  495. package/corpus/core/docs/content/locales/ja-JP/real-time-collaboration.mdx +106 -8
  496. package/corpus/core/docs/content/locales/ja-JP/recurring-jobs.mdx +59 -4
  497. package/corpus/core/docs/content/locales/ja-JP/routing.mdx +44 -5
  498. package/corpus/core/docs/content/locales/ja-JP/sandbox-adapters.mdx +43 -4
  499. package/corpus/core/docs/content/locales/ja-JP/security.mdx +82 -8
  500. package/corpus/core/docs/content/locales/ja-JP/server.mdx +171 -12
  501. package/corpus/core/docs/content/locales/ja-JP/sharing.mdx +45 -4
  502. package/corpus/core/docs/content/locales/ja-JP/skills-guide.mdx +118 -9
  503. package/corpus/core/docs/content/locales/ja-JP/template-analytics.mdx +46 -4
  504. package/corpus/core/docs/content/locales/ja-JP/template-assets.mdx +64 -4
  505. package/corpus/core/docs/content/locales/ja-JP/template-brain.mdx +67 -4
  506. package/corpus/core/docs/content/locales/ja-JP/template-calendar.mdx +62 -4
  507. package/corpus/core/docs/content/locales/ja-JP/template-chat.mdx +61 -4
  508. package/corpus/core/docs/content/locales/ja-JP/template-clips.mdx +52 -4
  509. package/corpus/core/docs/content/locales/ja-JP/template-content.mdx +62 -4
  510. package/corpus/core/docs/content/locales/ja-JP/template-design.mdx +106 -4
  511. package/corpus/core/docs/content/locales/ja-JP/template-dispatch.mdx +57 -4
  512. package/corpus/core/docs/content/locales/ja-JP/template-forms.mdx +62 -4
  513. package/corpus/core/docs/content/locales/ja-JP/template-mail.mdx +62 -4
  514. package/corpus/core/docs/content/locales/ja-JP/template-plan.mdx +63 -4
  515. package/corpus/core/docs/content/locales/ja-JP/template-slides.mdx +49 -4
  516. package/corpus/core/docs/content/locales/ja-JP/template-videos.mdx +53 -4
  517. package/corpus/core/docs/content/locales/ja-JP/tracking.mdx +54 -4
  518. package/corpus/core/docs/content/locales/ja-JP/using-your-agent.mdx +51 -4
  519. package/corpus/core/docs/content/locales/ja-JP/voice-input.mdx +43 -4
  520. package/corpus/core/docs/content/locales/ja-JP/what-is-agent-native.mdx +96 -8
  521. package/corpus/core/docs/content/locales/ja-JP/workspace-connections.mdx +128 -8
  522. package/corpus/core/docs/content/locales/ja-JP/workspace-management.mdx +50 -4
  523. package/corpus/core/docs/content/locales/ja-JP/workspace.mdx +111 -8
  524. package/corpus/core/docs/content/locales/ja-JP/writing-agent-instructions.mdx +44 -4
  525. package/corpus/core/docs/content/locales/ko-KR/a2a-protocol.mdx +97 -9
  526. package/corpus/core/docs/content/locales/ko-KR/actions.mdx +63 -4
  527. package/corpus/core/docs/content/locales/ko-KR/agent-mentions.mdx +68 -4
  528. package/corpus/core/docs/content/locales/ko-KR/agent-surfaces.mdx +113 -8
  529. package/corpus/core/docs/content/locales/ko-KR/agent-teams.mdx +171 -12
  530. package/corpus/core/docs/content/locales/ko-KR/agent-web-surfaces.mdx +51 -4
  531. package/corpus/core/docs/content/locales/ko-KR/authentication.mdx +122 -8
  532. package/corpus/core/docs/content/locales/ko-KR/automations.mdx +110 -8
  533. package/corpus/core/docs/content/locales/ko-KR/blueprint-installer.mdx +42 -4
  534. package/corpus/core/docs/content/locales/ko-KR/cli-adapters.mdx +44 -4
  535. package/corpus/core/docs/content/locales/ko-KR/client.mdx +79 -8
  536. package/corpus/core/docs/content/locales/ko-KR/cloneable-saas.mdx +85 -8
  537. package/corpus/core/docs/content/locales/ko-KR/code-agents-ui.mdx +96 -8
  538. package/corpus/core/docs/content/locales/ko-KR/components.mdx +112 -8
  539. package/corpus/core/docs/content/locales/ko-KR/context-awareness.mdx +96 -8
  540. package/corpus/core/docs/content/locales/ko-KR/creating-templates.mdx +51 -4
  541. package/corpus/core/docs/content/locales/ko-KR/cross-app-sso.mdx +109 -8
  542. package/corpus/core/docs/content/locales/ko-KR/database.mdx +52 -4
  543. package/corpus/core/docs/content/locales/ko-KR/deployment.mdx +103 -8
  544. package/corpus/core/docs/content/locales/ko-KR/dispatch.mdx +132 -8
  545. package/corpus/core/docs/content/locales/ko-KR/drop-in-agent.mdx +63 -4
  546. package/corpus/core/docs/content/locales/ko-KR/durable-resume.mdx +47 -4
  547. package/corpus/core/docs/content/locales/ko-KR/embedding-sdk.mdx +81 -8
  548. package/corpus/core/docs/content/locales/ko-KR/evals.mdx +102 -8
  549. package/corpus/core/docs/content/locales/ko-KR/extensions.mdx +111 -9
  550. package/corpus/core/docs/content/locales/ko-KR/external-agents.mdx +119 -8
  551. package/corpus/core/docs/content/locales/ko-KR/faq.mdx +96 -8
  552. package/corpus/core/docs/content/locales/ko-KR/file-uploads.mdx +61 -4
  553. package/corpus/core/docs/content/locales/ko-KR/frames.mdx +86 -8
  554. package/corpus/core/docs/content/locales/ko-KR/getting-started.mdx +34 -4
  555. package/corpus/core/docs/content/locales/ko-KR/harness-agents.mdx +77 -8
  556. package/corpus/core/docs/content/locales/ko-KR/human-approval.mdx +50 -4
  557. package/corpus/core/docs/content/locales/ko-KR/key-concepts.mdx +104 -8
  558. package/corpus/core/docs/content/locales/ko-KR/local-file-mode.mdx +56 -4
  559. package/corpus/core/docs/content/locales/ko-KR/mcp-apps.mdx +120 -10
  560. package/corpus/core/docs/content/locales/ko-KR/mcp-clients.mdx +133 -8
  561. package/corpus/core/docs/content/locales/ko-KR/mcp-protocol.mdx +105 -8
  562. package/corpus/core/docs/content/locales/ko-KR/messaging.mdx +115 -8
  563. package/corpus/core/docs/content/locales/ko-KR/migration-workbench.mdx +45 -4
  564. package/corpus/core/docs/content/locales/ko-KR/multi-app-workspace.mdx +91 -8
  565. package/corpus/core/docs/content/locales/ko-KR/multi-tenancy.mdx +80 -8
  566. package/corpus/core/docs/content/locales/ko-KR/native-chat-ui.mdx +104 -8
  567. package/corpus/core/docs/content/locales/ko-KR/notifications.mdx +135 -8
  568. package/corpus/core/docs/content/locales/ko-KR/observability.mdx +102 -8
  569. package/corpus/core/docs/content/locales/ko-KR/observational-memory.mdx +87 -8
  570. package/corpus/core/docs/content/locales/ko-KR/onboarding.mdx +44 -4
  571. package/corpus/core/docs/content/locales/ko-KR/plan-plugin.mdx +99 -8
  572. package/corpus/core/docs/content/locales/ko-KR/pr-visual-recap.mdx +125 -8
  573. package/corpus/core/docs/content/locales/ko-KR/processors.mdx +39 -4
  574. package/corpus/core/docs/content/locales/ko-KR/progress.mdx +46 -4
  575. package/corpus/core/docs/content/locales/ko-KR/pure-agent-apps.mdx +46 -4
  576. package/corpus/core/docs/content/locales/ko-KR/real-time-collaboration.mdx +104 -8
  577. package/corpus/core/docs/content/locales/ko-KR/recurring-jobs.mdx +59 -4
  578. package/corpus/core/docs/content/locales/ko-KR/routing.mdx +44 -5
  579. package/corpus/core/docs/content/locales/ko-KR/sandbox-adapters.mdx +41 -4
  580. package/corpus/core/docs/content/locales/ko-KR/security.mdx +78 -8
  581. package/corpus/core/docs/content/locales/ko-KR/server.mdx +171 -12
  582. package/corpus/core/docs/content/locales/ko-KR/sharing.mdx +45 -4
  583. package/corpus/core/docs/content/locales/ko-KR/skills-guide.mdx +118 -9
  584. package/corpus/core/docs/content/locales/ko-KR/template-analytics.mdx +46 -4
  585. package/corpus/core/docs/content/locales/ko-KR/template-assets.mdx +62 -4
  586. package/corpus/core/docs/content/locales/ko-KR/template-brain.mdx +65 -4
  587. package/corpus/core/docs/content/locales/ko-KR/template-calendar.mdx +60 -4
  588. package/corpus/core/docs/content/locales/ko-KR/template-chat.mdx +59 -4
  589. package/corpus/core/docs/content/locales/ko-KR/template-clips.mdx +52 -4
  590. package/corpus/core/docs/content/locales/ko-KR/template-content.mdx +60 -4
  591. package/corpus/core/docs/content/locales/ko-KR/template-design.mdx +102 -4
  592. package/corpus/core/docs/content/locales/ko-KR/template-dispatch.mdx +57 -4
  593. package/corpus/core/docs/content/locales/ko-KR/template-forms.mdx +60 -4
  594. package/corpus/core/docs/content/locales/ko-KR/template-mail.mdx +60 -4
  595. package/corpus/core/docs/content/locales/ko-KR/template-plan.mdx +57 -4
  596. package/corpus/core/docs/content/locales/ko-KR/template-slides.mdx +49 -4
  597. package/corpus/core/docs/content/locales/ko-KR/template-videos.mdx +53 -4
  598. package/corpus/core/docs/content/locales/ko-KR/tracking.mdx +54 -4
  599. package/corpus/core/docs/content/locales/ko-KR/using-your-agent.mdx +51 -4
  600. package/corpus/core/docs/content/locales/ko-KR/voice-input.mdx +43 -4
  601. package/corpus/core/docs/content/locales/ko-KR/what-is-agent-native.mdx +95 -8
  602. package/corpus/core/docs/content/locales/ko-KR/workspace-connections.mdx +128 -8
  603. package/corpus/core/docs/content/locales/ko-KR/workspace-management.mdx +50 -4
  604. package/corpus/core/docs/content/locales/ko-KR/workspace.mdx +111 -8
  605. package/corpus/core/docs/content/locales/ko-KR/writing-agent-instructions.mdx +38 -4
  606. package/corpus/core/docs/content/locales/pt-BR/a2a-protocol.mdx +99 -9
  607. package/corpus/core/docs/content/locales/pt-BR/actions.mdx +67 -4
  608. package/corpus/core/docs/content/locales/pt-BR/agent-mentions.mdx +68 -4
  609. package/corpus/core/docs/content/locales/pt-BR/agent-surfaces.mdx +116 -8
  610. package/corpus/core/docs/content/locales/pt-BR/agent-teams.mdx +172 -12
  611. package/corpus/core/docs/content/locales/pt-BR/agent-web-surfaces.mdx +51 -4
  612. package/corpus/core/docs/content/locales/pt-BR/authentication.mdx +122 -8
  613. package/corpus/core/docs/content/locales/pt-BR/automations.mdx +110 -8
  614. package/corpus/core/docs/content/locales/pt-BR/blueprint-installer.mdx +42 -4
  615. package/corpus/core/docs/content/locales/pt-BR/cli-adapters.mdx +44 -4
  616. package/corpus/core/docs/content/locales/pt-BR/client.mdx +81 -8
  617. package/corpus/core/docs/content/locales/pt-BR/cloneable-saas.mdx +85 -8
  618. package/corpus/core/docs/content/locales/pt-BR/code-agents-ui.mdx +98 -8
  619. package/corpus/core/docs/content/locales/pt-BR/components.mdx +118 -8
  620. package/corpus/core/docs/content/locales/pt-BR/context-awareness.mdx +100 -8
  621. package/corpus/core/docs/content/locales/pt-BR/creating-templates.mdx +51 -4
  622. package/corpus/core/docs/content/locales/pt-BR/cross-app-sso.mdx +109 -8
  623. package/corpus/core/docs/content/locales/pt-BR/database.mdx +52 -4
  624. package/corpus/core/docs/content/locales/pt-BR/deployment.mdx +103 -8
  625. package/corpus/core/docs/content/locales/pt-BR/dispatch.mdx +134 -8
  626. package/corpus/core/docs/content/locales/pt-BR/drop-in-agent.mdx +63 -4
  627. package/corpus/core/docs/content/locales/pt-BR/durable-resume.mdx +47 -4
  628. package/corpus/core/docs/content/locales/pt-BR/embedding-sdk.mdx +87 -8
  629. package/corpus/core/docs/content/locales/pt-BR/evals.mdx +102 -8
  630. package/corpus/core/docs/content/locales/pt-BR/extensions.mdx +113 -9
  631. package/corpus/core/docs/content/locales/pt-BR/external-agents.mdx +119 -8
  632. package/corpus/core/docs/content/locales/pt-BR/faq.mdx +98 -8
  633. package/corpus/core/docs/content/locales/pt-BR/file-uploads.mdx +61 -4
  634. package/corpus/core/docs/content/locales/pt-BR/frames.mdx +88 -8
  635. package/corpus/core/docs/content/locales/pt-BR/getting-started.mdx +34 -4
  636. package/corpus/core/docs/content/locales/pt-BR/harness-agents.mdx +79 -8
  637. package/corpus/core/docs/content/locales/pt-BR/human-approval.mdx +50 -4
  638. package/corpus/core/docs/content/locales/pt-BR/key-concepts.mdx +104 -8
  639. package/corpus/core/docs/content/locales/pt-BR/local-file-mode.mdx +60 -4
  640. package/corpus/core/docs/content/locales/pt-BR/mcp-apps.mdx +120 -10
  641. package/corpus/core/docs/content/locales/pt-BR/mcp-clients.mdx +133 -8
  642. package/corpus/core/docs/content/locales/pt-BR/mcp-protocol.mdx +105 -8
  643. package/corpus/core/docs/content/locales/pt-BR/messaging.mdx +115 -8
  644. package/corpus/core/docs/content/locales/pt-BR/migration-workbench.mdx +47 -4
  645. package/corpus/core/docs/content/locales/pt-BR/multi-app-workspace.mdx +91 -8
  646. package/corpus/core/docs/content/locales/pt-BR/multi-tenancy.mdx +80 -8
  647. package/corpus/core/docs/content/locales/pt-BR/native-chat-ui.mdx +108 -8
  648. package/corpus/core/docs/content/locales/pt-BR/notifications.mdx +135 -8
  649. package/corpus/core/docs/content/locales/pt-BR/observability.mdx +104 -8
  650. package/corpus/core/docs/content/locales/pt-BR/observational-memory.mdx +92 -8
  651. package/corpus/core/docs/content/locales/pt-BR/onboarding.mdx +45 -4
  652. package/corpus/core/docs/content/locales/pt-BR/plan-plugin.mdx +99 -8
  653. package/corpus/core/docs/content/locales/pt-BR/pr-visual-recap.mdx +125 -8
  654. package/corpus/core/docs/content/locales/pt-BR/processors.mdx +41 -4
  655. package/corpus/core/docs/content/locales/pt-BR/progress.mdx +46 -4
  656. package/corpus/core/docs/content/locales/pt-BR/pure-agent-apps.mdx +48 -4
  657. package/corpus/core/docs/content/locales/pt-BR/real-time-collaboration.mdx +107 -8
  658. package/corpus/core/docs/content/locales/pt-BR/recurring-jobs.mdx +59 -4
  659. package/corpus/core/docs/content/locales/pt-BR/routing.mdx +44 -5
  660. package/corpus/core/docs/content/locales/pt-BR/sandbox-adapters.mdx +43 -4
  661. package/corpus/core/docs/content/locales/pt-BR/security.mdx +82 -8
  662. package/corpus/core/docs/content/locales/pt-BR/server.mdx +173 -12
  663. package/corpus/core/docs/content/locales/pt-BR/sharing.mdx +45 -4
  664. package/corpus/core/docs/content/locales/pt-BR/skills-guide.mdx +118 -9
  665. package/corpus/core/docs/content/locales/pt-BR/template-analytics.mdx +46 -4
  666. package/corpus/core/docs/content/locales/pt-BR/template-assets.mdx +64 -4
  667. package/corpus/core/docs/content/locales/pt-BR/template-brain.mdx +69 -4
  668. package/corpus/core/docs/content/locales/pt-BR/template-calendar.mdx +62 -4
  669. package/corpus/core/docs/content/locales/pt-BR/template-chat.mdx +61 -4
  670. package/corpus/core/docs/content/locales/pt-BR/template-clips.mdx +52 -4
  671. package/corpus/core/docs/content/locales/pt-BR/template-content.mdx +64 -4
  672. package/corpus/core/docs/content/locales/pt-BR/template-design.mdx +106 -4
  673. package/corpus/core/docs/content/locales/pt-BR/template-dispatch.mdx +57 -4
  674. package/corpus/core/docs/content/locales/pt-BR/template-forms.mdx +64 -4
  675. package/corpus/core/docs/content/locales/pt-BR/template-mail.mdx +60 -4
  676. package/corpus/core/docs/content/locales/pt-BR/template-plan.mdx +63 -4
  677. package/corpus/core/docs/content/locales/pt-BR/template-slides.mdx +49 -4
  678. package/corpus/core/docs/content/locales/pt-BR/template-videos.mdx +53 -4
  679. package/corpus/core/docs/content/locales/pt-BR/tracking.mdx +54 -4
  680. package/corpus/core/docs/content/locales/pt-BR/using-your-agent.mdx +51 -4
  681. package/corpus/core/docs/content/locales/pt-BR/voice-input.mdx +43 -4
  682. package/corpus/core/docs/content/locales/pt-BR/what-is-agent-native.mdx +101 -8
  683. package/corpus/core/docs/content/locales/pt-BR/workspace-connections.mdx +128 -8
  684. package/corpus/core/docs/content/locales/pt-BR/workspace-management.mdx +50 -4
  685. package/corpus/core/docs/content/locales/pt-BR/workspace.mdx +111 -8
  686. package/corpus/core/docs/content/locales/pt-BR/writing-agent-instructions.mdx +46 -4
  687. package/corpus/core/docs/content/locales/zh-CN/a2a-protocol.mdx +97 -9
  688. package/corpus/core/docs/content/locales/zh-CN/actions.mdx +65 -4
  689. package/corpus/core/docs/content/locales/zh-CN/agent-mentions.mdx +68 -4
  690. package/corpus/core/docs/content/locales/zh-CN/agent-surfaces.mdx +108 -8
  691. package/corpus/core/docs/content/locales/zh-CN/agent-teams.mdx +171 -12
  692. package/corpus/core/docs/content/locales/zh-CN/agent-web-surfaces.mdx +51 -4
  693. package/corpus/core/docs/content/locales/zh-CN/authentication.mdx +122 -8
  694. package/corpus/core/docs/content/locales/zh-CN/automations.mdx +110 -8
  695. package/corpus/core/docs/content/locales/zh-CN/blueprint-installer.mdx +42 -4
  696. package/corpus/core/docs/content/locales/zh-CN/cli-adapters.mdx +44 -4
  697. package/corpus/core/docs/content/locales/zh-CN/client.mdx +79 -8
  698. package/corpus/core/docs/content/locales/zh-CN/cloneable-saas.mdx +83 -8
  699. package/corpus/core/docs/content/locales/zh-CN/code-agents-ui.mdx +94 -8
  700. package/corpus/core/docs/content/locales/zh-CN/components.mdx +112 -8
  701. package/corpus/core/docs/content/locales/zh-CN/context-awareness.mdx +96 -8
  702. package/corpus/core/docs/content/locales/zh-CN/creating-templates.mdx +51 -4
  703. package/corpus/core/docs/content/locales/zh-CN/cross-app-sso.mdx +107 -8
  704. package/corpus/core/docs/content/locales/zh-CN/database.mdx +52 -4
  705. package/corpus/core/docs/content/locales/zh-CN/deployment.mdx +103 -8
  706. package/corpus/core/docs/content/locales/zh-CN/dispatch.mdx +134 -8
  707. package/corpus/core/docs/content/locales/zh-CN/drop-in-agent.mdx +63 -4
  708. package/corpus/core/docs/content/locales/zh-CN/durable-resume.mdx +45 -4
  709. package/corpus/core/docs/content/locales/zh-CN/embedding-sdk.mdx +81 -8
  710. package/corpus/core/docs/content/locales/zh-CN/evals.mdx +100 -8
  711. package/corpus/core/docs/content/locales/zh-CN/extensions.mdx +111 -9
  712. package/corpus/core/docs/content/locales/zh-CN/external-agents.mdx +119 -8
  713. package/corpus/core/docs/content/locales/zh-CN/faq.mdx +96 -8
  714. package/corpus/core/docs/content/locales/zh-CN/file-uploads.mdx +61 -4
  715. package/corpus/core/docs/content/locales/zh-CN/frames.mdx +86 -8
  716. package/corpus/core/docs/content/locales/zh-CN/getting-started.mdx +34 -4
  717. package/corpus/core/docs/content/locales/zh-CN/harness-agents.mdx +79 -8
  718. package/corpus/core/docs/content/locales/zh-CN/human-approval.mdx +50 -4
  719. package/corpus/core/docs/content/locales/zh-CN/key-concepts.mdx +100 -8
  720. package/corpus/core/docs/content/locales/zh-CN/local-file-mode.mdx +56 -4
  721. package/corpus/core/docs/content/locales/zh-CN/mcp-apps.mdx +120 -10
  722. package/corpus/core/docs/content/locales/zh-CN/mcp-clients.mdx +133 -8
  723. package/corpus/core/docs/content/locales/zh-CN/mcp-protocol.mdx +105 -8
  724. package/corpus/core/docs/content/locales/zh-CN/messaging.mdx +115 -8
  725. package/corpus/core/docs/content/locales/zh-CN/migration-workbench.mdx +45 -4
  726. package/corpus/core/docs/content/locales/zh-CN/multi-app-workspace.mdx +91 -8
  727. package/corpus/core/docs/content/locales/zh-CN/multi-tenancy.mdx +80 -8
  728. package/corpus/core/docs/content/locales/zh-CN/native-chat-ui.mdx +104 -8
  729. package/corpus/core/docs/content/locales/zh-CN/notifications.mdx +135 -8
  730. package/corpus/core/docs/content/locales/zh-CN/observability.mdx +102 -8
  731. package/corpus/core/docs/content/locales/zh-CN/observational-memory.mdx +85 -8
  732. package/corpus/core/docs/content/locales/zh-CN/onboarding.mdx +44 -4
  733. package/corpus/core/docs/content/locales/zh-CN/plan-plugin.mdx +97 -8
  734. package/corpus/core/docs/content/locales/zh-CN/pr-visual-recap.mdx +123 -8
  735. package/corpus/core/docs/content/locales/zh-CN/processors.mdx +39 -4
  736. package/corpus/core/docs/content/locales/zh-CN/progress.mdx +46 -4
  737. package/corpus/core/docs/content/locales/zh-CN/pure-agent-apps.mdx +46 -4
  738. package/corpus/core/docs/content/locales/zh-CN/real-time-collaboration.mdx +98 -8
  739. package/corpus/core/docs/content/locales/zh-CN/recurring-jobs.mdx +59 -4
  740. package/corpus/core/docs/content/locales/zh-CN/routing.mdx +42 -5
  741. package/corpus/core/docs/content/locales/zh-CN/sandbox-adapters.mdx +41 -4
  742. package/corpus/core/docs/content/locales/zh-CN/security.mdx +78 -8
  743. package/corpus/core/docs/content/locales/zh-CN/server.mdx +169 -12
  744. package/corpus/core/docs/content/locales/zh-CN/sharing.mdx +45 -4
  745. package/corpus/core/docs/content/locales/zh-CN/skills-guide.mdx +118 -9
  746. package/corpus/core/docs/content/locales/zh-CN/template-analytics.mdx +46 -4
  747. package/corpus/core/docs/content/locales/zh-CN/template-assets.mdx +58 -4
  748. package/corpus/core/docs/content/locales/zh-CN/template-brain.mdx +65 -4
  749. package/corpus/core/docs/content/locales/zh-CN/template-calendar.mdx +58 -4
  750. package/corpus/core/docs/content/locales/zh-CN/template-chat.mdx +57 -4
  751. package/corpus/core/docs/content/locales/zh-CN/template-clips.mdx +52 -4
  752. package/corpus/core/docs/content/locales/zh-CN/template-content.mdx +58 -4
  753. package/corpus/core/docs/content/locales/zh-CN/template-design.mdx +94 -4
  754. package/corpus/core/docs/content/locales/zh-CN/template-dispatch.mdx +57 -4
  755. package/corpus/core/docs/content/locales/zh-CN/template-forms.mdx +58 -4
  756. package/corpus/core/docs/content/locales/zh-CN/template-mail.mdx +60 -4
  757. package/corpus/core/docs/content/locales/zh-CN/template-plan.mdx +57 -4
  758. package/corpus/core/docs/content/locales/zh-CN/template-slides.mdx +49 -4
  759. package/corpus/core/docs/content/locales/zh-CN/template-videos.mdx +51 -4
  760. package/corpus/core/docs/content/locales/zh-CN/tracking.mdx +54 -4
  761. package/corpus/core/docs/content/locales/zh-CN/using-your-agent.mdx +51 -4
  762. package/corpus/core/docs/content/locales/zh-CN/voice-input.mdx +43 -4
  763. package/corpus/core/docs/content/locales/zh-CN/what-is-agent-native.mdx +94 -8
  764. package/corpus/core/docs/content/locales/zh-CN/workspace-connections.mdx +126 -8
  765. package/corpus/core/docs/content/locales/zh-CN/workspace-management.mdx +50 -4
  766. package/corpus/core/docs/content/locales/zh-CN/workspace.mdx +110 -8
  767. package/corpus/core/docs/content/locales/zh-CN/writing-agent-instructions.mdx +38 -4
  768. package/corpus/core/docs/content/locales/zh-TW/a2a-protocol.mdx +97 -9
  769. package/corpus/core/docs/content/locales/zh-TW/actions.mdx +63 -4
  770. package/corpus/core/docs/content/locales/zh-TW/agent-mentions.mdx +68 -4
  771. package/corpus/core/docs/content/locales/zh-TW/agent-surfaces.mdx +108 -8
  772. package/corpus/core/docs/content/locales/zh-TW/agent-teams.mdx +171 -12
  773. package/corpus/core/docs/content/locales/zh-TW/agent-web-surfaces.mdx +51 -4
  774. package/corpus/core/docs/content/locales/zh-TW/authentication.mdx +122 -8
  775. package/corpus/core/docs/content/locales/zh-TW/automations.mdx +110 -8
  776. package/corpus/core/docs/content/locales/zh-TW/blueprint-installer.mdx +42 -4
  777. package/corpus/core/docs/content/locales/zh-TW/cli-adapters.mdx +44 -4
  778. package/corpus/core/docs/content/locales/zh-TW/client.mdx +79 -8
  779. package/corpus/core/docs/content/locales/zh-TW/cloneable-saas.mdx +83 -8
  780. package/corpus/core/docs/content/locales/zh-TW/code-agents-ui.mdx +94 -8
  781. package/corpus/core/docs/content/locales/zh-TW/components.mdx +112 -8
  782. package/corpus/core/docs/content/locales/zh-TW/context-awareness.mdx +96 -8
  783. package/corpus/core/docs/content/locales/zh-TW/creating-templates.mdx +51 -4
  784. package/corpus/core/docs/content/locales/zh-TW/cross-app-sso.mdx +107 -8
  785. package/corpus/core/docs/content/locales/zh-TW/database.mdx +52 -4
  786. package/corpus/core/docs/content/locales/zh-TW/deployment.mdx +103 -8
  787. package/corpus/core/docs/content/locales/zh-TW/dispatch.mdx +134 -8
  788. package/corpus/core/docs/content/locales/zh-TW/drop-in-agent.mdx +63 -4
  789. package/corpus/core/docs/content/locales/zh-TW/durable-background-runs.mdx +88 -8
  790. package/corpus/core/docs/content/locales/zh-TW/durable-resume.mdx +45 -4
  791. package/corpus/core/docs/content/locales/zh-TW/embedding-sdk.mdx +83 -8
  792. package/corpus/core/docs/content/locales/zh-TW/evals.mdx +100 -8
  793. package/corpus/core/docs/content/locales/zh-TW/extensions.mdx +111 -9
  794. package/corpus/core/docs/content/locales/zh-TW/external-agents.mdx +119 -8
  795. package/corpus/core/docs/content/locales/zh-TW/faq.mdx +96 -8
  796. package/corpus/core/docs/content/locales/zh-TW/file-uploads.mdx +61 -4
  797. package/corpus/core/docs/content/locales/zh-TW/frames.mdx +86 -8
  798. package/corpus/core/docs/content/locales/zh-TW/getting-started.mdx +34 -4
  799. package/corpus/core/docs/content/locales/zh-TW/harness-agents.mdx +79 -8
  800. package/corpus/core/docs/content/locales/zh-TW/human-approval.mdx +50 -4
  801. package/corpus/core/docs/content/locales/zh-TW/key-concepts.mdx +100 -8
  802. package/corpus/core/docs/content/locales/zh-TW/local-file-mode.mdx +56 -4
  803. package/corpus/core/docs/content/locales/zh-TW/mcp-apps.mdx +120 -10
  804. package/corpus/core/docs/content/locales/zh-TW/mcp-clients.mdx +133 -8
  805. package/corpus/core/docs/content/locales/zh-TW/mcp-protocol.mdx +105 -8
  806. package/corpus/core/docs/content/locales/zh-TW/messaging.mdx +115 -8
  807. package/corpus/core/docs/content/locales/zh-TW/migration-workbench.mdx +45 -4
  808. package/corpus/core/docs/content/locales/zh-TW/multi-app-workspace.mdx +91 -8
  809. package/corpus/core/docs/content/locales/zh-TW/multi-tenancy.mdx +80 -8
  810. package/corpus/core/docs/content/locales/zh-TW/native-chat-ui.mdx +104 -8
  811. package/corpus/core/docs/content/locales/zh-TW/notifications.mdx +135 -8
  812. package/corpus/core/docs/content/locales/zh-TW/observability.mdx +102 -8
  813. package/corpus/core/docs/content/locales/zh-TW/observational-memory.mdx +85 -8
  814. package/corpus/core/docs/content/locales/zh-TW/onboarding.mdx +44 -4
  815. package/corpus/core/docs/content/locales/zh-TW/plan-plugin.mdx +97 -8
  816. package/corpus/core/docs/content/locales/zh-TW/pr-visual-recap.mdx +123 -8
  817. package/corpus/core/docs/content/locales/zh-TW/processors.mdx +39 -4
  818. package/corpus/core/docs/content/locales/zh-TW/progress.mdx +46 -4
  819. package/corpus/core/docs/content/locales/zh-TW/pure-agent-apps.mdx +46 -4
  820. package/corpus/core/docs/content/locales/zh-TW/real-time-collaboration.mdx +98 -8
  821. package/corpus/core/docs/content/locales/zh-TW/recurring-jobs.mdx +59 -4
  822. package/corpus/core/docs/content/locales/zh-TW/routing.mdx +42 -5
  823. package/corpus/core/docs/content/locales/zh-TW/sandbox-adapters.mdx +41 -4
  824. package/corpus/core/docs/content/locales/zh-TW/security.mdx +80 -8
  825. package/corpus/core/docs/content/locales/zh-TW/server.mdx +169 -12
  826. package/corpus/core/docs/content/locales/zh-TW/sharing.mdx +45 -4
  827. package/corpus/core/docs/content/locales/zh-TW/skills-guide.mdx +118 -9
  828. package/corpus/core/docs/content/locales/zh-TW/template-analytics.mdx +46 -4
  829. package/corpus/core/docs/content/locales/zh-TW/template-assets.mdx +58 -4
  830. package/corpus/core/docs/content/locales/zh-TW/template-brain.mdx +65 -4
  831. package/corpus/core/docs/content/locales/zh-TW/template-calendar.mdx +58 -4
  832. package/corpus/core/docs/content/locales/zh-TW/template-chat.mdx +59 -4
  833. package/corpus/core/docs/content/locales/zh-TW/template-clips.mdx +52 -4
  834. package/corpus/core/docs/content/locales/zh-TW/template-content.mdx +58 -4
  835. package/corpus/core/docs/content/locales/zh-TW/template-design.mdx +96 -4
  836. package/corpus/core/docs/content/locales/zh-TW/template-dispatch.mdx +57 -4
  837. package/corpus/core/docs/content/locales/zh-TW/template-forms.mdx +58 -4
  838. package/corpus/core/docs/content/locales/zh-TW/template-mail.mdx +60 -4
  839. package/corpus/core/docs/content/locales/zh-TW/template-plan.mdx +57 -4
  840. package/corpus/core/docs/content/locales/zh-TW/template-slides.mdx +49 -4
  841. package/corpus/core/docs/content/locales/zh-TW/template-videos.mdx +51 -4
  842. package/corpus/core/docs/content/locales/zh-TW/tracking.mdx +54 -4
  843. package/corpus/core/docs/content/locales/zh-TW/using-your-agent.mdx +51 -4
  844. package/corpus/core/docs/content/locales/zh-TW/voice-input.mdx +43 -4
  845. package/corpus/core/docs/content/locales/zh-TW/what-is-agent-native.mdx +94 -8
  846. package/corpus/core/docs/content/locales/zh-TW/workspace-connections.mdx +126 -8
  847. package/corpus/core/docs/content/locales/zh-TW/workspace-management.mdx +50 -4
  848. package/corpus/core/docs/content/locales/zh-TW/workspace.mdx +111 -8
  849. package/corpus/core/docs/content/locales/zh-TW/writing-agent-instructions.mdx +38 -4
  850. package/corpus/core/docs/content/mcp-apps.mdx +120 -10
  851. package/corpus/core/docs/content/mcp-clients.mdx +161 -8
  852. package/corpus/core/docs/content/mcp-protocol.mdx +105 -8
  853. package/corpus/core/docs/content/messaging.mdx +115 -8
  854. package/corpus/core/docs/content/migration-workbench.mdx +45 -4
  855. package/corpus/core/docs/content/multi-app-workspace.mdx +91 -8
  856. package/corpus/core/docs/content/multi-tenancy.mdx +80 -8
  857. package/corpus/core/docs/content/native-chat-ui.mdx +106 -8
  858. package/corpus/core/docs/content/notifications.mdx +135 -8
  859. package/corpus/core/docs/content/observability.mdx +102 -8
  860. package/corpus/core/docs/content/observational-memory.mdx +89 -8
  861. package/corpus/core/docs/content/onboarding.mdx +45 -4
  862. package/corpus/core/docs/content/plan-plugin.mdx +99 -8
  863. package/corpus/core/docs/content/pr-visual-recap.mdx +125 -8
  864. package/corpus/core/docs/content/processors.mdx +41 -4
  865. package/corpus/core/docs/content/progress.mdx +46 -4
  866. package/corpus/core/docs/content/pure-agent-apps.mdx +46 -4
  867. package/corpus/core/docs/content/real-time-collaboration.mdx +104 -8
  868. package/corpus/core/docs/content/recurring-jobs.mdx +59 -4
  869. package/corpus/core/docs/content/routing.mdx +44 -5
  870. package/corpus/core/docs/content/sandbox-adapters.mdx +43 -4
  871. package/corpus/core/docs/content/security.mdx +80 -8
  872. package/corpus/core/docs/content/server.mdx +173 -12
  873. package/corpus/core/docs/content/sharing.mdx +45 -4
  874. package/corpus/core/docs/content/skills-guide.mdx +118 -9
  875. package/corpus/core/docs/content/template-analytics.mdx +46 -4
  876. package/corpus/core/docs/content/template-assets.mdx +60 -4
  877. package/corpus/core/docs/content/template-brain.mdx +67 -4
  878. package/corpus/core/docs/content/template-calendar.mdx +62 -4
  879. package/corpus/core/docs/content/template-chat.mdx +61 -4
  880. package/corpus/core/docs/content/template-clips.mdx +52 -4
  881. package/corpus/core/docs/content/template-content.mdx +60 -4
  882. package/corpus/core/docs/content/template-design.mdx +103 -4
  883. package/corpus/core/docs/content/template-dispatch.mdx +57 -4
  884. package/corpus/core/docs/content/template-forms.mdx +62 -4
  885. package/corpus/core/docs/content/template-mail.mdx +60 -4
  886. package/corpus/core/docs/content/template-plan.mdx +61 -4
  887. package/corpus/core/docs/content/template-slides.mdx +49 -4
  888. package/corpus/core/docs/content/template-videos.mdx +51 -4
  889. package/corpus/core/docs/content/tracking.mdx +54 -4
  890. package/corpus/core/docs/content/using-your-agent.mdx +51 -4
  891. package/corpus/core/docs/content/voice-input.mdx +43 -4
  892. package/corpus/core/docs/content/what-is-agent-native.mdx +188 -8
  893. package/corpus/core/docs/content/workspace-connections.mdx +128 -8
  894. package/corpus/core/docs/content/workspace-management.mdx +50 -4
  895. package/corpus/core/docs/content/workspace.mdx +111 -8
  896. package/corpus/core/docs/content/writing-agent-instructions.mdx +45 -4
  897. package/corpus/core/package.json +2 -1
  898. package/corpus/core/src/agent/engine/index.ts +1 -0
  899. package/corpus/core/src/agent/engine/registry.ts +40 -0
  900. package/corpus/core/src/agent/production-agent.ts +6 -2
  901. package/corpus/core/src/application-state/store.ts +5 -5
  902. package/corpus/core/src/chat-threads/store.ts +2 -2
  903. package/corpus/core/src/cli/content-local.ts +374 -0
  904. package/corpus/core/src/cli/design-connect.ts +490 -0
  905. package/corpus/core/src/cli/index.ts +33 -0
  906. package/corpus/core/src/cli/skills.ts +355 -200
  907. package/corpus/core/src/client/AssistantChat.tsx +39 -3
  908. package/corpus/core/src/client/MultiTabAssistantChat.tsx +11 -93
  909. package/corpus/core/src/client/agent-chat.ts +27 -3
  910. package/corpus/core/src/client/analytics.ts +68 -15
  911. package/corpus/core/src/client/blocks/index.ts +2 -0
  912. package/corpus/core/src/client/blocks/library/MermaidBlock.tsx +1 -1
  913. package/corpus/core/src/client/blocks/library/diagram.config.ts +42 -18
  914. package/corpus/core/src/client/blocks/library/diagram.tsx +2 -2
  915. package/corpus/core/src/client/blocks/library/sanitize-html.ts +71 -6
  916. package/corpus/core/src/client/blocks/library/wireframe-kit.tsx +2 -2
  917. package/corpus/core/src/client/blocks/library/wireframe.tsx +9 -3
  918. package/corpus/core/src/client/blocks/mdx.ts +62 -1
  919. package/corpus/core/src/client/blocks/server.ts +2 -0
  920. package/corpus/core/src/client/blocks/types.ts +5 -4
  921. package/corpus/core/src/client/chat/message-components.tsx +2 -98
  922. package/corpus/core/src/client/chat-model-groups.ts +147 -0
  923. package/corpus/core/src/client/components/LiveCursorOverlay.tsx +33 -66
  924. package/corpus/core/src/client/components/ui/dialog.tsx +91 -0
  925. package/corpus/core/src/client/composer/ComposerPlusMenu.tsx +33 -290
  926. package/corpus/core/src/client/composer/TiptapComposer.tsx +99 -24
  927. package/corpus/core/src/client/composer/useVoiceDictation.ts +429 -260
  928. package/corpus/core/src/client/frame-protocol.ts +17 -2
  929. package/corpus/core/src/client/index.ts +2 -0
  930. package/corpus/core/src/client/resources/McpIntegrationDialog.tsx +614 -0
  931. package/corpus/core/src/client/resources/ResourcesPanel.tsx +411 -644
  932. package/corpus/core/src/client/resources/mcp-integration-catalog.ts +239 -0
  933. package/corpus/core/src/client/rich-markdown-editor/RegistryBlockNode.tsx +2 -2
  934. package/corpus/core/src/client/settings/SettingsPanel.tsx +1 -1
  935. package/corpus/core/src/client/sharing/ShareButton.tsx +20 -15
  936. package/corpus/core/src/client/use-agent-engine-configured.ts +80 -28
  937. package/corpus/core/src/client/use-chat-models.ts +12 -104
  938. package/corpus/core/src/db/client.ts +0 -5
  939. package/corpus/core/src/integrations/adapters/email.ts +2 -2
  940. package/corpus/core/src/local-artifacts/index.ts +18 -0
  941. package/corpus/core/src/localization/default-messages.ts +81 -0
  942. package/corpus/core/src/localization/shared.ts +3 -3
  943. package/corpus/core/src/org/handlers.ts +2 -2
  944. package/corpus/core/src/resources/store.ts +7 -7
  945. package/corpus/core/src/server/core-routes-plugin.ts +34 -12
  946. package/corpus/core/src/server/transcribe-voice.ts +57 -22
  947. package/corpus/core/src/shared/mcp-embed-headers.ts +23 -1
  948. package/corpus/core/src/shared/mcp-integration-config.ts +101 -0
  949. package/corpus/core/src/styles/agent-native.css +58 -107
  950. package/corpus/core/src/styles/blocks.css +15 -3
  951. package/corpus/core/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +10 -0
  952. package/corpus/core/src/vite/client.ts +19 -0
  953. package/corpus/core/src/voice/index.ts +18 -0
  954. package/corpus/core/src/voice/voice-cleanup-prompt.ts +38 -0
  955. package/corpus/core/src/voice/voice-context.ts +217 -0
  956. package/corpus/core/src/voice/voice-replacements.ts +75 -0
  957. package/corpus/templates/analytics/AGENTS.md +4 -3
  958. package/corpus/templates/analytics/actions/list-session-recordings.ts +6 -1
  959. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +557 -400
  960. package/corpus/templates/analytics/app/global.css +22 -4
  961. package/corpus/templates/analytics/app/i18n/zh-TW.ts +3 -0
  962. package/corpus/templates/analytics/app/i18n-data.ts +21 -0
  963. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +33 -8
  964. package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +7 -0
  965. package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +32 -10
  966. package/corpus/templates/analytics/changelog/2026-06-28-ask-tab-now-matches-the-darker-app-background.md +6 -0
  967. package/corpus/templates/analytics/changelog/2026-06-28-dashboard-email-reports-now-use-cleaner-light-mode-snapshots.md +6 -0
  968. package/corpus/templates/analytics/changelog/2026-06-28-left-sidebar-collapses-into-an-animated-icon-rail.md +6 -0
  969. package/corpus/templates/analytics/changelog/2026-06-28-sessions-now-show-only-signed-in-recordings-with-playable-re.md +6 -0
  970. package/corpus/templates/analytics/changelog/2026-06-28-sessions-shows-scoped-recordings-even-when-replay-events-are.md +6 -0
  971. package/corpus/templates/analytics/seeds/dashboards/agent-native-templates-first-party.json +3 -3
  972. package/corpus/templates/analytics/server/lib/dashboard-report.ts +29 -7
  973. package/corpus/templates/analytics/server/lib/first-party-metric-catalog.ts +5 -2
  974. package/corpus/templates/analytics/server/lib/session-replay.ts +21 -7
  975. package/corpus/templates/assets/app/components/layout/Sidebar.tsx +4 -4
  976. package/corpus/templates/assets/changelog/2026-06-28-left-sidebar-collapse-motion-and-footer-chrome-are-quieter.md +6 -0
  977. package/corpus/templates/brain/app/components/layout/Layout.tsx +29 -2
  978. package/corpus/templates/brain/app/components/layout/Sidebar.tsx +131 -42
  979. package/corpus/templates/brain/app/i18n/zh-TW.ts +2 -0
  980. package/corpus/templates/brain/app/i18n-data.ts +20 -0
  981. package/corpus/templates/brain/changelog/2026-06-28-left-sidebar-collapses-into-an-animated-icon-rail.md +6 -0
  982. package/corpus/templates/calendar/app/components/layout/AppLayout.tsx +29 -1
  983. package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +417 -299
  984. package/corpus/templates/calendar/app/i18n/zh-TW.ts +2 -0
  985. package/corpus/templates/calendar/app/i18n-data.ts +20 -0
  986. package/corpus/templates/calendar/changelog/2026-06-28-left-sidebar-collapses-into-an-animated-icon-rail.md +6 -0
  987. package/corpus/templates/chat/app/components/layout/Sidebar.tsx +6 -19
  988. package/corpus/templates/chat/changelog/2026-06-28-left-sidebar-collapse-motion-and-footer-chrome-are-quieter.md +6 -0
  989. package/corpus/templates/clips/AGENTS.md +8 -0
  990. package/corpus/templates/clips/actions/cleanup-transcript.ts +58 -10
  991. package/corpus/templates/clips/actions/finalize-meeting.ts +81 -12
  992. package/corpus/templates/clips/actions/get-builder-credit-status.ts +22 -0
  993. package/corpus/templates/clips/actions/get-recording-player-data.ts +18 -3
  994. package/corpus/templates/clips/actions/lib/agents-md-context.ts +4 -1
  995. package/corpus/templates/clips/actions/lib/builder-credits-state.ts +46 -0
  996. package/corpus/templates/clips/actions/lib/provider-transcript.ts +51 -0
  997. package/corpus/templates/clips/actions/regenerate-title.ts +18 -0
  998. package/corpus/templates/clips/actions/request-transcript.ts +56 -33
  999. package/corpus/templates/clips/actions/save-browser-transcript.ts +1 -17
  1000. package/corpus/templates/clips/app/components/library/library-layout.tsx +3 -3
  1001. package/corpus/templates/clips/app/components/meetings/share-meeting-dialog.tsx +1 -1
  1002. package/corpus/templates/clips/app/components/player/share-dialog.tsx +2 -2
  1003. package/corpus/templates/clips/app/components/player/transcript-panel.tsx +120 -11
  1004. package/corpus/templates/clips/app/i18n/ar-SA.ts +25 -0
  1005. package/corpus/templates/clips/app/i18n/de-DE.ts +25 -0
  1006. package/corpus/templates/clips/app/i18n/en-US.ts +25 -0
  1007. package/corpus/templates/clips/app/i18n/es-ES.ts +25 -0
  1008. package/corpus/templates/clips/app/i18n/fr-FR.ts +25 -0
  1009. package/corpus/templates/clips/app/i18n/hi-IN.ts +25 -0
  1010. package/corpus/templates/clips/app/i18n/ja-JP.ts +25 -0
  1011. package/corpus/templates/clips/app/i18n/ko-KR.ts +25 -0
  1012. package/corpus/templates/clips/app/i18n/pt-BR.ts +25 -0
  1013. package/corpus/templates/clips/app/i18n/zh-CN.ts +23 -0
  1014. package/corpus/templates/clips/app/i18n/zh-TW.ts +23 -0
  1015. package/corpus/templates/clips/app/routes/_app.settings._index.tsx +69 -0
  1016. package/corpus/templates/clips/app/routes/r.$recordingId.tsx +52 -2
  1017. package/corpus/templates/clips/app/routes/record.tsx +26 -15
  1018. package/corpus/templates/clips/changelog/2026-06-28-builder-credit-pauses-show-friendly-upgrade-guidance.md +6 -0
  1019. package/corpus/templates/clips/changelog/2026-06-28-left-sidebar-footer-controls-use-less-divider-chrome.md +6 -0
  1020. package/corpus/templates/clips/changelog/2026-06-28-transcription-now-auto-detects-spoken-language-instead-of-following.md +6 -0
  1021. package/corpus/templates/clips/changelog/2026-06-28-video-uploads-now-finish-when-duration-metadata-is-unavailable.md +6 -0
  1022. package/corpus/templates/clips/desktop/src/lib/personal-vocabulary.ts +13 -8
  1023. package/corpus/templates/clips/desktop/src/lib/transcription-engine.ts +7 -3
  1024. package/corpus/templates/clips/desktop/src/lib/voice-dictation.ts +60 -1
  1025. package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +30 -12
  1026. package/corpus/templates/clips/desktop/src-tauri/src/whisper_speech.rs +6 -19
  1027. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/chunk.post.ts +4 -3
  1028. package/corpus/templates/clips/shared/builder-credits.ts +120 -0
  1029. package/corpus/templates/clips/shared/recording-core.ts +26 -8
  1030. package/corpus/templates/content/AGENTS.md +23 -2
  1031. package/corpus/templates/content/actions/_builder-docs-client.ts +952 -0
  1032. package/corpus/templates/content/actions/_document-flush.ts +62 -0
  1033. package/corpus/templates/content/actions/_local-file-documents.ts +115 -18
  1034. package/corpus/templates/content/actions/check-builder-doc.ts +38 -0
  1035. package/corpus/templates/content/actions/delete-document.ts +8 -0
  1036. package/corpus/templates/content/actions/import-content-source.ts +12 -0
  1037. package/corpus/templates/content/actions/list-builder-docs.ts +29 -0
  1038. package/corpus/templates/content/actions/pull-builder-doc.ts +42 -0
  1039. package/corpus/templates/content/actions/pull-document.ts +9 -59
  1040. package/corpus/templates/content/actions/push-builder-doc.ts +45 -0
  1041. package/corpus/templates/content/app/blocks/BuilderDocsBlocks.tsx +254 -0
  1042. package/corpus/templates/content/app/blocks/contentBlockRegistry.tsx +4 -0
  1043. package/corpus/templates/content/app/components/editor/DocumentDatabase.tsx +1 -1
  1044. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +1 -1
  1045. package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +5 -5
  1046. package/corpus/templates/content/changelog/2026-06-28-left-sidebar-collapse-motion-and-footer-chrome-are-quieter.md +6 -0
  1047. package/corpus/templates/content/server/db/schema.ts +12 -0
  1048. package/corpus/templates/content/server/plugins/db.ts +23 -0
  1049. package/corpus/templates/content/shared/api.ts +1 -0
  1050. package/corpus/templates/content/shared/builder-docs-blocks.ts +361 -0
  1051. package/corpus/templates/content/shared/builder-mdx.ts +1037 -0
  1052. package/corpus/templates/content/shared/content-source.ts +6 -0
  1053. package/corpus/templates/content/shared/nfm-registry.ts +4 -0
  1054. package/corpus/templates/content/vite.config.ts +13 -0
  1055. package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +137 -0
  1056. package/corpus/templates/design/AGENTS.md +95 -5
  1057. package/corpus/templates/design/DESIGN.md +82 -0
  1058. package/corpus/templates/design/DEVELOPING.md +43 -0
  1059. package/corpus/templates/design/actions/add-localhost-screens.ts +426 -0
  1060. package/corpus/templates/design/actions/apply-shader.ts +277 -0
  1061. package/corpus/templates/design/actions/apply-visual-edit.ts +303 -0
  1062. package/corpus/templates/design/actions/connect-localhost.ts +183 -0
  1063. package/corpus/templates/design/actions/edit-design.ts +195 -42
  1064. package/corpus/templates/design/actions/generate-design.ts +71 -1
  1065. package/corpus/templates/design/actions/generate-screens.ts +193 -0
  1066. package/corpus/templates/design/actions/get-code-layer-projection.ts +191 -0
  1067. package/corpus/templates/design/actions/get-shader.ts +119 -0
  1068. package/corpus/templates/design/actions/list-localhost-connections.ts +95 -0
  1069. package/corpus/templates/design/actions/navigate.ts +55 -2
  1070. package/corpus/templates/design/actions/view-screen.ts +68 -1
  1071. package/corpus/templates/design/agent-native.app-skill.json +10 -0
  1072. package/corpus/templates/design/app/components/design/CanvasContextMenu.tsx +761 -0
  1073. package/corpus/templates/design/app/components/design/DesignCanvas.tsx +2057 -103
  1074. package/corpus/templates/design/app/components/design/DesignEditorSkeleton.tsx +74 -38
  1075. package/corpus/templates/design/app/components/design/DesignExtensionsPanel.tsx +399 -0
  1076. package/corpus/templates/design/app/components/design/EditPanel.tsx +3185 -439
  1077. package/corpus/templates/design/app/components/design/LayersPanel.tsx +1124 -0
  1078. package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +3116 -147
  1079. package/corpus/templates/design/app/components/design/QuestionFlow.tsx +700 -13
  1080. package/corpus/templates/design/app/components/design/TweaksPanel.tsx +107 -63
  1081. package/corpus/templates/design/app/components/design/index.ts +0 -5
  1082. package/corpus/templates/design/app/components/design/inspector/AlignmentMatrix.tsx +286 -0
  1083. package/corpus/templates/design/app/components/design/inspector/AutoLayoutMatrix.tsx +699 -0
  1084. package/corpus/templates/design/app/components/design/inspector/ConstraintsWidget.tsx +461 -0
  1085. package/corpus/templates/design/app/components/design/inspector/ExportSettingsPanel.tsx +166 -0
  1086. package/corpus/templates/design/app/components/design/inspector/FigmaColorPicker.tsx +1420 -0
  1087. package/corpus/templates/design/app/components/design/inspector/SHADER_INTEGRATION.md +420 -0
  1088. package/corpus/templates/design/app/components/design/inspector/ScrubInput.tsx +215 -0
  1089. package/corpus/templates/design/app/components/design/inspector/ShaderControls.stories.tsx +71 -0
  1090. package/corpus/templates/design/app/components/design/inspector/ShaderControls.tsx +518 -0
  1091. package/corpus/templates/design/app/components/design/inspector/ShaderEffectRow.tsx +106 -0
  1092. package/corpus/templates/design/app/components/design/inspector/figma-icons.tsx +361 -0
  1093. package/corpus/templates/design/app/components/design/inspector/index.ts +60 -0
  1094. package/corpus/templates/design/app/components/design/inspector/scrub-input-utils.ts +201 -0
  1095. package/corpus/templates/design/app/components/design/types.ts +23 -0
  1096. package/corpus/templates/design/app/components/layout/Layout.tsx +24 -13
  1097. package/corpus/templates/design/app/components/layout/Sidebar.tsx +4 -4
  1098. package/corpus/templates/design/app/components/visual-editor/CanvasCommentPins.tsx +474 -36
  1099. package/corpus/templates/design/app/components/visual-editor/DrawOverlay.tsx +22 -5
  1100. package/corpus/templates/design/app/components/visual-editor/SaveStatusIndicator.tsx +24 -11
  1101. package/corpus/templates/design/app/global.css +121 -3
  1102. package/corpus/templates/design/app/hooks/use-agent-generating.ts +4 -0
  1103. package/corpus/templates/design/app/hooks/use-navigation-state.ts +130 -8
  1104. package/corpus/templates/design/app/hooks/useDesignHotkeys.ts +329 -0
  1105. package/corpus/templates/design/app/i18n/zh-TW.ts +264 -0
  1106. package/corpus/templates/design/app/i18n-data.ts +2790 -1
  1107. package/corpus/templates/design/app/pages/DesignEditor.tsx +5108 -851
  1108. package/corpus/templates/design/changelog/2026-06-28-annotate-mode-now-combines-drawing-and-comment-pins-in-one-c.md +6 -0
  1109. package/corpus/templates/design/changelog/2026-06-28-design-editor-panel-borders-are-cleaner-so-the-canvas-edge-s.md +6 -0
  1110. package/corpus/templates/design/changelog/2026-06-28-drawing-prompts-now-reliably-open-and-submit-to-the-design-a.md +6 -0
  1111. package/corpus/templates/design/changelog/2026-06-28-editor-app-menus-now-use-an-outline-agent-native-mark-with-b.md +6 -0
  1112. package/corpus/templates/design/changelog/2026-06-28-figma-style-code-design-mode.md +6 -0
  1113. package/corpus/templates/design/changelog/2026-06-28-layer-selection-now-updates-chat-context-without-opening-the.md +6 -0
  1114. package/corpus/templates/design/changelog/2026-06-28-layer-selections-now-preserve-hidden-and-locked-canvas-state.md +6 -0
  1115. package/corpus/templates/design/changelog/2026-06-28-left-sidebar-collapse-motion-and-footer-chrome-are-quieter.md +6 -0
  1116. package/corpus/templates/design/changelog/2026-06-28-live-cursors-now-keep-names-beside-a-cleaner-pointer-marker.md +6 -0
  1117. package/corpus/templates/design/changelog/2026-06-28-mode-switching-now-lives-in-a-compact-bottom-right-icon-dock.md +6 -0
  1118. package/corpus/templates/design/changelog/2026-06-28-screen-overview-now-handles-zooming-drawing-opening-and-dele.md +6 -0
  1119. package/corpus/templates/design/changelog/2026-06-28-screen-overview-now-selects-screens-on-click-and-opens-them-.md +6 -0
  1120. package/corpus/templates/design/changelog/2026-06-28-screen-overview-zooms-into-the-active-screen-with-smoother-e.md +6 -0
  1121. package/corpus/templates/design/changelog/2026-06-28-selected-element-chips-in-chat-are-shorter-and-easier-to-sca.md +6 -0
  1122. package/corpus/templates/design/changelog/2026-06-28-the-design-editor-toolbar-is-more-compact-and-the-app-menu-m.md +6 -0
  1123. package/corpus/templates/design/changelog/2026-06-28-tweaks-now-live-at-the-top-of-the-design-sidebar-instead-of-.md +6 -0
  1124. package/corpus/templates/design/changelog/2026-06-28-tweaks-now-live-in-the-right-inspector-beside-the-design-tab.md +6 -0
  1125. package/corpus/templates/design/changelog/2026-06-29-active-sidebar-rows-use-soft-highlights.md +6 -0
  1126. package/corpus/templates/design/changelog/2026-06-29-agents-can-now-open-screen-overview-focus-screens-and-add.md +6 -0
  1127. package/corpus/templates/design/changelog/2026-06-29-design-agents-now-edit-broad-copy-changes-more-reliably.md +6 -0
  1128. package/corpus/templates/design/changelog/2026-06-29-design-editor-extensions-now-run-inline-beside-the-artboard.md +6 -0
  1129. package/corpus/templates/design/changelog/2026-06-29-sidebars-use-darker-chrome-and-chat-warns-immediately.md +6 -0
  1130. package/corpus/templates/design/changelog/2026-06-29-visual-edit-can-open-localhost-routes-as-url-backed-screens.md +6 -0
  1131. package/corpus/templates/design/package.json +1 -0
  1132. package/corpus/templates/design/server/db/schema.ts +26 -0
  1133. package/corpus/templates/design/server/lib/design-snapshot.ts +1 -1
  1134. package/corpus/templates/design/server/plugins/agent-chat.ts +3 -0
  1135. package/corpus/templates/design/shared/api.ts +27 -0
  1136. package/corpus/templates/design/shared/canvas-frames.ts +103 -0
  1137. package/corpus/templates/design/shared/canvas-math.ts +1058 -0
  1138. package/corpus/templates/design/shared/code-layer.ts +2212 -0
  1139. package/corpus/templates/design/shared/color-utils.ts +180 -0
  1140. package/corpus/templates/design/shared/generation-session.ts +61 -0
  1141. package/corpus/templates/design/shared/shader-presets.ts +782 -0
  1142. package/corpus/templates/design/shared/shader-safety.ts +137 -0
  1143. package/corpus/templates/design/shared/source-mode.ts +237 -0
  1144. package/corpus/templates/forms/app/components/layout/Sidebar.tsx +149 -6
  1145. package/corpus/templates/forms/app/i18n/ar-SA.ts +2 -0
  1146. package/corpus/templates/forms/app/i18n/de-DE.ts +2 -0
  1147. package/corpus/templates/forms/app/i18n/en-US.ts +2 -0
  1148. package/corpus/templates/forms/app/i18n/es-ES.ts +2 -0
  1149. package/corpus/templates/forms/app/i18n/fr-FR.ts +2 -0
  1150. package/corpus/templates/forms/app/i18n/hi-IN.ts +2 -0
  1151. package/corpus/templates/forms/app/i18n/ja-JP.ts +2 -0
  1152. package/corpus/templates/forms/app/i18n/ko-KR.ts +2 -0
  1153. package/corpus/templates/forms/app/i18n/pt-BR.ts +2 -0
  1154. package/corpus/templates/forms/app/i18n/zh-CN.ts +2 -0
  1155. package/corpus/templates/forms/app/i18n/zh-TW.ts +2 -0
  1156. package/corpus/templates/forms/changelog/2026-06-28-left-sidebar-collapses-into-an-animated-icon-rail.md +6 -0
  1157. package/corpus/templates/macros/app/components/layout/AppLayout.tsx +2 -2
  1158. package/corpus/templates/macros/changelog/2026-06-28-left-sidebar-footer-controls-use-less-divider-chrome.md +6 -0
  1159. package/corpus/templates/mail/app/components/layout/AppLayout.tsx +408 -247
  1160. package/corpus/templates/mail/app/i18n/ar-SA.ts +4 -0
  1161. package/corpus/templates/mail/app/i18n/de-DE.ts +4 -0
  1162. package/corpus/templates/mail/app/i18n/en-US.ts +4 -0
  1163. package/corpus/templates/mail/app/i18n/es-ES.ts +4 -0
  1164. package/corpus/templates/mail/app/i18n/fr-FR.ts +4 -0
  1165. package/corpus/templates/mail/app/i18n/hi-IN.ts +4 -0
  1166. package/corpus/templates/mail/app/i18n/ja-JP.ts +4 -0
  1167. package/corpus/templates/mail/app/i18n/ko-KR.ts +4 -0
  1168. package/corpus/templates/mail/app/i18n/pt-BR.ts +4 -0
  1169. package/corpus/templates/mail/app/i18n/zh-CN.ts +4 -0
  1170. package/corpus/templates/mail/app/i18n/zh-TW.ts +4 -0
  1171. package/corpus/templates/mail/changelog/2026-06-28-pinned-sidebar-collapses-into-an-animated-icon-rail.md +6 -0
  1172. package/corpus/templates/plan/.agents/skills/visual-plan/SKILL.md +25 -92
  1173. package/corpus/templates/plan/.agents/skills/visual-plan/references/connection.md +51 -0
  1174. package/corpus/templates/plan/.agents/skills/visual-plan/references/document-quality.md +5 -1
  1175. package/corpus/templates/plan/.agents/skills/visual-plan/references/local-files.md +85 -0
  1176. package/corpus/templates/plan/.agents/skills/visual-plan/references/wireframe.md +21 -0
  1177. package/corpus/templates/plan/.agents/skills/visual-recap/SKILL.md +32 -104
  1178. package/corpus/templates/plan/.agents/skills/visual-recap/references/connection.md +51 -0
  1179. package/corpus/templates/plan/.agents/skills/visual-recap/references/local-files.md +85 -0
  1180. package/corpus/templates/plan/.agents/skills/visual-recap/references/wireframe.md +21 -0
  1181. package/corpus/templates/plan/actions/create-prototype-plan.ts +1 -1
  1182. package/corpus/templates/plan/actions/delete-visual-plan.ts +2 -2
  1183. package/corpus/templates/plan/actions/get-plan-blocks.ts +2 -0
  1184. package/corpus/templates/plan/app/components/layout/Sidebar.tsx +6 -8
  1185. package/corpus/templates/plan/app/components/plan/CanvasArea.tsx +25 -29
  1186. package/corpus/templates/plan/app/components/plan/wireframe/Wireframe.tsx +10 -5
  1187. package/corpus/templates/plan/app/components/plan/wireframe/html-artboard.css +15 -3
  1188. package/corpus/templates/plan/app/components/plan/wireframe/kit/rough.tsx +6 -6
  1189. package/corpus/templates/plan/app/components/plan/wireframe/sanitize-html.ts +71 -6
  1190. package/corpus/templates/plan/app/global.css +67 -81
  1191. package/corpus/templates/plan/app/pages/PlansPage.tsx +8 -0
  1192. package/corpus/templates/plan/app/root.tsx +31 -1
  1193. package/corpus/templates/plan/changelog/2026-06-28-left-sidebar-collapse-motion-and-footer-chrome-are-quieter.md +6 -0
  1194. package/corpus/templates/plan/changelog/2026-06-28-plan-canvases-stay-stable-while-panning-and-zooming-in-chrom.md +6 -0
  1195. package/corpus/templates/plan/changelog/2026-06-28-plan-wireframes-avoid-overlapping-sketch-lines-in-dense-mockups.md +6 -0
  1196. package/corpus/templates/plan/changelog/2026-06-28-plan-wireframes-ignore-host-color-utility-classes-so-canvas-.md +6 -0
  1197. package/corpus/templates/plan/changelog/2026-06-28-plans-use-the-shared-neutral-light-and-dark-theme.md +6 -0
  1198. package/corpus/templates/plan/changelog/2026-06-28-sending-open-feedback-from-a-plan-now-opens-the-inline-plan-.md +6 -0
  1199. package/corpus/templates/plan/changelog/2026-06-28-wireframe-style-can-now-be-switched-between-sketchy-and-clean.md +6 -0
  1200. package/corpus/templates/plan/server/plan-content.ts +62 -3
  1201. package/corpus/templates/plan/server/plan-mdx.ts +177 -2
  1202. package/corpus/templates/slides/app/components/layout/Sidebar.tsx +5 -5
  1203. package/corpus/templates/slides/changelog/2026-06-28-left-sidebar-collapse-motion-and-footer-chrome-are-quieter.md +6 -0
  1204. package/corpus/templates/videos/app/components/Sidebar.tsx +2 -2
  1205. package/corpus/templates/videos/app/components/layout/Layout.tsx +29 -2
  1206. package/corpus/templates/videos/app/components/layout/NavSidebar.tsx +113 -30
  1207. package/corpus/templates/videos/app/i18n/ar-SA.ts +2 -0
  1208. package/corpus/templates/videos/app/i18n/de-DE.ts +2 -0
  1209. package/corpus/templates/videos/app/i18n/en-US.ts +2 -0
  1210. package/corpus/templates/videos/app/i18n/es-ES.ts +2 -0
  1211. package/corpus/templates/videos/app/i18n/fr-FR.ts +2 -0
  1212. package/corpus/templates/videos/app/i18n/hi-IN.ts +2 -0
  1213. package/corpus/templates/videos/app/i18n/ja-JP.ts +2 -0
  1214. package/corpus/templates/videos/app/i18n/ko-KR.ts +2 -0
  1215. package/corpus/templates/videos/app/i18n/pt-BR.ts +2 -0
  1216. package/corpus/templates/videos/app/i18n/zh-CN.ts +2 -0
  1217. package/corpus/templates/videos/app/i18n/zh-TW.ts +2 -0
  1218. package/corpus/templates/videos/changelog/2026-06-28-left-sidebar-collapses-into-an-animated-icon-rail.md +6 -0
  1219. package/dist/agent/engine/index.d.ts +1 -1
  1220. package/dist/agent/engine/index.d.ts.map +1 -1
  1221. package/dist/agent/engine/index.js +1 -1
  1222. package/dist/agent/engine/index.js.map +1 -1
  1223. package/dist/agent/engine/registry.d.ts +9 -0
  1224. package/dist/agent/engine/registry.d.ts.map +1 -1
  1225. package/dist/agent/engine/registry.js +37 -0
  1226. package/dist/agent/engine/registry.js.map +1 -1
  1227. package/dist/agent/production-agent.d.ts.map +1 -1
  1228. package/dist/agent/production-agent.js +4 -3
  1229. package/dist/agent/production-agent.js.map +1 -1
  1230. package/dist/application-state/store.js +5 -5
  1231. package/dist/application-state/store.js.map +1 -1
  1232. package/dist/chat-threads/store.js +2 -2
  1233. package/dist/chat-threads/store.js.map +1 -1
  1234. package/dist/cli/content-local.d.ts +31 -0
  1235. package/dist/cli/content-local.d.ts.map +1 -0
  1236. package/dist/cli/content-local.js +300 -0
  1237. package/dist/cli/content-local.js.map +1 -0
  1238. package/dist/cli/design-connect.d.ts +52 -0
  1239. package/dist/cli/design-connect.d.ts.map +1 -0
  1240. package/dist/cli/design-connect.js +409 -0
  1241. package/dist/cli/design-connect.js.map +1 -0
  1242. package/dist/cli/index.js +31 -0
  1243. package/dist/cli/index.js.map +1 -1
  1244. package/dist/cli/skills.d.ts +13 -4
  1245. package/dist/cli/skills.d.ts.map +1 -1
  1246. package/dist/cli/skills.js +348 -200
  1247. package/dist/cli/skills.js.map +1 -1
  1248. package/dist/client/AssistantChat.d.ts.map +1 -1
  1249. package/dist/client/AssistantChat.js +34 -4
  1250. package/dist/client/AssistantChat.js.map +1 -1
  1251. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  1252. package/dist/client/MultiTabAssistantChat.js +8 -69
  1253. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  1254. package/dist/client/agent-chat.d.ts +6 -0
  1255. package/dist/client/agent-chat.d.ts.map +1 -1
  1256. package/dist/client/agent-chat.js +17 -3
  1257. package/dist/client/agent-chat.js.map +1 -1
  1258. package/dist/client/analytics.d.ts.map +1 -1
  1259. package/dist/client/analytics.js +48 -13
  1260. package/dist/client/analytics.js.map +1 -1
  1261. package/dist/client/blocks/index.d.ts +1 -1
  1262. package/dist/client/blocks/index.d.ts.map +1 -1
  1263. package/dist/client/blocks/index.js +1 -1
  1264. package/dist/client/blocks/index.js.map +1 -1
  1265. package/dist/client/blocks/library/MermaidBlock.js +1 -1
  1266. package/dist/client/blocks/library/MermaidBlock.js.map +1 -1
  1267. package/dist/client/blocks/library/diagram.config.d.ts +9 -9
  1268. package/dist/client/blocks/library/diagram.config.d.ts.map +1 -1
  1269. package/dist/client/blocks/library/diagram.config.js +36 -12
  1270. package/dist/client/blocks/library/diagram.config.js.map +1 -1
  1271. package/dist/client/blocks/library/diagram.js +1 -1
  1272. package/dist/client/blocks/library/diagram.js.map +1 -1
  1273. package/dist/client/blocks/library/sanitize-html.d.ts +3 -1
  1274. package/dist/client/blocks/library/sanitize-html.d.ts.map +1 -1
  1275. package/dist/client/blocks/library/sanitize-html.js +53 -5
  1276. package/dist/client/blocks/library/sanitize-html.js.map +1 -1
  1277. package/dist/client/blocks/library/wireframe-kit.d.ts +2 -2
  1278. package/dist/client/blocks/library/wireframe-kit.d.ts.map +1 -1
  1279. package/dist/client/blocks/library/wireframe-kit.js +2 -2
  1280. package/dist/client/blocks/library/wireframe-kit.js.map +1 -1
  1281. package/dist/client/blocks/library/wireframe.d.ts.map +1 -1
  1282. package/dist/client/blocks/library/wireframe.js +5 -2
  1283. package/dist/client/blocks/library/wireframe.js.map +1 -1
  1284. package/dist/client/blocks/mdx.d.ts +11 -0
  1285. package/dist/client/blocks/mdx.d.ts.map +1 -1
  1286. package/dist/client/blocks/mdx.js +47 -1
  1287. package/dist/client/blocks/mdx.js.map +1 -1
  1288. package/dist/client/blocks/server.d.ts +1 -1
  1289. package/dist/client/blocks/server.d.ts.map +1 -1
  1290. package/dist/client/blocks/server.js +1 -1
  1291. package/dist/client/blocks/server.js.map +1 -1
  1292. package/dist/client/blocks/types.d.ts +5 -4
  1293. package/dist/client/blocks/types.d.ts.map +1 -1
  1294. package/dist/client/blocks/types.js.map +1 -1
  1295. package/dist/client/chat/message-components.d.ts.map +1 -1
  1296. package/dist/client/chat/message-components.js +2 -12
  1297. package/dist/client/chat/message-components.js.map +1 -1
  1298. package/dist/client/chat-model-groups.d.ts +22 -0
  1299. package/dist/client/chat-model-groups.d.ts.map +1 -0
  1300. package/dist/client/chat-model-groups.js +93 -0
  1301. package/dist/client/chat-model-groups.js.map +1 -0
  1302. package/dist/client/components/LiveCursorOverlay.d.ts +1 -2
  1303. package/dist/client/components/LiveCursorOverlay.d.ts.map +1 -1
  1304. package/dist/client/components/LiveCursorOverlay.js +19 -40
  1305. package/dist/client/components/LiveCursorOverlay.js.map +1 -1
  1306. package/dist/client/components/ui/dialog.d.ts +14 -0
  1307. package/dist/client/components/ui/dialog.d.ts.map +1 -0
  1308. package/dist/client/components/ui/dialog.js +21 -0
  1309. package/dist/client/components/ui/dialog.js.map +1 -0
  1310. package/dist/client/composer/ComposerPlusMenu.d.ts.map +1 -1
  1311. package/dist/client/composer/ComposerPlusMenu.js +24 -149
  1312. package/dist/client/composer/ComposerPlusMenu.js.map +1 -1
  1313. package/dist/client/composer/TiptapComposer.d.ts +3 -1
  1314. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  1315. package/dist/client/composer/TiptapComposer.js +86 -24
  1316. package/dist/client/composer/TiptapComposer.js.map +1 -1
  1317. package/dist/client/composer/useVoiceDictation.d.ts +9 -0
  1318. package/dist/client/composer/useVoiceDictation.d.ts.map +1 -1
  1319. package/dist/client/composer/useVoiceDictation.js +154 -32
  1320. package/dist/client/composer/useVoiceDictation.js.map +1 -1
  1321. package/dist/client/frame-protocol.d.ts +17 -2
  1322. package/dist/client/frame-protocol.d.ts.map +1 -1
  1323. package/dist/client/frame-protocol.js.map +1 -1
  1324. package/dist/client/index.d.ts +1 -1
  1325. package/dist/client/index.d.ts.map +1 -1
  1326. package/dist/client/index.js +1 -1
  1327. package/dist/client/index.js.map +1 -1
  1328. package/dist/client/resources/McpIntegrationDialog.d.ts +13 -0
  1329. package/dist/client/resources/McpIntegrationDialog.d.ts.map +1 -0
  1330. package/dist/client/resources/McpIntegrationDialog.js +261 -0
  1331. package/dist/client/resources/McpIntegrationDialog.js.map +1 -0
  1332. package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
  1333. package/dist/client/resources/ResourcesPanel.js +74 -190
  1334. package/dist/client/resources/ResourcesPanel.js.map +1 -1
  1335. package/dist/client/resources/mcp-integration-catalog.d.ts +30 -0
  1336. package/dist/client/resources/mcp-integration-catalog.d.ts.map +1 -0
  1337. package/dist/client/resources/mcp-integration-catalog.js +191 -0
  1338. package/dist/client/resources/mcp-integration-catalog.js.map +1 -0
  1339. package/dist/client/rich-markdown-editor/RegistryBlockNode.js +2 -2
  1340. package/dist/client/rich-markdown-editor/RegistryBlockNode.js.map +1 -1
  1341. package/dist/client/settings/SettingsPanel.js +1 -1
  1342. package/dist/client/settings/SettingsPanel.js.map +1 -1
  1343. package/dist/client/sharing/ShareButton.d.ts +2 -0
  1344. package/dist/client/sharing/ShareButton.d.ts.map +1 -1
  1345. package/dist/client/sharing/ShareButton.js +7 -6
  1346. package/dist/client/sharing/ShareButton.js.map +1 -1
  1347. package/dist/client/use-agent-engine-configured.d.ts +5 -0
  1348. package/dist/client/use-agent-engine-configured.d.ts.map +1 -1
  1349. package/dist/client/use-agent-engine-configured.js +51 -25
  1350. package/dist/client/use-agent-engine-configured.js.map +1 -1
  1351. package/dist/client/use-chat-models.d.ts +2 -7
  1352. package/dist/client/use-chat-models.d.ts.map +1 -1
  1353. package/dist/client/use-chat-models.js +8 -78
  1354. package/dist/client/use-chat-models.js.map +1 -1
  1355. package/dist/collab/awareness.d.ts +2 -2
  1356. package/dist/collab/awareness.d.ts.map +1 -1
  1357. package/dist/collab/routes.d.ts +2 -2
  1358. package/dist/db/client.d.ts.map +1 -1
  1359. package/dist/db/client.js +0 -5
  1360. package/dist/db/client.js.map +1 -1
  1361. package/dist/integrations/adapters/email.js +2 -2
  1362. package/dist/integrations/adapters/email.js.map +1 -1
  1363. package/dist/local-artifacts/index.d.ts +6 -0
  1364. package/dist/local-artifacts/index.d.ts.map +1 -1
  1365. package/dist/local-artifacts/index.js +12 -0
  1366. package/dist/local-artifacts/index.js.map +1 -1
  1367. package/dist/localization/default-messages.d.ts +76 -0
  1368. package/dist/localization/default-messages.d.ts.map +1 -1
  1369. package/dist/localization/default-messages.js +76 -0
  1370. package/dist/localization/default-messages.js.map +1 -1
  1371. package/dist/localization/shared.d.ts +1 -1
  1372. package/dist/localization/shared.js +3 -3
  1373. package/dist/localization/shared.js.map +1 -1
  1374. package/dist/notifications/routes.d.ts +3 -3
  1375. package/dist/observability/routes.d.ts +6 -6
  1376. package/dist/org/handlers.js +2 -2
  1377. package/dist/org/handlers.js.map +1 -1
  1378. package/dist/progress/routes.d.ts +1 -1
  1379. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  1380. package/dist/resources/handlers.d.ts +2 -2
  1381. package/dist/resources/store.js +7 -7
  1382. package/dist/resources/store.js.map +1 -1
  1383. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  1384. package/dist/server/core-routes-plugin.d.ts +1 -0
  1385. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  1386. package/dist/server/core-routes-plugin.js +29 -11
  1387. package/dist/server/core-routes-plugin.js.map +1 -1
  1388. package/dist/server/transcribe-voice.d.ts +1 -1
  1389. package/dist/server/transcribe-voice.d.ts.map +1 -1
  1390. package/dist/server/transcribe-voice.js +40 -24
  1391. package/dist/server/transcribe-voice.js.map +1 -1
  1392. package/dist/shared/mcp-embed-headers.d.ts +1 -0
  1393. package/dist/shared/mcp-embed-headers.d.ts.map +1 -1
  1394. package/dist/shared/mcp-embed-headers.js +20 -1
  1395. package/dist/shared/mcp-embed-headers.js.map +1 -1
  1396. package/dist/shared/mcp-integration-config.d.ts +27 -0
  1397. package/dist/shared/mcp-integration-config.d.ts.map +1 -0
  1398. package/dist/shared/mcp-integration-config.js +56 -0
  1399. package/dist/shared/mcp-integration-config.js.map +1 -0
  1400. package/dist/styles/agent-native.css +58 -107
  1401. package/dist/styles/blocks.css +15 -3
  1402. package/dist/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +10 -0
  1403. package/dist/vite/client.d.ts +11 -0
  1404. package/dist/vite/client.d.ts.map +1 -1
  1405. package/dist/vite/client.js +4 -0
  1406. package/dist/vite/client.js.map +1 -1
  1407. package/dist/voice/index.d.ts +5 -0
  1408. package/dist/voice/index.d.ts.map +1 -0
  1409. package/dist/voice/index.js +4 -0
  1410. package/dist/voice/index.js.map +1 -0
  1411. package/dist/voice/voice-cleanup-prompt.d.ts +6 -0
  1412. package/dist/voice/voice-cleanup-prompt.d.ts.map +1 -0
  1413. package/dist/voice/voice-cleanup-prompt.js +26 -0
  1414. package/dist/voice/voice-cleanup-prompt.js.map +1 -0
  1415. package/dist/voice/voice-context.d.ts +25 -0
  1416. package/dist/voice/voice-context.d.ts.map +1 -0
  1417. package/dist/voice/voice-context.js +156 -0
  1418. package/dist/voice/voice-context.js.map +1 -0
  1419. package/dist/voice/voice-replacements.d.ts +4 -0
  1420. package/dist/voice/voice-replacements.d.ts.map +1 -0
  1421. package/dist/voice/voice-replacements.js +52 -0
  1422. package/dist/voice/voice-replacements.js.map +1 -0
  1423. package/docs/content/a2a-protocol.mdx +97 -9
  1424. package/docs/content/actions.mdx +65 -4
  1425. package/docs/content/agent-mentions.mdx +68 -4
  1426. package/docs/content/agent-surfaces.mdx +112 -8
  1427. package/docs/content/agent-teams.mdx +171 -12
  1428. package/docs/content/agent-web-surfaces.mdx +51 -4
  1429. package/docs/content/authentication.mdx +122 -8
  1430. package/docs/content/automations.mdx +110 -8
  1431. package/docs/content/blueprint-installer.mdx +42 -4
  1432. package/docs/content/cli-adapters.mdx +44 -4
  1433. package/docs/content/client.mdx +79 -8
  1434. package/docs/content/cloneable-saas.mdx +85 -8
  1435. package/docs/content/code-agents-ui.mdx +98 -8
  1436. package/docs/content/components.mdx +118 -8
  1437. package/docs/content/context-awareness.mdx +98 -8
  1438. package/docs/content/creating-templates.mdx +49 -4
  1439. package/docs/content/cross-app-sso.mdx +109 -8
  1440. package/docs/content/database.mdx +56 -4
  1441. package/docs/content/deployment.mdx +103 -8
  1442. package/docs/content/dispatch.mdx +134 -8
  1443. package/docs/content/drop-in-agent.mdx +63 -4
  1444. package/docs/content/durable-background-runs.mdx +98 -8
  1445. package/docs/content/durable-resume.mdx +47 -4
  1446. package/docs/content/embedding-sdk.mdx +83 -8
  1447. package/docs/content/evals.mdx +102 -8
  1448. package/docs/content/extensions.mdx +113 -9
  1449. package/docs/content/external-agents.mdx +119 -8
  1450. package/docs/content/faq.mdx +98 -8
  1451. package/docs/content/file-uploads.mdx +61 -4
  1452. package/docs/content/frames.mdx +90 -8
  1453. package/docs/content/generative-ui.mdx +50 -4
  1454. package/docs/content/getting-started.mdx +34 -4
  1455. package/docs/content/harness-agents.mdx +77 -8
  1456. package/docs/content/human-approval.mdx +50 -4
  1457. package/docs/content/key-concepts.mdx +102 -8
  1458. package/docs/content/local-file-mode.mdx +58 -4
  1459. package/docs/content/locales/ar-SA/a2a-protocol.mdx +97 -9
  1460. package/docs/content/locales/ar-SA/actions.mdx +65 -4
  1461. package/docs/content/locales/ar-SA/agent-mentions.mdx +68 -4
  1462. package/docs/content/locales/ar-SA/agent-surfaces.mdx +114 -8
  1463. package/docs/content/locales/ar-SA/agent-teams.mdx +174 -12
  1464. package/docs/content/locales/ar-SA/agent-web-surfaces.mdx +49 -4
  1465. package/docs/content/locales/ar-SA/authentication.mdx +120 -8
  1466. package/docs/content/locales/ar-SA/automations.mdx +110 -8
  1467. package/docs/content/locales/ar-SA/blueprint-installer.mdx +42 -4
  1468. package/docs/content/locales/ar-SA/cli-adapters.mdx +40 -4
  1469. package/docs/content/locales/ar-SA/client.mdx +80 -8
  1470. package/docs/content/locales/ar-SA/cloneable-saas.mdx +85 -8
  1471. package/docs/content/locales/ar-SA/code-agents-ui.mdx +99 -8
  1472. package/docs/content/locales/ar-SA/components.mdx +114 -8
  1473. package/docs/content/locales/ar-SA/context-awareness.mdx +100 -8
  1474. package/docs/content/locales/ar-SA/creating-templates.mdx +51 -4
  1475. package/docs/content/locales/ar-SA/cross-app-sso.mdx +109 -8
  1476. package/docs/content/locales/ar-SA/database.mdx +52 -4
  1477. package/docs/content/locales/ar-SA/deployment.mdx +103 -8
  1478. package/docs/content/locales/ar-SA/dispatch.mdx +134 -8
  1479. package/docs/content/locales/ar-SA/drop-in-agent.mdx +63 -4
  1480. package/docs/content/locales/ar-SA/durable-resume.mdx +47 -4
  1481. package/docs/content/locales/ar-SA/embedding-sdk.mdx +83 -8
  1482. package/docs/content/locales/ar-SA/evals.mdx +102 -8
  1483. package/docs/content/locales/ar-SA/extensions.mdx +113 -9
  1484. package/docs/content/locales/ar-SA/external-agents.mdx +119 -8
  1485. package/docs/content/locales/ar-SA/faq.mdx +98 -8
  1486. package/docs/content/locales/ar-SA/file-uploads.mdx +61 -4
  1487. package/docs/content/locales/ar-SA/frames.mdx +88 -8
  1488. package/docs/content/locales/ar-SA/getting-started.mdx +34 -4
  1489. package/docs/content/locales/ar-SA/harness-agents.mdx +79 -8
  1490. package/docs/content/locales/ar-SA/human-approval.mdx +50 -4
  1491. package/docs/content/locales/ar-SA/key-concepts.mdx +107 -8
  1492. package/docs/content/locales/ar-SA/local-file-mode.mdx +56 -4
  1493. package/docs/content/locales/ar-SA/mcp-apps.mdx +120 -10
  1494. package/docs/content/locales/ar-SA/mcp-clients.mdx +133 -8
  1495. package/docs/content/locales/ar-SA/mcp-protocol.mdx +105 -8
  1496. package/docs/content/locales/ar-SA/messaging.mdx +115 -8
  1497. package/docs/content/locales/ar-SA/migration-workbench.mdx +47 -4
  1498. package/docs/content/locales/ar-SA/multi-app-workspace.mdx +91 -8
  1499. package/docs/content/locales/ar-SA/multi-tenancy.mdx +80 -8
  1500. package/docs/content/locales/ar-SA/native-chat-ui.mdx +104 -8
  1501. package/docs/content/locales/ar-SA/notifications.mdx +135 -8
  1502. package/docs/content/locales/ar-SA/observability.mdx +102 -8
  1503. package/docs/content/locales/ar-SA/observational-memory.mdx +87 -8
  1504. package/docs/content/locales/ar-SA/onboarding.mdx +45 -4
  1505. package/docs/content/locales/ar-SA/plan-plugin.mdx +99 -8
  1506. package/docs/content/locales/ar-SA/pr-visual-recap.mdx +125 -8
  1507. package/docs/content/locales/ar-SA/processors.mdx +41 -4
  1508. package/docs/content/locales/ar-SA/progress.mdx +46 -4
  1509. package/docs/content/locales/ar-SA/pure-agent-apps.mdx +48 -4
  1510. package/docs/content/locales/ar-SA/real-time-collaboration.mdx +102 -8
  1511. package/docs/content/locales/ar-SA/recurring-jobs.mdx +59 -4
  1512. package/docs/content/locales/ar-SA/routing.mdx +44 -5
  1513. package/docs/content/locales/ar-SA/sandbox-adapters.mdx +43 -4
  1514. package/docs/content/locales/ar-SA/security.mdx +80 -8
  1515. package/docs/content/locales/ar-SA/server.mdx +173 -12
  1516. package/docs/content/locales/ar-SA/sharing.mdx +45 -4
  1517. package/docs/content/locales/ar-SA/skills-guide.mdx +118 -9
  1518. package/docs/content/locales/ar-SA/template-analytics.mdx +46 -4
  1519. package/docs/content/locales/ar-SA/template-assets.mdx +62 -4
  1520. package/docs/content/locales/ar-SA/template-brain.mdx +65 -4
  1521. package/docs/content/locales/ar-SA/template-calendar.mdx +62 -4
  1522. package/docs/content/locales/ar-SA/template-chat.mdx +61 -4
  1523. package/docs/content/locales/ar-SA/template-clips.mdx +52 -4
  1524. package/docs/content/locales/ar-SA/template-content.mdx +62 -4
  1525. package/docs/content/locales/ar-SA/template-design.mdx +101 -4
  1526. package/docs/content/locales/ar-SA/template-dispatch.mdx +57 -4
  1527. package/docs/content/locales/ar-SA/template-forms.mdx +62 -4
  1528. package/docs/content/locales/ar-SA/template-mail.mdx +60 -4
  1529. package/docs/content/locales/ar-SA/template-plan.mdx +61 -4
  1530. package/docs/content/locales/ar-SA/template-slides.mdx +49 -4
  1531. package/docs/content/locales/ar-SA/template-videos.mdx +53 -4
  1532. package/docs/content/locales/ar-SA/tracking.mdx +54 -4
  1533. package/docs/content/locales/ar-SA/using-your-agent.mdx +51 -4
  1534. package/docs/content/locales/ar-SA/voice-input.mdx +43 -4
  1535. package/docs/content/locales/ar-SA/what-is-agent-native.mdx +96 -8
  1536. package/docs/content/locales/ar-SA/workspace-connections.mdx +128 -8
  1537. package/docs/content/locales/ar-SA/workspace-management.mdx +50 -4
  1538. package/docs/content/locales/ar-SA/workspace.mdx +112 -8
  1539. package/docs/content/locales/ar-SA/writing-agent-instructions.mdx +41 -4
  1540. package/docs/content/locales/de-DE/a2a-protocol.mdx +99 -9
  1541. package/docs/content/locales/de-DE/actions.mdx +67 -4
  1542. package/docs/content/locales/de-DE/agent-mentions.mdx +68 -4
  1543. package/docs/content/locales/de-DE/agent-surfaces.mdx +116 -8
  1544. package/docs/content/locales/de-DE/agent-teams.mdx +171 -12
  1545. package/docs/content/locales/de-DE/agent-web-surfaces.mdx +51 -4
  1546. package/docs/content/locales/de-DE/authentication.mdx +122 -8
  1547. package/docs/content/locales/de-DE/automations.mdx +110 -8
  1548. package/docs/content/locales/de-DE/blueprint-installer.mdx +42 -4
  1549. package/docs/content/locales/de-DE/cli-adapters.mdx +44 -4
  1550. package/docs/content/locales/de-DE/client.mdx +79 -8
  1551. package/docs/content/locales/de-DE/cloneable-saas.mdx +85 -8
  1552. package/docs/content/locales/de-DE/code-agents-ui.mdx +100 -8
  1553. package/docs/content/locales/de-DE/components.mdx +118 -8
  1554. package/docs/content/locales/de-DE/context-awareness.mdx +98 -8
  1555. package/docs/content/locales/de-DE/creating-templates.mdx +51 -4
  1556. package/docs/content/locales/de-DE/cross-app-sso.mdx +109 -8
  1557. package/docs/content/locales/de-DE/database.mdx +52 -4
  1558. package/docs/content/locales/de-DE/deployment.mdx +103 -8
  1559. package/docs/content/locales/de-DE/dispatch.mdx +134 -8
  1560. package/docs/content/locales/de-DE/drop-in-agent.mdx +63 -4
  1561. package/docs/content/locales/de-DE/durable-resume.mdx +47 -4
  1562. package/docs/content/locales/de-DE/embedding-sdk.mdx +85 -8
  1563. package/docs/content/locales/de-DE/evals.mdx +102 -8
  1564. package/docs/content/locales/de-DE/extensions.mdx +113 -9
  1565. package/docs/content/locales/de-DE/external-agents.mdx +119 -8
  1566. package/docs/content/locales/de-DE/faq.mdx +98 -8
  1567. package/docs/content/locales/de-DE/file-uploads.mdx +61 -4
  1568. package/docs/content/locales/de-DE/frames.mdx +88 -8
  1569. package/docs/content/locales/de-DE/getting-started.mdx +34 -4
  1570. package/docs/content/locales/de-DE/harness-agents.mdx +79 -8
  1571. package/docs/content/locales/de-DE/human-approval.mdx +50 -4
  1572. package/docs/content/locales/de-DE/key-concepts.mdx +104 -8
  1573. package/docs/content/locales/de-DE/local-file-mode.mdx +58 -4
  1574. package/docs/content/locales/de-DE/mcp-apps.mdx +120 -10
  1575. package/docs/content/locales/de-DE/mcp-clients.mdx +133 -8
  1576. package/docs/content/locales/de-DE/mcp-protocol.mdx +105 -8
  1577. package/docs/content/locales/de-DE/messaging.mdx +115 -8
  1578. package/docs/content/locales/de-DE/migration-workbench.mdx +47 -4
  1579. package/docs/content/locales/de-DE/multi-app-workspace.mdx +91 -8
  1580. package/docs/content/locales/de-DE/multi-tenancy.mdx +80 -8
  1581. package/docs/content/locales/de-DE/native-chat-ui.mdx +108 -8
  1582. package/docs/content/locales/de-DE/notifications.mdx +135 -8
  1583. package/docs/content/locales/de-DE/observability.mdx +102 -8
  1584. package/docs/content/locales/de-DE/observational-memory.mdx +92 -8
  1585. package/docs/content/locales/de-DE/onboarding.mdx +45 -4
  1586. package/docs/content/locales/de-DE/plan-plugin.mdx +99 -8
  1587. package/docs/content/locales/de-DE/pr-visual-recap.mdx +125 -8
  1588. package/docs/content/locales/de-DE/processors.mdx +41 -4
  1589. package/docs/content/locales/de-DE/progress.mdx +46 -4
  1590. package/docs/content/locales/de-DE/pure-agent-apps.mdx +50 -4
  1591. package/docs/content/locales/de-DE/real-time-collaboration.mdx +104 -8
  1592. package/docs/content/locales/de-DE/recurring-jobs.mdx +59 -4
  1593. package/docs/content/locales/de-DE/routing.mdx +44 -5
  1594. package/docs/content/locales/de-DE/sandbox-adapters.mdx +43 -4
  1595. package/docs/content/locales/de-DE/security.mdx +80 -8
  1596. package/docs/content/locales/de-DE/server.mdx +171 -12
  1597. package/docs/content/locales/de-DE/sharing.mdx +45 -4
  1598. package/docs/content/locales/de-DE/skills-guide.mdx +118 -9
  1599. package/docs/content/locales/de-DE/template-analytics.mdx +46 -4
  1600. package/docs/content/locales/de-DE/template-assets.mdx +62 -4
  1601. package/docs/content/locales/de-DE/template-brain.mdx +69 -4
  1602. package/docs/content/locales/de-DE/template-calendar.mdx +62 -4
  1603. package/docs/content/locales/de-DE/template-chat.mdx +61 -4
  1604. package/docs/content/locales/de-DE/template-clips.mdx +52 -4
  1605. package/docs/content/locales/de-DE/template-content.mdx +60 -4
  1606. package/docs/content/locales/de-DE/template-design.mdx +109 -4
  1607. package/docs/content/locales/de-DE/template-dispatch.mdx +57 -4
  1608. package/docs/content/locales/de-DE/template-forms.mdx +64 -4
  1609. package/docs/content/locales/de-DE/template-mail.mdx +60 -4
  1610. package/docs/content/locales/de-DE/template-plan.mdx +63 -4
  1611. package/docs/content/locales/de-DE/template-slides.mdx +49 -4
  1612. package/docs/content/locales/de-DE/template-videos.mdx +53 -4
  1613. package/docs/content/locales/de-DE/tracking.mdx +54 -4
  1614. package/docs/content/locales/de-DE/using-your-agent.mdx +51 -4
  1615. package/docs/content/locales/de-DE/voice-input.mdx +45 -4
  1616. package/docs/content/locales/de-DE/what-is-agent-native.mdx +100 -8
  1617. package/docs/content/locales/de-DE/workspace-connections.mdx +128 -8
  1618. package/docs/content/locales/de-DE/workspace-management.mdx +50 -4
  1619. package/docs/content/locales/de-DE/workspace.mdx +111 -8
  1620. package/docs/content/locales/de-DE/writing-agent-instructions.mdx +45 -4
  1621. package/docs/content/locales/es-ES/a2a-protocol.mdx +99 -9
  1622. package/docs/content/locales/es-ES/actions.mdx +67 -4
  1623. package/docs/content/locales/es-ES/agent-mentions.mdx +68 -4
  1624. package/docs/content/locales/es-ES/agent-surfaces.mdx +120 -8
  1625. package/docs/content/locales/es-ES/agent-teams.mdx +172 -12
  1626. package/docs/content/locales/es-ES/agent-web-surfaces.mdx +51 -4
  1627. package/docs/content/locales/es-ES/authentication.mdx +122 -8
  1628. package/docs/content/locales/es-ES/automations.mdx +110 -8
  1629. package/docs/content/locales/es-ES/blueprint-installer.mdx +42 -4
  1630. package/docs/content/locales/es-ES/cli-adapters.mdx +44 -4
  1631. package/docs/content/locales/es-ES/client.mdx +79 -8
  1632. package/docs/content/locales/es-ES/cloneable-saas.mdx +85 -8
  1633. package/docs/content/locales/es-ES/code-agents-ui.mdx +101 -8
  1634. package/docs/content/locales/es-ES/components.mdx +118 -8
  1635. package/docs/content/locales/es-ES/context-awareness.mdx +98 -8
  1636. package/docs/content/locales/es-ES/creating-templates.mdx +51 -4
  1637. package/docs/content/locales/es-ES/cross-app-sso.mdx +109 -8
  1638. package/docs/content/locales/es-ES/database.mdx +52 -4
  1639. package/docs/content/locales/es-ES/deployment.mdx +103 -8
  1640. package/docs/content/locales/es-ES/dispatch.mdx +134 -8
  1641. package/docs/content/locales/es-ES/drop-in-agent.mdx +63 -4
  1642. package/docs/content/locales/es-ES/durable-resume.mdx +47 -4
  1643. package/docs/content/locales/es-ES/embedding-sdk.mdx +87 -8
  1644. package/docs/content/locales/es-ES/evals.mdx +102 -8
  1645. package/docs/content/locales/es-ES/extensions.mdx +113 -9
  1646. package/docs/content/locales/es-ES/external-agents.mdx +119 -8
  1647. package/docs/content/locales/es-ES/faq.mdx +98 -8
  1648. package/docs/content/locales/es-ES/file-uploads.mdx +61 -4
  1649. package/docs/content/locales/es-ES/frames.mdx +88 -8
  1650. package/docs/content/locales/es-ES/getting-started.mdx +34 -4
  1651. package/docs/content/locales/es-ES/harness-agents.mdx +79 -8
  1652. package/docs/content/locales/es-ES/human-approval.mdx +50 -4
  1653. package/docs/content/locales/es-ES/key-concepts.mdx +104 -8
  1654. package/docs/content/locales/es-ES/local-file-mode.mdx +60 -4
  1655. package/docs/content/locales/es-ES/mcp-apps.mdx +120 -10
  1656. package/docs/content/locales/es-ES/mcp-clients.mdx +135 -8
  1657. package/docs/content/locales/es-ES/mcp-protocol.mdx +105 -8
  1658. package/docs/content/locales/es-ES/messaging.mdx +115 -8
  1659. package/docs/content/locales/es-ES/migration-workbench.mdx +47 -4
  1660. package/docs/content/locales/es-ES/multi-app-workspace.mdx +91 -8
  1661. package/docs/content/locales/es-ES/multi-tenancy.mdx +80 -8
  1662. package/docs/content/locales/es-ES/native-chat-ui.mdx +108 -8
  1663. package/docs/content/locales/es-ES/notifications.mdx +135 -8
  1664. package/docs/content/locales/es-ES/observability.mdx +104 -8
  1665. package/docs/content/locales/es-ES/observational-memory.mdx +92 -8
  1666. package/docs/content/locales/es-ES/onboarding.mdx +45 -4
  1667. package/docs/content/locales/es-ES/plan-plugin.mdx +99 -8
  1668. package/docs/content/locales/es-ES/pr-visual-recap.mdx +125 -8
  1669. package/docs/content/locales/es-ES/processors.mdx +41 -4
  1670. package/docs/content/locales/es-ES/progress.mdx +46 -4
  1671. package/docs/content/locales/es-ES/pure-agent-apps.mdx +50 -4
  1672. package/docs/content/locales/es-ES/real-time-collaboration.mdx +109 -8
  1673. package/docs/content/locales/es-ES/recurring-jobs.mdx +59 -4
  1674. package/docs/content/locales/es-ES/routing.mdx +44 -5
  1675. package/docs/content/locales/es-ES/sandbox-adapters.mdx +44 -4
  1676. package/docs/content/locales/es-ES/security.mdx +82 -8
  1677. package/docs/content/locales/es-ES/server.mdx +173 -12
  1678. package/docs/content/locales/es-ES/sharing.mdx +45 -4
  1679. package/docs/content/locales/es-ES/skills-guide.mdx +118 -9
  1680. package/docs/content/locales/es-ES/template-analytics.mdx +46 -4
  1681. package/docs/content/locales/es-ES/template-assets.mdx +64 -4
  1682. package/docs/content/locales/es-ES/template-brain.mdx +69 -4
  1683. package/docs/content/locales/es-ES/template-calendar.mdx +62 -4
  1684. package/docs/content/locales/es-ES/template-chat.mdx +61 -4
  1685. package/docs/content/locales/es-ES/template-clips.mdx +52 -4
  1686. package/docs/content/locales/es-ES/template-content.mdx +64 -4
  1687. package/docs/content/locales/es-ES/template-design.mdx +108 -4
  1688. package/docs/content/locales/es-ES/template-dispatch.mdx +57 -4
  1689. package/docs/content/locales/es-ES/template-forms.mdx +64 -4
  1690. package/docs/content/locales/es-ES/template-mail.mdx +60 -4
  1691. package/docs/content/locales/es-ES/template-plan.mdx +61 -4
  1692. package/docs/content/locales/es-ES/template-slides.mdx +49 -4
  1693. package/docs/content/locales/es-ES/template-videos.mdx +53 -4
  1694. package/docs/content/locales/es-ES/tracking.mdx +54 -4
  1695. package/docs/content/locales/es-ES/using-your-agent.mdx +51 -4
  1696. package/docs/content/locales/es-ES/voice-input.mdx +45 -4
  1697. package/docs/content/locales/es-ES/what-is-agent-native.mdx +99 -8
  1698. package/docs/content/locales/es-ES/workspace-connections.mdx +128 -8
  1699. package/docs/content/locales/es-ES/workspace-management.mdx +50 -4
  1700. package/docs/content/locales/es-ES/workspace.mdx +112 -8
  1701. package/docs/content/locales/es-ES/writing-agent-instructions.mdx +46 -4
  1702. package/docs/content/locales/fr-FR/a2a-protocol.mdx +97 -9
  1703. package/docs/content/locales/fr-FR/actions.mdx +67 -4
  1704. package/docs/content/locales/fr-FR/agent-mentions.mdx +68 -4
  1705. package/docs/content/locales/fr-FR/agent-surfaces.mdx +118 -8
  1706. package/docs/content/locales/fr-FR/agent-teams.mdx +172 -12
  1707. package/docs/content/locales/fr-FR/agent-web-surfaces.mdx +51 -4
  1708. package/docs/content/locales/fr-FR/authentication.mdx +122 -8
  1709. package/docs/content/locales/fr-FR/automations.mdx +110 -8
  1710. package/docs/content/locales/fr-FR/blueprint-installer.mdx +42 -4
  1711. package/docs/content/locales/fr-FR/cli-adapters.mdx +44 -4
  1712. package/docs/content/locales/fr-FR/client.mdx +81 -8
  1713. package/docs/content/locales/fr-FR/cloneable-saas.mdx +85 -8
  1714. package/docs/content/locales/fr-FR/code-agents-ui.mdx +102 -8
  1715. package/docs/content/locales/fr-FR/components.mdx +118 -8
  1716. package/docs/content/locales/fr-FR/context-awareness.mdx +98 -8
  1717. package/docs/content/locales/fr-FR/creating-templates.mdx +49 -4
  1718. package/docs/content/locales/fr-FR/cross-app-sso.mdx +109 -8
  1719. package/docs/content/locales/fr-FR/database.mdx +52 -4
  1720. package/docs/content/locales/fr-FR/deployment.mdx +103 -8
  1721. package/docs/content/locales/fr-FR/dispatch.mdx +134 -8
  1722. package/docs/content/locales/fr-FR/drop-in-agent.mdx +63 -4
  1723. package/docs/content/locales/fr-FR/durable-resume.mdx +47 -4
  1724. package/docs/content/locales/fr-FR/embedding-sdk.mdx +87 -8
  1725. package/docs/content/locales/fr-FR/evals.mdx +102 -8
  1726. package/docs/content/locales/fr-FR/extensions.mdx +113 -9
  1727. package/docs/content/locales/fr-FR/external-agents.mdx +119 -8
  1728. package/docs/content/locales/fr-FR/faq.mdx +98 -8
  1729. package/docs/content/locales/fr-FR/file-uploads.mdx +61 -4
  1730. package/docs/content/locales/fr-FR/frames.mdx +90 -8
  1731. package/docs/content/locales/fr-FR/getting-started.mdx +34 -4
  1732. package/docs/content/locales/fr-FR/harness-agents.mdx +77 -8
  1733. package/docs/content/locales/fr-FR/human-approval.mdx +50 -4
  1734. package/docs/content/locales/fr-FR/key-concepts.mdx +106 -8
  1735. package/docs/content/locales/fr-FR/local-file-mode.mdx +58 -4
  1736. package/docs/content/locales/fr-FR/mcp-apps.mdx +120 -10
  1737. package/docs/content/locales/fr-FR/mcp-clients.mdx +135 -8
  1738. package/docs/content/locales/fr-FR/mcp-protocol.mdx +105 -8
  1739. package/docs/content/locales/fr-FR/messaging.mdx +115 -8
  1740. package/docs/content/locales/fr-FR/migration-workbench.mdx +47 -4
  1741. package/docs/content/locales/fr-FR/multi-app-workspace.mdx +91 -8
  1742. package/docs/content/locales/fr-FR/multi-tenancy.mdx +80 -8
  1743. package/docs/content/locales/fr-FR/native-chat-ui.mdx +108 -8
  1744. package/docs/content/locales/fr-FR/notifications.mdx +135 -8
  1745. package/docs/content/locales/fr-FR/observability.mdx +104 -8
  1746. package/docs/content/locales/fr-FR/observational-memory.mdx +89 -8
  1747. package/docs/content/locales/fr-FR/onboarding.mdx +45 -4
  1748. package/docs/content/locales/fr-FR/plan-plugin.mdx +99 -8
  1749. package/docs/content/locales/fr-FR/pr-visual-recap.mdx +126 -8
  1750. package/docs/content/locales/fr-FR/processors.mdx +41 -4
  1751. package/docs/content/locales/fr-FR/progress.mdx +46 -4
  1752. package/docs/content/locales/fr-FR/pure-agent-apps.mdx +48 -4
  1753. package/docs/content/locales/fr-FR/real-time-collaboration.mdx +107 -8
  1754. package/docs/content/locales/fr-FR/recurring-jobs.mdx +59 -4
  1755. package/docs/content/locales/fr-FR/routing.mdx +44 -5
  1756. package/docs/content/locales/fr-FR/sandbox-adapters.mdx +44 -4
  1757. package/docs/content/locales/fr-FR/security.mdx +82 -8
  1758. package/docs/content/locales/fr-FR/server.mdx +173 -12
  1759. package/docs/content/locales/fr-FR/sharing.mdx +45 -4
  1760. package/docs/content/locales/fr-FR/skills-guide.mdx +118 -9
  1761. package/docs/content/locales/fr-FR/template-analytics.mdx +46 -4
  1762. package/docs/content/locales/fr-FR/template-assets.mdx +66 -4
  1763. package/docs/content/locales/fr-FR/template-brain.mdx +69 -4
  1764. package/docs/content/locales/fr-FR/template-calendar.mdx +62 -4
  1765. package/docs/content/locales/fr-FR/template-chat.mdx +61 -4
  1766. package/docs/content/locales/fr-FR/template-clips.mdx +52 -4
  1767. package/docs/content/locales/fr-FR/template-content.mdx +64 -4
  1768. package/docs/content/locales/fr-FR/template-design.mdx +107 -4
  1769. package/docs/content/locales/fr-FR/template-dispatch.mdx +57 -4
  1770. package/docs/content/locales/fr-FR/template-forms.mdx +64 -4
  1771. package/docs/content/locales/fr-FR/template-mail.mdx +60 -4
  1772. package/docs/content/locales/fr-FR/template-plan.mdx +61 -4
  1773. package/docs/content/locales/fr-FR/template-slides.mdx +49 -4
  1774. package/docs/content/locales/fr-FR/template-videos.mdx +53 -4
  1775. package/docs/content/locales/fr-FR/tracking.mdx +54 -4
  1776. package/docs/content/locales/fr-FR/using-your-agent.mdx +51 -4
  1777. package/docs/content/locales/fr-FR/voice-input.mdx +45 -4
  1778. package/docs/content/locales/fr-FR/what-is-agent-native.mdx +101 -8
  1779. package/docs/content/locales/fr-FR/workspace-connections.mdx +128 -8
  1780. package/docs/content/locales/fr-FR/workspace-management.mdx +50 -4
  1781. package/docs/content/locales/fr-FR/workspace.mdx +112 -8
  1782. package/docs/content/locales/fr-FR/writing-agent-instructions.mdx +47 -4
  1783. package/docs/content/locales/hi-IN/a2a-protocol.mdx +97 -9
  1784. package/docs/content/locales/hi-IN/actions.mdx +63 -4
  1785. package/docs/content/locales/hi-IN/agent-mentions.mdx +68 -4
  1786. package/docs/content/locales/hi-IN/agent-surfaces.mdx +112 -8
  1787. package/docs/content/locales/hi-IN/agent-teams.mdx +171 -12
  1788. package/docs/content/locales/hi-IN/agent-web-surfaces.mdx +51 -4
  1789. package/docs/content/locales/hi-IN/authentication.mdx +122 -8
  1790. package/docs/content/locales/hi-IN/automations.mdx +110 -8
  1791. package/docs/content/locales/hi-IN/blueprint-installer.mdx +42 -4
  1792. package/docs/content/locales/hi-IN/cli-adapters.mdx +44 -4
  1793. package/docs/content/locales/hi-IN/client.mdx +79 -8
  1794. package/docs/content/locales/hi-IN/cloneable-saas.mdx +85 -8
  1795. package/docs/content/locales/hi-IN/code-agents-ui.mdx +96 -8
  1796. package/docs/content/locales/hi-IN/components.mdx +114 -8
  1797. package/docs/content/locales/hi-IN/context-awareness.mdx +102 -8
  1798. package/docs/content/locales/hi-IN/creating-templates.mdx +53 -4
  1799. package/docs/content/locales/hi-IN/cross-app-sso.mdx +109 -8
  1800. package/docs/content/locales/hi-IN/database.mdx +52 -4
  1801. package/docs/content/locales/hi-IN/deployment.mdx +103 -8
  1802. package/docs/content/locales/hi-IN/dispatch.mdx +134 -8
  1803. package/docs/content/locales/hi-IN/drop-in-agent.mdx +63 -4
  1804. package/docs/content/locales/hi-IN/durable-resume.mdx +47 -4
  1805. package/docs/content/locales/hi-IN/embedding-sdk.mdx +83 -8
  1806. package/docs/content/locales/hi-IN/evals.mdx +100 -8
  1807. package/docs/content/locales/hi-IN/extensions.mdx +113 -9
  1808. package/docs/content/locales/hi-IN/external-agents.mdx +119 -8
  1809. package/docs/content/locales/hi-IN/faq.mdx +96 -8
  1810. package/docs/content/locales/hi-IN/file-uploads.mdx +61 -4
  1811. package/docs/content/locales/hi-IN/frames.mdx +88 -8
  1812. package/docs/content/locales/hi-IN/getting-started.mdx +34 -4
  1813. package/docs/content/locales/hi-IN/harness-agents.mdx +77 -8
  1814. package/docs/content/locales/hi-IN/human-approval.mdx +51 -4
  1815. package/docs/content/locales/hi-IN/key-concepts.mdx +104 -8
  1816. package/docs/content/locales/hi-IN/local-file-mode.mdx +58 -4
  1817. package/docs/content/locales/hi-IN/mcp-apps.mdx +120 -10
  1818. package/docs/content/locales/hi-IN/mcp-clients.mdx +133 -8
  1819. package/docs/content/locales/hi-IN/mcp-protocol.mdx +105 -8
  1820. package/docs/content/locales/hi-IN/messaging.mdx +115 -8
  1821. package/docs/content/locales/hi-IN/migration-workbench.mdx +45 -4
  1822. package/docs/content/locales/hi-IN/multi-app-workspace.mdx +91 -8
  1823. package/docs/content/locales/hi-IN/multi-tenancy.mdx +80 -8
  1824. package/docs/content/locales/hi-IN/native-chat-ui.mdx +106 -8
  1825. package/docs/content/locales/hi-IN/notifications.mdx +135 -8
  1826. package/docs/content/locales/hi-IN/observability.mdx +102 -8
  1827. package/docs/content/locales/hi-IN/observational-memory.mdx +89 -8
  1828. package/docs/content/locales/hi-IN/onboarding.mdx +45 -4
  1829. package/docs/content/locales/hi-IN/plan-plugin.mdx +99 -8
  1830. package/docs/content/locales/hi-IN/pr-visual-recap.mdx +126 -8
  1831. package/docs/content/locales/hi-IN/processors.mdx +41 -4
  1832. package/docs/content/locales/hi-IN/progress.mdx +46 -4
  1833. package/docs/content/locales/hi-IN/pure-agent-apps.mdx +48 -4
  1834. package/docs/content/locales/hi-IN/real-time-collaboration.mdx +106 -8
  1835. package/docs/content/locales/hi-IN/recurring-jobs.mdx +59 -4
  1836. package/docs/content/locales/hi-IN/routing.mdx +44 -5
  1837. package/docs/content/locales/hi-IN/sandbox-adapters.mdx +43 -4
  1838. package/docs/content/locales/hi-IN/security.mdx +78 -8
  1839. package/docs/content/locales/hi-IN/server.mdx +169 -12
  1840. package/docs/content/locales/hi-IN/sharing.mdx +45 -4
  1841. package/docs/content/locales/hi-IN/skills-guide.mdx +118 -9
  1842. package/docs/content/locales/hi-IN/template-analytics.mdx +46 -4
  1843. package/docs/content/locales/hi-IN/template-assets.mdx +62 -4
  1844. package/docs/content/locales/hi-IN/template-brain.mdx +69 -4
  1845. package/docs/content/locales/hi-IN/template-calendar.mdx +62 -4
  1846. package/docs/content/locales/hi-IN/template-chat.mdx +59 -4
  1847. package/docs/content/locales/hi-IN/template-clips.mdx +52 -4
  1848. package/docs/content/locales/hi-IN/template-content.mdx +62 -4
  1849. package/docs/content/locales/hi-IN/template-design.mdx +102 -4
  1850. package/docs/content/locales/hi-IN/template-dispatch.mdx +57 -4
  1851. package/docs/content/locales/hi-IN/template-forms.mdx +64 -4
  1852. package/docs/content/locales/hi-IN/template-mail.mdx +64 -4
  1853. package/docs/content/locales/hi-IN/template-plan.mdx +61 -4
  1854. package/docs/content/locales/hi-IN/template-slides.mdx +49 -4
  1855. package/docs/content/locales/hi-IN/template-videos.mdx +53 -4
  1856. package/docs/content/locales/hi-IN/tracking.mdx +54 -4
  1857. package/docs/content/locales/hi-IN/using-your-agent.mdx +51 -4
  1858. package/docs/content/locales/hi-IN/voice-input.mdx +43 -4
  1859. package/docs/content/locales/hi-IN/what-is-agent-native.mdx +97 -8
  1860. package/docs/content/locales/hi-IN/workspace-connections.mdx +128 -8
  1861. package/docs/content/locales/hi-IN/workspace-management.mdx +50 -4
  1862. package/docs/content/locales/hi-IN/workspace.mdx +111 -8
  1863. package/docs/content/locales/hi-IN/writing-agent-instructions.mdx +40 -4
  1864. package/docs/content/locales/ja-JP/a2a-protocol.mdx +97 -9
  1865. package/docs/content/locales/ja-JP/actions.mdx +67 -4
  1866. package/docs/content/locales/ja-JP/agent-mentions.mdx +68 -4
  1867. package/docs/content/locales/ja-JP/agent-surfaces.mdx +116 -8
  1868. package/docs/content/locales/ja-JP/agent-teams.mdx +172 -12
  1869. package/docs/content/locales/ja-JP/agent-web-surfaces.mdx +51 -4
  1870. package/docs/content/locales/ja-JP/authentication.mdx +122 -8
  1871. package/docs/content/locales/ja-JP/automations.mdx +110 -8
  1872. package/docs/content/locales/ja-JP/blueprint-installer.mdx +44 -4
  1873. package/docs/content/locales/ja-JP/cli-adapters.mdx +44 -4
  1874. package/docs/content/locales/ja-JP/client.mdx +79 -8
  1875. package/docs/content/locales/ja-JP/cloneable-saas.mdx +85 -8
  1876. package/docs/content/locales/ja-JP/code-agents-ui.mdx +100 -8
  1877. package/docs/content/locales/ja-JP/components.mdx +116 -8
  1878. package/docs/content/locales/ja-JP/context-awareness.mdx +100 -8
  1879. package/docs/content/locales/ja-JP/creating-templates.mdx +51 -4
  1880. package/docs/content/locales/ja-JP/cross-app-sso.mdx +109 -8
  1881. package/docs/content/locales/ja-JP/database.mdx +52 -4
  1882. package/docs/content/locales/ja-JP/deployment.mdx +103 -8
  1883. package/docs/content/locales/ja-JP/dispatch.mdx +134 -8
  1884. package/docs/content/locales/ja-JP/drop-in-agent.mdx +63 -4
  1885. package/docs/content/locales/ja-JP/durable-resume.mdx +47 -4
  1886. package/docs/content/locales/ja-JP/embedding-sdk.mdx +85 -8
  1887. package/docs/content/locales/ja-JP/evals.mdx +102 -8
  1888. package/docs/content/locales/ja-JP/extensions.mdx +111 -9
  1889. package/docs/content/locales/ja-JP/external-agents.mdx +119 -8
  1890. package/docs/content/locales/ja-JP/faq.mdx +98 -8
  1891. package/docs/content/locales/ja-JP/file-uploads.mdx +61 -4
  1892. package/docs/content/locales/ja-JP/frames.mdx +88 -8
  1893. package/docs/content/locales/ja-JP/getting-started.mdx +34 -4
  1894. package/docs/content/locales/ja-JP/harness-agents.mdx +79 -8
  1895. package/docs/content/locales/ja-JP/human-approval.mdx +50 -4
  1896. package/docs/content/locales/ja-JP/key-concepts.mdx +105 -8
  1897. package/docs/content/locales/ja-JP/local-file-mode.mdx +58 -4
  1898. package/docs/content/locales/ja-JP/mcp-apps.mdx +119 -10
  1899. package/docs/content/locales/ja-JP/mcp-clients.mdx +134 -8
  1900. package/docs/content/locales/ja-JP/mcp-protocol.mdx +105 -8
  1901. package/docs/content/locales/ja-JP/messaging.mdx +115 -8
  1902. package/docs/content/locales/ja-JP/migration-workbench.mdx +47 -4
  1903. package/docs/content/locales/ja-JP/multi-app-workspace.mdx +91 -8
  1904. package/docs/content/locales/ja-JP/multi-tenancy.mdx +80 -8
  1905. package/docs/content/locales/ja-JP/native-chat-ui.mdx +104 -8
  1906. package/docs/content/locales/ja-JP/notifications.mdx +135 -8
  1907. package/docs/content/locales/ja-JP/observability.mdx +104 -8
  1908. package/docs/content/locales/ja-JP/observational-memory.mdx +89 -8
  1909. package/docs/content/locales/ja-JP/onboarding.mdx +45 -4
  1910. package/docs/content/locales/ja-JP/plan-plugin.mdx +99 -8
  1911. package/docs/content/locales/ja-JP/pr-visual-recap.mdx +123 -8
  1912. package/docs/content/locales/ja-JP/processors.mdx +39 -4
  1913. package/docs/content/locales/ja-JP/progress.mdx +46 -4
  1914. package/docs/content/locales/ja-JP/pure-agent-apps.mdx +48 -4
  1915. package/docs/content/locales/ja-JP/real-time-collaboration.mdx +106 -8
  1916. package/docs/content/locales/ja-JP/recurring-jobs.mdx +59 -4
  1917. package/docs/content/locales/ja-JP/routing.mdx +44 -5
  1918. package/docs/content/locales/ja-JP/sandbox-adapters.mdx +43 -4
  1919. package/docs/content/locales/ja-JP/security.mdx +82 -8
  1920. package/docs/content/locales/ja-JP/server.mdx +171 -12
  1921. package/docs/content/locales/ja-JP/sharing.mdx +45 -4
  1922. package/docs/content/locales/ja-JP/skills-guide.mdx +118 -9
  1923. package/docs/content/locales/ja-JP/template-analytics.mdx +46 -4
  1924. package/docs/content/locales/ja-JP/template-assets.mdx +64 -4
  1925. package/docs/content/locales/ja-JP/template-brain.mdx +67 -4
  1926. package/docs/content/locales/ja-JP/template-calendar.mdx +62 -4
  1927. package/docs/content/locales/ja-JP/template-chat.mdx +61 -4
  1928. package/docs/content/locales/ja-JP/template-clips.mdx +52 -4
  1929. package/docs/content/locales/ja-JP/template-content.mdx +62 -4
  1930. package/docs/content/locales/ja-JP/template-design.mdx +106 -4
  1931. package/docs/content/locales/ja-JP/template-dispatch.mdx +57 -4
  1932. package/docs/content/locales/ja-JP/template-forms.mdx +62 -4
  1933. package/docs/content/locales/ja-JP/template-mail.mdx +62 -4
  1934. package/docs/content/locales/ja-JP/template-plan.mdx +63 -4
  1935. package/docs/content/locales/ja-JP/template-slides.mdx +49 -4
  1936. package/docs/content/locales/ja-JP/template-videos.mdx +53 -4
  1937. package/docs/content/locales/ja-JP/tracking.mdx +54 -4
  1938. package/docs/content/locales/ja-JP/using-your-agent.mdx +51 -4
  1939. package/docs/content/locales/ja-JP/voice-input.mdx +43 -4
  1940. package/docs/content/locales/ja-JP/what-is-agent-native.mdx +96 -8
  1941. package/docs/content/locales/ja-JP/workspace-connections.mdx +128 -8
  1942. package/docs/content/locales/ja-JP/workspace-management.mdx +50 -4
  1943. package/docs/content/locales/ja-JP/workspace.mdx +111 -8
  1944. package/docs/content/locales/ja-JP/writing-agent-instructions.mdx +44 -4
  1945. package/docs/content/locales/ko-KR/a2a-protocol.mdx +97 -9
  1946. package/docs/content/locales/ko-KR/actions.mdx +63 -4
  1947. package/docs/content/locales/ko-KR/agent-mentions.mdx +68 -4
  1948. package/docs/content/locales/ko-KR/agent-surfaces.mdx +113 -8
  1949. package/docs/content/locales/ko-KR/agent-teams.mdx +171 -12
  1950. package/docs/content/locales/ko-KR/agent-web-surfaces.mdx +51 -4
  1951. package/docs/content/locales/ko-KR/authentication.mdx +122 -8
  1952. package/docs/content/locales/ko-KR/automations.mdx +110 -8
  1953. package/docs/content/locales/ko-KR/blueprint-installer.mdx +42 -4
  1954. package/docs/content/locales/ko-KR/cli-adapters.mdx +44 -4
  1955. package/docs/content/locales/ko-KR/client.mdx +79 -8
  1956. package/docs/content/locales/ko-KR/cloneable-saas.mdx +85 -8
  1957. package/docs/content/locales/ko-KR/code-agents-ui.mdx +96 -8
  1958. package/docs/content/locales/ko-KR/components.mdx +112 -8
  1959. package/docs/content/locales/ko-KR/context-awareness.mdx +96 -8
  1960. package/docs/content/locales/ko-KR/creating-templates.mdx +51 -4
  1961. package/docs/content/locales/ko-KR/cross-app-sso.mdx +109 -8
  1962. package/docs/content/locales/ko-KR/database.mdx +52 -4
  1963. package/docs/content/locales/ko-KR/deployment.mdx +103 -8
  1964. package/docs/content/locales/ko-KR/dispatch.mdx +132 -8
  1965. package/docs/content/locales/ko-KR/drop-in-agent.mdx +63 -4
  1966. package/docs/content/locales/ko-KR/durable-resume.mdx +47 -4
  1967. package/docs/content/locales/ko-KR/embedding-sdk.mdx +81 -8
  1968. package/docs/content/locales/ko-KR/evals.mdx +102 -8
  1969. package/docs/content/locales/ko-KR/extensions.mdx +111 -9
  1970. package/docs/content/locales/ko-KR/external-agents.mdx +119 -8
  1971. package/docs/content/locales/ko-KR/faq.mdx +96 -8
  1972. package/docs/content/locales/ko-KR/file-uploads.mdx +61 -4
  1973. package/docs/content/locales/ko-KR/frames.mdx +86 -8
  1974. package/docs/content/locales/ko-KR/getting-started.mdx +34 -4
  1975. package/docs/content/locales/ko-KR/harness-agents.mdx +77 -8
  1976. package/docs/content/locales/ko-KR/human-approval.mdx +50 -4
  1977. package/docs/content/locales/ko-KR/key-concepts.mdx +104 -8
  1978. package/docs/content/locales/ko-KR/local-file-mode.mdx +56 -4
  1979. package/docs/content/locales/ko-KR/mcp-apps.mdx +120 -10
  1980. package/docs/content/locales/ko-KR/mcp-clients.mdx +133 -8
  1981. package/docs/content/locales/ko-KR/mcp-protocol.mdx +105 -8
  1982. package/docs/content/locales/ko-KR/messaging.mdx +115 -8
  1983. package/docs/content/locales/ko-KR/migration-workbench.mdx +45 -4
  1984. package/docs/content/locales/ko-KR/multi-app-workspace.mdx +91 -8
  1985. package/docs/content/locales/ko-KR/multi-tenancy.mdx +80 -8
  1986. package/docs/content/locales/ko-KR/native-chat-ui.mdx +104 -8
  1987. package/docs/content/locales/ko-KR/notifications.mdx +135 -8
  1988. package/docs/content/locales/ko-KR/observability.mdx +102 -8
  1989. package/docs/content/locales/ko-KR/observational-memory.mdx +87 -8
  1990. package/docs/content/locales/ko-KR/onboarding.mdx +44 -4
  1991. package/docs/content/locales/ko-KR/plan-plugin.mdx +99 -8
  1992. package/docs/content/locales/ko-KR/pr-visual-recap.mdx +125 -8
  1993. package/docs/content/locales/ko-KR/processors.mdx +39 -4
  1994. package/docs/content/locales/ko-KR/progress.mdx +46 -4
  1995. package/docs/content/locales/ko-KR/pure-agent-apps.mdx +46 -4
  1996. package/docs/content/locales/ko-KR/real-time-collaboration.mdx +104 -8
  1997. package/docs/content/locales/ko-KR/recurring-jobs.mdx +59 -4
  1998. package/docs/content/locales/ko-KR/routing.mdx +44 -5
  1999. package/docs/content/locales/ko-KR/sandbox-adapters.mdx +41 -4
  2000. package/docs/content/locales/ko-KR/security.mdx +78 -8
  2001. package/docs/content/locales/ko-KR/server.mdx +171 -12
  2002. package/docs/content/locales/ko-KR/sharing.mdx +45 -4
  2003. package/docs/content/locales/ko-KR/skills-guide.mdx +118 -9
  2004. package/docs/content/locales/ko-KR/template-analytics.mdx +46 -4
  2005. package/docs/content/locales/ko-KR/template-assets.mdx +62 -4
  2006. package/docs/content/locales/ko-KR/template-brain.mdx +65 -4
  2007. package/docs/content/locales/ko-KR/template-calendar.mdx +60 -4
  2008. package/docs/content/locales/ko-KR/template-chat.mdx +59 -4
  2009. package/docs/content/locales/ko-KR/template-clips.mdx +52 -4
  2010. package/docs/content/locales/ko-KR/template-content.mdx +60 -4
  2011. package/docs/content/locales/ko-KR/template-design.mdx +102 -4
  2012. package/docs/content/locales/ko-KR/template-dispatch.mdx +57 -4
  2013. package/docs/content/locales/ko-KR/template-forms.mdx +60 -4
  2014. package/docs/content/locales/ko-KR/template-mail.mdx +60 -4
  2015. package/docs/content/locales/ko-KR/template-plan.mdx +57 -4
  2016. package/docs/content/locales/ko-KR/template-slides.mdx +49 -4
  2017. package/docs/content/locales/ko-KR/template-videos.mdx +53 -4
  2018. package/docs/content/locales/ko-KR/tracking.mdx +54 -4
  2019. package/docs/content/locales/ko-KR/using-your-agent.mdx +51 -4
  2020. package/docs/content/locales/ko-KR/voice-input.mdx +43 -4
  2021. package/docs/content/locales/ko-KR/what-is-agent-native.mdx +95 -8
  2022. package/docs/content/locales/ko-KR/workspace-connections.mdx +128 -8
  2023. package/docs/content/locales/ko-KR/workspace-management.mdx +50 -4
  2024. package/docs/content/locales/ko-KR/workspace.mdx +111 -8
  2025. package/docs/content/locales/ko-KR/writing-agent-instructions.mdx +38 -4
  2026. package/docs/content/locales/pt-BR/a2a-protocol.mdx +99 -9
  2027. package/docs/content/locales/pt-BR/actions.mdx +67 -4
  2028. package/docs/content/locales/pt-BR/agent-mentions.mdx +68 -4
  2029. package/docs/content/locales/pt-BR/agent-surfaces.mdx +116 -8
  2030. package/docs/content/locales/pt-BR/agent-teams.mdx +172 -12
  2031. package/docs/content/locales/pt-BR/agent-web-surfaces.mdx +51 -4
  2032. package/docs/content/locales/pt-BR/authentication.mdx +122 -8
  2033. package/docs/content/locales/pt-BR/automations.mdx +110 -8
  2034. package/docs/content/locales/pt-BR/blueprint-installer.mdx +42 -4
  2035. package/docs/content/locales/pt-BR/cli-adapters.mdx +44 -4
  2036. package/docs/content/locales/pt-BR/client.mdx +81 -8
  2037. package/docs/content/locales/pt-BR/cloneable-saas.mdx +85 -8
  2038. package/docs/content/locales/pt-BR/code-agents-ui.mdx +98 -8
  2039. package/docs/content/locales/pt-BR/components.mdx +118 -8
  2040. package/docs/content/locales/pt-BR/context-awareness.mdx +100 -8
  2041. package/docs/content/locales/pt-BR/creating-templates.mdx +51 -4
  2042. package/docs/content/locales/pt-BR/cross-app-sso.mdx +109 -8
  2043. package/docs/content/locales/pt-BR/database.mdx +52 -4
  2044. package/docs/content/locales/pt-BR/deployment.mdx +103 -8
  2045. package/docs/content/locales/pt-BR/dispatch.mdx +134 -8
  2046. package/docs/content/locales/pt-BR/drop-in-agent.mdx +63 -4
  2047. package/docs/content/locales/pt-BR/durable-resume.mdx +47 -4
  2048. package/docs/content/locales/pt-BR/embedding-sdk.mdx +87 -8
  2049. package/docs/content/locales/pt-BR/evals.mdx +102 -8
  2050. package/docs/content/locales/pt-BR/extensions.mdx +113 -9
  2051. package/docs/content/locales/pt-BR/external-agents.mdx +119 -8
  2052. package/docs/content/locales/pt-BR/faq.mdx +98 -8
  2053. package/docs/content/locales/pt-BR/file-uploads.mdx +61 -4
  2054. package/docs/content/locales/pt-BR/frames.mdx +88 -8
  2055. package/docs/content/locales/pt-BR/getting-started.mdx +34 -4
  2056. package/docs/content/locales/pt-BR/harness-agents.mdx +79 -8
  2057. package/docs/content/locales/pt-BR/human-approval.mdx +50 -4
  2058. package/docs/content/locales/pt-BR/key-concepts.mdx +104 -8
  2059. package/docs/content/locales/pt-BR/local-file-mode.mdx +60 -4
  2060. package/docs/content/locales/pt-BR/mcp-apps.mdx +120 -10
  2061. package/docs/content/locales/pt-BR/mcp-clients.mdx +133 -8
  2062. package/docs/content/locales/pt-BR/mcp-protocol.mdx +105 -8
  2063. package/docs/content/locales/pt-BR/messaging.mdx +115 -8
  2064. package/docs/content/locales/pt-BR/migration-workbench.mdx +47 -4
  2065. package/docs/content/locales/pt-BR/multi-app-workspace.mdx +91 -8
  2066. package/docs/content/locales/pt-BR/multi-tenancy.mdx +80 -8
  2067. package/docs/content/locales/pt-BR/native-chat-ui.mdx +108 -8
  2068. package/docs/content/locales/pt-BR/notifications.mdx +135 -8
  2069. package/docs/content/locales/pt-BR/observability.mdx +104 -8
  2070. package/docs/content/locales/pt-BR/observational-memory.mdx +92 -8
  2071. package/docs/content/locales/pt-BR/onboarding.mdx +45 -4
  2072. package/docs/content/locales/pt-BR/plan-plugin.mdx +99 -8
  2073. package/docs/content/locales/pt-BR/pr-visual-recap.mdx +125 -8
  2074. package/docs/content/locales/pt-BR/processors.mdx +41 -4
  2075. package/docs/content/locales/pt-BR/progress.mdx +46 -4
  2076. package/docs/content/locales/pt-BR/pure-agent-apps.mdx +48 -4
  2077. package/docs/content/locales/pt-BR/real-time-collaboration.mdx +107 -8
  2078. package/docs/content/locales/pt-BR/recurring-jobs.mdx +59 -4
  2079. package/docs/content/locales/pt-BR/routing.mdx +44 -5
  2080. package/docs/content/locales/pt-BR/sandbox-adapters.mdx +43 -4
  2081. package/docs/content/locales/pt-BR/security.mdx +82 -8
  2082. package/docs/content/locales/pt-BR/server.mdx +173 -12
  2083. package/docs/content/locales/pt-BR/sharing.mdx +45 -4
  2084. package/docs/content/locales/pt-BR/skills-guide.mdx +118 -9
  2085. package/docs/content/locales/pt-BR/template-analytics.mdx +46 -4
  2086. package/docs/content/locales/pt-BR/template-assets.mdx +64 -4
  2087. package/docs/content/locales/pt-BR/template-brain.mdx +69 -4
  2088. package/docs/content/locales/pt-BR/template-calendar.mdx +62 -4
  2089. package/docs/content/locales/pt-BR/template-chat.mdx +61 -4
  2090. package/docs/content/locales/pt-BR/template-clips.mdx +52 -4
  2091. package/docs/content/locales/pt-BR/template-content.mdx +64 -4
  2092. package/docs/content/locales/pt-BR/template-design.mdx +106 -4
  2093. package/docs/content/locales/pt-BR/template-dispatch.mdx +57 -4
  2094. package/docs/content/locales/pt-BR/template-forms.mdx +64 -4
  2095. package/docs/content/locales/pt-BR/template-mail.mdx +60 -4
  2096. package/docs/content/locales/pt-BR/template-plan.mdx +63 -4
  2097. package/docs/content/locales/pt-BR/template-slides.mdx +49 -4
  2098. package/docs/content/locales/pt-BR/template-videos.mdx +53 -4
  2099. package/docs/content/locales/pt-BR/tracking.mdx +54 -4
  2100. package/docs/content/locales/pt-BR/using-your-agent.mdx +51 -4
  2101. package/docs/content/locales/pt-BR/voice-input.mdx +43 -4
  2102. package/docs/content/locales/pt-BR/what-is-agent-native.mdx +101 -8
  2103. package/docs/content/locales/pt-BR/workspace-connections.mdx +128 -8
  2104. package/docs/content/locales/pt-BR/workspace-management.mdx +50 -4
  2105. package/docs/content/locales/pt-BR/workspace.mdx +111 -8
  2106. package/docs/content/locales/pt-BR/writing-agent-instructions.mdx +46 -4
  2107. package/docs/content/locales/zh-CN/a2a-protocol.mdx +97 -9
  2108. package/docs/content/locales/zh-CN/actions.mdx +65 -4
  2109. package/docs/content/locales/zh-CN/agent-mentions.mdx +68 -4
  2110. package/docs/content/locales/zh-CN/agent-surfaces.mdx +108 -8
  2111. package/docs/content/locales/zh-CN/agent-teams.mdx +171 -12
  2112. package/docs/content/locales/zh-CN/agent-web-surfaces.mdx +51 -4
  2113. package/docs/content/locales/zh-CN/authentication.mdx +122 -8
  2114. package/docs/content/locales/zh-CN/automations.mdx +110 -8
  2115. package/docs/content/locales/zh-CN/blueprint-installer.mdx +42 -4
  2116. package/docs/content/locales/zh-CN/cli-adapters.mdx +44 -4
  2117. package/docs/content/locales/zh-CN/client.mdx +79 -8
  2118. package/docs/content/locales/zh-CN/cloneable-saas.mdx +83 -8
  2119. package/docs/content/locales/zh-CN/code-agents-ui.mdx +94 -8
  2120. package/docs/content/locales/zh-CN/components.mdx +112 -8
  2121. package/docs/content/locales/zh-CN/context-awareness.mdx +96 -8
  2122. package/docs/content/locales/zh-CN/creating-templates.mdx +51 -4
  2123. package/docs/content/locales/zh-CN/cross-app-sso.mdx +107 -8
  2124. package/docs/content/locales/zh-CN/database.mdx +52 -4
  2125. package/docs/content/locales/zh-CN/deployment.mdx +103 -8
  2126. package/docs/content/locales/zh-CN/dispatch.mdx +134 -8
  2127. package/docs/content/locales/zh-CN/drop-in-agent.mdx +63 -4
  2128. package/docs/content/locales/zh-CN/durable-resume.mdx +45 -4
  2129. package/docs/content/locales/zh-CN/embedding-sdk.mdx +81 -8
  2130. package/docs/content/locales/zh-CN/evals.mdx +100 -8
  2131. package/docs/content/locales/zh-CN/extensions.mdx +111 -9
  2132. package/docs/content/locales/zh-CN/external-agents.mdx +119 -8
  2133. package/docs/content/locales/zh-CN/faq.mdx +96 -8
  2134. package/docs/content/locales/zh-CN/file-uploads.mdx +61 -4
  2135. package/docs/content/locales/zh-CN/frames.mdx +86 -8
  2136. package/docs/content/locales/zh-CN/getting-started.mdx +34 -4
  2137. package/docs/content/locales/zh-CN/harness-agents.mdx +79 -8
  2138. package/docs/content/locales/zh-CN/human-approval.mdx +50 -4
  2139. package/docs/content/locales/zh-CN/key-concepts.mdx +100 -8
  2140. package/docs/content/locales/zh-CN/local-file-mode.mdx +56 -4
  2141. package/docs/content/locales/zh-CN/mcp-apps.mdx +120 -10
  2142. package/docs/content/locales/zh-CN/mcp-clients.mdx +133 -8
  2143. package/docs/content/locales/zh-CN/mcp-protocol.mdx +105 -8
  2144. package/docs/content/locales/zh-CN/messaging.mdx +115 -8
  2145. package/docs/content/locales/zh-CN/migration-workbench.mdx +45 -4
  2146. package/docs/content/locales/zh-CN/multi-app-workspace.mdx +91 -8
  2147. package/docs/content/locales/zh-CN/multi-tenancy.mdx +80 -8
  2148. package/docs/content/locales/zh-CN/native-chat-ui.mdx +104 -8
  2149. package/docs/content/locales/zh-CN/notifications.mdx +135 -8
  2150. package/docs/content/locales/zh-CN/observability.mdx +102 -8
  2151. package/docs/content/locales/zh-CN/observational-memory.mdx +85 -8
  2152. package/docs/content/locales/zh-CN/onboarding.mdx +44 -4
  2153. package/docs/content/locales/zh-CN/plan-plugin.mdx +97 -8
  2154. package/docs/content/locales/zh-CN/pr-visual-recap.mdx +123 -8
  2155. package/docs/content/locales/zh-CN/processors.mdx +39 -4
  2156. package/docs/content/locales/zh-CN/progress.mdx +46 -4
  2157. package/docs/content/locales/zh-CN/pure-agent-apps.mdx +46 -4
  2158. package/docs/content/locales/zh-CN/real-time-collaboration.mdx +98 -8
  2159. package/docs/content/locales/zh-CN/recurring-jobs.mdx +59 -4
  2160. package/docs/content/locales/zh-CN/routing.mdx +42 -5
  2161. package/docs/content/locales/zh-CN/sandbox-adapters.mdx +41 -4
  2162. package/docs/content/locales/zh-CN/security.mdx +78 -8
  2163. package/docs/content/locales/zh-CN/server.mdx +169 -12
  2164. package/docs/content/locales/zh-CN/sharing.mdx +45 -4
  2165. package/docs/content/locales/zh-CN/skills-guide.mdx +118 -9
  2166. package/docs/content/locales/zh-CN/template-analytics.mdx +46 -4
  2167. package/docs/content/locales/zh-CN/template-assets.mdx +58 -4
  2168. package/docs/content/locales/zh-CN/template-brain.mdx +65 -4
  2169. package/docs/content/locales/zh-CN/template-calendar.mdx +58 -4
  2170. package/docs/content/locales/zh-CN/template-chat.mdx +57 -4
  2171. package/docs/content/locales/zh-CN/template-clips.mdx +52 -4
  2172. package/docs/content/locales/zh-CN/template-content.mdx +58 -4
  2173. package/docs/content/locales/zh-CN/template-design.mdx +94 -4
  2174. package/docs/content/locales/zh-CN/template-dispatch.mdx +57 -4
  2175. package/docs/content/locales/zh-CN/template-forms.mdx +58 -4
  2176. package/docs/content/locales/zh-CN/template-mail.mdx +60 -4
  2177. package/docs/content/locales/zh-CN/template-plan.mdx +57 -4
  2178. package/docs/content/locales/zh-CN/template-slides.mdx +49 -4
  2179. package/docs/content/locales/zh-CN/template-videos.mdx +51 -4
  2180. package/docs/content/locales/zh-CN/tracking.mdx +54 -4
  2181. package/docs/content/locales/zh-CN/using-your-agent.mdx +51 -4
  2182. package/docs/content/locales/zh-CN/voice-input.mdx +43 -4
  2183. package/docs/content/locales/zh-CN/what-is-agent-native.mdx +94 -8
  2184. package/docs/content/locales/zh-CN/workspace-connections.mdx +126 -8
  2185. package/docs/content/locales/zh-CN/workspace-management.mdx +50 -4
  2186. package/docs/content/locales/zh-CN/workspace.mdx +110 -8
  2187. package/docs/content/locales/zh-CN/writing-agent-instructions.mdx +38 -4
  2188. package/docs/content/locales/zh-TW/a2a-protocol.mdx +97 -9
  2189. package/docs/content/locales/zh-TW/actions.mdx +63 -4
  2190. package/docs/content/locales/zh-TW/agent-mentions.mdx +68 -4
  2191. package/docs/content/locales/zh-TW/agent-surfaces.mdx +108 -8
  2192. package/docs/content/locales/zh-TW/agent-teams.mdx +171 -12
  2193. package/docs/content/locales/zh-TW/agent-web-surfaces.mdx +51 -4
  2194. package/docs/content/locales/zh-TW/authentication.mdx +122 -8
  2195. package/docs/content/locales/zh-TW/automations.mdx +110 -8
  2196. package/docs/content/locales/zh-TW/blueprint-installer.mdx +42 -4
  2197. package/docs/content/locales/zh-TW/cli-adapters.mdx +44 -4
  2198. package/docs/content/locales/zh-TW/client.mdx +79 -8
  2199. package/docs/content/locales/zh-TW/cloneable-saas.mdx +83 -8
  2200. package/docs/content/locales/zh-TW/code-agents-ui.mdx +94 -8
  2201. package/docs/content/locales/zh-TW/components.mdx +112 -8
  2202. package/docs/content/locales/zh-TW/context-awareness.mdx +96 -8
  2203. package/docs/content/locales/zh-TW/creating-templates.mdx +51 -4
  2204. package/docs/content/locales/zh-TW/cross-app-sso.mdx +107 -8
  2205. package/docs/content/locales/zh-TW/database.mdx +52 -4
  2206. package/docs/content/locales/zh-TW/deployment.mdx +103 -8
  2207. package/docs/content/locales/zh-TW/dispatch.mdx +134 -8
  2208. package/docs/content/locales/zh-TW/drop-in-agent.mdx +63 -4
  2209. package/docs/content/locales/zh-TW/durable-background-runs.mdx +88 -8
  2210. package/docs/content/locales/zh-TW/durable-resume.mdx +45 -4
  2211. package/docs/content/locales/zh-TW/embedding-sdk.mdx +83 -8
  2212. package/docs/content/locales/zh-TW/evals.mdx +100 -8
  2213. package/docs/content/locales/zh-TW/extensions.mdx +111 -9
  2214. package/docs/content/locales/zh-TW/external-agents.mdx +119 -8
  2215. package/docs/content/locales/zh-TW/faq.mdx +96 -8
  2216. package/docs/content/locales/zh-TW/file-uploads.mdx +61 -4
  2217. package/docs/content/locales/zh-TW/frames.mdx +86 -8
  2218. package/docs/content/locales/zh-TW/getting-started.mdx +34 -4
  2219. package/docs/content/locales/zh-TW/harness-agents.mdx +79 -8
  2220. package/docs/content/locales/zh-TW/human-approval.mdx +50 -4
  2221. package/docs/content/locales/zh-TW/key-concepts.mdx +100 -8
  2222. package/docs/content/locales/zh-TW/local-file-mode.mdx +56 -4
  2223. package/docs/content/locales/zh-TW/mcp-apps.mdx +120 -10
  2224. package/docs/content/locales/zh-TW/mcp-clients.mdx +133 -8
  2225. package/docs/content/locales/zh-TW/mcp-protocol.mdx +105 -8
  2226. package/docs/content/locales/zh-TW/messaging.mdx +115 -8
  2227. package/docs/content/locales/zh-TW/migration-workbench.mdx +45 -4
  2228. package/docs/content/locales/zh-TW/multi-app-workspace.mdx +91 -8
  2229. package/docs/content/locales/zh-TW/multi-tenancy.mdx +80 -8
  2230. package/docs/content/locales/zh-TW/native-chat-ui.mdx +104 -8
  2231. package/docs/content/locales/zh-TW/notifications.mdx +135 -8
  2232. package/docs/content/locales/zh-TW/observability.mdx +102 -8
  2233. package/docs/content/locales/zh-TW/observational-memory.mdx +85 -8
  2234. package/docs/content/locales/zh-TW/onboarding.mdx +44 -4
  2235. package/docs/content/locales/zh-TW/plan-plugin.mdx +97 -8
  2236. package/docs/content/locales/zh-TW/pr-visual-recap.mdx +123 -8
  2237. package/docs/content/locales/zh-TW/processors.mdx +39 -4
  2238. package/docs/content/locales/zh-TW/progress.mdx +46 -4
  2239. package/docs/content/locales/zh-TW/pure-agent-apps.mdx +46 -4
  2240. package/docs/content/locales/zh-TW/real-time-collaboration.mdx +98 -8
  2241. package/docs/content/locales/zh-TW/recurring-jobs.mdx +59 -4
  2242. package/docs/content/locales/zh-TW/routing.mdx +42 -5
  2243. package/docs/content/locales/zh-TW/sandbox-adapters.mdx +41 -4
  2244. package/docs/content/locales/zh-TW/security.mdx +80 -8
  2245. package/docs/content/locales/zh-TW/server.mdx +169 -12
  2246. package/docs/content/locales/zh-TW/sharing.mdx +45 -4
  2247. package/docs/content/locales/zh-TW/skills-guide.mdx +118 -9
  2248. package/docs/content/locales/zh-TW/template-analytics.mdx +46 -4
  2249. package/docs/content/locales/zh-TW/template-assets.mdx +58 -4
  2250. package/docs/content/locales/zh-TW/template-brain.mdx +65 -4
  2251. package/docs/content/locales/zh-TW/template-calendar.mdx +58 -4
  2252. package/docs/content/locales/zh-TW/template-chat.mdx +59 -4
  2253. package/docs/content/locales/zh-TW/template-clips.mdx +52 -4
  2254. package/docs/content/locales/zh-TW/template-content.mdx +58 -4
  2255. package/docs/content/locales/zh-TW/template-design.mdx +96 -4
  2256. package/docs/content/locales/zh-TW/template-dispatch.mdx +57 -4
  2257. package/docs/content/locales/zh-TW/template-forms.mdx +58 -4
  2258. package/docs/content/locales/zh-TW/template-mail.mdx +60 -4
  2259. package/docs/content/locales/zh-TW/template-plan.mdx +57 -4
  2260. package/docs/content/locales/zh-TW/template-slides.mdx +49 -4
  2261. package/docs/content/locales/zh-TW/template-videos.mdx +51 -4
  2262. package/docs/content/locales/zh-TW/tracking.mdx +54 -4
  2263. package/docs/content/locales/zh-TW/using-your-agent.mdx +51 -4
  2264. package/docs/content/locales/zh-TW/voice-input.mdx +43 -4
  2265. package/docs/content/locales/zh-TW/what-is-agent-native.mdx +94 -8
  2266. package/docs/content/locales/zh-TW/workspace-connections.mdx +126 -8
  2267. package/docs/content/locales/zh-TW/workspace-management.mdx +50 -4
  2268. package/docs/content/locales/zh-TW/workspace.mdx +111 -8
  2269. package/docs/content/locales/zh-TW/writing-agent-instructions.mdx +38 -4
  2270. package/docs/content/mcp-apps.mdx +120 -10
  2271. package/docs/content/mcp-clients.mdx +161 -8
  2272. package/docs/content/mcp-protocol.mdx +105 -8
  2273. package/docs/content/messaging.mdx +115 -8
  2274. package/docs/content/migration-workbench.mdx +45 -4
  2275. package/docs/content/multi-app-workspace.mdx +91 -8
  2276. package/docs/content/multi-tenancy.mdx +80 -8
  2277. package/docs/content/native-chat-ui.mdx +106 -8
  2278. package/docs/content/notifications.mdx +135 -8
  2279. package/docs/content/observability.mdx +102 -8
  2280. package/docs/content/observational-memory.mdx +89 -8
  2281. package/docs/content/onboarding.mdx +45 -4
  2282. package/docs/content/plan-plugin.mdx +99 -8
  2283. package/docs/content/pr-visual-recap.mdx +125 -8
  2284. package/docs/content/processors.mdx +41 -4
  2285. package/docs/content/progress.mdx +46 -4
  2286. package/docs/content/pure-agent-apps.mdx +46 -4
  2287. package/docs/content/real-time-collaboration.mdx +104 -8
  2288. package/docs/content/recurring-jobs.mdx +59 -4
  2289. package/docs/content/routing.mdx +44 -5
  2290. package/docs/content/sandbox-adapters.mdx +43 -4
  2291. package/docs/content/security.mdx +80 -8
  2292. package/docs/content/server.mdx +173 -12
  2293. package/docs/content/sharing.mdx +45 -4
  2294. package/docs/content/skills-guide.mdx +118 -9
  2295. package/docs/content/template-analytics.mdx +46 -4
  2296. package/docs/content/template-assets.mdx +60 -4
  2297. package/docs/content/template-brain.mdx +67 -4
  2298. package/docs/content/template-calendar.mdx +62 -4
  2299. package/docs/content/template-chat.mdx +61 -4
  2300. package/docs/content/template-clips.mdx +52 -4
  2301. package/docs/content/template-content.mdx +60 -4
  2302. package/docs/content/template-design.mdx +103 -4
  2303. package/docs/content/template-dispatch.mdx +57 -4
  2304. package/docs/content/template-forms.mdx +62 -4
  2305. package/docs/content/template-mail.mdx +60 -4
  2306. package/docs/content/template-plan.mdx +61 -4
  2307. package/docs/content/template-slides.mdx +49 -4
  2308. package/docs/content/template-videos.mdx +51 -4
  2309. package/docs/content/tracking.mdx +54 -4
  2310. package/docs/content/using-your-agent.mdx +51 -4
  2311. package/docs/content/voice-input.mdx +43 -4
  2312. package/docs/content/what-is-agent-native.mdx +188 -8
  2313. package/docs/content/workspace-connections.mdx +128 -8
  2314. package/docs/content/workspace-management.mdx +50 -4
  2315. package/docs/content/workspace.mdx +111 -8
  2316. package/docs/content/writing-agent-instructions.mdx +45 -4
  2317. package/package.json +2 -1
  2318. package/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +10 -0
  2319. package/corpus/templates/design/app/components/design/DesignToolbar.tsx +0 -339
  2320. package/corpus/templates/design/app/components/design/PresentMode.tsx +0 -68
  2321. package/corpus/templates/design/app/components/design/ViewportTabs.tsx +0 -149
  2322. package/corpus/templates/design/app/components/design/ZoomControls.tsx +0 -157
@@ -1 +1 @@
1
- {"version":3,"file":"MermaidBlock.js","sourceRoot":"","sources":["../../../../src/client/blocks/library/MermaidBlock.tsx"],"names":[],"mappings":"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","sourcesContent":["import { IconArrowsMaximize } from \"@tabler/icons-react\";\nimport { useEffect, useId, useMemo, useState } from \"react\";\n\nimport { ltrCodeBlockProps } from \"../code-block-direction.js\";\nimport type { BlockEditProps, BlockReadProps } from \"../types.js\";\nimport { useBlockCopy } from \"./block-copy.js\";\nimport { DevInput, DevLabel } from \"./dev-doc-ui.js\";\nimport { DiagramLightbox } from \"./diagram.js\";\nimport type { MermaidData } from \"./mermaid.config.js\";\n\n/**\n * Read + Edit renderers for a `mermaid` block — a Mermaid diagram definition\n * (flowchart, sequence, etc.) edited as raw text and rendered as an\n * Excalidraw-style SVG so it matches the plan's hand-drawn / sketchy house\n * style.\n * Lives in core so any app can register the dev-doc block; it stays app-agnostic\n * (no shadcn / next-themes import).\n *\n * The Mermaid and Excalidraw runtimes are browser-only,\n * so the Read renderer SSR-guards: it renders a lightweight placeholder until a\n * `useEffect` confirms it is mounted, then dynamically imports\n * `@excalidraw/mermaid-to-excalidraw` + `@excalidraw/excalidraw` and injects\n * the exported SVG. If Excalidraw conversion fails, it falls back to Mermaid's\n * hand-drawn renderer. Parse errors never throw; they show the raw source and\n * the error message.\n *\n * Dark mode: the plan editor toggles a `.dark` class on <html>. The Read renderer\n * reads `document.documentElement.classList.contains(\"dark\")` (re-checking on a\n * `MutationObserver` of the html class) and re-renders the diagram with matching\n * light/dark export settings.\n */\n\ninterface MermaidRenderState {\n svg?: string;\n error?: string;\n}\n\nfunction errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : \"Failed to render diagram\";\n}\n\nfunction sanitizeSvgMarkup(svg: string): string {\n if (typeof DOMParser === \"undefined\") return svg;\n const doc = new DOMParser().parseFromString(svg, \"image/svg+xml\");\n doc\n .querySelectorAll(\"script, foreignObject\")\n .forEach((node) => node.remove());\n for (const element of Array.from(doc.querySelectorAll(\"*\"))) {\n for (const attr of Array.from(element.attributes)) {\n const name = attr.name.toLowerCase();\n const value = attr.value.trim().toLowerCase();\n if (\n name.startsWith(\"on\") ||\n ((name === \"href\" || name.endsWith(\":href\")) &&\n value.startsWith(\"javascript:\"))\n ) {\n element.removeAttribute(attr.name);\n }\n }\n }\n return doc.documentElement.outerHTML;\n}\n\nasync function renderExcalidrawSvg(\n source: string,\n isDark: boolean,\n): Promise<string> {\n const [{ parseMermaidToExcalidraw }, excalidraw] = await Promise.all([\n import(\"@excalidraw/mermaid-to-excalidraw\") as Promise<{\n parseMermaidToExcalidraw: (source: string) => Promise<{\n elements: unknown[];\n files?: Record<string, unknown>;\n }>;\n }>,\n import(\"@excalidraw/excalidraw\") as Promise<{\n convertToExcalidrawElements: (elements: unknown[]) => unknown[];\n exportToSvg: (options: {\n elements: unknown[];\n appState: {\n theme: \"dark\" | \"light\";\n viewBackgroundColor: string;\n exportWithDarkMode: boolean;\n };\n files: Record<string, unknown>;\n }) => Promise<{ outerHTML: string }>;\n }>,\n ]);\n const { elements, files } = await parseMermaidToExcalidraw(source);\n const excalidrawElements = excalidraw.convertToExcalidrawElements(elements);\n const svg = await excalidraw.exportToSvg({\n elements: excalidrawElements,\n appState: {\n theme: isDark ? \"dark\" : \"light\",\n viewBackgroundColor: \"transparent\",\n exportWithDarkMode: isDark,\n },\n files: files ?? {},\n });\n return sanitizeSvgMarkup(svg.outerHTML);\n}\n\nasync function renderMermaidSvg(\n source: string,\n id: string,\n isDark: boolean,\n): Promise<string> {\n const mermaid = (\n (await import(\"mermaid\")) as {\n default: {\n initialize: (config: Record<string, unknown>) => void;\n render: (id: string, source: string) => Promise<{ svg: string }>;\n };\n }\n ).default;\n mermaid.initialize({\n startOnLoad: false,\n securityLevel: \"strict\",\n look: \"handDrawn\",\n theme: isDark ? \"dark\" : \"neutral\",\n });\n const { svg } = await mermaid.render(id, source);\n return sanitizeSvgMarkup(svg);\n}\n\n/** Read the live dark-mode flag from the document root (next-themes-free). */\nfunction useIsDark(): boolean {\n const [isDark, setIsDark] = useState(false);\n useEffect(() => {\n if (typeof document === \"undefined\") return;\n const root = document.documentElement;\n const read = () => setIsDark(root.classList.contains(\"dark\"));\n read();\n const observer = new MutationObserver(read);\n observer.observe(root, { attributes: true, attributeFilter: [\"class\"] });\n return () => observer.disconnect();\n }, []);\n return isDark;\n}\n\n/**\n * Inject a rendered Mermaid/Excalidraw SVG string. Shared by the inline render\n * and the expand lightbox so the enlarged view shows the exact same SVG; the\n * lightbox passes `enlarged` so the SVG stretches to fill the wider modal\n * (`max-w-5xl`) instead of staying at its intrinsic inline size.\n */\nfunction MermaidSvg({ svg, enlarged }: { svg: string; enlarged?: boolean }) {\n return (\n <div\n className={\n enlarged\n ? \"flex justify-center overflow-auto [&_svg]:h-auto [&_svg]:w-full [&_svg]:max-w-full\"\n : \"mt-2 flex justify-center overflow-auto [&_svg]:h-auto [&_svg]:max-w-full\"\n }\n // Excalidraw and Mermaid output are sanitized before injection.\n dangerouslySetInnerHTML={{ __html: svg }}\n />\n );\n}\n\nfunction MermaidDiagram({\n source,\n idSeed,\n}: {\n source: string;\n idSeed: string;\n}) {\n const isDark = useIsDark();\n const copy = useBlockCopy();\n // Only render the diagram after mount: `mermaid` is client-only and SSR has no\n // DOM for it to measure against.\n const [mounted, setMounted] = useState(false);\n const [state, setState] = useState<MermaidRenderState>({});\n const [expanded, setExpanded] = useState(false);\n\n // A DOM-id-safe, stable-per-block render id. Mermaid requires a valid CSS id.\n const renderId = useMemo(\n () => `mermaid-${idSeed.replace(/[^a-zA-Z0-9_-]/g, \"-\")}`,\n [idSeed],\n );\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n useEffect(() => {\n if (!mounted) return;\n let cancelled = false;\n const trimmed = source.trim();\n if (!trimmed) {\n setState({});\n return;\n }\n (async () => {\n try {\n const svg = await renderExcalidrawSvg(trimmed, isDark);\n if (!cancelled) setState({ svg });\n } catch (excalidrawError) {\n try {\n // Fallback keeps diagrams usable if a Mermaid feature is not supported\n // by the Excalidraw converter in a given host app.\n const svg = await renderMermaidSvg(\n trimmed,\n `${renderId}-${isDark ? \"d\" : \"l\"}`,\n isDark,\n );\n if (!cancelled) setState({ svg });\n } catch (mermaidError) {\n const excalidrawMessage = errorMessage(excalidrawError);\n const mermaidMessage = errorMessage(mermaidError);\n if (!cancelled) {\n setState({\n error:\n excalidrawMessage === mermaidMessage\n ? mermaidMessage\n : `Excalidraw: ${excalidrawMessage}; Mermaid fallback: ${mermaidMessage}`,\n });\n }\n }\n }\n })();\n return () => {\n cancelled = true;\n };\n // Re-render when the source OR the resolved theme changes so toggling\n // dark/light updates the diagram live.\n }, [mounted, source, isDark, renderId]);\n\n if (!mounted) {\n return (\n <div className=\"mt-2 flex min-h-24 items-center justify-center rounded-lg border border-plan-line bg-plan-code text-sm text-plan-muted\">\n {copy.loadingDiagram}\n </div>\n );\n }\n\n if (state.error) {\n return (\n <div className=\"mt-2 space-y-2\">\n <pre className=\"overflow-auto rounded-lg border border-plan-line bg-plan-code px-3 py-2 font-mono [font-size:var(--plan-code-size)] text-plan-code-text\">\n {source}\n </pre>\n <p className=\"text-sm text-plan-muted\">\n {copy.couldNotRenderDiagram}: {state.error}\n </p>\n </div>\n );\n }\n\n if (!state.svg) {\n return (\n <div className=\"mt-2 flex min-h-24 items-center justify-center rounded-lg border border-plan-line bg-plan-code text-sm text-plan-muted\">\n {copy.addDiagramDefinition}\n </div>\n );\n }\n\n // Hover-revealed top-right expand button + shared lightbox, matching the\n // DiagramBlock affordance exactly (same icon, reveal-on-hover/focus, Escape +\n // backdrop close via the reused `DiagramLightbox`). The enlarged view re-shows\n // the same rendered SVG scaled to fit the wider modal.\n const svg = state.svg;\n return (\n <div className=\"group/mermaid relative\">\n <MermaidSvg svg={svg} />\n <button\n type=\"button\"\n data-plan-interactive\n onClick={() => setExpanded(true)}\n aria-label={copy.expandDiagram}\n title={copy.expandDiagram}\n className=\"an-diagram-expand-trigger absolute right-2 top-2 z-10 flex size-7 items-center justify-center rounded-md border border-border/60 bg-background/90 text-muted-foreground opacity-0 shadow-sm backdrop-blur transition-[color,opacity] hover:text-foreground focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring group-hover/mermaid:opacity-100\"\n >\n <IconArrowsMaximize className=\"size-4\" />\n </button>\n {expanded ? (\n <DiagramLightbox onClose={() => setExpanded(false)}>\n <MermaidSvg svg={svg} enlarged />\n </DiagramLightbox>\n ) : null}\n </div>\n );\n}\n\n/**\n * Read-only renderer for a `mermaid` block. Wraps the diagram in the standard\n * titled `plan-block` section + an optional muted caption, matching the plan\n * house style.\n */\nexport function MermaidRead({\n data,\n blockId,\n title,\n summary,\n}: BlockReadProps<MermaidData>) {\n return (\n <section\n {...ltrCodeBlockProps}\n className=\"plan-block\"\n data-block-id={blockId}\n >\n {title && <div className=\"plan-block-label\">{title}</div>}\n <MermaidDiagram source={data.source} idSeed={blockId} />\n {data.caption && (\n <p className=\"mt-3 text-sm text-plan-muted\">{data.caption}</p>\n )}\n {summary && <p className=\"mt-5 text-plan-muted\">{summary}</p>}\n </section>\n );\n}\n\n/**\n * Edit renderer (panel surface) for a `mermaid` block: a monospace textarea for\n * the diagram source plus an optional caption input. Both commit immediately via\n * `onChange`. `editSurface: \"panel\"` means the registry renders the `Read` view\n * with a corner edit button that opens this form in the plan's shared popover, so\n * this renders only the form (the popover supplies the chrome and title).\n */\nexport function MermaidEdit({\n data,\n onChange,\n editable,\n}: BlockEditProps<MermaidData>) {\n const sourceId = useId();\n const captionId = useId();\n\n return (\n <div className=\"grid gap-3\" data-plan-interactive>\n <div className=\"grid gap-1.5\">\n <DevLabel htmlFor={sourceId}>Diagram source</DevLabel>\n <textarea\n id={sourceId}\n value={data.source}\n readOnly={!editable}\n spellCheck={false}\n onChange={(event) =>\n onChange({ ...data, source: event.target.value })\n }\n className=\"flex min-h-56 w-full rounded-md border border-input bg-transparent px-3 py-2 font-mono text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n placeholder={\"flowchart TD\\n A[Start] --> B{Decision}\"}\n />\n <p className=\"text-xs text-muted-foreground\">\n Mermaid syntax — flowcharts, sequence diagrams, and more.\n </p>\n </div>\n <div className=\"grid gap-1.5\">\n <DevLabel htmlFor={captionId}>Caption</DevLabel>\n <DevInput\n id={captionId}\n value={data.caption ?? \"\"}\n readOnly={!editable}\n onChange={(event) =>\n onChange({\n ...data,\n caption: event.target.value || undefined,\n })\n }\n placeholder=\"Optional caption\"\n />\n </div>\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"MermaidBlock.js","sourceRoot":"","sources":["../../../../src/client/blocks/library/MermaidBlock.tsx"],"names":[],"mappings":"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","sourcesContent":["import { IconArrowsMaximize } from \"@tabler/icons-react\";\nimport { useEffect, useId, useMemo, useState } from \"react\";\n\nimport { ltrCodeBlockProps } from \"../code-block-direction.js\";\nimport type { BlockEditProps, BlockReadProps } from \"../types.js\";\nimport { useBlockCopy } from \"./block-copy.js\";\nimport { DevInput, DevLabel } from \"./dev-doc-ui.js\";\nimport { DiagramLightbox } from \"./diagram.js\";\nimport type { MermaidData } from \"./mermaid.config.js\";\n\n/**\n * Read + Edit renderers for a `mermaid` block — a Mermaid diagram definition\n * (flowchart, sequence, etc.) edited as raw text and rendered as an\n * Excalidraw-style SVG so it matches the plan's hand-drawn / sketchy house\n * style.\n * Lives in core so any app can register the dev-doc block; it stays app-agnostic\n * (no shadcn / next-themes import).\n *\n * The Mermaid and Excalidraw runtimes are browser-only,\n * so the Read renderer SSR-guards: it renders a lightweight placeholder until a\n * `useEffect` confirms it is mounted, then dynamically imports\n * `@excalidraw/mermaid-to-excalidraw` + `@excalidraw/excalidraw` and injects\n * the exported SVG. If Excalidraw conversion fails, it falls back to Mermaid's\n * hand-drawn renderer. Parse errors never throw; they show the raw source and\n * the error message.\n *\n * Dark mode: the plan editor toggles a `.dark` class on <html>. The Read renderer\n * reads `document.documentElement.classList.contains(\"dark\")` (re-checking on a\n * `MutationObserver` of the html class) and re-renders the diagram with matching\n * light/dark export settings.\n */\n\ninterface MermaidRenderState {\n svg?: string;\n error?: string;\n}\n\nfunction errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : \"Failed to render diagram\";\n}\n\nfunction sanitizeSvgMarkup(svg: string): string {\n if (typeof DOMParser === \"undefined\") return svg;\n const doc = new DOMParser().parseFromString(svg, \"image/svg+xml\");\n doc\n .querySelectorAll(\"script, foreignObject\")\n .forEach((node) => node.remove());\n for (const element of Array.from(doc.querySelectorAll(\"*\"))) {\n for (const attr of Array.from(element.attributes)) {\n const name = attr.name.toLowerCase();\n const value = attr.value.trim().toLowerCase();\n if (\n name.startsWith(\"on\") ||\n ((name === \"href\" || name.endsWith(\":href\")) &&\n value.startsWith(\"javascript:\"))\n ) {\n element.removeAttribute(attr.name);\n }\n }\n }\n return doc.documentElement.outerHTML;\n}\n\nasync function renderExcalidrawSvg(\n source: string,\n isDark: boolean,\n): Promise<string> {\n const [{ parseMermaidToExcalidraw }, excalidraw] = await Promise.all([\n import(\"@excalidraw/mermaid-to-excalidraw\") as Promise<{\n parseMermaidToExcalidraw: (source: string) => Promise<{\n elements: unknown[];\n files?: Record<string, unknown>;\n }>;\n }>,\n import(\"@excalidraw/excalidraw\") as Promise<{\n convertToExcalidrawElements: (elements: unknown[]) => unknown[];\n exportToSvg: (options: {\n elements: unknown[];\n appState: {\n theme: \"dark\" | \"light\";\n viewBackgroundColor: string;\n exportWithDarkMode: boolean;\n };\n files: Record<string, unknown>;\n }) => Promise<{ outerHTML: string }>;\n }>,\n ]);\n const { elements, files } = await parseMermaidToExcalidraw(source);\n const excalidrawElements = excalidraw.convertToExcalidrawElements(elements);\n const svg = await excalidraw.exportToSvg({\n elements: excalidrawElements,\n appState: {\n theme: isDark ? \"dark\" : \"light\",\n viewBackgroundColor: \"transparent\",\n exportWithDarkMode: isDark,\n },\n files: files ?? {},\n });\n return sanitizeSvgMarkup(svg.outerHTML);\n}\n\nasync function renderMermaidSvg(\n source: string,\n id: string,\n isDark: boolean,\n): Promise<string> {\n const mermaid = (\n (await import(\"mermaid\")) as {\n default: {\n initialize: (config: Record<string, unknown>) => void;\n render: (id: string, source: string) => Promise<{ svg: string }>;\n };\n }\n ).default;\n mermaid.initialize({\n startOnLoad: false,\n securityLevel: \"strict\",\n look: \"handDrawn\",\n theme: isDark ? \"dark\" : \"neutral\",\n });\n const { svg } = await mermaid.render(id, source);\n return sanitizeSvgMarkup(svg);\n}\n\n/** Read the live dark-mode flag from the document root (next-themes-free). */\nfunction useIsDark(): boolean {\n const [isDark, setIsDark] = useState(false);\n useEffect(() => {\n if (typeof document === \"undefined\") return;\n const root = document.documentElement;\n const read = () => setIsDark(root.classList.contains(\"dark\"));\n read();\n const observer = new MutationObserver(read);\n observer.observe(root, { attributes: true, attributeFilter: [\"class\"] });\n return () => observer.disconnect();\n }, []);\n return isDark;\n}\n\n/**\n * Inject a rendered Mermaid/Excalidraw SVG string. Shared by the inline render\n * and the expand lightbox so the enlarged view shows the exact same SVG; the\n * lightbox passes `enlarged` so the SVG stretches to fill the wider modal\n * (`max-w-5xl`) instead of staying at its intrinsic inline size.\n */\nfunction MermaidSvg({ svg, enlarged }: { svg: string; enlarged?: boolean }) {\n return (\n <div\n className={\n enlarged\n ? \"flex justify-center overflow-auto [&_svg]:h-auto [&_svg]:w-full [&_svg]:max-w-full\"\n : \"mt-2 flex justify-center overflow-auto [&_svg]:h-auto [&_svg]:max-w-full\"\n }\n // Excalidraw and Mermaid output are sanitized before injection.\n dangerouslySetInnerHTML={{ __html: svg }}\n />\n );\n}\n\nfunction MermaidDiagram({\n source,\n idSeed,\n}: {\n source: string;\n idSeed: string;\n}) {\n const isDark = useIsDark();\n const copy = useBlockCopy();\n // Only render the diagram after mount: `mermaid` is client-only and SSR has no\n // DOM for it to measure against.\n const [mounted, setMounted] = useState(false);\n const [state, setState] = useState<MermaidRenderState>({});\n const [expanded, setExpanded] = useState(false);\n\n // A DOM-id-safe, stable-per-block render id. Mermaid requires a valid CSS id.\n const renderId = useMemo(\n () => `mermaid-${idSeed.replace(/[^a-zA-Z0-9_-]/g, \"-\")}`,\n [idSeed],\n );\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n useEffect(() => {\n if (!mounted) return;\n let cancelled = false;\n const trimmed = source.trim();\n if (!trimmed) {\n setState({});\n return;\n }\n (async () => {\n try {\n const svg = await renderExcalidrawSvg(trimmed, isDark);\n if (!cancelled) setState({ svg });\n } catch (excalidrawError) {\n try {\n // Fallback keeps diagrams usable if a Mermaid feature is not supported\n // by the Excalidraw converter in a given host app.\n const svg = await renderMermaidSvg(\n trimmed,\n `${renderId}-${isDark ? \"d\" : \"l\"}`,\n isDark,\n );\n if (!cancelled) setState({ svg });\n } catch (mermaidError) {\n const excalidrawMessage = errorMessage(excalidrawError);\n const mermaidMessage = errorMessage(mermaidError);\n if (!cancelled) {\n setState({\n error:\n excalidrawMessage === mermaidMessage\n ? mermaidMessage\n : `Excalidraw: ${excalidrawMessage}; Mermaid fallback: ${mermaidMessage}`,\n });\n }\n }\n }\n })();\n return () => {\n cancelled = true;\n };\n // Re-render when the source OR the resolved theme changes so toggling\n // dark/light updates the diagram live.\n }, [mounted, source, isDark, renderId]);\n\n if (!mounted) {\n return (\n <div className=\"mt-2 flex min-h-24 items-center justify-center rounded-lg border border-plan-line bg-plan-code text-sm text-plan-muted\">\n {copy.loadingDiagram}\n </div>\n );\n }\n\n if (state.error) {\n return (\n <div className=\"mt-2 space-y-2\">\n <pre className=\"overflow-auto rounded-lg border border-plan-line bg-plan-code px-3 py-2 font-mono [font-size:var(--plan-code-size)] text-plan-code-text\">\n {source}\n </pre>\n <p className=\"text-sm text-plan-muted\">\n {copy.couldNotRenderDiagram}: {state.error}\n </p>\n </div>\n );\n }\n\n if (!state.svg) {\n return (\n <div className=\"mt-2 flex min-h-24 items-center justify-center rounded-lg border border-plan-line bg-plan-code text-sm text-plan-muted\">\n {copy.addDiagramDefinition}\n </div>\n );\n }\n\n // Hover-revealed top-right expand button + shared lightbox, matching the\n // DiagramBlock affordance exactly (same icon, reveal-on-hover/focus, Escape +\n // backdrop close via the reused `DiagramLightbox`). The enlarged view re-shows\n // the same rendered SVG scaled to fit the wider modal.\n const svg = state.svg;\n return (\n <div className=\"group/mermaid relative\">\n <MermaidSvg svg={svg} />\n <button\n type=\"button\"\n data-plan-interactive\n onClick={() => setExpanded(true)}\n aria-label={copy.expandDiagram}\n title={copy.expandDiagram}\n className=\"an-diagram-expand-trigger absolute right-2 top-2 z-10 flex size-7 items-center justify-center rounded-md border border-border/60 bg-background text-muted-foreground opacity-0 shadow-sm transition-[color,opacity] hover:text-foreground focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring group-hover/mermaid:opacity-100\"\n >\n <IconArrowsMaximize className=\"size-4\" />\n </button>\n {expanded ? (\n <DiagramLightbox onClose={() => setExpanded(false)}>\n <MermaidSvg svg={svg} enlarged />\n </DiagramLightbox>\n ) : null}\n </div>\n );\n}\n\n/**\n * Read-only renderer for a `mermaid` block. Wraps the diagram in the standard\n * titled `plan-block` section + an optional muted caption, matching the plan\n * house style.\n */\nexport function MermaidRead({\n data,\n blockId,\n title,\n summary,\n}: BlockReadProps<MermaidData>) {\n return (\n <section\n {...ltrCodeBlockProps}\n className=\"plan-block\"\n data-block-id={blockId}\n >\n {title && <div className=\"plan-block-label\">{title}</div>}\n <MermaidDiagram source={data.source} idSeed={blockId} />\n {data.caption && (\n <p className=\"mt-3 text-sm text-plan-muted\">{data.caption}</p>\n )}\n {summary && <p className=\"mt-5 text-plan-muted\">{summary}</p>}\n </section>\n );\n}\n\n/**\n * Edit renderer (panel surface) for a `mermaid` block: a monospace textarea for\n * the diagram source plus an optional caption input. Both commit immediately via\n * `onChange`. `editSurface: \"panel\"` means the registry renders the `Read` view\n * with a corner edit button that opens this form in the plan's shared popover, so\n * this renders only the form (the popover supplies the chrome and title).\n */\nexport function MermaidEdit({\n data,\n onChange,\n editable,\n}: BlockEditProps<MermaidData>) {\n const sourceId = useId();\n const captionId = useId();\n\n return (\n <div className=\"grid gap-3\" data-plan-interactive>\n <div className=\"grid gap-1.5\">\n <DevLabel htmlFor={sourceId}>Diagram source</DevLabel>\n <textarea\n id={sourceId}\n value={data.source}\n readOnly={!editable}\n spellCheck={false}\n onChange={(event) =>\n onChange({ ...data, source: event.target.value })\n }\n className=\"flex min-h-56 w-full rounded-md border border-input bg-transparent px-3 py-2 font-mono text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\"\n placeholder={\"flowchart TD\\n A[Start] --> B{Decision}\"}\n />\n <p className=\"text-xs text-muted-foreground\">\n Mermaid syntax — flowcharts, sequence diagrams, and more.\n </p>\n </div>\n <div className=\"grid gap-1.5\">\n <DevLabel htmlFor={captionId}>Caption</DevLabel>\n <DevInput\n id={captionId}\n value={data.caption ?? \"\"}\n readOnly={!editable}\n onChange={(event) =>\n onChange({\n ...data,\n caption: event.target.value || undefined,\n })\n }\n placeholder=\"Optional caption\"\n />\n </div>\n </div>\n );\n}\n"]}
@@ -7,10 +7,9 @@ import type { BlockMdxConfig } from "../types.js";
7
7
  * (`diagram.tsx`) consume one definition. Keeping it React-free means importing
8
8
  * it into a server module never pulls React into the Nitro/SSR bundle.
9
9
  *
10
- * The MDX `tag` + attribute shape MUST match the legacy `<Diagram … data={…} />`
11
- * encoding the whole `data` object is serialized as one JSON `data` prop — so
12
- * stored `.mdx` round-trips byte-compatibly (the block originated in the plan
13
- * template before moving here).
10
+ * The MDX `tag` keeps backward compatibility with legacy
11
+ * `<Diagram data={…} />` files while the current authoring form stores
12
+ * maintainable `html`/`css` as child code fences.
14
13
  */
15
14
  export interface DiagramNode {
16
15
  id: string;
@@ -54,11 +53,12 @@ export interface DiagramData {
54
53
  */
55
54
  export declare const diagramSchema: z.ZodType<DiagramData>;
56
55
  /**
57
- * MDX config: the entire `data` object is serialized as one JSON `data` prop and
58
- * the element is self-closing — exactly the legacy `<Diagram id … data={…} />`
59
- * form. `toAttrs` returns `{ data }`; `fromAttrs` reads the `data` object,
60
- * mirroring the legacy `dataAttr(node, "data") ?? { nodes: [], edges: [] }`
61
- * default so plans missing the prop still parse.
56
+ * MDX config: new source uses normal fenced-code children:
57
+ *
58
+ * `<Diagram caption="...">` plus child `html` / `css` fences. Legacy
59
+ * `<Diagram data={...} />` remains accepted by `fromAttrs`; `toAttrs` keeps the
60
+ * `data` key present-but-undefined when using child fences so docs validation
61
+ * still recognizes old `data={...}` as a supported compatibility attribute.
62
62
  */
63
63
  export declare const diagramMdx: BlockMdxConfig<DiagramData>;
64
64
  //# sourceMappingURL=diagram.config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"diagram.config.d.ts","sourceRoot":"","sources":["../../../../src/client/blocks/library/diagram.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;CACvB;AAoED;;;;GAIG;AACH,eAAO,MAAM,aAAa,EA8BP,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAE1C;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,EAAE,cAAc,CAAC,WAAW,CAWlD,CAAC"}
1
+ {"version":3,"file":"diagram.config.d.ts","sourceRoot":"","sources":["../../../../src/client/blocks/library/diagram.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;CACvB;AAoED;;;;GAIG;AACH,eAAO,MAAM,aAAa,EA8BP,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAe1C;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,EAAE,cAAc,CAAC,WAAW,CAqBlD,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { z } from "zod";
2
+ import { childCodeFenceFields, serializeChildCodeFenceFields } from "../mdx.js";
2
3
  const idSchema = z.string().trim().min(1).max(120);
3
4
  const unsafeDiagramHtmlPattern = /(?:<!doctype|<\/?(?:html|head|body|script|style|iframe|object|embed|link|meta|base|form|math|foreignObject|noscript|frame|frameset|applet|portal|marquee)[\s>/]|@(?:import|font-face|keyframes|page|namespace|charset)\b|\b(?:java\s*script|vb\s*script|data\s*:\s*(?:text\/html|image\/svg\+xml))\s*:?\s*|\bsrcdoc\s*=|(?:^|\s)(?:on[a-z][\w:-]*|@[\w:.-]+|x-on:[\w:.-]+|:on[a-z][\w:-]*|x-bind:on[a-z][\w:-]*|:style|x-bind:style)\s*=|expression\s*\(|url\s*\(\s*['"]?\s*(?:java\s*script|vb\s*script|data\s*:\s*(?:text\/html|image\/svg\+xml)))/i;
4
5
  const unsafeViewportCssPattern = /(?:^|[;{\s])position\s*:\s*(?:fixed|sticky)\b|(?:^|[;{\s])z-index\s*:\s*[1-9]\d{4,}\b/i;
@@ -90,22 +91,45 @@ export const diagramSchema = z
90
91
  message: "Diagram block requires html or at least one node.",
91
92
  });
92
93
  });
94
+ function hasChildFenceData(data) {
95
+ return Boolean(data.html || data.css);
96
+ }
97
+ function graphDataForAttr(data) {
98
+ const graph = {};
99
+ if (data.nodes?.length)
100
+ graph.nodes = data.nodes;
101
+ if (data.edges?.length)
102
+ graph.edges = data.edges;
103
+ if (data.notes?.length)
104
+ graph.notes = data.notes;
105
+ if (Object.keys(graph).length > 0)
106
+ return graph;
107
+ return hasChildFenceData(data) ? undefined : data;
108
+ }
93
109
  /**
94
- * MDX config: the entire `data` object is serialized as one JSON `data` prop and
95
- * the element is self-closing — exactly the legacy `<Diagram id … data={…} />`
96
- * form. `toAttrs` returns `{ data }`; `fromAttrs` reads the `data` object,
97
- * mirroring the legacy `dataAttr(node, "data") ?? { nodes: [], edges: [] }`
98
- * default so plans missing the prop still parse.
110
+ * MDX config: new source uses normal fenced-code children:
111
+ *
112
+ * `<Diagram caption="...">` plus child `html` / `css` fences. Legacy
113
+ * `<Diagram data={...} />` remains accepted by `fromAttrs`; `toAttrs` keeps the
114
+ * `data` key present-but-undefined when using child fences so docs validation
115
+ * still recognizes old `data={...}` as a supported compatibility attribute.
99
116
  */
100
117
  export const diagramMdx = {
101
118
  tag: "Diagram",
102
- // The whole data object becomes one JSON `data` prop. Cast to the
103
- // structured-attr member of `MdxAttrValue` — `DiagramData` is a closed
104
- // interface without an index signature, which the union member requires.
105
- toAttrs: (data) => ({ data: data }),
106
- fromAttrs: (attrs) => (attrs.object("data") ?? {
107
- nodes: [],
108
- edges: [],
119
+ toAttrs: (data) => ({
120
+ data: graphDataForAttr(data),
121
+ caption: data.caption,
122
+ }),
123
+ fromAttrs: (attrs) => ({
124
+ ...(attrs.object("data") ?? {}),
125
+ ...(attrs.string("caption") !== undefined
126
+ ? { caption: attrs.string("caption") }
127
+ : {}),
128
+ }),
129
+ serializeChildren: (data) => serializeChildCodeFenceFields(data, { html: "html", css: "css" }),
130
+ parseChildren: (childNodes) => childCodeFenceFields(childNodes, {
131
+ html: "html",
132
+ css: "css",
109
133
  }),
110
134
  };
111
135
  //# sourceMappingURL=diagram.config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"diagram.config.js","sourceRoot":"","sources":["../../../../src/client/blocks/library/diagram.config.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from \"zod\";\n\nimport type { BlockMdxConfig } from \"../types.js\";\n\n/**\n * Pure (React-free) part of the shared `diagram` block: its data schema and MDX\n * round-trip config. Lives in core so BOTH apps' server/shared registries\n * (`plan-block-registry.ts`, `nfm-registry.ts`) and the client spec\n * (`diagram.tsx`) consume one definition. Keeping it React-free means importing\n * it into a server module never pulls React into the Nitro/SSR bundle.\n *\n * The MDX `tag` + attribute shape MUST match the legacy `<Diagram … data={…} />`\n * encoding — the whole `data` object is serialized as one JSON `data` prop — so\n * stored `.mdx` round-trips byte-compatibly (the block originated in the plan\n * template before moving here).\n */\n\nexport interface DiagramNode {\n id: string;\n label: string;\n detail?: string;\n x?: number;\n y?: number;\n}\n\nexport interface DiagramEdge {\n from: string;\n to: string;\n label?: string;\n}\n\nexport interface DiagramNote {\n id: string;\n text: string;\n x?: number;\n y?: number;\n}\n\nexport interface DiagramData {\n /**\n * Preferred authoring path for architecture/code diagrams: a scoped, inert\n * HTML/SVG fragment. Use .diagram-* primitives and --wf-* tokens; the\n * renderer supplies theme-token-backed styling plus sketch/clean style hooks.\n */\n html?: string;\n css?: string;\n caption?: string;\n /**\n * Legacy compatibility path for older/simple node graphs. New plans should use\n * `html`/`css` when layout quality matters.\n */\n nodes?: DiagramNode[];\n edges?: DiagramEdge[];\n notes?: DiagramNote[];\n}\n\nconst idSchema = z.string().trim().min(1).max(120);\nconst unsafeDiagramHtmlPattern =\n /(?:<!doctype|<\\/?(?:html|head|body|script|style|iframe|object|embed|link|meta|base|form|math|foreignObject|noscript|frame|frameset|applet|portal|marquee)[\\s>/]|@(?:import|font-face|keyframes|page|namespace|charset)\\b|\\b(?:java\\s*script|vb\\s*script|data\\s*:\\s*(?:text\\/html|image\\/svg\\+xml))\\s*:?\\s*|\\bsrcdoc\\s*=|(?:^|\\s)(?:on[a-z][\\w:-]*|@[\\w:.-]+|x-on:[\\w:.-]+|:on[a-z][\\w:-]*|x-bind:on[a-z][\\w:-]*|:style|x-bind:style)\\s*=|expression\\s*\\(|url\\s*\\(\\s*['\"]?\\s*(?:java\\s*script|vb\\s*script|data\\s*:\\s*(?:text\\/html|image\\/svg\\+xml)))/i;\nconst unsafeViewportCssPattern =\n /(?:^|[;{\\s])position\\s*:\\s*(?:fixed|sticky)\\b|(?:^|[;{\\s])z-index\\s*:\\s*[1-9]\\d{4,}\\b/i;\n\nfunction decodeSafetyEntities(value: string): string {\n return value\n .replace(/&#(x[0-9a-f]+|\\d+);?/gi, (_, code: string) => {\n const point = code.toLowerCase().startsWith(\"x\")\n ? Number.parseInt(code.slice(1), 16)\n : Number.parseInt(code, 10);\n return Number.isFinite(point) ? String.fromCodePoint(point) : \"\";\n })\n .replace(/&(colon|tab|newline);/gi, (_, name: string) => {\n if (name.toLowerCase() === \"colon\") return \":\";\n if (name.toLowerCase() === \"tab\") return \"\\t\";\n return \"\\n\";\n });\n}\n\nfunction decodeCssSafetyEscapes(value: string): string {\n return value.replace(/\\\\([0-9a-fA-F]{1,6}\\s?|.)/g, (_match, escaped) => {\n const hex = String(escaped).match(/^[0-9a-fA-F]{1,6}/)?.[0];\n if (hex) {\n const point = Number.parseInt(hex, 16);\n return Number.isFinite(point) ? String.fromCodePoint(point) : \"\";\n }\n return String(escaped)[0] ?? \"\";\n });\n}\n\nfunction noActiveDiagramText(value: string) {\n const decoded = decodeCssSafetyEscapes(decodeSafetyEntities(value));\n const compact = decoded.toLowerCase().replace(/[\\u0000-\\u0020]+/g, \"\");\n return (\n !unsafeDiagramHtmlPattern.test(value) &&\n !unsafeDiagramHtmlPattern.test(decoded) &&\n !unsafeViewportCssPattern.test(decoded) &&\n !/(?:javascript|vbscript):|data:(?:text\\/html|image\\/svg\\+xml)|expression\\(|url\\(['\"]?(?:javascript|vbscript|data:(?:text\\/html|image\\/svg\\+xml))/.test(\n compact,\n )\n );\n}\n\nconst diagramNodeSchema = z.object({\n id: idSchema,\n label: z.string().trim().min(1).max(160),\n detail: z.string().trim().max(500).optional(),\n x: z.number().min(0).max(100).optional(),\n y: z.number().min(0).max(100).optional(),\n}) as z.ZodType<DiagramNode>;\n\nconst diagramEdgeSchema = z.object({\n from: idSchema,\n to: idSchema,\n label: z.string().trim().max(100).optional(),\n}) as z.ZodType<DiagramEdge>;\n\nconst diagramNoteSchema = z.object({\n id: idSchema,\n text: z.string().trim().min(1).max(500),\n x: z.number().min(0).max(100).optional(),\n y: z.number().min(0).max(100).optional(),\n}) as z.ZodType<DiagramNote>;\n\n/**\n * The block can be a flexible HTML/SVG fragment or a legacy positional\n * node/edge/note graph, so it ships a custom `Edit` rather than relying on the\n * schema auto-editor. Editing stays comment/patch-driven.\n */\nexport const diagramSchema = z\n .object({\n html: z\n .string()\n .trim()\n .max(100_000)\n .refine(noActiveDiagramText, {\n message:\n \"Diagram html must be an inert fragment; SVG is allowed, scripts/events are not.\",\n })\n .optional(),\n css: z\n .string()\n .max(50_000)\n .refine(noActiveDiagramText, {\n message: \"Diagram css must not include document or script tags.\",\n })\n .optional(),\n caption: z.string().trim().max(600).optional(),\n nodes: z.array(diagramNodeSchema).max(80).optional(),\n edges: z.array(diagramEdgeSchema).max(120).optional(),\n notes: z.array(diagramNoteSchema).max(40).optional(),\n })\n .superRefine((data, ctx) => {\n if (data.html?.trim() || (data.nodes?.length ?? 0) > 0) return;\n ctx.addIssue({\n code: \"custom\",\n path: [\"html\"],\n message: \"Diagram block requires html or at least one node.\",\n });\n }) as unknown as z.ZodType<DiagramData>;\n\n/**\n * MDX config: the entire `data` object is serialized as one JSON `data` prop and\n * the element is self-closing — exactly the legacy `<Diagram id … data={…} />`\n * form. `toAttrs` returns `{ data }`; `fromAttrs` reads the `data` object,\n * mirroring the legacy `dataAttr(node, \"data\") ?? { nodes: [], edges: [] }`\n * default so plans missing the prop still parse.\n */\nexport const diagramMdx: BlockMdxConfig<DiagramData> = {\n tag: \"Diagram\",\n // The whole data object becomes one JSON `data` prop. Cast to the\n // structured-attr member of `MdxAttrValue` — `DiagramData` is a closed\n // interface without an index signature, which the union member requires.\n toAttrs: (data) => ({ data: data as unknown as Record<string, unknown> }),\n fromAttrs: (attrs) =>\n (attrs.object<DiagramData>(\"data\") ?? {\n nodes: [],\n edges: [],\n }) as DiagramData,\n};\n"]}
1
+ {"version":3,"file":"diagram.config.js","sourceRoot":"","sources":["../../../../src/client/blocks/library/diagram.config.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from \"zod\";\n\nimport { childCodeFenceFields, serializeChildCodeFenceFields } from \"../mdx.js\";\nimport type { BlockMdxConfig } from \"../types.js\";\n\n/**\n * Pure (React-free) part of the shared `diagram` block: its data schema and MDX\n * round-trip config. Lives in core so BOTH apps' server/shared registries\n * (`plan-block-registry.ts`, `nfm-registry.ts`) and the client spec\n * (`diagram.tsx`) consume one definition. Keeping it React-free means importing\n * it into a server module never pulls React into the Nitro/SSR bundle.\n *\n * The MDX `tag` keeps backward compatibility with legacy\n * `<Diagram … data={…} />` files while the current authoring form stores\n * maintainable `html`/`css` as child code fences.\n */\n\nexport interface DiagramNode {\n id: string;\n label: string;\n detail?: string;\n x?: number;\n y?: number;\n}\n\nexport interface DiagramEdge {\n from: string;\n to: string;\n label?: string;\n}\n\nexport interface DiagramNote {\n id: string;\n text: string;\n x?: number;\n y?: number;\n}\n\nexport interface DiagramData {\n /**\n * Preferred authoring path for architecture/code diagrams: a scoped, inert\n * HTML/SVG fragment. Use .diagram-* primitives and --wf-* tokens; the\n * renderer supplies theme-token-backed styling plus sketch/clean style hooks.\n */\n html?: string;\n css?: string;\n caption?: string;\n /**\n * Legacy compatibility path for older/simple node graphs. New plans should use\n * `html`/`css` when layout quality matters.\n */\n nodes?: DiagramNode[];\n edges?: DiagramEdge[];\n notes?: DiagramNote[];\n}\n\nconst idSchema = z.string().trim().min(1).max(120);\nconst unsafeDiagramHtmlPattern =\n /(?:<!doctype|<\\/?(?:html|head|body|script|style|iframe|object|embed|link|meta|base|form|math|foreignObject|noscript|frame|frameset|applet|portal|marquee)[\\s>/]|@(?:import|font-face|keyframes|page|namespace|charset)\\b|\\b(?:java\\s*script|vb\\s*script|data\\s*:\\s*(?:text\\/html|image\\/svg\\+xml))\\s*:?\\s*|\\bsrcdoc\\s*=|(?:^|\\s)(?:on[a-z][\\w:-]*|@[\\w:.-]+|x-on:[\\w:.-]+|:on[a-z][\\w:-]*|x-bind:on[a-z][\\w:-]*|:style|x-bind:style)\\s*=|expression\\s*\\(|url\\s*\\(\\s*['\"]?\\s*(?:java\\s*script|vb\\s*script|data\\s*:\\s*(?:text\\/html|image\\/svg\\+xml)))/i;\nconst unsafeViewportCssPattern =\n /(?:^|[;{\\s])position\\s*:\\s*(?:fixed|sticky)\\b|(?:^|[;{\\s])z-index\\s*:\\s*[1-9]\\d{4,}\\b/i;\n\nfunction decodeSafetyEntities(value: string): string {\n return value\n .replace(/&#(x[0-9a-f]+|\\d+);?/gi, (_, code: string) => {\n const point = code.toLowerCase().startsWith(\"x\")\n ? Number.parseInt(code.slice(1), 16)\n : Number.parseInt(code, 10);\n return Number.isFinite(point) ? String.fromCodePoint(point) : \"\";\n })\n .replace(/&(colon|tab|newline);/gi, (_, name: string) => {\n if (name.toLowerCase() === \"colon\") return \":\";\n if (name.toLowerCase() === \"tab\") return \"\\t\";\n return \"\\n\";\n });\n}\n\nfunction decodeCssSafetyEscapes(value: string): string {\n return value.replace(/\\\\([0-9a-fA-F]{1,6}\\s?|.)/g, (_match, escaped) => {\n const hex = String(escaped).match(/^[0-9a-fA-F]{1,6}/)?.[0];\n if (hex) {\n const point = Number.parseInt(hex, 16);\n return Number.isFinite(point) ? String.fromCodePoint(point) : \"\";\n }\n return String(escaped)[0] ?? \"\";\n });\n}\n\nfunction noActiveDiagramText(value: string) {\n const decoded = decodeCssSafetyEscapes(decodeSafetyEntities(value));\n const compact = decoded.toLowerCase().replace(/[\\u0000-\\u0020]+/g, \"\");\n return (\n !unsafeDiagramHtmlPattern.test(value) &&\n !unsafeDiagramHtmlPattern.test(decoded) &&\n !unsafeViewportCssPattern.test(decoded) &&\n !/(?:javascript|vbscript):|data:(?:text\\/html|image\\/svg\\+xml)|expression\\(|url\\(['\"]?(?:javascript|vbscript|data:(?:text\\/html|image\\/svg\\+xml))/.test(\n compact,\n )\n );\n}\n\nconst diagramNodeSchema = z.object({\n id: idSchema,\n label: z.string().trim().min(1).max(160),\n detail: z.string().trim().max(500).optional(),\n x: z.number().min(0).max(100).optional(),\n y: z.number().min(0).max(100).optional(),\n}) as z.ZodType<DiagramNode>;\n\nconst diagramEdgeSchema = z.object({\n from: idSchema,\n to: idSchema,\n label: z.string().trim().max(100).optional(),\n}) as z.ZodType<DiagramEdge>;\n\nconst diagramNoteSchema = z.object({\n id: idSchema,\n text: z.string().trim().min(1).max(500),\n x: z.number().min(0).max(100).optional(),\n y: z.number().min(0).max(100).optional(),\n}) as z.ZodType<DiagramNote>;\n\n/**\n * The block can be a flexible HTML/SVG fragment or a legacy positional\n * node/edge/note graph, so it ships a custom `Edit` rather than relying on the\n * schema auto-editor. Editing stays comment/patch-driven.\n */\nexport const diagramSchema = z\n .object({\n html: z\n .string()\n .trim()\n .max(100_000)\n .refine(noActiveDiagramText, {\n message:\n \"Diagram html must be an inert fragment; SVG is allowed, scripts/events are not.\",\n })\n .optional(),\n css: z\n .string()\n .max(50_000)\n .refine(noActiveDiagramText, {\n message: \"Diagram css must not include document or script tags.\",\n })\n .optional(),\n caption: z.string().trim().max(600).optional(),\n nodes: z.array(diagramNodeSchema).max(80).optional(),\n edges: z.array(diagramEdgeSchema).max(120).optional(),\n notes: z.array(diagramNoteSchema).max(40).optional(),\n })\n .superRefine((data, ctx) => {\n if (data.html?.trim() || (data.nodes?.length ?? 0) > 0) return;\n ctx.addIssue({\n code: \"custom\",\n path: [\"html\"],\n message: \"Diagram block requires html or at least one node.\",\n });\n }) as unknown as z.ZodType<DiagramData>;\n\nfunction hasChildFenceData(data: DiagramData) {\n return Boolean(data.html || data.css);\n}\n\nfunction graphDataForAttr(data: DiagramData): DiagramData | undefined {\n const graph: DiagramData = {};\n if (data.nodes?.length) graph.nodes = data.nodes;\n if (data.edges?.length) graph.edges = data.edges;\n if (data.notes?.length) graph.notes = data.notes;\n if (Object.keys(graph).length > 0) return graph;\n return hasChildFenceData(data) ? undefined : data;\n}\n\n/**\n * MDX config: new source uses normal fenced-code children:\n *\n * `<Diagram caption=\"...\">` plus child `html` / `css` fences. Legacy\n * `<Diagram data={...} />` remains accepted by `fromAttrs`; `toAttrs` keeps the\n * `data` key present-but-undefined when using child fences so docs validation\n * still recognizes old `data={...}` as a supported compatibility attribute.\n */\nexport const diagramMdx: BlockMdxConfig<DiagramData> = {\n tag: \"Diagram\",\n toAttrs: (data) => ({\n data: graphDataForAttr(data) as unknown as\n | Record<string, unknown>\n | undefined,\n caption: data.caption,\n }),\n fromAttrs: (attrs) => ({\n ...(attrs.object<DiagramData>(\"data\") ?? {}),\n ...(attrs.string(\"caption\") !== undefined\n ? { caption: attrs.string(\"caption\") }\n : {}),\n }),\n serializeChildren: (data) =>\n serializeChildCodeFenceFields(data, { html: \"html\", css: \"css\" }),\n parseChildren: (childNodes) =>\n childCodeFenceFields<DiagramData>(childNodes, {\n html: \"html\",\n css: \"css\",\n }),\n};\n"]}
@@ -286,7 +286,7 @@ function ExpandableDiagramBody({ data, ctx, compact, }) {
286
286
  const styleTooltip = sketchy
287
287
  ? copy.handDrawnDiagramsSwitch
288
288
  : copy.cleanDiagramsSwitch;
289
- return (_jsxs("div", { className: "group/diagram relative", children: [_jsx(DiagramBody, { data: data, ctx: ctx, compact: compact }), _jsx(TooltipProvider, { delayDuration: 100, skipDelayDuration: 0, children: _jsxs("div", { className: "absolute right-2 top-2 z-10 flex items-center gap-1.5", children: [supportsStyleToggle && (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("button", { type: "button", "data-plan-interactive": true, onClick: () => toggleWireframeStyle(), "aria-label": styleLabel, "aria-pressed": sketchy, className: "an-diagram-style-trigger flex size-7 items-center justify-center rounded-md border border-border/60 bg-background/90 text-muted-foreground opacity-0 shadow-sm backdrop-blur transition-[color,opacity] hover:text-foreground focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring group-hover/diagram:opacity-100", children: sketchy ? (_jsx(IconScribble, { className: "size-4" })) : (_jsx(IconShape2, { className: "size-4" })) }) }), _jsx(TooltipContent, { side: "left", children: styleTooltip })] })), _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("button", { type: "button", "data-plan-interactive": true, onClick: () => setExpanded(true), "aria-label": copy.expandDiagram, className: "an-diagram-expand-trigger flex size-7 items-center justify-center rounded-md border border-border/60 bg-background/90 text-muted-foreground opacity-0 shadow-sm backdrop-blur transition-[color,opacity] hover:text-foreground focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring group-hover/diagram:opacity-100", children: _jsx(IconArrowsMaximize, { className: "size-4" }) }) }), _jsx(TooltipContent, { side: "left", children: copy.expandDiagram })] })] }) }), expanded ? (_jsx(DiagramLightbox, { onClose: () => setExpanded(false), children: _jsx(DiagramBody, { data: data, ctx: ctx }) })) : null] }));
289
+ return (_jsxs("div", { className: "group/diagram relative", children: [_jsx(DiagramBody, { data: data, ctx: ctx, compact: compact }), _jsx(TooltipProvider, { delayDuration: 100, skipDelayDuration: 0, children: _jsxs("div", { className: "absolute right-2 top-2 z-10 flex items-center gap-1.5", children: [supportsStyleToggle && (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("button", { type: "button", "data-plan-interactive": true, onClick: () => toggleWireframeStyle(), "aria-label": styleLabel, "aria-pressed": sketchy, className: "an-diagram-style-trigger flex size-7 items-center justify-center rounded-md border border-border/60 bg-background text-muted-foreground opacity-0 shadow-sm transition-[color,opacity] hover:text-foreground focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring group-hover/diagram:opacity-100", children: sketchy ? (_jsx(IconScribble, { className: "size-4" })) : (_jsx(IconShape2, { className: "size-4" })) }) }), _jsx(TooltipContent, { side: "left", children: styleTooltip })] })), _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("button", { type: "button", "data-plan-interactive": true, onClick: () => setExpanded(true), "aria-label": copy.expandDiagram, className: "an-diagram-expand-trigger flex size-7 items-center justify-center rounded-md border border-border/60 bg-background text-muted-foreground opacity-0 shadow-sm transition-[color,opacity] hover:text-foreground focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring group-hover/diagram:opacity-100", children: _jsx(IconArrowsMaximize, { className: "size-4" }) }) }), _jsx(TooltipContent, { side: "left", children: copy.expandDiagram })] })] }) }), expanded ? (_jsx(DiagramLightbox, { onClose: () => setExpanded(false), children: _jsx(DiagramBody, { data: data, ctx: ctx }) })) : null] }));
290
290
  }
291
291
  /* -------------------------------------------------------------------------- */
292
292
  /* Read + Edit */
@@ -1 +1 @@
1
- {"version":3,"file":"diagram.js","sourceRoot":"","sources":["../../../../src/client/blocks/library/diagram.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n IconArrowsMaximize,\n IconScribble,\n IconShape2,\n IconX,\n} from \"@tabler/icons-react\";\nimport { useEffect, useId, useMemo, useRef, useState } from \"react\";\n\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../../components/ui/tooltip.js\";\nimport { cn } from \"../../utils.js\";\nimport { AiEditableFieldLabel } from \"../AiEditableField.js\";\nimport { ltrCodeBlockProps } from \"../code-block-direction.js\";\nimport { defineBlock } from \"../types.js\";\nimport type {\n BlockReadProps,\n BlockEditProps,\n BlockRenderContext,\n} from \"../types.js\";\nimport { useBlockCopy } from \"./block-copy.js\";\nimport {\n diagramMdx,\n diagramSchema,\n type DiagramData,\n type DiagramEdge,\n type DiagramNode,\n} from \"./diagram.config.js\";\nimport {\n sanitizeDiagramHtml,\n sanitizeWireframeCss,\n scopeDesignCss,\n} from \"./sanitize-html.js\";\nimport {\n RoughOverlay,\n toggleWireframeStyle,\n useIsDark,\n useWireframeStyle,\n} from \"./wireframe-kit.js\";\n\n/**\n * Read + Edit renderers for the shared `diagram` block — a flexible inline\n * architecture/code diagram. The preferred authoring path is a scoped, inert\n * HTML/SVG fragment that leans on `.diagram-*` primitives and `--wf-*` tokens;\n * a legacy positional / sequence node-graph path is kept for older/simple plans.\n * Lives in core so any app can register it (it originated in the plan template).\n *\n * DECOUPLING from the plan original (mirrors the sibling `wireframe.tsx` port):\n * - Theme: `useIsDark()` reads `document.documentElement.classList` instead of\n * `next-themes`; `useWireframeStyle()` reads the viewer's sketchy/clean\n * preference from the shared `plan-wireframe-style` localStorage key — both\n * from `./wireframe-kit.js`, so core stays plan-free and shadcn-free.\n * - HTML sanitize: the HTML/SVG fragment + CSS run through the app-injected\n * `ctx.sanitizeHtml` at the render point (defense-in-depth against stored\n * XSS). Without a sanitizer wired, the HTML path emits nothing — core never\n * injects unsanitized author HTML. The React-free `diagramSchema` already\n * rejects active markup before storage.\n * - The rough.js sketch overlay reuses the kit's shared `RoughOverlay`, scoped\n * with the diagram selector and `drawFrame={false}` (the same call the plan\n * `HtmlDiagram` made). The `.plan-diagram-frame` / `.diagram-*` / `data-rough`\n * class contract is preserved exactly so the theme-token CSS in core's\n * `blocks.css` styles it in any app.\n *\n * The section carries the app-neutral `an-block` class plus the legacy\n * `plan-block` class so plan renders byte-identically while any other app gets\n * the theme-token treatment.\n */\n\n/* -------------------------------------------------------------------------- */\n/* HTML/SVG diagram path */\n/* -------------------------------------------------------------------------- */\n\n/** The rough-overlay selector for diagram bordered boxes (mirrors the plan). */\nconst DIAGRAM_ROUGH_SELECTOR =\n \"[data-rough],.diagram-panel,.diagram-node,.diagram-box,.diagram-pill,.diagram-card,[class*='card'],[class*='box'],[class*='panel'],[class*='pill'],[class*='chip'],[class*='badge'],hr\";\n\nfunction HtmlDiagram({\n data,\n ctx,\n compact,\n}: {\n data: DiagramData;\n ctx: BlockRenderContext;\n compact?: boolean;\n}) {\n const ref = useRef<HTMLDivElement>(null);\n const isDark = useIsDark();\n const style = useWireframeStyle();\n const scopeId = useId().replace(/[^a-zA-Z0-9_-]/g, \"\");\n // Sanitize author HTML/CSS at the render point (defense-in-depth against\n // stored XSS). Self-contained in core via the shared block sanitizer (DOM-based\n // in the browser, regex fallback on the server) so diagrams render in any app\n // without the host wiring a sanitizer hook.\n const safeHtml = useMemo(() => sanitizeDiagramHtml(data.html), [data.html]);\n const scopedCss = useMemo(() => {\n const safeCss = sanitizeWireframeCss(data.css);\n // Scope every author selector under this diagram instance so global\n // selectors (body, *, .app-shell, :root) can't escape and restyle the page.\n return safeCss\n ? scopeDesignCss(safeCss, `[data-plan-diagram-scope=\"${scopeId}\"]`)\n : \"\";\n }, [data.css, scopeId]);\n\n return (\n <div\n ref={ref}\n className={cn(\"plan-diagram-shell\", compact && \"plan-diagram-compact\")}\n >\n <div\n className=\"plan-diagram-frame\"\n dir={ctx.textDirection}\n data-theme={isDark ? \"dark\" : \"light\"}\n data-style={style}\n data-text-direction={ctx.textDirection}\n data-plan-diagram-scope={scopeId}\n >\n {scopedCss && <style>{scopedCss}</style>}\n <div\n className=\"plan-diagram-frame-content\"\n dangerouslySetInnerHTML={{ __html: safeHtml }}\n />\n </div>\n <RoughOverlay\n scopeRef={ref}\n enabled={style === \"sketchy\"}\n drawFrame={false}\n selector={DIAGRAM_ROUGH_SELECTOR}\n />\n {data.caption && !compact && (\n <p className=\"mt-3 text-sm leading-6 text-muted-foreground\">\n {data.caption}\n </p>\n )}\n </div>\n );\n}\n\n/* -------------------------------------------------------------------------- */\n/* Legacy node-graph paths */\n/* -------------------------------------------------------------------------- */\n\nfunction clampDiagramPercent(value: number) {\n if (!Number.isFinite(value)) return 50;\n return Math.max(4, Math.min(96, value));\n}\n\nfunction hasPositionedDiagramNodes(data: DiagramData): boolean {\n return (data.nodes ?? []).some(\n (node) => typeof node.x === \"number\" && typeof node.y === \"number\",\n );\n}\n\nfunction orderDiagramNodes(\n nodes: DiagramNode[],\n edges: DiagramEdge[],\n): DiagramNode[] {\n if (nodes.length === 0) return [];\n const byId = new Map(nodes.map((node) => [node.id, node]));\n const indegree = new Map(nodes.map((node) => [node.id, 0]));\n for (const edge of edges) {\n if (byId.has(edge.from) && byId.has(edge.to)) {\n indegree.set(edge.to, (indegree.get(edge.to) ?? 0) + 1);\n }\n }\n const start = nodes.find((node) => (indegree.get(node.id) ?? 0) === 0);\n if (!start) return nodes;\n const ordered: DiagramNode[] = [];\n const seen = new Set<string>();\n let current: DiagramNode | undefined = start;\n while (current && !seen.has(current.id)) {\n const node: DiagramNode = current;\n ordered.push(node);\n seen.add(node.id);\n const next = edges.find((edge) => edge.from === node.id);\n current = next ? byId.get(next.to) : undefined;\n }\n for (const node of nodes) if (!seen.has(node.id)) ordered.push(node);\n return ordered;\n}\n\nfunction PositionedDiagram({\n data,\n compact,\n markerId,\n direction,\n}: {\n data: DiagramData;\n compact?: boolean;\n markerId: string;\n direction?: BlockRenderContext[\"textDirection\"];\n}) {\n const nodes = (data.nodes ?? []).map((node) => ({\n ...node,\n x: clampDiagramPercent(node.x ?? 50),\n y: clampDiagramPercent(node.y ?? 50),\n }));\n const edges = data.edges ?? [];\n const arrowId = `${markerId}-diagram-arrow`;\n const nodeWidth = compact ? 150 : 190;\n const rows = diagramRows(nodes, compact);\n const canvasHeight = diagramCanvasHeight(rows.length, compact);\n const canvasMinWidth = compact ? 560 : 720;\n const nodeWidthPct = compact ? 20 : 18;\n const nodeHeightPct = compact ? 14 : 18;\n const paddedViewBox = diagramViewBox(nodes, nodeWidthPct, nodeHeightPct);\n const xMargin = compact ? 13 : 14;\n const yMargin = compact ? 15 : 18;\n const displayNodes = nodes.map((node) => ({\n ...node,\n displayXBase: diagramPointPercent(\n node.x,\n paddedViewBox.x,\n paddedViewBox.width,\n xMargin,\n ),\n displayY: diagramRowPointPercent(node.y, rows, paddedViewBox, yMargin),\n }));\n const displayNodesForDirection = displayNodes.map((node) => ({\n ...node,\n displayX: direction === \"rtl\" ? 100 - node.displayXBase : node.displayXBase,\n }));\n const nodeByIdForDirection = new Map(\n displayNodesForDirection.map((node) => [node.id, node]),\n );\n\n return (\n <div\n className=\"plan-sketch rounded-[16px] border border-border bg-muted p-5\"\n dir={direction}\n data-text-direction={direction}\n >\n <div\n className=\"overflow-auto rounded-xl border border-border bg-background\"\n style={{ minHeight: canvasHeight }}\n >\n <div\n className=\"relative\"\n style={{ minHeight: canvasHeight, minWidth: canvasMinWidth }}\n >\n <svg\n className=\"pointer-events-none absolute inset-0 z-0 h-full w-full\"\n viewBox=\"0 0 100 100\"\n preserveAspectRatio=\"none\"\n aria-hidden=\"true\"\n >\n <defs>\n <marker\n id={arrowId}\n viewBox=\"0 0 10 10\"\n refX=\"8\"\n refY=\"5\"\n markerWidth=\"5\"\n markerHeight=\"5\"\n orient=\"auto-start-reverse\"\n >\n <path\n d=\"M 0 0 L 10 5 L 0 10 z\"\n className=\"fill-muted-foreground\"\n />\n </marker>\n </defs>\n {edges.map((edge, index) => {\n const from = nodeByIdForDirection.get(edge.from);\n const to = nodeByIdForDirection.get(edge.to);\n if (!from || !to) return null;\n return (\n <line\n key={`${edge.from}-${edge.to}-${index}`}\n x1={from.displayX}\n y1={from.displayY}\n x2={to.displayX}\n y2={to.displayY}\n markerEnd={`url(#${arrowId})`}\n vectorEffect=\"non-scaling-stroke\"\n className=\"stroke-border\"\n strokeWidth={2}\n strokeDasharray={edge.label ? \"0\" : \"6 5\"}\n />\n );\n })}\n </svg>\n\n {!compact &&\n edges.map((edge, index) => {\n const from = nodeByIdForDirection.get(edge.from);\n const to = nodeByIdForDirection.get(edge.to);\n if (!edge.label || !from || !to) return null;\n return (\n <span\n key={`${edge.from}-${edge.to}-${index}-label`}\n className=\"absolute z-10 max-w-[130px] -translate-x-1/2 -translate-y-1/2 rounded-full border border-border bg-background px-2 py-0.5 text-center text-[11px] font-semibold text-muted-foreground shadow-sm\"\n style={{\n left: `${(from.displayX + to.displayX) / 2}%`,\n top: `${(from.displayY + to.displayY) / 2}%`,\n }}\n >\n {edge.label}\n </span>\n );\n })}\n\n {displayNodesForDirection.map((node, index) => (\n <article\n key={node.id}\n className=\"absolute z-20 -translate-x-1/2 -translate-y-1/2 rounded-xl border-2 border-border bg-background p-3 text-foreground shadow-sm\"\n style={{\n left: `${node.displayX}%`,\n top: `${node.displayY}%`,\n width: nodeWidth,\n }}\n >\n <p className=\"text-[11px] font-semibold uppercase tracking-[0.12em] text-muted-foreground\">\n {index + 1}\n </p>\n <h3 className=\"mt-2 text-base font-semibold leading-tight\">\n {node.label}\n </h3>\n {node.detail && !compact && (\n <p className=\"mt-2 text-xs leading-5 text-muted-foreground\">\n {node.detail}\n </p>\n )}\n </article>\n ))}\n </div>\n </div>\n {data.notes && data.notes.length > 0 && !compact && (\n <div className=\"mt-4 grid gap-2 border-t border-border pt-4 text-sm text-muted-foreground md:grid-cols-2\">\n {data.notes.map((note) => (\n <p key={note.id}>{note.text}</p>\n ))}\n </div>\n )}\n </div>\n );\n}\n\ntype DiagramViewBox = {\n x: number;\n y: number;\n width: number;\n height: number;\n};\n\nfunction diagramViewBox(\n nodes: Array<Pick<DiagramNode, \"x\" | \"y\">>,\n nodeWidthPct: number,\n nodeHeightPct: number,\n): DiagramViewBox {\n if (nodes.length === 0) return { x: 0, y: 0, width: 100, height: 100 };\n\n const halfWidth = nodeWidthPct / 2;\n const halfHeight = nodeHeightPct / 2;\n const left = Math.min(...nodes.map((node) => (node.x ?? 50) - halfWidth));\n const right = Math.max(...nodes.map((node) => (node.x ?? 50) + halfWidth));\n const top = Math.min(...nodes.map((node) => (node.y ?? 50) - halfHeight));\n const bottom = Math.max(...nodes.map((node) => (node.y ?? 50) + halfHeight));\n\n const x = Math.min(0, left);\n const y = Math.min(0, top);\n const width = Math.max(100, right) - x;\n const height = Math.max(100, bottom) - y;\n\n return { x, y, width, height };\n}\n\nfunction diagramPointPercent(\n value: number,\n viewBoxStart: number,\n viewBoxSize: number,\n margin = 0,\n): number {\n if (\n !Number.isFinite(value) ||\n !Number.isFinite(viewBoxSize) ||\n !viewBoxSize\n ) {\n return 50;\n }\n const percent = ((value - viewBoxStart) / viewBoxSize) * 100;\n return Math.min(100 - margin, Math.max(margin, percent));\n}\n\nfunction diagramRows(\n nodes: Array<Pick<DiagramNode, \"y\">>,\n compact?: boolean,\n): number[] {\n const rowGap = compact ? 8 : 10;\n return [...nodes]\n .sort((a, b) => (a.y ?? 50) - (b.y ?? 50))\n .reduce<number[]>((acc, node) => {\n const y = node.y ?? 50;\n const last = acc[acc.length - 1];\n if (last == null || Math.abs(y - last) >= rowGap) acc.push(y);\n return acc;\n }, []);\n}\n\nfunction diagramRowPointPercent(\n value: number,\n rows: number[],\n viewBox: DiagramViewBox,\n margin: number,\n): number {\n if (rows.length <= 2) {\n return diagramPointPercent(value, viewBox.y, viewBox.height, margin);\n }\n const closestIndex = rows.reduce((bestIndex, row, index) => {\n const bestDistance = Math.abs((rows[bestIndex] ?? 50) - value);\n return Math.abs(row - value) < bestDistance ? index : bestIndex;\n }, 0);\n const span = 100 - margin * 2;\n return margin + (span * closestIndex) / Math.max(1, rows.length - 1);\n}\n\nfunction diagramCanvasHeight(rows: number, compact?: boolean): number {\n const base = compact ? 280 : 430;\n if (rows <= 2) return base;\n return Math.max(base, rows * (compact ? 140 : 190) + (compact ? 80 : 120));\n}\n\nfunction SequenceDiagram({\n data,\n compact,\n direction,\n}: {\n data: DiagramData;\n compact?: boolean;\n direction?: BlockRenderContext[\"textDirection\"];\n}) {\n const edges = data.edges ?? [];\n const nodes = orderDiagramNodes(data.nodes ?? [], edges);\n if (nodes.length === 0) {\n return (\n <div className=\"rounded-[12px] border border-border bg-muted p-4 text-sm text-muted-foreground\">\n Diagram content is empty.\n </div>\n );\n }\n const visualNodes = direction === \"rtl\" ? [...nodes].reverse() : nodes;\n return (\n <div\n className=\"plan-sketch rounded-[16px] border border-border bg-muted p-5\"\n dir={direction}\n data-text-direction={direction}\n >\n <div\n className={cn(\n \"flex gap-3 overflow-x-auto pb-2\",\n compact ? \"items-center\" : \"items-stretch\",\n )}\n >\n {visualNodes.map((node, index) => {\n const next = visualNodes[index + 1];\n const edge = next\n ? edges.find(\n (candidate) =>\n (candidate.from === node.id && candidate.to === next.id) ||\n (candidate.from === next.id && candidate.to === node.id),\n )\n : undefined;\n return (\n <div key={node.id} className=\"flex min-w-max items-center gap-3\">\n <article\n className={cn(\n \"w-[180px] rounded-xl border-2 border-border bg-background p-3 text-foreground\",\n compact && \"w-[150px]\",\n )}\n >\n <p className=\"text-[11px] font-semibold uppercase tracking-[0.12em] text-muted-foreground\">\n {index + 1}\n </p>\n <h3 className=\"mt-2 text-base font-semibold leading-tight\">\n {node.label}\n </h3>\n {node.detail && !compact && (\n <p className=\"mt-2 text-xs leading-5 text-muted-foreground\">\n {node.detail}\n </p>\n )}\n </article>\n {next && (\n <div className=\"grid min-w-[72px] justify-items-center gap-1 text-muted-foreground\">\n {edge?.label && (\n <span className=\"max-w-[96px] truncate rounded-full border border-border px-2 py-0.5 text-[11px] font-semibold\">\n {edge.label}\n </span>\n )}\n <span className=\"h-0.5 w-full rounded-full border-t-2 border-dashed border-border\" />\n </div>\n )}\n </div>\n );\n })}\n </div>\n {data.notes && data.notes.length > 0 && !compact && (\n <div className=\"mt-4 grid gap-2 border-t border-border pt-4 text-sm text-muted-foreground md:grid-cols-2\">\n {data.notes.map((note) => (\n <p key={note.id}>{note.text}</p>\n ))}\n </div>\n )}\n </div>\n );\n}\n\n/**\n * The diagram body. Routes to the preferred HTML/SVG path (when `data.html` is\n * set) and otherwise to a legacy node-graph path (positioned canvas when nodes\n * carry x/y, else an ordered sequence). Used both inline and, scaled up, inside\n * the expand lightbox — so every variant (html/css, positioned, sequence)\n * enlarges through the same code path.\n */\nfunction DiagramBody({\n data,\n ctx,\n compact,\n}: {\n data: DiagramData;\n ctx: BlockRenderContext;\n compact?: boolean;\n}) {\n const markerId = useId().replace(/:/g, \"\");\n if (data.html?.trim()) {\n return <HtmlDiagram data={data} ctx={ctx} compact={compact} />;\n }\n if (hasPositionedDiagramNodes(data)) {\n return (\n <PositionedDiagram\n data={data}\n compact={compact}\n markerId={markerId}\n direction={ctx.textDirection}\n />\n );\n }\n return (\n <SequenceDiagram\n data={data}\n compact={compact}\n direction={ctx.textDirection}\n />\n );\n}\n\n/* -------------------------------------------------------------------------- */\n/* Expand / lightbox */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Enlarge overlay for a rendered diagram. Mirrors the image lightbox contract\n * used by the composer's `ImagePreviewLightbox` (PromptComposer.tsx) so the\n * expand affordance feels identical to viewing an image full-size: a fixed\n * `bg-black/80` backdrop, Escape to close, click-the-backdrop to close, and a\n * top-right close button. Unlike the image variant this renders arbitrary\n * children (the diagram body re-rendered larger) rather than an `<img>`, since a\n * diagram is live HTML/SVG/node-graph markup, not an image URL.\n *\n * Exported so the separate Mermaid block (`MermaidBlock.tsx`, which renders its\n * diagram to an SVG through a different runtime) can reuse the exact same\n * lightbox contract — one expand affordance shared across both diagram types.\n */\nexport function DiagramLightbox({\n children,\n onClose,\n}: {\n children: React.ReactNode;\n onClose: () => void;\n}) {\n useEffect(() => {\n const handler = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose();\n };\n document.addEventListener(\"keydown\", handler);\n document.body.style.overflow = \"hidden\";\n return () => {\n document.removeEventListener(\"keydown\", handler);\n document.body.style.overflow = \"\";\n };\n }, [onClose]);\n\n return (\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Diagram preview\"\n onClick={onClose}\n data-plan-interactive\n className=\"fixed inset-0 z-[300] flex items-center justify-center overflow-auto bg-black/80 p-6 cursor-zoom-out\"\n >\n <div\n onClick={(e) => e.stopPropagation()}\n className=\"max-h-full w-full max-w-5xl cursor-default overflow-auto rounded-md bg-background p-6 shadow-2xl\"\n >\n {children}\n </div>\n <button\n type=\"button\"\n onClick={onClose}\n aria-label=\"Close preview\"\n className=\"absolute right-4 top-4 flex h-8 w-8 cursor-pointer items-center justify-center rounded-full border border-white/30 bg-black/40 text-white hover:bg-black/60\"\n >\n <IconX className=\"h-4 w-4\" />\n </button>\n </div>\n );\n}\n\n/**\n * The diagram body plus a hover-revealed top-right \"expand\" button (like the\n * image attachment zoom). Opening the button re-renders the exact same\n * `DiagramBody` inside `DiagramLightbox` at a larger size, so html/css and\n * mermaid/legacy node-graph diagrams alike enlarge through one path. The inline\n * (non-expanded) render is otherwise unchanged.\n */\nfunction ExpandableDiagramBody({\n data,\n ctx,\n compact,\n}: {\n data: DiagramData;\n ctx: BlockRenderContext;\n compact?: boolean;\n}) {\n const [expanded, setExpanded] = useState(false);\n const supportsStyleToggle = Boolean(data.html);\n const style = useWireframeStyle();\n const copy = useBlockCopy();\n const sketchy = style === \"sketchy\";\n const styleLabel = sketchy\n ? copy.switchToCleanDiagrams\n : copy.switchToHandDrawnDiagrams;\n const styleTooltip = sketchy\n ? copy.handDrawnDiagramsSwitch\n : copy.cleanDiagramsSwitch;\n return (\n <div className=\"group/diagram relative\">\n <DiagramBody data={data} ctx={ctx} compact={compact} />\n <TooltipProvider delayDuration={100} skipDelayDuration={0}>\n <div className=\"absolute right-2 top-2 z-10 flex items-center gap-1.5\">\n {supportsStyleToggle && (\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n data-plan-interactive\n onClick={() => toggleWireframeStyle()}\n aria-label={styleLabel}\n aria-pressed={sketchy}\n className=\"an-diagram-style-trigger flex size-7 items-center justify-center rounded-md border border-border/60 bg-background/90 text-muted-foreground opacity-0 shadow-sm backdrop-blur transition-[color,opacity] hover:text-foreground focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring group-hover/diagram:opacity-100\"\n >\n {sketchy ? (\n <IconScribble className=\"size-4\" />\n ) : (\n <IconShape2 className=\"size-4\" />\n )}\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"left\">{styleTooltip}</TooltipContent>\n </Tooltip>\n )}\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n data-plan-interactive\n onClick={() => setExpanded(true)}\n aria-label={copy.expandDiagram}\n className=\"an-diagram-expand-trigger flex size-7 items-center justify-center rounded-md border border-border/60 bg-background/90 text-muted-foreground opacity-0 shadow-sm backdrop-blur transition-[color,opacity] hover:text-foreground focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring group-hover/diagram:opacity-100\"\n >\n <IconArrowsMaximize className=\"size-4\" />\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"left\">{copy.expandDiagram}</TooltipContent>\n </Tooltip>\n </div>\n </TooltipProvider>\n {expanded ? (\n <DiagramLightbox onClose={() => setExpanded(false)}>\n <DiagramBody data={data} ctx={ctx} />\n </DiagramLightbox>\n ) : null}\n </div>\n );\n}\n\n/* -------------------------------------------------------------------------- */\n/* Read + Edit */\n/* -------------------------------------------------------------------------- */\n\n/** Read-only renderer: the diagram body wrapped in the standard titled block. */\nexport function DiagramRead({\n data,\n blockId,\n title,\n summary,\n ctx,\n compactVisuals,\n}: BlockReadProps<DiagramData>) {\n return (\n <section\n {...ltrCodeBlockProps}\n className=\"an-block plan-block\"\n data-block-id={blockId}\n >\n {title && <div className=\"an-block-label plan-block-label\">{title}</div>}\n <ExpandableDiagramBody data={data} ctx={ctx} compact={compactVisuals} />\n {summary && <p className=\"mt-5 text-muted-foreground\">{summary}</p>}\n </section>\n );\n}\n\n/**\n * Edit form (panel surface). The block can be an HTML/SVG fragment or a legacy\n * node/edge/note graph, so this exposes html/css/caption plus a collapsible\n * legacy node-graph JSON editor, each with an AI-edit affordance via\n * `ctx.renderAiFieldAction` (through `AiEditableFieldLabel`). `editSurface:\n * \"panel\"` means the registry renders the `Read` view with a corner edit button\n * that opens this form in the app-provided popover.\n */\nexport function DiagramEdit({\n data,\n onChange,\n editable,\n blockId,\n title,\n summary,\n ctx,\n}: BlockEditProps<DiagramData>) {\n const htmlId = useId();\n const cssId = useId();\n const captionId = useId();\n const legacyId = useId();\n const [html, setHtml] = useState(data.html ?? \"\");\n const [css, setCss] = useState(data.css ?? \"\");\n const [caption, setCaption] = useState(data.caption ?? \"\");\n const [legacyJson, setLegacyJson] = useState(() =>\n JSON.stringify(\n {\n nodes: data.nodes ?? [],\n edges: data.edges ?? [],\n notes: data.notes ?? [],\n },\n null,\n 2,\n ),\n );\n\n useEffect(() => {\n setHtml(data.html ?? \"\");\n setCss(data.css ?? \"\");\n setCaption(data.caption ?? \"\");\n setLegacyJson(\n JSON.stringify(\n {\n nodes: data.nodes ?? [],\n edges: data.edges ?? [],\n notes: data.notes ?? [],\n },\n null,\n 2,\n ),\n );\n }, [data]);\n\n const saveHtmlDiagram = () => {\n onChange({\n html: html.trim() || undefined,\n css: css.trim() || undefined,\n caption: caption.trim() || undefined,\n nodes: data.nodes,\n edges: data.edges,\n notes: data.notes,\n });\n };\n\n const saveLegacyDiagram = () => {\n const parsed = JSON.parse(legacyJson) as Pick<\n DiagramData,\n \"nodes\" | \"edges\" | \"notes\"\n >;\n onChange({\n ...data,\n nodes: parsed.nodes ?? [],\n edges: parsed.edges ?? [],\n notes: parsed.notes ?? [],\n });\n };\n\n const fieldAction = (\n field: \"HTML / SVG fragment\" | \"CSS\" | \"caption\" | \"legacy node graph JSON\",\n value: string,\n ) => ({\n blockId,\n blockType: \"diagram\",\n blockTitle: title,\n blockSummary: summary,\n fieldValue: value,\n draftScope: `block:diagram:${blockId}:${field.toLowerCase().replace(/[^a-z0-9]+/g, \"-\")}`,\n disabled: !editable,\n instructions:\n \"Update the plan with update-visual-plan using a targeted update-block content patch for this diagram block id. Preserve unrelated diagram fields unless the requested edit requires changing them. Keep diagram HTML/CSS on renderer-owned .diagram-* primitives and --wf-* tokens; do not introduce custom font-family or hard-coded hex/rgb/hsl colors.\",\n companionFields: [\n {\n label: \"HTML / SVG fragment\",\n value: html.trim() || \"(empty)\",\n language: \"html\",\n },\n { label: \"CSS\", value: css.trim() || \"(empty)\", language: \"css\" },\n {\n label: \"caption\",\n value: caption.trim() || \"(empty)\",\n language: \"text\",\n },\n ],\n });\n\n return (\n <div className=\"grid gap-4\" data-plan-interactive>\n <button\n type=\"button\"\n className=\"inline-flex h-8 w-fit items-center justify-center rounded-md bg-primary px-3 text-xs font-medium text-primary-foreground disabled:opacity-50\"\n disabled={!editable}\n onClick={saveHtmlDiagram}\n >\n Save diagram\n </button>\n <div className=\"group/field grid gap-1.5\">\n <AiEditableFieldLabel\n htmlFor={htmlId}\n label=\"HTML / SVG fragment\"\n ctx={ctx}\n action={fieldAction(\"HTML / SVG fragment\", html)}\n />\n <textarea\n id={htmlId}\n className=\"min-h-48 w-full rounded-md border border-input bg-background px-3 py-2 font-mono text-xs leading-5 text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n value={html}\n disabled={!editable}\n onChange={(event) => setHtml(event.target.value)}\n placeholder=\"<div class='diagram'>...</div>\"\n />\n </div>\n <div className=\"group/field grid gap-1.5\">\n <AiEditableFieldLabel\n htmlFor={cssId}\n label=\"CSS\"\n ctx={ctx}\n action={fieldAction(\"CSS\", css)}\n />\n <textarea\n id={cssId}\n className=\"min-h-32 w-full rounded-md border border-input bg-background px-3 py-2 font-mono text-xs leading-5 text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n value={css}\n disabled={!editable}\n onChange={(event) => setCss(event.target.value)}\n placeholder=\".diagram { display: grid; }\"\n />\n </div>\n <div className=\"group/field grid gap-1.5\">\n <AiEditableFieldLabel\n htmlFor={captionId}\n label=\"Caption\"\n ctx={ctx}\n action={fieldAction(\"caption\", caption)}\n />\n <input\n id={captionId}\n className=\"h-9 w-full rounded-md border border-input bg-background px-3 text-sm text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n value={caption}\n disabled={!editable}\n onChange={(event) => setCaption(event.target.value)}\n />\n </div>\n {!data.html && (\n <details className=\"rounded-md border border-border p-3\">\n <summary className=\"cursor-pointer text-xs font-semibold text-muted-foreground\">\n Legacy node graph data\n </summary>\n <div className=\"group/field mt-3 grid gap-1.5\">\n <AiEditableFieldLabel\n htmlFor={legacyId}\n label=\"JSON\"\n ctx={ctx}\n action={fieldAction(\"legacy node graph JSON\", legacyJson)}\n />\n <textarea\n id={legacyId}\n className=\"min-h-44 w-full rounded-md border border-input bg-background px-3 py-2 font-mono text-xs leading-5 text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n value={legacyJson}\n disabled={!editable}\n onChange={(event) => setLegacyJson(event.target.value)}\n />\n </div>\n <button\n type=\"button\"\n className=\"mt-3 inline-flex h-8 items-center justify-center rounded-md border border-input px-3 text-xs font-medium text-foreground disabled:opacity-50\"\n disabled={!editable}\n onClick={saveLegacyDiagram}\n >\n Save graph data\n </button>\n </details>\n )}\n </div>\n );\n}\n\n/** Full client spec for the shared `diagram` block (schema + MDX + Read/Edit). */\nexport const diagramBlock = defineBlock<DiagramData>({\n type: \"diagram\",\n schema: diagramSchema,\n mdx: diagramMdx,\n Read: DiagramRead,\n Edit: DiagramEdit,\n placement: [\"block\"],\n // Config-driven: the rendered diagram differs from its raw html/css source, so\n // edit from a corner button + panel rather than inline.\n editSurface: \"panel\",\n label: \"Diagram\",\n description:\n \"A flexible inline architecture/code diagram. Prefer html/css with SVG or semantic HTML for polished two-dimensional layouts; use .diagram-* primitives and --wf-* tokens for theme/sketch compatibility. Legacy nodes/edges are only for simple previews.\",\n // Seed the legacy fallback shape so a fresh block validates while agents can\n // replace it with html/css when layout quality matters.\n empty: () => ({ nodes: [{ id: \"n1\", label: \"Module\" }], edges: [] }),\n});\n"]}
1
+ {"version":3,"file":"diagram.js","sourceRoot":"","sources":["../../../../src/client/blocks/library/diagram.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n IconArrowsMaximize,\n IconScribble,\n IconShape2,\n IconX,\n} from \"@tabler/icons-react\";\nimport { useEffect, useId, useMemo, useRef, useState } from \"react\";\n\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../../components/ui/tooltip.js\";\nimport { cn } from \"../../utils.js\";\nimport { AiEditableFieldLabel } from \"../AiEditableField.js\";\nimport { ltrCodeBlockProps } from \"../code-block-direction.js\";\nimport { defineBlock } from \"../types.js\";\nimport type {\n BlockReadProps,\n BlockEditProps,\n BlockRenderContext,\n} from \"../types.js\";\nimport { useBlockCopy } from \"./block-copy.js\";\nimport {\n diagramMdx,\n diagramSchema,\n type DiagramData,\n type DiagramEdge,\n type DiagramNode,\n} from \"./diagram.config.js\";\nimport {\n sanitizeDiagramHtml,\n sanitizeWireframeCss,\n scopeDesignCss,\n} from \"./sanitize-html.js\";\nimport {\n RoughOverlay,\n toggleWireframeStyle,\n useIsDark,\n useWireframeStyle,\n} from \"./wireframe-kit.js\";\n\n/**\n * Read + Edit renderers for the shared `diagram` block — a flexible inline\n * architecture/code diagram. The preferred authoring path is a scoped, inert\n * HTML/SVG fragment that leans on `.diagram-*` primitives and `--wf-*` tokens;\n * a legacy positional / sequence node-graph path is kept for older/simple plans.\n * Lives in core so any app can register it (it originated in the plan template).\n *\n * DECOUPLING from the plan original (mirrors the sibling `wireframe.tsx` port):\n * - Theme: `useIsDark()` reads `document.documentElement.classList` instead of\n * `next-themes`; `useWireframeStyle()` reads the viewer's sketchy/clean\n * preference from the shared `plan-wireframe-style` localStorage key — both\n * from `./wireframe-kit.js`, so core stays plan-free and shadcn-free.\n * - HTML sanitize: the HTML/SVG fragment + CSS run through the app-injected\n * `ctx.sanitizeHtml` at the render point (defense-in-depth against stored\n * XSS). Without a sanitizer wired, the HTML path emits nothing — core never\n * injects unsanitized author HTML. The React-free `diagramSchema` already\n * rejects active markup before storage.\n * - The rough.js sketch overlay reuses the kit's shared `RoughOverlay`, scoped\n * with the diagram selector and `drawFrame={false}` (the same call the plan\n * `HtmlDiagram` made). The `.plan-diagram-frame` / `.diagram-*` / `data-rough`\n * class contract is preserved exactly so the theme-token CSS in core's\n * `blocks.css` styles it in any app.\n *\n * The section carries the app-neutral `an-block` class plus the legacy\n * `plan-block` class so plan renders byte-identically while any other app gets\n * the theme-token treatment.\n */\n\n/* -------------------------------------------------------------------------- */\n/* HTML/SVG diagram path */\n/* -------------------------------------------------------------------------- */\n\n/** The rough-overlay selector for diagram bordered boxes (mirrors the plan). */\nconst DIAGRAM_ROUGH_SELECTOR =\n \"[data-rough],.diagram-panel,.diagram-node,.diagram-box,.diagram-pill,.diagram-card,[class*='card'],[class*='box'],[class*='panel'],[class*='pill'],[class*='chip'],[class*='badge'],hr\";\n\nfunction HtmlDiagram({\n data,\n ctx,\n compact,\n}: {\n data: DiagramData;\n ctx: BlockRenderContext;\n compact?: boolean;\n}) {\n const ref = useRef<HTMLDivElement>(null);\n const isDark = useIsDark();\n const style = useWireframeStyle();\n const scopeId = useId().replace(/[^a-zA-Z0-9_-]/g, \"\");\n // Sanitize author HTML/CSS at the render point (defense-in-depth against\n // stored XSS). Self-contained in core via the shared block sanitizer (DOM-based\n // in the browser, regex fallback on the server) so diagrams render in any app\n // without the host wiring a sanitizer hook.\n const safeHtml = useMemo(() => sanitizeDiagramHtml(data.html), [data.html]);\n const scopedCss = useMemo(() => {\n const safeCss = sanitizeWireframeCss(data.css);\n // Scope every author selector under this diagram instance so global\n // selectors (body, *, .app-shell, :root) can't escape and restyle the page.\n return safeCss\n ? scopeDesignCss(safeCss, `[data-plan-diagram-scope=\"${scopeId}\"]`)\n : \"\";\n }, [data.css, scopeId]);\n\n return (\n <div\n ref={ref}\n className={cn(\"plan-diagram-shell\", compact && \"plan-diagram-compact\")}\n >\n <div\n className=\"plan-diagram-frame\"\n dir={ctx.textDirection}\n data-theme={isDark ? \"dark\" : \"light\"}\n data-style={style}\n data-text-direction={ctx.textDirection}\n data-plan-diagram-scope={scopeId}\n >\n {scopedCss && <style>{scopedCss}</style>}\n <div\n className=\"plan-diagram-frame-content\"\n dangerouslySetInnerHTML={{ __html: safeHtml }}\n />\n </div>\n <RoughOverlay\n scopeRef={ref}\n enabled={style === \"sketchy\"}\n drawFrame={false}\n selector={DIAGRAM_ROUGH_SELECTOR}\n />\n {data.caption && !compact && (\n <p className=\"mt-3 text-sm leading-6 text-muted-foreground\">\n {data.caption}\n </p>\n )}\n </div>\n );\n}\n\n/* -------------------------------------------------------------------------- */\n/* Legacy node-graph paths */\n/* -------------------------------------------------------------------------- */\n\nfunction clampDiagramPercent(value: number) {\n if (!Number.isFinite(value)) return 50;\n return Math.max(4, Math.min(96, value));\n}\n\nfunction hasPositionedDiagramNodes(data: DiagramData): boolean {\n return (data.nodes ?? []).some(\n (node) => typeof node.x === \"number\" && typeof node.y === \"number\",\n );\n}\n\nfunction orderDiagramNodes(\n nodes: DiagramNode[],\n edges: DiagramEdge[],\n): DiagramNode[] {\n if (nodes.length === 0) return [];\n const byId = new Map(nodes.map((node) => [node.id, node]));\n const indegree = new Map(nodes.map((node) => [node.id, 0]));\n for (const edge of edges) {\n if (byId.has(edge.from) && byId.has(edge.to)) {\n indegree.set(edge.to, (indegree.get(edge.to) ?? 0) + 1);\n }\n }\n const start = nodes.find((node) => (indegree.get(node.id) ?? 0) === 0);\n if (!start) return nodes;\n const ordered: DiagramNode[] = [];\n const seen = new Set<string>();\n let current: DiagramNode | undefined = start;\n while (current && !seen.has(current.id)) {\n const node: DiagramNode = current;\n ordered.push(node);\n seen.add(node.id);\n const next = edges.find((edge) => edge.from === node.id);\n current = next ? byId.get(next.to) : undefined;\n }\n for (const node of nodes) if (!seen.has(node.id)) ordered.push(node);\n return ordered;\n}\n\nfunction PositionedDiagram({\n data,\n compact,\n markerId,\n direction,\n}: {\n data: DiagramData;\n compact?: boolean;\n markerId: string;\n direction?: BlockRenderContext[\"textDirection\"];\n}) {\n const nodes = (data.nodes ?? []).map((node) => ({\n ...node,\n x: clampDiagramPercent(node.x ?? 50),\n y: clampDiagramPercent(node.y ?? 50),\n }));\n const edges = data.edges ?? [];\n const arrowId = `${markerId}-diagram-arrow`;\n const nodeWidth = compact ? 150 : 190;\n const rows = diagramRows(nodes, compact);\n const canvasHeight = diagramCanvasHeight(rows.length, compact);\n const canvasMinWidth = compact ? 560 : 720;\n const nodeWidthPct = compact ? 20 : 18;\n const nodeHeightPct = compact ? 14 : 18;\n const paddedViewBox = diagramViewBox(nodes, nodeWidthPct, nodeHeightPct);\n const xMargin = compact ? 13 : 14;\n const yMargin = compact ? 15 : 18;\n const displayNodes = nodes.map((node) => ({\n ...node,\n displayXBase: diagramPointPercent(\n node.x,\n paddedViewBox.x,\n paddedViewBox.width,\n xMargin,\n ),\n displayY: diagramRowPointPercent(node.y, rows, paddedViewBox, yMargin),\n }));\n const displayNodesForDirection = displayNodes.map((node) => ({\n ...node,\n displayX: direction === \"rtl\" ? 100 - node.displayXBase : node.displayXBase,\n }));\n const nodeByIdForDirection = new Map(\n displayNodesForDirection.map((node) => [node.id, node]),\n );\n\n return (\n <div\n className=\"plan-sketch rounded-[16px] border border-border bg-muted p-5\"\n dir={direction}\n data-text-direction={direction}\n >\n <div\n className=\"overflow-auto rounded-xl border border-border bg-background\"\n style={{ minHeight: canvasHeight }}\n >\n <div\n className=\"relative\"\n style={{ minHeight: canvasHeight, minWidth: canvasMinWidth }}\n >\n <svg\n className=\"pointer-events-none absolute inset-0 z-0 h-full w-full\"\n viewBox=\"0 0 100 100\"\n preserveAspectRatio=\"none\"\n aria-hidden=\"true\"\n >\n <defs>\n <marker\n id={arrowId}\n viewBox=\"0 0 10 10\"\n refX=\"8\"\n refY=\"5\"\n markerWidth=\"5\"\n markerHeight=\"5\"\n orient=\"auto-start-reverse\"\n >\n <path\n d=\"M 0 0 L 10 5 L 0 10 z\"\n className=\"fill-muted-foreground\"\n />\n </marker>\n </defs>\n {edges.map((edge, index) => {\n const from = nodeByIdForDirection.get(edge.from);\n const to = nodeByIdForDirection.get(edge.to);\n if (!from || !to) return null;\n return (\n <line\n key={`${edge.from}-${edge.to}-${index}`}\n x1={from.displayX}\n y1={from.displayY}\n x2={to.displayX}\n y2={to.displayY}\n markerEnd={`url(#${arrowId})`}\n vectorEffect=\"non-scaling-stroke\"\n className=\"stroke-border\"\n strokeWidth={2}\n strokeDasharray={edge.label ? \"0\" : \"6 5\"}\n />\n );\n })}\n </svg>\n\n {!compact &&\n edges.map((edge, index) => {\n const from = nodeByIdForDirection.get(edge.from);\n const to = nodeByIdForDirection.get(edge.to);\n if (!edge.label || !from || !to) return null;\n return (\n <span\n key={`${edge.from}-${edge.to}-${index}-label`}\n className=\"absolute z-10 max-w-[130px] -translate-x-1/2 -translate-y-1/2 rounded-full border border-border bg-background px-2 py-0.5 text-center text-[11px] font-semibold text-muted-foreground shadow-sm\"\n style={{\n left: `${(from.displayX + to.displayX) / 2}%`,\n top: `${(from.displayY + to.displayY) / 2}%`,\n }}\n >\n {edge.label}\n </span>\n );\n })}\n\n {displayNodesForDirection.map((node, index) => (\n <article\n key={node.id}\n className=\"absolute z-20 -translate-x-1/2 -translate-y-1/2 rounded-xl border-2 border-border bg-background p-3 text-foreground shadow-sm\"\n style={{\n left: `${node.displayX}%`,\n top: `${node.displayY}%`,\n width: nodeWidth,\n }}\n >\n <p className=\"text-[11px] font-semibold uppercase tracking-[0.12em] text-muted-foreground\">\n {index + 1}\n </p>\n <h3 className=\"mt-2 text-base font-semibold leading-tight\">\n {node.label}\n </h3>\n {node.detail && !compact && (\n <p className=\"mt-2 text-xs leading-5 text-muted-foreground\">\n {node.detail}\n </p>\n )}\n </article>\n ))}\n </div>\n </div>\n {data.notes && data.notes.length > 0 && !compact && (\n <div className=\"mt-4 grid gap-2 border-t border-border pt-4 text-sm text-muted-foreground md:grid-cols-2\">\n {data.notes.map((note) => (\n <p key={note.id}>{note.text}</p>\n ))}\n </div>\n )}\n </div>\n );\n}\n\ntype DiagramViewBox = {\n x: number;\n y: number;\n width: number;\n height: number;\n};\n\nfunction diagramViewBox(\n nodes: Array<Pick<DiagramNode, \"x\" | \"y\">>,\n nodeWidthPct: number,\n nodeHeightPct: number,\n): DiagramViewBox {\n if (nodes.length === 0) return { x: 0, y: 0, width: 100, height: 100 };\n\n const halfWidth = nodeWidthPct / 2;\n const halfHeight = nodeHeightPct / 2;\n const left = Math.min(...nodes.map((node) => (node.x ?? 50) - halfWidth));\n const right = Math.max(...nodes.map((node) => (node.x ?? 50) + halfWidth));\n const top = Math.min(...nodes.map((node) => (node.y ?? 50) - halfHeight));\n const bottom = Math.max(...nodes.map((node) => (node.y ?? 50) + halfHeight));\n\n const x = Math.min(0, left);\n const y = Math.min(0, top);\n const width = Math.max(100, right) - x;\n const height = Math.max(100, bottom) - y;\n\n return { x, y, width, height };\n}\n\nfunction diagramPointPercent(\n value: number,\n viewBoxStart: number,\n viewBoxSize: number,\n margin = 0,\n): number {\n if (\n !Number.isFinite(value) ||\n !Number.isFinite(viewBoxSize) ||\n !viewBoxSize\n ) {\n return 50;\n }\n const percent = ((value - viewBoxStart) / viewBoxSize) * 100;\n return Math.min(100 - margin, Math.max(margin, percent));\n}\n\nfunction diagramRows(\n nodes: Array<Pick<DiagramNode, \"y\">>,\n compact?: boolean,\n): number[] {\n const rowGap = compact ? 8 : 10;\n return [...nodes]\n .sort((a, b) => (a.y ?? 50) - (b.y ?? 50))\n .reduce<number[]>((acc, node) => {\n const y = node.y ?? 50;\n const last = acc[acc.length - 1];\n if (last == null || Math.abs(y - last) >= rowGap) acc.push(y);\n return acc;\n }, []);\n}\n\nfunction diagramRowPointPercent(\n value: number,\n rows: number[],\n viewBox: DiagramViewBox,\n margin: number,\n): number {\n if (rows.length <= 2) {\n return diagramPointPercent(value, viewBox.y, viewBox.height, margin);\n }\n const closestIndex = rows.reduce((bestIndex, row, index) => {\n const bestDistance = Math.abs((rows[bestIndex] ?? 50) - value);\n return Math.abs(row - value) < bestDistance ? index : bestIndex;\n }, 0);\n const span = 100 - margin * 2;\n return margin + (span * closestIndex) / Math.max(1, rows.length - 1);\n}\n\nfunction diagramCanvasHeight(rows: number, compact?: boolean): number {\n const base = compact ? 280 : 430;\n if (rows <= 2) return base;\n return Math.max(base, rows * (compact ? 140 : 190) + (compact ? 80 : 120));\n}\n\nfunction SequenceDiagram({\n data,\n compact,\n direction,\n}: {\n data: DiagramData;\n compact?: boolean;\n direction?: BlockRenderContext[\"textDirection\"];\n}) {\n const edges = data.edges ?? [];\n const nodes = orderDiagramNodes(data.nodes ?? [], edges);\n if (nodes.length === 0) {\n return (\n <div className=\"rounded-[12px] border border-border bg-muted p-4 text-sm text-muted-foreground\">\n Diagram content is empty.\n </div>\n );\n }\n const visualNodes = direction === \"rtl\" ? [...nodes].reverse() : nodes;\n return (\n <div\n className=\"plan-sketch rounded-[16px] border border-border bg-muted p-5\"\n dir={direction}\n data-text-direction={direction}\n >\n <div\n className={cn(\n \"flex gap-3 overflow-x-auto pb-2\",\n compact ? \"items-center\" : \"items-stretch\",\n )}\n >\n {visualNodes.map((node, index) => {\n const next = visualNodes[index + 1];\n const edge = next\n ? edges.find(\n (candidate) =>\n (candidate.from === node.id && candidate.to === next.id) ||\n (candidate.from === next.id && candidate.to === node.id),\n )\n : undefined;\n return (\n <div key={node.id} className=\"flex min-w-max items-center gap-3\">\n <article\n className={cn(\n \"w-[180px] rounded-xl border-2 border-border bg-background p-3 text-foreground\",\n compact && \"w-[150px]\",\n )}\n >\n <p className=\"text-[11px] font-semibold uppercase tracking-[0.12em] text-muted-foreground\">\n {index + 1}\n </p>\n <h3 className=\"mt-2 text-base font-semibold leading-tight\">\n {node.label}\n </h3>\n {node.detail && !compact && (\n <p className=\"mt-2 text-xs leading-5 text-muted-foreground\">\n {node.detail}\n </p>\n )}\n </article>\n {next && (\n <div className=\"grid min-w-[72px] justify-items-center gap-1 text-muted-foreground\">\n {edge?.label && (\n <span className=\"max-w-[96px] truncate rounded-full border border-border px-2 py-0.5 text-[11px] font-semibold\">\n {edge.label}\n </span>\n )}\n <span className=\"h-0.5 w-full rounded-full border-t-2 border-dashed border-border\" />\n </div>\n )}\n </div>\n );\n })}\n </div>\n {data.notes && data.notes.length > 0 && !compact && (\n <div className=\"mt-4 grid gap-2 border-t border-border pt-4 text-sm text-muted-foreground md:grid-cols-2\">\n {data.notes.map((note) => (\n <p key={note.id}>{note.text}</p>\n ))}\n </div>\n )}\n </div>\n );\n}\n\n/**\n * The diagram body. Routes to the preferred HTML/SVG path (when `data.html` is\n * set) and otherwise to a legacy node-graph path (positioned canvas when nodes\n * carry x/y, else an ordered sequence). Used both inline and, scaled up, inside\n * the expand lightbox — so every variant (html/css, positioned, sequence)\n * enlarges through the same code path.\n */\nfunction DiagramBody({\n data,\n ctx,\n compact,\n}: {\n data: DiagramData;\n ctx: BlockRenderContext;\n compact?: boolean;\n}) {\n const markerId = useId().replace(/:/g, \"\");\n if (data.html?.trim()) {\n return <HtmlDiagram data={data} ctx={ctx} compact={compact} />;\n }\n if (hasPositionedDiagramNodes(data)) {\n return (\n <PositionedDiagram\n data={data}\n compact={compact}\n markerId={markerId}\n direction={ctx.textDirection}\n />\n );\n }\n return (\n <SequenceDiagram\n data={data}\n compact={compact}\n direction={ctx.textDirection}\n />\n );\n}\n\n/* -------------------------------------------------------------------------- */\n/* Expand / lightbox */\n/* -------------------------------------------------------------------------- */\n\n/**\n * Enlarge overlay for a rendered diagram. Mirrors the image lightbox contract\n * used by the composer's `ImagePreviewLightbox` (PromptComposer.tsx) so the\n * expand affordance feels identical to viewing an image full-size: a fixed\n * `bg-black/80` backdrop, Escape to close, click-the-backdrop to close, and a\n * top-right close button. Unlike the image variant this renders arbitrary\n * children (the diagram body re-rendered larger) rather than an `<img>`, since a\n * diagram is live HTML/SVG/node-graph markup, not an image URL.\n *\n * Exported so the separate Mermaid block (`MermaidBlock.tsx`, which renders its\n * diagram to an SVG through a different runtime) can reuse the exact same\n * lightbox contract — one expand affordance shared across both diagram types.\n */\nexport function DiagramLightbox({\n children,\n onClose,\n}: {\n children: React.ReactNode;\n onClose: () => void;\n}) {\n useEffect(() => {\n const handler = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose();\n };\n document.addEventListener(\"keydown\", handler);\n document.body.style.overflow = \"hidden\";\n return () => {\n document.removeEventListener(\"keydown\", handler);\n document.body.style.overflow = \"\";\n };\n }, [onClose]);\n\n return (\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Diagram preview\"\n onClick={onClose}\n data-plan-interactive\n className=\"fixed inset-0 z-[300] flex items-center justify-center overflow-auto bg-black/80 p-6 cursor-zoom-out\"\n >\n <div\n onClick={(e) => e.stopPropagation()}\n className=\"max-h-full w-full max-w-5xl cursor-default overflow-auto rounded-md bg-background p-6 shadow-2xl\"\n >\n {children}\n </div>\n <button\n type=\"button\"\n onClick={onClose}\n aria-label=\"Close preview\"\n className=\"absolute right-4 top-4 flex h-8 w-8 cursor-pointer items-center justify-center rounded-full border border-white/30 bg-black/40 text-white hover:bg-black/60\"\n >\n <IconX className=\"h-4 w-4\" />\n </button>\n </div>\n );\n}\n\n/**\n * The diagram body plus a hover-revealed top-right \"expand\" button (like the\n * image attachment zoom). Opening the button re-renders the exact same\n * `DiagramBody` inside `DiagramLightbox` at a larger size, so html/css and\n * mermaid/legacy node-graph diagrams alike enlarge through one path. The inline\n * (non-expanded) render is otherwise unchanged.\n */\nfunction ExpandableDiagramBody({\n data,\n ctx,\n compact,\n}: {\n data: DiagramData;\n ctx: BlockRenderContext;\n compact?: boolean;\n}) {\n const [expanded, setExpanded] = useState(false);\n const supportsStyleToggle = Boolean(data.html);\n const style = useWireframeStyle();\n const copy = useBlockCopy();\n const sketchy = style === \"sketchy\";\n const styleLabel = sketchy\n ? copy.switchToCleanDiagrams\n : copy.switchToHandDrawnDiagrams;\n const styleTooltip = sketchy\n ? copy.handDrawnDiagramsSwitch\n : copy.cleanDiagramsSwitch;\n return (\n <div className=\"group/diagram relative\">\n <DiagramBody data={data} ctx={ctx} compact={compact} />\n <TooltipProvider delayDuration={100} skipDelayDuration={0}>\n <div className=\"absolute right-2 top-2 z-10 flex items-center gap-1.5\">\n {supportsStyleToggle && (\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n data-plan-interactive\n onClick={() => toggleWireframeStyle()}\n aria-label={styleLabel}\n aria-pressed={sketchy}\n className=\"an-diagram-style-trigger flex size-7 items-center justify-center rounded-md border border-border/60 bg-background text-muted-foreground opacity-0 shadow-sm transition-[color,opacity] hover:text-foreground focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring group-hover/diagram:opacity-100\"\n >\n {sketchy ? (\n <IconScribble className=\"size-4\" />\n ) : (\n <IconShape2 className=\"size-4\" />\n )}\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"left\">{styleTooltip}</TooltipContent>\n </Tooltip>\n )}\n <Tooltip>\n <TooltipTrigger asChild>\n <button\n type=\"button\"\n data-plan-interactive\n onClick={() => setExpanded(true)}\n aria-label={copy.expandDiagram}\n className=\"an-diagram-expand-trigger flex size-7 items-center justify-center rounded-md border border-border/60 bg-background text-muted-foreground opacity-0 shadow-sm transition-[color,opacity] hover:text-foreground focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring group-hover/diagram:opacity-100\"\n >\n <IconArrowsMaximize className=\"size-4\" />\n </button>\n </TooltipTrigger>\n <TooltipContent side=\"left\">{copy.expandDiagram}</TooltipContent>\n </Tooltip>\n </div>\n </TooltipProvider>\n {expanded ? (\n <DiagramLightbox onClose={() => setExpanded(false)}>\n <DiagramBody data={data} ctx={ctx} />\n </DiagramLightbox>\n ) : null}\n </div>\n );\n}\n\n/* -------------------------------------------------------------------------- */\n/* Read + Edit */\n/* -------------------------------------------------------------------------- */\n\n/** Read-only renderer: the diagram body wrapped in the standard titled block. */\nexport function DiagramRead({\n data,\n blockId,\n title,\n summary,\n ctx,\n compactVisuals,\n}: BlockReadProps<DiagramData>) {\n return (\n <section\n {...ltrCodeBlockProps}\n className=\"an-block plan-block\"\n data-block-id={blockId}\n >\n {title && <div className=\"an-block-label plan-block-label\">{title}</div>}\n <ExpandableDiagramBody data={data} ctx={ctx} compact={compactVisuals} />\n {summary && <p className=\"mt-5 text-muted-foreground\">{summary}</p>}\n </section>\n );\n}\n\n/**\n * Edit form (panel surface). The block can be an HTML/SVG fragment or a legacy\n * node/edge/note graph, so this exposes html/css/caption plus a collapsible\n * legacy node-graph JSON editor, each with an AI-edit affordance via\n * `ctx.renderAiFieldAction` (through `AiEditableFieldLabel`). `editSurface:\n * \"panel\"` means the registry renders the `Read` view with a corner edit button\n * that opens this form in the app-provided popover.\n */\nexport function DiagramEdit({\n data,\n onChange,\n editable,\n blockId,\n title,\n summary,\n ctx,\n}: BlockEditProps<DiagramData>) {\n const htmlId = useId();\n const cssId = useId();\n const captionId = useId();\n const legacyId = useId();\n const [html, setHtml] = useState(data.html ?? \"\");\n const [css, setCss] = useState(data.css ?? \"\");\n const [caption, setCaption] = useState(data.caption ?? \"\");\n const [legacyJson, setLegacyJson] = useState(() =>\n JSON.stringify(\n {\n nodes: data.nodes ?? [],\n edges: data.edges ?? [],\n notes: data.notes ?? [],\n },\n null,\n 2,\n ),\n );\n\n useEffect(() => {\n setHtml(data.html ?? \"\");\n setCss(data.css ?? \"\");\n setCaption(data.caption ?? \"\");\n setLegacyJson(\n JSON.stringify(\n {\n nodes: data.nodes ?? [],\n edges: data.edges ?? [],\n notes: data.notes ?? [],\n },\n null,\n 2,\n ),\n );\n }, [data]);\n\n const saveHtmlDiagram = () => {\n onChange({\n html: html.trim() || undefined,\n css: css.trim() || undefined,\n caption: caption.trim() || undefined,\n nodes: data.nodes,\n edges: data.edges,\n notes: data.notes,\n });\n };\n\n const saveLegacyDiagram = () => {\n const parsed = JSON.parse(legacyJson) as Pick<\n DiagramData,\n \"nodes\" | \"edges\" | \"notes\"\n >;\n onChange({\n ...data,\n nodes: parsed.nodes ?? [],\n edges: parsed.edges ?? [],\n notes: parsed.notes ?? [],\n });\n };\n\n const fieldAction = (\n field: \"HTML / SVG fragment\" | \"CSS\" | \"caption\" | \"legacy node graph JSON\",\n value: string,\n ) => ({\n blockId,\n blockType: \"diagram\",\n blockTitle: title,\n blockSummary: summary,\n fieldValue: value,\n draftScope: `block:diagram:${blockId}:${field.toLowerCase().replace(/[^a-z0-9]+/g, \"-\")}`,\n disabled: !editable,\n instructions:\n \"Update the plan with update-visual-plan using a targeted update-block content patch for this diagram block id. Preserve unrelated diagram fields unless the requested edit requires changing them. Keep diagram HTML/CSS on renderer-owned .diagram-* primitives and --wf-* tokens; do not introduce custom font-family or hard-coded hex/rgb/hsl colors.\",\n companionFields: [\n {\n label: \"HTML / SVG fragment\",\n value: html.trim() || \"(empty)\",\n language: \"html\",\n },\n { label: \"CSS\", value: css.trim() || \"(empty)\", language: \"css\" },\n {\n label: \"caption\",\n value: caption.trim() || \"(empty)\",\n language: \"text\",\n },\n ],\n });\n\n return (\n <div className=\"grid gap-4\" data-plan-interactive>\n <button\n type=\"button\"\n className=\"inline-flex h-8 w-fit items-center justify-center rounded-md bg-primary px-3 text-xs font-medium text-primary-foreground disabled:opacity-50\"\n disabled={!editable}\n onClick={saveHtmlDiagram}\n >\n Save diagram\n </button>\n <div className=\"group/field grid gap-1.5\">\n <AiEditableFieldLabel\n htmlFor={htmlId}\n label=\"HTML / SVG fragment\"\n ctx={ctx}\n action={fieldAction(\"HTML / SVG fragment\", html)}\n />\n <textarea\n id={htmlId}\n className=\"min-h-48 w-full rounded-md border border-input bg-background px-3 py-2 font-mono text-xs leading-5 text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n value={html}\n disabled={!editable}\n onChange={(event) => setHtml(event.target.value)}\n placeholder=\"<div class='diagram'>...</div>\"\n />\n </div>\n <div className=\"group/field grid gap-1.5\">\n <AiEditableFieldLabel\n htmlFor={cssId}\n label=\"CSS\"\n ctx={ctx}\n action={fieldAction(\"CSS\", css)}\n />\n <textarea\n id={cssId}\n className=\"min-h-32 w-full rounded-md border border-input bg-background px-3 py-2 font-mono text-xs leading-5 text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n value={css}\n disabled={!editable}\n onChange={(event) => setCss(event.target.value)}\n placeholder=\".diagram { display: grid; }\"\n />\n </div>\n <div className=\"group/field grid gap-1.5\">\n <AiEditableFieldLabel\n htmlFor={captionId}\n label=\"Caption\"\n ctx={ctx}\n action={fieldAction(\"caption\", caption)}\n />\n <input\n id={captionId}\n className=\"h-9 w-full rounded-md border border-input bg-background px-3 text-sm text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n value={caption}\n disabled={!editable}\n onChange={(event) => setCaption(event.target.value)}\n />\n </div>\n {!data.html && (\n <details className=\"rounded-md border border-border p-3\">\n <summary className=\"cursor-pointer text-xs font-semibold text-muted-foreground\">\n Legacy node graph data\n </summary>\n <div className=\"group/field mt-3 grid gap-1.5\">\n <AiEditableFieldLabel\n htmlFor={legacyId}\n label=\"JSON\"\n ctx={ctx}\n action={fieldAction(\"legacy node graph JSON\", legacyJson)}\n />\n <textarea\n id={legacyId}\n className=\"min-h-44 w-full rounded-md border border-input bg-background px-3 py-2 font-mono text-xs leading-5 text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring\"\n value={legacyJson}\n disabled={!editable}\n onChange={(event) => setLegacyJson(event.target.value)}\n />\n </div>\n <button\n type=\"button\"\n className=\"mt-3 inline-flex h-8 items-center justify-center rounded-md border border-input px-3 text-xs font-medium text-foreground disabled:opacity-50\"\n disabled={!editable}\n onClick={saveLegacyDiagram}\n >\n Save graph data\n </button>\n </details>\n )}\n </div>\n );\n}\n\n/** Full client spec for the shared `diagram` block (schema + MDX + Read/Edit). */\nexport const diagramBlock = defineBlock<DiagramData>({\n type: \"diagram\",\n schema: diagramSchema,\n mdx: diagramMdx,\n Read: DiagramRead,\n Edit: DiagramEdit,\n placement: [\"block\"],\n // Config-driven: the rendered diagram differs from its raw html/css source, so\n // edit from a corner button + panel rather than inline.\n editSurface: \"panel\",\n label: \"Diagram\",\n description:\n \"A flexible inline architecture/code diagram. Prefer html/css with SVG or semantic HTML for polished two-dimensional layouts; use .diagram-* primitives and --wf-* tokens for theme/sketch compatibility. Legacy nodes/edges are only for simple previews.\",\n // Seed the legacy fallback shape so a fresh block validates while agents can\n // replace it with html/css when layout quality matters.\n empty: () => ({ nodes: [{ id: \"n1\", label: \"Module\" }], edges: [] }),\n});\n"]}
@@ -1,4 +1,6 @@
1
- export declare function sanitizeWireframeHtml(html: string | undefined): string;
1
+ export declare function sanitizeWireframeHtml(html: string | undefined, options?: {
2
+ preserveThemeClasses?: boolean;
3
+ }): string;
2
4
  export declare function sanitizeDiagramHtml(html: string | undefined): string;
3
5
  export declare function sanitizeWireframeCss(css: string | undefined): string;
4
6
  export declare function scopeDesignCss(css: string, scopeSelector: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"sanitize-html.d.ts","sourceRoot":"","sources":["../../../../src/client/blocks/library/sanitize-html.ts"],"names":[],"mappings":"AAqHA,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAStE;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAcpE;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAoBpE;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAsBzE"}
1
+ {"version":3,"file":"sanitize-html.d.ts","sourceRoot":"","sources":["../../../../src/client/blocks/library/sanitize-html.ts"],"names":[],"mappings":"AAyKA,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,CAAC,EAAE;IAAE,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3C,MAAM,CAUR;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAcpE;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAoBpE;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAsBzE"}