@agent-native/core 0.93.0 → 0.94.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1197) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +25 -0
  3. package/corpus/core/docs/content/a2a-protocol.mdx +21 -5
  4. package/corpus/core/docs/content/actions.mdx +9 -23
  5. package/corpus/core/docs/content/agent-mentions.mdx +31 -29
  6. package/corpus/core/docs/content/agent-native-toolkit.mdx +15 -6
  7. package/corpus/core/docs/content/agent-surfaces.mdx +9 -13
  8. package/corpus/core/docs/content/agent-teams.mdx +1 -0
  9. package/corpus/core/docs/content/authentication.mdx +10 -3
  10. package/corpus/core/docs/content/automation-connectors.mdx +82 -39
  11. package/corpus/core/docs/content/automations.mdx +17 -3
  12. package/corpus/core/docs/content/blueprint-installer.mdx +11 -4
  13. package/corpus/core/docs/content/cli-adapters.mdx +9 -6
  14. package/corpus/core/docs/content/client.mdx +16 -0
  15. package/corpus/core/docs/content/cloneable-saas.mdx +14 -11
  16. package/corpus/core/docs/content/code-agents-ui.mdx +65 -0
  17. package/corpus/core/docs/content/components.mdx +30 -14
  18. package/corpus/core/docs/content/context-awareness.mdx +27 -15
  19. package/corpus/core/docs/content/creating-templates.mdx +15 -9
  20. package/corpus/core/docs/content/cross-app-sso.mdx +16 -6
  21. package/corpus/core/docs/content/data-programs.mdx +1 -1
  22. package/corpus/core/docs/content/database.mdx +17 -5
  23. package/corpus/core/docs/content/deployment.mdx +19 -18
  24. package/corpus/core/docs/content/dispatch.mdx +6 -2
  25. package/corpus/core/docs/content/drop-in-agent.mdx +10 -4
  26. package/corpus/core/docs/content/durable-background-runs.mdx +9 -5
  27. package/corpus/core/docs/content/durable-resume.mdx +9 -4
  28. package/corpus/core/docs/content/embedding-sdk.mdx +26 -8
  29. package/corpus/core/docs/content/evals.mdx +3 -5
  30. package/corpus/core/docs/content/extensions.mdx +22 -9
  31. package/corpus/core/docs/content/external-agents.mdx +25 -34
  32. package/corpus/core/docs/content/faq.mdx +8 -0
  33. package/corpus/core/docs/content/file-uploads.mdx +12 -3
  34. package/corpus/core/docs/content/frames.mdx +16 -0
  35. package/corpus/core/docs/content/generative-ui.mdx +1 -1
  36. package/corpus/core/docs/content/getting-started.mdx +34 -21
  37. package/corpus/core/docs/content/harness-agents.mdx +8 -4
  38. package/corpus/core/docs/content/human-approval.mdx +8 -3
  39. package/corpus/core/docs/content/internationalization.mdx +9 -4
  40. package/corpus/core/docs/content/key-concepts.mdx +13 -20
  41. package/corpus/core/docs/content/local-file-mode.mdx +14 -8
  42. package/corpus/core/docs/content/locales/ar-SA/actions.mdx +2 -2
  43. package/corpus/core/docs/content/locales/ar-SA/agent-native-toolkit.mdx +2 -2
  44. package/corpus/core/docs/content/locales/ar-SA/agent-surfaces.mdx +8 -10
  45. package/corpus/core/docs/content/locales/ar-SA/agent-teams.mdx +1 -0
  46. package/corpus/core/docs/content/locales/ar-SA/authentication.mdx +1 -1
  47. package/corpus/core/docs/content/locales/ar-SA/components.mdx +11 -1
  48. package/corpus/core/docs/content/locales/ar-SA/creating-templates.mdx +3 -7
  49. package/corpus/core/docs/content/locales/ar-SA/cross-app-sso.mdx +16 -6
  50. package/corpus/core/docs/content/locales/ar-SA/deployment.mdx +8 -0
  51. package/corpus/core/docs/content/locales/ar-SA/external-agents.mdx +2 -7
  52. package/corpus/core/docs/content/locales/ar-SA/key-concepts.mdx +13 -20
  53. package/corpus/core/docs/content/locales/ar-SA/multi-tenancy.mdx +5 -5
  54. package/corpus/core/docs/content/locales/ar-SA/notifications.mdx +18 -10
  55. package/corpus/core/docs/content/locales/ar-SA/processors.mdx +11 -5
  56. package/corpus/core/docs/content/locales/ar-SA/server.mdx +17 -10
  57. package/corpus/core/docs/content/locales/ar-SA/sharing.mdx +10 -10
  58. package/corpus/core/docs/content/locales/ar-SA/skills-guide.mdx +34 -17
  59. package/corpus/core/docs/content/locales/ar-SA/template-assets.mdx +16 -13
  60. package/corpus/core/docs/content/locales/ar-SA/template-brain.mdx +3 -1
  61. package/corpus/core/docs/content/locales/ar-SA/template-clips.mdx +3 -3
  62. package/corpus/core/docs/content/locales/ar-SA/template-design.mdx +3 -1
  63. package/corpus/core/docs/content/locales/ar-SA/template-dispatch.mdx +5 -1
  64. package/corpus/core/docs/content/locales/ar-SA/template-mail.mdx +8 -0
  65. package/corpus/core/docs/content/locales/ar-SA/tracking.mdx +9 -6
  66. package/corpus/core/docs/content/locales/ar-SA/using-your-agent.mdx +0 -7
  67. package/corpus/core/docs/content/locales/ar-SA/voice-input.mdx +6 -0
  68. package/corpus/core/docs/content/locales/ar-SA/workspace-connections.mdx +9 -2
  69. package/corpus/core/docs/content/locales/ar-SA/workspace.mdx +19 -18
  70. package/corpus/core/docs/content/locales/de-DE/actions.mdx +2 -2
  71. package/corpus/core/docs/content/locales/de-DE/agent-native-toolkit.mdx +2 -2
  72. package/corpus/core/docs/content/locales/de-DE/agent-surfaces.mdx +8 -10
  73. package/corpus/core/docs/content/locales/de-DE/agent-teams.mdx +1 -0
  74. package/corpus/core/docs/content/locales/de-DE/authentication.mdx +1 -1
  75. package/corpus/core/docs/content/locales/de-DE/components.mdx +11 -1
  76. package/corpus/core/docs/content/locales/de-DE/creating-templates.mdx +3 -7
  77. package/corpus/core/docs/content/locales/de-DE/cross-app-sso.mdx +16 -6
  78. package/corpus/core/docs/content/locales/de-DE/deployment.mdx +8 -0
  79. package/corpus/core/docs/content/locales/de-DE/external-agents.mdx +3 -7
  80. package/corpus/core/docs/content/locales/de-DE/key-concepts.mdx +13 -20
  81. package/corpus/core/docs/content/locales/de-DE/multi-tenancy.mdx +5 -5
  82. package/corpus/core/docs/content/locales/de-DE/notifications.mdx +18 -10
  83. package/corpus/core/docs/content/locales/de-DE/processors.mdx +11 -5
  84. package/corpus/core/docs/content/locales/de-DE/server.mdx +18 -10
  85. package/corpus/core/docs/content/locales/de-DE/sharing.mdx +10 -10
  86. package/corpus/core/docs/content/locales/de-DE/skills-guide.mdx +34 -17
  87. package/corpus/core/docs/content/locales/de-DE/template-assets.mdx +16 -13
  88. package/corpus/core/docs/content/locales/de-DE/template-brain.mdx +3 -1
  89. package/corpus/core/docs/content/locales/de-DE/template-clips.mdx +3 -3
  90. package/corpus/core/docs/content/locales/de-DE/template-design.mdx +3 -1
  91. package/corpus/core/docs/content/locales/de-DE/template-dispatch.mdx +5 -1
  92. package/corpus/core/docs/content/locales/de-DE/template-mail.mdx +8 -0
  93. package/corpus/core/docs/content/locales/de-DE/tracking.mdx +9 -6
  94. package/corpus/core/docs/content/locales/de-DE/using-your-agent.mdx +0 -7
  95. package/corpus/core/docs/content/locales/de-DE/voice-input.mdx +6 -0
  96. package/corpus/core/docs/content/locales/de-DE/workspace-connections.mdx +9 -2
  97. package/corpus/core/docs/content/locales/de-DE/workspace.mdx +19 -18
  98. package/corpus/core/docs/content/locales/es-ES/actions.mdx +2 -2
  99. package/corpus/core/docs/content/locales/es-ES/agent-native-toolkit.mdx +2 -2
  100. package/corpus/core/docs/content/locales/es-ES/agent-surfaces.mdx +8 -10
  101. package/corpus/core/docs/content/locales/es-ES/agent-teams.mdx +1 -0
  102. package/corpus/core/docs/content/locales/es-ES/authentication.mdx +1 -1
  103. package/corpus/core/docs/content/locales/es-ES/components.mdx +11 -1
  104. package/corpus/core/docs/content/locales/es-ES/creating-templates.mdx +3 -7
  105. package/corpus/core/docs/content/locales/es-ES/cross-app-sso.mdx +16 -6
  106. package/corpus/core/docs/content/locales/es-ES/deployment.mdx +8 -0
  107. package/corpus/core/docs/content/locales/es-ES/external-agents.mdx +3 -7
  108. package/corpus/core/docs/content/locales/es-ES/key-concepts.mdx +13 -20
  109. package/corpus/core/docs/content/locales/es-ES/multi-tenancy.mdx +5 -5
  110. package/corpus/core/docs/content/locales/es-ES/notifications.mdx +18 -10
  111. package/corpus/core/docs/content/locales/es-ES/processors.mdx +11 -5
  112. package/corpus/core/docs/content/locales/es-ES/server.mdx +17 -10
  113. package/corpus/core/docs/content/locales/es-ES/sharing.mdx +10 -10
  114. package/corpus/core/docs/content/locales/es-ES/skills-guide.mdx +34 -17
  115. package/corpus/core/docs/content/locales/es-ES/template-assets.mdx +16 -13
  116. package/corpus/core/docs/content/locales/es-ES/template-brain.mdx +3 -1
  117. package/corpus/core/docs/content/locales/es-ES/template-clips.mdx +3 -3
  118. package/corpus/core/docs/content/locales/es-ES/template-design.mdx +3 -1
  119. package/corpus/core/docs/content/locales/es-ES/template-dispatch.mdx +5 -1
  120. package/corpus/core/docs/content/locales/es-ES/template-mail.mdx +8 -0
  121. package/corpus/core/docs/content/locales/es-ES/tracking.mdx +9 -6
  122. package/corpus/core/docs/content/locales/es-ES/using-your-agent.mdx +0 -7
  123. package/corpus/core/docs/content/locales/es-ES/voice-input.mdx +6 -0
  124. package/corpus/core/docs/content/locales/es-ES/workspace-connections.mdx +9 -2
  125. package/corpus/core/docs/content/locales/es-ES/workspace.mdx +19 -18
  126. package/corpus/core/docs/content/locales/fr-FR/actions.mdx +2 -2
  127. package/corpus/core/docs/content/locales/fr-FR/agent-native-toolkit.mdx +2 -2
  128. package/corpus/core/docs/content/locales/fr-FR/agent-surfaces.mdx +8 -10
  129. package/corpus/core/docs/content/locales/fr-FR/agent-teams.mdx +1 -0
  130. package/corpus/core/docs/content/locales/fr-FR/authentication.mdx +1 -1
  131. package/corpus/core/docs/content/locales/fr-FR/components.mdx +11 -1
  132. package/corpus/core/docs/content/locales/fr-FR/creating-templates.mdx +3 -7
  133. package/corpus/core/docs/content/locales/fr-FR/cross-app-sso.mdx +16 -6
  134. package/corpus/core/docs/content/locales/fr-FR/deployment.mdx +8 -0
  135. package/corpus/core/docs/content/locales/fr-FR/external-agents.mdx +3 -7
  136. package/corpus/core/docs/content/locales/fr-FR/key-concepts.mdx +13 -20
  137. package/corpus/core/docs/content/locales/fr-FR/multi-tenancy.mdx +5 -5
  138. package/corpus/core/docs/content/locales/fr-FR/notifications.mdx +18 -10
  139. package/corpus/core/docs/content/locales/fr-FR/processors.mdx +11 -5
  140. package/corpus/core/docs/content/locales/fr-FR/server.mdx +17 -10
  141. package/corpus/core/docs/content/locales/fr-FR/sharing.mdx +10 -10
  142. package/corpus/core/docs/content/locales/fr-FR/skills-guide.mdx +34 -17
  143. package/corpus/core/docs/content/locales/fr-FR/template-assets.mdx +16 -13
  144. package/corpus/core/docs/content/locales/fr-FR/template-brain.mdx +3 -1
  145. package/corpus/core/docs/content/locales/fr-FR/template-clips.mdx +3 -3
  146. package/corpus/core/docs/content/locales/fr-FR/template-design.mdx +3 -1
  147. package/corpus/core/docs/content/locales/fr-FR/template-dispatch.mdx +5 -1
  148. package/corpus/core/docs/content/locales/fr-FR/template-mail.mdx +8 -0
  149. package/corpus/core/docs/content/locales/fr-FR/tracking.mdx +9 -6
  150. package/corpus/core/docs/content/locales/fr-FR/using-your-agent.mdx +0 -7
  151. package/corpus/core/docs/content/locales/fr-FR/voice-input.mdx +6 -0
  152. package/corpus/core/docs/content/locales/fr-FR/workspace-connections.mdx +9 -2
  153. package/corpus/core/docs/content/locales/fr-FR/workspace.mdx +19 -18
  154. package/corpus/core/docs/content/locales/hi-IN/actions.mdx +2 -2
  155. package/corpus/core/docs/content/locales/hi-IN/agent-native-toolkit.mdx +2 -2
  156. package/corpus/core/docs/content/locales/hi-IN/agent-surfaces.mdx +8 -10
  157. package/corpus/core/docs/content/locales/hi-IN/agent-teams.mdx +1 -0
  158. package/corpus/core/docs/content/locales/hi-IN/authentication.mdx +1 -1
  159. package/corpus/core/docs/content/locales/hi-IN/components.mdx +11 -1
  160. package/corpus/core/docs/content/locales/hi-IN/creating-templates.mdx +3 -7
  161. package/corpus/core/docs/content/locales/hi-IN/cross-app-sso.mdx +16 -6
  162. package/corpus/core/docs/content/locales/hi-IN/deployment.mdx +8 -0
  163. package/corpus/core/docs/content/locales/hi-IN/external-agents.mdx +2 -7
  164. package/corpus/core/docs/content/locales/hi-IN/key-concepts.mdx +13 -20
  165. package/corpus/core/docs/content/locales/hi-IN/multi-tenancy.mdx +5 -5
  166. package/corpus/core/docs/content/locales/hi-IN/notifications.mdx +18 -10
  167. package/corpus/core/docs/content/locales/hi-IN/processors.mdx +11 -5
  168. package/corpus/core/docs/content/locales/hi-IN/server.mdx +17 -10
  169. package/corpus/core/docs/content/locales/hi-IN/sharing.mdx +10 -10
  170. package/corpus/core/docs/content/locales/hi-IN/skills-guide.mdx +34 -17
  171. package/corpus/core/docs/content/locales/hi-IN/template-assets.mdx +16 -13
  172. package/corpus/core/docs/content/locales/hi-IN/template-brain.mdx +3 -1
  173. package/corpus/core/docs/content/locales/hi-IN/template-clips.mdx +3 -3
  174. package/corpus/core/docs/content/locales/hi-IN/template-design.mdx +3 -1
  175. package/corpus/core/docs/content/locales/hi-IN/template-dispatch.mdx +5 -1
  176. package/corpus/core/docs/content/locales/hi-IN/template-mail.mdx +8 -0
  177. package/corpus/core/docs/content/locales/hi-IN/tracking.mdx +9 -6
  178. package/corpus/core/docs/content/locales/hi-IN/using-your-agent.mdx +0 -7
  179. package/corpus/core/docs/content/locales/hi-IN/voice-input.mdx +6 -0
  180. package/corpus/core/docs/content/locales/hi-IN/workspace-connections.mdx +9 -2
  181. package/corpus/core/docs/content/locales/hi-IN/workspace.mdx +19 -18
  182. package/corpus/core/docs/content/locales/ja-JP/actions.mdx +2 -2
  183. package/corpus/core/docs/content/locales/ja-JP/agent-native-toolkit.mdx +2 -2
  184. package/corpus/core/docs/content/locales/ja-JP/agent-surfaces.mdx +8 -10
  185. package/corpus/core/docs/content/locales/ja-JP/agent-teams.mdx +1 -0
  186. package/corpus/core/docs/content/locales/ja-JP/authentication.mdx +1 -1
  187. package/corpus/core/docs/content/locales/ja-JP/components.mdx +11 -1
  188. package/corpus/core/docs/content/locales/ja-JP/creating-templates.mdx +3 -7
  189. package/corpus/core/docs/content/locales/ja-JP/cross-app-sso.mdx +16 -6
  190. package/corpus/core/docs/content/locales/ja-JP/deployment.mdx +8 -0
  191. package/corpus/core/docs/content/locales/ja-JP/external-agents.mdx +2 -7
  192. package/corpus/core/docs/content/locales/ja-JP/key-concepts.mdx +13 -20
  193. package/corpus/core/docs/content/locales/ja-JP/multi-tenancy.mdx +5 -5
  194. package/corpus/core/docs/content/locales/ja-JP/notifications.mdx +18 -10
  195. package/corpus/core/docs/content/locales/ja-JP/processors.mdx +11 -5
  196. package/corpus/core/docs/content/locales/ja-JP/server.mdx +17 -10
  197. package/corpus/core/docs/content/locales/ja-JP/sharing.mdx +10 -10
  198. package/corpus/core/docs/content/locales/ja-JP/skills-guide.mdx +34 -17
  199. package/corpus/core/docs/content/locales/ja-JP/template-assets.mdx +16 -13
  200. package/corpus/core/docs/content/locales/ja-JP/template-brain.mdx +3 -1
  201. package/corpus/core/docs/content/locales/ja-JP/template-clips.mdx +3 -4
  202. package/corpus/core/docs/content/locales/ja-JP/template-design.mdx +3 -1
  203. package/corpus/core/docs/content/locales/ja-JP/template-dispatch.mdx +5 -1
  204. package/corpus/core/docs/content/locales/ja-JP/template-mail.mdx +8 -0
  205. package/corpus/core/docs/content/locales/ja-JP/tracking.mdx +9 -6
  206. package/corpus/core/docs/content/locales/ja-JP/using-your-agent.mdx +0 -7
  207. package/corpus/core/docs/content/locales/ja-JP/voice-input.mdx +6 -0
  208. package/corpus/core/docs/content/locales/ja-JP/workspace-connections.mdx +9 -2
  209. package/corpus/core/docs/content/locales/ja-JP/workspace.mdx +19 -18
  210. package/corpus/core/docs/content/locales/ko-KR/actions.mdx +2 -2
  211. package/corpus/core/docs/content/locales/ko-KR/agent-native-toolkit.mdx +2 -2
  212. package/corpus/core/docs/content/locales/ko-KR/agent-surfaces.mdx +8 -10
  213. package/corpus/core/docs/content/locales/ko-KR/agent-teams.mdx +1 -0
  214. package/corpus/core/docs/content/locales/ko-KR/authentication.mdx +1 -1
  215. package/corpus/core/docs/content/locales/ko-KR/components.mdx +11 -1
  216. package/corpus/core/docs/content/locales/ko-KR/creating-templates.mdx +3 -7
  217. package/corpus/core/docs/content/locales/ko-KR/cross-app-sso.mdx +16 -6
  218. package/corpus/core/docs/content/locales/ko-KR/deployment.mdx +8 -0
  219. package/corpus/core/docs/content/locales/ko-KR/external-agents.mdx +2 -7
  220. package/corpus/core/docs/content/locales/ko-KR/key-concepts.mdx +13 -20
  221. package/corpus/core/docs/content/locales/ko-KR/multi-tenancy.mdx +5 -5
  222. package/corpus/core/docs/content/locales/ko-KR/notifications.mdx +18 -10
  223. package/corpus/core/docs/content/locales/ko-KR/processors.mdx +11 -5
  224. package/corpus/core/docs/content/locales/ko-KR/server.mdx +17 -10
  225. package/corpus/core/docs/content/locales/ko-KR/sharing.mdx +10 -10
  226. package/corpus/core/docs/content/locales/ko-KR/skills-guide.mdx +34 -17
  227. package/corpus/core/docs/content/locales/ko-KR/template-assets.mdx +16 -13
  228. package/corpus/core/docs/content/locales/ko-KR/template-brain.mdx +3 -1
  229. package/corpus/core/docs/content/locales/ko-KR/template-clips.mdx +3 -4
  230. package/corpus/core/docs/content/locales/ko-KR/template-design.mdx +3 -1
  231. package/corpus/core/docs/content/locales/ko-KR/template-dispatch.mdx +5 -1
  232. package/corpus/core/docs/content/locales/ko-KR/template-mail.mdx +8 -0
  233. package/corpus/core/docs/content/locales/ko-KR/tracking.mdx +9 -6
  234. package/corpus/core/docs/content/locales/ko-KR/using-your-agent.mdx +0 -7
  235. package/corpus/core/docs/content/locales/ko-KR/voice-input.mdx +6 -0
  236. package/corpus/core/docs/content/locales/ko-KR/workspace-connections.mdx +9 -2
  237. package/corpus/core/docs/content/locales/ko-KR/workspace.mdx +19 -18
  238. package/corpus/core/docs/content/locales/pt-BR/actions.mdx +2 -2
  239. package/corpus/core/docs/content/locales/pt-BR/agent-native-toolkit.mdx +2 -2
  240. package/corpus/core/docs/content/locales/pt-BR/agent-surfaces.mdx +8 -10
  241. package/corpus/core/docs/content/locales/pt-BR/agent-teams.mdx +1 -0
  242. package/corpus/core/docs/content/locales/pt-BR/authentication.mdx +1 -1
  243. package/corpus/core/docs/content/locales/pt-BR/components.mdx +11 -1
  244. package/corpus/core/docs/content/locales/pt-BR/creating-templates.mdx +3 -7
  245. package/corpus/core/docs/content/locales/pt-BR/cross-app-sso.mdx +16 -6
  246. package/corpus/core/docs/content/locales/pt-BR/deployment.mdx +8 -0
  247. package/corpus/core/docs/content/locales/pt-BR/external-agents.mdx +3 -7
  248. package/corpus/core/docs/content/locales/pt-BR/key-concepts.mdx +13 -20
  249. package/corpus/core/docs/content/locales/pt-BR/multi-tenancy.mdx +5 -5
  250. package/corpus/core/docs/content/locales/pt-BR/notifications.mdx +18 -10
  251. package/corpus/core/docs/content/locales/pt-BR/processors.mdx +11 -5
  252. package/corpus/core/docs/content/locales/pt-BR/server.mdx +17 -10
  253. package/corpus/core/docs/content/locales/pt-BR/sharing.mdx +10 -10
  254. package/corpus/core/docs/content/locales/pt-BR/skills-guide.mdx +34 -17
  255. package/corpus/core/docs/content/locales/pt-BR/template-assets.mdx +16 -13
  256. package/corpus/core/docs/content/locales/pt-BR/template-brain.mdx +3 -1
  257. package/corpus/core/docs/content/locales/pt-BR/template-clips.mdx +3 -3
  258. package/corpus/core/docs/content/locales/pt-BR/template-design.mdx +3 -1
  259. package/corpus/core/docs/content/locales/pt-BR/template-dispatch.mdx +5 -1
  260. package/corpus/core/docs/content/locales/pt-BR/template-mail.mdx +8 -0
  261. package/corpus/core/docs/content/locales/pt-BR/tracking.mdx +9 -6
  262. package/corpus/core/docs/content/locales/pt-BR/using-your-agent.mdx +0 -7
  263. package/corpus/core/docs/content/locales/pt-BR/voice-input.mdx +6 -0
  264. package/corpus/core/docs/content/locales/pt-BR/workspace-connections.mdx +9 -2
  265. package/corpus/core/docs/content/locales/pt-BR/workspace.mdx +19 -18
  266. package/corpus/core/docs/content/locales/zh-CN/actions.mdx +2 -2
  267. package/corpus/core/docs/content/locales/zh-CN/agent-native-toolkit.mdx +2 -2
  268. package/corpus/core/docs/content/locales/zh-CN/agent-surfaces.mdx +8 -10
  269. package/corpus/core/docs/content/locales/zh-CN/agent-teams.mdx +1 -0
  270. package/corpus/core/docs/content/locales/zh-CN/authentication.mdx +1 -1
  271. package/corpus/core/docs/content/locales/zh-CN/components.mdx +11 -1
  272. package/corpus/core/docs/content/locales/zh-CN/creating-templates.mdx +3 -7
  273. package/corpus/core/docs/content/locales/zh-CN/cross-app-sso.mdx +16 -6
  274. package/corpus/core/docs/content/locales/zh-CN/deployment.mdx +8 -0
  275. package/corpus/core/docs/content/locales/zh-CN/external-agents.mdx +2 -7
  276. package/corpus/core/docs/content/locales/zh-CN/key-concepts.mdx +13 -20
  277. package/corpus/core/docs/content/locales/zh-CN/multi-tenancy.mdx +5 -5
  278. package/corpus/core/docs/content/locales/zh-CN/notifications.mdx +18 -10
  279. package/corpus/core/docs/content/locales/zh-CN/processors.mdx +11 -5
  280. package/corpus/core/docs/content/locales/zh-CN/server.mdx +16 -10
  281. package/corpus/core/docs/content/locales/zh-CN/sharing.mdx +10 -10
  282. package/corpus/core/docs/content/locales/zh-CN/skills-guide.mdx +34 -17
  283. package/corpus/core/docs/content/locales/zh-CN/template-assets.mdx +16 -13
  284. package/corpus/core/docs/content/locales/zh-CN/template-brain.mdx +3 -1
  285. package/corpus/core/docs/content/locales/zh-CN/template-clips.mdx +3 -4
  286. package/corpus/core/docs/content/locales/zh-CN/template-design.mdx +3 -1
  287. package/corpus/core/docs/content/locales/zh-CN/template-dispatch.mdx +5 -1
  288. package/corpus/core/docs/content/locales/zh-CN/template-mail.mdx +8 -0
  289. package/corpus/core/docs/content/locales/zh-CN/tracking.mdx +9 -6
  290. package/corpus/core/docs/content/locales/zh-CN/using-your-agent.mdx +0 -7
  291. package/corpus/core/docs/content/locales/zh-CN/voice-input.mdx +6 -0
  292. package/corpus/core/docs/content/locales/zh-CN/workspace-connections.mdx +9 -2
  293. package/corpus/core/docs/content/locales/zh-CN/workspace.mdx +19 -18
  294. package/corpus/core/docs/content/locales/zh-TW/actions.mdx +2 -2
  295. package/corpus/core/docs/content/locales/zh-TW/agent-native-toolkit.mdx +2 -2
  296. package/corpus/core/docs/content/locales/zh-TW/agent-surfaces.mdx +8 -10
  297. package/corpus/core/docs/content/locales/zh-TW/agent-teams.mdx +1 -0
  298. package/corpus/core/docs/content/locales/zh-TW/authentication.mdx +1 -1
  299. package/corpus/core/docs/content/locales/zh-TW/components.mdx +11 -1
  300. package/corpus/core/docs/content/locales/zh-TW/creating-templates.mdx +3 -7
  301. package/corpus/core/docs/content/locales/zh-TW/cross-app-sso.mdx +16 -6
  302. package/corpus/core/docs/content/locales/zh-TW/deployment.mdx +8 -0
  303. package/corpus/core/docs/content/locales/zh-TW/external-agents.mdx +2 -7
  304. package/corpus/core/docs/content/locales/zh-TW/key-concepts.mdx +13 -20
  305. package/corpus/core/docs/content/locales/zh-TW/multi-tenancy.mdx +5 -5
  306. package/corpus/core/docs/content/locales/zh-TW/notifications.mdx +18 -10
  307. package/corpus/core/docs/content/locales/zh-TW/processors.mdx +11 -5
  308. package/corpus/core/docs/content/locales/zh-TW/server.mdx +16 -10
  309. package/corpus/core/docs/content/locales/zh-TW/sharing.mdx +10 -10
  310. package/corpus/core/docs/content/locales/zh-TW/skills-guide.mdx +34 -17
  311. package/corpus/core/docs/content/locales/zh-TW/template-assets.mdx +16 -13
  312. package/corpus/core/docs/content/locales/zh-TW/template-brain.mdx +3 -1
  313. package/corpus/core/docs/content/locales/zh-TW/template-clips.mdx +3 -4
  314. package/corpus/core/docs/content/locales/zh-TW/template-design.mdx +3 -1
  315. package/corpus/core/docs/content/locales/zh-TW/template-dispatch.mdx +5 -1
  316. package/corpus/core/docs/content/locales/zh-TW/template-mail.mdx +8 -0
  317. package/corpus/core/docs/content/locales/zh-TW/tracking.mdx +9 -6
  318. package/corpus/core/docs/content/locales/zh-TW/using-your-agent.mdx +0 -7
  319. package/corpus/core/docs/content/locales/zh-TW/voice-input.mdx +6 -0
  320. package/corpus/core/docs/content/locales/zh-TW/workspace-connections.mdx +9 -2
  321. package/corpus/core/docs/content/locales/zh-TW/workspace.mdx +19 -18
  322. package/corpus/core/docs/content/mcp-apps.mdx +14 -32
  323. package/corpus/core/docs/content/mcp-clients.mdx +48 -54
  324. package/corpus/core/docs/content/mcp-protocol.mdx +25 -10
  325. package/corpus/core/docs/content/messaging.mdx +19 -11
  326. package/corpus/core/docs/content/multi-app-workspace.mdx +11 -96
  327. package/corpus/core/docs/content/multi-tenancy.mdx +5 -5
  328. package/corpus/core/docs/content/native-chat-ui.mdx +4 -4
  329. package/corpus/core/docs/content/notifications.mdx +19 -12
  330. package/corpus/core/docs/content/observability.mdx +2 -4
  331. package/corpus/core/docs/content/observational-memory.mdx +7 -3
  332. package/corpus/core/docs/content/onboarding.mdx +9 -2
  333. package/corpus/core/docs/content/plan-plugin.mdx +10 -2
  334. package/corpus/core/docs/content/pr-visual-recap.mdx +1 -1
  335. package/corpus/core/docs/content/processors.mdx +11 -5
  336. package/corpus/core/docs/content/pure-agent-apps.mdx +5 -1
  337. package/corpus/core/docs/content/real-time-collaboration.mdx +30 -67
  338. package/corpus/core/docs/content/recurring-jobs.mdx +8 -6
  339. package/corpus/core/docs/content/routing.mdx +3 -4
  340. package/corpus/core/docs/content/sandbox-adapters.mdx +30 -53
  341. package/corpus/core/docs/content/security.mdx +8 -0
  342. package/corpus/core/docs/content/server.mdx +17 -10
  343. package/corpus/core/docs/content/sharing.mdx +10 -10
  344. package/corpus/core/docs/content/skills-guide.mdx +35 -16
  345. package/corpus/core/docs/content/template-analytics.mdx +11 -8
  346. package/corpus/core/docs/content/template-assets.mdx +16 -13
  347. package/corpus/core/docs/content/template-brain.mdx +3 -1
  348. package/corpus/core/docs/content/template-calendar.mdx +12 -4
  349. package/corpus/core/docs/content/template-chat.mdx +4 -4
  350. package/corpus/core/docs/content/template-clips.mdx +3 -3
  351. package/corpus/core/docs/content/template-content.mdx +23 -18
  352. package/corpus/core/docs/content/template-design.mdx +3 -1
  353. package/corpus/core/docs/content/template-dispatch.mdx +5 -1
  354. package/corpus/core/docs/content/template-mail.mdx +14 -2
  355. package/corpus/core/docs/content/template-plan.mdx +22 -15
  356. package/corpus/core/docs/content/template-slides.mdx +11 -3
  357. package/corpus/core/docs/content/toolkit-agent-ux.mdx +46 -3
  358. package/corpus/core/docs/content/toolkit-collaboration.mdx +58 -4
  359. package/corpus/core/docs/content/toolkit-command-navigation.mdx +8 -2
  360. package/corpus/core/docs/content/toolkit-comments-review.mdx +10 -2
  361. package/corpus/core/docs/content/toolkit-history.mdx +8 -3
  362. package/corpus/core/docs/content/toolkit-observability.mdx +48 -2
  363. package/corpus/core/docs/content/toolkit-org-team.mdx +8 -2
  364. package/corpus/core/docs/content/toolkit-resources.mdx +45 -2
  365. package/corpus/core/docs/content/toolkit-settings.mdx +8 -2
  366. package/corpus/core/docs/content/toolkit-setup-connections.mdx +7 -2
  367. package/corpus/core/docs/content/toolkit-sharing.mdx +46 -3
  368. package/corpus/core/docs/content/toolkit-ui.mdx +82 -11
  369. package/corpus/core/docs/content/tracking.mdx +10 -8
  370. package/corpus/core/docs/content/using-your-agent.mdx +0 -12
  371. package/corpus/core/docs/content/voice-input.mdx +7 -1
  372. package/corpus/core/docs/content/what-is-agent-native.mdx +7 -8
  373. package/corpus/core/docs/content/workspace-connections.mdx +16 -23
  374. package/corpus/core/docs/content/workspace-management.mdx +16 -4
  375. package/corpus/core/docs/content/workspace.mdx +19 -18
  376. package/corpus/core/package.json +1 -1
  377. package/corpus/core/src/agent/context-xray/tokenize.ts +6 -1
  378. package/corpus/core/src/agent/engine/ai-sdk-engine.ts +9 -5
  379. package/corpus/core/src/agent/engine/anthropic-engine.ts +2 -4
  380. package/corpus/core/src/agent/engine/builder-engine.ts +5 -7
  381. package/corpus/core/src/agent/engine/index.ts +1 -0
  382. package/corpus/core/src/agent/engine/registry.ts +40 -0
  383. package/corpus/core/src/agent/harness/ai-sdk-adapter.ts +6 -1
  384. package/corpus/core/src/agent/harness/background.ts +96 -19
  385. package/corpus/core/src/agent/harness/index.ts +11 -0
  386. package/corpus/core/src/agent/harness/lifecycle.ts +498 -0
  387. package/corpus/core/src/agent/harness/runner.ts +38 -0
  388. package/corpus/core/src/agent/harness/store.ts +22 -3
  389. package/corpus/core/src/agent/model-config.ts +4 -1
  390. package/corpus/core/src/agent/production-agent.ts +190 -6
  391. package/corpus/core/src/agent/run-manager.ts +5 -1
  392. package/corpus/core/src/application-state/index.ts +1 -0
  393. package/corpus/core/src/application-state/store.ts +32 -0
  394. package/corpus/core/src/cli/code-agent-connector.ts +263 -8
  395. package/corpus/core/src/cli/code-agent-executor.ts +15 -1
  396. package/corpus/core/src/client/AgentPanel.tsx +41 -38
  397. package/corpus/core/src/client/AssistantChat.tsx +53 -5
  398. package/corpus/core/src/client/MultiTabAssistantChat.tsx +33 -40
  399. package/corpus/core/src/client/appearance.ts +8 -5
  400. package/corpus/core/src/client/chat/connectors.ts +293 -29
  401. package/corpus/core/src/client/chat/message-components.tsx +23 -1
  402. package/corpus/core/src/client/chat/runtime.ts +126 -25
  403. package/corpus/core/src/client/chat/tool-call-display.tsx +45 -4
  404. package/corpus/core/src/client/composer/RealtimeVoiceMode.tsx +294 -0
  405. package/corpus/core/src/client/composer/TiptapComposer.tsx +21 -20
  406. package/corpus/core/src/client/composer/VoiceButton.tsx +20 -0
  407. package/corpus/core/src/client/composer/index.ts +22 -0
  408. package/corpus/core/src/client/composer/useRealtimeVoiceMode.tsx +640 -0
  409. package/corpus/core/src/client/guided-questions.tsx +12 -3
  410. package/corpus/core/src/client/index.ts +18 -0
  411. package/corpus/core/src/client/settings/DemoModeSection.tsx +4 -3
  412. package/corpus/core/src/client/settings/SettingsPanel.tsx +4 -0
  413. package/corpus/core/src/client/settings/SettingsTabsPage.tsx +95 -37
  414. package/corpus/core/src/client/use-chat-models.ts +17 -17
  415. package/corpus/core/src/client/use-db-sync.ts +108 -7
  416. package/corpus/core/src/code-agents/background-controller.ts +18 -0
  417. package/corpus/core/src/collab/ydoc-manager.ts +41 -6
  418. package/corpus/core/src/db/migrations.ts +17 -1
  419. package/corpus/core/src/demo/fetch-interceptor.ts +16 -11
  420. package/corpus/core/src/integrations/adapters/slack.ts +41 -2
  421. package/corpus/core/src/integrations/awaiting-input-store.ts +130 -0
  422. package/corpus/core/src/integrations/computer-supervision-store.ts +423 -0
  423. package/corpus/core/src/integrations/computer-supervision.ts +213 -0
  424. package/corpus/core/src/integrations/index.ts +29 -1
  425. package/corpus/core/src/integrations/plugin.ts +231 -2
  426. package/corpus/core/src/integrations/remote-commands-store.ts +334 -3
  427. package/corpus/core/src/integrations/remote-devices-store.ts +68 -9
  428. package/corpus/core/src/integrations/remote-json-safety.ts +127 -0
  429. package/corpus/core/src/integrations/remote-run-events-store.ts +104 -19
  430. package/corpus/core/src/integrations/remote-types.ts +66 -3
  431. package/corpus/core/src/integrations/webhook-handler.ts +161 -2
  432. package/corpus/core/src/localization/default-messages.ts +28 -0
  433. package/corpus/core/src/mcp-client/config.ts +48 -2
  434. package/corpus/core/src/mcp-client/index.ts +35 -2
  435. package/corpus/core/src/mcp-client/tool-policy.ts +182 -0
  436. package/corpus/core/src/secrets/register-framework-secrets.ts +27 -4
  437. package/corpus/core/src/server/agent-chat-plugin.ts +62 -8
  438. package/corpus/core/src/server/index.ts +16 -0
  439. package/corpus/core/src/server/realtime-voice.ts +590 -0
  440. package/corpus/core/src/shared/reasoning-effort.ts +61 -19
  441. package/corpus/core/src/styles/agent-conversation.css +17 -0
  442. package/corpus/core/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +39 -5
  443. package/corpus/templates/brain/app/lib/settings-navigation.ts +22 -0
  444. package/corpus/templates/brain/app/routes/settings.tsx +367 -252
  445. package/corpus/templates/brain/changelog/2026-07-10-brain-settings-now-separate-assistant-behavior-publishing-re.md +6 -0
  446. package/corpus/templates/brain/changelog/2026-07-10-organization-settings-now-opens-directly-from-the-workspace-.md +6 -0
  447. package/corpus/templates/calendar/.agents/skills/event-management/SKILL.md +36 -4
  448. package/corpus/templates/calendar/AGENTS.md +4 -0
  449. package/corpus/templates/calendar/actions/create-event.ts +7 -19
  450. package/corpus/templates/calendar/actions/delete-event.ts +10 -3
  451. package/corpus/templates/calendar/actions/rsvp-event.ts +1 -1
  452. package/corpus/templates/calendar/actions/update-event.ts +4 -3
  453. package/corpus/templates/calendar/app/components/calendar/CreateEventDialog.tsx +100 -13
  454. package/corpus/templates/calendar/app/components/calendar/DayView.tsx +12 -4
  455. package/corpus/templates/calendar/app/components/calendar/EventDetailPanel.tsx +3 -3
  456. package/corpus/templates/calendar/app/components/calendar/EventDetailPopover.tsx +86 -8
  457. package/corpus/templates/calendar/app/components/calendar/EventDialog.tsx +3 -1
  458. package/corpus/templates/calendar/app/components/calendar/WeekView.tsx +12 -4
  459. package/corpus/templates/calendar/app/hooks/use-events.ts +1 -0
  460. package/corpus/templates/calendar/app/lib/event-account-selection.ts +36 -0
  461. package/corpus/templates/calendar/app/lib/event-form-initialization.ts +21 -0
  462. package/corpus/templates/calendar/app/lib/event-mutation-inputs.ts +18 -0
  463. package/corpus/templates/calendar/app/pages/CalendarView.tsx +119 -26
  464. package/corpus/templates/calendar/changelog/2026-07-10-choose-which-connected-google-account-receives-a-new-event-w.md +6 -0
  465. package/corpus/templates/calendar/server/db/schema.ts +2 -0
  466. package/corpus/templates/calendar/server/handlers/bookings.ts +43 -6
  467. package/corpus/templates/calendar/server/handlers/events.ts +28 -9
  468. package/corpus/templates/calendar/server/lib/google-calendar.ts +66 -38
  469. package/corpus/templates/calendar/server/plugins/db.ts +5 -0
  470. package/corpus/templates/clips/.agents/skills/ai-video-tools/SKILL.md +12 -3
  471. package/corpus/templates/clips/.agents/skills/meetings/SKILL.md +1 -1
  472. package/corpus/templates/clips/AGENTS.md +4 -2
  473. package/corpus/templates/clips/actions/regenerate-title.ts +53 -7
  474. package/corpus/templates/clips/actions/request-transcript.ts +152 -41
  475. package/corpus/templates/clips/actions/save-browser-transcript.ts +11 -9
  476. package/corpus/templates/clips/app/components/player/comments-panel.tsx +101 -53
  477. package/corpus/templates/clips/app/components/player/playback-comment-overlay.tsx +102 -0
  478. package/corpus/templates/clips/app/components/player/video-player.tsx +10 -1
  479. package/corpus/templates/clips/app/hooks/use-auto-title.ts +14 -0
  480. package/corpus/templates/clips/app/routes/embed.$shareId.tsx +2 -0
  481. package/corpus/templates/clips/changelog/2026-07-10-comment-replies-now-open-inline-and-focus-immediately-while-.md +6 -0
  482. package/corpus/templates/clips/changelog/2026-07-10-dismissed-upload-warnings-now-keep-recordings-in-clip-drafts.md +6 -0
  483. package/corpus/templates/clips/changelog/2026-07-10-dragging-the-meeting-recorder-no-longer-opens-the-expanded.md +6 -0
  484. package/corpus/templates/clips/changelog/2026-07-10-finishing-meeting-notes-no-longer-opens-your-browser.md +6 -0
  485. package/corpus/templates/clips/changelog/2026-07-10-meeting-recordings-now-keep-microphone-audio-and-recover-tra.md +6 -0
  486. package/corpus/templates/clips/changelog/2026-07-10-recording-pause-and-resume-controls-now-respond-reliably-on-.md +6 -0
  487. package/corpus/templates/clips/changelog/2026-07-10-starting-and-joining-a-meeting-now-closes-the-desktop-popover.md +6 -0
  488. package/corpus/templates/clips/changelog/2026-07-10-timestamped-comments-now-appear-over-the-video-as-playback-r.md +6 -0
  489. package/corpus/templates/clips/changelog/2026-07-10-transcript-backed-titles-and-summaries-now-finish-after-recording.md +6 -0
  490. package/corpus/templates/clips/changelog/2026-07-10-zoom-meetings-now-open-directly-in-the-desktop-app.md +6 -0
  491. package/corpus/templates/clips/chrome-extension/src/overlay.ts +49 -7
  492. package/corpus/templates/clips/desktop/src/app.tsx +70 -42
  493. package/corpus/templates/clips/desktop/src/hooks/useMeetingTranscription.ts +8 -14
  494. package/corpus/templates/clips/desktop/src/lib/meeting-join-url.ts +33 -0
  495. package/corpus/templates/clips/desktop/src/lib/pause-transition.ts +79 -0
  496. package/corpus/templates/clips/desktop/src/lib/pill-interaction.ts +19 -0
  497. package/corpus/templates/clips/desktop/src/lib/recorder.ts +90 -39
  498. package/corpus/templates/clips/desktop/src/lib/transcription-engine.ts +3 -2
  499. package/corpus/templates/clips/desktop/src/overlays/meeting-notification.tsx +3 -2
  500. package/corpus/templates/clips/desktop/src/overlays/recording-pill.tsx +32 -6
  501. package/corpus/templates/clips/desktop/src/overlays/toolbar.tsx +50 -5
  502. package/corpus/templates/clips/desktop/src/styles.css +11 -19
  503. package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +2 -1
  504. package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +121 -4
  505. package/corpus/templates/clips/desktop/src-tauri/src/native_speech.rs +97 -17
  506. package/corpus/templates/clips/desktop/src-tauri/src/whisper_speech.rs +80 -5
  507. package/corpus/templates/clips/desktop/src-tauri/tauri.conf.json +1 -1
  508. package/corpus/templates/clips/vitest.config.ts +23 -0
  509. package/corpus/templates/content/app/components/editor/DocumentEditor.tsx +28 -9
  510. package/corpus/templates/content/changelog/2026-07-10-open-documents-no-longer-make-constant-background-requests-w.md +6 -0
  511. package/corpus/templates/design/.agents/skills/design-systems/SKILL.md +21 -4
  512. package/corpus/templates/design/AGENTS.md +7 -0
  513. package/corpus/templates/design/app/components/design/DesignCanvas.tsx +132 -7
  514. package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +73 -18
  515. package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +6 -1
  516. package/corpus/templates/design/app/components/design/multi-screen/frame-geometry.ts +135 -5
  517. package/corpus/templates/design/app/lib/clipboard-content-lineage.ts +64 -0
  518. package/corpus/templates/design/app/lib/design-clipboard-managed-styles.ts +247 -0
  519. package/corpus/templates/design/app/lib/design-clipboard.ts +60 -3
  520. package/corpus/templates/design/app/lib/design-import.ts +31 -3
  521. package/corpus/templates/design/app/pages/design-editor/latest-write-queue.ts +56 -0
  522. package/corpus/templates/design/app/pages/design-editor/performance-buffer-guard.ts +80 -0
  523. package/corpus/templates/design/changelog/2026-07-10-concurrent-agent-and-artboard-edits-no-longer-show-misleadin.md +6 -0
  524. package/corpus/templates/design/changelog/2026-07-10-designs-with-html-examples-inside-alpine-attributes-or-comme.md +6 -0
  525. package/corpus/templates/design/changelog/2026-07-10-interactive-designs-no-longer-appear-blank-in-the-canvas-whe.md +6 -0
  526. package/corpus/templates/design/changelog/2026-07-10-long-overview-editing-sessions-lots-of-pan-zoom-screen-switc.md +6 -0
  527. package/corpus/templates/design/changelog/2026-07-10-rapid-breakpoint-and-edit-scope-changes-no-longer-jump-back-.md +6 -0
  528. package/corpus/templates/design/changelog/2026-07-10-responsive-breakpoint-previews-stay-visible-while-panning-ac.md +6 -0
  529. package/corpus/templates/design/changelog/2026-07-10-rich-design-clipboard-markers-are-now-accepted-only-from-the.md +6 -0
  530. package/corpus/templates/design/e2e/helpers.ts +16 -5
  531. package/corpus/templates/design/server/source-workspace.ts +28 -2
  532. package/corpus/templates/design/shared/html-integrity.ts +119 -24
  533. package/corpus/templates/dispatch/AGENTS.md +10 -2
  534. package/corpus/templates/dispatch/actions/view-screen.ts +11 -0
  535. package/corpus/templates/dispatch/app/hooks/use-navigation-state.ts +13 -0
  536. package/corpus/templates/dispatch/app/i18n/zh-TW.ts +3 -0
  537. package/corpus/templates/dispatch/app/i18n-data.ts +37 -1
  538. package/corpus/templates/dispatch/app/routes/operations.tsx +1 -0
  539. package/corpus/templates/dispatch/changelog/2026-07-10-dispatch-now-has-a-cleaner-chat-history-and-quieter-sidebar-.md +6 -0
  540. package/corpus/templates/dispatch/changelog/2026-07-10-operations-console-brings-agent-monitoring-and-database-inspection-tog.md +6 -0
  541. package/corpus/templates/mail/actions/get-integration-statuses.ts +36 -0
  542. package/corpus/templates/mail/app/components/email/EmailThread.tsx +3 -2
  543. package/corpus/templates/mail/app/components/email/IntegrationsSidebar.tsx +3 -3
  544. package/corpus/templates/mail/app/hooks/use-apollo.ts +5 -71
  545. package/corpus/templates/mail/app/hooks/use-draft-queue.ts +1 -1
  546. package/corpus/templates/mail/app/hooks/use-integrations.ts +51 -48
  547. package/corpus/templates/mail/app/lib/integration-status.ts +31 -0
  548. package/corpus/templates/mail/app/lib/sync-invalidation.ts +5 -0
  549. package/corpus/templates/mail/app/pages/SettingsPage.tsx +3 -0
  550. package/corpus/templates/mail/app/root.tsx +22 -12
  551. package/corpus/templates/mail/changelog/2026-07-10-email-content-backgrounds-now-blend-cleanly-with-dark-mode.md +6 -0
  552. package/corpus/templates/mail/changelog/2026-07-10-mail-settings-now-group-drafting-automation-and-connected-se.md +6 -0
  553. package/corpus/templates/mail/changelog/2026-07-10-organization-settings-now-opens-directly-from-the-workspace-.md +6 -0
  554. package/dist/agent/context-xray/tokenize.d.ts.map +1 -1
  555. package/dist/agent/context-xray/tokenize.js +6 -1
  556. package/dist/agent/context-xray/tokenize.js.map +1 -1
  557. package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
  558. package/dist/agent/engine/ai-sdk-engine.js +8 -3
  559. package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
  560. package/dist/agent/engine/anthropic-engine.d.ts.map +1 -1
  561. package/dist/agent/engine/anthropic-engine.js +2 -4
  562. package/dist/agent/engine/anthropic-engine.js.map +1 -1
  563. package/dist/agent/engine/builder-engine.d.ts +1 -1
  564. package/dist/agent/engine/builder-engine.d.ts.map +1 -1
  565. package/dist/agent/engine/builder-engine.js +2 -3
  566. package/dist/agent/engine/builder-engine.js.map +1 -1
  567. package/dist/agent/engine/index.d.ts +1 -1
  568. package/dist/agent/engine/index.d.ts.map +1 -1
  569. package/dist/agent/engine/index.js +1 -1
  570. package/dist/agent/engine/index.js.map +1 -1
  571. package/dist/agent/engine/registry.d.ts +13 -0
  572. package/dist/agent/engine/registry.d.ts.map +1 -1
  573. package/dist/agent/engine/registry.js +33 -0
  574. package/dist/agent/engine/registry.js.map +1 -1
  575. package/dist/agent/harness/ai-sdk-adapter.d.ts.map +1 -1
  576. package/dist/agent/harness/ai-sdk-adapter.js +3 -1
  577. package/dist/agent/harness/ai-sdk-adapter.js.map +1 -1
  578. package/dist/agent/harness/background.d.ts +9 -9
  579. package/dist/agent/harness/background.d.ts.map +1 -1
  580. package/dist/agent/harness/background.js +77 -19
  581. package/dist/agent/harness/background.js.map +1 -1
  582. package/dist/agent/harness/index.d.ts +1 -0
  583. package/dist/agent/harness/index.d.ts.map +1 -1
  584. package/dist/agent/harness/index.js +1 -0
  585. package/dist/agent/harness/index.js.map +1 -1
  586. package/dist/agent/harness/lifecycle.d.ts +45 -0
  587. package/dist/agent/harness/lifecycle.d.ts.map +1 -0
  588. package/dist/agent/harness/lifecycle.js +318 -0
  589. package/dist/agent/harness/lifecycle.js.map +1 -0
  590. package/dist/agent/harness/runner.d.ts.map +1 -1
  591. package/dist/agent/harness/runner.js +29 -1
  592. package/dist/agent/harness/runner.js.map +1 -1
  593. package/dist/agent/harness/store.d.ts +2 -0
  594. package/dist/agent/harness/store.d.ts.map +1 -1
  595. package/dist/agent/harness/store.js +17 -3
  596. package/dist/agent/harness/store.js.map +1 -1
  597. package/dist/agent/model-config.d.ts +2 -2
  598. package/dist/agent/model-config.d.ts.map +1 -1
  599. package/dist/agent/model-config.js +4 -1
  600. package/dist/agent/model-config.js.map +1 -1
  601. package/dist/agent/production-agent.d.ts +38 -0
  602. package/dist/agent/production-agent.d.ts.map +1 -1
  603. package/dist/agent/production-agent.js +135 -4
  604. package/dist/agent/production-agent.js.map +1 -1
  605. package/dist/agent/run-manager.d.ts.map +1 -1
  606. package/dist/agent/run-manager.js.map +1 -1
  607. package/dist/application-state/index.d.ts +1 -1
  608. package/dist/application-state/index.d.ts.map +1 -1
  609. package/dist/application-state/index.js +1 -1
  610. package/dist/application-state/index.js.map +1 -1
  611. package/dist/application-state/store.d.ts +6 -0
  612. package/dist/application-state/store.d.ts.map +1 -1
  613. package/dist/application-state/store.js +31 -0
  614. package/dist/application-state/store.js.map +1 -1
  615. package/dist/cli/code-agent-connector.d.ts +9 -0
  616. package/dist/cli/code-agent-connector.d.ts.map +1 -1
  617. package/dist/cli/code-agent-connector.js +212 -10
  618. package/dist/cli/code-agent-connector.js.map +1 -1
  619. package/dist/cli/code-agent-executor.d.ts +2 -0
  620. package/dist/cli/code-agent-executor.d.ts.map +1 -1
  621. package/dist/cli/code-agent-executor.js +8 -1
  622. package/dist/cli/code-agent-executor.js.map +1 -1
  623. package/dist/client/AgentPanel.d.ts.map +1 -1
  624. package/dist/client/AgentPanel.js +6 -5
  625. package/dist/client/AgentPanel.js.map +1 -1
  626. package/dist/client/AssistantChat.d.ts +6 -0
  627. package/dist/client/AssistantChat.d.ts.map +1 -1
  628. package/dist/client/AssistantChat.js +34 -4
  629. package/dist/client/AssistantChat.js.map +1 -1
  630. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  631. package/dist/client/MultiTabAssistantChat.js +16 -37
  632. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  633. package/dist/client/appearance.d.ts +4 -2
  634. package/dist/client/appearance.d.ts.map +1 -1
  635. package/dist/client/appearance.js +8 -5
  636. package/dist/client/appearance.js.map +1 -1
  637. package/dist/client/chat/connectors.d.ts.map +1 -1
  638. package/dist/client/chat/connectors.js +206 -28
  639. package/dist/client/chat/connectors.js.map +1 -1
  640. package/dist/client/chat/message-components.d.ts.map +1 -1
  641. package/dist/client/chat/message-components.js +17 -1
  642. package/dist/client/chat/message-components.js.map +1 -1
  643. package/dist/client/chat/runtime.d.ts.map +1 -1
  644. package/dist/client/chat/runtime.js +84 -24
  645. package/dist/client/chat/runtime.js.map +1 -1
  646. package/dist/client/chat/tool-call-display.d.ts +8 -1
  647. package/dist/client/chat/tool-call-display.d.ts.map +1 -1
  648. package/dist/client/chat/tool-call-display.js +21 -3
  649. package/dist/client/chat/tool-call-display.js.map +1 -1
  650. package/dist/client/composer/RealtimeVoiceMode.d.ts +54 -0
  651. package/dist/client/composer/RealtimeVoiceMode.d.ts.map +1 -0
  652. package/dist/client/composer/RealtimeVoiceMode.js +63 -0
  653. package/dist/client/composer/RealtimeVoiceMode.js.map +1 -0
  654. package/dist/client/composer/TiptapComposer.d.ts +1 -0
  655. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  656. package/dist/client/composer/TiptapComposer.js +17 -20
  657. package/dist/client/composer/TiptapComposer.js.map +1 -1
  658. package/dist/client/composer/VoiceButton.d.ts.map +1 -1
  659. package/dist/client/composer/VoiceButton.js +9 -0
  660. package/dist/client/composer/VoiceButton.js.map +1 -1
  661. package/dist/client/composer/index.d.ts +2 -0
  662. package/dist/client/composer/index.d.ts.map +1 -1
  663. package/dist/client/composer/index.js +2 -0
  664. package/dist/client/composer/index.js.map +1 -1
  665. package/dist/client/composer/useRealtimeVoiceMode.d.ts +56 -0
  666. package/dist/client/composer/useRealtimeVoiceMode.d.ts.map +1 -0
  667. package/dist/client/composer/useRealtimeVoiceMode.js +492 -0
  668. package/dist/client/composer/useRealtimeVoiceMode.js.map +1 -0
  669. package/dist/client/guided-questions.d.ts.map +1 -1
  670. package/dist/client/guided-questions.js +7 -2
  671. package/dist/client/guided-questions.js.map +1 -1
  672. package/dist/client/index.d.ts +1 -1
  673. package/dist/client/index.d.ts.map +1 -1
  674. package/dist/client/index.js +1 -1
  675. package/dist/client/index.js.map +1 -1
  676. package/dist/client/settings/DemoModeSection.d.ts.map +1 -1
  677. package/dist/client/settings/DemoModeSection.js +4 -3
  678. package/dist/client/settings/DemoModeSection.js.map +1 -1
  679. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  680. package/dist/client/settings/SettingsPanel.js +4 -0
  681. package/dist/client/settings/SettingsPanel.js.map +1 -1
  682. package/dist/client/settings/SettingsTabsPage.d.ts +10 -3
  683. package/dist/client/settings/SettingsTabsPage.d.ts.map +1 -1
  684. package/dist/client/settings/SettingsTabsPage.js +49 -11
  685. package/dist/client/settings/SettingsTabsPage.js.map +1 -1
  686. package/dist/client/use-chat-models.d.ts.map +1 -1
  687. package/dist/client/use-chat-models.js +6 -14
  688. package/dist/client/use-chat-models.js.map +1 -1
  689. package/dist/client/use-db-sync.d.ts.map +1 -1
  690. package/dist/client/use-db-sync.js +87 -7
  691. package/dist/client/use-db-sync.js.map +1 -1
  692. package/dist/code-agents/background-controller.d.ts +1 -1
  693. package/dist/code-agents/background-controller.d.ts.map +1 -1
  694. package/dist/code-agents/background-controller.js +17 -1
  695. package/dist/code-agents/background-controller.js.map +1 -1
  696. package/dist/collab/routes.d.ts +1 -1
  697. package/dist/collab/struct-routes.d.ts +1 -1
  698. package/dist/collab/ydoc-manager.d.ts +9 -1
  699. package/dist/collab/ydoc-manager.d.ts.map +1 -1
  700. package/dist/collab/ydoc-manager.js +30 -6
  701. package/dist/collab/ydoc-manager.js.map +1 -1
  702. package/dist/db/migrations.d.ts.map +1 -1
  703. package/dist/db/migrations.js +4 -2
  704. package/dist/db/migrations.js.map +1 -1
  705. package/dist/demo/fetch-interceptor.d.ts +5 -1
  706. package/dist/demo/fetch-interceptor.d.ts.map +1 -1
  707. package/dist/demo/fetch-interceptor.js +16 -12
  708. package/dist/demo/fetch-interceptor.js.map +1 -1
  709. package/dist/integrations/adapters/slack.d.ts +2 -0
  710. package/dist/integrations/adapters/slack.d.ts.map +1 -1
  711. package/dist/integrations/adapters/slack.js +38 -2
  712. package/dist/integrations/adapters/slack.js.map +1 -1
  713. package/dist/integrations/awaiting-input-store.d.ts +27 -0
  714. package/dist/integrations/awaiting-input-store.d.ts.map +1 -0
  715. package/dist/integrations/awaiting-input-store.js +112 -0
  716. package/dist/integrations/awaiting-input-store.js.map +1 -0
  717. package/dist/integrations/computer-supervision-store.d.ts +65 -0
  718. package/dist/integrations/computer-supervision-store.d.ts.map +1 -0
  719. package/dist/integrations/computer-supervision-store.js +296 -0
  720. package/dist/integrations/computer-supervision-store.js.map +1 -0
  721. package/dist/integrations/computer-supervision.d.ts +11 -0
  722. package/dist/integrations/computer-supervision.d.ts.map +1 -0
  723. package/dist/integrations/computer-supervision.js +160 -0
  724. package/dist/integrations/computer-supervision.js.map +1 -0
  725. package/dist/integrations/index.d.ts +6 -3
  726. package/dist/integrations/index.d.ts.map +1 -1
  727. package/dist/integrations/index.js +5 -2
  728. package/dist/integrations/index.js.map +1 -1
  729. package/dist/integrations/plugin.d.ts.map +1 -1
  730. package/dist/integrations/plugin.js +205 -3
  731. package/dist/integrations/plugin.js.map +1 -1
  732. package/dist/integrations/remote-commands-store.d.ts +15 -1
  733. package/dist/integrations/remote-commands-store.d.ts.map +1 -1
  734. package/dist/integrations/remote-commands-store.js +273 -3
  735. package/dist/integrations/remote-commands-store.js.map +1 -1
  736. package/dist/integrations/remote-devices-store.d.ts +4 -3
  737. package/dist/integrations/remote-devices-store.d.ts.map +1 -1
  738. package/dist/integrations/remote-devices-store.js +49 -2
  739. package/dist/integrations/remote-devices-store.js.map +1 -1
  740. package/dist/integrations/remote-json-safety.d.ts +6 -0
  741. package/dist/integrations/remote-json-safety.d.ts.map +1 -0
  742. package/dist/integrations/remote-json-safety.js +114 -0
  743. package/dist/integrations/remote-json-safety.js.map +1 -0
  744. package/dist/integrations/remote-run-events-store.d.ts +11 -1
  745. package/dist/integrations/remote-run-events-store.d.ts.map +1 -1
  746. package/dist/integrations/remote-run-events-store.js +85 -17
  747. package/dist/integrations/remote-run-events-store.js.map +1 -1
  748. package/dist/integrations/remote-types.d.ts +54 -3
  749. package/dist/integrations/remote-types.d.ts.map +1 -1
  750. package/dist/integrations/remote-types.js.map +1 -1
  751. package/dist/integrations/webhook-handler.d.ts.map +1 -1
  752. package/dist/integrations/webhook-handler.js +133 -4
  753. package/dist/integrations/webhook-handler.js.map +1 -1
  754. package/dist/localization/default-messages.d.ts +26 -0
  755. package/dist/localization/default-messages.d.ts.map +1 -1
  756. package/dist/localization/default-messages.js +26 -0
  757. package/dist/localization/default-messages.js.map +1 -1
  758. package/dist/mcp-client/config.d.ts.map +1 -1
  759. package/dist/mcp-client/config.js +44 -3
  760. package/dist/mcp-client/config.js.map +1 -1
  761. package/dist/mcp-client/index.d.ts +6 -1
  762. package/dist/mcp-client/index.d.ts.map +1 -1
  763. package/dist/mcp-client/index.js +11 -3
  764. package/dist/mcp-client/index.js.map +1 -1
  765. package/dist/mcp-client/tool-policy.d.ts +24 -0
  766. package/dist/mcp-client/tool-policy.d.ts.map +1 -0
  767. package/dist/mcp-client/tool-policy.js +139 -0
  768. package/dist/mcp-client/tool-policy.js.map +1 -0
  769. package/dist/observability/routes.d.ts +5 -5
  770. package/dist/resources/handlers.d.ts +3 -3
  771. package/dist/secrets/register-framework-secrets.d.ts +3 -4
  772. package/dist/secrets/register-framework-secrets.d.ts.map +1 -1
  773. package/dist/secrets/register-framework-secrets.js +25 -4
  774. package/dist/secrets/register-framework-secrets.js.map +1 -1
  775. package/dist/secrets/routes.d.ts +9 -9
  776. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  777. package/dist/server/agent-chat-plugin.js +53 -6
  778. package/dist/server/agent-chat-plugin.js.map +1 -1
  779. package/dist/server/index.d.ts +2 -1
  780. package/dist/server/index.d.ts.map +1 -1
  781. package/dist/server/index.js +2 -1
  782. package/dist/server/index.js.map +1 -1
  783. package/dist/server/realtime-voice.d.ts +53 -0
  784. package/dist/server/realtime-voice.d.ts.map +1 -0
  785. package/dist/server/realtime-voice.js +404 -0
  786. package/dist/server/realtime-voice.js.map +1 -0
  787. package/dist/shared/reasoning-effort.d.ts +20 -0
  788. package/dist/shared/reasoning-effort.d.ts.map +1 -1
  789. package/dist/shared/reasoning-effort.js +52 -18
  790. package/dist/shared/reasoning-effort.js.map +1 -1
  791. package/dist/styles/agent-conversation.css +17 -0
  792. package/dist/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +39 -5
  793. package/docs/content/a2a-protocol.mdx +21 -5
  794. package/docs/content/actions.mdx +9 -23
  795. package/docs/content/agent-mentions.mdx +31 -29
  796. package/docs/content/agent-native-toolkit.mdx +15 -6
  797. package/docs/content/agent-surfaces.mdx +9 -13
  798. package/docs/content/agent-teams.mdx +1 -0
  799. package/docs/content/authentication.mdx +10 -3
  800. package/docs/content/automation-connectors.mdx +82 -39
  801. package/docs/content/automations.mdx +17 -3
  802. package/docs/content/blueprint-installer.mdx +11 -4
  803. package/docs/content/cli-adapters.mdx +9 -6
  804. package/docs/content/client.mdx +16 -0
  805. package/docs/content/cloneable-saas.mdx +14 -11
  806. package/docs/content/code-agents-ui.mdx +65 -0
  807. package/docs/content/components.mdx +30 -14
  808. package/docs/content/context-awareness.mdx +27 -15
  809. package/docs/content/creating-templates.mdx +15 -9
  810. package/docs/content/cross-app-sso.mdx +16 -6
  811. package/docs/content/data-programs.mdx +1 -1
  812. package/docs/content/database.mdx +17 -5
  813. package/docs/content/deployment.mdx +19 -18
  814. package/docs/content/dispatch.mdx +6 -2
  815. package/docs/content/drop-in-agent.mdx +10 -4
  816. package/docs/content/durable-background-runs.mdx +9 -5
  817. package/docs/content/durable-resume.mdx +9 -4
  818. package/docs/content/embedding-sdk.mdx +26 -8
  819. package/docs/content/evals.mdx +3 -5
  820. package/docs/content/extensions.mdx +22 -9
  821. package/docs/content/external-agents.mdx +25 -34
  822. package/docs/content/faq.mdx +8 -0
  823. package/docs/content/file-uploads.mdx +12 -3
  824. package/docs/content/frames.mdx +16 -0
  825. package/docs/content/generative-ui.mdx +1 -1
  826. package/docs/content/getting-started.mdx +34 -21
  827. package/docs/content/harness-agents.mdx +8 -4
  828. package/docs/content/human-approval.mdx +8 -3
  829. package/docs/content/internationalization.mdx +9 -4
  830. package/docs/content/key-concepts.mdx +13 -20
  831. package/docs/content/local-file-mode.mdx +14 -8
  832. package/docs/content/locales/ar-SA/actions.mdx +2 -2
  833. package/docs/content/locales/ar-SA/agent-native-toolkit.mdx +2 -2
  834. package/docs/content/locales/ar-SA/agent-surfaces.mdx +8 -10
  835. package/docs/content/locales/ar-SA/agent-teams.mdx +1 -0
  836. package/docs/content/locales/ar-SA/authentication.mdx +1 -1
  837. package/docs/content/locales/ar-SA/components.mdx +11 -1
  838. package/docs/content/locales/ar-SA/creating-templates.mdx +3 -7
  839. package/docs/content/locales/ar-SA/cross-app-sso.mdx +16 -6
  840. package/docs/content/locales/ar-SA/deployment.mdx +8 -0
  841. package/docs/content/locales/ar-SA/external-agents.mdx +2 -7
  842. package/docs/content/locales/ar-SA/key-concepts.mdx +13 -20
  843. package/docs/content/locales/ar-SA/multi-tenancy.mdx +5 -5
  844. package/docs/content/locales/ar-SA/notifications.mdx +18 -10
  845. package/docs/content/locales/ar-SA/processors.mdx +11 -5
  846. package/docs/content/locales/ar-SA/server.mdx +17 -10
  847. package/docs/content/locales/ar-SA/sharing.mdx +10 -10
  848. package/docs/content/locales/ar-SA/skills-guide.mdx +34 -17
  849. package/docs/content/locales/ar-SA/template-assets.mdx +16 -13
  850. package/docs/content/locales/ar-SA/template-brain.mdx +3 -1
  851. package/docs/content/locales/ar-SA/template-clips.mdx +3 -3
  852. package/docs/content/locales/ar-SA/template-design.mdx +3 -1
  853. package/docs/content/locales/ar-SA/template-dispatch.mdx +5 -1
  854. package/docs/content/locales/ar-SA/template-mail.mdx +8 -0
  855. package/docs/content/locales/ar-SA/tracking.mdx +9 -6
  856. package/docs/content/locales/ar-SA/using-your-agent.mdx +0 -7
  857. package/docs/content/locales/ar-SA/voice-input.mdx +6 -0
  858. package/docs/content/locales/ar-SA/workspace-connections.mdx +9 -2
  859. package/docs/content/locales/ar-SA/workspace.mdx +19 -18
  860. package/docs/content/locales/de-DE/actions.mdx +2 -2
  861. package/docs/content/locales/de-DE/agent-native-toolkit.mdx +2 -2
  862. package/docs/content/locales/de-DE/agent-surfaces.mdx +8 -10
  863. package/docs/content/locales/de-DE/agent-teams.mdx +1 -0
  864. package/docs/content/locales/de-DE/authentication.mdx +1 -1
  865. package/docs/content/locales/de-DE/components.mdx +11 -1
  866. package/docs/content/locales/de-DE/creating-templates.mdx +3 -7
  867. package/docs/content/locales/de-DE/cross-app-sso.mdx +16 -6
  868. package/docs/content/locales/de-DE/deployment.mdx +8 -0
  869. package/docs/content/locales/de-DE/external-agents.mdx +3 -7
  870. package/docs/content/locales/de-DE/key-concepts.mdx +13 -20
  871. package/docs/content/locales/de-DE/multi-tenancy.mdx +5 -5
  872. package/docs/content/locales/de-DE/notifications.mdx +18 -10
  873. package/docs/content/locales/de-DE/processors.mdx +11 -5
  874. package/docs/content/locales/de-DE/server.mdx +18 -10
  875. package/docs/content/locales/de-DE/sharing.mdx +10 -10
  876. package/docs/content/locales/de-DE/skills-guide.mdx +34 -17
  877. package/docs/content/locales/de-DE/template-assets.mdx +16 -13
  878. package/docs/content/locales/de-DE/template-brain.mdx +3 -1
  879. package/docs/content/locales/de-DE/template-clips.mdx +3 -3
  880. package/docs/content/locales/de-DE/template-design.mdx +3 -1
  881. package/docs/content/locales/de-DE/template-dispatch.mdx +5 -1
  882. package/docs/content/locales/de-DE/template-mail.mdx +8 -0
  883. package/docs/content/locales/de-DE/tracking.mdx +9 -6
  884. package/docs/content/locales/de-DE/using-your-agent.mdx +0 -7
  885. package/docs/content/locales/de-DE/voice-input.mdx +6 -0
  886. package/docs/content/locales/de-DE/workspace-connections.mdx +9 -2
  887. package/docs/content/locales/de-DE/workspace.mdx +19 -18
  888. package/docs/content/locales/es-ES/actions.mdx +2 -2
  889. package/docs/content/locales/es-ES/agent-native-toolkit.mdx +2 -2
  890. package/docs/content/locales/es-ES/agent-surfaces.mdx +8 -10
  891. package/docs/content/locales/es-ES/agent-teams.mdx +1 -0
  892. package/docs/content/locales/es-ES/authentication.mdx +1 -1
  893. package/docs/content/locales/es-ES/components.mdx +11 -1
  894. package/docs/content/locales/es-ES/creating-templates.mdx +3 -7
  895. package/docs/content/locales/es-ES/cross-app-sso.mdx +16 -6
  896. package/docs/content/locales/es-ES/deployment.mdx +8 -0
  897. package/docs/content/locales/es-ES/external-agents.mdx +3 -7
  898. package/docs/content/locales/es-ES/key-concepts.mdx +13 -20
  899. package/docs/content/locales/es-ES/multi-tenancy.mdx +5 -5
  900. package/docs/content/locales/es-ES/notifications.mdx +18 -10
  901. package/docs/content/locales/es-ES/processors.mdx +11 -5
  902. package/docs/content/locales/es-ES/server.mdx +17 -10
  903. package/docs/content/locales/es-ES/sharing.mdx +10 -10
  904. package/docs/content/locales/es-ES/skills-guide.mdx +34 -17
  905. package/docs/content/locales/es-ES/template-assets.mdx +16 -13
  906. package/docs/content/locales/es-ES/template-brain.mdx +3 -1
  907. package/docs/content/locales/es-ES/template-clips.mdx +3 -3
  908. package/docs/content/locales/es-ES/template-design.mdx +3 -1
  909. package/docs/content/locales/es-ES/template-dispatch.mdx +5 -1
  910. package/docs/content/locales/es-ES/template-mail.mdx +8 -0
  911. package/docs/content/locales/es-ES/tracking.mdx +9 -6
  912. package/docs/content/locales/es-ES/using-your-agent.mdx +0 -7
  913. package/docs/content/locales/es-ES/voice-input.mdx +6 -0
  914. package/docs/content/locales/es-ES/workspace-connections.mdx +9 -2
  915. package/docs/content/locales/es-ES/workspace.mdx +19 -18
  916. package/docs/content/locales/fr-FR/actions.mdx +2 -2
  917. package/docs/content/locales/fr-FR/agent-native-toolkit.mdx +2 -2
  918. package/docs/content/locales/fr-FR/agent-surfaces.mdx +8 -10
  919. package/docs/content/locales/fr-FR/agent-teams.mdx +1 -0
  920. package/docs/content/locales/fr-FR/authentication.mdx +1 -1
  921. package/docs/content/locales/fr-FR/components.mdx +11 -1
  922. package/docs/content/locales/fr-FR/creating-templates.mdx +3 -7
  923. package/docs/content/locales/fr-FR/cross-app-sso.mdx +16 -6
  924. package/docs/content/locales/fr-FR/deployment.mdx +8 -0
  925. package/docs/content/locales/fr-FR/external-agents.mdx +3 -7
  926. package/docs/content/locales/fr-FR/key-concepts.mdx +13 -20
  927. package/docs/content/locales/fr-FR/multi-tenancy.mdx +5 -5
  928. package/docs/content/locales/fr-FR/notifications.mdx +18 -10
  929. package/docs/content/locales/fr-FR/processors.mdx +11 -5
  930. package/docs/content/locales/fr-FR/server.mdx +17 -10
  931. package/docs/content/locales/fr-FR/sharing.mdx +10 -10
  932. package/docs/content/locales/fr-FR/skills-guide.mdx +34 -17
  933. package/docs/content/locales/fr-FR/template-assets.mdx +16 -13
  934. package/docs/content/locales/fr-FR/template-brain.mdx +3 -1
  935. package/docs/content/locales/fr-FR/template-clips.mdx +3 -3
  936. package/docs/content/locales/fr-FR/template-design.mdx +3 -1
  937. package/docs/content/locales/fr-FR/template-dispatch.mdx +5 -1
  938. package/docs/content/locales/fr-FR/template-mail.mdx +8 -0
  939. package/docs/content/locales/fr-FR/tracking.mdx +9 -6
  940. package/docs/content/locales/fr-FR/using-your-agent.mdx +0 -7
  941. package/docs/content/locales/fr-FR/voice-input.mdx +6 -0
  942. package/docs/content/locales/fr-FR/workspace-connections.mdx +9 -2
  943. package/docs/content/locales/fr-FR/workspace.mdx +19 -18
  944. package/docs/content/locales/hi-IN/actions.mdx +2 -2
  945. package/docs/content/locales/hi-IN/agent-native-toolkit.mdx +2 -2
  946. package/docs/content/locales/hi-IN/agent-surfaces.mdx +8 -10
  947. package/docs/content/locales/hi-IN/agent-teams.mdx +1 -0
  948. package/docs/content/locales/hi-IN/authentication.mdx +1 -1
  949. package/docs/content/locales/hi-IN/components.mdx +11 -1
  950. package/docs/content/locales/hi-IN/creating-templates.mdx +3 -7
  951. package/docs/content/locales/hi-IN/cross-app-sso.mdx +16 -6
  952. package/docs/content/locales/hi-IN/deployment.mdx +8 -0
  953. package/docs/content/locales/hi-IN/external-agents.mdx +2 -7
  954. package/docs/content/locales/hi-IN/key-concepts.mdx +13 -20
  955. package/docs/content/locales/hi-IN/multi-tenancy.mdx +5 -5
  956. package/docs/content/locales/hi-IN/notifications.mdx +18 -10
  957. package/docs/content/locales/hi-IN/processors.mdx +11 -5
  958. package/docs/content/locales/hi-IN/server.mdx +17 -10
  959. package/docs/content/locales/hi-IN/sharing.mdx +10 -10
  960. package/docs/content/locales/hi-IN/skills-guide.mdx +34 -17
  961. package/docs/content/locales/hi-IN/template-assets.mdx +16 -13
  962. package/docs/content/locales/hi-IN/template-brain.mdx +3 -1
  963. package/docs/content/locales/hi-IN/template-clips.mdx +3 -3
  964. package/docs/content/locales/hi-IN/template-design.mdx +3 -1
  965. package/docs/content/locales/hi-IN/template-dispatch.mdx +5 -1
  966. package/docs/content/locales/hi-IN/template-mail.mdx +8 -0
  967. package/docs/content/locales/hi-IN/tracking.mdx +9 -6
  968. package/docs/content/locales/hi-IN/using-your-agent.mdx +0 -7
  969. package/docs/content/locales/hi-IN/voice-input.mdx +6 -0
  970. package/docs/content/locales/hi-IN/workspace-connections.mdx +9 -2
  971. package/docs/content/locales/hi-IN/workspace.mdx +19 -18
  972. package/docs/content/locales/ja-JP/actions.mdx +2 -2
  973. package/docs/content/locales/ja-JP/agent-native-toolkit.mdx +2 -2
  974. package/docs/content/locales/ja-JP/agent-surfaces.mdx +8 -10
  975. package/docs/content/locales/ja-JP/agent-teams.mdx +1 -0
  976. package/docs/content/locales/ja-JP/authentication.mdx +1 -1
  977. package/docs/content/locales/ja-JP/components.mdx +11 -1
  978. package/docs/content/locales/ja-JP/creating-templates.mdx +3 -7
  979. package/docs/content/locales/ja-JP/cross-app-sso.mdx +16 -6
  980. package/docs/content/locales/ja-JP/deployment.mdx +8 -0
  981. package/docs/content/locales/ja-JP/external-agents.mdx +2 -7
  982. package/docs/content/locales/ja-JP/key-concepts.mdx +13 -20
  983. package/docs/content/locales/ja-JP/multi-tenancy.mdx +5 -5
  984. package/docs/content/locales/ja-JP/notifications.mdx +18 -10
  985. package/docs/content/locales/ja-JP/processors.mdx +11 -5
  986. package/docs/content/locales/ja-JP/server.mdx +17 -10
  987. package/docs/content/locales/ja-JP/sharing.mdx +10 -10
  988. package/docs/content/locales/ja-JP/skills-guide.mdx +34 -17
  989. package/docs/content/locales/ja-JP/template-assets.mdx +16 -13
  990. package/docs/content/locales/ja-JP/template-brain.mdx +3 -1
  991. package/docs/content/locales/ja-JP/template-clips.mdx +3 -4
  992. package/docs/content/locales/ja-JP/template-design.mdx +3 -1
  993. package/docs/content/locales/ja-JP/template-dispatch.mdx +5 -1
  994. package/docs/content/locales/ja-JP/template-mail.mdx +8 -0
  995. package/docs/content/locales/ja-JP/tracking.mdx +9 -6
  996. package/docs/content/locales/ja-JP/using-your-agent.mdx +0 -7
  997. package/docs/content/locales/ja-JP/voice-input.mdx +6 -0
  998. package/docs/content/locales/ja-JP/workspace-connections.mdx +9 -2
  999. package/docs/content/locales/ja-JP/workspace.mdx +19 -18
  1000. package/docs/content/locales/ko-KR/actions.mdx +2 -2
  1001. package/docs/content/locales/ko-KR/agent-native-toolkit.mdx +2 -2
  1002. package/docs/content/locales/ko-KR/agent-surfaces.mdx +8 -10
  1003. package/docs/content/locales/ko-KR/agent-teams.mdx +1 -0
  1004. package/docs/content/locales/ko-KR/authentication.mdx +1 -1
  1005. package/docs/content/locales/ko-KR/components.mdx +11 -1
  1006. package/docs/content/locales/ko-KR/creating-templates.mdx +3 -7
  1007. package/docs/content/locales/ko-KR/cross-app-sso.mdx +16 -6
  1008. package/docs/content/locales/ko-KR/deployment.mdx +8 -0
  1009. package/docs/content/locales/ko-KR/external-agents.mdx +2 -7
  1010. package/docs/content/locales/ko-KR/key-concepts.mdx +13 -20
  1011. package/docs/content/locales/ko-KR/multi-tenancy.mdx +5 -5
  1012. package/docs/content/locales/ko-KR/notifications.mdx +18 -10
  1013. package/docs/content/locales/ko-KR/processors.mdx +11 -5
  1014. package/docs/content/locales/ko-KR/server.mdx +17 -10
  1015. package/docs/content/locales/ko-KR/sharing.mdx +10 -10
  1016. package/docs/content/locales/ko-KR/skills-guide.mdx +34 -17
  1017. package/docs/content/locales/ko-KR/template-assets.mdx +16 -13
  1018. package/docs/content/locales/ko-KR/template-brain.mdx +3 -1
  1019. package/docs/content/locales/ko-KR/template-clips.mdx +3 -4
  1020. package/docs/content/locales/ko-KR/template-design.mdx +3 -1
  1021. package/docs/content/locales/ko-KR/template-dispatch.mdx +5 -1
  1022. package/docs/content/locales/ko-KR/template-mail.mdx +8 -0
  1023. package/docs/content/locales/ko-KR/tracking.mdx +9 -6
  1024. package/docs/content/locales/ko-KR/using-your-agent.mdx +0 -7
  1025. package/docs/content/locales/ko-KR/voice-input.mdx +6 -0
  1026. package/docs/content/locales/ko-KR/workspace-connections.mdx +9 -2
  1027. package/docs/content/locales/ko-KR/workspace.mdx +19 -18
  1028. package/docs/content/locales/pt-BR/actions.mdx +2 -2
  1029. package/docs/content/locales/pt-BR/agent-native-toolkit.mdx +2 -2
  1030. package/docs/content/locales/pt-BR/agent-surfaces.mdx +8 -10
  1031. package/docs/content/locales/pt-BR/agent-teams.mdx +1 -0
  1032. package/docs/content/locales/pt-BR/authentication.mdx +1 -1
  1033. package/docs/content/locales/pt-BR/components.mdx +11 -1
  1034. package/docs/content/locales/pt-BR/creating-templates.mdx +3 -7
  1035. package/docs/content/locales/pt-BR/cross-app-sso.mdx +16 -6
  1036. package/docs/content/locales/pt-BR/deployment.mdx +8 -0
  1037. package/docs/content/locales/pt-BR/external-agents.mdx +3 -7
  1038. package/docs/content/locales/pt-BR/key-concepts.mdx +13 -20
  1039. package/docs/content/locales/pt-BR/multi-tenancy.mdx +5 -5
  1040. package/docs/content/locales/pt-BR/notifications.mdx +18 -10
  1041. package/docs/content/locales/pt-BR/processors.mdx +11 -5
  1042. package/docs/content/locales/pt-BR/server.mdx +17 -10
  1043. package/docs/content/locales/pt-BR/sharing.mdx +10 -10
  1044. package/docs/content/locales/pt-BR/skills-guide.mdx +34 -17
  1045. package/docs/content/locales/pt-BR/template-assets.mdx +16 -13
  1046. package/docs/content/locales/pt-BR/template-brain.mdx +3 -1
  1047. package/docs/content/locales/pt-BR/template-clips.mdx +3 -3
  1048. package/docs/content/locales/pt-BR/template-design.mdx +3 -1
  1049. package/docs/content/locales/pt-BR/template-dispatch.mdx +5 -1
  1050. package/docs/content/locales/pt-BR/template-mail.mdx +8 -0
  1051. package/docs/content/locales/pt-BR/tracking.mdx +9 -6
  1052. package/docs/content/locales/pt-BR/using-your-agent.mdx +0 -7
  1053. package/docs/content/locales/pt-BR/voice-input.mdx +6 -0
  1054. package/docs/content/locales/pt-BR/workspace-connections.mdx +9 -2
  1055. package/docs/content/locales/pt-BR/workspace.mdx +19 -18
  1056. package/docs/content/locales/zh-CN/actions.mdx +2 -2
  1057. package/docs/content/locales/zh-CN/agent-native-toolkit.mdx +2 -2
  1058. package/docs/content/locales/zh-CN/agent-surfaces.mdx +8 -10
  1059. package/docs/content/locales/zh-CN/agent-teams.mdx +1 -0
  1060. package/docs/content/locales/zh-CN/authentication.mdx +1 -1
  1061. package/docs/content/locales/zh-CN/components.mdx +11 -1
  1062. package/docs/content/locales/zh-CN/creating-templates.mdx +3 -7
  1063. package/docs/content/locales/zh-CN/cross-app-sso.mdx +16 -6
  1064. package/docs/content/locales/zh-CN/deployment.mdx +8 -0
  1065. package/docs/content/locales/zh-CN/external-agents.mdx +2 -7
  1066. package/docs/content/locales/zh-CN/key-concepts.mdx +13 -20
  1067. package/docs/content/locales/zh-CN/multi-tenancy.mdx +5 -5
  1068. package/docs/content/locales/zh-CN/notifications.mdx +18 -10
  1069. package/docs/content/locales/zh-CN/processors.mdx +11 -5
  1070. package/docs/content/locales/zh-CN/server.mdx +16 -10
  1071. package/docs/content/locales/zh-CN/sharing.mdx +10 -10
  1072. package/docs/content/locales/zh-CN/skills-guide.mdx +34 -17
  1073. package/docs/content/locales/zh-CN/template-assets.mdx +16 -13
  1074. package/docs/content/locales/zh-CN/template-brain.mdx +3 -1
  1075. package/docs/content/locales/zh-CN/template-clips.mdx +3 -4
  1076. package/docs/content/locales/zh-CN/template-design.mdx +3 -1
  1077. package/docs/content/locales/zh-CN/template-dispatch.mdx +5 -1
  1078. package/docs/content/locales/zh-CN/template-mail.mdx +8 -0
  1079. package/docs/content/locales/zh-CN/tracking.mdx +9 -6
  1080. package/docs/content/locales/zh-CN/using-your-agent.mdx +0 -7
  1081. package/docs/content/locales/zh-CN/voice-input.mdx +6 -0
  1082. package/docs/content/locales/zh-CN/workspace-connections.mdx +9 -2
  1083. package/docs/content/locales/zh-CN/workspace.mdx +19 -18
  1084. package/docs/content/locales/zh-TW/actions.mdx +2 -2
  1085. package/docs/content/locales/zh-TW/agent-native-toolkit.mdx +2 -2
  1086. package/docs/content/locales/zh-TW/agent-surfaces.mdx +8 -10
  1087. package/docs/content/locales/zh-TW/agent-teams.mdx +1 -0
  1088. package/docs/content/locales/zh-TW/authentication.mdx +1 -1
  1089. package/docs/content/locales/zh-TW/components.mdx +11 -1
  1090. package/docs/content/locales/zh-TW/creating-templates.mdx +3 -7
  1091. package/docs/content/locales/zh-TW/cross-app-sso.mdx +16 -6
  1092. package/docs/content/locales/zh-TW/deployment.mdx +8 -0
  1093. package/docs/content/locales/zh-TW/external-agents.mdx +2 -7
  1094. package/docs/content/locales/zh-TW/key-concepts.mdx +13 -20
  1095. package/docs/content/locales/zh-TW/multi-tenancy.mdx +5 -5
  1096. package/docs/content/locales/zh-TW/notifications.mdx +18 -10
  1097. package/docs/content/locales/zh-TW/processors.mdx +11 -5
  1098. package/docs/content/locales/zh-TW/server.mdx +16 -10
  1099. package/docs/content/locales/zh-TW/sharing.mdx +10 -10
  1100. package/docs/content/locales/zh-TW/skills-guide.mdx +34 -17
  1101. package/docs/content/locales/zh-TW/template-assets.mdx +16 -13
  1102. package/docs/content/locales/zh-TW/template-brain.mdx +3 -1
  1103. package/docs/content/locales/zh-TW/template-clips.mdx +3 -4
  1104. package/docs/content/locales/zh-TW/template-design.mdx +3 -1
  1105. package/docs/content/locales/zh-TW/template-dispatch.mdx +5 -1
  1106. package/docs/content/locales/zh-TW/template-mail.mdx +8 -0
  1107. package/docs/content/locales/zh-TW/tracking.mdx +9 -6
  1108. package/docs/content/locales/zh-TW/using-your-agent.mdx +0 -7
  1109. package/docs/content/locales/zh-TW/voice-input.mdx +6 -0
  1110. package/docs/content/locales/zh-TW/workspace-connections.mdx +9 -2
  1111. package/docs/content/locales/zh-TW/workspace.mdx +19 -18
  1112. package/docs/content/mcp-apps.mdx +14 -32
  1113. package/docs/content/mcp-clients.mdx +48 -54
  1114. package/docs/content/mcp-protocol.mdx +25 -10
  1115. package/docs/content/messaging.mdx +19 -11
  1116. package/docs/content/multi-app-workspace.mdx +11 -96
  1117. package/docs/content/multi-tenancy.mdx +5 -5
  1118. package/docs/content/native-chat-ui.mdx +4 -4
  1119. package/docs/content/notifications.mdx +19 -12
  1120. package/docs/content/observability.mdx +2 -4
  1121. package/docs/content/observational-memory.mdx +7 -3
  1122. package/docs/content/onboarding.mdx +9 -2
  1123. package/docs/content/plan-plugin.mdx +10 -2
  1124. package/docs/content/pr-visual-recap.mdx +1 -1
  1125. package/docs/content/processors.mdx +11 -5
  1126. package/docs/content/pure-agent-apps.mdx +5 -1
  1127. package/docs/content/real-time-collaboration.mdx +30 -67
  1128. package/docs/content/recurring-jobs.mdx +8 -6
  1129. package/docs/content/routing.mdx +3 -4
  1130. package/docs/content/sandbox-adapters.mdx +30 -53
  1131. package/docs/content/security.mdx +8 -0
  1132. package/docs/content/server.mdx +17 -10
  1133. package/docs/content/sharing.mdx +10 -10
  1134. package/docs/content/skills-guide.mdx +35 -16
  1135. package/docs/content/template-analytics.mdx +11 -8
  1136. package/docs/content/template-assets.mdx +16 -13
  1137. package/docs/content/template-brain.mdx +3 -1
  1138. package/docs/content/template-calendar.mdx +12 -4
  1139. package/docs/content/template-chat.mdx +4 -4
  1140. package/docs/content/template-clips.mdx +3 -3
  1141. package/docs/content/template-content.mdx +23 -18
  1142. package/docs/content/template-design.mdx +3 -1
  1143. package/docs/content/template-dispatch.mdx +5 -1
  1144. package/docs/content/template-mail.mdx +14 -2
  1145. package/docs/content/template-plan.mdx +22 -15
  1146. package/docs/content/template-slides.mdx +11 -3
  1147. package/docs/content/toolkit-agent-ux.mdx +46 -3
  1148. package/docs/content/toolkit-collaboration.mdx +58 -4
  1149. package/docs/content/toolkit-command-navigation.mdx +8 -2
  1150. package/docs/content/toolkit-comments-review.mdx +10 -2
  1151. package/docs/content/toolkit-history.mdx +8 -3
  1152. package/docs/content/toolkit-observability.mdx +48 -2
  1153. package/docs/content/toolkit-org-team.mdx +8 -2
  1154. package/docs/content/toolkit-resources.mdx +45 -2
  1155. package/docs/content/toolkit-settings.mdx +8 -2
  1156. package/docs/content/toolkit-setup-connections.mdx +7 -2
  1157. package/docs/content/toolkit-sharing.mdx +46 -3
  1158. package/docs/content/toolkit-ui.mdx +82 -11
  1159. package/docs/content/tracking.mdx +10 -8
  1160. package/docs/content/using-your-agent.mdx +0 -12
  1161. package/docs/content/voice-input.mdx +7 -1
  1162. package/docs/content/what-is-agent-native.mdx +7 -8
  1163. package/docs/content/workspace-connections.mdx +16 -23
  1164. package/docs/content/workspace-management.mdx +16 -4
  1165. package/docs/content/workspace.mdx +19 -18
  1166. package/package.json +1 -1
  1167. package/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +39 -5
  1168. package/corpus/core/docs/content/locales/ar-SA/migration-workbench.mdx +0 -76
  1169. package/corpus/core/docs/content/locales/de-DE/migration-workbench.mdx +0 -76
  1170. package/corpus/core/docs/content/locales/es-ES/migration-workbench.mdx +0 -76
  1171. package/corpus/core/docs/content/locales/fr-FR/migration-workbench.mdx +0 -76
  1172. package/corpus/core/docs/content/locales/hi-IN/migration-workbench.mdx +0 -74
  1173. package/corpus/core/docs/content/locales/ja-JP/migration-workbench.mdx +0 -76
  1174. package/corpus/core/docs/content/locales/ko-KR/migration-workbench.mdx +0 -74
  1175. package/corpus/core/docs/content/locales/pt-BR/migration-workbench.mdx +0 -76
  1176. package/corpus/core/docs/content/locales/zh-CN/migration-workbench.mdx +0 -74
  1177. package/corpus/core/docs/content/locales/zh-TW/migration-workbench.mdx +0 -74
  1178. package/corpus/core/docs/content/migration-workbench.mdx +0 -74
  1179. package/corpus/core/docs/content/toolkit-app-adapters.mdx +0 -55
  1180. package/corpus/core/docs/content/toolkit-collaboration-ui.mdx +0 -60
  1181. package/corpus/core/docs/content/toolkit-sharing-ui.mdx +0 -45
  1182. package/corpus/core/docs/content/toolkit-shell-hooks.mdx +0 -36
  1183. package/docs/content/locales/ar-SA/migration-workbench.mdx +0 -76
  1184. package/docs/content/locales/de-DE/migration-workbench.mdx +0 -76
  1185. package/docs/content/locales/es-ES/migration-workbench.mdx +0 -76
  1186. package/docs/content/locales/fr-FR/migration-workbench.mdx +0 -76
  1187. package/docs/content/locales/hi-IN/migration-workbench.mdx +0 -74
  1188. package/docs/content/locales/ja-JP/migration-workbench.mdx +0 -76
  1189. package/docs/content/locales/ko-KR/migration-workbench.mdx +0 -74
  1190. package/docs/content/locales/pt-BR/migration-workbench.mdx +0 -76
  1191. package/docs/content/locales/zh-CN/migration-workbench.mdx +0 -74
  1192. package/docs/content/locales/zh-TW/migration-workbench.mdx +0 -74
  1193. package/docs/content/migration-workbench.mdx +0 -74
  1194. package/docs/content/toolkit-app-adapters.mdx +0 -55
  1195. package/docs/content/toolkit-collaboration-ui.mdx +0 -60
  1196. package/docs/content/toolkit-sharing-ui.mdx +0 -45
  1197. package/docs/content/toolkit-shell-hooks.mdx +0 -36
@@ -1 +1 @@
1
- {"version":3,"file":"default-messages.js","sourceRoot":"","sources":["../../src/localization/default-messages.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,+EAA+E;AAC/E,8EAA8E;AAC9E,4EAA4E;AAC5E,4BAA4B;AAC5B,MAAM,QAAQ,GAAG;IACf,IAAI,EAAE;QACJ,aAAa,EAAE,UAAU;QACzB,mBAAmB,EAAE,gCAAgC;QACrD,KAAK,EAAE,qBAAqB;QAC5B,KAAK,EAAE,2BAA2B;QAClC,eAAe,EAAE,oBAAoB;QACrC,aAAa,EAAE,0BAA0B;QACzC,SAAS,EAAE,eAAe;QAC1B,eAAe,EAAE,qBAAqB;QACtC,UAAU,EAAE,OAAO;QACnB,gBAAgB,EAAE,qBAAqB;KACxC;IACD,QAAQ,EAAE;QACR,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,kDAAkD;QAC/D,aAAa,EAAE,UAAU;QACzB,mBAAmB,EACjB,2EAA2E;QAC7E,aAAa,EAAE,oBAAoB;QACnC,UAAU,EAAE,gBAAgB;QAC5B,gBAAgB,EACd,oGAAoG;QACtG,iBAAiB,EAAE,qBAAqB;QACxC,cAAc,EAAE,WAAW;QAC3B,oBAAoB,EAAE,oDAAoD;QAC1E,gBAAgB,EAAE,oBAAoB;QACtC,oBAAoB,EAAE,wBAAwB;QAC9C,QAAQ,EAAE,cAAc;KACzB;IACD,QAAQ,EAAE;QACR,GAAG,EAAE;YACH,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,UAAU;YACpB,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,OAAO;YACd,YAAY,EAAE,cAAc;YAC5B,MAAM,EAAE,QAAQ;YAChB,SAAS,EAAE,WAAW;YACtB,SAAS,EAAE,WAAW;YACtB,YAAY,EAAE,cAAc;YAC5B,UAAU,EAAE,YAAY;YACxB,SAAS,EAAE,WAAW;YACtB,WAAW,EAAE,aAAa;YAC1B,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,QAAQ;YAChB,WAAW,EAAE,cAAc;YAC3B,QAAQ,EAAE,UAAU;YACpB,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,YAAY;YACxB,UAAU,EAAE,YAAY;YACxB,qBAAqB,EAAE,4BAA4B;SACpD;QACD,OAAO,EAAE;YACP,qBAAqB,EAAE,yBAAyB;YAChD,qBAAqB,EAAE,2BAA2B;YAClD,uBAAuB,EAAE,4BAA4B;YACrD,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,UAAU;YACnB,eAAe,EAAE,mBAAmB;YACpC,UAAU,EAAE,aAAa;YACzB,YAAY,EAAE,kBAAkB;YAChC,WAAW,EAAE,4BAA4B;YACzC,SAAS,EAAE,iBAAiB;YAC5B,cAAc,EACZ,sEAAsE;YACxE,kBAAkB,EAAE,6BAA6B;YACjD,oBAAoB,EAAE,0CAA0C;YAChE,kBAAkB,EAAE,iCAAiC;SACtD;QACD,KAAK,EAAE;YACL,eAAe,EACb,+DAA+D;YACjE,4BAA4B,EAC1B,wIAAwI;YAC1I,eAAe,EAAE,uBAAuB;YACxC,aAAa,EAAE,gBAAgB;YAC/B,WAAW,EAAE,kBAAkB;YAC/B,WAAW,EAAE,kBAAkB;YAC/B,SAAS,EAAE,YAAY;YACvB,SAAS,EAAE,WAAW;YACtB,iBAAiB,EAAE,8BAA8B;YACjD,kBAAkB,EAAE,iCAAiC;YACrD,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,aAAa;YACzB,cAAc,EAAE,uBAAuB;YACvC,oBAAoB,EAAE,eAAe;YACrC,uBAAuB,EACrB,kEAAkE;YACpE,YAAY,EAAE,gBAAgB;YAC9B,uBAAuB,EACrB,kDAAkD;YACpD,UAAU,EAAE,aAAa;YACzB,MAAM,EAAE,SAAS;YACjB,iBAAiB,EACf,4EAA4E;YAC9E,uBAAuB,EACrB,oEAAoE;YACtE,iBAAiB,EAAE,oBAAoB;YACvC,cAAc,EAAE,iBAAiB;YACjC,gBAAgB,EAAE,oBAAoB;YACtC,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,QAAQ;YAChB,WAAW,EAAE,cAAc;YAC3B,mBAAmB,EAAE,wBAAwB;YAC7C,gBAAgB,EAAE,mBAAmB;YACrC,kBAAkB,EAAE,qBAAqB;YACzC,sBAAsB,EAAE,qBAAqB;YAC7C,4BAA4B,EAC1B,2HAA2H;YAC7H,cAAc,EACZ,wFAAwF;YAC1F,kBAAkB,EAAE,sBAAsB;YAC1C,uBAAuB,EAAE,6BAA6B;YACtD,gBAAgB,EAAE,mCAAmC;YACrD,eAAe,EAAE,kBAAkB;YACnC,eAAe,EAAE,uBAAuB;YACxC,0BAA0B,EACxB,oEAAoE;YACtE,WAAW,EAAE,eAAe;YAC5B,QAAQ,EAAE,UAAU;YACpB,iBAAiB,EAAE,oDAAoD;YACvE,iBAAiB,EACf,+DAA+D;YACjE,MAAM,EAAE,oBAAoB;YAC5B,iBAAiB,EAAE,qBAAqB;YACxC,UAAU,EAAE,kBAAkB;YAC9B,aAAa,EAAE,gBAAgB;YAC/B,OAAO,EAAE,UAAU;YACnB,yBAAyB,EACvB,uDAAuD;YACzD,iBAAiB,EACf,8JAA8J;YAChK,gBAAgB,EAAE,wBAAwB;YAC1C,eAAe,EAAE,8CAA8C;YAC/D,YAAY,EAAE,gBAAgB;YAC9B,gBAAgB,EAAE,wBAAwB;YAC1C,iBAAiB,EAAE,qBAAqB;YACxC,4BAA4B,EAC1B,wFAAwF;YAC1F,OAAO,EAAE,UAAU;YACnB,YAAY,EAAE,eAAe;YAC7B,OAAO,EAAE,SAAS;YAClB,YAAY,EAAE,mBAAmB;YACjC,gBAAgB,EAAE,sCAAsC;YACxD,OAAO,EAAE,UAAU;YACnB,kBAAkB,EAAE,qBAAqB;YACzC,iBAAiB,EAAE,uBAAuB;YAC1C,yBAAyB,EACvB,qFAAqF;YACvF,qBAAqB,EACnB,uEAAuE;YACzE,QAAQ,EAAE,WAAW;YACrB,WAAW,EAAE,cAAc;YAC3B,iBAAiB,EAAE,gBAAgB;YACnC,WAAW,EAAE,cAAc;YAC3B,IAAI,EAAE,MAAM;YACZ,sBAAsB,EAAE,qBAAqB;YAC7C,aAAa,EAAE,gBAAgB;YAC/B,cAAc,EAAE,mCAAmC;YACnD,eAAe,EAAE,sBAAsB;YACvC,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,WAAW;YACrB,YAAY,EAAE,wBAAwB;YACtC,YAAY,EAAE,MAAM;YACpB,gBAAgB,EACd,2DAA2D;YAC7D,eAAe,EAAE,SAAS;YAC1B,aAAa,EAAE,oBAAoB;YACnC,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,UAAU,EAAE;QACV,UAAU,EAAE,aAAa;QACzB,qBAAqB,EAAE,2BAA2B;QAClD,0BAA0B,EACxB,mFAAmF;QACrF,eAAe,EAAE,kBAAkB;QACnC,QAAQ,EAAE,WAAW;QACrB,IAAI,EAAE,MAAM;QACZ,eAAe,EAAE,mBAAmB;QACpC,GAAG,EAAE,KAAK;QACV,aAAa,EAAE,4CAA4C;QAC3D,SAAS,EAAE,WAAW;QACtB,OAAO,EAAE,UAAU;QACnB,WAAW,EAAE,cAAc;QAC3B,YAAY,EAAE,qBAAqB;QACnC,eAAe,EAAE,kBAAkB;QACnC,SAAS,EAAE,YAAY;QACvB,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,UAAU;QACpB,cAAc,EAAE,iBAAiB;QACjC,UAAU,EAAE,YAAY;QACxB,QAAQ,EAAE,WAAW;QACrB,cAAc,EAAE,kBAAkB;QAClC,YAAY,EAAE,gBAAgB;QAC9B,SAAS,EAAE,YAAY;QACvB,kBAAkB,EAAE,uBAAuB;QAC3C,6BAA6B,EAC3B,kFAAkF;QACpF,WAAW,EAAE,cAAc;KAC5B;IACD,KAAK,EAAE;QACL,iBAAiB,EAAE,mBAAmB;QACtC,aAAa,EAAE,gBAAgB;QAC/B,KAAK,EAAE,iBAAiB;QACxB,KAAK,EAAE,OAAO;QACd,YAAY,EAAE,eAAe;QAC7B,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,MAAM;QACZ,aAAa,EAAE,gBAAgB;QAC/B,SAAS,EAAE,YAAY;QACvB,gBAAgB,EAAE,qBAAqB;QACvC,YAAY,EAAE,eAAe;QAC7B,gBAAgB,EAAE,oBAAoB;QACtC,SAAS,EAAE,OAAO;QAClB,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,wBAAwB;QAClC,QAAQ,EAAE,WAAW;QACrB,SAAS,EAAE,YAAY;QACvB,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,SAAS;QAClB,kBAAkB,EAAE,kCAAkC;QACtD,YAAY,EAAE,cAAc;QAC5B,uBAAuB,EAAE,sCAAsC;QAC/D,MAAM,EAAE,QAAQ;QAChB,iBAAiB,EAAE,yCAAyC;QAC5D,MAAM,EAAE,QAAQ;QAChB,iBAAiB,EAAE,UAAU;QAC7B,MAAM,EAAE,QAAQ;QAChB,iBAAiB,EAAE,UAAU;QAC7B,KAAK,EAAE,OAAO;QACd,gBAAgB,EAAE,4BAA4B;KAC/C;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE,YAAY;QACvB,aAAa,EAAE,sBAAsB;QACrC,eAAe,EAAE,uBAAuB;QACxC,aAAa,EAAE,sBAAsB;QACrC,eAAe,EAAE,uBAAuB;QACxC,UAAU,EAAE,aAAa;QACzB,YAAY,EAAE,gBAAgB;QAC9B,aAAa,EAAE,uBAAuB;QACtC,cAAc,EAAE,yBAAyB;QACzC,oBAAoB,EAAE,oDAAoD;QAC1E,iBAAiB,EAAE,sBAAsB;QACzC,mBAAmB,EAAE,uBAAuB;QAC5C,gBAAgB,EAAE,qBAAqB;QACvC,gBAAgB,EACd,6EAA6E;QAC/E,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,gBAAgB;QACzB,OAAO,EAAE,gBAAgB;QACzB,aAAa,EAAE,SAAS;QACxB,UAAU,EAAE,MAAM;QAClB,YAAY,EAAE,QAAQ;QACtB,aAAa,EAAE,SAAS;QACxB,cAAc,EAAE,kBAAkB;QAClC,eAAe,EAAE,mBAAmB;QACpC,cAAc,EAAE,wBAAwB;QACxC,eAAe,EAAE,yBAAyB;QAC1C,YAAY,EAAE,wBAAwB;QACtC,aAAa,EAAE,yBAAyB;QACxC,WAAW,EAAE,kBAAkB;QAC/B,YAAY,EAAE,mBAAmB;KAClC;IACD,YAAY,EAAE;QACZ,cAAc,EACZ,kHAAkH;QACpH,cAAc,EAAE,6CAA6C;QAC7D,WAAW,EAAE,yBAAyB;QACtC,KAAK,EAAE,uBAAuB;QAC9B,mBAAmB,EACjB,kGAAkG;QACpG,QAAQ,EACN,gGAAgG;QAClG,YAAY,EAAE,0BAA0B;QACxC,kBAAkB,EAChB,4EAA4E;QAC9E,iBAAiB,EAAE,sBAAsB;QACzC,uBAAuB,EACrB,wFAAwF;QAC1F,eAAe,EAAE,6BAA6B;QAC9C,eAAe,EAAE,aAAa;QAC9B,mBAAmB,EAAE,oBAAoB;QACzC,yBAAyB,EACvB,mEAAmE;QACrE,aAAa,EAAE,gBAAgB;QAC/B,aAAa,EAAE,gBAAgB;QAC/B,KAAK,EAAE,OAAO;KACf;IACD,UAAU,EAAE;QACV,YAAY,EAAE,iCAAiC;QAC/C,kBAAkB,EAChB,4FAA4F;QAC9F,cAAc,EAAE,oBAAoB;QACpC,iBAAiB,EAAE,2CAA2C;QAC9D,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,cAAc;QAC3B,UAAU,EAAE,aAAa;QACzB,YAAY,EAAE,eAAe;QAC7B,iBAAiB,EAAE,eAAe;QAClC,gBAAgB,EAAE,sCAAsC;QACxD,eAAe,EAAE,cAAc;QAC/B,sBAAsB,EAAE,8BAA8B;QACtD,kBAAkB,EAAE,kBAAkB;QACtC,UAAU,EAAE,6BAA6B;QACzC,gBAAgB,EAAE,mDAAmD;QACrE,kBAAkB,EAAE,sBAAsB;QAC1C,SAAS,EAAE,YAAY;QACvB,UAAU,EAAE,sBAAsB;QAClC,cAAc,EAAE,qBAAqB;QACrC,YAAY,EAAE,oBAAoB;QAClC,oBAAoB,EAClB,kFAAkF;QACpF,cAAc,EAAE,kBAAkB;QAClC,cAAc,EAAE,kBAAkB;QAClC,qBAAqB,EACnB,8EAA8E;QAChF,2BAA2B,EAAE,0CAA0C;QACvE,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,aAAa;QACvB,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,aAAa;QACvB,YAAY,EAAE,gBAAgB;QAC9B,oBAAoB,EAAE,8BAA8B;QACpD,uBAAuB,EAAE,qBAAqB;QAC9C,wBAAwB,EAAE,wBAAwB;QAClD,yBAAyB,EAAE,uCAAuC;QAClE,4BAA4B,EAC1B,uEAAuE;QACzE,SAAS,EAAE,YAAY;QACvB,OAAO,EAAE,YAAY;QACrB,kBAAkB,EAAE,yCAAyC;QAC7D,cAAc,EAAE,oBAAoB;QACpC,oBAAoB,EAAE,wBAAwB;QAC9C,yBAAyB,EACvB,0EAA0E;QAC5E,iBAAiB,EAAE,qBAAqB;QACxC,sBAAsB,EACpB,wEAAwE;QAC1E,aAAa,EAAE,iBAAiB;QAChC,IAAI,EAAE,MAAM;QACZ,aAAa,EAAE,gBAAgB;QAC/B,MAAM,EAAE,WAAW;QACnB,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,cAAc;QAC3B,SAAS,EAAE,YAAY;QACvB,aAAa,EACX,uEAAuE;QACzE,mBAAmB,EAAE,qDAAqD;QAC1E,qBAAqB,EACnB,sDAAsD;QACxD,SAAS,EAAE,MAAM;QACjB,gBAAgB,EAAE,aAAa;QAC/B,YAAY,EAAE,SAAS;QACvB,YAAY,EAAE,mBAAmB;QACjC,YAAY,EAAE,0BAA0B;KACzC;IACD,GAAG,EAAE;QACH,WAAW,EAAE,0BAA0B;QACvC,iBAAiB,EACf,mHAAmH;QACrH,cAAc,EAAE,4BAA4B;QAC5C,iBAAiB,EAAE,6BAA6B;QAChD,QAAQ,EAAE,WAAW;QACrB,YAAY,EAAE,eAAe;QAC7B,mBAAmB,EACjB,iEAAiE;QACnE,eAAe,EAAE,mBAAmB;QACpC,gBAAgB,EAAE,mBAAmB;QACrC,YAAY,EAAE,gBAAgB;QAC9B,kBAAkB,EAAE,4BAA4B;QAChD,OAAO,EAAE,eAAe;QACxB,kBAAkB,EAAE,qBAAqB;QACzC,SAAS,EAAE,eAAe;QAC1B,MAAM,EAAE,QAAQ;QAChB,cAAc,EAAE,mCAAmC;QACnD,gBAAgB,EAAE,mBAAmB;QACrC,uBAAuB,EAAE,WAAW;QACpC,kBAAkB,EAAE,qBAAqB;QACzC,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,aAAa;QACvB,IAAI,EAAE,MAAM;QACZ,kBAAkB,EAAE,wBAAwB;QAC5C,wBAAwB,EACtB,oDAAoD;QACtD,aAAa,EACX,wGAAwG;QAC1G,cAAc,EACZ,sGAAsG;QACxG,IAAI,EAAE,MAAM;QACZ,cAAc,EAAE,qBAAqB;QACrC,GAAG,EAAE,KAAK;QACV,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,SAAS;QAClB,aAAa,EAAE,gBAAgB;QAC/B,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,iBAAiB;QAC5B,eAAe,EAAE,kBAAkB;QACnC,iBAAiB,EAAE,mBAAmB;QACtC,UAAU,EAAE,kBAAkB;QAC9B,UAAU,EAAE,aAAa;QACzB,YAAY,EAAE,eAAe;QAC7B,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,QAAQ;QAChB,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,YAAY;KACtB;IACD,YAAY,EAAE;QACZ,UAAU,EAAE,aAAa;QACzB,cAAc,EAAE,kBAAkB;QAClC,aAAa,EACX,sEAAsE;QACxE,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,SAAS;QAClB,QAAQ,EAAE,KAAK;QACf,YAAY,EAAE,mCAAmC;QACjD,IAAI,EAAE,MAAM;QACZ,mBAAmB,EAAE,uBAAuB;QAC5C,sBAAsB,EACpB,kEAAkE;QACpE,OAAO,EAAE,UAAU;QACnB,KAAK,EAAE,OAAO;QACd,kBAAkB,EAAE,sBAAsB;QAC1C,uBAAuB,EAAE,4BAA4B;QACrD,eAAe,EAAE,kBAAkB;QACnC,OAAO,EAAE,wDAAwD;QACjE,IAAI,EAAE,MAAM;QACZ,aAAa,EAAE,eAAe;QAC9B,eAAe,EACb,gFAAgF;QAClF,kBAAkB,EAAE,wBAAwB;QAC5C,gBAAgB,EAAE,mBAAmB;QACrC,2BAA2B,EAAE,yCAAyC;QACtE,cAAc,EAAE,iBAAiB;QACjC,kBAAkB,EAChB,8FAA8F;QAChG,eAAe,EACb,iJAAiJ;KACpJ;IACD,eAAe,EAAE;QACf,SAAS,EAAE,cAAc;QACzB,eAAe,EAAE,gCAAgC;QACjD,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EAAE,0DAA0D;QACvE,iBAAiB,EAAE,qBAAqB;QACxC,UAAU,EAAE,cAAc;QAC1B,SAAS,EAAE,oCAAoC;QAC/C,SAAS,EAAE,WAAW;QACtB,SAAS,EAAE,WAAW;QACtB,OAAO,EAAE,SAAS;QAClB,kBAAkB,EAAE,sBAAsB;QAC1C,WAAW,EAAE,uBAAuB;QACpC,cAAc,EAAE,oBAAoB;QACpC,uBAAuB,EACrB,mEAAmE;QACrE,qBAAqB,EACnB,wFAAwF;QAC1F,iBAAiB,EACf,mEAAmE;QACrE,WAAW,EACT,uJAAuJ;QACzJ,QAAQ,EAAE,UAAU;QACpB,YAAY,EAAE,cAAc;QAC5B,QAAQ,EAAE,2CAA2C;QACrD,YAAY,EAAE,kDAAkD;QAChE,UAAU,EAAE,aAAa;QACzB,GAAG,EAAE,KAAK;QACV,gBAAgB,EAAE,aAAa;QAC/B,OAAO,EAAE,SAAS;QAClB,qBAAqB,EAAE,aAAa;QACpC,cAAc,EAAE,6BAA6B;QAC7C,sBAAsB,EAAE,wBAAwB;QAChD,kBAAkB,EAAE,+BAA+B;QACnD,aAAa,EAAE,iBAAiB;QAChC,IAAI,EAAE,MAAM;QACZ,kBAAkB,EAAE,0BAA0B;QAC9C,oBAAoB,EAAE,2BAA2B;QACjD,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE,oBAAoB;QAC/B,OAAO,EAAE;YACP,QAAQ,EAAE;gBACR,WAAW,EAAE,4CAA4C;gBACzD,OAAO,EACL,gEAAgE;aACnE;YACD,MAAM,EAAE;gBACN,WAAW,EAAE,6CAA6C;gBAC1D,OAAO,EAAE,yDAAyD;aACnE;YACD,MAAM,EAAE;gBACN,WAAW,EAAE,kCAAkC;gBAC/C,OAAO,EAAE,8DAA8D;aACxE;YACD,OAAO,EAAE;gBACP,WAAW,EAAE,kCAAkC;gBAC/C,OAAO,EAAE,2DAA2D;aACrE;YACD,MAAM,EAAE;gBACN,WAAW,EAAE,+BAA+B;gBAC5C,OAAO,EAAE,2DAA2D;aACrE;YACD,QAAQ,EAAE;gBACR,WAAW,EAAE,0CAA0C;gBACvD,OAAO,EAAE,mDAAmD;aAC7D;YACD,IAAI,EAAE;gBACJ,WAAW,EAAE,yCAAyC;gBACtD,OAAO,EAAE,wDAAwD;aAClE;YACD,MAAM,EAAE;gBACN,WAAW,EAAE,gDAAgD;gBAC7D,OAAO,EAAE,yDAAyD;aACnE;SACF;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,OAAO;SACf;KACF;IACD,aAAa,EAAE;QACb,MAAM,EAAE,mBAAmB;QAC3B,eAAe,EAAE,+BAA+B;QAChD,OAAO,EAAE,8BAA8B;QACvC,aAAa,EAAE,4BAA4B;QAC3C,SAAS,EAAE,YAAY;QACvB,SAAS,EAAE,YAAY;QACvB,UAAU,EAAE,aAAa;QACzB,WAAW,EAAE,cAAc;QAC3B,QAAQ,EAAE,WAAW;QACrB,YAAY,EAAE,gBAAgB;QAC9B,GAAG,EAAE,KAAK;QACV,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,UAAU;QACpB,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,oBAAoB;QACjC,UAAU,EAAE,cAAc;QAC1B,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,QAAQ;QAChB,UAAU,EAAE,aAAa;QACzB,QAAQ,EAAE,WAAW;QACrB,gBAAgB,EAAE,oBAAoB;QACtC,QAAQ,EAAE,UAAU;QACpB,aAAa,EAAE,eAAe;QAC9B,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,aAAa;QAC1B,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,SAAS;QAClB,iBAAiB,EAAE,qBAAqB;QACxC,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,SAAS;QAClB,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,OAAO;QACd,aAAa,EAAE,gBAAgB;QAC/B,UAAU,EAAE,aAAa;QACzB,WAAW,EAAE,aAAa;QAC1B,YAAY,EAAE,gBAAgB;QAC9B,UAAU,EAAE,YAAY;KACzB;IACD,KAAK,EAAE;QACL,YAAY,EAAE,sBAAsB;QACpC,cAAc,EAAE,+BAA+B;QAC/C,aAAa,EAAE,gBAAgB;QAC/B,eAAe,EACb,6DAA6D;QAC/D,WAAW,EAAE,kBAAkB;QAC/B,MAAM,EAAE,SAAS;KAClB;CACF,CAAC;AAEF,eAAe,QAAQ,CAAC","sourcesContent":["// Canonical English catalog used by core UI for translation fallbacks.\n// Lives under src/ so tsc emits it to dist/*.js and Node's strict ESM resolver\n// can load it during SSR. Do not import core runtime code from src/templates:\n// templates ship as verbatim copy-only scaffolding (.ts), so their compiled\n// .js never exists in dist.\nconst messages = {\n home: {\n settingsTitle: \"Settings\",\n settingsDescription: \"Language and agent preferences\",\n title: \"Your app is running\",\n intro: \"Start building by editing\",\n actionCardTitle: \"Action-backed data\",\n loadingAction: \"Loading action result...\",\n docsTitle: \"Documentation\",\n docsDescription: \"Learn the framework\",\n themeTitle: \"Theme\",\n themeDescription: \"Toggle dark / light\",\n },\n settings: {\n title: \"Settings\",\n description: \"Language and workspace preferences for this app.\",\n languageTitle: \"Language\",\n languageDescription:\n \"Choose the interface language. This preference is saved for your account.\",\n languageLabel: \"Interface language\",\n agentTitle: \"Agent settings\",\n agentDescription:\n \"Open the agent sidebar settings for model, API keys, automations, voice, and other agent controls.\",\n openAgentSettings: \"Open agent settings\",\n workspaceTitle: \"Workspace\",\n workspaceDescription: \"Manage team access and shared workspace resources.\",\n openTeamSettings: \"Open team settings\",\n openResourceSettings: \"Open resource settings\",\n backHome: \"Back to home\",\n },\n dispatch: {\n nav: {\n chat: \"Chat\",\n overview: \"Overview\",\n apps: \"Apps\",\n metrics: \"Metrics\",\n vault: \"Vault\",\n integrations: \"Integrations\",\n agents: \"Agents\",\n resources: \"Resources\",\n messaging: \"Messaging\",\n destinations: \"Destinations\",\n identities: \"Identities\",\n approvals: \"Approvals\",\n automations: \"Automations\",\n delivery: \"Delivery\",\n audit: \"Audit\",\n dreams: \"Dreams\",\n threadDebug: \"Thread Debug\",\n settings: \"Settings\",\n team: \"Team\",\n operations: \"Operations\",\n navigation: \"Navigation\",\n navigationDescription: \"Workspace navigation links\",\n },\n sidebar: {\n workspaceControlPlane: \"Workspace control plane\",\n workspaceSubtitle_one: \"Workspace · {{count}} app\",\n workspaceSubtitle_other: \"Workspace · {{count}} apps\",\n chats: \"Chats\",\n newChat: \"New chat\",\n newDispatchChat: \"New Dispatch chat\",\n renameChat: \"Rename chat\",\n renameThread: \"Rename {{title}}\",\n chatOptions: \"Chat options for {{title}}\",\n aboutPage: \"About {{title}}\",\n emptyAgentText:\n \"Create apps, manage vault keys, and route work across the workspace.\",\n suggestionBuildApp: \"Build a workspace app for X\",\n suggestionRouteSlack: \"Route Slack mentions to my analytics app\",\n suggestionGrantKey: \"Grant my OpenAI key to this app\",\n },\n pages: {\n appsDescription:\n \"Open workspace apps and start new app creation from Dispatch.\",\n appsDescriptionWithWorkspace:\n 'Apps in the \"{{workspace}}\" workspace. Each app gets its own route under this workspace and shares its database, auth, and agent chat.',\n appsInWorkspace: \"Apps in {{workspace}}\",\n workspaceApps: \"Workspace apps\",\n activeCount: \"{{count}} active\",\n hiddenCount: \"{{count}} hidden\",\n createApp: \"Create app\",\n templates: \"Templates\",\n checkingTemplates: \"Checking available templates\",\n templatesAvailable: \"{{count}} available to scaffold\",\n hide: \"Hide\",\n show: \"Show\",\n hiddenApps: \"Hidden apps\",\n hiddenAppCount: \"{{count}} hidden apps\",\n workspaceAppFallback: \"Workspace App\",\n workspaceAppDescription:\n \"Open a deployed app or check the status of an app being created.\",\n pageNotFound: \"Page not found\",\n pageNotFoundDescription:\n \"This route is not in the workspace app list yet.\",\n browseApps: \"Browse apps\",\n newApp: \"New App\",\n newAppDescription:\n \"Create a workspace app from a prompt and apply the workspace vault policy.\",\n destinationsDescription:\n \"Saved outbound Slack channels, Telegram chats, and thread targets.\",\n savedDestinations: \"Saved destinations\",\n addDestination: \"Add destination\",\n quickTestMessage: \"Quick test message\",\n send: \"Send\",\n delete: \"Delete\",\n cancel: \"Cancel\",\n messageSent: \"Message sent\",\n unableToSendMessage: \"Unable to send message\",\n destinationSaved: \"Destination saved\",\n destinationRemoved: \"Destination removed\",\n deleteDestinationTitle: \"Delete destination?\",\n deleteDestinationDescription:\n '\"{{name}}\" will be removed. Any saved workflows or jobs that target this destination will start failing on the next send.',\n noDestinations:\n \"No destinations saved yet. Add your first Slack channel or Telegram chat on the right.\",\n dailyDigestChannel: \"Daily digest channel\",\n optionalThreadOrTopicId: \"Optional thread or topic id\",\n destinationNotes: \"What should use this destination?\",\n saveDestination: \"Save destination\",\n noWorkspaceApps: \"No workspace apps yet\",\n noWorkspaceAppsDescription:\n \"Create an app when a workflow needs its own focused place to live.\",\n appNotFound: \"App not found\",\n building: \"Building\",\n appBuildingPrefix: \"This app is being created. It will be available at\",\n appBuildingSuffix:\n \"after its branch is merged and the workspace deploy finishes.\",\n branch: \"Branch: {{branch}}\",\n openBuilderBranch: \"Open Builder branch\",\n openingApp: \"Opening {{name}}\",\n redirectingTo: \"Redirecting to\",\n openApp: \"Open app\",\n notDispatchOrWorkspaceApp:\n \" a Dispatch tab or a workspace app in this workspace.\",\n agentsDescription:\n \"Dispatch can delegate to the built-in app suite over A2A by default. Add extra agents here only if you want to route work to apps outside that built-in set.\",\n mcpAccessUpdated: \"MCP app access updated\",\n selectAppForMcp: \"Select at least one app, or expose all apps.\",\n mcpUrlCopied: \"MCP URL copied\",\n mcpUrlCopyFailed: \"Could not copy MCP URL\",\n unifiedMcpGateway: \"Unified MCP gateway\",\n unifiedMcpGatewayDescription:\n \"Connect external agents to Dispatch once, then route to granted workspace apps through\",\n allApps: \"All apps\",\n selectedApps: \"Selected apps\",\n loading: \"Loading\",\n grantedCount: \"{{count}} granted\",\n exposeAllAppsMcp: \"Expose all apps through Dispatch MCP\",\n copyUrl: \"Copy URL\",\n metricsUnavailable: \"Metrics unavailable\",\n unableToLoadUsage: \"Unable to load usage.\",\n metricsDescriptionBuilder:\n \"Workspace-wide Builder.io credit spend, chat volume, user activity, and app access.\",\n metricsDescriptionLlm:\n \"Workspace-wide LLM spend, chat volume, user activity, and app access.\",\n llmCalls: \"LLM calls\",\n activeUsers: \"Active users\",\n workspaceAppsStat: \"Workspace apps\",\n chatThreads: \"Chat threads\",\n also: \"Also\",\n workspaceShortcutsAria: \"Workspace shortcuts\",\n deliveryQueue: \"Delivery queue\",\n failedLastHour: \"{{count}} failed in the last hour\",\n processingCount: \"{{count}} processing\",\n queued: \"Queued\",\n active: \"Active\",\n done1h: \"Done 1h\",\n failed1h: \"Failed 1h\",\n oldestQueued: \"Oldest queued: {{age}}\",\n queueAgeNone: \"none\",\n queueFailureHint:\n \"Check credentials, destinations, and recent queue errors.\",\n unknownPlatform: \"unknown\",\n attemptsCount: \"{{count}} attempts\",\n noErrorMessage: \"(no error message)\",\n },\n },\n agentPanel: {\n useBuilder: \"Use Builder\",\n openDesktopToEditCode: \"Open Desktop to edit code\",\n codeUnavailableDescription:\n \"Source-code changes and CLI access are available in the Agent Native Desktop app.\",\n downloadDesktop: \"Download Desktop\",\n chatMode: \"Chat mode\",\n chat: \"Chat\",\n cliTerminalMode: \"CLI terminal mode\",\n cli: \"CLI\",\n workspaceMode: \"Workspace files, agents, skills, and tasks\",\n workspace: \"Workspace\",\n newChat: \"New chat\",\n newTerminal: \"New terminal\",\n panelOptions: \"Agent panel options\",\n collapseSidebar: \"Collapse sidebar\",\n hideChats: \"Hide chats\",\n allChats: \"All chats\",\n settings: \"Settings\",\n feedback: \"Feedback\",\n exitFullscreen: \"Exit fullscreen\",\n fullscreen: \"Fullscreen\",\n closeTab: \"Close tab\",\n closeOtherTabs: \"Close other tabs\",\n closeAllTabs: \"Close all tabs\",\n clearChat: \"Clear chat\",\n cliRequiresDevMode: \"CLI requires dev mode\",\n cliRequiresDevModeDescription:\n \"Run this app locally with pnpm dev or use Builder.io to access the CLI terminal.\",\n toggleAgent: \"Toggle agent\",\n },\n share: {\n titleWithResource: 'Share \"{{title}}\"',\n titleWithType: \"Share {{type}}\",\n owner: \"Owner: {{name}}\",\n close: \"Close\",\n shareOptions: \"Share options\",\n link: \"Link\",\n invite: \"Invite\",\n embed: \"Embed\",\n done: \"Done\",\n generalAccess: \"General access\",\n shareLink: \"Share link\",\n addPeopleByEmail: \"Add people by email\",\n notifyPeople: \"Notify people\",\n peopleWithAccess: \"People with access\",\n ownerRole: \"Owner\",\n remove: \"Remove\",\n noAccess: \"No one has access yet.\",\n embedUrl: \"Embed URL\",\n embedCode: \"Embed code\",\n copy: \"Copy\",\n role: \"Role\",\n private: \"Private\",\n privateDescription: \"Only people with access can view\",\n organization: \"Organization\",\n organizationDescription: \"Anyone in your organization can view\",\n public: \"Public\",\n publicDescription: \"Anyone signed in with the link can view\",\n viewer: \"Viewer\",\n viewerDescription: \"Can view\",\n editor: \"Editor\",\n editorDescription: \"Can edit\",\n admin: \"Admin\",\n adminDescription: \"Can edit and manage access\",\n },\n runsTray: {\n runs: \"Runs\",\n agentRuns: \"Agent runs\",\n activeRun_one: \"{{count}} active run\",\n activeRun_other: \"{{count}} active runs\",\n failedRun_one: \"{{count}} failed run\",\n failedRun_other: \"{{count}} failed runs\",\n recentRuns: \"Recent runs\",\n noRecentRuns: \"No recent runs\",\n ariaAgentRuns: \"Agent runs, {{label}}\",\n summaryRunning: \"{{activeCount}} running\",\n summaryRunningRecent: \"{{activeCount}} running · {{terminalCount}} recent\",\n summaryRecent_one: \"{{count}} recent run\",\n summaryRecent_other: \"{{count}} recent runs\",\n noTrackedWorkYet: \"No tracked work yet\",\n emptyDescription:\n \"Background agent work will appear here while it runs and after it finishes.\",\n open: \"Open\",\n stopRun: \"Stop {{title}}\",\n hideRun: \"Hide {{title}}\",\n statusRunning: \"Running\",\n statusDone: \"Done\",\n statusFailed: \"Failed\",\n statusStopped: \"Stopped\",\n updatedJustNow: \"Updated just now\",\n finishedJustNow: \"Finished just now\",\n updatedMinutes: \"Updated {{count}}m ago\",\n finishedMinutes: \"Finished {{count}}m ago\",\n updatedHours: \"Updated {{count}}h ago\",\n finishedHours: \"Finished {{count}}h ago\",\n updatedDate: \"Updated {{date}}\",\n finishedDate: \"Finished {{date}}\",\n },\n codeRequired: {\n fallbackDetail:\n \"Edit locally or use Builder.io to edit this code in the cloud and continue customizing the app any way you like.\",\n defaultFeature: \"Make the requested code changes to this app\",\n branchError: \"Failed to create branch\",\n title: \"Code changes required\",\n subtitleWithFeature:\n '\"{{feature}}\" creates or modifies source code, which needs Desktop or Builder from this surface.',\n subtitle:\n \"This action creates or modifies source code, which needs Desktop or Builder from this surface.\",\n desktopTitle: \"Use Agent Native Desktop\",\n desktopDescription:\n \"Open the project in the desktop app to enable source edits and CLI access.\",\n builderAgentTitle: \"Use Builder.io Agent\",\n builderAgentDescription:\n \"Let our cloud agent make the changes for you. You'll get a link to preview and deploy.\",\n codeChangeTitle: \"This requires a code change\",\n codeChangeBadge: \"Code change\",\n connectBuilderTitle: \"Connect Builder.io\",\n connectBuilderDescription:\n \"Connect Builder to enable cloud-based code changes from this app.\",\n setupRequired: \"Setup required\",\n branchCreated: \"Branch created\",\n close: \"Close\",\n },\n extensions: {\n createPrompt: \"Create an extension: {{prompt}}\",\n createWidgetPrompt:\n 'Create a new widget that fits in slot \"{{slotId}}\". I\\'ll describe what it should do next.',\n whatShouldItDo: \"What should it do?\",\n createPlaceholder: \"A todo list, API dashboard, calculator...\",\n title: \"Extensions\",\n hiddenShown: \"Hiding shown\",\n showHidden: \"Show hidden\",\n newExtension: \"New Extension\",\n newExtensionTitle: \"New extension\",\n buildPlaceholder: \"Describe what you'd like to build...\",\n namePlaceholder: \"My Extension\",\n descriptionPlaceholder: \"What does this extension do?\",\n contentPlaceholder: \"<html>...</html>\",\n emptyTitle: \"Create your first extension\",\n emptyDescription: \"Describe a small app and the agent will build it.\",\n hiddenFromEveryone: \"Hidden from everyone\",\n localFile: \"Local file\",\n optionsFor: \"Options for {{name}}\",\n unhideEveryone: \"Unhide for everyone\",\n hideEveryone: \"Hide from everyone\",\n localFileDescription:\n \"This extension is backed by {{entryPath}}. Edit or remove it from the workspace.\",\n deleteQuestion: \"Delete {{name}}?\",\n removeQuestion: \"Remove {{name}}?\",\n hideForYouDescription:\n \"This hides it from your Extensions list without deleting it for anyone else.\",\n removeEverywhereDescription: \"This removes it everywhere it is shared.\",\n cancel: \"Cancel\",\n remove: \"Remove\",\n removing: \"Removing...\",\n delete: \"Delete\",\n deleting: \"Deleting...\",\n openFullView: \"Open full view\",\n removeFromWidgetArea: \"Remove from this widget area\",\n deleteExtensionEllipsis: \"Delete extension...\",\n removeFromMyListEllipsis: \"Remove from my list...\",\n removeFromWidgetAreaForMe: \"Remove from this widget area (for me)\",\n deleteEverywhereConfirmation:\n \"This removes the extension everywhere, for everyone it's shared with.\",\n addWidget: \"Add widget\",\n loading: \"Loading...\",\n noWidgetsAvailable: \"No widgets available for this slot yet.\",\n buildNewWidget: \"Build a new widget\",\n contactSidebarWidget: \"Contact sidebar widget\",\n contactSidebarDescription:\n \"Appears beside the current conversation with contact and thread context.\",\n eventDetailWidget: \"Event detail widget\",\n eventDetailDescription:\n \"Appears below the open calendar event with event and attendee context.\",\n addWidgetHere: \"Add widget here\",\n back: \"Back\",\n editExtension: \"Edit Extension\",\n saving: \"Saving...\",\n save: \"Save\",\n create: \"Create\",\n moreOptions: \"More options\",\n appearsIn: \"Appears in\",\n noWidgetAreas:\n \"Not installed in any widget areas. Ask the agent to add it somewhere.\",\n widgetAreaCount_one: \"This extension can render in {{count}} widget area.\",\n widgetAreaCount_other:\n \"This extension can render in {{count}} widget areas.\",\n nameLabel: \"Name\",\n descriptionLabel: \"Description\",\n contentLabel: \"Content\",\n previewTitle: \"Extension preview\",\n previewEmpty: \"Preview will appear here\",\n },\n org: {\n createTitle: \"Create your organization\",\n createDescription:\n \"This app organizes your content by team. Create an organization to continue - you can invite teammates afterward.\",\n loadErrorTitle: \"Couldn't load organization\",\n loadErrorFallback: \"Couldn't load organization.\",\n tryAgain: \"Try again\",\n sendFeedback: \"Send feedback\",\n feedbackPlaceholder:\n \"Describe what happened before this organization error appeared.\",\n openGitHubIssue: \"Open GitHub issue\",\n yourOrganization: \"Your organization\",\n joinYourTeam: \"Join your team\",\n openToDomainEmails: \"Open to @{{domain}} emails\",\n joinOrg: \"Join {{name}}\",\n pendingInvitations: \"Pending invitations\",\n invitedBy: \"from {{name}}\",\n accept: \"Accept\",\n createSeparate: \"or create a separate organization\",\n organizationName: \"Organization name\",\n organizationPlaceholder: \"Acme Inc.\",\n createOrganization: \"Create organization\",\n create: \"Create\",\n creating: \"Creating...\",\n team: \"Team\",\n createOrgCardTitle: \"Create an Organization\",\n createOrgCardDescription:\n \"Set up a team to collaborate with your colleagues.\",\n joinDomainOne:\n \"An organization matching your email domain already exists. Join it to collaborate with your teammates.\",\n joinDomainMany:\n \"Organizations matching your email domain already exist. Join one to collaborate with your teammates.\",\n join: \"Join\",\n invitedByLabel: \"Invited by {{name}}\",\n you: \"You\",\n owner: \"Owner\",\n admin: \"Admin\",\n member: \"Member\",\n members: \"Members\",\n inviteMembers: \"Invite members\",\n invited: \"Invited\",\n role: \"Role\",\n status: \"Status\",\n actions: \"Actions\",\n noMembers: \"No members yet.\",\n memberCount_one: \"{{count}} member\",\n memberCount_other: \"{{count}} members\",\n youAreRole: \"You are {{role}}\",\n changeRole: \"Change role\",\n removeMember: \"Remove member\",\n cancel: \"Cancel\",\n remove: \"Remove\",\n save: \"Save\",\n loading: \"Loading...\",\n },\n integrations: {\n webhookUrl: \"Webhook URL\",\n copyWebhookUrl: \"Copy webhook URL\",\n notConfigured:\n \"Not configured. Set the required secrets to enable this integration.\",\n enable: \"Enable\",\n disable: \"Disable\",\n toggling: \"...\",\n networkError: \"Network error reaching the server\",\n back: \"Back\",\n agentEngineRequired: \"Agent engine required\",\n agentEngineDescription:\n \"Connect Builder.io or an LLM key before {{platform}} can answer.\",\n openLlm: \"Open LLM\",\n setup: \"Setup\",\n shareDocumentsWith: \"Share documents with\",\n copyServiceAccountEmail: \"Copy service account email\",\n requiredSecrets: \"Required secrets\",\n envHelp: \"Set these in your .env file or environment to connect.\",\n copy: \"Copy\",\n documentation: \"Documentation\",\n clientAvailable:\n \"This agent's A2A endpoint is automatically available. No configuration needed.\",\n addChatIntegration: \"Add a chat integration\",\n chatIntegrations: \"Chat Integrations\",\n chatIntegrationsDescription: \"Talk to this agent from other platforms\",\n addIntegration: \"Add integration\",\n dispatchEntrypoint:\n \"For a central Slack or Telegram entrypoint that can route work across multiple apps, use the\",\n sharedMessaging:\n \"Need one shared messaging surface for your workspace? Connect Slack or Telegram to a dispatch app and let it delegate to other agents over A2A.\",\n },\n mcpIntegrations: {\n menuLabel: \"Integrations\",\n menuDescription: \"Connect MCP tools to the agent\",\n title: \"Connect integrations\",\n description: \"Choose a default MCP integration or add a custom server.\",\n searchPlaceholder: \"Search integrations\",\n addYourOwn: \"Add your own\",\n noMatches: \"No integrations match that search.\",\n connected: \"Connected\",\n configure: \"Configure\",\n connect: \"Connect\",\n backToIntegrations: \"Back to integrations\",\n customTitle: \"Add custom MCP server\",\n configureTitle: \"Configure {{name}}\",\n presetNoAuthDescription:\n \"Preset values are filled in. Test the endpoint or connect it now.\",\n presetAuthDescription:\n \"Preset values are filled in. Add any required authorization details before connecting.\",\n customDescription:\n \"Paste a Streamable HTTP or SSE MCP endpoint and optional headers.\",\n oauthNotice:\n \"This provider usually requires an OAuth setup. Follow the provider docs, or add an Authorization header if your endpoint supports token-based access.\",\n personal: \"Personal\",\n organization: \"Organization\",\n orgNoOrg: \"Join an organization to share MCP servers\",\n orgAdminOnly: \"Only owners and admins can add org-scope servers\",\n serverName: \"Server name\",\n url: \"URL\",\n fieldDescription: \"Description\",\n headers: \"Headers\",\n serverNamePlaceholder: \"Server name\",\n urlPlaceholder: \"https://mcp.example.com/mcp\",\n descriptionPlaceholder: \"Description (optional)\",\n headersPlaceholder: \"Authorization: Bearer <token>\",\n openSetupDocs: \"Open setup docs\",\n test: \"Test\",\n toolsAvailable_one: \"{{count}} tool available\",\n toolsAvailable_other: \"{{count}} tools available\",\n failed: \"Failed\",\n docsLabel: \"View {{name}} docs\",\n catalog: {\n context7: {\n description: \"Fetch current library docs in agent chats.\",\n useCase:\n \"Documentation, technical reference, API docs, framework guides\",\n },\n sentry: {\n description: \"Inspect issues, events, and debugging data.\",\n useCase: \"Error monitoring, debugging, performance, crash reports\",\n },\n notion: {\n description: \"Search pages and team knowledge.\",\n useCase: \"Documentation, knowledge management, notes, content creation\",\n },\n semgrep: {\n description: \"Scan code for security findings.\",\n useCase: \"Security scanning, vulnerability detection, code analysis\",\n },\n linear: {\n description: \"Read and write Linear issues.\",\n useCase: \"Project management, issue tracking, planning, bug reports\",\n },\n supabase: {\n description: \"Manage data, auth, and backend services.\",\n useCase: \"Database, authentication, storage, edge functions\",\n },\n neon: {\n description: \"Work with serverless Postgres projects.\",\n useCase: \"Database management, serverless Postgres, data storage\",\n },\n stripe: {\n description: \"Manage payments, subscriptions, and customers.\",\n useCase: \"Payments, subscriptions, invoicing, customer management\",\n },\n },\n auth: {\n none: \"No auth\",\n headers: \"Header\",\n oauth: \"OAuth\",\n },\n },\n observability: {\n noData: \"No data available\",\n noConversations: \"No conversations recorded yet\",\n noEvals: \"No eval results recorded yet\",\n noExperiments: \"No experiments created yet\",\n totalRuns: \"Total runs\",\n totalCost: \"Total cost\",\n avgLatency: \"Avg latency\",\n toolSuccess: \"Tool success\",\n thumbsUp: \"Thumbs up\",\n avgEvalScore: \"Avg eval score\",\n run: \"Run\",\n model: \"Model\",\n duration: \"Duration\",\n cost: \"Cost\",\n tools: \"Tools\",\n time: \"Time\",\n failedCount: \"({{count}} failed)\",\n backToList: \"Back to list\",\n spans: \"Spans\",\n type: \"Type\",\n name: \"Name\",\n tokens: \"Tokens\",\n status: \"Status\",\n totalEvals: \"Total evals\",\n avgScore: \"Avg score\",\n scoresByCriteria: \"Scores by criteria\",\n overview: \"Overview\",\n conversations: \"Conversations\",\n evals: \"Evals\",\n experiments: \"Experiments\",\n feedback: \"Feedback\",\n variants: \"Variants\",\n created: \"Created\",\n backToExperiments: \"Back to experiments\",\n metrics: \"Metrics\",\n level: \"Level\",\n results: \"Results\",\n variant: \"Variant\",\n metric: \"Metric\",\n value: \"Value\",\n totalFeedback: \"Total feedback\",\n thumbsDown: \"Thumbs down\",\n frustration: \"Frustration\",\n thumbsUpRate: \"Thumbs up rate\",\n categories: \"Categories\",\n },\n error: {\n genericTitle: \"Something went wrong\",\n genericDetails: \"An unexpected error occurred.\",\n notFoundTitle: \"Page not found\",\n notFoundDetails:\n \"This page doesn't exist. It may have been moved or deleted.\",\n statusTitle: \"{{status}} Error\",\n goHome: \"Go home\",\n },\n};\n\nexport default messages;\n"]}
1
+ {"version":3,"file":"default-messages.js","sourceRoot":"","sources":["../../src/localization/default-messages.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,+EAA+E;AAC/E,8EAA8E;AAC9E,4EAA4E;AAC5E,4BAA4B;AAC5B,MAAM,QAAQ,GAAG;IACf,IAAI,EAAE;QACJ,aAAa,EAAE,UAAU;QACzB,mBAAmB,EAAE,gCAAgC;QACrD,KAAK,EAAE,qBAAqB;QAC5B,KAAK,EAAE,2BAA2B;QAClC,eAAe,EAAE,oBAAoB;QACrC,aAAa,EAAE,0BAA0B;QACzC,SAAS,EAAE,eAAe;QAC1B,eAAe,EAAE,qBAAqB;QACtC,UAAU,EAAE,OAAO;QACnB,gBAAgB,EAAE,qBAAqB;KACxC;IACD,QAAQ,EAAE;QACR,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,kDAAkD;QAC/D,aAAa,EAAE,UAAU;QACzB,mBAAmB,EACjB,2EAA2E;QAC7E,aAAa,EAAE,oBAAoB;QACnC,UAAU,EAAE,gBAAgB;QAC5B,gBAAgB,EACd,oGAAoG;QACtG,iBAAiB,EAAE,qBAAqB;QACxC,cAAc,EAAE,WAAW;QAC3B,oBAAoB,EAAE,oDAAoD;QAC1E,gBAAgB,EAAE,oBAAoB;QACtC,oBAAoB,EAAE,wBAAwB;QAC9C,QAAQ,EAAE,cAAc;KACzB;IACD,QAAQ,EAAE;QACR,GAAG,EAAE;YACH,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,UAAU;YACpB,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE,OAAO;YACd,YAAY,EAAE,cAAc;YAC5B,MAAM,EAAE,QAAQ;YAChB,SAAS,EAAE,WAAW;YACtB,SAAS,EAAE,WAAW;YACtB,YAAY,EAAE,cAAc;YAC5B,UAAU,EAAE,YAAY;YACxB,SAAS,EAAE,WAAW;YACtB,WAAW,EAAE,aAAa;YAC1B,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,QAAQ;YAChB,WAAW,EAAE,cAAc;YAC3B,QAAQ,EAAE,UAAU;YACpB,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,YAAY;YACxB,UAAU,EAAE,YAAY;YACxB,qBAAqB,EAAE,4BAA4B;SACpD;QACD,OAAO,EAAE;YACP,qBAAqB,EAAE,yBAAyB;YAChD,qBAAqB,EAAE,2BAA2B;YAClD,uBAAuB,EAAE,4BAA4B;YACrD,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,UAAU;YACnB,eAAe,EAAE,mBAAmB;YACpC,UAAU,EAAE,aAAa;YACzB,YAAY,EAAE,kBAAkB;YAChC,WAAW,EAAE,4BAA4B;YACzC,SAAS,EAAE,iBAAiB;YAC5B,cAAc,EACZ,sEAAsE;YACxE,kBAAkB,EAAE,6BAA6B;YACjD,oBAAoB,EAAE,0CAA0C;YAChE,kBAAkB,EAAE,iCAAiC;SACtD;QACD,KAAK,EAAE;YACL,eAAe,EACb,+DAA+D;YACjE,4BAA4B,EAC1B,wIAAwI;YAC1I,eAAe,EAAE,uBAAuB;YACxC,aAAa,EAAE,gBAAgB;YAC/B,WAAW,EAAE,kBAAkB;YAC/B,WAAW,EAAE,kBAAkB;YAC/B,SAAS,EAAE,YAAY;YACvB,SAAS,EAAE,WAAW;YACtB,iBAAiB,EAAE,8BAA8B;YACjD,kBAAkB,EAAE,iCAAiC;YACrD,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,aAAa;YACzB,cAAc,EAAE,uBAAuB;YACvC,oBAAoB,EAAE,eAAe;YACrC,uBAAuB,EACrB,kEAAkE;YACpE,YAAY,EAAE,gBAAgB;YAC9B,uBAAuB,EACrB,kDAAkD;YACpD,UAAU,EAAE,aAAa;YACzB,MAAM,EAAE,SAAS;YACjB,iBAAiB,EACf,4EAA4E;YAC9E,uBAAuB,EACrB,oEAAoE;YACtE,iBAAiB,EAAE,oBAAoB;YACvC,cAAc,EAAE,iBAAiB;YACjC,gBAAgB,EAAE,oBAAoB;YACtC,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,QAAQ;YAChB,WAAW,EAAE,cAAc;YAC3B,mBAAmB,EAAE,wBAAwB;YAC7C,gBAAgB,EAAE,mBAAmB;YACrC,kBAAkB,EAAE,qBAAqB;YACzC,sBAAsB,EAAE,qBAAqB;YAC7C,4BAA4B,EAC1B,2HAA2H;YAC7H,cAAc,EACZ,wFAAwF;YAC1F,kBAAkB,EAAE,sBAAsB;YAC1C,uBAAuB,EAAE,6BAA6B;YACtD,gBAAgB,EAAE,mCAAmC;YACrD,eAAe,EAAE,kBAAkB;YACnC,eAAe,EAAE,uBAAuB;YACxC,0BAA0B,EACxB,oEAAoE;YACtE,WAAW,EAAE,eAAe;YAC5B,QAAQ,EAAE,UAAU;YACpB,iBAAiB,EAAE,oDAAoD;YACvE,iBAAiB,EACf,+DAA+D;YACjE,MAAM,EAAE,oBAAoB;YAC5B,iBAAiB,EAAE,qBAAqB;YACxC,UAAU,EAAE,kBAAkB;YAC9B,aAAa,EAAE,gBAAgB;YAC/B,OAAO,EAAE,UAAU;YACnB,yBAAyB,EACvB,uDAAuD;YACzD,iBAAiB,EACf,8JAA8J;YAChK,gBAAgB,EAAE,wBAAwB;YAC1C,eAAe,EAAE,8CAA8C;YAC/D,YAAY,EAAE,gBAAgB;YAC9B,gBAAgB,EAAE,wBAAwB;YAC1C,iBAAiB,EAAE,qBAAqB;YACxC,4BAA4B,EAC1B,wFAAwF;YAC1F,OAAO,EAAE,UAAU;YACnB,YAAY,EAAE,eAAe;YAC7B,OAAO,EAAE,SAAS;YAClB,YAAY,EAAE,mBAAmB;YACjC,gBAAgB,EAAE,sCAAsC;YACxD,OAAO,EAAE,UAAU;YACnB,kBAAkB,EAAE,qBAAqB;YACzC,iBAAiB,EAAE,uBAAuB;YAC1C,yBAAyB,EACvB,qFAAqF;YACvF,qBAAqB,EACnB,uEAAuE;YACzE,QAAQ,EAAE,WAAW;YACrB,WAAW,EAAE,cAAc;YAC3B,iBAAiB,EAAE,gBAAgB;YACnC,WAAW,EAAE,cAAc;YAC3B,IAAI,EAAE,MAAM;YACZ,sBAAsB,EAAE,qBAAqB;YAC7C,aAAa,EAAE,gBAAgB;YAC/B,cAAc,EAAE,mCAAmC;YACnD,eAAe,EAAE,sBAAsB;YACvC,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,WAAW;YACrB,YAAY,EAAE,wBAAwB;YACtC,YAAY,EAAE,MAAM;YACpB,gBAAgB,EACd,2DAA2D;YAC7D,eAAe,EAAE,SAAS;YAC1B,aAAa,EAAE,oBAAoB;YACnC,cAAc,EAAE,oBAAoB;SACrC;KACF;IACD,UAAU,EAAE;QACV,UAAU,EAAE,aAAa;QACzB,qBAAqB,EAAE,2BAA2B;QAClD,0BAA0B,EACxB,mFAAmF;QACrF,eAAe,EAAE,kBAAkB;QACnC,QAAQ,EAAE,WAAW;QACrB,IAAI,EAAE,MAAM;QACZ,eAAe,EAAE,mBAAmB;QACpC,GAAG,EAAE,KAAK;QACV,aAAa,EAAE,4CAA4C;QAC3D,SAAS,EAAE,WAAW;QACtB,OAAO,EAAE,UAAU;QACnB,WAAW,EAAE,cAAc;QAC3B,YAAY,EAAE,qBAAqB;QACnC,eAAe,EAAE,kBAAkB;QACnC,SAAS,EAAE,YAAY;QACvB,QAAQ,EAAE,WAAW;QACrB,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,UAAU;QACpB,cAAc,EAAE,iBAAiB;QACjC,UAAU,EAAE,YAAY;QACxB,QAAQ,EAAE,WAAW;QACrB,cAAc,EAAE,kBAAkB;QAClC,YAAY,EAAE,gBAAgB;QAC9B,SAAS,EAAE,YAAY;QACvB,kBAAkB,EAAE,uBAAuB;QAC3C,6BAA6B,EAC3B,kFAAkF;QACpF,WAAW,EAAE,cAAc;QAC3B,SAAS,EAAE;YACT,gBAAgB,EAAE,gBAAgB;YAClC,WAAW,EAAE,kBAAkB;YAC/B,iBAAiB,EACf,yEAAyE;YAC3E,KAAK,EAAE,kBAAkB;YACzB,aAAa,EAAE,gBAAgB;YAC/B,QAAQ,EAAE,WAAW;YACrB,QAAQ,EAAE,WAAW;YACrB,GAAG,EAAE,gBAAgB;YACrB,MAAM,EAAE;gBACN,UAAU,EAAE,YAAY;gBACxB,SAAS,EAAE,WAAW;gBACtB,QAAQ,EAAE,UAAU;gBACpB,OAAO,EAAE,SAAS;gBAClB,KAAK,EAAE,4BAA4B;gBACnC,MAAM,EAAE,mBAAmB;aAC5B;YACD,MAAM,EAAE;gBACN,WAAW,EACT,6DAA6D;gBAC/D,cAAc,EAAE,+CAA+C;gBAC/D,aAAa,EAAE,kDAAkD;gBACjE,mBAAmB,EAAE,kDAAkD;gBACvE,gBAAgB,EAAE,uCAAuC;gBACzD,WAAW,EAAE,4CAA4C;aAC1D;SACF;KACF;IACD,KAAK,EAAE;QACL,iBAAiB,EAAE,mBAAmB;QACtC,aAAa,EAAE,gBAAgB;QAC/B,KAAK,EAAE,iBAAiB;QACxB,KAAK,EAAE,OAAO;QACd,YAAY,EAAE,eAAe;QAC7B,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,MAAM;QACZ,aAAa,EAAE,gBAAgB;QAC/B,SAAS,EAAE,YAAY;QACvB,gBAAgB,EAAE,qBAAqB;QACvC,YAAY,EAAE,eAAe;QAC7B,gBAAgB,EAAE,oBAAoB;QACtC,SAAS,EAAE,OAAO;QAClB,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,wBAAwB;QAClC,QAAQ,EAAE,WAAW;QACrB,SAAS,EAAE,YAAY;QACvB,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,SAAS;QAClB,kBAAkB,EAAE,kCAAkC;QACtD,YAAY,EAAE,cAAc;QAC5B,uBAAuB,EAAE,sCAAsC;QAC/D,MAAM,EAAE,QAAQ;QAChB,iBAAiB,EAAE,yCAAyC;QAC5D,MAAM,EAAE,QAAQ;QAChB,iBAAiB,EAAE,UAAU;QAC7B,MAAM,EAAE,QAAQ;QAChB,iBAAiB,EAAE,UAAU;QAC7B,KAAK,EAAE,OAAO;QACd,gBAAgB,EAAE,4BAA4B;KAC/C;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE,YAAY;QACvB,aAAa,EAAE,sBAAsB;QACrC,eAAe,EAAE,uBAAuB;QACxC,aAAa,EAAE,sBAAsB;QACrC,eAAe,EAAE,uBAAuB;QACxC,UAAU,EAAE,aAAa;QACzB,YAAY,EAAE,gBAAgB;QAC9B,aAAa,EAAE,uBAAuB;QACtC,cAAc,EAAE,yBAAyB;QACzC,oBAAoB,EAAE,oDAAoD;QAC1E,iBAAiB,EAAE,sBAAsB;QACzC,mBAAmB,EAAE,uBAAuB;QAC5C,gBAAgB,EAAE,qBAAqB;QACvC,gBAAgB,EACd,6EAA6E;QAC/E,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,gBAAgB;QACzB,OAAO,EAAE,gBAAgB;QACzB,aAAa,EAAE,SAAS;QACxB,UAAU,EAAE,MAAM;QAClB,YAAY,EAAE,QAAQ;QACtB,aAAa,EAAE,SAAS;QACxB,cAAc,EAAE,kBAAkB;QAClC,eAAe,EAAE,mBAAmB;QACpC,cAAc,EAAE,wBAAwB;QACxC,eAAe,EAAE,yBAAyB;QAC1C,YAAY,EAAE,wBAAwB;QACtC,aAAa,EAAE,yBAAyB;QACxC,WAAW,EAAE,kBAAkB;QAC/B,YAAY,EAAE,mBAAmB;KAClC;IACD,YAAY,EAAE;QACZ,cAAc,EACZ,kHAAkH;QACpH,cAAc,EAAE,6CAA6C;QAC7D,WAAW,EAAE,yBAAyB;QACtC,KAAK,EAAE,uBAAuB;QAC9B,mBAAmB,EACjB,kGAAkG;QACpG,QAAQ,EACN,gGAAgG;QAClG,YAAY,EAAE,0BAA0B;QACxC,kBAAkB,EAChB,4EAA4E;QAC9E,iBAAiB,EAAE,sBAAsB;QACzC,uBAAuB,EACrB,wFAAwF;QAC1F,eAAe,EAAE,6BAA6B;QAC9C,eAAe,EAAE,aAAa;QAC9B,mBAAmB,EAAE,oBAAoB;QACzC,yBAAyB,EACvB,mEAAmE;QACrE,aAAa,EAAE,gBAAgB;QAC/B,aAAa,EAAE,gBAAgB;QAC/B,KAAK,EAAE,OAAO;KACf;IACD,UAAU,EAAE;QACV,YAAY,EAAE,iCAAiC;QAC/C,kBAAkB,EAChB,4FAA4F;QAC9F,cAAc,EAAE,oBAAoB;QACpC,iBAAiB,EAAE,2CAA2C;QAC9D,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,cAAc;QAC3B,UAAU,EAAE,aAAa;QACzB,YAAY,EAAE,eAAe;QAC7B,iBAAiB,EAAE,eAAe;QAClC,gBAAgB,EAAE,sCAAsC;QACxD,eAAe,EAAE,cAAc;QAC/B,sBAAsB,EAAE,8BAA8B;QACtD,kBAAkB,EAAE,kBAAkB;QACtC,UAAU,EAAE,6BAA6B;QACzC,gBAAgB,EAAE,mDAAmD;QACrE,kBAAkB,EAAE,sBAAsB;QAC1C,SAAS,EAAE,YAAY;QACvB,UAAU,EAAE,sBAAsB;QAClC,cAAc,EAAE,qBAAqB;QACrC,YAAY,EAAE,oBAAoB;QAClC,oBAAoB,EAClB,kFAAkF;QACpF,cAAc,EAAE,kBAAkB;QAClC,cAAc,EAAE,kBAAkB;QAClC,qBAAqB,EACnB,8EAA8E;QAChF,2BAA2B,EAAE,0CAA0C;QACvE,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,aAAa;QACvB,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,aAAa;QACvB,YAAY,EAAE,gBAAgB;QAC9B,oBAAoB,EAAE,8BAA8B;QACpD,uBAAuB,EAAE,qBAAqB;QAC9C,wBAAwB,EAAE,wBAAwB;QAClD,yBAAyB,EAAE,uCAAuC;QAClE,4BAA4B,EAC1B,uEAAuE;QACzE,SAAS,EAAE,YAAY;QACvB,OAAO,EAAE,YAAY;QACrB,kBAAkB,EAAE,yCAAyC;QAC7D,cAAc,EAAE,oBAAoB;QACpC,oBAAoB,EAAE,wBAAwB;QAC9C,yBAAyB,EACvB,0EAA0E;QAC5E,iBAAiB,EAAE,qBAAqB;QACxC,sBAAsB,EACpB,wEAAwE;QAC1E,aAAa,EAAE,iBAAiB;QAChC,IAAI,EAAE,MAAM;QACZ,aAAa,EAAE,gBAAgB;QAC/B,MAAM,EAAE,WAAW;QACnB,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,cAAc;QAC3B,SAAS,EAAE,YAAY;QACvB,aAAa,EACX,uEAAuE;QACzE,mBAAmB,EAAE,qDAAqD;QAC1E,qBAAqB,EACnB,sDAAsD;QACxD,SAAS,EAAE,MAAM;QACjB,gBAAgB,EAAE,aAAa;QAC/B,YAAY,EAAE,SAAS;QACvB,YAAY,EAAE,mBAAmB;QACjC,YAAY,EAAE,0BAA0B;KACzC;IACD,GAAG,EAAE;QACH,WAAW,EAAE,0BAA0B;QACvC,iBAAiB,EACf,mHAAmH;QACrH,cAAc,EAAE,4BAA4B;QAC5C,iBAAiB,EAAE,6BAA6B;QAChD,QAAQ,EAAE,WAAW;QACrB,YAAY,EAAE,eAAe;QAC7B,mBAAmB,EACjB,iEAAiE;QACnE,eAAe,EAAE,mBAAmB;QACpC,gBAAgB,EAAE,mBAAmB;QACrC,YAAY,EAAE,gBAAgB;QAC9B,kBAAkB,EAAE,4BAA4B;QAChD,OAAO,EAAE,eAAe;QACxB,kBAAkB,EAAE,qBAAqB;QACzC,SAAS,EAAE,eAAe;QAC1B,MAAM,EAAE,QAAQ;QAChB,cAAc,EAAE,mCAAmC;QACnD,gBAAgB,EAAE,mBAAmB;QACrC,uBAAuB,EAAE,WAAW;QACpC,kBAAkB,EAAE,qBAAqB;QACzC,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,aAAa;QACvB,IAAI,EAAE,MAAM;QACZ,kBAAkB,EAAE,wBAAwB;QAC5C,wBAAwB,EACtB,oDAAoD;QACtD,aAAa,EACX,wGAAwG;QAC1G,cAAc,EACZ,sGAAsG;QACxG,IAAI,EAAE,MAAM;QACZ,cAAc,EAAE,qBAAqB;QACrC,GAAG,EAAE,KAAK;QACV,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,SAAS;QAClB,aAAa,EAAE,gBAAgB;QAC/B,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,iBAAiB;QAC5B,eAAe,EAAE,kBAAkB;QACnC,iBAAiB,EAAE,mBAAmB;QACtC,UAAU,EAAE,kBAAkB;QAC9B,UAAU,EAAE,aAAa;QACzB,YAAY,EAAE,eAAe;QAC7B,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,QAAQ;QAChB,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,YAAY;KACtB;IACD,YAAY,EAAE;QACZ,UAAU,EAAE,aAAa;QACzB,cAAc,EAAE,kBAAkB;QAClC,aAAa,EACX,sEAAsE;QACxE,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,SAAS;QAClB,QAAQ,EAAE,KAAK;QACf,YAAY,EAAE,mCAAmC;QACjD,IAAI,EAAE,MAAM;QACZ,mBAAmB,EAAE,uBAAuB;QAC5C,sBAAsB,EACpB,kEAAkE;QACpE,OAAO,EAAE,UAAU;QACnB,KAAK,EAAE,OAAO;QACd,kBAAkB,EAAE,sBAAsB;QAC1C,uBAAuB,EAAE,4BAA4B;QACrD,eAAe,EAAE,kBAAkB;QACnC,OAAO,EAAE,wDAAwD;QACjE,IAAI,EAAE,MAAM;QACZ,aAAa,EAAE,eAAe;QAC9B,eAAe,EACb,gFAAgF;QAClF,kBAAkB,EAAE,wBAAwB;QAC5C,gBAAgB,EAAE,mBAAmB;QACrC,2BAA2B,EAAE,yCAAyC;QACtE,cAAc,EAAE,iBAAiB;QACjC,kBAAkB,EAChB,8FAA8F;QAChG,eAAe,EACb,iJAAiJ;KACpJ;IACD,eAAe,EAAE;QACf,SAAS,EAAE,cAAc;QACzB,eAAe,EAAE,gCAAgC;QACjD,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EAAE,0DAA0D;QACvE,iBAAiB,EAAE,qBAAqB;QACxC,UAAU,EAAE,cAAc;QAC1B,SAAS,EAAE,oCAAoC;QAC/C,SAAS,EAAE,WAAW;QACtB,SAAS,EAAE,WAAW;QACtB,OAAO,EAAE,SAAS;QAClB,kBAAkB,EAAE,sBAAsB;QAC1C,WAAW,EAAE,uBAAuB;QACpC,cAAc,EAAE,oBAAoB;QACpC,uBAAuB,EACrB,mEAAmE;QACrE,qBAAqB,EACnB,wFAAwF;QAC1F,iBAAiB,EACf,mEAAmE;QACrE,WAAW,EACT,uJAAuJ;QACzJ,QAAQ,EAAE,UAAU;QACpB,YAAY,EAAE,cAAc;QAC5B,QAAQ,EAAE,2CAA2C;QACrD,YAAY,EAAE,kDAAkD;QAChE,UAAU,EAAE,aAAa;QACzB,GAAG,EAAE,KAAK;QACV,gBAAgB,EAAE,aAAa;QAC/B,OAAO,EAAE,SAAS;QAClB,qBAAqB,EAAE,aAAa;QACpC,cAAc,EAAE,6BAA6B;QAC7C,sBAAsB,EAAE,wBAAwB;QAChD,kBAAkB,EAAE,+BAA+B;QACnD,aAAa,EAAE,iBAAiB;QAChC,IAAI,EAAE,MAAM;QACZ,kBAAkB,EAAE,0BAA0B;QAC9C,oBAAoB,EAAE,2BAA2B;QACjD,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE,oBAAoB;QAC/B,OAAO,EAAE;YACP,QAAQ,EAAE;gBACR,WAAW,EAAE,4CAA4C;gBACzD,OAAO,EACL,gEAAgE;aACnE;YACD,MAAM,EAAE;gBACN,WAAW,EAAE,6CAA6C;gBAC1D,OAAO,EAAE,yDAAyD;aACnE;YACD,MAAM,EAAE;gBACN,WAAW,EAAE,kCAAkC;gBAC/C,OAAO,EAAE,8DAA8D;aACxE;YACD,OAAO,EAAE;gBACP,WAAW,EAAE,kCAAkC;gBAC/C,OAAO,EAAE,2DAA2D;aACrE;YACD,MAAM,EAAE;gBACN,WAAW,EAAE,+BAA+B;gBAC5C,OAAO,EAAE,2DAA2D;aACrE;YACD,QAAQ,EAAE;gBACR,WAAW,EAAE,0CAA0C;gBACvD,OAAO,EAAE,mDAAmD;aAC7D;YACD,IAAI,EAAE;gBACJ,WAAW,EAAE,yCAAyC;gBACtD,OAAO,EAAE,wDAAwD;aAClE;YACD,MAAM,EAAE;gBACN,WAAW,EAAE,gDAAgD;gBAC7D,OAAO,EAAE,yDAAyD;aACnE;SACF;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,OAAO;SACf;KACF;IACD,aAAa,EAAE;QACb,MAAM,EAAE,mBAAmB;QAC3B,eAAe,EAAE,+BAA+B;QAChD,OAAO,EAAE,8BAA8B;QACvC,aAAa,EAAE,4BAA4B;QAC3C,SAAS,EAAE,YAAY;QACvB,SAAS,EAAE,YAAY;QACvB,UAAU,EAAE,aAAa;QACzB,WAAW,EAAE,cAAc;QAC3B,QAAQ,EAAE,WAAW;QACrB,YAAY,EAAE,gBAAgB;QAC9B,GAAG,EAAE,KAAK;QACV,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,UAAU;QACpB,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,oBAAoB;QACjC,UAAU,EAAE,cAAc;QAC1B,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,QAAQ;QAChB,UAAU,EAAE,aAAa;QACzB,QAAQ,EAAE,WAAW;QACrB,gBAAgB,EAAE,oBAAoB;QACtC,QAAQ,EAAE,UAAU;QACpB,aAAa,EAAE,eAAe;QAC9B,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,aAAa;QAC1B,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,SAAS;QAClB,iBAAiB,EAAE,qBAAqB;QACxC,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE,SAAS;QAClB,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,OAAO;QACd,aAAa,EAAE,gBAAgB;QAC/B,UAAU,EAAE,aAAa;QACzB,WAAW,EAAE,aAAa;QAC1B,YAAY,EAAE,gBAAgB;QAC9B,UAAU,EAAE,YAAY;KACzB;IACD,KAAK,EAAE;QACL,YAAY,EAAE,sBAAsB;QACpC,cAAc,EAAE,+BAA+B;QAC/C,aAAa,EAAE,gBAAgB;QAC/B,eAAe,EACb,6DAA6D;QAC/D,WAAW,EAAE,kBAAkB;QAC/B,MAAM,EAAE,SAAS;KAClB;CACF,CAAC;AAEF,eAAe,QAAQ,CAAC","sourcesContent":["// Canonical English catalog used by core UI for translation fallbacks.\n// Lives under src/ so tsc emits it to dist/*.js and Node's strict ESM resolver\n// can load it during SSR. Do not import core runtime code from src/templates:\n// templates ship as verbatim copy-only scaffolding (.ts), so their compiled\n// .js never exists in dist.\nconst messages = {\n home: {\n settingsTitle: \"Settings\",\n settingsDescription: \"Language and agent preferences\",\n title: \"Your app is running\",\n intro: \"Start building by editing\",\n actionCardTitle: \"Action-backed data\",\n loadingAction: \"Loading action result...\",\n docsTitle: \"Documentation\",\n docsDescription: \"Learn the framework\",\n themeTitle: \"Theme\",\n themeDescription: \"Toggle dark / light\",\n },\n settings: {\n title: \"Settings\",\n description: \"Language and workspace preferences for this app.\",\n languageTitle: \"Language\",\n languageDescription:\n \"Choose the interface language. This preference is saved for your account.\",\n languageLabel: \"Interface language\",\n agentTitle: \"Agent settings\",\n agentDescription:\n \"Open the agent sidebar settings for model, API keys, automations, voice, and other agent controls.\",\n openAgentSettings: \"Open agent settings\",\n workspaceTitle: \"Workspace\",\n workspaceDescription: \"Manage team access and shared workspace resources.\",\n openTeamSettings: \"Open team settings\",\n openResourceSettings: \"Open resource settings\",\n backHome: \"Back to home\",\n },\n dispatch: {\n nav: {\n chat: \"Chat\",\n overview: \"Overview\",\n apps: \"Apps\",\n metrics: \"Metrics\",\n vault: \"Vault\",\n integrations: \"Integrations\",\n agents: \"Agents\",\n resources: \"Resources\",\n messaging: \"Messaging\",\n destinations: \"Destinations\",\n identities: \"Identities\",\n approvals: \"Approvals\",\n automations: \"Automations\",\n delivery: \"Delivery\",\n audit: \"Audit\",\n dreams: \"Dreams\",\n threadDebug: \"Thread Debug\",\n settings: \"Settings\",\n team: \"Team\",\n operations: \"Operations\",\n navigation: \"Navigation\",\n navigationDescription: \"Workspace navigation links\",\n },\n sidebar: {\n workspaceControlPlane: \"Workspace control plane\",\n workspaceSubtitle_one: \"Workspace · {{count}} app\",\n workspaceSubtitle_other: \"Workspace · {{count}} apps\",\n chats: \"Chats\",\n newChat: \"New chat\",\n newDispatchChat: \"New Dispatch chat\",\n renameChat: \"Rename chat\",\n renameThread: \"Rename {{title}}\",\n chatOptions: \"Chat options for {{title}}\",\n aboutPage: \"About {{title}}\",\n emptyAgentText:\n \"Create apps, manage vault keys, and route work across the workspace.\",\n suggestionBuildApp: \"Build a workspace app for X\",\n suggestionRouteSlack: \"Route Slack mentions to my analytics app\",\n suggestionGrantKey: \"Grant my OpenAI key to this app\",\n },\n pages: {\n appsDescription:\n \"Open workspace apps and start new app creation from Dispatch.\",\n appsDescriptionWithWorkspace:\n 'Apps in the \"{{workspace}}\" workspace. Each app gets its own route under this workspace and shares its database, auth, and agent chat.',\n appsInWorkspace: \"Apps in {{workspace}}\",\n workspaceApps: \"Workspace apps\",\n activeCount: \"{{count}} active\",\n hiddenCount: \"{{count}} hidden\",\n createApp: \"Create app\",\n templates: \"Templates\",\n checkingTemplates: \"Checking available templates\",\n templatesAvailable: \"{{count}} available to scaffold\",\n hide: \"Hide\",\n show: \"Show\",\n hiddenApps: \"Hidden apps\",\n hiddenAppCount: \"{{count}} hidden apps\",\n workspaceAppFallback: \"Workspace App\",\n workspaceAppDescription:\n \"Open a deployed app or check the status of an app being created.\",\n pageNotFound: \"Page not found\",\n pageNotFoundDescription:\n \"This route is not in the workspace app list yet.\",\n browseApps: \"Browse apps\",\n newApp: \"New App\",\n newAppDescription:\n \"Create a workspace app from a prompt and apply the workspace vault policy.\",\n destinationsDescription:\n \"Saved outbound Slack channels, Telegram chats, and thread targets.\",\n savedDestinations: \"Saved destinations\",\n addDestination: \"Add destination\",\n quickTestMessage: \"Quick test message\",\n send: \"Send\",\n delete: \"Delete\",\n cancel: \"Cancel\",\n messageSent: \"Message sent\",\n unableToSendMessage: \"Unable to send message\",\n destinationSaved: \"Destination saved\",\n destinationRemoved: \"Destination removed\",\n deleteDestinationTitle: \"Delete destination?\",\n deleteDestinationDescription:\n '\"{{name}}\" will be removed. Any saved workflows or jobs that target this destination will start failing on the next send.',\n noDestinations:\n \"No destinations saved yet. Add your first Slack channel or Telegram chat on the right.\",\n dailyDigestChannel: \"Daily digest channel\",\n optionalThreadOrTopicId: \"Optional thread or topic id\",\n destinationNotes: \"What should use this destination?\",\n saveDestination: \"Save destination\",\n noWorkspaceApps: \"No workspace apps yet\",\n noWorkspaceAppsDescription:\n \"Create an app when a workflow needs its own focused place to live.\",\n appNotFound: \"App not found\",\n building: \"Building\",\n appBuildingPrefix: \"This app is being created. It will be available at\",\n appBuildingSuffix:\n \"after its branch is merged and the workspace deploy finishes.\",\n branch: \"Branch: {{branch}}\",\n openBuilderBranch: \"Open Builder branch\",\n openingApp: \"Opening {{name}}\",\n redirectingTo: \"Redirecting to\",\n openApp: \"Open app\",\n notDispatchOrWorkspaceApp:\n \" a Dispatch tab or a workspace app in this workspace.\",\n agentsDescription:\n \"Dispatch can delegate to the built-in app suite over A2A by default. Add extra agents here only if you want to route work to apps outside that built-in set.\",\n mcpAccessUpdated: \"MCP app access updated\",\n selectAppForMcp: \"Select at least one app, or expose all apps.\",\n mcpUrlCopied: \"MCP URL copied\",\n mcpUrlCopyFailed: \"Could not copy MCP URL\",\n unifiedMcpGateway: \"Unified MCP gateway\",\n unifiedMcpGatewayDescription:\n \"Connect external agents to Dispatch once, then route to granted workspace apps through\",\n allApps: \"All apps\",\n selectedApps: \"Selected apps\",\n loading: \"Loading\",\n grantedCount: \"{{count}} granted\",\n exposeAllAppsMcp: \"Expose all apps through Dispatch MCP\",\n copyUrl: \"Copy URL\",\n metricsUnavailable: \"Metrics unavailable\",\n unableToLoadUsage: \"Unable to load usage.\",\n metricsDescriptionBuilder:\n \"Workspace-wide Builder.io credit spend, chat volume, user activity, and app access.\",\n metricsDescriptionLlm:\n \"Workspace-wide LLM spend, chat volume, user activity, and app access.\",\n llmCalls: \"LLM calls\",\n activeUsers: \"Active users\",\n workspaceAppsStat: \"Workspace apps\",\n chatThreads: \"Chat threads\",\n also: \"Also\",\n workspaceShortcutsAria: \"Workspace shortcuts\",\n deliveryQueue: \"Delivery queue\",\n failedLastHour: \"{{count}} failed in the last hour\",\n processingCount: \"{{count}} processing\",\n queued: \"Queued\",\n active: \"Active\",\n done1h: \"Done 1h\",\n failed1h: \"Failed 1h\",\n oldestQueued: \"Oldest queued: {{age}}\",\n queueAgeNone: \"none\",\n queueFailureHint:\n \"Check credentials, destinations, and recent queue errors.\",\n unknownPlatform: \"unknown\",\n attemptsCount: \"{{count}} attempts\",\n noErrorMessage: \"(no error message)\",\n },\n },\n agentPanel: {\n useBuilder: \"Use Builder\",\n openDesktopToEditCode: \"Open Desktop to edit code\",\n codeUnavailableDescription:\n \"Source-code changes and CLI access are available in the Agent Native Desktop app.\",\n downloadDesktop: \"Download Desktop\",\n chatMode: \"Chat mode\",\n chat: \"Chat\",\n cliTerminalMode: \"CLI terminal mode\",\n cli: \"CLI\",\n workspaceMode: \"Workspace files, agents, skills, and tasks\",\n workspace: \"Workspace\",\n newChat: \"New chat\",\n newTerminal: \"New terminal\",\n panelOptions: \"Agent panel options\",\n collapseSidebar: \"Collapse sidebar\",\n hideChats: \"Hide chats\",\n allChats: \"All chats\",\n settings: \"Settings\",\n feedback: \"Feedback\",\n exitFullscreen: \"Exit fullscreen\",\n fullscreen: \"Fullscreen\",\n closeTab: \"Close tab\",\n closeOtherTabs: \"Close other tabs\",\n closeAllTabs: \"Close all tabs\",\n clearChat: \"Clear chat\",\n cliRequiresDevMode: \"CLI requires dev mode\",\n cliRequiresDevModeDescription:\n \"Run this app locally with pnpm dev or use Builder.io to access the CLI terminal.\",\n toggleAgent: \"Toggle agent\",\n voiceMode: {\n entryButtonLabel: \"Use microphone\",\n promptTitle: \"Talk to your app\",\n promptDescription:\n \"Voice mode keeps listening while the agent navigates and takes actions.\",\n start: \"Start voice mode\",\n keepDictating: \"Keep dictating\",\n showChat: \"Show chat\",\n hideChat: \"Hide chat\",\n end: \"End voice mode\",\n status: {\n connecting: \"Connecting\",\n listening: \"Listening\",\n speaking: \"Speaking\",\n working: \"Working\",\n error: \"Voice mode needs attention\",\n ending: \"Ending voice mode\",\n },\n errors: {\n unsupported:\n \"This browser does not support realtime voice conversations.\",\n responseFailed: \"OpenAI could not complete the voice response.\",\n sessionFailed: \"The realtime voice session encountered an error.\",\n channelDisconnected: \"The realtime voice control channel disconnected.\",\n connectionFailed: \"The realtime voice connection failed.\",\n offerFailed: \"The browser did not create an audio offer.\",\n },\n },\n },\n share: {\n titleWithResource: 'Share \"{{title}}\"',\n titleWithType: \"Share {{type}}\",\n owner: \"Owner: {{name}}\",\n close: \"Close\",\n shareOptions: \"Share options\",\n link: \"Link\",\n invite: \"Invite\",\n embed: \"Embed\",\n done: \"Done\",\n generalAccess: \"General access\",\n shareLink: \"Share link\",\n addPeopleByEmail: \"Add people by email\",\n notifyPeople: \"Notify people\",\n peopleWithAccess: \"People with access\",\n ownerRole: \"Owner\",\n remove: \"Remove\",\n noAccess: \"No one has access yet.\",\n embedUrl: \"Embed URL\",\n embedCode: \"Embed code\",\n copy: \"Copy\",\n role: \"Role\",\n private: \"Private\",\n privateDescription: \"Only people with access can view\",\n organization: \"Organization\",\n organizationDescription: \"Anyone in your organization can view\",\n public: \"Public\",\n publicDescription: \"Anyone signed in with the link can view\",\n viewer: \"Viewer\",\n viewerDescription: \"Can view\",\n editor: \"Editor\",\n editorDescription: \"Can edit\",\n admin: \"Admin\",\n adminDescription: \"Can edit and manage access\",\n },\n runsTray: {\n runs: \"Runs\",\n agentRuns: \"Agent runs\",\n activeRun_one: \"{{count}} active run\",\n activeRun_other: \"{{count}} active runs\",\n failedRun_one: \"{{count}} failed run\",\n failedRun_other: \"{{count}} failed runs\",\n recentRuns: \"Recent runs\",\n noRecentRuns: \"No recent runs\",\n ariaAgentRuns: \"Agent runs, {{label}}\",\n summaryRunning: \"{{activeCount}} running\",\n summaryRunningRecent: \"{{activeCount}} running · {{terminalCount}} recent\",\n summaryRecent_one: \"{{count}} recent run\",\n summaryRecent_other: \"{{count}} recent runs\",\n noTrackedWorkYet: \"No tracked work yet\",\n emptyDescription:\n \"Background agent work will appear here while it runs and after it finishes.\",\n open: \"Open\",\n stopRun: \"Stop {{title}}\",\n hideRun: \"Hide {{title}}\",\n statusRunning: \"Running\",\n statusDone: \"Done\",\n statusFailed: \"Failed\",\n statusStopped: \"Stopped\",\n updatedJustNow: \"Updated just now\",\n finishedJustNow: \"Finished just now\",\n updatedMinutes: \"Updated {{count}}m ago\",\n finishedMinutes: \"Finished {{count}}m ago\",\n updatedHours: \"Updated {{count}}h ago\",\n finishedHours: \"Finished {{count}}h ago\",\n updatedDate: \"Updated {{date}}\",\n finishedDate: \"Finished {{date}}\",\n },\n codeRequired: {\n fallbackDetail:\n \"Edit locally or use Builder.io to edit this code in the cloud and continue customizing the app any way you like.\",\n defaultFeature: \"Make the requested code changes to this app\",\n branchError: \"Failed to create branch\",\n title: \"Code changes required\",\n subtitleWithFeature:\n '\"{{feature}}\" creates or modifies source code, which needs Desktop or Builder from this surface.',\n subtitle:\n \"This action creates or modifies source code, which needs Desktop or Builder from this surface.\",\n desktopTitle: \"Use Agent Native Desktop\",\n desktopDescription:\n \"Open the project in the desktop app to enable source edits and CLI access.\",\n builderAgentTitle: \"Use Builder.io Agent\",\n builderAgentDescription:\n \"Let our cloud agent make the changes for you. You'll get a link to preview and deploy.\",\n codeChangeTitle: \"This requires a code change\",\n codeChangeBadge: \"Code change\",\n connectBuilderTitle: \"Connect Builder.io\",\n connectBuilderDescription:\n \"Connect Builder to enable cloud-based code changes from this app.\",\n setupRequired: \"Setup required\",\n branchCreated: \"Branch created\",\n close: \"Close\",\n },\n extensions: {\n createPrompt: \"Create an extension: {{prompt}}\",\n createWidgetPrompt:\n 'Create a new widget that fits in slot \"{{slotId}}\". I\\'ll describe what it should do next.',\n whatShouldItDo: \"What should it do?\",\n createPlaceholder: \"A todo list, API dashboard, calculator...\",\n title: \"Extensions\",\n hiddenShown: \"Hiding shown\",\n showHidden: \"Show hidden\",\n newExtension: \"New Extension\",\n newExtensionTitle: \"New extension\",\n buildPlaceholder: \"Describe what you'd like to build...\",\n namePlaceholder: \"My Extension\",\n descriptionPlaceholder: \"What does this extension do?\",\n contentPlaceholder: \"<html>...</html>\",\n emptyTitle: \"Create your first extension\",\n emptyDescription: \"Describe a small app and the agent will build it.\",\n hiddenFromEveryone: \"Hidden from everyone\",\n localFile: \"Local file\",\n optionsFor: \"Options for {{name}}\",\n unhideEveryone: \"Unhide for everyone\",\n hideEveryone: \"Hide from everyone\",\n localFileDescription:\n \"This extension is backed by {{entryPath}}. Edit or remove it from the workspace.\",\n deleteQuestion: \"Delete {{name}}?\",\n removeQuestion: \"Remove {{name}}?\",\n hideForYouDescription:\n \"This hides it from your Extensions list without deleting it for anyone else.\",\n removeEverywhereDescription: \"This removes it everywhere it is shared.\",\n cancel: \"Cancel\",\n remove: \"Remove\",\n removing: \"Removing...\",\n delete: \"Delete\",\n deleting: \"Deleting...\",\n openFullView: \"Open full view\",\n removeFromWidgetArea: \"Remove from this widget area\",\n deleteExtensionEllipsis: \"Delete extension...\",\n removeFromMyListEllipsis: \"Remove from my list...\",\n removeFromWidgetAreaForMe: \"Remove from this widget area (for me)\",\n deleteEverywhereConfirmation:\n \"This removes the extension everywhere, for everyone it's shared with.\",\n addWidget: \"Add widget\",\n loading: \"Loading...\",\n noWidgetsAvailable: \"No widgets available for this slot yet.\",\n buildNewWidget: \"Build a new widget\",\n contactSidebarWidget: \"Contact sidebar widget\",\n contactSidebarDescription:\n \"Appears beside the current conversation with contact and thread context.\",\n eventDetailWidget: \"Event detail widget\",\n eventDetailDescription:\n \"Appears below the open calendar event with event and attendee context.\",\n addWidgetHere: \"Add widget here\",\n back: \"Back\",\n editExtension: \"Edit Extension\",\n saving: \"Saving...\",\n save: \"Save\",\n create: \"Create\",\n moreOptions: \"More options\",\n appearsIn: \"Appears in\",\n noWidgetAreas:\n \"Not installed in any widget areas. Ask the agent to add it somewhere.\",\n widgetAreaCount_one: \"This extension can render in {{count}} widget area.\",\n widgetAreaCount_other:\n \"This extension can render in {{count}} widget areas.\",\n nameLabel: \"Name\",\n descriptionLabel: \"Description\",\n contentLabel: \"Content\",\n previewTitle: \"Extension preview\",\n previewEmpty: \"Preview will appear here\",\n },\n org: {\n createTitle: \"Create your organization\",\n createDescription:\n \"This app organizes your content by team. Create an organization to continue - you can invite teammates afterward.\",\n loadErrorTitle: \"Couldn't load organization\",\n loadErrorFallback: \"Couldn't load organization.\",\n tryAgain: \"Try again\",\n sendFeedback: \"Send feedback\",\n feedbackPlaceholder:\n \"Describe what happened before this organization error appeared.\",\n openGitHubIssue: \"Open GitHub issue\",\n yourOrganization: \"Your organization\",\n joinYourTeam: \"Join your team\",\n openToDomainEmails: \"Open to @{{domain}} emails\",\n joinOrg: \"Join {{name}}\",\n pendingInvitations: \"Pending invitations\",\n invitedBy: \"from {{name}}\",\n accept: \"Accept\",\n createSeparate: \"or create a separate organization\",\n organizationName: \"Organization name\",\n organizationPlaceholder: \"Acme Inc.\",\n createOrganization: \"Create organization\",\n create: \"Create\",\n creating: \"Creating...\",\n team: \"Team\",\n createOrgCardTitle: \"Create an Organization\",\n createOrgCardDescription:\n \"Set up a team to collaborate with your colleagues.\",\n joinDomainOne:\n \"An organization matching your email domain already exists. Join it to collaborate with your teammates.\",\n joinDomainMany:\n \"Organizations matching your email domain already exist. Join one to collaborate with your teammates.\",\n join: \"Join\",\n invitedByLabel: \"Invited by {{name}}\",\n you: \"You\",\n owner: \"Owner\",\n admin: \"Admin\",\n member: \"Member\",\n members: \"Members\",\n inviteMembers: \"Invite members\",\n invited: \"Invited\",\n role: \"Role\",\n status: \"Status\",\n actions: \"Actions\",\n noMembers: \"No members yet.\",\n memberCount_one: \"{{count}} member\",\n memberCount_other: \"{{count}} members\",\n youAreRole: \"You are {{role}}\",\n changeRole: \"Change role\",\n removeMember: \"Remove member\",\n cancel: \"Cancel\",\n remove: \"Remove\",\n save: \"Save\",\n loading: \"Loading...\",\n },\n integrations: {\n webhookUrl: \"Webhook URL\",\n copyWebhookUrl: \"Copy webhook URL\",\n notConfigured:\n \"Not configured. Set the required secrets to enable this integration.\",\n enable: \"Enable\",\n disable: \"Disable\",\n toggling: \"...\",\n networkError: \"Network error reaching the server\",\n back: \"Back\",\n agentEngineRequired: \"Agent engine required\",\n agentEngineDescription:\n \"Connect Builder.io or an LLM key before {{platform}} can answer.\",\n openLlm: \"Open LLM\",\n setup: \"Setup\",\n shareDocumentsWith: \"Share documents with\",\n copyServiceAccountEmail: \"Copy service account email\",\n requiredSecrets: \"Required secrets\",\n envHelp: \"Set these in your .env file or environment to connect.\",\n copy: \"Copy\",\n documentation: \"Documentation\",\n clientAvailable:\n \"This agent's A2A endpoint is automatically available. No configuration needed.\",\n addChatIntegration: \"Add a chat integration\",\n chatIntegrations: \"Chat Integrations\",\n chatIntegrationsDescription: \"Talk to this agent from other platforms\",\n addIntegration: \"Add integration\",\n dispatchEntrypoint:\n \"For a central Slack or Telegram entrypoint that can route work across multiple apps, use the\",\n sharedMessaging:\n \"Need one shared messaging surface for your workspace? Connect Slack or Telegram to a dispatch app and let it delegate to other agents over A2A.\",\n },\n mcpIntegrations: {\n menuLabel: \"Integrations\",\n menuDescription: \"Connect MCP tools to the agent\",\n title: \"Connect integrations\",\n description: \"Choose a default MCP integration or add a custom server.\",\n searchPlaceholder: \"Search integrations\",\n addYourOwn: \"Add your own\",\n noMatches: \"No integrations match that search.\",\n connected: \"Connected\",\n configure: \"Configure\",\n connect: \"Connect\",\n backToIntegrations: \"Back to integrations\",\n customTitle: \"Add custom MCP server\",\n configureTitle: \"Configure {{name}}\",\n presetNoAuthDescription:\n \"Preset values are filled in. Test the endpoint or connect it now.\",\n presetAuthDescription:\n \"Preset values are filled in. Add any required authorization details before connecting.\",\n customDescription:\n \"Paste a Streamable HTTP or SSE MCP endpoint and optional headers.\",\n oauthNotice:\n \"This provider usually requires an OAuth setup. Follow the provider docs, or add an Authorization header if your endpoint supports token-based access.\",\n personal: \"Personal\",\n organization: \"Organization\",\n orgNoOrg: \"Join an organization to share MCP servers\",\n orgAdminOnly: \"Only owners and admins can add org-scope servers\",\n serverName: \"Server name\",\n url: \"URL\",\n fieldDescription: \"Description\",\n headers: \"Headers\",\n serverNamePlaceholder: \"Server name\",\n urlPlaceholder: \"https://mcp.example.com/mcp\",\n descriptionPlaceholder: \"Description (optional)\",\n headersPlaceholder: \"Authorization: Bearer <token>\",\n openSetupDocs: \"Open setup docs\",\n test: \"Test\",\n toolsAvailable_one: \"{{count}} tool available\",\n toolsAvailable_other: \"{{count}} tools available\",\n failed: \"Failed\",\n docsLabel: \"View {{name}} docs\",\n catalog: {\n context7: {\n description: \"Fetch current library docs in agent chats.\",\n useCase:\n \"Documentation, technical reference, API docs, framework guides\",\n },\n sentry: {\n description: \"Inspect issues, events, and debugging data.\",\n useCase: \"Error monitoring, debugging, performance, crash reports\",\n },\n notion: {\n description: \"Search pages and team knowledge.\",\n useCase: \"Documentation, knowledge management, notes, content creation\",\n },\n semgrep: {\n description: \"Scan code for security findings.\",\n useCase: \"Security scanning, vulnerability detection, code analysis\",\n },\n linear: {\n description: \"Read and write Linear issues.\",\n useCase: \"Project management, issue tracking, planning, bug reports\",\n },\n supabase: {\n description: \"Manage data, auth, and backend services.\",\n useCase: \"Database, authentication, storage, edge functions\",\n },\n neon: {\n description: \"Work with serverless Postgres projects.\",\n useCase: \"Database management, serverless Postgres, data storage\",\n },\n stripe: {\n description: \"Manage payments, subscriptions, and customers.\",\n useCase: \"Payments, subscriptions, invoicing, customer management\",\n },\n },\n auth: {\n none: \"No auth\",\n headers: \"Header\",\n oauth: \"OAuth\",\n },\n },\n observability: {\n noData: \"No data available\",\n noConversations: \"No conversations recorded yet\",\n noEvals: \"No eval results recorded yet\",\n noExperiments: \"No experiments created yet\",\n totalRuns: \"Total runs\",\n totalCost: \"Total cost\",\n avgLatency: \"Avg latency\",\n toolSuccess: \"Tool success\",\n thumbsUp: \"Thumbs up\",\n avgEvalScore: \"Avg eval score\",\n run: \"Run\",\n model: \"Model\",\n duration: \"Duration\",\n cost: \"Cost\",\n tools: \"Tools\",\n time: \"Time\",\n failedCount: \"({{count}} failed)\",\n backToList: \"Back to list\",\n spans: \"Spans\",\n type: \"Type\",\n name: \"Name\",\n tokens: \"Tokens\",\n status: \"Status\",\n totalEvals: \"Total evals\",\n avgScore: \"Avg score\",\n scoresByCriteria: \"Scores by criteria\",\n overview: \"Overview\",\n conversations: \"Conversations\",\n evals: \"Evals\",\n experiments: \"Experiments\",\n feedback: \"Feedback\",\n variants: \"Variants\",\n created: \"Created\",\n backToExperiments: \"Back to experiments\",\n metrics: \"Metrics\",\n level: \"Level\",\n results: \"Results\",\n variant: \"Variant\",\n metric: \"Metric\",\n value: \"Value\",\n totalFeedback: \"Total feedback\",\n thumbsDown: \"Thumbs down\",\n frustration: \"Frustration\",\n thumbsUpRate: \"Thumbs up rate\",\n categories: \"Categories\",\n },\n error: {\n genericTitle: \"Something went wrong\",\n genericDetails: \"An unexpected error occurred.\",\n notFoundTitle: \"Page not found\",\n notFoundDetails:\n \"This page doesn't exist. It may have been moved or deleted.\",\n statusTitle: \"{{status}} Error\",\n goHome: \"Go home\",\n },\n};\n\nexport default messages;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/mcp-client/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAQH;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,oEAAoE;IACpE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,yDAAyD;IACzD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,GAAG,EAAE,MAAM,CAAC;IACZ,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,0EAA0E;IAC1E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,eAAe,GAAG,oBAAoB,GAAG,mBAAmB,CAAC;AAEzE,MAAM,WAAW,SAAS;IACxB,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACzC,iFAAiF;IACjF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA8DD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAcjE;AAiCD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,IAAI,SAAS,GAAG,IAAI,CA0CtD"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/mcp-client/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAQH;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,oEAAoE;IACpE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,yDAAyD;IACzD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,GAAG,EAAE,MAAM,CAAC;IACZ,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,0EAA0E;IAC1E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,eAAe,GAAG,oBAAoB,GAAG,mBAAmB,CAAC;AAEzE,MAAM,WAAW,SAAS;IACxB,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACzC,iFAAiF;IACjF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAgED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAajE;AA8ED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,IAAI,SAAS,GAAG,IAAI,CA0CtD"}
@@ -15,6 +15,7 @@ import fs from "node:fs";
15
15
  import os from "node:os";
16
16
  import path from "node:path";
17
17
  import { findWorkspaceRoot } from "../scripts/utils.js";
18
+ const DESKTOP_COMPUTER_SERVER_ID = "agent-native-desktop-computer";
18
19
  function isNode() {
19
20
  return (typeof process !== "undefined" &&
20
21
  !!process.versions?.node &&
@@ -87,9 +88,49 @@ export function loadMcpConfig(startDir) {
87
88
  fileConfig = null;
88
89
  }
89
90
  }
90
- if (fileConfig)
91
- return fileConfig;
92
- return envConfig;
91
+ return mergeDesktopChildComputerConfig(fileConfig ?? envConfig);
92
+ }
93
+ /**
94
+ * The desktop process supplies this configuration only to a child it spawned
95
+ * for a specific Agent run. Raw MCP config cannot opt into this trust path:
96
+ * the explicit child gate, loopback URL, and strong per-run bearer are all
97
+ * required. Existing user servers always win on key collisions.
98
+ */
99
+ function mergeDesktopChildComputerConfig(base) {
100
+ if (process.env.AGENT_NATIVE_DESKTOP_CHILD !== "1")
101
+ return base;
102
+ const url = process.env.AGENT_NATIVE_DESKTOP_COMPUTER_MCP_URL?.trim();
103
+ const token = process.env.AGENT_NATIVE_DESKTOP_COMPUTER_MCP_TOKEN?.trim();
104
+ if (!url || !token || !/^[A-Za-z0-9_-]{32,}$/.test(token))
105
+ return base;
106
+ try {
107
+ const parsed = new URL(url);
108
+ if (parsed.protocol !== "http:" ||
109
+ parsed.hostname !== "127.0.0.1" ||
110
+ parsed.pathname !== "/mcp" ||
111
+ parsed.username ||
112
+ parsed.password) {
113
+ return base;
114
+ }
115
+ }
116
+ catch {
117
+ return base;
118
+ }
119
+ const servers = { ...(base?.servers ?? {}) };
120
+ let serverId = DESKTOP_COMPUTER_SERVER_ID;
121
+ for (let suffix = 2; servers[serverId]; suffix += 1) {
122
+ serverId = `${DESKTOP_COMPUTER_SERVER_ID}-${suffix}`;
123
+ }
124
+ servers[serverId] = {
125
+ type: "http",
126
+ url,
127
+ headers: { Authorization: `Bearer ${token}` },
128
+ description: "Authenticated computer control for this Agent Native desktop task",
129
+ };
130
+ return {
131
+ servers,
132
+ source: base?.source ? `${base.source}+desktop-child` : "desktop-child",
133
+ };
93
134
  }
94
135
  function readEnvConfig() {
95
136
  if (typeof process === "undefined")
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/mcp-client/config.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * MCP client configuration loading.\n *\n * Resolves `mcp.config.json` in the following precedence order:\n * 1. Workspace root (detected via `agent-native.workspaceCore` in package.json)\n * 2. App root (`process.cwd()`)\n * 3. `MCP_SERVERS` env var (JSON string) — for CI / production deploys\n *\n * Returns `null` when nothing is configured.\n *\n * This module is Node-only — it reads the filesystem. `loadMcpConfig()` guards\n * every fs operation with `isNode()` so a non-Node bundle simply gets `null`.\n */\n\nimport fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\n\nimport { findWorkspaceRoot } from \"../scripts/utils.js\";\n\n/**\n * Stdio transport — spawns a local binary and speaks MCP over its stdio.\n * This is the default when no `type` field is set (backward compat).\n */\nexport interface McpStdioServerConfig {\n type?: \"stdio\";\n /** Executable or path to spawn over stdio */\n command: string;\n /** Arguments passed to the command */\n args?: string[];\n /** Extra env vars merged into process.env for the spawned server */\n env?: Record<string, string>;\n /** Optional working directory for the spawned process */\n cwd?: string;\n /** Human-readable description (optional, shown in /mcp/status) */\n description?: string;\n}\n\n/**\n * HTTP transport — connects to a remote MCP server over Streamable HTTP\n * (the transport hosted providers like Zapier / Cloudflare / Composio use).\n */\nexport interface McpHttpServerConfig {\n type: \"http\";\n /** Full URL of the remote MCP server's Streamable HTTP endpoint. */\n url: string;\n /** Extra headers to send with every request (e.g. Authorization). */\n headers?: Record<string, string>;\n /**\n * Trusted first-party Agent-Native app. This is set only by framework-owned\n * org-scoped registrations, not by raw file/env config.\n */\n firstParty?: boolean;\n /** Canonical first-party app id from the org directory, e.g. `assets`. */\n firstPartyAppId?: string;\n /**\n * Org id the first-party server is trusted for. Runtime-only metadata set by\n * framework-owned registrations; raw file/env config cannot provide it.\n */\n firstPartyOrgId?: string;\n /** Human-readable description (optional, shown in /mcp/status) */\n description?: string;\n}\n\nexport type McpServerConfig = McpStdioServerConfig | McpHttpServerConfig;\n\nexport interface McpConfig {\n /** Map of server id → config */\n servers: Record<string, McpServerConfig>;\n /** Where the config was loaded from (workspace root path, app path, or \"env\") */\n source?: string;\n}\n\nfunction isNode(): boolean {\n return (\n typeof process !== \"undefined\" &&\n !!(process as any).versions?.node &&\n typeof (process as any).versions.node === \"string\"\n );\n}\n\nfunction parseConfig(raw: string, source: string): McpConfig | null {\n try {\n const parsed = JSON.parse(raw);\n if (!parsed || typeof parsed !== \"object\") return null;\n const servers =\n parsed.servers && typeof parsed.servers === \"object\"\n ? (parsed.servers as Record<string, McpServerConfig>)\n : null;\n if (!servers) return null;\n const valid: Record<string, McpServerConfig> = {};\n for (const [id, cfg] of Object.entries(servers)) {\n if (!cfg || typeof cfg !== \"object\") continue;\n const c = cfg as any;\n const description =\n typeof c.description === \"string\" ? c.description : undefined;\n if (c.type === \"http\") {\n if (typeof c.url !== \"string\" || !c.url) continue;\n valid[id] = {\n type: \"http\",\n url: c.url,\n headers:\n c.headers && typeof c.headers === \"object\"\n ? Object.fromEntries(\n Object.entries(c.headers).map(([k, v]) => [k, String(v)]),\n )\n : undefined,\n description,\n };\n } else {\n if (typeof c.command !== \"string\" || !c.command) continue;\n valid[id] = {\n type: \"stdio\",\n command: c.command,\n args: Array.isArray(c.args) ? c.args.map(String) : undefined,\n env:\n c.env && typeof c.env === \"object\"\n ? Object.fromEntries(\n Object.entries(c.env).map(([k, v]) => [k, String(v)]),\n )\n : undefined,\n cwd: typeof c.cwd === \"string\" ? c.cwd : undefined,\n description,\n };\n }\n }\n if (Object.keys(valid).length === 0) return null;\n return { servers: valid, source };\n } catch {\n return null;\n }\n}\n\n/**\n * Load MCP configuration.\n *\n * @param startDir - Directory to start the upward search from (defaults to cwd)\n */\nexport function loadMcpConfig(startDir?: string): McpConfig | null {\n const envConfig = readEnvConfig();\n\n let fileConfig: McpConfig | null = null;\n if (isNode()) {\n try {\n fileConfig = readFileConfig(startDir);\n } catch {\n fileConfig = null;\n }\n }\n\n if (fileConfig) return fileConfig;\n return envConfig;\n}\n\nfunction readEnvConfig(): McpConfig | null {\n if (typeof process === \"undefined\") return null;\n const raw = process.env?.MCP_SERVERS;\n if (!raw || !raw.trim()) return null;\n const trimmed = raw.trim();\n // Try full shape first ({ servers: {...} })\n const full = parseConfig(trimmed, \"env:MCP_SERVERS\");\n if (full) return full;\n // Then try inner-map shape ({ <id>: {...} })\n return parseConfig(`{\"servers\":${trimmed}}`, \"env:MCP_SERVERS\");\n}\n\nfunction readFileConfig(startDir?: string): McpConfig | null {\n const cwd = startDir ?? process.cwd();\n\n const workspaceRoot = findWorkspaceRoot(cwd);\n if (workspaceRoot) {\n const wsConfigPath = path.join(workspaceRoot, \"mcp.config.json\");\n if (fs.existsSync(wsConfigPath)) {\n return parseConfig(fs.readFileSync(wsConfigPath, \"utf-8\"), wsConfigPath);\n }\n }\n\n const appConfigPath = path.join(cwd, \"mcp.config.json\");\n if (fs.existsSync(appConfigPath)) {\n return parseConfig(fs.readFileSync(appConfigPath, \"utf-8\"), appConfigPath);\n }\n\n return null;\n}\n\n/**\n * Auto-detect the claude-in-chrome MCP server if it's installed but no\n * config file exists. Gated by `AGENT_NATIVE_DISABLE_MCP_AUTODETECT`.\n *\n * Returns a synthesized config pointing at the detected binary, or `null`\n * when nothing is found or auto-detect is disabled.\n */\nexport function autoDetectMcpConfig(): McpConfig | null {\n if (!isNode()) return null;\n if (process.env.AGENT_NATIVE_DISABLE_MCP_AUTODETECT) return null;\n\n const candidates: string[] = [];\n\n const home = os.homedir();\n if (home) {\n candidates.push(\n path.join(home, \".claude-in-chrome\", \"bin\", \"claude-in-chrome-mcp\"),\n );\n }\n\n const pathEnv = process.env.PATH || \"\";\n const sep = process.platform === \"win32\" ? \";\" : \":\";\n const exeSuffix = process.platform === \"win32\" ? \".exe\" : \"\";\n for (const dir of pathEnv.split(sep)) {\n if (!dir) continue;\n candidates.push(path.join(dir, `claude-in-chrome-mcp${exeSuffix}`));\n }\n\n for (const candidate of candidates) {\n try {\n if (fs.existsSync(candidate)) {\n return {\n servers: {\n \"claude-in-chrome\": {\n type: \"stdio\",\n command: candidate,\n description:\n \"Auto-detected claude-in-chrome MCP server (Chrome automation)\",\n },\n },\n source: `autodetect:${candidate}`,\n };\n }\n } catch {\n // Keep trying other candidates\n }\n }\n\n return null;\n}\n"]}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/mcp-client/config.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * MCP client configuration loading.\n *\n * Resolves `mcp.config.json` in the following precedence order:\n * 1. Workspace root (detected via `agent-native.workspaceCore` in package.json)\n * 2. App root (`process.cwd()`)\n * 3. `MCP_SERVERS` env var (JSON string) — for CI / production deploys\n *\n * Returns `null` when nothing is configured.\n *\n * This module is Node-only — it reads the filesystem. `loadMcpConfig()` guards\n * every fs operation with `isNode()` so a non-Node bundle simply gets `null`.\n */\n\nimport fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\n\nimport { findWorkspaceRoot } from \"../scripts/utils.js\";\n\n/**\n * Stdio transport — spawns a local binary and speaks MCP over its stdio.\n * This is the default when no `type` field is set (backward compat).\n */\nexport interface McpStdioServerConfig {\n type?: \"stdio\";\n /** Executable or path to spawn over stdio */\n command: string;\n /** Arguments passed to the command */\n args?: string[];\n /** Extra env vars merged into process.env for the spawned server */\n env?: Record<string, string>;\n /** Optional working directory for the spawned process */\n cwd?: string;\n /** Human-readable description (optional, shown in /mcp/status) */\n description?: string;\n}\n\n/**\n * HTTP transport — connects to a remote MCP server over Streamable HTTP\n * (the transport hosted providers like Zapier / Cloudflare / Composio use).\n */\nexport interface McpHttpServerConfig {\n type: \"http\";\n /** Full URL of the remote MCP server's Streamable HTTP endpoint. */\n url: string;\n /** Extra headers to send with every request (e.g. Authorization). */\n headers?: Record<string, string>;\n /**\n * Trusted first-party Agent-Native app. This is set only by framework-owned\n * org-scoped registrations, not by raw file/env config.\n */\n firstParty?: boolean;\n /** Canonical first-party app id from the org directory, e.g. `assets`. */\n firstPartyAppId?: string;\n /**\n * Org id the first-party server is trusted for. Runtime-only metadata set by\n * framework-owned registrations; raw file/env config cannot provide it.\n */\n firstPartyOrgId?: string;\n /** Human-readable description (optional, shown in /mcp/status) */\n description?: string;\n}\n\nexport type McpServerConfig = McpStdioServerConfig | McpHttpServerConfig;\n\nexport interface McpConfig {\n /** Map of server id → config */\n servers: Record<string, McpServerConfig>;\n /** Where the config was loaded from (workspace root path, app path, or \"env\") */\n source?: string;\n}\n\nconst DESKTOP_COMPUTER_SERVER_ID = \"agent-native-desktop-computer\";\n\nfunction isNode(): boolean {\n return (\n typeof process !== \"undefined\" &&\n !!(process as any).versions?.node &&\n typeof (process as any).versions.node === \"string\"\n );\n}\n\nfunction parseConfig(raw: string, source: string): McpConfig | null {\n try {\n const parsed = JSON.parse(raw);\n if (!parsed || typeof parsed !== \"object\") return null;\n const servers =\n parsed.servers && typeof parsed.servers === \"object\"\n ? (parsed.servers as Record<string, McpServerConfig>)\n : null;\n if (!servers) return null;\n const valid: Record<string, McpServerConfig> = {};\n for (const [id, cfg] of Object.entries(servers)) {\n if (!cfg || typeof cfg !== \"object\") continue;\n const c = cfg as any;\n const description =\n typeof c.description === \"string\" ? c.description : undefined;\n if (c.type === \"http\") {\n if (typeof c.url !== \"string\" || !c.url) continue;\n valid[id] = {\n type: \"http\",\n url: c.url,\n headers:\n c.headers && typeof c.headers === \"object\"\n ? Object.fromEntries(\n Object.entries(c.headers).map(([k, v]) => [k, String(v)]),\n )\n : undefined,\n description,\n };\n } else {\n if (typeof c.command !== \"string\" || !c.command) continue;\n valid[id] = {\n type: \"stdio\",\n command: c.command,\n args: Array.isArray(c.args) ? c.args.map(String) : undefined,\n env:\n c.env && typeof c.env === \"object\"\n ? Object.fromEntries(\n Object.entries(c.env).map(([k, v]) => [k, String(v)]),\n )\n : undefined,\n cwd: typeof c.cwd === \"string\" ? c.cwd : undefined,\n description,\n };\n }\n }\n if (Object.keys(valid).length === 0) return null;\n return { servers: valid, source };\n } catch {\n return null;\n }\n}\n\n/**\n * Load MCP configuration.\n *\n * @param startDir - Directory to start the upward search from (defaults to cwd)\n */\nexport function loadMcpConfig(startDir?: string): McpConfig | null {\n const envConfig = readEnvConfig();\n\n let fileConfig: McpConfig | null = null;\n if (isNode()) {\n try {\n fileConfig = readFileConfig(startDir);\n } catch {\n fileConfig = null;\n }\n }\n\n return mergeDesktopChildComputerConfig(fileConfig ?? envConfig);\n}\n\n/**\n * The desktop process supplies this configuration only to a child it spawned\n * for a specific Agent run. Raw MCP config cannot opt into this trust path:\n * the explicit child gate, loopback URL, and strong per-run bearer are all\n * required. Existing user servers always win on key collisions.\n */\nfunction mergeDesktopChildComputerConfig(\n base: McpConfig | null,\n): McpConfig | null {\n if (process.env.AGENT_NATIVE_DESKTOP_CHILD !== \"1\") return base;\n const url = process.env.AGENT_NATIVE_DESKTOP_COMPUTER_MCP_URL?.trim();\n const token = process.env.AGENT_NATIVE_DESKTOP_COMPUTER_MCP_TOKEN?.trim();\n if (!url || !token || !/^[A-Za-z0-9_-]{32,}$/.test(token)) return base;\n try {\n const parsed = new URL(url);\n if (\n parsed.protocol !== \"http:\" ||\n parsed.hostname !== \"127.0.0.1\" ||\n parsed.pathname !== \"/mcp\" ||\n parsed.username ||\n parsed.password\n ) {\n return base;\n }\n } catch {\n return base;\n }\n const servers = { ...(base?.servers ?? {}) };\n let serverId = DESKTOP_COMPUTER_SERVER_ID;\n for (let suffix = 2; servers[serverId]; suffix += 1) {\n serverId = `${DESKTOP_COMPUTER_SERVER_ID}-${suffix}`;\n }\n servers[serverId] = {\n type: \"http\",\n url,\n headers: { Authorization: `Bearer ${token}` },\n description:\n \"Authenticated computer control for this Agent Native desktop task\",\n };\n return {\n servers,\n source: base?.source ? `${base.source}+desktop-child` : \"desktop-child\",\n };\n}\n\nfunction readEnvConfig(): McpConfig | null {\n if (typeof process === \"undefined\") return null;\n const raw = process.env?.MCP_SERVERS;\n if (!raw || !raw.trim()) return null;\n const trimmed = raw.trim();\n // Try full shape first ({ servers: {...} })\n const full = parseConfig(trimmed, \"env:MCP_SERVERS\");\n if (full) return full;\n // Then try inner-map shape ({ <id>: {...} })\n return parseConfig(`{\"servers\":${trimmed}}`, \"env:MCP_SERVERS\");\n}\n\nfunction readFileConfig(startDir?: string): McpConfig | null {\n const cwd = startDir ?? process.cwd();\n\n const workspaceRoot = findWorkspaceRoot(cwd);\n if (workspaceRoot) {\n const wsConfigPath = path.join(workspaceRoot, \"mcp.config.json\");\n if (fs.existsSync(wsConfigPath)) {\n return parseConfig(fs.readFileSync(wsConfigPath, \"utf-8\"), wsConfigPath);\n }\n }\n\n const appConfigPath = path.join(cwd, \"mcp.config.json\");\n if (fs.existsSync(appConfigPath)) {\n return parseConfig(fs.readFileSync(appConfigPath, \"utf-8\"), appConfigPath);\n }\n\n return null;\n}\n\n/**\n * Auto-detect the claude-in-chrome MCP server if it's installed but no\n * config file exists. Gated by `AGENT_NATIVE_DISABLE_MCP_AUTODETECT`.\n *\n * Returns a synthesized config pointing at the detected binary, or `null`\n * when nothing is found or auto-detect is disabled.\n */\nexport function autoDetectMcpConfig(): McpConfig | null {\n if (!isNode()) return null;\n if (process.env.AGENT_NATIVE_DISABLE_MCP_AUTODETECT) return null;\n\n const candidates: string[] = [];\n\n const home = os.homedir();\n if (home) {\n candidates.push(\n path.join(home, \".claude-in-chrome\", \"bin\", \"claude-in-chrome-mcp\"),\n );\n }\n\n const pathEnv = process.env.PATH || \"\";\n const sep = process.platform === \"win32\" ? \";\" : \":\";\n const exeSuffix = process.platform === \"win32\" ? \".exe\" : \"\";\n for (const dir of pathEnv.split(sep)) {\n if (!dir) continue;\n candidates.push(path.join(dir, `claude-in-chrome-mcp${exeSuffix}`));\n }\n\n for (const candidate of candidates) {\n try {\n if (fs.existsSync(candidate)) {\n return {\n servers: {\n \"claude-in-chrome\": {\n type: \"stdio\",\n command: candidate,\n description:\n \"Auto-detected claude-in-chrome MCP server (Chrome automation)\",\n },\n },\n source: `autodetect:${candidate}`,\n };\n }\n } catch {\n // Keep trying other candidates\n }\n }\n\n return null;\n}\n"]}
@@ -13,6 +13,7 @@ export { mountMcpServersRoutes, buildMergedConfig, builtinMergedConfigKey, start
13
13
  export { mountMcpHubRoutes, listHubServers, getHubStatus, isHubServeEnabled, isHubConsumeEnabled, type HubServerRecord, type HubServersResponse, } from "./hub-routes.js";
14
14
  export { fetchHubServers } from "./hub-client.js";
15
15
  export { isMcpToolAllowedForRequest } from "./visibility.js";
16
+ export { classifyMcpToolCall, evaluateMcpToolCallPolicy, type McpToolCallClassification, type McpToolEffect, type McpToolFamily, type McpToolInvocationPolicy, type McpToolPolicyDecision, } from "./tool-policy.js";
16
17
  export { configureScreenMemory, queryScreenMemoryContext, readScreenMemoryStatus, type ScreenMemoryConfig, type ScreenMemoryContextItem, type ScreenMemoryQueryResult, type ScreenMemoryStatus, } from "./screen-memory-local.js";
17
18
  export { MCP_ACTION_RESULT_MARKER, isMcpActionResult, type AgentMcpAppPayload, type AgentMcpAppResourceContent, type McpActionResult, } from "./app-result.js";
18
19
  import type { EngineToolResultImagePart } from "../agent/engine/types.js";
@@ -23,7 +24,11 @@ import type { EngineToolResultImagePart } from "../agent/engine/types.js";
23
24
  */
24
25
  import type { ActionEntry } from "../agent/production-agent.js";
25
26
  import type { McpClientManager, McpTool } from "./manager.js";
26
- export declare function mcpToolsToActionEntries(manager: McpClientManager): Record<string, ActionEntry>;
27
+ import { type McpToolInvocationPolicy } from "./tool-policy.js";
28
+ export interface McpActionEntryOptions {
29
+ invocationPolicy?: McpToolInvocationPolicy;
30
+ }
31
+ export declare function mcpToolsToActionEntries(manager: McpClientManager, options?: McpActionEntryOptions): Record<string, ActionEntry>;
27
32
  /**
28
33
  * Mutate a target action dict in place so it matches the current MCP tool set:
29
34
  * - adds new `mcp__*` keys that aren't in target,
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp-client/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,KAAK,SAAS,EACd,KAAK,eAAe,GACrB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,KAAK,OAAO,EACZ,KAAK,uBAAuB,GAC7B,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,yBAAyB,EACzB,iCAAiC,EACjC,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,SAAS,EACT,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,EAClB,KAAK,cAAc,EACnB,KAAK,qBAAqB,GAC3B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,kCAAkC,EAClC,wBAAwB,EACxB,uBAAuB,EACvB,+BAA+B,EAC/B,mCAAmC,EACnC,gCAAgC,EAChC,wBAAwB,EACxB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,GAC5B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,iCAAiC,EACjC,iCAAiC,EACjC,gCAAgC,EAChC,8BAA8B,EAC9B,KAAK,4BAA4B,GAClC,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,KAAK,uBAAuB,GAC7B,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,KAAK,eAAe,EACpB,KAAK,kBAAkB,GACxB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAE7D,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,GACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,eAAe,GACrB,MAAM,iBAAiB,CAAC;AAQzB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAC1E;;;;GAIG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAShE,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE9D,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,gBAAgB,GACxB,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAM7B;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAClC,IAAI,CAWN;AA8CD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAMxD;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAiB5D;AA6BD;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,OAAO,GACd,yBAAyB,EAAE,CAgB7B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp-client/index.ts"],"names":[],"mappings":"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"}
@@ -14,16 +14,18 @@ export { mountMcpHubRoutes, listHubServers, getHubStatus, isHubServeEnabled, isH
14
14
  export { fetchHubServers } from "./hub-client.js";
15
15
  export { isMcpToolAllowedForRequest } from "./visibility.js";
16
16
  import { isMcpToolAllowedForRequest } from "./visibility.js";
17
+ export { classifyMcpToolCall, evaluateMcpToolCallPolicy, } from "./tool-policy.js";
17
18
  export { configureScreenMemory, queryScreenMemoryContext, readScreenMemoryStatus, } from "./screen-memory-local.js";
18
19
  export { MCP_ACTION_RESULT_MARKER, isMcpActionResult, } from "./app-result.js";
19
20
  import { getToolUiResourceUri, isToolVisibilityAppOnly, isToolVisibilityModelOnly, } from "@modelcontextprotocol/ext-apps/app-bridge";
20
21
  import { MCP_APP_MIME_TYPE } from "../action.js";
21
22
  import { normalizeToolResultImages } from "../agent/tool-result-images.js";
22
23
  import { MCP_ACTION_RESULT_MARKER, toolForMcpAppPayload, } from "./app-result.js";
23
- export function mcpToolsToActionEntries(manager) {
24
+ import { evaluateMcpToolCallPolicy, } from "./tool-policy.js";
25
+ export function mcpToolsToActionEntries(manager, options = {}) {
24
26
  const entries = {};
25
27
  for (const tool of manager.getTools().filter(isVisibleToModel)) {
26
- entries[tool.name] = mcpToolToActionEntry(manager, tool);
28
+ entries[tool.name] = mcpToolToActionEntry(manager, tool, options);
27
29
  }
28
30
  return entries;
29
31
  }
@@ -48,7 +50,7 @@ export function syncMcpActionEntries(manager, target) {
48
50
  }
49
51
  }
50
52
  }
51
- function mcpToolToActionEntry(manager, tool) {
53
+ function mcpToolToActionEntry(manager, tool, options = {}) {
52
54
  return {
53
55
  tool: {
54
56
  description: tool.description,
@@ -63,6 +65,12 @@ function mcpToolToActionEntry(manager, tool) {
63
65
  if (!isMcpToolAllowedForRequest(tool.name)) {
64
66
  return buildMcpErrorActionResult(tool, args, `Error: MCP tool ${tool.name} is not available in the current request scope.`);
65
67
  }
68
+ if (options.invocationPolicy) {
69
+ const decision = evaluateMcpToolCallPolicy(options.invocationPolicy, tool, args);
70
+ if (!decision.allowed) {
71
+ return buildMcpErrorActionResult(tool, args, `Error: MCP tool ${tool.name} is unavailable in read-only mode: ${decision.reason}.`);
72
+ }
73
+ }
66
74
  try {
67
75
  const result = await manager.callTool(tool.name, args);
68
76
  return await buildMcpActionResult(manager, tool, args, result);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp-client/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * MCP client module — symmetric counterpart to `@agent-native/core/mcp`\n * (the MCP server). Connects to local MCP servers configured in\n * `mcp.config.json` or the `MCP_SERVERS` env var and exposes their tools\n * to the agent-chat tool-use loop.\n */\n\nexport {\n loadMcpConfig,\n autoDetectMcpConfig,\n type McpConfig,\n type McpServerConfig,\n} from \"./config.js\";\n\nexport {\n McpClientManager,\n buildMcpToolName,\n parseMcpToolName,\n MCP_TOOL_PREFIX,\n type McpTool,\n type McpClientManagerOptions,\n} from \"./manager.js\";\n\nexport {\n listRemoteServers,\n addRemoteServer,\n addFirstPartyRemoteServer,\n isFirstPartyRemoteEndpointTrusted,\n removeRemoteServer,\n validateRemoteUrl,\n normalizeServerName,\n mergedConfigKey,\n parseMergedKey,\n hashEmail,\n toHttpServerConfig,\n toHttpServerConfigAsync,\n materializeHeaders,\n type RemoteMcpScope,\n type StoredRemoteMcpServer,\n} from \"./remote-store.js\";\n\nexport {\n areBuiltinMcpCapabilitiesSupported,\n BUILTIN_MCP_CAPABILITIES,\n getBuiltinMcpCapability,\n isBuiltinMcpCapabilityAvailable,\n listSupportedBuiltinMcpCapabilities,\n normalizeBuiltinMcpCapabilityIds,\n toBuiltinMcpServerConfig,\n type BuiltinMcpCapability,\n type BuiltinMcpCapabilityId,\n} from \"./builtin-capabilities.js\";\n\nexport {\n builtinMcpCapabilitiesSettingsKey,\n listEnabledBuiltinMcpCapabilities,\n setEnabledBuiltinMcpCapabilities,\n setBuiltinMcpCapabilityEnabled,\n type StoredBuiltinMcpCapabilities,\n} from \"./builtin-store.js\";\n\nexport {\n mountMcpServersRoutes,\n buildMergedConfig,\n builtinMergedConfigKey,\n startMcpConfigRefresh,\n type ClientBuiltinCapability,\n} from \"./routes.js\";\n\nexport {\n mountMcpHubRoutes,\n listHubServers,\n getHubStatus,\n isHubServeEnabled,\n isHubConsumeEnabled,\n type HubServerRecord,\n type HubServersResponse,\n} from \"./hub-routes.js\";\n\nexport { fetchHubServers } from \"./hub-client.js\";\n\nexport { isMcpToolAllowedForRequest } from \"./visibility.js\";\nimport { isMcpToolAllowedForRequest } from \"./visibility.js\";\nexport {\n configureScreenMemory,\n queryScreenMemoryContext,\n readScreenMemoryStatus,\n type ScreenMemoryConfig,\n type ScreenMemoryContextItem,\n type ScreenMemoryQueryResult,\n type ScreenMemoryStatus,\n} from \"./screen-memory-local.js\";\nexport {\n MCP_ACTION_RESULT_MARKER,\n isMcpActionResult,\n type AgentMcpAppPayload,\n type AgentMcpAppResourceContent,\n type McpActionResult,\n} from \"./app-result.js\";\nimport {\n getToolUiResourceUri,\n isToolVisibilityAppOnly,\n isToolVisibilityModelOnly,\n} from \"@modelcontextprotocol/ext-apps/app-bridge\";\n\nimport { MCP_APP_MIME_TYPE } from \"../action.js\";\nimport type { EngineToolResultImagePart } from \"../agent/engine/types.js\";\n/**\n * Convert MCP tools into `ActionEntry` values suitable for registration in\n * the agent's action registry. Each tool is marked `http: false` so it's\n * never auto-mounted as an HTTP endpoint — MCP tools are agent-only.\n */\nimport type { ActionEntry } from \"../agent/production-agent.js\";\nimport { normalizeToolResultImages } from \"../agent/tool-result-images.js\";\nimport {\n MCP_ACTION_RESULT_MARKER,\n toolForMcpAppPayload,\n type AgentMcpAppPayload,\n type AgentMcpAppResourceContent,\n type McpActionResult,\n} from \"./app-result.js\";\nimport type { McpClientManager, McpTool } from \"./manager.js\";\n\nexport function mcpToolsToActionEntries(\n manager: McpClientManager,\n): Record<string, ActionEntry> {\n const entries: Record<string, ActionEntry> = {};\n for (const tool of manager.getTools().filter(isVisibleToModel)) {\n entries[tool.name] = mcpToolToActionEntry(manager, tool);\n }\n return entries;\n}\n\n/**\n * Mutate a target action dict in place so it matches the current MCP tool set:\n * - adds new `mcp__*` keys that aren't in target,\n * - removes `mcp__*` keys that no longer exist in the manager,\n * - leaves non-MCP keys untouched.\n *\n * Used by the agent-chat plugin to keep its `prodActions` / `devActions`\n * registries in sync after `McpClientManager.reconfigure()` runs.\n */\nexport function syncMcpActionEntries(\n manager: McpClientManager,\n target: Record<string, ActionEntry>,\n): void {\n const current = new Set<string>();\n for (const tool of manager.getTools().filter(isVisibleToModel)) {\n current.add(tool.name);\n target[tool.name] = mcpToolToActionEntry(manager, tool);\n }\n for (const key of Object.keys(target)) {\n if (key.startsWith(\"mcp__\") && !current.has(key)) {\n delete target[key];\n }\n }\n}\n\nfunction mcpToolToActionEntry(\n manager: McpClientManager,\n tool: McpTool,\n): ActionEntry {\n return {\n tool: {\n description: tool.description,\n parameters: tool.inputSchema as any,\n },\n http: false,\n ...(tool.annotations?.readOnlyHint === true ? { readOnly: true } : {}),\n run: async (args: Record<string, string>) => {\n // Defense-in-depth: even if a cross-scope MCP tool somehow makes it\n // into the LLM's visible tool list, reject invocation here so we never\n // execute a user's credentials on behalf of another user.\n if (!isMcpToolAllowedForRequest(tool.name)) {\n return buildMcpErrorActionResult(\n tool,\n args,\n `Error: MCP tool ${tool.name} is not available in the current request scope.`,\n );\n }\n try {\n const result = await manager.callTool(tool.name, args);\n return await buildMcpActionResult(manager, tool, args, result);\n } catch (err: any) {\n return buildMcpErrorActionResult(\n tool,\n args,\n `Error calling MCP tool ${tool.name}: ${err?.message ?? err}`,\n );\n }\n },\n };\n}\n\nfunction isVisibleToModel(tool: McpTool): boolean {\n try {\n return !isToolVisibilityAppOnly(tool.raw as any);\n } catch {\n return true;\n }\n}\n\nexport function isVisibleToMcpApp(tool: McpTool): boolean {\n try {\n return !isToolVisibilityModelOnly(tool.raw as any);\n } catch {\n return true;\n }\n}\n\nexport function flattenMcpToolResult(result: unknown): string {\n if (\n result &&\n typeof result === \"object\" &&\n Array.isArray((result as any).content)\n ) {\n const parts = (result as any).content as Array<Record<string, any>>;\n const text = parts.map(formatMcpContentPart).join(\"\\n\");\n const fallback =\n text ||\n (hasStructuredContent(result)\n ? JSON.stringify((result as any).structuredContent, null, 2)\n : \"(no output)\");\n if ((result as any).isError) return `Error: ${fallback}`;\n return fallback;\n }\n return typeof result === \"string\" ? result : JSON.stringify(result);\n}\n\nfunction formatMcpContentPart(part: Record<string, any>): string {\n if (part?.type === \"text\" && typeof part.text === \"string\") {\n return part.text;\n }\n if (part?.type === \"image\") {\n return `[image: ${part?.mimeType ?? \"unknown\"}]`;\n }\n if (part?.type === \"resource\") {\n const resource = part.resource ?? {};\n const uri = typeof resource.uri === \"string\" ? ` ${resource.uri}` : \"\";\n return `[resource: ${resource.mimeType ?? \"unknown\"}${uri}]`;\n }\n if (part?.type === \"resource_link\") {\n const uri = typeof part.uri === \"string\" ? ` ${part.uri}` : \"\";\n return `[resource: ${part.mimeType ?? \"unknown\"}${uri}]`;\n }\n return JSON.stringify(part);\n}\n\nfunction hasStructuredContent(result: unknown): boolean {\n return (\n !!result &&\n typeof result === \"object\" &&\n Object.prototype.hasOwnProperty.call(result, \"structuredContent\")\n );\n}\n\n/**\n * Extract vision images from a raw MCP tool result so the model can SEE\n * screenshots/previews returned by external MCP tools instead of only the\n * `[image: <mime>]` placeholder that `flattenMcpToolResult` leaves in the\n * text. Shares the per-result caps with `_agentImages` (max count, max base64\n * size); over-cap or unsupported images stay placeholder-only. Never throws.\n */\nexport function extractMcpToolResultImages(\n result: unknown,\n): EngineToolResultImagePart[] {\n if (\n !result ||\n typeof result !== \"object\" ||\n !Array.isArray((result as any).content) ||\n (result as any).isError\n ) {\n return [];\n }\n const candidates = ((result as any).content as Array<Record<string, any>>)\n .filter((part) => part?.type === \"image\" && typeof part.data === \"string\")\n .map((part) => ({\n data: part.data as string,\n mediaType: typeof part.mimeType === \"string\" ? part.mimeType : undefined,\n }));\n return normalizeToolResultImages(candidates).images;\n}\n\nasync function buildMcpActionResult(\n manager: McpClientManager,\n tool: McpTool,\n input: Record<string, unknown>,\n raw: unknown,\n): Promise<McpActionResult> {\n const text = flattenMcpToolResult(raw);\n const mcpApp = await extractMcpAppPayload(manager, tool, input, raw);\n return {\n [MCP_ACTION_RESULT_MARKER]: true,\n text,\n raw,\n serverId: tool.source,\n toolName: tool.name,\n originalToolName: tool.originalName,\n input,\n ...(mcpApp ? { mcpApp } : {}),\n };\n}\n\nfunction buildMcpErrorActionResult(\n tool: McpTool,\n input: Record<string, unknown>,\n text: string,\n): McpActionResult {\n return {\n [MCP_ACTION_RESULT_MARKER]: true,\n text,\n raw: {\n isError: true,\n content: [{ type: \"text\", text }],\n },\n serverId: tool.source,\n toolName: tool.name,\n originalToolName: tool.originalName,\n input,\n };\n}\n\nasync function extractMcpAppPayload(\n manager: McpClientManager,\n tool: McpTool,\n input: Record<string, unknown>,\n raw: unknown,\n): Promise<AgentMcpAppPayload | undefined> {\n const inlineResource = findInlineMcpAppResource(raw);\n const resourceUri =\n inlineResource?.uri ??\n resourceUriFromTool(tool) ??\n resourceUriFromResult(raw);\n if (!resourceUri) return undefined;\n\n const resource =\n inlineResource ?? (await readMcpAppResource(manager, tool, resourceUri));\n\n return {\n serverId: tool.source,\n toolName: tool.name,\n originalToolName: tool.originalName,\n resourceUri,\n toolInput: input,\n toolResult:\n raw && typeof raw === \"object\"\n ? ({ ...(raw as Record<string, unknown>) } as Record<string, unknown>)\n : { content: [{ type: \"text\", text: String(raw ?? \"\") }] },\n tool: toolForMcpAppPayload(tool),\n ...(resource ? { resource } : {}),\n };\n}\n\nfunction resourceUriFromTool(tool: McpTool): string | undefined {\n try {\n return getToolUiResourceUri(tool.raw as any);\n } catch {\n return undefined;\n }\n}\n\nfunction resourceUriFromResult(raw: unknown): string | undefined {\n if (!raw || typeof raw !== \"object\") return undefined;\n const meta = (raw as any)._meta;\n const nested = meta?.ui?.resourceUri;\n if (typeof nested === \"string\" && nested.startsWith(\"ui://\")) return nested;\n const flat = meta?.[\"ui/resourceUri\"] ?? meta?.[\"ui.resourceUri\"];\n if (typeof flat === \"string\" && flat.startsWith(\"ui://\")) return flat;\n return findInlineMcpAppResource(raw)?.uri;\n}\n\nfunction findInlineMcpAppResource(\n raw: unknown,\n): AgentMcpAppResourceContent | undefined {\n if (!raw || typeof raw !== \"object\") return undefined;\n const content = Array.isArray((raw as any).content)\n ? ((raw as any).content as unknown[])\n : [];\n for (const part of content) {\n const resource = normalizeMcpAppResourceContent(part);\n if (resource) return resource;\n }\n return undefined;\n}\n\nfunction normalizeMcpAppResourceContent(\n part: unknown,\n): AgentMcpAppResourceContent | undefined {\n if (!part || typeof part !== \"object\") return undefined;\n const candidate =\n (part as any).type === \"resource\"\n ? (part as any).resource\n : ((part as any).resource ?? part);\n if (!candidate || typeof candidate !== \"object\") return undefined;\n const uri = (candidate as any).uri;\n if (typeof uri !== \"string\" || !uri.startsWith(\"ui://\")) return undefined;\n const mimeType =\n typeof (candidate as any).mimeType === \"string\"\n ? (candidate as any).mimeType\n : undefined;\n if (mimeType && !mimeType.includes(MCP_APP_MIME_TYPE)) return undefined;\n const text =\n typeof (candidate as any).text === \"string\"\n ? (candidate as any).text\n : undefined;\n const blob =\n typeof (candidate as any).blob === \"string\"\n ? (candidate as any).blob\n : undefined;\n const meta =\n (candidate as any)._meta && typeof (candidate as any)._meta === \"object\"\n ? ((candidate as any)._meta as Record<string, unknown>)\n : (part as any)._meta && typeof (part as any)._meta === \"object\"\n ? ((part as any)._meta as Record<string, unknown>)\n : undefined;\n return {\n uri,\n ...(mimeType ? { mimeType } : {}),\n ...(text ? { text } : {}),\n ...(blob ? { blob } : {}),\n ...(meta ? { _meta: meta } : {}),\n };\n}\n\nasync function readMcpAppResource(\n manager: McpClientManager,\n tool: McpTool,\n resourceUri: string,\n): Promise<AgentMcpAppResourceContent | undefined> {\n try {\n const result = await manager.readResourceForTool(tool.name, resourceUri);\n const contents = Array.isArray((result as any)?.contents)\n ? ((result as any).contents as unknown[])\n : [];\n for (const content of contents) {\n const resource = normalizeMcpAppResourceContent(content);\n if (\n resource?.uri === resourceUri ||\n (resource && contents.length === 1)\n ) {\n return resource;\n }\n }\n } catch (err: any) {\n console.warn(\n `[mcp-client] Failed to read MCP App resource ${resourceUri}: ${err?.message ?? err}`,\n );\n }\n return undefined;\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp-client/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * MCP client module — symmetric counterpart to `@agent-native/core/mcp`\n * (the MCP server). Connects to local MCP servers configured in\n * `mcp.config.json` or the `MCP_SERVERS` env var and exposes their tools\n * to the agent-chat tool-use loop.\n */\n\nexport {\n loadMcpConfig,\n autoDetectMcpConfig,\n type McpConfig,\n type McpServerConfig,\n} from \"./config.js\";\n\nexport {\n McpClientManager,\n buildMcpToolName,\n parseMcpToolName,\n MCP_TOOL_PREFIX,\n type McpTool,\n type McpClientManagerOptions,\n} from \"./manager.js\";\n\nexport {\n listRemoteServers,\n addRemoteServer,\n addFirstPartyRemoteServer,\n isFirstPartyRemoteEndpointTrusted,\n removeRemoteServer,\n validateRemoteUrl,\n normalizeServerName,\n mergedConfigKey,\n parseMergedKey,\n hashEmail,\n toHttpServerConfig,\n toHttpServerConfigAsync,\n materializeHeaders,\n type RemoteMcpScope,\n type StoredRemoteMcpServer,\n} from \"./remote-store.js\";\n\nexport {\n areBuiltinMcpCapabilitiesSupported,\n BUILTIN_MCP_CAPABILITIES,\n getBuiltinMcpCapability,\n isBuiltinMcpCapabilityAvailable,\n listSupportedBuiltinMcpCapabilities,\n normalizeBuiltinMcpCapabilityIds,\n toBuiltinMcpServerConfig,\n type BuiltinMcpCapability,\n type BuiltinMcpCapabilityId,\n} from \"./builtin-capabilities.js\";\n\nexport {\n builtinMcpCapabilitiesSettingsKey,\n listEnabledBuiltinMcpCapabilities,\n setEnabledBuiltinMcpCapabilities,\n setBuiltinMcpCapabilityEnabled,\n type StoredBuiltinMcpCapabilities,\n} from \"./builtin-store.js\";\n\nexport {\n mountMcpServersRoutes,\n buildMergedConfig,\n builtinMergedConfigKey,\n startMcpConfigRefresh,\n type ClientBuiltinCapability,\n} from \"./routes.js\";\n\nexport {\n mountMcpHubRoutes,\n listHubServers,\n getHubStatus,\n isHubServeEnabled,\n isHubConsumeEnabled,\n type HubServerRecord,\n type HubServersResponse,\n} from \"./hub-routes.js\";\n\nexport { fetchHubServers } from \"./hub-client.js\";\n\nexport { isMcpToolAllowedForRequest } from \"./visibility.js\";\nimport { isMcpToolAllowedForRequest } from \"./visibility.js\";\nexport {\n classifyMcpToolCall,\n evaluateMcpToolCallPolicy,\n type McpToolCallClassification,\n type McpToolEffect,\n type McpToolFamily,\n type McpToolInvocationPolicy,\n type McpToolPolicyDecision,\n} from \"./tool-policy.js\";\nexport {\n configureScreenMemory,\n queryScreenMemoryContext,\n readScreenMemoryStatus,\n type ScreenMemoryConfig,\n type ScreenMemoryContextItem,\n type ScreenMemoryQueryResult,\n type ScreenMemoryStatus,\n} from \"./screen-memory-local.js\";\nexport {\n MCP_ACTION_RESULT_MARKER,\n isMcpActionResult,\n type AgentMcpAppPayload,\n type AgentMcpAppResourceContent,\n type McpActionResult,\n} from \"./app-result.js\";\nimport {\n getToolUiResourceUri,\n isToolVisibilityAppOnly,\n isToolVisibilityModelOnly,\n} from \"@modelcontextprotocol/ext-apps/app-bridge\";\n\nimport { MCP_APP_MIME_TYPE } from \"../action.js\";\nimport type { EngineToolResultImagePart } from \"../agent/engine/types.js\";\n/**\n * Convert MCP tools into `ActionEntry` values suitable for registration in\n * the agent's action registry. Each tool is marked `http: false` so it's\n * never auto-mounted as an HTTP endpoint — MCP tools are agent-only.\n */\nimport type { ActionEntry } from \"../agent/production-agent.js\";\nimport { normalizeToolResultImages } from \"../agent/tool-result-images.js\";\nimport {\n MCP_ACTION_RESULT_MARKER,\n toolForMcpAppPayload,\n type AgentMcpAppPayload,\n type AgentMcpAppResourceContent,\n type McpActionResult,\n} from \"./app-result.js\";\nimport type { McpClientManager, McpTool } from \"./manager.js\";\nimport {\n evaluateMcpToolCallPolicy,\n type McpToolInvocationPolicy,\n} from \"./tool-policy.js\";\n\nexport interface McpActionEntryOptions {\n invocationPolicy?: McpToolInvocationPolicy;\n}\n\nexport function mcpToolsToActionEntries(\n manager: McpClientManager,\n options: McpActionEntryOptions = {},\n): Record<string, ActionEntry> {\n const entries: Record<string, ActionEntry> = {};\n for (const tool of manager.getTools().filter(isVisibleToModel)) {\n entries[tool.name] = mcpToolToActionEntry(manager, tool, options);\n }\n return entries;\n}\n\n/**\n * Mutate a target action dict in place so it matches the current MCP tool set:\n * - adds new `mcp__*` keys that aren't in target,\n * - removes `mcp__*` keys that no longer exist in the manager,\n * - leaves non-MCP keys untouched.\n *\n * Used by the agent-chat plugin to keep its `prodActions` / `devActions`\n * registries in sync after `McpClientManager.reconfigure()` runs.\n */\nexport function syncMcpActionEntries(\n manager: McpClientManager,\n target: Record<string, ActionEntry>,\n): void {\n const current = new Set<string>();\n for (const tool of manager.getTools().filter(isVisibleToModel)) {\n current.add(tool.name);\n target[tool.name] = mcpToolToActionEntry(manager, tool);\n }\n for (const key of Object.keys(target)) {\n if (key.startsWith(\"mcp__\") && !current.has(key)) {\n delete target[key];\n }\n }\n}\n\nfunction mcpToolToActionEntry(\n manager: McpClientManager,\n tool: McpTool,\n options: McpActionEntryOptions = {},\n): ActionEntry {\n return {\n tool: {\n description: tool.description,\n parameters: tool.inputSchema as any,\n },\n http: false,\n ...(tool.annotations?.readOnlyHint === true ? { readOnly: true } : {}),\n run: async (args: Record<string, unknown>) => {\n // Defense-in-depth: even if a cross-scope MCP tool somehow makes it\n // into the LLM's visible tool list, reject invocation here so we never\n // execute a user's credentials on behalf of another user.\n if (!isMcpToolAllowedForRequest(tool.name)) {\n return buildMcpErrorActionResult(\n tool,\n args,\n `Error: MCP tool ${tool.name} is not available in the current request scope.`,\n );\n }\n if (options.invocationPolicy) {\n const decision = evaluateMcpToolCallPolicy(\n options.invocationPolicy,\n tool,\n args,\n );\n if (!decision.allowed) {\n return buildMcpErrorActionResult(\n tool,\n args,\n `Error: MCP tool ${tool.name} is unavailable in read-only mode: ${decision.reason}.`,\n );\n }\n }\n try {\n const result = await manager.callTool(tool.name, args);\n return await buildMcpActionResult(manager, tool, args, result);\n } catch (err: any) {\n return buildMcpErrorActionResult(\n tool,\n args,\n `Error calling MCP tool ${tool.name}: ${err?.message ?? err}`,\n );\n }\n },\n };\n}\n\nfunction isVisibleToModel(tool: McpTool): boolean {\n try {\n return !isToolVisibilityAppOnly(tool.raw as any);\n } catch {\n return true;\n }\n}\n\nexport function isVisibleToMcpApp(tool: McpTool): boolean {\n try {\n return !isToolVisibilityModelOnly(tool.raw as any);\n } catch {\n return true;\n }\n}\n\nexport function flattenMcpToolResult(result: unknown): string {\n if (\n result &&\n typeof result === \"object\" &&\n Array.isArray((result as any).content)\n ) {\n const parts = (result as any).content as Array<Record<string, any>>;\n const text = parts.map(formatMcpContentPart).join(\"\\n\");\n const fallback =\n text ||\n (hasStructuredContent(result)\n ? JSON.stringify((result as any).structuredContent, null, 2)\n : \"(no output)\");\n if ((result as any).isError) return `Error: ${fallback}`;\n return fallback;\n }\n return typeof result === \"string\" ? result : JSON.stringify(result);\n}\n\nfunction formatMcpContentPart(part: Record<string, any>): string {\n if (part?.type === \"text\" && typeof part.text === \"string\") {\n return part.text;\n }\n if (part?.type === \"image\") {\n return `[image: ${part?.mimeType ?? \"unknown\"}]`;\n }\n if (part?.type === \"resource\") {\n const resource = part.resource ?? {};\n const uri = typeof resource.uri === \"string\" ? ` ${resource.uri}` : \"\";\n return `[resource: ${resource.mimeType ?? \"unknown\"}${uri}]`;\n }\n if (part?.type === \"resource_link\") {\n const uri = typeof part.uri === \"string\" ? ` ${part.uri}` : \"\";\n return `[resource: ${part.mimeType ?? \"unknown\"}${uri}]`;\n }\n return JSON.stringify(part);\n}\n\nfunction hasStructuredContent(result: unknown): boolean {\n return (\n !!result &&\n typeof result === \"object\" &&\n Object.prototype.hasOwnProperty.call(result, \"structuredContent\")\n );\n}\n\n/**\n * Extract vision images from a raw MCP tool result so the model can SEE\n * screenshots/previews returned by external MCP tools instead of only the\n * `[image: <mime>]` placeholder that `flattenMcpToolResult` leaves in the\n * text. Shares the per-result caps with `_agentImages` (max count, max base64\n * size); over-cap or unsupported images stay placeholder-only. Never throws.\n */\nexport function extractMcpToolResultImages(\n result: unknown,\n): EngineToolResultImagePart[] {\n if (\n !result ||\n typeof result !== \"object\" ||\n !Array.isArray((result as any).content) ||\n (result as any).isError\n ) {\n return [];\n }\n const candidates = ((result as any).content as Array<Record<string, any>>)\n .filter((part) => part?.type === \"image\" && typeof part.data === \"string\")\n .map((part) => ({\n data: part.data as string,\n mediaType: typeof part.mimeType === \"string\" ? part.mimeType : undefined,\n }));\n return normalizeToolResultImages(candidates).images;\n}\n\nasync function buildMcpActionResult(\n manager: McpClientManager,\n tool: McpTool,\n input: Record<string, unknown>,\n raw: unknown,\n): Promise<McpActionResult> {\n const text = flattenMcpToolResult(raw);\n const mcpApp = await extractMcpAppPayload(manager, tool, input, raw);\n return {\n [MCP_ACTION_RESULT_MARKER]: true,\n text,\n raw,\n serverId: tool.source,\n toolName: tool.name,\n originalToolName: tool.originalName,\n input,\n ...(mcpApp ? { mcpApp } : {}),\n };\n}\n\nfunction buildMcpErrorActionResult(\n tool: McpTool,\n input: Record<string, unknown>,\n text: string,\n): McpActionResult {\n return {\n [MCP_ACTION_RESULT_MARKER]: true,\n text,\n raw: {\n isError: true,\n content: [{ type: \"text\", text }],\n },\n serverId: tool.source,\n toolName: tool.name,\n originalToolName: tool.originalName,\n input,\n };\n}\n\nasync function extractMcpAppPayload(\n manager: McpClientManager,\n tool: McpTool,\n input: Record<string, unknown>,\n raw: unknown,\n): Promise<AgentMcpAppPayload | undefined> {\n const inlineResource = findInlineMcpAppResource(raw);\n const resourceUri =\n inlineResource?.uri ??\n resourceUriFromTool(tool) ??\n resourceUriFromResult(raw);\n if (!resourceUri) return undefined;\n\n const resource =\n inlineResource ?? (await readMcpAppResource(manager, tool, resourceUri));\n\n return {\n serverId: tool.source,\n toolName: tool.name,\n originalToolName: tool.originalName,\n resourceUri,\n toolInput: input,\n toolResult:\n raw && typeof raw === \"object\"\n ? ({ ...(raw as Record<string, unknown>) } as Record<string, unknown>)\n : { content: [{ type: \"text\", text: String(raw ?? \"\") }] },\n tool: toolForMcpAppPayload(tool),\n ...(resource ? { resource } : {}),\n };\n}\n\nfunction resourceUriFromTool(tool: McpTool): string | undefined {\n try {\n return getToolUiResourceUri(tool.raw as any);\n } catch {\n return undefined;\n }\n}\n\nfunction resourceUriFromResult(raw: unknown): string | undefined {\n if (!raw || typeof raw !== \"object\") return undefined;\n const meta = (raw as any)._meta;\n const nested = meta?.ui?.resourceUri;\n if (typeof nested === \"string\" && nested.startsWith(\"ui://\")) return nested;\n const flat = meta?.[\"ui/resourceUri\"] ?? meta?.[\"ui.resourceUri\"];\n if (typeof flat === \"string\" && flat.startsWith(\"ui://\")) return flat;\n return findInlineMcpAppResource(raw)?.uri;\n}\n\nfunction findInlineMcpAppResource(\n raw: unknown,\n): AgentMcpAppResourceContent | undefined {\n if (!raw || typeof raw !== \"object\") return undefined;\n const content = Array.isArray((raw as any).content)\n ? ((raw as any).content as unknown[])\n : [];\n for (const part of content) {\n const resource = normalizeMcpAppResourceContent(part);\n if (resource) return resource;\n }\n return undefined;\n}\n\nfunction normalizeMcpAppResourceContent(\n part: unknown,\n): AgentMcpAppResourceContent | undefined {\n if (!part || typeof part !== \"object\") return undefined;\n const candidate =\n (part as any).type === \"resource\"\n ? (part as any).resource\n : ((part as any).resource ?? part);\n if (!candidate || typeof candidate !== \"object\") return undefined;\n const uri = (candidate as any).uri;\n if (typeof uri !== \"string\" || !uri.startsWith(\"ui://\")) return undefined;\n const mimeType =\n typeof (candidate as any).mimeType === \"string\"\n ? (candidate as any).mimeType\n : undefined;\n if (mimeType && !mimeType.includes(MCP_APP_MIME_TYPE)) return undefined;\n const text =\n typeof (candidate as any).text === \"string\"\n ? (candidate as any).text\n : undefined;\n const blob =\n typeof (candidate as any).blob === \"string\"\n ? (candidate as any).blob\n : undefined;\n const meta =\n (candidate as any)._meta && typeof (candidate as any)._meta === \"object\"\n ? ((candidate as any)._meta as Record<string, unknown>)\n : (part as any)._meta && typeof (part as any)._meta === \"object\"\n ? ((part as any)._meta as Record<string, unknown>)\n : undefined;\n return {\n uri,\n ...(mimeType ? { mimeType } : {}),\n ...(text ? { text } : {}),\n ...(blob ? { blob } : {}),\n ...(meta ? { _meta: meta } : {}),\n };\n}\n\nasync function readMcpAppResource(\n manager: McpClientManager,\n tool: McpTool,\n resourceUri: string,\n): Promise<AgentMcpAppResourceContent | undefined> {\n try {\n const result = await manager.readResourceForTool(tool.name, resourceUri);\n const contents = Array.isArray((result as any)?.contents)\n ? ((result as any).contents as unknown[])\n : [];\n for (const content of contents) {\n const resource = normalizeMcpAppResourceContent(content);\n if (\n resource?.uri === resourceUri ||\n (resource && contents.length === 1)\n ) {\n return resource;\n }\n }\n } catch (err: any) {\n console.warn(\n `[mcp-client] Failed to read MCP App resource ${resourceUri}: ${err?.message ?? err}`,\n );\n }\n return undefined;\n}\n"]}
@@ -0,0 +1,24 @@
1
+ import type { McpTool } from "./manager.js";
2
+ export type McpToolFamily = "browser" | "computer" | "other";
3
+ export type McpToolEffect = "read" | "write" | "unknown";
4
+ export interface McpToolCallClassification {
5
+ family: McpToolFamily;
6
+ effect: McpToolEffect;
7
+ reason: string;
8
+ }
9
+ export interface McpToolInvocationPolicy {
10
+ mode: "allow-all" | "read-only";
11
+ }
12
+ export interface McpToolPolicyDecision extends McpToolCallClassification {
13
+ allowed: boolean;
14
+ }
15
+ /**
16
+ * Classify an MCP call using both the declared tool and its runtime arguments.
17
+ * Runtime inspection is necessary for combined computer tools whose `action`
18
+ * selects between observation (for example `screenshot`) and mutation (for
19
+ * example `click`). Unknown computer/browser operations intentionally remain
20
+ * unknown so read-only callers can fail closed.
21
+ */
22
+ export declare function classifyMcpToolCall(tool: McpTool, args: Record<string, unknown>): McpToolCallClassification;
23
+ export declare function evaluateMcpToolCallPolicy(policy: McpToolInvocationPolicy, tool: McpTool, args: Record<string, unknown>): McpToolPolicyDecision;
24
+ //# sourceMappingURL=tool-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-policy.d.ts","sourceRoot":"","sources":["../../src/mcp-client/tool-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;AAC7D,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAEzD,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,WAAW,GAAG,WAAW,CAAC;CACjC;AAED,MAAM,WAAW,qBAAsB,SAAQ,yBAAyB;IACtE,OAAO,EAAE,OAAO,CAAC;CAClB;AA4CD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,yBAAyB,CA+B3B;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,uBAAuB,EAC/B,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,qBAAqB,CAUvB"}