@agent-native/core 0.76.5 → 0.76.6

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 (1706) hide show
  1. package/corpus/README.md +1 -1
  2. package/corpus/core/CHANGELOG.md +8 -0
  3. package/corpus/core/docs/content/extensions.md +16 -0
  4. package/corpus/core/docs/content/locales/ar-SA/a2a-protocol.md +392 -0
  5. package/corpus/core/docs/content/locales/ar-SA/actions.md +583 -0
  6. package/corpus/core/docs/content/locales/ar-SA/agent-mentions.md +164 -0
  7. package/corpus/core/docs/content/locales/ar-SA/agent-surfaces.md +397 -0
  8. package/corpus/core/docs/content/locales/ar-SA/agent-teams.md +171 -0
  9. package/corpus/core/docs/content/locales/ar-SA/agent-web-surfaces.md +161 -0
  10. package/corpus/core/docs/content/locales/ar-SA/audit-log.md +111 -0
  11. package/corpus/core/docs/content/locales/ar-SA/authentication.md +332 -0
  12. package/corpus/core/docs/content/locales/ar-SA/automations.md +268 -0
  13. package/corpus/core/docs/content/locales/ar-SA/blueprint-installer.md +83 -0
  14. package/corpus/core/docs/content/locales/ar-SA/cli-adapters.md +129 -0
  15. package/corpus/core/docs/content/locales/ar-SA/client.md +398 -0
  16. package/corpus/core/docs/content/locales/ar-SA/cloneable-saas.md +114 -0
  17. package/corpus/core/docs/content/locales/ar-SA/code-agents-ui.md +436 -0
  18. package/corpus/core/docs/content/locales/ar-SA/components.md +368 -0
  19. package/corpus/core/docs/content/locales/ar-SA/context-awareness.md +373 -0
  20. package/corpus/core/docs/content/locales/ar-SA/creating-templates.md +411 -0
  21. package/corpus/core/docs/content/locales/ar-SA/cross-app-sso.md +185 -0
  22. package/corpus/core/docs/content/locales/ar-SA/database.md +183 -0
  23. package/corpus/core/docs/content/locales/ar-SA/deployment.md +349 -0
  24. package/corpus/core/docs/content/locales/ar-SA/dispatch.md +146 -0
  25. package/corpus/core/docs/content/locales/ar-SA/drop-in-agent.md +260 -0
  26. package/corpus/core/docs/content/locales/ar-SA/durable-resume.md +65 -0
  27. package/corpus/core/docs/content/locales/ar-SA/embedding-sdk.md +597 -0
  28. package/corpus/core/docs/content/locales/ar-SA/evals.md +155 -0
  29. package/corpus/core/docs/content/locales/ar-SA/extensions.md +360 -0
  30. package/corpus/core/docs/content/locales/ar-SA/external-agents.md +619 -0
  31. package/corpus/core/docs/content/locales/ar-SA/faq.md +142 -0
  32. package/corpus/core/docs/content/locales/ar-SA/file-uploads.md +122 -0
  33. package/corpus/core/docs/content/locales/ar-SA/frames.md +153 -0
  34. package/corpus/core/docs/content/locales/ar-SA/getting-started.md +199 -0
  35. package/corpus/core/docs/content/locales/ar-SA/harness-agents.md +349 -0
  36. package/corpus/core/docs/content/locales/ar-SA/human-approval.md +86 -0
  37. package/corpus/core/docs/content/locales/ar-SA/internationalization.md +68 -25
  38. package/corpus/core/docs/content/locales/ar-SA/key-concepts.md +312 -0
  39. package/corpus/core/docs/content/locales/ar-SA/local-file-mode.md +433 -0
  40. package/corpus/core/docs/content/locales/ar-SA/mcp-apps.md +147 -0
  41. package/corpus/core/docs/content/locales/ar-SA/mcp-clients.md +330 -0
  42. package/corpus/core/docs/content/locales/ar-SA/mcp-protocol.md +279 -0
  43. package/corpus/core/docs/content/locales/ar-SA/messaging.md +461 -0
  44. package/corpus/core/docs/content/locales/ar-SA/migration-workbench.md +33 -0
  45. package/corpus/core/docs/content/locales/ar-SA/multi-app-workspace.md +312 -0
  46. package/corpus/core/docs/content/locales/ar-SA/multi-tenancy.md +52 -0
  47. package/corpus/core/docs/content/locales/ar-SA/native-chat-ui.md +321 -0
  48. package/corpus/core/docs/content/locales/ar-SA/notifications.md +231 -0
  49. package/corpus/core/docs/content/locales/ar-SA/observability.md +294 -0
  50. package/corpus/core/docs/content/locales/ar-SA/observational-memory.md +77 -0
  51. package/corpus/core/docs/content/locales/ar-SA/onboarding.md +216 -0
  52. package/corpus/core/docs/content/locales/ar-SA/plan-plugin.md +200 -0
  53. package/corpus/core/docs/content/locales/ar-SA/pr-visual-recap.md +384 -0
  54. package/corpus/core/docs/content/locales/ar-SA/processors.md +106 -0
  55. package/corpus/core/docs/content/locales/ar-SA/progress.md +199 -0
  56. package/corpus/core/docs/content/locales/ar-SA/pure-agent-apps.md +39 -0
  57. package/corpus/core/docs/content/locales/ar-SA/real-time-collaboration.md +676 -0
  58. package/corpus/core/docs/content/locales/ar-SA/recurring-jobs.md +142 -0
  59. package/corpus/core/docs/content/locales/ar-SA/routing.md +79 -0
  60. package/corpus/core/docs/content/locales/ar-SA/sandbox-adapters.md +227 -0
  61. package/corpus/core/docs/content/locales/ar-SA/security.md +330 -0
  62. package/corpus/core/docs/content/locales/ar-SA/server.md +253 -0
  63. package/corpus/core/docs/content/locales/ar-SA/sharing.md +219 -0
  64. package/corpus/core/docs/content/locales/ar-SA/skills-guide.md +281 -0
  65. package/corpus/core/docs/content/locales/ar-SA/template-analytics.md +259 -0
  66. package/corpus/core/docs/content/locales/ar-SA/template-assets.md +303 -0
  67. package/corpus/core/docs/content/locales/ar-SA/template-brain.md +324 -0
  68. package/corpus/core/docs/content/locales/ar-SA/template-calendar.md +194 -0
  69. package/corpus/core/docs/content/locales/ar-SA/template-chat.md +129 -0
  70. package/corpus/core/docs/content/locales/ar-SA/template-clips.md +368 -0
  71. package/corpus/core/docs/content/locales/ar-SA/template-content.md +402 -0
  72. package/corpus/core/docs/content/locales/ar-SA/template-design.md +173 -0
  73. package/corpus/core/docs/content/locales/ar-SA/template-dispatch.md +220 -0
  74. package/corpus/core/docs/content/locales/ar-SA/template-forms.md +178 -0
  75. package/corpus/core/docs/content/locales/ar-SA/template-mail.md +239 -0
  76. package/corpus/core/docs/content/locales/ar-SA/template-plan.md +815 -0
  77. package/corpus/core/docs/content/locales/ar-SA/template-slides.md +293 -0
  78. package/corpus/core/docs/content/locales/ar-SA/template-videos.md +222 -0
  79. package/corpus/core/docs/content/locales/ar-SA/tracking.md +236 -0
  80. package/corpus/core/docs/content/locales/ar-SA/using-your-agent.md +71 -0
  81. package/corpus/core/docs/content/locales/ar-SA/voice-input.md +81 -0
  82. package/corpus/core/docs/content/locales/ar-SA/what-is-agent-native.md +202 -0
  83. package/corpus/core/docs/content/locales/ar-SA/workspace-connections.md +321 -0
  84. package/corpus/core/docs/content/locales/ar-SA/workspace-management.md +175 -0
  85. package/corpus/core/docs/content/locales/ar-SA/workspace.md +323 -0
  86. package/corpus/core/docs/content/locales/ar-SA/writing-agent-instructions.md +173 -0
  87. package/corpus/core/docs/content/locales/de-DE/a2a-protocol.md +392 -0
  88. package/corpus/core/docs/content/locales/de-DE/actions.md +583 -0
  89. package/corpus/core/docs/content/locales/de-DE/agent-mentions.md +164 -0
  90. package/corpus/core/docs/content/locales/de-DE/agent-surfaces.md +397 -0
  91. package/corpus/core/docs/content/locales/de-DE/agent-teams.md +171 -0
  92. package/corpus/core/docs/content/locales/de-DE/agent-web-surfaces.md +161 -0
  93. package/corpus/core/docs/content/locales/de-DE/audit-log.md +111 -0
  94. package/corpus/core/docs/content/locales/de-DE/authentication.md +332 -0
  95. package/corpus/core/docs/content/locales/de-DE/automations.md +268 -0
  96. package/corpus/core/docs/content/locales/de-DE/blueprint-installer.md +83 -0
  97. package/corpus/core/docs/content/locales/de-DE/cli-adapters.md +129 -0
  98. package/corpus/core/docs/content/locales/de-DE/client.md +398 -0
  99. package/corpus/core/docs/content/locales/de-DE/cloneable-saas.md +114 -0
  100. package/corpus/core/docs/content/locales/de-DE/code-agents-ui.md +436 -0
  101. package/corpus/core/docs/content/locales/de-DE/components.md +368 -0
  102. package/corpus/core/docs/content/locales/de-DE/context-awareness.md +373 -0
  103. package/corpus/core/docs/content/locales/de-DE/creating-templates.md +411 -0
  104. package/corpus/core/docs/content/locales/de-DE/cross-app-sso.md +185 -0
  105. package/corpus/core/docs/content/locales/de-DE/database.md +183 -0
  106. package/corpus/core/docs/content/locales/de-DE/deployment.md +349 -0
  107. package/corpus/core/docs/content/locales/de-DE/dispatch.md +146 -0
  108. package/corpus/core/docs/content/locales/de-DE/drop-in-agent.md +260 -0
  109. package/corpus/core/docs/content/locales/de-DE/durable-resume.md +65 -0
  110. package/corpus/core/docs/content/locales/de-DE/embedding-sdk.md +597 -0
  111. package/corpus/core/docs/content/locales/de-DE/evals.md +155 -0
  112. package/corpus/core/docs/content/locales/de-DE/extensions.md +360 -0
  113. package/corpus/core/docs/content/locales/de-DE/external-agents.md +619 -0
  114. package/corpus/core/docs/content/locales/de-DE/faq.md +142 -0
  115. package/corpus/core/docs/content/locales/de-DE/file-uploads.md +122 -0
  116. package/corpus/core/docs/content/locales/de-DE/frames.md +153 -0
  117. package/corpus/core/docs/content/locales/de-DE/getting-started.md +199 -0
  118. package/corpus/core/docs/content/locales/de-DE/harness-agents.md +349 -0
  119. package/corpus/core/docs/content/locales/de-DE/human-approval.md +86 -0
  120. package/corpus/core/docs/content/locales/de-DE/internationalization.md +65 -22
  121. package/corpus/core/docs/content/locales/de-DE/key-concepts.md +312 -0
  122. package/corpus/core/docs/content/locales/de-DE/local-file-mode.md +433 -0
  123. package/corpus/core/docs/content/locales/de-DE/mcp-apps.md +147 -0
  124. package/corpus/core/docs/content/locales/de-DE/mcp-clients.md +330 -0
  125. package/corpus/core/docs/content/locales/de-DE/mcp-protocol.md +279 -0
  126. package/corpus/core/docs/content/locales/de-DE/messaging.md +461 -0
  127. package/corpus/core/docs/content/locales/de-DE/migration-workbench.md +33 -0
  128. package/corpus/core/docs/content/locales/de-DE/multi-app-workspace.md +312 -0
  129. package/corpus/core/docs/content/locales/de-DE/multi-tenancy.md +52 -0
  130. package/corpus/core/docs/content/locales/de-DE/native-chat-ui.md +321 -0
  131. package/corpus/core/docs/content/locales/de-DE/notifications.md +231 -0
  132. package/corpus/core/docs/content/locales/de-DE/observability.md +294 -0
  133. package/corpus/core/docs/content/locales/de-DE/observational-memory.md +77 -0
  134. package/corpus/core/docs/content/locales/de-DE/onboarding.md +216 -0
  135. package/corpus/core/docs/content/locales/de-DE/plan-plugin.md +200 -0
  136. package/corpus/core/docs/content/locales/de-DE/pr-visual-recap.md +384 -0
  137. package/corpus/core/docs/content/locales/de-DE/processors.md +106 -0
  138. package/corpus/core/docs/content/locales/de-DE/progress.md +199 -0
  139. package/corpus/core/docs/content/locales/de-DE/pure-agent-apps.md +39 -0
  140. package/corpus/core/docs/content/locales/de-DE/real-time-collaboration.md +676 -0
  141. package/corpus/core/docs/content/locales/de-DE/recurring-jobs.md +142 -0
  142. package/corpus/core/docs/content/locales/de-DE/routing.md +79 -0
  143. package/corpus/core/docs/content/locales/de-DE/sandbox-adapters.md +227 -0
  144. package/corpus/core/docs/content/locales/de-DE/security.md +330 -0
  145. package/corpus/core/docs/content/locales/de-DE/server.md +253 -0
  146. package/corpus/core/docs/content/locales/de-DE/sharing.md +219 -0
  147. package/corpus/core/docs/content/locales/de-DE/skills-guide.md +281 -0
  148. package/corpus/core/docs/content/locales/de-DE/template-analytics.md +259 -0
  149. package/corpus/core/docs/content/locales/de-DE/template-assets.md +303 -0
  150. package/corpus/core/docs/content/locales/de-DE/template-brain.md +324 -0
  151. package/corpus/core/docs/content/locales/de-DE/template-calendar.md +194 -0
  152. package/corpus/core/docs/content/locales/de-DE/template-chat.md +129 -0
  153. package/corpus/core/docs/content/locales/de-DE/template-clips.md +368 -0
  154. package/corpus/core/docs/content/locales/de-DE/template-content.md +402 -0
  155. package/corpus/core/docs/content/locales/de-DE/template-design.md +173 -0
  156. package/corpus/core/docs/content/locales/de-DE/template-dispatch.md +220 -0
  157. package/corpus/core/docs/content/locales/de-DE/template-forms.md +178 -0
  158. package/corpus/core/docs/content/locales/de-DE/template-mail.md +239 -0
  159. package/corpus/core/docs/content/locales/de-DE/template-plan.md +814 -0
  160. package/corpus/core/docs/content/locales/de-DE/template-slides.md +293 -0
  161. package/corpus/core/docs/content/locales/de-DE/template-videos.md +222 -0
  162. package/corpus/core/docs/content/locales/de-DE/tracking.md +236 -0
  163. package/corpus/core/docs/content/locales/de-DE/using-your-agent.md +71 -0
  164. package/corpus/core/docs/content/locales/de-DE/voice-input.md +81 -0
  165. package/corpus/core/docs/content/locales/de-DE/what-is-agent-native.md +202 -0
  166. package/corpus/core/docs/content/locales/de-DE/workspace-connections.md +321 -0
  167. package/corpus/core/docs/content/locales/de-DE/workspace-management.md +175 -0
  168. package/corpus/core/docs/content/locales/de-DE/workspace.md +323 -0
  169. package/corpus/core/docs/content/locales/de-DE/writing-agent-instructions.md +173 -0
  170. package/corpus/core/docs/content/locales/es-ES/a2a-protocol.md +392 -0
  171. package/corpus/core/docs/content/locales/es-ES/actions.md +583 -0
  172. package/corpus/core/docs/content/locales/es-ES/agent-mentions.md +164 -0
  173. package/corpus/core/docs/content/locales/es-ES/agent-surfaces.md +397 -0
  174. package/corpus/core/docs/content/locales/es-ES/agent-teams.md +171 -0
  175. package/corpus/core/docs/content/locales/es-ES/agent-web-surfaces.md +161 -0
  176. package/corpus/core/docs/content/locales/es-ES/audit-log.md +111 -0
  177. package/corpus/core/docs/content/locales/es-ES/authentication.md +332 -0
  178. package/corpus/core/docs/content/locales/es-ES/automations.md +268 -0
  179. package/corpus/core/docs/content/locales/es-ES/blueprint-installer.md +83 -0
  180. package/corpus/core/docs/content/locales/es-ES/cli-adapters.md +129 -0
  181. package/corpus/core/docs/content/locales/es-ES/client.md +398 -0
  182. package/corpus/core/docs/content/locales/es-ES/cloneable-saas.md +114 -0
  183. package/corpus/core/docs/content/locales/es-ES/code-agents-ui.md +436 -0
  184. package/corpus/core/docs/content/locales/es-ES/components.md +368 -0
  185. package/corpus/core/docs/content/locales/es-ES/context-awareness.md +373 -0
  186. package/corpus/core/docs/content/locales/es-ES/creating-templates.md +411 -0
  187. package/corpus/core/docs/content/locales/es-ES/cross-app-sso.md +185 -0
  188. package/corpus/core/docs/content/locales/es-ES/database.md +183 -0
  189. package/corpus/core/docs/content/locales/es-ES/deployment.md +349 -0
  190. package/corpus/core/docs/content/locales/es-ES/dispatch.md +146 -0
  191. package/corpus/core/docs/content/locales/es-ES/drop-in-agent.md +260 -0
  192. package/corpus/core/docs/content/locales/es-ES/durable-resume.md +65 -0
  193. package/corpus/core/docs/content/locales/es-ES/embedding-sdk.md +597 -0
  194. package/corpus/core/docs/content/locales/es-ES/evals.md +155 -0
  195. package/corpus/core/docs/content/locales/es-ES/extensions.md +360 -0
  196. package/corpus/core/docs/content/locales/es-ES/external-agents.md +619 -0
  197. package/corpus/core/docs/content/locales/es-ES/faq.md +142 -0
  198. package/corpus/core/docs/content/locales/es-ES/file-uploads.md +122 -0
  199. package/corpus/core/docs/content/locales/es-ES/frames.md +153 -0
  200. package/corpus/core/docs/content/locales/es-ES/getting-started.md +199 -0
  201. package/corpus/core/docs/content/locales/es-ES/harness-agents.md +349 -0
  202. package/corpus/core/docs/content/locales/es-ES/human-approval.md +86 -0
  203. package/corpus/core/docs/content/locales/es-ES/internationalization.md +67 -24
  204. package/corpus/core/docs/content/locales/es-ES/key-concepts.md +312 -0
  205. package/corpus/core/docs/content/locales/es-ES/local-file-mode.md +433 -0
  206. package/corpus/core/docs/content/locales/es-ES/mcp-apps.md +147 -0
  207. package/corpus/core/docs/content/locales/es-ES/mcp-clients.md +330 -0
  208. package/corpus/core/docs/content/locales/es-ES/mcp-protocol.md +279 -0
  209. package/corpus/core/docs/content/locales/es-ES/messaging.md +461 -0
  210. package/corpus/core/docs/content/locales/es-ES/migration-workbench.md +33 -0
  211. package/corpus/core/docs/content/locales/es-ES/multi-app-workspace.md +312 -0
  212. package/corpus/core/docs/content/locales/es-ES/multi-tenancy.md +52 -0
  213. package/corpus/core/docs/content/locales/es-ES/native-chat-ui.md +321 -0
  214. package/corpus/core/docs/content/locales/es-ES/notifications.md +231 -0
  215. package/corpus/core/docs/content/locales/es-ES/observability.md +294 -0
  216. package/corpus/core/docs/content/locales/es-ES/observational-memory.md +77 -0
  217. package/corpus/core/docs/content/locales/es-ES/onboarding.md +216 -0
  218. package/corpus/core/docs/content/locales/es-ES/plan-plugin.md +200 -0
  219. package/corpus/core/docs/content/locales/es-ES/pr-visual-recap.md +384 -0
  220. package/corpus/core/docs/content/locales/es-ES/processors.md +106 -0
  221. package/corpus/core/docs/content/locales/es-ES/progress.md +199 -0
  222. package/corpus/core/docs/content/locales/es-ES/pure-agent-apps.md +39 -0
  223. package/corpus/core/docs/content/locales/es-ES/real-time-collaboration.md +676 -0
  224. package/corpus/core/docs/content/locales/es-ES/recurring-jobs.md +142 -0
  225. package/corpus/core/docs/content/locales/es-ES/routing.md +79 -0
  226. package/corpus/core/docs/content/locales/es-ES/sandbox-adapters.md +227 -0
  227. package/corpus/core/docs/content/locales/es-ES/security.md +330 -0
  228. package/corpus/core/docs/content/locales/es-ES/server.md +253 -0
  229. package/corpus/core/docs/content/locales/es-ES/sharing.md +219 -0
  230. package/corpus/core/docs/content/locales/es-ES/skills-guide.md +281 -0
  231. package/corpus/core/docs/content/locales/es-ES/template-analytics.md +259 -0
  232. package/corpus/core/docs/content/locales/es-ES/template-assets.md +303 -0
  233. package/corpus/core/docs/content/locales/es-ES/template-brain.md +324 -0
  234. package/corpus/core/docs/content/locales/es-ES/template-calendar.md +194 -0
  235. package/corpus/core/docs/content/locales/es-ES/template-chat.md +129 -0
  236. package/corpus/core/docs/content/locales/es-ES/template-clips.md +368 -0
  237. package/corpus/core/docs/content/locales/es-ES/template-content.md +402 -0
  238. package/corpus/core/docs/content/locales/es-ES/template-design.md +173 -0
  239. package/corpus/core/docs/content/locales/es-ES/template-dispatch.md +220 -0
  240. package/corpus/core/docs/content/locales/es-ES/template-forms.md +178 -0
  241. package/corpus/core/docs/content/locales/es-ES/template-mail.md +239 -0
  242. package/corpus/core/docs/content/locales/es-ES/template-plan.md +815 -0
  243. package/corpus/core/docs/content/locales/es-ES/template-slides.md +293 -0
  244. package/corpus/core/docs/content/locales/es-ES/template-videos.md +222 -0
  245. package/corpus/core/docs/content/locales/es-ES/tracking.md +236 -0
  246. package/corpus/core/docs/content/locales/es-ES/using-your-agent.md +71 -0
  247. package/corpus/core/docs/content/locales/es-ES/voice-input.md +81 -0
  248. package/corpus/core/docs/content/locales/es-ES/what-is-agent-native.md +202 -0
  249. package/corpus/core/docs/content/locales/es-ES/workspace-connections.md +321 -0
  250. package/corpus/core/docs/content/locales/es-ES/workspace-management.md +175 -0
  251. package/corpus/core/docs/content/locales/es-ES/workspace.md +323 -0
  252. package/corpus/core/docs/content/locales/es-ES/writing-agent-instructions.md +173 -0
  253. package/corpus/core/docs/content/locales/fr-FR/a2a-protocol.md +392 -0
  254. package/corpus/core/docs/content/locales/fr-FR/actions.md +583 -0
  255. package/corpus/core/docs/content/locales/fr-FR/agent-mentions.md +164 -0
  256. package/corpus/core/docs/content/locales/fr-FR/agent-surfaces.md +397 -0
  257. package/corpus/core/docs/content/locales/fr-FR/agent-teams.md +171 -0
  258. package/corpus/core/docs/content/locales/fr-FR/agent-web-surfaces.md +161 -0
  259. package/corpus/core/docs/content/locales/fr-FR/audit-log.md +111 -0
  260. package/corpus/core/docs/content/locales/fr-FR/authentication.md +332 -0
  261. package/corpus/core/docs/content/locales/fr-FR/automations.md +268 -0
  262. package/corpus/core/docs/content/locales/fr-FR/blueprint-installer.md +83 -0
  263. package/corpus/core/docs/content/locales/fr-FR/cli-adapters.md +129 -0
  264. package/corpus/core/docs/content/locales/fr-FR/client.md +398 -0
  265. package/corpus/core/docs/content/locales/fr-FR/cloneable-saas.md +114 -0
  266. package/corpus/core/docs/content/locales/fr-FR/code-agents-ui.md +436 -0
  267. package/corpus/core/docs/content/locales/fr-FR/components.md +368 -0
  268. package/corpus/core/docs/content/locales/fr-FR/context-awareness.md +373 -0
  269. package/corpus/core/docs/content/locales/fr-FR/creating-templates.md +411 -0
  270. package/corpus/core/docs/content/locales/fr-FR/cross-app-sso.md +185 -0
  271. package/corpus/core/docs/content/locales/fr-FR/database.md +183 -0
  272. package/corpus/core/docs/content/locales/fr-FR/deployment.md +349 -0
  273. package/corpus/core/docs/content/locales/fr-FR/dispatch.md +146 -0
  274. package/corpus/core/docs/content/locales/fr-FR/drop-in-agent.md +260 -0
  275. package/corpus/core/docs/content/locales/fr-FR/durable-resume.md +65 -0
  276. package/corpus/core/docs/content/locales/fr-FR/embedding-sdk.md +597 -0
  277. package/corpus/core/docs/content/locales/fr-FR/evals.md +155 -0
  278. package/corpus/core/docs/content/locales/fr-FR/extensions.md +360 -0
  279. package/corpus/core/docs/content/locales/fr-FR/external-agents.md +619 -0
  280. package/corpus/core/docs/content/locales/fr-FR/faq.md +142 -0
  281. package/corpus/core/docs/content/locales/fr-FR/file-uploads.md +122 -0
  282. package/corpus/core/docs/content/locales/fr-FR/frames.md +153 -0
  283. package/corpus/core/docs/content/locales/fr-FR/getting-started.md +199 -0
  284. package/corpus/core/docs/content/locales/fr-FR/harness-agents.md +349 -0
  285. package/corpus/core/docs/content/locales/fr-FR/human-approval.md +86 -0
  286. package/corpus/core/docs/content/locales/fr-FR/internationalization.md +67 -24
  287. package/corpus/core/docs/content/locales/fr-FR/key-concepts.md +312 -0
  288. package/corpus/core/docs/content/locales/fr-FR/local-file-mode.md +433 -0
  289. package/corpus/core/docs/content/locales/fr-FR/mcp-apps.md +147 -0
  290. package/corpus/core/docs/content/locales/fr-FR/mcp-clients.md +330 -0
  291. package/corpus/core/docs/content/locales/fr-FR/mcp-protocol.md +279 -0
  292. package/corpus/core/docs/content/locales/fr-FR/messaging.md +461 -0
  293. package/corpus/core/docs/content/locales/fr-FR/migration-workbench.md +33 -0
  294. package/corpus/core/docs/content/locales/fr-FR/multi-app-workspace.md +312 -0
  295. package/corpus/core/docs/content/locales/fr-FR/multi-tenancy.md +52 -0
  296. package/corpus/core/docs/content/locales/fr-FR/native-chat-ui.md +321 -0
  297. package/corpus/core/docs/content/locales/fr-FR/notifications.md +231 -0
  298. package/corpus/core/docs/content/locales/fr-FR/observability.md +294 -0
  299. package/corpus/core/docs/content/locales/fr-FR/observational-memory.md +77 -0
  300. package/corpus/core/docs/content/locales/fr-FR/onboarding.md +216 -0
  301. package/corpus/core/docs/content/locales/fr-FR/plan-plugin.md +200 -0
  302. package/corpus/core/docs/content/locales/fr-FR/pr-visual-recap.md +384 -0
  303. package/corpus/core/docs/content/locales/fr-FR/processors.md +106 -0
  304. package/corpus/core/docs/content/locales/fr-FR/progress.md +199 -0
  305. package/corpus/core/docs/content/locales/fr-FR/pure-agent-apps.md +39 -0
  306. package/corpus/core/docs/content/locales/fr-FR/real-time-collaboration.md +676 -0
  307. package/corpus/core/docs/content/locales/fr-FR/recurring-jobs.md +142 -0
  308. package/corpus/core/docs/content/locales/fr-FR/routing.md +79 -0
  309. package/corpus/core/docs/content/locales/fr-FR/sandbox-adapters.md +227 -0
  310. package/corpus/core/docs/content/locales/fr-FR/security.md +330 -0
  311. package/corpus/core/docs/content/locales/fr-FR/server.md +253 -0
  312. package/corpus/core/docs/content/locales/fr-FR/sharing.md +219 -0
  313. package/corpus/core/docs/content/locales/fr-FR/skills-guide.md +281 -0
  314. package/corpus/core/docs/content/locales/fr-FR/template-analytics.md +259 -0
  315. package/corpus/core/docs/content/locales/fr-FR/template-assets.md +303 -0
  316. package/corpus/core/docs/content/locales/fr-FR/template-brain.md +324 -0
  317. package/corpus/core/docs/content/locales/fr-FR/template-calendar.md +194 -0
  318. package/corpus/core/docs/content/locales/fr-FR/template-chat.md +129 -0
  319. package/corpus/core/docs/content/locales/fr-FR/template-clips.md +368 -0
  320. package/corpus/core/docs/content/locales/fr-FR/template-content.md +402 -0
  321. package/corpus/core/docs/content/locales/fr-FR/template-design.md +173 -0
  322. package/corpus/core/docs/content/locales/fr-FR/template-dispatch.md +220 -0
  323. package/corpus/core/docs/content/locales/fr-FR/template-forms.md +178 -0
  324. package/corpus/core/docs/content/locales/fr-FR/template-mail.md +239 -0
  325. package/corpus/core/docs/content/locales/fr-FR/template-plan.md +815 -0
  326. package/corpus/core/docs/content/locales/fr-FR/template-slides.md +293 -0
  327. package/corpus/core/docs/content/locales/fr-FR/template-videos.md +222 -0
  328. package/corpus/core/docs/content/locales/fr-FR/tracking.md +236 -0
  329. package/corpus/core/docs/content/locales/fr-FR/using-your-agent.md +71 -0
  330. package/corpus/core/docs/content/locales/fr-FR/voice-input.md +81 -0
  331. package/corpus/core/docs/content/locales/fr-FR/what-is-agent-native.md +202 -0
  332. package/corpus/core/docs/content/locales/fr-FR/workspace-connections.md +321 -0
  333. package/corpus/core/docs/content/locales/fr-FR/workspace-management.md +175 -0
  334. package/corpus/core/docs/content/locales/fr-FR/workspace.md +323 -0
  335. package/corpus/core/docs/content/locales/fr-FR/writing-agent-instructions.md +173 -0
  336. package/corpus/core/docs/content/locales/hi-IN/a2a-protocol.md +392 -0
  337. package/corpus/core/docs/content/locales/hi-IN/actions.md +583 -0
  338. package/corpus/core/docs/content/locales/hi-IN/agent-mentions.md +164 -0
  339. package/corpus/core/docs/content/locales/hi-IN/agent-surfaces.md +397 -0
  340. package/corpus/core/docs/content/locales/hi-IN/agent-teams.md +171 -0
  341. package/corpus/core/docs/content/locales/hi-IN/agent-web-surfaces.md +161 -0
  342. package/corpus/core/docs/content/locales/hi-IN/audit-log.md +111 -0
  343. package/corpus/core/docs/content/locales/hi-IN/authentication.md +332 -0
  344. package/corpus/core/docs/content/locales/hi-IN/automations.md +268 -0
  345. package/corpus/core/docs/content/locales/hi-IN/blueprint-installer.md +83 -0
  346. package/corpus/core/docs/content/locales/hi-IN/cli-adapters.md +129 -0
  347. package/corpus/core/docs/content/locales/hi-IN/client.md +398 -0
  348. package/corpus/core/docs/content/locales/hi-IN/cloneable-saas.md +114 -0
  349. package/corpus/core/docs/content/locales/hi-IN/code-agents-ui.md +436 -0
  350. package/corpus/core/docs/content/locales/hi-IN/components.md +368 -0
  351. package/corpus/core/docs/content/locales/hi-IN/context-awareness.md +373 -0
  352. package/corpus/core/docs/content/locales/hi-IN/creating-templates.md +411 -0
  353. package/corpus/core/docs/content/locales/hi-IN/cross-app-sso.md +185 -0
  354. package/corpus/core/docs/content/locales/hi-IN/database.md +183 -0
  355. package/corpus/core/docs/content/locales/hi-IN/deployment.md +349 -0
  356. package/corpus/core/docs/content/locales/hi-IN/dispatch.md +146 -0
  357. package/corpus/core/docs/content/locales/hi-IN/drop-in-agent.md +260 -0
  358. package/corpus/core/docs/content/locales/hi-IN/durable-resume.md +65 -0
  359. package/corpus/core/docs/content/locales/hi-IN/embedding-sdk.md +597 -0
  360. package/corpus/core/docs/content/locales/hi-IN/evals.md +155 -0
  361. package/corpus/core/docs/content/locales/hi-IN/extensions.md +360 -0
  362. package/corpus/core/docs/content/locales/hi-IN/external-agents.md +619 -0
  363. package/corpus/core/docs/content/locales/hi-IN/faq.md +142 -0
  364. package/corpus/core/docs/content/locales/hi-IN/file-uploads.md +122 -0
  365. package/corpus/core/docs/content/locales/hi-IN/frames.md +153 -0
  366. package/corpus/core/docs/content/locales/hi-IN/getting-started.md +199 -0
  367. package/corpus/core/docs/content/locales/hi-IN/harness-agents.md +349 -0
  368. package/corpus/core/docs/content/locales/hi-IN/human-approval.md +86 -0
  369. package/corpus/core/docs/content/locales/hi-IN/internationalization.md +70 -27
  370. package/corpus/core/docs/content/locales/hi-IN/key-concepts.md +312 -0
  371. package/corpus/core/docs/content/locales/hi-IN/local-file-mode.md +433 -0
  372. package/corpus/core/docs/content/locales/hi-IN/mcp-apps.md +147 -0
  373. package/corpus/core/docs/content/locales/hi-IN/mcp-clients.md +330 -0
  374. package/corpus/core/docs/content/locales/hi-IN/mcp-protocol.md +279 -0
  375. package/corpus/core/docs/content/locales/hi-IN/messaging.md +461 -0
  376. package/corpus/core/docs/content/locales/hi-IN/migration-workbench.md +33 -0
  377. package/corpus/core/docs/content/locales/hi-IN/multi-app-workspace.md +312 -0
  378. package/corpus/core/docs/content/locales/hi-IN/multi-tenancy.md +52 -0
  379. package/corpus/core/docs/content/locales/hi-IN/native-chat-ui.md +321 -0
  380. package/corpus/core/docs/content/locales/hi-IN/notifications.md +231 -0
  381. package/corpus/core/docs/content/locales/hi-IN/observability.md +294 -0
  382. package/corpus/core/docs/content/locales/hi-IN/observational-memory.md +77 -0
  383. package/corpus/core/docs/content/locales/hi-IN/onboarding.md +216 -0
  384. package/corpus/core/docs/content/locales/hi-IN/plan-plugin.md +200 -0
  385. package/corpus/core/docs/content/locales/hi-IN/pr-visual-recap.md +384 -0
  386. package/corpus/core/docs/content/locales/hi-IN/processors.md +106 -0
  387. package/corpus/core/docs/content/locales/hi-IN/progress.md +199 -0
  388. package/corpus/core/docs/content/locales/hi-IN/pure-agent-apps.md +39 -0
  389. package/corpus/core/docs/content/locales/hi-IN/real-time-collaboration.md +676 -0
  390. package/corpus/core/docs/content/locales/hi-IN/recurring-jobs.md +142 -0
  391. package/corpus/core/docs/content/locales/hi-IN/routing.md +79 -0
  392. package/corpus/core/docs/content/locales/hi-IN/sandbox-adapters.md +227 -0
  393. package/corpus/core/docs/content/locales/hi-IN/security.md +330 -0
  394. package/corpus/core/docs/content/locales/hi-IN/server.md +253 -0
  395. package/corpus/core/docs/content/locales/hi-IN/sharing.md +219 -0
  396. package/corpus/core/docs/content/locales/hi-IN/skills-guide.md +281 -0
  397. package/corpus/core/docs/content/locales/hi-IN/template-analytics.md +259 -0
  398. package/corpus/core/docs/content/locales/hi-IN/template-assets.md +303 -0
  399. package/corpus/core/docs/content/locales/hi-IN/template-brain.md +324 -0
  400. package/corpus/core/docs/content/locales/hi-IN/template-calendar.md +194 -0
  401. package/corpus/core/docs/content/locales/hi-IN/template-chat.md +129 -0
  402. package/corpus/core/docs/content/locales/hi-IN/template-clips.md +368 -0
  403. package/corpus/core/docs/content/locales/hi-IN/template-content.md +402 -0
  404. package/corpus/core/docs/content/locales/hi-IN/template-design.md +173 -0
  405. package/corpus/core/docs/content/locales/hi-IN/template-dispatch.md +220 -0
  406. package/corpus/core/docs/content/locales/hi-IN/template-forms.md +178 -0
  407. package/corpus/core/docs/content/locales/hi-IN/template-mail.md +239 -0
  408. package/corpus/core/docs/content/locales/hi-IN/template-plan.md +815 -0
  409. package/corpus/core/docs/content/locales/hi-IN/template-slides.md +293 -0
  410. package/corpus/core/docs/content/locales/hi-IN/template-videos.md +222 -0
  411. package/corpus/core/docs/content/locales/hi-IN/tracking.md +236 -0
  412. package/corpus/core/docs/content/locales/hi-IN/using-your-agent.md +71 -0
  413. package/corpus/core/docs/content/locales/hi-IN/voice-input.md +81 -0
  414. package/corpus/core/docs/content/locales/hi-IN/what-is-agent-native.md +202 -0
  415. package/corpus/core/docs/content/locales/hi-IN/workspace-connections.md +321 -0
  416. package/corpus/core/docs/content/locales/hi-IN/workspace-management.md +175 -0
  417. package/corpus/core/docs/content/locales/hi-IN/workspace.md +323 -0
  418. package/corpus/core/docs/content/locales/hi-IN/writing-agent-instructions.md +173 -0
  419. package/corpus/core/docs/content/locales/ja-JP/a2a-protocol.md +392 -0
  420. package/corpus/core/docs/content/locales/ja-JP/actions.md +583 -0
  421. package/corpus/core/docs/content/locales/ja-JP/agent-mentions.md +164 -0
  422. package/corpus/core/docs/content/locales/ja-JP/agent-surfaces.md +397 -0
  423. package/corpus/core/docs/content/locales/ja-JP/agent-teams.md +171 -0
  424. package/corpus/core/docs/content/locales/ja-JP/agent-web-surfaces.md +161 -0
  425. package/corpus/core/docs/content/locales/ja-JP/audit-log.md +111 -0
  426. package/corpus/core/docs/content/locales/ja-JP/authentication.md +332 -0
  427. package/corpus/core/docs/content/locales/ja-JP/automations.md +268 -0
  428. package/corpus/core/docs/content/locales/ja-JP/blueprint-installer.md +83 -0
  429. package/corpus/core/docs/content/locales/ja-JP/cli-adapters.md +129 -0
  430. package/corpus/core/docs/content/locales/ja-JP/client.md +398 -0
  431. package/corpus/core/docs/content/locales/ja-JP/cloneable-saas.md +114 -0
  432. package/corpus/core/docs/content/locales/ja-JP/code-agents-ui.md +436 -0
  433. package/corpus/core/docs/content/locales/ja-JP/components.md +368 -0
  434. package/corpus/core/docs/content/locales/ja-JP/context-awareness.md +373 -0
  435. package/corpus/core/docs/content/locales/ja-JP/creating-templates.md +411 -0
  436. package/corpus/core/docs/content/locales/ja-JP/cross-app-sso.md +185 -0
  437. package/corpus/core/docs/content/locales/ja-JP/database.md +183 -0
  438. package/corpus/core/docs/content/locales/ja-JP/deployment.md +349 -0
  439. package/corpus/core/docs/content/locales/ja-JP/dispatch.md +146 -0
  440. package/corpus/core/docs/content/locales/ja-JP/drop-in-agent.md +260 -0
  441. package/corpus/core/docs/content/locales/ja-JP/durable-resume.md +65 -0
  442. package/corpus/core/docs/content/locales/ja-JP/embedding-sdk.md +597 -0
  443. package/corpus/core/docs/content/locales/ja-JP/evals.md +155 -0
  444. package/corpus/core/docs/content/locales/ja-JP/extensions.md +360 -0
  445. package/corpus/core/docs/content/locales/ja-JP/external-agents.md +619 -0
  446. package/corpus/core/docs/content/locales/ja-JP/faq.md +142 -0
  447. package/corpus/core/docs/content/locales/ja-JP/file-uploads.md +122 -0
  448. package/corpus/core/docs/content/locales/ja-JP/frames.md +153 -0
  449. package/corpus/core/docs/content/locales/ja-JP/getting-started.md +199 -0
  450. package/corpus/core/docs/content/locales/ja-JP/harness-agents.md +349 -0
  451. package/corpus/core/docs/content/locales/ja-JP/human-approval.md +86 -0
  452. package/corpus/core/docs/content/locales/ja-JP/internationalization.md +54 -23
  453. package/corpus/core/docs/content/locales/ja-JP/key-concepts.md +312 -0
  454. package/corpus/core/docs/content/locales/ja-JP/local-file-mode.md +433 -0
  455. package/corpus/core/docs/content/locales/ja-JP/mcp-apps.md +147 -0
  456. package/corpus/core/docs/content/locales/ja-JP/mcp-clients.md +330 -0
  457. package/corpus/core/docs/content/locales/ja-JP/mcp-protocol.md +279 -0
  458. package/corpus/core/docs/content/locales/ja-JP/messaging.md +461 -0
  459. package/corpus/core/docs/content/locales/ja-JP/migration-workbench.md +33 -0
  460. package/corpus/core/docs/content/locales/ja-JP/multi-app-workspace.md +312 -0
  461. package/corpus/core/docs/content/locales/ja-JP/multi-tenancy.md +52 -0
  462. package/corpus/core/docs/content/locales/ja-JP/native-chat-ui.md +321 -0
  463. package/corpus/core/docs/content/locales/ja-JP/notifications.md +231 -0
  464. package/corpus/core/docs/content/locales/ja-JP/observability.md +294 -0
  465. package/corpus/core/docs/content/locales/ja-JP/observational-memory.md +77 -0
  466. package/corpus/core/docs/content/locales/ja-JP/onboarding.md +216 -0
  467. package/corpus/core/docs/content/locales/ja-JP/plan-plugin.md +200 -0
  468. package/corpus/core/docs/content/locales/ja-JP/pr-visual-recap.md +384 -0
  469. package/corpus/core/docs/content/locales/ja-JP/processors.md +106 -0
  470. package/corpus/core/docs/content/locales/ja-JP/progress.md +199 -0
  471. package/corpus/core/docs/content/locales/ja-JP/pure-agent-apps.md +39 -0
  472. package/corpus/core/docs/content/locales/ja-JP/real-time-collaboration.md +676 -0
  473. package/corpus/core/docs/content/locales/ja-JP/recurring-jobs.md +142 -0
  474. package/corpus/core/docs/content/locales/ja-JP/routing.md +79 -0
  475. package/corpus/core/docs/content/locales/ja-JP/sandbox-adapters.md +227 -0
  476. package/corpus/core/docs/content/locales/ja-JP/security.md +330 -0
  477. package/corpus/core/docs/content/locales/ja-JP/server.md +253 -0
  478. package/corpus/core/docs/content/locales/ja-JP/sharing.md +219 -0
  479. package/corpus/core/docs/content/locales/ja-JP/skills-guide.md +281 -0
  480. package/corpus/core/docs/content/locales/ja-JP/template-analytics.md +259 -0
  481. package/corpus/core/docs/content/locales/ja-JP/template-assets.md +303 -0
  482. package/corpus/core/docs/content/locales/ja-JP/template-brain.md +324 -0
  483. package/corpus/core/docs/content/locales/ja-JP/template-calendar.md +194 -0
  484. package/corpus/core/docs/content/locales/ja-JP/template-chat.md +129 -0
  485. package/corpus/core/docs/content/locales/ja-JP/template-clips.md +368 -0
  486. package/corpus/core/docs/content/locales/ja-JP/template-content.md +402 -0
  487. package/corpus/core/docs/content/locales/ja-JP/template-design.md +173 -0
  488. package/corpus/core/docs/content/locales/ja-JP/template-dispatch.md +220 -0
  489. package/corpus/core/docs/content/locales/ja-JP/template-forms.md +178 -0
  490. package/corpus/core/docs/content/locales/ja-JP/template-mail.md +239 -0
  491. package/corpus/core/docs/content/locales/ja-JP/template-plan.md +814 -0
  492. package/corpus/core/docs/content/locales/ja-JP/template-slides.md +293 -0
  493. package/corpus/core/docs/content/locales/ja-JP/template-videos.md +222 -0
  494. package/corpus/core/docs/content/locales/ja-JP/tracking.md +236 -0
  495. package/corpus/core/docs/content/locales/ja-JP/using-your-agent.md +71 -0
  496. package/corpus/core/docs/content/locales/ja-JP/voice-input.md +81 -0
  497. package/corpus/core/docs/content/locales/ja-JP/what-is-agent-native.md +202 -0
  498. package/corpus/core/docs/content/locales/ja-JP/workspace-connections.md +321 -0
  499. package/corpus/core/docs/content/locales/ja-JP/workspace-management.md +175 -0
  500. package/corpus/core/docs/content/locales/ja-JP/workspace.md +323 -0
  501. package/corpus/core/docs/content/locales/ja-JP/writing-agent-instructions.md +173 -0
  502. package/corpus/core/docs/content/locales/ko-KR/a2a-protocol.md +392 -0
  503. package/corpus/core/docs/content/locales/ko-KR/actions.md +583 -0
  504. package/corpus/core/docs/content/locales/ko-KR/agent-mentions.md +164 -0
  505. package/corpus/core/docs/content/locales/ko-KR/agent-surfaces.md +397 -0
  506. package/corpus/core/docs/content/locales/ko-KR/agent-teams.md +171 -0
  507. package/corpus/core/docs/content/locales/ko-KR/agent-web-surfaces.md +161 -0
  508. package/corpus/core/docs/content/locales/ko-KR/audit-log.md +111 -0
  509. package/corpus/core/docs/content/locales/ko-KR/authentication.md +332 -0
  510. package/corpus/core/docs/content/locales/ko-KR/automations.md +268 -0
  511. package/corpus/core/docs/content/locales/ko-KR/blueprint-installer.md +83 -0
  512. package/corpus/core/docs/content/locales/ko-KR/cli-adapters.md +129 -0
  513. package/corpus/core/docs/content/locales/ko-KR/client.md +398 -0
  514. package/corpus/core/docs/content/locales/ko-KR/cloneable-saas.md +114 -0
  515. package/corpus/core/docs/content/locales/ko-KR/code-agents-ui.md +436 -0
  516. package/corpus/core/docs/content/locales/ko-KR/components.md +368 -0
  517. package/corpus/core/docs/content/locales/ko-KR/context-awareness.md +373 -0
  518. package/corpus/core/docs/content/locales/ko-KR/creating-templates.md +411 -0
  519. package/corpus/core/docs/content/locales/ko-KR/cross-app-sso.md +187 -0
  520. package/corpus/core/docs/content/locales/ko-KR/database.md +183 -0
  521. package/corpus/core/docs/content/locales/ko-KR/deployment.md +349 -0
  522. package/corpus/core/docs/content/locales/ko-KR/dispatch.md +146 -0
  523. package/corpus/core/docs/content/locales/ko-KR/drop-in-agent.md +260 -0
  524. package/corpus/core/docs/content/locales/ko-KR/durable-resume.md +65 -0
  525. package/corpus/core/docs/content/locales/ko-KR/embedding-sdk.md +597 -0
  526. package/corpus/core/docs/content/locales/ko-KR/evals.md +155 -0
  527. package/corpus/core/docs/content/locales/ko-KR/extensions.md +360 -0
  528. package/corpus/core/docs/content/locales/ko-KR/external-agents.md +621 -0
  529. package/corpus/core/docs/content/locales/ko-KR/faq.md +142 -0
  530. package/corpus/core/docs/content/locales/ko-KR/file-uploads.md +122 -0
  531. package/corpus/core/docs/content/locales/ko-KR/frames.md +153 -0
  532. package/corpus/core/docs/content/locales/ko-KR/getting-started.md +199 -0
  533. package/corpus/core/docs/content/locales/ko-KR/harness-agents.md +349 -0
  534. package/corpus/core/docs/content/locales/ko-KR/human-approval.md +88 -0
  535. package/corpus/core/docs/content/locales/ko-KR/internationalization.md +66 -23
  536. package/corpus/core/docs/content/locales/ko-KR/key-concepts.md +312 -0
  537. package/corpus/core/docs/content/locales/ko-KR/local-file-mode.md +433 -0
  538. package/corpus/core/docs/content/locales/ko-KR/mcp-apps.md +147 -0
  539. package/corpus/core/docs/content/locales/ko-KR/mcp-clients.md +330 -0
  540. package/corpus/core/docs/content/locales/ko-KR/mcp-protocol.md +279 -0
  541. package/corpus/core/docs/content/locales/ko-KR/messaging.md +464 -0
  542. package/corpus/core/docs/content/locales/ko-KR/migration-workbench.md +33 -0
  543. package/corpus/core/docs/content/locales/ko-KR/multi-app-workspace.md +312 -0
  544. package/corpus/core/docs/content/locales/ko-KR/multi-tenancy.md +52 -0
  545. package/corpus/core/docs/content/locales/ko-KR/native-chat-ui.md +321 -0
  546. package/corpus/core/docs/content/locales/ko-KR/notifications.md +231 -0
  547. package/corpus/core/docs/content/locales/ko-KR/observability.md +294 -0
  548. package/corpus/core/docs/content/locales/ko-KR/observational-memory.md +77 -0
  549. package/corpus/core/docs/content/locales/ko-KR/onboarding.md +216 -0
  550. package/corpus/core/docs/content/locales/ko-KR/plan-plugin.md +200 -0
  551. package/corpus/core/docs/content/locales/ko-KR/pr-visual-recap.md +384 -0
  552. package/corpus/core/docs/content/locales/ko-KR/processors.md +106 -0
  553. package/corpus/core/docs/content/locales/ko-KR/progress.md +199 -0
  554. package/corpus/core/docs/content/locales/ko-KR/pure-agent-apps.md +39 -0
  555. package/corpus/core/docs/content/locales/ko-KR/real-time-collaboration.md +676 -0
  556. package/corpus/core/docs/content/locales/ko-KR/recurring-jobs.md +142 -0
  557. package/corpus/core/docs/content/locales/ko-KR/routing.md +79 -0
  558. package/corpus/core/docs/content/locales/ko-KR/sandbox-adapters.md +227 -0
  559. package/corpus/core/docs/content/locales/ko-KR/security.md +330 -0
  560. package/corpus/core/docs/content/locales/ko-KR/server.md +253 -0
  561. package/corpus/core/docs/content/locales/ko-KR/sharing.md +219 -0
  562. package/corpus/core/docs/content/locales/ko-KR/skills-guide.md +281 -0
  563. package/corpus/core/docs/content/locales/ko-KR/template-analytics.md +259 -0
  564. package/corpus/core/docs/content/locales/ko-KR/template-assets.md +307 -0
  565. package/corpus/core/docs/content/locales/ko-KR/template-brain.md +324 -0
  566. package/corpus/core/docs/content/locales/ko-KR/template-calendar.md +194 -0
  567. package/corpus/core/docs/content/locales/ko-KR/template-chat.md +129 -0
  568. package/corpus/core/docs/content/locales/ko-KR/template-clips.md +372 -0
  569. package/corpus/core/docs/content/locales/ko-KR/template-content.md +402 -0
  570. package/corpus/core/docs/content/locales/ko-KR/template-design.md +173 -0
  571. package/corpus/core/docs/content/locales/ko-KR/template-dispatch.md +220 -0
  572. package/corpus/core/docs/content/locales/ko-KR/template-forms.md +178 -0
  573. package/corpus/core/docs/content/locales/ko-KR/template-mail.md +239 -0
  574. package/corpus/core/docs/content/locales/ko-KR/template-plan.md +815 -0
  575. package/corpus/core/docs/content/locales/ko-KR/template-slides.md +293 -0
  576. package/corpus/core/docs/content/locales/ko-KR/template-videos.md +222 -0
  577. package/corpus/core/docs/content/locales/ko-KR/tracking.md +236 -0
  578. package/corpus/core/docs/content/locales/ko-KR/using-your-agent.md +71 -0
  579. package/corpus/core/docs/content/locales/ko-KR/voice-input.md +81 -0
  580. package/corpus/core/docs/content/locales/ko-KR/what-is-agent-native.md +202 -0
  581. package/corpus/core/docs/content/locales/ko-KR/workspace-connections.md +321 -0
  582. package/corpus/core/docs/content/locales/ko-KR/workspace-management.md +175 -0
  583. package/corpus/core/docs/content/locales/ko-KR/workspace.md +323 -0
  584. package/corpus/core/docs/content/locales/ko-KR/writing-agent-instructions.md +173 -0
  585. package/corpus/core/docs/content/locales/pt-BR/a2a-protocol.md +392 -0
  586. package/corpus/core/docs/content/locales/pt-BR/actions.md +583 -0
  587. package/corpus/core/docs/content/locales/pt-BR/agent-mentions.md +164 -0
  588. package/corpus/core/docs/content/locales/pt-BR/agent-surfaces.md +397 -0
  589. package/corpus/core/docs/content/locales/pt-BR/agent-teams.md +171 -0
  590. package/corpus/core/docs/content/locales/pt-BR/agent-web-surfaces.md +161 -0
  591. package/corpus/core/docs/content/locales/pt-BR/audit-log.md +111 -0
  592. package/corpus/core/docs/content/locales/pt-BR/authentication.md +332 -0
  593. package/corpus/core/docs/content/locales/pt-BR/automations.md +268 -0
  594. package/corpus/core/docs/content/locales/pt-BR/blueprint-installer.md +83 -0
  595. package/corpus/core/docs/content/locales/pt-BR/cli-adapters.md +129 -0
  596. package/corpus/core/docs/content/locales/pt-BR/client.md +398 -0
  597. package/corpus/core/docs/content/locales/pt-BR/cloneable-saas.md +114 -0
  598. package/corpus/core/docs/content/locales/pt-BR/code-agents-ui.md +436 -0
  599. package/corpus/core/docs/content/locales/pt-BR/components.md +368 -0
  600. package/corpus/core/docs/content/locales/pt-BR/context-awareness.md +373 -0
  601. package/corpus/core/docs/content/locales/pt-BR/creating-templates.md +411 -0
  602. package/corpus/core/docs/content/locales/pt-BR/cross-app-sso.md +185 -0
  603. package/corpus/core/docs/content/locales/pt-BR/database.md +183 -0
  604. package/corpus/core/docs/content/locales/pt-BR/deployment.md +349 -0
  605. package/corpus/core/docs/content/locales/pt-BR/dispatch.md +146 -0
  606. package/corpus/core/docs/content/locales/pt-BR/drop-in-agent.md +260 -0
  607. package/corpus/core/docs/content/locales/pt-BR/durable-resume.md +65 -0
  608. package/corpus/core/docs/content/locales/pt-BR/embedding-sdk.md +597 -0
  609. package/corpus/core/docs/content/locales/pt-BR/evals.md +155 -0
  610. package/corpus/core/docs/content/locales/pt-BR/extensions.md +360 -0
  611. package/corpus/core/docs/content/locales/pt-BR/external-agents.md +619 -0
  612. package/corpus/core/docs/content/locales/pt-BR/faq.md +142 -0
  613. package/corpus/core/docs/content/locales/pt-BR/file-uploads.md +122 -0
  614. package/corpus/core/docs/content/locales/pt-BR/frames.md +153 -0
  615. package/corpus/core/docs/content/locales/pt-BR/getting-started.md +199 -0
  616. package/corpus/core/docs/content/locales/pt-BR/harness-agents.md +349 -0
  617. package/corpus/core/docs/content/locales/pt-BR/human-approval.md +86 -0
  618. package/corpus/core/docs/content/locales/pt-BR/internationalization.md +67 -24
  619. package/corpus/core/docs/content/locales/pt-BR/key-concepts.md +312 -0
  620. package/corpus/core/docs/content/locales/pt-BR/local-file-mode.md +433 -0
  621. package/corpus/core/docs/content/locales/pt-BR/mcp-apps.md +147 -0
  622. package/corpus/core/docs/content/locales/pt-BR/mcp-clients.md +330 -0
  623. package/corpus/core/docs/content/locales/pt-BR/mcp-protocol.md +279 -0
  624. package/corpus/core/docs/content/locales/pt-BR/messaging.md +461 -0
  625. package/corpus/core/docs/content/locales/pt-BR/migration-workbench.md +33 -0
  626. package/corpus/core/docs/content/locales/pt-BR/multi-app-workspace.md +312 -0
  627. package/corpus/core/docs/content/locales/pt-BR/multi-tenancy.md +52 -0
  628. package/corpus/core/docs/content/locales/pt-BR/native-chat-ui.md +321 -0
  629. package/corpus/core/docs/content/locales/pt-BR/notifications.md +231 -0
  630. package/corpus/core/docs/content/locales/pt-BR/observability.md +294 -0
  631. package/corpus/core/docs/content/locales/pt-BR/observational-memory.md +77 -0
  632. package/corpus/core/docs/content/locales/pt-BR/onboarding.md +216 -0
  633. package/corpus/core/docs/content/locales/pt-BR/plan-plugin.md +200 -0
  634. package/corpus/core/docs/content/locales/pt-BR/pr-visual-recap.md +384 -0
  635. package/corpus/core/docs/content/locales/pt-BR/processors.md +106 -0
  636. package/corpus/core/docs/content/locales/pt-BR/progress.md +199 -0
  637. package/corpus/core/docs/content/locales/pt-BR/pure-agent-apps.md +39 -0
  638. package/corpus/core/docs/content/locales/pt-BR/real-time-collaboration.md +676 -0
  639. package/corpus/core/docs/content/locales/pt-BR/recurring-jobs.md +142 -0
  640. package/corpus/core/docs/content/locales/pt-BR/routing.md +79 -0
  641. package/corpus/core/docs/content/locales/pt-BR/sandbox-adapters.md +227 -0
  642. package/corpus/core/docs/content/locales/pt-BR/security.md +330 -0
  643. package/corpus/core/docs/content/locales/pt-BR/server.md +253 -0
  644. package/corpus/core/docs/content/locales/pt-BR/sharing.md +219 -0
  645. package/corpus/core/docs/content/locales/pt-BR/skills-guide.md +281 -0
  646. package/corpus/core/docs/content/locales/pt-BR/template-analytics.md +259 -0
  647. package/corpus/core/docs/content/locales/pt-BR/template-assets.md +303 -0
  648. package/corpus/core/docs/content/locales/pt-BR/template-brain.md +324 -0
  649. package/corpus/core/docs/content/locales/pt-BR/template-calendar.md +194 -0
  650. package/corpus/core/docs/content/locales/pt-BR/template-chat.md +129 -0
  651. package/corpus/core/docs/content/locales/pt-BR/template-clips.md +368 -0
  652. package/corpus/core/docs/content/locales/pt-BR/template-content.md +402 -0
  653. package/corpus/core/docs/content/locales/pt-BR/template-design.md +173 -0
  654. package/corpus/core/docs/content/locales/pt-BR/template-dispatch.md +220 -0
  655. package/corpus/core/docs/content/locales/pt-BR/template-forms.md +178 -0
  656. package/corpus/core/docs/content/locales/pt-BR/template-mail.md +239 -0
  657. package/corpus/core/docs/content/locales/pt-BR/template-plan.md +815 -0
  658. package/corpus/core/docs/content/locales/pt-BR/template-slides.md +293 -0
  659. package/corpus/core/docs/content/locales/pt-BR/template-videos.md +222 -0
  660. package/corpus/core/docs/content/locales/pt-BR/tracking.md +236 -0
  661. package/corpus/core/docs/content/locales/pt-BR/using-your-agent.md +71 -0
  662. package/corpus/core/docs/content/locales/pt-BR/voice-input.md +81 -0
  663. package/corpus/core/docs/content/locales/pt-BR/what-is-agent-native.md +202 -0
  664. package/corpus/core/docs/content/locales/pt-BR/workspace-connections.md +321 -0
  665. package/corpus/core/docs/content/locales/pt-BR/workspace-management.md +175 -0
  666. package/corpus/core/docs/content/locales/pt-BR/workspace.md +323 -0
  667. package/corpus/core/docs/content/locales/pt-BR/writing-agent-instructions.md +173 -0
  668. package/corpus/core/docs/content/locales/zh-CN/a2a-protocol.md +392 -0
  669. package/corpus/core/docs/content/locales/zh-CN/actions.md +583 -0
  670. package/corpus/core/docs/content/locales/zh-CN/agent-mentions.md +164 -0
  671. package/corpus/core/docs/content/locales/zh-CN/agent-surfaces.md +397 -0
  672. package/corpus/core/docs/content/locales/zh-CN/agent-teams.md +171 -0
  673. package/corpus/core/docs/content/locales/zh-CN/agent-web-surfaces.md +161 -0
  674. package/corpus/core/docs/content/locales/zh-CN/audit-log.md +111 -0
  675. package/corpus/core/docs/content/locales/zh-CN/authentication.md +332 -0
  676. package/corpus/core/docs/content/locales/zh-CN/automations.md +268 -0
  677. package/corpus/core/docs/content/locales/zh-CN/blueprint-installer.md +83 -0
  678. package/corpus/core/docs/content/locales/zh-CN/cli-adapters.md +129 -0
  679. package/corpus/core/docs/content/locales/zh-CN/client.md +398 -0
  680. package/corpus/core/docs/content/locales/zh-CN/cloneable-saas.md +114 -0
  681. package/corpus/core/docs/content/locales/zh-CN/code-agents-ui.md +436 -0
  682. package/corpus/core/docs/content/locales/zh-CN/components.md +368 -0
  683. package/corpus/core/docs/content/locales/zh-CN/context-awareness.md +373 -0
  684. package/corpus/core/docs/content/locales/zh-CN/creating-templates.md +411 -0
  685. package/corpus/core/docs/content/locales/zh-CN/cross-app-sso.md +188 -0
  686. package/corpus/core/docs/content/locales/zh-CN/database.md +183 -0
  687. package/corpus/core/docs/content/locales/zh-CN/deployment.md +349 -0
  688. package/corpus/core/docs/content/locales/zh-CN/dispatch.md +146 -0
  689. package/corpus/core/docs/content/locales/zh-CN/drop-in-agent.md +260 -0
  690. package/corpus/core/docs/content/locales/zh-CN/durable-resume.md +65 -0
  691. package/corpus/core/docs/content/locales/zh-CN/embedding-sdk.md +597 -0
  692. package/corpus/core/docs/content/locales/zh-CN/evals.md +155 -0
  693. package/corpus/core/docs/content/locales/zh-CN/extensions.md +360 -0
  694. package/corpus/core/docs/content/locales/zh-CN/external-agents.md +619 -0
  695. package/corpus/core/docs/content/locales/zh-CN/faq.md +142 -0
  696. package/corpus/core/docs/content/locales/zh-CN/file-uploads.md +122 -0
  697. package/corpus/core/docs/content/locales/zh-CN/frames.md +153 -0
  698. package/corpus/core/docs/content/locales/zh-CN/getting-started.md +199 -0
  699. package/corpus/core/docs/content/locales/zh-CN/harness-agents.md +349 -0
  700. package/corpus/core/docs/content/locales/zh-CN/human-approval.md +86 -0
  701. package/corpus/core/docs/content/locales/zh-CN/internationalization.md +67 -24
  702. package/corpus/core/docs/content/locales/zh-CN/key-concepts.md +312 -0
  703. package/corpus/core/docs/content/locales/zh-CN/local-file-mode.md +433 -0
  704. package/corpus/core/docs/content/locales/zh-CN/mcp-apps.md +147 -0
  705. package/corpus/core/docs/content/locales/zh-CN/mcp-clients.md +330 -0
  706. package/corpus/core/docs/content/locales/zh-CN/mcp-protocol.md +279 -0
  707. package/corpus/core/docs/content/locales/zh-CN/messaging.md +461 -0
  708. package/corpus/core/docs/content/locales/zh-CN/migration-workbench.md +33 -0
  709. package/corpus/core/docs/content/locales/zh-CN/multi-app-workspace.md +312 -0
  710. package/corpus/core/docs/content/locales/zh-CN/multi-tenancy.md +52 -0
  711. package/corpus/core/docs/content/locales/zh-CN/native-chat-ui.md +321 -0
  712. package/corpus/core/docs/content/locales/zh-CN/notifications.md +231 -0
  713. package/corpus/core/docs/content/locales/zh-CN/observability.md +294 -0
  714. package/corpus/core/docs/content/locales/zh-CN/observational-memory.md +77 -0
  715. package/corpus/core/docs/content/locales/zh-CN/onboarding.md +216 -0
  716. package/corpus/core/docs/content/locales/zh-CN/plan-plugin.md +200 -0
  717. package/corpus/core/docs/content/locales/zh-CN/pr-visual-recap.md +384 -0
  718. package/corpus/core/docs/content/locales/zh-CN/processors.md +106 -0
  719. package/corpus/core/docs/content/locales/zh-CN/progress.md +199 -0
  720. package/corpus/core/docs/content/locales/zh-CN/pure-agent-apps.md +39 -0
  721. package/corpus/core/docs/content/locales/zh-CN/real-time-collaboration.md +676 -0
  722. package/corpus/core/docs/content/locales/zh-CN/recurring-jobs.md +142 -0
  723. package/corpus/core/docs/content/locales/zh-CN/routing.md +79 -0
  724. package/corpus/core/docs/content/locales/zh-CN/sandbox-adapters.md +227 -0
  725. package/corpus/core/docs/content/locales/zh-CN/security.md +330 -0
  726. package/corpus/core/docs/content/locales/zh-CN/server.md +253 -0
  727. package/corpus/core/docs/content/locales/zh-CN/sharing.md +219 -0
  728. package/corpus/core/docs/content/locales/zh-CN/skills-guide.md +281 -0
  729. package/corpus/core/docs/content/locales/zh-CN/template-analytics.md +259 -0
  730. package/corpus/core/docs/content/locales/zh-CN/template-assets.md +303 -0
  731. package/corpus/core/docs/content/locales/zh-CN/template-brain.md +324 -0
  732. package/corpus/core/docs/content/locales/zh-CN/template-calendar.md +194 -0
  733. package/corpus/core/docs/content/locales/zh-CN/template-chat.md +129 -0
  734. package/corpus/core/docs/content/locales/zh-CN/template-clips.md +368 -0
  735. package/corpus/core/docs/content/locales/zh-CN/template-content.md +402 -0
  736. package/corpus/core/docs/content/locales/zh-CN/template-design.md +173 -0
  737. package/corpus/core/docs/content/locales/zh-CN/template-dispatch.md +220 -0
  738. package/corpus/core/docs/content/locales/zh-CN/template-forms.md +178 -0
  739. package/corpus/core/docs/content/locales/zh-CN/template-mail.md +239 -0
  740. package/corpus/core/docs/content/locales/zh-CN/template-plan.md +814 -0
  741. package/corpus/core/docs/content/locales/zh-CN/template-slides.md +293 -0
  742. package/corpus/core/docs/content/locales/zh-CN/template-videos.md +222 -0
  743. package/corpus/core/docs/content/locales/zh-CN/tracking.md +236 -0
  744. package/corpus/core/docs/content/locales/zh-CN/using-your-agent.md +71 -0
  745. package/corpus/core/docs/content/locales/zh-CN/voice-input.md +81 -0
  746. package/corpus/core/docs/content/locales/zh-CN/what-is-agent-native.md +202 -0
  747. package/corpus/core/docs/content/locales/zh-CN/workspace-connections.md +321 -0
  748. package/corpus/core/docs/content/locales/zh-CN/workspace-management.md +175 -0
  749. package/corpus/core/docs/content/locales/zh-CN/workspace.md +323 -0
  750. package/corpus/core/docs/content/locales/zh-CN/writing-agent-instructions.md +173 -0
  751. package/corpus/core/package.json +1 -1
  752. package/corpus/core/src/agent/run-store.ts +13 -0
  753. package/corpus/core/src/client/components/CodeRequiredDialog.tsx +37 -23
  754. package/corpus/core/src/client/extensions/EmbeddedExtension.tsx +13 -9
  755. package/corpus/core/src/client/extensions/ExtensionEditor.tsx +43 -33
  756. package/corpus/core/src/client/extensions/ExtensionSlot.tsx +16 -12
  757. package/corpus/core/src/client/extensions/ExtensionsListPage.tsx +52 -37
  758. package/corpus/core/src/client/i18n.tsx +87 -2
  759. package/corpus/core/src/client/integrations/IntegrationCard.tsx +13 -8
  760. package/corpus/core/src/client/integrations/IntegrationsPanel.tsx +34 -30
  761. package/corpus/core/src/client/observability/ObservabilityDashboard.tsx +90 -65
  762. package/corpus/core/src/client/org/RequireActiveOrg.tsx +24 -18
  763. package/corpus/core/src/client/org/TeamPage.tsx +37 -26
  764. package/corpus/core/src/client/progress/RunsTray.tsx +67 -33
  765. package/corpus/core/src/extensions/routes.ts +45 -25
  766. package/corpus/core/src/templates/default/app/i18n/ar-SA.ts +356 -0
  767. package/corpus/core/src/templates/default/app/i18n/de-DE.ts +332 -0
  768. package/corpus/core/src/templates/default/app/i18n/en-US.ts +303 -0
  769. package/corpus/core/src/templates/default/app/i18n/es-ES.ts +339 -0
  770. package/corpus/core/src/templates/default/app/i18n/fr-FR.ts +339 -0
  771. package/corpus/core/src/templates/default/app/i18n/hi-IN.ts +332 -0
  772. package/corpus/core/src/templates/default/app/i18n/index.ts +18 -0
  773. package/corpus/core/src/templates/default/app/i18n/ja-JP.ts +326 -0
  774. package/corpus/core/src/templates/default/app/i18n/ko-KR.ts +326 -0
  775. package/corpus/core/src/templates/default/app/i18n/pt-BR.ts +339 -0
  776. package/corpus/core/src/templates/default/app/i18n/zh-CN.ts +324 -0
  777. package/corpus/core/src/templates/default/app/root.tsx +109 -6
  778. package/corpus/core/src/templates/workspace-core/.agents/skills/extensions/references/api.md +34 -12
  779. package/corpus/templates/analytics/app/components/layout/NewAnalysisDialog.tsx +16 -10
  780. package/corpus/templates/analytics/app/components/layout/NewDashboardDialog.tsx +9 -4
  781. package/corpus/templates/analytics/app/i18n-data.ts +16 -0
  782. package/corpus/templates/assets/app/i18n-data.ts +101 -0
  783. package/corpus/templates/assets/app/routes/asset.$id.tsx +60 -36
  784. package/corpus/templates/assets/app/routes/brand-kits._index.tsx +19 -16
  785. package/corpus/templates/assets/app/routes/settings.tsx +58 -37
  786. package/corpus/templates/brain/app/i18n-data.ts +114 -0
  787. package/corpus/templates/brain/app/routes/_index.tsx +7 -4
  788. package/corpus/templates/brain/app/routes/ops.tsx +88 -60
  789. package/corpus/templates/brain/app/routes/search.tsx +97 -56
  790. package/corpus/templates/calendar/app/components/calendar/DeleteEventDialog.tsx +33 -21
  791. package/corpus/templates/calendar/app/components/calendar/EventDialog.tsx +25 -30
  792. package/corpus/templates/calendar/app/i18n/index.ts +3 -24
  793. package/corpus/templates/calendar/app/i18n-data.ts +61 -0
  794. package/corpus/templates/calendar/app/pages/Settings.tsx +23 -23
  795. package/corpus/templates/chat/app/i18n-data.ts +78 -0
  796. package/corpus/templates/chat/app/routes/database.tsx +3 -1
  797. package/corpus/templates/chat/app/routes/observability.tsx +3 -2
  798. package/corpus/templates/chat/app/routes/team.tsx +4 -2
  799. package/corpus/templates/clips/app/i18n/ar-SA.ts +17 -0
  800. package/corpus/templates/clips/app/i18n/de-DE.ts +17 -0
  801. package/corpus/templates/clips/app/i18n/en-US.ts +17 -0
  802. package/corpus/templates/clips/app/i18n/es-ES.ts +17 -0
  803. package/corpus/templates/clips/app/i18n/fr-FR.ts +17 -0
  804. package/corpus/templates/clips/app/i18n/hi-IN.ts +17 -0
  805. package/corpus/templates/clips/app/i18n/ja-JP.ts +17 -0
  806. package/corpus/templates/clips/app/i18n/ko-KR.ts +17 -0
  807. package/corpus/templates/clips/app/i18n/pt-BR.ts +17 -0
  808. package/corpus/templates/clips/app/i18n/zh-CN.ts +15 -0
  809. package/corpus/templates/clips/app/routes/_app.trash.tsx +33 -20
  810. package/corpus/templates/content/app/i18n-data.ts +100 -0
  811. package/corpus/templates/content/app/routes/_app.team.tsx +7 -6
  812. package/corpus/templates/design/app/i18n-data.ts +58 -0
  813. package/corpus/templates/design/app/pages/Present.tsx +4 -3
  814. package/corpus/templates/design/app/routes/team.tsx +3 -1
  815. package/corpus/templates/forms/app/i18n/ar-SA.ts +88 -0
  816. package/corpus/templates/forms/app/i18n/de-DE.ts +88 -0
  817. package/corpus/templates/forms/app/i18n/en-US.ts +88 -0
  818. package/corpus/templates/forms/app/i18n/es-ES.ts +90 -0
  819. package/corpus/templates/forms/app/i18n/fr-FR.ts +88 -0
  820. package/corpus/templates/forms/app/i18n/hi-IN.ts +88 -0
  821. package/corpus/templates/forms/app/i18n/ja-JP.ts +88 -0
  822. package/corpus/templates/forms/app/i18n/ko-KR.ts +88 -0
  823. package/corpus/templates/forms/app/i18n/pt-BR.ts +88 -0
  824. package/corpus/templates/forms/app/i18n/zh-CN.ts +88 -0
  825. package/corpus/templates/forms/app/pages/FormsListPage.tsx +92 -63
  826. package/corpus/templates/forms/app/pages/ResponsesPage.tsx +37 -20
  827. package/corpus/templates/forms/app/routes/_index.tsx +15 -14
  828. package/corpus/templates/macros/app/i18n/ar-SA.ts +22 -0
  829. package/corpus/templates/macros/app/i18n/de-DE.ts +22 -0
  830. package/corpus/templates/macros/app/i18n/en-US.ts +22 -0
  831. package/corpus/templates/macros/app/i18n/es-ES.ts +22 -0
  832. package/corpus/templates/macros/app/i18n/fr-FR.ts +22 -0
  833. package/corpus/templates/macros/app/i18n/hi-IN.ts +22 -0
  834. package/corpus/templates/macros/app/i18n/ja-JP.ts +22 -0
  835. package/corpus/templates/macros/app/i18n/ko-KR.ts +22 -0
  836. package/corpus/templates/macros/app/i18n/pt-BR.ts +22 -0
  837. package/corpus/templates/macros/app/i18n/zh-CN.ts +22 -0
  838. package/corpus/templates/macros/app/routes/analytics.tsx +54 -27
  839. package/corpus/templates/mail/app/components/layout/CommandPalette.tsx +34 -26
  840. package/corpus/templates/mail/app/i18n/ar-SA.ts +30 -0
  841. package/corpus/templates/mail/app/i18n/de-DE.ts +30 -0
  842. package/corpus/templates/mail/app/i18n/en-US.ts +30 -0
  843. package/corpus/templates/mail/app/i18n/es-ES.ts +30 -0
  844. package/corpus/templates/mail/app/i18n/fr-FR.ts +30 -0
  845. package/corpus/templates/mail/app/i18n/hi-IN.ts +30 -0
  846. package/corpus/templates/mail/app/i18n/ja-JP.ts +30 -0
  847. package/corpus/templates/mail/app/i18n/ko-KR.ts +30 -0
  848. package/corpus/templates/mail/app/i18n/pt-BR.ts +30 -0
  849. package/corpus/templates/mail/app/i18n/zh-CN.ts +30 -0
  850. package/corpus/templates/mail/app/pages/NotFound.tsx +6 -2
  851. package/corpus/templates/plan/app/components/plan/GuestModeBanner.tsx +4 -3
  852. package/corpus/templates/plan/app/i18n/ar-SA.ts +17 -0
  853. package/corpus/templates/plan/app/i18n/de-DE.ts +17 -0
  854. package/corpus/templates/plan/app/i18n/en-US.ts +17 -0
  855. package/corpus/templates/plan/app/i18n/es-ES.ts +17 -0
  856. package/corpus/templates/plan/app/i18n/fr-FR.ts +17 -0
  857. package/corpus/templates/plan/app/i18n/hi-IN.ts +17 -0
  858. package/corpus/templates/plan/app/i18n/ja-JP.ts +17 -0
  859. package/corpus/templates/plan/app/i18n/ko-KR.ts +17 -0
  860. package/corpus/templates/plan/app/i18n/pt-BR.ts +17 -0
  861. package/corpus/templates/plan/app/i18n/zh-CN.ts +17 -0
  862. package/corpus/templates/plan/app/pages/PlanChatPage.tsx +12 -13
  863. package/corpus/templates/slides/app/i18n/ar-SA.ts +11 -0
  864. package/corpus/templates/slides/app/i18n/de-DE.ts +11 -0
  865. package/corpus/templates/slides/app/i18n/en-US.ts +11 -0
  866. package/corpus/templates/slides/app/i18n/es-ES.ts +11 -0
  867. package/corpus/templates/slides/app/i18n/fr-FR.ts +11 -0
  868. package/corpus/templates/slides/app/i18n/hi-IN.ts +11 -0
  869. package/corpus/templates/slides/app/i18n/ja-JP.ts +11 -0
  870. package/corpus/templates/slides/app/i18n/ko-KR.ts +11 -0
  871. package/corpus/templates/slides/app/i18n/pt-BR.ts +11 -0
  872. package/corpus/templates/slides/app/i18n/zh-CN.ts +11 -0
  873. package/corpus/templates/slides/app/pages/DesignSystems.tsx +10 -9
  874. package/corpus/templates/slides/app/pages/NotFound.tsx +4 -2
  875. package/corpus/templates/videos/app/i18n/ar-SA.ts +14 -0
  876. package/corpus/templates/videos/app/i18n/de-DE.ts +14 -0
  877. package/corpus/templates/videos/app/i18n/en-US.ts +14 -0
  878. package/corpus/templates/videos/app/i18n/es-ES.ts +14 -0
  879. package/corpus/templates/videos/app/i18n/fr-FR.ts +14 -0
  880. package/corpus/templates/videos/app/i18n/hi-IN.ts +14 -0
  881. package/corpus/templates/videos/app/i18n/ja-JP.ts +14 -0
  882. package/corpus/templates/videos/app/i18n/ko-KR.ts +14 -0
  883. package/corpus/templates/videos/app/i18n/pt-BR.ts +14 -0
  884. package/corpus/templates/videos/app/i18n/zh-CN.ts +14 -0
  885. package/corpus/templates/videos/app/pages/DesignSystems.tsx +10 -9
  886. package/corpus/templates/videos/app/pages/NewComposition.tsx +9 -9
  887. package/corpus/templates/videos/app/pages/NotFound.tsx +4 -2
  888. package/dist/agent/run-store.d.ts +13 -0
  889. package/dist/agent/run-store.d.ts.map +1 -1
  890. package/dist/agent/run-store.js +13 -0
  891. package/dist/agent/run-store.js.map +1 -1
  892. package/dist/client/components/CodeRequiredDialog.d.ts.map +1 -1
  893. package/dist/client/components/CodeRequiredDialog.js +12 -9
  894. package/dist/client/components/CodeRequiredDialog.js.map +1 -1
  895. package/dist/client/extensions/EmbeddedExtension.d.ts.map +1 -1
  896. package/dist/client/extensions/EmbeddedExtension.js +4 -2
  897. package/dist/client/extensions/EmbeddedExtension.js.map +1 -1
  898. package/dist/client/extensions/ExtensionEditor.d.ts.map +1 -1
  899. package/dist/client/extensions/ExtensionEditor.js +22 -12
  900. package/dist/client/extensions/ExtensionEditor.js.map +1 -1
  901. package/dist/client/extensions/ExtensionSlot.d.ts.map +1 -1
  902. package/dist/client/extensions/ExtensionSlot.js +9 -7
  903. package/dist/client/extensions/ExtensionSlot.js.map +1 -1
  904. package/dist/client/extensions/ExtensionsListPage.d.ts.map +1 -1
  905. package/dist/client/extensions/ExtensionsListPage.js +28 -15
  906. package/dist/client/extensions/ExtensionsListPage.js.map +1 -1
  907. package/dist/client/i18n.d.ts +1 -1
  908. package/dist/client/i18n.d.ts.map +1 -1
  909. package/dist/client/i18n.js +68 -2
  910. package/dist/client/i18n.js.map +1 -1
  911. package/dist/client/integrations/IntegrationCard.d.ts.map +1 -1
  912. package/dist/client/integrations/IntegrationCard.js +8 -4
  913. package/dist/client/integrations/IntegrationCard.js.map +1 -1
  914. package/dist/client/integrations/IntegrationsPanel.d.ts.map +1 -1
  915. package/dist/client/integrations/IntegrationsPanel.js +15 -8
  916. package/dist/client/integrations/IntegrationsPanel.js.map +1 -1
  917. package/dist/client/observability/ObservabilityDashboard.d.ts.map +1 -1
  918. package/dist/client/observability/ObservabilityDashboard.js +40 -17
  919. package/dist/client/observability/ObservabilityDashboard.js.map +1 -1
  920. package/dist/client/org/RequireActiveOrg.d.ts.map +1 -1
  921. package/dist/client/org/RequireActiveOrg.js +14 -8
  922. package/dist/client/org/RequireActiveOrg.js.map +1 -1
  923. package/dist/client/org/TeamPage.d.ts.map +1 -1
  924. package/dist/client/org/TeamPage.js +21 -14
  925. package/dist/client/org/TeamPage.js.map +1 -1
  926. package/dist/client/progress/RunsTray.d.ts.map +1 -1
  927. package/dist/client/progress/RunsTray.js +49 -30
  928. package/dist/client/progress/RunsTray.js.map +1 -1
  929. package/dist/extensions/routes.d.ts.map +1 -1
  930. package/dist/extensions/routes.js +38 -24
  931. package/dist/extensions/routes.js.map +1 -1
  932. package/dist/templates/default/app/i18n/ar-SA.ts +356 -0
  933. package/dist/templates/default/app/i18n/de-DE.ts +332 -0
  934. package/dist/templates/default/app/i18n/en-US.ts +303 -0
  935. package/dist/templates/default/app/i18n/es-ES.ts +339 -0
  936. package/dist/templates/default/app/i18n/fr-FR.ts +339 -0
  937. package/dist/templates/default/app/i18n/hi-IN.ts +332 -0
  938. package/dist/templates/default/app/i18n/index.ts +18 -0
  939. package/dist/templates/default/app/i18n/ja-JP.ts +326 -0
  940. package/dist/templates/default/app/i18n/ko-KR.ts +326 -0
  941. package/dist/templates/default/app/i18n/pt-BR.ts +339 -0
  942. package/dist/templates/default/app/i18n/zh-CN.ts +324 -0
  943. package/dist/templates/default/app/root.tsx +109 -6
  944. package/dist/templates/workspace-core/.agents/skills/extensions/references/api.md +34 -12
  945. package/docs/content/extensions.md +16 -0
  946. package/docs/content/locales/ar-SA/a2a-protocol.md +392 -0
  947. package/docs/content/locales/ar-SA/actions.md +583 -0
  948. package/docs/content/locales/ar-SA/agent-mentions.md +164 -0
  949. package/docs/content/locales/ar-SA/agent-surfaces.md +397 -0
  950. package/docs/content/locales/ar-SA/agent-teams.md +171 -0
  951. package/docs/content/locales/ar-SA/agent-web-surfaces.md +161 -0
  952. package/docs/content/locales/ar-SA/audit-log.md +111 -0
  953. package/docs/content/locales/ar-SA/authentication.md +332 -0
  954. package/docs/content/locales/ar-SA/automations.md +268 -0
  955. package/docs/content/locales/ar-SA/blueprint-installer.md +83 -0
  956. package/docs/content/locales/ar-SA/cli-adapters.md +129 -0
  957. package/docs/content/locales/ar-SA/client.md +398 -0
  958. package/docs/content/locales/ar-SA/cloneable-saas.md +114 -0
  959. package/docs/content/locales/ar-SA/code-agents-ui.md +436 -0
  960. package/docs/content/locales/ar-SA/components.md +368 -0
  961. package/docs/content/locales/ar-SA/context-awareness.md +373 -0
  962. package/docs/content/locales/ar-SA/creating-templates.md +411 -0
  963. package/docs/content/locales/ar-SA/cross-app-sso.md +185 -0
  964. package/docs/content/locales/ar-SA/database.md +183 -0
  965. package/docs/content/locales/ar-SA/deployment.md +349 -0
  966. package/docs/content/locales/ar-SA/dispatch.md +146 -0
  967. package/docs/content/locales/ar-SA/drop-in-agent.md +260 -0
  968. package/docs/content/locales/ar-SA/durable-resume.md +65 -0
  969. package/docs/content/locales/ar-SA/embedding-sdk.md +597 -0
  970. package/docs/content/locales/ar-SA/evals.md +155 -0
  971. package/docs/content/locales/ar-SA/extensions.md +360 -0
  972. package/docs/content/locales/ar-SA/external-agents.md +619 -0
  973. package/docs/content/locales/ar-SA/faq.md +142 -0
  974. package/docs/content/locales/ar-SA/file-uploads.md +122 -0
  975. package/docs/content/locales/ar-SA/frames.md +153 -0
  976. package/docs/content/locales/ar-SA/getting-started.md +199 -0
  977. package/docs/content/locales/ar-SA/harness-agents.md +349 -0
  978. package/docs/content/locales/ar-SA/human-approval.md +86 -0
  979. package/docs/content/locales/ar-SA/internationalization.md +68 -25
  980. package/docs/content/locales/ar-SA/key-concepts.md +312 -0
  981. package/docs/content/locales/ar-SA/local-file-mode.md +433 -0
  982. package/docs/content/locales/ar-SA/mcp-apps.md +147 -0
  983. package/docs/content/locales/ar-SA/mcp-clients.md +330 -0
  984. package/docs/content/locales/ar-SA/mcp-protocol.md +279 -0
  985. package/docs/content/locales/ar-SA/messaging.md +461 -0
  986. package/docs/content/locales/ar-SA/migration-workbench.md +33 -0
  987. package/docs/content/locales/ar-SA/multi-app-workspace.md +312 -0
  988. package/docs/content/locales/ar-SA/multi-tenancy.md +52 -0
  989. package/docs/content/locales/ar-SA/native-chat-ui.md +321 -0
  990. package/docs/content/locales/ar-SA/notifications.md +231 -0
  991. package/docs/content/locales/ar-SA/observability.md +294 -0
  992. package/docs/content/locales/ar-SA/observational-memory.md +77 -0
  993. package/docs/content/locales/ar-SA/onboarding.md +216 -0
  994. package/docs/content/locales/ar-SA/plan-plugin.md +200 -0
  995. package/docs/content/locales/ar-SA/pr-visual-recap.md +384 -0
  996. package/docs/content/locales/ar-SA/processors.md +106 -0
  997. package/docs/content/locales/ar-SA/progress.md +199 -0
  998. package/docs/content/locales/ar-SA/pure-agent-apps.md +39 -0
  999. package/docs/content/locales/ar-SA/real-time-collaboration.md +676 -0
  1000. package/docs/content/locales/ar-SA/recurring-jobs.md +142 -0
  1001. package/docs/content/locales/ar-SA/routing.md +79 -0
  1002. package/docs/content/locales/ar-SA/sandbox-adapters.md +227 -0
  1003. package/docs/content/locales/ar-SA/security.md +330 -0
  1004. package/docs/content/locales/ar-SA/server.md +253 -0
  1005. package/docs/content/locales/ar-SA/sharing.md +219 -0
  1006. package/docs/content/locales/ar-SA/skills-guide.md +281 -0
  1007. package/docs/content/locales/ar-SA/template-analytics.md +259 -0
  1008. package/docs/content/locales/ar-SA/template-assets.md +303 -0
  1009. package/docs/content/locales/ar-SA/template-brain.md +324 -0
  1010. package/docs/content/locales/ar-SA/template-calendar.md +194 -0
  1011. package/docs/content/locales/ar-SA/template-chat.md +129 -0
  1012. package/docs/content/locales/ar-SA/template-clips.md +368 -0
  1013. package/docs/content/locales/ar-SA/template-content.md +402 -0
  1014. package/docs/content/locales/ar-SA/template-design.md +173 -0
  1015. package/docs/content/locales/ar-SA/template-dispatch.md +220 -0
  1016. package/docs/content/locales/ar-SA/template-forms.md +178 -0
  1017. package/docs/content/locales/ar-SA/template-mail.md +239 -0
  1018. package/docs/content/locales/ar-SA/template-plan.md +815 -0
  1019. package/docs/content/locales/ar-SA/template-slides.md +293 -0
  1020. package/docs/content/locales/ar-SA/template-videos.md +222 -0
  1021. package/docs/content/locales/ar-SA/tracking.md +236 -0
  1022. package/docs/content/locales/ar-SA/using-your-agent.md +71 -0
  1023. package/docs/content/locales/ar-SA/voice-input.md +81 -0
  1024. package/docs/content/locales/ar-SA/what-is-agent-native.md +202 -0
  1025. package/docs/content/locales/ar-SA/workspace-connections.md +321 -0
  1026. package/docs/content/locales/ar-SA/workspace-management.md +175 -0
  1027. package/docs/content/locales/ar-SA/workspace.md +323 -0
  1028. package/docs/content/locales/ar-SA/writing-agent-instructions.md +173 -0
  1029. package/docs/content/locales/de-DE/a2a-protocol.md +392 -0
  1030. package/docs/content/locales/de-DE/actions.md +583 -0
  1031. package/docs/content/locales/de-DE/agent-mentions.md +164 -0
  1032. package/docs/content/locales/de-DE/agent-surfaces.md +397 -0
  1033. package/docs/content/locales/de-DE/agent-teams.md +171 -0
  1034. package/docs/content/locales/de-DE/agent-web-surfaces.md +161 -0
  1035. package/docs/content/locales/de-DE/audit-log.md +111 -0
  1036. package/docs/content/locales/de-DE/authentication.md +332 -0
  1037. package/docs/content/locales/de-DE/automations.md +268 -0
  1038. package/docs/content/locales/de-DE/blueprint-installer.md +83 -0
  1039. package/docs/content/locales/de-DE/cli-adapters.md +129 -0
  1040. package/docs/content/locales/de-DE/client.md +398 -0
  1041. package/docs/content/locales/de-DE/cloneable-saas.md +114 -0
  1042. package/docs/content/locales/de-DE/code-agents-ui.md +436 -0
  1043. package/docs/content/locales/de-DE/components.md +368 -0
  1044. package/docs/content/locales/de-DE/context-awareness.md +373 -0
  1045. package/docs/content/locales/de-DE/creating-templates.md +411 -0
  1046. package/docs/content/locales/de-DE/cross-app-sso.md +185 -0
  1047. package/docs/content/locales/de-DE/database.md +183 -0
  1048. package/docs/content/locales/de-DE/deployment.md +349 -0
  1049. package/docs/content/locales/de-DE/dispatch.md +146 -0
  1050. package/docs/content/locales/de-DE/drop-in-agent.md +260 -0
  1051. package/docs/content/locales/de-DE/durable-resume.md +65 -0
  1052. package/docs/content/locales/de-DE/embedding-sdk.md +597 -0
  1053. package/docs/content/locales/de-DE/evals.md +155 -0
  1054. package/docs/content/locales/de-DE/extensions.md +360 -0
  1055. package/docs/content/locales/de-DE/external-agents.md +619 -0
  1056. package/docs/content/locales/de-DE/faq.md +142 -0
  1057. package/docs/content/locales/de-DE/file-uploads.md +122 -0
  1058. package/docs/content/locales/de-DE/frames.md +153 -0
  1059. package/docs/content/locales/de-DE/getting-started.md +199 -0
  1060. package/docs/content/locales/de-DE/harness-agents.md +349 -0
  1061. package/docs/content/locales/de-DE/human-approval.md +86 -0
  1062. package/docs/content/locales/de-DE/internationalization.md +65 -22
  1063. package/docs/content/locales/de-DE/key-concepts.md +312 -0
  1064. package/docs/content/locales/de-DE/local-file-mode.md +433 -0
  1065. package/docs/content/locales/de-DE/mcp-apps.md +147 -0
  1066. package/docs/content/locales/de-DE/mcp-clients.md +330 -0
  1067. package/docs/content/locales/de-DE/mcp-protocol.md +279 -0
  1068. package/docs/content/locales/de-DE/messaging.md +461 -0
  1069. package/docs/content/locales/de-DE/migration-workbench.md +33 -0
  1070. package/docs/content/locales/de-DE/multi-app-workspace.md +312 -0
  1071. package/docs/content/locales/de-DE/multi-tenancy.md +52 -0
  1072. package/docs/content/locales/de-DE/native-chat-ui.md +321 -0
  1073. package/docs/content/locales/de-DE/notifications.md +231 -0
  1074. package/docs/content/locales/de-DE/observability.md +294 -0
  1075. package/docs/content/locales/de-DE/observational-memory.md +77 -0
  1076. package/docs/content/locales/de-DE/onboarding.md +216 -0
  1077. package/docs/content/locales/de-DE/plan-plugin.md +200 -0
  1078. package/docs/content/locales/de-DE/pr-visual-recap.md +384 -0
  1079. package/docs/content/locales/de-DE/processors.md +106 -0
  1080. package/docs/content/locales/de-DE/progress.md +199 -0
  1081. package/docs/content/locales/de-DE/pure-agent-apps.md +39 -0
  1082. package/docs/content/locales/de-DE/real-time-collaboration.md +676 -0
  1083. package/docs/content/locales/de-DE/recurring-jobs.md +142 -0
  1084. package/docs/content/locales/de-DE/routing.md +79 -0
  1085. package/docs/content/locales/de-DE/sandbox-adapters.md +227 -0
  1086. package/docs/content/locales/de-DE/security.md +330 -0
  1087. package/docs/content/locales/de-DE/server.md +253 -0
  1088. package/docs/content/locales/de-DE/sharing.md +219 -0
  1089. package/docs/content/locales/de-DE/skills-guide.md +281 -0
  1090. package/docs/content/locales/de-DE/template-analytics.md +259 -0
  1091. package/docs/content/locales/de-DE/template-assets.md +303 -0
  1092. package/docs/content/locales/de-DE/template-brain.md +324 -0
  1093. package/docs/content/locales/de-DE/template-calendar.md +194 -0
  1094. package/docs/content/locales/de-DE/template-chat.md +129 -0
  1095. package/docs/content/locales/de-DE/template-clips.md +368 -0
  1096. package/docs/content/locales/de-DE/template-content.md +402 -0
  1097. package/docs/content/locales/de-DE/template-design.md +173 -0
  1098. package/docs/content/locales/de-DE/template-dispatch.md +220 -0
  1099. package/docs/content/locales/de-DE/template-forms.md +178 -0
  1100. package/docs/content/locales/de-DE/template-mail.md +239 -0
  1101. package/docs/content/locales/de-DE/template-plan.md +814 -0
  1102. package/docs/content/locales/de-DE/template-slides.md +293 -0
  1103. package/docs/content/locales/de-DE/template-videos.md +222 -0
  1104. package/docs/content/locales/de-DE/tracking.md +236 -0
  1105. package/docs/content/locales/de-DE/using-your-agent.md +71 -0
  1106. package/docs/content/locales/de-DE/voice-input.md +81 -0
  1107. package/docs/content/locales/de-DE/what-is-agent-native.md +202 -0
  1108. package/docs/content/locales/de-DE/workspace-connections.md +321 -0
  1109. package/docs/content/locales/de-DE/workspace-management.md +175 -0
  1110. package/docs/content/locales/de-DE/workspace.md +323 -0
  1111. package/docs/content/locales/de-DE/writing-agent-instructions.md +173 -0
  1112. package/docs/content/locales/es-ES/a2a-protocol.md +392 -0
  1113. package/docs/content/locales/es-ES/actions.md +583 -0
  1114. package/docs/content/locales/es-ES/agent-mentions.md +164 -0
  1115. package/docs/content/locales/es-ES/agent-surfaces.md +397 -0
  1116. package/docs/content/locales/es-ES/agent-teams.md +171 -0
  1117. package/docs/content/locales/es-ES/agent-web-surfaces.md +161 -0
  1118. package/docs/content/locales/es-ES/audit-log.md +111 -0
  1119. package/docs/content/locales/es-ES/authentication.md +332 -0
  1120. package/docs/content/locales/es-ES/automations.md +268 -0
  1121. package/docs/content/locales/es-ES/blueprint-installer.md +83 -0
  1122. package/docs/content/locales/es-ES/cli-adapters.md +129 -0
  1123. package/docs/content/locales/es-ES/client.md +398 -0
  1124. package/docs/content/locales/es-ES/cloneable-saas.md +114 -0
  1125. package/docs/content/locales/es-ES/code-agents-ui.md +436 -0
  1126. package/docs/content/locales/es-ES/components.md +368 -0
  1127. package/docs/content/locales/es-ES/context-awareness.md +373 -0
  1128. package/docs/content/locales/es-ES/creating-templates.md +411 -0
  1129. package/docs/content/locales/es-ES/cross-app-sso.md +185 -0
  1130. package/docs/content/locales/es-ES/database.md +183 -0
  1131. package/docs/content/locales/es-ES/deployment.md +349 -0
  1132. package/docs/content/locales/es-ES/dispatch.md +146 -0
  1133. package/docs/content/locales/es-ES/drop-in-agent.md +260 -0
  1134. package/docs/content/locales/es-ES/durable-resume.md +65 -0
  1135. package/docs/content/locales/es-ES/embedding-sdk.md +597 -0
  1136. package/docs/content/locales/es-ES/evals.md +155 -0
  1137. package/docs/content/locales/es-ES/extensions.md +360 -0
  1138. package/docs/content/locales/es-ES/external-agents.md +619 -0
  1139. package/docs/content/locales/es-ES/faq.md +142 -0
  1140. package/docs/content/locales/es-ES/file-uploads.md +122 -0
  1141. package/docs/content/locales/es-ES/frames.md +153 -0
  1142. package/docs/content/locales/es-ES/getting-started.md +199 -0
  1143. package/docs/content/locales/es-ES/harness-agents.md +349 -0
  1144. package/docs/content/locales/es-ES/human-approval.md +86 -0
  1145. package/docs/content/locales/es-ES/internationalization.md +67 -24
  1146. package/docs/content/locales/es-ES/key-concepts.md +312 -0
  1147. package/docs/content/locales/es-ES/local-file-mode.md +433 -0
  1148. package/docs/content/locales/es-ES/mcp-apps.md +147 -0
  1149. package/docs/content/locales/es-ES/mcp-clients.md +330 -0
  1150. package/docs/content/locales/es-ES/mcp-protocol.md +279 -0
  1151. package/docs/content/locales/es-ES/messaging.md +461 -0
  1152. package/docs/content/locales/es-ES/migration-workbench.md +33 -0
  1153. package/docs/content/locales/es-ES/multi-app-workspace.md +312 -0
  1154. package/docs/content/locales/es-ES/multi-tenancy.md +52 -0
  1155. package/docs/content/locales/es-ES/native-chat-ui.md +321 -0
  1156. package/docs/content/locales/es-ES/notifications.md +231 -0
  1157. package/docs/content/locales/es-ES/observability.md +294 -0
  1158. package/docs/content/locales/es-ES/observational-memory.md +77 -0
  1159. package/docs/content/locales/es-ES/onboarding.md +216 -0
  1160. package/docs/content/locales/es-ES/plan-plugin.md +200 -0
  1161. package/docs/content/locales/es-ES/pr-visual-recap.md +384 -0
  1162. package/docs/content/locales/es-ES/processors.md +106 -0
  1163. package/docs/content/locales/es-ES/progress.md +199 -0
  1164. package/docs/content/locales/es-ES/pure-agent-apps.md +39 -0
  1165. package/docs/content/locales/es-ES/real-time-collaboration.md +676 -0
  1166. package/docs/content/locales/es-ES/recurring-jobs.md +142 -0
  1167. package/docs/content/locales/es-ES/routing.md +79 -0
  1168. package/docs/content/locales/es-ES/sandbox-adapters.md +227 -0
  1169. package/docs/content/locales/es-ES/security.md +330 -0
  1170. package/docs/content/locales/es-ES/server.md +253 -0
  1171. package/docs/content/locales/es-ES/sharing.md +219 -0
  1172. package/docs/content/locales/es-ES/skills-guide.md +281 -0
  1173. package/docs/content/locales/es-ES/template-analytics.md +259 -0
  1174. package/docs/content/locales/es-ES/template-assets.md +303 -0
  1175. package/docs/content/locales/es-ES/template-brain.md +324 -0
  1176. package/docs/content/locales/es-ES/template-calendar.md +194 -0
  1177. package/docs/content/locales/es-ES/template-chat.md +129 -0
  1178. package/docs/content/locales/es-ES/template-clips.md +368 -0
  1179. package/docs/content/locales/es-ES/template-content.md +402 -0
  1180. package/docs/content/locales/es-ES/template-design.md +173 -0
  1181. package/docs/content/locales/es-ES/template-dispatch.md +220 -0
  1182. package/docs/content/locales/es-ES/template-forms.md +178 -0
  1183. package/docs/content/locales/es-ES/template-mail.md +239 -0
  1184. package/docs/content/locales/es-ES/template-plan.md +815 -0
  1185. package/docs/content/locales/es-ES/template-slides.md +293 -0
  1186. package/docs/content/locales/es-ES/template-videos.md +222 -0
  1187. package/docs/content/locales/es-ES/tracking.md +236 -0
  1188. package/docs/content/locales/es-ES/using-your-agent.md +71 -0
  1189. package/docs/content/locales/es-ES/voice-input.md +81 -0
  1190. package/docs/content/locales/es-ES/what-is-agent-native.md +202 -0
  1191. package/docs/content/locales/es-ES/workspace-connections.md +321 -0
  1192. package/docs/content/locales/es-ES/workspace-management.md +175 -0
  1193. package/docs/content/locales/es-ES/workspace.md +323 -0
  1194. package/docs/content/locales/es-ES/writing-agent-instructions.md +173 -0
  1195. package/docs/content/locales/fr-FR/a2a-protocol.md +392 -0
  1196. package/docs/content/locales/fr-FR/actions.md +583 -0
  1197. package/docs/content/locales/fr-FR/agent-mentions.md +164 -0
  1198. package/docs/content/locales/fr-FR/agent-surfaces.md +397 -0
  1199. package/docs/content/locales/fr-FR/agent-teams.md +171 -0
  1200. package/docs/content/locales/fr-FR/agent-web-surfaces.md +161 -0
  1201. package/docs/content/locales/fr-FR/audit-log.md +111 -0
  1202. package/docs/content/locales/fr-FR/authentication.md +332 -0
  1203. package/docs/content/locales/fr-FR/automations.md +268 -0
  1204. package/docs/content/locales/fr-FR/blueprint-installer.md +83 -0
  1205. package/docs/content/locales/fr-FR/cli-adapters.md +129 -0
  1206. package/docs/content/locales/fr-FR/client.md +398 -0
  1207. package/docs/content/locales/fr-FR/cloneable-saas.md +114 -0
  1208. package/docs/content/locales/fr-FR/code-agents-ui.md +436 -0
  1209. package/docs/content/locales/fr-FR/components.md +368 -0
  1210. package/docs/content/locales/fr-FR/context-awareness.md +373 -0
  1211. package/docs/content/locales/fr-FR/creating-templates.md +411 -0
  1212. package/docs/content/locales/fr-FR/cross-app-sso.md +185 -0
  1213. package/docs/content/locales/fr-FR/database.md +183 -0
  1214. package/docs/content/locales/fr-FR/deployment.md +349 -0
  1215. package/docs/content/locales/fr-FR/dispatch.md +146 -0
  1216. package/docs/content/locales/fr-FR/drop-in-agent.md +260 -0
  1217. package/docs/content/locales/fr-FR/durable-resume.md +65 -0
  1218. package/docs/content/locales/fr-FR/embedding-sdk.md +597 -0
  1219. package/docs/content/locales/fr-FR/evals.md +155 -0
  1220. package/docs/content/locales/fr-FR/extensions.md +360 -0
  1221. package/docs/content/locales/fr-FR/external-agents.md +619 -0
  1222. package/docs/content/locales/fr-FR/faq.md +142 -0
  1223. package/docs/content/locales/fr-FR/file-uploads.md +122 -0
  1224. package/docs/content/locales/fr-FR/frames.md +153 -0
  1225. package/docs/content/locales/fr-FR/getting-started.md +199 -0
  1226. package/docs/content/locales/fr-FR/harness-agents.md +349 -0
  1227. package/docs/content/locales/fr-FR/human-approval.md +86 -0
  1228. package/docs/content/locales/fr-FR/internationalization.md +67 -24
  1229. package/docs/content/locales/fr-FR/key-concepts.md +312 -0
  1230. package/docs/content/locales/fr-FR/local-file-mode.md +433 -0
  1231. package/docs/content/locales/fr-FR/mcp-apps.md +147 -0
  1232. package/docs/content/locales/fr-FR/mcp-clients.md +330 -0
  1233. package/docs/content/locales/fr-FR/mcp-protocol.md +279 -0
  1234. package/docs/content/locales/fr-FR/messaging.md +461 -0
  1235. package/docs/content/locales/fr-FR/migration-workbench.md +33 -0
  1236. package/docs/content/locales/fr-FR/multi-app-workspace.md +312 -0
  1237. package/docs/content/locales/fr-FR/multi-tenancy.md +52 -0
  1238. package/docs/content/locales/fr-FR/native-chat-ui.md +321 -0
  1239. package/docs/content/locales/fr-FR/notifications.md +231 -0
  1240. package/docs/content/locales/fr-FR/observability.md +294 -0
  1241. package/docs/content/locales/fr-FR/observational-memory.md +77 -0
  1242. package/docs/content/locales/fr-FR/onboarding.md +216 -0
  1243. package/docs/content/locales/fr-FR/plan-plugin.md +200 -0
  1244. package/docs/content/locales/fr-FR/pr-visual-recap.md +384 -0
  1245. package/docs/content/locales/fr-FR/processors.md +106 -0
  1246. package/docs/content/locales/fr-FR/progress.md +199 -0
  1247. package/docs/content/locales/fr-FR/pure-agent-apps.md +39 -0
  1248. package/docs/content/locales/fr-FR/real-time-collaboration.md +676 -0
  1249. package/docs/content/locales/fr-FR/recurring-jobs.md +142 -0
  1250. package/docs/content/locales/fr-FR/routing.md +79 -0
  1251. package/docs/content/locales/fr-FR/sandbox-adapters.md +227 -0
  1252. package/docs/content/locales/fr-FR/security.md +330 -0
  1253. package/docs/content/locales/fr-FR/server.md +253 -0
  1254. package/docs/content/locales/fr-FR/sharing.md +219 -0
  1255. package/docs/content/locales/fr-FR/skills-guide.md +281 -0
  1256. package/docs/content/locales/fr-FR/template-analytics.md +259 -0
  1257. package/docs/content/locales/fr-FR/template-assets.md +303 -0
  1258. package/docs/content/locales/fr-FR/template-brain.md +324 -0
  1259. package/docs/content/locales/fr-FR/template-calendar.md +194 -0
  1260. package/docs/content/locales/fr-FR/template-chat.md +129 -0
  1261. package/docs/content/locales/fr-FR/template-clips.md +368 -0
  1262. package/docs/content/locales/fr-FR/template-content.md +402 -0
  1263. package/docs/content/locales/fr-FR/template-design.md +173 -0
  1264. package/docs/content/locales/fr-FR/template-dispatch.md +220 -0
  1265. package/docs/content/locales/fr-FR/template-forms.md +178 -0
  1266. package/docs/content/locales/fr-FR/template-mail.md +239 -0
  1267. package/docs/content/locales/fr-FR/template-plan.md +815 -0
  1268. package/docs/content/locales/fr-FR/template-slides.md +293 -0
  1269. package/docs/content/locales/fr-FR/template-videos.md +222 -0
  1270. package/docs/content/locales/fr-FR/tracking.md +236 -0
  1271. package/docs/content/locales/fr-FR/using-your-agent.md +71 -0
  1272. package/docs/content/locales/fr-FR/voice-input.md +81 -0
  1273. package/docs/content/locales/fr-FR/what-is-agent-native.md +202 -0
  1274. package/docs/content/locales/fr-FR/workspace-connections.md +321 -0
  1275. package/docs/content/locales/fr-FR/workspace-management.md +175 -0
  1276. package/docs/content/locales/fr-FR/workspace.md +323 -0
  1277. package/docs/content/locales/fr-FR/writing-agent-instructions.md +173 -0
  1278. package/docs/content/locales/hi-IN/a2a-protocol.md +392 -0
  1279. package/docs/content/locales/hi-IN/actions.md +583 -0
  1280. package/docs/content/locales/hi-IN/agent-mentions.md +164 -0
  1281. package/docs/content/locales/hi-IN/agent-surfaces.md +397 -0
  1282. package/docs/content/locales/hi-IN/agent-teams.md +171 -0
  1283. package/docs/content/locales/hi-IN/agent-web-surfaces.md +161 -0
  1284. package/docs/content/locales/hi-IN/audit-log.md +111 -0
  1285. package/docs/content/locales/hi-IN/authentication.md +332 -0
  1286. package/docs/content/locales/hi-IN/automations.md +268 -0
  1287. package/docs/content/locales/hi-IN/blueprint-installer.md +83 -0
  1288. package/docs/content/locales/hi-IN/cli-adapters.md +129 -0
  1289. package/docs/content/locales/hi-IN/client.md +398 -0
  1290. package/docs/content/locales/hi-IN/cloneable-saas.md +114 -0
  1291. package/docs/content/locales/hi-IN/code-agents-ui.md +436 -0
  1292. package/docs/content/locales/hi-IN/components.md +368 -0
  1293. package/docs/content/locales/hi-IN/context-awareness.md +373 -0
  1294. package/docs/content/locales/hi-IN/creating-templates.md +411 -0
  1295. package/docs/content/locales/hi-IN/cross-app-sso.md +185 -0
  1296. package/docs/content/locales/hi-IN/database.md +183 -0
  1297. package/docs/content/locales/hi-IN/deployment.md +349 -0
  1298. package/docs/content/locales/hi-IN/dispatch.md +146 -0
  1299. package/docs/content/locales/hi-IN/drop-in-agent.md +260 -0
  1300. package/docs/content/locales/hi-IN/durable-resume.md +65 -0
  1301. package/docs/content/locales/hi-IN/embedding-sdk.md +597 -0
  1302. package/docs/content/locales/hi-IN/evals.md +155 -0
  1303. package/docs/content/locales/hi-IN/extensions.md +360 -0
  1304. package/docs/content/locales/hi-IN/external-agents.md +619 -0
  1305. package/docs/content/locales/hi-IN/faq.md +142 -0
  1306. package/docs/content/locales/hi-IN/file-uploads.md +122 -0
  1307. package/docs/content/locales/hi-IN/frames.md +153 -0
  1308. package/docs/content/locales/hi-IN/getting-started.md +199 -0
  1309. package/docs/content/locales/hi-IN/harness-agents.md +349 -0
  1310. package/docs/content/locales/hi-IN/human-approval.md +86 -0
  1311. package/docs/content/locales/hi-IN/internationalization.md +70 -27
  1312. package/docs/content/locales/hi-IN/key-concepts.md +312 -0
  1313. package/docs/content/locales/hi-IN/local-file-mode.md +433 -0
  1314. package/docs/content/locales/hi-IN/mcp-apps.md +147 -0
  1315. package/docs/content/locales/hi-IN/mcp-clients.md +330 -0
  1316. package/docs/content/locales/hi-IN/mcp-protocol.md +279 -0
  1317. package/docs/content/locales/hi-IN/messaging.md +461 -0
  1318. package/docs/content/locales/hi-IN/migration-workbench.md +33 -0
  1319. package/docs/content/locales/hi-IN/multi-app-workspace.md +312 -0
  1320. package/docs/content/locales/hi-IN/multi-tenancy.md +52 -0
  1321. package/docs/content/locales/hi-IN/native-chat-ui.md +321 -0
  1322. package/docs/content/locales/hi-IN/notifications.md +231 -0
  1323. package/docs/content/locales/hi-IN/observability.md +294 -0
  1324. package/docs/content/locales/hi-IN/observational-memory.md +77 -0
  1325. package/docs/content/locales/hi-IN/onboarding.md +216 -0
  1326. package/docs/content/locales/hi-IN/plan-plugin.md +200 -0
  1327. package/docs/content/locales/hi-IN/pr-visual-recap.md +384 -0
  1328. package/docs/content/locales/hi-IN/processors.md +106 -0
  1329. package/docs/content/locales/hi-IN/progress.md +199 -0
  1330. package/docs/content/locales/hi-IN/pure-agent-apps.md +39 -0
  1331. package/docs/content/locales/hi-IN/real-time-collaboration.md +676 -0
  1332. package/docs/content/locales/hi-IN/recurring-jobs.md +142 -0
  1333. package/docs/content/locales/hi-IN/routing.md +79 -0
  1334. package/docs/content/locales/hi-IN/sandbox-adapters.md +227 -0
  1335. package/docs/content/locales/hi-IN/security.md +330 -0
  1336. package/docs/content/locales/hi-IN/server.md +253 -0
  1337. package/docs/content/locales/hi-IN/sharing.md +219 -0
  1338. package/docs/content/locales/hi-IN/skills-guide.md +281 -0
  1339. package/docs/content/locales/hi-IN/template-analytics.md +259 -0
  1340. package/docs/content/locales/hi-IN/template-assets.md +303 -0
  1341. package/docs/content/locales/hi-IN/template-brain.md +324 -0
  1342. package/docs/content/locales/hi-IN/template-calendar.md +194 -0
  1343. package/docs/content/locales/hi-IN/template-chat.md +129 -0
  1344. package/docs/content/locales/hi-IN/template-clips.md +368 -0
  1345. package/docs/content/locales/hi-IN/template-content.md +402 -0
  1346. package/docs/content/locales/hi-IN/template-design.md +173 -0
  1347. package/docs/content/locales/hi-IN/template-dispatch.md +220 -0
  1348. package/docs/content/locales/hi-IN/template-forms.md +178 -0
  1349. package/docs/content/locales/hi-IN/template-mail.md +239 -0
  1350. package/docs/content/locales/hi-IN/template-plan.md +815 -0
  1351. package/docs/content/locales/hi-IN/template-slides.md +293 -0
  1352. package/docs/content/locales/hi-IN/template-videos.md +222 -0
  1353. package/docs/content/locales/hi-IN/tracking.md +236 -0
  1354. package/docs/content/locales/hi-IN/using-your-agent.md +71 -0
  1355. package/docs/content/locales/hi-IN/voice-input.md +81 -0
  1356. package/docs/content/locales/hi-IN/what-is-agent-native.md +202 -0
  1357. package/docs/content/locales/hi-IN/workspace-connections.md +321 -0
  1358. package/docs/content/locales/hi-IN/workspace-management.md +175 -0
  1359. package/docs/content/locales/hi-IN/workspace.md +323 -0
  1360. package/docs/content/locales/hi-IN/writing-agent-instructions.md +173 -0
  1361. package/docs/content/locales/ja-JP/a2a-protocol.md +392 -0
  1362. package/docs/content/locales/ja-JP/actions.md +583 -0
  1363. package/docs/content/locales/ja-JP/agent-mentions.md +164 -0
  1364. package/docs/content/locales/ja-JP/agent-surfaces.md +397 -0
  1365. package/docs/content/locales/ja-JP/agent-teams.md +171 -0
  1366. package/docs/content/locales/ja-JP/agent-web-surfaces.md +161 -0
  1367. package/docs/content/locales/ja-JP/audit-log.md +111 -0
  1368. package/docs/content/locales/ja-JP/authentication.md +332 -0
  1369. package/docs/content/locales/ja-JP/automations.md +268 -0
  1370. package/docs/content/locales/ja-JP/blueprint-installer.md +83 -0
  1371. package/docs/content/locales/ja-JP/cli-adapters.md +129 -0
  1372. package/docs/content/locales/ja-JP/client.md +398 -0
  1373. package/docs/content/locales/ja-JP/cloneable-saas.md +114 -0
  1374. package/docs/content/locales/ja-JP/code-agents-ui.md +436 -0
  1375. package/docs/content/locales/ja-JP/components.md +368 -0
  1376. package/docs/content/locales/ja-JP/context-awareness.md +373 -0
  1377. package/docs/content/locales/ja-JP/creating-templates.md +411 -0
  1378. package/docs/content/locales/ja-JP/cross-app-sso.md +185 -0
  1379. package/docs/content/locales/ja-JP/database.md +183 -0
  1380. package/docs/content/locales/ja-JP/deployment.md +349 -0
  1381. package/docs/content/locales/ja-JP/dispatch.md +146 -0
  1382. package/docs/content/locales/ja-JP/drop-in-agent.md +260 -0
  1383. package/docs/content/locales/ja-JP/durable-resume.md +65 -0
  1384. package/docs/content/locales/ja-JP/embedding-sdk.md +597 -0
  1385. package/docs/content/locales/ja-JP/evals.md +155 -0
  1386. package/docs/content/locales/ja-JP/extensions.md +360 -0
  1387. package/docs/content/locales/ja-JP/external-agents.md +619 -0
  1388. package/docs/content/locales/ja-JP/faq.md +142 -0
  1389. package/docs/content/locales/ja-JP/file-uploads.md +122 -0
  1390. package/docs/content/locales/ja-JP/frames.md +153 -0
  1391. package/docs/content/locales/ja-JP/getting-started.md +199 -0
  1392. package/docs/content/locales/ja-JP/harness-agents.md +349 -0
  1393. package/docs/content/locales/ja-JP/human-approval.md +86 -0
  1394. package/docs/content/locales/ja-JP/internationalization.md +54 -23
  1395. package/docs/content/locales/ja-JP/key-concepts.md +312 -0
  1396. package/docs/content/locales/ja-JP/local-file-mode.md +433 -0
  1397. package/docs/content/locales/ja-JP/mcp-apps.md +147 -0
  1398. package/docs/content/locales/ja-JP/mcp-clients.md +330 -0
  1399. package/docs/content/locales/ja-JP/mcp-protocol.md +279 -0
  1400. package/docs/content/locales/ja-JP/messaging.md +461 -0
  1401. package/docs/content/locales/ja-JP/migration-workbench.md +33 -0
  1402. package/docs/content/locales/ja-JP/multi-app-workspace.md +312 -0
  1403. package/docs/content/locales/ja-JP/multi-tenancy.md +52 -0
  1404. package/docs/content/locales/ja-JP/native-chat-ui.md +321 -0
  1405. package/docs/content/locales/ja-JP/notifications.md +231 -0
  1406. package/docs/content/locales/ja-JP/observability.md +294 -0
  1407. package/docs/content/locales/ja-JP/observational-memory.md +77 -0
  1408. package/docs/content/locales/ja-JP/onboarding.md +216 -0
  1409. package/docs/content/locales/ja-JP/plan-plugin.md +200 -0
  1410. package/docs/content/locales/ja-JP/pr-visual-recap.md +384 -0
  1411. package/docs/content/locales/ja-JP/processors.md +106 -0
  1412. package/docs/content/locales/ja-JP/progress.md +199 -0
  1413. package/docs/content/locales/ja-JP/pure-agent-apps.md +39 -0
  1414. package/docs/content/locales/ja-JP/real-time-collaboration.md +676 -0
  1415. package/docs/content/locales/ja-JP/recurring-jobs.md +142 -0
  1416. package/docs/content/locales/ja-JP/routing.md +79 -0
  1417. package/docs/content/locales/ja-JP/sandbox-adapters.md +227 -0
  1418. package/docs/content/locales/ja-JP/security.md +330 -0
  1419. package/docs/content/locales/ja-JP/server.md +253 -0
  1420. package/docs/content/locales/ja-JP/sharing.md +219 -0
  1421. package/docs/content/locales/ja-JP/skills-guide.md +281 -0
  1422. package/docs/content/locales/ja-JP/template-analytics.md +259 -0
  1423. package/docs/content/locales/ja-JP/template-assets.md +303 -0
  1424. package/docs/content/locales/ja-JP/template-brain.md +324 -0
  1425. package/docs/content/locales/ja-JP/template-calendar.md +194 -0
  1426. package/docs/content/locales/ja-JP/template-chat.md +129 -0
  1427. package/docs/content/locales/ja-JP/template-clips.md +368 -0
  1428. package/docs/content/locales/ja-JP/template-content.md +402 -0
  1429. package/docs/content/locales/ja-JP/template-design.md +173 -0
  1430. package/docs/content/locales/ja-JP/template-dispatch.md +220 -0
  1431. package/docs/content/locales/ja-JP/template-forms.md +178 -0
  1432. package/docs/content/locales/ja-JP/template-mail.md +239 -0
  1433. package/docs/content/locales/ja-JP/template-plan.md +814 -0
  1434. package/docs/content/locales/ja-JP/template-slides.md +293 -0
  1435. package/docs/content/locales/ja-JP/template-videos.md +222 -0
  1436. package/docs/content/locales/ja-JP/tracking.md +236 -0
  1437. package/docs/content/locales/ja-JP/using-your-agent.md +71 -0
  1438. package/docs/content/locales/ja-JP/voice-input.md +81 -0
  1439. package/docs/content/locales/ja-JP/what-is-agent-native.md +202 -0
  1440. package/docs/content/locales/ja-JP/workspace-connections.md +321 -0
  1441. package/docs/content/locales/ja-JP/workspace-management.md +175 -0
  1442. package/docs/content/locales/ja-JP/workspace.md +323 -0
  1443. package/docs/content/locales/ja-JP/writing-agent-instructions.md +173 -0
  1444. package/docs/content/locales/ko-KR/a2a-protocol.md +392 -0
  1445. package/docs/content/locales/ko-KR/actions.md +583 -0
  1446. package/docs/content/locales/ko-KR/agent-mentions.md +164 -0
  1447. package/docs/content/locales/ko-KR/agent-surfaces.md +397 -0
  1448. package/docs/content/locales/ko-KR/agent-teams.md +171 -0
  1449. package/docs/content/locales/ko-KR/agent-web-surfaces.md +161 -0
  1450. package/docs/content/locales/ko-KR/audit-log.md +111 -0
  1451. package/docs/content/locales/ko-KR/authentication.md +332 -0
  1452. package/docs/content/locales/ko-KR/automations.md +268 -0
  1453. package/docs/content/locales/ko-KR/blueprint-installer.md +83 -0
  1454. package/docs/content/locales/ko-KR/cli-adapters.md +129 -0
  1455. package/docs/content/locales/ko-KR/client.md +398 -0
  1456. package/docs/content/locales/ko-KR/cloneable-saas.md +114 -0
  1457. package/docs/content/locales/ko-KR/code-agents-ui.md +436 -0
  1458. package/docs/content/locales/ko-KR/components.md +368 -0
  1459. package/docs/content/locales/ko-KR/context-awareness.md +373 -0
  1460. package/docs/content/locales/ko-KR/creating-templates.md +411 -0
  1461. package/docs/content/locales/ko-KR/cross-app-sso.md +187 -0
  1462. package/docs/content/locales/ko-KR/database.md +183 -0
  1463. package/docs/content/locales/ko-KR/deployment.md +349 -0
  1464. package/docs/content/locales/ko-KR/dispatch.md +146 -0
  1465. package/docs/content/locales/ko-KR/drop-in-agent.md +260 -0
  1466. package/docs/content/locales/ko-KR/durable-resume.md +65 -0
  1467. package/docs/content/locales/ko-KR/embedding-sdk.md +597 -0
  1468. package/docs/content/locales/ko-KR/evals.md +155 -0
  1469. package/docs/content/locales/ko-KR/extensions.md +360 -0
  1470. package/docs/content/locales/ko-KR/external-agents.md +621 -0
  1471. package/docs/content/locales/ko-KR/faq.md +142 -0
  1472. package/docs/content/locales/ko-KR/file-uploads.md +122 -0
  1473. package/docs/content/locales/ko-KR/frames.md +153 -0
  1474. package/docs/content/locales/ko-KR/getting-started.md +199 -0
  1475. package/docs/content/locales/ko-KR/harness-agents.md +349 -0
  1476. package/docs/content/locales/ko-KR/human-approval.md +88 -0
  1477. package/docs/content/locales/ko-KR/internationalization.md +66 -23
  1478. package/docs/content/locales/ko-KR/key-concepts.md +312 -0
  1479. package/docs/content/locales/ko-KR/local-file-mode.md +433 -0
  1480. package/docs/content/locales/ko-KR/mcp-apps.md +147 -0
  1481. package/docs/content/locales/ko-KR/mcp-clients.md +330 -0
  1482. package/docs/content/locales/ko-KR/mcp-protocol.md +279 -0
  1483. package/docs/content/locales/ko-KR/messaging.md +464 -0
  1484. package/docs/content/locales/ko-KR/migration-workbench.md +33 -0
  1485. package/docs/content/locales/ko-KR/multi-app-workspace.md +312 -0
  1486. package/docs/content/locales/ko-KR/multi-tenancy.md +52 -0
  1487. package/docs/content/locales/ko-KR/native-chat-ui.md +321 -0
  1488. package/docs/content/locales/ko-KR/notifications.md +231 -0
  1489. package/docs/content/locales/ko-KR/observability.md +294 -0
  1490. package/docs/content/locales/ko-KR/observational-memory.md +77 -0
  1491. package/docs/content/locales/ko-KR/onboarding.md +216 -0
  1492. package/docs/content/locales/ko-KR/plan-plugin.md +200 -0
  1493. package/docs/content/locales/ko-KR/pr-visual-recap.md +384 -0
  1494. package/docs/content/locales/ko-KR/processors.md +106 -0
  1495. package/docs/content/locales/ko-KR/progress.md +199 -0
  1496. package/docs/content/locales/ko-KR/pure-agent-apps.md +39 -0
  1497. package/docs/content/locales/ko-KR/real-time-collaboration.md +676 -0
  1498. package/docs/content/locales/ko-KR/recurring-jobs.md +142 -0
  1499. package/docs/content/locales/ko-KR/routing.md +79 -0
  1500. package/docs/content/locales/ko-KR/sandbox-adapters.md +227 -0
  1501. package/docs/content/locales/ko-KR/security.md +330 -0
  1502. package/docs/content/locales/ko-KR/server.md +253 -0
  1503. package/docs/content/locales/ko-KR/sharing.md +219 -0
  1504. package/docs/content/locales/ko-KR/skills-guide.md +281 -0
  1505. package/docs/content/locales/ko-KR/template-analytics.md +259 -0
  1506. package/docs/content/locales/ko-KR/template-assets.md +307 -0
  1507. package/docs/content/locales/ko-KR/template-brain.md +324 -0
  1508. package/docs/content/locales/ko-KR/template-calendar.md +194 -0
  1509. package/docs/content/locales/ko-KR/template-chat.md +129 -0
  1510. package/docs/content/locales/ko-KR/template-clips.md +372 -0
  1511. package/docs/content/locales/ko-KR/template-content.md +402 -0
  1512. package/docs/content/locales/ko-KR/template-design.md +173 -0
  1513. package/docs/content/locales/ko-KR/template-dispatch.md +220 -0
  1514. package/docs/content/locales/ko-KR/template-forms.md +178 -0
  1515. package/docs/content/locales/ko-KR/template-mail.md +239 -0
  1516. package/docs/content/locales/ko-KR/template-plan.md +815 -0
  1517. package/docs/content/locales/ko-KR/template-slides.md +293 -0
  1518. package/docs/content/locales/ko-KR/template-videos.md +222 -0
  1519. package/docs/content/locales/ko-KR/tracking.md +236 -0
  1520. package/docs/content/locales/ko-KR/using-your-agent.md +71 -0
  1521. package/docs/content/locales/ko-KR/voice-input.md +81 -0
  1522. package/docs/content/locales/ko-KR/what-is-agent-native.md +202 -0
  1523. package/docs/content/locales/ko-KR/workspace-connections.md +321 -0
  1524. package/docs/content/locales/ko-KR/workspace-management.md +175 -0
  1525. package/docs/content/locales/ko-KR/workspace.md +323 -0
  1526. package/docs/content/locales/ko-KR/writing-agent-instructions.md +173 -0
  1527. package/docs/content/locales/pt-BR/a2a-protocol.md +392 -0
  1528. package/docs/content/locales/pt-BR/actions.md +583 -0
  1529. package/docs/content/locales/pt-BR/agent-mentions.md +164 -0
  1530. package/docs/content/locales/pt-BR/agent-surfaces.md +397 -0
  1531. package/docs/content/locales/pt-BR/agent-teams.md +171 -0
  1532. package/docs/content/locales/pt-BR/agent-web-surfaces.md +161 -0
  1533. package/docs/content/locales/pt-BR/audit-log.md +111 -0
  1534. package/docs/content/locales/pt-BR/authentication.md +332 -0
  1535. package/docs/content/locales/pt-BR/automations.md +268 -0
  1536. package/docs/content/locales/pt-BR/blueprint-installer.md +83 -0
  1537. package/docs/content/locales/pt-BR/cli-adapters.md +129 -0
  1538. package/docs/content/locales/pt-BR/client.md +398 -0
  1539. package/docs/content/locales/pt-BR/cloneable-saas.md +114 -0
  1540. package/docs/content/locales/pt-BR/code-agents-ui.md +436 -0
  1541. package/docs/content/locales/pt-BR/components.md +368 -0
  1542. package/docs/content/locales/pt-BR/context-awareness.md +373 -0
  1543. package/docs/content/locales/pt-BR/creating-templates.md +411 -0
  1544. package/docs/content/locales/pt-BR/cross-app-sso.md +185 -0
  1545. package/docs/content/locales/pt-BR/database.md +183 -0
  1546. package/docs/content/locales/pt-BR/deployment.md +349 -0
  1547. package/docs/content/locales/pt-BR/dispatch.md +146 -0
  1548. package/docs/content/locales/pt-BR/drop-in-agent.md +260 -0
  1549. package/docs/content/locales/pt-BR/durable-resume.md +65 -0
  1550. package/docs/content/locales/pt-BR/embedding-sdk.md +597 -0
  1551. package/docs/content/locales/pt-BR/evals.md +155 -0
  1552. package/docs/content/locales/pt-BR/extensions.md +360 -0
  1553. package/docs/content/locales/pt-BR/external-agents.md +619 -0
  1554. package/docs/content/locales/pt-BR/faq.md +142 -0
  1555. package/docs/content/locales/pt-BR/file-uploads.md +122 -0
  1556. package/docs/content/locales/pt-BR/frames.md +153 -0
  1557. package/docs/content/locales/pt-BR/getting-started.md +199 -0
  1558. package/docs/content/locales/pt-BR/harness-agents.md +349 -0
  1559. package/docs/content/locales/pt-BR/human-approval.md +86 -0
  1560. package/docs/content/locales/pt-BR/internationalization.md +67 -24
  1561. package/docs/content/locales/pt-BR/key-concepts.md +312 -0
  1562. package/docs/content/locales/pt-BR/local-file-mode.md +433 -0
  1563. package/docs/content/locales/pt-BR/mcp-apps.md +147 -0
  1564. package/docs/content/locales/pt-BR/mcp-clients.md +330 -0
  1565. package/docs/content/locales/pt-BR/mcp-protocol.md +279 -0
  1566. package/docs/content/locales/pt-BR/messaging.md +461 -0
  1567. package/docs/content/locales/pt-BR/migration-workbench.md +33 -0
  1568. package/docs/content/locales/pt-BR/multi-app-workspace.md +312 -0
  1569. package/docs/content/locales/pt-BR/multi-tenancy.md +52 -0
  1570. package/docs/content/locales/pt-BR/native-chat-ui.md +321 -0
  1571. package/docs/content/locales/pt-BR/notifications.md +231 -0
  1572. package/docs/content/locales/pt-BR/observability.md +294 -0
  1573. package/docs/content/locales/pt-BR/observational-memory.md +77 -0
  1574. package/docs/content/locales/pt-BR/onboarding.md +216 -0
  1575. package/docs/content/locales/pt-BR/plan-plugin.md +200 -0
  1576. package/docs/content/locales/pt-BR/pr-visual-recap.md +384 -0
  1577. package/docs/content/locales/pt-BR/processors.md +106 -0
  1578. package/docs/content/locales/pt-BR/progress.md +199 -0
  1579. package/docs/content/locales/pt-BR/pure-agent-apps.md +39 -0
  1580. package/docs/content/locales/pt-BR/real-time-collaboration.md +676 -0
  1581. package/docs/content/locales/pt-BR/recurring-jobs.md +142 -0
  1582. package/docs/content/locales/pt-BR/routing.md +79 -0
  1583. package/docs/content/locales/pt-BR/sandbox-adapters.md +227 -0
  1584. package/docs/content/locales/pt-BR/security.md +330 -0
  1585. package/docs/content/locales/pt-BR/server.md +253 -0
  1586. package/docs/content/locales/pt-BR/sharing.md +219 -0
  1587. package/docs/content/locales/pt-BR/skills-guide.md +281 -0
  1588. package/docs/content/locales/pt-BR/template-analytics.md +259 -0
  1589. package/docs/content/locales/pt-BR/template-assets.md +303 -0
  1590. package/docs/content/locales/pt-BR/template-brain.md +324 -0
  1591. package/docs/content/locales/pt-BR/template-calendar.md +194 -0
  1592. package/docs/content/locales/pt-BR/template-chat.md +129 -0
  1593. package/docs/content/locales/pt-BR/template-clips.md +368 -0
  1594. package/docs/content/locales/pt-BR/template-content.md +402 -0
  1595. package/docs/content/locales/pt-BR/template-design.md +173 -0
  1596. package/docs/content/locales/pt-BR/template-dispatch.md +220 -0
  1597. package/docs/content/locales/pt-BR/template-forms.md +178 -0
  1598. package/docs/content/locales/pt-BR/template-mail.md +239 -0
  1599. package/docs/content/locales/pt-BR/template-plan.md +815 -0
  1600. package/docs/content/locales/pt-BR/template-slides.md +293 -0
  1601. package/docs/content/locales/pt-BR/template-videos.md +222 -0
  1602. package/docs/content/locales/pt-BR/tracking.md +236 -0
  1603. package/docs/content/locales/pt-BR/using-your-agent.md +71 -0
  1604. package/docs/content/locales/pt-BR/voice-input.md +81 -0
  1605. package/docs/content/locales/pt-BR/what-is-agent-native.md +202 -0
  1606. package/docs/content/locales/pt-BR/workspace-connections.md +321 -0
  1607. package/docs/content/locales/pt-BR/workspace-management.md +175 -0
  1608. package/docs/content/locales/pt-BR/workspace.md +323 -0
  1609. package/docs/content/locales/pt-BR/writing-agent-instructions.md +173 -0
  1610. package/docs/content/locales/zh-CN/a2a-protocol.md +392 -0
  1611. package/docs/content/locales/zh-CN/actions.md +583 -0
  1612. package/docs/content/locales/zh-CN/agent-mentions.md +164 -0
  1613. package/docs/content/locales/zh-CN/agent-surfaces.md +397 -0
  1614. package/docs/content/locales/zh-CN/agent-teams.md +171 -0
  1615. package/docs/content/locales/zh-CN/agent-web-surfaces.md +161 -0
  1616. package/docs/content/locales/zh-CN/audit-log.md +111 -0
  1617. package/docs/content/locales/zh-CN/authentication.md +332 -0
  1618. package/docs/content/locales/zh-CN/automations.md +268 -0
  1619. package/docs/content/locales/zh-CN/blueprint-installer.md +83 -0
  1620. package/docs/content/locales/zh-CN/cli-adapters.md +129 -0
  1621. package/docs/content/locales/zh-CN/client.md +398 -0
  1622. package/docs/content/locales/zh-CN/cloneable-saas.md +114 -0
  1623. package/docs/content/locales/zh-CN/code-agents-ui.md +436 -0
  1624. package/docs/content/locales/zh-CN/components.md +368 -0
  1625. package/docs/content/locales/zh-CN/context-awareness.md +373 -0
  1626. package/docs/content/locales/zh-CN/creating-templates.md +411 -0
  1627. package/docs/content/locales/zh-CN/cross-app-sso.md +188 -0
  1628. package/docs/content/locales/zh-CN/database.md +183 -0
  1629. package/docs/content/locales/zh-CN/deployment.md +349 -0
  1630. package/docs/content/locales/zh-CN/dispatch.md +146 -0
  1631. package/docs/content/locales/zh-CN/drop-in-agent.md +260 -0
  1632. package/docs/content/locales/zh-CN/durable-resume.md +65 -0
  1633. package/docs/content/locales/zh-CN/embedding-sdk.md +597 -0
  1634. package/docs/content/locales/zh-CN/evals.md +155 -0
  1635. package/docs/content/locales/zh-CN/extensions.md +360 -0
  1636. package/docs/content/locales/zh-CN/external-agents.md +619 -0
  1637. package/docs/content/locales/zh-CN/faq.md +142 -0
  1638. package/docs/content/locales/zh-CN/file-uploads.md +122 -0
  1639. package/docs/content/locales/zh-CN/frames.md +153 -0
  1640. package/docs/content/locales/zh-CN/getting-started.md +199 -0
  1641. package/docs/content/locales/zh-CN/harness-agents.md +349 -0
  1642. package/docs/content/locales/zh-CN/human-approval.md +86 -0
  1643. package/docs/content/locales/zh-CN/internationalization.md +67 -24
  1644. package/docs/content/locales/zh-CN/key-concepts.md +312 -0
  1645. package/docs/content/locales/zh-CN/local-file-mode.md +433 -0
  1646. package/docs/content/locales/zh-CN/mcp-apps.md +147 -0
  1647. package/docs/content/locales/zh-CN/mcp-clients.md +330 -0
  1648. package/docs/content/locales/zh-CN/mcp-protocol.md +279 -0
  1649. package/docs/content/locales/zh-CN/messaging.md +461 -0
  1650. package/docs/content/locales/zh-CN/migration-workbench.md +33 -0
  1651. package/docs/content/locales/zh-CN/multi-app-workspace.md +312 -0
  1652. package/docs/content/locales/zh-CN/multi-tenancy.md +52 -0
  1653. package/docs/content/locales/zh-CN/native-chat-ui.md +321 -0
  1654. package/docs/content/locales/zh-CN/notifications.md +231 -0
  1655. package/docs/content/locales/zh-CN/observability.md +294 -0
  1656. package/docs/content/locales/zh-CN/observational-memory.md +77 -0
  1657. package/docs/content/locales/zh-CN/onboarding.md +216 -0
  1658. package/docs/content/locales/zh-CN/plan-plugin.md +200 -0
  1659. package/docs/content/locales/zh-CN/pr-visual-recap.md +384 -0
  1660. package/docs/content/locales/zh-CN/processors.md +106 -0
  1661. package/docs/content/locales/zh-CN/progress.md +199 -0
  1662. package/docs/content/locales/zh-CN/pure-agent-apps.md +39 -0
  1663. package/docs/content/locales/zh-CN/real-time-collaboration.md +676 -0
  1664. package/docs/content/locales/zh-CN/recurring-jobs.md +142 -0
  1665. package/docs/content/locales/zh-CN/routing.md +79 -0
  1666. package/docs/content/locales/zh-CN/sandbox-adapters.md +227 -0
  1667. package/docs/content/locales/zh-CN/security.md +330 -0
  1668. package/docs/content/locales/zh-CN/server.md +253 -0
  1669. package/docs/content/locales/zh-CN/sharing.md +219 -0
  1670. package/docs/content/locales/zh-CN/skills-guide.md +281 -0
  1671. package/docs/content/locales/zh-CN/template-analytics.md +259 -0
  1672. package/docs/content/locales/zh-CN/template-assets.md +303 -0
  1673. package/docs/content/locales/zh-CN/template-brain.md +324 -0
  1674. package/docs/content/locales/zh-CN/template-calendar.md +194 -0
  1675. package/docs/content/locales/zh-CN/template-chat.md +129 -0
  1676. package/docs/content/locales/zh-CN/template-clips.md +368 -0
  1677. package/docs/content/locales/zh-CN/template-content.md +402 -0
  1678. package/docs/content/locales/zh-CN/template-design.md +173 -0
  1679. package/docs/content/locales/zh-CN/template-dispatch.md +220 -0
  1680. package/docs/content/locales/zh-CN/template-forms.md +178 -0
  1681. package/docs/content/locales/zh-CN/template-mail.md +239 -0
  1682. package/docs/content/locales/zh-CN/template-plan.md +814 -0
  1683. package/docs/content/locales/zh-CN/template-slides.md +293 -0
  1684. package/docs/content/locales/zh-CN/template-videos.md +222 -0
  1685. package/docs/content/locales/zh-CN/tracking.md +236 -0
  1686. package/docs/content/locales/zh-CN/using-your-agent.md +71 -0
  1687. package/docs/content/locales/zh-CN/voice-input.md +81 -0
  1688. package/docs/content/locales/zh-CN/what-is-agent-native.md +202 -0
  1689. package/docs/content/locales/zh-CN/workspace-connections.md +321 -0
  1690. package/docs/content/locales/zh-CN/workspace-management.md +175 -0
  1691. package/docs/content/locales/zh-CN/workspace.md +323 -0
  1692. package/docs/content/locales/zh-CN/writing-agent-instructions.md +173 -0
  1693. package/package.json +1 -1
  1694. package/src/templates/default/app/i18n/ar-SA.ts +356 -0
  1695. package/src/templates/default/app/i18n/de-DE.ts +332 -0
  1696. package/src/templates/default/app/i18n/en-US.ts +303 -0
  1697. package/src/templates/default/app/i18n/es-ES.ts +339 -0
  1698. package/src/templates/default/app/i18n/fr-FR.ts +339 -0
  1699. package/src/templates/default/app/i18n/hi-IN.ts +332 -0
  1700. package/src/templates/default/app/i18n/index.ts +18 -0
  1701. package/src/templates/default/app/i18n/ja-JP.ts +326 -0
  1702. package/src/templates/default/app/i18n/ko-KR.ts +326 -0
  1703. package/src/templates/default/app/i18n/pt-BR.ts +339 -0
  1704. package/src/templates/default/app/i18n/zh-CN.ts +324 -0
  1705. package/src/templates/default/app/root.tsx +109 -6
  1706. package/src/templates/workspace-core/.agents/skills/extensions/references/api.md +34 -12
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/extensions/routes.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport {\n defineEventHandler,\n getMethod,\n setResponseStatus,\n setResponseHeader,\n type H3Event,\n} from \"h3\";\nimport { readBody } from \"../server/h3-helpers.js\";\nimport { getSession } from \"../server/auth.js\";\nimport {\n runWithRequestContext,\n getRequestOrgId,\n} from \"../server/request-context.js\";\nimport { getOrgContext } from \"../org/context.js\";\nimport { getDbExec, isPostgres } from \"../db/client.js\";\nimport {\n listExtensions,\n getExtension,\n getExtensionHistoryVersion,\n listExtensionHistory,\n createExtension,\n updateExtension,\n updateExtensionContent,\n restoreExtensionHistoryVersion,\n deleteExtension,\n hideExtension,\n unhideExtension,\n globalHideExtension,\n globalUnhideExtension,\n ensureExtensionsTables,\n type ExtensionRow,\n} from \"./store.js\";\nimport {\n getLocalExtension,\n isLocalExtensionRow,\n listLocalExtensions,\n type LocalExtensionRow,\n} from \"./local.js\";\nimport { buildExtensionHtml, EXTENSION_IFRAME_CSP } from \"./html-shell.js\";\nimport { getThemeVars } from \"./theme.js\";\nimport {\n resolveKeyReferencesWithRequestScopes,\n validateUrlAllowlist,\n getResolvedKeyAllowlist,\n type ResolvedKeyReference,\n} from \"../secrets/substitution.js\";\nimport {\n collectSecretValues,\n normalizeExtensionProxyMethod,\n readResponseTextWithLimit,\n redactSecrets,\n redactString,\n sanitizeOutboundHeaders,\n} from \"./proxy-security.js\";\nimport {\n createSsrfSafeDispatcher,\n isBlockedExtensionUrlWithDns,\n} from \"./url-safety.js\";\nimport { ForbiddenError, resolveAccess } from \"../sharing/access.js\";\nimport type { ShareRole } from \"../sharing/schema.js\";\n\nexport function createExtensionsHandler() {\n return defineEventHandler(async (event: H3Event) => {\n const method = getMethod(event);\n const pathname = (event.url?.pathname || \"\")\n .replace(/^\\/+/, \"\")\n .replace(/\\/+$/, \"\");\n const parts = pathname\n ? pathname.split(\"/\").map((part) => {\n try {\n return decodeURIComponent(part);\n } catch {\n return part;\n }\n })\n : [];\n\n const session = await getSession(event).catch(() => null);\n if (!session?.email) {\n setResponseStatus(event, 401);\n return { error: \"Authentication required\" };\n }\n\n const orgCtx = await getOrgContext(event).catch(() => null);\n const userEmail = session.email;\n const orgId = orgCtx?.orgId ?? session.orgId ?? undefined;\n\n try {\n return await runWithRequestContext({ userEmail, orgId }, async () => {\n await ensureExtensionsTables();\n return dispatch(event, method, parts, userEmail);\n });\n } catch (err) {\n if (err instanceof ForbiddenError) {\n setResponseStatus(event, 403);\n return { error: err.message };\n }\n throw err;\n }\n });\n}\n\nasync function dispatch(\n event: H3Event,\n method: string,\n parts: string[],\n userEmail: string,\n): Promise<unknown> {\n // POST /sql/query — read-only SQL for extension iframes\n if (\n method === \"POST\" &&\n parts.length === 2 &&\n parts[0] === \"sql\" &&\n parts[1] === \"query\"\n ) {\n return handleSqlQuery(event);\n }\n\n // POST /sql/exec — write SQL for extension iframes\n if (\n method === \"POST\" &&\n parts.length === 2 &&\n parts[0] === \"sql\" &&\n parts[1] === \"exec\"\n ) {\n return handleSqlExec(event);\n }\n\n // GET /data/:extensionId/:collection — list items in a collection\n if (method === \"GET\" && parts.length === 3 && parts[0] === \"data\") {\n return handleExtensionDataList(event, parts[1], parts[2], userEmail);\n }\n\n // POST /data/:extensionId/:collection — create/upsert an item\n if (method === \"POST\" && parts.length === 3 && parts[0] === \"data\") {\n return handleExtensionDataUpsert(event, parts[1], parts[2], userEmail);\n }\n\n // DELETE /data/:extensionId/:collection/:itemId — delete an item\n if (method === \"DELETE\" && parts.length === 4 && parts[0] === \"data\") {\n return handleExtensionDataDelete(\n event,\n parts[1],\n parts[2],\n parts[3],\n userEmail,\n );\n }\n\n // POST /proxy\n if (method === \"POST\" && parts.length === 1 && parts[0] === \"proxy\") {\n return handleProxy(event, userEmail);\n }\n\n // GET / — list. `?includeGloballyHidden=true` surfaces extensions an\n // admin/owner has globally hidden (so they can be unhidden for everyone).\n if (method === \"GET\" && parts.length === 0) {\n const includeGloballyHidden =\n event.url?.searchParams?.get(\"includeGloballyHidden\") === \"true\";\n const includeContent =\n event.url?.searchParams?.get(\"includeContent\") === \"true\";\n const rows = await listExtensions({ includeGloballyHidden });\n const localRows = includeGloballyHidden ? [] : await listLocalExtensions();\n return Promise.all(\n [...rows, ...localRows].map((row) =>\n extensionResponse(row, undefined, { includeContent }),\n ),\n );\n }\n\n // POST / — create\n if (method === \"POST\" && parts.length === 0) {\n const body = await readBody(event);\n if (!body.name) {\n setResponseStatus(event, 400);\n return { error: \"name is required\" };\n }\n const extension = await createExtension(body);\n setResponseStatus(event, 201);\n return extension;\n }\n\n // GET /:id/render\n if (method === \"GET\" && parts.length === 2 && parts[1] === \"render\") {\n const localExtension = await getLocalExtension(parts[0]);\n if (localExtension) {\n const search = event.url?.search || \"\";\n const isDark = search.includes(\"dark=1\") || search.includes(\"dark=true\");\n const themeVars = getThemeVars(isDark);\n const html = buildExtensionHtml(\n localExtension.content,\n themeVars,\n isDark,\n parts[0],\n {\n authorEmail: localExtension.ownerEmail,\n viewerEmail: userEmail,\n isAuthor: false,\n role: \"viewer\",\n source: \"local-files\",\n permissions: localExtension.source.permissions,\n },\n );\n setResponseHeader(event, \"Content-Type\", \"text/html; charset=utf-8\");\n setResponseHeader(event, \"Content-Security-Policy\", EXTENSION_IFRAME_CSP);\n setResponseHeader(event, \"X-Content-Type-Options\", \"nosniff\");\n setResponseHeader(event, \"Referrer-Policy\", \"no-referrer\");\n return html;\n }\n\n const access = await resolveAccess(\"extension\", parts[0]);\n const extension = access?.resource;\n if (!extension) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n const search = event.url?.search || \"\";\n const isDark = search.includes(\"dark=1\") || search.includes(\"dark=true\");\n const themeVars = getThemeVars(isDark);\n // Compute viewer-vs-author binding so the iframe can warn when the\n // viewer is NOT the author. The role is plumbed through to gate\n // dangerous bridge helpers in iframe-bridge.ts (audit H4).\n const isAuthor = extension.ownerEmail === userEmail;\n\n const html = buildExtensionHtml(\n extension.content,\n themeVars,\n isDark,\n parts[0],\n {\n authorEmail: extension.ownerEmail,\n viewerEmail: userEmail,\n isAuthor,\n role: access.role,\n },\n );\n // Security headers per render. `frame-ancestors` in the CSP must be set as\n // an HTTP header to be enforced; meta-CSP can't set it per spec.\n setResponseHeader(event, \"Content-Type\", \"text/html; charset=utf-8\");\n setResponseHeader(event, \"Content-Security-Policy\", EXTENSION_IFRAME_CSP);\n setResponseHeader(event, \"X-Content-Type-Options\", \"nosniff\");\n setResponseHeader(event, \"Referrer-Policy\", \"no-referrer\");\n return html;\n }\n\n // GET /:id/history — list saved snapshots for an extension\n if (method === \"GET\" && parts.length === 2 && parts[1] === \"history\") {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const limitParam = event.url?.searchParams?.get(\"limit\");\n const limit =\n limitParam === null || limitParam === undefined\n ? undefined\n : Number(limitParam);\n const includeContent =\n event.url?.searchParams?.get(\"includeContent\") === \"true\";\n return {\n history: await listExtensionHistory(parts[0], {\n limit,\n includeContent,\n }),\n };\n }\n\n // GET /:id/history/:version — fetch one snapshot plus its previous-version diff\n if (method === \"GET\" && parts.length === 3 && parts[1] === \"history\") {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const detail = await getExtensionHistoryVersion(parts[0], parts[2]);\n if (!detail) {\n setResponseStatus(event, 404);\n return { error: \"Extension history version not found\" };\n }\n return detail;\n }\n\n // POST /:id/history/:version/restore — restore display metadata + content\n if (\n method === \"POST\" &&\n parts.length === 4 &&\n parts[1] === \"history\" &&\n parts[3] === \"restore\"\n ) {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const restored = await restoreExtensionHistoryVersion(parts[0], parts[2]);\n if (!restored) {\n setResponseStatus(event, 404);\n return { error: \"Extension history version not found\" };\n }\n return extensionResponse(restored);\n }\n\n // GET /:id\n if (method === \"GET\" && parts.length === 1) {\n const localExtension = await getLocalExtension(parts[0]);\n if (localExtension) {\n return extensionResponse(localExtension, \"viewer\");\n }\n\n const access = await resolveAccess(\"extension\", parts[0]);\n if (!access) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n return extensionResponse(access.resource as ExtensionRow, access.role);\n }\n\n // POST /:id/hide — remove from the current user's Extensions list/sidebar\n // without deleting the underlying extension for teammates or shared slots.\n if (method === \"POST\" && parts.length === 2 && parts[1] === \"hide\") {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const ok = await hideExtension(parts[0]);\n if (!ok) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n return { ok: true, hidden: true };\n }\n\n // POST /:id/unhide — restore an extension hidden by the current user.\n if (method === \"POST\" && parts.length === 2 && parts[1] === \"unhide\") {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const ok = await unhideExtension(parts[0]);\n if (!ok) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n return { ok: true, hidden: false };\n }\n\n // POST /:id/global-hide — admin/owner hides the extension from EVERYONE.\n if (method === \"POST\" && parts.length === 2 && parts[1] === \"global-hide\") {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const ok = await globalHideExtension(parts[0]);\n if (!ok) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n return { ok: true, globallyHidden: true };\n }\n\n // POST /:id/global-unhide — admin/owner reverses a global hide.\n if (method === \"POST\" && parts.length === 2 && parts[1] === \"global-unhide\") {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const ok = await globalUnhideExtension(parts[0]);\n if (!ok) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n return { ok: true, globallyHidden: false };\n }\n\n // PUT /:id\n if (method === \"PUT\" && parts.length === 1) {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const body = await readBody(event);\n const hasContentUpdate =\n body.content !== undefined ||\n body.patches !== undefined ||\n body.edits !== undefined ||\n body.format !== undefined;\n const hasMetaUpdate =\n body.name !== undefined ||\n body.description !== undefined ||\n body.icon !== undefined ||\n body.visibility !== undefined;\n\n let result = null;\n if (hasContentUpdate) {\n result = await updateExtensionContent(parts[0], {\n content: body.content,\n patches: body.patches,\n edits: body.edits,\n format: body.format === true || body.format === \"true\",\n });\n }\n if (hasMetaUpdate) {\n result = await updateExtension(parts[0], body);\n }\n if (!hasContentUpdate && !hasMetaUpdate) {\n result = await getExtension(parts[0]);\n }\n if (!result) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n return result;\n }\n\n // DELETE /:id\n if (method === \"DELETE\" && parts.length === 1) {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const ok = await deleteExtension(parts[0]);\n if (!ok) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n return { ok: true };\n }\n\n setResponseStatus(event, 404);\n return { error: \"Not found\" };\n}\n\nasync function extensionResponse(\n row: ExtensionRow | LocalExtensionRow,\n role?: \"owner\" | ShareRole | null,\n options: { includeContent?: boolean } = {},\n) {\n const local = isLocalExtensionRow(row);\n const resolvedRole = local\n ? \"viewer\"\n : (role ??\n (await resolveAccess(\"extension\", row.id)\n .then((access) => access?.role ?? null)\n .catch(() => null)));\n const responseRow =\n options.includeContent === false\n ? (({ content: _content, ...rest }) => rest)(row)\n : row;\n return {\n ...responseRow,\n role: resolvedRole,\n canEdit: local\n ? false\n : resolvedRole\n ? [\"owner\", \"admin\", \"editor\"].includes(resolvedRole)\n : false,\n canDelete: local\n ? false\n : resolvedRole\n ? [\"owner\", \"admin\"].includes(resolvedRole)\n : false,\n globallyHidden: row.hiddenAt != null,\n };\n}\n\nasync function localExtensionSqlOnlyResponse(\n event: H3Event,\n extensionId: string,\n): Promise<unknown | null> {\n const localExtension = await getLocalExtension(extensionId);\n if (!localExtension) return null;\n setResponseStatus(event, 400);\n return {\n error:\n \"This extension is backed by local files. Edit its extension.json or entry file in the workspace; SQL-backed extension history, sharing, hide, update, and delete operations do not apply.\",\n source: localExtension.source,\n };\n}\n\nasync function handleExtensionDataList(\n event: H3Event,\n extensionId: string,\n collection: string,\n userEmail: string,\n): Promise<unknown> {\n await ensureExtensionsTables();\n const extension = await getExtension(extensionId);\n const localExtension = extension\n ? null\n : await getLocalExtension(extensionId);\n if (!extension && !localExtension) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n const client = getDbExec();\n const url = event.url;\n const limitParam = url?.searchParams?.get(\"limit\");\n const limit = limitParam\n ? Math.min(Math.max(1, Number(limitParam)), 1000)\n : 100;\n const scope = url?.searchParams?.get(\"scope\") || \"user\";\n const orgId = getRequestOrgId();\n\n if (scope === \"org\") {\n if (!orgId) {\n setResponseStatus(event, 400);\n return { error: \"Org context required for scope=org\" };\n }\n const result = await client.execute({\n sql: `SELECT COALESCE(item_id, id) AS id, tool_id, collection, data, owner_email, scope, org_id, created_at, updated_at\n FROM tool_data\n WHERE tool_id = ? AND collection = ? AND scope = 'org' AND org_id = ?\n ORDER BY created_at DESC\n LIMIT ?`,\n args: [extensionId, collection, orgId, limit],\n });\n return result.rows ?? [];\n }\n\n if (scope === \"all\") {\n const result = await client.execute({\n sql: `SELECT COALESCE(item_id, id) AS id, tool_id, collection, data, owner_email, scope, org_id, created_at, updated_at\n FROM tool_data\n WHERE tool_id = ? AND collection = ?\n AND ((scope = 'user' AND owner_email = ?) OR (scope = 'org' AND org_id = ?))\n ORDER BY created_at DESC\n LIMIT ?`,\n args: [extensionId, collection, userEmail, orgId ?? \"\", limit],\n });\n return result.rows ?? [];\n }\n\n const result = await client.execute({\n sql: `SELECT COALESCE(item_id, id) AS id, tool_id, collection, data, owner_email, scope, org_id, created_at, updated_at\n FROM tool_data\n WHERE tool_id = ? AND collection = ? AND scope = 'user' AND owner_email = ?\n ORDER BY updated_at DESC\n LIMIT ?`,\n args: [extensionId, collection, userEmail, limit],\n });\n return result.rows ?? [];\n}\n\nasync function handleExtensionDataUpsert(\n event: H3Event,\n extensionId: string,\n collection: string,\n userEmail: string,\n): Promise<unknown> {\n await ensureExtensionsTables();\n const extension = await getExtension(extensionId);\n const localExtension = extension\n ? null\n : await getLocalExtension(extensionId);\n if (!extension && !localExtension) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n const body = await readBody(event);\n if (body.data === undefined) {\n setResponseStatus(event, 400);\n return { error: \"data is required\" };\n }\n const itemId = String(body.id || randomUUID());\n const data =\n typeof body.data === \"string\" ? body.data : JSON.stringify(body.data);\n const now = new Date().toISOString();\n const scope = body.scope === \"org\" ? \"org\" : \"user\";\n const orgId = getRequestOrgId();\n\n if (scope === \"org\" && !orgId) {\n setResponseStatus(event, 400);\n return { error: \"Org context required for scope=org\" };\n }\n\n const scopeKey = scope === \"org\" ? `org:${orgId}` : userEmail;\n const client = getDbExec();\n const pg = isPostgres();\n const conflictClause = pg\n ? `ON CONFLICT (tool_id, collection, scope_key, item_id)\n DO UPDATE SET data = EXCLUDED.data, updated_at = EXCLUDED.updated_at`\n : `ON CONFLICT (tool_id, collection, scope_key, item_id)\n DO UPDATE SET data = excluded.data, updated_at = excluded.updated_at`;\n\n await client.execute({\n sql: `INSERT INTO tool_data (id, tool_id, collection, item_id, data, owner_email, scope, org_id, scope_key, created_at, updated_at)\n VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n ${conflictClause}`,\n args: [\n randomUUID(),\n extensionId,\n collection,\n itemId,\n data,\n userEmail,\n scope,\n scope === \"org\" ? orgId! : null,\n scopeKey,\n now,\n now,\n ],\n });\n return {\n id: itemId,\n extensionId,\n collection,\n data,\n ownerEmail: userEmail,\n scope,\n orgId: scope === \"org\" ? orgId : null,\n createdAt: now,\n updatedAt: now,\n };\n}\n\nasync function handleExtensionDataDelete(\n event: H3Event,\n extensionId: string,\n collection: string,\n itemId: string,\n userEmail: string,\n): Promise<unknown> {\n await ensureExtensionsTables();\n const extension = await getExtension(extensionId);\n const localExtension = extension\n ? null\n : await getLocalExtension(extensionId);\n if (!extension && !localExtension) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n const url = event.url;\n const scope = url?.searchParams?.get(\"scope\") || \"user\";\n const orgId = getRequestOrgId();\n const client = getDbExec();\n\n if (scope === \"org\") {\n if (!orgId) {\n setResponseStatus(event, 400);\n return { error: \"Org context required for scope=org\" };\n }\n await client.execute({\n sql: `DELETE FROM tool_data WHERE COALESCE(item_id, id) = ? AND tool_id = ? AND collection = ? AND scope = 'org' AND org_id = ?`,\n args: [itemId, extensionId, collection, orgId],\n });\n return { ok: true };\n }\n\n await client.execute({\n sql: `DELETE FROM tool_data WHERE COALESCE(item_id, id) = ? AND tool_id = ? AND collection = ? AND scope = 'user' AND owner_email = ?`,\n args: [itemId, extensionId, collection, userEmail],\n });\n return { ok: true };\n}\n\nasync function handleProxy(\n event: H3Event,\n userEmail: string,\n): Promise<unknown> {\n const body = await readBody(event);\n const rawUrl = body.url;\n if (!rawUrl || typeof rawUrl !== \"string\") {\n setResponseStatus(event, 400);\n return { error: \"url is required\" };\n }\n\n const method = normalizeExtensionProxyMethod(body.method || \"GET\");\n if (!method) {\n setResponseStatus(event, 405);\n return {\n error:\n \"Unsupported HTTP method. Allowed methods: GET, POST, PUT, PATCH, DELETE, HEAD.\",\n };\n }\n const rawHeaders: Record<string, string> = body.headers || {};\n const rawBody = body.body;\n\n let resolvedUrl = rawUrl;\n // Resolve secret references per header value rather than over a single\n // JSON.stringify(headers) blob. A secret value containing a double-quote\n // would corrupt that JSON, the later JSON.parse would throw, and the request\n // would silently fall back to the *unresolved* headers (placeholders intact).\n const parsedHeaders: Record<string, string> = {};\n let resolvedBody = rawBody;\n const allSecretValues: string[] = [];\n const allResolvedKeys: ResolvedKeyReference[] = [];\n\n try {\n const urlResult = await resolveKeyReferencesWithRequestScopes(\n rawUrl,\n userEmail,\n );\n resolvedUrl = urlResult.resolved;\n allSecretValues.push(...urlResult.secretValues);\n allResolvedKeys.push(...(urlResult.resolvedKeys ?? []));\n\n for (const [hk, hv] of Object.entries(rawHeaders)) {\n const headerResult = await resolveKeyReferencesWithRequestScopes(\n typeof hv === \"string\" ? hv : String(hv),\n userEmail,\n );\n parsedHeaders[hk] = headerResult.resolved;\n allSecretValues.push(...headerResult.secretValues);\n allResolvedKeys.push(...(headerResult.resolvedKeys ?? []));\n }\n\n if (rawBody) {\n const bodyResult = await resolveKeyReferencesWithRequestScopes(\n typeof rawBody === \"string\" ? rawBody : JSON.stringify(rawBody),\n userEmail,\n );\n resolvedBody = bodyResult.resolved;\n allSecretValues.push(...bodyResult.secretValues);\n allResolvedKeys.push(...(bodyResult.resolvedKeys ?? []));\n }\n } catch (err: any) {\n setResponseStatus(event, 400);\n return { error: `Key resolution failed: ${err?.message ?? err}` };\n }\n const secretValues = collectSecretValues(allSecretValues);\n\n if (await isBlockedExtensionUrlWithDns(resolvedUrl)) {\n setResponseStatus(event, 403);\n return { error: \"Requests to private/internal addresses are not allowed\" };\n }\n\n const uniqueResolvedKeys = new Map(\n allResolvedKeys.map((ref) => [\n `${ref.name}:${ref.scope}:${ref.scopeId}`,\n ref,\n ]),\n );\n for (const keyRef of uniqueResolvedKeys.values()) {\n const allowlist = await getResolvedKeyAllowlist(keyRef);\n if (!validateUrlAllowlist(resolvedUrl, allowlist)) {\n setResponseStatus(event, 403);\n return {\n error: `Key \"${keyRef.name}\" is not allowed for this URL origin`,\n };\n }\n }\n\n const headers = sanitizeOutboundHeaders(parsedHeaders);\n\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), 15_000);\n\n // Best-effort connect-time SSRF guard. When undici is available (it ships\n // with Node 18+ but is not always exposed as an importable module), the\n // dispatcher re-checks the resolved IP at TCP-connect time, closing the\n // TOCTOU between the pre-flight `isBlockedExtensionUrlWithDns` lookup and the\n // actual fetch lookup. If undici is not importable, fall through to plain\n // fetch — the pre-flight remains the primary protection.\n const dispatcher = (await createSsrfSafeDispatcher()) ?? undefined;\n\n try {\n const fetchOpts: RequestInit & { dispatcher?: unknown } = {\n method,\n headers,\n signal: controller.signal,\n redirect: \"manual\",\n };\n if (dispatcher) fetchOpts.dispatcher = dispatcher;\n if (resolvedBody && [\"POST\", \"PUT\", \"PATCH\"].includes(method)) {\n const isStringBody = typeof resolvedBody === \"string\";\n fetchOpts.body = isStringBody\n ? resolvedBody\n : JSON.stringify(resolvedBody);\n // Only inject Content-Type when (a) the caller didn't set one and\n // (b) the body is actually JSON-shaped (object or stringified JSON).\n // Otherwise leave it unset so the runtime fetch picks an appropriate\n // default and we don't misrepresent text/plain bodies as JSON.\n const hasContentType = Object.keys(headers).some(\n (k) => k.toLowerCase() === \"content-type\",\n );\n if (!hasContentType) {\n const isJsonShaped =\n !isStringBody ||\n (typeof resolvedBody === \"string\" &&\n /^\\s*[{[]/.test(resolvedBody) &&\n isLikelyJson(resolvedBody));\n if (isJsonShaped) headers[\"Content-Type\"] = \"application/json\";\n }\n }\n\n const response = await fetch(resolvedUrl, fetchOpts);\n\n if (response.status >= 300 && response.status < 400) {\n const location = response.headers.get(\"location\");\n const redirectUrl = location ? new URL(location, resolvedUrl).href : null;\n if (redirectUrl && (await isBlockedExtensionUrlWithDns(redirectUrl))) {\n setResponseStatus(event, 403);\n return { error: \"Redirect to private/internal address blocked\" };\n }\n if (redirectUrl) {\n for (const keyRef of uniqueResolvedKeys.values()) {\n const allowlist = await getResolvedKeyAllowlist(keyRef);\n if (!validateUrlAllowlist(redirectUrl, allowlist)) {\n setResponseStatus(event, 403);\n return {\n error: `Redirect URL is not allowed for key \"${keyRef.name}\"`,\n };\n }\n }\n }\n return {\n status: response.status,\n body: {\n redirect: redirectUrl\n ? redactString(redirectUrl, secretValues)\n : location,\n },\n };\n }\n\n const { text } = await readResponseTextWithLimit(response);\n let responseBody: unknown;\n try {\n responseBody = JSON.parse(text);\n } catch {\n responseBody = text;\n }\n\n return {\n status: response.status,\n body: redactSecrets(responseBody, secretValues),\n };\n } catch (err: any) {\n if (err?.name === \"AbortError\") {\n setResponseStatus(event, 504);\n return { error: \"Upstream request timed out\" };\n }\n setResponseStatus(event, 502);\n return {\n error: `Proxy request failed: ${redactSecrets(\n err?.message ?? String(err),\n secretValues,\n )}`,\n };\n } finally {\n clearTimeout(timeout);\n }\n}\n\n/**\n * Capture console output from a CLI script that uses console.log for results.\n * Same technique as wrapCliScript in agent-chat-plugin.ts.\n */\nlet captureCliOutputQueue: Promise<void> = Promise.resolve();\n\nasync function captureCliOutput(\n fn: (args: string[]) => Promise<void>,\n args: string[],\n): Promise<string> {\n const previousCapture = captureCliOutputQueue;\n let releaseCapture!: () => void;\n captureCliOutputQueue = new Promise<void>((resolve) => {\n releaseCapture = resolve;\n });\n await previousCapture;\n\n const logs: string[] = [];\n const origLog = console.log;\n const origError = console.error;\n const origStdoutWrite = process.stdout.write;\n console.log = (...a: unknown[]) => {\n logs.push(a.map(String).join(\" \"));\n };\n console.error = (...a: unknown[]) => {\n logs.push(a.map(String).join(\" \"));\n };\n process.stdout.write = ((chunk: any) => {\n if (typeof chunk === \"string\") logs.push(chunk);\n else if (Buffer.isBuffer(chunk)) logs.push(chunk.toString());\n return true;\n }) as any;\n try {\n await fn(args);\n } catch (err: any) {\n logs.push(`Error: ${err?.message ?? String(err)}`);\n } finally {\n console.log = origLog;\n console.error = origError;\n process.stdout.write = origStdoutWrite;\n releaseCapture();\n }\n return logs.join(\"\\n\") || \"(no output)\";\n}\n\nasync function handleSqlQuery(event: H3Event): Promise<unknown> {\n const body = await readBody(event);\n const sql = body.sql;\n if (!sql || typeof sql !== \"string\") {\n setResponseStatus(event, 400);\n return { error: \"sql is required\" };\n }\n\n const cleanSql = stripSqlComments(sql);\n if (!/^\\s*(SELECT|WITH)\\b/i.test(cleanSql)) {\n setResponseStatus(event, 403);\n return { error: \"Only SELECT queries are allowed from extensions\" };\n }\n if (matchesSqlGate(SENSITIVE_SQL_RE, sql)) {\n setResponseStatus(event, 403);\n return {\n error: \"Sensitive framework tables are not readable from extensions\",\n };\n }\n\n try {\n const mod = await import(\"../scripts/db/query.js\");\n const args = [\"--sql\", sql, \"--format\", \"json\"];\n if (body.limit) args.push(\"--limit\", String(body.limit));\n if (body.args !== undefined) {\n if (!Array.isArray(body.args)) {\n setResponseStatus(event, 400);\n return { error: \"args must be an array\" };\n }\n args.push(\"--args\", JSON.stringify(body.args));\n }\n const output = await captureCliOutput(mod.default, args);\n try {\n return JSON.parse(output);\n } catch {\n return { output };\n }\n } catch (err: any) {\n setResponseStatus(event, 500);\n return { error: err?.message ?? \"Query failed\" };\n }\n}\n\n// TODO(security): replace this regex blocklist with a SQL parser + an explicit\n// allowlist of tables a extension may read/write (e.g. only `tool_data`, plus a\n// per-template list). The current blocklist is best-effort defense in depth\n// and is by design bypassable via SQL constructions that don't include the\n// blocklisted token literally (string concat, dynamic SQL, etc). The temp-\n// view scoping in scripts/db/scoping.ts is the actual ownership boundary.\nexport const DESTRUCTIVE_SQL_RE =\n /\\b(CREATE\\s+(?:(?:LOCAL|GLOBAL)\\s+)?(?:TEMPORARY|TEMP)?\\s*(TABLE|INDEX|VIEW|SCHEMA|DATABASE|TRIGGER|FUNCTION|EXTENSION|ROLE|TABLESPACE|PUBLICATION|SUBSCRIPTION)|DROP\\s+(TABLE|INDEX|VIEW|SCHEMA|DATABASE|TRIGGER|FUNCTION|EXTENSION|ROLE)|TRUNCATE|DELETE\\s+FROM\\s+(?!tool_data\\b)|ALTER\\s+(TABLE|VIEW|SCHEMA|DATABASE|FUNCTION|ROLE|EXTENSION|PUBLICATION)\\s+(?!tool_data\\b)|ATTACH|DETACH|VACUUM|REINDEX|PRAGMA|GRANT|REVOKE|SET\\s+ROLE|RESET\\s+ROLE|COPY)\\b/i;\n\n// Sensitive tables that extensions must not touch directly. Includes Better Auth\n// identity tables, framework infrastructure (tracing, evals, automations,\n// integrations, notifications, scheduling, sharing/orgs), and Postgres\n// catalogs that would let a extension enumerate or read internals.\nexport const SENSITIVE_SQL_RE =\n /\\b(app_secrets|user|users|session|sessions|account|accounts|verification|oauth_tokens|tools|extensions|tool_shares|tool_slots|tool_slot_installs|tool_hidden_extensions|tool_history|member|organization|invitation|jwks|agent_trace_spans|agent_trace_summaries|agent_feedback|agent_satisfaction_scores|agent_evals|agent_runs|agent_run_events|notifications|progress_runs|integration_configs|integration_pending_tasks|integration_thread_mappings|resources|org_members|org_invitations|bigquery_cache|dashboard_views|pg_catalog|information_schema|pg_class|pg_proc|pg_namespace|pg_user|pg_roles|pg_authid|pg_shadow)\\b/i;\n\n// Refuses positional INSERTs (no column list). `INSERT INTO recordings VALUES\n// (...)` would let a extension stuff arbitrary owner_email values into a row.\n// `INSERT INTO recordings (col1, col2) VALUES (...)` is required so the\n// downstream injectOwnership helper can append owner_email.\nexport const POSITIONAL_INSERT_RE =\n /\\bINSERT\\s+INTO\\s+[\"'`]?\\w+[\"'`]?\\s+VALUES\\b/i;\n\nfunction stripSqlComments(sql: string): string {\n return sql.replace(/\\/\\*[\\s\\S]*?\\*\\//g, \" \").replace(/--[^\\n]*/g, \" \");\n}\n\n/**\n * Test a blocklist regex against the SQL with comments normalized two ways, so\n * a comment placed *inside* a keyword can't smuggle a blocked construct past a\n * literal-token match:\n * - comments → space catches `DROP /* x *​/ TABLE` (token boundaries kept)\n * - comments → empty catches `DR/**​/OP TABLE` (split keyword rejoined)\n *\n * A statement is refused if EITHER normalization trips the regex. This only\n * ever ADDS matches — it never newly-allows SQL — so it cannot loosen the gate\n * (real extension SQL doesn't embed comments inside keywords, so false-positive\n * risk is negligible). The authoritative ownership boundary remains the\n * fail-closed temp-view scoping in scripts/db/scoping.ts; this stays defense in\n * depth. See the TODO above re: replacing all of this with a real SQL parser.\n */\nexport function matchesSqlGate(re: RegExp, sql: string): boolean {\n const withSpace = sql\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, \" \")\n .replace(/--[^\\n]*/g, \" \");\n const withNothing = sql\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, \"\")\n .replace(/--[^\\n]*/g, \"\");\n return re.test(withSpace) || re.test(withNothing);\n}\n\nfunction isLikelyJson(text: string): boolean {\n try {\n const parsed = JSON.parse(text);\n return parsed !== null && typeof parsed === \"object\";\n } catch {\n return false;\n }\n}\n\nasync function handleSqlExec(event: H3Event): Promise<unknown> {\n const body = await readBody(event);\n const sql = body.sql;\n if (!sql || typeof sql !== \"string\") {\n setResponseStatus(event, 400);\n return { error: \"sql is required\" };\n }\n\n if (matchesSqlGate(DESTRUCTIVE_SQL_RE, sql)) {\n setResponseStatus(event, 403);\n return {\n error:\n \"Schema changes and destructive SQL are not allowed from extensions\",\n };\n }\n if (matchesSqlGate(SENSITIVE_SQL_RE, sql)) {\n setResponseStatus(event, 403);\n return {\n error: \"Sensitive framework tables are not writable from extensions\",\n };\n }\n if (matchesSqlGate(POSITIONAL_INSERT_RE, sql)) {\n setResponseStatus(event, 400);\n return {\n error:\n \"INSERT must specify an explicit column list (e.g. INSERT INTO t (col1, col2) VALUES (?, ?)) so ownership can be injected.\",\n };\n }\n\n try {\n const mod = await import(\"../scripts/db/exec.js\");\n const args = [\"--sql\", sql, \"--format\", \"json\"];\n if (body.args !== undefined) {\n if (!Array.isArray(body.args)) {\n setResponseStatus(event, 400);\n return { error: \"args must be an array\" };\n }\n args.push(\"--args\", JSON.stringify(body.args));\n }\n const output = await captureCliOutput(mod.default, args);\n try {\n return JSON.parse(output);\n } catch {\n return { output };\n }\n } catch (err: any) {\n setResponseStatus(event, 500);\n return { error: err?.message ?? \"Exec failed\" };\n }\n}\n"]}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/extensions/routes.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport {\n defineEventHandler,\n getMethod,\n setResponseStatus,\n setResponseHeader,\n type H3Event,\n} from \"h3\";\nimport { readBody } from \"../server/h3-helpers.js\";\nimport { getSession } from \"../server/auth.js\";\nimport {\n runWithRequestContext,\n getRequestOrgId,\n} from \"../server/request-context.js\";\nimport { getOrgContext } from \"../org/context.js\";\nimport { getDbExec, isPostgres } from \"../db/client.js\";\nimport {\n listExtensions,\n getExtension,\n getExtensionHistoryVersion,\n listExtensionHistory,\n createExtension,\n updateExtension,\n updateExtensionContent,\n restoreExtensionHistoryVersion,\n deleteExtension,\n hideExtension,\n unhideExtension,\n globalHideExtension,\n globalUnhideExtension,\n ensureExtensionsTables,\n type ExtensionRow,\n} from \"./store.js\";\nimport {\n getLocalExtension,\n isLocalExtensionRow,\n listLocalExtensions,\n type LocalExtensionRow,\n} from \"./local.js\";\nimport { buildExtensionHtml, EXTENSION_IFRAME_CSP } from \"./html-shell.js\";\nimport { getThemeVars } from \"./theme.js\";\nimport {\n resolveKeyReferencesWithRequestScopes,\n validateUrlAllowlist,\n getResolvedKeyAllowlist,\n type ResolvedKeyReference,\n} from \"../secrets/substitution.js\";\nimport {\n collectSecretValues,\n normalizeExtensionProxyMethod,\n readResponseTextWithLimit,\n redactSecrets,\n redactString,\n sanitizeOutboundHeaders,\n} from \"./proxy-security.js\";\nimport {\n createSsrfSafeDispatcher,\n isBlockedExtensionUrlWithDns,\n} from \"./url-safety.js\";\nimport { ForbiddenError, resolveAccess } from \"../sharing/access.js\";\nimport { ROLE_RANK, type ShareRole } from \"../sharing/schema.js\";\n\nexport function createExtensionsHandler() {\n return defineEventHandler(async (event: H3Event) => {\n const method = getMethod(event);\n const pathname = (event.url?.pathname || \"\")\n .replace(/^\\/+/, \"\")\n .replace(/\\/+$/, \"\");\n const parts = pathname\n ? pathname.split(\"/\").map((part) => {\n try {\n return decodeURIComponent(part);\n } catch {\n return part;\n }\n })\n : [];\n\n const session = await getSession(event).catch(() => null);\n if (!session?.email) {\n setResponseStatus(event, 401);\n return { error: \"Authentication required\" };\n }\n\n const orgCtx = await getOrgContext(event).catch(() => null);\n const userEmail = session.email;\n const orgId = orgCtx?.orgId ?? session.orgId ?? undefined;\n\n try {\n return await runWithRequestContext({ userEmail, orgId }, async () => {\n await ensureExtensionsTables();\n return dispatch(event, method, parts, userEmail);\n });\n } catch (err) {\n if (err instanceof ForbiddenError) {\n setResponseStatus(event, 403);\n return { error: err.message };\n }\n throw err;\n }\n });\n}\n\nasync function dispatch(\n event: H3Event,\n method: string,\n parts: string[],\n userEmail: string,\n): Promise<unknown> {\n // POST /sql/query — read-only SQL for extension iframes\n if (\n method === \"POST\" &&\n parts.length === 2 &&\n parts[0] === \"sql\" &&\n parts[1] === \"query\"\n ) {\n return handleSqlQuery(event);\n }\n\n // POST /sql/exec — write SQL for extension iframes\n if (\n method === \"POST\" &&\n parts.length === 2 &&\n parts[0] === \"sql\" &&\n parts[1] === \"exec\"\n ) {\n return handleSqlExec(event);\n }\n\n // GET /data/:extensionId/:collection — list items in a collection\n if (method === \"GET\" && parts.length === 3 && parts[0] === \"data\") {\n return handleExtensionDataList(event, parts[1], parts[2], userEmail);\n }\n\n // POST /data/:extensionId/:collection — create/upsert an item\n if (method === \"POST\" && parts.length === 3 && parts[0] === \"data\") {\n return handleExtensionDataUpsert(event, parts[1], parts[2], userEmail);\n }\n\n // DELETE /data/:extensionId/:collection/:itemId — delete an item\n if (method === \"DELETE\" && parts.length === 4 && parts[0] === \"data\") {\n return handleExtensionDataDelete(\n event,\n parts[1],\n parts[2],\n parts[3],\n userEmail,\n );\n }\n\n // POST /proxy\n if (method === \"POST\" && parts.length === 1 && parts[0] === \"proxy\") {\n return handleProxy(event, userEmail);\n }\n\n // GET / — list. `?includeGloballyHidden=true` surfaces extensions an\n // admin/owner has globally hidden (so they can be unhidden for everyone).\n if (method === \"GET\" && parts.length === 0) {\n const includeGloballyHidden =\n event.url?.searchParams?.get(\"includeGloballyHidden\") === \"true\";\n const includeContent =\n event.url?.searchParams?.get(\"includeContent\") === \"true\";\n const rows = await listExtensions({ includeGloballyHidden });\n const localRows = includeGloballyHidden ? [] : await listLocalExtensions();\n return Promise.all(\n [...rows, ...localRows].map((row) =>\n extensionResponse(row, undefined, { includeContent }),\n ),\n );\n }\n\n // POST / — create\n if (method === \"POST\" && parts.length === 0) {\n const body = await readBody(event);\n if (!body.name) {\n setResponseStatus(event, 400);\n return { error: \"name is required\" };\n }\n const extension = await createExtension(body);\n setResponseStatus(event, 201);\n return extension;\n }\n\n // GET /:id/render\n if (method === \"GET\" && parts.length === 2 && parts[1] === \"render\") {\n const localExtension = await getLocalExtension(parts[0]);\n if (localExtension) {\n const search = event.url?.search || \"\";\n const isDark = search.includes(\"dark=1\") || search.includes(\"dark=true\");\n const themeVars = getThemeVars(isDark);\n const html = buildExtensionHtml(\n localExtension.content,\n themeVars,\n isDark,\n parts[0],\n {\n authorEmail: localExtension.ownerEmail,\n viewerEmail: userEmail,\n isAuthor: false,\n role: \"viewer\",\n source: \"local-files\",\n permissions: localExtension.source.permissions,\n },\n );\n setResponseHeader(event, \"Content-Type\", \"text/html; charset=utf-8\");\n setResponseHeader(event, \"Content-Security-Policy\", EXTENSION_IFRAME_CSP);\n setResponseHeader(event, \"X-Content-Type-Options\", \"nosniff\");\n setResponseHeader(event, \"Referrer-Policy\", \"no-referrer\");\n return html;\n }\n\n const access = await resolveAccess(\"extension\", parts[0]);\n const extension = access?.resource;\n if (!extension) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n const search = event.url?.search || \"\";\n const isDark = search.includes(\"dark=1\") || search.includes(\"dark=true\");\n const themeVars = getThemeVars(isDark);\n // Compute viewer-vs-author binding so the iframe can warn when the\n // viewer is NOT the author. The role is plumbed through to gate\n // dangerous bridge helpers in iframe-bridge.ts (audit H4).\n const isAuthor = extension.ownerEmail === userEmail;\n\n const html = buildExtensionHtml(\n extension.content,\n themeVars,\n isDark,\n parts[0],\n {\n authorEmail: extension.ownerEmail,\n viewerEmail: userEmail,\n isAuthor,\n role: access.role,\n },\n );\n // Security headers per render. `frame-ancestors` in the CSP must be set as\n // an HTTP header to be enforced; meta-CSP can't set it per spec.\n setResponseHeader(event, \"Content-Type\", \"text/html; charset=utf-8\");\n setResponseHeader(event, \"Content-Security-Policy\", EXTENSION_IFRAME_CSP);\n setResponseHeader(event, \"X-Content-Type-Options\", \"nosniff\");\n setResponseHeader(event, \"Referrer-Policy\", \"no-referrer\");\n return html;\n }\n\n // GET /:id/history — list saved snapshots for an extension\n if (method === \"GET\" && parts.length === 2 && parts[1] === \"history\") {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const limitParam = event.url?.searchParams?.get(\"limit\");\n const limit =\n limitParam === null || limitParam === undefined\n ? undefined\n : Number(limitParam);\n const includeContent =\n event.url?.searchParams?.get(\"includeContent\") === \"true\";\n return {\n history: await listExtensionHistory(parts[0], {\n limit,\n includeContent,\n }),\n };\n }\n\n // GET /:id/history/:version — fetch one snapshot plus its previous-version diff\n if (method === \"GET\" && parts.length === 3 && parts[1] === \"history\") {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const detail = await getExtensionHistoryVersion(parts[0], parts[2]);\n if (!detail) {\n setResponseStatus(event, 404);\n return { error: \"Extension history version not found\" };\n }\n return detail;\n }\n\n // POST /:id/history/:version/restore — restore display metadata + content\n if (\n method === \"POST\" &&\n parts.length === 4 &&\n parts[1] === \"history\" &&\n parts[3] === \"restore\"\n ) {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const restored = await restoreExtensionHistoryVersion(parts[0], parts[2]);\n if (!restored) {\n setResponseStatus(event, 404);\n return { error: \"Extension history version not found\" };\n }\n return extensionResponse(restored);\n }\n\n // GET /:id\n if (method === \"GET\" && parts.length === 1) {\n const localExtension = await getLocalExtension(parts[0]);\n if (localExtension) {\n return extensionResponse(localExtension, \"viewer\");\n }\n\n const access = await resolveAccess(\"extension\", parts[0]);\n if (!access) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n return extensionResponse(access.resource as ExtensionRow, access.role);\n }\n\n // POST /:id/hide — remove from the current user's Extensions list/sidebar\n // without deleting the underlying extension for teammates or shared slots.\n if (method === \"POST\" && parts.length === 2 && parts[1] === \"hide\") {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const ok = await hideExtension(parts[0]);\n if (!ok) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n return { ok: true, hidden: true };\n }\n\n // POST /:id/unhide — restore an extension hidden by the current user.\n if (method === \"POST\" && parts.length === 2 && parts[1] === \"unhide\") {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const ok = await unhideExtension(parts[0]);\n if (!ok) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n return { ok: true, hidden: false };\n }\n\n // POST /:id/global-hide — admin/owner hides the extension from EVERYONE.\n if (method === \"POST\" && parts.length === 2 && parts[1] === \"global-hide\") {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const ok = await globalHideExtension(parts[0]);\n if (!ok) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n return { ok: true, globallyHidden: true };\n }\n\n // POST /:id/global-unhide — admin/owner reverses a global hide.\n if (method === \"POST\" && parts.length === 2 && parts[1] === \"global-unhide\") {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const ok = await globalUnhideExtension(parts[0]);\n if (!ok) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n return { ok: true, globallyHidden: false };\n }\n\n // PUT /:id\n if (method === \"PUT\" && parts.length === 1) {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const body = await readBody(event);\n const hasContentUpdate =\n body.content !== undefined ||\n body.patches !== undefined ||\n body.edits !== undefined ||\n body.format !== undefined;\n const hasMetaUpdate =\n body.name !== undefined ||\n body.description !== undefined ||\n body.icon !== undefined ||\n body.visibility !== undefined;\n\n let result = null;\n if (hasContentUpdate) {\n result = await updateExtensionContent(parts[0], {\n content: body.content,\n patches: body.patches,\n edits: body.edits,\n format: body.format === true || body.format === \"true\",\n });\n }\n if (hasMetaUpdate) {\n result = await updateExtension(parts[0], body);\n }\n if (!hasContentUpdate && !hasMetaUpdate) {\n result = await getExtension(parts[0]);\n }\n if (!result) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n return result;\n }\n\n // DELETE /:id\n if (method === \"DELETE\" && parts.length === 1) {\n const localResponse = await localExtensionSqlOnlyResponse(event, parts[0]);\n if (localResponse) return localResponse;\n const ok = await deleteExtension(parts[0]);\n if (!ok) {\n setResponseStatus(event, 404);\n return { error: \"Extension not found\" };\n }\n return { ok: true };\n }\n\n setResponseStatus(event, 404);\n return { error: \"Not found\" };\n}\n\nasync function extensionResponse(\n row: ExtensionRow | LocalExtensionRow,\n role?: \"owner\" | ShareRole | null,\n options: { includeContent?: boolean } = {},\n) {\n const local = isLocalExtensionRow(row);\n const resolvedRole = local\n ? \"viewer\"\n : (role ??\n (await resolveAccess(\"extension\", row.id)\n .then((access) => access?.role ?? null)\n .catch(() => null)));\n const responseRow =\n options.includeContent === false\n ? (({ content: _content, ...rest }) => rest)(row)\n : row;\n return {\n ...responseRow,\n role: resolvedRole,\n canEdit: local\n ? false\n : resolvedRole\n ? [\"owner\", \"admin\", \"editor\"].includes(resolvedRole)\n : false,\n canDelete: local\n ? false\n : resolvedRole\n ? [\"owner\", \"admin\"].includes(resolvedRole)\n : false,\n globallyHidden: row.hiddenAt != null,\n };\n}\n\nasync function localExtensionSqlOnlyResponse(\n event: H3Event,\n extensionId: string,\n): Promise<unknown | null> {\n const localExtension = await getLocalExtension(extensionId);\n if (!localExtension) return null;\n setResponseStatus(event, 400);\n return {\n error:\n \"This extension is backed by local files. Edit its extension.json or entry file in the workspace; SQL-backed extension history, sharing, hide, update, and delete operations do not apply.\",\n source: localExtension.source,\n };\n}\n\nasync function handleExtensionDataList(\n event: H3Event,\n extensionId: string,\n collection: string,\n userEmail: string,\n): Promise<unknown> {\n await ensureExtensionsTables();\n const access = await requireExtensionDataAccess(event, extensionId, \"viewer\");\n if (!access.ok) return access.response;\n\n const client = getDbExec();\n const url = event.url;\n const limitParam = url?.searchParams?.get(\"limit\");\n const limit = limitParam\n ? Math.min(Math.max(1, Number(limitParam)), 1000)\n : 100;\n const scope = url?.searchParams?.get(\"scope\") || \"user\";\n const orgId = getRequestOrgId();\n\n if (scope === \"org\") {\n if (!orgId) {\n setResponseStatus(event, 400);\n return { error: \"Org context required for scope=org\" };\n }\n const result = await client.execute({\n sql: `SELECT COALESCE(item_id, id) AS id, tool_id, collection, data, owner_email, scope, org_id, created_at, updated_at\n FROM tool_data\n WHERE tool_id = ? AND collection = ? AND scope = 'org' AND org_id = ?\n ORDER BY created_at DESC\n LIMIT ?`,\n args: [extensionId, collection, orgId, limit],\n });\n return result.rows ?? [];\n }\n\n if (scope === \"all\") {\n const result = await client.execute({\n sql: `SELECT COALESCE(item_id, id) AS id, tool_id, collection, data, owner_email, scope, org_id, created_at, updated_at\n FROM tool_data\n WHERE tool_id = ? AND collection = ?\n AND ((scope = 'user' AND owner_email = ?) OR (scope = 'org' AND org_id = ?))\n ORDER BY created_at DESC\n LIMIT ?`,\n args: [extensionId, collection, userEmail, orgId ?? \"\", limit],\n });\n return result.rows ?? [];\n }\n\n const result = await client.execute({\n sql: `SELECT COALESCE(item_id, id) AS id, tool_id, collection, data, owner_email, scope, org_id, created_at, updated_at\n FROM tool_data\n WHERE tool_id = ? AND collection = ? AND scope = 'user' AND owner_email = ?\n ORDER BY updated_at DESC\n LIMIT ?`,\n args: [extensionId, collection, userEmail, limit],\n });\n return result.rows ?? [];\n}\n\nasync function handleExtensionDataUpsert(\n event: H3Event,\n extensionId: string,\n collection: string,\n userEmail: string,\n): Promise<unknown> {\n await ensureExtensionsTables();\n const access = await requireExtensionDataAccess(event, extensionId, \"editor\");\n if (!access.ok) return access.response;\n\n const body = await readBody(event);\n if (body.data === undefined) {\n setResponseStatus(event, 400);\n return { error: \"data is required\" };\n }\n const itemId = String(body.id || randomUUID());\n const data =\n typeof body.data === \"string\" ? body.data : JSON.stringify(body.data);\n const now = new Date().toISOString();\n const scope = body.scope === \"org\" ? \"org\" : \"user\";\n const orgId = getRequestOrgId();\n\n if (scope === \"org\" && !orgId) {\n setResponseStatus(event, 400);\n return { error: \"Org context required for scope=org\" };\n }\n\n const scopeKey = scope === \"org\" ? `org:${orgId}` : userEmail;\n const client = getDbExec();\n const pg = isPostgres();\n const conflictClause = pg\n ? `ON CONFLICT (tool_id, collection, scope_key, item_id)\n DO UPDATE SET data = EXCLUDED.data, updated_at = EXCLUDED.updated_at`\n : `ON CONFLICT (tool_id, collection, scope_key, item_id)\n DO UPDATE SET data = excluded.data, updated_at = excluded.updated_at`;\n\n await client.execute({\n sql: `INSERT INTO tool_data (id, tool_id, collection, item_id, data, owner_email, scope, org_id, scope_key, created_at, updated_at)\n VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n ${conflictClause}`,\n args: [\n randomUUID(),\n extensionId,\n collection,\n itemId,\n data,\n userEmail,\n scope,\n scope === \"org\" ? orgId! : null,\n scopeKey,\n now,\n now,\n ],\n });\n return {\n id: itemId,\n extensionId,\n collection,\n data,\n ownerEmail: userEmail,\n scope,\n orgId: scope === \"org\" ? orgId : null,\n createdAt: now,\n updatedAt: now,\n };\n}\n\nasync function handleExtensionDataDelete(\n event: H3Event,\n extensionId: string,\n collection: string,\n itemId: string,\n userEmail: string,\n): Promise<unknown> {\n await ensureExtensionsTables();\n const access = await requireExtensionDataAccess(event, extensionId, \"editor\");\n if (!access.ok) return access.response;\n\n const url = event.url;\n const scope = url?.searchParams?.get(\"scope\") || \"user\";\n const orgId = getRequestOrgId();\n const client = getDbExec();\n\n if (scope === \"org\") {\n if (!orgId) {\n setResponseStatus(event, 400);\n return { error: \"Org context required for scope=org\" };\n }\n await client.execute({\n sql: `DELETE FROM tool_data WHERE COALESCE(item_id, id) = ? AND tool_id = ? AND collection = ? AND scope = 'org' AND org_id = ?`,\n args: [itemId, extensionId, collection, orgId],\n });\n return { ok: true };\n }\n\n await client.execute({\n sql: `DELETE FROM tool_data WHERE COALESCE(item_id, id) = ? AND tool_id = ? AND collection = ? AND scope = 'user' AND owner_email = ?`,\n args: [itemId, extensionId, collection, userEmail],\n });\n return { ok: true };\n}\n\nasync function requireExtensionDataAccess(\n event: H3Event,\n extensionId: string,\n minRole: ShareRole,\n): Promise<{ ok: true } | { ok: false; response: unknown }> {\n const access = await resolveAccess(\"extension\", extensionId);\n if (access) {\n if (ROLE_RANK[access.role] < ROLE_RANK[minRole]) {\n setResponseStatus(event, 403);\n return {\n ok: false,\n response: {\n error: `Requires ${minRole} role on extension ${extensionId} (have ${access.role})`,\n },\n };\n }\n return { ok: true };\n }\n\n const localExtension = await getLocalExtension(extensionId);\n if (localExtension) {\n if (!localExtension.source.permissions.extensionData) {\n setResponseStatus(event, 403);\n return {\n ok: false,\n response: { error: \"extensionData is disabled for this extension\" },\n };\n }\n return { ok: true };\n }\n\n setResponseStatus(event, 404);\n return { ok: false, response: { error: \"Extension not found\" } };\n}\n\nasync function handleProxy(\n event: H3Event,\n userEmail: string,\n): Promise<unknown> {\n const body = await readBody(event);\n const rawUrl = body.url;\n if (!rawUrl || typeof rawUrl !== \"string\") {\n setResponseStatus(event, 400);\n return { error: \"url is required\" };\n }\n\n const method = normalizeExtensionProxyMethod(body.method || \"GET\");\n if (!method) {\n setResponseStatus(event, 405);\n return {\n error:\n \"Unsupported HTTP method. Allowed methods: GET, POST, PUT, PATCH, DELETE, HEAD.\",\n };\n }\n const rawHeaders: Record<string, string> = body.headers || {};\n const rawBody = body.body;\n\n let resolvedUrl = rawUrl;\n // Resolve secret references per header value rather than over a single\n // JSON.stringify(headers) blob. A secret value containing a double-quote\n // would corrupt that JSON, the later JSON.parse would throw, and the request\n // would silently fall back to the *unresolved* headers (placeholders intact).\n const parsedHeaders: Record<string, string> = {};\n let resolvedBody = rawBody;\n const allSecretValues: string[] = [];\n const allResolvedKeys: ResolvedKeyReference[] = [];\n\n try {\n const urlResult = await resolveKeyReferencesWithRequestScopes(\n rawUrl,\n userEmail,\n );\n resolvedUrl = urlResult.resolved;\n allSecretValues.push(...urlResult.secretValues);\n allResolvedKeys.push(...(urlResult.resolvedKeys ?? []));\n\n for (const [hk, hv] of Object.entries(rawHeaders)) {\n const headerResult = await resolveKeyReferencesWithRequestScopes(\n typeof hv === \"string\" ? hv : String(hv),\n userEmail,\n );\n parsedHeaders[hk] = headerResult.resolved;\n allSecretValues.push(...headerResult.secretValues);\n allResolvedKeys.push(...(headerResult.resolvedKeys ?? []));\n }\n\n if (rawBody) {\n const bodyResult = await resolveKeyReferencesWithRequestScopes(\n typeof rawBody === \"string\" ? rawBody : JSON.stringify(rawBody),\n userEmail,\n );\n resolvedBody = bodyResult.resolved;\n allSecretValues.push(...bodyResult.secretValues);\n allResolvedKeys.push(...(bodyResult.resolvedKeys ?? []));\n }\n } catch (err: any) {\n setResponseStatus(event, 400);\n return { error: `Key resolution failed: ${err?.message ?? err}` };\n }\n const secretValues = collectSecretValues(allSecretValues);\n\n if (await isBlockedExtensionUrlWithDns(resolvedUrl)) {\n setResponseStatus(event, 403);\n return { error: \"Requests to private/internal addresses are not allowed\" };\n }\n\n const uniqueResolvedKeys = new Map(\n allResolvedKeys.map((ref) => [\n `${ref.name}:${ref.scope}:${ref.scopeId}`,\n ref,\n ]),\n );\n for (const keyRef of uniqueResolvedKeys.values()) {\n const allowlist = await getResolvedKeyAllowlist(keyRef);\n if (!validateUrlAllowlist(resolvedUrl, allowlist)) {\n setResponseStatus(event, 403);\n return {\n error: `Key \"${keyRef.name}\" is not allowed for this URL origin`,\n };\n }\n }\n\n const headers = sanitizeOutboundHeaders(parsedHeaders);\n\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), 15_000);\n\n // Best-effort connect-time SSRF guard. When undici is available (it ships\n // with Node 18+ but is not always exposed as an importable module), the\n // dispatcher re-checks the resolved IP at TCP-connect time, closing the\n // TOCTOU between the pre-flight `isBlockedExtensionUrlWithDns` lookup and the\n // actual fetch lookup. If undici is not importable, fall through to plain\n // fetch — the pre-flight remains the primary protection.\n const dispatcher = (await createSsrfSafeDispatcher()) ?? undefined;\n\n try {\n const fetchOpts: RequestInit & { dispatcher?: unknown } = {\n method,\n headers,\n signal: controller.signal,\n redirect: \"manual\",\n };\n if (dispatcher) fetchOpts.dispatcher = dispatcher;\n if (resolvedBody && [\"POST\", \"PUT\", \"PATCH\"].includes(method)) {\n const isStringBody = typeof resolvedBody === \"string\";\n fetchOpts.body = isStringBody\n ? resolvedBody\n : JSON.stringify(resolvedBody);\n // Only inject Content-Type when (a) the caller didn't set one and\n // (b) the body is actually JSON-shaped (object or stringified JSON).\n // Otherwise leave it unset so the runtime fetch picks an appropriate\n // default and we don't misrepresent text/plain bodies as JSON.\n const hasContentType = Object.keys(headers).some(\n (k) => k.toLowerCase() === \"content-type\",\n );\n if (!hasContentType) {\n const isJsonShaped =\n !isStringBody ||\n (typeof resolvedBody === \"string\" &&\n /^\\s*[{[]/.test(resolvedBody) &&\n isLikelyJson(resolvedBody));\n if (isJsonShaped) headers[\"Content-Type\"] = \"application/json\";\n }\n }\n\n const response = await fetch(resolvedUrl, fetchOpts);\n\n if (response.status >= 300 && response.status < 400) {\n const location = response.headers.get(\"location\");\n const redirectUrl = location ? new URL(location, resolvedUrl).href : null;\n if (redirectUrl && (await isBlockedExtensionUrlWithDns(redirectUrl))) {\n setResponseStatus(event, 403);\n return { error: \"Redirect to private/internal address blocked\" };\n }\n if (redirectUrl) {\n for (const keyRef of uniqueResolvedKeys.values()) {\n const allowlist = await getResolvedKeyAllowlist(keyRef);\n if (!validateUrlAllowlist(redirectUrl, allowlist)) {\n setResponseStatus(event, 403);\n return {\n error: `Redirect URL is not allowed for key \"${keyRef.name}\"`,\n };\n }\n }\n }\n return {\n status: response.status,\n body: {\n redirect: redirectUrl\n ? redactString(redirectUrl, secretValues)\n : location,\n },\n };\n }\n\n const { text } = await readResponseTextWithLimit(response);\n let responseBody: unknown;\n try {\n responseBody = JSON.parse(text);\n } catch {\n responseBody = text;\n }\n\n return {\n status: response.status,\n body: redactSecrets(responseBody, secretValues),\n };\n } catch (err: any) {\n if (err?.name === \"AbortError\") {\n setResponseStatus(event, 504);\n return { error: \"Upstream request timed out\" };\n }\n setResponseStatus(event, 502);\n return {\n error: `Proxy request failed: ${redactSecrets(\n err?.message ?? String(err),\n secretValues,\n )}`,\n };\n } finally {\n clearTimeout(timeout);\n }\n}\n\n/**\n * Capture console output from a CLI script that uses console.log for results.\n * Same technique as wrapCliScript in agent-chat-plugin.ts.\n */\nlet captureCliOutputQueue: Promise<void> = Promise.resolve();\n\nasync function captureCliOutput(\n fn: (args: string[]) => Promise<void>,\n args: string[],\n): Promise<string> {\n const previousCapture = captureCliOutputQueue;\n let releaseCapture!: () => void;\n captureCliOutputQueue = new Promise<void>((resolve) => {\n releaseCapture = resolve;\n });\n await previousCapture;\n\n const logs: string[] = [];\n const origLog = console.log;\n const origError = console.error;\n const origStdoutWrite = process.stdout.write;\n console.log = (...a: unknown[]) => {\n logs.push(a.map(String).join(\" \"));\n };\n console.error = (...a: unknown[]) => {\n logs.push(a.map(String).join(\" \"));\n };\n process.stdout.write = ((chunk: any) => {\n if (typeof chunk === \"string\") logs.push(chunk);\n else if (Buffer.isBuffer(chunk)) logs.push(chunk.toString());\n return true;\n }) as any;\n try {\n await fn(args);\n } catch (err: any) {\n logs.push(`Error: ${err?.message ?? String(err)}`);\n } finally {\n console.log = origLog;\n console.error = origError;\n process.stdout.write = origStdoutWrite;\n releaseCapture();\n }\n return logs.join(\"\\n\") || \"(no output)\";\n}\n\nasync function handleSqlQuery(event: H3Event): Promise<unknown> {\n const body = await readBody(event);\n const sql = body.sql;\n if (!sql || typeof sql !== \"string\") {\n setResponseStatus(event, 400);\n return { error: \"sql is required\" };\n }\n\n const cleanSql = stripSqlComments(sql);\n if (!/^\\s*(SELECT|WITH)\\b/i.test(cleanSql)) {\n setResponseStatus(event, 403);\n return { error: \"Only SELECT queries are allowed from extensions\" };\n }\n if (matchesSqlGate(SENSITIVE_SQL_RE, sql)) {\n setResponseStatus(event, 403);\n return {\n error: \"Sensitive framework tables are not readable from extensions\",\n };\n }\n\n try {\n const mod = await import(\"../scripts/db/query.js\");\n const args = [\"--sql\", sql, \"--format\", \"json\"];\n if (body.limit) args.push(\"--limit\", String(body.limit));\n if (body.args !== undefined) {\n if (!Array.isArray(body.args)) {\n setResponseStatus(event, 400);\n return { error: \"args must be an array\" };\n }\n args.push(\"--args\", JSON.stringify(body.args));\n }\n const output = await captureCliOutput(mod.default, args);\n try {\n return JSON.parse(output);\n } catch {\n return { output };\n }\n } catch (err: any) {\n setResponseStatus(event, 500);\n return { error: err?.message ?? \"Query failed\" };\n }\n}\n\n// TODO(security): replace this regex blocklist with a SQL parser + an explicit\n// allowlist of tables a extension may read/write (e.g. only `tool_data`, plus a\n// per-template list). The current blocklist is best-effort defense in depth\n// and is by design bypassable via SQL constructions that don't include the\n// blocklisted token literally (string concat, dynamic SQL, etc). The temp-\n// view scoping in scripts/db/scoping.ts is the actual ownership boundary.\nexport const DESTRUCTIVE_SQL_RE =\n /\\b(CREATE\\s+(?:(?:LOCAL|GLOBAL)\\s+)?(?:TEMPORARY|TEMP)?\\s*(TABLE|INDEX|VIEW|SCHEMA|DATABASE|TRIGGER|FUNCTION|EXTENSION|ROLE|TABLESPACE|PUBLICATION|SUBSCRIPTION)|DROP\\s+(TABLE|INDEX|VIEW|SCHEMA|DATABASE|TRIGGER|FUNCTION|EXTENSION|ROLE)|TRUNCATE|DELETE\\s+FROM\\s+(?!tool_data\\b)|ALTER\\s+(TABLE|VIEW|SCHEMA|DATABASE|FUNCTION|ROLE|EXTENSION|PUBLICATION)\\s+(?!tool_data\\b)|ATTACH|DETACH|VACUUM|REINDEX|PRAGMA|GRANT|REVOKE|SET\\s+ROLE|RESET\\s+ROLE|COPY)\\b/i;\n\n// Sensitive tables that extensions must not touch directly. Includes Better Auth\n// identity tables, framework infrastructure (tracing, evals, automations,\n// integrations, notifications, scheduling, sharing/orgs), and Postgres\n// catalogs that would let a extension enumerate or read internals.\nexport const SENSITIVE_SQL_RE =\n /\\b(app_secrets|user|users|session|sessions|account|accounts|verification|oauth_tokens|tools|extensions|tool_shares|tool_slots|tool_slot_installs|tool_hidden_extensions|tool_history|member|organization|invitation|jwks|agent_trace_spans|agent_trace_summaries|agent_feedback|agent_satisfaction_scores|agent_evals|agent_runs|agent_run_events|notifications|progress_runs|integration_configs|integration_pending_tasks|integration_thread_mappings|resources|org_members|org_invitations|bigquery_cache|dashboard_views|pg_catalog|information_schema|pg_class|pg_proc|pg_namespace|pg_user|pg_roles|pg_authid|pg_shadow)\\b/i;\n\n// Refuses positional INSERTs (no column list). `INSERT INTO recordings VALUES\n// (...)` would let a extension stuff arbitrary owner_email values into a row.\n// `INSERT INTO recordings (col1, col2) VALUES (...)` is required so the\n// downstream injectOwnership helper can append owner_email.\nexport const POSITIONAL_INSERT_RE =\n /\\bINSERT\\s+INTO\\s+[\"'`]?\\w+[\"'`]?\\s+VALUES\\b/i;\n\nfunction stripSqlComments(sql: string): string {\n return sql.replace(/\\/\\*[\\s\\S]*?\\*\\//g, \" \").replace(/--[^\\n]*/g, \" \");\n}\n\n/**\n * Test a blocklist regex against the SQL with comments normalized two ways, so\n * a comment placed *inside* a keyword can't smuggle a blocked construct past a\n * literal-token match:\n * - comments → space catches `DROP /* x *​/ TABLE` (token boundaries kept)\n * - comments → empty catches `DR/**​/OP TABLE` (split keyword rejoined)\n *\n * A statement is refused if EITHER normalization trips the regex. This only\n * ever ADDS matches — it never newly-allows SQL — so it cannot loosen the gate\n * (real extension SQL doesn't embed comments inside keywords, so false-positive\n * risk is negligible). The authoritative ownership boundary remains the\n * fail-closed temp-view scoping in scripts/db/scoping.ts; this stays defense in\n * depth. See the TODO above re: replacing all of this with a real SQL parser.\n */\nexport function matchesSqlGate(re: RegExp, sql: string): boolean {\n const withSpace = sql\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, \" \")\n .replace(/--[^\\n]*/g, \" \");\n const withNothing = sql\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, \"\")\n .replace(/--[^\\n]*/g, \"\");\n return re.test(withSpace) || re.test(withNothing);\n}\n\nfunction isLikelyJson(text: string): boolean {\n try {\n const parsed = JSON.parse(text);\n return parsed !== null && typeof parsed === \"object\";\n } catch {\n return false;\n }\n}\n\nasync function handleSqlExec(event: H3Event): Promise<unknown> {\n const body = await readBody(event);\n const sql = body.sql;\n if (!sql || typeof sql !== \"string\") {\n setResponseStatus(event, 400);\n return { error: \"sql is required\" };\n }\n\n if (matchesSqlGate(DESTRUCTIVE_SQL_RE, sql)) {\n setResponseStatus(event, 403);\n return {\n error:\n \"Schema changes and destructive SQL are not allowed from extensions\",\n };\n }\n if (matchesSqlGate(SENSITIVE_SQL_RE, sql)) {\n setResponseStatus(event, 403);\n return {\n error: \"Sensitive framework tables are not writable from extensions\",\n };\n }\n if (matchesSqlGate(POSITIONAL_INSERT_RE, sql)) {\n setResponseStatus(event, 400);\n return {\n error:\n \"INSERT must specify an explicit column list (e.g. INSERT INTO t (col1, col2) VALUES (?, ?)) so ownership can be injected.\",\n };\n }\n\n try {\n const mod = await import(\"../scripts/db/exec.js\");\n const args = [\"--sql\", sql, \"--format\", \"json\"];\n if (body.args !== undefined) {\n if (!Array.isArray(body.args)) {\n setResponseStatus(event, 400);\n return { error: \"args must be an array\" };\n }\n args.push(\"--args\", JSON.stringify(body.args));\n }\n const output = await captureCliOutput(mod.default, args);\n try {\n return JSON.parse(output);\n } catch {\n return { output };\n }\n } catch (err: any) {\n setResponseStatus(event, 500);\n return { error: err?.message ?? \"Exec failed\" };\n }\n}\n"]}